@vinaes/succ 1.4.0 → 1.5.37

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 (683) hide show
  1. package/README.md +64 -10
  2. package/dist/cli.js +71 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/agents-md.d.ts.map +1 -1
  5. package/dist/commands/agents-md.js +3 -2
  6. package/dist/commands/agents-md.js.map +1 -1
  7. package/dist/commands/analyze-profile.d.ts.map +1 -1
  8. package/dist/commands/analyze-profile.js +32 -8
  9. package/dist/commands/analyze-profile.js.map +1 -1
  10. package/dist/commands/analyze-recursive.d.ts.map +1 -1
  11. package/dist/commands/analyze-recursive.js +6 -2
  12. package/dist/commands/analyze-recursive.js.map +1 -1
  13. package/dist/commands/analyze-utils.d.ts.map +1 -1
  14. package/dist/commands/analyze-utils.js +17 -4
  15. package/dist/commands/analyze-utils.js.map +1 -1
  16. package/dist/commands/benchmark-quality.d.ts.map +1 -1
  17. package/dist/commands/benchmark-quality.js +11 -4
  18. package/dist/commands/benchmark-quality.js.map +1 -1
  19. package/dist/commands/benchmark-sqlite-vec.d.ts.map +1 -1
  20. package/dist/commands/benchmark-sqlite-vec.js +4 -0
  21. package/dist/commands/benchmark-sqlite-vec.js.map +1 -1
  22. package/dist/commands/benchmark.d.ts.map +1 -1
  23. package/dist/commands/benchmark.js +5 -1
  24. package/dist/commands/benchmark.js.map +1 -1
  25. package/dist/commands/codex-chat.d.ts +8 -0
  26. package/dist/commands/codex-chat.d.ts.map +1 -0
  27. package/dist/commands/codex-chat.js +161 -0
  28. package/dist/commands/codex-chat.js.map +1 -0
  29. package/dist/commands/config.d.ts.map +1 -1
  30. package/dist/commands/config.js +32 -4
  31. package/dist/commands/config.js.map +1 -1
  32. package/dist/commands/daemon.d.ts.map +1 -1
  33. package/dist/commands/daemon.js +13 -4
  34. package/dist/commands/daemon.js.map +1 -1
  35. package/dist/commands/index-code.d.ts +4 -0
  36. package/dist/commands/index-code.d.ts.map +1 -1
  37. package/dist/commands/index-code.js +1 -1
  38. package/dist/commands/index-code.js.map +1 -1
  39. package/dist/commands/init.d.ts.map +1 -1
  40. package/dist/commands/init.js +305 -203
  41. package/dist/commands/init.js.map +1 -1
  42. package/dist/commands/memories.d.ts.map +1 -1
  43. package/dist/commands/memories.js +25 -14
  44. package/dist/commands/memories.js.map +1 -1
  45. package/dist/commands/progress.d.ts.map +1 -1
  46. package/dist/commands/progress.js +3 -2
  47. package/dist/commands/progress.js.map +1 -1
  48. package/dist/commands/reindex.d.ts.map +1 -1
  49. package/dist/commands/reindex.js +54 -36
  50. package/dist/commands/reindex.js.map +1 -1
  51. package/dist/commands/retention.d.ts.map +1 -1
  52. package/dist/commands/retention.js +7 -5
  53. package/dist/commands/retention.js.map +1 -1
  54. package/dist/commands/scan-code.d.ts +76 -0
  55. package/dist/commands/scan-code.d.ts.map +1 -0
  56. package/dist/commands/scan-code.js +385 -0
  57. package/dist/commands/scan-code.js.map +1 -0
  58. package/dist/commands/score.d.ts.map +1 -1
  59. package/dist/commands/score.js +3 -2
  60. package/dist/commands/score.js.map +1 -1
  61. package/dist/commands/session.d.ts +33 -0
  62. package/dist/commands/session.d.ts.map +1 -0
  63. package/dist/commands/session.js +163 -0
  64. package/dist/commands/session.js.map +1 -0
  65. package/dist/commands/setup.d.ts.map +1 -1
  66. package/dist/commands/setup.js +254 -15
  67. package/dist/commands/setup.js.map +1 -1
  68. package/dist/commands/soul.js +3 -2
  69. package/dist/commands/soul.js.map +1 -1
  70. package/dist/commands/status.d.ts.map +1 -1
  71. package/dist/commands/status.js +14 -5
  72. package/dist/commands/status.js.map +1 -1
  73. package/dist/commands/watch.d.ts.map +1 -1
  74. package/dist/commands/watch.js +13 -4
  75. package/dist/commands/watch.js.map +1 -1
  76. package/dist/daemon/analyzer.d.ts.map +1 -1
  77. package/dist/daemon/analyzer.js +21 -5
  78. package/dist/daemon/analyzer.js.map +1 -1
  79. package/dist/daemon/client.d.ts.map +1 -1
  80. package/dist/daemon/client.js +32 -8
  81. package/dist/daemon/client.js.map +1 -1
  82. package/dist/daemon/routes/analyzer.d.ts +3 -0
  83. package/dist/daemon/routes/analyzer.d.ts.map +1 -0
  84. package/dist/daemon/routes/analyzer.js +27 -0
  85. package/dist/daemon/routes/analyzer.js.map +1 -0
  86. package/dist/daemon/routes/hooks.d.ts +14 -0
  87. package/dist/daemon/routes/hooks.d.ts.map +1 -0
  88. package/dist/daemon/routes/hooks.js +1212 -0
  89. package/dist/daemon/routes/hooks.js.map +1 -0
  90. package/dist/daemon/routes/memory.d.ts +4 -0
  91. package/dist/daemon/routes/memory.d.ts.map +1 -0
  92. package/dist/daemon/routes/memory.js +71 -0
  93. package/dist/daemon/routes/memory.js.map +1 -0
  94. package/dist/daemon/routes/reflection.d.ts +10 -0
  95. package/dist/daemon/routes/reflection.d.ts.map +1 -0
  96. package/dist/daemon/routes/reflection.js +397 -0
  97. package/dist/daemon/routes/reflection.js.map +1 -0
  98. package/dist/daemon/routes/search.d.ts +5 -0
  99. package/dist/daemon/routes/search.d.ts.map +1 -0
  100. package/dist/daemon/routes/search.js +93 -0
  101. package/dist/daemon/routes/search.js.map +1 -0
  102. package/dist/daemon/routes/sessions.d.ts +3 -0
  103. package/dist/daemon/routes/sessions.d.ts.map +1 -0
  104. package/dist/daemon/routes/sessions.js +160 -0
  105. package/dist/daemon/routes/sessions.js.map +1 -0
  106. package/dist/daemon/routes/skills.d.ts +3 -0
  107. package/dist/daemon/routes/skills.d.ts.map +1 -0
  108. package/dist/daemon/routes/skills.js +36 -0
  109. package/dist/daemon/routes/skills.js.map +1 -0
  110. package/dist/daemon/routes/status.d.ts +3 -0
  111. package/dist/daemon/routes/status.d.ts.map +1 -0
  112. package/dist/daemon/routes/status.js +47 -0
  113. package/dist/daemon/routes/status.js.map +1 -0
  114. package/dist/daemon/routes/types.d.ts +240 -0
  115. package/dist/daemon/routes/types.d.ts.map +1 -0
  116. package/dist/daemon/routes/types.js +97 -0
  117. package/dist/daemon/routes/types.js.map +1 -0
  118. package/dist/daemon/routes/versioning.d.ts +27 -0
  119. package/dist/daemon/routes/versioning.d.ts.map +1 -0
  120. package/dist/daemon/routes/versioning.js +44 -0
  121. package/dist/daemon/routes/versioning.js.map +1 -0
  122. package/dist/daemon/routes/watcher.d.ts +3 -0
  123. package/dist/daemon/routes/watcher.d.ts.map +1 -0
  124. package/dist/daemon/routes/watcher.js +28 -0
  125. package/dist/daemon/routes/watcher.js.map +1 -0
  126. package/dist/daemon/service.d.ts +5 -23
  127. package/dist/daemon/service.d.ts.map +1 -1
  128. package/dist/daemon/service.js +177 -935
  129. package/dist/daemon/service.js.map +1 -1
  130. package/dist/daemon/session-processor.d.ts +4 -8
  131. package/dist/daemon/session-processor.d.ts.map +1 -1
  132. package/dist/daemon/session-processor.js +39 -38
  133. package/dist/daemon/session-processor.js.map +1 -1
  134. package/dist/lib/ai-readiness.d.ts.map +1 -1
  135. package/dist/lib/ai-readiness.js +33 -8
  136. package/dist/lib/ai-readiness.js.map +1 -1
  137. package/dist/lib/analyze-state.d.ts.map +1 -1
  138. package/dist/lib/analyze-state.js +25 -3
  139. package/dist/lib/analyze-state.js.map +1 -1
  140. package/dist/lib/auto-memory/consolidation.d.ts +41 -0
  141. package/dist/lib/auto-memory/consolidation.d.ts.map +1 -0
  142. package/dist/lib/auto-memory/consolidation.js +151 -0
  143. package/dist/lib/auto-memory/consolidation.js.map +1 -0
  144. package/dist/lib/bpe.d.ts.map +1 -1
  145. package/dist/lib/bpe.js +9 -10
  146. package/dist/lib/bpe.js.map +1 -1
  147. package/dist/lib/brain-export.d.ts +65 -0
  148. package/dist/lib/brain-export.d.ts.map +1 -0
  149. package/dist/lib/brain-export.js +413 -0
  150. package/dist/lib/brain-export.js.map +1 -0
  151. package/dist/lib/checkpoint.d.ts.map +1 -1
  152. package/dist/lib/checkpoint.js +22 -6
  153. package/dist/lib/checkpoint.js.map +1 -1
  154. package/dist/lib/chunker.d.ts.map +1 -1
  155. package/dist/lib/chunker.js +6 -1
  156. package/dist/lib/chunker.js.map +1 -1
  157. package/dist/lib/claude-ws-transport.d.ts.map +1 -1
  158. package/dist/lib/claude-ws-transport.js +12 -4
  159. package/dist/lib/claude-ws-transport.js.map +1 -1
  160. package/dist/lib/command-safety.d.ts +64 -0
  161. package/dist/lib/command-safety.d.ts.map +1 -0
  162. package/dist/lib/command-safety.js +625 -0
  163. package/dist/lib/command-safety.js.map +1 -0
  164. package/dist/lib/compact-briefing.d.ts.map +1 -1
  165. package/dist/lib/compact-briefing.js +10 -13
  166. package/dist/lib/compact-briefing.js.map +1 -1
  167. package/dist/lib/config-defaults.d.ts.map +1 -1
  168. package/dist/lib/config-defaults.js +3 -0
  169. package/dist/lib/config-defaults.js.map +1 -1
  170. package/dist/lib/config-display.d.ts +4 -0
  171. package/dist/lib/config-display.d.ts.map +1 -1
  172. package/dist/lib/config-display.js +6 -1
  173. package/dist/lib/config-display.js.map +1 -1
  174. package/dist/lib/config-types.d.ts +149 -0
  175. package/dist/lib/config-types.d.ts.map +1 -1
  176. package/dist/lib/config-validation.d.ts.map +1 -1
  177. package/dist/lib/config-validation.js +5 -0
  178. package/dist/lib/config-validation.js.map +1 -1
  179. package/dist/lib/config.d.ts.map +1 -1
  180. package/dist/lib/config.js +92 -9
  181. package/dist/lib/config.js.map +1 -1
  182. package/dist/lib/consolidate.d.ts.map +1 -1
  183. package/dist/lib/consolidate.js +66 -47
  184. package/dist/lib/consolidate.js.map +1 -1
  185. package/dist/lib/content-sanitizer.d.ts +29 -0
  186. package/dist/lib/content-sanitizer.d.ts.map +1 -0
  187. package/dist/lib/content-sanitizer.js +72 -0
  188. package/dist/lib/content-sanitizer.js.map +1 -0
  189. package/dist/lib/cross-repo.d.ts +44 -0
  190. package/dist/lib/cross-repo.d.ts.map +1 -0
  191. package/dist/lib/cross-repo.js +108 -0
  192. package/dist/lib/cross-repo.js.map +1 -0
  193. package/dist/lib/daemon-port.d.ts +12 -0
  194. package/dist/lib/daemon-port.d.ts.map +1 -0
  195. package/dist/lib/daemon-port.js +20 -0
  196. package/dist/lib/daemon-port.js.map +1 -0
  197. package/dist/lib/db/auto-memory.d.ts +40 -0
  198. package/dist/lib/db/auto-memory.d.ts.map +1 -0
  199. package/dist/lib/db/auto-memory.js +74 -0
  200. package/dist/lib/db/auto-memory.js.map +1 -0
  201. package/dist/lib/db/bm25-indexes.d.ts.map +1 -1
  202. package/dist/lib/db/bm25-indexes.js +16 -4
  203. package/dist/lib/db/bm25-indexes.js.map +1 -1
  204. package/dist/lib/db/documents.d.ts.map +1 -1
  205. package/dist/lib/db/documents.js +4 -1
  206. package/dist/lib/db/documents.js.map +1 -1
  207. package/dist/lib/db/global-memories.d.ts +2 -10
  208. package/dist/lib/db/global-memories.d.ts.map +1 -1
  209. package/dist/lib/db/global-memories.js +13 -6
  210. package/dist/lib/db/global-memories.js.map +1 -1
  211. package/dist/lib/db/graph.d.ts +5 -1
  212. package/dist/lib/db/graph.d.ts.map +1 -1
  213. package/dist/lib/db/graph.js +38 -8
  214. package/dist/lib/db/graph.js.map +1 -1
  215. package/dist/lib/db/hybrid-search.d.ts +4 -2
  216. package/dist/lib/db/hybrid-search.d.ts.map +1 -1
  217. package/dist/lib/db/hybrid-search.js +29 -11
  218. package/dist/lib/db/hybrid-search.js.map +1 -1
  219. package/dist/lib/db/index.d.ts +6 -1
  220. package/dist/lib/db/index.d.ts.map +1 -1
  221. package/dist/lib/db/index.js +5 -1
  222. package/dist/lib/db/index.js.map +1 -1
  223. package/dist/lib/db/memories.d.ts +19 -14
  224. package/dist/lib/db/memories.d.ts.map +1 -1
  225. package/dist/lib/db/memories.js +100 -37
  226. package/dist/lib/db/memories.js.map +1 -1
  227. package/dist/lib/db/parse-helpers.d.ts +14 -0
  228. package/dist/lib/db/parse-helpers.d.ts.map +1 -0
  229. package/dist/lib/db/parse-helpers.js +59 -0
  230. package/dist/lib/db/parse-helpers.js.map +1 -0
  231. package/dist/lib/db/recall-events.d.ts +49 -0
  232. package/dist/lib/db/recall-events.d.ts.map +1 -0
  233. package/dist/lib/db/recall-events.js +196 -0
  234. package/dist/lib/db/recall-events.js.map +1 -0
  235. package/dist/lib/db/retention.d.ts +4 -3
  236. package/dist/lib/db/retention.d.ts.map +1 -1
  237. package/dist/lib/db/retention.js +12 -1
  238. package/dist/lib/db/retention.js.map +1 -1
  239. package/dist/lib/db/schema.d.ts +2 -0
  240. package/dist/lib/db/schema.d.ts.map +1 -1
  241. package/dist/lib/db/schema.js +140 -80
  242. package/dist/lib/db/schema.js.map +1 -1
  243. package/dist/lib/db/skills.d.ts.map +1 -1
  244. package/dist/lib/db/skills.js +10 -6
  245. package/dist/lib/db/skills.js.map +1 -1
  246. package/dist/lib/diff-brain.d.ts +24 -0
  247. package/dist/lib/diff-brain.d.ts.map +1 -0
  248. package/dist/lib/diff-brain.js +114 -0
  249. package/dist/lib/diff-brain.js.map +1 -0
  250. package/dist/lib/diff-parser.d.ts +74 -0
  251. package/dist/lib/diff-parser.d.ts.map +1 -0
  252. package/dist/lib/diff-parser.js +200 -0
  253. package/dist/lib/diff-parser.js.map +1 -0
  254. package/dist/lib/embedding-pool.d.ts.map +1 -1
  255. package/dist/lib/embedding-pool.js +5 -1
  256. package/dist/lib/embedding-pool.js.map +1 -1
  257. package/dist/lib/embeddings.d.ts +12 -0
  258. package/dist/lib/embeddings.d.ts.map +1 -1
  259. package/dist/lib/embeddings.js +77 -19
  260. package/dist/lib/embeddings.js.map +1 -1
  261. package/dist/lib/errors.d.ts +2 -0
  262. package/dist/lib/errors.d.ts.map +1 -1
  263. package/dist/lib/errors.js +4 -0
  264. package/dist/lib/errors.js.map +1 -1
  265. package/dist/lib/fault-logger.d.ts.map +1 -1
  266. package/dist/lib/fault-logger.js +22 -7
  267. package/dist/lib/fault-logger.js.map +1 -1
  268. package/dist/lib/git/co-change.d.ts +39 -0
  269. package/dist/lib/git/co-change.d.ts.map +1 -0
  270. package/dist/lib/git/co-change.js +139 -0
  271. package/dist/lib/git/co-change.js.map +1 -0
  272. package/dist/lib/graph/bridge-edges.d.ts +93 -0
  273. package/dist/lib/graph/bridge-edges.d.ts.map +1 -0
  274. package/dist/lib/graph/bridge-edges.js +276 -0
  275. package/dist/lib/graph/bridge-edges.js.map +1 -0
  276. package/dist/lib/graph/centrality.d.ts +11 -0
  277. package/dist/lib/graph/centrality.d.ts.map +1 -1
  278. package/dist/lib/graph/centrality.js +51 -3
  279. package/dist/lib/graph/centrality.js.map +1 -1
  280. package/dist/lib/graph/cleanup.d.ts.map +1 -1
  281. package/dist/lib/graph/cleanup.js +2 -1
  282. package/dist/lib/graph/cleanup.js.map +1 -1
  283. package/dist/lib/graph/community-detection.d.ts +17 -2
  284. package/dist/lib/graph/community-detection.d.ts.map +1 -1
  285. package/dist/lib/graph/community-detection.js +147 -48
  286. package/dist/lib/graph/community-detection.js.map +1 -1
  287. package/dist/lib/graph/community-summaries.d.ts +26 -0
  288. package/dist/lib/graph/community-summaries.d.ts.map +1 -0
  289. package/dist/lib/graph/community-summaries.js +130 -0
  290. package/dist/lib/graph/community-summaries.js.map +1 -0
  291. package/dist/lib/graph/contextual-proximity.d.ts.map +1 -1
  292. package/dist/lib/graph/contextual-proximity.js +11 -4
  293. package/dist/lib/graph/contextual-proximity.js.map +1 -1
  294. package/dist/lib/graph/graphology-bridge.d.ts +101 -0
  295. package/dist/lib/graph/graphology-bridge.d.ts.map +1 -0
  296. package/dist/lib/graph/graphology-bridge.js +488 -0
  297. package/dist/lib/graph/graphology-bridge.js.map +1 -0
  298. package/dist/lib/graph/llm-relations.d.ts.map +1 -1
  299. package/dist/lib/graph/llm-relations.js +27 -5
  300. package/dist/lib/graph/llm-relations.js.map +1 -1
  301. package/dist/lib/graph-export.d.ts.map +1 -1
  302. package/dist/lib/graph-export.js +2 -2
  303. package/dist/lib/graph-export.js.map +1 -1
  304. package/dist/lib/graph-scheduler.d.ts +0 -5
  305. package/dist/lib/graph-scheduler.d.ts.map +1 -1
  306. package/dist/lib/graph-scheduler.js +5 -1
  307. package/dist/lib/graph-scheduler.js.map +1 -1
  308. package/dist/lib/guardrails.d.ts +50 -0
  309. package/dist/lib/guardrails.d.ts.map +1 -0
  310. package/dist/lib/guardrails.js +502 -0
  311. package/dist/lib/guardrails.js.map +1 -0
  312. package/dist/lib/hook-rules.d.ts +1 -1
  313. package/dist/lib/hook-rules.d.ts.map +1 -1
  314. package/dist/lib/hook-rules.js +8 -2
  315. package/dist/lib/hook-rules.js.map +1 -1
  316. package/dist/lib/ifc/file-labels.d.ts +35 -0
  317. package/dist/lib/ifc/file-labels.d.ts.map +1 -0
  318. package/dist/lib/ifc/file-labels.js +208 -0
  319. package/dist/lib/ifc/file-labels.js.map +1 -0
  320. package/dist/lib/ifc/label.d.ts +38 -0
  321. package/dist/lib/ifc/label.d.ts.map +1 -0
  322. package/dist/lib/ifc/label.js +80 -0
  323. package/dist/lib/ifc/label.js.map +1 -0
  324. package/dist/lib/ifc/session-ifc.d.ts +92 -0
  325. package/dist/lib/ifc/session-ifc.d.ts.map +1 -0
  326. package/dist/lib/ifc/session-ifc.js +222 -0
  327. package/dist/lib/ifc/session-ifc.js.map +1 -0
  328. package/dist/lib/indexer.js +2 -2
  329. package/dist/lib/indexer.js.map +1 -1
  330. package/dist/lib/injection-detector.d.ts +83 -0
  331. package/dist/lib/injection-detector.d.ts.map +1 -0
  332. package/dist/lib/injection-detector.js +586 -0
  333. package/dist/lib/injection-detector.js.map +1 -0
  334. package/dist/lib/injection-semantic.d.ts +31 -0
  335. package/dist/lib/injection-semantic.d.ts.map +1 -0
  336. package/dist/lib/injection-semantic.js +230 -0
  337. package/dist/lib/injection-semantic.js.map +1 -0
  338. package/dist/lib/llm.d.ts.map +1 -1
  339. package/dist/lib/llm.js +19 -4
  340. package/dist/lib/llm.js.map +1 -1
  341. package/dist/lib/lock.d.ts.map +1 -1
  342. package/dist/lib/lock.js +24 -3
  343. package/dist/lib/lock.js.map +1 -1
  344. package/dist/lib/md-fetch.d.ts.map +1 -1
  345. package/dist/lib/md-fetch.js +9 -2
  346. package/dist/lib/md-fetch.js.map +1 -1
  347. package/dist/lib/observability.d.ts +75 -0
  348. package/dist/lib/observability.d.ts.map +1 -0
  349. package/dist/lib/observability.js +201 -0
  350. package/dist/lib/observability.js.map +1 -0
  351. package/dist/lib/ort-session.d.ts +26 -0
  352. package/dist/lib/ort-session.d.ts.map +1 -1
  353. package/dist/lib/ort-session.js +107 -3
  354. package/dist/lib/ort-session.js.map +1 -1
  355. package/dist/lib/prd/codebase-context.d.ts.map +1 -1
  356. package/dist/lib/prd/codebase-context.js +9 -2
  357. package/dist/lib/prd/codebase-context.js.map +1 -1
  358. package/dist/lib/prd/context.d.ts.map +1 -1
  359. package/dist/lib/prd/context.js +11 -3
  360. package/dist/lib/prd/context.js.map +1 -1
  361. package/dist/lib/prd/export.js +1 -1
  362. package/dist/lib/prd/export.js.map +1 -1
  363. package/dist/lib/prd/generate.d.ts.map +1 -1
  364. package/dist/lib/prd/generate.js +17 -4
  365. package/dist/lib/prd/generate.js.map +1 -1
  366. package/dist/lib/prd/parse.d.ts.map +1 -1
  367. package/dist/lib/prd/parse.js +6 -1
  368. package/dist/lib/prd/parse.js.map +1 -1
  369. package/dist/lib/prd/runner.d.ts +1 -2
  370. package/dist/lib/prd/runner.d.ts.map +1 -1
  371. package/dist/lib/prd/runner.js +43 -32
  372. package/dist/lib/prd/runner.js.map +1 -1
  373. package/dist/lib/prd/worktree.d.ts +1 -2
  374. package/dist/lib/prd/worktree.d.ts.map +1 -1
  375. package/dist/lib/prd/worktree.js +62 -70
  376. package/dist/lib/prd/worktree.js.map +1 -1
  377. package/dist/lib/precompute-context.d.ts.map +1 -1
  378. package/dist/lib/precompute-context.js +15 -34
  379. package/dist/lib/precompute-context.js.map +1 -1
  380. package/dist/lib/pricing.d.ts.map +1 -1
  381. package/dist/lib/pricing.js +5 -1
  382. package/dist/lib/pricing.js.map +1 -1
  383. package/dist/lib/process-registry.js +3 -3
  384. package/dist/lib/process-registry.js.map +1 -1
  385. package/dist/lib/public-api.d.ts +41 -1
  386. package/dist/lib/public-api.d.ts.map +1 -1
  387. package/dist/lib/public-api.js +38 -0
  388. package/dist/lib/public-api.js.map +1 -1
  389. package/dist/lib/quality.d.ts.map +1 -1
  390. package/dist/lib/quality.js +15 -6
  391. package/dist/lib/quality.js.map +1 -1
  392. package/dist/lib/query-expansion.d.ts +32 -0
  393. package/dist/lib/query-expansion.d.ts.map +1 -1
  394. package/dist/lib/query-expansion.js +62 -1
  395. package/dist/lib/query-expansion.js.map +1 -1
  396. package/dist/lib/reference-embeddings.d.ts.map +1 -1
  397. package/dist/lib/reference-embeddings.js +17 -4
  398. package/dist/lib/reference-embeddings.js.map +1 -1
  399. package/dist/lib/reflection-synthesizer.d.ts.map +1 -1
  400. package/dist/lib/reflection-synthesizer.js +7 -1
  401. package/dist/lib/reflection-synthesizer.js.map +1 -1
  402. package/dist/lib/reranker.d.ts +41 -0
  403. package/dist/lib/reranker.d.ts.map +1 -0
  404. package/dist/lib/reranker.js +294 -0
  405. package/dist/lib/reranker.js.map +1 -0
  406. package/dist/lib/retrieval-feedback.d.ts +100 -0
  407. package/dist/lib/retrieval-feedback.d.ts.map +1 -0
  408. package/dist/lib/retrieval-feedback.js +174 -0
  409. package/dist/lib/retrieval-feedback.js.map +1 -0
  410. package/dist/lib/review/context-pack.d.ts +58 -0
  411. package/dist/lib/review/context-pack.d.ts.map +1 -0
  412. package/dist/lib/review/context-pack.js +300 -0
  413. package/dist/lib/review/context-pack.js.map +1 -0
  414. package/dist/lib/search/hierarchical-summaries.d.ts +65 -0
  415. package/dist/lib/search/hierarchical-summaries.d.ts.map +1 -0
  416. package/dist/lib/search/hierarchical-summaries.js +423 -0
  417. package/dist/lib/search/hierarchical-summaries.js.map +1 -0
  418. package/dist/lib/search/hyde.d.ts +27 -0
  419. package/dist/lib/search/hyde.d.ts.map +1 -0
  420. package/dist/lib/search/hyde.js +141 -0
  421. package/dist/lib/search/hyde.js.map +1 -0
  422. package/dist/lib/search/late-chunking.d.ts +53 -0
  423. package/dist/lib/search/late-chunking.d.ts.map +1 -0
  424. package/dist/lib/search/late-chunking.js +230 -0
  425. package/dist/lib/search/late-chunking.js.map +1 -0
  426. package/dist/lib/search/ppr-retrieval.d.ts +49 -0
  427. package/dist/lib/search/ppr-retrieval.d.ts.map +1 -0
  428. package/dist/lib/search/ppr-retrieval.js +135 -0
  429. package/dist/lib/search/ppr-retrieval.js.map +1 -0
  430. package/dist/lib/search/repo-map.d.ts +43 -0
  431. package/dist/lib/search/repo-map.d.ts.map +1 -0
  432. package/dist/lib/search/repo-map.js +165 -0
  433. package/dist/lib/search/repo-map.js.map +1 -0
  434. package/dist/lib/session-analyzer.d.ts +90 -0
  435. package/dist/lib/session-analyzer.d.ts.map +1 -0
  436. package/dist/lib/session-analyzer.js +467 -0
  437. package/dist/lib/session-analyzer.js.map +1 -0
  438. package/dist/lib/session-observations.d.ts.map +1 -1
  439. package/dist/lib/session-observations.js +13 -3
  440. package/dist/lib/session-observations.js.map +1 -1
  441. package/dist/lib/session-summary.d.ts.map +1 -1
  442. package/dist/lib/session-summary.js +57 -50
  443. package/dist/lib/session-summary.js.map +1 -1
  444. package/dist/lib/session-surgeon.d.ts +53 -0
  445. package/dist/lib/session-surgeon.d.ts.map +1 -0
  446. package/dist/lib/session-surgeon.js +501 -0
  447. package/dist/lib/session-surgeon.js.map +1 -0
  448. package/dist/lib/similarity-utils.d.ts +26 -0
  449. package/dist/lib/similarity-utils.d.ts.map +1 -0
  450. package/dist/lib/similarity-utils.js +66 -0
  451. package/dist/lib/similarity-utils.js.map +1 -0
  452. package/dist/lib/skills.d.ts.map +1 -1
  453. package/dist/lib/skills.js +11 -11
  454. package/dist/lib/skills.js.map +1 -1
  455. package/dist/lib/storage/backends/interface.d.ts +13 -3
  456. package/dist/lib/storage/backends/interface.d.ts.map +1 -1
  457. package/dist/lib/storage/backends/postgresql.d.ts +52 -3
  458. package/dist/lib/storage/backends/postgresql.d.ts.map +1 -1
  459. package/dist/lib/storage/backends/postgresql.js +694 -49
  460. package/dist/lib/storage/backends/postgresql.js.map +1 -1
  461. package/dist/lib/storage/benchmark.js +2 -2
  462. package/dist/lib/storage/benchmark.js.map +1 -1
  463. package/dist/lib/storage/dispatcher/base.d.ts +114 -0
  464. package/dist/lib/storage/dispatcher/base.d.ts.map +1 -0
  465. package/dist/lib/storage/dispatcher/base.js +160 -0
  466. package/dist/lib/storage/dispatcher/base.js.map +1 -0
  467. package/dist/lib/storage/dispatcher/documents.d.ts +25 -0
  468. package/dist/lib/storage/dispatcher/documents.d.ts.map +1 -0
  469. package/dist/lib/storage/dispatcher/documents.js +194 -0
  470. package/dist/lib/storage/dispatcher/documents.js.map +1 -0
  471. package/dist/lib/storage/dispatcher/embeddings.d.ts +34 -0
  472. package/dist/lib/storage/dispatcher/embeddings.d.ts.map +1 -0
  473. package/dist/lib/storage/dispatcher/embeddings.js +144 -0
  474. package/dist/lib/storage/dispatcher/embeddings.js.map +1 -0
  475. package/dist/lib/storage/dispatcher/export-import.d.ts +139 -0
  476. package/dist/lib/storage/dispatcher/export-import.d.ts.map +1 -0
  477. package/dist/lib/storage/dispatcher/export-import.js +191 -0
  478. package/dist/lib/storage/dispatcher/export-import.js.map +1 -0
  479. package/dist/lib/storage/dispatcher/file-hashes.d.ts +13 -0
  480. package/dist/lib/storage/dispatcher/file-hashes.d.ts.map +1 -0
  481. package/dist/lib/storage/dispatcher/file-hashes.js +36 -0
  482. package/dist/lib/storage/dispatcher/file-hashes.js.map +1 -0
  483. package/dist/lib/storage/dispatcher/global-memories.d.ts +28 -0
  484. package/dist/lib/storage/dispatcher/global-memories.d.ts.map +1 -0
  485. package/dist/lib/storage/dispatcher/global-memories.js +151 -0
  486. package/dist/lib/storage/dispatcher/global-memories.js.map +1 -0
  487. package/dist/lib/storage/dispatcher/graph.d.ts +32 -0
  488. package/dist/lib/storage/dispatcher/graph.d.ts.map +1 -0
  489. package/dist/lib/storage/dispatcher/graph.js +146 -0
  490. package/dist/lib/storage/dispatcher/graph.js.map +1 -0
  491. package/dist/lib/storage/dispatcher/index.d.ts +34 -0
  492. package/dist/lib/storage/dispatcher/index.d.ts.map +1 -0
  493. package/dist/lib/storage/dispatcher/index.js +139 -0
  494. package/dist/lib/storage/dispatcher/index.js.map +1 -0
  495. package/dist/lib/storage/dispatcher/memories.d.ts +65 -0
  496. package/dist/lib/storage/dispatcher/memories.d.ts.map +1 -0
  497. package/dist/lib/storage/dispatcher/memories.js +466 -0
  498. package/dist/lib/storage/dispatcher/memories.js.map +1 -0
  499. package/dist/lib/storage/dispatcher/mixin-helper.d.ts +6 -0
  500. package/dist/lib/storage/dispatcher/mixin-helper.d.ts.map +1 -0
  501. package/dist/lib/storage/dispatcher/mixin-helper.js +10 -0
  502. package/dist/lib/storage/dispatcher/mixin-helper.js.map +1 -0
  503. package/dist/lib/storage/dispatcher/retention.d.ts +20 -0
  504. package/dist/lib/storage/dispatcher/retention.d.ts.map +1 -0
  505. package/dist/lib/storage/dispatcher/retention.js +123 -0
  506. package/dist/lib/storage/dispatcher/retention.js.map +1 -0
  507. package/dist/lib/storage/dispatcher/search.d.ts +34 -0
  508. package/dist/lib/storage/dispatcher/search.d.ts.map +1 -0
  509. package/dist/lib/storage/dispatcher/search.js +222 -0
  510. package/dist/lib/storage/dispatcher/search.js.map +1 -0
  511. package/dist/lib/storage/dispatcher/skills.d.ts +53 -0
  512. package/dist/lib/storage/dispatcher/skills.d.ts.map +1 -0
  513. package/dist/lib/storage/dispatcher/skills.js +98 -0
  514. package/dist/lib/storage/dispatcher/skills.js.map +1 -0
  515. package/dist/lib/storage/dispatcher/token-stats.d.ts +23 -0
  516. package/dist/lib/storage/dispatcher/token-stats.d.ts.map +1 -0
  517. package/dist/lib/storage/dispatcher/token-stats.js +92 -0
  518. package/dist/lib/storage/dispatcher/token-stats.js.map +1 -0
  519. package/dist/lib/storage/dispatcher/web-search.d.ts +10 -0
  520. package/dist/lib/storage/dispatcher/web-search.d.ts.map +1 -0
  521. package/dist/lib/storage/dispatcher/web-search.js +39 -0
  522. package/dist/lib/storage/dispatcher/web-search.js.map +1 -0
  523. package/dist/lib/storage/dispatcher-export.d.ts.map +1 -1
  524. package/dist/lib/storage/dispatcher-export.js +48 -39
  525. package/dist/lib/storage/dispatcher-export.js.map +1 -1
  526. package/dist/lib/storage/dispatcher.d.ts +1 -468
  527. package/dist/lib/storage/dispatcher.d.ts.map +1 -1
  528. package/dist/lib/storage/dispatcher.js +1 -1931
  529. package/dist/lib/storage/dispatcher.js.map +1 -1
  530. package/dist/lib/storage/index.d.ts +20 -5
  531. package/dist/lib/storage/index.d.ts.map +1 -1
  532. package/dist/lib/storage/index.js +36 -7
  533. package/dist/lib/storage/index.js.map +1 -1
  534. package/dist/lib/storage/migration/export-import.d.ts.map +1 -1
  535. package/dist/lib/storage/migration/export-import.js +9 -2
  536. package/dist/lib/storage/migration/export-import.js.map +1 -1
  537. package/dist/lib/storage/types.d.ts +152 -10
  538. package/dist/lib/storage/types.d.ts.map +1 -1
  539. package/dist/lib/storage/types.js +13 -0
  540. package/dist/lib/storage/types.js.map +1 -1
  541. package/dist/lib/storage/vector/interface.d.ts +4 -0
  542. package/dist/lib/storage/vector/interface.d.ts.map +1 -1
  543. package/dist/lib/storage/vector/qdrant.d.ts +13 -2
  544. package/dist/lib/storage/vector/qdrant.d.ts.map +1 -1
  545. package/dist/lib/storage/vector/qdrant.js +147 -61
  546. package/dist/lib/storage/vector/qdrant.js.map +1 -1
  547. package/dist/lib/token-budget.d.ts.map +1 -1
  548. package/dist/lib/token-budget.js +9 -2
  549. package/dist/lib/token-budget.js.map +1 -1
  550. package/dist/lib/transcript-utils.d.ts +60 -0
  551. package/dist/lib/transcript-utils.d.ts.map +1 -0
  552. package/dist/lib/transcript-utils.js +69 -0
  553. package/dist/lib/transcript-utils.js.map +1 -0
  554. package/dist/lib/tree-sitter/extractor.d.ts +1 -1
  555. package/dist/lib/tree-sitter/extractor.d.ts.map +1 -1
  556. package/dist/lib/tree-sitter/extractor.js +34 -9
  557. package/dist/lib/tree-sitter/extractor.js.map +1 -1
  558. package/dist/lib/tree-sitter/parser.d.ts.map +1 -1
  559. package/dist/lib/tree-sitter/parser.js +45 -11
  560. package/dist/lib/tree-sitter/parser.js.map +1 -1
  561. package/dist/lib/tree-sitter/public.d.ts +12 -0
  562. package/dist/lib/tree-sitter/public.d.ts.map +1 -1
  563. package/dist/lib/tree-sitter/public.js +33 -1
  564. package/dist/lib/tree-sitter/public.js.map +1 -1
  565. package/dist/lib/tree-sitter/queries.d.ts.map +1 -1
  566. package/dist/lib/tree-sitter/queries.js +8 -0
  567. package/dist/lib/tree-sitter/queries.js.map +1 -1
  568. package/dist/lib/working-memory-pipeline.d.ts.map +1 -1
  569. package/dist/lib/working-memory-pipeline.js +12 -3
  570. package/dist/lib/working-memory-pipeline.js.map +1 -1
  571. package/dist/lib/worktree-detect.d.ts +43 -0
  572. package/dist/lib/worktree-detect.d.ts.map +1 -0
  573. package/dist/lib/worktree-detect.js +154 -0
  574. package/dist/lib/worktree-detect.js.map +1 -0
  575. package/dist/lsp/client.d.ts +96 -0
  576. package/dist/lsp/client.d.ts.map +1 -0
  577. package/dist/lsp/client.js +435 -0
  578. package/dist/lsp/client.js.map +1 -0
  579. package/dist/lsp/installer.d.ts +39 -0
  580. package/dist/lsp/installer.d.ts.map +1 -0
  581. package/dist/lsp/installer.js +275 -0
  582. package/dist/lsp/installer.js.map +1 -0
  583. package/dist/lsp/manager.d.ts +62 -0
  584. package/dist/lsp/manager.d.ts.map +1 -0
  585. package/dist/lsp/manager.js +234 -0
  586. package/dist/lsp/manager.js.map +1 -0
  587. package/dist/lsp/servers.d.ts +52 -0
  588. package/dist/lsp/servers.d.ts.map +1 -0
  589. package/dist/lsp/servers.js +162 -0
  590. package/dist/lsp/servers.js.map +1 -0
  591. package/dist/mcp/helpers.d.ts.map +1 -1
  592. package/dist/mcp/helpers.js +8 -2
  593. package/dist/mcp/helpers.js.map +1 -1
  594. package/dist/mcp/profile.js +1 -1
  595. package/dist/mcp/server.d.ts +3 -2
  596. package/dist/mcp/server.d.ts.map +1 -1
  597. package/dist/mcp/server.js +19 -7
  598. package/dist/mcp/server.js.map +1 -1
  599. package/dist/mcp/tools/config.d.ts.map +1 -1
  600. package/dist/mcp/tools/config.js +28 -118
  601. package/dist/mcp/tools/config.js.map +1 -1
  602. package/dist/mcp/tools/dead-end.d.ts.map +1 -1
  603. package/dist/mcp/tools/dead-end.js +4 -3
  604. package/dist/mcp/tools/dead-end.js.map +1 -1
  605. package/dist/mcp/tools/debug.d.ts.map +1 -1
  606. package/dist/mcp/tools/debug.js +27 -112
  607. package/dist/mcp/tools/debug.js.map +1 -1
  608. package/dist/mcp/tools/graph.d.ts.map +1 -1
  609. package/dist/mcp/tools/graph.js +164 -176
  610. package/dist/mcp/tools/graph.js.map +1 -1
  611. package/dist/mcp/tools/indexing.d.ts +1 -1
  612. package/dist/mcp/tools/indexing.d.ts.map +1 -1
  613. package/dist/mcp/tools/indexing.js +63 -164
  614. package/dist/mcp/tools/indexing.js.map +1 -1
  615. package/dist/mcp/tools/memory/forget.d.ts +3 -0
  616. package/dist/mcp/tools/memory/forget.d.ts.map +1 -0
  617. package/dist/mcp/tools/memory/forget.js +175 -0
  618. package/dist/mcp/tools/memory/forget.js.map +1 -0
  619. package/dist/mcp/tools/memory/memory-helpers.d.ts +45 -0
  620. package/dist/mcp/tools/memory/memory-helpers.d.ts.map +1 -0
  621. package/dist/mcp/tools/memory/memory-helpers.js +291 -0
  622. package/dist/mcp/tools/memory/memory-helpers.js.map +1 -0
  623. package/dist/mcp/tools/memory/recall.d.ts +3 -0
  624. package/dist/mcp/tools/memory/recall.d.ts.map +1 -0
  625. package/dist/mcp/tools/memory/recall.js +495 -0
  626. package/dist/mcp/tools/memory/recall.js.map +1 -0
  627. package/dist/mcp/tools/memory/remember.d.ts +3 -0
  628. package/dist/mcp/tools/memory/remember.d.ts.map +1 -0
  629. package/dist/mcp/tools/memory/remember.js +256 -0
  630. package/dist/mcp/tools/memory/remember.js.map +1 -0
  631. package/dist/mcp/tools/memory/temporal-query.d.ts +8 -0
  632. package/dist/mcp/tools/memory/temporal-query.d.ts.map +1 -0
  633. package/dist/mcp/tools/memory/temporal-query.js +68 -0
  634. package/dist/mcp/tools/memory/temporal-query.js.map +1 -0
  635. package/dist/mcp/tools/memory.d.ts +0 -11
  636. package/dist/mcp/tools/memory.d.ts.map +1 -1
  637. package/dist/mcp/tools/memory.js +6 -1228
  638. package/dist/mcp/tools/memory.js.map +1 -1
  639. package/dist/mcp/tools/prd.d.ts.map +1 -1
  640. package/dist/mcp/tools/prd.js +19 -70
  641. package/dist/mcp/tools/prd.js.map +1 -1
  642. package/dist/mcp/tools/review.d.ts +8 -0
  643. package/dist/mcp/tools/review.d.ts.map +1 -0
  644. package/dist/mcp/tools/review.js +133 -0
  645. package/dist/mcp/tools/review.js.map +1 -0
  646. package/dist/mcp/tools/search.d.ts.map +1 -1
  647. package/dist/mcp/tools/search.js +79 -8
  648. package/dist/mcp/tools/search.js.map +1 -1
  649. package/dist/mcp/tools/status.d.ts.map +1 -1
  650. package/dist/mcp/tools/status.js +34 -75
  651. package/dist/mcp/tools/status.js.map +1 -1
  652. package/dist/mcp/tools/web-fetch.d.ts.map +1 -1
  653. package/dist/mcp/tools/web-fetch.js +5 -1
  654. package/dist/mcp/tools/web-fetch.js.map +1 -1
  655. package/dist/mcp/tools/web-search.d.ts.map +1 -1
  656. package/dist/mcp/tools/web-search.js +25 -103
  657. package/dist/mcp/tools/web-search.js.map +1 -1
  658. package/dist/prompts/guardrails.d.ts +14 -0
  659. package/dist/prompts/guardrails.d.ts.map +1 -0
  660. package/dist/prompts/guardrails.js +115 -0
  661. package/dist/prompts/guardrails.js.map +1 -0
  662. package/dist/prompts/index.d.ts +2 -1
  663. package/dist/prompts/index.d.ts.map +1 -1
  664. package/dist/prompts/index.js +3 -1
  665. package/dist/prompts/index.js.map +1 -1
  666. package/dist/prompts/prd.d.ts +0 -2
  667. package/dist/prompts/prd.d.ts.map +1 -1
  668. package/dist/prompts/prd.js +0 -2
  669. package/dist/prompts/prd.js.map +1 -1
  670. package/hooks/core/__tests__/adapter.test.cjs +340 -0
  671. package/hooks/core/adapter.cjs +463 -0
  672. package/hooks/core/config.cjs +83 -0
  673. package/hooks/core/daemon-boot.cjs +140 -0
  674. package/hooks/core/log.cjs +41 -0
  675. package/hooks/core/worktree.cjs +119 -0
  676. package/hooks/succ-post-tool.cjs +198 -134
  677. package/hooks/succ-pre-compact.cjs +262 -0
  678. package/hooks/succ-pre-tool.cjs +526 -182
  679. package/hooks/succ-session-end.cjs +40 -64
  680. package/hooks/succ-session-start.cjs +484 -430
  681. package/hooks/succ-stop-reflection.cjs +36 -62
  682. package/hooks/succ-user-prompt.cjs +137 -180
  683. package/package.json +17 -6
