@vinaes/succ 1.3.19

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 (781) hide show
  1. package/LICENSE +87 -0
  2. package/README.md +588 -0
  3. package/agents/succ-checkpoint-manager.md +51 -0
  4. package/agents/succ-code-reviewer.md +181 -0
  5. package/agents/succ-context-optimizer.md +83 -0
  6. package/agents/succ-debug.md +224 -0
  7. package/agents/succ-decision-auditor.md +74 -0
  8. package/agents/succ-deep-search.md +41 -0
  9. package/agents/succ-diff-reviewer.md +123 -0
  10. package/agents/succ-explore.md +83 -0
  11. package/agents/succ-general.md +109 -0
  12. package/agents/succ-knowledge-indexer.md +45 -0
  13. package/agents/succ-knowledge-mapper.md +61 -0
  14. package/agents/succ-memory-curator.md +43 -0
  15. package/agents/succ-memory-health-monitor.md +55 -0
  16. package/agents/succ-pattern-detective.md +62 -0
  17. package/agents/succ-plan.md +172 -0
  18. package/agents/succ-quality-improvement-coach.md +63 -0
  19. package/agents/succ-readiness-improver.md +62 -0
  20. package/agents/succ-session-handoff-orchestrator.md +54 -0
  21. package/agents/succ-session-reviewer.md +46 -0
  22. package/agents/succ-style-tracker.md +73 -0
  23. package/dist/cli.d.ts +3 -0
  24. package/dist/cli.d.ts.map +1 -0
  25. package/dist/cli.js +749 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/commands/agents-md.d.ts +16 -0
  28. package/dist/commands/agents-md.d.ts.map +1 -0
  29. package/dist/commands/agents-md.js +33 -0
  30. package/dist/commands/agents-md.js.map +1 -0
  31. package/dist/commands/analyze-agents.d.ts +20 -0
  32. package/dist/commands/analyze-agents.d.ts.map +1 -0
  33. package/dist/commands/analyze-agents.js +305 -0
  34. package/dist/commands/analyze-agents.js.map +1 -0
  35. package/dist/commands/analyze-helpers.d.ts +22 -0
  36. package/dist/commands/analyze-helpers.d.ts.map +1 -0
  37. package/dist/commands/analyze-helpers.js +38 -0
  38. package/dist/commands/analyze-helpers.js.map +1 -0
  39. package/dist/commands/analyze-profile.d.ts +53 -0
  40. package/dist/commands/analyze-profile.d.ts.map +1 -0
  41. package/dist/commands/analyze-profile.js +638 -0
  42. package/dist/commands/analyze-profile.js.map +1 -0
  43. package/dist/commands/analyze-recursive.d.ts +20 -0
  44. package/dist/commands/analyze-recursive.d.ts.map +1 -0
  45. package/dist/commands/analyze-recursive.js +326 -0
  46. package/dist/commands/analyze-recursive.js.map +1 -0
  47. package/dist/commands/analyze-utils.d.ts +83 -0
  48. package/dist/commands/analyze-utils.d.ts.map +1 -0
  49. package/dist/commands/analyze-utils.js +541 -0
  50. package/dist/commands/analyze-utils.js.map +1 -0
  51. package/dist/commands/analyze.d.ts +15 -0
  52. package/dist/commands/analyze.d.ts.map +1 -0
  53. package/dist/commands/analyze.js +265 -0
  54. package/dist/commands/analyze.js.map +1 -0
  55. package/dist/commands/backfill.d.ts +22 -0
  56. package/dist/commands/backfill.d.ts.map +1 -0
  57. package/dist/commands/backfill.js +62 -0
  58. package/dist/commands/backfill.js.map +1 -0
  59. package/dist/commands/benchmark-quality.d.ts +18 -0
  60. package/dist/commands/benchmark-quality.d.ts.map +1 -0
  61. package/dist/commands/benchmark-quality.js +316 -0
  62. package/dist/commands/benchmark-quality.js.map +1 -0
  63. package/dist/commands/benchmark-sqlite-vec.d.ts +12 -0
  64. package/dist/commands/benchmark-sqlite-vec.d.ts.map +1 -0
  65. package/dist/commands/benchmark-sqlite-vec.js +281 -0
  66. package/dist/commands/benchmark-sqlite-vec.js.map +1 -0
  67. package/dist/commands/benchmark.d.ts +57 -0
  68. package/dist/commands/benchmark.d.ts.map +1 -0
  69. package/dist/commands/benchmark.js +682 -0
  70. package/dist/commands/benchmark.js.map +1 -0
  71. package/dist/commands/chat.d.ts +14 -0
  72. package/dist/commands/chat.d.ts.map +1 -0
  73. package/dist/commands/chat.js +84 -0
  74. package/dist/commands/chat.js.map +1 -0
  75. package/dist/commands/checkpoint.d.ts +27 -0
  76. package/dist/commands/checkpoint.d.ts.map +1 -0
  77. package/dist/commands/checkpoint.js +181 -0
  78. package/dist/commands/checkpoint.js.map +1 -0
  79. package/dist/commands/clear.d.ts +9 -0
  80. package/dist/commands/clear.d.ts.map +1 -0
  81. package/dist/commands/clear.js +31 -0
  82. package/dist/commands/clear.js.map +1 -0
  83. package/dist/commands/config.d.ts +26 -0
  84. package/dist/commands/config.d.ts.map +1 -0
  85. package/dist/commands/config.js +247 -0
  86. package/dist/commands/config.js.map +1 -0
  87. package/dist/commands/consolidate.d.ts +21 -0
  88. package/dist/commands/consolidate.d.ts.map +1 -0
  89. package/dist/commands/consolidate.js +117 -0
  90. package/dist/commands/consolidate.js.map +1 -0
  91. package/dist/commands/daemon.d.ts +48 -0
  92. package/dist/commands/daemon.d.ts.map +1 -0
  93. package/dist/commands/daemon.js +218 -0
  94. package/dist/commands/daemon.js.map +1 -0
  95. package/dist/commands/embedding.d.ts +26 -0
  96. package/dist/commands/embedding.d.ts.map +1 -0
  97. package/dist/commands/embedding.js +168 -0
  98. package/dist/commands/embedding.js.map +1 -0
  99. package/dist/commands/graph.d.ts +20 -0
  100. package/dist/commands/graph.d.ts.map +1 -0
  101. package/dist/commands/graph.js +128 -0
  102. package/dist/commands/graph.js.map +1 -0
  103. package/dist/commands/index-code.d.ts +23 -0
  104. package/dist/commands/index-code.d.ts.map +1 -0
  105. package/dist/commands/index-code.js +218 -0
  106. package/dist/commands/index-code.js.map +1 -0
  107. package/dist/commands/index.d.ts +23 -0
  108. package/dist/commands/index.d.ts.map +1 -0
  109. package/dist/commands/index.js +217 -0
  110. package/dist/commands/index.js.map +1 -0
  111. package/dist/commands/init-templates.d.ts +21 -0
  112. package/dist/commands/init-templates.d.ts.map +1 -0
  113. package/dist/commands/init-templates.js +487 -0
  114. package/dist/commands/init-templates.js.map +1 -0
  115. package/dist/commands/init.d.ts +10 -0
  116. package/dist/commands/init.d.ts.map +1 -0
  117. package/dist/commands/init.js +865 -0
  118. package/dist/commands/init.js.map +1 -0
  119. package/dist/commands/memories.d.ts +47 -0
  120. package/dist/commands/memories.d.ts.map +1 -0
  121. package/dist/commands/memories.js +597 -0
  122. package/dist/commands/memories.js.map +1 -0
  123. package/dist/commands/migrate.d.ts +19 -0
  124. package/dist/commands/migrate.d.ts.map +1 -0
  125. package/dist/commands/migrate.js +154 -0
  126. package/dist/commands/migrate.js.map +1 -0
  127. package/dist/commands/prd.d.ts +46 -0
  128. package/dist/commands/prd.d.ts.map +1 -0
  129. package/dist/commands/prd.js +378 -0
  130. package/dist/commands/prd.js.map +1 -0
  131. package/dist/commands/precompute-context.d.ts +11 -0
  132. package/dist/commands/precompute-context.d.ts.map +1 -0
  133. package/dist/commands/precompute-context.js +12 -0
  134. package/dist/commands/precompute-context.js.map +1 -0
  135. package/dist/commands/progress.d.ts +16 -0
  136. package/dist/commands/progress.d.ts.map +1 -0
  137. package/dist/commands/progress.js +38 -0
  138. package/dist/commands/progress.js.map +1 -0
  139. package/dist/commands/reindex.d.ts +17 -0
  140. package/dist/commands/reindex.d.ts.map +1 -0
  141. package/dist/commands/reindex.js +83 -0
  142. package/dist/commands/reindex.js.map +1 -0
  143. package/dist/commands/retention.d.ts +19 -0
  144. package/dist/commands/retention.d.ts.map +1 -0
  145. package/dist/commands/retention.js +162 -0
  146. package/dist/commands/retention.js.map +1 -0
  147. package/dist/commands/score.d.ts +10 -0
  148. package/dist/commands/score.d.ts.map +1 -0
  149. package/dist/commands/score.js +28 -0
  150. package/dist/commands/score.js.map +1 -0
  151. package/dist/commands/search.d.ts +7 -0
  152. package/dist/commands/search.d.ts.map +1 -0
  153. package/dist/commands/search.js +89 -0
  154. package/dist/commands/search.js.map +1 -0
  155. package/dist/commands/session-summary.d.ts +15 -0
  156. package/dist/commands/session-summary.d.ts.map +1 -0
  157. package/dist/commands/session-summary.js +16 -0
  158. package/dist/commands/session-summary.js.map +1 -0
  159. package/dist/commands/setup.d.ts +6 -0
  160. package/dist/commands/setup.d.ts.map +1 -0
  161. package/dist/commands/setup.js +222 -0
  162. package/dist/commands/setup.js.map +1 -0
  163. package/dist/commands/soul.d.ts +9 -0
  164. package/dist/commands/soul.d.ts.map +1 -0
  165. package/dist/commands/soul.js +256 -0
  166. package/dist/commands/soul.js.map +1 -0
  167. package/dist/commands/stats.d.ts +18 -0
  168. package/dist/commands/stats.d.ts.map +1 -0
  169. package/dist/commands/stats.js +138 -0
  170. package/dist/commands/stats.js.map +1 -0
  171. package/dist/commands/status.d.ts +2 -0
  172. package/dist/commands/status.d.ts.map +1 -0
  173. package/dist/commands/status.js +145 -0
  174. package/dist/commands/status.js.map +1 -0
  175. package/dist/commands/train-bpe.d.ts +8 -0
  176. package/dist/commands/train-bpe.d.ts.map +1 -0
  177. package/dist/commands/train-bpe.js +35 -0
  178. package/dist/commands/train-bpe.js.map +1 -0
  179. package/dist/commands/watch.d.ts +22 -0
  180. package/dist/commands/watch.d.ts.map +1 -0
  181. package/dist/commands/watch.js +171 -0
  182. package/dist/commands/watch.js.map +1 -0
  183. package/dist/daemon/analyzer.d.ts +54 -0
  184. package/dist/daemon/analyzer.d.ts.map +1 -0
  185. package/dist/daemon/analyzer.js +362 -0
  186. package/dist/daemon/analyzer.js.map +1 -0
  187. package/dist/daemon/client.d.ts +87 -0
  188. package/dist/daemon/client.d.ts.map +1 -0
  189. package/dist/daemon/client.js +356 -0
  190. package/dist/daemon/client.js.map +1 -0
  191. package/dist/daemon/index.d.ts +12 -0
  192. package/dist/daemon/index.d.ts.map +1 -0
  193. package/dist/daemon/index.js +12 -0
  194. package/dist/daemon/index.js.map +1 -0
  195. package/dist/daemon/service.d.ts +51 -0
  196. package/dist/daemon/service.d.ts.map +1 -0
  197. package/dist/daemon/service.js +1203 -0
  198. package/dist/daemon/service.js.map +1 -0
  199. package/dist/daemon/session-processor.d.ts +85 -0
  200. package/dist/daemon/session-processor.d.ts.map +1 -0
  201. package/dist/daemon/session-processor.js +571 -0
  202. package/dist/daemon/session-processor.js.map +1 -0
  203. package/dist/daemon/sessions.d.ts +62 -0
  204. package/dist/daemon/sessions.d.ts.map +1 -0
  205. package/dist/daemon/sessions.js +192 -0
  206. package/dist/daemon/sessions.js.map +1 -0
  207. package/dist/daemon/watcher.d.ts +52 -0
  208. package/dist/daemon/watcher.d.ts.map +1 -0
  209. package/dist/daemon/watcher.js +363 -0
  210. package/dist/daemon/watcher.js.map +1 -0
  211. package/dist/lib/agents-md-generator.d.ts +33 -0
  212. package/dist/lib/agents-md-generator.d.ts.map +1 -0
  213. package/dist/lib/agents-md-generator.js +156 -0
  214. package/dist/lib/agents-md-generator.js.map +1 -0
  215. package/dist/lib/ai-readiness.d.ts +132 -0
  216. package/dist/lib/ai-readiness.d.ts.map +1 -0
  217. package/dist/lib/ai-readiness.js +702 -0
  218. package/dist/lib/ai-readiness.js.map +1 -0
  219. package/dist/lib/analyze-state.d.ts +34 -0
  220. package/dist/lib/analyze-state.d.ts.map +1 -0
  221. package/dist/lib/analyze-state.js +106 -0
  222. package/dist/lib/analyze-state.js.map +1 -0
  223. package/dist/lib/benchmark.d.ts +250 -0
  224. package/dist/lib/benchmark.d.ts.map +1 -0
  225. package/dist/lib/benchmark.js +778 -0
  226. package/dist/lib/benchmark.js.map +1 -0
  227. package/dist/lib/bm25.d.ts +114 -0
  228. package/dist/lib/bm25.d.ts.map +1 -0
  229. package/dist/lib/bm25.js +727 -0
  230. package/dist/lib/bm25.js.map +1 -0
  231. package/dist/lib/bpe.d.ts +70 -0
  232. package/dist/lib/bpe.d.ts.map +1 -0
  233. package/dist/lib/bpe.js +270 -0
  234. package/dist/lib/bpe.js.map +1 -0
  235. package/dist/lib/checkpoint.d.ts +124 -0
  236. package/dist/lib/checkpoint.d.ts.map +1 -0
  237. package/dist/lib/checkpoint.js +321 -0
  238. package/dist/lib/checkpoint.js.map +1 -0
  239. package/dist/lib/chunker.d.ts +47 -0
  240. package/dist/lib/chunker.d.ts.map +1 -0
  241. package/dist/lib/chunker.js +358 -0
  242. package/dist/lib/chunker.js.map +1 -0
  243. package/dist/lib/claude-ws-transport.d.ts +76 -0
  244. package/dist/lib/claude-ws-transport.d.ts.map +1 -0
  245. package/dist/lib/claude-ws-transport.js +487 -0
  246. package/dist/lib/claude-ws-transport.js.map +1 -0
  247. package/dist/lib/compact-briefing.d.ts +22 -0
  248. package/dist/lib/compact-briefing.d.ts.map +1 -0
  249. package/dist/lib/compact-briefing.js +180 -0
  250. package/dist/lib/compact-briefing.js.map +1 -0
  251. package/dist/lib/config-defaults.d.ts +41 -0
  252. package/dist/lib/config-defaults.d.ts.map +1 -0
  253. package/dist/lib/config-defaults.js +99 -0
  254. package/dist/lib/config-defaults.js.map +1 -0
  255. package/dist/lib/config-display.d.ts +16 -0
  256. package/dist/lib/config-display.d.ts.map +1 -0
  257. package/dist/lib/config-display.js +408 -0
  258. package/dist/lib/config-display.js.map +1 -0
  259. package/dist/lib/config-types.d.ts +601 -0
  260. package/dist/lib/config-types.d.ts.map +1 -0
  261. package/dist/lib/config-types.js +7 -0
  262. package/dist/lib/config-types.js.map +1 -0
  263. package/dist/lib/config-validation.d.ts +19 -0
  264. package/dist/lib/config-validation.d.ts.map +1 -0
  265. package/dist/lib/config-validation.js +136 -0
  266. package/dist/lib/config-validation.js.map +1 -0
  267. package/dist/lib/config.d.ts +143 -0
  268. package/dist/lib/config.d.ts.map +1 -0
  269. package/dist/lib/config.js +689 -0
  270. package/dist/lib/config.js.map +1 -0
  271. package/dist/lib/consolidate.d.ts +115 -0
  272. package/dist/lib/consolidate.d.ts.map +1 -0
  273. package/dist/lib/consolidate.js +600 -0
  274. package/dist/lib/consolidate.js.map +1 -0
  275. package/dist/lib/db/bm25-indexes.d.ts +58 -0
  276. package/dist/lib/db/bm25-indexes.d.ts.map +1 -0
  277. package/dist/lib/db/bm25-indexes.js +333 -0
  278. package/dist/lib/db/bm25-indexes.js.map +1 -0
  279. package/dist/lib/db/bpe.d.ts +18 -0
  280. package/dist/lib/db/bpe.d.ts.map +1 -0
  281. package/dist/lib/db/bpe.js +44 -0
  282. package/dist/lib/db/bpe.js.map +1 -0
  283. package/dist/lib/db/connection.d.ts +47 -0
  284. package/dist/lib/db/connection.d.ts.map +1 -0
  285. package/dist/lib/db/connection.js +114 -0
  286. package/dist/lib/db/connection.js.map +1 -0
  287. package/dist/lib/db/documents.d.ts +58 -0
  288. package/dist/lib/db/documents.d.ts.map +1 -0
  289. package/dist/lib/db/documents.js +374 -0
  290. package/dist/lib/db/documents.js.map +1 -0
  291. package/dist/lib/db/file-hash.d.ts +26 -0
  292. package/dist/lib/db/file-hash.d.ts.map +1 -0
  293. package/dist/lib/db/file-hash.js +56 -0
  294. package/dist/lib/db/file-hash.js.map +1 -0
  295. package/dist/lib/db/global-memories.d.ts +62 -0
  296. package/dist/lib/db/global-memories.d.ts.map +1 -0
  297. package/dist/lib/db/global-memories.js +173 -0
  298. package/dist/lib/db/global-memories.js.map +1 -0
  299. package/dist/lib/db/graph.d.ts +163 -0
  300. package/dist/lib/db/graph.d.ts.map +1 -0
  301. package/dist/lib/db/graph.js +488 -0
  302. package/dist/lib/db/graph.js.map +1 -0
  303. package/dist/lib/db/helpers.d.ts +13 -0
  304. package/dist/lib/db/helpers.d.ts.map +1 -0
  305. package/dist/lib/db/helpers.js +21 -0
  306. package/dist/lib/db/helpers.js.map +1 -0
  307. package/dist/lib/db/hybrid-search.d.ts +64 -0
  308. package/dist/lib/db/hybrid-search.d.ts.map +1 -0
  309. package/dist/lib/db/hybrid-search.js +549 -0
  310. package/dist/lib/db/hybrid-search.js.map +1 -0
  311. package/dist/lib/db/index.d.ts +23 -0
  312. package/dist/lib/db/index.d.ts.map +1 -0
  313. package/dist/lib/db/index.js +23 -0
  314. package/dist/lib/db/index.js.map +1 -0
  315. package/dist/lib/db/memories.d.ts +174 -0
  316. package/dist/lib/db/memories.d.ts.map +1 -0
  317. package/dist/lib/db/memories.js +866 -0
  318. package/dist/lib/db/memories.js.map +1 -0
  319. package/dist/lib/db/retention.d.ts +64 -0
  320. package/dist/lib/db/retention.d.ts.map +1 -0
  321. package/dist/lib/db/retention.js +115 -0
  322. package/dist/lib/db/retention.js.map +1 -0
  323. package/dist/lib/db/schema.d.ts +29 -0
  324. package/dist/lib/db/schema.d.ts.map +1 -0
  325. package/dist/lib/db/schema.js +832 -0
  326. package/dist/lib/db/schema.js.map +1 -0
  327. package/dist/lib/db/skills.d.ts +65 -0
  328. package/dist/lib/db/skills.d.ts.map +1 -0
  329. package/dist/lib/db/skills.js +119 -0
  330. package/dist/lib/db/skills.js.map +1 -0
  331. package/dist/lib/db/token-frequency.d.ts +34 -0
  332. package/dist/lib/db/token-frequency.d.ts.map +1 -0
  333. package/dist/lib/db/token-frequency.js +92 -0
  334. package/dist/lib/db/token-frequency.js.map +1 -0
  335. package/dist/lib/db/token-stats.d.ts +43 -0
  336. package/dist/lib/db/token-stats.d.ts.map +1 -0
  337. package/dist/lib/db/token-stats.js +59 -0
  338. package/dist/lib/db/token-stats.js.map +1 -0
  339. package/dist/lib/db/types.d.ts +57 -0
  340. package/dist/lib/db/types.d.ts.map +1 -0
  341. package/dist/lib/db/types.js +5 -0
  342. package/dist/lib/db/types.js.map +1 -0
  343. package/dist/lib/db/web-search-history.d.ts +22 -0
  344. package/dist/lib/db/web-search-history.d.ts.map +1 -0
  345. package/dist/lib/db/web-search-history.js +107 -0
  346. package/dist/lib/db/web-search-history.js.map +1 -0
  347. package/dist/lib/debug/state.d.ts +17 -0
  348. package/dist/lib/debug/state.d.ts.map +1 -0
  349. package/dist/lib/debug/state.js +131 -0
  350. package/dist/lib/debug/state.js.map +1 -0
  351. package/dist/lib/debug/types.d.ts +74 -0
  352. package/dist/lib/debug/types.d.ts.map +1 -0
  353. package/dist/lib/debug/types.js +85 -0
  354. package/dist/lib/debug/types.js.map +1 -0
  355. package/dist/lib/embedding-pool.d.ts +37 -0
  356. package/dist/lib/embedding-pool.d.ts.map +1 -0
  357. package/dist/lib/embedding-pool.js +159 -0
  358. package/dist/lib/embedding-pool.js.map +1 -0
  359. package/dist/lib/embedding-worker.d.ts +7 -0
  360. package/dist/lib/embedding-worker.d.ts.map +1 -0
  361. package/dist/lib/embedding-worker.js +49 -0
  362. package/dist/lib/embedding-worker.js.map +1 -0
  363. package/dist/lib/embeddings.d.ts +54 -0
  364. package/dist/lib/embeddings.d.ts.map +1 -0
  365. package/dist/lib/embeddings.js +437 -0
  366. package/dist/lib/embeddings.js.map +1 -0
  367. package/dist/lib/errors.d.ts +40 -0
  368. package/dist/lib/errors.d.ts.map +1 -0
  369. package/dist/lib/errors.js +66 -0
  370. package/dist/lib/errors.js.map +1 -0
  371. package/dist/lib/fault-logger.d.ts +35 -0
  372. package/dist/lib/fault-logger.d.ts.map +1 -0
  373. package/dist/lib/fault-logger.js +182 -0
  374. package/dist/lib/fault-logger.js.map +1 -0
  375. package/dist/lib/graph/centrality.d.ts +34 -0
  376. package/dist/lib/graph/centrality.d.ts.map +1 -0
  377. package/dist/lib/graph/centrality.js +76 -0
  378. package/dist/lib/graph/centrality.js.map +1 -0
  379. package/dist/lib/graph/cleanup.d.ts +36 -0
  380. package/dist/lib/graph/cleanup.d.ts.map +1 -0
  381. package/dist/lib/graph/cleanup.js +96 -0
  382. package/dist/lib/graph/cleanup.js.map +1 -0
  383. package/dist/lib/graph/community-detection.d.ts +61 -0
  384. package/dist/lib/graph/community-detection.d.ts.map +1 -0
  385. package/dist/lib/graph/community-detection.js +218 -0
  386. package/dist/lib/graph/community-detection.js.map +1 -0
  387. package/dist/lib/graph/contextual-proximity.d.ts +41 -0
  388. package/dist/lib/graph/contextual-proximity.d.ts.map +1 -0
  389. package/dist/lib/graph/contextual-proximity.js +125 -0
  390. package/dist/lib/graph/contextual-proximity.js.map +1 -0
  391. package/dist/lib/graph/llm-relations.d.ts +54 -0
  392. package/dist/lib/graph/llm-relations.d.ts.map +1 -0
  393. package/dist/lib/graph/llm-relations.js +265 -0
  394. package/dist/lib/graph/llm-relations.js.map +1 -0
  395. package/dist/lib/graph-export.d.ts +13 -0
  396. package/dist/lib/graph-export.d.ts.map +1 -0
  397. package/dist/lib/graph-export.js +637 -0
  398. package/dist/lib/graph-export.js.map +1 -0
  399. package/dist/lib/graph-scheduler.d.ts +7 -0
  400. package/dist/lib/graph-scheduler.d.ts.map +1 -0
  401. package/dist/lib/graph-scheduler.js +21 -0
  402. package/dist/lib/graph-scheduler.js.map +1 -0
  403. package/dist/lib/indexer.d.ts +36 -0
  404. package/dist/lib/indexer.d.ts.map +1 -0
  405. package/dist/lib/indexer.js +226 -0
  406. package/dist/lib/indexer.js.map +1 -0
  407. package/dist/lib/learning-delta.d.ts +35 -0
  408. package/dist/lib/learning-delta.d.ts.map +1 -0
  409. package/dist/lib/learning-delta.js +53 -0
  410. package/dist/lib/learning-delta.js.map +1 -0
  411. package/dist/lib/llm.d.ts +118 -0
  412. package/dist/lib/llm.d.ts.map +1 -0
  413. package/dist/lib/llm.js +439 -0
  414. package/dist/lib/llm.js.map +1 -0
  415. package/dist/lib/lock.d.ts +27 -0
  416. package/dist/lib/lock.d.ts.map +1 -0
  417. package/dist/lib/lock.js +143 -0
  418. package/dist/lib/lock.js.map +1 -0
  419. package/dist/lib/md-fetch.d.ts +61 -0
  420. package/dist/lib/md-fetch.d.ts.map +1 -0
  421. package/dist/lib/md-fetch.js +141 -0
  422. package/dist/lib/md-fetch.js.map +1 -0
  423. package/dist/lib/mmr.d.ts +29 -0
  424. package/dist/lib/mmr.d.ts.map +1 -0
  425. package/dist/lib/mmr.js +89 -0
  426. package/dist/lib/mmr.js.map +1 -0
  427. package/dist/lib/onboarding/ai-chat.d.ts +11 -0
  428. package/dist/lib/onboarding/ai-chat.d.ts.map +1 -0
  429. package/dist/lib/onboarding/ai-chat.js +85 -0
  430. package/dist/lib/onboarding/ai-chat.js.map +1 -0
  431. package/dist/lib/onboarding/index.d.ts +7 -0
  432. package/dist/lib/onboarding/index.d.ts.map +1 -0
  433. package/dist/lib/onboarding/index.js +7 -0
  434. package/dist/lib/onboarding/index.js.map +1 -0
  435. package/dist/lib/onboarding/wizard.d.ts +11 -0
  436. package/dist/lib/onboarding/wizard.d.ts.map +1 -0
  437. package/dist/lib/onboarding/wizard.js +104 -0
  438. package/dist/lib/onboarding/wizard.js.map +1 -0
  439. package/dist/lib/ort-provider.d.ts +27 -0
  440. package/dist/lib/ort-provider.d.ts.map +1 -0
  441. package/dist/lib/ort-provider.js +83 -0
  442. package/dist/lib/ort-provider.js.map +1 -0
  443. package/dist/lib/ort-session.d.ts +32 -0
  444. package/dist/lib/ort-session.d.ts.map +1 -0
  445. package/dist/lib/ort-session.js +227 -0
  446. package/dist/lib/ort-session.js.map +1 -0
  447. package/dist/lib/patterns.d.ts +43 -0
  448. package/dist/lib/patterns.d.ts.map +1 -0
  449. package/dist/lib/patterns.js +395 -0
  450. package/dist/lib/patterns.js.map +1 -0
  451. package/dist/lib/prd/codebase-context.d.ts +27 -0
  452. package/dist/lib/prd/codebase-context.d.ts.map +1 -0
  453. package/dist/lib/prd/codebase-context.js +420 -0
  454. package/dist/lib/prd/codebase-context.js.map +1 -0
  455. package/dist/lib/prd/context.d.ts +24 -0
  456. package/dist/lib/prd/context.d.ts.map +1 -0
  457. package/dist/lib/prd/context.js +68 -0
  458. package/dist/lib/prd/context.js.map +1 -0
  459. package/dist/lib/prd/executor.d.ts +52 -0
  460. package/dist/lib/prd/executor.d.ts.map +1 -0
  461. package/dist/lib/prd/executor.js +154 -0
  462. package/dist/lib/prd/executor.js.map +1 -0
  463. package/dist/lib/prd/export.d.ts +40 -0
  464. package/dist/lib/prd/export.d.ts.map +1 -0
  465. package/dist/lib/prd/export.js +511 -0
  466. package/dist/lib/prd/export.js.map +1 -0
  467. package/dist/lib/prd/gates.d.ts +30 -0
  468. package/dist/lib/prd/gates.d.ts.map +1 -0
  469. package/dist/lib/prd/gates.js +100 -0
  470. package/dist/lib/prd/gates.js.map +1 -0
  471. package/dist/lib/prd/generate.d.ts +56 -0
  472. package/dist/lib/prd/generate.d.ts.map +1 -0
  473. package/dist/lib/prd/generate.js +357 -0
  474. package/dist/lib/prd/generate.js.map +1 -0
  475. package/dist/lib/prd/parse.d.ts +21 -0
  476. package/dist/lib/prd/parse.d.ts.map +1 -0
  477. package/dist/lib/prd/parse.js +270 -0
  478. package/dist/lib/prd/parse.js.map +1 -0
  479. package/dist/lib/prd/prompt-builder.d.ts +18 -0
  480. package/dist/lib/prd/prompt-builder.d.ts.map +1 -0
  481. package/dist/lib/prd/prompt-builder.js +61 -0
  482. package/dist/lib/prd/prompt-builder.js.map +1 -0
  483. package/dist/lib/prd/runner.d.ts +54 -0
  484. package/dist/lib/prd/runner.d.ts.map +1 -0
  485. package/dist/lib/prd/runner.js +563 -0
  486. package/dist/lib/prd/runner.js.map +1 -0
  487. package/dist/lib/prd/scheduler.d.ts +27 -0
  488. package/dist/lib/prd/scheduler.d.ts.map +1 -0
  489. package/dist/lib/prd/scheduler.js +113 -0
  490. package/dist/lib/prd/scheduler.js.map +1 -0
  491. package/dist/lib/prd/state.d.ts +77 -0
  492. package/dist/lib/prd/state.d.ts.map +1 -0
  493. package/dist/lib/prd/state.js +253 -0
  494. package/dist/lib/prd/state.js.map +1 -0
  495. package/dist/lib/prd/team-runner.d.ts +48 -0
  496. package/dist/lib/prd/team-runner.d.ts.map +1 -0
  497. package/dist/lib/prd/team-runner.js +261 -0
  498. package/dist/lib/prd/team-runner.js.map +1 -0
  499. package/dist/lib/prd/types.d.ts +169 -0
  500. package/dist/lib/prd/types.d.ts.map +1 -0
  501. package/dist/lib/prd/types.js +143 -0
  502. package/dist/lib/prd/types.js.map +1 -0
  503. package/dist/lib/prd/worktree.d.ts +54 -0
  504. package/dist/lib/prd/worktree.d.ts.map +1 -0
  505. package/dist/lib/prd/worktree.js +255 -0
  506. package/dist/lib/prd/worktree.js.map +1 -0
  507. package/dist/lib/precompute-context.d.ts +48 -0
  508. package/dist/lib/precompute-context.d.ts.map +1 -0
  509. package/dist/lib/precompute-context.js +265 -0
  510. package/dist/lib/precompute-context.js.map +1 -0
  511. package/dist/lib/pricing.d.ts +60 -0
  512. package/dist/lib/pricing.d.ts.map +1 -0
  513. package/dist/lib/pricing.js +258 -0
  514. package/dist/lib/pricing.js.map +1 -0
  515. package/dist/lib/process-registry.d.ts +30 -0
  516. package/dist/lib/process-registry.d.ts.map +1 -0
  517. package/dist/lib/process-registry.js +92 -0
  518. package/dist/lib/process-registry.js.map +1 -0
  519. package/dist/lib/progress-log.d.ts +44 -0
  520. package/dist/lib/progress-log.d.ts.map +1 -0
  521. package/dist/lib/progress-log.js +58 -0
  522. package/dist/lib/progress-log.js.map +1 -0
  523. package/dist/lib/public-api.d.ts +56 -0
  524. package/dist/lib/public-api.d.ts.map +1 -0
  525. package/dist/lib/public-api.js +63 -0
  526. package/dist/lib/public-api.js.map +1 -0
  527. package/dist/lib/quality.d.ts +66 -0
  528. package/dist/lib/quality.d.ts.map +1 -0
  529. package/dist/lib/quality.js +486 -0
  530. package/dist/lib/quality.js.map +1 -0
  531. package/dist/lib/query-expansion.d.ts +16 -0
  532. package/dist/lib/query-expansion.d.ts.map +1 -0
  533. package/dist/lib/query-expansion.js +53 -0
  534. package/dist/lib/query-expansion.js.map +1 -0
  535. package/dist/lib/readiness.d.ts +35 -0
  536. package/dist/lib/readiness.d.ts.map +1 -0
  537. package/dist/lib/readiness.js +142 -0
  538. package/dist/lib/readiness.js.map +1 -0
  539. package/dist/lib/reference-embeddings.d.ts +39 -0
  540. package/dist/lib/reference-embeddings.d.ts.map +1 -0
  541. package/dist/lib/reference-embeddings.js +95 -0
  542. package/dist/lib/reference-embeddings.js.map +1 -0
  543. package/dist/lib/reflection-synthesizer.d.ts +27 -0
  544. package/dist/lib/reflection-synthesizer.d.ts.map +1 -0
  545. package/dist/lib/reflection-synthesizer.js +149 -0
  546. package/dist/lib/reflection-synthesizer.js.map +1 -0
  547. package/dist/lib/retention.d.ts +105 -0
  548. package/dist/lib/retention.d.ts.map +1 -0
  549. package/dist/lib/retention.js +246 -0
  550. package/dist/lib/retention.js.map +1 -0
  551. package/dist/lib/sensitive-filter.d.ts +34 -0
  552. package/dist/lib/sensitive-filter.d.ts.map +1 -0
  553. package/dist/lib/sensitive-filter.js +344 -0
  554. package/dist/lib/sensitive-filter.js.map +1 -0
  555. package/dist/lib/session-observations.d.ts +59 -0
  556. package/dist/lib/session-observations.d.ts.map +1 -0
  557. package/dist/lib/session-observations.js +128 -0
  558. package/dist/lib/session-observations.js.map +1 -0
  559. package/dist/lib/session-summary.d.ts +65 -0
  560. package/dist/lib/session-summary.d.ts.map +1 -0
  561. package/dist/lib/session-summary.js +344 -0
  562. package/dist/lib/session-summary.js.map +1 -0
  563. package/dist/lib/similarity-worker.d.ts +7 -0
  564. package/dist/lib/similarity-worker.d.ts.map +1 -0
  565. package/dist/lib/similarity-worker.js +36 -0
  566. package/dist/lib/similarity-worker.js.map +1 -0
  567. package/dist/lib/skills.d.ts +78 -0
  568. package/dist/lib/skills.d.ts.map +1 -0
  569. package/dist/lib/skills.js +439 -0
  570. package/dist/lib/skills.js.map +1 -0
  571. package/dist/lib/skyll-client.d.ts +59 -0
  572. package/dist/lib/skyll-client.d.ts.map +1 -0
  573. package/dist/lib/skyll-client.js +257 -0
  574. package/dist/lib/skyll-client.js.map +1 -0
  575. package/dist/lib/storage/backends/interface.d.ts +383 -0
  576. package/dist/lib/storage/backends/interface.d.ts.map +1 -0
  577. package/dist/lib/storage/backends/interface.js +12 -0
  578. package/dist/lib/storage/backends/interface.js.map +1 -0
  579. package/dist/lib/storage/backends/postgresql.d.ts +454 -0
  580. package/dist/lib/storage/backends/postgresql.d.ts.map +1 -0
  581. package/dist/lib/storage/backends/postgresql.js +2528 -0
  582. package/dist/lib/storage/backends/postgresql.js.map +1 -0
  583. package/dist/lib/storage/benchmark.d.ts +16 -0
  584. package/dist/lib/storage/benchmark.d.ts.map +1 -0
  585. package/dist/lib/storage/benchmark.js +219 -0
  586. package/dist/lib/storage/benchmark.js.map +1 -0
  587. package/dist/lib/storage/dispatcher-export.d.ts +108 -0
  588. package/dist/lib/storage/dispatcher-export.d.ts.map +1 -0
  589. package/dist/lib/storage/dispatcher-export.js +593 -0
  590. package/dist/lib/storage/dispatcher-export.js.map +1 -0
  591. package/dist/lib/storage/dispatcher.d.ts +468 -0
  592. package/dist/lib/storage/dispatcher.d.ts.map +1 -0
  593. package/dist/lib/storage/dispatcher.js +1926 -0
  594. package/dist/lib/storage/dispatcher.js.map +1 -0
  595. package/dist/lib/storage/index.d.ts +481 -0
  596. package/dist/lib/storage/index.d.ts.map +1 -0
  597. package/dist/lib/storage/index.js +727 -0
  598. package/dist/lib/storage/index.js.map +1 -0
  599. package/dist/lib/storage/migration/export-import.d.ts +133 -0
  600. package/dist/lib/storage/migration/export-import.d.ts.map +1 -0
  601. package/dist/lib/storage/migration/export-import.js +264 -0
  602. package/dist/lib/storage/migration/export-import.js.map +1 -0
  603. package/dist/lib/storage/types.d.ts +313 -0
  604. package/dist/lib/storage/types.d.ts.map +1 -0
  605. package/dist/lib/storage/types.js +30 -0
  606. package/dist/lib/storage/types.js.map +1 -0
  607. package/dist/lib/storage/vector/interface.d.ts +89 -0
  608. package/dist/lib/storage/vector/interface.d.ts.map +1 -0
  609. package/dist/lib/storage/vector/interface.js +10 -0
  610. package/dist/lib/storage/vector/interface.js.map +1 -0
  611. package/dist/lib/storage/vector/qdrant.d.ts +221 -0
  612. package/dist/lib/storage/vector/qdrant.d.ts.map +1 -0
  613. package/dist/lib/storage/vector/qdrant.js +880 -0
  614. package/dist/lib/storage/vector/qdrant.js.map +1 -0
  615. package/dist/lib/supersession.d.ts +26 -0
  616. package/dist/lib/supersession.d.ts.map +1 -0
  617. package/dist/lib/supersession.js +97 -0
  618. package/dist/lib/supersession.js.map +1 -0
  619. package/dist/lib/temporal.d.ts +140 -0
  620. package/dist/lib/temporal.d.ts.map +1 -0
  621. package/dist/lib/temporal.js +303 -0
  622. package/dist/lib/temporal.js.map +1 -0
  623. package/dist/lib/token-budget.d.ts +79 -0
  624. package/dist/lib/token-budget.d.ts.map +1 -0
  625. package/dist/lib/token-budget.js +146 -0
  626. package/dist/lib/token-budget.js.map +1 -0
  627. package/dist/lib/token-counter.d.ts +27 -0
  628. package/dist/lib/token-counter.d.ts.map +1 -0
  629. package/dist/lib/token-counter.js +52 -0
  630. package/dist/lib/token-counter.js.map +1 -0
  631. package/dist/lib/tree-sitter/chunker-ts.d.ts +24 -0
  632. package/dist/lib/tree-sitter/chunker-ts.d.ts.map +1 -0
  633. package/dist/lib/tree-sitter/chunker-ts.js +206 -0
  634. package/dist/lib/tree-sitter/chunker-ts.js.map +1 -0
  635. package/dist/lib/tree-sitter/extractor.d.ts +43 -0
  636. package/dist/lib/tree-sitter/extractor.d.ts.map +1 -0
  637. package/dist/lib/tree-sitter/extractor.js +297 -0
  638. package/dist/lib/tree-sitter/extractor.js.map +1 -0
  639. package/dist/lib/tree-sitter/index.d.ts +13 -0
  640. package/dist/lib/tree-sitter/index.d.ts.map +1 -0
  641. package/dist/lib/tree-sitter/index.js +14 -0
  642. package/dist/lib/tree-sitter/index.js.map +1 -0
  643. package/dist/lib/tree-sitter/parser.d.ts +70 -0
  644. package/dist/lib/tree-sitter/parser.d.ts.map +1 -0
  645. package/dist/lib/tree-sitter/parser.js +354 -0
  646. package/dist/lib/tree-sitter/parser.js.map +1 -0
  647. package/dist/lib/tree-sitter/public.d.ts +28 -0
  648. package/dist/lib/tree-sitter/public.d.ts.map +1 -0
  649. package/dist/lib/tree-sitter/public.js +50 -0
  650. package/dist/lib/tree-sitter/public.js.map +1 -0
  651. package/dist/lib/tree-sitter/queries.d.ts +28 -0
  652. package/dist/lib/tree-sitter/queries.d.ts.map +1 -0
  653. package/dist/lib/tree-sitter/queries.js +383 -0
  654. package/dist/lib/tree-sitter/queries.js.map +1 -0
  655. package/dist/lib/tree-sitter/types.d.ts +69 -0
  656. package/dist/lib/tree-sitter/types.d.ts.map +1 -0
  657. package/dist/lib/tree-sitter/types.js +131 -0
  658. package/dist/lib/tree-sitter/types.js.map +1 -0
  659. package/dist/lib/working-memory-pipeline.d.ts +118 -0
  660. package/dist/lib/working-memory-pipeline.d.ts.map +1 -0
  661. package/dist/lib/working-memory-pipeline.js +344 -0
  662. package/dist/lib/working-memory-pipeline.js.map +1 -0
  663. package/dist/mcp/helpers.d.ts +44 -0
  664. package/dist/mcp/helpers.d.ts.map +1 -0
  665. package/dist/mcp/helpers.js +244 -0
  666. package/dist/mcp/helpers.js.map +1 -0
  667. package/dist/mcp/index.d.ts +10 -0
  668. package/dist/mcp/index.d.ts.map +1 -0
  669. package/dist/mcp/index.js +15 -0
  670. package/dist/mcp/index.js.map +1 -0
  671. package/dist/mcp/resources.d.ts +12 -0
  672. package/dist/mcp/resources.d.ts.map +1 -0
  673. package/dist/mcp/resources.js +136 -0
  674. package/dist/mcp/resources.js.map +1 -0
  675. package/dist/mcp/server.d.ts +22 -0
  676. package/dist/mcp/server.d.ts.map +1 -0
  677. package/dist/mcp/server.js +131 -0
  678. package/dist/mcp/server.js.map +1 -0
  679. package/dist/mcp/tools/config.d.ts +10 -0
  680. package/dist/mcp/tools/config.d.ts.map +1 -0
  681. package/dist/mcp/tools/config.js +236 -0
  682. package/dist/mcp/tools/config.js.map +1 -0
  683. package/dist/mcp/tools/dead-end.d.ts +9 -0
  684. package/dist/mcp/tools/dead-end.d.ts.map +1 -0
  685. package/dist/mcp/tools/dead-end.js +137 -0
  686. package/dist/mcp/tools/dead-end.js.map +1 -0
  687. package/dist/mcp/tools/debug.d.ts +9 -0
  688. package/dist/mcp/tools/debug.d.ts.map +1 -0
  689. package/dist/mcp/tools/debug.js +387 -0
  690. package/dist/mcp/tools/debug.js.map +1 -0
  691. package/dist/mcp/tools/graph.d.ts +9 -0
  692. package/dist/mcp/tools/graph.d.ts.map +1 -0
  693. package/dist/mcp/tools/graph.js +337 -0
  694. package/dist/mcp/tools/graph.js.map +1 -0
  695. package/dist/mcp/tools/indexing.d.ts +12 -0
  696. package/dist/mcp/tools/indexing.d.ts.map +1 -0
  697. package/dist/mcp/tools/indexing.js +289 -0
  698. package/dist/mcp/tools/indexing.js.map +1 -0
  699. package/dist/mcp/tools/memory.d.ts +14 -0
  700. package/dist/mcp/tools/memory.d.ts.map +1 -0
  701. package/dist/mcp/tools/memory.js +1170 -0
  702. package/dist/mcp/tools/memory.js.map +1 -0
  703. package/dist/mcp/tools/prd.d.ts +12 -0
  704. package/dist/mcp/tools/prd.d.ts.map +1 -0
  705. package/dist/mcp/tools/prd.js +276 -0
  706. package/dist/mcp/tools/prd.js.map +1 -0
  707. package/dist/mcp/tools/search.d.ts +9 -0
  708. package/dist/mcp/tools/search.d.ts.map +1 -0
  709. package/dist/mcp/tools/search.js +279 -0
  710. package/dist/mcp/tools/search.js.map +1 -0
  711. package/dist/mcp/tools/status.d.ts +10 -0
  712. package/dist/mcp/tools/status.d.ts.map +1 -0
  713. package/dist/mcp/tools/status.js +296 -0
  714. package/dist/mcp/tools/status.js.map +1 -0
  715. package/dist/mcp/tools/web-fetch.d.ts +10 -0
  716. package/dist/mcp/tools/web-fetch.d.ts.map +1 -0
  717. package/dist/mcp/tools/web-fetch.js +107 -0
  718. package/dist/mcp/tools/web-fetch.js.map +1 -0
  719. package/dist/mcp/tools/web-search.d.ts +14 -0
  720. package/dist/mcp/tools/web-search.d.ts.map +1 -0
  721. package/dist/mcp/tools/web-search.js +427 -0
  722. package/dist/mcp/tools/web-search.js.map +1 -0
  723. package/dist/mcp/types.d.ts +16 -0
  724. package/dist/mcp/types.d.ts.map +1 -0
  725. package/dist/mcp/types.js +5 -0
  726. package/dist/mcp/types.js.map +1 -0
  727. package/dist/mcp-server.d.ts +9 -0
  728. package/dist/mcp-server.d.ts.map +1 -0
  729. package/dist/mcp-server.js +9 -0
  730. package/dist/mcp-server.js.map +1 -0
  731. package/dist/prompts/analyze.d.ts +21 -0
  732. package/dist/prompts/analyze.d.ts.map +1 -0
  733. package/dist/prompts/analyze.js +27 -0
  734. package/dist/prompts/analyze.js.map +1 -0
  735. package/dist/prompts/briefing.d.ts +27 -0
  736. package/dist/prompts/briefing.d.ts.map +1 -0
  737. package/dist/prompts/briefing.js +123 -0
  738. package/dist/prompts/briefing.js.map +1 -0
  739. package/dist/prompts/chat.d.ts +8 -0
  740. package/dist/prompts/chat.d.ts.map +1 -0
  741. package/dist/prompts/chat.js +39 -0
  742. package/dist/prompts/chat.js.map +1 -0
  743. package/dist/prompts/daemon.d.ts +16 -0
  744. package/dist/prompts/daemon.d.ts.map +1 -0
  745. package/dist/prompts/daemon.js +46 -0
  746. package/dist/prompts/daemon.js.map +1 -0
  747. package/dist/prompts/extraction.d.ts +13 -0
  748. package/dist/prompts/extraction.d.ts.map +1 -0
  749. package/dist/prompts/extraction.js +93 -0
  750. package/dist/prompts/extraction.js.map +1 -0
  751. package/dist/prompts/index.d.ts +17 -0
  752. package/dist/prompts/index.d.ts.map +1 -0
  753. package/dist/prompts/index.js +27 -0
  754. package/dist/prompts/index.js.map +1 -0
  755. package/dist/prompts/memory.d.ts +11 -0
  756. package/dist/prompts/memory.d.ts.map +1 -0
  757. package/dist/prompts/memory.js +23 -0
  758. package/dist/prompts/memory.js.map +1 -0
  759. package/dist/prompts/onboarding.d.ts +16 -0
  760. package/dist/prompts/onboarding.d.ts.map +1 -0
  761. package/dist/prompts/onboarding.js +183 -0
  762. package/dist/prompts/onboarding.js.map +1 -0
  763. package/dist/prompts/prd.d.ts +12 -0
  764. package/dist/prompts/prd.d.ts.map +1 -0
  765. package/dist/prompts/prd.js +211 -0
  766. package/dist/prompts/prd.js.map +1 -0
  767. package/dist/prompts/quality.d.ts +11 -0
  768. package/dist/prompts/quality.d.ts.map +1 -0
  769. package/dist/prompts/quality.js +11 -0
  770. package/dist/prompts/quality.js.map +1 -0
  771. package/dist/prompts/skills.d.ts +16 -0
  772. package/dist/prompts/skills.d.ts.map +1 -0
  773. package/dist/prompts/skills.js +30 -0
  774. package/dist/prompts/skills.js.map +1 -0
  775. package/hooks/succ-post-tool.cjs +227 -0
  776. package/hooks/succ-pre-tool.cjs +312 -0
  777. package/hooks/succ-session-end.cjs +85 -0
  778. package/hooks/succ-session-start.cjs +618 -0
  779. package/hooks/succ-stop-reflection.cjs +87 -0
  780. package/hooks/succ-user-prompt.cjs +220 -0
  781. package/package.json +128 -0
