@neurcode-ai/cli 0.9.65 → 0.10.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 (260) hide show
  1. package/dist/commands/bootstrap-policy.d.ts +29 -0
  2. package/dist/commands/bootstrap-policy.d.ts.map +1 -0
  3. package/dist/commands/bootstrap-policy.js +334 -0
  4. package/dist/commands/bootstrap-policy.js.map +1 -0
  5. package/dist/commands/doctor.d.ts.map +1 -1
  6. package/dist/commands/doctor.js +82 -0
  7. package/dist/commands/doctor.js.map +1 -1
  8. package/dist/commands/governance.d.ts +3 -0
  9. package/dist/commands/governance.d.ts.map +1 -0
  10. package/dist/commands/governance.js +390 -0
  11. package/dist/commands/governance.js.map +1 -0
  12. package/dist/commands/quickstart.d.ts +21 -0
  13. package/dist/commands/quickstart.d.ts.map +1 -0
  14. package/dist/commands/quickstart.js +178 -0
  15. package/dist/commands/quickstart.js.map +1 -0
  16. package/dist/commands/remediate-export.d.ts +36 -0
  17. package/dist/commands/remediate-export.d.ts.map +1 -0
  18. package/dist/commands/remediate-export.js +1072 -0
  19. package/dist/commands/remediate-export.js.map +1 -0
  20. package/dist/commands/replay.d.ts.map +1 -1
  21. package/dist/commands/replay.js +14 -0
  22. package/dist/commands/replay.js.map +1 -1
  23. package/dist/commands/session.d.ts +7 -0
  24. package/dist/commands/session.d.ts.map +1 -1
  25. package/dist/commands/session.js +156 -0
  26. package/dist/commands/session.js.map +1 -1
  27. package/dist/commands/start-intent.d.ts.map +1 -1
  28. package/dist/commands/start-intent.js +61 -11
  29. package/dist/commands/start-intent.js.map +1 -1
  30. package/dist/commands/verify-guidance.d.ts +5 -0
  31. package/dist/commands/verify-guidance.d.ts.map +1 -0
  32. package/dist/commands/verify-guidance.js +49 -0
  33. package/dist/commands/verify-guidance.js.map +1 -0
  34. package/dist/commands/verify-output.d.ts +37 -0
  35. package/dist/commands/verify-output.d.ts.map +1 -0
  36. package/dist/commands/verify-output.js +572 -0
  37. package/dist/commands/verify-output.js.map +1 -0
  38. package/dist/commands/verify-render.d.ts +41 -0
  39. package/dist/commands/verify-render.d.ts.map +1 -0
  40. package/dist/commands/verify-render.js +457 -0
  41. package/dist/commands/verify-render.js.map +1 -0
  42. package/dist/commands/verify.d.ts.map +1 -1
  43. package/dist/commands/verify.js +384 -1091
  44. package/dist/commands/verify.js.map +1 -1
  45. package/dist/commands/workspace.d.ts.map +1 -1
  46. package/dist/commands/workspace.js +3 -14
  47. package/dist/commands/workspace.js.map +1 -1
  48. package/dist/context-engine/graph.d.ts.map +1 -1
  49. package/dist/context-engine/graph.js +69 -7
  50. package/dist/context-engine/graph.js.map +1 -1
  51. package/dist/context-engine/scanner.d.ts.map +1 -1
  52. package/dist/context-engine/scanner.js +9 -2
  53. package/dist/context-engine/scanner.js.map +1 -1
  54. package/dist/daemon/compatibility/execution.d.ts +42 -0
  55. package/dist/daemon/compatibility/execution.d.ts.map +1 -0
  56. package/dist/daemon/compatibility/execution.js +183 -0
  57. package/dist/daemon/compatibility/execution.js.map +1 -0
  58. package/dist/daemon/compatibility/mutation.d.ts +24 -0
  59. package/dist/daemon/compatibility/mutation.d.ts.map +1 -0
  60. package/dist/daemon/compatibility/mutation.js +724 -0
  61. package/dist/daemon/compatibility/mutation.js.map +1 -0
  62. package/dist/daemon/routes.d.ts +19 -0
  63. package/dist/daemon/routes.d.ts.map +1 -0
  64. package/dist/daemon/routes.js +123 -0
  65. package/dist/daemon/routes.js.map +1 -0
  66. package/dist/daemon/runtime/execution-bus.d.ts +217 -0
  67. package/dist/daemon/runtime/execution-bus.d.ts.map +1 -0
  68. package/dist/daemon/runtime/execution-bus.js +1420 -0
  69. package/dist/daemon/runtime/execution-bus.js.map +1 -0
  70. package/dist/daemon/runtime/workspace-runtime.d.ts +280 -0
  71. package/dist/daemon/runtime/workspace-runtime.d.ts.map +1 -0
  72. package/dist/daemon/runtime/workspace-runtime.js +1473 -0
  73. package/dist/daemon/runtime/workspace-runtime.js.map +1 -0
  74. package/dist/daemon/server.d.ts.map +1 -1
  75. package/dist/daemon/server.js +171 -874
  76. package/dist/daemon/server.js.map +1 -1
  77. package/dist/daemon/shaping.d.ts +11 -0
  78. package/dist/daemon/shaping.d.ts.map +1 -0
  79. package/dist/daemon/shaping.js +240 -0
  80. package/dist/daemon/shaping.js.map +1 -0
  81. package/dist/governance/canonical-invariants.d.ts +88 -0
  82. package/dist/governance/canonical-invariants.d.ts.map +1 -0
  83. package/dist/governance/canonical-invariants.js +197 -0
  84. package/dist/governance/canonical-invariants.js.map +1 -0
  85. package/dist/governance/canonical-ordering.d.ts +76 -0
  86. package/dist/governance/canonical-ordering.d.ts.map +1 -0
  87. package/dist/governance/canonical-ordering.js +189 -0
  88. package/dist/governance/canonical-ordering.js.map +1 -0
  89. package/dist/governance/canonical-pipeline.d.ts +9 -1
  90. package/dist/governance/canonical-pipeline.d.ts.map +1 -1
  91. package/dist/governance/canonical-pipeline.js +367 -24
  92. package/dist/governance/canonical-pipeline.js.map +1 -1
  93. package/dist/governance/diff-line-provenance.d.ts +59 -0
  94. package/dist/governance/diff-line-provenance.d.ts.map +1 -0
  95. package/dist/governance/diff-line-provenance.js +118 -0
  96. package/dist/governance/diff-line-provenance.js.map +1 -0
  97. package/dist/governance/pilot-readiness.d.ts +34 -0
  98. package/dist/governance/pilot-readiness.d.ts.map +1 -0
  99. package/dist/governance/pilot-readiness.js +226 -0
  100. package/dist/governance/pilot-readiness.js.map +1 -0
  101. package/dist/governance/policy-parity-validator.d.ts +62 -0
  102. package/dist/governance/policy-parity-validator.d.ts.map +1 -0
  103. package/dist/governance/policy-parity-validator.js +137 -0
  104. package/dist/governance/policy-parity-validator.js.map +1 -0
  105. package/dist/governance/remediation-boundary.d.ts +55 -0
  106. package/dist/governance/remediation-boundary.d.ts.map +1 -0
  107. package/dist/governance/remediation-boundary.js +120 -0
  108. package/dist/governance/remediation-boundary.js.map +1 -0
  109. package/dist/governance/structural-cache.d.ts +103 -0
  110. package/dist/governance/structural-cache.d.ts.map +1 -0
  111. package/dist/governance/structural-cache.js +235 -0
  112. package/dist/governance/structural-cache.js.map +1 -0
  113. package/dist/governance/structural-on-diff.d.ts +22 -2
  114. package/dist/governance/structural-on-diff.d.ts.map +1 -1
  115. package/dist/governance/structural-on-diff.js +36 -4
  116. package/dist/governance/structural-on-diff.js.map +1 -1
  117. package/dist/governance/structural-policy-merge.d.ts +8 -0
  118. package/dist/governance/structural-policy-merge.d.ts.map +1 -1
  119. package/dist/governance/structural-policy-merge.js +7 -0
  120. package/dist/governance/structural-policy-merge.js.map +1 -1
  121. package/dist/governance/verify-runtime-guard.d.ts +99 -0
  122. package/dist/governance/verify-runtime-guard.d.ts.map +1 -0
  123. package/dist/governance/verify-runtime-guard.js +129 -0
  124. package/dist/governance/verify-runtime-guard.js.map +1 -0
  125. package/dist/index.js +277 -77
  126. package/dist/index.js.map +1 -1
  127. package/dist/intent-engine/repo-classifier.d.ts +64 -0
  128. package/dist/intent-engine/repo-classifier.d.ts.map +1 -0
  129. package/dist/intent-engine/repo-classifier.js +178 -0
  130. package/dist/intent-engine/repo-classifier.js.map +1 -0
  131. package/dist/structural-rules/index.d.ts +4 -0
  132. package/dist/structural-rules/index.d.ts.map +1 -1
  133. package/dist/structural-rules/index.js +18 -1
  134. package/dist/structural-rules/index.js.map +1 -1
  135. package/dist/structural-rules/python/PY003-broad-except-clause.d.ts +21 -0
  136. package/dist/structural-rules/python/PY003-broad-except-clause.d.ts.map +1 -1
  137. package/dist/structural-rules/python/PY003-broad-except-clause.js +212 -21
  138. package/dist/structural-rules/python/PY003-broad-except-clause.js.map +1 -1
  139. package/dist/structural-rules/python/PY011-thread-lifecycle.d.ts +11 -0
  140. package/dist/structural-rules/python/PY011-thread-lifecycle.d.ts.map +1 -0
  141. package/dist/structural-rules/python/PY011-thread-lifecycle.js +97 -0
  142. package/dist/structural-rules/python/PY011-thread-lifecycle.js.map +1 -0
  143. package/dist/structural-rules/python/PY012-asyncio-run-misuse.d.ts +11 -0
  144. package/dist/structural-rules/python/PY012-asyncio-run-misuse.d.ts.map +1 -0
  145. package/dist/structural-rules/python/PY012-asyncio-run-misuse.js +83 -0
  146. package/dist/structural-rules/python/PY012-asyncio-run-misuse.js.map +1 -0
  147. package/dist/structural-rules/python/PY013-mutable-default-arg.d.ts +11 -0
  148. package/dist/structural-rules/python/PY013-mutable-default-arg.d.ts.map +1 -0
  149. package/dist/structural-rules/python/PY013-mutable-default-arg.js +73 -0
  150. package/dist/structural-rules/python/PY013-mutable-default-arg.js.map +1 -0
  151. package/dist/structural-rules/python/PY014-fixed-sleep-retry.d.ts +11 -0
  152. package/dist/structural-rules/python/PY014-fixed-sleep-retry.d.ts.map +1 -0
  153. package/dist/structural-rules/python/PY014-fixed-sleep-retry.js +115 -0
  154. package/dist/structural-rules/python/PY014-fixed-sleep-retry.js.map +1 -0
  155. package/dist/structural-rules/types.d.ts +12 -0
  156. package/dist/structural-rules/types.d.ts.map +1 -1
  157. package/dist/utils/active-engineering-context.d.ts +12 -0
  158. package/dist/utils/active-engineering-context.d.ts.map +1 -0
  159. package/dist/utils/active-engineering-context.js +67 -0
  160. package/dist/utils/active-engineering-context.js.map +1 -0
  161. package/dist/utils/artifact-io.d.ts +33 -0
  162. package/dist/utils/artifact-io.d.ts.map +1 -0
  163. package/dist/utils/artifact-io.js +183 -0
  164. package/dist/utils/artifact-io.js.map +1 -0
  165. package/dist/utils/change-contract.d.ts +6 -2
  166. package/dist/utils/change-contract.d.ts.map +1 -1
  167. package/dist/utils/change-contract.js +175 -0
  168. package/dist/utils/change-contract.js.map +1 -1
  169. package/dist/utils/context-pack.d.ts +12 -0
  170. package/dist/utils/context-pack.d.ts.map +1 -0
  171. package/dist/utils/context-pack.js +147 -0
  172. package/dist/utils/context-pack.js.map +1 -0
  173. package/dist/utils/control-plane.d.ts +18 -0
  174. package/dist/utils/control-plane.d.ts.map +1 -1
  175. package/dist/utils/control-plane.js +31 -4
  176. package/dist/utils/control-plane.js.map +1 -1
  177. package/dist/utils/drift-intelligence.d.ts +47 -0
  178. package/dist/utils/drift-intelligence.d.ts.map +1 -0
  179. package/dist/utils/drift-intelligence.js +2099 -0
  180. package/dist/utils/drift-intelligence.js.map +1 -0
  181. package/dist/utils/execution-actions.d.ts +22 -0
  182. package/dist/utils/execution-actions.d.ts.map +1 -0
  183. package/dist/utils/execution-actions.js +103 -0
  184. package/dist/utils/execution-actions.js.map +1 -0
  185. package/dist/utils/execution-bus.d.ts +1 -214
  186. package/dist/utils/execution-bus.d.ts.map +1 -1
  187. package/dist/utils/execution-bus.js +15 -1359
  188. package/dist/utils/execution-bus.js.map +1 -1
  189. package/dist/utils/git.d.ts +1 -0
  190. package/dist/utils/git.d.ts.map +1 -1
  191. package/dist/utils/git.js +13 -3
  192. package/dist/utils/git.js.map +1 -1
  193. package/dist/utils/governance-decisions.d.ts +75 -0
  194. package/dist/utils/governance-decisions.d.ts.map +1 -0
  195. package/dist/utils/governance-decisions.js +412 -0
  196. package/dist/utils/governance-decisions.js.map +1 -0
  197. package/dist/utils/governance-provenance.d.ts +1 -1
  198. package/dist/utils/governance-provenance.d.ts.map +1 -1
  199. package/dist/utils/governance-provenance.js +5 -7
  200. package/dist/utils/governance-provenance.js.map +1 -1
  201. package/dist/utils/governance.d.ts +108 -0
  202. package/dist/utils/governance.d.ts.map +1 -1
  203. package/dist/utils/governance.js +209 -7
  204. package/dist/utils/governance.js.map +1 -1
  205. package/dist/utils/intelligence-runtime-common.d.ts +30 -0
  206. package/dist/utils/intelligence-runtime-common.d.ts.map +1 -0
  207. package/dist/utils/intelligence-runtime-common.js +156 -0
  208. package/dist/utils/intelligence-runtime-common.js.map +1 -0
  209. package/dist/utils/intent-contract-diagnostics.d.ts +9 -0
  210. package/dist/utils/intent-contract-diagnostics.d.ts.map +1 -0
  211. package/dist/utils/intent-contract-diagnostics.js +322 -0
  212. package/dist/utils/intent-contract-diagnostics.js.map +1 -0
  213. package/dist/utils/intent-pack.d.ts +15 -0
  214. package/dist/utils/intent-pack.d.ts.map +1 -0
  215. package/dist/utils/intent-pack.js +196 -0
  216. package/dist/utils/intent-pack.js.map +1 -0
  217. package/dist/utils/plan-sync.d.ts +1 -0
  218. package/dist/utils/plan-sync.d.ts.map +1 -1
  219. package/dist/utils/plan-sync.js +23 -0
  220. package/dist/utils/plan-sync.js.map +1 -1
  221. package/dist/utils/policy-decision.d.ts +5 -0
  222. package/dist/utils/policy-decision.d.ts.map +1 -0
  223. package/dist/utils/policy-decision.js +17 -0
  224. package/dist/utils/policy-decision.js.map +1 -0
  225. package/dist/utils/replay-custody.d.ts +43 -0
  226. package/dist/utils/replay-custody.d.ts.map +1 -0
  227. package/dist/utils/replay-custody.js +168 -0
  228. package/dist/utils/replay-custody.js.map +1 -0
  229. package/dist/utils/replay-runtime.d.ts +13 -0
  230. package/dist/utils/replay-runtime.d.ts.map +1 -1
  231. package/dist/utils/replay-runtime.js +96 -9
  232. package/dist/utils/replay-runtime.js.map +1 -1
  233. package/dist/utils/repository-intelligence.d.ts +9 -0
  234. package/dist/utils/repository-intelligence.d.ts.map +1 -0
  235. package/dist/utils/repository-intelligence.js +372 -0
  236. package/dist/utils/repository-intelligence.js.map +1 -0
  237. package/dist/utils/runtime-events.d.ts.map +1 -1
  238. package/dist/utils/runtime-events.js +25 -6
  239. package/dist/utils/runtime-events.js.map +1 -1
  240. package/dist/utils/semantic-contract-intelligence.d.ts +20 -0
  241. package/dist/utils/semantic-contract-intelligence.d.ts.map +1 -0
  242. package/dist/utils/semantic-contract-intelligence.js +825 -0
  243. package/dist/utils/semantic-contract-intelligence.js.map +1 -0
  244. package/dist/utils/session-continuity.d.ts +56 -0
  245. package/dist/utils/session-continuity.d.ts.map +1 -0
  246. package/dist/utils/session-continuity.js +318 -0
  247. package/dist/utils/session-continuity.js.map +1 -0
  248. package/dist/utils/verification-evidence.d.ts.map +1 -1
  249. package/dist/utils/verification-evidence.js +4 -1
  250. package/dist/utils/verification-evidence.js.map +1 -1
  251. package/dist/utils/verify-runtime-stability.d.ts +142 -0
  252. package/dist/utils/verify-runtime-stability.d.ts.map +1 -0
  253. package/dist/utils/verify-runtime-stability.js +230 -0
  254. package/dist/utils/verify-runtime-stability.js.map +1 -0
  255. package/dist/utils/workspace-runtime.d.ts +1 -266
  256. package/dist/utils/workspace-runtime.d.ts.map +1 -1
  257. package/dist/utils/workspace-runtime.js +15 -1412
  258. package/dist/utils/workspace-runtime.js.map +1 -1
  259. package/package.json +11 -10
  260. package/LICENSE +0 -201
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evaluateIntentContractDiagnostics = evaluateIntentContractDiagnostics;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ const intelligence_runtime_common_1 = require("./intelligence-runtime-common");
7
+ const INTENT_PACK_TOP_LEVEL_KEYS = new Set([
8
+ 'schemaVersion',
9
+ 'intentPackId',
10
+ 'createdAt',
11
+ 'updatedAt',
12
+ 'intent',
13
+ 'governanceContext',
14
+ 'approvedScope',
15
+ 'forbiddenBoundaries',
16
+ 'expectedDependencies',
17
+ 'expectedInfrastructure',
18
+ 'expectedBlastRadius',
19
+ 'checkpoints',
20
+ 'rolloutExpectations',
21
+ 'governanceExpectations',
22
+ 'constraints',
23
+ 'detectedSignals',
24
+ 'semanticExpectations',
25
+ 'contextHints',
26
+ 'repositoryGraphId',
27
+ 'fingerprint',
28
+ ]);
29
+ const APPROVED_SCOPE_KEYS = new Set(['files', 'modules', 'services']);
30
+ const BOUNDARY_KEYS = new Set(['type', 'path', 'policy', 'reason']);
31
+ const KNOWN_WORKSPACE_DIRS = ['apps', 'packages', 'services', 'libs', 'lib'];
32
+ function isRecord(value) {
33
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
34
+ }
35
+ function hasGlobSyntax(value) {
36
+ return /[*?[\]{}]/.test(value);
37
+ }
38
+ function globStablePrefix(value) {
39
+ const normalized = (0, intelligence_runtime_common_1.normalizeRepoPath)(value);
40
+ const match = normalized.match(/[*?[\]{}]/);
41
+ if (!match || match.index === undefined) {
42
+ return normalized;
43
+ }
44
+ const beforeGlob = normalized.slice(0, match.index);
45
+ return beforeGlob.replace(/[^/]*$/, '').replace(/\/$/, '');
46
+ }
47
+ function pathCovers(scopeValue, pathValue) {
48
+ const scope = (0, intelligence_runtime_common_1.normalizeRepoPath)(scopeValue);
49
+ const path = (0, intelligence_runtime_common_1.normalizeRepoPath)(pathValue);
50
+ if (!scope || !path)
51
+ return false;
52
+ if (scope === path)
53
+ return true;
54
+ if (hasGlobSyntax(scope)) {
55
+ const prefix = globStablePrefix(scope);
56
+ return Boolean(prefix) && (path === prefix || path.startsWith(`${prefix}/`));
57
+ }
58
+ if (hasGlobSyntax(path)) {
59
+ const prefix = globStablePrefix(path);
60
+ return Boolean(prefix) && (scope === prefix || scope.startsWith(`${prefix}/`));
61
+ }
62
+ return path.startsWith(`${scope}/`) || scope.startsWith(`${path}/`);
63
+ }
64
+ function pushCapped(out, message, cap = 24) {
65
+ if (out.length >= cap)
66
+ return;
67
+ if (!out.includes(message)) {
68
+ out.push(message);
69
+ }
70
+ }
71
+ function findUnsupportedIntentFields(intentPack, out) {
72
+ const rawIntent = intentPack;
73
+ if (!isRecord(rawIntent))
74
+ return;
75
+ for (const key of Object.keys(rawIntent).sort((a, b) => a.localeCompare(b))) {
76
+ if (!INTENT_PACK_TOP_LEVEL_KEYS.has(key)) {
77
+ pushCapped(out, `Intent pack contains unsupported top-level field "${key}"; deterministic governance ignores unsupported contract fields.`);
78
+ }
79
+ }
80
+ const approvedScope = rawIntent.approvedScope;
81
+ if (isRecord(approvedScope)) {
82
+ for (const key of Object.keys(approvedScope).sort((a, b) => a.localeCompare(b))) {
83
+ if (!APPROVED_SCOPE_KEYS.has(key)) {
84
+ pushCapped(out, `Intent approvedScope contains unsupported field "${key}"; use files, modules, or services so scope drift remains deterministic.`);
85
+ }
86
+ }
87
+ }
88
+ const forbiddenBoundaries = rawIntent.forbiddenBoundaries;
89
+ if (Array.isArray(forbiddenBoundaries)) {
90
+ forbiddenBoundaries.slice(0, 24).forEach((boundary, index) => {
91
+ if (!isRecord(boundary))
92
+ return;
93
+ for (const key of Object.keys(boundary).sort((a, b) => a.localeCompare(b))) {
94
+ if (!BOUNDARY_KEYS.has(key)) {
95
+ pushCapped(out, `Forbidden boundary ${index + 1} contains unsupported field "${key}"; boundary governance ignores unsupported fields.`);
96
+ }
97
+ }
98
+ });
99
+ }
100
+ }
101
+ function findExistingPaths(projectRoot, candidates, out) {
102
+ const missing = candidates
103
+ .filter((candidate) => !hasGlobSyntax(candidate))
104
+ .filter((candidate) => !(0, fs_1.existsSync)((0, path_1.join)(projectRoot, (0, intelligence_runtime_common_1.normalizeRepoPath)(candidate))))
105
+ .slice(0, 6);
106
+ if (missing.length > 0) {
107
+ pushCapped(out, `Approved intent scope references path(s) not present in the workspace: ${missing.join(', ')}. This can create false drift findings in real repos.`);
108
+ }
109
+ }
110
+ function findRepositoryNodePaths(graph) {
111
+ return new Set(graph.nodes
112
+ .map((node) => node.path || node.label)
113
+ .filter((value) => Boolean(value))
114
+ .map(intelligence_runtime_common_1.normalizeRepoPath));
115
+ }
116
+ function findScopeMappingWarnings(intentPack, contextPack, graph, out) {
117
+ const nodePaths = findRepositoryNodePaths(graph);
118
+ const serviceBoundaryValues = new Set(contextPack.serviceBoundaries.flatMap((boundary) => [boundary.name, boundary.path]).map(intelligence_runtime_common_1.normalizeRepoPath));
119
+ const unmappedModules = intentPack.approvedScope.modules
120
+ .map(intelligence_runtime_common_1.normalizeRepoPath)
121
+ .filter((modulePath) => !hasGlobSyntax(modulePath))
122
+ .filter((modulePath) => !nodePaths.has(modulePath))
123
+ .slice(0, 6);
124
+ if (unmappedModules.length > 0) {
125
+ pushCapped(out, `Approved module(s) are not represented in the repository graph: ${unmappedModules.join(', ')}. Verify may over-classify adjacent edits as drift.`);
126
+ }
127
+ const unmappedServices = intentPack.approvedScope.services
128
+ .map(intelligence_runtime_common_1.normalizeRepoPath)
129
+ .filter((servicePath) => !hasGlobSyntax(servicePath))
130
+ .filter((servicePath) => !serviceBoundaryValues.has(servicePath))
131
+ .slice(0, 6);
132
+ if (unmappedServices.length > 0) {
133
+ pushCapped(out, `Approved service(s) do not map to context-pack service boundaries: ${unmappedServices.join(', ')}. Declare module/package boundaries explicitly for monorepos.`);
134
+ }
135
+ if (graph.summary.moduleCount > contextPack.serviceBoundaries.length && contextPack.serviceBoundaries.length >= 12) {
136
+ pushCapped(out, `Context pack captured ${contextPack.serviceBoundaries.length} service/module boundary candidate(s) from ${graph.summary.moduleCount} module(s). Large monorepos may need narrower declared package scope to avoid boundary truncation.`);
137
+ }
138
+ }
139
+ function findOverlappingGlobWarnings(intentPack, out) {
140
+ const scopedEntries = [
141
+ ...intentPack.approvedScope.files.map((value) => `file:${value}`),
142
+ ...intentPack.approvedScope.modules.map((value) => `module:${value}`),
143
+ ...intentPack.approvedScope.services.map((value) => `service:${value}`),
144
+ ];
145
+ const globEntries = scopedEntries.filter((entry) => hasGlobSyntax(entry.split(':').slice(1).join(':')));
146
+ for (let i = 0; i < globEntries.length; i += 1) {
147
+ for (let j = i + 1; j < globEntries.length; j += 1) {
148
+ const left = globEntries[i].split(':').slice(1).join(':');
149
+ const right = globEntries[j].split(':').slice(1).join(':');
150
+ if (pathCovers(left, right) || pathCovers(right, left)) {
151
+ pushCapped(out, `Approved scope glob "${left}" overlaps "${right}". Overlapping globs make false-positive triage harder; prefer one canonical boundary.`);
152
+ }
153
+ }
154
+ }
155
+ }
156
+ function boundaryTypeMatchesPath(boundary) {
157
+ const flags = (0, intelligence_runtime_common_1.classifyBoundaryPath)(boundary.path);
158
+ if (boundary.type === 'infra')
159
+ return flags.infra;
160
+ if (boundary.type === 'ci')
161
+ return flags.ci;
162
+ if (boundary.type === 'dependency-manifest')
163
+ return flags.dependencyManifest;
164
+ if (boundary.type === 'sensitive')
165
+ return flags.sensitive;
166
+ return true;
167
+ }
168
+ function findBoundaryWarnings(intentPack, out) {
169
+ const approvedValues = [
170
+ ...intentPack.approvedScope.files,
171
+ ...intentPack.approvedScope.modules,
172
+ ...intentPack.approvedScope.services,
173
+ ].map(intelligence_runtime_common_1.normalizeRepoPath);
174
+ for (const boundary of intentPack.forbiddenBoundaries.slice(0, 40)) {
175
+ const boundaryPath = (0, intelligence_runtime_common_1.normalizeRepoPath)(boundary.path);
176
+ if (boundary.policy === 'allowed' && ['infra', 'ci', 'sensitive', 'dependency-manifest'].includes(boundary.type)) {
177
+ pushCapped(out, `Boundary "${boundary.path}" is marked allowed even though it is classified as ${boundary.type}; confirm this trust-boundary exception is intentional.`);
178
+ }
179
+ if (!hasGlobSyntax(boundaryPath) && !boundaryTypeMatchesPath(boundary)) {
180
+ pushCapped(out, `Boundary "${boundary.path}" is declared as ${boundary.type}, but its path shape does not match that boundary type. This can produce misleading drift explanations.`);
181
+ }
182
+ if (boundary.policy === 'forbidden'
183
+ && approvedValues.some((approved) => pathCovers(approved, boundaryPath) || pathCovers(boundaryPath, approved))) {
184
+ pushCapped(out, `Approved scope overlaps forbidden boundary "${boundary.path}". Resolve this before relying on intent governance in CI.`);
185
+ }
186
+ }
187
+ }
188
+ function readJsonObject(pathValue) {
189
+ if (!(0, fs_1.existsSync)(pathValue))
190
+ return null;
191
+ try {
192
+ const parsed = JSON.parse((0, fs_1.readFileSync)(pathValue, 'utf-8'));
193
+ return isRecord(parsed) ? parsed : null;
194
+ }
195
+ catch {
196
+ return null;
197
+ }
198
+ }
199
+ function hasWorkspaceConfig(projectRoot) {
200
+ const rootPackageJson = readJsonObject((0, path_1.join)(projectRoot, 'package.json'));
201
+ if (rootPackageJson && Object.prototype.hasOwnProperty.call(rootPackageJson, 'workspaces')) {
202
+ return true;
203
+ }
204
+ return (0, fs_1.existsSync)((0, path_1.join)(projectRoot, 'pnpm-workspace.yaml'));
205
+ }
206
+ function collectPackageRoots(projectRoot) {
207
+ const roots = [];
208
+ for (const workspaceDir of KNOWN_WORKSPACE_DIRS) {
209
+ const dir = (0, path_1.join)(projectRoot, workspaceDir);
210
+ if (!(0, fs_1.existsSync)(dir))
211
+ continue;
212
+ let entries = [];
213
+ try {
214
+ entries = (0, fs_1.readdirSync)(dir);
215
+ }
216
+ catch {
217
+ continue;
218
+ }
219
+ for (const entry of entries) {
220
+ const fullPath = (0, path_1.join)(dir, entry);
221
+ try {
222
+ if (!(0, fs_1.statSync)(fullPath).isDirectory())
223
+ continue;
224
+ }
225
+ catch {
226
+ continue;
227
+ }
228
+ const candidateRoot = (0, intelligence_runtime_common_1.normalizeRepoPath)(`${workspaceDir}/${entry}`);
229
+ if ((0, fs_1.existsSync)((0, path_1.join)(fullPath, 'package.json'))
230
+ || (0, fs_1.existsSync)((0, path_1.join)(fullPath, 'pyproject.toml'))
231
+ || (0, fs_1.existsSync)((0, path_1.join)(fullPath, 'go.mod'))) {
232
+ roots.push(candidateRoot);
233
+ }
234
+ }
235
+ }
236
+ return (0, intelligence_runtime_common_1.dedupeSorted)(roots);
237
+ }
238
+ function findPackageRootForPath(packageRoots, filePath) {
239
+ const normalized = (0, intelligence_runtime_common_1.normalizeRepoPath)(filePath);
240
+ let best = null;
241
+ let bestLength = -1;
242
+ for (const root of packageRoots) {
243
+ if (normalized === root || normalized.startsWith(`${root}/`)) {
244
+ if (root.length > bestLength) {
245
+ best = root;
246
+ bestLength = root.length;
247
+ }
248
+ }
249
+ }
250
+ return best;
251
+ }
252
+ function findMonorepoWarnings(projectRoot, intentPack, graph, out) {
253
+ const packageRoots = collectPackageRoots(projectRoot);
254
+ const isMonorepoLike = hasWorkspaceConfig(projectRoot) || packageRoots.length >= 3 || graph.summary.moduleCount >= 24;
255
+ if (!isMonorepoLike)
256
+ return;
257
+ const approvedPackageRoots = (0, intelligence_runtime_common_1.dedupeSorted)(intentPack.approvedScope.files
258
+ .map((filePath) => findPackageRootForPath(packageRoots, filePath))
259
+ .filter((value) => Boolean(value)));
260
+ if (approvedPackageRoots.length > 1 && intentPack.approvedScope.services.length === 0) {
261
+ pushCapped(out, `Approved files span multiple package roots (${approvedPackageRoots.join(', ')}) but no service boundary is declared. Add package/service intent scope to reduce monorepo false positives.`);
262
+ }
263
+ if (graph.summary.moduleCount >= 24 && intentPack.approvedScope.modules.length <= 1) {
264
+ pushCapped(out, `Repository looks monorepo-scale (${graph.summary.moduleCount} module(s)), but intent approved only ${intentPack.approvedScope.modules.length} module(s). Validate package-layer mapping before using this contract as a CI gate.`);
265
+ }
266
+ }
267
+ function tsconfigHasPathAliases(projectRoot) {
268
+ const candidates = ['tsconfig.json', 'jsconfig.json'];
269
+ for (const candidate of candidates) {
270
+ const parsed = readJsonObject((0, path_1.join)(projectRoot, candidate));
271
+ const compilerOptions = isRecord(parsed?.compilerOptions) ? parsed.compilerOptions : null;
272
+ if (isRecord(compilerOptions?.paths) && Object.keys(compilerOptions.paths).length > 0) {
273
+ return true;
274
+ }
275
+ }
276
+ for (const workspaceDir of KNOWN_WORKSPACE_DIRS) {
277
+ const dir = (0, path_1.join)(projectRoot, workspaceDir);
278
+ if (!(0, fs_1.existsSync)(dir))
279
+ continue;
280
+ let entries = [];
281
+ try {
282
+ entries = (0, fs_1.readdirSync)(dir);
283
+ }
284
+ catch {
285
+ continue;
286
+ }
287
+ for (const entry of entries.slice(0, 24)) {
288
+ const parsed = readJsonObject((0, path_1.join)(dir, entry, 'tsconfig.json'));
289
+ const compilerOptions = isRecord(parsed?.compilerOptions) ? parsed.compilerOptions : null;
290
+ if (isRecord(compilerOptions?.paths) && Object.keys(compilerOptions.paths).length > 0) {
291
+ return true;
292
+ }
293
+ }
294
+ }
295
+ return false;
296
+ }
297
+ function findPathAliasWarnings(projectRoot, graph, out) {
298
+ if (!tsconfigHasPathAliases(projectRoot))
299
+ return;
300
+ if (graph.summary.scannedSourceFiles >= 20 && graph.summary.importEdges === 0) {
301
+ pushCapped(out, 'TypeScript path aliases were detected, but repository intelligence found no import edges. Alias resolution may be under-reporting blast radius and drift.');
302
+ }
303
+ }
304
+ function evaluateIntentContractDiagnostics(input) {
305
+ const warnings = [];
306
+ const { projectRoot, intentPack, contextPack, repositoryGraph } = input;
307
+ findUnsupportedIntentFields(intentPack, warnings);
308
+ findExistingPaths(projectRoot, intentPack.approvedScope.files, warnings);
309
+ findScopeMappingWarnings(intentPack, contextPack, repositoryGraph, warnings);
310
+ findOverlappingGlobWarnings(intentPack, warnings);
311
+ findBoundaryWarnings(intentPack, warnings);
312
+ findMonorepoWarnings(projectRoot, intentPack, repositoryGraph, warnings);
313
+ findPathAliasWarnings(projectRoot, repositoryGraph, warnings);
314
+ if (intentPack.repositoryGraphId && intentPack.repositoryGraphId !== repositoryGraph.graphId) {
315
+ pushCapped(warnings, `Intent pack was built against ${intentPack.repositoryGraphId}, but active repository graph is ${repositoryGraph.graphId}; replayable drift explanations may be stale.`);
316
+ }
317
+ if (contextPack.intentPackId !== intentPack.intentPackId) {
318
+ pushCapped(warnings, `Context pack ${contextPack.contextPackId} belongs to ${contextPack.intentPackId}, not active intent ${intentPack.intentPackId}.`);
319
+ }
320
+ return (0, intelligence_runtime_common_1.dedupeSorted)(warnings.map((warning) => warning.replace(/\s+/g, ' ').replace((0, path_1.basename)(projectRoot), (0, path_1.basename)(projectRoot)).trim()));
321
+ }
322
+ //# sourceMappingURL=intent-contract-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-contract-diagnostics.js","sourceRoot":"","sources":["../../src/utils/intent-contract-diagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { IntentPack, RepositoryIntelligenceGraph } from '@neurcode-ai/contracts';
2
+ import type { ContextAnalysis } from '../context-engine';
3
+ export interface BuildIntentPackInput {
4
+ projectRoot: string;
5
+ orgId: string | null;
6
+ projectId: string | null;
7
+ intent: string;
8
+ detectedSignals: string[];
9
+ expectedFiles: string[];
10
+ constraints: string[];
11
+ contextAnalysis: ContextAnalysis;
12
+ repositoryGraph: RepositoryIntelligenceGraph;
13
+ }
14
+ export declare function buildIntentPack(input: BuildIntentPackInput): IntentPack;
15
+ //# sourceMappingURL=intent-pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-pack.d.ts","sourceRoot":"","sources":["../../src/utils/intent-pack.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAEV,2BAA2B,EAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAczD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,2BAA2B,CAAC;CAC9C;AAwED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAgKvE"}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildIntentPack = buildIntentPack;
4
+ const path_1 = require("path");
5
+ const intelligence_runtime_common_1 = require("./intelligence-runtime-common");
6
+ function deriveModuleName(filePath) {
7
+ const normalized = (0, intelligence_runtime_common_1.normalizeRepoPath)(filePath);
8
+ const parts = normalized.split('/').filter(Boolean);
9
+ if (parts.length <= 1) {
10
+ return parts[0] || normalized;
11
+ }
12
+ if (['src', 'app', 'apps', 'services', 'packages', 'libs', 'lib'].includes(parts[0]) && parts.length >= 2) {
13
+ return `${parts[0]}/${parts[1]}`;
14
+ }
15
+ return parts[0];
16
+ }
17
+ function deriveServiceName(modulePath) {
18
+ const normalized = modulePath.toLowerCase();
19
+ if (normalized.includes('service')
20
+ || normalized.includes('api')
21
+ || normalized.includes('auth')
22
+ || normalized.includes('billing')
23
+ || normalized.includes('payment')
24
+ || normalized.includes('worker')
25
+ || normalized.includes('queue')) {
26
+ return modulePath;
27
+ }
28
+ return null;
29
+ }
30
+ function buildBoundaryExpectations(graph) {
31
+ const expectations = [];
32
+ for (const pathValue of graph.boundaries.sensitivePaths.slice(0, 8)) {
33
+ expectations.push({
34
+ type: 'sensitive',
35
+ path: pathValue,
36
+ policy: 'review-required',
37
+ reason: 'Sensitive boundary changes should be explicitly justified against engineering intent.',
38
+ });
39
+ }
40
+ for (const pathValue of graph.boundaries.infraPaths.slice(0, 6)) {
41
+ expectations.push({
42
+ type: 'infra',
43
+ path: pathValue,
44
+ policy: 'forbidden',
45
+ reason: 'Infrastructure edits expand blast radius and should stay out of routine implementation sessions unless declared.',
46
+ });
47
+ }
48
+ for (const pathValue of graph.boundaries.ciPaths.slice(0, 4)) {
49
+ expectations.push({
50
+ type: 'ci',
51
+ path: pathValue,
52
+ policy: 'forbidden',
53
+ reason: 'CI and release automation must not drift from application intent without explicit rollout approval.',
54
+ });
55
+ }
56
+ for (const pathValue of graph.boundaries.dependencyManifests.slice(0, 6)) {
57
+ expectations.push({
58
+ type: 'dependency-manifest',
59
+ path: pathValue,
60
+ policy: 'review-required',
61
+ reason: 'Dependency manifest edits should align with declared implementation scope and blast radius.',
62
+ });
63
+ }
64
+ return expectations.sort((left, right) => left.path.localeCompare(right.path));
65
+ }
66
+ function buildIntentPack(input) {
67
+ const createdAt = (0, intelligence_runtime_common_1.nowIso)();
68
+ const normalizedIntent = (0, intelligence_runtime_common_1.normalizeText)(input.intent);
69
+ const approvedFiles = (0, intelligence_runtime_common_1.dedupeSortedPaths)([
70
+ ...input.expectedFiles,
71
+ ...input.contextAnalysis.suggestedFiles,
72
+ ]).slice(0, 24);
73
+ const approvedModules = (0, intelligence_runtime_common_1.dedupeSorted)(approvedFiles.map(deriveModuleName)).slice(0, 12);
74
+ const approvedServices = (0, intelligence_runtime_common_1.dedupeSorted)(approvedModules
75
+ .map(deriveServiceName)
76
+ .filter((value) => Boolean(value))).slice(0, 8);
77
+ const blastRadiusLevel = approvedFiles.length >= 16
78
+ ? 'high'
79
+ : approvedFiles.length >= 8
80
+ ? 'medium'
81
+ : 'low';
82
+ const expectedDependencies = (0, intelligence_runtime_common_1.dedupeSorted)(input.repositoryGraph.boundaries.dependencyManifests.map((pathValue) => (0, path_1.basename)(pathValue))).slice(0, 8);
83
+ const expectedInfrastructure = (0, intelligence_runtime_common_1.dedupeSortedPaths)(input.repositoryGraph.boundaries.infraPaths).slice(0, 8);
84
+ const forbiddenBoundaries = buildBoundaryExpectations(input.repositoryGraph);
85
+ const checkpoints = [
86
+ {
87
+ id: 'scope-check',
88
+ label: 'Scope stays within approved files and modules',
89
+ rationale: 'Prevent AI drift into unrelated services or modules.',
90
+ },
91
+ {
92
+ id: 'boundary-check',
93
+ label: 'Sensitive, infra, CI, and dependency boundaries stay declared',
94
+ rationale: 'Catch blast-radius expansion before remediation or merge.',
95
+ },
96
+ {
97
+ id: 'reverify-check',
98
+ label: 'Replay-linked reverify passes before rollout',
99
+ rationale: 'Preserve deterministic governance lineage through remediation.',
100
+ },
101
+ ];
102
+ const rolloutExpectations = (0, intelligence_runtime_common_1.dedupeSorted)([
103
+ expectedInfrastructure.length > 0
104
+ ? 'Treat infra and deployment files as out-of-scope unless explicitly approved.'
105
+ : '',
106
+ 'Use `neurcode verify --evidence` before remediation handoff and again after fixes land.',
107
+ 'Keep implementation scoped to the declared change contract before CI governance.',
108
+ ]);
109
+ const governanceExpectations = (0, intelligence_runtime_common_1.dedupeSorted)([
110
+ 'Findings must remain replay-linked and explainable against declared intent.',
111
+ 'Unexpected cross-service, dependency, or CI drift should fail governance review.',
112
+ 'Remediation exports must preserve intent, policy, and replay lineage.',
113
+ ]);
114
+ const relevantBoundaries = (input.repositoryGraph.semantic?.ownershipBoundaries || []).filter((boundary) => approvedModules.includes(boundary.path) || approvedServices.includes(boundary.name));
115
+ const semanticExpectations = {
116
+ ownershipBoundaries: (0, intelligence_runtime_common_1.dedupeSorted)(relevantBoundaries.map((boundary) => boundary.name)).slice(0, 12),
117
+ contractIds: (0, intelligence_runtime_common_1.dedupeSorted)((input.repositoryGraph.semantic?.contracts || [])
118
+ .filter((contract) => relevantBoundaries.some((boundary) => boundary.id === contract.boundaryId))
119
+ .map((contract) => contract.id)).slice(0, 16),
120
+ invariantIds: (0, intelligence_runtime_common_1.dedupeSorted)((input.repositoryGraph.semantic?.invariants || [])
121
+ .filter((invariant) => relevantBoundaries.some((boundary) => boundary.id === invariant.boundaryId)
122
+ || invariant.scope === 'repository')
123
+ .map((invariant) => invariant.id)).slice(0, 16),
124
+ expectedResponsibilities: (0, intelligence_runtime_common_1.dedupeSorted)(relevantBoundaries.flatMap((boundary) => boundary.responsibilities)).slice(0, 16),
125
+ expectedBehaviorKinds: (0, intelligence_runtime_common_1.dedupeSorted)((input.repositoryGraph.semantic?.runtime.behaviorProfiles || [])
126
+ .filter((profile) => relevantBoundaries.some((boundary) => boundary.id === profile.boundaryId))
127
+ .flatMap((profile) => profile.behaviorKinds)).slice(0, 16),
128
+ expectedRuntimeFlows: (0, intelligence_runtime_common_1.dedupeSorted)((input.repositoryGraph.semantic?.runtime.interactions || [])
129
+ .filter((interaction) => relevantBoundaries.some((boundary) => boundary.id === interaction.fromBoundaryId || boundary.id === interaction.toBoundaryId))
130
+ .map((interaction) => `${interaction.kind}:${interaction.fromBoundaryName}->${interaction.toBoundaryName || interaction.subject}`)).slice(0, 20),
131
+ expectedRolloutUnits: (0, intelligence_runtime_common_1.dedupeSorted)((input.repositoryGraph.semantic?.runtime.behaviorProfiles || [])
132
+ .filter((profile) => relevantBoundaries.some((boundary) => boundary.id === profile.boundaryId))
133
+ .flatMap((profile) => profile.rolloutUnits)).slice(0, 12),
134
+ };
135
+ const fingerprintPayload = {
136
+ schemaVersion: intelligence_runtime_common_1.LOCAL_INTELLIGENCE_SCHEMA_VERSION,
137
+ intent: normalizedIntent,
138
+ approvedFiles,
139
+ approvedModules,
140
+ approvedServices,
141
+ forbiddenBoundaries,
142
+ constraints: (0, intelligence_runtime_common_1.dedupeSorted)(input.constraints),
143
+ detectedSignals: (0, intelligence_runtime_common_1.dedupeSorted)(input.detectedSignals),
144
+ semanticExpectations,
145
+ repositoryGraphId: input.repositoryGraph.graphId,
146
+ };
147
+ const fingerprint = (0, intelligence_runtime_common_1.fingerprintValue)(fingerprintPayload);
148
+ return {
149
+ schemaVersion: intelligence_runtime_common_1.LOCAL_INTELLIGENCE_SCHEMA_VERSION,
150
+ intentPackId: `intent-${fingerprint.slice(0, 16)}`,
151
+ createdAt,
152
+ updatedAt: createdAt,
153
+ intent: {
154
+ raw: input.intent,
155
+ normalized: normalizedIntent,
156
+ },
157
+ governanceContext: {
158
+ repoName: (0, path_1.basename)(input.projectRoot),
159
+ projectRoot: input.projectRoot,
160
+ branchName: (0, intelligence_runtime_common_1.getGitBranchName)(input.projectRoot),
161
+ headSha: (0, intelligence_runtime_common_1.getGitHeadSha)(input.projectRoot),
162
+ orgId: input.orgId,
163
+ projectId: input.projectId,
164
+ },
165
+ approvedScope: {
166
+ files: approvedFiles,
167
+ modules: approvedModules,
168
+ services: approvedServices,
169
+ },
170
+ forbiddenBoundaries,
171
+ expectedDependencies,
172
+ expectedInfrastructure,
173
+ expectedBlastRadius: {
174
+ level: blastRadiusLevel,
175
+ rationale: blastRadiusLevel === 'high'
176
+ ? 'Intent currently touches enough files or modules that governance should expect broader coordination risk.'
177
+ : blastRadiusLevel === 'medium'
178
+ ? 'Intent spans multiple bounded files or modules and should be watched for adjacent drift.'
179
+ : 'Intent remains narrowly scoped and should stay within a small bounded file set.',
180
+ expectedFiles: approvedFiles,
181
+ },
182
+ checkpoints,
183
+ rolloutExpectations,
184
+ governanceExpectations,
185
+ constraints: (0, intelligence_runtime_common_1.dedupeSorted)(input.constraints),
186
+ detectedSignals: (0, intelligence_runtime_common_1.dedupeSorted)(input.detectedSignals),
187
+ semanticExpectations,
188
+ contextHints: {
189
+ suggestedFiles: (0, intelligence_runtime_common_1.dedupeSortedPaths)(input.contextAnalysis.suggestedFiles),
190
+ confidence: input.contextAnalysis.confidence,
191
+ },
192
+ repositoryGraphId: input.repositoryGraph.graphId,
193
+ fingerprint,
194
+ };
195
+ }
196
+ //# sourceMappingURL=intent-pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-pack.js","sourceRoot":"","sources":["../../src/utils/intent-pack.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ export interface PlanSyncUpdateResult {
21
21
  lastUpdated: string;
