mancode 0.3.10 → 0.3.12
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 +138 -165
- package/README.md +121 -141
- package/dist/chunk-CFC3HBNA.js +1290 -0
- package/dist/chunk-CFC3HBNA.js.map +1 -0
- package/dist/cli.js +224 -84
- package/dist/cli.js.map +1 -1
- package/dist/{v3-adapter-3GJT3AID.js → v3-adapter-DDZB3Y6S.js} +18 -4
- package/package.json +1 -1
- package/dist/chunk-KEIW7AEP.js +0 -597
- package/dist/chunk-KEIW7AEP.js.map +0 -1
- /package/dist/{v3-adapter-3GJT3AID.js.map → v3-adapter-DDZB3Y6S.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/installers/v3-adapter.ts","../src/installers/managed-block.ts"],"sourcesContent":["import {\n lstat,\n mkdir,\n readFile,\n rename,\n rm,\n rmdir,\n writeFile,\n} from 'node:fs/promises';\nimport path from 'node:path';\nimport {\n hasManagedBlock,\n removeManagedBlock,\n replaceManagedBlock,\n} from './managed-block.js';\nimport type { PlatformName } from './registry.js';\n\n/**\n * This is the schema of the generated bootstrap, not a product version. The\n * schema manifest records the expected renderer schema while physical status\n * is derived from the managed files below.\n */\nexport const V3_ADAPTER_VERSION = '3';\n\nexport const V3_ADAPTER_MANAGED_MARKER =\n '<!-- Managed by mancode:v3-adapter. Do not edit this marker. -->';\n\nexport const V3_MODE_ENTRY_MANAGED_MARKER =\n '<!-- Managed by mancode:v3-mode-entry. Do not edit this marker. -->';\n\nexport const V3_MODE_NAMES = [\n 'manba',\n 'man',\n 'manteam',\n 'manps',\n 'mansolo',\n] as const;\n\nexport type V3ModeName = (typeof V3_MODE_NAMES)[number];\n\nconst LEGACY_MODE_ENTRY_MANAGED_MARKERS = [\n '<!-- Managed by mancode:claude-skill. Do not edit this marker. -->',\n '<!-- Managed by mancode:codex-skill. Do not edit this file manually. -->',\n '<!-- Managed by mancode:zcode-skill. Do not edit this file manually. -->',\n '<!-- Managed by mancode:mode-file. Do not edit this file manually. -->',\n] as const;\n\nconst GENERATED_CLAUDE_HOOK_COMMANDS = new Set([\n 'node \".mancode/hooks/session-start.mjs\"',\n 'node \".mancode/hooks/user-prompt-submit.mjs\"',\n 'bash .mancode/hooks/session-start.sh',\n 'bash .mancode/hooks/user-prompt-submit.sh',\n]);\n\nconst LEGACY_CLAUDE_SKILL_PATHS = new Set([\n '.claude/skills/mancode-solo.md',\n '.claude/skills/mancode-man8.md',\n '.claude/skills/mancode-man.md',\n '.claude/skills/mancode-mansolo.md',\n]);\n\nconst LEGACY_CLAUDE_SETTINGS_RAW_HINTS = [\n '.mancode/hooks/session-start.',\n '.mancode/hooks/user-prompt-submit.',\n ...LEGACY_CLAUDE_SKILL_PATHS,\n] as const;\n\nconst V3_CODEX_START_MARKER = '<!-- mancode:v3:codex:start -->';\nconst V3_CODEX_END_MARKER = '<!-- mancode:v3:codex:end -->';\nconst V3_ZCODE_START_MARKER = '<!-- mancode:v3:zcode:start -->';\nconst V3_ZCODE_END_MARKER = '<!-- mancode:v3:zcode:end -->';\nconst V3_COPILOT_START_MARKER = '<!-- mancode:v3:copilot:start -->';\nconst V3_COPILOT_END_MARKER = '<!-- mancode:v3:copilot:end -->';\nconst LEGACY_CODEX_START_MARKER = '<!-- mancode:start -->';\nconst LEGACY_CODEX_END_MARKER = '<!-- mancode:end -->';\nconst LEGACY_ZCODE_START_MARKER = '<!-- mancode:zcode:start -->';\nconst LEGACY_ZCODE_END_MARKER = '<!-- mancode:zcode:end -->';\nconst RETRIABLE_ADAPTER_READ_CODES = new Set(['EACCES', 'EBUSY', 'EPERM']);\nconst ADAPTER_READ_MAX_ATTEMPTS = 4;\nconst ADAPTER_READ_RETRY_DELAY_MS = 25;\n\nexport interface V3AdapterCapabilities {\n nativeModeEntry: boolean;\n sessionHook: false;\n promptHook: false;\n sessionIdentity: 'explicit-required';\n}\n\nexport interface V3PlatformAdapterStatus {\n version: string;\n installed: boolean;\n ready: boolean;\n target: string;\n detail: string;\n capabilities: V3AdapterCapabilities;\n}\n\n/**\n * A physical file touched by the V3 bootstrap renderer. Codex and ZCode\n * deliberately share the AGENTS target, so activation journals these files\n * rather than individual platform installs.\n */\nexport type V3ModeEntryFileTarget =\n | `claude-mode-${V3ModeName}`\n | `agents-mode-${V3ModeName}`\n | `cursor-mode-${V3ModeName}`\n | `copilot-mode-${V3ModeName}`;\n\nexport type V3LegacyAdapterFileTarget =\n | 'claude-settings'\n | 'claude-legacy-solo'\n | 'cursor-legacy-context'\n | 'cursor-legacy-practice'\n | 'cursor-legacy-solo'\n | 'cursor-legacy-manba'\n | 'cursor-legacy-man'\n | 'cursor-legacy-manteam'\n | 'cursor-legacy-manps'\n | 'cursor-legacy-mamba'\n | 'cursor-legacy-man8'\n | V3LegacyModeAliasTarget;\n\ntype V3LegacyModeAliasTarget =\n | `claude-alias-${LegacyModeAlias}`\n | `agents-alias-${LegacyModeAlias}`\n | `cursor-alias-${LegacyModeAlias}`\n | `copilot-alias-${LegacyModeAlias}`;\n\ntype LegacyModeAlias = 'mamba' | 'man8';\n\nexport type V3AdapterFileTarget =\n | 'claude-skill'\n | 'cursor-rule'\n | 'agents'\n | 'copilot-instructions'\n | V3ModeEntryFileTarget\n | V3LegacyAdapterFileTarget;\n\nexport interface V3AdapterFilePlan {\n target: V3AdapterFileTarget;\n beforeContent: string | null;\n targetContent: string;\n}\n\nexport interface V3StagedAdapter {\n platform: PlatformName;\n /** The corresponding live target, relative to the project root. */\n target: string;\n /** The generated candidate, kept under V3 staging rather than the live target. */\n stagingTarget: string;\n /** Original public mode entries staged beside the bootstrap candidate. */\n modeEntries: Array<{\n mode: V3ModeName;\n target: string;\n stagingTarget: string;\n }>;\n}\n\nconst V3_MODE_ENTRY_FILE_TARGETS = V3_MODE_NAMES.flatMap((mode) => [\n `claude-mode-${mode}` as const,\n `agents-mode-${mode}` as const,\n `cursor-mode-${mode}` as const,\n `copilot-mode-${mode}` as const,\n]);\n\nconst V3_LEGACY_ADAPTER_FILE_TARGETS: readonly V3LegacyAdapterFileTarget[] = [\n 'claude-settings',\n 'claude-legacy-solo',\n 'cursor-legacy-context',\n 'cursor-legacy-practice',\n 'cursor-legacy-solo',\n 'cursor-legacy-manba',\n 'cursor-legacy-man',\n 'cursor-legacy-manteam',\n 'cursor-legacy-manps',\n 'cursor-legacy-mamba',\n 'cursor-legacy-man8',\n ...(['mamba', 'man8'] as const).flatMap((mode) => [\n `claude-alias-${mode}` as const,\n `agents-alias-${mode}` as const,\n `cursor-alias-${mode}` as const,\n `copilot-alias-${mode}` as const,\n ]),\n];\n\nexport const V3_ADAPTER_FILE_TARGETS: readonly V3AdapterFileTarget[] = [\n 'claude-skill',\n 'cursor-rule',\n 'agents',\n 'copilot-instructions',\n ...V3_MODE_ENTRY_FILE_TARGETS,\n ...V3_LEGACY_ADAPTER_FILE_TARGETS,\n];\n\n/**\n * Calculates exact file replacements without publishing them. This lets a\n * migration journal bind the combined AGENTS.md result before its first\n * visible write and preserves all user-authored content outside our blocks.\n */\nexport async function planV3AdapterFiles(\n projectRoot: string,\n): Promise<V3AdapterFilePlan[]> {\n const root = path.resolve(projectRoot);\n const existing = new Map<V3AdapterFileTarget, string | null>();\n for (const target of V3_ADAPTER_FILE_TARGETS) {\n existing.set(target, await readAdapterTarget(root, target));\n }\n const agents = removeLegacyAgentsBlocks(existing.get('agents') ?? '');\n const nextAgents = replaceManagedV3BlockText(\n replaceManagedV3BlockText(\n agents,\n V3_CODEX_START_MARKER,\n V3_CODEX_END_MARKER,\n renderV3Bootstrap('codex'),\n ),\n V3_ZCODE_START_MARKER,\n V3_ZCODE_END_MARKER,\n renderV3Bootstrap('zcode'),\n );\n const legacyAdapterPlans = planLegacyAdapterRetirement(existing);\n const plans: V3AdapterFilePlan[] = [\n managedFilePlan(\n 'claude-skill',\n existing.get('claude-skill') ?? null,\n renderClaudeSkill(renderV3Bootstrap('claude-code')),\n ),\n managedFilePlan(\n 'cursor-rule',\n existing.get('cursor-rule') ?? null,\n renderCursorRule(renderV3Bootstrap('cursor')),\n ),\n {\n target: 'agents',\n beforeContent: existing.get('agents') ?? null,\n targetContent: nextAgents,\n },\n {\n target: 'copilot-instructions',\n beforeContent: existing.get('copilot-instructions') ?? null,\n targetContent: replaceManagedV3BlockText(\n removeManagedBlock(existing.get('copilot-instructions') ?? ''),\n V3_COPILOT_START_MARKER,\n V3_COPILOT_END_MARKER,\n renderV3Bootstrap('copilot'),\n ),\n },\n ...V3_MODE_ENTRY_FILE_TARGETS.map((target) =>\n managedModeEntryPlan(\n target,\n existing.get(target) ?? null,\n renderModeEntryForFileTarget(target),\n ),\n ),\n ...legacyAdapterPlans,\n ];\n return plans;\n}\n\n/** Publishes one precomputed fixed-target replacement with atomic rename. */\nexport async function applyV3AdapterFilePlan(\n projectRoot: string,\n plan: V3AdapterFilePlan,\n): Promise<void> {\n const root = path.resolve(projectRoot);\n if (!V3_ADAPTER_FILE_TARGETS.includes(plan.target)) {\n throw new Error('MANCODE_V3_ADAPTER_TARGET_INVALID');\n }\n if (typeof plan.targetContent !== 'string' || !plan.targetContent.trim()) {\n throw new Error('MANCODE_V3_ADAPTER_TARGET_INVALID');\n }\n const target = v3AdapterTargetPath(root, plan.target);\n await assertAdapterPathSafe(root, target);\n await mkdir(path.dirname(target), { recursive: true });\n await atomicWrite(target, plan.targetContent);\n}\n\n/**\n * Renders a complete adapter candidate under V3 staging. Shadow integration\n * may inspect this exact replacement without changing a live managed file.\n */\nexport async function stageV3Adapter(\n projectRoot: string,\n platform: PlatformName,\n): Promise<V3StagedAdapter> {\n const root = path.resolve(projectRoot);\n await assertPlatformAdapterPathsSafe(root, platform);\n const target = targetFor(platform);\n const content = await renderV3AdapterCandidate(root, platform);\n const stagingTarget = path.join(\n '.mancode',\n 'staging',\n 'adapters',\n 'v3',\n platform,\n target,\n );\n const destination = path.join(root, stagingTarget);\n await assertAdapterPathSafe(root, destination);\n await mkdir(path.dirname(destination), { recursive: true });\n await atomicWrite(destination, content);\n const modeEntries = [] as V3StagedAdapter['modeEntries'];\n for (const mode of V3_MODE_NAMES) {\n const modeTarget = path.relative(\n root,\n v3ModeEntryPath(root, platform, mode),\n );\n const modeStagingTarget = path.join(\n '.mancode',\n 'staging',\n 'adapters',\n 'v3',\n platform,\n modeTarget,\n );\n const modeDestination = path.join(root, modeStagingTarget);\n await assertAdapterPathSafe(root, modeDestination);\n await mkdir(path.dirname(modeDestination), { recursive: true });\n await atomicWrite(modeDestination, renderV3ModeEntry(mode, platform));\n modeEntries.push({\n mode,\n target: modeTarget,\n stagingTarget: modeStagingTarget,\n });\n }\n return { platform, target, stagingTarget, modeEntries };\n}\n\nexport function v3AdapterTargetPath(\n projectRoot: string,\n target: V3AdapterFileTarget,\n): string {\n const root = path.resolve(projectRoot);\n const modeTarget = parseModeEntryFileTarget(target);\n if (modeTarget !== null) {\n return v3ModeEntryPath(root, modeTarget.platform, modeTarget.mode);\n }\n const legacyTarget = legacyAdapterRelativePath(target);\n if (legacyTarget !== null) return path.join(root, legacyTarget);\n switch (target) {\n case 'claude-skill':\n return path.join(root, '.claude', 'skills', 'mancode-v3', 'SKILL.md');\n case 'cursor-rule':\n return path.join(root, '.cursor', 'rules', 'mancode-v3.mdc');\n case 'agents':\n return path.join(root, 'AGENTS.md');\n case 'copilot-instructions':\n return path.join(root, '.github', 'copilot-instructions.md');\n }\n throw new Error('MANCODE_V3_ADAPTER_TARGET_INVALID');\n}\n\n/** Validates every existing segment before a recovery read or removal. */\nexport async function assertV3AdapterTargetSafe(\n projectRoot: string,\n target: V3AdapterFileTarget,\n): Promise<void> {\n const root = path.resolve(projectRoot);\n await assertAdapterPathSafe(root, v3AdapterTargetPath(root, target));\n}\n\n/** The original public mode name, rendered at the host's native entry path. */\nexport function v3ModeEntryPath(\n projectRoot: string,\n platform: PlatformName,\n mode: V3ModeName,\n): string {\n const root = path.resolve(projectRoot);\n switch (platform) {\n case 'claude-code':\n return path.join(root, '.claude', 'skills', mode, 'SKILL.md');\n case 'codex':\n case 'zcode':\n return path.join(root, '.agents', 'skills', mode, 'SKILL.md');\n case 'cursor':\n return path.join(root, '.cursor', 'commands', `${mode}.md`);\n case 'copilot':\n return path.join(root, '.github', 'prompts', `${mode}.prompt.md`);\n }\n}\n\n/**\n * Writes only stable V3 bootstrap instructions. In particular, this never\n * creates legacy authority or copies task state into an adapter file.\n */\nexport async function installV3Adapter(\n projectRoot: string,\n platform: PlatformName,\n): Promise<V3PlatformAdapterStatus> {\n const root = path.resolve(projectRoot);\n await assertV3AdapterInstallable(root, platform);\n const content = renderV3Bootstrap(platform);\n switch (platform) {\n case 'claude-code':\n await writeManagedFile(\n path.join(root, '.claude', 'skills', 'mancode-v3', 'SKILL.md'),\n renderClaudeSkill(content),\n );\n break;\n case 'cursor':\n await writeManagedFile(\n path.join(root, '.cursor', 'rules', 'mancode-v3.mdc'),\n renderCursorRule(content),\n );\n break;\n case 'codex':\n await replaceManagedV3Block(\n path.join(root, 'AGENTS.md'),\n V3_CODEX_START_MARKER,\n V3_CODEX_END_MARKER,\n content,\n [\n [LEGACY_CODEX_START_MARKER, LEGACY_CODEX_END_MARKER],\n [LEGACY_ZCODE_START_MARKER, LEGACY_ZCODE_END_MARKER],\n ],\n );\n break;\n case 'copilot':\n await replaceManagedV3Block(\n path.join(root, '.github', 'copilot-instructions.md'),\n V3_COPILOT_START_MARKER,\n V3_COPILOT_END_MARKER,\n content,\n [[LEGACY_CODEX_START_MARKER, LEGACY_CODEX_END_MARKER]],\n );\n break;\n case 'zcode':\n await replaceManagedV3Block(\n path.join(root, 'AGENTS.md'),\n V3_ZCODE_START_MARKER,\n V3_ZCODE_END_MARKER,\n content,\n [\n [LEGACY_CODEX_START_MARKER, LEGACY_CODEX_END_MARKER],\n [LEGACY_ZCODE_START_MARKER, LEGACY_ZCODE_END_MARKER],\n ],\n );\n break;\n }\n await retireLegacyPlatformFiles(root, platform);\n for (const mode of V3_MODE_NAMES) {\n await writeV3ModeEntry(\n v3ModeEntryPath(root, platform, mode),\n renderV3ModeEntry(mode, platform),\n );\n }\n return inspectV3Adapter(root, platform);\n}\n\n/**\n * Proves all deterministic adapter writes are safe before initialization or\n * repair publishes its first file. I/O can still fail later, but user-owned\n * targets, malformed managed settings, and unsafe paths cannot leave a known\n * partial install behind.\n */\nexport async function assertV3AdapterInstallable(\n projectRoot: string,\n platform: PlatformName,\n): Promise<void> {\n const root = path.resolve(projectRoot);\n await assertPlatformAdapterPathsSafe(root, platform);\n await assertV3ModeEntriesWritable(root, platform);\n await renderV3AdapterCandidate(root, platform);\n\n const existing = new Map<V3AdapterFileTarget, string | null>();\n for (const target of legacyAdapterTargetsForPlatform(platform, true)) {\n existing.set(target, await readAdapterTarget(root, target));\n }\n planLegacyAdapterRetirement(existing);\n}\n\n/** Physical adapter status intentionally does not infer hook approval. */\nexport async function inspectV3Adapter(\n projectRoot: string,\n platform: PlatformName,\n): Promise<V3PlatformAdapterStatus> {\n const root = path.resolve(projectRoot);\n await assertPlatformAdapterPathsSafe(root, platform);\n const target = targetFor(platform);\n const bootstrapInstalled = await adapterTargetPresent(root, platform);\n const modeEntriesInstalled = (\n await Promise.all(\n V3_MODE_NAMES.map((mode) =>\n v3ModeEntryPresent(v3ModeEntryPath(root, platform, mode)),\n ),\n )\n ).every(Boolean);\n const installed = bootstrapInstalled && modeEntriesInstalled;\n return {\n version: V3_ADAPTER_VERSION,\n installed,\n ready: installed,\n target,\n detail: installed\n ? 'V3 bootstrap and original mode entries are present; session identity is explicit-required.'\n : 'V3 bootstrap or one of its original mode entries is not installed.',\n capabilities: capabilitiesFor(platform),\n };\n}\n\n/** Actual on-disk inventory for compatibility gates; never trust manifest echo. */\nexport async function inspectV3AdapterVersions(\n projectRoot: string,\n): Promise<Record<PlatformName, string>> {\n const platforms: PlatformName[] = [\n 'claude-code',\n 'codex',\n 'cursor',\n 'copilot',\n 'zcode',\n ];\n const entries = await Promise.all(\n platforms.map(async (platform) => {\n const status = await inspectV3Adapter(projectRoot, platform);\n return [platform, status.ready ? status.version : 'missing'] as const;\n }),\n );\n return Object.fromEntries(entries) as Record<PlatformName, string>;\n}\n\n/** Removes only the V3 bootstrap owned by this renderer, never V3 authority. */\nexport async function removeV3Adapter(\n projectRoot: string,\n platform: PlatformName,\n): Promise<void> {\n const root = path.resolve(projectRoot);\n await assertPlatformAdapterPathsSafe(root, platform);\n let preserveSharedModeEntries = false;\n switch (platform) {\n case 'claude-code':\n await removeManagedFile(\n path.join(root, '.claude', 'skills', 'mancode-v3', 'SKILL.md'),\n );\n break;\n case 'cursor':\n await removeManagedFile(\n path.join(root, '.cursor', 'rules', 'mancode-v3.mdc'),\n );\n break;\n case 'codex':\n await removeManagedV3Block(\n path.join(root, 'AGENTS.md'),\n V3_CODEX_START_MARKER,\n V3_CODEX_END_MARKER,\n );\n preserveSharedModeEntries = await managedBlockPresent(\n path.join(root, 'AGENTS.md'),\n V3_ZCODE_START_MARKER,\n V3_ZCODE_END_MARKER,\n );\n break;\n case 'copilot':\n await removeManagedV3Block(\n path.join(root, '.github', 'copilot-instructions.md'),\n V3_COPILOT_START_MARKER,\n V3_COPILOT_END_MARKER,\n );\n break;\n case 'zcode':\n await removeManagedV3Block(\n path.join(root, 'AGENTS.md'),\n V3_ZCODE_START_MARKER,\n V3_ZCODE_END_MARKER,\n );\n preserveSharedModeEntries = await managedBlockPresent(\n path.join(root, 'AGENTS.md'),\n V3_CODEX_START_MARKER,\n V3_CODEX_END_MARKER,\n );\n break;\n }\n if (!preserveSharedModeEntries) {\n for (const mode of V3_MODE_NAMES) {\n await removeV3ModeEntry(v3ModeEntryPath(root, platform, mode));\n }\n }\n await removeRetiredLegacyPlatformFiles(root, platform);\n}\n\nexport function renderV3Bootstrap(platform: PlatformName): string {\n const platformLabel = platformLabelFor(platform);\n const sessionCreationGuidance =\n platform === 'codex' || platform === 'zcode'\n ? 'When status has no `currentSession`, 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.'\n : `When status has no \\`currentSession\\`, 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}\\`.`;\n const spikePlatform =\n platform === 'codex' || platform === 'zcode'\n ? 'the active Codex or ZCode host'\n : platform;\n const modeEntry = capabilitiesFor(platform).nativeModeEntry\n ? 'Use the platform mode entry only as a shortcut; resolve a Context Pack first.'\n : 'This platform has no native V3 mode entry; use the CLI commands explicitly.';\n return [\n '# mancode V3 bootstrap',\n '',\n V3_ADAPTER_MANAGED_MARKER,\n '',\n `- Platform: ${platformLabel}. This file is a non-authoritative bootstrap.`,\n '- Locate the project root before running mancode commands.',\n '- First run `mancode status --json` from the project root.',\n '- An explicitly invoked original `man`, `manba`, `manteam`, `manps`, or `mansolo` entry supplies its authorized action. Its mode-specific steps override conflicting generic no-task or mutation guidance below.',\n '- In particular, `manps` may run local health scans without an actor, session, or TaskRef. `mansolo` needs them only for an explicit governed handoff.',\n '- If status has no `localIdentity.actorId`, ask for a display name and run `mancode team identity create --name \"<display name>\"` before creating a session.',\n '- If status reports `currentSession`, reuse it. `currentTask: null` and `MANCODE_TASK_REQUIRED` do not make a session stale.',\n `- ${sessionCreationGuidance} Pass its returned \\`sessionId\\` as \\`--session <id>\\` to later commands; an \\`export\\` inside one command tool does not persist to later command tools.`,\n '- Outside an invoked original mode entry, if no current task and no task is explicitly supplied, report \"no task bound\" and stop. Do not probe workflow subcommands to work around `MANCODE_TASK_REQUIRED`.',\n '- Bootstrap discovery is read-only: before the operator explicitly requests task work, do not run `mancode init`, `mancode migrate`, `mancode workflow`, or inspect mancode installed package/source.',\n '- With an existing or supplied task, read its Context Pack with `mancode context show --purpose orient --session <id>`; for anonymous diagnosis, include an explicit `--task <namespace:id>`.',\n '- After an operator explicitly requests task work, perform mutations only through `mancode workflow`, `mancode team`, and `mancode context` commands with their required revision and session arguments.',\n '- For a mode entry, request the matching Context Pack purpose: `plan`, `implement`, `review`, `verify`, or `handoff`.',\n '- Do not persist task, mode, or session state in this adapter file or any legacy state file.',\n `- ${modeEntry}`,\n `- 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\\`.`,\n ].join('\\n');\n}\n\n/**\n * One renderer backs every original mode name. The entry contains navigation\n * only; V3 stores remain the sole authority for sessions, tasks, and workflow\n * revisions.\n */\nexport function renderV3ModeEntry(\n mode: V3ModeName,\n platform: PlatformName,\n): string {\n const definition = V3_MODE_DEFINITIONS[mode];\n const sessionCreationGuidance =\n platform === 'codex' || platform === 'zcode'\n ? '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.'\n : `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.`;\n const authoritySteps =\n mode === 'manps'\n ? [\n '1. Run `mancode status --json` from the project root and require active V3 authority.',\n '2. Run the health action below directly. A local scan needs no TaskRef, actor identity, or explicit session.',\n '3. Never read or write legacy mode authority before or after the scan.',\n ]\n : mode === 'mansolo'\n ? [\n '1. Run `mancode status --json` from the project root. Never read or write legacy mode authority.',\n '2. If no governed task is being handed off, continue with focused solo work without creating a persistent mode, actor, session, or TaskRef.',\n '3. For an explicit governed handoff, ensure `localIdentity.actorId`, reuse or create the current session, and bind the existing TaskRef before running the handoff action below.',\n '4. For that governed task only, read `mancode context show --purpose implement --session <id>` using the bound or explicit TaskRef.',\n ]\n : [\n '1. Run `mancode status --json` from the project root. Never read or write the legacy authority file.',\n '2. If `localIdentity.actorId` is absent, ask for a display name and run `mancode team identity create --name \"<display name>\"`.',\n `3. Reuse \\`currentSession.sessionId\\` when present. ${sessionCreationGuidance}`,\n '4. Reuse the current TaskRef. To bind a supplied existing task, run `mancode context resume <namespace:ULID> --session <id>`.',\n `5. For an existing task, read only the needed Context Pack with \\`mancode context show --purpose ${definition.contextPurpose} --session <id>\\`; include \\`--task <namespace:ULID>\\` when it is not yet bound. For a new task, create it through the mode action first, then read the returned TaskRef's Context Pack.`,\n ];\n const frontmatter = [\n '---',\n ...(platform === 'claude-code' ||\n platform === 'codex' ||\n platform === 'zcode'\n ? [`name: ${mode}`]\n : []),\n ...(platform === 'copilot' ? [\"agent: 'agent'\"] : []),\n `description: ${JSON.stringify(definition.description)}`,\n '---',\n ];\n const mutationGuidance =\n mode === 'manps'\n ? 'The local scan and an explicitly requested remediation do not require a TaskRef, workflow revision, actor, or session. Never turn their report files into workflow authority.'\n : mode === 'mansolo'\n ? 'Only an explicit governed handoff mutation requires the bound TaskRef, explicit session, and latest expected revision. Ordinary focused solo work persists no mode state.'\n : 'For every mutation, use the TaskRef, explicit session, and latest expected revision reported by V3. Do not emulate the legacy `--step` protocol or persist mode state in an adapter file.';\n return [\n ...frontmatter,\n '',\n V3_MODE_ENTRY_MANAGED_MARKER,\n '',\n `# mancode V3 mode: ${mode}`,\n '',\n `Purpose: ${definition.purpose}.`,\n '',\n '## Enter through V3 authority',\n '',\n ...authoritySteps,\n '',\n '## Mode action',\n '',\n ...definition.actions,\n '',\n mutationGuidance,\n '',\n ].join('\\n');\n}\n\nconst V3_MODE_DEFINITIONS: Record<\n V3ModeName,\n {\n description: string;\n purpose: string;\n contextPurpose:\n | 'orient'\n | 'plan'\n | 'implement'\n | 'review'\n | 'verify'\n | 'handoff';\n actions: string[];\n }\n> = {\n man: {\n description: 'Plan and execute governed work through mancode V3.',\n purpose: 'clarify, plan, implement, verify, and review governed work',\n contextPurpose: 'plan',\n actions: [\n '- For a new task, run `mancode workflow create man \"<task>\" --session <id>`.',\n '- Finalize requirements with `mancode workflow requirements <namespace:ULID> finalize --file <requirements.json> --expected-revision <n> --session <id>`.',\n '- Revise or confirm the plan with `mancode workflow plan <namespace:ULID> revise|confirm --expected-revision <n> ... --session <id>`.',\n '- Apply verification and review ledgers with their V3 `apply --file` commands, then use `mancode workflow complete <namespace:ULID> --expected-revision <n> --session <id>`.',\n ],\n },\n manba: {\n description: 'Diagnose and verify a bug through mancode V3.',\n purpose: 'reproduce, diagnose, fix, and verify a regression',\n contextPurpose: 'implement',\n actions: [\n '- For a new diagnostic task, run `mancode workflow create manba \"<task>\" --session <id>`.',\n '- When this is a child investigation, add `--parent <namespace:ULID>`; report and merge the typed outcome through the V3 child commands.',\n '- Change lifecycle only with `mancode workflow update <namespace:ULID> --status <status> --expected-revision <n> --session <id>` and finish with `workflow complete` plus the typed `--outcome`.',\n ],\n },\n manteam: {\n description: 'Coordinate shared governed work through mancode V3.',\n purpose: 'plan and execute work with explicit team ownership and handoff',\n contextPurpose: 'plan',\n actions: [\n '- Confirm team membership with `mancode team status`; join invited participants before assigning shared work.',\n '- For a new shared task, run `mancode workflow create manteam \"<task>\" --visibility shared --coordination team --confirm-shared --session <id>`.',\n '- Use claims, checkpoints, sync, and handoffs through `mancode team`; never infer ownership from an adapter prompt.',\n '- Use the same V3 requirements, plan, verification, review, and completion commands as `man`, adding `--sync` whenever the active transport requires it.',\n ],\n },\n manps: {\n description: 'Inspect project health through the existing manps command.',\n purpose: 'scan project health and review bounded remediation',\n contextPurpose: 'review',\n actions: [\n '- Run `mancode manps [area]` through the same public command entry (`all`, `deps`, `security`, `dead-code`, or `config`).',\n '- Add `--remediate` only when the operator explicitly requests an interactive remediation review.',\n ],\n },\n mansolo: {\n description: 'Return to focused solo execution under V3 authority.',\n purpose: 'perform a small focused task or accept an explicit solo handoff',\n contextPurpose: 'implement',\n actions: [\n '- 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.',\n '- For a governed-to-solo transition, use `mancode workflow handoff <namespace:ULID> --to solo --expected-revision <n> --session <id>`.',\n ],\n },\n};\n\nasync function renderV3AdapterCandidate(\n root: string,\n platform: PlatformName,\n): Promise<string> {\n switch (platform) {\n case 'claude-code': {\n const existing = await readAdapterTarget(root, 'claude-skill');\n return managedFilePlan(\n 'claude-skill',\n existing,\n renderClaudeSkill(renderV3Bootstrap(platform)),\n ).targetContent;\n }\n case 'cursor': {\n const existing = await readAdapterTarget(root, 'cursor-rule');\n return managedFilePlan(\n 'cursor-rule',\n existing,\n renderCursorRule(renderV3Bootstrap(platform)),\n ).targetContent;\n }\n case 'codex': {\n const existing = (await readAdapterTarget(root, 'agents')) ?? '';\n return replaceManagedV3BlockText(\n removeLegacyAgentsBlocks(existing),\n V3_CODEX_START_MARKER,\n V3_CODEX_END_MARKER,\n renderV3Bootstrap(platform),\n );\n }\n case 'copilot': {\n const existing =\n (await readAdapterTarget(root, 'copilot-instructions')) ?? '';\n return replaceManagedV3BlockText(\n removeManagedBlock(existing),\n V3_COPILOT_START_MARKER,\n V3_COPILOT_END_MARKER,\n renderV3Bootstrap(platform),\n );\n }\n case 'zcode': {\n const existing = (await readAdapterTarget(root, 'agents')) ?? '';\n return replaceManagedV3BlockText(\n removeLegacyAgentsBlocks(existing),\n V3_ZCODE_START_MARKER,\n V3_ZCODE_END_MARKER,\n renderV3Bootstrap(platform),\n );\n }\n }\n}\n\nfunction renderClaudeSkill(content: string): string {\n return [\n '---',\n 'name: mancode-v3',\n 'description: \"Internal bootstrap for original mancode mode entries under V3 authority.\"',\n 'user-invocable: false',\n '---',\n '',\n content,\n '',\n ].join('\\n');\n}\n\nfunction renderCursorRule(content: string): string {\n return [\n '---',\n 'description: \"Stable bootstrap for mancode V3 context and workflow commands.\"',\n 'alwaysApply: true',\n 'globs: \"**/*\"',\n '---',\n '',\n content,\n '',\n ].join('\\n');\n}\n\nasync function adapterTargetPresent(\n root: string,\n platform: PlatformName,\n): Promise<boolean> {\n switch (platform) {\n case 'claude-code':\n return managedFilePresent(\n path.join(root, '.claude', 'skills', 'mancode-v3', 'SKILL.md'),\n );\n case 'cursor':\n return managedFilePresent(\n path.join(root, '.cursor', 'rules', 'mancode-v3.mdc'),\n );\n case 'codex':\n return managedBlockPresent(\n path.join(root, 'AGENTS.md'),\n V3_CODEX_START_MARKER,\n V3_CODEX_END_MARKER,\n );\n case 'copilot':\n return managedBlockPresent(\n path.join(root, '.github', 'copilot-instructions.md'),\n V3_COPILOT_START_MARKER,\n V3_COPILOT_END_MARKER,\n );\n case 'zcode':\n return managedBlockPresent(\n path.join(root, 'AGENTS.md'),\n V3_ZCODE_START_MARKER,\n V3_ZCODE_END_MARKER,\n );\n }\n}\n\nasync function writeManagedFile(\n filePath: string,\n content: string,\n): Promise<void> {\n const existing = await readTextIfExists(filePath);\n if (existing !== null && !existing.includes(V3_ADAPTER_MANAGED_MARKER)) {\n throw new Error('MANCODE_V3_ADAPTER_TARGET_USER_AUTHORED');\n }\n await mkdir(path.dirname(filePath), { recursive: true });\n await atomicWrite(filePath, content);\n}\n\nasync function writeV3ModeEntry(\n filePath: string,\n content: string,\n): Promise<void> {\n const existing = await readTextIfExists(filePath);\n const managed =\n existing === null ||\n existing.includes(V3_MODE_ENTRY_MANAGED_MARKER) ||\n LEGACY_MODE_ENTRY_MANAGED_MARKERS.some((marker) =>\n existing.includes(marker),\n );\n if (!managed) {\n throw new Error('MANCODE_V3_MODE_ENTRY_USER_AUTHORED');\n }\n await mkdir(path.dirname(filePath), { recursive: true });\n await atomicWrite(filePath, content);\n}\n\nasync function assertV3ModeEntriesWritable(\n root: string,\n platform: PlatformName,\n): Promise<void> {\n for (const mode of V3_MODE_NAMES) {\n const existing = await readTextIfExists(\n v3ModeEntryPath(root, platform, mode),\n );\n if (\n existing !== null &&\n !existing.includes(V3_MODE_ENTRY_MANAGED_MARKER) &&\n !LEGACY_MODE_ENTRY_MANAGED_MARKERS.some((marker) =>\n existing.includes(marker),\n )\n ) {\n throw new Error('MANCODE_V3_MODE_ENTRY_USER_AUTHORED');\n }\n }\n}\n\nasync function removeV3ModeEntry(filePath: string): Promise<void> {\n const existing = await readTextIfExists(filePath);\n if (existing?.includes(V3_MODE_ENTRY_MANAGED_MARKER)) {\n await rm(filePath, { force: true });\n await removeDirectoryIfEmpty(path.dirname(filePath));\n }\n}\n\nasync function v3ModeEntryPresent(filePath: string): Promise<boolean> {\n const existing = await readTextIfExists(filePath);\n return existing?.includes(V3_MODE_ENTRY_MANAGED_MARKER) ?? false;\n}\n\nasync function removeDirectoryIfEmpty(directory: string): Promise<void> {\n try {\n await rmdir(directory);\n } catch (error) {\n if (\n isNodeError(error) &&\n (error.code === 'ENOENT' ||\n error.code === 'ENOTEMPTY' ||\n error.code === 'EEXIST')\n ) {\n return;\n }\n throw error;\n }\n}\n\nasync function removeManagedFile(filePath: string): Promise<void> {\n const existing = await readTextIfExists(filePath);\n if (existing?.includes(V3_ADAPTER_MANAGED_MARKER)) {\n await rm(filePath, { force: true });\n }\n}\n\nasync function replaceManagedV3Block(\n filePath: string,\n startMarker: string,\n endMarker: string,\n content: string,\n legacyMarkers?: readonly (readonly [string, string])[],\n): Promise<void> {\n const current = (await readTextIfExists(filePath)) ?? '';\n const existing = (legacyMarkers ?? []).reduce(\n (contentWithoutLegacy, [legacyStart, legacyEnd]) =>\n removeManagedBlock(contentWithoutLegacy, legacyStart, legacyEnd),\n current,\n );\n const block = [startMarker, content, endMarker].join('\\n');\n await mkdir(path.dirname(filePath), { recursive: true });\n await atomicWrite(\n filePath,\n replaceManagedBlock(existing, block, startMarker, endMarker),\n );\n}\n\nfunction removeLegacyAgentsBlocks(existing: string): string {\n return removeManagedBlock(\n removeManagedBlock(\n existing,\n LEGACY_CODEX_START_MARKER,\n LEGACY_CODEX_END_MARKER,\n ),\n LEGACY_ZCODE_START_MARKER,\n LEGACY_ZCODE_END_MARKER,\n );\n}\n\nfunction replaceManagedV3BlockText(\n existing: string,\n startMarker: string,\n endMarker: string,\n content: string,\n): string {\n return replaceManagedBlock(\n existing,\n [startMarker, content, endMarker].join('\\n'),\n startMarker,\n endMarker,\n );\n}\n\nfunction managedFilePlan(\n target: V3AdapterFileTarget,\n beforeContent: string | null,\n targetContent: string,\n): V3AdapterFilePlan {\n if (\n beforeContent !== null &&\n !beforeContent.includes(V3_ADAPTER_MANAGED_MARKER)\n ) {\n throw new Error('MANCODE_V3_ADAPTER_TARGET_USER_AUTHORED');\n }\n return { target, beforeContent, targetContent };\n}\n\nfunction managedModeEntryPlan(\n target: V3ModeEntryFileTarget,\n beforeContent: string | null,\n targetContent: string,\n): V3AdapterFilePlan {\n if (\n beforeContent !== null &&\n !beforeContent.includes(V3_MODE_ENTRY_MANAGED_MARKER) &&\n !LEGACY_MODE_ENTRY_MANAGED_MARKERS.some((marker) =>\n beforeContent.includes(marker),\n )\n ) {\n throw new Error('MANCODE_V3_MODE_ENTRY_USER_AUTHORED');\n }\n return { target, beforeContent, targetContent };\n}\n\nfunction planLegacyAdapterRetirement(\n existing: ReadonlyMap<V3AdapterFileTarget, string | null>,\n): V3AdapterFilePlan[] {\n const plans: V3AdapterFilePlan[] = [];\n const settings = existing.get('claude-settings') ?? null;\n if (settings !== null) {\n const cleaned = removeLegacyClaudeSettings(settings);\n if (cleaned !== settings) {\n plans.push({\n target: 'claude-settings',\n beforeContent: settings,\n targetContent: cleaned,\n });\n }\n }\n\n const legacySolo = existing.get('claude-legacy-solo') ?? null;\n if (\n legacySolo?.includes(\n '<!-- Managed by mancode:claude-skill. Do not edit this marker. -->',\n )\n ) {\n plans.push({\n target: 'claude-legacy-solo',\n beforeContent: legacySolo,\n targetContent: renderRetiredClaudeSoloEntry(),\n });\n }\n\n for (const target of V3_LEGACY_ADAPTER_FILE_TARGETS) {\n if (!target.startsWith('cursor-legacy-')) continue;\n const beforeContent = existing.get(target) ?? null;\n if (\n beforeContent?.includes(\n '<!-- Managed by mancode:cursor-rule. Do not edit this marker. -->',\n )\n ) {\n plans.push({\n target,\n beforeContent,\n targetContent: renderRetiredCursorRule(target),\n });\n }\n }\n for (const target of V3_LEGACY_ADAPTER_FILE_TARGETS) {\n const alias = parseLegacyModeAliasTarget(target);\n if (alias === null) continue;\n const beforeContent = existing.get(target) ?? null;\n if (\n beforeContent !== null &&\n isGeneratedLegacyModeAlias(beforeContent, alias.alias)\n ) {\n plans.push({\n target,\n beforeContent,\n targetContent: renderRetiredModeAlias(target),\n });\n }\n }\n return plans;\n}\n\nasync function retireLegacyPlatformFiles(\n root: string,\n platform: PlatformName,\n): Promise<void> {\n const targets = legacyAdapterTargetsForPlatform(platform, true);\n if (targets.length === 0) return;\n const existing = new Map<V3AdapterFileTarget, string | null>();\n for (const target of targets) {\n existing.set(target, await readAdapterTarget(root, target));\n }\n for (const plan of planLegacyAdapterRetirement(existing)) {\n await applyV3AdapterFilePlan(root, plan);\n }\n}\n\nasync function removeRetiredLegacyPlatformFiles(\n root: string,\n platform: PlatformName,\n): Promise<void> {\n const targets = legacyAdapterTargetsForPlatform(platform, false);\n for (const target of targets) {\n const filePath = v3AdapterTargetPath(root, target);\n const content = await readTextIfExists(filePath);\n const retiredModeEntry =\n target === 'claude-legacy-solo' ||\n parseLegacyModeAliasTarget(target) !== null;\n const retired = content?.includes(\n retiredModeEntry\n ? V3_MODE_ENTRY_MANAGED_MARKER\n : V3_ADAPTER_MANAGED_MARKER,\n );\n if (retired) {\n await rm(filePath, { force: true });\n if (\n target === 'claude-legacy-solo' ||\n target.startsWith('claude-alias-') ||\n target.startsWith('agents-alias-')\n ) {\n await removeDirectoryIfEmpty(path.dirname(filePath));\n }\n }\n }\n}\n\nfunction legacyAdapterTargetsForPlatform(\n platform: PlatformName,\n includeSettings: boolean,\n): V3LegacyAdapterFileTarget[] {\n if (platform === 'claude-code') {\n return [\n ...(includeSettings ? (['claude-settings'] as const) : []),\n 'claude-legacy-solo',\n ...V3_LEGACY_ADAPTER_FILE_TARGETS.filter((target) =>\n target.startsWith('claude-alias-'),\n ),\n ];\n }\n if (platform === 'cursor') {\n return V3_LEGACY_ADAPTER_FILE_TARGETS.filter((target) =>\n /^(cursor-legacy|cursor-alias)-/u.test(target),\n );\n }\n if (platform === 'codex' || platform === 'zcode') {\n return V3_LEGACY_ADAPTER_FILE_TARGETS.filter((target) =>\n target.startsWith('agents-alias-'),\n );\n }\n return V3_LEGACY_ADAPTER_FILE_TARGETS.filter((target) =>\n target.startsWith('copilot-alias-'),\n );\n}\n\nfunction removeLegacyClaudeSettings(content: string): string {\n const hasKnownLegacyReference = LEGACY_CLAUDE_SETTINGS_RAW_HINTS.some(\n (value) => content.includes(value),\n );\n if (!hasKnownLegacyReference) return content;\n let parsed: unknown;\n try {\n parsed = JSON.parse(content);\n } catch {\n throw new Error('MANCODE_V3_CLAUDE_SETTINGS_INVALID');\n }\n if (!isRecord(parsed)) {\n throw new Error('MANCODE_V3_CLAUDE_SETTINGS_INVALID');\n }\n const hasGeneratedHook = containsGeneratedClaudeHookValue(parsed.hooks);\n const hasGeneratedSkill =\n isRecord(parsed.skills) &&\n Object.values(parsed.skills).some(\n (value) =>\n typeof value === 'string' && LEGACY_CLAUDE_SKILL_PATHS.has(value),\n );\n if (!hasGeneratedHook && !hasGeneratedSkill) return content;\n const settings: Record<string, unknown> = { ...parsed };\n if ('hooks' in settings) {\n const hooks = removeGeneratedClaudeHookValue(settings.hooks);\n if (hooks === undefined) settings.hooks = undefined;\n else settings.hooks = hooks;\n }\n if (isRecord(settings.skills)) {\n const skills = Object.fromEntries(\n Object.entries(settings.skills).filter(\n ([, value]) =>\n typeof value !== 'string' || !LEGACY_CLAUDE_SKILL_PATHS.has(value),\n ),\n );\n if (Object.keys(skills).length === 0) settings.skills = undefined;\n else settings.skills = skills;\n }\n return `${JSON.stringify(settings, null, 2)}\\n`;\n}\n\nfunction containsGeneratedClaudeHookValue(value: unknown): boolean {\n if (Array.isArray(value)) {\n return value.some(containsGeneratedClaudeHookValue);\n }\n if (!isRecord(value)) return false;\n if (\n typeof value.command === 'string' &&\n isGeneratedClaudeHookCommand(value.command)\n ) {\n return true;\n }\n return Object.values(value).some(containsGeneratedClaudeHookValue);\n}\n\nfunction removeGeneratedClaudeHookValue(value: unknown): unknown | undefined {\n if (Array.isArray(value)) {\n const cleaned = value\n .map(removeGeneratedClaudeHookValue)\n .filter((entry) => entry !== undefined);\n return cleaned.length > 0 ? cleaned : undefined;\n }\n if (!isRecord(value)) return value;\n if (\n typeof value.command === 'string' &&\n isGeneratedClaudeHookCommand(value.command)\n ) {\n return undefined;\n }\n if (Array.isArray(value.hooks)) {\n const hooks = value.hooks\n .map(removeGeneratedClaudeHookValue)\n .filter((entry) => entry !== undefined);\n return hooks.length > 0 ? { ...value, hooks } : undefined;\n }\n const cleaned = Object.entries(value).flatMap(([key, entry]) => {\n const next = removeGeneratedClaudeHookValue(entry);\n return next === undefined ? [] : [[key, next] as const];\n });\n return cleaned.length > 0 ? Object.fromEntries(cleaned) : undefined;\n}\n\nfunction isGeneratedClaudeHookCommand(command: string): boolean {\n return GENERATED_CLAUDE_HOOK_COMMANDS.has(command.trim());\n}\n\nfunction renderRetiredClaudeSoloEntry(): string {\n return [\n '---',\n 'name: solo',\n 'description: \"Compatibility alias for the mancode V3 mansolo entry.\"',\n 'user-invocable: false',\n '---',\n '',\n V3_MODE_ENTRY_MANAGED_MARKER,\n '',\n '# mancode V3 mode compatibility alias',\n '',\n 'Use the `mansolo` mode entry. Resolve V3 status, identity, session, TaskRef, and Context Pack there; do not use legacy mode persistence.',\n '',\n ].join('\\n');\n}\n\nfunction renderRetiredCursorRule(target: V3LegacyAdapterFileTarget): string {\n const legacyName = target.replace('cursor-legacy-', '');\n const mode =\n legacyName === 'solo'\n ? 'mansolo'\n : legacyName === 'mamba'\n ? 'manba'\n : legacyName === 'man8'\n ? 'man'\n : legacyName;\n const guidance =\n mode === 'context' || mode === 'practice'\n ? 'Run `mancode status --json`, then use the matching V3 mode command.'\n : `Use the \\`/${mode}\\` V3 mode command.`;\n return [\n '---',\n 'description: \"Retired legacy mancode rule; V3 mode entries are authoritative.\"',\n 'alwaysApply: false',\n 'globs: \"__mancode_v3_retired_rule__\"',\n '---',\n '',\n V3_ADAPTER_MANAGED_MARKER,\n '',\n '# mancode V3 compatibility redirect',\n '',\n guidance,\n 'Do not use legacy mode persistence or legacy workflow paths.',\n '',\n ].join('\\n');\n}\n\nfunction renderRetiredModeAlias(target: V3AdapterFileTarget): string {\n const parsed = parseLegacyModeAliasTarget(target);\n if (parsed === null) {\n throw new Error('MANCODE_V3_ADAPTER_TARGET_INVALID');\n }\n const publicMode = parsed.alias === 'mamba' ? 'manba' : 'man';\n const frontmatter = [\n '---',\n ...(parsed.family === 'claude' || parsed.family === 'agents'\n ? [`name: ${parsed.alias}`]\n : []),\n ...(parsed.family === 'copilot' ? [\"agent: 'agent'\"] : []),\n ...(parsed.family === 'claude' ? ['user-invocable: false'] : []),\n `description: ${JSON.stringify(`Compatibility alias for the mancode V3 ${publicMode} entry.`)}`,\n '---',\n ];\n return [\n ...frontmatter,\n '',\n V3_MODE_ENTRY_MANAGED_MARKER,\n '',\n '# mancode V3 mode compatibility alias',\n '',\n `The legacy name \\`${parsed.alias}\\` maps to the public V3 mode \\`${publicMode}\\`. Use that original V3 mode entry instead.`,\n '',\n 'Resolve status, identity, session, TaskRef, and Context Pack through V3 authority there. Do not use legacy mode persistence or the legacy workflow protocol.',\n '',\n ].join('\\n');\n}\n\nfunction isGeneratedLegacyModeAlias(\n content: string,\n alias: LegacyModeAlias,\n): boolean {\n if (\n content.includes(V3_MODE_ENTRY_MANAGED_MARKER) ||\n LEGACY_MODE_ENTRY_MANAGED_MARKERS.some((marker) => content.includes(marker))\n ) {\n return true;\n }\n if (alias !== 'man8') return false;\n return (\n content.includes('# mancode · /man8 (4 AM Warmup)') ||\n (content.includes('# mancode man8 — Investigate and Plan') &&\n content.includes('## Mode Persistence'))\n );\n}\n\nfunction legacyAdapterRelativePath(target: V3AdapterFileTarget): string | null {\n if (target === 'claude-settings')\n return path.join('.claude', 'settings.json');\n if (target === 'claude-legacy-solo') {\n return path.join('.claude', 'skills', 'solo', 'SKILL.md');\n }\n if (target.startsWith('cursor-legacy-')) {\n const name = target.slice('cursor-legacy-'.length);\n return path.join('.cursor', 'rules', `mancode-${name}.mdc`);\n }\n const alias = parseLegacyModeAliasTarget(target);\n if (alias === null) return null;\n switch (alias.family) {\n case 'claude':\n return path.join('.claude', 'skills', alias.alias, 'SKILL.md');\n case 'agents':\n return path.join('.agents', 'skills', alias.alias, 'SKILL.md');\n case 'cursor':\n return path.join('.cursor', 'commands', `${alias.alias}.md`);\n case 'copilot':\n return path.join('.github', 'prompts', `${alias.alias}.prompt.md`);\n }\n}\n\nfunction parseLegacyModeAliasTarget(target: V3AdapterFileTarget): {\n family: 'claude' | 'agents' | 'cursor' | 'copilot';\n alias: LegacyModeAlias;\n} | null {\n const match = /^(claude|agents|cursor|copilot)-alias-(mamba|man8)$/u.exec(\n target,\n );\n if (!match) return null;\n return {\n family: match[1] as 'claude' | 'agents' | 'cursor' | 'copilot',\n alias: match[2] as LegacyModeAlias,\n };\n}\n\nfunction renderModeEntryForFileTarget(target: V3ModeEntryFileTarget): string {\n const parsed = parseModeEntryFileTarget(target);\n if (parsed === null) {\n throw new Error('MANCODE_V3_ADAPTER_TARGET_INVALID');\n }\n return renderV3ModeEntry(parsed.mode, parsed.platform);\n}\n\nfunction parseModeEntryFileTarget(\n target: V3AdapterFileTarget,\n): { platform: PlatformName; mode: V3ModeName } | null {\n const match =\n /^(claude|agents|cursor|copilot)-mode-(manba|man|manteam|manps|mansolo)$/u.exec(\n target,\n );\n if (!match) return null;\n const family = match[1];\n const mode = match[2] as V3ModeName;\n const platform: PlatformName =\n family === 'claude'\n ? 'claude-code'\n : family === 'agents'\n ? 'codex'\n : family === 'cursor'\n ? 'cursor'\n : 'copilot';\n return { platform, mode };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nasync function readAdapterTarget(\n root: string,\n target: V3AdapterFileTarget,\n): Promise<string | null> {\n const filePath = v3AdapterTargetPath(root, target);\n await assertAdapterPathSafe(root, filePath);\n try {\n const entry = await lstat(filePath);\n if (!entry.isFile() || entry.isSymbolicLink()) {\n throw new Error('MANCODE_ARTIFACT_PATH_UNSAFE');\n }\n } catch (error) {\n if (isNodeError(error) && error.code === 'ENOENT') return null;\n throw error;\n }\n return readFile(filePath, 'utf8');\n}\n\nasync function assertPlatformAdapterPathsSafe(\n root: string,\n platform: PlatformName,\n): Promise<void> {\n const targets = new Set<string>([\n path.join(root, targetFor(platform)),\n ...V3_MODE_NAMES.map((mode) => v3ModeEntryPath(root, platform, mode)),\n ...legacyAdapterTargetsForPlatform(platform, true).map((target) =>\n v3AdapterTargetPath(root, target),\n ),\n ]);\n for (const target of targets) {\n await assertAdapterPathSafe(root, target);\n }\n}\n\n/** Rejects a symlink or non-directory in any fixed adapter path segment. */\nasync function assertAdapterPathSafe(\n root: string,\n target: string,\n): Promise<void> {\n const relative = path.relative(root, target);\n if (!relative || relative.startsWith('..') || path.isAbsolute(relative)) {\n throw new Error('MANCODE_ARTIFACT_PATH_UNSAFE');\n }\n const rootEntry = await lstat(root);\n if (!rootEntry.isDirectory() || rootEntry.isSymbolicLink()) {\n throw new Error('MANCODE_ARTIFACT_PATH_UNSAFE');\n }\n const segments = relative.split(path.sep);\n let current = root;\n for (let index = 0; index < segments.length; index += 1) {\n current = path.join(current, segments[index] ?? '');\n try {\n const entry = await lstat(current);\n if (\n entry.isSymbolicLink() ||\n (index < segments.length - 1 && !entry.isDirectory())\n ) {\n throw new Error('MANCODE_ARTIFACT_PATH_UNSAFE');\n }\n } catch (error) {\n if (isNodeError(error) && error.code === 'ENOENT') return;\n throw error;\n }\n }\n}\n\nasync function removeManagedV3Block(\n filePath: string,\n startMarker: string,\n endMarker: string,\n): Promise<void> {\n const existing = await readTextIfExists(filePath);\n if (existing === null || !hasManagedBlock(existing, startMarker, endMarker)) {\n return;\n }\n const cleaned = removeManagedBlock(existing, startMarker, endMarker);\n if (cleaned.trim()) {\n await atomicWrite(filePath, `${cleaned.trimEnd()}\\n`);\n } else {\n await rm(filePath, { force: true });\n }\n}\n\nasync function managedFilePresent(filePath: string): Promise<boolean> {\n const content = await readTextIfExists(filePath);\n return content?.includes(V3_ADAPTER_MANAGED_MARKER) ?? false;\n}\n\nasync function managedBlockPresent(\n filePath: string,\n startMarker: string,\n endMarker: string,\n): Promise<boolean> {\n const content = await readTextIfExists(filePath);\n return content !== null && hasManagedBlock(content, startMarker, endMarker);\n}\n\nasync function readTextIfExists(filePath: string): Promise<string | null> {\n for (let attempt = 1; attempt <= ADAPTER_READ_MAX_ATTEMPTS; attempt += 1) {\n try {\n return await readFile(filePath, 'utf8');\n } catch (error) {\n if (isNodeError(error) && error.code === 'ENOENT') return null;\n if (\n !isRetriableAdapterReadError(error) ||\n attempt === ADAPTER_READ_MAX_ATTEMPTS\n ) {\n throw error;\n }\n await delay(ADAPTER_READ_RETRY_DELAY_MS * attempt);\n }\n }\n throw new Error('MANCODE_V3_ADAPTER_READ_RETRY_EXHAUSTED');\n}\n\nasync function atomicWrite(filePath: string, content: string): Promise<void> {\n const temporary = path.join(\n path.dirname(filePath),\n `.${path.basename(filePath)}.${process.pid}.${Date.now()}.tmp`,\n );\n try {\n await writeFile(temporary, content, { encoding: 'utf8', flag: 'wx' });\n await rename(temporary, filePath);\n } finally {\n await rm(temporary, { force: true }).catch(() => undefined);\n }\n}\n\nfunction targetFor(platform: PlatformName): string {\n switch (platform) {\n case 'claude-code':\n return '.claude/skills/mancode-v3/SKILL.md';\n case 'cursor':\n return '.cursor/rules/mancode-v3.mdc';\n case 'codex':\n case 'zcode':\n return 'AGENTS.md';\n case 'copilot':\n return '.github/copilot-instructions.md';\n }\n}\n\nfunction platformLabelFor(platform: PlatformName): string {\n switch (platform) {\n case 'claude-code':\n return 'Claude Code';\n case 'cursor':\n return 'Cursor';\n case 'codex':\n return 'Codex or ZCode (shared AGENTS.md bootstrap)';\n case 'copilot':\n return 'GitHub Copilot';\n case 'zcode':\n return 'Codex or ZCode (shared AGENTS.md bootstrap)';\n }\n}\n\nfunction capabilitiesFor(_platform: PlatformName): V3AdapterCapabilities {\n return {\n nativeModeEntry: true,\n sessionHook: false,\n promptHook: false,\n sessionIdentity: 'explicit-required',\n };\n}\n\nfunction isNodeError(error: unknown): error is NodeJS.ErrnoException {\n return typeof error === 'object' && error !== null && 'code' in error;\n}\n\nfunction isRetriableAdapterReadError(error: unknown): boolean {\n return (\n isNodeError(error) && RETRIABLE_ADAPTER_READ_CODES.has(error.code ?? '')\n );\n}\n\nasync function delay(milliseconds: number): Promise<void> {\n await new Promise<void>((resolve) => {\n setTimeout(resolve, milliseconds);\n });\n}\n","export const DEFAULT_MANCODE_START_MARKER = '<!-- mancode:start -->';\nexport const DEFAULT_MANCODE_END_MARKER = '<!-- mancode:end -->';\n\nexport function removeManagedBlock(\n existing: string,\n startMarker = DEFAULT_MANCODE_START_MARKER,\n endMarker = DEFAULT_MANCODE_END_MARKER,\n): string {\n const start = findMarkerLine(existing, startMarker);\n const end = findMarkerLine(existing, endMarker);\n\n if (start === null && end === null) return existing;\n if (start === null || end === null) return existing;\n if (end.start < start.start) return existing;\n\n const before = existing.slice(0, start.start);\n const after = existing.slice(end.end);\n const merged = `${before}${after}`;\n return cleanUpOrphanedNewlines(merged);\n}\n\nexport function hasManagedBlock(\n existing: string,\n startMarker = DEFAULT_MANCODE_START_MARKER,\n endMarker = DEFAULT_MANCODE_END_MARKER,\n): boolean {\n const start = findMarkerLine(existing, startMarker);\n const end = findMarkerLine(existing, endMarker);\n return start !== null && end !== null && end.start > start.start;\n}\n\nfunction cleanUpOrphanedNewlines(content: string): string {\n const trimmed = content.replace(/\\n{3,}/gu, '\\n\\n').replace(/\\n+$/u, '\\n');\n return trimmed || '';\n}\n\nexport function replaceManagedBlock(\n existing: string,\n block: string,\n startMarker = DEFAULT_MANCODE_START_MARKER,\n endMarker = DEFAULT_MANCODE_END_MARKER,\n): string {\n const normalizedBlock = normalizeManagedBlock(block, startMarker, endMarker);\n const start = findMarkerLine(existing, startMarker);\n const end = findMarkerLine(existing, endMarker);\n\n if ((start === null) !== (end === null)) {\n throw new Error('managed block is malformed: missing start or end marker');\n }\n\n if (start === null && end === null) {\n const trimmedExisting = trimTrailingNewlines(existing);\n if (!trimmedExisting) return `${normalizedBlock}\\n`;\n return `${trimmedExisting}\\n\\n${normalizedBlock}\\n`;\n }\n\n if (!start || !end) {\n throw new Error('managed block is malformed: missing start or end marker');\n }\n\n if (end.start < start.start) {\n throw new Error('managed block is malformed: end marker precedes start');\n }\n\n return `${existing.slice(0, start.start)}${normalizedBlock}${existing.slice(\n end.end,\n )}`;\n}\n\nfunction normalizeManagedBlock(\n block: string,\n startMarker: string,\n endMarker: string,\n): string {\n const trimmedBlock = block.trim();\n const hasStart = trimmedBlock.startsWith(startMarker);\n const hasEnd = trimmedBlock.endsWith(endMarker);\n\n if (hasStart && hasEnd) return trimmedBlock;\n if (hasStart || hasEnd) {\n throw new Error('managed block content includes only one marker');\n }\n\n return `${startMarker}\\n${trimmedBlock}\\n${endMarker}`;\n}\n\nfunction trimTrailingNewlines(value: string): string {\n return value.replace(/\\n+$/u, '');\n}\n\nfunction findMarkerLine(\n content: string,\n marker: string,\n): { start: number; end: number } | null {\n let offset = 0;\n let inFence: { char: '`' | '~'; length: number } | null = null;\n\n for (const lineWithBreak of content.matchAll(/[^\\n]*(?:\\n|$)/gu)) {\n const rawLine = lineWithBreak[0];\n if (!rawLine) break;\n\n const line = rawLine.replace(/\\n$/u, '').replace(/\\r$/u, '');\n const fence = line.match(/^(`{3,}|~{3,})/u)?.[1];\n if (fence) {\n const char = fence[0] as '`' | '~';\n if (!inFence) {\n inFence = { char, length: fence.length };\n } else if (inFence.char === char && fence.length >= inFence.length) {\n inFence = null;\n }\n } else if (!inFence && line === marker) {\n return {\n start: offset,\n end: offset + marker.length,\n };\n }\n\n offset += rawLine.length;\n }\n\n return null;\n}\n"],"mappings":"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","names":["cleaned"]}
|