@neurcode-ai/cli 0.19.8 → 0.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/api-client.d.ts +4 -0
  2. package/dist/api-client.d.ts.map +1 -1
  3. package/dist/api-client.js.map +1 -1
  4. package/dist/commands/activate.d.ts +6 -0
  5. package/dist/commands/activate.d.ts.map +1 -1
  6. package/dist/commands/activate.js +24 -0
  7. package/dist/commands/activate.js.map +1 -1
  8. package/dist/commands/brain.d.ts.map +1 -1
  9. package/dist/commands/brain.js +114 -17
  10. package/dist/commands/brain.js.map +1 -1
  11. package/dist/commands/runtime-doctor.d.ts.map +1 -1
  12. package/dist/commands/runtime-doctor.js +41 -2
  13. package/dist/commands/runtime-doctor.js.map +1 -1
  14. package/dist/commands/runtime-identity.d.ts.map +1 -1
  15. package/dist/commands/runtime-identity.js +46 -1
  16. package/dist/commands/runtime-identity.js.map +1 -1
  17. package/dist/commands/runtime-sync.d.ts.map +1 -1
  18. package/dist/commands/runtime-sync.js +55 -0
  19. package/dist/commands/runtime-sync.js.map +1 -1
  20. package/dist/commands/session-hook.d.ts +16 -1
  21. package/dist/commands/session-hook.d.ts.map +1 -1
  22. package/dist/commands/session-hook.js +165 -10
  23. package/dist/commands/session-hook.js.map +1 -1
  24. package/dist/commands/session.d.ts +4 -1
  25. package/dist/commands/session.d.ts.map +1 -1
  26. package/dist/commands/session.js +39 -17
  27. package/dist/commands/session.js.map +1 -1
  28. package/dist/index.js +36 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/runtime-build.json +5 -5
  31. package/dist/utils/RelevanceScorer.d.ts.map +1 -1
  32. package/dist/utils/RelevanceScorer.js +16 -9
  33. package/dist/utils/RelevanceScorer.js.map +1 -1
  34. package/dist/utils/agent-session-launcher.d.ts.map +1 -1
  35. package/dist/utils/agent-session-launcher.js +142 -97
  36. package/dist/utils/agent-session-launcher.js.map +1 -1
  37. package/dist/utils/brain-lifecycle.d.ts +62 -0
  38. package/dist/utils/brain-lifecycle.d.ts.map +1 -0
  39. package/dist/utils/brain-lifecycle.js +482 -0
  40. package/dist/utils/brain-lifecycle.js.map +1 -0
  41. package/dist/utils/cli-startup.d.ts.map +1 -1
  42. package/dist/utils/cli-startup.js +20 -0
  43. package/dist/utils/cli-startup.js.map +1 -1
  44. package/dist/utils/command-budget.d.ts +10 -0
  45. package/dist/utils/command-budget.d.ts.map +1 -0
  46. package/dist/utils/command-budget.js +203 -0
  47. package/dist/utils/command-budget.js.map +1 -0
  48. package/dist/utils/mcp-server-pin.d.ts +1 -1
  49. package/dist/utils/mcp-server-pin.js +2 -2
  50. package/dist/utils/runtime-authority.d.ts +27 -0
  51. package/dist/utils/runtime-authority.d.ts.map +1 -0
  52. package/dist/utils/runtime-authority.js +162 -0
  53. package/dist/utils/runtime-authority.js.map +1 -0
  54. package/dist/utils/runtime-companion.d.ts +32 -0
  55. package/dist/utils/runtime-companion.d.ts.map +1 -1
  56. package/dist/utils/runtime-companion.js +57 -2
  57. package/dist/utils/runtime-companion.js.map +1 -1
  58. package/dist/utils/runtime-live.d.ts.map +1 -1
  59. package/dist/utils/runtime-live.js +14 -6
  60. package/dist/utils/runtime-live.js.map +1 -1
  61. package/dist/utils/runtime-outbox.d.ts.map +1 -1
  62. package/dist/utils/runtime-outbox.js +133 -1
  63. package/dist/utils/runtime-outbox.js.map +1 -1
  64. package/dist/utils/runtime-privacy.d.ts.map +1 -1
  65. package/dist/utils/runtime-privacy.js +52 -0
  66. package/dist/utils/runtime-privacy.js.map +1 -1
  67. package/dist/utils/runtime-state.d.ts +7 -35
  68. package/dist/utils/runtime-state.d.ts.map +1 -1
  69. package/dist/utils/runtime-state.js +203 -134
  70. package/dist/utils/runtime-state.js.map +1 -1
  71. package/dist/utils/session-start-transaction.d.ts +31 -0
  72. package/dist/utils/session-start-transaction.d.ts.map +1 -0
  73. package/dist/utils/session-start-transaction.js +207 -0
  74. package/dist/utils/session-start-transaction.js.map +1 -0
  75. package/dist/utils/v0-governance.d.ts +2 -1
  76. package/dist/utils/v0-governance.d.ts.map +1 -1
  77. package/dist/utils/v0-governance.js +271 -11
  78. package/dist/utils/v0-governance.js.map +1 -1
  79. package/package.json +6 -4
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COMMAND_BUDGETS = void 0;
4
+ exports.maybeRunBoundedCliCommand = maybeRunBoundedCliCommand;
5
+ const node_child_process_1 = require("node:child_process");
6
+ const node_path_1 = require("node:path");
7
+ const session_start_transaction_1 = require("./session-start-transaction");
8
+ exports.COMMAND_BUDGETS = {
9
+ run_agent: {
10
+ budgetMs: 60_000,
11
+ recoveryCommand: 'neurcode doctor --runtime --json',
12
+ phases: ['initializing_runtime', 'fingerprinting_profile', 'persisting_deferred_session', 'shaping_session', 'activating_session', 'reconciling_cloud'],
13
+ sessionStart: true,
14
+ },
15
+ session_hook_start: {
16
+ budgetMs: 45_000,
17
+ recoveryCommand: 'neurcode doctor --runtime --json',
18
+ phases: ['initializing_runtime', 'fingerprinting_profile', 'persisting_deferred_session', 'shaping_session', 'activating_session', 'reconciling_cloud'],
19
+ sessionStart: true,
20
+ },
21
+ session_hook_approve: {
22
+ budgetMs: 12_000,
23
+ recoveryCommand: 'neurcode session status --local --json',
24
+ phases: ['loading_session', 'persisting_exact_approval', 'reconciling_cloud'],
25
+ sessionStart: false,
26
+ },
27
+ session_status: {
28
+ budgetMs: 8_000,
29
+ recoveryCommand: 'neurcode doctor --runtime --json',
30
+ phases: ['loading_session', 'checking_profile_fingerprint', 'projecting_runtime_state'],
31
+ sessionStart: false,
32
+ },
33
+ runtime_report: {
34
+ budgetMs: 12_000,
35
+ recoveryCommand: 'neurcode report --runtime --since 24h --format json',
36
+ phases: ['enumerating_session_records', 'building_source_free_report', 'rendering_report'],
37
+ sessionStart: false,
38
+ },
39
+ runtime_doctor: {
40
+ budgetMs: 12_000,
41
+ recoveryCommand: 'neurcode doctor --runtime --json',
42
+ phases: ['checking_installation', 'checking_profile_fingerprint', 'classifying_runtime_state'],
43
+ sessionStart: false,
44
+ },
45
+ cloud_status: {
46
+ budgetMs: 8_000,
47
+ recoveryCommand: 'neurcode runtime cloud-status --json',
48
+ phases: ['loading_local_projection', 'contacting_runtime_backend', 'rendering_cloud_status'],
49
+ sessionStart: false,
50
+ },
51
+ };
52
+ function commandKey(argv) {
53
+ if (argv[0] === 'run')
54
+ return 'run_agent';
55
+ if (argv[0] === 'session-hook' && argv.includes('start'))
56
+ return 'session_hook_start';
57
+ if (argv[0] === 'session-hook' && argv.includes('approve'))
58
+ return 'session_hook_approve';
59
+ if (argv[0] === 'status')
60
+ return 'session_status';
61
+ if (argv[0] === 'session' && argv[1] === 'status')
62
+ return 'session_status';
63
+ if (argv[0] === 'report' && argv.includes('--runtime'))
64
+ return 'runtime_report';
65
+ if (argv[0] === 'doctor' && argv.includes('--runtime'))
66
+ return 'runtime_doctor';
67
+ if (argv[0] === 'runtime' && argv[1] === 'cloud-status')
68
+ return 'cloud_status';
69
+ return null;
70
+ }
71
+ function optionValue(argv, option) {
72
+ const index = argv.indexOf(option);
73
+ if (index < 0 || index + 1 >= argv.length)
74
+ return null;
75
+ return argv[index + 1] || null;
76
+ }
77
+ function budgetFor(key) {
78
+ const envKey = `NEURCODE_COMMAND_BUDGET_MS_${key.toUpperCase()}`;
79
+ const configured = Number(process.env[envKey]);
80
+ if (Number.isSafeInteger(configured) && configured >= 100)
81
+ return configured;
82
+ return exports.COMMAND_BUDGETS[key].budgetMs;
83
+ }
84
+ function terminateOwnedProcessGroup(pid) {
85
+ try {
86
+ process.kill(-pid, 'SIGTERM');
87
+ }
88
+ catch {
89
+ try {
90
+ process.kill(pid, 'SIGTERM');
91
+ }
92
+ catch { /* already gone */ }
93
+ }
94
+ const timer = setTimeout(() => {
95
+ try {
96
+ process.kill(-pid, 'SIGKILL');
97
+ }
98
+ catch {
99
+ try {
100
+ process.kill(pid, 'SIGKILL');
101
+ }
102
+ catch { /* already gone */ }
103
+ }
104
+ }, 500);
105
+ timer.unref();
106
+ }
107
+ async function maybeRunBoundedCliCommand(argv) {
108
+ if (process.env.NEURCODE_BOUNDED_COMMAND_CHILD === '1') {
109
+ const testHangMs = process.env.NODE_ENV === 'test'
110
+ ? Number(process.env.NEURCODE_TEST_BOUNDED_COMMAND_HANG_MS)
111
+ : Number.NaN;
112
+ if (Number.isSafeInteger(testHangMs) && testHangMs > 0) {
113
+ await new Promise((resolveDelay) => setTimeout(resolveDelay, testHangMs));
114
+ }
115
+ return false;
116
+ }
117
+ const key = commandKey(argv);
118
+ if (!key)
119
+ return false;
120
+ const definition = exports.COMMAND_BUDGETS[key];
121
+ const budgetMs = budgetFor(key);
122
+ const repoRoot = (0, node_path_1.resolve)(optionValue(argv, '--dir') || process.cwd());
123
+ const startedAt = Date.now();
124
+ const maxOutputBytes = 8 * 1024 * 1024;
125
+ let stdout = Buffer.alloc(0);
126
+ let stderr = Buffer.alloc(0);
127
+ let timedOut = false;
128
+ let outputOverflow = false;
129
+ const child = (0, node_child_process_1.spawn)(process.execPath, [...process.execArgv, process.argv[1], ...argv], {
130
+ cwd: process.cwd(),
131
+ detached: process.platform !== 'win32',
132
+ stdio: ['inherit', 'pipe', 'pipe'],
133
+ env: {
134
+ ...process.env,
135
+ NEURCODE_BOUNDED_COMMAND_CHILD: '1',
136
+ NEURCODE_BOUNDED_COMMAND_KEY: key,
137
+ },
138
+ });
139
+ child.stdout.on('data', (chunk) => {
140
+ if (stdout.length + chunk.length > maxOutputBytes) {
141
+ outputOverflow = true;
142
+ terminateOwnedProcessGroup(child.pid);
143
+ return;
144
+ }
145
+ stdout = Buffer.concat([stdout, chunk]);
146
+ });
147
+ child.stderr.on('data', (chunk) => {
148
+ if (stderr.length + chunk.length > maxOutputBytes) {
149
+ outputOverflow = true;
150
+ terminateOwnedProcessGroup(child.pid);
151
+ return;
152
+ }
153
+ stderr = Buffer.concat([stderr, chunk]);
154
+ });
155
+ const timeout = setTimeout(() => {
156
+ timedOut = true;
157
+ if (child.pid)
158
+ terminateOwnedProcessGroup(child.pid);
159
+ }, budgetMs);
160
+ timeout.unref();
161
+ const exit = await new Promise((done) => {
162
+ child.once('error', () => done({ code: 1, signal: null }));
163
+ child.once('exit', (code, signal) => done({ code, signal }));
164
+ });
165
+ clearTimeout(timeout);
166
+ if (!timedOut && !outputOverflow) {
167
+ if (stdout.length > 0)
168
+ process.stdout.write(stdout);
169
+ if (stderr.length > 0)
170
+ process.stderr.write(stderr);
171
+ process.exitCode = exit.code ?? (exit.signal ? 1 : 0);
172
+ return true;
173
+ }
174
+ const transaction = (0, session_start_transaction_1.inspectSessionStartTransaction)(repoRoot);
175
+ const recovery = definition.sessionStart && child.pid
176
+ ? (0, session_start_transaction_1.recoverTimedOutSessionStart)(repoRoot, child.pid)
177
+ : { recovered: false, phase: transaction?.phase ?? null };
178
+ const payload = {
179
+ ok: false,
180
+ status: 'attention_required',
181
+ reasonCode: outputOverflow ? 'command_output_budget_exceeded' : 'command_budget_exceeded',
182
+ command: key,
183
+ budgetMs,
184
+ elapsedMs: Date.now() - startedAt,
185
+ phases: definition.phases,
186
+ lastPhase: recovery.phase,
187
+ recoveryCommand: definition.recoveryCommand,
188
+ cleanup: {
189
+ ownedWorkerTerminated: true,
190
+ partialSessionRecovered: recovery.recovered,
191
+ unresolvedDecisionsPreserved: true,
192
+ },
193
+ privacy: {
194
+ metadataOnly: true,
195
+ sourceUploaded: false,
196
+ sourceIncluded: false,
197
+ },
198
+ };
199
+ process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
200
+ process.exitCode = 2;
201
+ return true;
202
+ }
203
+ //# sourceMappingURL=command-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-budget.js","sourceRoot":"","sources":["../../src/utils/command-budget.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export declare const MCP_SERVER_PACKAGE: "@neurcode-ai/mcp-server";
2
- export declare const MIN_MCP_SERVER_VERSION: "0.2.5";
2
+ export declare const MIN_MCP_SERVER_VERSION: "0.3.1";
3
3
  /** Legacy relative paths fail when Cursor MCP cwd is not the workspace root. */