@@ -0,0 +1,689 @@
1
+ /**
2
+ * Configuration system for succ
3
+ *
4
+ * Core configuration loading and management functions.
5
+ * Type definitions are in config-types.ts
6
+ * Default values are in config-defaults.ts
7
+ * Display functions are in config-display.ts
8
+ */
9
+ import fs from 'fs';
10
+ import path from 'path';
11
+ import os from 'os';
12
+ import { deepMerge, validateConfig } from './config-validation.js';
13
+ // Re-export all defaults
14
+ export { LOCAL_MODEL, DEFAULT_READINESS_GATE_CONFIG, DEFAULT_IDLE_WATCHER_CONFIG, DEFAULT_RETENTION_POLICY_CONFIG, DEFAULT_SLEEP_AGENT_CONFIG, DEFAULT_COMPACT_BRIEFING_CONFIG, DEFAULT_ERROR_REPORTING_CONFIG, DEFAULT_IDLE_REFLECTION_CONFIG, DEFAULT_CONFIG, DEFAULT_API_URL, } from './config-defaults.js';
15
+ // Re-export display functions
16
+ export { getConfigDisplay, formatConfigDisplay } from './config-display.js';
17
+ import { DEFAULT_CONFIG, DEFAULT_API_URL, LOCAL_MODEL, DEFAULT_IDLE_WATCHER_CONFIG, DEFAULT_RETENTION_POLICY_CONFIG, DEFAULT_COMPACT_BRIEFING_CONFIG, DEFAULT_READINESS_GATE_CONFIG, DEFAULT_IDLE_REFLECTION_CONFIG, DEFAULT_SLEEP_AGENT_CONFIG, DEFAULT_ERROR_REPORTING_CONFIG, } from './config-defaults.js';
18
+ // ============================================================================
19
+ // Core Configuration Functions
20
+ // ============================================================================
21
+ // Config cache: avoids re-reading files on every getConfig() call
22
+ let configCache = null;
23
+ /** Invalidate config cache (for tests or after config changes) */
24
+ export function invalidateConfigCache() {
25
+ configCache = null;
26
+ }
27
+ function getFileMtime(filePath) {
28
+ try {
29
+ return fs.statSync(filePath).mtimeMs;
30
+ }
31
+ catch {
32
+ return 0;
33
+ }
34
+ }
35
+ export function getConfig() {
36
+ const globalConfigPath = path.join(os.homedir(), '.succ', 'config.json');
37
+ // Find active project config path
38
+ const projectConfigPaths = [
39
+ path.join(process.cwd(), '.succ', 'config.json'),
40
+ path.join(process.cwd(), '.claude', 'succ.json'), // legacy
41
+ ];
42
+ let activeProjectPath = '';
43
+ for (const p of projectConfigPaths) {
44
+ if (fs.existsSync(p)) {
45
+ activeProjectPath = p;
46
+ break;
47
+ }
48
+ }
49
+ // Check if cache is still valid (stat is cheaper than read+parse)
50
+ if (configCache) {
51
+ const globalMtime = getFileMtime(globalConfigPath);
52
+ const projectMtime = activeProjectPath ? getFileMtime(activeProjectPath) : 0;
53
+ if (globalMtime === configCache.globalMtime &&
54
+ projectMtime === configCache.projectMtime &&
55
+ activeProjectPath === configCache.projectPath) {
56
+ return configCache.config;
57
+ }
58
+ }
59
+ // Read global config file
60
+ let fileConfig = {};
61
+ if (fs.existsSync(globalConfigPath)) {
62
+ try {
63
+ fileConfig = JSON.parse(fs.readFileSync(globalConfigPath, 'utf-8'));
64
+ }
65
+ catch {
66
+ // Ignore parse errors
67
+ }
68
+ }
69
+ // Read project config (recursive deep merge for nested objects like storage.sqlite, llm.embeddings, etc.)
70
+ if (activeProjectPath) {
71
+ try {
72
+ const projectConfig = JSON.parse(fs.readFileSync(activeProjectPath, 'utf-8'));
73
+ fileConfig = deepMerge(fileConfig, projectConfig);
74
+ }
75
+ catch {
76
+ // Ignore parse errors
77
+ }
78
+ }
79
+ // Validate critical config sections (logs warnings, never throws)
80
+ const validated = validateConfig(fileConfig);
81
+ const result = {
82
+ ...DEFAULT_CONFIG,
83
+ ...validated,
84
+ };
85
+ // Update cache
86
+ configCache = {
87
+ config: result,
88
+ globalMtime: getFileMtime(globalConfigPath),
89
+ projectMtime: activeProjectPath ? getFileMtime(activeProjectPath) : 0,
90
+ projectPath: activeProjectPath,
91
+ };
92
+ return result;
93
+ }
94
+ export function getProjectRoot() {
95
+ // 1. Check env overrides: SUCC_PROJECT_ROOT (explicit), CLAUDE_PROJECT_DIR (Claude Code hooks/MCP)
96
+ const envRoot = process.env.SUCC_PROJECT_ROOT || process.env.CLAUDE_PROJECT_DIR;
97
+ if (envRoot &&
98
+ (fs.existsSync(path.join(envRoot, '.succ')) || fs.existsSync(path.join(envRoot, '.git')))) {
99
+ return envRoot;
100
+ }
101
+ // 2. Walk up to find a real project root
102
+ // .git or .claude = definite project. .succ alone = project only if not $HOME
103
+ // (bare ~/.succ is the global config dir, not a project)
104
+ const homeDir = os.homedir();
105
+ let dir = process.cwd();
106
+ while (dir !== path.dirname(dir)) {
107
+ const hasGit = fs.existsSync(path.join(dir, '.git'));
108
+ const hasClaude = fs.existsSync(path.join(dir, '.claude'));
109
+ const hasSucc = fs.existsSync(path.join(dir, '.succ'));
110
+ if (hasGit || hasClaude || (hasSucc && path.resolve(dir) !== path.resolve(homeDir))) {
111
+ return dir;
112
+ }
113
+ dir = path.dirname(dir);
114
+ }
115
+ return process.cwd();
116
+ }
117
+ export function getSuccDir() {
118
+ return path.join(getProjectRoot(), '.succ');
119
+ }
120
+ /**
121
+ * Check if succ is initialized in current project
122
+ */
123
+ export function isProjectInitialized() {
124
+ // ~/.succ is the global config dir, not an initialized project
125
+ if (path.resolve(getProjectRoot()) === path.resolve(os.homedir())) {
126
+ return false;
127
+ }
128
+ const succDir = getSuccDir();
129
+ return fs.existsSync(succDir) && fs.existsSync(path.join(succDir, 'succ.db'));
130
+ }
131
+ /**
132
+ * Check if only global memory is available (no project .succ/)
133
+ */
134
+ export function isGlobalOnlyMode() {
135
+ return !isProjectInitialized();
136
+ }
137
+ // Legacy alias for backwards compatibility
138
+ export function getClaudeDir() {
139
+ return getSuccDir();
140
+ }
141
+ export function getDbPath() {
142
+ return path.join(getSuccDir(), 'succ.db');
143
+ }
144
+ export function getGlobalDbPath() {
145
+ const globalDir = path.join(os.homedir(), '.succ');
146
+ if (!fs.existsSync(globalDir)) {
147
+ fs.mkdirSync(globalDir, { recursive: true });
148
+ }
149
+ return path.join(globalDir, 'global.db');
150
+ }
151
+ // Temporary config override for benchmarking
152
+ let configOverride = null;
153
+ export function setConfigOverride(override) {
154
+ configOverride = override;
155
+ }
156
+ export function getConfigWithOverride() {
157
+ const baseConfig = getConfig();
158
+ if (configOverride) {
159
+ return { ...baseConfig, ...configOverride };
160
+ }
161
+ return baseConfig;
162
+ }
163
+ /**
164
+ * Get the global API key.
165
+ * Resolution: llm.api_key → OPENROUTER_API_KEY env → undefined
166
+ */
167
+ export function getApiKey() {
168
+ const config = getConfig();
169
+ if (config.llm?.api_key)
170
+ return config.llm.api_key;
171
+ if (process.env.OPENROUTER_API_KEY)
172
+ return process.env.OPENROUTER_API_KEY;
173
+ return undefined;
174
+ }
175
+ /**
176
+ * Get the global API URL.
177
+ * Resolution: llm.api_url → "http://localhost:11434/v1"
178
+ */
179
+ export function getApiUrl() {
180
+ const config = getConfig();
181
+ return config.llm?.api_url || 'http://localhost:11434/v1';
182
+ }
183
+ /**
184
+ * Check if an API key is available (global or env)
185
+ */
186
+ export function hasApiKey() {
187
+ return !!getApiKey();
188
+ }
189
+ // ============================================================================
190
+ // LLM Task Configuration Resolvers
191
+ // ============================================================================
192
+ /**
193
+ * Get fully resolved LLM config for a specific task.
194
+ *
195
+ * Resolution chain:
196
+ * mode: llm.{task}.mode → llm.type → default per task
197
+ * model: llm.{task}.model → llm.model → default per mode
198
+ * api_key: llm.{task}.api_key → llm.api_key → env OPENROUTER_API_KEY → undefined
199
+ * api_url: llm.{task}.api_url → llm.api_url → "http://localhost:11434/v1"
200
+ * max_tokens: llm.{task}.max_tokens → llm.max_tokens → 2000
201
+ * temperature: llm.{task}.temperature → llm.temperature → 0.3
202
+ */
203
+ export function getLLMTaskConfig(task) {
204
+ const config = getConfig();
205
+ const llm = config.llm || {};
206
+ const taskConfig = llm[task] || {};
207
+ // Default modes per task
208
+ const defaultModes = {
209
+ embeddings: 'local',
210
+ analyze: 'claude',
211
+ quality: 'local',
212
+ chat: 'claude',
213
+ sleep: 'api',
214
+ skills: llm.type === 'claude' ? 'claude' : 'api',
215
+ };
216
+ // Default models per mode
217
+ const defaultModels = {
218
+ claude: 'haiku',
219
+ api: 'qwen2.5:7b',
220
+ local: task === 'embeddings' ? LOCAL_MODEL : '',
221
+ };
222
+ // Tasks that only support 'local' | 'api' (no claude CLI support)
223
+ const localOnlyTasks = new Set(['embeddings', 'quality']);
224
+ const globalType = llm.type;
225
+ // Skip llm.type fallback if it's 'claude' but the task doesn't support it
226
+ const globalTypeFallback = globalType && !(localOnlyTasks.has(task) && globalType === 'claude') ? globalType : undefined;
227
+ const mode = taskConfig.mode ||
228
+ globalTypeFallback ||
229
+ defaultModes[task];
230
+ // llm.model is the global API/Claude model — don't use it as fallback for 'local' mode
231
+ const globalModelFallback = mode === 'local' ? undefined : llm.model;
232
+ const model = taskConfig.model ||
233
+ globalModelFallback ||
234
+ defaultModels[mode] ||
235
+ defaultModels['api'];
236
+ const apiKey = taskConfig.api_key ||
237
+ llm.api_key ||
238
+ process.env.OPENROUTER_API_KEY ||
239
+ undefined;
240
+ const apiUrl = taskConfig.api_url ||
241
+ llm.api_url ||
242
+ DEFAULT_API_URL;
243
+ const maxTokens = taskConfig.max_tokens ??
244
+ llm.max_tokens ??
245
+ (task === 'chat' ? 4000 : task === 'analyze' ? 4096 : 2000);
246
+ const temperature = taskConfig.temperature ??
247
+ llm.temperature ??
248
+ (task === 'chat' ? 0.7 : 0.3);
249
+ // Task-specific extra fields
250
+ const batchSize = task === 'embeddings'
251
+ ? (taskConfig.batch_size ?? 32)
252
+ : undefined;
253
+ const dimensions = task === 'embeddings'
254
+ ? taskConfig.dimensions
255
+ : undefined;
256
+ const concurrency = task === 'analyze'
257
+ ? (taskConfig.concurrency ?? 3)
258
+ : undefined;
259
+ return {
260
+ mode: mode,
261
+ model,
262
+ api_url: apiUrl,
263
+ api_key: apiKey,
264
+ max_tokens: maxTokens,
265
+ temperature,
266
+ batch_size: batchSize,
267
+ dimensions,
268
+ concurrency,
269
+ };
270
+ }
271
+ /**
272
+ * Get idle watcher configuration with defaults
273
+ */
274
+ export function getIdleWatcherConfig() {
275
+ const config = getConfig();
276
+ const userConfig = config.idle_watcher || {};
277
+ return {
278
+ enabled: userConfig.enabled ?? DEFAULT_IDLE_WATCHER_CONFIG.enabled,
279
+ idle_minutes: userConfig.idle_minutes ?? DEFAULT_IDLE_WATCHER_CONFIG.idle_minutes,
280
+ check_interval: userConfig.check_interval ?? DEFAULT_IDLE_WATCHER_CONFIG.check_interval,
281
+ min_conversation_length: userConfig.min_conversation_length ?? DEFAULT_IDLE_WATCHER_CONFIG.min_conversation_length,
282
+ reflection_cooldown_minutes: userConfig.reflection_cooldown_minutes ??
283
+ DEFAULT_IDLE_WATCHER_CONFIG.reflection_cooldown_minutes,
284
+ };
285
+ }
286
+ /**
287
+ * Get retention policy configuration with defaults
288
+ */
289
+ export function getRetentionConfig() {
290
+ const config = getConfig();
291
+ const userConfig = config.retention || {};
292
+ return {
293
+ enabled: userConfig.enabled ?? DEFAULT_RETENTION_POLICY_CONFIG.enabled,
294
+ decay_rate: userConfig.decay_rate ?? DEFAULT_RETENTION_POLICY_CONFIG.decay_rate,
295
+ access_weight: userConfig.access_weight ?? DEFAULT_RETENTION_POLICY_CONFIG.access_weight,
296
+ max_access_boost: userConfig.max_access_boost ?? DEFAULT_RETENTION_POLICY_CONFIG.max_access_boost,
297
+ keep_threshold: userConfig.keep_threshold ?? DEFAULT_RETENTION_POLICY_CONFIG.keep_threshold,
298
+ delete_threshold: userConfig.delete_threshold ?? DEFAULT_RETENTION_POLICY_CONFIG.delete_threshold,
299
+ default_quality_score: userConfig.default_quality_score ?? DEFAULT_RETENTION_POLICY_CONFIG.default_quality_score,
300
+ auto_cleanup_interval_days: userConfig.auto_cleanup_interval_days ??
301
+ DEFAULT_RETENTION_POLICY_CONFIG.auto_cleanup_interval_days,
302
+ use_temporal_decay: userConfig.use_temporal_decay ?? DEFAULT_RETENTION_POLICY_CONFIG.use_temporal_decay,
303
+ };
304
+ }
305
+ /**
306
+ * Get web search configuration with defaults
307
+ */
308
+ export function getWebSearchConfig() {
309
+ const config = getConfig();
310
+ const userConfig = config.web_search || {};
311
+ return {
312
+ enabled: userConfig.enabled ?? true,
313
+ quick_search_model: userConfig.quick_search_model ?? 'perplexity/sonar',
314
+ quick_search_max_tokens: userConfig.quick_search_max_tokens ?? 2000,
315
+ quick_search_timeout_ms: userConfig.quick_search_timeout_ms ?? 15000,
316
+ model: userConfig.model ?? 'perplexity/sonar-pro',
317
+ deep_research_model: userConfig.deep_research_model ?? 'perplexity/sonar-deep-research',
318
+ max_tokens: userConfig.max_tokens ?? 4000,
319
+ deep_research_max_tokens: userConfig.deep_research_max_tokens ?? 8000,
320
+ timeout_ms: userConfig.timeout_ms ?? 30000,
321
+ deep_research_timeout_ms: userConfig.deep_research_timeout_ms ?? 120000,
322
+ temperature: userConfig.temperature ?? 0.1,
323
+ save_to_memory: userConfig.save_to_memory ?? true,
324
+ daily_budget_usd: userConfig.daily_budget_usd ?? 0,
325
+ };
326
+ }
327
+ export function getIdleReflectionConfig() {
328
+ const config = getConfig();
329
+ const userConfig = config.idle_reflection || {};
330
+ const userSleepAgent = userConfig.sleep_agent || {};
331
+ // Sleep agent enabled state: idle_reflection.sleep_agent.enabled → llm.sleep.enabled → false
332
+ const sleepEnabled = userSleepAgent.enabled ?? config.llm?.sleep?.enabled ?? DEFAULT_SLEEP_AGENT_CONFIG.enabled;
333
+ // Safety: memory_consolidation requires GLOBAL opt-in.
334
+ // Project config can DISABLE (false) but cannot ENABLE (true) on its own.
335
+ // This prevents .succ/config.json from silently enabling destructive consolidation.
336
+ let globalConsolidation;
337
+ try {
338
+ const globalCfg = loadGlobalConfig();
339
+ const idleRef = globalCfg.idle_reflection;
340
+ const ops = idleRef?.operations;
341
+ globalConsolidation = ops?.memory_consolidation;
342
+ }
343
+ catch {
344
+ /* ignore parse errors */
345
+ }
346
+ // Rule: global must explicitly be true, AND merged value must not be false
347
+ const consolidationEnabled = globalConsolidation === true && userConfig.operations?.memory_consolidation !== false;
348
+ return {
349
+ enabled: userConfig.enabled ?? DEFAULT_IDLE_REFLECTION_CONFIG.enabled,
350
+ operations: {
351
+ memory_consolidation: consolidationEnabled,
352
+ graph_refinement: userConfig.operations?.graph_refinement ??
353
+ DEFAULT_IDLE_REFLECTION_CONFIG.operations.graph_refinement,
354
+ graph_enrichment: userConfig.operations?.graph_enrichment ??
355
+ DEFAULT_IDLE_REFLECTION_CONFIG.operations.graph_enrichment,
356
+ session_summary: userConfig.operations?.session_summary ??
357
+ DEFAULT_IDLE_REFLECTION_CONFIG.operations.session_summary,
358
+ precompute_context: userConfig.operations?.precompute_context ??
359
+ DEFAULT_IDLE_REFLECTION_CONFIG.operations.precompute_context,
360
+ write_reflection: userConfig.operations?.write_reflection ??
361
+ DEFAULT_IDLE_REFLECTION_CONFIG.operations.write_reflection,
362
+ retention_cleanup: userConfig.operations?.retention_cleanup ??
363
+ DEFAULT_IDLE_REFLECTION_CONFIG.operations.retention_cleanup,
364
+ },
365
+ thresholds: {
366
+ similarity_for_merge: userConfig.thresholds?.similarity_for_merge ??
367
+ DEFAULT_IDLE_REFLECTION_CONFIG.thresholds.similarity_for_merge,
368
+ auto_link_threshold: userConfig.thresholds?.auto_link_threshold ??
369
+ DEFAULT_IDLE_REFLECTION_CONFIG.thresholds.auto_link_threshold,
370
+ min_quality_for_summary: userConfig.thresholds?.min_quality_for_summary ??
371
+ DEFAULT_IDLE_REFLECTION_CONFIG.thresholds.min_quality_for_summary,
372
+ },
373
+ agent_model: userConfig.agent_model ?? DEFAULT_IDLE_REFLECTION_CONFIG.agent_model,
374
+ sleep_agent: {
375
+ enabled: sleepEnabled,
376
+ handle_operations: {
377
+ memory_consolidation: userSleepAgent.handle_operations?.memory_consolidation ??
378
+ DEFAULT_SLEEP_AGENT_CONFIG.handle_operations.memory_consolidation,
379
+ session_summary: userSleepAgent.handle_operations?.session_summary ??
380
+ DEFAULT_SLEEP_AGENT_CONFIG.handle_operations.session_summary,
381
+ precompute_context: userSleepAgent.handle_operations?.precompute_context ??
382
+ DEFAULT_SLEEP_AGENT_CONFIG.handle_operations.precompute_context,
383
+ },
384
+ },
385
+ consolidation_guards: {
386
+ min_memory_age_days: userConfig.consolidation_guards?.min_memory_age_days ??
387
+ DEFAULT_IDLE_REFLECTION_CONFIG.consolidation_guards.min_memory_age_days,
388
+ min_corpus_size: userConfig.consolidation_guards?.min_corpus_size ??
389
+ DEFAULT_IDLE_REFLECTION_CONFIG.consolidation_guards.min_corpus_size,
390
+ require_llm_merge: userConfig.consolidation_guards?.require_llm_merge ??
391
+ DEFAULT_IDLE_REFLECTION_CONFIG.consolidation_guards.require_llm_merge,
392
+ },
393
+ max_memories_to_process: userConfig.max_memories_to_process ?? DEFAULT_IDLE_REFLECTION_CONFIG.max_memories_to_process,
394
+ timeout_seconds: userConfig.timeout_seconds ?? DEFAULT_IDLE_REFLECTION_CONFIG.timeout_seconds,
395
+ };
396
+ }
397
+ /**
398
+ * Get compact briefing configuration with defaults
399
+ */
400
+ export function getCompactBriefingConfig() {
401
+ const config = getConfig();
402
+ const userConfig = config.compact_briefing || {};
403
+ return {
404
+ enabled: userConfig.enabled ?? DEFAULT_COMPACT_BRIEFING_CONFIG.enabled,
405
+ format: userConfig.format ?? DEFAULT_COMPACT_BRIEFING_CONFIG.format,
406
+ include_learnings: userConfig.include_learnings ?? DEFAULT_COMPACT_BRIEFING_CONFIG.include_learnings,
407
+ include_memories: userConfig.include_memories ?? DEFAULT_COMPACT_BRIEFING_CONFIG.include_memories,
408
+ max_memories: userConfig.max_memories ?? DEFAULT_COMPACT_BRIEFING_CONFIG.max_memories,
409
+ timeout_ms: userConfig.timeout_ms ?? DEFAULT_COMPACT_BRIEFING_CONFIG.timeout_ms,
410
+ };
411
+ }
412
+ /**
413
+ * Get readiness gate configuration with defaults
414
+ */
415
+ export function getReadinessGateConfig() {
416
+ const config = getConfig();
417
+ const userConfig = config.readiness_gate || {};
418
+ const userThresholds = userConfig.thresholds || {};
419
+ const defaultThresholds = DEFAULT_READINESS_GATE_CONFIG.thresholds;
420
+ return {
421
+ enabled: userConfig.enabled ?? DEFAULT_READINESS_GATE_CONFIG.enabled,
422
+ thresholds: {
423
+ proceed: userThresholds.proceed ?? defaultThresholds.proceed,
424
+ warn: userThresholds.warn ?? defaultThresholds.warn,
425
+ },
426
+ expected_results: userConfig.expected_results ?? DEFAULT_READINESS_GATE_CONFIG.expected_results,
427
+ };
428
+ }
429
+ /**
430
+ * Determine which agent handles each operation
431
+ * Returns 'claude' or 'sleep' for each operation
432
+ */
433
+ export function getOperationAssignments() {
434
+ const idleConfig = getIdleReflectionConfig();
435
+ const sleepTaskCfg = getLLMTaskConfig('sleep');
436
+ const ops = idleConfig.operations;
437
+ const sleepAgent = idleConfig.sleep_agent;
438
+ const sleepOps = sleepAgent.handle_operations;
439
+ const sleepEnabled = sleepAgent.enabled && !!sleepTaskCfg.model;
440
+ const assignments = [
441
+ {
442
+ operation: 'memory_consolidation',
443
+ // Offload to sleep agent if enabled and configured to handle it
444
+ agent: sleepEnabled && sleepOps?.memory_consolidation ? 'sleep' : 'claude',
445
+ enabled: ops?.memory_consolidation ?? true,
446
+ },
447
+ {
448
+ operation: 'graph_refinement',
449
+ // Graph refinement always stays with Claude (needs succ CLI access)
450
+ agent: 'claude',
451
+ enabled: ops?.graph_refinement ?? true,
452
+ },
453
+ {
454
+ operation: 'graph_enrichment',
455
+ // Graph enrichment stays with Claude (needs DB access for LLM enrich + proximity + communities + centrality)
456
+ agent: 'claude',
457
+ enabled: ops?.graph_enrichment ?? true,
458
+ },
459
+ {
460
+ operation: 'session_summary',
461
+ agent: sleepEnabled && sleepOps?.session_summary ? 'sleep' : 'claude',
462
+ enabled: ops?.session_summary ?? true,
463
+ },
464
+ {
465
+ operation: 'precompute_context',
466
+ agent: sleepEnabled && sleepOps?.precompute_context ? 'sleep' : 'claude',
467
+ enabled: ops?.precompute_context ?? false,
468
+ },
469
+ {
470
+ operation: 'write_reflection',
471
+ // Reflection text always stays with Claude (writes to reflections.md)
472
+ agent: 'claude',
473
+ enabled: ops?.write_reflection ?? true,
474
+ },
475
+ ];
476
+ return assignments;
477
+ }
478
+ /**
479
+ * Get operations assigned to a specific agent
480
+ */
481
+ export function getAgentOperations(agent) {
482
+ return getOperationAssignments()
483
+ .filter((a) => a.agent === agent && a.enabled)
484
+ .map((a) => a.operation);
485
+ }
486
+ // ============================================================================
487
+ // Daemon Status Helpers
488
+ // ============================================================================
489
+ /**
490
+ * Check if a process is running by PID
491
+ */
492
+ function isProcessRunning(pid) {
493
+ try {
494
+ process.kill(pid, 0);
495
+ return true;
496
+ }
497
+ catch {
498
+ return false;
499
+ }
500
+ }
501
+ // ============================================================================
502
+ // Global Config Helpers (for onboarding state)
503
+ // ============================================================================
504
+ /**
505
+ * Get path to global config file
506
+ */
507
+ export function getGlobalConfigPath() {
508
+ return path.join(os.homedir(), '.succ', 'config.json');
509
+ }
510
+ /**
511
+ * Load global config from ~/.succ/config.json
512
+ */
513
+ export function loadGlobalConfig() {
514
+ const configPath = getGlobalConfigPath();
515
+ if (!fs.existsSync(configPath)) {
516
+ return {};
517
+ }
518
+ try {
519
+ return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
520
+ }
521
+ catch {
522
+ return {};
523
+ }
524
+ }
525
+ /**
526
+ * Save updates to global config (merges with existing)
527
+ */
528
+ export function saveGlobalConfig(updates) {
529
+ const configPath = getGlobalConfigPath();
530
+ const configDir = path.dirname(configPath);
531
+ if (!fs.existsSync(configDir)) {
532
+ fs.mkdirSync(configDir, { recursive: true });
533
+ }
534
+ const existing = loadGlobalConfig();
535
+ const merged = { ...existing, ...updates };
536
+ fs.writeFileSync(configPath, JSON.stringify(merged, null, 2), 'utf-8');
537
+ }
538
+ /**
539
+ * Check if onboarding has been completed globally
540
+ */
541
+ export function isOnboardingCompleted() {
542
+ const config = loadGlobalConfig();
543
+ return config.onboarding_completed === true;
544
+ }
545
+ /**
546
+ * Mark onboarding as completed with mode and timestamp
547
+ */
548
+ export function markOnboardingCompleted(mode) {
549
+ saveGlobalConfig({
550
+ onboarding_completed: true,
551
+ onboarding_completed_at: new Date().toISOString(),
552
+ onboarding_mode: mode,
553
+ });
554
+ }
555
+ /**
556
+ * Get status of all succ daemons (watch, analyze)
557
+ */
558
+ export async function getDaemonStatuses() {
559
+ const succDir = getSuccDir();
560
+ const statuses = [];
561
+ const tmpDir = path.join(succDir, '.tmp');
562
+ // Daemon API server (PID in .tmp/)
563
+ const daemonPidFile = path.join(tmpDir, 'daemon.pid');
564
+ const daemonPortFile = path.join(tmpDir, 'daemon.port');
565
+ const daemonLogFile = path.join(succDir, 'daemon.log');
566
+ let daemonRunning = false;
567
+ let daemonPort = null;
568
+ if (fs.existsSync(daemonPidFile)) {
569
+ const pid = parseInt(fs.readFileSync(daemonPidFile, 'utf-8').trim(), 10);
570
+ daemonRunning = isProcessRunning(pid);
571
+ if (fs.existsSync(daemonPortFile)) {
572
+ daemonPort = parseInt(fs.readFileSync(daemonPortFile, 'utf-8').trim(), 10);
573
+ }
574
+ statuses.push({
575
+ name: 'daemon',
576
+ running: daemonRunning,
577
+ pid,
578
+ pidFile: daemonPidFile,
579
+ logFile: fs.existsSync(daemonLogFile) ? daemonLogFile : undefined,
580
+ });
581
+ }
582
+ else {
583
+ statuses.push({ name: 'daemon', running: false });
584
+ }
585
+ // Watch & Analyze are services inside the daemon — query via HTTP
586
+ let services = null;
587
+ if (daemonRunning && daemonPort) {
588
+ try {
589
+ const http = await import('http');
590
+ services = await new Promise((resolve) => {
591
+ const req = http.get(`http://127.0.0.1:${daemonPort}/api/services`, { timeout: 2000 }, (res) => {
592
+ let data = '';
593
+ res.on('data', (chunk) => {
594
+ data += chunk;
595
+ });
596
+ res.on('end', () => {
597
+ try {
598
+ resolve(JSON.parse(data));
599
+ }
600
+ catch {
601
+ resolve(null);
602
+ }
603
+ });
604
+ });
605
+ req.on('error', () => resolve(null));
606
+ req.on('timeout', () => {
607
+ req.destroy();
608
+ resolve(null);
609
+ });
610
+ });
611
+ }
612
+ catch {
613
+ /* daemon unreachable */
614
+ }
615
+ }
616
+ statuses.push({
617
+ name: 'watch',
618
+ running: services?.watch?.active ?? false,
619
+ });
620
+ statuses.push({
621
+ name: 'analyze',
622
+ running: services?.analyze?.active ?? services?.analyze?.running ?? false,
623
+ });
624
+ // Idle watcher (from hooks)
625
+ const watcherActiveFile = path.join(tmpDir, 'watcher-active.txt');
626
+ if (fs.existsSync(watcherActiveFile)) {
627
+ statuses.push({
628
+ name: 'idle-watcher',
629
+ running: true,
630
+ pidFile: watcherActiveFile,
631
+ });
632
+ }
633
+ else {
634
+ statuses.push({ name: 'idle-watcher', running: false });
635
+ }
636
+ return statuses;
637
+ }
638
+ /**
639
+ * Get retrieval config with defaults.
640
+ * Used by hybrid search and recall tools.
641
+ */
642
+ export function getRetrievalConfig() {
643
+ const config = getConfig();
644
+ const userConfig = config.retrieval || {};
645
+ return {
646
+ bm25_alpha: userConfig.bm25_alpha ?? 0.4,
647
+ default_top_k: userConfig.default_top_k ?? 10,
648
+ temporal_auto_skip: userConfig.temporal_auto_skip ?? true,
649
+ preference_quality_boost: userConfig.preference_quality_boost ?? true,
650
+ quality_boost_enabled: userConfig.quality_boost_enabled ?? false,
651
+ quality_boost_weight: userConfig.quality_boost_weight ?? 0.15,
652
+ mmr_enabled: userConfig.mmr_enabled ?? false,
653
+ mmr_lambda: userConfig.mmr_lambda ?? 0.8,
654
+ query_expansion_enabled: userConfig.query_expansion_enabled ?? false,
655
+ query_expansion_mode: userConfig.query_expansion_mode ?? (getConfig().llm?.type || 'api'),
656
+ };
657
+ }
658
+ /**
659
+ * Get observer config with defaults.
660
+ * Used by daemon mid-conversation extraction.
661
+ */
662
+ export function getObserverConfig() {
663
+ const config = getConfig();
664
+ const userConfig = config.observer || {};
665
+ return {
666
+ enabled: userConfig.enabled ?? true,
667
+ min_tokens: userConfig.min_tokens ?? 15000,
668
+ max_minutes: userConfig.max_minutes ?? 10,
669
+ };
670
+ }
671
+ /**
672
+ * Get error reporting config with defaults.
673
+ * Used by fault-logger for local file, webhook, and sentry channels.
674
+ */
675
+ export function getErrorReportingConfig() {
676
+ const config = getConfig();
677
+ const user = config.error_reporting || {};
678
+ return {
679
+ enabled: user.enabled ?? DEFAULT_ERROR_REPORTING_CONFIG.enabled,
680
+ level: user.level ?? DEFAULT_ERROR_REPORTING_CONFIG.level,
681
+ max_file_size_mb: user.max_file_size_mb ?? DEFAULT_ERROR_REPORTING_CONFIG.max_file_size_mb,
682
+ webhook_url: user.webhook_url ?? DEFAULT_ERROR_REPORTING_CONFIG.webhook_url,
683
+ webhook_headers: user.webhook_headers ?? DEFAULT_ERROR_REPORTING_CONFIG.webhook_headers,
684
+ sentry_dsn: user.sentry_dsn ?? DEFAULT_ERROR_REPORTING_CONFIG.sentry_dsn,
685
+ sentry_environment: user.sentry_environment ?? DEFAULT_ERROR_REPORTING_CONFIG.sentry_environment,
686
+ sentry_sample_rate: user.sentry_sample_rate ?? DEFAULT_ERROR_REPORTING_CONFIG.sentry_sample_rate,
687
+ };
688
+ }
689
+ //# sourceMappingURL=config.js.map