@@ -0,0 +1,586 @@
1
+ /**
2
+ * Prompt Injection Detection Module — 3-tier deterministic scanner
3
+ *
4
+ * Tier 1: Structural patterns (language-independent, instant)
5
+ * - Delimiter/token injection (<|im_start|>, [INST], <system>, etc.)
6
+ * - Hidden content (zero-width chars, RTL overrides, combining chars)
7
+ * - Encoded injection (base64, hex)
8
+ * - HTML/Markdown structural injection
9
+ *
10
+ * Tier 2: Multilingual semantic patterns (regex, in daemon)
11
+ * - English injection phrases
12
+ * - Chinese, Russian, Arabic, Spanish, Japanese, Korean patterns
13
+ *
14
+ * Tier 2.C: Embedding-based semantic detection (cosine similarity vs prototype bank)
15
+ * - ~50 canonical injection phrases in 10+ languages
16
+ * - Catches paraphrases, novel phrasings, and mixed-language attacks
17
+ *
18
+ * Tier 3: LLM-based detection (guardrails.ts)
19
+ */
20
+ const DELIMITER_PATTERNS = [
21
+ // Chat ML delimiters
22
+ { pattern: /<\|im_start\|>/i, description: 'ChatML im_start delimiter', severity: 'definite' },
23
+ { pattern: /<\|im_end\|>/i, description: 'ChatML im_end delimiter', severity: 'definite' },
24
+ // Llama/Mistral delimiters
25
+ { pattern: /\[INST\]/i, description: 'Llama [INST] delimiter', severity: 'definite' },
26
+ { pattern: /\[\/INST\]/i, description: 'Llama [/INST] delimiter', severity: 'definite' },
27
+ { pattern: /<<SYS>>/i, description: 'Llama <<SYS>> delimiter', severity: 'definite' },
28
+ // Match </s> only when NOT preceded by <s> (HTML strikethrough) — avoid false positive on <s>text</s>
29
+ { pattern: /(?<!<s[^>]*>.*)<\/s>/i, description: 'End-of-sequence token', severity: 'probable' },
30
+ // Generic LLM tokens
31
+ { pattern: /<\|endoftext\|>/i, description: 'GPT endoftext token', severity: 'definite' },
32
+ { pattern: /<\|system\|>/i, description: 'System role token', severity: 'definite' },
33
+ // XML role injection (closing then opening)
34
+ {
35
+ pattern: /<\/(?:hook-rule|file-context|soul|previous-session|session|compact-fallback|security-warning|commit-format|pre-commit-review|succ-agents)>/i,
36
+ description: 'Closing succ XML wrapper tag',
37
+ severity: 'definite',
38
+ },
39
+ {
40
+ pattern: /<\/?system>/i,
41
+ description: 'XML system tag injection',
42
+ severity: 'definite',
43
+ },
44
+ {
45
+ pattern: /<\/?assistant>/i,
46
+ description: 'XML assistant tag injection',
47
+ severity: 'definite',
48
+ },
49
+ {
50
+ pattern: /<\/?user>/i,
51
+ description: 'XML user tag injection',
52
+ severity: 'probable',
53
+ },
54
+ // Bracket role injection
55
+ { pattern: /\[system\]/i, description: 'Bracketed system role', severity: 'probable' },
56
+ { pattern: /\[assistant\]/i, description: 'Bracketed assistant role', severity: 'probable' },
57
+ ];
58
+ const HIDDEN_CONTENT_PATTERNS = [
59
+ // Zero-width characters (bulk presence)
60
+ {
61
+ // eslint-disable-next-line no-misleading-character-class -- Matching individual ZWJ codepoints is intentional for security
62
+ pattern: /[\u200B\u200C\u200D\uFEFF\u00AD\u2060]{3,}/,
63
+ description: 'Cluster of zero-width/invisible characters',
64
+ severity: 'suspicious',
65
+ },
66
+ // RTL/LTR override abuse
67
+ {
68
+ pattern: /[\u202A-\u202E\u2066-\u2069]{2,}/,
69
+ description: 'Multiple RTL/LTR override characters',
70
+ severity: 'suspicious',
71
+ },
72
+ // HTML entities used to encode injection
73
+ {
74
+ pattern: /&(?:lt|gt|amp|quot);.*(?:system|assistant|ignore|instruction)/i,
75
+ description: 'HTML-entity encoded injection attempt',
76
+ severity: 'probable',
77
+ },
78
+ // HTML hidden text
79
+ {
80
+ pattern: /<(?:span|div|p)\s+[^>]*(?:display\s*:\s*none|visibility\s*:\s*hidden|hidden)[^>]*>/i,
81
+ description: 'Hidden HTML element',
82
+ severity: 'probable',
83
+ },
84
+ // HTML comment injection
85
+ {
86
+ pattern: /<!--\s*(?:AI|AGENT|LLM|ASSISTANT|IGNORE|INSTRUCTION|SYSTEM|OVERRIDE)/i,
87
+ description: 'HTML comment targeting AI agent',
88
+ severity: 'probable',
89
+ },
90
+ ];
91
+ const ENCODED_INJECTION = [
92
+ // Base64 blocks that look like encoded instructions (at least 20 chars of base64)
93
+ {
94
+ pattern: /(?:base64|atob|decode)\s*[:(]\s*['"]?[A-Za-z0-9+/]{20,}={0,2}/i,
95
+ description: 'Explicitly decoded base64 content',
96
+ severity: 'probable',
97
+ },
98
+ ];
99
+ const ALL_TIER1_PATTERNS = [
100
+ ...DELIMITER_PATTERNS,
101
+ ...HIDDEN_CONTENT_PATTERNS,
102
+ ...ENCODED_INJECTION,
103
+ ];
104
+ const SEMANTIC_PATTERNS = [
105
+ // English
106
+ {
107
+ pattern: /ignore\s+(?:all\s+)?(?:previous|prior|above|earlier)\s+(?:instructions|rules|prompts|directives)/i,
108
+ description: 'Instruction override attempt',
109
+ language: 'en',
110
+ severity: 'definite',
111
+ },
112
+ {
113
+ pattern: /disregard\s+(?:all\s+)?(?:previous|prior|above|earlier)/i,
114
+ description: 'Disregard previous instructions',
115
+ language: 'en',
116
+ severity: 'definite',
117
+ },
118
+ {
119
+ pattern: /forget\s+(?:everything|all|previous|your\s+(?:rules|instructions|programming))/i,
120
+ description: 'Forget instructions command',
121
+ language: 'en',
122
+ severity: 'definite',
123
+ },
124
+ {
125
+ pattern: /you\s+are\s+now\s+(?:a\s+)?(?:different|new|unrestricted|unfiltered)/i,
126
+ description: 'Identity override attempt',
127
+ language: 'en',
128
+ severity: 'definite',
129
+ },
130
+ {
131
+ pattern: /from\s+now\s+on\s+(?:you|your)\s/i,
132
+ description: 'Behavioral override attempt',
133
+ language: 'en',
134
+ severity: 'probable',
135
+ },
136
+ {
137
+ pattern: /act\s+as\s+(?:a|an|if)\s/i,
138
+ description: 'Role-play instruction',
139
+ language: 'en',
140
+ severity: 'probable',
141
+ },
142
+ {
143
+ pattern: /pretend\s+(?:to\s+be|you\s+are|that)\s/i,
144
+ description: 'Pretend instruction',
145
+ language: 'en',
146
+ severity: 'probable',
147
+ },
148
+ {
149
+ pattern: /new\s+(?:instructions|rules|system\s+prompt)/i,
150
+ description: 'New instruction injection',
151
+ language: 'en',
152
+ severity: 'definite',
153
+ },
154
+ {
155
+ pattern: /system\s+prompt\s*[:=]/i,
156
+ description: 'System prompt assignment',
157
+ language: 'en',
158
+ severity: 'definite',
159
+ },
160
+ {
161
+ pattern: /override\s+(?:previous|all|system|safety)/i,
162
+ description: 'Override command',
163
+ language: 'en',
164
+ severity: 'definite',
165
+ },
166
+ {
167
+ pattern: /\bDAN\b.*\bmode\b/i,
168
+ description: 'DAN jailbreak attempt',
169
+ language: 'en',
170
+ severity: 'definite',
171
+ },
172
+ {
173
+ pattern: /developer\s+mode\s+(?:enabled|activated|on)/i,
174
+ description: 'Developer mode jailbreak',
175
+ language: 'en',
176
+ severity: 'definite',
177
+ },
178
+ {
179
+ pattern: /bypass\s+(?:safety|filter|guard|restriction|content\s+policy)/i,
180
+ description: 'Safety bypass attempt',
181
+ language: 'en',
182
+ severity: 'definite',
183
+ },
184
+ {
185
+ pattern: /in\s+your\s+next\s+response/i,
186
+ description: 'Response manipulation attempt',
187
+ language: 'en',
188
+ severity: 'probable',
189
+ },
190
+ {
191
+ pattern: /(?:do\s+not|don'?t)\s+(?:mention|reveal|disclose|tell|say)\s+(?:this|that|the|any)/i,
192
+ description: 'Concealment instruction',
193
+ language: 'en',
194
+ severity: 'probable',
195
+ },
196
+ // Chinese (中文)
197
+ {
198
+ pattern: /忽略.{0,5}(?:之前|以上|先前|前面).{0,5}(?:指令|规则|指示|提示|命令)/,
199
+ description: 'Ignore previous instructions (Chinese)',
200
+ language: 'zh',
201
+ severity: 'definite',
202
+ },
203
+ {
204
+ pattern: /你现在是/,
205
+ description: 'You are now (Chinese identity override)',
206
+ language: 'zh',
207
+ severity: 'probable',
208
+ },
209
+ {
210
+ pattern: /从现在开始你/,
211
+ description: 'From now on you (Chinese behavioral override)',
212
+ language: 'zh',
213
+ severity: 'probable',
214
+ },
215
+ {
216
+ pattern: /新的指令/,
217
+ description: 'New instructions (Chinese)',
218
+ language: 'zh',
219
+ severity: 'definite',
220
+ },
221
+ {
222
+ pattern: /系统提示/,
223
+ description: 'System prompt (Chinese)',
224
+ language: 'zh',
225
+ severity: 'probable',
226
+ },
227
+ // Russian (Русский)
228
+ {
229
+ pattern: /игнорир\w*.{0,10}(?:предыдущ|прошл|выше|ранее).{0,10}(?:инструкц|правил|указан|команд)/i,
230
+ description: 'Ignore previous instructions (Russian)',
231
+ language: 'ru',
232
+ severity: 'definite',
233
+ },
234
+ {
235
+ pattern: /ты\s+теперь\s/i,
236
+ description: 'You are now (Russian identity override)',
237
+ language: 'ru',
238
+ severity: 'probable',
239
+ },
240
+ {
241
+ pattern: /новые\s+инструкции/i,
242
+ description: 'New instructions (Russian)',
243
+ language: 'ru',
244
+ severity: 'definite',
245
+ },
246
+ {
247
+ pattern: /системн\w+\s+промпт/i,
248
+ description: 'System prompt (Russian)',
249
+ language: 'ru',
250
+ severity: 'probable',
251
+ },
252
+ {
253
+ pattern: /забудь\s+(?:все|всё|предыдущ|прошл)/i,
254
+ description: 'Forget everything (Russian)',
255
+ language: 'ru',
256
+ severity: 'definite',
257
+ },
258
+ // Arabic (العربية)
259
+ {
260
+ pattern: /تجاهل.{0,10}(?:التعليمات|الأوامر|القواعد)\s*(?:السابقة|أعلاه)/,
261
+ description: 'Ignore previous instructions (Arabic)',
262
+ language: 'ar',
263
+ severity: 'definite',
264
+ },
265
+ {
266
+ pattern: /أنت\s+الآن/,
267
+ description: 'You are now (Arabic identity override)',
268
+ language: 'ar',
269
+ severity: 'probable',
270
+ },
271
+ {
272
+ pattern: /تعليمات\s+جديدة/,
273
+ description: 'New instructions (Arabic)',
274
+ language: 'ar',
275
+ severity: 'definite',
276
+ },
277
+ // Spanish (Español)
278
+ {
279
+ pattern: /ignora\w*\s+(?:las?\s+)?(?:instrucciones|reglas|indicaciones)\s+(?:anteriores|previas)/i,
280
+ description: 'Ignore previous instructions (Spanish)',
281
+ language: 'es',
282
+ severity: 'definite',
283
+ },
284
+ {
285
+ pattern: /ahora\s+eres/i,
286
+ description: 'Now you are (Spanish identity override)',
287
+ language: 'es',
288
+ severity: 'probable',
289
+ },
290
+ {
291
+ pattern: /nuevas\s+instrucciones/i,
292
+ description: 'New instructions (Spanish)',
293
+ language: 'es',
294
+ severity: 'definite',
295
+ },
296
+ // Japanese (日本語)
297
+ {
298
+ pattern: /以前の(?:指示|ルール|命令)を(?:無視|忘れ)/,
299
+ description: 'Ignore previous instructions (Japanese)',
300
+ language: 'ja',
301
+ severity: 'definite',
302
+ },
303
+ {
304
+ pattern: /あなたは今から/,
305
+ description: 'From now on you (Japanese behavioral override)',
306
+ language: 'ja',
307
+ severity: 'probable',
308
+ },
309
+ {
310
+ pattern: /新しい指示/,
311
+ description: 'New instructions (Japanese)',
312
+ language: 'ja',
313
+ severity: 'definite',
314
+ },
315
+ {
316
+ pattern: /システムプロンプト/,
317
+ description: 'System prompt (Japanese)',
318
+ language: 'ja',
319
+ severity: 'probable',
320
+ },
321
+ // Korean (한국어)
322
+ {
323
+ pattern: /이전.{0,5}(?:지시|규칙|명령).{0,5}(?:무시|잊어)/,
324
+ description: 'Ignore previous instructions (Korean)',
325
+ language: 'ko',
326
+ severity: 'definite',
327
+ },
328
+ {
329
+ pattern: /너는\s*이제/,
330
+ description: 'You are now (Korean identity override)',
331
+ language: 'ko',
332
+ severity: 'probable',
333
+ },
334
+ {
335
+ pattern: /새로운\s*지시/,
336
+ description: 'New instructions (Korean)',
337
+ language: 'ko',
338
+ severity: 'definite',
339
+ },
340
+ {
341
+ pattern: /시스템\s*프롬프트/,
342
+ description: 'System prompt (Korean)',
343
+ language: 'ko',
344
+ severity: 'probable',
345
+ },
346
+ // German (Deutsch)
347
+ {
348
+ pattern: /ignorier\w*\s+(?:alle\s+)?(?:vorherigen|früheren|obigen)\s+(?:Anweisungen|Regeln|Instruktionen)/i,
349
+ description: 'Ignore previous instructions (German)',
350
+ language: 'de',
351
+ severity: 'definite',
352
+ },
353
+ // French (Français)
354
+ {
355
+ pattern: /ignor\w*\s+(?:les?\s+)?(?:instructions|règles|directives)\s+(?:précédentes|antérieures)/i,
356
+ description: 'Ignore previous instructions (French)',
357
+ language: 'fr',
358
+ severity: 'definite',
359
+ },
360
+ // Portuguese (Português)
361
+ {
362
+ pattern: /ignor\w*\s+(?:as?\s+)?(?:instruções|regras|diretivas)\s+(?:anteriores|prévias)/i,
363
+ description: 'Ignore previous instructions (Portuguese)',
364
+ language: 'pt',
365
+ severity: 'definite',
366
+ },
367
+ ];
368
+ // ─── Detection Functions ─────────────────────────────────────────────
369
+ const SEVERITY_RANK = {
370
+ definite: 3,
371
+ probable: 2,
372
+ suspicious: 1,
373
+ };
374
+ function pickStronger(current, candidate) {
375
+ if (!current)
376
+ return candidate;
377
+ return SEVERITY_RANK[candidate.severity] > SEVERITY_RANK[current.severity] ? candidate : current;
378
+ }
379
+ /**
380
+ * Tier 1: Structural injection detection (language-independent, instant).
381
+ * Safe for .cjs hooks — no imports needed.
382
+ * Scans ALL patterns and returns the highest-severity match.
383
+ */
384
+ export function detectTier1(text, _depth = 0) {
385
+ let best = null;
386
+ for (const { pattern, description, severity } of ALL_TIER1_PATTERNS) {
387
+ if (pattern.test(text)) {
388
+ best = pickStronger(best, {
389
+ detected: true,
390
+ severity,
391
+ tier: 1,
392
+ pattern: pattern.source,
393
+ description,
394
+ });
395
+ if (best.severity === 'definite')
396
+ return best; // Can't get higher
397
+ }
398
+ }
399
+ // Check for high density of combining characters (homoglyph attack)
400
+ const combiningCount = (text.match(/[\u0300-\u036F\u0483-\u0489]/g) || []).length;
401
+ if (combiningCount > 5 && combiningCount / text.length > 0.15) {
402
+ best = pickStronger(best, {
403
+ detected: true,
404
+ severity: 'suspicious',
405
+ tier: 1,
406
+ pattern: 'combining_char_density',
407
+ description: `High combining character density (${combiningCount} in ${text.length} chars) — possible homoglyph obfuscation`,
408
+ });
409
+ }
410
+ // Check for base64-encoded injection (decode and re-scan, max 2 levels deep)
411
+ if (_depth < 2) {
412
+ const b64Regex = /[A-Za-z0-9+/]{40,}={0,2}/g;
413
+ for (const b64Match of text.matchAll(b64Regex)) {
414
+ try {
415
+ const decoded = Buffer.from(b64Match[0], 'base64').toString('utf8');
416
+ // Only recurse if decoded text looks like actual text (mostly printable).
417
+ // Allow non-ASCII printable chars (multilingual text) — reject only control chars.
418
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: Intentional — detecting binary content in decoded base64
419
+ // eslint-disable-next-line no-control-regex -- Intentional: detecting binary/control chars in decoded base64
420
+ const controlChars = (decoded.match(/[\x00-\x08\x0E-\x1F\x7F]/g) || []).length;
421
+ const controlRatio = decoded.length > 0 ? controlChars / decoded.length : 1;
422
+ if (controlRatio < 0.2) {
423
+ const innerResult = detectTier1(decoded, _depth + 1);
424
+ if (innerResult) {
425
+ best = pickStronger(best, {
426
+ ...innerResult,
427
+ description: `Base64-encoded: ${innerResult.description}`,
428
+ });
429
+ }
430
+ // Also run Tier 2 on decoded content (catches semantic injections in base64)
431
+ const semanticResult = detectTier2(decoded);
432
+ if (semanticResult) {
433
+ best = pickStronger(best, {
434
+ ...semanticResult,
435
+ description: `Base64-encoded: ${semanticResult.description}`,
436
+ });
437
+ }
438
+ }
439
+ }
440
+ catch {
441
+ // Not valid base64 — skip
442
+ }
443
+ // Short-circuit if we already have definite severity
444
+ if (best?.severity === 'definite')
445
+ break;
446
+ }
447
+ }
448
+ return best;
449
+ }
450
+ /**
451
+ * Tier 2: Multilingual semantic injection detection (regex).
452
+ * Runs in daemon context where more compute is acceptable.
453
+ * Scans ALL patterns and returns the highest-severity match.
454
+ */
455
+ export function detectTier2(text) {
456
+ let best = null;
457
+ for (const { pattern, description, language, severity } of SEMANTIC_PATTERNS) {
458
+ if (pattern.test(text)) {
459
+ best = pickStronger(best, {
460
+ detected: true,
461
+ severity,
462
+ tier: 2,
463
+ pattern: pattern.source,
464
+ description: `[${language}] ${description}`,
465
+ });
466
+ if (best.severity === 'definite')
467
+ return best; // Can't get higher
468
+ }
469
+ }
470
+ return best;
471
+ }
472
+ /**
473
+ * Run synchronous tiers of injection detection (Tier 1 + Tier 2 regex).
474
+ * Returns the highest-severity match across all tiers, or null if clean.
475
+ * Use detectInjectionAsync() for full detection including embedding-based semantic.
476
+ */
477
+ export function detectInjection(text, options = {}) {
478
+ const { tier1 = true, tier2 = true } = options;
479
+ let best = null;
480
+ // Tier 1 first (instant, structural)
481
+ if (tier1) {
482
+ const result = detectTier1(text);
483
+ if (result) {
484
+ if (result.severity === 'definite')
485
+ return result;
486
+ best = result;
487
+ }
488
+ }
489
+ // Tier 2 (multilingual regex) — may find higher severity than Tier 1
490
+ if (tier2) {
491
+ const result = detectTier2(text);
492
+ if (result) {
493
+ best = best ? pickStronger(best, result) : result;
494
+ }
495
+ }
496
+ return best;
497
+ }
498
+ /**
499
+ * Run all tiers including async embedding-based semantic detection.
500
+ * Tier 1 (structural) → Tier 2 regex → Tier 2.C semantic (embedding).
501
+ * Use in daemon context where async is acceptable.
502
+ * Fails open if embeddings are unavailable.
503
+ */
504
+ export async function detectInjectionAsync(text, options = {}) {
505
+ const { tier1 = true, tier2 = true, tier2Semantic = true } = options;
506
+ let best = null;
507
+ // Tier 1 (instant, structural)
508
+ if (tier1) {
509
+ const result = detectTier1(text);
510
+ if (result) {
511
+ if (result.severity === 'definite')
512
+ return result;
513
+ best = result;
514
+ }
515
+ }
516
+ // Tier 2 regex (multilingual) — may find higher severity than Tier 1
517
+ if (tier2) {
518
+ const result = detectTier2(text);
519
+ if (result) {
520
+ best = best ? pickStronger(best, result) : result;
521
+ if (best.severity === 'definite')
522
+ return best;
523
+ }
524
+ }
525
+ // Tier 2.C semantic (embedding-based, async) — fail-open on error
526
+ if (tier2Semantic) {
527
+ try {
528
+ // Lazy import to avoid pulling in embeddings.ts when not needed (.cjs path)
529
+ const { detectTier2Semantic } = await import('./injection-semantic.js');
530
+ const result = await detectTier2Semantic(text);
531
+ if (result) {
532
+ best = best ? pickStronger(best, result) : result;
533
+ }
534
+ }
535
+ catch (err) {
536
+ // Fail-open: embedding module unavailable or threw — continue with deterministic results
537
+ try {
538
+ const { logWarn } = await import('./fault-logger.js');
539
+ logWarn('injection', 'Tier 2.C semantic detection unavailable or failed', {
540
+ error: err instanceof Error ? err.message : String(err),
541
+ });
542
+ }
543
+ catch {
544
+ // logWarn import itself failed — no logging facility available, fail-open
545
+ console.error('[injection] Tier 2.C: both semantic detection and fault-logger unavailable');
546
+ }
547
+ }
548
+ }
549
+ return best;
550
+ }
551
+ /**
552
+ * Check if content is safe to store in memory (sync — Tier 1 + Tier 2 regex only).
553
+ * Rejects definite injections, warns on probable.
554
+ */
555
+ export function isMemorySafe(content) {
556
+ const result = detectInjection(content);
557
+ if (!result)
558
+ return { safe: true, result: null };
559
+ if (result.severity === 'definite')
560
+ return { safe: false, result };
561
+ // Probable and suspicious are warned but allowed
562
+ return { safe: true, result };
563
+ }
564
+ /**
565
+ * Check if content is safe to store in memory (async — includes Tier 2.C semantic).
566
+ * Use in daemon context for deeper scanning before persisting to memory.
567
+ */
568
+ export async function isMemorySafeAsync(content) {
569
+ const result = await detectInjectionAsync(content);
570
+ if (!result)
571
+ return { safe: true, result: null };
572
+ if (result.severity === 'definite')
573
+ return { safe: false, result };
574
+ return { safe: true, result };
575
+ }
576
+ // ─── Tier 1 patterns exported for .cjs inline use ───────────────────
577
+ /** Get Tier 1 patterns as plain objects for .cjs serialization */
578
+ export function getTier1PatternsForCJS() {
579
+ return ALL_TIER1_PATTERNS.map((p) => ({
580
+ source: p.pattern.source,
581
+ flags: p.pattern.flags,
582
+ description: p.description,
583
+ severity: p.severity,
584
+ }));
585
+ }
586
+ //# sourceMappingURL=injection-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injection-detector.js","sourceRoot":"","sources":["../../src/lib/injection-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Embedding-based Semantic Injection Detection (Tier 2.C)
3
+ *
4
+ * Uses cosine similarity between incoming text chunks and a bank of
5
+ * ~50 canonical injection phrases in 10+ languages.
6
+ *
7
+ * Multilingual embedding models (e.g., gte-small, bge-m3, multilingual-e5)
8
+ * map semantically similar phrases to nearby vectors regardless of language.
9
+ * "忽略之前的指令" and "ignore previous instructions" have high cosine similarity.
10
+ *
11
+ * Performance: ~5ms per embedding (local ONNX), ~50 prototypes embedded once at init.
12
+ * Total overhead per check: 10-30ms depending on text length.
13
+ */
14
+ import type { InjectionResult } from './injection-detector.js';
15
+ export declare const INJECTION_PROTOTYPES: readonly string[];
16
+ export declare const DEFINITE_THRESHOLD = 0.9;
17
+ export declare const PROBABLE_THRESHOLD = 0.82;
18
+ /**
19
+ * Tier 2.C: Embedding-based semantic injection detection.
20
+ *
21
+ * Compares sliding-window chunks of input text against a prototype bank
22
+ * of ~50 canonical injection phrases in 10+ languages using cosine similarity.
23
+ *
24
+ * Returns null if no injection detected or if embeddings are unavailable (fail-open).
25
+ */
26
+ export declare function detectTier2Semantic(text: string): Promise<InjectionResult | null>;
27
+ /** Reset cached state (for testing only) */
28
+ export declare function resetSemanticDetection(): void;
29
+ /** Check if prototypes are initialized */
30
+ export declare function isInitialized(): boolean;
31
+ //# sourceMappingURL=injection-semantic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injection-semantic.d.ts","sourceRoot":"","sources":["../../src/lib/injection-semantic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM/D,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EA+EhD,CAAC;AAIH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AA4EvC;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAqEvF;AAID,4CAA4C;AAC5C,wBAAgB,sBAAsB,IAAI,IAAI,CAI7C;AAED,0CAA0C;AAC1C,wBAAgB,aAAa,IAAI,OAAO,CAEvC"}