4
4
  export declare const PINNED_MCP_ENTRY_RELATIVE: "mcp-server/node_modules/@neurcode-ai/mcp-server/dist/index.js";
5
5
  export declare function pinnedMcpBaseRoot(repoRoot: string, global?: boolean): string;
@@ -18,7 +18,7 @@ const node_os_1 = require("node:os");
18
18
  const node_path_1 = require("node:path");
19
19
  const node_child_process_1 = require("node:child_process");
20
20
  exports.MCP_SERVER_PACKAGE = '@neurcode-ai/mcp-server';
21
- exports.MIN_MCP_SERVER_VERSION = '0.2.5';
21
+ exports.MIN_MCP_SERVER_VERSION = '0.3.1';
22
22
  /** Legacy relative paths fail when Cursor MCP cwd is not the workspace root. */
23
23
  exports.PINNED_MCP_ENTRY_RELATIVE = 'mcp-server/node_modules/@neurcode-ai/mcp-server/dist/index.js';
24
24
  function pinnedMcpBaseRoot(repoRoot, global = false) {
@@ -37,7 +37,7 @@ function ensurePinnedMcpServer(baseRoot) {
37
37
  }
38
38
  const installDir = mcpServerPinDir(baseRoot);
39
39
  (0, node_fs_1.mkdirSync)(installDir, { recursive: true });
40
- const versionsToTry = [exports.MIN_MCP_SERVER_VERSION, '0.2.3', '0.2.2'].filter((version, index, all) => all.indexOf(version) === index);
40
+ const versionsToTry = [exports.MIN_MCP_SERVER_VERSION, '0.3.0', '0.2.5'].filter((version, index, all) => all.indexOf(version) === index);
41
41
  let lastMessage = `Failed to install pinned MCP server (${exports.MCP_SERVER_PACKAGE}).`;
42
42
  for (const version of versionsToTry) {
43
43
  const install = (0, node_child_process_1.spawnSync)('npm', [
@@ -0,0 +1,27 @@
1
+ import { type ActivatedRuntimeIntegration, type RuntimeAdapter, type RuntimeAuthorityAssessment } from '@neurcode-ai/cli-runtime';
2
+ import { type BrainLifecycleStatus } from './brain-lifecycle';
3
+ export interface RuntimeAuthorityRepairResult {
4
+ ok: true;
5
+ repoRoot: string;
6
+ manifestPath: string;
7
+ manifestHash: string;
8
+ changed: boolean;
9
+ integrations: ActivatedRuntimeIntegration[];
10
+ repaired: string[];
11
+ preserved: string[];
12
+ brain: BrainLifecycleStatus;
13
+ restartRequired: boolean;
14
+ nextCheck: string;
15
+ }
16
+ export declare function recordActivatedRuntime(repoRootInput: string, adapters: RuntimeAdapter[]): Promise<{
17
+ manifestPath: string;
18
+ manifestHash: string;
19
+ changed: boolean;
20
+ brain: BrainLifecycleStatus;
21
+ }>;
22
+ export declare function repairRuntimeAuthority(repoRootInput: string): Promise<RuntimeAuthorityRepairResult>;
23
+ export declare function inspectRuntimeAuthority(repoRootInput: string, adapter?: RuntimeAdapter, protectedOperation?: boolean): RuntimeAuthorityAssessment;
24
+ export declare function assertProtectedRuntimeAuthority(repoRootInput: string, adapter: RuntimeAdapter | 'neurcode-cli'): RuntimeAuthorityAssessment;
25
+ export declare function runtimeManifestExists(repoRootInput: string): boolean;
26
+ export declare function activeRuntimeEntrypoint(): string;
27
+ //# sourceMappingURL=runtime-authority.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-authority.d.ts","sourceRoot":"","sources":["../../src/utils/runtime-authority.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,2BAA2B,EAChC,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAEhC,MAAM,0BAA0B,CAAC;AAWlC,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGlF,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,2BAA2B,EAAE,CAAC;IAC5C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,oBAAoB,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAmED,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,cAAc,EAAE,GACzB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,CAAC,CAwBxG;AAED,wBAAsB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAqCzG;AAED,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,cAAsB,EAC/B,kBAAkB,UAAQ,GACzB,0BAA0B,CAY5B;AAED,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,cAAc,GAAG,0BAA0B,CAO3I;AAED,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.recordActivatedRuntime = recordActivatedRuntime;
4
+ exports.repairRuntimeAuthority = repairRuntimeAuthority;
5
+ exports.inspectRuntimeAuthority = inspectRuntimeAuthority;
6
+ exports.assertProtectedRuntimeAuthority = assertProtectedRuntimeAuthority;
7
+ exports.runtimeManifestExists = runtimeManifestExists;
8
+ exports.activeRuntimeEntrypoint = activeRuntimeEntrypoint;
9
+ const cli_runtime_1 = require("@neurcode-ai/cli-runtime");
10
+ const node_fs_1 = require("node:fs");
11
+ const node_path_1 = require("node:path");
12
+ const v0_governance_1 = require("./v0-governance");
13
+ const cli_entry_1 = require("./cli-entry");
14
+ const brain_lifecycle_1 = require("./brain-lifecycle");
15
+ const agent_adapter_setup_1 = require("./agent-adapter-setup");
16
+ const TARGETS = [
17
+ { adapter: 'cli', enforcementLevel: 'cooperative' },
18
+ { adapter: 'claude-code-hooks', enforcementLevel: 'hard_hook' },
19
+ { adapter: 'copilot-hooks', enforcementLevel: 'hard_hook' },
20
+ { adapter: 'codex-mcp', enforcementLevel: 'cooperative' },
21
+ { adapter: 'cursor-mcp', enforcementLevel: 'cooperative' },
22
+ { adapter: 'generic-mcp', enforcementLevel: 'cooperative' },
23
+ { adapter: 'supervisor', enforcementLevel: 'supervised' },
24
+ { adapter: 'daemon', enforcementLevel: 'observe_only' },
25
+ { adapter: 'vscode-extension', enforcementLevel: 'observe_only' },
26
+ { adapter: 'github-action', enforcementLevel: 'post_pr' },
27
+ ];
28
+ function writeRuntimeWiring(repoRoot, entrypoint) {
29
+ const path = (0, node_path_1.join)(repoRoot, '.neurcode', 'runtime-wiring.json');
30
+ const payload = {
31
+ schemaVersion: 'neurcode.runtime-wiring.v1',
32
+ cliEntrypoint: entrypoint,
33
+ supervisor: { command: process.execPath, argsPrefix: [entrypoint] },
34
+ daemon: { command: process.execPath, argsPrefix: [entrypoint, 'daemon'] },
35
+ vscode: { command: process.execPath, argsPrefix: [entrypoint] },
36
+ action: { authority: 'post_pr', localRuntimeEntrypoint: entrypoint },
37
+ };
38
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(path), { recursive: true });
39
+ const temporary = `${path}.tmp.${process.pid}`;
40
+ (0, node_fs_1.writeFileSync)(temporary, `${JSON.stringify(payload, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
41
+ (0, node_fs_1.renameSync)(temporary, path);
42
+ return path;
43
+ }
44
+ function integrationsForCurrentRuntime(adapters) {
45
+ const identity = (0, cli_runtime_1.collectCliRuntimeIdentity)({ bundledCliDir: (0, cli_entry_1.bundledCliDir)() });
46
+ const activatedAt = new Date().toISOString();
47
+ return TARGETS
48
+ .filter((target) => adapters.includes(target.adapter))
49
+ .map((target) => ({
50
+ adapter: target.adapter,
51
+ enforcementLevel: target.enforcementLevel,
52
+ activatedAt,
53
+ absoluteEntrypoint: identity.entryRealPath,
54
+ buildHash: identity.buildFingerprint,
55
+ installationSource: identity.source === 'workspace' ? 'workspace_build' : identity.source === 'packaged' ? 'packaged_artifact' : 'registry',
56
+ machinePinned: target.adapter === 'claude-code-hooks' || target.adapter === 'copilot-hooks',
57
+ }));
58
+ }
59
+ function sameActivation(existing, next) {
60
+ if (!existing)
61
+ return false;
62
+ return existing.repositoryHash === next.repositoryHash
63
+ && existing.profileHash === next.profileHash
64
+ && existing.runtime.cliVersion === next.runtime.cliVersion
65
+ && existing.runtime.packageOrBuildHash === next.runtime.packageOrBuildHash
66
+ && existing.runtime.absoluteEntrypoint === next.runtime.absoluteEntrypoint
67
+ && JSON.stringify(existing.integrations.map(({ activatedAt: _activatedAt, ...rest }) => rest))
68
+ === JSON.stringify(next.integrations.map(({ activatedAt: _activatedAt, ...rest }) => rest));
69
+ }
70
+ async function recordActivatedRuntime(repoRootInput, adapters) {
71
+ const repoRoot = (0, v0_governance_1.resolveRepoRoot)(repoRootInput);
72
+ const profile = (0, v0_governance_1.ensureFreshGovernanceProfile)(repoRoot).profile;
73
+ const identity = (0, cli_runtime_1.collectCliRuntimeIdentity)({ bundledCliDir: (0, cli_entry_1.bundledCliDir)() });
74
+ const existing = (0, cli_runtime_1.readActivatedRuntimeManifest)(repoRoot);
75
+ const existingAdapters = existing?.integrations.map((integration) => integration.adapter) ?? [];
76
+ const allAdapters = Array.from(new Set([...existingAdapters, ...adapters, 'cli']));
77
+ const next = (0, cli_runtime_1.createActivatedRuntimeManifest)({
78
+ repoRoot,
79
+ profileHash: profile.profileHash,
80
+ identity,
81
+ integrations: integrationsForCurrentRuntime(allAdapters),
82
+ });
83
+ const changed = !sameActivation(existing, next);
84
+ const manifest = changed ? next : existing;
85
+ if (changed)
86
+ (0, cli_runtime_1.writeActivatedRuntimeManifest)(repoRoot, manifest);
87
+ writeRuntimeWiring(repoRoot, identity.entryRealPath);
88
+ const brain = await (0, brain_lifecycle_1.scheduleBrainIndex)(repoRoot);
89
+ return {
90
+ manifestPath: (0, cli_runtime_1.runtimeManifestPath)(repoRoot),
91
+ manifestHash: manifest.manifestHash,
92
+ changed,
93
+ brain,
94
+ };
95
+ }
96
+ async function repairRuntimeAuthority(repoRootInput) {
97
+ const repoRoot = (0, v0_governance_1.resolveRepoRoot)(repoRootInput);
98
+ const repaired = [];
99
+ const preserved = [];
100
+ const claudeHooks = (0, v0_governance_1.installClaudeGovernanceHooks)(repoRoot, { force: true });
101
+ repaired.push(...claudeHooks.repaired, ...claudeHooks.added);
102
+ preserved.push(...claudeHooks.preserved);
103
+ const claudeMcp = (0, v0_governance_1.installClaudeMcpConfig)({ force: true });
104
+ repaired.push(...claudeMcp.repaired, ...claudeMcp.added);
105
+ preserved.push(...claudeMcp.preserved);
106
+ const copilot = (0, v0_governance_1.installCopilotGovernanceHooks)(repoRoot, { force: true });
107
+ repaired.push(...copilot.repaired, ...copilot.added);
108
+ preserved.push(...copilot.preserved);
109
+ for (const target of ['codex', 'cursor', 'vscode']) {
110
+ const result = (0, agent_adapter_setup_1.writeAgentSetup)({ target, repoRoot });
111
+ if (result.status === 'written')
112
+ repaired.push(`${target}:${result.configPath ?? 'configuration'}`);
113
+ else
114
+ preserved.push(`${target}:${result.configPath ?? 'configuration'}`);
115
+ }
116
+ const activation = await recordActivatedRuntime(repoRoot, TARGETS.map((target) => target.adapter));
117
+ if (activation.changed)
118
+ repaired.push('runtime-manifest', 'runtime-wiring');
119
+ else
120
+ preserved.push('runtime-manifest', 'runtime-wiring');
121
+ return {
122
+ ok: true,
123
+ repoRoot,
124
+ manifestPath: activation.manifestPath,
125
+ manifestHash: activation.manifestHash,
126
+ changed: activation.changed || repaired.length > 0,
127
+ integrations: (0, cli_runtime_1.readActivatedRuntimeManifest)(repoRoot)?.integrations ?? [],
128
+ repaired: Array.from(new Set(repaired)).sort(),
129
+ preserved: Array.from(new Set(preserved)).sort(),
130
+ brain: activation.brain,
131
+ restartRequired: claudeHooks.restartRequired || claudeMcp.restartRequired || copilot.restartRequired,
132
+ nextCheck: 'neurcode runtime identity --json',
133
+ };
134
+ }
135
+ function inspectRuntimeAuthority(repoRootInput, adapter = 'cli', protectedOperation = false) {
136
+ const repoRoot = (0, v0_governance_1.resolveRepoRoot)(repoRootInput);
137
+ const profile = (0, v0_governance_1.ensureFreshGovernanceProfile)(repoRoot).profile;
138
+ const current = (0, cli_runtime_1.collectCliRuntimeIdentity)({ bundledCliDir: (0, cli_entry_1.bundledCliDir)() });
139
+ return (0, cli_runtime_1.assessRuntimeAuthority)({
140
+ repoRoot,
141
+ profileHash: profile.profileHash,
142
+ current,
143
+ adapter,
144
+ protectedOperation,
145
+ installations: (0, cli_runtime_1.discoverCliInstallations)({ repoRoot, bundledCliDir: (0, cli_entry_1.bundledCliDir)() }),
146
+ });
147
+ }
148
+ function assertProtectedRuntimeAuthority(repoRootInput, adapter) {
149
+ const assessment = inspectRuntimeAuthority(repoRootInput, adapter === 'neurcode-cli' ? 'cli' : adapter, true);
150
+ if (!assessment.protectedOperationAllowed) {
151
+ const detail = assessment.mismatches.map((mismatch) => `- ${mismatch.message}`).join('\n');
152
+ throw new Error(`Protected operation denied by runtime identity authority.\n${detail}\nRun \`${assessment.repairCommand}\`.`);
153
+ }
154
+ return assessment;
155
+ }
156
+ function runtimeManifestExists(repoRootInput) {
157
+ return (0, node_fs_1.existsSync)((0, cli_runtime_1.runtimeManifestPath)((0, v0_governance_1.resolveRepoRoot)(repoRootInput)));
158
+ }
159
+ function activeRuntimeEntrypoint() {
160
+ return (0, cli_entry_1.getActiveCliEntry)();
161
+ }
162
+ //# sourceMappingURL=runtime-authority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-authority.js","sourceRoot":"","sources":["../../src/utils/runtime-authority.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  import { normalizeArchitectureObligationPolicy, summarizeArchitectureObligations, type AgentPlan, type AgentPlanAmendmentProposal, type ArchitectureObligation, type GovernanceSession, type SessionEvent } from '@neurcode-ai/governance-runtime';
2
2
  import { type ProfileFreshnessSignal } from './v0-governance';
3
3
  import { type RuntimeOutboxStatus } from './runtime-outbox';
4
+ import { readBrainLifecycle } from './brain-lifecycle';
5
+ import { inspectRuntimeAuthority } from './runtime-authority';
6
+ import { classifyRuntimeState } from './runtime-state';
4
7
  export declare const RUNTIME_COMPANION_SCHEMA_VERSION: "neurcode.runtime-companion.v1";
5
8
  export interface RuntimeCompanionPlan {
6
9
  revision: number;
@@ -64,6 +67,27 @@ export interface RuntimeCompanionSnapshot {
64
67
  hardDenyAvailable: false;
65
68
  detail: string;
66
69
  };
70
+ runtimeAuthority: ReturnType<typeof inspectRuntimeAuthority>;
71
+ runtimeState: ReturnType<typeof classifyRuntimeState>;
72
+ pairing: {
73
+ repositoryOwnershipBound: boolean;
74
+ machineAuthenticated: boolean;
75
+ agentIntegrationActive: boolean;
76
+ cloudTransportConnected: boolean;
77
+ repoBrainReady: boolean;
78
+ governedSessionActive: boolean;
79
+ evidenceSynchronized: boolean;
80
+ };
81
+ topology: null | {
82
+ artifactHash: string;
83
+ trackedFileCount: number;
84
+ deterministicFacts: number;
85
+ advisoryFacts: number;
86
+ brainParticipated: boolean;
87
+ brainFreshness: string | null;
88
+ limitations: string[];
89
+ };
90
+ brain: ReturnType<typeof readBrainLifecycle>;
67
91
  profileFreshness: ProfileFreshnessSignal & {
68
92
  sessionProfileHash: string | null;
69
93
  };
@@ -73,12 +97,20 @@ export interface RuntimeCompanionSnapshot {
73
97
  session: null | {
74
98
  sessionId: string;
75
99
  status: GovernanceSession['status'];
100
+ completionStatus: GovernanceSession['completionStatus'] | null;
76
101
  repoName: string;
77
102
  goal: string;
78
103
  profileHash: string;
79
104
  scopeMode: GovernanceSession['contract']['scopeMode'];
80
105
  planCoherenceMode: NonNullable<GovernanceSession['contract']['planCoherenceMode']>;
81
106
  allowedGlobs: string[];
107
+ scopeEvidence: Array<{
108
+ glob: string;
109
+ evidenceType: string;
110
+ authority: 'deterministic' | 'advisory' | 'explicit';
111
+ confidence: string;
112
+ reason: string;
113
+ }>;
82
114
  approvalRequiredGlobs: string[];
83
115
  approvedPaths: string[];
84
116
  launcher: null | {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-companion.d.ts","sourceRoot":"","sources":["../../src/utils/runtime-companion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-companion.d.ts","sourceRoot":"","sources":["../../src/utils/runtime-companion.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,10 @@ const v0_governance_1 = require("./v0-governance");
11
11
  const agent_session_launcher_1 = require("./agent-session-launcher");
12
12
  const runtime_outbox_1 = require("./runtime-outbox");
13
13
  const runtime_connection_1 = require("./runtime-connection");
14
+ const brain_lifecycle_1 = require("./brain-lifecycle");
15
+ const runtime_authority_1 = require("./runtime-authority");
16
+ const v0_governance_2 = require("./v0-governance");
17
+ const runtime_state_1 = require("./runtime-state");
14
18
  exports.RUNTIME_COMPANION_SCHEMA_VERSION = 'neurcode.runtime-companion.v1';
15
19
  const PROFILE_FRESHNESS_CACHE_MS = 5_000;
16
20
  const freshnessCache = new Map();
@@ -158,6 +162,31 @@ function buildRuntimeCompanionSnapshot(repoRoot, options = {}) {
158
162
  const session = (0, governance_runtime_1.loadActiveSession)(repoRoot);
159
163
  const profileFreshness = freshnessFor(repoRoot, session, options.forceFreshness === true);
160
164
  const transport = (0, runtime_outbox_1.inspectRuntimeOutbox)(repoRoot);
165
+ const connection = (0, runtime_connection_1.loadRuntimeConnection)(repoRoot);
166
+ const runtimeAuthority = (0, runtime_authority_1.inspectRuntimeAuthority)(repoRoot);
167
+ const runtimeState = (0, runtime_state_1.classifyRuntimeState)(repoRoot);
168
+ const profile = (0, v0_governance_2.readGovernanceProfile)(repoRoot).profile;
169
+ const topology = profile?.repositoryTopology ?? session?.contract.repositoryTopology ?? null;
170
+ const brain = (0, brain_lifecycle_1.readBrainLifecycle)(repoRoot);
171
+ const launcher = session ? shapeLauncher(session) : null;
172
+ const scopeEvidence = (session?.contract.allowedGlobs ?? []).map((glob) => {
173
+ const fact = topology?.facts.find((candidate) => candidate.glob === glob || candidate.path === glob);
174
+ return fact
175
+ ? {
176
+ glob,
177
+ evidenceType: fact.evidence.type,
178
+ authority: fact.evidence.authority,
179
+ confidence: fact.evidence.confidence,
180
+ reason: fact.evidence.reason,
181
+ }
182
+ : {
183
+ glob,
184
+ evidenceType: 'explicit-user-or-plan',
185
+ authority: 'explicit',
186
+ confidence: 'high',
187
+ reason: 'This exact path/glob came from explicit user intent or the accepted agent plan.',
188
+ };
189
+ });
161
190
  return {
162
191
  schemaVersion: exports.RUNTIME_COMPANION_SCHEMA_VERSION,
163
192
  generatedAt: new Date().toISOString(),
@@ -174,27 +203,53 @@ function buildRuntimeCompanionSnapshot(repoRoot, options = {}) {
174
203
  hardDenyAvailable: false,
175
204
  detail: 'The VS Code companion reflects CLI runtime state. Claude Code hooks provide pre-write hard deny; editor observation does not.',
176
205
  },
206
+ runtimeAuthority,
207
+ runtimeState,
208
+ pairing: {
209
+ repositoryOwnershipBound: Boolean(profile),
210
+ machineAuthenticated: Boolean(connection),
211
+ agentIntegrationActive: Boolean(launcher || runtimeAuthority.activated?.integrations.length),
212
+ cloudTransportConnected: Boolean(connection),
213
+ repoBrainReady: brain?.state === 'fresh' || brain?.state === 'partial',
214
+ governedSessionActive: Boolean(session),
215
+ evidenceSynchronized: Boolean(connection)
216
+ && transport.pendingEvents === 0
217
+ && transport.deadLetterEvents === 0
218
+ && transport.quarantinedEvents === 0,
219
+ },
220
+ topology: topology ? {
221
+ artifactHash: topology.artifactHash,
222
+ trackedFileCount: topology.trackedFileCount,
223
+ deterministicFacts: topology.facts.filter((fact) => fact.evidence.authority === 'deterministic').length,
224
+ advisoryFacts: topology.facts.filter((fact) => fact.evidence.authority === 'advisory').length,
225
+ brainParticipated: topology.brain.participated,
226
+ brainFreshness: topology.brain.freshness,
227
+ limitations: [...topology.limitations],
228
+ } : null,
229
+ brain,
177
230
  profileFreshness: {
178
231
  ...profileFreshness,
179
232
  sessionProfileHash: session?.profileHash ?? null,
180
233
  },
181
234
  transport: {
182
235
  ...transport,
183
- connected: Boolean((0, runtime_connection_1.loadRuntimeConnection)(repoRoot)),
236
+ connected: Boolean(connection),
184
237
  },
185
238
  session: session
186
239
  ? {
187
240
  sessionId: session.sessionId,
188
241
  status: session.status,
242
+ completionStatus: session.completionStatus ?? null,
189
243
  repoName: session.repoName,
190
244
  goal: session.contract.goal,
191
245
  profileHash: session.profileHash,
192
246
  scopeMode: session.contract.scopeMode,
193
247
  planCoherenceMode: session.contract.planCoherenceMode ?? 'warn',
194
248
  allowedGlobs: [...session.contract.allowedGlobs],
249
+ scopeEvidence,
195
250
  approvalRequiredGlobs: [...session.contract.approvalRequiredGlobs],
196
251
  approvedPaths: (0, governance_runtime_1.activeApprovalPaths)(session.contract),
197
- launcher: shapeLauncher(session),
252
+ launcher,
198
253
  plan: shapePlan(session),
199
254
  obligations: shapeObligations(session),
200
255
  latestBlock: shapeLatestBlock(session),