kimi-plugin-cc 2.2.2 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +2 -2
- package/CHANGELOG.md +8 -0
- package/README.md +5 -5
- package/agents/kimi-challenge.md +3 -3
- package/agents/kimi-pursue.md +1 -1
- package/agents/kimi-rescue.md +2 -2
- package/agents/kimi-review.md +3 -3
- package/commands/README.md +2 -2
- package/commands/challenge.md +1 -1
- package/commands/pursue.md +1 -1
- package/commands/review.md +1 -1
- package/dist/background-spawn.js +9 -17
- package/dist/cli-client.js +13 -62
- package/dist/commands/ask.js +24 -29
- package/dist/commands/cancel.js +7 -19
- package/dist/commands/cli-helpers.js +7 -16
- package/dist/commands/pursue.js +21 -31
- package/dist/commands/registry.js +6 -19
- package/dist/commands/rescue.js +20 -20
- package/dist/commands/review-gate.js +16 -24
- package/dist/commands/review.js +37 -43
- package/dist/commands/setup.js +85 -171
- package/dist/commands/swarm.js +103 -88
- package/dist/commands/worker.js +0 -6
- package/dist/git.js +14 -7
- package/dist/hooks/approval-hook.js +9 -20
- package/dist/hooks/approval-policy.js +36 -69
- package/dist/hooks/config-safety.js +6 -4
- package/dist/hooks/install-paths.js +62 -138
- package/dist/hooks/install.js +37 -108
- package/dist/hooks/managed-block.js +88 -214
- package/dist/job-store.js +6 -28
- package/dist/kimi-command.js +1 -3
- package/dist/kimi-engine.js +1 -1
- package/dist/kimi-timeouts.js +9 -21
- package/dist/kimi-version-probe.js +16 -1210
- package/dist/native-v2-preflight.js +1 -1
- package/dist/parsing.js +4 -18
- package/dist/rescue-approval.js +78 -164
- package/dist/session-recovery.js +7 -10
- package/dist/stream-json.js +6 -174
- package/dist/version.js +1 -1
- package/docs/migration.md +2 -6
- package/docs/registry-releases.md +18 -0
- package/docs/safety.md +14 -12
- package/package.json +2 -2
- package/plugins/kimi-codex/.codex-plugin/plugin.json +4 -4
- package/plugins/kimi-codex/dist/background-spawn.js +9 -17
- package/plugins/kimi-codex/dist/cli-client.js +13 -62
- package/plugins/kimi-codex/dist/commands/ask.js +24 -29
- package/plugins/kimi-codex/dist/commands/cancel.js +7 -19
- package/plugins/kimi-codex/dist/commands/cli-helpers.js +7 -16
- package/plugins/kimi-codex/dist/commands/pursue.js +21 -31
- package/plugins/kimi-codex/dist/commands/registry.js +6 -19
- package/plugins/kimi-codex/dist/commands/rescue.js +20 -20
- package/plugins/kimi-codex/dist/commands/review-gate.js +16 -24
- package/plugins/kimi-codex/dist/commands/review.js +37 -43
- package/plugins/kimi-codex/dist/commands/setup.js +85 -171
- package/plugins/kimi-codex/dist/commands/swarm.js +103 -88
- package/plugins/kimi-codex/dist/commands/worker.js +0 -6
- package/plugins/kimi-codex/dist/git.js +14 -7
- package/plugins/kimi-codex/dist/hooks/approval-hook.js +9 -20
- package/plugins/kimi-codex/dist/hooks/approval-policy.js +36 -69
- package/plugins/kimi-codex/dist/hooks/config-safety.js +6 -4
- package/plugins/kimi-codex/dist/hooks/install-paths.js +62 -138
- package/plugins/kimi-codex/dist/hooks/install.js +37 -108
- package/plugins/kimi-codex/dist/hooks/managed-block.js +88 -214
- package/plugins/kimi-codex/dist/job-store.js +6 -28
- package/plugins/kimi-codex/dist/kimi-command.js +1 -3
- package/plugins/kimi-codex/dist/kimi-engine.js +1 -1
- package/plugins/kimi-codex/dist/kimi-timeouts.js +9 -21
- package/plugins/kimi-codex/dist/kimi-version-probe.js +16 -1210
- package/plugins/kimi-codex/dist/native-v2-preflight.js +1 -1
- package/plugins/kimi-codex/dist/parsing.js +4 -18
- package/plugins/kimi-codex/dist/rescue-approval.js +78 -164
- package/plugins/kimi-codex/dist/session-recovery.js +7 -10
- package/plugins/kimi-codex/dist/stream-json.js +6 -174
- package/plugins/kimi-codex/dist/version.js +1 -1
- package/plugins/kimi-codex/skills/kimi-ask/SKILL.md +2 -2
- package/plugins/kimi-codex/skills/kimi-cancel/SKILL.md +1 -1
- package/plugins/kimi-codex/skills/kimi-challenge/SKILL.md +1 -1
- package/plugins/kimi-codex/skills/kimi-pursue/SKILL.md +1 -1
- package/plugins/kimi-codex/skills/kimi-replay/SKILL.md +1 -1
- package/plugins/kimi-codex/skills/kimi-rescue/SKILL.md +1 -1
- package/plugins/kimi-codex/skills/kimi-result/SKILL.md +1 -1
- package/plugins/kimi-codex/skills/kimi-review/SKILL.md +3 -3
- package/plugins/kimi-codex/skills/kimi-setup/SKILL.md +1 -1
- package/plugins/kimi-codex/skills/kimi-status/SKILL.md +1 -1
- package/plugins/kimi-codex/skills/kimi-swarm/SKILL.md +1 -1
- package/plugins/kimi-codex/skills/kimi-swarm-write/SKILL.md +1 -1
|
@@ -10,164 +10,13 @@
|
|
|
10
10
|
// {"role":"tool","tool_call_id":"...","content":"..."}
|
|
11
11
|
// {"role":"meta","type":"session.resume_hint","session_id":"session_<uuid>","command":"kimi -r session_<uuid>","content":"To resume this session: kimi -r session_<uuid>"}
|
|
12
12
|
// {"role":"meta","type":"turn.step.retrying","failed_attempt":1,"next_attempt":2,"max_attempts":3,"delay_ms":300,"error_name":"APIProviderRateLimitError","error_message":"...","status_code":429}
|
|
13
|
-
// {"role":"meta","type":"system.version","version":"0.24.2"} //
|
|
13
|
+
// {"role":"meta","type":"system.version","version":"0.24.2"} // native-v2 marker; required first on native-v2 plans and filtered after capture
|
|
14
14
|
//
|
|
15
15
|
// {"type":"error","code":"session.occupied","message":"...","details":{...}} // 2.3.0; stdout-only refusal, exit 4
|
|
16
16
|
//
|
|
17
17
|
// Notes on what does and does not appear here:
|
|
18
|
-
// -
|
|
19
|
-
//
|
|
20
|
-
// `PromptJsonResumeMetaMessage` / `writeResumeHint` / `PromptJsonWriter` —
|
|
21
|
-
// sits at apps/kimi-code/src/cli/run-prompt.ts:567-696 as of 0.9.0 and is
|
|
22
|
-
// verified compatible through 0.24.2. 2026-05-27 audit covered 0.4.0,
|
|
23
|
-
// 2026-05-28 audit covered 0.5.0 (run-prompt.ts zero-byte diff across
|
|
24
|
-
// both), 2026-05-31 audit covered 0.6.0, 2026-06-03 audit covered
|
|
25
|
-
// 0.7.0/0.8.0/0.9.0 in one cumulative pass, 2026-06-09 audit covered
|
|
26
|
-
// 0.10.0/0.11.0/0.12.0 in one cumulative 0.9.0→0.12.0 pass, 2026-06-12 audit
|
|
27
|
-
// covered 0.12.1/0.13.0/0.13.1/0.14.0/0.14.1 in one cumulative 0.12.0→0.14.1
|
|
28
|
-
// pass (records/ dir empty diff; the 0.13/0.14 packages/protocol/ REST+WS
|
|
29
|
-
// control API is a separate transport — run-prompt.ts imports none of it,
|
|
30
|
-
// `-p` stdout stays the direct PromptJsonWriter), 2026-06-13 audit covered
|
|
31
|
-
// the 0.14.2 patch (records/ + the PromptJsonWriter/writeResumeHint region
|
|
32
|
-
// both 0-byte; the patch is a repo-wide `.md`→`.md?raw` bundler-import
|
|
33
|
-
// migration plus a Bash-tool stdout/stderr streaming callback, neither
|
|
34
|
-
// touching the writer), and 2026-06-14 covered the 0.14.3 patch (all four
|
|
35
|
-
// scoped diffs 0-byte; the entire patch is a TUI model-picker
|
|
36
|
-
// provider-refresh change — PR #713 — off the `-p` path), and 2026-06-16
|
|
37
|
-
// covered the 0.15.0 minor (permission/hooks/run-prompt/cli all 0-byte by
|
|
38
|
-
// independent `git diff` byte-count; the only scoped change is records/ +
|
|
39
|
-
// session/ persistence churn — PR #786 drops app_version/resumed from the
|
|
40
|
-
// .records/ metadata artifact, a SessionSkillRegistry rename, a static
|
|
41
|
-
// model-capability lookup — none of it on the `-p` stdout stream; plus an
|
|
42
|
-
// additive `transport:'sse'` MCP config variant the plugin never writes),
|
|
43
|
-
// and 2026-06-17 covered the 0.16.0 minor (permission/hooks/run-prompt all
|
|
44
|
-
// 0-byte; the only argv change registers a new `kimi vis` subcommand off
|
|
45
|
-
// the `-p` path, and the records/replay/compaction/logging churn is
|
|
46
|
-
// internal — not on the stdout stream; GREEN smoke 7/0 on the 0.16.0
|
|
47
|
-
// binary), 2026-06-19 covered the 0.16.0→0.18.0 jump (0.17.0/0.17.1/0.18.0;
|
|
48
|
-
// 03-hooks.diff 0-byte, run-prompt.ts only a telemetry refactor outside the
|
|
49
|
-
// writer, the sole permission change a NON-auto-mode GoalStartReviewAsk that
|
|
50
|
-
// is dead on `-p`), and 2026-06-23 covered the 0.18.0→0.19.1 minor (the
|
|
51
|
-
// writer + records/ 0-byte; the bumping feature #812 `--add-dir` touches
|
|
52
|
-
// only an approve policy at the queue tail, structurally dead below the
|
|
53
|
-
// `-p` auto-mode approve and still pre-empted by our index-0 hook even when
|
|
54
|
-
// project-local `.kimi-code/local.toml` makes additionalDirs non-empty;
|
|
55
|
-
// #963's new `turn.ended` reason:'filtered' is a failure REASON not a new
|
|
56
|
-
// stdout record SHAPE;
|
|
57
|
-
// GREEN smoke 9/0 on the operator's 0.19.1 binary —
|
|
58
|
-
// .claude/kimi-code-research/reports/85-upstream-0191-surface.md), and
|
|
59
|
-
// 2026-06-26 covered the 0.19.1→0.20.0 minor (run-prompt.ts + options.ts +
|
|
60
|
-
// records/ all 0-byte; #1040's new `warning` agent event is swallowed on `-p`
|
|
61
|
-
// at run-prompt.ts:495 `case 'warning': return;`, so it never reaches this
|
|
62
|
-
// parser; #1062's tool-result budget adds a `truncated` flag to tool-result
|
|
63
|
-
// CONTENT, not the record SHAPE; the new runShellCommand RPC + kimi server/web
|
|
64
|
-
// stack are off the `-p` path — report 88. Smoke NOT run this cert: the 0.20.0
|
|
65
|
-
// `bun run smoke:real` was quota-blocked, 403 usage-limit, records:[] — an
|
|
66
|
-
// operator-billing false alarm, not a compat break; certified on source audit;
|
|
67
|
-
// the later 0.20.2 smoke ran GREEN 9/0 on 2026-06-29), and 2026-07-01
|
|
68
|
-
// covered the 0.20.3→0.21.1 minor+patch (report 93; agent/records/ 0-byte,
|
|
69
|
-
// run-prompt.ts writer/resume_hint/goal.summary unchanged, #1204 plugin
|
|
70
|
-
// slash commands off the `-p` path, #1233 cleanup timeout after the writer
|
|
71
|
-
// flush; GREEN smoke 9/0 on the operator's 0.21.1 binary), and 2026-07-05
|
|
72
|
-
// covered the 0.21.1→0.22.3 minor+patch (reports 94/95; hook engine
|
|
73
|
-
// unchanged, policy order still hook-first, writer shape compatible; 0.22.3's
|
|
74
|
-
// prompt-mode background-drain happens after assistant-output flush and is
|
|
75
|
-
// bounded by plugin budgets; shell-output caps and session-owned
|
|
76
|
-
// media-originals do not alter the NDJSON record schema; GREEN smoke 9/0 on
|
|
77
|
-
// a temp-installed 0.22.3 binary), and 2026-07-07 covered the
|
|
78
|
-
// 0.22.3→0.23.1 minor (report 96; hook engine unchanged, policy order still
|
|
79
|
-
// hook-first, PromptJsonWriter-compatible scoped `run-prompt.ts` delta only
|
|
80
|
-
// adds telemetry sessionId; `select_tools` is denied by our hook unless
|
|
81
|
-
// deliberately allowlisted; observability records are persisted agent-log
|
|
82
|
-
// records, not new stdout NDJSON shapes; GREEN smoke 9/0 on a temp-installed
|
|
83
|
-
// 0.23.1 binary), and 2026-07-08 covered the 0.23.2 patch (daily checkup;
|
|
84
|
-
// no writer/resume_hint/goal.summary drift, `02-permission.diff` and
|
|
85
|
-
// `05-session-bootstrap.diff` 0-byte; the only scoped `run-prompt.ts`
|
|
86
|
-
// change keeps the cleanup timeout ref'd so failed headless `-p` turns exit
|
|
87
|
-
// non-zero reliably, and the only hook-engine-adjacent change adds
|
|
88
|
-
// `windowsHide:true` to hook child-process spawn options on Windows; GREEN
|
|
89
|
-
// smoke 9/0 on a temp-installed 0.23.2 binary), and 2026-07-09 covered the
|
|
90
|
-
// 0.23.3/0.23.4 patches (daily checkup; permission + both hook-tree diffs
|
|
91
|
-
// 0-byte; #1516 keeps prompt-mode goals alive across continuation turns
|
|
92
|
-
// until terminal without changing PromptJsonWriter, session.resume_hint,
|
|
93
|
-
// or goal.summary shapes; the wire/session delta is internal provider-auth
|
|
94
|
-
// and media-projection plumbing, while the bootstrap delta adds `[image]`
|
|
95
|
-
// limits without changing hook or permission construction; GREEN smoke 9/0
|
|
96
|
-
// on a temp-installed 0.23.4 binary, including two-minute multi-turn goal
|
|
97
|
-
// confinement and both write-swarm worktree-boundary assertions), and
|
|
98
|
-
// 2026-07-11 covered the 0.23.5 patch at tag commit `352a4492`
|
|
99
|
-
// (permission, both hook trees, and session bootstrap all 0-byte; the wire
|
|
100
|
-
// diff only adds the internal `media-stripped` projection type). The one
|
|
101
|
-
// live stdout change is this file's `turn.step.retrying` meta record: it is
|
|
102
|
-
// modeled exactly and filtered from consumer records while malformed shapes
|
|
103
|
-
// remain diagnostic. The post-change exact-binary smoke was GREEN 9/0 in
|
|
104
|
-
// 229.56s, including the full goal budget and both write-swarm boundaries),
|
|
105
|
-
// and 2026-07-12 covered the 0.23.6 patch at tag commit `b5c236d0`
|
|
106
|
-
// (permission and both hook trees 0-byte; no new PromptJsonWriter record;
|
|
107
|
-
// `run-prompt.ts` now keeps print mode alive across active goals, pending
|
|
108
|
-
// cron fires, and opt-in background steering, all still bounded externally
|
|
109
|
-
// by plugin budgets; subagent timeout config and the capability rename to
|
|
110
|
-
// dynamically_loaded_tools do not alter stdout shape). Exact-binary smoke
|
|
111
|
-
// was GREEN 9/0 in 274.55s, including the full goal budget and both
|
|
112
|
-
// write-swarm boundaries), and 2026-07-15 covered the 0.23.6→0.24.2
|
|
113
|
-
// minor (Phase-1 reports 97-100; permission and the live session/hooks
|
|
114
|
-
// surfaces 0-byte; default-v1 writer/resume/retry/goal shapes compatible;
|
|
115
|
-
// GREEN exact-binary v1 smoke 9/0, 39 assertions in 261.33s). A truthy
|
|
116
|
-
// native v2 shares the writer shapes and terminal session.resume_hint but
|
|
117
|
-
// prepends one new
|
|
118
|
-
// role:"meta", type:"system.version" record. Unknown meta is intentionally
|
|
119
|
-
// non-fatal: it becomes diagnostic-only, never enters records[]/onRecord,
|
|
120
|
-
// and cannot affect prose or session pinning. A targeted exact-v2 review
|
|
121
|
-
// smoke denied the forced write (1 pass / 8 skip / 0 fail).
|
|
122
|
-
// 2026-07-16 covered 0.25.0 + 0.26.0 (the 0.25.0 step added only 943 B
|
|
123
|
-
// of permission telemetry; all three primary safety surfaces were 0-byte
|
|
124
|
-
// on the 0.26.0 step; no new PromptJsonWriter record on either),
|
|
125
|
-
// 2026-07-18 covered 0.27.0, 2026-07-21 covered 0.28.1,
|
|
126
|
-
// 2026-07-23/24 covered 0.29.0 + 0.29.1, and 2026-07-27 covered 0.29.2
|
|
127
|
-
// (permission/hooks stayed 0-byte across every step; the 0.29.x
|
|
128
|
-
// wire/bootstrap changes did not alter PromptJsonWriter output; GREEN
|
|
129
|
-
// exact-binary smoke 10/0, 43 assertions, on each of exact 0.27.0,
|
|
130
|
-
// 0.28.1, 0.29.0, 0.29.1, and 0.29.2; the 0.29.1 veto-event refactor
|
|
131
|
-
// and 0.29.2 automatic scope-activation refactor preserved the modeled
|
|
132
|
-
// system.version signal and terminal session pinning), 2026-07-29 covered
|
|
133
|
-
// 0.30.0, 2026-07-31 covered 0.31.0, 2026-08-01 covered 0.31.1, and
|
|
134
|
-
// 2026-08-08 covered 0.32.0 through 0.34.0, 2026-08-12 covered 0.35.0,
|
|
135
|
-
// 2026-08-13 covered 0.36.0, 2026-08-24 covered 0.37.0 through
|
|
136
|
-
// 0.38.0, 2026-08-27 covered 0.39.0 (prompt-render.ts byte-identical;
|
|
137
|
-
// the MCP structured-content and error-code changes shift only prose
|
|
138
|
-
// inside opaque tool content strings), and 2026-09-02 covered 0.40.0
|
|
139
|
-
// (wire/session scope 0 bytes; run-prompt.ts absent from the diff). The
|
|
140
|
-
// 2026-09-06 covered 0.41.0 (v1 core, prompt-render.ts, goal-prompt.ts,
|
|
141
|
-
// and prompt-session.ts unchanged; exact-binary smoke 12/0, 55 assertions).
|
|
142
|
-
// The legacy-v1 writer remains compatible through 0.41.0;
|
|
143
|
-
// custom profiles can change content/tools but
|
|
144
|
-
// not the NDJSON envelope. In 0.33.0 native v2 became the unflagged default,
|
|
145
|
-
// so v1.9.6 forces KIMI_CODE_LEGACY_FLAG=1 in every accepted child while
|
|
146
|
-
// retaining the old experimental-selector refusal. This parser continues
|
|
147
|
-
// to model v2's system.version record for diagnostics and a future safe
|
|
148
|
-
// re-enable; absence of that record is now a legacy-pin smoke assertion.
|
|
149
|
-
// NB: from 0.6.0 run-prompt.ts
|
|
150
|
-
// is no longer a whole-file zero-byte diff — at 0.6.0 it gained a
|
|
151
|
-
// resume-session workDir guard, and at 0.8.0 it gained headless goal
|
|
152
|
-
// mode (`runHeadlessGoal`) — but both changes are OUTSIDE the
|
|
153
|
-
// stream-json writer, which every audit confirmed byte-identical by
|
|
154
|
-
// content/blob SHA. Goal mode also writes a `{"type":"goal.summary",...}`
|
|
155
|
-
// line (no `role` field) before the resume hint when the prompt is
|
|
156
|
-
// `/goal`-prefixed (on 0.8–0.11 the `goal-command` experimental flag must
|
|
157
|
-
// also be on; 0.12.0 removed that gate — PR #569 — so the `/goal` prefix
|
|
158
|
-
// alone triggers it). Read-only commands never trigger it (their trimmed
|
|
159
|
-
// prompt never starts with `/goal`); the v1.1 /kimi:pursue command is
|
|
160
|
-
// the intentional consumer — it is recognized as a first-class record on
|
|
161
|
-
// the dedicated `StreamJsonOutcome.goalSummary` channel (see
|
|
162
|
-
// GoalSummaryRecord below), NOT routed to the malformed channel. See
|
|
163
|
-
// reports 47-65, 72-76).
|
|
164
|
-
// The hint is emitted once per prompt run at session END
|
|
165
|
-
// (after runPromptTurn settles), not at session start. In 0.1.x the
|
|
166
|
-
// resume hint went to stderr only; 0.2.0+ emits a structured
|
|
167
|
-
// stream-json record on stdout when `--output-format stream-json` is
|
|
168
|
-
// selected (text-output mode still writes the stderr line). Our
|
|
169
|
-
// cli-client consumes the meta record's `session_id` for resume/replay
|
|
170
|
-
// routing.
|
|
18
|
+
// - session.resume_hint is emitted once at session end. Legacy 0.1.x sent
|
|
19
|
+
// the resume hint to stderr; stream-json uses this stdout meta record.
|
|
171
20
|
// - hook.result events arrive as role:"assistant" with the block rendered as
|
|
172
21
|
// plain text (see formatHookResultPlain in run-prompt.ts). Our
|
|
173
22
|
// PreToolUse hook's deny reason therefore surfaces in the assistant
|
|
@@ -185,10 +34,8 @@ export const MAX_STREAM_JSON_LINE_BYTES = 1_048_576;
|
|
|
185
34
|
* Lifecycle:
|
|
186
35
|
* - `push(chunk)` — consume bytes; returns outcomes for any complete lines
|
|
187
36
|
* that finished within this chunk.
|
|
188
|
-
* - `flush()` — at end of stream,
|
|
189
|
-
*
|
|
190
|
-
* a non-empty flush remainder indicates an unfinished record (likely an
|
|
191
|
-
* interrupted spawn).
|
|
37
|
+
* - `flush()` — at end of stream, parse a valid trailing JSON record even
|
|
38
|
+
* without a final newline; malformed trailing input becomes diagnostic.
|
|
192
39
|
*
|
|
193
40
|
* Outcomes are non-throwing — malformed lines surface via `malformedLine` /
|
|
194
41
|
* `malformedReason` so callers can route them to a diagnostics log without
|
|
@@ -225,8 +72,6 @@ export class StreamJsonParser {
|
|
|
225
72
|
while (newlineIndex !== -1) {
|
|
226
73
|
const line = this.buffer.slice(0, newlineIndex);
|
|
227
74
|
this.buffer = this.buffer.slice(newlineIndex + 1);
|
|
228
|
-
// Skip blank lines (the writer doesn't emit them, but tolerate
|
|
229
|
-
// CRLF-doubled or trailing whitespace defensively).
|
|
230
75
|
if (line.replace(/\r/g, "").length > 0) {
|
|
231
76
|
out.push(parseLine(line));
|
|
232
77
|
}
|
|
@@ -260,8 +105,6 @@ function parseLine(line) {
|
|
|
260
105
|
if (role === "meta") {
|
|
261
106
|
return validateMeta(parsed, line);
|
|
262
107
|
}
|
|
263
|
-
// Role-less goal-mode summary (kimi-code 0.8.0+). Keyed by `type`, not
|
|
264
|
-
// `role`, so it's surfaced on the dedicated goalSummary outcome channel.
|
|
265
108
|
if (role === undefined && parsed["type"] === "goal.summary") {
|
|
266
109
|
return validateGoalSummary(parsed, line);
|
|
267
110
|
}
|
|
@@ -279,16 +122,9 @@ function parseLine(line) {
|
|
|
279
122
|
message: parsed["message"].slice(0, 4000),
|
|
280
123
|
} };
|
|
281
124
|
}
|
|
282
|
-
// H3 forward-compat: a non-empty string role we don't model (a role a future
|
|
283
|
-
// kimi-code adds). Surface it out-of-band on the unknownRecord channel —
|
|
284
|
-
// tolerated, not malformed — so the parser keeps working and the diagnostic
|
|
285
|
-
// log distinguishes "new upstream role" from a genuinely broken line. It
|
|
286
|
-
// never enters records[] (see UnknownRoleRecord + the consumer sweep).
|
|
287
125
|
if (typeof role === "string" && role.length > 0) {
|
|
288
126
|
return { unknownRecord: { role, raw: parsed } };
|
|
289
127
|
}
|
|
290
|
-
// Genuinely malformed: no `role` at all (and not a recognized role-less typed
|
|
291
|
-
// record like goal.summary), or a non-string role. Surface as malformed.
|
|
292
128
|
return {
|
|
293
129
|
malformedLine: line,
|
|
294
130
|
malformedReason: `unknown role: ${JSON.stringify(role)}`,
|
|
@@ -400,9 +236,7 @@ function validateMeta(parsed, line) {
|
|
|
400
236
|
};
|
|
401
237
|
return { record };
|
|
402
238
|
}
|
|
403
|
-
// Unknown meta types are
|
|
404
|
-
// malformed channel for diagnostics, but don't crash. kimi-code may add
|
|
405
|
-
// new meta types in 0.3.x and our wrapper should keep working.
|
|
239
|
+
// Unknown meta types are diagnostic-only and nonfatal.
|
|
406
240
|
return {
|
|
407
241
|
malformedLine: line,
|
|
408
242
|
malformedReason: `unknown meta.type: ${JSON.stringify(type)}`,
|
|
@@ -503,8 +337,6 @@ export function extractSessionIdFromStderr(stderr) {
|
|
|
503
337
|
// hostile stderr line could pin `session_--------` (8 dashes) or any
|
|
504
338
|
// 8+ char hex-dash token as the captured session id, weakening the
|
|
505
339
|
// "anchored full-UUID regex" safety invariant documented in AGENTS.md.
|
|
506
|
-
// Review-smoke (kimi 0.2.0 on the alpha.5 candidate) flagged the loose
|
|
507
|
-
// form; this is the post-review tightening.
|
|
508
340
|
const uuid = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}";
|
|
509
341
|
const pattern = new RegExp(`^To resume this session:\\s+kimi\\s+-r\\s+(session_${uuid}|${uuid})\\s*$`, "im");
|
|
510
342
|
return stderr.match(pattern)?.[1];
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: kimi-ask
|
|
3
|
-
description: "Ask Kimi a read-only free-form question about the current repository. Use for prose explanations, flow tracing, module comparisons, or conceptual reasoning
|
|
3
|
+
description: "Ask Kimi a read-only free-form question about the current repository. Use for prose explanations, flow tracing, module comparisons, or conceptual reasoning when the user wants an independent Kimi answer rather than implementation."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Kimi Ask
|
|
7
7
|
|
|
8
|
-
Forward this request to the local
|
|
8
|
+
Forward this request to the local Kimi Code companion runtime by shell. Do not use MCP for this skill.
|
|
9
9
|
|
|
10
10
|
## Invocation
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ description: "Cancel an active plugin-managed Kimi job for the current repositor
|
|
|
5
5
|
|
|
6
6
|
# Kimi Cancel
|
|
7
7
|
|
|
8
|
-
Forward this request to the local
|
|
8
|
+
Forward this request to the local Kimi Code companion runtime by shell. Do not use MCP for this skill.
|
|
9
9
|
|
|
10
10
|
## Invocation
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ description: "Run a read-only adversarial Kimi challenge review that questions a
|
|
|
5
5
|
|
|
6
6
|
# Kimi Challenge
|
|
7
7
|
|
|
8
|
-
Forward this request to the local
|
|
8
|
+
Forward this request to the local Kimi Code companion runtime by shell. Do not use MCP for this skill.
|
|
9
9
|
|
|
10
10
|
## Invocation
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ description: "Run Kimi's autonomous goal mode for an explicitly requested hands-
|
|
|
5
5
|
|
|
6
6
|
# Kimi Pursue
|
|
7
7
|
|
|
8
|
-
Forward this request to the local
|
|
8
|
+
Forward this request to the local Kimi Code companion runtime by shell. Do not use MCP for this skill.
|
|
9
9
|
|
|
10
10
|
## Invocation
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ description: "Re-render a stored event log for a completed plugin-managed Kimi j
|
|
|
5
5
|
|
|
6
6
|
# Kimi Replay
|
|
7
7
|
|
|
8
|
-
Forward this request to the local
|
|
8
|
+
Forward this request to the local Kimi Code companion runtime by shell. Do not use MCP for this skill.
|
|
9
9
|
|
|
10
10
|
## Invocation
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ description: "Delegate a bounded write-capable investigation or implementation t
|
|
|
5
5
|
|
|
6
6
|
# Kimi Rescue
|
|
7
7
|
|
|
8
|
-
Forward this request to the local
|
|
8
|
+
Forward this request to the local Kimi Code companion runtime by shell. Do not use MCP for this skill.
|
|
9
9
|
|
|
10
10
|
## Invocation
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ description: "Return the stored rendered result for the latest or selected termi
|
|
|
5
5
|
|
|
6
6
|
# Kimi Result
|
|
7
7
|
|
|
8
|
-
Forward this request to the local
|
|
8
|
+
Forward this request to the local Kimi Code companion runtime by shell. Do not use MCP for this skill.
|
|
9
9
|
|
|
10
10
|
## Invocation
|
|
11
11
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: kimi-review
|
|
3
|
-
description: "Run an independent read-only Kimi review over the current working tree or a branch diff. Use when the user wants a second reviewer for defects, regressions, or implementation risks, not edits."
|
|
3
|
+
description: "Run an independent read-only Kimi review over the current working tree, including untracked files, or a branch diff. Use when the user wants a second reviewer for defects, regressions, or implementation risks, not edits."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Kimi Review
|
|
7
7
|
|
|
8
|
-
Forward this request to the local
|
|
8
|
+
Forward this request to the local Kimi Code companion runtime by shell. Do not use MCP for this skill.
|
|
9
9
|
|
|
10
10
|
## Invocation
|
|
11
11
|
|
|
@@ -29,6 +29,6 @@ Pass through: `[--budget <30m|1h|90s>] [--base <ref>] [-m <model>] [--thinking <
|
|
|
29
29
|
- For subscription auth, guide native Kimi `/login`; for API keys or other providers, guide native `/provider` and have the user enter secrets there. Only an explicit saved-default request calls for native `/model`. Re-list after setup; use `setup --check` for hook readiness. Swarm `-m` selects the coordinator; `[secondary_model]` can select different child models.
|
|
30
30
|
- Preserve `--budget <dur>` (30m|1h|90s or bare minutes, maximum 24h); default 30m for ask/review/challenge, 45m for rescue. Backgrounding does not extend the budget. On timeout the job stays failed and `result <jobId> [--json]` returns an artifact with partial output labeled NOT a final answer. A session ID is kept if Kimi announced it or, on a native-v2 budget timeout, recovered from the session store when exactly one session matching this spawn exists; `result --json` identifies the source in `kimi_session_id_source`. Cancellation does not capture partial output. Ask/rescue resume inherits the parent budget unless explicitly overridden. Inherited budgets are printed to stderr at launch; status and `result --json` expose `budget_source` (`explicit`, `inherited`, or `default`; old non-null budgets report `unknown`).
|
|
31
31
|
- Forward `--base <ref>`, `-m`/`--model <name>`, `--budget <dur>`, and any trailing focus text only.
|
|
32
|
-
- Do not invent file/path flags; review
|
|
32
|
+
- Do not invent file/path flags; working-tree review supplies Git status and diff context, with untracked files read from the workspace, plus optional focus text. `--base` keeps the branch diff as its scope.
|
|
33
33
|
- If the companion reports REVIEW_HOOK_NOT_INSTALLED, tell the user to run Claude Code /kimi:setup or Codex $kimi-setup, then retry; do not suggest the skip env.
|
|
34
34
|
- Return companion stdout verbatim and leave any fixes to a separate user request.
|
|
@@ -5,7 +5,7 @@ description: "List configured models, guide provider setup, verify local Kimi co
|
|
|
5
5
|
|
|
6
6
|
# Kimi Setup
|
|
7
7
|
|
|
8
|
-
Forward this request to the local
|
|
8
|
+
Forward this request to the local Kimi Code companion runtime by shell. Do not use MCP for this skill.
|
|
9
9
|
|
|
10
10
|
## Invocation
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ description: "Show the latest or selected plugin-managed Kimi job for the curren
|
|
|
5
5
|
|
|
6
6
|
# Kimi Status
|
|
7
7
|
|
|
8
|
-
Forward this request to the local
|
|
8
|
+
Forward this request to the local Kimi Code companion runtime by shell. Do not use MCP for this skill.
|
|
9
9
|
|
|
10
10
|
## Invocation
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ description: "Run a read-only parallel Kimi review fan-out across many independe
|
|
|
5
5
|
|
|
6
6
|
# Kimi Swarm
|
|
7
7
|
|
|
8
|
-
Forward this request to the local
|
|
8
|
+
Forward this request to the local Kimi Code companion runtime by shell. Do not use MCP for this skill.
|
|
9
9
|
|
|
10
10
|
## Invocation
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ description: "Run a write-capable Kimi swarm that edits many disjoint targets in
|
|
|
5
5
|
|
|
6
6
|
# Kimi Swarm Write
|
|
7
7
|
|
|
8
|
-
Forward this request to the local
|
|
8
|
+
Forward this request to the local Kimi Code companion runtime by shell. Do not use MCP for this skill.
|
|
9
9
|
|
|
10
10
|
## Invocation
|
|
11
11
|
|