@neurcode-ai/cli 0.14.0 → 0.15.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 (189) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +60 -8
  3. package/dist/api-client.d.ts +284 -0
  4. package/dist/api-client.d.ts.map +1 -1
  5. package/dist/api-client.js +111 -0
  6. package/dist/api-client.js.map +1 -1
  7. package/dist/commands/activate.d.ts +82 -0
  8. package/dist/commands/activate.d.ts.map +1 -0
  9. package/dist/commands/activate.js +551 -0
  10. package/dist/commands/activate.js.map +1 -0
  11. package/dist/commands/admission.d.ts +67 -0
  12. package/dist/commands/admission.d.ts.map +1 -0
  13. package/dist/commands/admission.js +350 -0
  14. package/dist/commands/admission.js.map +1 -0
  15. package/dist/commands/agent.d.ts +3 -0
  16. package/dist/commands/agent.d.ts.map +1 -0
  17. package/dist/commands/agent.js +2045 -0
  18. package/dist/commands/agent.js.map +1 -0
  19. package/dist/commands/demo.d.ts +3 -0
  20. package/dist/commands/demo.d.ts.map +1 -0
  21. package/dist/commands/demo.js +102 -0
  22. package/dist/commands/demo.js.map +1 -0
  23. package/dist/commands/init.d.ts.map +1 -1
  24. package/dist/commands/init.js +58 -44
  25. package/dist/commands/init.js.map +1 -1
  26. package/dist/commands/login.d.ts +1 -1
  27. package/dist/commands/login.d.ts.map +1 -1
  28. package/dist/commands/login.js +44 -22
  29. package/dist/commands/login.js.map +1 -1
  30. package/dist/commands/profile.d.ts +14 -0
  31. package/dist/commands/profile.d.ts.map +1 -0
  32. package/dist/commands/profile.js +118 -0
  33. package/dist/commands/profile.js.map +1 -0
  34. package/dist/commands/quickstart.d.ts +2 -2
  35. package/dist/commands/quickstart.d.ts.map +1 -1
  36. package/dist/commands/quickstart.js +31 -30
  37. package/dist/commands/quickstart.js.map +1 -1
  38. package/dist/commands/remediate-export.d.ts +6 -1
  39. package/dist/commands/remediate-export.d.ts.map +1 -1
  40. package/dist/commands/remediate-export.js +359 -7
  41. package/dist/commands/remediate-export.js.map +1 -1
  42. package/dist/commands/replay.d.ts.map +1 -1
  43. package/dist/commands/replay.js +84 -0
  44. package/dist/commands/replay.js.map +1 -1
  45. package/dist/commands/run.d.ts +3 -0
  46. package/dist/commands/run.d.ts.map +1 -0
  47. package/dist/commands/run.js +98 -0
  48. package/dist/commands/run.js.map +1 -0
  49. package/dist/commands/runtime-adapter.d.ts +8 -0
  50. package/dist/commands/runtime-adapter.d.ts.map +1 -0
  51. package/dist/commands/runtime-adapter.js +375 -0
  52. package/dist/commands/runtime-adapter.js.map +1 -0
  53. package/dist/commands/runtime-doctor.d.ts +6 -0
  54. package/dist/commands/runtime-doctor.d.ts.map +1 -0
  55. package/dist/commands/runtime-doctor.js +478 -0
  56. package/dist/commands/runtime-doctor.js.map +1 -0
  57. package/dist/commands/runtime-report.d.ts +13 -0
  58. package/dist/commands/runtime-report.d.ts.map +1 -0
  59. package/dist/commands/runtime-report.js +81 -0
  60. package/dist/commands/runtime-report.js.map +1 -0
  61. package/dist/commands/runtime-sync.d.ts +17 -0
  62. package/dist/commands/runtime-sync.d.ts.map +1 -0
  63. package/dist/commands/runtime-sync.js +656 -0
  64. package/dist/commands/runtime-sync.js.map +1 -0
  65. package/dist/commands/runtime.d.ts +16 -0
  66. package/dist/commands/runtime.d.ts.map +1 -0
  67. package/dist/commands/runtime.js +380 -0
  68. package/dist/commands/runtime.js.map +1 -0
  69. package/dist/commands/session-hook.d.ts +35 -0
  70. package/dist/commands/session-hook.d.ts.map +1 -0
  71. package/dist/commands/session-hook.js +1297 -0
  72. package/dist/commands/session-hook.js.map +1 -0
  73. package/dist/commands/session.d.ts +91 -0
  74. package/dist/commands/session.d.ts.map +1 -1
  75. package/dist/commands/session.js +1226 -0
  76. package/dist/commands/session.js.map +1 -1
  77. package/dist/commands/whoami.d.ts +7 -4
  78. package/dist/commands/whoami.d.ts.map +1 -1
  79. package/dist/commands/whoami.js +59 -34
  80. package/dist/commands/whoami.js.map +1 -1
  81. package/dist/config.d.ts.map +1 -1
  82. package/dist/config.js +24 -5
  83. package/dist/config.js.map +1 -1
  84. package/dist/daemon/routes.d.ts.map +1 -1
  85. package/dist/daemon/routes.js +8 -0
  86. package/dist/daemon/routes.js.map +1 -1
  87. package/dist/daemon/server.d.ts.map +1 -1
  88. package/dist/daemon/server.js +88 -0
  89. package/dist/daemon/server.js.map +1 -1
  90. package/dist/governance/impact-analysis.d.ts +27 -0
  91. package/dist/governance/impact-analysis.d.ts.map +1 -0
  92. package/dist/governance/impact-analysis.js +274 -0
  93. package/dist/governance/impact-analysis.js.map +1 -0
  94. package/dist/index.js +472 -29
  95. package/dist/index.js.map +1 -1
  96. package/dist/intent-engine/matcher.d.ts.map +1 -1
  97. package/dist/intent-engine/matcher.js +3 -12
  98. package/dist/intent-engine/matcher.js.map +1 -1
  99. package/dist/utils/admission-artifact.d.ts +59 -0
  100. package/dist/utils/admission-artifact.d.ts.map +1 -0
  101. package/dist/utils/admission-artifact.js +410 -0
  102. package/dist/utils/admission-artifact.js.map +1 -0
  103. package/dist/utils/agent-adapter-setup.d.ts +80 -0
  104. package/dist/utils/agent-adapter-setup.d.ts.map +1 -0
  105. package/dist/utils/agent-adapter-setup.js +577 -0
  106. package/dist/utils/agent-adapter-setup.js.map +1 -0
  107. package/dist/utils/agent-guard-supervisor.d.ts +75 -0
  108. package/dist/utils/agent-guard-supervisor.d.ts.map +1 -0
  109. package/dist/utils/agent-guard-supervisor.js +388 -0
  110. package/dist/utils/agent-guard-supervisor.js.map +1 -0
  111. package/dist/utils/agent-guard.d.ts +92 -0
  112. package/dist/utils/agent-guard.d.ts.map +1 -0
  113. package/dist/utils/agent-guard.js +326 -0
  114. package/dist/utils/agent-guard.js.map +1 -0
  115. package/dist/utils/agent-session-launcher.d.ts +89 -0
  116. package/dist/utils/agent-session-launcher.d.ts.map +1 -0
  117. package/dist/utils/agent-session-launcher.js +308 -0
  118. package/dist/utils/agent-session-launcher.js.map +1 -0
  119. package/dist/utils/bash-command-analysis.d.ts +19 -0
  120. package/dist/utils/bash-command-analysis.d.ts.map +1 -0
  121. package/dist/utils/bash-command-analysis.js +295 -0
  122. package/dist/utils/bash-command-analysis.js.map +1 -0
  123. package/dist/utils/consequence-nudges.d.ts +30 -0
  124. package/dist/utils/consequence-nudges.d.ts.map +1 -0
  125. package/dist/utils/consequence-nudges.js +313 -0
  126. package/dist/utils/consequence-nudges.js.map +1 -0
  127. package/dist/utils/drift-intelligence.d.ts.map +1 -1
  128. package/dist/utils/drift-intelligence.js +29 -7
  129. package/dist/utils/drift-intelligence.js.map +1 -1
  130. package/dist/utils/git-coverage.d.ts +57 -0
  131. package/dist/utils/git-coverage.d.ts.map +1 -0
  132. package/dist/utils/git-coverage.js +302 -0
  133. package/dist/utils/git-coverage.js.map +1 -0
  134. package/dist/utils/gitignore.d.ts.map +1 -1
  135. package/dist/utils/gitignore.js +2 -1
  136. package/dist/utils/gitignore.js.map +1 -1
  137. package/dist/utils/governed-intent.d.ts +10 -0
  138. package/dist/utils/governed-intent.d.ts.map +1 -0
  139. package/dist/utils/governed-intent.js +108 -0
  140. package/dist/utils/governed-intent.js.map +1 -0
  141. package/dist/utils/hook-heartbeat.d.ts +55 -0
  142. package/dist/utils/hook-heartbeat.d.ts.map +1 -0
  143. package/dist/utils/hook-heartbeat.js +116 -0
  144. package/dist/utils/hook-heartbeat.js.map +1 -0
  145. package/dist/utils/intent-continuity.d.ts +21 -0
  146. package/dist/utils/intent-continuity.d.ts.map +1 -0
  147. package/dist/utils/intent-continuity.js +192 -0
  148. package/dist/utils/intent-continuity.js.map +1 -0
  149. package/dist/utils/messages.d.ts +1 -1
  150. package/dist/utils/messages.d.ts.map +1 -1
  151. package/dist/utils/messages.js +24 -21
  152. package/dist/utils/messages.js.map +1 -1
  153. package/dist/utils/runtime-companion.d.ts +137 -0
  154. package/dist/utils/runtime-companion.d.ts.map +1 -0
  155. package/dist/utils/runtime-companion.js +231 -0
  156. package/dist/utils/runtime-companion.js.map +1 -0
  157. package/dist/utils/runtime-connection.d.ts +46 -0
  158. package/dist/utils/runtime-connection.d.ts.map +1 -0
  159. package/dist/utils/runtime-connection.js +148 -0
  160. package/dist/utils/runtime-connection.js.map +1 -0
  161. package/dist/utils/runtime-evidence.d.ts +68 -0
  162. package/dist/utils/runtime-evidence.d.ts.map +1 -0
  163. package/dist/utils/runtime-evidence.js +248 -0
  164. package/dist/utils/runtime-evidence.js.map +1 -0
  165. package/dist/utils/runtime-live.d.ts +33 -0
  166. package/dist/utils/runtime-live.d.ts.map +1 -0
  167. package/dist/utils/runtime-live.js +361 -0
  168. package/dist/utils/runtime-live.js.map +1 -0
  169. package/dist/utils/runtime-outbox.d.ts +76 -0
  170. package/dist/utils/runtime-outbox.d.ts.map +1 -0
  171. package/dist/utils/runtime-outbox.js +410 -0
  172. package/dist/utils/runtime-outbox.js.map +1 -0
  173. package/dist/utils/runtime-receipt.d.ts +50 -0
  174. package/dist/utils/runtime-receipt.d.ts.map +1 -0
  175. package/dist/utils/runtime-receipt.js +223 -0
  176. package/dist/utils/runtime-receipt.js.map +1 -0
  177. package/dist/utils/state.d.ts +21 -0
  178. package/dist/utils/state.d.ts.map +1 -1
  179. package/dist/utils/state.js +30 -0
  180. package/dist/utils/state.js.map +1 -1
  181. package/dist/utils/structural-understanding.d.ts +334 -0
  182. package/dist/utils/structural-understanding.d.ts.map +1 -0
  183. package/dist/utils/structural-understanding.js +2316 -0
  184. package/dist/utils/structural-understanding.js.map +1 -0
  185. package/dist/utils/v0-governance.d.ts +197 -0
  186. package/dist/utils/v0-governance.d.ts.map +1 -0
  187. package/dist/utils/v0-governance.js +904 -0
  188. package/dist/utils/v0-governance.js.map +1 -0
  189. package/package.json +11 -12