22
22
  }
23
23
  export declare function addExpectedFilesToLocalPlan(projectRoot: string, files: string[]): PlanSyncUpdateResult;
24
+ export declare function replaceExpectedFilesInLocalPlan(projectRoot: string, files: string[]): PlanSyncUpdateResult;
24
25
  export interface IntentPlanInitializationResult {
25
26
  path: string;
26
27
  intent: string;
@@ -1 +1 @@
1
- {"version":3,"file":"plan-sync.d.ts","sourceRoot":"","sources":["../../src/utils/plan-sync.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAoFD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAMD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAkDtE;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EAAE,GACd,oBAAoB,CAqCtB;AAyFD,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;IAC9C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,8BAA8B,CAuBhC"}
1
+ {"version":3,"file":"plan-sync.d.ts","sourceRoot":"","sources":["../../src/utils/plan-sync.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAoFD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAMD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAkDtE;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EAAE,GACd,oBAAoB,CAqCtB;AAED,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EAAE,GACd,oBAAoB,CAuBtB;AAyFD,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;IAC9C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,8BAA8B,CAuBhC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveLocalPlanPath = resolveLocalPlanPath;
4
4
  exports.ensureLocalPlan = ensureLocalPlan;
5
5
  exports.addExpectedFilesToLocalPlan = addExpectedFilesToLocalPlan;
6
+ exports.replaceExpectedFilesInLocalPlan = replaceExpectedFilesInLocalPlan;
6
7
  exports.initializeLocalPlanFromIntent = initializeLocalPlanFromIntent;
7
8
  const fs_1 = require("fs");
8
9
  const path_1 = require("path");
@@ -171,6 +172,28 @@ function addExpectedFilesToLocalPlan(projectRoot, files) {
171
172
  lastUpdated: nextPlan.lastUpdated,
172
173
  };
173
174
  }
175
+ function replaceExpectedFilesInLocalPlan(projectRoot, files) {
176
+ const plan = ensureLocalPlan(projectRoot);
177
+ const nextExpectedFiles = dedupePaths(files);
178
+ const nextLastUpdated = nowIso();
179
+ const nextPlan = {
180
+ intent: plan.intent,
181
+ expectedFiles: nextExpectedFiles,
182
+ constraints: plan.constraints,
183
+ createdAt: plan.createdAt,
184
+ lastUpdated: nextLastUpdated,
185
+ };
186
+ writeLocalPlan(plan.path, nextPlan);
187
+ return {
188
+ path: plan.path,
189
+ addedFiles: nextExpectedFiles,
190
+ expectedFiles: nextPlan.expectedFiles,
191
+ intent: nextPlan.intent,
192
+ constraints: nextPlan.constraints,
193
+ createdAt: nextPlan.createdAt,
194
+ lastUpdated: nextPlan.lastUpdated,
195
+ };
196
+ }
174
197
  const INTENT_HEURISTIC_RULES = [
175
198
  {
176
199
  id: 'auth',