@neurcode-ai/cli 0.14.0 → 0.15.0

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 (188) hide show
  1. package/README.md +60 -8
  2. package/dist/api-client.d.ts +284 -0
  3. package/dist/api-client.d.ts.map +1 -1
  4. package/dist/api-client.js +111 -0
  5. package/dist/api-client.js.map +1 -1
  6. package/dist/commands/activate.d.ts +82 -0
  7. package/dist/commands/activate.d.ts.map +1 -0
  8. package/dist/commands/activate.js +551 -0
  9. package/dist/commands/activate.js.map +1 -0
  10. package/dist/commands/admission.d.ts +67 -0
  11. package/dist/commands/admission.d.ts.map +1 -0
  12. package/dist/commands/admission.js +350 -0
  13. package/dist/commands/admission.js.map +1 -0
  14. package/dist/commands/agent.d.ts +3 -0
  15. package/dist/commands/agent.d.ts.map +1 -0
  16. package/dist/commands/agent.js +2045 -0
  17. package/dist/commands/agent.js.map +1 -0
  18. package/dist/commands/demo.d.ts +3 -0
  19. package/dist/commands/demo.d.ts.map +1 -0
  20. package/dist/commands/demo.js +102 -0
  21. package/dist/commands/demo.js.map +1 -0
  22. package/dist/commands/init.d.ts.map +1 -1
  23. package/dist/commands/init.js +58 -44
  24. package/dist/commands/init.js.map +1 -1
  25. package/dist/commands/login.d.ts +1 -1
  26. package/dist/commands/login.d.ts.map +1 -1
  27. package/dist/commands/login.js +44 -22
  28. package/dist/commands/login.js.map +1 -1
  29. package/dist/commands/profile.d.ts +14 -0
  30. package/dist/commands/profile.d.ts.map +1 -0
  31. package/dist/commands/profile.js +118 -0
  32. package/dist/commands/profile.js.map +1 -0
  33. package/dist/commands/quickstart.d.ts +2 -2
  34. package/dist/commands/quickstart.d.ts.map +1 -1
  35. package/dist/commands/quickstart.js +31 -30
  36. package/dist/commands/quickstart.js.map +1 -1
  37. package/dist/commands/remediate-export.d.ts +6 -1
  38. package/dist/commands/remediate-export.d.ts.map +1 -1
  39. package/dist/commands/remediate-export.js +359 -7
  40. package/dist/commands/remediate-export.js.map +1 -1
  41. package/dist/commands/replay.d.ts.map +1 -1
  42. package/dist/commands/replay.js +84 -0
  43. package/dist/commands/replay.js.map +1 -1
  44. package/dist/commands/run.d.ts +3 -0
  45. package/dist/commands/run.d.ts.map +1 -0
  46. package/dist/commands/run.js +98 -0
  47. package/dist/commands/run.js.map +1 -0
  48. package/dist/commands/runtime-adapter.d.ts +8 -0
  49. package/dist/commands/runtime-adapter.d.ts.map +1 -0
  50. package/dist/commands/runtime-adapter.js +375 -0
  51. package/dist/commands/runtime-adapter.js.map +1 -0
  52. package/dist/commands/runtime-doctor.d.ts +6 -0
  53. package/dist/commands/runtime-doctor.d.ts.map +1 -0
  54. package/dist/commands/runtime-doctor.js +478 -0
  55. package/dist/commands/runtime-doctor.js.map +1 -0
  56. package/dist/commands/runtime-report.d.ts +13 -0
  57. package/dist/commands/runtime-report.d.ts.map +1 -0
  58. package/dist/commands/runtime-report.js +81 -0
  59. package/dist/commands/runtime-report.js.map +1 -0
  60. package/dist/commands/runtime-sync.d.ts +17 -0
  61. package/dist/commands/runtime-sync.d.ts.map +1 -0
  62. package/dist/commands/runtime-sync.js +656 -0
  63. package/dist/commands/runtime-sync.js.map +1 -0
  64. package/dist/commands/runtime.d.ts +16 -0
  65. package/dist/commands/runtime.d.ts.map +1 -0
  66. package/dist/commands/runtime.js +380 -0
  67. package/dist/commands/runtime.js.map +1 -0
  68. package/dist/commands/session-hook.d.ts +35 -0
  69. package/dist/commands/session-hook.d.ts.map +1 -0
  70. package/dist/commands/session-hook.js +1297 -0
  71. package/dist/commands/session-hook.js.map +1 -0
  72. package/dist/commands/session.d.ts +91 -0
  73. package/dist/commands/session.d.ts.map +1 -1
  74. package/dist/commands/session.js +1226 -0
  75. package/dist/commands/session.js.map +1 -1
  76. package/dist/commands/whoami.d.ts +7 -4
  77. package/dist/commands/whoami.d.ts.map +1 -1
  78. package/dist/commands/whoami.js +59 -34
  79. package/dist/commands/whoami.js.map +1 -1
  80. package/dist/config.d.ts.map +1 -1
  81. package/dist/config.js +24 -5
  82. package/dist/config.js.map +1 -1
  83. package/dist/daemon/routes.d.ts.map +1 -1
  84. package/dist/daemon/routes.js +8 -0
  85. package/dist/daemon/routes.js.map +1 -1
  86. package/dist/daemon/server.d.ts.map +1 -1
  87. package/dist/daemon/server.js +88 -0
  88. package/dist/daemon/server.js.map +1 -1
  89. package/dist/governance/impact-analysis.d.ts +27 -0
  90. package/dist/governance/impact-analysis.d.ts.map +1 -0
  91. package/dist/governance/impact-analysis.js +274 -0
  92. package/dist/governance/impact-analysis.js.map +1 -0
  93. package/dist/index.js +472 -29
  94. package/dist/index.js.map +1 -1
  95. package/dist/intent-engine/matcher.d.ts.map +1 -1
  96. package/dist/intent-engine/matcher.js +3 -12
  97. package/dist/intent-engine/matcher.js.map +1 -1
  98. package/dist/utils/admission-artifact.d.ts +59 -0
  99. package/dist/utils/admission-artifact.d.ts.map +1 -0
  100. package/dist/utils/admission-artifact.js +410 -0
  101. package/dist/utils/admission-artifact.js.map +1 -0
  102. package/dist/utils/agent-adapter-setup.d.ts +80 -0
  103. package/dist/utils/agent-adapter-setup.d.ts.map +1 -0
  104. package/dist/utils/agent-adapter-setup.js +577 -0
  105. package/dist/utils/agent-adapter-setup.js.map +1 -0
  106. package/dist/utils/agent-guard-supervisor.d.ts +75 -0
  107. package/dist/utils/agent-guard-supervisor.d.ts.map +1 -0
  108. package/dist/utils/agent-guard-supervisor.js +388 -0
  109. package/dist/utils/agent-guard-supervisor.js.map +1 -0
  110. package/dist/utils/agent-guard.d.ts +92 -0
  111. package/dist/utils/agent-guard.d.ts.map +1 -0
  112. package/dist/utils/agent-guard.js +326 -0
  113. package/dist/utils/agent-guard.js.map +1 -0
  114. package/dist/utils/agent-session-launcher.d.ts +89 -0
  115. package/dist/utils/agent-session-launcher.d.ts.map +1 -0
  116. package/dist/utils/agent-session-launcher.js +308 -0
  117. package/dist/utils/agent-session-launcher.js.map +1 -0
  118. package/dist/utils/bash-command-analysis.d.ts +19 -0
  119. package/dist/utils/bash-command-analysis.d.ts.map +1 -0
  120. package/dist/utils/bash-command-analysis.js +295 -0
  121. package/dist/utils/bash-command-analysis.js.map +1 -0
  122. package/dist/utils/consequence-nudges.d.ts +30 -0
  123. package/dist/utils/consequence-nudges.d.ts.map +1 -0
  124. package/dist/utils/consequence-nudges.js +313 -0
  125. package/dist/utils/consequence-nudges.js.map +1 -0
  126. package/dist/utils/drift-intelligence.d.ts.map +1 -1
  127. package/dist/utils/drift-intelligence.js +29 -7
  128. package/dist/utils/drift-intelligence.js.map +1 -1
  129. package/dist/utils/git-coverage.d.ts +57 -0
  130. package/dist/utils/git-coverage.d.ts.map +1 -0
  131. package/dist/utils/git-coverage.js +302 -0
  132. package/dist/utils/git-coverage.js.map +1 -0
  133. package/dist/utils/gitignore.d.ts.map +1 -1
  134. package/dist/utils/gitignore.js +2 -1
  135. package/dist/utils/gitignore.js.map +1 -1
  136. package/dist/utils/governed-intent.d.ts +10 -0
  137. package/dist/utils/governed-intent.d.ts.map +1 -0
  138. package/dist/utils/governed-intent.js +108 -0
  139. package/dist/utils/governed-intent.js.map +1 -0
  140. package/dist/utils/hook-heartbeat.d.ts +55 -0
  141. package/dist/utils/hook-heartbeat.d.ts.map +1 -0
  142. package/dist/utils/hook-heartbeat.js +116 -0
  143. package/dist/utils/hook-heartbeat.js.map +1 -0
  144. package/dist/utils/intent-continuity.d.ts +21 -0
  145. package/dist/utils/intent-continuity.d.ts.map +1 -0
  146. package/dist/utils/intent-continuity.js +192 -0
  147. package/dist/utils/intent-continuity.js.map +1 -0
  148. package/dist/utils/messages.d.ts +1 -1
  149. package/dist/utils/messages.d.ts.map +1 -1
  150. package/dist/utils/messages.js +24 -21
  151. package/dist/utils/messages.js.map +1 -1
  152. package/dist/utils/runtime-companion.d.ts +137 -0
  153. package/dist/utils/runtime-companion.d.ts.map +1 -0
  154. package/dist/utils/runtime-companion.js +231 -0
  155. package/dist/utils/runtime-companion.js.map +1 -0
  156. package/dist/utils/runtime-connection.d.ts +46 -0
  157. package/dist/utils/runtime-connection.d.ts.map +1 -0
  158. package/dist/utils/runtime-connection.js +148 -0
  159. package/dist/utils/runtime-connection.js.map +1 -0
  160. package/dist/utils/runtime-evidence.d.ts +68 -0
  161. package/dist/utils/runtime-evidence.d.ts.map +1 -0
  162. package/dist/utils/runtime-evidence.js +248 -0
  163. package/dist/utils/runtime-evidence.js.map +1 -0
  164. package/dist/utils/runtime-live.d.ts +33 -0
  165. package/dist/utils/runtime-live.d.ts.map +1 -0
  166. package/dist/utils/runtime-live.js +361 -0
  167. package/dist/utils/runtime-live.js.map +1 -0
  168. package/dist/utils/runtime-outbox.d.ts +76 -0
  169. package/dist/utils/runtime-outbox.d.ts.map +1 -0
  170. package/dist/utils/runtime-outbox.js +410 -0
  171. package/dist/utils/runtime-outbox.js.map +1 -0
  172. package/dist/utils/runtime-receipt.d.ts +50 -0
  173. package/dist/utils/runtime-receipt.d.ts.map +1 -0
  174. package/dist/utils/runtime-receipt.js +223 -0
  175. package/dist/utils/runtime-receipt.js.map +1 -0
  176. package/dist/utils/state.d.ts +21 -0
  177. package/dist/utils/state.d.ts.map +1 -1
  178. package/dist/utils/state.js +30 -0
  179. package/dist/utils/state.js.map +1 -1
  180. package/dist/utils/structural-understanding.d.ts +334 -0
  181. package/dist/utils/structural-understanding.d.ts.map +1 -0
  182. package/dist/utils/structural-understanding.js +2316 -0
  183. package/dist/utils/structural-understanding.js.map +1 -0
  184. package/dist/utils/v0-governance.d.ts +197 -0
  185. package/dist/utils/v0-governance.d.ts.map +1 -0
  186. package/dist/utils/v0-governance.js +904 -0
  187. package/dist/utils/v0-governance.js.map +1 -0
  188. package/package.json +5 -5