@@ -0,0 +1,326 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AGENT_GUARD_SCHEMA_VERSION = void 0;
4
+ exports.captureAgentGuardSnapshot = captureAgentGuardSnapshot;
5
+ exports.createAgentGuardArtifact = createAgentGuardArtifact;
6
+ exports.defaultAgentGuardPath = defaultAgentGuardPath;
7
+ exports.writeAgentGuardArtifact = writeAgentGuardArtifact;
8
+ exports.readAgentGuardArtifact = readAgentGuardArtifact;
9
+ exports.evaluateAgentGuard = evaluateAgentGuard;
10
+ exports.markAgentGuardFinished = markAgentGuardFinished;
11
+ const node_crypto_1 = require("node:crypto");
12
+ const node_child_process_1 = require("node:child_process");
13
+ const node_fs_1 = require("node:fs");
14
+ const node_path_1 = require("node:path");
15
+ exports.AGENT_GUARD_SCHEMA_VERSION = 'neurcode.agent-guard.v1';
16
+ function normalizeRepoPath(value) {
17
+ return value.replace(/\\/g, '/').replace(/^\.\//, '').trim();
18
+ }
19
+ function sha256Hex(input) {
20
+ return (0, node_crypto_1.createHash)('sha256').update(input).digest('hex');
21
+ }
22
+ function isInternalPath(path) {
23
+ return path === '.neurcode' || path.startsWith('.neurcode/');
24
+ }
25
+ function uniqueSorted(values) {
26
+ return [...new Set(values.map(normalizeRepoPath).filter(Boolean))]
27
+ .sort((left, right) => left.localeCompare(right));
28
+ }
29
+ function listRepoFiles(repoRoot) {
30
+ const output = (0, node_child_process_1.execFileSync)('git', ['ls-files', '-z', '--cached', '--others', '--exclude-standard'], { cwd: repoRoot, encoding: 'utf8', maxBuffer: 20 * 1024 * 1024 });
31
+ return uniqueSorted(output.split('\0')).filter((path) => !isInternalPath(path));
32
+ }
33
+ function treeHash(files) {
34
+ return sha256Hex(JSON.stringify(files.map((file) => ({
35
+ path: file.path,
36
+ digest: file.digest,
37
+ size: file.size,
38
+ }))));
39
+ }
40
+ function captureAgentGuardSnapshot(repoRoot) {
41
+ const files = [];
42
+ for (const path of listRepoFiles(repoRoot)) {
43
+ const absolutePath = (0, node_path_1.resolve)(repoRoot, path);
44
+ try {
45
+ const stat = (0, node_fs_1.statSync)(absolutePath);
46
+ if (!stat.isFile())
47
+ continue;
48
+ files.push({
49
+ path,
50
+ digest: sha256Hex((0, node_fs_1.readFileSync)(absolutePath)),
51
+ size: stat.size,
52
+ });
53
+ }
54
+ catch {
55
+ // A file can disappear between git listing and read. The next evaluation
56
+ // will classify it from the stable baseline/current snapshot pair.
57
+ }
58
+ }
59
+ return files.sort((left, right) => left.path.localeCompare(right.path));
60
+ }
61
+ function createAgentGuardArtifact(input) {
62
+ const startedAt = input.startedAt || new Date().toISOString();
63
+ const files = captureAgentGuardSnapshot(input.repoRoot);
64
+ return {
65
+ schemaVersion: exports.AGENT_GUARD_SCHEMA_VERSION,
66
+ guardId: `agent_guard_${(0, node_crypto_1.randomUUID)()}`,
67
+ sessionId: input.sessionId,
68
+ agent: input.agent,
69
+ adapter: input.adapter,
70
+ repoRoot: input.repoRoot,
71
+ startedAt,
72
+ updatedAt: startedAt,
73
+ finishedAt: null,
74
+ active: true,
75
+ baseline: {
76
+ fileCount: files.length,
77
+ treeHash: treeHash(files),
78
+ files,
79
+ },
80
+ privacy: {
81
+ metadataOnly: true,
82
+ sourceUploaded: false,
83
+ sourceIncluded: false,
84
+ localContentDigestsOnly: true,
85
+ },
86
+ };
87
+ }
88
+ function defaultAgentGuardPath(repoRoot, sessionId) {
89
+ return (0, node_path_1.resolve)(repoRoot, '.neurcode', 'agent-guard', `${sessionId}.json`);
90
+ }
91
+ function activePointerPath(repoRoot) {
92
+ return (0, node_path_1.resolve)(repoRoot, '.neurcode', 'agent-guard', 'active.json');
93
+ }
94
+ function writeAgentGuardArtifact(repoRoot, artifact, artifactPath) {
95
+ const path = artifactPath && artifactPath.trim()
96
+ ? (0, node_path_1.resolve)(repoRoot, artifactPath)
97
+ : defaultAgentGuardPath(repoRoot, artifact.sessionId);
98
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(path), { recursive: true });
99
+ (0, node_fs_1.writeFileSync)(path, JSON.stringify(artifact, null, 2) + '\n', 'utf8');
100
+ const pointerPath = activePointerPath(repoRoot);
101
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(pointerPath), { recursive: true });
102
+ (0, node_fs_1.writeFileSync)(pointerPath, JSON.stringify({ sessionId: artifact.sessionId, path }, null, 2) + '\n', 'utf8');
103
+ return path;
104
+ }
105
+ function readActivePointer(repoRoot) {
106
+ const path = activePointerPath(repoRoot);
107
+ if (!(0, node_fs_1.existsSync)(path))
108
+ return null;
109
+ try {
110
+ const parsed = JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'));
111
+ if (!parsed || typeof parsed !== 'object')
112
+ return null;
113
+ return parsed;
114
+ }
115
+ catch {
116
+ return null;
117
+ }
118
+ }
119
+ function isAgentGuardArtifact(value) {
120
+ if (!value || typeof value !== 'object' || Array.isArray(value))
121
+ return false;
122
+ const record = value;
123
+ const baseline = record.baseline;
124
+ return record.schemaVersion === exports.AGENT_GUARD_SCHEMA_VERSION
125
+ && typeof record.guardId === 'string'
126
+ && typeof record.sessionId === 'string'
127
+ && typeof record.agent === 'string'
128
+ && typeof record.adapter === 'string'
129
+ && typeof record.repoRoot === 'string'
130
+ && typeof record.startedAt === 'string'
131
+ && typeof record.updatedAt === 'string'
132
+ && typeof record.active === 'boolean'
133
+ && !!baseline
134
+ && Array.isArray(baseline.files)
135
+ && typeof baseline.treeHash === 'string';
136
+ }
137
+ function readAgentGuardArtifact(input) {
138
+ const pointer = readActivePointer(input.repoRoot);
139
+ const path = input.artifactPath && input.artifactPath.trim()
140
+ ? (0, node_path_1.resolve)(input.repoRoot, input.artifactPath)
141
+ : input.sessionId
142
+ ? defaultAgentGuardPath(input.repoRoot, input.sessionId)
143
+ : pointer?.path || '';
144
+ if (!path) {
145
+ return {
146
+ path: defaultAgentGuardPath(input.repoRoot, input.sessionId || '<session-id>'),
147
+ exists: false,
148
+ artifact: null,
149
+ error: 'No active agent guard found. Start one with `neurcode agent guard start`.',
150
+ };
151
+ }
152
+ if (!(0, node_fs_1.existsSync)(path)) {
153
+ return { path, exists: false, artifact: null };
154
+ }
155
+ try {
156
+ const parsed = JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'));
157
+ if (!isAgentGuardArtifact(parsed)) {
158
+ return { path, exists: true, artifact: null, error: 'Invalid agent guard artifact schema.' };
159
+ }
160
+ return { path, exists: true, artifact: parsed };
161
+ }
162
+ catch (error) {
163
+ return {
164
+ path,
165
+ exists: true,
166
+ artifact: null,
167
+ error: error instanceof Error ? error.message : String(error),
168
+ };
169
+ }
170
+ }
171
+ function snapshotMap(files) {
172
+ return new Map(files.map((file) => [file.path, file]));
173
+ }
174
+ function changedFiles(baseline, current) {
175
+ const before = snapshotMap(baseline);
176
+ const now = snapshotMap(current);
177
+ const changes = [];
178
+ for (const [path, previous] of before.entries()) {
179
+ const latest = now.get(path);
180
+ if (!latest) {
181
+ changes.push({ path, changeType: 'deleted' });
182
+ }
183
+ else if (latest.digest !== previous.digest || latest.size !== previous.size) {
184
+ changes.push({ path, changeType: 'modified' });
185
+ }
186
+ }
187
+ for (const path of now.keys()) {
188
+ if (!before.has(path))
189
+ changes.push({ path, changeType: 'created' });
190
+ }
191
+ return changes.sort((left, right) => left.path.localeCompare(right.path));
192
+ }
193
+ function eventTimestampAtOrAfter(event, startedAt) {
194
+ const eventMs = Date.parse(event.ts);
195
+ const startMs = Date.parse(startedAt);
196
+ if (!Number.isFinite(eventMs) || !Number.isFinite(startMs))
197
+ return true;
198
+ return eventMs >= startMs;
199
+ }
200
+ function runtimeEventType(event) {
201
+ const detail = event.detail && typeof event.detail === 'object'
202
+ ? event.detail
203
+ : null;
204
+ return typeof detail?.runtimeEventType === 'string' ? detail.runtimeEventType : null;
205
+ }
206
+ function emptyEvidence() {
207
+ return {
208
+ preWriteCallCount: 0,
209
+ allowedPreWriteCheckCount: 0,
210
+ deniedPreWriteCheckCount: 0,
211
+ postWriteObservationCount: 0,
212
+ latestEventAt: null,
213
+ };
214
+ }
215
+ function touchLatest(evidence, event) {
216
+ if (!evidence.latestEventAt) {
217
+ evidence.latestEventAt = event.ts;
218
+ return;
219
+ }
220
+ const currentMs = Date.parse(evidence.latestEventAt);
221
+ const nextMs = Date.parse(event.ts);
222
+ if (!Number.isFinite(currentMs) || !Number.isFinite(nextMs) || nextMs >= currentMs) {
223
+ evidence.latestEventAt = event.ts;
224
+ }
225
+ }
226
+ function evidenceForSession(session, startedAt) {
227
+ const evidence = new Map();
228
+ const forPath = (path) => {
229
+ const normalized = normalizeRepoPath(path);
230
+ const existing = evidence.get(normalized);
231
+ if (existing)
232
+ return existing;
233
+ const next = emptyEvidence();
234
+ evidence.set(normalized, next);
235
+ return next;
236
+ };
237
+ for (const event of session.events) {
238
+ if (!eventTimestampAtOrAfter(event, startedAt))
239
+ continue;
240
+ const path = typeof event.filePath === 'string' ? normalizeRepoPath(event.filePath) : '';
241
+ if (!path)
242
+ continue;
243
+ const item = forPath(path);
244
+ if (event.type === 'agent_runtime_call' && runtimeEventType(event) === 'edit.before') {
245
+ item.preWriteCallCount += 1;
246
+ touchLatest(item, event);
247
+ }
248
+ else if (event.type === 'agent_runtime_call' && runtimeEventType(event) === 'edit.after') {
249
+ item.postWriteObservationCount += 1;
250
+ touchLatest(item, event);
251
+ }
252
+ else if (event.type === 'check_ok' || event.type === 'check_warn') {
253
+ item.allowedPreWriteCheckCount += 1;
254
+ touchLatest(item, event);
255
+ }
256
+ else if (event.type === 'check_block') {
257
+ item.deniedPreWriteCheckCount += 1;
258
+ touchLatest(item, event);
259
+ }
260
+ }
261
+ return evidence;
262
+ }
263
+ function classify(evidence) {
264
+ if (evidence.allowedPreWriteCheckCount > 0)
265
+ return 'verified_prewrite';
266
+ if (evidence.deniedPreWriteCheckCount > 0)
267
+ return 'denied_but_changed';
268
+ if (evidence.preWriteCallCount > 0)
269
+ return 'prewrite_call_without_verdict';
270
+ if (evidence.postWriteObservationCount > 0)
271
+ return 'observed_after_only';
272
+ return 'unverified_write';
273
+ }
274
+ function evaluateAgentGuard(repoRoot, artifact, session) {
275
+ const generatedAt = new Date().toISOString();
276
+ const current = captureAgentGuardSnapshot(repoRoot);
277
+ const evidence = evidenceForSession(session, artifact.startedAt);
278
+ const files = changedFiles(artifact.baseline.files, current)
279
+ .map((change) => {
280
+ const item = evidence.get(change.path) || emptyEvidence();
281
+ return {
282
+ ...change,
283
+ classification: classify(item),
284
+ evidence: item,
285
+ };
286
+ });
287
+ const summary = {
288
+ changedFiles: files.length,
289
+ verifiedPrewrite: files.filter((file) => file.classification === 'verified_prewrite').length,
290
+ unverifiedWrites: files.filter((file) => file.classification === 'unverified_write').length,
291
+ deniedButChanged: files.filter((file) => file.classification === 'denied_but_changed').length,
292
+ observedAfterOnly: files.filter((file) => file.classification === 'observed_after_only').length,
293
+ prewriteCallsWithoutVerdict: files.filter((file) => file.classification === 'prewrite_call_without_verdict').length,
294
+ };
295
+ const pass = summary.unverifiedWrites === 0
296
+ && summary.deniedButChanged === 0
297
+ && summary.observedAfterOnly === 0
298
+ && summary.prewriteCallsWithoutVerdict === 0;
299
+ return {
300
+ schemaVersion: exports.AGENT_GUARD_SCHEMA_VERSION,
301
+ ok: true,
302
+ pass,
303
+ status: pass ? 'following_contract' : 'attention_required',
304
+ generatedAt,
305
+ guardId: artifact.guardId,
306
+ sessionId: artifact.sessionId,
307
+ agent: artifact.agent,
308
+ adapter: artifact.adapter,
309
+ repoRoot,
310
+ summary,
311
+ changedFiles: files,
312
+ nextAction: pass
313
+ ? 'Continue; changed files have matching allowed pre-write governance evidence.'
314
+ : 'Review unverified or denied-but-changed paths. Re-run agent checks before edits, or approve exact paths before retrying.',
315
+ privacy: artifact.privacy,
316
+ };
317
+ }
318
+ function markAgentGuardFinished(artifact, finishedAt = new Date().toISOString()) {
319
+ return {
320
+ ...artifact,
321
+ active: false,
322
+ updatedAt: finishedAt,
323
+ finishedAt,
324
+ };
325
+ }
326
+ //# sourceMappingURL=agent-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-guard.js","sourceRoot":"","sources":["../../src/utils/agent-guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { type AgentRuntimeAdapterId, type AgentRuntimeEnforcementLevel, type GovernanceSession } from '@neurcode-ai/governance-runtime';
2
+ export declare const AGENT_SESSION_LAUNCH_SCHEMA_VERSION: "neurcode.agent-session-launch.v1";
3
+ export declare const AGENT_SESSION_HANDSHAKE_SCHEMA_VERSION: "neurcode.agent-session-handshake.v1";
4
+ export type AgentSessionLauncherAgent = 'claude' | 'copilot' | 'codex' | 'cursor' | 'gemini' | 'generic-mcp' | 'vscode';
5
+ export type AgentHandshakeStatus = 'awaiting_agent_prompt' | 'awaiting_plan_capture' | 'observe_only' | 'mcp_connected' | 'prompt_seen' | 'plan_captured';
6
+ export interface AgentSessionLaunchOptions {
7
+ agent?: string;
8
+ goal: string;
9
+ dir?: string;
10
+ plan?: string;
11
+ activate?: boolean;
12
+ forceProfile?: boolean;
13
+ actor?: string;
14
+ }
15
+ export interface AgentSessionLaunchResult {
16
+ schemaVersion: typeof AGENT_SESSION_LAUNCH_SCHEMA_VERSION;
17
+ ok: true;
18
+ generatedAt: string;
19
+ repoRoot: string;
20
+ privacy: {
21
+ metadataOnly: true;
22
+ sourceUploaded: false;
23
+ sourceIncluded: false;
24
+ };
25
+ profile: {
26
+ status: string;
27
+ refreshed: boolean;
28
+ profileHash: string;
29
+ topologyHash: string;
30
+ trackedFileCount: number;
31
+ reasons: string[];
32
+ };
33
+ session: {
34
+ sessionId: string;
35
+ goal: string;
36
+ scopeMode: GovernanceSession['contract']['scopeMode'];
37
+ allowedGlobs: string[];
38
+ approvalRequiredGlobs: string[];
39
+ planRevision: number | null;
40
+ };
41
+ agent: {
42
+ requested: string;
43
+ normalized: AgentSessionLauncherAgent;
44
+ adapter: AgentRuntimeAdapterId;
45
+ enforcementLevel: AgentRuntimeEnforcementLevel;
46
+ compatibilityMode: string;
47
+ automatic: boolean;
48
+ hardDeny: boolean;
49
+ enforceable: string[];
50
+ advisoryOnly: string[];
51
+ supervisorSupported: boolean;
52
+ description: string;
53
+ };
54
+ activation: {
55
+ attempted: boolean;
56
+ hooksInstalled?: boolean;
57
+ mcpConfigured?: boolean;
58
+ };
59
+ handshake: {
60
+ status: AgentHandshakeStatus;
61
+ required: boolean;
62
+ nextEvent: string | null;
63
+ starterPrompt: string;
64
+ instructions: string[];
65
+ };
66
+ commands: {
67
+ status: string;
68
+ approve: string;
69
+ finish: string;
70
+ capturePlan: string;
71
+ };
72
+ }
73
+ export interface AgentSessionLauncherState {
74
+ agent: AgentSessionLaunchResult['agent'];
75
+ handshakeStatus: AgentHandshakeStatus;
76
+ launchedAt?: string;
77
+ promptSeenAt?: string;
78
+ launchEventId?: string;
79
+ }
80
+ export declare function adapterForLauncherAgent(agent: AgentSessionLauncherAgent): AgentRuntimeAdapterId;
81
+ export declare function latestAgentLauncherState(session: GovernanceSession): AgentSessionLauncherState | null;
82
+ export declare function launchAgentSession(options: AgentSessionLaunchOptions): Promise<AgentSessionLaunchResult>;
83
+ export declare function recordLauncherHandshake(repoRoot: string, session: GovernanceSession, input: {
84
+ handshakeStatus: AgentHandshakeStatus;
85
+ promptMatched?: 'session_id' | 'active_launcher' | 'manual';
86
+ source?: string;
87
+ message?: string;
88
+ }): GovernanceSession;
89
+ //# sourceMappingURL=agent-session-launcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session-launcher.d.ts","sourceRoot":"","sources":["../../src/utils/agent-session-launcher.ts"],"names":[],"mappings":"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"}