mancode 0.5.0 → 0.5.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/README.en.md CHANGED
@@ -11,14 +11,14 @@
11
11
 
12
12
  <p align="center">
13
13
  Adapts to common coding agent tools, including Claude Code, Cursor, Codex in
14
- the ChatGPT desktop app and CLI, GitHub Copilot, and ZCode.
14
+ the ChatGPT desktop app and CLI, GitHub Copilot, ZCode, Kimi Code, and Qoder.
15
15
  </p>
16
16
 
17
17
  <p align="center">
18
18
  <a href="./LICENSE"><img src="https://img.shields.io/badge/License-AGPL--3.0-blue.svg?style=flat-square" alt="License: AGPL-3.0" /></a>
19
19
  <a href="https://www.npmjs.com/package/mancode"><img src="https://img.shields.io/npm/v/mancode?style=flat-square" alt="npm version" /></a>
20
- <img src="https://img.shields.io/badge/status-Continuity%20v0.5.0-2f855a?style=flat-square" alt="Status: mancode Continuity v0.5.0" />
21
- <img src="https://img.shields.io/badge/platforms-Claude%20Code%20%7C%20Cursor%20%7C%20Codex%20%7C%20Copilot%20%7C%20ZCode-5865F2?style=flat-square" alt="Platforms: Claude Code, Cursor, Codex in ChatGPT desktop and CLI, GitHub Copilot, ZCode" />
20
+ <img src="https://img.shields.io/badge/status-Continuity%20v0.5.1-2f855a?style=flat-square" alt="Status: mancode Continuity v0.5.1" />
21
+ <img src="https://img.shields.io/badge/platforms-Claude%20Code%20%7C%20Cursor%20%7C%20Codex%20%7C%20Copilot%20%7C%20ZCode%20%7C%20Kimi%20Code%20%7C%20Qoder-5865F2?style=flat-square" alt="Platforms: Claude Code, Cursor, Codex in ChatGPT desktop and CLI, GitHub Copilot, ZCode, Kimi Code, Qoder" />
22
22
  </p>
23
23
 
24
24
  <p align="center">