@@ -0,0 +1,577 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AGENT_ADAPTER_DOCTOR_SCHEMA_VERSION = exports.AGENT_ADAPTER_SETUP_SCHEMA_VERSION = void 0;
4
+ exports.normalizeAgentSetupTarget = normalizeAgentSetupTarget;
5
+ exports.adapterForSetupTarget = adapterForSetupTarget;
6
+ exports.buildAgentSetupSnippet = buildAgentSetupSnippet;
7
+ exports.buildAgentInstructionArtifact = buildAgentInstructionArtifact;
8
+ exports.inspectAgentSetup = inspectAgentSetup;
9
+ exports.inspectAgentInstructions = inspectAgentInstructions;
10
+ exports.writeAgentSetup = writeAgentSetup;
11
+ exports.writeAgentInstructions = writeAgentInstructions;
12
+ const node_fs_1 = require("node:fs");
13
+ const node_os_1 = require("node:os");
14
+ const node_path_1 = require("node:path");
15
+ const v0_governance_1 = require("./v0-governance");
16
+ exports.AGENT_ADAPTER_SETUP_SCHEMA_VERSION = 'neurcode.agent-adapter-setup.v1';
17
+ exports.AGENT_ADAPTER_DOCTOR_SCHEMA_VERSION = 'neurcode.agent-adapter-doctor.v1';
18
+ const MCP_PACKAGE = '@neurcode-ai/mcp-server';
19
+ const VSCODE_EXTENSION_ID = 'sujit-jaunjal.neurcode-governance';
20
+ function mcpServerEntry() {
21
+ return {
22
+ command: 'npx',
23
+ args: ['-y', MCP_PACKAGE],
24
+ };
25
+ }
26
+ function jsonSnippet() {
27
+ return JSON.stringify({
28
+ mcpServers: {
29
+ neurcode: mcpServerEntry(),
30
+ },
31
+ }, null, 2);
32
+ }
33
+ function tomlSnippet() {
34
+ return [
35
+ '[mcp_servers.neurcode]',
36
+ 'command = "npx"',
37
+ `args = ["-y", "${MCP_PACKAGE}"]`,
38
+ '',
39
+ ].join('\n');
40
+ }
41
+ function normalizeAgentSetupTarget(value) {
42
+ const normalized = (value || 'codex').trim().toLowerCase();
43
+ if (['claude', 'claude-code', 'claude_code'].includes(normalized))
44
+ return 'claude';
45
+ if (['copilot', 'github-copilot', 'github_copilot', 'copilot-hooks'].includes(normalized))
46
+ return 'copilot';
47
+ if (['codex', 'codex-mcp'].includes(normalized))
48
+ return 'codex';
49
+ if (['cursor', 'cursor-mcp'].includes(normalized))
50
+ return 'cursor';
51
+ if (['generic', 'generic-mcp', 'mcp', 'gemini'].includes(normalized))
52
+ return 'generic-mcp';
53
+ if (['vscode', 'vs-code', 'vscode-extension'].includes(normalized))
54
+ return 'vscode';
55
+ throw new Error(`Unsupported agent setup target "${value}". Supported: claude, copilot, codex, cursor, generic-mcp, vscode.`);
56
+ }
57
+ function adapterForSetupTarget(target) {
58
+ if (target === 'claude')
59
+ return 'claude-code-hooks';
60
+ if (target === 'copilot')
61
+ return 'copilot-hooks';
62
+ if (target === 'codex')
63
+ return 'codex-mcp';
64
+ if (target === 'cursor')
65
+ return 'cursor-mcp';
66
+ if (target === 'vscode')
67
+ return 'vscode-extension';
68
+ return 'generic-mcp';
69
+ }
70
+ function codexConfigPath() {
71
+ return (0, node_path_1.join)((0, node_os_1.homedir)(), '.codex', 'config.toml');
72
+ }
73
+ function cursorConfigPath(repoRoot, global) {
74
+ return global
75
+ ? (0, node_path_1.join)((0, node_os_1.homedir)(), '.cursor', 'mcp.json')
76
+ : (0, node_path_1.join)(repoRoot, '.cursor', 'mcp.json');
77
+ }
78
+ function vscodeExtensionsPath(repoRoot) {
79
+ return (0, node_path_1.join)(repoRoot, '.vscode', 'extensions.json');
80
+ }
81
+ function instructionPath(target, repoRoot) {
82
+ if (target === 'codex')
83
+ return (0, node_path_1.join)(repoRoot, 'AGENTS.md');
84
+ if (target === 'cursor')
85
+ return (0, node_path_1.join)(repoRoot, '.cursor', 'rules', 'neurcode-governance.mdc');
86
+ if (target === 'copilot')
87
+ return (0, node_path_1.join)(repoRoot, '.github', 'copilot-instructions.md');
88
+ if (target === 'vscode')
89
+ return (0, node_path_1.join)(repoRoot, '.vscode', 'neurcode-runtime.md');
90
+ if (target === 'generic-mcp')
91
+ return (0, node_path_1.join)(repoRoot, 'NEURCODE_AGENT.md');
92
+ return null;
93
+ }
94
+ function instructionDestination(target) {
95
+ if (target === 'codex')
96
+ return 'AGENTS.md';
97
+ if (target === 'cursor')
98
+ return '.cursor/rules/neurcode-governance.mdc';
99
+ if (target === 'copilot')
100
+ return '.github/copilot-instructions.md';
101
+ if (target === 'vscode')
102
+ return '.vscode/neurcode-runtime.md';
103
+ if (target === 'generic-mcp')
104
+ return 'NEURCODE_AGENT.md';
105
+ return 'Claude Code hook contract';
106
+ }
107
+ function instructionHeader(target) {
108
+ if (target !== 'cursor')
109
+ return [];
110
+ return [
111
+ '---',
112
+ 'description: Neurcode runtime governance for AI coding edits',
113
+ 'alwaysApply: true',
114
+ '---',
115
+ '',
116
+ ];
117
+ }
118
+ function cliAdapterName(adapter) {
119
+ return adapter;
120
+ }
121
+ function instructionBody(input) {
122
+ if (input.target === 'claude') {
123
+ return [
124
+ '<!-- neurcode-agent-runtime-v1 -->',
125
+ '# Neurcode Runtime Governance',
126
+ '',
127
+ 'Claude Code is governed by Neurcode hooks after `neurcode activate claude`.',
128
+ 'Hooks run before Edit/Write/MultiEdit and can hard-deny writes before they land.',
129
+ '',
130
+ ].join('\n');
131
+ }
132
+ if (input.target === 'vscode') {
133
+ return [
134
+ '<!-- neurcode-agent-runtime-v1 -->',
135
+ '# Neurcode Runtime Companion',
136
+ '',
137
+ 'This workspace uses the Neurcode VS Code companion as the live operator surface for governed AI coding sessions.',
138
+ '',
139
+ 'Use this workflow for serious agentic work:',
140
+ '',
141
+ '1. Start the local Neurcode daemon from the command palette or CLI.',
142
+ '2. Run "Neurcode: Start Governed AI Session" and choose the real agent host: Claude Code, Codex, Cursor, or Generic MCP.',
143
+ '3. Treat the VS Code extension as observe-only. It shows live session state, active plan, blocked paths, guard posture, exact-path approvals, repo profile drift, and replayable evidence.',
144
+ '4. For Codex, Cursor, or another MCP-capable agent, keep the MCP/CLI runtime calls active before writes. VS Code visibility is not a substitute for pre-write checks.',
145
+ '5. If a protected path is blocked, approve the exact suggested path from the Runtime Companion or Control Plane. Do not broaden approval scope unless the human explicitly asks.',
146
+ '6. Finish the governed session so source-free replay evidence is written.',
147
+ '',
148
+ 'Never send source code, diffs, patches, file contents, or before/after text to Neurcode runtime payloads. Runtime evidence is paths, owners, decisions, plan metadata, guard posture, and integrity hashes.',
149
+ '',
150
+ ].join('\n');
151
+ }
152
+ if (input.target === 'copilot') {
153
+ return [
154
+ '<!-- neurcode-agent-runtime-v1 -->',
155
+ '# Neurcode Runtime Governance for GitHub Copilot',
156
+ '',
157
+ 'This repository uses Neurcode Copilot hooks for hook-backed runtime checks where Copilot Agent Mode exposes lifecycle hooks.',
158
+ '',
159
+ 'Follow this contract during coding tasks:',
160
+ '',
161
+ '1. Work inside a governed repository where `.github/hooks/neurcode.json` was written by `neurcode activate copilot` or `neurcode agent setup copilot --write`.',
162
+ '2. Keep UserPromptSubmit, PreToolUse, and Stop hooks enabled in the Copilot host.',
163
+ '3. Treat a Neurcode deny as authoritative. Do not create, edit, or overwrite the denied file.',
164
+ '4. If a protected boundary must change, ask the human operator to approve only the exact suggested path in the Runtime Control Plane.',
165
+ '5. Do not broaden approval to a directory or glob unless the human explicitly changes the task scope.',
166
+ '6. Finish the governed session so source-free runtime evidence and replay records are written.',
167
+ '',
168
+ 'Never send source code, diffs, patches, file contents, or before/after text to Neurcode runtime payloads. Runtime evidence is paths, owners, decisions, plan metadata, guard posture, and integrity hashes.',
169
+ '',
170
+ ].join('\n');
171
+ }
172
+ const adapter = cliAdapterName(input.adapter);
173
+ return [
174
+ ...instructionHeader(input.target),
175
+ '<!-- neurcode-agent-runtime-v1 -->',
176
+ '# Neurcode Runtime Governance',
177
+ '',
178
+ 'This repository uses Neurcode as the in-flow governance runtime for AI-generated software changes.',
179
+ '',
180
+ 'Follow this contract during coding tasks:',
181
+ '',
182
+ '1. Start or join a governed session before implementation.',
183
+ '2. Handshake into the active session with `neurcode_agent_session_handshake`.',
184
+ '3. Capture a source-free implementation plan with `neurcode_agent_plan_capture` before edits.',
185
+ '4. Before every proposed file write, call `neurcode_agent_edit_before` with the repo-relative `filePath` and write-tool name.',
186
+ '5. If the decision is `deny`, do not write the file. Show the denial and `approvalContext` to the human.',
187
+ '6. If approval is granted, use `neurcode_session_approve` with the exact suggested path. Do not broaden to a directory unless the human explicitly asks.',
188
+ '7. If the plan or scope changes, call `neurcode_agent_plan_amend` before editing outside the accepted plan.',
189
+ '8. Finish with `neurcode_agent_session_finish` so replayable evidence is written.',
190
+ '',
191
+ 'Never send source code, diffs, patches, file contents, or before/after text in Neurcode MCP payloads. Use paths, plan summaries, owner metadata, decisions, and approval reasons only.',
192
+ '',
193
+ 'If MCP tools are unavailable, use the local CLI fallback:',
194
+ '',
195
+ '```bash',
196
+ `neurcode agent check <repo-relative-path> --adapter ${adapter} --session-id <session-id>`,
197
+ `neurcode agent approve <exact-path> --adapter ${adapter} --session-id <session-id> --reason "<reason>"`,
198
+ `neurcode agent finish --adapter ${adapter} --session-id <session-id>`,
199
+ '```',
200
+ '',
201
+ 'Treat Neurcode `deny` as authoritative. Re-plan or ask for exact approval instead of bypassing the runtime.',
202
+ '',
203
+ ].join('\n');
204
+ }
205
+ function buildAgentSetupSnippet(input) {
206
+ const adapter = adapterForSetupTarget(input.target);
207
+ switch (input.target) {
208
+ case 'claude':
209
+ return {
210
+ target: input.target,
211
+ adapter,
212
+ destination: 'Claude Code hooks and MCP config',
213
+ configPath: null,
214
+ format: 'text',
215
+ body: 'Run: neurcode activate claude',
216
+ instruction: 'Claude Code is the hard-deny adapter. Use neurcode activate claude to install hooks and MCP approval tools.',
217
+ };
218
+ case 'copilot':
219
+ return {
220
+ target: input.target,
221
+ adapter,
222
+ destination: '.github/hooks/neurcode.json',
223
+ configPath: (0, v0_governance_1.copilotHooksPath)(input.repoRoot),
224
+ format: 'json',
225
+ body: JSON.stringify({
226
+ version: 1,
227
+ hooks: {
228
+ UserPromptSubmit: [{ type: 'command', command: 'neurcode session-hook start' }],
229
+ PreToolUse: [{ type: 'command', command: 'neurcode session-hook check' }],
230
+ Stop: [{ type: 'command', command: 'neurcode session-hook finish' }],
231
+ },
232
+ }, null, 2),
233
+ instruction: 'GitHub Copilot Agent Mode is hook-backed where host lifecycle hooks are available. Use neurcode activate copilot or --write to install local checks.',
234
+ };
235
+ case 'codex':
236
+ return {
237
+ target: input.target,
238
+ adapter,
239
+ destination: '~/.codex/config.toml',
240
+ configPath: codexConfigPath(),
241
+ format: 'toml',
242
+ body: tomlSnippet(),
243
+ instruction: 'Append this block to your Codex config so Codex can call Neurcode MCP tools before edits.',
244
+ };
245
+ case 'cursor':
246
+ return {
247
+ target: input.target,
248
+ adapter,
249
+ destination: input.global ? '~/.cursor/mcp.json' : '.cursor/mcp.json',
250
+ configPath: cursorConfigPath(input.repoRoot, input.global === true),
251
+ format: 'json',
252
+ body: jsonSnippet(),
253
+ instruction: 'Merge this mcpServers.neurcode entry into Cursor MCP config.',
254
+ };
255
+ case 'generic-mcp':
256
+ return {
257
+ target: input.target,
258
+ adapter,
259
+ destination: 'your MCP client config',
260
+ configPath: null,
261
+ format: 'json',
262
+ body: jsonSnippet(),
263
+ instruction: 'Register this MCP server in any agent host that supports stdio MCP tools.',
264
+ };
265
+ case 'vscode':
266
+ return {
267
+ target: input.target,
268
+ adapter,
269
+ destination: '.vscode/extensions.json',
270
+ configPath: vscodeExtensionsPath(input.repoRoot),
271
+ format: 'json',
272
+ body: JSON.stringify({ recommendations: [VSCODE_EXTENSION_ID] }, null, 2),
273
+ instruction: 'Add the Neurcode Runtime Companion extension recommendation for this workspace.',
274
+ };
275
+ }
276
+ }
277
+ function buildAgentInstructionArtifact(input) {
278
+ const adapter = adapterForSetupTarget(input.target);
279
+ const filePath = instructionPath(input.target, input.repoRoot);
280
+ return {
281
+ target: input.target,
282
+ adapter,
283
+ destination: instructionDestination(input.target),
284
+ filePath,
285
+ format: 'markdown',
286
+ body: instructionBody({ target: input.target, adapter }),
287
+ instruction: input.target === 'claude'
288
+ ? 'Use neurcode activate claude; hook installation is the enforcement layer.'
289
+ : input.target === 'vscode'
290
+ ? 'Add this workspace runtime note so VS Code users understand the companion guarantee and the agent handoff.'
291
+ : `Add this runtime contract to ${instructionDestination(input.target)} so the agent knows when to call Neurcode tools.`,
292
+ };
293
+ }
294
+ function readText(path) {
295
+ return (0, node_fs_1.existsSync)(path) ? (0, node_fs_1.readFileSync)(path, 'utf8') : '';
296
+ }
297
+ function hasNeurcodeInstructions(path) {
298
+ return readText(path).includes('neurcode-agent-runtime-v1');
299
+ }
300
+ function isCodexConfigured(path) {
301
+ const text = readText(path);
302
+ return /\[mcp_servers\.neurcode\]/.test(text) || text.includes(MCP_PACKAGE);
303
+ }
304
+ function isCursorConfigured(path) {
305
+ if (!(0, node_fs_1.existsSync)(path))
306
+ return false;
307
+ try {
308
+ const parsed = JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'));
309
+ return Boolean(parsed.mcpServers?.neurcode);
310
+ }
311
+ catch {
312
+ return readText(path).includes(MCP_PACKAGE);
313
+ }
314
+ }
315
+ function isVscodeRecommended(path) {
316
+ if (!(0, node_fs_1.existsSync)(path))
317
+ return false;
318
+ try {
319
+ const parsed = JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'));
320
+ return Array.isArray(parsed.recommendations)
321
+ && parsed.recommendations.some((item) => item === VSCODE_EXTENSION_ID);
322
+ }
323
+ catch {
324
+ return readText(path).includes(VSCODE_EXTENSION_ID);
325
+ }
326
+ }
327
+ function inspectAgentSetup(input) {
328
+ const adapter = adapterForSetupTarget(input.target);
329
+ if (input.target === 'claude') {
330
+ return {
331
+ target: input.target,
332
+ adapter,
333
+ supported: true,
334
+ configured: null,
335
+ configPath: null,
336
+ message: 'Use neurcode activate claude for hook + MCP installation.',
337
+ };
338
+ }
339
+ if (input.target === 'generic-mcp') {
340
+ return {
341
+ target: input.target,
342
+ adapter,
343
+ supported: true,
344
+ configured: null,
345
+ configPath: null,
346
+ message: 'Generic MCP clients require manual registration using the emitted snippet.',
347
+ };
348
+ }
349
+ if (input.target === 'copilot') {
350
+ const hooks = (0, v0_governance_1.inspectCopilotActivation)(input.repoRoot).hooks;
351
+ return {
352
+ target: input.target,
353
+ adapter,
354
+ supported: true,
355
+ configured: hooks.installed,
356
+ configPath: hooks.hooksPath,
357
+ message: hooks.installed
358
+ ? `Neurcode Copilot hooks are installed in ${hooks.hooksPath}.`
359
+ : hooks.error
360
+ ? `Could not inspect ${hooks.hooksPath}: ${hooks.error}.`
361
+ : `Neurcode Copilot hooks are missing or stale in ${hooks.hooksPath}.`,
362
+ };
363
+ }
364
+ if (input.target === 'vscode') {
365
+ const configPath = vscodeExtensionsPath(input.repoRoot);
366
+ const configured = isVscodeRecommended(configPath);
367
+ return {
368
+ target: input.target,
369
+ adapter,
370
+ supported: true,
371
+ configured,
372
+ configPath,
373
+ message: configured
374
+ ? `Neurcode VS Code extension is recommended in ${configPath}.`
375
+ : `Neurcode VS Code extension recommendation is missing from ${configPath}.`,
376
+ };
377
+ }
378
+ const snippet = buildAgentSetupSnippet(input);
379
+ const configPath = snippet.configPath;
380
+ const configured = input.target === 'codex'
381
+ ? Boolean(configPath && isCodexConfigured(configPath))
382
+ : Boolean(configPath && isCursorConfigured(configPath));
383
+ return {
384
+ target: input.target,
385
+ adapter,
386
+ supported: true,
387
+ configured,
388
+ configPath,
389
+ message: configured
390
+ ? `Neurcode MCP is configured in ${configPath}.`
391
+ : `Neurcode MCP is not configured in ${configPath}.`,
392
+ };
393
+ }
394
+ function inspectAgentInstructions(input) {
395
+ const artifact = buildAgentInstructionArtifact(input);
396
+ if (input.target === 'claude') {
397
+ return {
398
+ target: input.target,
399
+ adapter: artifact.adapter,
400
+ supported: true,
401
+ installed: null,
402
+ filePath: artifact.filePath,
403
+ message: 'Claude Code uses installed hooks; repo instructions are optional.',
404
+ };
405
+ }
406
+ if (!artifact.filePath) {
407
+ return {
408
+ target: input.target,
409
+ adapter: artifact.adapter,
410
+ supported: false,
411
+ installed: null,
412
+ filePath: null,
413
+ message: 'No instruction destination is defined for this adapter.',
414
+ };
415
+ }
416
+ const installed = hasNeurcodeInstructions(artifact.filePath);
417
+ return {
418
+ target: input.target,
419
+ adapter: artifact.adapter,
420
+ supported: true,
421
+ installed,
422
+ filePath: artifact.filePath,
423
+ message: installed
424
+ ? `Neurcode agent instructions are installed in ${artifact.filePath}.`
425
+ : `Neurcode agent instructions are missing from ${artifact.filePath}.`,
426
+ };
427
+ }
428
+ function ensureParent(path) {
429
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(path), { recursive: true });
430
+ }
431
+ function writeCodexConfig(path) {
432
+ if (isCodexConfigured(path)) {
433
+ return {
434
+ status: 'already_configured',
435
+ configPath: path,
436
+ message: `Codex config already contains Neurcode MCP at ${path}.`,
437
+ };
438
+ }
439
+ ensureParent(path);
440
+ const existing = readText(path);
441
+ const prefix = existing.trim().length > 0 && !existing.endsWith('\n') ? '\n\n' : existing.trim().length > 0 ? '\n' : '';
442
+ (0, node_fs_1.writeFileSync)(path, `${existing}${prefix}${tomlSnippet()}`, 'utf8');
443
+ return {
444
+ status: 'written',
445
+ configPath: path,
446
+ message: `Wrote Neurcode MCP server block to ${path}.`,
447
+ };
448
+ }
449
+ function writeCursorConfig(path) {
450
+ if (isCursorConfigured(path)) {
451
+ return {
452
+ status: 'already_configured',
453
+ configPath: path,
454
+ message: `Cursor config already contains Neurcode MCP at ${path}.`,
455
+ };
456
+ }
457
+ ensureParent(path);
458
+ let parsed = {};
459
+ if ((0, node_fs_1.existsSync)(path)) {
460
+ try {
461
+ parsed = JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'));
462
+ }
463
+ catch (error) {
464
+ throw new Error(`Could not parse ${path}: ${error instanceof Error ? error.message : String(error)}`);
465
+ }
466
+ }
467
+ const mcpServers = parsed.mcpServers && typeof parsed.mcpServers === 'object' && !Array.isArray(parsed.mcpServers)
468
+ ? parsed.mcpServers
469
+ : {};
470
+ parsed.mcpServers = {
471
+ ...mcpServers,
472
+ neurcode: mcpServerEntry(),
473
+ };
474
+ (0, node_fs_1.writeFileSync)(path, `${JSON.stringify(parsed, null, 2)}\n`, 'utf8');
475
+ return {
476
+ status: 'written',
477
+ configPath: path,
478
+ message: `Wrote Neurcode MCP server entry to ${path}.`,
479
+ };
480
+ }
481
+ function writeVscodeRecommendations(path) {
482
+ if (isVscodeRecommended(path)) {
483
+ return {
484
+ status: 'already_configured',
485
+ configPath: path,
486
+ message: `VS Code extension recommendations already include ${VSCODE_EXTENSION_ID} at ${path}.`,
487
+ };
488
+ }
489
+ ensureParent(path);
490
+ let parsed = {};
491
+ if ((0, node_fs_1.existsSync)(path)) {
492
+ try {
493
+ parsed = JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'));
494
+ }
495
+ catch (error) {
496
+ throw new Error(`Could not parse ${path}: ${error instanceof Error ? error.message : String(error)}`);
497
+ }
498
+ }
499
+ const recommendations = Array.isArray(parsed.recommendations)
500
+ ? parsed.recommendations.filter((item) => typeof item === 'string')
501
+ : [];
502
+ parsed.recommendations = Array.from(new Set([...recommendations, VSCODE_EXTENSION_ID]));
503
+ (0, node_fs_1.writeFileSync)(path, `${JSON.stringify(parsed, null, 2)}\n`, 'utf8');
504
+ return {
505
+ status: 'written',
506
+ configPath: path,
507
+ message: `Added ${VSCODE_EXTENSION_ID} to VS Code extension recommendations at ${path}.`,
508
+ };
509
+ }
510
+ function writeAgentSetup(input) {
511
+ if (input.target === 'copilot') {
512
+ const result = (0, v0_governance_1.installCopilotGovernanceHooks)(input.repoRoot);
513
+ return {
514
+ status: result.added.length + result.repaired.length > 0 ? 'written' : 'already_configured',
515
+ configPath: result.hooksPath,
516
+ message: result.added.length + result.repaired.length > 0
517
+ ? `Installed Neurcode Copilot hooks in ${result.hooksPath}.`
518
+ : `Copilot hooks already contain current Neurcode runtime entries at ${result.hooksPath}.`,
519
+ };
520
+ }
521
+ if (input.target === 'codex')
522
+ return writeCodexConfig(codexConfigPath());
523
+ if (input.target === 'cursor')
524
+ return writeCursorConfig(cursorConfigPath(input.repoRoot, input.global === true));
525
+ if (input.target === 'vscode')
526
+ return writeVscodeRecommendations(vscodeExtensionsPath(input.repoRoot));
527
+ return {
528
+ status: 'unsupported',
529
+ configPath: null,
530
+ message: input.target === 'claude'
531
+ ? 'Use neurcode activate claude to install hard-deny hooks and MCP tools.'
532
+ : 'Generic MCP setup is client-specific; use the emitted snippet.',
533
+ };
534
+ }
535
+ function writeAgentInstructions(input) {
536
+ const artifact = buildAgentInstructionArtifact(input);
537
+ if (input.target === 'claude') {
538
+ return {
539
+ status: 'unsupported',
540
+ filePath: artifact.filePath,
541
+ message: 'Claude Code uses hard-deny hooks installed by neurcode activate claude.',
542
+ };
543
+ }
544
+ if (!artifact.filePath) {
545
+ return {
546
+ status: 'unsupported',
547
+ filePath: null,
548
+ message: 'Generic MCP instruction destination could not be resolved.',
549
+ };
550
+ }
551
+ if (hasNeurcodeInstructions(artifact.filePath)) {
552
+ return {
553
+ status: 'already_configured',
554
+ filePath: artifact.filePath,
555
+ message: `Neurcode agent instructions already exist in ${artifact.filePath}.`,
556
+ };
557
+ }
558
+ ensureParent(artifact.filePath);
559
+ const existing = readText(artifact.filePath);
560
+ if (input.target === 'cursor' && existing.trim().length > 0) {
561
+ (0, node_fs_1.writeFileSync)(artifact.filePath, `${artifact.body.trimEnd()}\n\n${existing}`, 'utf8');
562
+ }
563
+ else {
564
+ const prefix = existing.trim().length === 0
565
+ ? ''
566
+ : existing.endsWith('\n')
567
+ ? '\n'
568
+ : '\n\n';
569
+ (0, node_fs_1.writeFileSync)(artifact.filePath, `${existing}${prefix}${artifact.body}`, 'utf8');
570
+ }
571
+ return {
572
+ status: 'written',
573
+ filePath: artifact.filePath,
574
+ message: `Wrote Neurcode agent instructions to ${artifact.filePath}.`,
575
+ };
576
+ }
577
+ //# sourceMappingURL=agent-adapter-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-adapter-setup.js","sourceRoot":"","sources":["../../src/utils/agent-adapter-setup.ts"],"names":[],"mappings":"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"}