@neurcode-ai/cli 0.9.64 → 0.9.66

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 (323) hide show
  1. package/LICENSE +201 -0
  2. package/dist/commands/bootstrap-policy.d.ts +29 -0
  3. package/dist/commands/bootstrap-policy.d.ts.map +1 -0
  4. package/dist/commands/bootstrap-policy.js +334 -0
  5. package/dist/commands/bootstrap-policy.js.map +1 -0
  6. package/dist/commands/brain.d.ts.map +1 -1
  7. package/dist/commands/brain.js +273 -0
  8. package/dist/commands/brain.js.map +1 -1
  9. package/dist/commands/doctor.d.ts.map +1 -1
  10. package/dist/commands/doctor.js +82 -0
  11. package/dist/commands/doctor.js.map +1 -1
  12. package/dist/commands/pilot-report.d.ts +9 -0
  13. package/dist/commands/pilot-report.d.ts.map +1 -0
  14. package/dist/commands/pilot-report.js +176 -0
  15. package/dist/commands/pilot-report.js.map +1 -0
  16. package/dist/commands/quickstart.d.ts +21 -0
  17. package/dist/commands/quickstart.d.ts.map +1 -0
  18. package/dist/commands/quickstart.js +178 -0
  19. package/dist/commands/quickstart.js.map +1 -0
  20. package/dist/commands/remediate-export.d.ts +31 -0
  21. package/dist/commands/remediate-export.d.ts.map +1 -0
  22. package/dist/commands/remediate-export.js +283 -0
  23. package/dist/commands/remediate-export.js.map +1 -0
  24. package/dist/commands/remediate-governance.d.ts +54 -0
  25. package/dist/commands/remediate-governance.d.ts.map +1 -0
  26. package/dist/commands/remediate-governance.js +375 -0
  27. package/dist/commands/remediate-governance.js.map +1 -0
  28. package/dist/commands/remediate.d.ts.map +1 -1
  29. package/dist/commands/remediate.js.map +1 -1
  30. package/dist/commands/replay.d.ts.map +1 -1
  31. package/dist/commands/replay.js +30 -0
  32. package/dist/commands/replay.js.map +1 -1
  33. package/dist/commands/verify.d.ts.map +1 -1
  34. package/dist/commands/verify.js +409 -30
  35. package/dist/commands/verify.js.map +1 -1
  36. package/dist/daemon/server.d.ts.map +1 -1
  37. package/dist/daemon/server.js +1078 -0
  38. package/dist/daemon/server.js.map +1 -1
  39. package/dist/explainability/DeterminismClassifier.d.ts +34 -0
  40. package/dist/explainability/DeterminismClassifier.d.ts.map +1 -0
  41. package/dist/explainability/DeterminismClassifier.js +104 -0
  42. package/dist/explainability/DeterminismClassifier.js.map +1 -0
  43. package/dist/explainability/ViolationFormatter.d.ts +32 -0
  44. package/dist/explainability/ViolationFormatter.d.ts.map +1 -0
  45. package/dist/explainability/ViolationFormatter.js +252 -0
  46. package/dist/explainability/ViolationFormatter.js.map +1 -0
  47. package/dist/explainability/index.d.ts +15 -0
  48. package/dist/explainability/index.d.ts.map +1 -0
  49. package/dist/explainability/index.js +94 -0
  50. package/dist/explainability/index.js.map +1 -0
  51. package/dist/explainability/types.d.ts +37 -0
  52. package/dist/explainability/types.d.ts.map +1 -0
  53. package/dist/explainability/types.js +3 -0
  54. package/dist/explainability/types.js.map +1 -0
  55. package/dist/governance/canonical-invariants.d.ts +88 -0
  56. package/dist/governance/canonical-invariants.d.ts.map +1 -0
  57. package/dist/governance/canonical-invariants.js +197 -0
  58. package/dist/governance/canonical-invariants.js.map +1 -0
  59. package/dist/governance/canonical-ordering.d.ts +76 -0
  60. package/dist/governance/canonical-ordering.d.ts.map +1 -0
  61. package/dist/governance/canonical-ordering.js +189 -0
  62. package/dist/governance/canonical-ordering.js.map +1 -0
  63. package/dist/governance/canonical-pipeline.d.ts +45 -0
  64. package/dist/governance/canonical-pipeline.d.ts.map +1 -0
  65. package/dist/governance/canonical-pipeline.js +616 -0
  66. package/dist/governance/canonical-pipeline.js.map +1 -0
  67. package/dist/governance/diff-line-provenance.d.ts +59 -0
  68. package/dist/governance/diff-line-provenance.d.ts.map +1 -0
  69. package/dist/governance/diff-line-provenance.js +118 -0
  70. package/dist/governance/diff-line-provenance.js.map +1 -0
  71. package/dist/governance/pilot-readiness.d.ts +34 -0
  72. package/dist/governance/pilot-readiness.d.ts.map +1 -0
  73. package/dist/governance/pilot-readiness.js +226 -0
  74. package/dist/governance/pilot-readiness.js.map +1 -0
  75. package/dist/governance/policy-parity-validator.d.ts +62 -0
  76. package/dist/governance/policy-parity-validator.d.ts.map +1 -0
  77. package/dist/governance/policy-parity-validator.js +137 -0
  78. package/dist/governance/policy-parity-validator.js.map +1 -0
  79. package/dist/governance/remediation-boundary.d.ts +55 -0
  80. package/dist/governance/remediation-boundary.d.ts.map +1 -0
  81. package/dist/governance/remediation-boundary.js +120 -0
  82. package/dist/governance/remediation-boundary.js.map +1 -0
  83. package/dist/governance/structural-cache.d.ts +103 -0
  84. package/dist/governance/structural-cache.d.ts.map +1 -0
  85. package/dist/governance/structural-cache.js +240 -0
  86. package/dist/governance/structural-cache.js.map +1 -0
  87. package/dist/governance/structural-on-diff.d.ts +33 -0
  88. package/dist/governance/structural-on-diff.d.ts.map +1 -0
  89. package/dist/governance/structural-on-diff.js +67 -0
  90. package/dist/governance/structural-on-diff.js.map +1 -0
  91. package/dist/governance/structural-policy-merge.d.ts +22 -0
  92. package/dist/governance/structural-policy-merge.d.ts.map +1 -0
  93. package/dist/governance/structural-policy-merge.js +32 -0
  94. package/dist/governance/structural-policy-merge.js.map +1 -0
  95. package/dist/governance/verify-runtime-guard.d.ts +99 -0
  96. package/dist/governance/verify-runtime-guard.d.ts.map +1 -0
  97. package/dist/governance/verify-runtime-guard.js +129 -0
  98. package/dist/governance/verify-runtime-guard.js.map +1 -0
  99. package/dist/index.js +107 -0
  100. package/dist/index.js.map +1 -1
  101. package/dist/integrations/review-compression/index.d.ts +50 -0
  102. package/dist/integrations/review-compression/index.d.ts.map +1 -0
  103. package/dist/integrations/review-compression/index.js +158 -0
  104. package/dist/integrations/review-compression/index.js.map +1 -0
  105. package/dist/intent-engine/domain-taxonomy.d.ts +42 -0
  106. package/dist/intent-engine/domain-taxonomy.d.ts.map +1 -0
  107. package/dist/intent-engine/domain-taxonomy.js +534 -0
  108. package/dist/intent-engine/domain-taxonomy.js.map +1 -0
  109. package/dist/intent-engine/index.d.ts +1 -0
  110. package/dist/intent-engine/index.d.ts.map +1 -1
  111. package/dist/intent-engine/index.js +6 -1
  112. package/dist/intent-engine/index.js.map +1 -1
  113. package/dist/intent-engine/parser.d.ts.map +1 -1
  114. package/dist/intent-engine/parser.js +47 -0
  115. package/dist/intent-engine/parser.js.map +1 -1
  116. package/dist/intent-engine/repo-classifier.d.ts +64 -0
  117. package/dist/intent-engine/repo-classifier.d.ts.map +1 -0
  118. package/dist/intent-engine/repo-classifier.js +178 -0
  119. package/dist/intent-engine/repo-classifier.js.map +1 -0
  120. package/dist/intent-engine/semantic-expander.d.ts +104 -0
  121. package/dist/intent-engine/semantic-expander.d.ts.map +1 -0
  122. package/dist/intent-engine/semantic-expander.js +480 -0
  123. package/dist/intent-engine/semantic-expander.js.map +1 -0
  124. package/dist/patch-engine/patterns.d.ts.map +1 -1
  125. package/dist/patch-engine/patterns.js +8 -4
  126. package/dist/patch-engine/patterns.js.map +1 -1
  127. package/dist/semantic/index.d.ts +14 -0
  128. package/dist/semantic/index.d.ts.map +1 -0
  129. package/dist/semantic/index.js +30 -0
  130. package/dist/semantic/index.js.map +1 -0
  131. package/dist/semantic/tfidf-engine.d.ts +81 -0
  132. package/dist/semantic/tfidf-engine.d.ts.map +1 -0
  133. package/dist/semantic/tfidf-engine.js +278 -0
  134. package/dist/semantic/tfidf-engine.js.map +1 -0
  135. package/dist/semantic/vector-store.d.ts +108 -0
  136. package/dist/semantic/vector-store.d.ts.map +1 -0
  137. package/dist/semantic/vector-store.js +321 -0
  138. package/dist/semantic/vector-store.js.map +1 -0
  139. package/dist/structural-rules/context-severity.d.ts +46 -0
  140. package/dist/structural-rules/context-severity.d.ts.map +1 -0
  141. package/dist/structural-rules/context-severity.js +115 -0
  142. package/dist/structural-rules/context-severity.js.map +1 -0
  143. package/dist/structural-rules/distributed/DS001-saga-rollback-absence.d.ts +11 -0
  144. package/dist/structural-rules/distributed/DS001-saga-rollback-absence.d.ts.map +1 -0
  145. package/dist/structural-rules/distributed/DS001-saga-rollback-absence.js +212 -0
  146. package/dist/structural-rules/distributed/DS001-saga-rollback-absence.js.map +1 -0
  147. package/dist/structural-rules/distributed/DS002-missing-correlation-id.d.ts +11 -0
  148. package/dist/structural-rules/distributed/DS002-missing-correlation-id.d.ts.map +1 -0
  149. package/dist/structural-rules/distributed/DS002-missing-correlation-id.js +213 -0
  150. package/dist/structural-rules/distributed/DS002-missing-correlation-id.js.map +1 -0
  151. package/dist/structural-rules/distributed/index.d.ts +3 -0
  152. package/dist/structural-rules/distributed/index.d.ts.map +1 -0
  153. package/dist/structural-rules/distributed/index.js +8 -0
  154. package/dist/structural-rules/distributed/index.js.map +1 -0
  155. package/dist/structural-rules/engine.d.ts +25 -0
  156. package/dist/structural-rules/engine.d.ts.map +1 -0
  157. package/dist/structural-rules/engine.js +90 -0
  158. package/dist/structural-rules/engine.js.map +1 -0
  159. package/dist/structural-rules/index.d.ts +45 -0
  160. package/dist/structural-rules/index.d.ts.map +1 -0
  161. package/dist/structural-rules/index.js +158 -0
  162. package/dist/structural-rules/index.js.map +1 -0
  163. package/dist/structural-rules/python/PY001-asyncio-task-without-cancel.d.ts +11 -0
  164. package/dist/structural-rules/python/PY001-asyncio-task-without-cancel.d.ts.map +1 -0
  165. package/dist/structural-rules/python/PY001-asyncio-task-without-cancel.js +66 -0
  166. package/dist/structural-rules/python/PY001-asyncio-task-without-cancel.js.map +1 -0
  167. package/dist/structural-rules/python/PY002-unbounded-dict-singleton.d.ts +11 -0
  168. package/dist/structural-rules/python/PY002-unbounded-dict-singleton.d.ts.map +1 -0
  169. package/dist/structural-rules/python/PY002-unbounded-dict-singleton.js +135 -0
  170. package/dist/structural-rules/python/PY002-unbounded-dict-singleton.js.map +1 -0
  171. package/dist/structural-rules/python/PY003-broad-except-clause.d.ts +32 -0
  172. package/dist/structural-rules/python/PY003-broad-except-clause.d.ts.map +1 -0
  173. package/dist/structural-rules/python/PY003-broad-except-clause.js +277 -0
  174. package/dist/structural-rules/python/PY003-broad-except-clause.js.map +1 -0
  175. package/dist/structural-rules/python/PY004-swallowed-async-exception.d.ts +11 -0
  176. package/dist/structural-rules/python/PY004-swallowed-async-exception.d.ts.map +1 -0
  177. package/dist/structural-rules/python/PY004-swallowed-async-exception.js +167 -0
  178. package/dist/structural-rules/python/PY004-swallowed-async-exception.js.map +1 -0
  179. package/dist/structural-rules/python/PY005-fastapi-without-pydantic.d.ts +11 -0
  180. package/dist/structural-rules/python/PY005-fastapi-without-pydantic.d.ts.map +1 -0
  181. package/dist/structural-rules/python/PY005-fastapi-without-pydantic.js +154 -0
  182. package/dist/structural-rules/python/PY005-fastapi-without-pydantic.js.map +1 -0
  183. package/dist/structural-rules/python/PY006-blocking-io-in-async.d.ts +11 -0
  184. package/dist/structural-rules/python/PY006-blocking-io-in-async.d.ts.map +1 -0
  185. package/dist/structural-rules/python/PY006-blocking-io-in-async.js +130 -0
  186. package/dist/structural-rules/python/PY006-blocking-io-in-async.js.map +1 -0
  187. package/dist/structural-rules/python/PY007-sqlalchemy-session-leak.d.ts +11 -0
  188. package/dist/structural-rules/python/PY007-sqlalchemy-session-leak.d.ts.map +1 -0
  189. package/dist/structural-rules/python/PY007-sqlalchemy-session-leak.js +93 -0
  190. package/dist/structural-rules/python/PY007-sqlalchemy-session-leak.js.map +1 -0
  191. package/dist/structural-rules/python/PY008-celery-task-without-retry.d.ts +11 -0
  192. package/dist/structural-rules/python/PY008-celery-task-without-retry.d.ts.map +1 -0
  193. package/dist/structural-rules/python/PY008-celery-task-without-retry.js +154 -0
  194. package/dist/structural-rules/python/PY008-celery-task-without-retry.js.map +1 -0
  195. package/dist/structural-rules/python/PY009-unsafe-pickle-deserialization.d.ts +11 -0
  196. package/dist/structural-rules/python/PY009-unsafe-pickle-deserialization.d.ts.map +1 -0
  197. package/dist/structural-rules/python/PY009-unsafe-pickle-deserialization.js +133 -0
  198. package/dist/structural-rules/python/PY009-unsafe-pickle-deserialization.js.map +1 -0
  199. package/dist/structural-rules/python/PY010-leaked-aiohttp-session.d.ts +11 -0
  200. package/dist/structural-rules/python/PY010-leaked-aiohttp-session.d.ts.map +1 -0
  201. package/dist/structural-rules/python/PY010-leaked-aiohttp-session.js +80 -0
  202. package/dist/structural-rules/python/PY010-leaked-aiohttp-session.js.map +1 -0
  203. package/dist/structural-rules/python/PY011-thread-lifecycle.d.ts +11 -0
  204. package/dist/structural-rules/python/PY011-thread-lifecycle.d.ts.map +1 -0
  205. package/dist/structural-rules/python/PY011-thread-lifecycle.js +97 -0
  206. package/dist/structural-rules/python/PY011-thread-lifecycle.js.map +1 -0
  207. package/dist/structural-rules/python/PY012-asyncio-run-misuse.d.ts +11 -0
  208. package/dist/structural-rules/python/PY012-asyncio-run-misuse.d.ts.map +1 -0
  209. package/dist/structural-rules/python/PY012-asyncio-run-misuse.js +83 -0
  210. package/dist/structural-rules/python/PY012-asyncio-run-misuse.js.map +1 -0
  211. package/dist/structural-rules/python/PY013-mutable-default-arg.d.ts +11 -0
  212. package/dist/structural-rules/python/PY013-mutable-default-arg.d.ts.map +1 -0
  213. package/dist/structural-rules/python/PY013-mutable-default-arg.js +73 -0
  214. package/dist/structural-rules/python/PY013-mutable-default-arg.js.map +1 -0
  215. package/dist/structural-rules/python/PY014-fixed-sleep-retry.d.ts +11 -0
  216. package/dist/structural-rules/python/PY014-fixed-sleep-retry.d.ts.map +1 -0
  217. package/dist/structural-rules/python/PY014-fixed-sleep-retry.js +115 -0
  218. package/dist/structural-rules/python/PY014-fixed-sleep-retry.js.map +1 -0
  219. package/dist/structural-rules/rules/SR001-swallowed-async-rejection.d.ts +11 -0
  220. package/dist/structural-rules/rules/SR001-swallowed-async-rejection.d.ts.map +1 -0
  221. package/dist/structural-rules/rules/SR001-swallowed-async-rejection.js +145 -0
  222. package/dist/structural-rules/rules/SR001-swallowed-async-rejection.js.map +1 -0
  223. package/dist/structural-rules/rules/SR002-unbounded-collection.d.ts +11 -0
  224. package/dist/structural-rules/rules/SR002-unbounded-collection.d.ts.map +1 -0
  225. package/dist/structural-rules/rules/SR002-unbounded-collection.js +196 -0
  226. package/dist/structural-rules/rules/SR002-unbounded-collection.js.map +1 -0
  227. package/dist/structural-rules/rules/SR003-timer-without-cleanup.d.ts +11 -0
  228. package/dist/structural-rules/rules/SR003-timer-without-cleanup.d.ts.map +1 -0
  229. package/dist/structural-rules/rules/SR003-timer-without-cleanup.js +148 -0
  230. package/dist/structural-rules/rules/SR003-timer-without-cleanup.js.map +1 -0
  231. package/dist/structural-rules/rules/SR004-request-boundary-no-validation.d.ts +11 -0
  232. package/dist/structural-rules/rules/SR004-request-boundary-no-validation.d.ts.map +1 -0
  233. package/dist/structural-rules/rules/SR004-request-boundary-no-validation.js +162 -0
  234. package/dist/structural-rules/rules/SR004-request-boundary-no-validation.js.map +1 -0
  235. package/dist/structural-rules/rules/SR005-halfopen-probe-gate.d.ts +11 -0
  236. package/dist/structural-rules/rules/SR005-halfopen-probe-gate.d.ts.map +1 -0
  237. package/dist/structural-rules/rules/SR005-halfopen-probe-gate.js +150 -0
  238. package/dist/structural-rules/rules/SR005-halfopen-probe-gate.js.map +1 -0
  239. package/dist/structural-rules/rules/SR006-fanout-error-sanitization.d.ts +11 -0
  240. package/dist/structural-rules/rules/SR006-fanout-error-sanitization.d.ts.map +1 -0
  241. package/dist/structural-rules/rules/SR006-fanout-error-sanitization.js +161 -0
  242. package/dist/structural-rules/rules/SR006-fanout-error-sanitization.js.map +1 -0
  243. package/dist/structural-rules/rules/SR007-cross-request-error.d.ts +11 -0
  244. package/dist/structural-rules/rules/SR007-cross-request-error.d.ts.map +1 -0
  245. package/dist/structural-rules/rules/SR007-cross-request-error.js +175 -0
  246. package/dist/structural-rules/rules/SR007-cross-request-error.js.map +1 -0
  247. package/dist/structural-rules/rules/SR008-background-task-orphan.d.ts +11 -0
  248. package/dist/structural-rules/rules/SR008-background-task-orphan.d.ts.map +1 -0
  249. package/dist/structural-rules/rules/SR008-background-task-orphan.js +176 -0
  250. package/dist/structural-rules/rules/SR008-background-task-orphan.js.map +1 -0
  251. package/dist/structural-rules/rules/SR009-missing-retry-backoff.d.ts +11 -0
  252. package/dist/structural-rules/rules/SR009-missing-retry-backoff.d.ts.map +1 -0
  253. package/dist/structural-rules/rules/SR009-missing-retry-backoff.js +168 -0
  254. package/dist/structural-rules/rules/SR009-missing-retry-backoff.js.map +1 -0
  255. package/dist/structural-rules/rules/SR010-retry-storm.d.ts +11 -0
  256. package/dist/structural-rules/rules/SR010-retry-storm.d.ts.map +1 -0
  257. package/dist/structural-rules/rules/SR010-retry-storm.js +181 -0
  258. package/dist/structural-rules/rules/SR010-retry-storm.js.map +1 -0
  259. package/dist/structural-rules/rules/SR011-event-listener-leak.d.ts +11 -0
  260. package/dist/structural-rules/rules/SR011-event-listener-leak.d.ts.map +1 -0
  261. package/dist/structural-rules/rules/SR011-event-listener-leak.js +208 -0
  262. package/dist/structural-rules/rules/SR011-event-listener-leak.js.map +1 -0
  263. package/dist/structural-rules/rules/SR012-promise-race-leak.d.ts +11 -0
  264. package/dist/structural-rules/rules/SR012-promise-race-leak.d.ts.map +1 -0
  265. package/dist/structural-rules/rules/SR012-promise-race-leak.js +191 -0
  266. package/dist/structural-rules/rules/SR012-promise-race-leak.js.map +1 -0
  267. package/dist/structural-rules/rules/SR013-missing-idempotency-key.d.ts +11 -0
  268. package/dist/structural-rules/rules/SR013-missing-idempotency-key.d.ts.map +1 -0
  269. package/dist/structural-rules/rules/SR013-missing-idempotency-key.js +219 -0
  270. package/dist/structural-rules/rules/SR013-missing-idempotency-key.js.map +1 -0
  271. package/dist/structural-rules/rules/SR014-mutable-closure-async.d.ts +11 -0
  272. package/dist/structural-rules/rules/SR014-mutable-closure-async.d.ts.map +1 -0
  273. package/dist/structural-rules/rules/SR014-mutable-closure-async.js +208 -0
  274. package/dist/structural-rules/rules/SR014-mutable-closure-async.js.map +1 -0
  275. package/dist/structural-rules/rules/SR015-dangling-abort-controller.d.ts +11 -0
  276. package/dist/structural-rules/rules/SR015-dangling-abort-controller.d.ts.map +1 -0
  277. package/dist/structural-rules/rules/SR015-dangling-abort-controller.js +190 -0
  278. package/dist/structural-rules/rules/SR015-dangling-abort-controller.js.map +1 -0
  279. package/dist/structural-rules/rules/SR016-unsafe-json-parse.d.ts +11 -0
  280. package/dist/structural-rules/rules/SR016-unsafe-json-parse.d.ts.map +1 -0
  281. package/dist/structural-rules/rules/SR016-unsafe-json-parse.js +187 -0
  282. package/dist/structural-rules/rules/SR016-unsafe-json-parse.js.map +1 -0
  283. package/dist/structural-rules/suppressions.d.ts +43 -0
  284. package/dist/structural-rules/suppressions.d.ts.map +1 -0
  285. package/dist/structural-rules/suppressions.js +115 -0
  286. package/dist/structural-rules/suppressions.js.map +1 -0
  287. package/dist/structural-rules/types.d.ts +55 -0
  288. package/dist/structural-rules/types.d.ts.map +1 -0
  289. package/dist/structural-rules/types.js +3 -0
  290. package/dist/structural-rules/types.js.map +1 -0
  291. package/dist/utils/brain-cache.d.ts +100 -0
  292. package/dist/utils/brain-cache.d.ts.map +1 -0
  293. package/dist/utils/brain-cache.js +346 -0
  294. package/dist/utils/brain-cache.js.map +1 -0
  295. package/dist/utils/governance-provenance.d.ts +95 -0
  296. package/dist/utils/governance-provenance.d.ts.map +1 -0
  297. package/dist/utils/governance-provenance.js +187 -0
  298. package/dist/utils/governance-provenance.js.map +1 -0
  299. package/dist/utils/pilot-metrics.d.ts +46 -0
  300. package/dist/utils/pilot-metrics.d.ts.map +1 -0
  301. package/dist/utils/pilot-metrics.js +240 -0
  302. package/dist/utils/pilot-metrics.js.map +1 -0
  303. package/dist/utils/replay-runtime.d.ts +34 -0
  304. package/dist/utils/replay-runtime.d.ts.map +1 -1
  305. package/dist/utils/replay-runtime.js +207 -0
  306. package/dist/utils/replay-runtime.js.map +1 -1
  307. package/dist/utils/verify-runtime-stability.d.ts +142 -0
  308. package/dist/utils/verify-runtime-stability.d.ts.map +1 -0
  309. package/dist/utils/verify-runtime-stability.js +230 -0
  310. package/dist/utils/verify-runtime-stability.js.map +1 -0
  311. package/dist/workspace/cross-repo-graph.d.ts +111 -0
  312. package/dist/workspace/cross-repo-graph.d.ts.map +1 -0
  313. package/dist/workspace/cross-repo-graph.js +450 -0
  314. package/dist/workspace/cross-repo-graph.js.map +1 -0
  315. package/dist/workspace/federated-context.d.ts +144 -0
  316. package/dist/workspace/federated-context.d.ts.map +1 -0
  317. package/dist/workspace/federated-context.js +347 -0
  318. package/dist/workspace/federated-context.js.map +1 -0
  319. package/dist/workspace/index.d.ts +38 -0
  320. package/dist/workspace/index.d.ts.map +1 -0
  321. package/dist/workspace/index.js +48 -0
  322. package/dist/workspace/index.js.map +1 -0
  323. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/intent-engine/parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AA8DD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAmCxD"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/intent-engine/parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAkGD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAgDxD"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.parseIntent = parseIntent;
