kimi-plugin-cc 2.5.1 → 2.5.2

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.
@@ -45,10 +45,80 @@ const MATCHER_LINE_RE = /^matcher\s*=/;
45
45
  /** `timeout = <int>` — the only other key our managed [[hooks]] table emits. */
46
46
  const TIMEOUT_LINE_RE = /^timeout\s*=\s*\d+\s*$/;
47
47
  const HOOKS_TABLE_RE = /^\[\[hooks\]\]\s*$/;
48
+ // Recognize comment lines lexically, not text inside TOML string values.
49
+ // Whole-document parsing remains the authority for TOML validity.
50
+ function scanTomlLines(contents) {
51
+ const markers = new Set();
52
+ const tables = new Set();
53
+ let state = "plain";
54
+ let line = 0;
55
+ let blankPrefix = true;
56
+ for (let i = 0; i < contents.length; i += 1) {
57
+ const c = contents[i];
58
+ if (c === "\n") {
59
+ line += 1;
60
+ blankPrefix = true;
61
+ continue;
62
+ }
63
+ const onlyWhitespaceBefore = blankPrefix;
64
+ if (c !== " " && c !== "\t" && c !== "\r")
65
+ blankPrefix = false;
66
+ if (state === "plain") {
67
+ if (c === "[" && onlyWhitespaceBefore)
68
+ tables.add(line);
69
+ if (c === "#") {
70
+ if (onlyWhitespaceBefore) {
71
+ const end = contents.indexOf("\n", i);
72
+ const comment = contents.slice(i, end < 0 ? contents.length : end).trim();
73
+ if (BEGIN_LINE_RE.test(comment) || END_LINE_RE.test(comment))
74
+ markers.add(line);
75
+ }
76
+ const end = contents.indexOf("\n", i);
77
+ if (end < 0)
78
+ break;
79
+ i = end - 1;
80
+ }
81
+ else if (c === '"' || c === "'") {
82
+ const triple = contents.slice(i, i + 3) === c.repeat(3);
83
+ state = c === '"' ? (triple ? "multibasic" : "basic") : (triple ? "multiliteral" : "literal");
84
+ if (triple)
85
+ i += 2;
86
+ }
87
+ }
88
+ else {
89
+ const basic = state === "basic" || state === "multibasic";
90
+ const quote = basic ? '"' : "'";
91
+ if (basic && c === "\\") {
92
+ if (contents[i + 1] === "\n") {
93
+ line += 1;
94
+ blankPrefix = true;
95
+ }
96
+ i += 1;
97
+ continue;
98
+ }
99
+ if (c !== quote)
100
+ continue;
101
+ if (state === "basic" || state === "literal")
102
+ state = "plain";
103
+ else if (contents.slice(i, i + 3) === quote.repeat(3)) {
104
+ while (contents[i + 1] === quote)
105
+ i += 1;
106
+ state = "plain";
107
+ }
108
+ }
109
+ }
110
+ return { markers, tables };
111
+ }
112
+ export function markerCommentLines(contents) {
113
+ return scanTomlLines(contents).markers;
114
+ }
48
115
  /** Locate every BEGIN/END marker line, in order, with its parsed host id. */
