mancode 0.5.0 → 0.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.
- package/README.en.md +24 -13
- package/README.md +21 -14
- package/dist/{chunk-73F46VQM.js → chunk-2JOKDC3X.js} +204 -29
- package/dist/chunk-2JOKDC3X.js.map +1 -0
- package/dist/{chunk-3FOBYCF4.js → chunk-VHZI2WKD.js} +4 -2
- package/dist/{chunk-3FOBYCF4.js.map → chunk-VHZI2WKD.js.map} +1 -1
- package/dist/cli.js +1346 -642
- package/dist/cli.js.map +1 -1
- package/dist/{store-GCLUP5IO.js → store-EEWJJANB.js} +2 -2
- package/dist/{v3-adapter-7XYKHGTB.js → v3-adapter-DBVEX5H5.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-73F46VQM.js.map +0 -1
- /package/dist/{store-GCLUP5IO.js.map → store-EEWJJANB.js.map} +0 -0
- /package/dist/{v3-adapter-7XYKHGTB.js.map → v3-adapter-DBVEX5H5.js.map} +0 -0
|
@@ -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
|
-
|
|
245
|
-
|
|
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
|
-
|
|
268
|
+
LEGACY_QODER_MARKERS
|
|
248
269
|
);
|
|
249
270
|
const nextAgents = replaceManagedV3BlockText(
|
|
250
271
|
replaceManagedV3BlockText(
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
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
|
-
|
|
257
|
-
|
|
258
|
-
renderV3Bootstrap("
|
|
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
|
-
[
|
|
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
|
-
[
|
|
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
|
|
690
|
-
const spikePlatform = platform === "codex" || platform === "zcode" ? "the active Codex or
|
|
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
|
|
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
|
|
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: {
|
|
@@ -813,6 +909,7 @@ var V3_MODE_DEFINITIONS = {
|
|
|
813
909
|
actions: [
|
|
814
910
|
"- For a read-only project orientation, inspect and answer directly; do not create governance records.",
|
|
815
911
|
'- For a new task, run `mancode workflow create man "<task>" --session <id>`.',
|
|
912
|
+
"- Read `.mancode/shared/context/glossary.json` when it exists and prefer its confirmed terms in clarification, requirements, plans, reports, and naming.",
|
|
816
913
|
"- Before writing requirements, inspect the relevant project facts and implementation, then run a decision-readiness gate covering both clarity and soundness. Treat the request as ready only when the goal, in-scope/out-of-scope behavior, acceptance boundary, semantic owner/source of truth, and decision-changing constraints are supplied and consistent with evidence, verifiable from the repository, or explicitly recorded as safe defaults. A supplied instruction is not automatically correct. Do not ask ceremonial questions or manufacture alternatives when the request is already clear and sound.",
|
|
817
914
|
"- Classify unresolved decisions as blocking, recommendable, or defaultable. Ask and wait for blocking decisions; for recommendable decisions, present 2\u20133 bounded options with tradeoffs and one clear recommendation; use a default only when it is low-impact, reversible, consistent with repository conventions, and recorded with its reason.",
|
|
818
915
|
"- If any unresolved ambiguity could change the goal, scope, user-visible behavior, acceptance, architecture, data, security, compatibility, owner, or source of truth, stop before requirements finalization, explain the missing decision, ask focused questions, and wait for the user answer. Ask in as many batches as needed, do not repeat answered questions, and never turn an unverified assumption into confirmed scope or confirmed coverage.",
|
|
@@ -829,7 +926,8 @@ var V3_MODE_DEFINITIONS = {
|
|
|
829
926
|
"- Confirming with `--plan-decision plan_only` keeps the plan as planned authority and clears this session's active workflow pointer. Resume the TaskRef explicitly before any later governed mutation.",
|
|
830
927
|
'- When new evidence materially invalidates confirmed requirements and the operator explicitly chooses to realign the same local task, resume its TaskRef if needed, generate a fresh canonical checkpoint ULID, and run `mancode workflow reframe <namespace:ULID> --expected-revision <n> --checkpoint-id <fresh-ULID> --summary "<reason>" --next-action "<step-2 action>" --session <id>`. Reframe archives the confirmed requirements and plan, clears the plan decision, and stops at Step 2 with draft requirements. Do not substitute plan revise, scope-change, or workflow update for reframe.',
|
|
831
928
|
"- Read reframe evidence without opening private authority files: `mancode workflow archive <namespace:ULID> show <archive-ULID> --json` and `mancode workflow checkpoint <namespace:ULID> show <checkpoint-ULID> --json`.",
|
|
832
|
-
"- Apply verification and review ledgers with their mancode `apply --file` commands, then use `mancode workflow complete <namespace:ULID> --expected-revision <n> --session <id>`."
|
|
929
|
+
"- Apply verification and review ledgers with their mancode `apply --file` commands, then use `mancode workflow complete <namespace:ULID> --expected-revision <n> --session <id>`.",
|
|
930
|
+
'- When a new high-frequency domain term emerges, propose it to the operator; only after explicit confirmation register it with `mancode context glossary add --term "<term>" --definition "<definition>" --expected-revision <n> --session <id>`. Never write to the glossary without operator confirmation.'
|
|
833
931
|
]
|
|
834
932
|
},
|
|
835
933
|
manba: {
|
|
@@ -850,6 +948,7 @@ var V3_MODE_DEFINITIONS = {
|
|
|
850
948
|
contextPurpose: "plan",
|
|
851
949
|
actions: [
|
|
852
950
|
"- Confirm team membership with `mancode team status`; join invited participants before assigning shared work.",
|
|
951
|
+
"- Read `.mancode/shared/context/glossary.json` when it exists and prefer its confirmed terms in shared requirements, plans, and handoffs.",
|
|
853
952
|
'- For a new shared task, run `mancode workflow create manteam "<task>" --visibility shared --coordination team --confirm-shared --session <id>`.',
|
|
854
953
|
"- Apply the same decision-readiness gate as `man` before finalizing requirements: validate both clarity and soundness against project facts and team authority. If the goal, scope, acceptance, owner/source of truth, and constraints are clear and consistent, continue without ceremonial questions; if a decision-changing ambiguity, ownership conflict, or hard-risk direction remains, give evidence and a recommendation, ask focused questions, and wait before writing confirmed requirements.",
|
|
855
954
|
"- Persist unresolved team clarification through the same `workflow requirements <namespace:ULID> draft --file <requirements.json>` command as `man`; do not leave ownership questions or partial answers only in chat history.",
|
|
@@ -872,6 +971,7 @@ var V3_MODE_DEFINITIONS = {
|
|
|
872
971
|
contextPurpose: "implement",
|
|
873
972
|
actions: [
|
|
874
973
|
"- Do not create or persist a legacy solo mode. Ordinary focused work needs no TaskRef; if the operator expects a governed task, use its bound TaskRef or report that none is bound.",
|
|
974
|
+
"- Read `.mancode/shared/context/glossary.json` when it exists and prefer its confirmed terms.",
|
|
875
975
|
"- Before editing, assess both clarity and soundness using the project facts. If the request is clear, consistent, and low risk, proceed without ceremonial questions. Resolve repository-answerable unknowns yourself; classify the rest as blocking, recommendable, or defaultable. Ask and wait only when a blocking unknown could materially change behavior, scope, acceptance, data, security, compatibility, or ownership.",
|
|
876
976
|
"- A supplied implementation direction is not automatically safe. If it conflicts with repository evidence or involves authentication, payment, sensitive data, deletion, migration, public APIs, untrusted input, concurrency, infrastructure, or another irreversible effect, show the evidence and impact, recommend the safer path, ask for focused confirmation, and wait before editing.",
|
|
877
977
|
"- If resolving the ambiguity requires architecture, semantic owner/source-of-truth, cross-module scope, migration, team coordination, or formal acceptance decisions, recommend `/man`, explain the trigger, and wait for the operator to choose; advice alone never changes mode or authority.",
|
|
@@ -935,6 +1035,27 @@ async function renderV3AdapterCandidate(root, platform) {
|
|
|
935
1035
|
renderV3Bootstrap(platform)
|
|
936
1036
|
);
|
|
937
1037
|
}
|
|
1038
|
+
case "kimi-code": {
|
|
1039
|
+
const existing = await readAdapterTarget(root, "agents") ?? "";
|
|
1040
|
+
return replaceManagedV3BlockText(
|
|
1041
|
+
removeLegacyV3Block(
|
|
1042
|
+
removeLegacyAgentsBlocks(existing),
|
|
1043
|
+
LEGACY_KIMI_MARKERS
|
|
1044
|
+
),
|
|
1045
|
+
V3_KIMI_START_MARKER,
|
|
1046
|
+
V3_KIMI_END_MARKER,
|
|
1047
|
+
renderV3Bootstrap(platform)
|
|
1048
|
+
);
|
|
1049
|
+
}
|
|
1050
|
+
case "qoder": {
|
|
1051
|
+
const existing = await readAdapterTarget(root, "agents") ?? "";
|
|
1052
|
+
return replaceManagedV3BlockText(
|
|
1053
|
+
removeLegacyV3Block(existing, LEGACY_QODER_MARKERS),
|
|
1054
|
+
V3_QODER_START_MARKER,
|
|
1055
|
+
V3_QODER_END_MARKER,
|
|
1056
|
+
renderV3Bootstrap(platform)
|
|
1057
|
+
);
|
|
1058
|
+
}
|
|
938
1059
|
}
|
|
939
1060
|
}
|
|
940
1061
|
function renderCursorRule(content) {
|
|
@@ -984,6 +1105,8 @@ function primaryFileTarget(platform) {
|
|
|
984
1105
|
return "cursor-rule";
|
|
985
1106
|
case "codex":
|
|
986
1107
|
case "zcode":
|
|
1108
|
+
case "kimi-code":
|
|
1109
|
+
case "qoder":
|
|
987
1110
|
return "agents";
|
|
988
1111
|
case "copilot":
|
|
989
1112
|
return "copilot-instructions";
|
|
@@ -1042,6 +1165,31 @@ function planPlatformBootstrapUpgrade(desired, platform) {
|
|
|
1042
1165
|
)
|
|
1043
1166
|
);
|
|
1044
1167
|
return;
|
|
1168
|
+
case "kimi-code":
|
|
1169
|
+
desired.set(
|
|
1170
|
+
target,
|
|
1171
|
+
replaceManagedV3BlockText(
|
|
1172
|
+
removeLegacyV3Block(
|
|
1173
|
+
removeLegacyAgentsBlocks(current ?? ""),
|
|
1174
|
+
LEGACY_KIMI_MARKERS
|
|
1175
|
+
),
|
|
1176
|
+
V3_KIMI_START_MARKER,
|
|
1177
|
+
V3_KIMI_END_MARKER,
|
|
1178
|
+
renderV3Bootstrap(platform)
|
|
1179
|
+
)
|
|
1180
|
+
);
|
|
1181
|
+
return;
|
|
1182
|
+
case "qoder":
|
|
1183
|
+
desired.set(
|
|
1184
|
+
target,
|
|
1185
|
+
replaceManagedV3BlockText(
|
|
1186
|
+
removeLegacyV3Block(current ?? "", LEGACY_QODER_MARKERS),
|
|
1187
|
+
V3_QODER_START_MARKER,
|
|
1188
|
+
V3_QODER_END_MARKER,
|
|
1189
|
+
renderV3Bootstrap(platform)
|
|
1190
|
+
)
|
|
1191
|
+
);
|
|
1192
|
+
return;
|
|
1045
1193
|
case "copilot":
|
|
1046
1194
|
desired.set(
|
|
1047
1195
|
target,
|
|
@@ -1104,6 +1252,24 @@ function primaryManagedTargetSpec(platform) {
|
|
|
1104
1252
|
V3_ZCODE_END_MARKER,
|
|
1105
1253
|
renderV3Bootstrap(platform)
|
|
1106
1254
|
);
|
|
1255
|
+
case "kimi-code":
|
|
1256
|
+
return embeddedManagedTargetSpec(
|
|
1257
|
+
target,
|
|
1258
|
+
"agents#kimi-code",
|
|
1259
|
+
"agents",
|
|
1260
|
+
V3_KIMI_START_MARKER,
|
|
1261
|
+
V3_KIMI_END_MARKER,
|
|
1262
|
+
renderV3Bootstrap(platform)
|
|
1263
|
+
);
|
|
1264
|
+
case "qoder":
|
|
1265
|
+
return embeddedManagedTargetSpec(
|
|
1266
|
+
target,
|
|
1267
|
+
"agents#qoder",
|
|
1268
|
+
"agents",
|
|
1269
|
+
V3_QODER_START_MARKER,
|
|
1270
|
+
V3_QODER_END_MARKER,
|
|
1271
|
+
renderV3Bootstrap(platform)
|
|
1272
|
+
);
|
|
1107
1273
|
}
|
|
1108
1274
|
}
|
|
1109
1275
|
function embeddedManagedTargetSpec(target, identity, fileTarget, startMarker, endMarker, content) {
|
|
@@ -1116,7 +1282,7 @@ function embeddedManagedTargetSpec(target, identity, fileTarget, startMarker, en
|
|
|
1116
1282
|
};
|
|
1117
1283
|
}
|
|
1118
1284
|
function modeEntryFileTarget(platform, mode) {
|
|
1119
|
-
const family = platform === "claude-code" ? "claude" : platform === "codex" || platform === "zcode" ? "agents" : platform;
|
|
1285
|
+
const family = platform === "claude-code" ? "claude" : platform === "codex" || platform === "zcode" || platform === "kimi-code" ? "agents" : platform;
|
|
1120
1286
|
return `${family}-mode-${mode}`;
|
|
1121
1287
|
}
|
|
1122
1288
|
async function inspectManagedTarget(root, platform, spec) {
|
|
@@ -1433,11 +1599,14 @@ function legacyAdapterTargetsForPlatform(platform, includeSettings) {
|
|
|
1433
1599
|
(target) => /^(cursor-legacy|cursor-alias)-/u.test(target)
|
|
1434
1600
|
);
|
|
1435
1601
|
}
|
|
1436
|
-
if (platform === "codex" || platform === "zcode") {
|
|
1602
|
+
if (platform === "codex" || platform === "zcode" || platform === "kimi-code") {
|
|
1437
1603
|
return V3_LEGACY_ADAPTER_FILE_TARGETS.filter(
|
|
1438
1604
|
(target) => target.startsWith("agents-alias-")
|
|
1439
1605
|
);
|
|
1440
1606
|
}
|
|
1607
|
+
if (platform === "qoder") {
|
|
1608
|
+
return [];
|
|
1609
|
+
}
|
|
1441
1610
|
return V3_LEGACY_ADAPTER_FILE_TARGETS.filter(
|
|
1442
1611
|
(target) => target.startsWith("copilot-alias-")
|
|
1443
1612
|
);
|
|
@@ -1622,13 +1791,13 @@ function renderModeEntryForFileTarget(target) {
|
|
|
1622
1791
|
return renderV3ModeEntry(parsed.mode, parsed.platform);
|
|
1623
1792
|
}
|
|
1624
1793
|
function parseModeEntryFileTarget(target) {
|
|
1625
|
-
const match = /^(claude|agents|cursor|copilot)-mode-(manba|man|manteam|manps|mansolo)$/u.exec(
|
|
1794
|
+
const match = /^(claude|agents|cursor|copilot|qoder)-mode-(manba|man|manteam|manps|mansolo)$/u.exec(
|
|
1626
1795
|
target
|
|
1627
1796
|
);
|
|
1628
1797
|
if (!match) return null;
|
|
1629
1798
|
const family = match[1];
|
|
1630
1799
|
const mode = match[2];
|
|
1631
|
-
const platform = family === "claude" ? "claude-code" : family === "agents" ? "codex" : family === "cursor" ? "cursor" : "copilot";
|
|
1800
|
+
const platform = family === "claude" ? "claude-code" : family === "agents" ? "codex" : family === "cursor" ? "cursor" : family === "qoder" ? "qoder" : "copilot";
|
|
1632
1801
|
return { platform, mode };
|
|
1633
1802
|
}
|
|
1634
1803
|
function isRecord(value) {
|
|
@@ -1766,6 +1935,8 @@ function targetFor(platform) {
|
|
|
1766
1935
|
return ".cursor/rules/mancode-continuity.mdc";
|
|
1767
1936
|
case "codex":
|
|
1768
1937
|
case "zcode":
|
|
1938
|
+
case "kimi-code":
|
|
1939
|
+
case "qoder":
|
|
1769
1940
|
return "AGENTS.md";
|
|
1770
1941
|
case "copilot":
|
|
1771
1942
|
return ".github/copilot-instructions.md";
|
|
@@ -1819,11 +1990,15 @@ function platformLabelFor(platform) {
|
|
|
1819
1990
|
case "cursor":
|
|
1820
1991
|
return "Cursor";
|
|
1821
1992
|
case "codex":
|
|
1822
|
-
return "Codex or
|
|
1993
|
+
return "Codex, ZCode, or Kimi Code (shared AGENTS.md bootstrap)";
|
|
1823
1994
|
case "copilot":
|
|
1824
1995
|
return "GitHub Copilot";
|
|
1825
1996
|
case "zcode":
|
|
1826
|
-
return "Codex or
|
|
1997
|
+
return "Codex, ZCode, or Kimi Code (shared AGENTS.md bootstrap)";
|
|
1998
|
+
case "kimi-code":
|
|
1999
|
+
return "Codex, ZCode, or Kimi Code (shared AGENTS.md bootstrap)";
|
|
2000
|
+
case "qoder":
|
|
2001
|
+
return "Qoder (IDE/CLI)";
|
|
1827
2002
|
}
|
|
1828
2003
|
}
|
|
1829
2004
|
function capabilitiesFor(_platform) {
|
|
@@ -1877,4 +2052,4 @@ export {
|
|
|
1877
2052
|
renderV3Bootstrap,
|
|
1878
2053
|
renderV3ModeEntry
|
|
1879
2054
|
};
|
|
1880
|
-
//# sourceMappingURL=chunk-
|
|
2055
|
+
//# sourceMappingURL=chunk-2JOKDC3X.js.map
|