@cluesmith/codev 3.3.5 → 3.3.6
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/dashboard-dist/assets/{index-r3bZzLmX.css → index-BjcqV9Vv.css} +1 -1
- package/dashboard-dist/assets/{index-BuflRUi6.js → index-b7GnZV2i.js} +55 -55
- package/dashboard-dist/assets/index-b7GnZV2i.js.map +1 -0
- package/dashboard-dist/index.html +2 -2
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +50 -17
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +5 -1
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.d.ts +1 -1
- package/dist/agent-farm/commands/attach.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +2 -1
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/decisions.d.ts +25 -0
- package/dist/agent-farm/commands/decisions.d.ts.map +1 -0
- package/dist/agent-farm/commands/decisions.js +54 -0
- package/dist/agent-farm/commands/decisions.js.map +1 -0
- package/dist/agent-farm/commands/ide.d.ts +32 -3
- package/dist/agent-farm/commands/ide.d.ts.map +1 -1
- package/dist/agent-farm/commands/ide.js +180 -19
- package/dist/agent-farm/commands/ide.js.map +1 -1
- package/dist/agent-farm/commands/reset/context.d.ts +4 -2
- package/dist/agent-farm/commands/reset/context.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset/context.js +12 -4
- package/dist/agent-farm/commands/reset/context.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +13 -18
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +7 -0
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +51 -18
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts +17 -0
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +41 -19
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/lib/builder-lookup.d.ts +3 -2
- package/dist/agent-farm/lib/builder-lookup.d.ts.map +1 -1
- package/dist/agent-farm/lib/builder-lookup.js +24 -9
- package/dist/agent-farm/lib/builder-lookup.js.map +1 -1
- package/dist/agent-farm/lib/ide-extensions.d.ts +82 -0
- package/dist/agent-farm/lib/ide-extensions.d.ts.map +1 -0
- package/dist/agent-farm/lib/ide-extensions.js +179 -0
- package/dist/agent-farm/lib/ide-extensions.js.map +1 -0
- package/dist/agent-farm/lib/ide-record.d.ts +6 -1
- package/dist/agent-farm/lib/ide-record.d.ts.map +1 -1
- package/dist/agent-farm/lib/ide-record.js +8 -1
- package/dist/agent-farm/lib/ide-record.js.map +1 -1
- package/dist/agent-farm/lib/ide-version.d.ts +97 -0
- package/dist/agent-farm/lib/ide-version.d.ts.map +1 -0
- package/dist/agent-farm/lib/ide-version.js +224 -0
- package/dist/agent-farm/lib/ide-version.js.map +1 -0
- package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.js +7 -3
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
- package/dist/agent-farm/servers/agent-state/broadcast.d.ts +19 -0
- package/dist/agent-farm/servers/agent-state/broadcast.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/broadcast.js +30 -0
- package/dist/agent-farm/servers/agent-state/broadcast.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/identity.d.ts +50 -0
- package/dist/agent-farm/servers/agent-state/identity.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/identity.js +120 -0
- package/dist/agent-farm/servers/agent-state/identity.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/liveness.d.ts +107 -0
- package/dist/agent-farm/servers/agent-state/liveness.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/liveness.js +224 -0
- package/dist/agent-farm/servers/agent-state/liveness.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/route.d.ts +38 -0
- package/dist/agent-farm/servers/agent-state/route.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/route.js +170 -0
- package/dist/agent-farm/servers/agent-state/route.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/serve.d.ts +31 -0
- package/dist/agent-farm/servers/agent-state/serve.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/serve.js +49 -0
- package/dist/agent-farm/servers/agent-state/serve.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/store.d.ts +76 -0
- package/dist/agent-farm/servers/agent-state/store.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/store.js +157 -0
- package/dist/agent-farm/servers/agent-state/store.js.map +1 -0
- package/dist/agent-farm/servers/decisions/parse.d.ts.map +1 -1
- package/dist/agent-farm/servers/decisions/parse.js +45 -15
- package/dist/agent-farm/servers/decisions/parse.js.map +1 -1
- package/dist/agent-farm/servers/decisions/stamp.d.ts +6 -2
- package/dist/agent-farm/servers/decisions/stamp.d.ts.map +1 -1
- package/dist/agent-farm/servers/decisions/stamp.js +53 -29
- package/dist/agent-farm/servers/decisions/stamp.js.map +1 -1
- package/dist/agent-farm/servers/decisions/template.d.ts +2 -0
- package/dist/agent-farm/servers/decisions/template.d.ts.map +1 -0
- package/dist/agent-farm/servers/decisions/template.js +15 -0
- package/dist/agent-farm/servers/decisions/template.js.map +1 -0
- package/dist/agent-farm/servers/ide-server.d.ts +28 -8
- package/dist/agent-farm/servers/ide-server.d.ts.map +1 -1
- package/dist/agent-farm/servers/ide-server.js +147 -50
- package/dist/agent-farm/servers/ide-server.js.map +1 -1
- package/dist/agent-farm/servers/overview.d.ts +27 -1
- package/dist/agent-farm/servers/overview.d.ts.map +1 -1
- package/dist/agent-farm/servers/overview.js +184 -31
- package/dist/agent-farm/servers/overview.js.map +1 -1
- package/dist/agent-farm/servers/tower-instances.d.ts +14 -1
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +51 -9
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +50 -9
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +35 -1
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +25 -0
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +128 -4
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +18 -5
- package/dist/agent-farm/servers/tower-utils.js.map +1 -1
- package/dist/agent-farm/utils/builder-worktree-identity.d.ts +39 -0
- package/dist/agent-farm/utils/builder-worktree-identity.d.ts.map +1 -0
- package/dist/agent-farm/utils/builder-worktree-identity.js +42 -0
- package/dist/agent-farm/utils/builder-worktree-identity.js.map +1 -0
- package/dist/agent-farm/utils/harness.d.ts +71 -0
- package/dist/agent-farm/utils/harness.d.ts.map +1 -1
- package/dist/agent-farm/utils/harness.js +153 -0
- package/dist/agent-farm/utils/harness.js.map +1 -1
- package/dist/agent-farm/utils/lifecycle-reporter.d.ts +79 -0
- package/dist/agent-farm/utils/lifecycle-reporter.d.ts.map +1 -0
- package/dist/agent-farm/utils/lifecycle-reporter.js +347 -0
- package/dist/agent-farm/utils/lifecycle-reporter.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts +16 -2
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +67 -23
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/bootstrap-docs.d.ts +132 -0
- package/dist/commands/bootstrap-docs.d.ts.map +1 -0
- package/dist/commands/bootstrap-docs.js +725 -0
- package/dist/commands/bootstrap-docs.js.map +1 -0
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +14 -1
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/consult/tree-tripwire.d.ts +2 -75
- package/dist/commands/consult/tree-tripwire.d.ts.map +1 -1
- package/dist/commands/consult/tree-tripwire.js +7 -184
- package/dist/commands/consult/tree-tripwire.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +36 -4
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/porch/state.d.ts +0 -4
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +23 -10
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/update.d.ts +5 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +73 -18
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/agent-env.d.ts +22 -1
- package/dist/lib/agent-env.d.ts.map +1 -1
- package/dist/lib/agent-env.js +27 -1
- package/dist/lib/agent-env.js.map +1 -1
- package/dist/lib/agent-process.d.ts +23 -0
- package/dist/lib/agent-process.d.ts.map +1 -0
- package/dist/lib/agent-process.js +24 -0
- package/dist/lib/agent-process.js.map +1 -0
- package/dist/lib/forge-contracts.d.ts +9 -3
- package/dist/lib/forge-contracts.d.ts.map +1 -1
- package/dist/lib/forge-contracts.js.map +1 -1
- package/dist/lib/forge.d.ts +8 -5
- package/dist/lib/forge.d.ts.map +1 -1
- package/dist/lib/forge.js +57 -1
- package/dist/lib/forge.js.map +1 -1
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +38 -0
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/governance-bootstrap.d.ts +155 -0
- package/dist/lib/governance-bootstrap.d.ts.map +1 -0
- package/dist/lib/governance-bootstrap.js +469 -0
- package/dist/lib/governance-bootstrap.js.map +1 -0
- package/dist/lib/issue-id.d.ts +34 -0
- package/dist/lib/issue-id.d.ts.map +1 -0
- package/dist/lib/issue-id.js +61 -0
- package/dist/lib/issue-id.js.map +1 -0
- package/dist/lib/scaffold.d.ts +4 -0
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +29 -5
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/lib/shipped-skill-hashes.d.ts +10 -0
- package/dist/lib/shipped-skill-hashes.d.ts.map +1 -0
- package/dist/lib/shipped-skill-hashes.js +197 -0
- package/dist/lib/shipped-skill-hashes.js.map +1 -0
- package/dist/lib/skill-refresh.d.ts +90 -0
- package/dist/lib/skill-refresh.d.ts.map +1 -0
- package/dist/lib/skill-refresh.js +267 -0
- package/dist/lib/skill-refresh.js.map +1 -0
- package/dist/lib/tree-snapshot.d.ts +172 -0
- package/dist/lib/tree-snapshot.d.ts.map +1 -0
- package/dist/lib/tree-snapshot.js +393 -0
- package/dist/lib/tree-snapshot.js.map +1 -0
- package/dist/terminal/pty-session.d.ts +5 -0
- package/dist/terminal/pty-session.d.ts.map +1 -1
- package/dist/terminal/pty-session.js +7 -0
- package/dist/terminal/pty-session.js.map +1 -1
- package/ide-extension/codev-vscode.vsix +0 -0
- package/ide-extension/manifest.json +7 -0
- package/package.json +8 -6
- package/scripts/forge/jira/_lib.sh +113 -0
- package/scripts/forge/jira/auth-status.sh +29 -0
- package/scripts/forge/jira/issue-comment.sh +23 -0
- package/scripts/forge/jira/issue-list.sh +32 -0
- package/scripts/forge/jira/issue-search.sh +40 -0
- package/scripts/forge/jira/issue-view.sh +41 -0
- package/scripts/forge/jira/recently-closed.sh +81 -0
- package/scripts/forge/jira/user-identity.sh +18 -0
- package/skeleton/.claude/skills/afx/SKILL.md +36 -0
- package/skeleton/.claude/skills/codev/SKILL.md +18 -2
- package/skeleton/.claude/skills/update-arch-docs/SKILL.md +28 -2
- package/skeleton/.codex/skills/afx/SKILL.md +36 -0
- package/skeleton/.codex/skills/codev/SKILL.md +18 -2
- package/skeleton/.codex/skills/update-arch-docs/SKILL.md +28 -2
- package/skeleton/resources/commands/agent-farm.md +112 -0
- package/skeleton/resources/commands/codev.md +47 -0
- package/skeleton/resources/commands/overview.md +1 -0
- package/skeleton/resources/decision-protocol.md +215 -0
- package/skeleton/resources/workflow-reference.md +12 -0
- package/skeleton/roles/architect.md +6 -0
- package/skeleton/templates/bootstrap-docs-prompt.md +16 -0
- package/skeleton/templates/bootstrap-docs-review-prompt.md +19 -0
- package/skeleton/templates/cheatsheet.md +1 -0
- package/dashboard-dist/assets/index-BuflRUi6.js.map +0 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude lifecycle reporter (Spec 1595).
|
|
3
|
+
*
|
|
4
|
+
* Every Claude agent Codev launches reports its lifecycle to Tower so the
|
|
5
|
+
* overview can serve working / needs-input / idle from the harness itself
|
|
6
|
+
* instead of inferring it from PTY silence. This module is the single source of
|
|
7
|
+
* truth for the Claude provider's reporter, in the shape of the write-guard
|
|
8
|
+
* (`worktree-write-guard.ts`): two generated files, installed into a
|
|
9
|
+
* codev-owned directory no agent session writes to:
|
|
10
|
+
* - `claude-lifecycle-reporter.cjs`: a dependency-free Node hook script
|
|
11
|
+
* - `claude-lifecycle-reporter-settings.json`: the hook set, handed to the harness
|
|
12
|
+
* with `--settings <path>` through `CLAUDE_HARNESS.buildLifecycleReporterInjection`
|
|
13
|
+
*
|
|
14
|
+
* The script translates Claude hook names to the harness-neutral
|
|
15
|
+
* `AgentLifecycleEvent` vocabulary, so no Claude hook name crosses the wire.
|
|
16
|
+
* Identity comes only from the launch environment (`CODEV_BUILDER_WORKTREE`, or
|
|
17
|
+
* `CODEV_ARCHITECT_WORKSPACE` with `CODEV_ARCHITECT_NAME`); with neither set it
|
|
18
|
+
* sends nothing.
|
|
19
|
+
*
|
|
20
|
+
* Fail-open by construction (SC15): every hook is `async`, the script makes one
|
|
21
|
+
* request with a sub-second deadline and no retry, writes nothing to stdout
|
|
22
|
+
* (so it can never make a permission decision), and always exits 0. The hook
|
|
23
|
+
* command is a shell wrapper that exits 0 silently even when the script is
|
|
24
|
+
* missing. Neither file embeds a secret: the local key is read at hook time.
|
|
25
|
+
*
|
|
26
|
+
* @see codev/specs/1595-agent-attention-states-working.md
|
|
27
|
+
*/
|
|
28
|
+
import { type HarnessProvider } from './harness.js';
|
|
29
|
+
/**
|
|
30
|
+
* Basename of the installed reporter script. Both files read Claude's hook payloads and settings
|
|
31
|
+
* format, so their names carry the harness: another harness's reporter installs beside them under
|
|
32
|
+
* its own names, never over them.
|
|
33
|
+
*/
|
|
34
|
+
export declare const LIFECYCLE_REPORTER_SCRIPT_NAME = "claude-lifecycle-reporter.cjs";
|
|
35
|
+
/** Basename of the installed settings file carrying the hook set. */
|
|
36
|
+
export declare const LIFECYCLE_REPORTER_SETTINGS_NAME = "claude-lifecycle-reporter-settings.json";
|
|
37
|
+
/** Seconds the harness allows each hook before abandoning it. The script itself finishes well inside it. */
|
|
38
|
+
export declare const LIFECYCLE_HOOK_TIMEOUT_SECONDS = 3;
|
|
39
|
+
/** Claude's question tool: the PreToolUse matcher and the script's question-kind test both read it. */
|
|
40
|
+
export declare const CLAUDE_QUESTION_TOOL = "AskUserQuestion";
|
|
41
|
+
/** The directory both files are installed into. */
|
|
42
|
+
export declare function lifecycleReporterDir(): string;
|
|
43
|
+
/**
|
|
44
|
+
* The self-contained Node reporter script, written verbatim to the hooks
|
|
45
|
+
* directory. A string constant so it ships with the compiled package; the unit
|
|
46
|
+
* test writes it to a temp file and runs it with fixture stdin, so the
|
|
47
|
+
* constant is the tested artifact.
|
|
48
|
+
*/
|
|
49
|
+
export declare const LIFECYCLE_REPORTER_SCRIPT = "#!/usr/bin/env node\n// AUTO-GENERATED by @cluesmith/codev (Spec 1595). Do not edit;\n// edit packages/codev/src/agent-farm/utils/lifecycle-reporter.ts instead.\n'use strict';\n\nconst fs = require('node:fs');\nconst http = require('node:http');\nconst os = require('node:os');\nconst path = require('node:path');\n\nconst QUESTION_TOOL = 'AskUserQuestion';\nconst DEFAULT_TOWER_PORT = 4100;\nconst REQUEST_DEADLINE_MS = 800;\nconst OVERALL_DEADLINE_MS = 1500;\nconst MAX_BODY_BYTES = 8192;\nconst MAX_SESSION_ID_LENGTH = 128;\nconst MAX_TOOL_LENGTH = 64;\nconst MAX_SUMMARY_LENGTH = 200;\n\nfunction done() {\n process.exit(0);\n}\n\n// Single line, control characters removed, at most maxLength UTF-16 units\n// without splitting a surrogate pair. Empty means \"omit the field\".\nfunction plainText(value, maxLength) {\n if (typeof value !== 'string') return '';\n let text = value\n .replace(/\\s*[\\r\\n\\u2028\\u2029]+\\s*/g, ' ')\n .replace(/\\t/g, ' ')\n .replace(/[\\u0000-\\u001f\\u007f-\\u009f]/g, '')\n .trim();\n if (text.length > maxLength) {\n text = text.slice(0, maxLength);\n const last = text.charCodeAt(text.length - 1);\n if (last >= 0xd800 && last <= 0xdbff) text = text.slice(0, -1);\n }\n return text;\n}\n\n// The tool's primary argument: a command's text, a path, a pattern, a URL,\n// or the question being asked.\nfunction primaryArgument(toolName, toolInput) {\n if (!toolInput || typeof toolInput !== 'object') return '';\n if (toolName === QUESTION_TOOL) {\n const questions = toolInput.questions;\n if (Array.isArray(questions) && questions[0] && typeof questions[0].question === 'string') {\n return questions[0].question;\n }\n return '';\n }\n const keys = ['command', 'file_path', 'notebook_path', 'path', 'url', 'pattern', 'query', 'description', 'prompt'];\n for (const key of keys) {\n if (typeof toolInput[key] === 'string' && toolInput[key]) return toolInput[key];\n }\n return '';\n}\n\nfunction needsInputDetail(input) {\n const toolName = typeof input.tool_name === 'string' ? input.tool_name : '';\n const detail = { kind: toolName === QUESTION_TOOL ? 'question' : 'permission' };\n const tool = plainText(toolName, MAX_TOOL_LENGTH);\n if (tool) detail.tool = tool;\n const summary = plainText(primaryArgument(toolName, input.tool_input), MAX_SUMMARY_LENGTH);\n if (summary) detail.summary = summary;\n return detail;\n}\n\n// Claude hook payload -> neutral { event, needsInput?, backgroundWork? }, or null.\nfunction translate(input) {\n switch (input.hook_event_name) {\n case 'SessionStart':\n return { event: 'session-started' };\n case 'UserPromptSubmit':\n return { event: 'turn-started' };\n case 'PostToolUse':\n return { event: 'tool-activity' };\n case 'PreToolUse':\n if (input.tool_name !== QUESTION_TOOL) return null;\n return { event: 'needs-input', needsInput: needsInputDetail(input) };\n case 'PermissionRequest':\n return { event: 'needs-input', needsInput: needsInputDetail(input) };\n case 'Notification':\n if (input.notification_type === 'permission_prompt') return { event: 'needs-input' };\n if (input.notification_type === 'elicitation_dialog') return { event: 'needs-input', needsInput: { kind: 'question' } };\n if (input.notification_type === 'idle_prompt') return { event: 'turn-ended' };\n return null;\n case 'Stop': {\n const tasks = input.background_tasks;\n return { event: 'turn-ended', backgroundWork: Array.isArray(tasks) && tasks.length > 0 };\n }\n default:\n return null;\n }\n}\n\nfunction launchIdentity() {\n const env = process.env;\n if (env.CODEV_BUILDER_WORKTREE) {\n return { kind: 'builder', worktreePath: env.CODEV_BUILDER_WORKTREE };\n }\n if (env.CODEV_ARCHITECT_WORKSPACE && env.CODEV_ARCHITECT_NAME) {\n return { kind: 'architect', workspacePath: env.CODEV_ARCHITECT_WORKSPACE, name: env.CODEV_ARCHITECT_NAME };\n }\n return null;\n}\n\nfunction towerKey() {\n const override = (process.env.CODEV_TOWER_KEY || '').trim();\n if (override) return override;\n const dir = process.env.CODEV_AGENT_FARM_DIR\n ? path.resolve(process.env.CODEV_AGENT_FARM_DIR)\n : path.join(os.homedir(), '.agent-farm');\n try {\n return fs.readFileSync(path.join(dir, 'local-key'), 'utf8').trim();\n } catch (e) {\n return '';\n }\n}\n\nfunction towerPort() {\n const port = Number.parseInt(process.env.CODEV_TOWER_PORT || '', 10);\n if (Number.isInteger(port) && port > 0 && port < 65536) return port;\n return DEFAULT_TOWER_PORT;\n}\n\nfunction post(body, key) {\n const req = http.request({\n host: '127.0.0.1',\n port: towerPort(),\n path: '/api/agent-lifecycle',\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Content-Length': Buffer.byteLength(body),\n 'codev-tower-key': key,\n },\n }, (res) => {\n res.resume();\n res.on('end', done);\n res.on('error', done);\n });\n req.on('error', done);\n setTimeout(() => {\n req.destroy();\n done();\n }, REQUEST_DEADLINE_MS);\n req.end(body);\n}\n\nfunction main(raw) {\n const at = Date.now();\n let input;\n try {\n input = JSON.parse(raw);\n } catch (e) {\n return done();\n }\n if (!input || typeof input !== 'object') return done();\n\n const agent = launchIdentity();\n if (!agent) return done();\n\n const sessionId = input.session_id;\n if (typeof sessionId !== 'string' || !sessionId || sessionId.length > MAX_SESSION_ID_LENGTH) return done();\n\n const translated = translate(input);\n if (!translated) return done();\n\n const key = towerKey();\n if (!key) return done();\n\n const event = { agent: agent, sessionId: sessionId, event: translated.event, at: at };\n if (translated.needsInput) event.needsInput = translated.needsInput;\n if (translated.backgroundWork !== undefined) event.backgroundWork = translated.backgroundWork;\n\n const body = JSON.stringify(event);\n if (Buffer.byteLength(body) > MAX_BODY_BYTES) return done();\n post(body, key);\n}\n\n// A stdin that never closes must not keep the hook alive.\nsetTimeout(done, OVERALL_DEADLINE_MS).unref();\n\nlet buf = '';\nprocess.stdin.setEncoding('utf8');\nprocess.stdin.on('data', (d) => {\n buf += d;\n});\nprocess.stdin.on('error', done);\nprocess.stdin.on('end', () => {\n try {\n main(buf);\n } catch (e) {\n done();\n }\n});\n";
|
|
50
|
+
/**
|
|
51
|
+
* The hook command, identical for every agent. A shell wrapper rather than a
|
|
52
|
+
* bare `node <path>`, so a deleted script, a missing `node` or a crash
|
|
53
|
+
* produces no output and exit 0.
|
|
54
|
+
*/
|
|
55
|
+
export declare function buildLifecycleHookCommand(scriptPath: string): string;
|
|
56
|
+
/** The settings document wiring the reporter onto every Claude hook it translates. */
|
|
57
|
+
export declare function buildLifecycleReporterSettings(scriptPath: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* Install the reporter script and its settings file, and return the absolute
|
|
60
|
+
* settings path to hand to the harness. Directory mode 0700, files 0600,
|
|
61
|
+
* set explicitly rather than left to the umask. Throws on a filesystem error;
|
|
62
|
+
* callers use `resolveLifecycleReporterInjection`, which fails open.
|
|
63
|
+
*/
|
|
64
|
+
export declare function ensureLifecycleReporterInstalled(dir?: string): string;
|
|
65
|
+
export type LifecycleReporterInjection = ReturnType<NonNullable<HarnessProvider['buildLifecycleReporterInjection']>>;
|
|
66
|
+
/**
|
|
67
|
+
* The reporter injection for a launch on `harness`, or null when the harness
|
|
68
|
+
* has no reporter or the files could not be installed. Installs (or refreshes)
|
|
69
|
+
* the files first: the harness refuses to start when its `--settings` file is
|
|
70
|
+
* missing, so the flag is only ever injected right after a successful install.
|
|
71
|
+
* A failure is logged and the agent launches without a reporter, which falls
|
|
72
|
+
* back to today's PTY-silence behavior.
|
|
73
|
+
*
|
|
74
|
+
* The installed files are Claude's (only `CLAUDE_HARNESS` carries the
|
|
75
|
+
* capability). A harness that gains a reporter (#1796) installs its own
|
|
76
|
+
* harness-named files rather than reusing these.
|
|
77
|
+
*/
|
|
78
|
+
export declare function resolveLifecycleReporterInjection(harness: HarnessProvider, dir?: string): LifecycleReporterInjection | null;
|
|
79
|
+
//# sourceMappingURL=lifecycle-reporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle-reporter.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/lifecycle-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAQH,OAAO,EAAuC,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEzF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,kCAAkC,CAAC;AAE9E,qEAAqE;AACrE,eAAO,MAAM,gCAAgC,4CAA4C,CAAC;AAE1F,4GAA4G;AAC5G,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,uGAAuG;AACvG,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAEtD,mDAAmD;AACnD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,uyMAqMrC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED,sFAAsF;AACtF,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAmBzE;AAwBD;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,GAAG,GAAE,MAA+B,GAAG,MAAM,CAQ7F;AAED,MAAM,MAAM,0BAA0B,GAAG,UAAU,CAAC,WAAW,CAAC,eAAe,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC;AAErH;;;;;;;;;;;GAWG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,eAAe,EACxB,GAAG,CAAC,EAAE,MAAM,GACX,0BAA0B,GAAG,IAAI,CAUnC"}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude lifecycle reporter (Spec 1595).
|
|
3
|
+
*
|
|
4
|
+
* Every Claude agent Codev launches reports its lifecycle to Tower so the
|
|
5
|
+
* overview can serve working / needs-input / idle from the harness itself
|
|
6
|
+
* instead of inferring it from PTY silence. This module is the single source of
|
|
7
|
+
* truth for the Claude provider's reporter, in the shape of the write-guard
|
|
8
|
+
* (`worktree-write-guard.ts`): two generated files, installed into a
|
|
9
|
+
* codev-owned directory no agent session writes to:
|
|
10
|
+
* - `claude-lifecycle-reporter.cjs`: a dependency-free Node hook script
|
|
11
|
+
* - `claude-lifecycle-reporter-settings.json`: the hook set, handed to the harness
|
|
12
|
+
* with `--settings <path>` through `CLAUDE_HARNESS.buildLifecycleReporterInjection`
|
|
13
|
+
*
|
|
14
|
+
* The script translates Claude hook names to the harness-neutral
|
|
15
|
+
* `AgentLifecycleEvent` vocabulary, so no Claude hook name crosses the wire.
|
|
16
|
+
* Identity comes only from the launch environment (`CODEV_BUILDER_WORKTREE`, or
|
|
17
|
+
* `CODEV_ARCHITECT_WORKSPACE` with `CODEV_ARCHITECT_NAME`); with neither set it
|
|
18
|
+
* sends nothing.
|
|
19
|
+
*
|
|
20
|
+
* Fail-open by construction (SC15): every hook is `async`, the script makes one
|
|
21
|
+
* request with a sub-second deadline and no retry, writes nothing to stdout
|
|
22
|
+
* (so it can never make a permission decision), and always exits 0. The hook
|
|
23
|
+
* command is a shell wrapper that exits 0 silently even when the script is
|
|
24
|
+
* missing. Neither file embeds a secret: the local key is read at hook time.
|
|
25
|
+
*
|
|
26
|
+
* @see codev/specs/1595-agent-attention-states-working.md
|
|
27
|
+
*/
|
|
28
|
+
import { chmodSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
29
|
+
import { join } from 'node:path';
|
|
30
|
+
import { randomBytes } from 'node:crypto';
|
|
31
|
+
import { AGENT_FARM_DIR } from '@cluesmith/codev-core/constants';
|
|
32
|
+
import { DEFAULT_TOWER_PORT } from '@cluesmith/codev-sdk/constants';
|
|
33
|
+
import { logger } from './logger.js';
|
|
34
|
+
import { shellEscapeSingleQuote, toShellPath } from './harness.js';
|
|
35
|
+
/**
|
|
36
|
+
* Basename of the installed reporter script. Both files read Claude's hook payloads and settings
|
|
37
|
+
* format, so their names carry the harness: another harness's reporter installs beside them under
|
|
38
|
+
* its own names, never over them.
|
|
39
|
+
*/
|
|
40
|
+
export const LIFECYCLE_REPORTER_SCRIPT_NAME = 'claude-lifecycle-reporter.cjs';
|
|
41
|
+
/** Basename of the installed settings file carrying the hook set. */
|
|
42
|
+
export const LIFECYCLE_REPORTER_SETTINGS_NAME = 'claude-lifecycle-reporter-settings.json';
|
|
43
|
+
/** Seconds the harness allows each hook before abandoning it. The script itself finishes well inside it. */
|
|
44
|
+
export const LIFECYCLE_HOOK_TIMEOUT_SECONDS = 3;
|
|
45
|
+
/** Claude's question tool: the PreToolUse matcher and the script's question-kind test both read it. */
|
|
46
|
+
export const CLAUDE_QUESTION_TOOL = 'AskUserQuestion';
|
|
47
|
+
/** The directory both files are installed into. */
|
|
48
|
+
export function lifecycleReporterDir() {
|
|
49
|
+
return join(AGENT_FARM_DIR, 'hooks');
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The self-contained Node reporter script, written verbatim to the hooks
|
|
53
|
+
* directory. A string constant so it ships with the compiled package; the unit
|
|
54
|
+
* test writes it to a temp file and runs it with fixture stdin, so the
|
|
55
|
+
* constant is the tested artifact.
|
|
56
|
+
*/
|
|
57
|
+
export const LIFECYCLE_REPORTER_SCRIPT = `#!/usr/bin/env node
|
|
58
|
+
// AUTO-GENERATED by @cluesmith/codev (Spec 1595). Do not edit;
|
|
59
|
+
// edit packages/codev/src/agent-farm/utils/lifecycle-reporter.ts instead.
|
|
60
|
+
'use strict';
|
|
61
|
+
|
|
62
|
+
const fs = require('node:fs');
|
|
63
|
+
const http = require('node:http');
|
|
64
|
+
const os = require('node:os');
|
|
65
|
+
const path = require('node:path');
|
|
66
|
+
|
|
67
|
+
const QUESTION_TOOL = '${CLAUDE_QUESTION_TOOL}';
|
|
68
|
+
const DEFAULT_TOWER_PORT = ${DEFAULT_TOWER_PORT};
|
|
69
|
+
const REQUEST_DEADLINE_MS = 800;
|
|
70
|
+
const OVERALL_DEADLINE_MS = 1500;
|
|
71
|
+
const MAX_BODY_BYTES = 8192;
|
|
72
|
+
const MAX_SESSION_ID_LENGTH = 128;
|
|
73
|
+
const MAX_TOOL_LENGTH = 64;
|
|
74
|
+
const MAX_SUMMARY_LENGTH = 200;
|
|
75
|
+
|
|
76
|
+
function done() {
|
|
77
|
+
process.exit(0);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Single line, control characters removed, at most maxLength UTF-16 units
|
|
81
|
+
// without splitting a surrogate pair. Empty means "omit the field".
|
|
82
|
+
function plainText(value, maxLength) {
|
|
83
|
+
if (typeof value !== 'string') return '';
|
|
84
|
+
let text = value
|
|
85
|
+
.replace(/\\s*[\\r\\n\\u2028\\u2029]+\\s*/g, ' ')
|
|
86
|
+
.replace(/\\t/g, ' ')
|
|
87
|
+
.replace(/[\\u0000-\\u001f\\u007f-\\u009f]/g, '')
|
|
88
|
+
.trim();
|
|
89
|
+
if (text.length > maxLength) {
|
|
90
|
+
text = text.slice(0, maxLength);
|
|
91
|
+
const last = text.charCodeAt(text.length - 1);
|
|
92
|
+
if (last >= 0xd800 && last <= 0xdbff) text = text.slice(0, -1);
|
|
93
|
+
}
|
|
94
|
+
return text;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// The tool's primary argument: a command's text, a path, a pattern, a URL,
|
|
98
|
+
// or the question being asked.
|
|
99
|
+
function primaryArgument(toolName, toolInput) {
|
|
100
|
+
if (!toolInput || typeof toolInput !== 'object') return '';
|
|
101
|
+
if (toolName === QUESTION_TOOL) {
|
|
102
|
+
const questions = toolInput.questions;
|
|
103
|
+
if (Array.isArray(questions) && questions[0] && typeof questions[0].question === 'string') {
|
|
104
|
+
return questions[0].question;
|
|
105
|
+
}
|
|
106
|
+
return '';
|
|
107
|
+
}
|
|
108
|
+
const keys = ['command', 'file_path', 'notebook_path', 'path', 'url', 'pattern', 'query', 'description', 'prompt'];
|
|
109
|
+
for (const key of keys) {
|
|
110
|
+
if (typeof toolInput[key] === 'string' && toolInput[key]) return toolInput[key];
|
|
111
|
+
}
|
|
112
|
+
return '';
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function needsInputDetail(input) {
|
|
116
|
+
const toolName = typeof input.tool_name === 'string' ? input.tool_name : '';
|
|
117
|
+
const detail = { kind: toolName === QUESTION_TOOL ? 'question' : 'permission' };
|
|
118
|
+
const tool = plainText(toolName, MAX_TOOL_LENGTH);
|
|
119
|
+
if (tool) detail.tool = tool;
|
|
120
|
+
const summary = plainText(primaryArgument(toolName, input.tool_input), MAX_SUMMARY_LENGTH);
|
|
121
|
+
if (summary) detail.summary = summary;
|
|
122
|
+
return detail;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Claude hook payload -> neutral { event, needsInput?, backgroundWork? }, or null.
|
|
126
|
+
function translate(input) {
|
|
127
|
+
switch (input.hook_event_name) {
|
|
128
|
+
case 'SessionStart':
|
|
129
|
+
return { event: 'session-started' };
|
|
130
|
+
case 'UserPromptSubmit':
|
|
131
|
+
return { event: 'turn-started' };
|
|
132
|
+
case 'PostToolUse':
|
|
133
|
+
return { event: 'tool-activity' };
|
|
134
|
+
case 'PreToolUse':
|
|
135
|
+
if (input.tool_name !== QUESTION_TOOL) return null;
|
|
136
|
+
return { event: 'needs-input', needsInput: needsInputDetail(input) };
|
|
137
|
+
case 'PermissionRequest':
|
|
138
|
+
return { event: 'needs-input', needsInput: needsInputDetail(input) };
|
|
139
|
+
case 'Notification':
|
|
140
|
+
if (input.notification_type === 'permission_prompt') return { event: 'needs-input' };
|
|
141
|
+
if (input.notification_type === 'elicitation_dialog') return { event: 'needs-input', needsInput: { kind: 'question' } };
|
|
142
|
+
if (input.notification_type === 'idle_prompt') return { event: 'turn-ended' };
|
|
143
|
+
return null;
|
|
144
|
+
case 'Stop': {
|
|
145
|
+
const tasks = input.background_tasks;
|
|
146
|
+
return { event: 'turn-ended', backgroundWork: Array.isArray(tasks) && tasks.length > 0 };
|
|
147
|
+
}
|
|
148
|
+
default:
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function launchIdentity() {
|
|
154
|
+
const env = process.env;
|
|
155
|
+
if (env.CODEV_BUILDER_WORKTREE) {
|
|
156
|
+
return { kind: 'builder', worktreePath: env.CODEV_BUILDER_WORKTREE };
|
|
157
|
+
}
|
|
158
|
+
if (env.CODEV_ARCHITECT_WORKSPACE && env.CODEV_ARCHITECT_NAME) {
|
|
159
|
+
return { kind: 'architect', workspacePath: env.CODEV_ARCHITECT_WORKSPACE, name: env.CODEV_ARCHITECT_NAME };
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function towerKey() {
|
|
165
|
+
const override = (process.env.CODEV_TOWER_KEY || '').trim();
|
|
166
|
+
if (override) return override;
|
|
167
|
+
const dir = process.env.CODEV_AGENT_FARM_DIR
|
|
168
|
+
? path.resolve(process.env.CODEV_AGENT_FARM_DIR)
|
|
169
|
+
: path.join(os.homedir(), '.agent-farm');
|
|
170
|
+
try {
|
|
171
|
+
return fs.readFileSync(path.join(dir, 'local-key'), 'utf8').trim();
|
|
172
|
+
} catch (e) {
|
|
173
|
+
return '';
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function towerPort() {
|
|
178
|
+
const port = Number.parseInt(process.env.CODEV_TOWER_PORT || '', 10);
|
|
179
|
+
if (Number.isInteger(port) && port > 0 && port < 65536) return port;
|
|
180
|
+
return DEFAULT_TOWER_PORT;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function post(body, key) {
|
|
184
|
+
const req = http.request({
|
|
185
|
+
host: '127.0.0.1',
|
|
186
|
+
port: towerPort(),
|
|
187
|
+
path: '/api/agent-lifecycle',
|
|
188
|
+
method: 'POST',
|
|
189
|
+
headers: {
|
|
190
|
+
'Content-Type': 'application/json',
|
|
191
|
+
'Content-Length': Buffer.byteLength(body),
|
|
192
|
+
'codev-tower-key': key,
|
|
193
|
+
},
|
|
194
|
+
}, (res) => {
|
|
195
|
+
res.resume();
|
|
196
|
+
res.on('end', done);
|
|
197
|
+
res.on('error', done);
|
|
198
|
+
});
|
|
199
|
+
req.on('error', done);
|
|
200
|
+
setTimeout(() => {
|
|
201
|
+
req.destroy();
|
|
202
|
+
done();
|
|
203
|
+
}, REQUEST_DEADLINE_MS);
|
|
204
|
+
req.end(body);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
function main(raw) {
|
|
208
|
+
const at = Date.now();
|
|
209
|
+
let input;
|
|
210
|
+
try {
|
|
211
|
+
input = JSON.parse(raw);
|
|
212
|
+
} catch (e) {
|
|
213
|
+
return done();
|
|
214
|
+
}
|
|
215
|
+
if (!input || typeof input !== 'object') return done();
|
|
216
|
+
|
|
217
|
+
const agent = launchIdentity();
|
|
218
|
+
if (!agent) return done();
|
|
219
|
+
|
|
220
|
+
const sessionId = input.session_id;
|
|
221
|
+
if (typeof sessionId !== 'string' || !sessionId || sessionId.length > MAX_SESSION_ID_LENGTH) return done();
|
|
222
|
+
|
|
223
|
+
const translated = translate(input);
|
|
224
|
+
if (!translated) return done();
|
|
225
|
+
|
|
226
|
+
const key = towerKey();
|
|
227
|
+
if (!key) return done();
|
|
228
|
+
|
|
229
|
+
const event = { agent: agent, sessionId: sessionId, event: translated.event, at: at };
|
|
230
|
+
if (translated.needsInput) event.needsInput = translated.needsInput;
|
|
231
|
+
if (translated.backgroundWork !== undefined) event.backgroundWork = translated.backgroundWork;
|
|
232
|
+
|
|
233
|
+
const body = JSON.stringify(event);
|
|
234
|
+
if (Buffer.byteLength(body) > MAX_BODY_BYTES) return done();
|
|
235
|
+
post(body, key);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// A stdin that never closes must not keep the hook alive.
|
|
239
|
+
setTimeout(done, OVERALL_DEADLINE_MS).unref();
|
|
240
|
+
|
|
241
|
+
let buf = '';
|
|
242
|
+
process.stdin.setEncoding('utf8');
|
|
243
|
+
process.stdin.on('data', (d) => {
|
|
244
|
+
buf += d;
|
|
245
|
+
});
|
|
246
|
+
process.stdin.on('error', done);
|
|
247
|
+
process.stdin.on('end', () => {
|
|
248
|
+
try {
|
|
249
|
+
main(buf);
|
|
250
|
+
} catch (e) {
|
|
251
|
+
done();
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
`;
|
|
255
|
+
/**
|
|
256
|
+
* The hook command, identical for every agent. A shell wrapper rather than a
|
|
257
|
+
* bare `node <path>`, so a deleted script, a missing `node` or a crash
|
|
258
|
+
* produces no output and exit 0.
|
|
259
|
+
*/
|
|
260
|
+
export function buildLifecycleHookCommand(scriptPath) {
|
|
261
|
+
const script = `'${shellEscapeSingleQuote(toShellPath(scriptPath))}'`;
|
|
262
|
+
return `[ -f ${script} ] && node ${script} >/dev/null 2>&1; exit 0`;
|
|
263
|
+
}
|
|
264
|
+
/** The settings document wiring the reporter onto every Claude hook it translates. */
|
|
265
|
+
export function buildLifecycleReporterSettings(scriptPath) {
|
|
266
|
+
const hook = {
|
|
267
|
+
type: 'command',
|
|
268
|
+
command: buildLifecycleHookCommand(scriptPath),
|
|
269
|
+
async: true,
|
|
270
|
+
timeout: LIFECYCLE_HOOK_TIMEOUT_SECONDS,
|
|
271
|
+
};
|
|
272
|
+
const settings = {
|
|
273
|
+
hooks: {
|
|
274
|
+
SessionStart: [{ hooks: [hook] }],
|
|
275
|
+
UserPromptSubmit: [{ hooks: [hook] }],
|
|
276
|
+
PostToolUse: [{ matcher: '*', hooks: [hook] }],
|
|
277
|
+
PreToolUse: [{ matcher: CLAUDE_QUESTION_TOOL, hooks: [hook] }],
|
|
278
|
+
PermissionRequest: [{ matcher: '*', hooks: [hook] }],
|
|
279
|
+
Notification: [{ hooks: [hook] }],
|
|
280
|
+
Stop: [{ hooks: [hook] }],
|
|
281
|
+
},
|
|
282
|
+
};
|
|
283
|
+
return JSON.stringify(settings, null, 2) + '\n';
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Write `content` to `path` with mode 0600 through a temp file and a rename,
|
|
287
|
+
* only when it differs from what is there. The mode is enforced either way, so
|
|
288
|
+
* a file left with a wider mode is tightened.
|
|
289
|
+
*/
|
|
290
|
+
function writeFileIfChanged(path, content) {
|
|
291
|
+
let current = null;
|
|
292
|
+
try {
|
|
293
|
+
current = readFileSync(path, 'utf8');
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
current = null;
|
|
297
|
+
}
|
|
298
|
+
if (current === content) {
|
|
299
|
+
chmodSync(path, 0o600);
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
const temp = `${path}.${process.pid}.${randomBytes(4).toString('hex')}.tmp`;
|
|
303
|
+
writeFileSync(temp, content, { mode: 0o600 });
|
|
304
|
+
chmodSync(temp, 0o600);
|
|
305
|
+
renameSync(temp, path);
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Install the reporter script and its settings file, and return the absolute
|
|
309
|
+
* settings path to hand to the harness. Directory mode 0700, files 0600,
|
|
310
|
+
* set explicitly rather than left to the umask. Throws on a filesystem error;
|
|
311
|
+
* callers use `resolveLifecycleReporterInjection`, which fails open.
|
|
312
|
+
*/
|
|
313
|
+
export function ensureLifecycleReporterInstalled(dir = lifecycleReporterDir()) {
|
|
314
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
315
|
+
chmodSync(dir, 0o700);
|
|
316
|
+
const scriptPath = join(dir, LIFECYCLE_REPORTER_SCRIPT_NAME);
|
|
317
|
+
const settingsPath = join(dir, LIFECYCLE_REPORTER_SETTINGS_NAME);
|
|
318
|
+
writeFileIfChanged(scriptPath, LIFECYCLE_REPORTER_SCRIPT);
|
|
319
|
+
writeFileIfChanged(settingsPath, buildLifecycleReporterSettings(scriptPath));
|
|
320
|
+
return settingsPath;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* The reporter injection for a launch on `harness`, or null when the harness
|
|
324
|
+
* has no reporter or the files could not be installed. Installs (or refreshes)
|
|
325
|
+
* the files first: the harness refuses to start when its `--settings` file is
|
|
326
|
+
* missing, so the flag is only ever injected right after a successful install.
|
|
327
|
+
* A failure is logged and the agent launches without a reporter, which falls
|
|
328
|
+
* back to today's PTY-silence behavior.
|
|
329
|
+
*
|
|
330
|
+
* The installed files are Claude's (only `CLAUDE_HARNESS` carries the
|
|
331
|
+
* capability). A harness that gains a reporter (#1796) installs its own
|
|
332
|
+
* harness-named files rather than reusing these.
|
|
333
|
+
*/
|
|
334
|
+
export function resolveLifecycleReporterInjection(harness, dir) {
|
|
335
|
+
if (!harness.buildLifecycleReporterInjection)
|
|
336
|
+
return null;
|
|
337
|
+
let settingsPath;
|
|
338
|
+
try {
|
|
339
|
+
settingsPath = ensureLifecycleReporterInstalled(dir);
|
|
340
|
+
}
|
|
341
|
+
catch (err) {
|
|
342
|
+
logger.warn(`Lifecycle reporter not installed; launching without it: ${err instanceof Error ? err.message : String(err)}`);
|
|
343
|
+
return null;
|
|
344
|
+
}
|
|
345
|
+
return harness.buildLifecycleReporterInjection(settingsPath);
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=lifecycle-reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle-reporter.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/lifecycle-reporter.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;GAEG;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;GAEG;AA0WH;;;;GAIG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvD"}
|
package/dist/cli.js
CHANGED
|
@@ -82,6 +82,22 @@ program
|
|
|
82
82
|
process.exit(1);
|
|
83
83
|
}
|
|
84
84
|
});
|
|
85
|
+
// Bootstrap-docs command (Spec 1797). Deliberately no -y: it always confirms before
|
|
86
|
+
// launching an agent.
|
|
87
|
+
program
|
|
88
|
+
.command('bootstrap-docs')
|
|
89
|
+
.description('Draft the governance docs (arch/lessons, hot + cold) from this codebase')
|
|
90
|
+
.option('-n, --dry-run', 'Report which files are eligible and what would launch, without launching')
|
|
91
|
+
.action(async (options) => {
|
|
92
|
+
try {
|
|
93
|
+
const { bootstrapDocs } = await import('./commands/bootstrap-docs.js');
|
|
94
|
+
process.exitCode = await bootstrapDocs({ dryRun: options.dryRun });
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
85
101
|
// Update command
|
|
86
102
|
program
|
|
87
103
|
.command('update')
|
|
@@ -115,6 +131,7 @@ program
|
|
|
115
131
|
? 'For each conflict, merge the .codev-new file into the original. Preserve user customizations and incorporate new sections from .codev-new. Delete the .codev-new file after merging.'
|
|
116
132
|
: null,
|
|
117
133
|
commit: `Stage and commit all changed files with message: '[Maintenance] Update codev to v${version}'`,
|
|
134
|
+
bootstrapDocs: result.bootstrapDocsHint ?? null,
|
|
118
135
|
},
|
|
119
136
|
...(result.error ? { error: result.error } : {}),
|
|
120
137
|
};
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,oBAAoB,IAAI,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;;GAGG;AACH,SAAS,gBAAgB;IACvB,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAC;QACtG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,QAAQ;QAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAE7C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,WAAW,EAAE,gCAAgC,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;IACrC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;KAC5C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,oFAAoF;AACpF,sBAAsB;AACtB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,yEAAyE,CAAC;KACtF,MAAM,CAAC,eAAe,EAAE,0EAA0E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;QACvE,OAAO,CAAC,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,eAAe,EAAE,+BAA+B,CAAC;KACxD,MAAM,CAAC,aAAa,EAAE,mCAAmC,CAAC;KAC1D,MAAM,CAAC,aAAa,EAAE,6CAA6C,CAAC;KACpE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACpG,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,OAAO;gBACrB,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK;gBACtB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;gBACxB,OAAO,EAAE;oBACP,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;oBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;oBAC9B,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM;oBAChE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;iBAC/B;gBACD,KAAK,EAAE;oBACL,GAAG,EAAE,MAAM,CAAC,QAAQ;oBACpB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;iBAC1D;gBACD,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oBAClC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;wBAClE,CAAC,CAAC,sLAAsL;wBACxL,CAAC,CAAC,IAAI;oBACR,MAAM,EAAE,oFAAoF,OAAO,GAAG;oBACtG,aAAa,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;iBAChD;gBACD,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjD,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACpC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,OAAO;gBACrB,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;gBACxB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;gBACzD,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;gBAC3D,YAAY,EAAE,IAAI;aACnB,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,aAAa,EAAE,wCAAwC,CAAC;KAC/D,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC;KAClD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,kBAAkB;AAClB,gGAAgG;AAChG,yDAAyD;AACzD,sBAAsB,CACpB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,sCAAsC,CAAC;KACnD,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAC/C;KACE,kBAAkB,CAAC,IAAI,CAAC;KACxB,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;IACpC,IAAI,CAAC;QACH,2CAA2C;QAC3C,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,oDAAoD;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YAClF,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,oCAAoC;QACpC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,iEAAiE;QACjE,mEAAmE;QACnE,mEAAmE;QACnE,oEAAoE;QACpE,wDAAwD;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,wCAAwC;AACxC,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,mDAAmD,CAAC;KAChE,QAAQ,CAAC,cAAc,EAAE,sDAAsD,CAAC;KAChF,QAAQ,CAAC,WAAW,EAAE,8BAA8B,CAAC;KACrD,kBAAkB,EAAE;KACpB,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;IACjC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,oDAAoD,CAAC;KAC7E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,yBAAyB;AACzB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,mFAAmF,CAAC;KAChG,QAAQ,CAAC,UAAU,EAAE,kCAAkC,CAAC;KACxD,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,YAAY,CAAC;KAC/D,MAAM,CAAC,wBAAwB,EAAE,2BAA2B,EAAE,IAAI,CAAC;KACnE,MAAM,CAAC,sBAAsB,EAAE,mDAAmD,EAAE,KAAK,CAAC;KAC1F,MAAM,CAAC,iBAAiB,EAAE,6DAA6D,CAAC;KACxF,MAAM,CAAC,uBAAuB,EAAE,yEAAyE,EAAE,QAAQ,CAAC;KACpH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,MAAM,EAAE;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,gDAAgD;AAChD,MAAM,OAAO,GAAG,OAAO;KACpB,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iDAAiD,CAAC,CAAC;AAElE,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,gBAAgB,EAAE,CAAC;QACnB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QACnE,MAAM,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,qBAAqB,EAAE,oDAAoD,CAAC;KACnF,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA4B,EAAE,EAAE;IAC3D,IAAI,CAAC;QACH,gBAAgB,EAAE,CAAC;QACnB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QACtE,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,gBAAgB,EAAE,CAAC;QACnB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,sCAAsC,CAAC,CAAC;QAC5E,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;KACjE,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAyC,EAAE,EAAE;IAC1E,IAAI,CAAC;QACH,gBAAgB,EAAE,CAAC;QACnB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAClE,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,sFAAsF;AACtF,2FAA2F;AAC3F,sFAAsF;AACtF,iFAAiF;AACjF,iFAAiF;AAEjF,6EAA6E;AAC7E,wDAAwD;AACxD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACnD,IAAI,aAAa,EAAE,CAAC;IAClB,MAAM,WAAW,GAAG,EAAE,YAAY,EAAE,CAAC,GAAgD,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;IAC3H,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,aAAa,EAAE,CAAC;YACjC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAc;IACtC,qDAAqD;IACrD,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5C,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,iCAAiC;AACjC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAEtC,IAAI,YAAY,EAAE,CAAC;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,8EAA8E;IAC9E,4EAA4E;IAC5E,uEAAuE;IACvE,+EAA+E;IAC/E,iFAAiF;IACjF,2EAA2E;IAC3E,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,oCAAoC,IAAI,gBAAgB,CAAC,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/C,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/commands/adopt.d.ts
CHANGED
|
@@ -5,12 +5,26 @@
|
|
|
5
5
|
* provider skills, root instructions, and governance starters from the
|
|
6
6
|
* embedded skeleton. Framework files resolve from the package at runtime.
|
|
7
7
|
*/
|
|
8
|
+
import { type AgentExit } from '../lib/agent-process.js';
|
|
8
9
|
interface AdoptOptions {
|
|
9
10
|
yes?: boolean;
|
|
10
11
|
}
|
|
12
|
+
/** Seams for tests: every prompt and every child session is replaceable. */
|
|
13
|
+
export interface AdoptDeps {
|
|
14
|
+
confirm(question: string, defaultYes: boolean): Promise<boolean>;
|
|
15
|
+
/** Run the interactive conflict-merge session and wait for it to exit. */
|
|
16
|
+
runMergeSession(prompt: string, cwd: string): Promise<AgentExit>;
|
|
17
|
+
/** Whether `codev bootstrap-docs` has eligible files and something to document. */
|
|
18
|
+
shouldOfferBootstrap(root: string): boolean;
|
|
19
|
+
/** Run the bootstrap pass (it shows its own launch statement and confirm); returns its exit code. */
|
|
20
|
+
runBootstrap(root: string): Promise<number>;
|
|
21
|
+
}
|
|
11
22
|
/**
|
|
12
|
-
* Add codev to an existing project
|
|
23
|
+
* Add codev to an existing project.
|
|
24
|
+
*
|
|
25
|
+
* Once adoption succeeds, a bootstrap pass the human ran never fails adopt: its problems are
|
|
26
|
+
* in its own summary (`codev bootstrap-docs` run directly keeps its non-zero exit).
|
|
13
27
|
*/
|
|
14
|
-
export declare function adopt(options?: AdoptOptions): Promise<void>;
|
|
28
|
+
export declare function adopt(options?: AdoptOptions, overrides?: Partial<AdoptDeps>): Promise<void>;
|
|
15
29
|
export {};
|
|
16
30
|
//# sourceMappingURL=adopt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adopt.d.ts","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"adopt.d.ts","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAW5E,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,4EAA4E;AAC5E,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,0EAA0E;IAC1E,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACjE,mFAAmF;IACnF,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5C,qGAAqG;IACrG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C;AAiDD;;;;;GAKG;AACH,wBAAsB,KAAK,CAAC,OAAO,GAAE,YAAiB,EAAE,SAAS,GAAE,OAAO,CAAC,SAAS,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiNzG"}
|