Commit graph

22 commits

Author SHA1 Message Date
liruifengv
50251a1360
fix(approval): show file content/diff and open full-screen preview on ctrl+e (#139)
* fix(approval): include file content and diff in approval display

After #26 the WriteTool/EditTool input display was reduced to
`{kind: 'file_io', operation, path}`, dropping the args carried by the
previous generic fallback. The approval panel then only had a path to
show — no file content for Write, no diff hunk for Edit — and ctrl+e
expanded to the same one-liner.

Extend the file_io display with optional `content` / `before` / `after`
fields so Write can attach its full content and Edit can attach its
old_string/new_string hunk. The adapter promotes file_io+content to a
file_content block and file_io+before/after to a diff block, matching
what the panel renders for the legacy generic-fallback path.

* feat(tui): open full-screen viewer for approval previews

Inline ctrl+e expand-in-place inflated the approval panel past one
viewport for any non-trivial Edit / Write, which collided with pi-tui's
inline differential renderer and the terminal's "snap to bottom on
stdout" reflex: scrolling back glitched and the screen flickered. On
top of that, the diff renderer's O(m·n) LCS DP ran every frame the
panel was visible, so each spinner tick re-paid the cost.

Make ctrl+e hand off to a dedicated full-screen viewer instead. The
viewer renders all body lines once at construction and slices them on
scroll, so per-frame cost is O(viewport) regardless of payload size.
It uses the same nested-takeover pattern as TaskOutputViewer; the
approval panel instance is preserved and refocused on close so the
selection / feedback state survives.

The panel itself drops its local `expanded` toggle and always renders
the compact cluster view; ctrl+e now exclusively forwards to the host
when there is something to preview, and falls through to the existing
plan-expand toggle otherwise.

* chore(changeset): restore approval previews
2026-05-28 13:22:33 +08:00
qer
ebf6e8181e
feat: add plugin manager and official plugins (#119)
* feat: add plugin manager and official plugins

* fix(agent-core): honor plugin capability overrides

* fix: restrict plugin zip root detection

* Update apps/kimi-code/src/constant/app.ts

Co-authored-by: liruifengv <liruifeng1024@gmail.com>
Signed-off-by: qer <wbxl2000@outlook.com>

---------

Signed-off-by: qer <wbxl2000@outlook.com>
Co-authored-by: liruifengv <liruifeng1024@gmail.com>
2026-05-27 22:47:33 +08:00
_Kerman
2b74025302
feat: rework permission decision policies (#26) 2026-05-27 20:07:24 +08:00
_Kerman
d1c381f38a
test(agent-core): consolidate test helpers into AgentTestContext (#106) 2026-05-27 14:41:45 +08:00
qer
55870616ca
feat: expose LLM stream timing events (#101)
* feat: expose LLM stream timing events

* feat(kimi-code): show LLM timing in debug mode (KIMI_CODE_DEBUG=1)

* refactor: extract debug timing formatting into standalone module

* chore: remove changeset

---------

Co-authored-by: liruifengv <liruifeng1024@gmail.com>
2026-05-27 13:46:57 +08:00
_Kerman
6f55f1d0af
fix(agent-core): route session logs exclusively to session sink (#102) 2026-05-27 13:00:17 +08:00
_Kerman
e5717b7261
refactor: unify path normalization with pathe (#84) 2026-05-27 11:53:24 +08:00
qer
2bb50a38d8
fix: avoid local completion budget truncation (#85) 2026-05-26 22:25:15 +08:00
_Kerman
5e354d0cc8
fix(kimi-code): show last-request token count for running subagents (#86) 2026-05-26 22:06:58 +08:00
7Sageer
7d9216d5aa
fix(agent-core): ensure tool.call always has paired tool.result (#83)
* fix(agent-core): always pair tool.call with tool.result on malformed returns

A tool returning undefined, a primitive, or an object without a valid
output field crashed normalization, exited the batch loop without
dispatching the matching tool.result, and left the next provider
request to fail with a missing tool_call_id response.

- Validate the tool return at the boundary in runRunnableToolCall via a
  new coerceToolResult helper; malformed returns become an isError
  result.
- Harden normalizeToolResult and toolResultStopsTurn against
  non-conformant input from synthetic results or finalize hooks.
- Track unpaired tool.call ids in runToolCallBatch and emit
  compensating error results in finally for any that did not receive a
  result.

* refactor(agent-core): simplify tool result pairing

Drop the unpairedCallIds tracking and finally-compensation wrapper from
runToolCallBatch. The set was updated before dispatchEvent, so a failure
between the two left it inconsistent; the per-call try/catch already
produces a paired error result, making the outer wrapper redundant.

Coerce hook returns at the synthetic and finalizeToolResult boundaries
so a malformed hook output is normalized into a paired error result the
same way a malformed tool return already is.
2026-05-26 20:14:54 +08:00
happy wang
0ce0072cb4
fix(agent-core): resolve user skills from OS home directory, not kimi home (#72)
* fix(agent-core): resolve user skills from OS home directory, not kimi home

KimiCore incorrectly used the kimi home directory (e.g. ~/.kimi-code) as
userHomeDir, causing the skill scanner to look for user skills under
~/.kimi-code/.agents/skills/ instead of ~/.agents/skills/. Only the
builtin mcp-config skill was found.

Fix by always setting userHomeDir to homedir() (the actual OS home),
independent of the homeDir / KIMI_CODE_HOME options that control where
session data is stored.

* chore: add changeset for skill user home dir fix

* test(node-sdk): align SDK skill test with OS home resolution fix

* Apply suggestion from @liruifengv

Signed-off-by: liruifengv <liruifeng1024@gmail.com>

---------

Signed-off-by: liruifengv <liruifeng1024@gmail.com>
Co-authored-by: liruifengv <liruifeng1024@gmail.com>
2026-05-26 17:50:38 +08:00
_Kerman
e2b2b46fc9
refactor(agent-core): make AgentRecords hold the Agent instance directly (#62) 2026-05-26 15:52:26 +08:00
_Kerman
cf2227e8a5
fix: warn instead of error on newer wire protocol version (#49)
* fix: warn instead of error on newer wire protocol version

* fix

* fix test
2026-05-26 14:56:32 +08:00
liruifengv
064343a6e5
fix: correct X-Msh-Platform header value to kimi_code_cli (#52) 2026-05-26 14:39:19 +08:00
_Kerman
c4dd1c7ff2
feat: flatten tool call records (#25) 2026-05-25 23:02:25 +08:00
liruifengv
7858821f2f
fix: persist TUI model selection defaults (#24)
* Persist runtime model and default thinking

* fix: persist model defaults from TUI

* refactor: centralize default thinking resolution

* fix: wait for background shutdown notifications

* Revert "fix: wait for background shutdown notifications"

This reverts commit cf98059b8d.

* test: remove SDK default thinking case

* fix: respect thinking mode off defaults

* fix: normalize runtime thinking requests
2026-05-25 19:32:08 +08:00
qer
bfbd522a71
fix: widen Kimi completion budget (#17) 2026-05-25 18:41:59 +08:00
_Kerman
2004aedfe1
feat(agent-core): add agent record migrations (#22)
* feat(agent-core): add agent record migrations

* test(agent-core): include wire metadata in subagent fixtures

* docs(agent-core): document wire version format
2026-05-25 17:10:39 +08:00
_Kerman
0da60730b9
refactor: isolate agent record persistence (#14) 2026-05-25 16:28:33 +08:00
Haozhe
ee7486cb06
fix(agent-core): tier anti-repeat reminders at streak counts 3, 5, and 8 (#15)
Replace the single threshold of 7 with tiered reminders triggered at streak counts 3, 5, and 8.\nThe first reminder is a generic nudge, while the second and third include\nthe tool name, repeat count, and arguments for stronger guidance.

Co-authored-by: haozhe.yang <yanghaozhe@moonshot.ai>
Co-authored-by: Kai <me@kaiyi.cool>
2026-05-25 16:09:41 +08:00
qer
89ea8959eb
fix: retry empty compaction summaries (#12)
Co-authored-by: liruifengv <liruifeng1024@gmail.com>
2026-05-25 14:44:22 +08:00
Kaiyi
842e699a64 Kimi For Coding 2026-05-22 15:54:50 +08:00