9
+ const domain_taxonomy_1 = require("./domain-taxonomy");
9
10
  // ── Domain keyword map ────────────────────────────────────────────────────────
10
11
  const DOMAIN_KEYWORDS = {
11
12
  auth: ['auth', 'login', 'logout', 'jwt', 'token', 'session', 'password',
@@ -24,6 +25,22 @@ const DOMAIN_KEYWORDS = {
24
25
  notification: ['notification', 'email', 'sms', 'push', 'alert', 'message'],
25
26
  file: ['file', 'upload', 'download', 'storage', 's3', 'blob', 'attachment', 'media'],
26
27
  testing: ['test', 'spec', 'mock', 'unit', 'integration', 'e2e', 'coverage'],
28
+ // ── New domains ─────────────────────────────────────────────────────────────
29
+ resilience: ['circuit', 'breaker', 'bulkhead', 'retry', 'backoff', 'fallback',
30
+ 'timeout', 'half-open', 'coalesce', 'throttle', 'jitter', 'probe',
31
+ 'resilience', 'shed'],
32
+ infrastructure: ['middleware', 'proxy', 'gateway', 'kubernetes', 'docker',
33
+ 'container', 'deployment', 'health', 'liveness', 'readiness'],
34
+ concurrency: ['concurrent', 'async', 'await', 'promise', 'race', 'mutex',
35
+ 'semaphore', 'lock', 'atomic', 'deadlock', 'goroutine', 'asyncio',
36
+ 'thread'],
37
+ observability: ['metric', 'trace', 'span', 'telemetry', 'prometheus', 'grafana',
38
+ 'datadog', 'alert', 'dashboard', 'monitor'],
39
+ caching: ['cache', 'redis', 'memcached', 'ttl', 'eviction', 'lru', 'invalidat'],
40
+ messaging: ['queue', 'topic', 'kafka', 'rabbitmq', 'sqs', 'sns', 'pubsub',
41
+ 'publish', 'subscribe', 'consumer'],
42
+ 'ml-inference': ['model', 'inference', 'embedding', 'vector', 'tensor', 'llm',
43
+ 'gpu', 'cuda', 'onnx'],
27
44
  };
28
45
  // ── Domain → expected patterns ────────────────────────────────────────────────
29
46
  const DOMAIN_PATTERNS = {
@@ -41,6 +58,17 @@ const DOMAIN_PATTERNS = {
41
58
  notification: ['retry logic', 'delivery confirmation', 'template validation'],
42
59
  file: ['file type validation', 'size limits', 'virus scanning', 'access control'],
43
60
  testing: ['coverage thresholds', 'mock boundaries', 'assertion completeness'],
61
+ // ── New domains ─────────────────────────────────────────────────────────────
62
+ resilience: ['single-probe half-open gate', 'bounded retry with backoff',
63
+ 'circuit state hooks', 'fallback handler', 'timeout propagation'],
64
+ infrastructure: ['health endpoint', 'graceful shutdown', 'config validation',
65
+ 'middleware chain'],
66
+ concurrency: ['abort signal propagation', 'cancellation token',
67
+ 'bounded concurrency', 'timer cleanup'],
68
+ observability: ['structured logging', 'span creation', 'metric emission',
69
+ 'alert threshold'],
70
+ caching: ['TTL eviction', 'bounded cache size', 'cache invalidation',
71
+ 'stale-while-revalidate'],
44
72
  };
45
73
  // ── Domain → critical rules ───────────────────────────────────────────────────
46
74
  const DOMAIN_RULES = {
@@ -57,6 +85,12 @@ const DOMAIN_RULES = {
57
85
  notification: ['validate-recipients', 'rate-limit-sends'],
58
86
  file: ['validate-file-type', 'enforce-size-limit', 'sanitize-filename'],
59
87
  testing: ['no-test-skips', 'no-only-blocks'],
88
+ // ── New domains ─────────────────────────────────────────────────────────────
89
+ resilience: ['single-probe-halfopen', 'bounded-retry', 'circuit-hooks',
90
+ 'timer-cleanup', 'abort-signal'],
91
+ infrastructure: ['validate-config', 'graceful-shutdown', 'health-endpoint'],
92
+ concurrency: ['propagate-abort-signal', 'bounded-concurrency', 'cleanup-timers'],
93
+ caching: ['bound-cache-size', 'ttl-eviction', 'invalidation-strategy'],
60
94
  };
61
95
  // ── Public API ────────────────────────────────────────────────────────────────
62
96
  function parseIntent(intent) {
@@ -67,6 +101,7 @@ function parseIntent(intent) {
67
101
  const words = lower.split(/\W+/).filter(Boolean);
68
102
  const wordSet = new Set(words);
69
103
  const matchedDomains = new Set();
104
+ // Step 1: keyword-heuristic matching (existing approach)
70
105
  for (const [domain, keywords] of Object.entries(DOMAIN_KEYWORDS)) {
71
106
  for (const keyword of keywords) {
72
107
  if (lower.includes(keyword) || wordSet.has(keyword)) {
@@ -75,6 +110,18 @@ function parseIntent(intent) {
75
110
  }
76
111
  }
77
112
  }
113
+ // Step 2: taxonomy-based classification — merge primary domains into results
114
+ const taxonomyResult = (0, domain_taxonomy_1.classifyDomains)(intent);
115
+ for (const domainId of taxonomyResult.primary) {
116
+ // Normalise data-access → database for backward compatibility with
117
+ // existing DOMAIN_PATTERNS / DOMAIN_RULES keys
118
+ if (domainId === 'data-access') {
119
+ matchedDomains.add('database');
120
+ }
121
+ else {
122
+ matchedDomains.add(domainId);
123
+ }
124
+ }
78
125
  const domains = [...matchedDomains];
79
126
  const expectedPatterns = [];
80
127
  const criticalRules = [];
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/intent-engine/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/intent-engine/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Repository Classifier (Phase 3 — Repository-Aware Intent Bounding)
3
+ *
4
+ * Deterministic classification of a repository's primary language, framework
5
+ * ecosystem, and dependency archetype from the diff file list alone.
6
+ * No disk I/O, no LLM, no heuristics beyond file path and extension patterns.
7
+ *
8
+ * Used to bound semantic reasoning in the intent matcher so that:
9
+ * - Python repos NEVER emit Express/Zod/React-specific findings
10
+ * - Java repos NEVER emit Node.js-specific findings
11
+ * - TypeScript repos NEVER emit FastAPI/Django-specific findings
12
+ *
13
+ * Output confidence < UNSUPPORTED_THRESHOLD triggers an explicit
14
+ * 'unsupported-reasoning-domain' state rather than guessing.
15
+ */
16
+ export type PrimaryLanguage = 'typescript' | 'javascript' | 'python' | 'java' | 'go' | 'rust' | 'mixed' | 'unknown';
17
+ export type FrameworkEcosystem = 'express' | 'nextjs' | 'react' | 'fastapi' | 'django' | 'flask' | 'spring' | 'airflow' | 'celery' | 'unknown';
18
+ export type DependencyArchetype = 'nodejs' | 'python' | 'java' | 'go' | 'rust' | 'mixed' | 'unknown';
19
+ export interface RepoClassification {
20
+ primaryLanguage: PrimaryLanguage;
21
+ frameworkEcosystem: FrameworkEcosystem;
22
+ dependencyArchetype: DependencyArchetype;
23
+ /**
24
+ * 0.0–1.0. Below UNSUPPORTED_THRESHOLD the classification is unreliable
25
+ * and semantic reasoning should be suppressed.
26
+ */
27
+ confidence: number;
28
+ /**
29
+ * Explicit list of semantic reasoning domains that are VALID for this repo.
30
+ * Intent matching should only use signals from these domains.
31
+ * Empty = all domains allowed (unknown repo, safe default).
32
+ */
33
+ boundedDomains: string[];
34
+ /**
35
+ * When true, the repo classification was too uncertain to run bounded
36
+ * semantic reasoning. Intent matching should emit a single advisory finding
37
+ * rather than domain-specific findings.
38
+ */
39
+ unsupportedReasoningDomain: boolean;
40
+ }
41
+ /**
42
+ * Classify a repository from the diff file paths.
43
+ *
44
+ * Deterministic algorithm:
45
+ * 1. Count file extensions → determine primaryLanguage by weighted vote
46
+ * 2. Scan manifest file names → determine dependencyArchetype
47
+ * 3. Scan file paths for framework markers → determine frameworkEcosystem
48
+ * 4. Compute confidence from vote margin
49
+ * 5. Bound semantic domains by primaryLanguage
50
+ */
51
+ export declare function classifyRepo(diffFiles: Array<{
52
+ path: string;
53
+ }>): RepoClassification;
54
+ /**
55
+ * Returns true if a component signal key is valid for the given repo classification.
56
+ *
57
+ * Component signals that are TypeScript/JavaScript-specific (zod, express, jwt.sign,
58
+ * bcrypt, etc.) must be suppressed when the primary language is Python, Java, Go, etc.
59
+ *
60
+ * @param signalLanguages Languages this signal applies to (empty = applies to all)
61
+ * @param repo The classified repository
62
+ */
63
+ export declare function isSignalCompatible(signalLanguages: PrimaryLanguage[], repo: RepoClassification): boolean;
64
+ //# sourceMappingURL=repo-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-classifier.d.ts","sourceRoot":"","sources":["../../src/intent-engine/repo-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,IAAI,GACJ,MAAM,GACN,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,QAAQ,GACR,OAAO,GACP,SAAS,GACT,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,IAAI,GACJ,MAAM,GACN,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;;;OAIG;IACH,0BAA0B,EAAE,OAAO,CAAC;CACrC;AA+DD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,kBAAkB,CAwFnF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,eAAe,EAAE,EAClC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAMT"}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ /**
3
+ * Repository Classifier (Phase 3 — Repository-Aware Intent Bounding)
4
+ *
5
+ * Deterministic classification of a repository's primary language, framework
6
+ * ecosystem, and dependency archetype from the diff file list alone.
7
+ * No disk I/O, no LLM, no heuristics beyond file path and extension patterns.
8
+ *
9
+ * Used to bound semantic reasoning in the intent matcher so that:
10
+ * - Python repos NEVER emit Express/Zod/React-specific findings
11
+ * - Java repos NEVER emit Node.js-specific findings
12
+ * - TypeScript repos NEVER emit FastAPI/Django-specific findings
13
+ *
14
+ * Output confidence < UNSUPPORTED_THRESHOLD triggers an explicit
15
+ * 'unsupported-reasoning-domain' state rather than guessing.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.classifyRepo = classifyRepo;
19
+ exports.isSignalCompatible = isSignalCompatible;
20
+ // ── Thresholds ────────────────────────────────────────────────────────────────
21
+ /** Below this confidence, emit unsupportedReasoningDomain */
22
+ const UNSUPPORTED_THRESHOLD = 0.4;
23
+ // ── Language detection patterns ───────────────────────────────────────────────
24
+ const LANG_PATTERNS = [
25
+ { language: 'typescript', pattern: /\.(ts|tsx)$/, weight: 2 },
26
+ { language: 'javascript', pattern: /\.(js|jsx|mjs|cjs)$/, weight: 1 },
27
+ { language: 'python', pattern: /\.py$/, weight: 2 },
28
+ { language: 'java', pattern: /\.java$/, weight: 2 },
29
+ { language: 'go', pattern: /\.go$/, weight: 2 },
30
+ { language: 'rust', pattern: /\.rs$/, weight: 2 },
31
+ ];
32
+ // ── Dependency archetype detection ────────────────────────────────────────────
33
+ const DEPENDENCY_PATTERNS = [
34
+ { archetype: 'nodejs', pattern: /(?:^|\/)package\.json$/ },
35
+ { archetype: 'python', pattern: /(?:^|\/)(?:requirements(?:[-_]\w+)?\.txt|pyproject\.toml|setup\.py|setup\.cfg|Pipfile)$/ },
36
+ { archetype: 'java', pattern: /(?:^|\/)(?:pom\.xml|build\.gradle(?:\.kts)?)$/ },
37
+ { archetype: 'go', pattern: /(?:^|\/)go\.mod$/ },
38
+ { archetype: 'rust', pattern: /(?:^|\/)Cargo\.toml$/ },
39
+ ];
40
+ // ── Framework ecosystem detection ─────────────────────────────────────────────
41
+ // Keyed by path/filename patterns found in the diff
42
+ const FRAMEWORK_PATTERNS = [
43
+ { ecosystem: 'airflow', pattern: /(?:airflow|dags?\/|operators?\/)/ },
44
+ { ecosystem: 'celery', pattern: /(?:celery|tasks?\.py$|worker\.py$)/ },
45
+ { ecosystem: 'fastapi', pattern: /(?:fastapi|routers?\/.*\.py$)/ },
46
+ { ecosystem: 'django', pattern: /(?:django|settings\.py$|urls\.py$|views\.py$|models\.py$)/ },
47
+ { ecosystem: 'flask', pattern: /(?:flask|app\.py$|blueprints?\/)/ },
48
+ { ecosystem: 'spring', pattern: /(?:springframework|@SpringBootApplication|Controller\.java$)/ },
49
+ { ecosystem: 'nextjs', pattern: /(?:pages\/|app\/.*page\.tsx$|next\.config\.)/ },
50
+ { ecosystem: 'react', pattern: /(?:\.tsx$|components?\/|hooks?\/)/ },
51
+ { ecosystem: 'express', pattern: /(?:express|router\.(ts|js)$|middleware\.(ts|js)$)/ },
52
+ ];
53
+ // ── Domain bounding by language ───────────────────────────────────────────────
54
+ // Maps primaryLanguage → list of intent domains safe to evaluate on that language.
55
+ // '*' means all domains are safe (no bounding applied).
56
+ const LANGUAGE_DOMAIN_BOUNDS = {
57
+ python: ['concurrency', 'observability', 'resilience', 'data-access', 'messaging',
58
+ 'orchestration', 'caching', 'ml-inference', 'infrastructure', 'security', 'auth'],
59
+ java: ['concurrency', 'observability', 'resilience', 'data-access', 'messaging',
60
+ 'orchestration', 'caching', 'infrastructure', 'security', 'auth', 'api'],
61
+ go: ['concurrency', 'observability', 'resilience', 'data-access', 'messaging',
62
+ 'caching', 'infrastructure', 'security', 'auth', 'api'],
63
+ rust: ['concurrency', 'observability', 'resilience', 'caching', 'infrastructure'],
64
+ typescript: [], // all domains allowed
65
+ javascript: [], // all domains allowed
66
+ mixed: [], // all domains allowed (conservative — don't bound a mixed repo)
67
+ unknown: [], // all domains allowed (safe default — don't suppress on uncertainty)
68
+ };
69
+ // ── Classifier ────────────────────────────────────────────────────────────────
70
+ /**
71
+ * Classify a repository from the diff file paths.
72
+ *
73
+ * Deterministic algorithm:
74
+ * 1. Count file extensions → determine primaryLanguage by weighted vote
75
+ * 2. Scan manifest file names → determine dependencyArchetype
76
+ * 3. Scan file paths for framework markers → determine frameworkEcosystem
77
+ * 4. Compute confidence from vote margin
78
+ * 5. Bound semantic domains by primaryLanguage
79
+ */
80
+ function classifyRepo(diffFiles) {
81
+ const langCounts = {};
82
+ let dependencyArchetype = 'unknown';
83
+ let frameworkEcosystem = 'unknown';
84
+ for (const file of diffFiles) {
85
+ const p = file.path.replace(/\\/g, '/');
86
+ // Language vote
87
+ for (const { language, pattern, weight } of LANG_PATTERNS) {
88
+ if (pattern.test(p)) {
89
+ langCounts[language] = (langCounts[language] ?? 0) + weight;
90
+ }
91
+ }
92
+ // Dependency archetype (first match wins)
93
+ if (dependencyArchetype === 'unknown') {
94
+ for (const { archetype, pattern } of DEPENDENCY_PATTERNS) {
95
+ if (pattern.test(p)) {
96
+ dependencyArchetype = archetype;
97
+ break;
98
+ }
99
+ }
100
+ }
101
+ // Framework ecosystem (first match wins)
102
+ if (frameworkEcosystem === 'unknown') {
103
+ for (const { ecosystem, pattern } of FRAMEWORK_PATTERNS) {
104
+ if (pattern.test(p)) {
105
+ frameworkEcosystem = ecosystem;
106
+ break;
107
+ }
108
+ }
109
+ }
110
+ }
111
+ // Determine primary language
112
+ const sorted = Object.entries(langCounts)
113
+ .sort((a, b) => b[1] - a[1]);
114
+ let primaryLanguage = 'unknown';
115
+ let confidence = 0;
116
+ if (sorted.length === 0) {
117
+ primaryLanguage = 'unknown';
118
+ confidence = 0;
119
+ }
120
+ else if (sorted.length === 1) {
121
+ primaryLanguage = sorted[0][0];
122
+ confidence = 0.95;
123
+ }
124
+ else {
125
+ const top = sorted[0][1];
126
+ const second = sorted[1][1];
127
+ const total = sorted.reduce((s, [, v]) => s + v, 0);
128
+ const dominance = top / total;
129
+ if (dominance >= 0.75) {
130
+ primaryLanguage = sorted[0][0];
131
+ confidence = 0.9;
132
+ }
133
+ else if (dominance >= 0.5) {
134
+ primaryLanguage = sorted[0][0];
135
+ confidence = 0.65;
136
+ }
137
+ else {
138
+ primaryLanguage = 'mixed';
139
+ confidence = 0.4;
140
+ }
141
+ // Boost confidence if dependency archetype aligns
142
+ if ((dependencyArchetype === 'python' && primaryLanguage === 'python') ||
143
+ (dependencyArchetype === 'nodejs' && (primaryLanguage === 'typescript' || primaryLanguage === 'javascript')) ||
144
+ (dependencyArchetype === 'java' && primaryLanguage === 'java') ||
145
+ (dependencyArchetype === 'go' && primaryLanguage === 'go')) {
146
+ confidence = Math.min(1.0, confidence + 0.1);
147
+ }
148
+ }
149
+ const boundedDomains = LANGUAGE_DOMAIN_BOUNDS[primaryLanguage] ?? [];
150
+ const unsupportedReasoningDomain = confidence < UNSUPPORTED_THRESHOLD;
151
+ return {
152
+ primaryLanguage,
153
+ frameworkEcosystem,
154
+ dependencyArchetype,
155
+ confidence,
156
+ boundedDomains,
157
+ unsupportedReasoningDomain,
158
+ };
159
+ }
160
+ /**
161
+ * Returns true if a component signal key is valid for the given repo classification.
162
+ *
163
+ * Component signals that are TypeScript/JavaScript-specific (zod, express, jwt.sign,
164
+ * bcrypt, etc.) must be suppressed when the primary language is Python, Java, Go, etc.
165
+ *
166
+ * @param signalLanguages Languages this signal applies to (empty = applies to all)
167
+ * @param repo The classified repository
168
+ */
169
+ function isSignalCompatible(signalLanguages, repo) {
170
+ // If the signal has no language restriction, it applies everywhere
171
+ if (signalLanguages.length === 0)
172
+ return true;
173
+ // If the repo is unknown or mixed, allow all signals (safe default)
174
+ if (repo.primaryLanguage === 'unknown' || repo.primaryLanguage === 'mixed')
175
+ return true;
176
+ return signalLanguages.includes(repo.primaryLanguage);
177
+ }
178
+ //# sourceMappingURL=repo-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-classifier.js","sourceRoot":"","sources":["../../src/intent-engine/repo-classifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Semantic Intent Expander (Phase 2)
3
+ *
4
+ * Calls an LLM exactly ONCE per unique intent to produce a structured
5
+ * semantic expansion. The result is stored as a signed governance artifact
6
+ * (HMAC-SHA256) so all subsequent enforcement runs against the same
7
+ * deterministic stored result — never re-calling the LLM.
8
+ *
9
+ * ┌──────────────────────────────────────────────────────────────┐
10
+ * │ TRUST MODEL │
11
+ * │ │
12
+ * │ LLM is used for UNDERSTANDING (once, stored, signed). │
13
+ * │ All ENFORCEMENT decisions are deterministic (regex/AST). │
14
+ * │ │
15
+ * │ This mirrors how human architects write design docs: │
16
+ * │ judgment applied once → all reviews check the document. │
17
+ * └──────────────────────────────────────────────────────────────┘
18
+ *
19
+ * Provider support: any OpenAI-compatible HTTP endpoint.
20
+ * - OpenAI: NEURCODE_OPENAI_API_KEY (default)
21
+ * - Anthropic: NEURCODE_ANTHROPIC_API_KEY (maps to their API)
22
+ * - Local: NEURCODE_LLM_BASE_URL=http://localhost:11434/v1 (Ollama)
23
+ *
24
+ * Fallback: if no API key is configured, silently falls back to the
25
+ * deterministic keyword parser — expansion still produced, marked
26
+ * expansionMethod='keyword-fallback'.
27
+ */
28
+ import { z } from 'zod';
29
+ import { ParsedIntent } from './parser';
30
+ /**
31
+ * The structured output schema enforced on the LLM response.
32
+ * Zod parses and strips any extra fields — if the LLM hallucinates
33
+ * fields outside this schema they are silently dropped.
34
+ */
35
+ declare const SemanticExpansionResponseSchema: z.ZodObject<{
36
+ semanticDescription: z.ZodString;
37
+ domains: z.ZodArray<z.ZodString>;
38
+ affectedLayerHints: z.ZodArray<z.ZodString>;
39
+ expectedFilePatterns: z.ZodArray<z.ZodString>;
40
+ policyApplicability: z.ZodArray<z.ZodString>;
41
+ riskLevel: z.ZodEnum<{
42
+ low: "low";
43
+ medium: "medium";
44
+ high: "high";
45
+ critical: "critical";
46
+ }>;
47
+ riskRationale: z.ZodString;
48
+ semanticKeywords: z.ZodArray<z.ZodString>;
49
+ }, z.core.$strip>;
50
+ type SemanticExpansionResponse = z.infer<typeof SemanticExpansionResponseSchema>;
51
+ export interface SemanticIntentExpansion extends SemanticExpansionResponse {
52
+ /** SHA-256 of normalized intent — stable identifier for this expansion. */
53
+ intentHash: string;
54
+ rawIntent: string;
55
+ expansionMethod: 'llm' | 'keyword-fallback';
56
+ modelUsed: string | null;
57
+ expandedAt: string;
58
+ /** Carries parsed keyword data for backward-compat with existing matcher. */
59
+ parsedKeyword: ParsedIntent;
60
+ /** HMAC-SHA256 signature — tamper-evident. Present when signing key configured. */
61
+ signature?: {
62
+ algorithm: 'hmac-sha256';
63
+ keyId: string | null;
64
+ signedAt: string;
65
+ payloadHash: string;
66
+ value: string;
67
+ };
68
+ }
69
+ export interface ExpandIntentOptions {
70
+ cwd: string;
71
+ /** Force a fresh LLM call even if a cached expansion exists. */
72
+ forceRefresh?: boolean;
73
+ /** Skip signing (for tests). */
74
+ skipSigning?: boolean;
75
+ }
76
+ /**
77
+ * Expands an intent into a rich semantic governance artifact.
78
+ *
79
+ * Call flow:
80
+ * 1. Check cache (.neurcode/intent-expansions/{hash}.json)
81
+ * 2. If fresh cached → return it (pure deterministic path)
82
+ * 3. If no cache and LLM available → call LLM once, sign, store, return
83
+ * 4. If no cache and no LLM → keyword fallback, sign, store, return
84
+ *
85
+ * The returned artifact is always HMAC-signed if a signing key is configured.
86
+ * Callers must treat this artifact as the authoritative intent record.
87
+ */
88
+ export declare function expandIntent(rawIntent: string, options: ExpandIntentOptions): Promise<SemanticIntentExpansion>;
89
+ /**
90
+ * Loads a cached expansion for an intent, or null if not found.
91
+ * Used by verify/plan to retrieve the stored governance artifact.
92
+ */
93
+ export declare function loadCachedExpansion(cwd: string, rawIntent: string): SemanticIntentExpansion | null;
94
+ /**
95
+ * Lists all cached expansion hashes in this workspace.
96
+ */
97
+ export declare function listCachedExpansions(cwd: string): string[];
98
+ /**
99
+ * Returns a human-readable summary of what the intent expander knows.
100
+ * Useful for `neurcode intent show` command and audit reports.
101
+ */
102
+ export declare function formatExpansionSummary(exp: SemanticIntentExpansion): string;
103
+ export {};
104
+ //# sourceMappingURL=semantic-expander.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-expander.d.ts","sourceRoot":"","sources":["../../src/intent-engine/semantic-expander.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAe,YAAY,EAAE,MAAM,UAAU,CAAC;AAQrD;;;;GAIG;AACH,QAAA,MAAM,+BAA+B;;;;;;;;;;;;;;iBASnC,CAAC;AAEH,KAAK,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAEjF,MAAM,WAAW,uBAAwB,SAAQ,yBAAyB;IACxE,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,KAAK,GAAG,kBAAkB,CAAC;IAC5C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,aAAa,EAAE,YAAY,CAAC;IAC5B,mFAAmF;IACnF,SAAS,CAAC,EAAE;QACV,SAAS,EAAE,aAAa,CAAC;QACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AA8TD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gCAAgC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,uBAAuB,CAAC,CA6DlC;AAuCD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,uBAAuB,GAAG,IAAI,CAEhC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAW1D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,uBAAuB,GAAG,MAAM,CAa3E"}