49
116
  function findMarkers(lines) {
50
117
  const hits = [];
118
+ const comments = markerCommentLines(lines.join("\n"));
51
119
  for (let i = 0; i < lines.length; i += 1) {
120
+ if (!comments.has(i))
121
+ continue;
52
122
  const trimmed = lines[i].trim();
53
123
  const begin = BEGIN_LINE_RE.exec(trimmed);
54
124
  if (begin !== null) {
@@ -66,7 +136,7 @@ function findMarkers(lines) {
66
136
  }
67
137
  /**
68
138
  * Pair BEGIN/END markers into well-formed blocks. Return the first orphan
69
- * (BEGIN-without-END or END-without-BEGIN); either is a hard error for install.
139
+ * (BEGIN-without-END or END-without-BEGIN); verification fails closed on either.
70
140
  */
71
141
  function pairBlocks(lines) {
72
142
  const markers = findMarkers(lines);
@@ -83,6 +153,8 @@ function pairBlocks(lines) {
83
153
  // end
84
154
  if (open === null)
85
155
  return { orphan: "END-without-BEGIN" };
156
+ if (open.hostId !== marker.hostId)
157
+ return { orphan: "BEGIN-without-END" };
86
158
  const body = validateBlockBody(lines.slice(open.index + 1, marker.index));
87
159
  blocks.push({
88
160
  hostId: open.hostId,
@@ -436,13 +508,13 @@ export function evaluateInstalled(contents, expectedCommand, opts) {
436
508
  * The deletion range `[start, end)` is conservative: only the contiguous
437
509
  * non-blank body after `[[hooks]]`, stopping at a blank line, table header, or
438
510
  * managed marker so adjacent user content is preserved. A separate full-span
439
- * scan rejects matcher lines recognized by MATCHER_LINE_RE to avoid half-cutting
440
- * a table. That scan is deliberately heuristic and does not claim to recognize
441
- * every quoted or dotted TOML matcher spelling. `command` is decoded for the
442
- * caller's ownership checks.
511
+ * scan refuses any further TOML field before the next table, including quoted
512
+ * and dotted keys, so pruning cannot attach those fields to another table.
513
+ * `command` is decoded for the caller's ownership checks.
443
514
  */
444
515
  export function findBareApprovalHookTables(contents) {
445
516
  const lines = contents.split("\n").map((line) => line.replace(/\r$/, ""));
517
+ const tableLines = scanTomlLines(contents).tables;
446
518
  const managed = new Set();
447
519
  const paired = pairBlocks(lines);
448
520
  if ("blocks" in paired) {
@@ -455,7 +527,7 @@ export function findBareApprovalHookTables(contents) {
455
527
  for (let i = 0; i < lines.length; i += 1) {
456
528
  if (managed.has(i))
457
529
  continue;
458
- if (!HOOKS_TABLE_RE.test(lines[i].trim()))
530
+ if (!tableLines.has(i) || !HOOKS_TABLE_RE.test(lines[i].trim()))
459
531
  continue;
460
532
  // Collect the contiguous table body.
461
533
  let j = i + 1;
@@ -500,22 +572,16 @@ export function findBareApprovalHookTables(contents) {
500
572
  }
501
573
  j += 1;
502
574
  }
503
- // A blank line does NOT end a TOML table; membership continues to the next
504
- // header or EOF. The deletion range nevertheless stops at the blank to
505
- // preserve adjacent user content. Scan the remaining span for matcher lines
506
- // this scanner recognizes and reject the table rather than half-cutting it:
507
- // matcher is schema-valid but can disable the hook at runtime. Foreign keys
508
- // and other TOML spellings are handled by whole-file schema validation and
509
- // the parser-based installed checks, not by this prune heuristic.
510
- let matcherBeyondBody = false;
575
+ // Blank lines and marker comments do not end a TOML table. Never leave any
576
+ // field behind to be rebound to a preceding table after pruning, regardless
577
+ // of the field's spelling or whether it is valid for a hook.
578
+ let fieldBeyondBody = false;
511
579
  for (let k = j; k < lines.length; k += 1) {
512
580
  const t = lines[k].trim();
513
- // The current table's TOML span ends at the next table header or a
514
- // managed marker; a matcher past that point belongs to a different table.
515
- if (t.startsWith("[") || BEGIN_LINE_RE.test(t) || END_LINE_RE.test(t))
581
+ if (tableLines.has(k))
516
582
  break;
517
- if (MATCHER_LINE_RE.test(t)) {
518
- matcherBeyondBody = true;
583
+ if (t.length > 0 && !t.startsWith("#")) {
584
+ fieldBeyondBody = true;
519
585
  break;
520
586
  }
521
587
  }
@@ -527,7 +593,7 @@ export function findBareApprovalHookTables(contents) {
527
593
  commandDecoded.length > 0 &&
528
594
  hasPreToolUseEvent &&
529
595
  !hasMatcher &&
530
- !matcherBeyondBody) {
596
+ !fieldBeyondBody) {
531
597
  ranges.push({ start: i, end: j, command: commandDecoded });
532
598
  }
533
599
  }
package/dist/version.js CHANGED
@@ -4,4 +4,4 @@
4
4
  // and AGENTS.md on every release. A future improvement would read this from
5
5
  // package.json at build time, but that adds a build-step dependency we
6
6
  // don't want yet.
7
- export const KIMI_PLUGIN_CC_VERSION = "2.5.1";
7
+ export const KIMI_PLUGIN_CC_VERSION = "2.5.2";
package/docs/migration.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Compatibility and upgrades
2
2
 
3
- Plugin 2.4.5 certifies Kimi Code CLI 2.4.1 for all eight operations, alongside exact native-v2 versions `0.42.0`, `0.43.0`, `0.43.1`, `2.0.0`, `2.0.1`, `2.0.2`, `2.1.0`, `2.1.1`, `2.2.0`, `2.3.0`, `2.3.1`, `2.3.2`, `2.3.3`, and `2.4.0`. Later patches and minor releases are not accepted automatically. The npm distribution adds an installation channel; it does not change this compatibility table.
3
+ Plugin 2.5.1 certifies Kimi Code CLI 2.4.1 for all eight operations, alongside exact native-v2 versions `0.42.0`, `0.43.0`, `0.43.1`, `2.0.0`, `2.0.1`, `2.0.2`, `2.1.0`, `2.1.1`, `2.2.0`, `2.3.0`, `2.3.1`, `2.3.2`, `2.3.3`, and `2.4.0`. Later patches and minor releases are not accepted automatically. The npm distribution adds an installation channel; it does not change this compatibility table.
4
+
5
+ Plugin 2.5.1 also adds DeepSeek Harness as a third host with all seven operations and a DSH-specific bundle, data root, and managed hook id. Existing Claude Code and Codex certification, job stores, and host-scoped hooks are unchanged; no migration is required for those hosts. New DSH installations follow the [README DSH section](../README.md#install-in-deepseek-harness), including `/kimi-setup` on that host.
4
6
 
5
7
  Explicitly pinned legacy-v1 binaries remain supported within `KIMI_TESTED_MINORS`, through 0.41.x, subject to each operation's minimum version. The [runtime table](../runtime/kimi-engine.ts) is the authority.
6
8
 
@@ -8,7 +10,7 @@ Use the [README installation and update steps](../README.md) for Claude Code or
8
10
 
9
11
  ## Plugin versions and upgrades
10
12
 
11
- Plugin versions advance independently using ordinary SemVer and may deliberately align with a certified CLI release. Plugin 2.4.5 certifies exact CLI 2.4.1; the nearby numbers do not imply version alignment. Published versions and tags are never reused. Every upstream patch requires its own certification. The native-v2 no-plan profile, plugin/marketplace IDs and existing job store are preserved.
13
+ Plugin versions advance independently using ordinary SemVer and may deliberately align with a certified CLI release. Plugin 2.5.1 certifies exact CLI 2.4.1; the nearby numbers do not imply version alignment. Published versions and tags are never reused. Every upstream patch requires its own certification. The native-v2 no-plan profile, plugin/marketplace IDs and existing job store are preserved.
12
14
 
13
15
  ## CLI 2.3.2, 2.3.3, 2.4.0 and 2.4.1 swarm activation
14
16
 
@@ -8,6 +8,10 @@ no separate CLI.
8
8
 
9
9
  ## Publishing status
10
10
 
11
+ Plugin **2.5.2** hardens setup recovery and DSH dependency ownership. Its real Kimi Code **2.4.1** smoke passed **24 tests and 167 assertions with no skips**; the exact-source audit passed **16 tests and 97 assertions**. Normal npm installation keeps DSH host services optional. DSH use requires explicitly patched host/profile dependencies and both installation audits described below. Exact CLI certification remains unchanged.
12
+
13
+ Plugin **2.5.1** adds DeepSeek Harness through the existing root npm package and its established OIDC workflow. [Release v2.5.1](https://github.com/linxule/kimi-plugin-cc/releases/tag/v2.5.1) is anchored at `afe68ee2f0e7744e1fc97eb0f1e4007585d969d0`; its [CI check](https://github.com/linxule/kimi-plugin-cc/actions/runs/41335810767) and [release-event publishing run](https://github.com/linxule/kimi-plugin-cc/actions/runs/41336273042) passed. The registry tarball has SHA-1 `f0e42febcb14082be6a654b9b0830885242fd92a`, contains 328 files, matches the CI artifact, and carries signed provenance (sigstore log index `3635166158`). A fresh registry installation into an isolated DSH profile composed all seven providers and booted the Web host. DSH users install with `dsh plugin --profile <name> add kimi-plugin-cc`; no second npm package or Trusted Publishing binding is required.
14
+
11
15
  Plugin **2.4.5** certifies exact CLI **2.4.1** for all eight operations with host-preactivated swarm sessions. [Release v2.4.5](https://github.com/linxule/kimi-plugin-cc/releases/tag/v2.4.5) is anchored at `de8c195c2986443a088b674717133b164d2e4ef2`; its [CI check](https://github.com/linxule/kimi-plugin-cc/actions/runs/41226096281) and [release-event publishing run](https://github.com/linxule/kimi-plugin-cc/actions/runs/41226438326) passed. The registry tarball has SHA-1 `39f97a6de4b26ad51ac77305054682fcd5cd0164`, contains 233 files, and matches the CI artifact byte-for-byte. Fresh registry installs passed setup/check and unsupported-version refusal for both Claude Code and Codex, and both compiled mirrors are byte-identical to the release checkout. See the [certification record](./upstream-2.4.1-certification.md) and structured verification at `.claude/kimi-code-research/release-2.4.5/registry-verification.json`.
12
16
 
13
17
  Plugin **2.4.2** adds durable interrupted-swarm recovery and Windows spawn diagnostics.
@@ -78,9 +82,11 @@ file at the tag, so fixes to `publish.yml` reach an existing tag only through
78
82
  ## Validation
79
83
 
80
84
  Use the repository's normal version bump and generated-surface procedure in
81
- AGENTS.md. Keep plugin and npm versions identical. Certification for new Kimi
82
- Code versions still requires the source audit and real-binary controls; adding
83
- a registry channel does not certify another CLI version.
85
+ AGENTS.md. Keep plugin and npm versions identical, and update
86
+ `DSH_PUBLISH_TIMESTAMP` with the actual publication time so the generated DSH
87
+ Discover index stays current. Certification for new Kimi Code versions still
88
+ requires the source audit and real-binary controls; adding a registry channel
89
+ does not certify another CLI version.
84
90
 
85
91
  ```sh
86
92
  bun install --frozen-lockfile
@@ -88,6 +94,7 @@ bun run build
88
94
  bun run generate:surfaces
89
95
  # Review and stage generated distributions before the drift gate.
90
96
  bun run check
97
+ bun run check:consumer-security
91
98
  node scripts/check-package.mjs .tmp/npm
92
99
  node scripts/check-dsh-package.mjs .tmp/dsh-npm
93
100
  ```
@@ -101,6 +108,60 @@ check installs that same root tarball into an isolated DSH home, verifies all
101
108
  seven tools, and boots the Web host. Neither check invokes a model or reads the
102
109
  maintainer's Kimi configuration.
103
110
 
111
+ The consumer-security gate installs the packed package into a fresh npm project
112
+ and audits the resolved production dependency graph. DSH services and its tool
113
+ adapter are optional peers supplied by the DSH host; ordinary npm installation
114
+ for Claude Code or Codex does not install the harness. Optional peers still
115
+ carry compatibility ranges when present. The gate runs in CI and release
116
+ validation and refuses high/critical advisories, failed audits, and incomplete
117
+ reports. The checkout's overrides do not constrain downstream npm resolution.
118
+
119
+ ### Patched DSH host and profiles
120
+
121
+ DSH 0.2.1-rc.5 and 0.2.2-alpha.2 still pin vulnerable `zod` and `undici`
122
+ versions. See the [upstream dependency report](https://github.com/deepseek-ai/deepseek-harness/discussions/10847).
123
+ Use a patched DSH host installation with `zod >=4.6.6` and `undici >=8.12.2`.
124
+ This is an explicit installation requirement; the plugin does not rewrite the
125
+ host or profiles automatically. A profile override alone does not patch copies
126
+ inside a separately installed DSH CLI.
127
+
128
+ For example, create a dedicated npm host project (Node >=24.9), then use its
129
+ DSH binary for plugin installation and launch:
130
+
131
+ ```sh
132
+ mkdir -p ~/.local/share/kimi-dsh-host
133
+ cd ~/.local/share/kimi-dsh-host
134
+ npm init -y
135
+ npm pkg set 'overrides.zod=^4.6.6' 'overrides.undici=^8.12.2'
136
+ npm install @deepseek-ai/dsh@0.2.1-rc.5
137
+ npm audit --omit=dev --audit-level=high
138
+ ./node_modules/.bin/dsh plugin --profile web add kimi-plugin-cc
139
+ ./node_modules/.bin/dsh plugin --profile web audit --prod --audit-level high
140
+ ./node_modules/.bin/dsh web --no-open
141
+ ```
142
+
143
+ The host project is separate from `$DSH_HOME/profiles/web`. Keep using that
144
+ project's DSH binary so the audited host is the one that runs. The commands
145
+ above install the published plugin; use a validated local tarball when testing
146
+ an unpublished change.
147
+
148
+ If an existing profile separately installs DSH packages, its owner must also
149
+ patch and audit that profile:
150
+
151
+ ```sh
152
+ dsh plugin --profile web pkg set 'pnpm.overrides.zod=^4.6.6' 'pnpm.overrides.undici=^8.12.2'
153
+ dsh plugin --profile web install
154
+ dsh plugin --profile web audit --prod --audit-level high
155
+ ```
156
+
157
+ Replace `web` with the intended profile, and run these commands with the patched
158
+ host binary. Overrides affect dependency resolution and require application
159
+ checks. The DSH package gate creates a fresh host with the declared overrides,
160
+ audits both that host and the installed profile for high/critical advisories,
161
+ then verifies all seven tool compositions and Web boot using that same host.
162
+ These checks do not claim that every moderate/low advisory is fixed or that
163
+ upstream has published a patched release.
164
+
104
165
  ## First publication (completed bootstrap reference)
105
166
 
106
167
  The package must first exist on npm before its package settings can be configured.
package/docs/safety.md CHANGED
@@ -72,7 +72,7 @@ Key constraints (verified by [`runtime/hooks/managed-block.ts`](../runtime/hooks
72
72
  1. **No `matcher` line.** kimi-code compiles the matcher field via `new RegExp(matcher)`. An empty matcher means "fire for every tool." `new RegExp("*")` throws, which kimi-code catches and treats as "no matcher" → silently disables the hook. The installer omits the field intentionally; the verifier rejects any block that contains a `matcher = ...` line.
73
73
  2. **Absolute Node path.** kimi-code spawns hook commands via `/bin/sh -c "<command>"`. If we wrote bare `node`, the shell would resolve it against kimi-code's PATH at execution time. On a system where kimi-code launches from a GUI/LaunchAgent with a sanitized PATH (nvm/asdf/mise users), bare `node` would exit 127 → hook protocol treats non-{0,2} as **allow** → safety contract collapses with no user-visible signal.
74
74
  3. **TOML basic-string escaping.** The command field is a TOML basic string. Quotes, backslashes, newlines, and control characters in the resolved hook path are escaped during install; paths containing characters that cannot be safely escaped (literal `"`, raw control chars) are rejected up front with `SETUP_HOOK_PATH_UNSAFE`.
75
- 4. **Exact marker grammar.** The verifier rejects stray comments containing the marker tag, partial references, duplicate blocks (from a setup race), and orphan markers (from a manual edit). The same parser is used by both the installer and the per-call verifier so the two cannot disagree.
75
+ 4. **Exact marker grammar.** The verifier rejects duplicate blocks and orphan or mismatched host markers. Install removes lexically proven unpaired marker comments across hosts, preserving surrounding content and all foreign hook tables, and warns. Text inside TOML strings is not a marker. The verifier remains fail-closed until repair and full validation succeed.
76
76
  5. **Exact command equality, per host.** The verifier reconstructs the canonical command byte string from the current env and equality-checks the installed `command` (never a substring — a crafted `true # /path/to/approval-hook.js` runs only `true` and would auto-allow). This holds *per host id* (below): each host verifies its own block.
77
77
  6. **Full-config parse and whole-hook-array validation.** The verifier parses the complete file with vendored `smol-toml@1.9.1` with upstream fixes included and no local JavaScript modifications (see `runtime/vendor/smol-toml/README.md`), before inspecting the managed block. It then applies upstream's strict config schema to every configured hook (`event`, optional string `matcher`, non-empty `command`, optional integer `timeout` 1–600, no extra fields). A malformed unrelated TOML value or one invalid foreign hook can make kimi-code discard enforcement; both therefore fail verification.
78
78
  7. **Serialized, identity-bound setup mutations.** Install and uninstall hold a private `0o600` sibling lock across the complete read-modify-write transaction. The candidate lock is published atomically; lock reads are no-follow, nonblocking, regular-file-only, and capped at 4 KiB. Acquisition is bounded, live owners are never stolen, stale recovery is guarded by a nonrecursive recovery lease, and inode/token ownership is rechecked before config mutation or lock removal. Simultaneous Claude Code/Codex setup runs therefore cannot lose either host's block, and a replaced lock is never treated as ours. A newly created Kimi home is `0o700`; atomic config writes remain `0o600`.
@@ -128,6 +128,8 @@ uninstalls only its **own** block.
128
128
 
129
129
  ## DeepSeek Harness providers
130
130
 
131
+ DSH's host and any profile-local harness packages must use patched `zod >=4.6.6` and `undici >=8.12.2`. The plugin treats DSH services as optional host-provided peers; it does not install the harness for other hosts or rewrite an existing DSH installation. Audit the actual host installation as well as the profile. See [patched DSH setup](./registry-releases.md#patched-dsh-host-and-profiles).
132
+
131
133
  The DSH bundle exposes the same seven operations as the other hosts: `kimi_ask`, `kimi_review`, `kimi_challenge`, `kimi_rescue`, `kimi_pursue`, `kimi_swarm`, and `kimi_swarm_write`. Each activation starts the existing companion through DSH's managed subprocess service and uses the same `kimi -p` transport, hook verification, exact-version certification, job store, and response or safety budgets. ACP is not used.
132
134
 
133
135
  Run `/kimi-setup` explicitly before delegating. Installing or enabling the bundle does not modify Kimi configuration. DSH uses host id `dsh` and `$DSH_HOME/plugin-data/kimi-plugin-cc` unless an absolute data-root override selects another store. Its provider-owned environment clears other-host roots/data, hook/script overrides, trusted roots, and verification bypasses instead of inheriting them.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kimi-plugin-cc",
3
- "version": "2.5.1",
3
+ "version": "2.5.2",
4
4
  "description": "Kimi for Claude Code, Codex, and DeepSeek Harness: code questions, independent reviews, bounded fixes, autonomous goals, parallel tasks, and MCP tools through the local Kimi Code CLI.",
5
5
  "type": "module",
6
6
  "main": "dist/dsh/index.js",
@@ -22,6 +22,7 @@
22
22
  "test": "bun test",
23
23
  "smoke:real": "KIMI_PLUGIN_CC_SMOKE=1 bun test tests/runtime/real-binary-smoke.test.ts --path-ignore-patterns '**/worktrees/**'",
24
24
  "check:package": "node scripts/check-package.mjs && node scripts/check-dsh-package.mjs",
25
+ "check:consumer-security": "node scripts/check-consumer-security.mjs",
25
26
  "check:contracts": "node scripts/check-contract-size.mjs"
26
27
  },
27
28
  "devDependencies": {
@@ -31,16 +32,17 @@
31
32
  "@deepseek-ai/dsh-session": "0.2.1-rc.5",
32
33
  "@deepseek-ai/dsh-subagent": "0.2.1-rc.5",
33
34
  "@deepseek-ai/dsh-subprocess": "0.2.1-rc.5",
35
+ "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.5",
36
+ "@deepseek-ai/dsh-tool-subagent": "0.2.1-rc.5",
34
37
  "@deepseek-ai/dsh-working-directory": "0.2.1-rc.5",
35
- "@types/bun": "^1.4.2",
36
- "@types/node": "^26.5.1",
38
+ "@types/bun": "^1.4.4",
39
+ "@types/node": "^26.6.6",
37
40
  "smol-toml": "1.9.1",
38
41
  "tsx": "^4.23.13",
39
42
  "typescript": "^7.0.2"
40
43
  },
41
44
  "dependencies": {
42
45
  "@deepseek-ai/dsh-brand": "0.2.1-rc.5",
43
- "@deepseek-ai/dsh-tool-subagent": "0.2.1-rc.5",
44
46
  "@deepseek-ai/schemastery": "3.18.5"
45
47
  },
46
48
  "peerDependencies": {
@@ -50,7 +52,38 @@
50
52
  "@deepseek-ai/dsh-session": ">=0.2.1-rc.5 <0.3.0",
51
53
  "@deepseek-ai/dsh-subagent": ">=0.2.1-rc.5 <0.3.0",
52
54
  "@deepseek-ai/dsh-subprocess": ">=0.2.1-rc.5 <0.3.0",
53
- "@deepseek-ai/dsh-working-directory": ">=0.2.1-rc.5 <0.3.0"
55
+ "@deepseek-ai/dsh-system-prompt": ">=0.2.1-rc.5 <0.3.0",
56
+ "@deepseek-ai/dsh-working-directory": ">=0.2.1-rc.5 <0.3.0",
57
+ "@deepseek-ai/dsh-tool-subagent": ">=0.2.1-rc.5 <0.3.0"
58
+ },
59
+ "peerDependenciesMeta": {
60
+ "@deepseek-ai/cordis": {
61
+ "optional": true
62
+ },
63
+ "@deepseek-ai/dsh-commands": {
64
+ "optional": true
65
+ },
66
+ "@deepseek-ai/dsh-llm": {
67
+ "optional": true
68
+ },
69
+ "@deepseek-ai/dsh-session": {
70
+ "optional": true
71
+ },
72
+ "@deepseek-ai/dsh-subagent": {
73
+ "optional": true
74
+ },
75
+ "@deepseek-ai/dsh-subprocess": {
76
+ "optional": true
77
+ },
78
+ "@deepseek-ai/dsh-system-prompt": {
79
+ "optional": true
80
+ },
81
+ "@deepseek-ai/dsh-working-directory": {
82
+ "optional": true
83
+ },
84
+ "@deepseek-ai/dsh-tool-subagent": {
85
+ "optional": true
86
+ }
54
87
  },
55
88
  "overrides": {
56
89
  "zod": "^4.6.6",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kimi",
3
- "version": "2.5.1",
3
+ "version": "2.5.2",
4
4
  "description": "Kimi for Codex: code questions, independent reviews, bounded fixes, autonomous goals, parallel tasks, and MCP job controls through the local Kimi Code CLI.",
5
5
  "author": {
6
6
  "name": "linxule"