@@ -41,7 +41,8 @@ conversations.
41
41
  [Installation](#installation) · [Usage](#usage)
42
42
 
43
43
  mancode ships with adapters for Claude Code, Cursor, Codex in the ChatGPT
44
- desktop app and CLI, GitHub Copilot, and ZCode. It keeps the original `man*`
44
+ desktop app and CLI, GitHub Copilot, ZCode, Kimi Code (desktop/CLI), and Qoder
45
+ (IDE/CLI). It keeps the original `man*`
45
46
  entries on every platform and connects them to one Context Pack and workflow
46
47
  authority through static bootstraps.
47
48
 
@@ -124,7 +125,8 @@ CLI form above is useful for diagnostics, automation, or manual recovery.
124
125
 
125
126
  mancode gives team projects stable TaskRefs, isolated sessions, governance
126
127
  ledgers, worktree claims and handoffs, and optional git-ref coordination across
127
- clones. Claude Code, Cursor, Codex, GitHub Copilot, and ZCode use the same
128
+ clones. Claude Code, Cursor, Codex, GitHub Copilot, ZCode, Kimi Code, and
129
+ Qoder use the same
128
130
  workflow data through platform bootstraps; platform files do not hold task or
129
131
  session copies.
130
132
 
@@ -178,8 +180,9 @@ By default, `mancode init` creates mancode workflow and platform integration fil
178
180
 
179
181
  .claude/skills/ # Claude Code: bootstrap + original mode skills
180
182
  .cursor/rules/ + commands/ # Cursor: bootstrap + original mode commands
181
- AGENTS.md # Codex (ChatGPT desktop/CLI): managed instructions
182
- .agents/skills/ # Codex / ZCode: original mode skills
183
+ AGENTS.md # Codex / ZCode / Kimi Code / Qoder: separate managed instruction blocks
184
+ .agents/skills/ # Codex / ZCode / Kimi Code: original mode skills
185
+ .qoder/commands/ # Qoder: original mode commands
183
186
  .github/copilot-instructions.md # GitHub Copilot: managed instruction block
184
187
  .github/prompts/ # GitHub Copilot: original mode prompts
185
188
  ```
@@ -382,8 +385,8 @@ it should behave, and why previous decisions were made.
382
385
 
383
386
  ## Installation
384
387
 
385
- **Status**: mancode Continuity v0.5.0. Claude Code, Cursor, Codex in the ChatGPT
386
- desktop app and CLI, GitHub Copilot, and ZCode adapters are included.
388
+ **Status**: mancode Continuity v0.5.1. Claude Code, Cursor, Codex in the ChatGPT
389
+ desktop app and CLI, GitHub Copilot, ZCode, Kimi Code, and Qoder adapters are included.
387
390
 
388
391
  Requires Node.js 20 or newer. macOS, Linux, Windows CMD, PowerShell, and Git Bash
389
392
  are supported. Git is optional: without it, initialization continues with solo
@@ -409,6 +412,11 @@ Supported platforms:
409
412
  - ZCode: managed `AGENTS.md` block and provisional `$man*` skills in
410
413
  `.agents/skills/`; project skill discovery and slash commands pending verified
411
414
  workspace paths
415
+ - Kimi Code (desktop app and CLI): managed `AGENTS.md` block plus
416
+ `/skill:man*` repo skills under `.agents/skills/`; host discovery paths
417
+ pending real-host verification
418
+ - Qoder (IDE and CLI): managed `AGENTS.md` block plus `/man*` repo commands
419
+ under `.qoder/commands/`; host discovery paths pending real-host verification
412
420
  - Windsurf, Cline, Roo Code: planned later
413
421
 
414
422
  ### Install Options
@@ -419,7 +427,7 @@ mancode init --yes # Skip generic-project confirmation (use --platform in
419
427
  mancode init --team # Force-enable team mode
420
428
  mancode init --no-team # Force-disable team mode
421
429
  mancode init --legacy --style NAME # Legacy only: save a default style preference
422
- mancode init --platform PLATFORMS # One or more: claude-code,cursor,codex,copilot,zcode, or all
430
+ mancode init --platform PLATFORMS # One or more: claude-code,cursor,codex,copilot,zcode,kimi-code,qoder, or all
423
431
  mancode init --empty # Allow a safe empty directory in non-interactive scripts
424
432
  mancode init --lang zh-CN # Explicit initialization language (zh-CN or en)
425
433
  mancode refresh-project # Refresh facts after Git or project files are added
@@ -454,7 +462,7 @@ mancode init --legacy
454
462
  mancode status
455
463
  mancode status --json
456
464
  mancode status --brief --json
457
- mancode install <claude-code|cursor|codex|copilot|zcode> --confirm --operation-id <operationId> --session <id> --client <client>
465
+ mancode install <claude-code|cursor|codex|copilot|zcode|kimi-code|qoder> --confirm --operation-id <operationId> --session <id> --client <client>
458
466
  mancode adapter status [--platform <platform>] --json
459
467
  mancode adapter upgrade <--all|--platform <platform>> --dry-run
460
468
  mancode adapter upgrade <--all|--platform <platform>> --confirm --operation-id <operationId> --session <id> --client <client>
@@ -493,7 +501,7 @@ mancode version
493
501
  Simplified output:
494
502
 
495
503
  ```text
496
- mancode v0.5.0
504
+ mancode v0.5.1
497
505
 
498
506
  Project: my-app
499
507
  Runtime: ready
@@ -507,6 +515,8 @@ mancode adapter status:
507
515
  ✓ Codex (ChatGPT desktop/CLI): ready
508
516
  ○ GitHub Copilot: not installed
509
517
  ○ ZCode: not installed
518
+ ○ Kimi Code (desktop/CLI): not installed
519
+ ○ Qoder (IDE/CLI): not installed
510
520
  ```
511
521
 
512
522
  ### `mancode manps deps`
@@ -734,7 +744,8 @@ platforms (Codex, ZCode, Copilot), the managed block in `AGENTS.md` or
734
744
 
735
745
  ### AGENTS.md or copilot-instructions.md managed block was accidentally deleted
736
746
 
737
- Preview `mancode adapter upgrade --platform codex --dry-run` (or `zcode`, or
747
+ Preview `mancode adapter upgrade --platform codex --dry-run` (or `zcode`,
748
+ `kimi-code`, `qoder`, or
738
749
  `copilot`), then run it with the returned `--operation-id`, an active session,
739
750
  and `--confirm` to reinsert the managed block. User-authored content outside the
740
751
  relevant markers is preserved.
package/README.md CHANGED
@@ -11,14 +11,14 @@
11
11
 
12
12
  <p align="center">
13
13
  适配常见编程代理工具,包括 Claude Code、Cursor、ChatGPT 桌面端中的 Codex、
14
- Codex CLI、GitHub Copilot 和 ZCode
14
+ Codex CLI、GitHub Copilot、ZCode、Kimi Code Qoder
15
15
  </p>
16
16
 
17
17
  <p align="center">
18
18
  <a href="./LICENSE"><img src="https://img.shields.io/badge/License-AGPL--3.0-blue.svg?style=flat-square" alt="许可证:AGPL-3.0" /></a>
19
19
  <a href="https://www.npmjs.com/package/mancode"><img src="https://img.shields.io/npm/v/mancode?style=flat-square" alt="npm 版本" /></a>
20
- <img src="https://img.shields.io/badge/status-Continuity%20v0.5.0-2f855a?style=flat-square" alt="状态:mancode Continuity v0.5.0" />
21
- <img src="https://img.shields.io/badge/platforms-Claude%20Code%20%7C%20Cursor%20%7C%20Codex%20%7C%20Copilot%20%7C%20ZCode-5865F2?style=flat-square" alt="平台:Claude Code、Cursor、ChatGPT 桌面端 Codex、Codex CLI、GitHub Copilot、ZCode" />
20
+ <img src="https://img.shields.io/badge/status-Continuity%20v0.5.1-2f855a?style=flat-square" alt="状态:mancode Continuity v0.5.1" />
21
+ <img src="https://img.shields.io/badge/platforms-Claude%20Code%20%7C%20Cursor%20%7C%20Codex%20%7C%20Copilot%20%7C%20ZCode%20%7C%20Kimi%20Code%20%7C%20Qoder-5865F2?style=flat-square" alt="平台:Claude Code、Cursor、ChatGPT 桌面端 Codex、Codex CLI、GitHub Copilot、ZCode、Kimi Code、Qoder" />
22
22
  </p>
23
23
 
24
24
  <p align="center">
@@ -39,7 +39,7 @@
39
39
  **mancode Continuity(跨会话与团队协作运行时)**负责把任务、决策和验证证据安全地带到后续对话,并协调多人或多 Agent 的任务权威。
40
40
 
41
41
  mancode 当前支持 Claude Code、Cursor、ChatGPT 桌面端中的 Codex、Codex CLI、
42
- GitHub Copilot ZCode。每个平台继续使用原来的 `man*` 入口,并通过静态
42
+ GitHub Copilot、ZCode、Kimi Code(桌面端/CLI)和 Qoder(IDE/CLI)。每个平台继续使用原来的 `man*` 入口,并通过静态
43
43
  bootstrap 接入统一的 Context Pack 与 workflow authority。
44
44
 
45
45
  mancode 会安装三类能力:
@@ -106,8 +106,8 @@ mancode context show --purpose orient --session <id> --client claude-code
106
106
  ## 跨客户端与团队协作
107
107
 
108
108
  mancode 为团队项目提供稳定 TaskRef、隔离 session、治理账本、worktree claim/handoff,
109
- 以及可选的 git-ref 跨 clone 协调。Claude Code、Cursor、Codex、GitHub Copilot
110
- ZCode 都通过 bootstrap 使用同一套工作流数据;平台文件本身不保存任务或 session 副本。
109
+ 以及可选的 git-ref 跨 clone 协调。Claude Code、Cursor、Codex、GitHub Copilot
110
+ ZCode、Kimi Code 和 Qoder 都通过 bootstrap 使用同一套工作流数据;平台文件本身不保存任务或 session 副本。
111
111
 
112
112
  git-ref 下的 workflow create、requirements、plan、review 和 verification 使用显式的
113
113
  延后发布边界:先不带 `--sync` 执行 mutation,将对应的 `.mancode/shared`
@@ -165,8 +165,9 @@ legacy `state.json` 与当前工作流权威数据。
165
165
 
166
166
  .claude/skills/ # Claude Code:bootstrap + 原 mode skills
167
167
  .cursor/rules/ + commands/ # Cursor:bootstrap + 原 mode commands
168
- AGENTS.md # Codex(ChatGPT 桌面端/CLI):托管 instructions
169
- .agents/skills/ # Codex / ZCode:原 mode skills
168
+ AGENTS.md # Codex / ZCode / Kimi Code / Qoder:各自托管 instructions block
169
+ .agents/skills/ # Codex / ZCode / Kimi Code:原 mode skills
170
+ .qoder/commands/ # Qoder:原 mode commands
170
171
  .github/copilot-instructions.md # GitHub Copilot:托管 instruction block
171
172
  .github/prompts/ # GitHub Copilot:原 mode prompts
172
173
  ```
@@ -336,8 +337,8 @@ src/components/
336
337
 
337
338
  ## 安装
338
339
 
339
- **状态**:mancode Continuity v0.5.0。Claude Code、Cursor、ChatGPT 桌面端中的
340
- Codex、Codex CLI、GitHub Copilot 和 ZCode adapter 均已接入。
340
+ **状态**:mancode Continuity v0.5.1。Claude Code、Cursor、ChatGPT 桌面端中的
341
+ Codex、Codex CLI、GitHub Copilot、ZCode、Kimi Code Qoder adapter 均已接入。
341
342
 
342
343
  需要 Node.js 20 或更高版本。原生支持 macOS、Linux、Windows CMD、
343
344
  PowerShell 和 Git Bash。Git 是可选依赖:未安装时仍可初始化,只会把团队
@@ -361,6 +362,10 @@ mancode init --platform all
361
362
  - GitHub Copilot:托管 instruction block 与 `.github/prompts/` 原 mode prompts
362
363
  - ZCode:托管 `AGENTS.md` block,并暂按 `.agents/skills/` 生成 `$man*`
363
364
  skills;项目级 skill 发现和 slash commands 仍需确认 workspace 路径后再发布承诺
365
+ - Kimi Code(桌面端、CLI):托管 `AGENTS.md` block,并在 `.agents/skills/`
366
+ 下提供 `/skill:man*` 项目 skills;宿主发现路径仍需真实验证
367
+ - Qoder(IDE、CLI):托管 `AGENTS.md` block,并在 `.qoder/commands/` 下提供
368
+ `/man*` 项目 commands;宿主发现路径仍需真实验证
364
369
  - Windsurf、Cline、Roo Code:后续计划
365
370
 
366
371
  ### 安装参数
@@ -371,7 +376,7 @@ mancode init --yes # 跳过通用项目确认(CI 中仍需 --platform
371
376
  mancode init --team # 强制启用团队模式
372
377
  mancode init --no-team # 强制禁用团队模式
373
378
  mancode init --legacy --style NAME # 仅 legacy:保存默认审美偏好
374
- mancode init --platform PLATFORMS # 一个或多个:claude-code,cursor,codex,copilot,zcode,或 all
379
+ mancode init --platform PLATFORMS # 一个或多个:claude-code,cursor,codex,copilot,zcode,kimi-code,qoder,或 all
375
380
  mancode init --empty # 非交互脚本中允许安全的空目录
376
381
  mancode init --lang zh-CN # 显式指定初始化语言(zh-CN 或 en)
377
382
  mancode refresh-project # 后续加入 Git 或项目文件后刷新项目事实
@@ -406,7 +411,7 @@ mancode init --legacy
406
411
  mancode status
407
412
  mancode status --json
408
413
  mancode status --brief --json
409
- mancode install <claude-code|cursor|codex|copilot|zcode> --confirm --operation-id <operationId> --session <id> --client <client>
414
+ mancode install <claude-code|cursor|codex|copilot|zcode|kimi-code|qoder> --confirm --operation-id <operationId> --session <id> --client <client>
410
415
  mancode adapter status [--platform <platform>] --json
411
416
  mancode adapter upgrade <--all|--platform <platform>> --dry-run
412
417
  mancode adapter upgrade <--all|--platform <platform>> --confirm --operation-id <operationId> --session <id> --client <client>
@@ -445,7 +450,7 @@ mancode version
445
450
  以下是简化输出示例:
446
451
 
447
452
  ```text
448
- mancode v0.5.0
453
+ mancode v0.5.1
449
454
 
450
455
  Project: my-app
451
456
  Runtime: ready
@@ -459,6 +464,8 @@ mancode adapter status:
459
464
  ✓ Codex (ChatGPT desktop/CLI): ready
460
465
  ○ GitHub Copilot: not installed
461
466
  ○ ZCode: not installed
467
+ ○ Kimi Code (desktop/CLI): not installed
468
+ ○ Qoder (IDE/CLI): not installed
462
469
  ```
463
470
 
464
471
  ### `mancode manps deps`
@@ -646,7 +653,7 @@ mancode/
646
653
 
647
654
  ### AGENTS.md 或 copilot-instructions.md 受控区被误删
648
655
 
649
- 运行 `mancode adapter upgrade --platform codex --dry-run`(或 `zcode`、`copilot`)
656
+ 运行 `mancode adapter upgrade --platform codex --dry-run`(或 `zcode`、`kimi-code`、`qoder`、`copilot`)
650
657
  检查差异,再用该预览返回的 `--operation-id` 和 active session 执行 `--confirm`
651
658
  重新插入受控区。
652
659
  对应 mancode 受控标记外的用户内容会被保留。
@@ -164,6 +164,10 @@ var V3_CODEX_START_MARKER = "<!-- mancode:continuity:codex:start -->";
164
164
  var V3_CODEX_END_MARKER = "<!-- mancode:continuity:codex:end -->";
165
165
  var V3_ZCODE_START_MARKER = "<!-- mancode:continuity:zcode:start -->";
166
166
  var V3_ZCODE_END_MARKER = "<!-- mancode:continuity:zcode:end -->";
167
+ var V3_KIMI_START_MARKER = "<!-- mancode:continuity:kimi:start -->";
168
+ var V3_KIMI_END_MARKER = "<!-- mancode:continuity:kimi:end -->";
169
+ var V3_QODER_START_MARKER = "<!-- mancode:continuity:qoder:start -->";
170
+ var V3_QODER_END_MARKER = "<!-- mancode:continuity:qoder:end -->";
167
171
  var V3_COPILOT_START_MARKER = "<!-- mancode:continuity:copilot:start -->";
168
172
  var V3_COPILOT_END_MARKER = "<!-- mancode:continuity:copilot:end -->";
169
173
  var LEGACY_V3_CODEX_MARKERS = [
@@ -182,6 +186,14 @@ var LEGACY_CODEX_START_MARKER = "<!-- mancode:start -->";
182
186
  var LEGACY_CODEX_END_MARKER = "<!-- mancode:end -->";
183
187
  var LEGACY_ZCODE_START_MARKER = "<!-- mancode:zcode:start -->";
184
188
  var LEGACY_ZCODE_END_MARKER = "<!-- mancode:zcode:end -->";
189
+ var LEGACY_KIMI_MARKERS = [
190
+ "<!-- mancode:kimi-code:start -->",
191
+ "<!-- mancode:kimi-code:end -->"
192
+ ];
193
+ var LEGACY_QODER_MARKERS = [
194
+ "<!-- mancode:qoder:start -->",
195
+ "<!-- mancode:qoder:end -->"
196
+ ];
185
197
  var RETRIABLE_ADAPTER_READ_CODES = /* @__PURE__ */ new Set(["EACCES", "EBUSY", "EPERM"]);
186
198
  var ADAPTER_READ_MAX_ATTEMPTS = 4;
187
199
  var ADAPTER_READ_RETRY_DELAY_MS = 25;
@@ -190,13 +202,16 @@ var V3_ADAPTER_PLATFORMS = [
190
202
  "codex",
191
203
  "cursor",
192
204
  "copilot",
193
- "zcode"
205
+ "zcode",
206
+ "kimi-code",
207
+ "qoder"
194
208
  ];
195
209
  var V3_MODE_ENTRY_FILE_TARGETS = V3_MODE_NAMES.flatMap((mode) => [
196
210
  `claude-mode-${mode}`,
197
211
  `agents-mode-${mode}`,
198
212
  `cursor-mode-${mode}`,
199
- `copilot-mode-${mode}`
213
+ `copilot-mode-${mode}`,
214
+ `qoder-mode-${mode}`
200
215
  ]);
201
216
  var V3_LEGACY_ADAPTER_FILE_TARGETS = [
202
217
  "claude-settings",
@@ -241,21 +256,37 @@ async function planV3AdapterFiles(projectRoot) {
241
256
  }
242
257
  const agents = removeLegacyV3Block(
243
258
  removeLegacyV3Block(
244
- removeLegacyAgentsBlocks(existing.get("agents") ?? ""),
245
- LEGACY_V3_CODEX_MARKERS
259
+ removeLegacyV3Block(
260
+ removeLegacyV3Block(
261
+ removeLegacyAgentsBlocks(existing.get("agents") ?? ""),
262
+ LEGACY_V3_CODEX_MARKERS
263
+ ),
264
+ LEGACY_V3_ZCODE_MARKERS
265
+ ),
266
+ LEGACY_KIMI_MARKERS
246
267
  ),
247
- LEGACY_V3_ZCODE_MARKERS
268
+ LEGACY_QODER_MARKERS
248
269
  );
249
270
  const nextAgents = replaceManagedV3BlockText(
250
271
  replaceManagedV3BlockText(
251
- agents,
252
- V3_CODEX_START_MARKER,
253
- V3_CODEX_END_MARKER,
254
- renderV3Bootstrap("codex")
272
+ replaceManagedV3BlockText(
273
+ replaceManagedV3BlockText(
274
+ agents,
275
+ V3_CODEX_START_MARKER,
276
+ V3_CODEX_END_MARKER,
277
+ renderV3Bootstrap("codex")
278
+ ),
279
+ V3_ZCODE_START_MARKER,
280
+ V3_ZCODE_END_MARKER,
281
+ renderV3Bootstrap("zcode")
282
+ ),
283
+ V3_KIMI_START_MARKER,
284
+ V3_KIMI_END_MARKER,
285
+ renderV3Bootstrap("kimi-code")
255
286
  ),
256
- V3_ZCODE_START_MARKER,
257
- V3_ZCODE_END_MARKER,
258
- renderV3Bootstrap("zcode")
287
+ V3_QODER_START_MARKER,
288
+ V3_QODER_END_MARKER,
289
+ renderV3Bootstrap("qoder")
259
290
  );
260
291
  const legacyAdapterPlans = planLegacyAdapterRetirement(existing);
261
292
  const plans = [
@@ -479,11 +510,14 @@ function v3ModeEntryPath(projectRoot, platform, mode) {
479
510
  return path.join(root, ".claude", "skills", mode, "SKILL.md");
480
511
  case "codex":
481
512
  case "zcode":
513
+ case "kimi-code":
482
514
  return path.join(root, ".agents", "skills", mode, "SKILL.md");
483
515
  case "cursor":
484
516
  return path.join(root, ".cursor", "commands", `${mode}.md`);
485
517
  case "copilot":
486
518
  return path.join(root, ".github", "prompts", `${mode}.prompt.md`);
519
+ case "qoder":
520
+ return path.join(root, ".qoder", "commands", `${mode}.md`);
487
521
  }
488
522
  }
489
523
  async function installV3Adapter(projectRoot, platform) {
@@ -545,6 +579,24 @@ async function installV3Adapter(projectRoot, platform) {
545
579
  ]
546
580
  );
547
581
  break;
582
+ case "kimi-code":
583
+ await replaceManagedV3Block(
584
+ path.join(root, "AGENTS.md"),
585
+ V3_KIMI_START_MARKER,
586
+ V3_KIMI_END_MARKER,
587
+ content,
588
+ [LEGACY_KIMI_MARKERS]
589
+ );
590
+ break;
591
+ case "qoder":
592
+ await replaceManagedV3Block(
593
+ path.join(root, "AGENTS.md"),
594
+ V3_QODER_START_MARKER,
595
+ V3_QODER_END_MARKER,
596
+ content,
597
+ [LEGACY_QODER_MARKERS]
598
+ );
599
+ break;
548
600
  }
549
601
  await retireLegacyPlatformFiles(root, platform);
550
602
  for (const mode of V3_MODE_NAMES) {
@@ -593,7 +645,9 @@ async function inspectV3AdapterVersions(projectRoot, requiredPlatforms = []) {
593
645
  "codex",
594
646
  "cursor",
595
647
  "copilot",
596
- "zcode"
648
+ "zcode",
649
+ "kimi-code",
650
+ "qoder"
597
651
  ];
598
652
  const required = new Set(requiredPlatforms);
599
653
  const entries = await Promise.all(
@@ -646,7 +700,11 @@ async function removeV3Adapter(projectRoot, platform) {
646
700
  );
647
701
  preserveSharedModeEntries = await anyManagedBlockPresent(
648
702
  path.join(root, "AGENTS.md"),
649
- [[V3_ZCODE_START_MARKER, V3_ZCODE_END_MARKER], LEGACY_V3_ZCODE_MARKERS]
703
+ [
704
+ [V3_ZCODE_START_MARKER, V3_ZCODE_END_MARKER],
705
+ LEGACY_V3_ZCODE_MARKERS,
706
+ [V3_KIMI_START_MARKER, V3_KIMI_END_MARKER]
707
+ ]
650
708
  );
651
709
  break;
652
710
  case "copilot":
@@ -672,7 +730,42 @@ async function removeV3Adapter(projectRoot, platform) {
672
730
  );
673
731
  preserveSharedModeEntries = await anyManagedBlockPresent(
674
732
  path.join(root, "AGENTS.md"),
675
- [[V3_CODEX_START_MARKER, V3_CODEX_END_MARKER], LEGACY_V3_CODEX_MARKERS]
733
+ [
734
+ [V3_CODEX_START_MARKER, V3_CODEX_END_MARKER],
735
+ LEGACY_V3_CODEX_MARKERS,
736
+ [V3_KIMI_START_MARKER, V3_KIMI_END_MARKER]
737
+ ]
738
+ );
739
+ break;
740
+ case "kimi-code":
741
+ await removeManagedV3Block(
742
+ path.join(root, "AGENTS.md"),
743
+ V3_KIMI_START_MARKER,
744
+ V3_KIMI_END_MARKER
745
+ );
746
+ await removeManagedV3Block(
747
+ path.join(root, "AGENTS.md"),
748
+ ...LEGACY_KIMI_MARKERS
749
+ );
750
+ preserveSharedModeEntries = await anyManagedBlockPresent(
751
+ path.join(root, "AGENTS.md"),
752
+ [
753
+ [V3_CODEX_START_MARKER, V3_CODEX_END_MARKER],
754
+ LEGACY_V3_CODEX_MARKERS,
755
+ [V3_ZCODE_START_MARKER, V3_ZCODE_END_MARKER],
756
+ LEGACY_V3_ZCODE_MARKERS
757
+ ]
758
+ );
759
+ break;
760
+ case "qoder":
761
+ await removeManagedV3Block(
762
+ path.join(root, "AGENTS.md"),
763
+ V3_QODER_START_MARKER,
764
+ V3_QODER_END_MARKER
765
+ );
766
+ await removeManagedV3Block(
767
+ path.join(root, "AGENTS.md"),
768
+ ...LEGACY_QODER_MARKERS
676
769
  );
677
770
  break;
678
771
  }
@@ -686,8 +779,8 @@ async function removeV3Adapter(projectRoot, platform) {
686
779
  function renderV3Bootstrap(platform) {
687
780
  const platformLabel = platformLabelFor(platform);
688
781
  const sessionArguments = sessionArgumentsFor(platform);
689
- const sessionCreationGuidance = platform === "codex" || platform === "zcode" ? "When status has no `session`, first reuse any explicit session ID already returned in this conversation. Only when neither exists, create one once with `mancode context session new --client codex` in Codex or `mancode context session new --client zcode` in ZCode." : `When status has no \`session\`, first reuse any explicit session ID already returned in this conversation. Only when neither exists, create one once with \`mancode context session new --client ${platform}\`.`;
690
- const spikePlatform = platform === "codex" || platform === "zcode" ? "the active Codex or ZCode host" : platform;
782
+ const sessionCreationGuidance = platform === "codex" || platform === "zcode" || platform === "kimi-code" ? "When status has no `session`, first reuse any explicit session ID already returned in this conversation. Only when neither exists, create one once with `mancode context session new --client codex` in Codex, `mancode context session new --client zcode` in ZCode, or `mancode context session new --client kimi-code` in Kimi Code." : `When status has no \`session\`, first reuse any explicit session ID already returned in this conversation. Only when neither exists, create one once with \`mancode context session new --client ${platform}\`.`;
783
+ const spikePlatform = platform === "codex" || platform === "zcode" || platform === "kimi-code" ? "the active Codex, ZCode, or Kimi Code host" : platform;
691
784
  const modeEntry = capabilitiesFor(platform).nativeModeEntry ? "Use the platform mode entry only as a shortcut; resolve a Context Pack first." : "This platform has no native mancode mode entry; use the CLI commands explicitly.";
692
785
  return [
693
786
  "# mancode bootstrap",
@@ -721,6 +814,9 @@ function renderV3Bootstrap(platform) {
721
814
  "- For a mode entry, request the matching Context Pack purpose: `plan`, `implement`, `review`, `verify`, or `handoff`.",
722
815
  "- Do not persist task, mode, or session state in this adapter file or any legacy state file.",
723
816
  `- ${modeEntry}`,
817
+ ...platform === "qoder" ? [
818
+ "- Treat host-injected security scan findings (L1/L2/L3) as advisory review input for the current step. In a governed review, fold open findings into the single remediation round; after any post-verification code change, re-run and re-record the required checks before completing. Scan findings never reopen completed reviews or bypass workflow revisions."
819
+ ] : [],
724
820
  `- No approved session or prompt hook is assumed. After a real-host spike is recorded for ${spikePlatform}, a verified host may provide MANCODE_HOST_SESSION_KEY; otherwise mutations require an explicit \`--session\`.`
725
821
  ].join("\n");
726
822
  }
@@ -730,7 +826,7 @@ function renderV3ModeEntry(mode, platform) {
730
826
  const sessionClientGuidance = sessionClientGuidanceFor(platform);
731
827
  const statusGuidance = "Reuse a `mancode status --brief --json` snapshot already obtained in this conversation. Only when none exists, run it once from the project root.";
732
828
  const cliSelectionGuidance = "Before the first command, use `./node_modules/.bin/mancode` when it exists, otherwise `mancode`; check that selected binary with `--version` once and never mix binaries or versions. In every command below, replace the literal `mancode` with that selected binary path when the local binary exists.";
733
- const sessionCreationGuidance = platform === "codex" || platform === "zcode" ? "If status has no current session, reuse an explicit session ID already retained in this conversation. Only if neither exists, run `mancode context session new --client codex` in Codex or `mancode context session new --client zcode` in ZCode exactly once, then retain the returned session ID." : `If status has no current session, reuse an explicit session ID already retained in this conversation. Only if neither exists, run \`mancode context session new --client ${platform}\` exactly once and retain the returned session ID.`;
829
+ const sessionCreationGuidance = platform === "codex" || platform === "zcode" || platform === "kimi-code" ? "If status has no current session, reuse an explicit session ID already retained in this conversation. Only if neither exists, run `mancode context session new --client codex` in Codex, `mancode context session new --client zcode` in ZCode, or `mancode context session new --client kimi-code` in Kimi Code exactly once, then retain the returned session ID." : `If status has no current session, reuse an explicit session ID already retained in this conversation. Only if neither exists, run \`mancode context session new --client ${platform}\` exactly once and retain the returned session ID.`;
734
830
  let authoritySteps;
735
831
  if (mode === "manps") {
736
832
  authoritySteps = [
@@ -765,7 +861,7 @@ function renderV3ModeEntry(mode, platform) {
765
861
  }
766
862
  const frontmatter = [
767
863
  "---",
768
- ...platform === "claude-code" || platform === "codex" || platform === "zcode" ? [`name: ${mode}`] : [],
864
+ ...platform === "claude-code" || platform === "codex" || platform === "zcode" || platform === "kimi-code" || platform === "qoder" ? [`name: ${mode}`] : [],
769
865
  ...platform === "copilot" ? ["agent: 'agent'"] : [],
770
866
  `description: ${JSON.stringify(definition.description)}`,
771
867
  "---"
@@ -799,11 +895,11 @@ function renderV3ModeEntry(mode, platform) {
799
895
  ].join("\n");
800
896
  }
801
897
  function sessionArgumentsFor(platform) {
802
- const client = platform === "codex" || platform === "zcode" ? "<active-client>" : platform;
898
+ const client = platform === "codex" || platform === "zcode" || platform === "kimi-code" ? "<active-client>" : platform;
803
899
  return `--session <id> --client ${client}`;
804
900
  }
805
901
  function sessionClientGuidanceFor(platform) {
806
- return platform === "codex" || platform === "zcode" ? "Use `--client codex` in Codex or `--client zcode` in ZCode on every command that uses this session." : `Use \`--client ${platform}\` on every command that uses this session.`;
902
+ return platform === "codex" || platform === "zcode" || platform === "kimi-code" ? "Use `--client codex` in Codex, `--client zcode` in ZCode, or `--client kimi-code` in Kimi Code on every command that uses this session." : `Use \`--client ${platform}\` on every command that uses this session.`;
807
903
  }
808
904
  var V3_MODE_DEFINITIONS = {
809
905
  man: {
@@ -935,6 +1031,27 @@ async function renderV3AdapterCandidate(root, platform) {
935
1031
  renderV3Bootstrap(platform)
936
1032
  );
937
1033
  }
1034
+ case "kimi-code": {
1035
+ const existing = await readAdapterTarget(root, "agents") ?? "";
1036
+ return replaceManagedV3BlockText(
1037
+ removeLegacyV3Block(
1038
+ removeLegacyAgentsBlocks(existing),
1039
+ LEGACY_KIMI_MARKERS
1040
+ ),
1041
+ V3_KIMI_START_MARKER,
1042
+ V3_KIMI_END_MARKER,
1043
+ renderV3Bootstrap(platform)
1044
+ );
1045
+ }
1046
+ case "qoder": {
1047
+ const existing = await readAdapterTarget(root, "agents") ?? "";
1048
+ return replaceManagedV3BlockText(
1049
+ removeLegacyV3Block(existing, LEGACY_QODER_MARKERS),
1050
+ V3_QODER_START_MARKER,
1051
+ V3_QODER_END_MARKER,
1052
+ renderV3Bootstrap(platform)
1053
+ );
1054
+ }
938
1055
  }
939
1056
  }
940
1057
  function renderCursorRule(content) {
@@ -984,6 +1101,8 @@ function primaryFileTarget(platform) {
984
1101
  return "cursor-rule";
985
1102
  case "codex":
986
1103
  case "zcode":
1104
+ case "kimi-code":
1105
+ case "qoder":
987
1106
  return "agents";
988
1107
  case "copilot":
989
1108
  return "copilot-instructions";
@@ -1042,6 +1161,31 @@ function planPlatformBootstrapUpgrade(desired, platform) {
1042
1161
  )
1043
1162
  );
1044
1163
  return;
1164
+ case "kimi-code":
1165
+ desired.set(
1166
+ target,
1167
+ replaceManagedV3BlockText(
1168
+ removeLegacyV3Block(
1169
+ removeLegacyAgentsBlocks(current ?? ""),
1170
+ LEGACY_KIMI_MARKERS
1171
+ ),
1172
+ V3_KIMI_START_MARKER,
1173
+ V3_KIMI_END_MARKER,
1174
+ renderV3Bootstrap(platform)
1175
+ )
1176
+ );
1177
+ return;
1178
+ case "qoder":
1179
+ desired.set(
1180
+ target,
1181
+ replaceManagedV3BlockText(
1182
+ removeLegacyV3Block(current ?? "", LEGACY_QODER_MARKERS),
1183
+ V3_QODER_START_MARKER,
1184
+ V3_QODER_END_MARKER,
1185
+ renderV3Bootstrap(platform)
1186
+ )
1187
+ );
1188
+ return;
1045
1189
  case "copilot":
1046
1190
  desired.set(
1047
1191
  target,
@@ -1104,6 +1248,24 @@ function primaryManagedTargetSpec(platform) {
1104
1248
  V3_ZCODE_END_MARKER,
1105
1249
  renderV3Bootstrap(platform)
1106
1250
  );
1251
+ case "kimi-code":
1252
+ return embeddedManagedTargetSpec(
1253
+ target,
1254
+ "agents#kimi-code",
1255
+ "agents",
1256
+ V3_KIMI_START_MARKER,
1257
+ V3_KIMI_END_MARKER,
1258
+ renderV3Bootstrap(platform)
1259
+ );
1260
+ case "qoder":
1261
+ return embeddedManagedTargetSpec(
1262
+ target,
1263
+ "agents#qoder",
1264
+ "agents",
1265
+ V3_QODER_START_MARKER,
1266
+ V3_QODER_END_MARKER,
1267
+ renderV3Bootstrap(platform)
1268
+ );
1107
1269
  }
1108
1270
  }
1109
1271
  function embeddedManagedTargetSpec(target, identity, fileTarget, startMarker, endMarker, content) {
@@ -1116,7 +1278,7 @@ function embeddedManagedTargetSpec(target, identity, fileTarget, startMarker, en
1116
1278
  };
1117
1279
  }
1118
1280
  function modeEntryFileTarget(platform, mode) {
1119
- const family = platform === "claude-code" ? "claude" : platform === "codex" || platform === "zcode" ? "agents" : platform;
1281
+ const family = platform === "claude-code" ? "claude" : platform === "codex" || platform === "zcode" || platform === "kimi-code" ? "agents" : platform;
1120
1282
  return `${family}-mode-${mode}`;
1121
1283
  }
1122
1284
  async function inspectManagedTarget(root, platform, spec) {
@@ -1433,11 +1595,14 @@ function legacyAdapterTargetsForPlatform(platform, includeSettings) {
1433
1595
  (target) => /^(cursor-legacy|cursor-alias)-/u.test(target)
1434
1596
  );
1435
1597
  }
1436
- if (platform === "codex" || platform === "zcode") {
1598
+ if (platform === "codex" || platform === "zcode" || platform === "kimi-code") {
1437
1599
  return V3_LEGACY_ADAPTER_FILE_TARGETS.filter(
1438
1600
  (target) => target.startsWith("agents-alias-")
1439
1601
  );
1440
1602
  }
1603
+ if (platform === "qoder") {
1604
+ return [];
1605
+ }
1441
1606
  return V3_LEGACY_ADAPTER_FILE_TARGETS.filter(
1442
1607
  (target) => target.startsWith("copilot-alias-")
1443
1608
  );
@@ -1622,13 +1787,13 @@ function renderModeEntryForFileTarget(target) {
1622
1787
  return renderV3ModeEntry(parsed.mode, parsed.platform);
1623
1788
  }
1624
1789
  function parseModeEntryFileTarget(target) {
1625
- const match = /^(claude|agents|cursor|copilot)-mode-(manba|man|manteam|manps|mansolo)$/u.exec(
1790
+ const match = /^(claude|agents|cursor|copilot|qoder)-mode-(manba|man|manteam|manps|mansolo)$/u.exec(
1626
1791
  target
1627
1792
  );
1628
1793
  if (!match) return null;
1629
1794
  const family = match[1];
1630
1795
  const mode = match[2];
1631
- const platform = family === "claude" ? "claude-code" : family === "agents" ? "codex" : family === "cursor" ? "cursor" : "copilot";
1796
+ const platform = family === "claude" ? "claude-code" : family === "agents" ? "codex" : family === "cursor" ? "cursor" : family === "qoder" ? "qoder" : "copilot";
1632
1797
  return { platform, mode };
1633
1798
  }
1634
1799
  function isRecord(value) {
@@ -1766,6 +1931,8 @@ function targetFor(platform) {
1766
1931
  return ".cursor/rules/mancode-continuity.mdc";
1767
1932
  case "codex":
1768
1933
  case "zcode":
1934
+ case "kimi-code":
1935
+ case "qoder":
1769
1936
  return "AGENTS.md";
1770
1937
  case "copilot":
1771
1938
  return ".github/copilot-instructions.md";
@@ -1819,11 +1986,15 @@ function platformLabelFor(platform) {
1819
1986
  case "cursor":
1820
1987
  return "Cursor";
1821
1988
  case "codex":
1822
- return "Codex or ZCode (shared AGENTS.md bootstrap)";
1989
+ return "Codex, ZCode, or Kimi Code (shared AGENTS.md bootstrap)";
1823
1990
  case "copilot":
1824
1991
  return "GitHub Copilot";
1825
1992
  case "zcode":
1826
- return "Codex or ZCode (shared AGENTS.md bootstrap)";
1993
+ return "Codex, ZCode, or Kimi Code (shared AGENTS.md bootstrap)";
1994
+ case "kimi-code":
1995
+ return "Codex, ZCode, or Kimi Code (shared AGENTS.md bootstrap)";
1996
+ case "qoder":
1997
+ return "Qoder (IDE/CLI)";
1827
1998
  }
1828
1999
  }
1829
2000
  function capabilitiesFor(_platform) {
@@ -1877,4 +2048,4 @@ export {
1877
2048
  renderV3Bootstrap,
1878
2049
  renderV3ModeEntry
1879
2050
  };
1880
- //# sourceMappingURL=chunk-73F46VQM.js.map
2051
+ //# sourceMappingURL=chunk-SOZ5OUAG.js.map