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 +24 -13
- package/README.md +21 -14
- package/dist/{chunk-73F46VQM.js → chunk-SOZ5OUAG.js} +199 -28
- package/dist/chunk-SOZ5OUAG.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 +810 -467
- 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-CRSQO3XW.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-CRSQO3XW.js.map} +0 -0
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
|
|
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.
|
|
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,
|
|
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,
|
|
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
|
|
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.
|
|
386
|
-
desktop app and CLI, GitHub Copilot, and
|
|
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.
|
|
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`,
|
|
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 和
|
|
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.
|
|
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
|
|
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
|
|
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.
|
|
340
|
-
Codex、Codex CLI、GitHub Copilot 和
|
|
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.
|
|
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
|
-
|
|
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: {
|
|
@@ -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
|
|
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
|
|
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-
|
|
2051
|
+
//# sourceMappingURL=chunk-SOZ5OUAG.js.map
|