specmem-hardwicksoftware 3.5.99

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 (1473) hide show
  1. package/CHANGELOG.md +299 -0
  2. package/LICENSE.md +6406 -0
  3. package/README.md +539 -0
  4. package/bin/AegisTheme.cjs +1022 -0
  5. package/bin/AnsiRenderer.cjs +1055 -0
  6. package/bin/BoxRenderer.cjs +605 -0
  7. package/bin/ClaudeLiveScreen.cjs +1299 -0
  8. package/bin/DashboardModules.cjs +733 -0
  9. package/bin/LiveScreenCapture.cjs +1012 -0
  10. package/bin/MemoryBrowserScreen.cjs +1595 -0
  11. package/bin/TabManager.cjs +1414 -0
  12. package/bin/checkAgentStatus-fix.patch +30 -0
  13. package/bin/mcp-socket-client.cjs +462 -0
  14. package/bin/screen-utils.cjs +106 -0
  15. package/bin/specmem-autoclaude.cjs +663 -0
  16. package/bin/specmem-cleanup.cjs +421 -0
  17. package/bin/specmem-cli.cjs +794 -0
  18. package/bin/specmem-console-teamcomms-class.cjs +428 -0
  19. package/bin/specmem-console.cjs +8104 -0
  20. package/bin/specmem-statusbar.cjs +530 -0
  21. package/bootstrap.cjs +5065 -0
  22. package/claude-hooks/agent-chooser-hook.js +179 -0
  23. package/claude-hooks/agent-chooser-inject.js +121 -0
  24. package/claude-hooks/agent-loading-hook.js +990 -0
  25. package/claude-hooks/agent-output-fader.cjs +542 -0
  26. package/claude-hooks/agent-output-interceptor.js +193 -0
  27. package/claude-hooks/agent-type-matcher.js +419 -0
  28. package/claude-hooks/auto-bypass.py +74 -0
  29. package/claude-hooks/background-completion-silencer.js +134 -0
  30. package/claude-hooks/bash-auto-background.js +182 -0
  31. package/claude-hooks/build-cedict-dictionary.mjs +167 -0
  32. package/claude-hooks/bullshit-radar.cjs +323 -0
  33. package/claude-hooks/cedict-codes.json +270 -0
  34. package/claude-hooks/cedict-extracted.json +22632 -0
  35. package/claude-hooks/claude-watchdog.sh +401 -0
  36. package/claude-hooks/context-dedup.cjs +144 -0
  37. package/claude-hooks/context-yeeter.cjs +244 -0
  38. package/claude-hooks/debug-suffix.cjs +15 -0
  39. package/claude-hooks/debug2.cjs +7 -0
  40. package/claude-hooks/drilldown-enforcer.js +242 -0
  41. package/claude-hooks/english-morphology-standalone.cjs +149 -0
  42. package/claude-hooks/english-morphology.cjs +152 -0
  43. package/claude-hooks/extract-translations.mjs +193 -0
  44. package/claude-hooks/file-claim-enforcer.cjs +293 -0
  45. package/claude-hooks/file-claim-enforcer.js +293 -0
  46. package/claude-hooks/find-collisions.cjs +39 -0
  47. package/claude-hooks/fix-abbreviations.cjs +60 -0
  48. package/claude-hooks/fix-collisions.cjs +60 -0
  49. package/claude-hooks/fix-decompressor.cjs +79 -0
  50. package/claude-hooks/fix-suffixes.cjs +66 -0
  51. package/claude-hooks/grammar-engine.cjs +159 -0
  52. package/claude-hooks/input-aware-improver.js +231 -0
  53. package/claude-hooks/is-agent.cjs +64 -0
  54. package/claude-hooks/mega-test.cjs +213 -0
  55. package/claude-hooks/merge-dictionaries.mjs +207 -0
  56. package/claude-hooks/merged-codes.cjs +22675 -0
  57. package/claude-hooks/merged-codes.json +22676 -0
  58. package/claude-hooks/output-cleaner.cjs +388 -0
  59. package/claude-hooks/post-write-memory-hook.cjs +430 -0
  60. package/claude-hooks/quick-test.cjs +24 -0
  61. package/claude-hooks/quick-test2.cjs +24 -0
  62. package/claude-hooks/remove-bad-codes.cjs +23 -0
  63. package/claude-hooks/search-reminder-hook.js +90 -0
  64. package/claude-hooks/semantic-test.cjs +93 -0
  65. package/claude-hooks/settings.json +445 -0
  66. package/claude-hooks/smart-context-hook.cjs +547 -0
  67. package/claude-hooks/smart-context-hook.js +539 -0
  68. package/claude-hooks/smart-search-interceptor.js +364 -0
  69. package/claude-hooks/socket-connect-helper.cjs +235 -0
  70. package/claude-hooks/specmem/sockets/session-start.lock +1 -0
  71. package/claude-hooks/specmem-context-hook.cjs +357 -0
  72. package/claude-hooks/specmem-context-hook.js +357 -0
  73. package/claude-hooks/specmem-drilldown-hook.cjs +480 -0
  74. package/claude-hooks/specmem-drilldown-hook.js +480 -0
  75. package/claude-hooks/specmem-drilldown-setter.js +210 -0
  76. package/claude-hooks/specmem-paths.cjs +213 -0
  77. package/claude-hooks/specmem-precompact.js +183 -0
  78. package/claude-hooks/specmem-session-init.sh +33 -0
  79. package/claude-hooks/specmem-session-start.cjs +498 -0
  80. package/claude-hooks/specmem-stop-hook.cjs +73 -0
  81. package/claude-hooks/specmem-stop-hook.js +5 -0
  82. package/claude-hooks/specmem-team-comms.cjs +434 -0
  83. package/claude-hooks/specmem-team-member-inject.js +271 -0
  84. package/claude-hooks/specmem-unified-hook.py +670 -0
  85. package/claude-hooks/subagent-loading-hook.js +194 -0
  86. package/claude-hooks/sysprompt-squisher.cjs +167 -0
  87. package/claude-hooks/task-progress-hook.js +204 -0
  88. package/claude-hooks/team-comms-enforcer.cjs +585 -0
  89. package/claude-hooks/test-accuracy.cjs +27 -0
  90. package/claude-hooks/test-big.cjs +28 -0
  91. package/claude-hooks/test-inflectors.cjs +39 -0
  92. package/claude-hooks/test-pluralize.cjs +37 -0
  93. package/claude-hooks/test-quick.cjs +8 -0
  94. package/claude-hooks/test-wink.cjs +20 -0
  95. package/claude-hooks/token-compressor.cjs +940 -0
  96. package/claude-hooks/use-code-pointers.cjs +279 -0
  97. package/commands/COMMAND_TOOL_MAP.md +299 -0
  98. package/commands/specmem-agents.md +412 -0
  99. package/commands/specmem-autoclaude.md +295 -0
  100. package/commands/specmem-changes.md +247 -0
  101. package/commands/specmem-code.md +103 -0
  102. package/commands/specmem-configteammembercomms.md +322 -0
  103. package/commands/specmem-drilldown.md +208 -0
  104. package/commands/specmem-find.md +195 -0
  105. package/commands/specmem-getdashboard.md +243 -0
  106. package/commands/specmem-hooks.md +219 -0
  107. package/commands/specmem-pointers.md +149 -0
  108. package/commands/specmem-progress.md +287 -0
  109. package/commands/specmem-remember.md +123 -0
  110. package/commands/specmem-service.md +349 -0
  111. package/commands/specmem-stats.md +189 -0
  112. package/commands/specmem-team-member.md +409 -0
  113. package/commands/specmem-webdev.md +583 -0
  114. package/commands/specmem.md +363 -0
  115. package/dist/autoStart/index.d.ts +214 -0
  116. package/dist/autoStart/index.d.ts.map +1 -0
  117. package/dist/autoStart/index.js +883 -0
  118. package/dist/autoStart/index.js.map +1 -0
  119. package/dist/claude-sessions/contextRestorationParser.d.ts +74 -0
  120. package/dist/claude-sessions/contextRestorationParser.d.ts.map +1 -0
  121. package/dist/claude-sessions/contextRestorationParser.js +570 -0
  122. package/dist/claude-sessions/contextRestorationParser.js.map +1 -0
  123. package/dist/claude-sessions/index.d.ts +13 -0
  124. package/dist/claude-sessions/index.d.ts.map +1 -0
  125. package/dist/claude-sessions/index.js +11 -0
  126. package/dist/claude-sessions/index.js.map +1 -0
  127. package/dist/claude-sessions/sessionIntegration.d.ts +48 -0
  128. package/dist/claude-sessions/sessionIntegration.d.ts.map +1 -0
  129. package/dist/claude-sessions/sessionIntegration.js +146 -0
  130. package/dist/claude-sessions/sessionIntegration.js.map +1 -0
  131. package/dist/claude-sessions/sessionParser.d.ts +293 -0
  132. package/dist/claude-sessions/sessionParser.d.ts.map +1 -0
  133. package/dist/claude-sessions/sessionParser.js +1028 -0
  134. package/dist/claude-sessions/sessionParser.js.map +1 -0
  135. package/dist/claude-sessions/sessionWatcher.d.ts +139 -0
  136. package/dist/claude-sessions/sessionWatcher.d.ts.map +1 -0
  137. package/dist/claude-sessions/sessionWatcher.js +722 -0
  138. package/dist/claude-sessions/sessionWatcher.js.map +1 -0
  139. package/dist/cli/deploy-to-claude.d.ts +56 -0
  140. package/dist/cli/deploy-to-claude.d.ts.map +1 -0
  141. package/dist/cli/deploy-to-claude.js +576 -0
  142. package/dist/cli/deploy-to-claude.js.map +1 -0
  143. package/dist/code-explanations/explainCode.d.ts +86 -0
  144. package/dist/code-explanations/explainCode.d.ts.map +1 -0
  145. package/dist/code-explanations/explainCode.js +286 -0
  146. package/dist/code-explanations/explainCode.js.map +1 -0
  147. package/dist/code-explanations/feedback.d.ts +87 -0
  148. package/dist/code-explanations/feedback.d.ts.map +1 -0
  149. package/dist/code-explanations/feedback.js +212 -0
  150. package/dist/code-explanations/feedback.js.map +1 -0
  151. package/dist/code-explanations/getRelatedCode.d.ts +80 -0
  152. package/dist/code-explanations/getRelatedCode.d.ts.map +1 -0
  153. package/dist/code-explanations/getRelatedCode.js +262 -0
  154. package/dist/code-explanations/getRelatedCode.js.map +1 -0
  155. package/dist/code-explanations/index.d.ts +284 -0
  156. package/dist/code-explanations/index.d.ts.map +1 -0
  157. package/dist/code-explanations/index.js +249 -0
  158. package/dist/code-explanations/index.js.map +1 -0
  159. package/dist/code-explanations/linkCodeToPrompt.d.ts +79 -0
  160. package/dist/code-explanations/linkCodeToPrompt.d.ts.map +1 -0
  161. package/dist/code-explanations/linkCodeToPrompt.js +213 -0
  162. package/dist/code-explanations/linkCodeToPrompt.js.map +1 -0
  163. package/dist/code-explanations/recallExplanation.d.ts +88 -0
  164. package/dist/code-explanations/recallExplanation.d.ts.map +1 -0
  165. package/dist/code-explanations/recallExplanation.js +218 -0
  166. package/dist/code-explanations/recallExplanation.js.map +1 -0
  167. package/dist/code-explanations/schema.d.ts +32 -0
  168. package/dist/code-explanations/schema.d.ts.map +1 -0
  169. package/dist/code-explanations/schema.js +221 -0
  170. package/dist/code-explanations/schema.js.map +1 -0
  171. package/dist/code-explanations/semanticSearch.d.ts +75 -0
  172. package/dist/code-explanations/semanticSearch.d.ts.map +1 -0
  173. package/dist/code-explanations/semanticSearch.js +203 -0
  174. package/dist/code-explanations/semanticSearch.js.map +1 -0
  175. package/dist/code-explanations/types.d.ts +328 -0
  176. package/dist/code-explanations/types.d.ts.map +1 -0
  177. package/dist/code-explanations/types.js +122 -0
  178. package/dist/code-explanations/types.js.map +1 -0
  179. package/dist/codebase/codeAnalyzer.d.ts +272 -0
  180. package/dist/codebase/codeAnalyzer.d.ts.map +1 -0
  181. package/dist/codebase/codeAnalyzer.js +1353 -0
  182. package/dist/codebase/codeAnalyzer.js.map +1 -0
  183. package/dist/codebase/codebaseIndexer.d.ts +360 -0
  184. package/dist/codebase/codebaseIndexer.d.ts.map +1 -0
  185. package/dist/codebase/codebaseIndexer.js +1735 -0
  186. package/dist/codebase/codebaseIndexer.js.map +1 -0
  187. package/dist/codebase/codebaseTools.d.ts +853 -0
  188. package/dist/codebase/codebaseTools.d.ts.map +1 -0
  189. package/dist/codebase/codebaseTools.js +1279 -0
  190. package/dist/codebase/codebaseTools.js.map +1 -0
  191. package/dist/codebase/exclusions.d.ts +111 -0
  192. package/dist/codebase/exclusions.d.ts.map +1 -0
  193. package/dist/codebase/exclusions.js +771 -0
  194. package/dist/codebase/exclusions.js.map +1 -0
  195. package/dist/codebase/fileWatcher.d.ts +135 -0
  196. package/dist/codebase/fileWatcher.d.ts.map +1 -0
  197. package/dist/codebase/fileWatcher.js +309 -0
  198. package/dist/codebase/fileWatcher.js.map +1 -0
  199. package/dist/codebase/index.d.ts +33 -0
  200. package/dist/codebase/index.d.ts.map +1 -0
  201. package/dist/codebase/index.js +77 -0
  202. package/dist/codebase/index.js.map +1 -0
  203. package/dist/codebase/ingestion.d.ts +177 -0
  204. package/dist/codebase/ingestion.d.ts.map +1 -0
  205. package/dist/codebase/ingestion.js +690 -0
  206. package/dist/codebase/ingestion.js.map +1 -0
  207. package/dist/codebase/languageDetection.d.ts +75 -0
  208. package/dist/codebase/languageDetection.d.ts.map +1 -0
  209. package/dist/codebase/languageDetection.js +768 -0
  210. package/dist/codebase/languageDetection.js.map +1 -0
  211. package/dist/commands/codebaseCommands.d.ts +101 -0
  212. package/dist/commands/codebaseCommands.d.ts.map +1 -0
  213. package/dist/commands/codebaseCommands.js +911 -0
  214. package/dist/commands/codebaseCommands.js.map +1 -0
  215. package/dist/commands/commandHandler.d.ts +126 -0
  216. package/dist/commands/commandHandler.d.ts.map +1 -0
  217. package/dist/commands/commandHandler.js +296 -0
  218. package/dist/commands/commandHandler.js.map +1 -0
  219. package/dist/commands/commandLoader.d.ts +103 -0
  220. package/dist/commands/commandLoader.d.ts.map +1 -0
  221. package/dist/commands/commandLoader.js +223 -0
  222. package/dist/commands/commandLoader.js.map +1 -0
  223. package/dist/commands/contextCommands.d.ts +83 -0
  224. package/dist/commands/contextCommands.d.ts.map +1 -0
  225. package/dist/commands/contextCommands.js +512 -0
  226. package/dist/commands/contextCommands.js.map +1 -0
  227. package/dist/commands/index.d.ts +24 -0
  228. package/dist/commands/index.d.ts.map +1 -0
  229. package/dist/commands/index.js +28 -0
  230. package/dist/commands/index.js.map +1 -0
  231. package/dist/commands/mcpResources.d.ts +50 -0
  232. package/dist/commands/mcpResources.d.ts.map +1 -0
  233. package/dist/commands/mcpResources.js +372 -0
  234. package/dist/commands/mcpResources.js.map +1 -0
  235. package/dist/commands/memoryCommands.d.ts +74 -0
  236. package/dist/commands/memoryCommands.d.ts.map +1 -0
  237. package/dist/commands/memoryCommands.js +609 -0
  238. package/dist/commands/memoryCommands.js.map +1 -0
  239. package/dist/commands/promptCommands.d.ts +91 -0
  240. package/dist/commands/promptCommands.d.ts.map +1 -0
  241. package/dist/commands/promptCommands.js +801 -0
  242. package/dist/commands/promptCommands.js.map +1 -0
  243. package/dist/commands/teamMemberCommands.d.ts +21 -0
  244. package/dist/commands/teamMemberCommands.d.ts.map +1 -0
  245. package/dist/commands/teamMemberCommands.js +137 -0
  246. package/dist/commands/teamMemberCommands.js.map +1 -0
  247. package/dist/comms/fileCommsTransport.d.ts +91 -0
  248. package/dist/comms/fileCommsTransport.d.ts.map +1 -0
  249. package/dist/comms/fileCommsTransport.js +244 -0
  250. package/dist/comms/fileCommsTransport.js.map +1 -0
  251. package/dist/comms/index.d.ts +7 -0
  252. package/dist/comms/index.d.ts.map +1 -0
  253. package/dist/comms/index.js +7 -0
  254. package/dist/comms/index.js.map +1 -0
  255. package/dist/config/apiKeyDetection.d.ts +41 -0
  256. package/dist/config/apiKeyDetection.d.ts.map +1 -0
  257. package/dist/config/apiKeyDetection.js +211 -0
  258. package/dist/config/apiKeyDetection.js.map +1 -0
  259. package/dist/config/autoConfig.d.ts +188 -0
  260. package/dist/config/autoConfig.d.ts.map +1 -0
  261. package/dist/config/autoConfig.js +850 -0
  262. package/dist/config/autoConfig.js.map +1 -0
  263. package/dist/config/configSync.d.ts +119 -0
  264. package/dist/config/configSync.d.ts.map +1 -0
  265. package/dist/config/configSync.js +878 -0
  266. package/dist/config/configSync.js.map +1 -0
  267. package/dist/config/embeddingTimeouts.d.ts +145 -0
  268. package/dist/config/embeddingTimeouts.d.ts.map +1 -0
  269. package/dist/config/embeddingTimeouts.js +255 -0
  270. package/dist/config/embeddingTimeouts.js.map +1 -0
  271. package/dist/config/index.d.ts +5 -0
  272. package/dist/config/index.d.ts.map +1 -0
  273. package/dist/config/index.js +7 -0
  274. package/dist/config/index.js.map +1 -0
  275. package/dist/config/languageConfig.d.ts +68 -0
  276. package/dist/config/languageConfig.d.ts.map +1 -0
  277. package/dist/config/languageConfig.js +473 -0
  278. package/dist/config/languageConfig.js.map +1 -0
  279. package/dist/config/password.d.ts +145 -0
  280. package/dist/config/password.d.ts.map +1 -0
  281. package/dist/config/password.js +428 -0
  282. package/dist/config/password.js.map +1 -0
  283. package/dist/config.d.ts +338 -0
  284. package/dist/config.d.ts.map +1 -0
  285. package/dist/config.js +1177 -0
  286. package/dist/config.js.map +1 -0
  287. package/dist/consolidation.d.ts +44 -0
  288. package/dist/consolidation.d.ts.map +1 -0
  289. package/dist/consolidation.js +447 -0
  290. package/dist/consolidation.js.map +1 -0
  291. package/dist/constants.d.ts +371 -0
  292. package/dist/constants.d.ts.map +1 -0
  293. package/dist/constants.js +552 -0
  294. package/dist/constants.js.map +1 -0
  295. package/dist/coordination/TeamMemberRegistry.d.ts +192 -0
  296. package/dist/coordination/TeamMemberRegistry.d.ts.map +1 -0
  297. package/dist/coordination/TeamMemberRegistry.js +415 -0
  298. package/dist/coordination/TeamMemberRegistry.js.map +1 -0
  299. package/dist/coordination/events.d.ts +369 -0
  300. package/dist/coordination/events.d.ts.map +1 -0
  301. package/dist/coordination/events.js +232 -0
  302. package/dist/coordination/events.js.map +1 -0
  303. package/dist/coordination/handlers.d.ts +116 -0
  304. package/dist/coordination/handlers.d.ts.map +1 -0
  305. package/dist/coordination/handlers.js +400 -0
  306. package/dist/coordination/handlers.js.map +1 -0
  307. package/dist/coordination/index.d.ts +14 -0
  308. package/dist/coordination/index.d.ts.map +1 -0
  309. package/dist/coordination/index.js +31 -0
  310. package/dist/coordination/index.js.map +1 -0
  311. package/dist/coordination/integration.d.ts +260 -0
  312. package/dist/coordination/integration.d.ts.map +1 -0
  313. package/dist/coordination/integration.js +472 -0
  314. package/dist/coordination/integration.js.map +1 -0
  315. package/dist/coordination/server.d.ts +266 -0
  316. package/dist/coordination/server.d.ts.map +1 -0
  317. package/dist/coordination/server.js +995 -0
  318. package/dist/coordination/server.js.map +1 -0
  319. package/dist/coordination/serviceProvider.d.ts +70 -0
  320. package/dist/coordination/serviceProvider.d.ts.map +1 -0
  321. package/dist/coordination/serviceProvider.js +273 -0
  322. package/dist/coordination/serviceProvider.js.map +1 -0
  323. package/dist/dashboard/api/claudeControl.d.ts +44 -0
  324. package/dist/dashboard/api/claudeControl.d.ts.map +1 -0
  325. package/dist/dashboard/api/claudeControl.js +650 -0
  326. package/dist/dashboard/api/claudeControl.js.map +1 -0
  327. package/dist/dashboard/api/claudeHistory.d.ts +4 -0
  328. package/dist/dashboard/api/claudeHistory.d.ts.map +1 -0
  329. package/dist/dashboard/api/claudeHistory.js +319 -0
  330. package/dist/dashboard/api/claudeHistory.js.map +1 -0
  331. package/dist/dashboard/api/dataExport.d.ts +23 -0
  332. package/dist/dashboard/api/dataExport.d.ts.map +1 -0
  333. package/dist/dashboard/api/dataExport.js +509 -0
  334. package/dist/dashboard/api/dataExport.js.map +1 -0
  335. package/dist/dashboard/api/fileManager.d.ts +39 -0
  336. package/dist/dashboard/api/fileManager.d.ts.map +1 -0
  337. package/dist/dashboard/api/fileManager.js +814 -0
  338. package/dist/dashboard/api/fileManager.js.map +1 -0
  339. package/dist/dashboard/api/hooks.d.ts +16 -0
  340. package/dist/dashboard/api/hooks.d.ts.map +1 -0
  341. package/dist/dashboard/api/hooks.js +342 -0
  342. package/dist/dashboard/api/hooks.js.map +1 -0
  343. package/dist/dashboard/api/hotReload.d.ts +14 -0
  344. package/dist/dashboard/api/hotReload.d.ts.map +1 -0
  345. package/dist/dashboard/api/hotReload.js +219 -0
  346. package/dist/dashboard/api/hotReload.js.map +1 -0
  347. package/dist/dashboard/api/liveSessionStream.d.ts +19 -0
  348. package/dist/dashboard/api/liveSessionStream.d.ts.map +1 -0
  349. package/dist/dashboard/api/liveSessionStream.js +430 -0
  350. package/dist/dashboard/api/liveSessionStream.js.map +1 -0
  351. package/dist/dashboard/api/memoryRecall.d.ts +20 -0
  352. package/dist/dashboard/api/memoryRecall.d.ts.map +1 -0
  353. package/dist/dashboard/api/memoryRecall.js +524 -0
  354. package/dist/dashboard/api/memoryRecall.js.map +1 -0
  355. package/dist/dashboard/api/promptSend.d.ts +33 -0
  356. package/dist/dashboard/api/promptSend.d.ts.map +1 -0
  357. package/dist/dashboard/api/promptSend.js +544 -0
  358. package/dist/dashboard/api/promptSend.js.map +1 -0
  359. package/dist/dashboard/api/settings.d.ts +10 -0
  360. package/dist/dashboard/api/settings.d.ts.map +1 -0
  361. package/dist/dashboard/api/settings.js +656 -0
  362. package/dist/dashboard/api/settings.js.map +1 -0
  363. package/dist/dashboard/api/setup.d.ts +21 -0
  364. package/dist/dashboard/api/setup.d.ts.map +1 -0
  365. package/dist/dashboard/api/setup.js +663 -0
  366. package/dist/dashboard/api/setup.js.map +1 -0
  367. package/dist/dashboard/api/specmemTools.d.ts +14 -0
  368. package/dist/dashboard/api/specmemTools.d.ts.map +1 -0
  369. package/dist/dashboard/api/specmemTools.js +1059 -0
  370. package/dist/dashboard/api/specmemTools.js.map +1 -0
  371. package/dist/dashboard/api/taskTeamMembers.d.ts +8 -0
  372. package/dist/dashboard/api/taskTeamMembers.d.ts.map +1 -0
  373. package/dist/dashboard/api/taskTeamMembers.js +136 -0
  374. package/dist/dashboard/api/taskTeamMembers.js.map +1 -0
  375. package/dist/dashboard/api/teamMemberDeploy.d.ts +15 -0
  376. package/dist/dashboard/api/teamMemberDeploy.d.ts.map +1 -0
  377. package/dist/dashboard/api/teamMemberDeploy.js +421 -0
  378. package/dist/dashboard/api/teamMemberDeploy.js.map +1 -0
  379. package/dist/dashboard/api/teamMemberHistory.d.ts +38 -0
  380. package/dist/dashboard/api/teamMemberHistory.d.ts.map +1 -0
  381. package/dist/dashboard/api/teamMemberHistory.js +583 -0
  382. package/dist/dashboard/api/teamMemberHistory.js.map +1 -0
  383. package/dist/dashboard/api/terminal.d.ts +12 -0
  384. package/dist/dashboard/api/terminal.d.ts.map +1 -0
  385. package/dist/dashboard/api/terminal.js +344 -0
  386. package/dist/dashboard/api/terminal.js.map +1 -0
  387. package/dist/dashboard/api/terminalInject.d.ts +17 -0
  388. package/dist/dashboard/api/terminalInject.d.ts.map +1 -0
  389. package/dist/dashboard/api/terminalInject.js +322 -0
  390. package/dist/dashboard/api/terminalInject.js.map +1 -0
  391. package/dist/dashboard/api/terminalStream.d.ts +12 -0
  392. package/dist/dashboard/api/terminalStream.d.ts.map +1 -0
  393. package/dist/dashboard/api/terminalStream.js +482 -0
  394. package/dist/dashboard/api/terminalStream.js.map +1 -0
  395. package/dist/dashboard/index.d.ts +7 -0
  396. package/dist/dashboard/index.d.ts.map +1 -0
  397. package/dist/dashboard/index.js +7 -0
  398. package/dist/dashboard/index.js.map +1 -0
  399. package/dist/dashboard/ptyStreamer.d.ts +173 -0
  400. package/dist/dashboard/ptyStreamer.d.ts.map +1 -0
  401. package/dist/dashboard/ptyStreamer.js +661 -0
  402. package/dist/dashboard/ptyStreamer.js.map +1 -0
  403. package/dist/dashboard/public/DASHBOARD-README.md +378 -0
  404. package/dist/dashboard/public/INTEGRATION-GUIDE.md +395 -0
  405. package/dist/dashboard/public/codebase-config.html +1247 -0
  406. package/dist/dashboard/public/dashboard-v2.html +1942 -0
  407. package/dist/dashboard/public/data-export.html +819 -0
  408. package/dist/dashboard/public/example-page.html +164 -0
  409. package/dist/dashboard/public/file-explorer.html +1023 -0
  410. package/dist/dashboard/public/hooks.html +1103 -0
  411. package/dist/dashboard/public/index-improvements.css +499 -0
  412. package/dist/dashboard/public/index.html +5534 -0
  413. package/dist/dashboard/public/memory-controls.html +1959 -0
  414. package/dist/dashboard/public/memory-recall.html +1495 -0
  415. package/dist/dashboard/public/previews/skeleton-memory-graph.html +361 -0
  416. package/dist/dashboard/public/previews/skeleton-memory-list.html +366 -0
  417. package/dist/dashboard/public/previews/skeleton-search-results.html +609 -0
  418. package/dist/dashboard/public/previews/skeleton-stats-dashboard.html +556 -0
  419. package/dist/dashboard/public/prompt-console.html +2763 -0
  420. package/dist/dashboard/public/react-dist/assets/index-CkjobT5B.js +871 -0
  421. package/dist/dashboard/public/react-dist/assets/index-iRclxMst.css +1 -0
  422. package/dist/dashboard/public/react-dist/index.html +16 -0
  423. package/dist/dashboard/public/shared-header.js +325 -0
  424. package/dist/dashboard/public/shared-language-selector.js +626 -0
  425. package/dist/dashboard/public/shared-logger.js +66 -0
  426. package/dist/dashboard/public/shared-nav.js +325 -0
  427. package/dist/dashboard/public/shared-theme-blue.css +331 -0
  428. package/dist/dashboard/public/shared-theme.css +813 -0
  429. package/dist/dashboard/public/shared-toast.js +415 -0
  430. package/dist/dashboard/public/team-member-history.html +1291 -0
  431. package/dist/dashboard/public/team-member-spy.html +1199 -0
  432. package/dist/dashboard/public/team-members.html +3756 -0
  433. package/dist/dashboard/public/terminal-output.html +1013 -0
  434. package/dist/dashboard/public/terminal.html +372 -0
  435. package/dist/dashboard/sessionStore.d.ts +86 -0
  436. package/dist/dashboard/sessionStore.d.ts.map +1 -0
  437. package/dist/dashboard/sessionStore.js +262 -0
  438. package/dist/dashboard/sessionStore.js.map +1 -0
  439. package/dist/dashboard/standalone.d.ts +27 -0
  440. package/dist/dashboard/standalone.d.ts.map +1 -0
  441. package/dist/dashboard/standalone.js +380 -0
  442. package/dist/dashboard/standalone.js.map +1 -0
  443. package/dist/dashboard/webServer.d.ts +390 -0
  444. package/dist/dashboard/webServer.d.ts.map +1 -0
  445. package/dist/dashboard/webServer.js +4297 -0
  446. package/dist/dashboard/webServer.js.map +1 -0
  447. package/dist/dashboard/websocket/teamMemberStream.d.ts +87 -0
  448. package/dist/dashboard/websocket/teamMemberStream.d.ts.map +1 -0
  449. package/dist/dashboard/websocket/teamMemberStream.js +366 -0
  450. package/dist/dashboard/websocket/teamMemberStream.js.map +1 -0
  451. package/dist/dashboard/websocket/terminalStream.d.ts +130 -0
  452. package/dist/dashboard/websocket/terminalStream.d.ts.map +1 -0
  453. package/dist/dashboard/websocket/terminalStream.js +456 -0
  454. package/dist/dashboard/websocket/terminalStream.js.map +1 -0
  455. package/dist/database/embeddedPostgres.d.ts +187 -0
  456. package/dist/database/embeddedPostgres.d.ts.map +1 -0
  457. package/dist/database/embeddedPostgres.js +763 -0
  458. package/dist/database/embeddedPostgres.js.map +1 -0
  459. package/dist/database/index.d.ts +12 -0
  460. package/dist/database/index.d.ts.map +1 -0
  461. package/dist/database/index.js +20 -0
  462. package/dist/database/index.js.map +1 -0
  463. package/dist/database/initEmbeddedPostgres.d.ts +124 -0
  464. package/dist/database/initEmbeddedPostgres.d.ts.map +1 -0
  465. package/dist/database/initEmbeddedPostgres.js +855 -0
  466. package/dist/database/initEmbeddedPostgres.js.map +1 -0
  467. package/dist/database.d.ts +256 -0
  468. package/dist/database.d.ts.map +1 -0
  469. package/dist/database.js +1209 -0
  470. package/dist/database.js.map +1 -0
  471. package/dist/db/apiDataManager.d.ts +334 -0
  472. package/dist/db/apiDataManager.d.ts.map +1 -0
  473. package/dist/db/apiDataManager.js +631 -0
  474. package/dist/db/apiDataManager.js.map +1 -0
  475. package/dist/db/batchOperations.d.ts +154 -0
  476. package/dist/db/batchOperations.d.ts.map +1 -0
  477. package/dist/db/batchOperations.js +564 -0
  478. package/dist/db/batchOperations.js.map +1 -0
  479. package/dist/db/bigBrainMigrations.d.ts +48 -0
  480. package/dist/db/bigBrainMigrations.d.ts.map +1 -0
  481. package/dist/db/bigBrainMigrations.js +4266 -0
  482. package/dist/db/bigBrainMigrations.js.map +1 -0
  483. package/dist/db/connectionPoolGoBrrr.d.ts +94 -0
  484. package/dist/db/connectionPoolGoBrrr.d.ts.map +1 -0
  485. package/dist/db/connectionPoolGoBrrr.js +548 -0
  486. package/dist/db/connectionPoolGoBrrr.js.map +1 -0
  487. package/dist/db/dashboardQueries.d.ts +182 -0
  488. package/dist/db/dashboardQueries.d.ts.map +1 -0
  489. package/dist/db/dashboardQueries.js +821 -0
  490. package/dist/db/dashboardQueries.js.map +1 -0
  491. package/dist/db/deploymentBootstrap.d.ts +43 -0
  492. package/dist/db/deploymentBootstrap.d.ts.map +1 -0
  493. package/dist/db/deploymentBootstrap.js +329 -0
  494. package/dist/db/deploymentBootstrap.js.map +1 -0
  495. package/dist/db/dimensionService.d.ts +140 -0
  496. package/dist/db/dimensionService.d.ts.map +1 -0
  497. package/dist/db/dimensionService.js +261 -0
  498. package/dist/db/dimensionService.js.map +1 -0
  499. package/dist/db/embeddingOverflow.d.ts +69 -0
  500. package/dist/db/embeddingOverflow.d.ts.map +1 -0
  501. package/dist/db/embeddingOverflow.js +332 -0
  502. package/dist/db/embeddingOverflow.js.map +1 -0
  503. package/dist/db/embeddingOverflow.sql +221 -0
  504. package/dist/db/findThatShit.d.ts +145 -0
  505. package/dist/db/findThatShit.d.ts.map +1 -0
  506. package/dist/db/findThatShit.js +782 -0
  507. package/dist/db/findThatShit.js.map +1 -0
  508. package/dist/db/hotPathManager.d.ts +187 -0
  509. package/dist/db/hotPathManager.d.ts.map +1 -0
  510. package/dist/db/hotPathManager.js +504 -0
  511. package/dist/db/hotPathManager.js.map +1 -0
  512. package/dist/db/index.d.ts +85 -0
  513. package/dist/db/index.d.ts.map +1 -0
  514. package/dist/db/index.js +219 -0
  515. package/dist/db/index.js.map +1 -0
  516. package/dist/db/memoryDrilldown.sql +99 -0
  517. package/dist/db/migrate.d.ts +3 -0
  518. package/dist/db/migrate.d.ts.map +1 -0
  519. package/dist/db/migrate.js +97 -0
  520. package/dist/db/migrate.js.map +1 -0
  521. package/dist/db/migrateJsonToPostgres.d.ts +43 -0
  522. package/dist/db/migrateJsonToPostgres.d.ts.map +1 -0
  523. package/dist/db/migrateJsonToPostgres.js +465 -0
  524. package/dist/db/migrateJsonToPostgres.js.map +1 -0
  525. package/dist/db/nukeFromOrbit.d.ts +63 -0
  526. package/dist/db/nukeFromOrbit.d.ts.map +1 -0
  527. package/dist/db/nukeFromOrbit.js +499 -0
  528. package/dist/db/nukeFromOrbit.js.map +1 -0
  529. package/dist/db/processedTraining.sql +60 -0
  530. package/dist/db/projectNamespacing.d.ts +258 -0
  531. package/dist/db/projectNamespacing.d.ts.map +1 -0
  532. package/dist/db/projectNamespacing.js +920 -0
  533. package/dist/db/projectNamespacing.js.map +1 -0
  534. package/dist/db/projectNamespacing.sql +374 -0
  535. package/dist/db/projectSchemaInit.sql +271 -0
  536. package/dist/db/spatialMemory.d.ts +296 -0
  537. package/dist/db/spatialMemory.d.ts.map +1 -0
  538. package/dist/db/spatialMemory.js +818 -0
  539. package/dist/db/spatialMemory.js.map +1 -0
  540. package/dist/db/streamingQuery.d.ts +143 -0
  541. package/dist/db/streamingQuery.d.ts.map +1 -0
  542. package/dist/db/streamingQuery.js +350 -0
  543. package/dist/db/streamingQuery.js.map +1 -0
  544. package/dist/db/teamComms.sql +224 -0
  545. package/dist/db/yeetStuffInDb.d.ts +72 -0
  546. package/dist/db/yeetStuffInDb.d.ts.map +1 -0
  547. package/dist/db/yeetStuffInDb.js +473 -0
  548. package/dist/db/yeetStuffInDb.js.map +1 -0
  549. package/dist/embedding-providers/index.d.ts +10 -0
  550. package/dist/embedding-providers/index.d.ts.map +1 -0
  551. package/dist/embedding-providers/index.js +12 -0
  552. package/dist/embedding-providers/index.js.map +1 -0
  553. package/dist/embeddings/projectionLayer.d.ts +114 -0
  554. package/dist/embeddings/projectionLayer.d.ts.map +1 -0
  555. package/dist/embeddings/projectionLayer.js +345 -0
  556. package/dist/embeddings/projectionLayer.js.map +1 -0
  557. package/dist/events/Publisher.d.ts +193 -0
  558. package/dist/events/Publisher.d.ts.map +1 -0
  559. package/dist/events/Publisher.js +439 -0
  560. package/dist/events/Publisher.js.map +1 -0
  561. package/dist/events/config.d.ts +139 -0
  562. package/dist/events/config.d.ts.map +1 -0
  563. package/dist/events/config.js +266 -0
  564. package/dist/events/config.js.map +1 -0
  565. package/dist/events/index.d.ts +19 -0
  566. package/dist/events/index.d.ts.map +1 -0
  567. package/dist/events/index.js +31 -0
  568. package/dist/events/index.js.map +1 -0
  569. package/dist/events/integration.d.ts +206 -0
  570. package/dist/events/integration.d.ts.map +1 -0
  571. package/dist/events/integration.js +348 -0
  572. package/dist/events/integration.js.map +1 -0
  573. package/dist/events/metrics.d.ts +147 -0
  574. package/dist/events/metrics.d.ts.map +1 -0
  575. package/dist/events/metrics.js +343 -0
  576. package/dist/events/metrics.js.map +1 -0
  577. package/dist/hooks/cli.d.ts +28 -0
  578. package/dist/hooks/cli.d.ts.map +1 -0
  579. package/dist/hooks/cli.js +118 -0
  580. package/dist/hooks/cli.js.map +1 -0
  581. package/dist/hooks/contextInjectionHook.d.ts +60 -0
  582. package/dist/hooks/contextInjectionHook.d.ts.map +1 -0
  583. package/dist/hooks/contextInjectionHook.js +294 -0
  584. package/dist/hooks/contextInjectionHook.js.map +1 -0
  585. package/dist/hooks/drilldownHook.d.ts +125 -0
  586. package/dist/hooks/drilldownHook.d.ts.map +1 -0
  587. package/dist/hooks/drilldownHook.js +181 -0
  588. package/dist/hooks/drilldownHook.js.map +1 -0
  589. package/dist/hooks/hookManager.d.ts +180 -0
  590. package/dist/hooks/hookManager.d.ts.map +1 -0
  591. package/dist/hooks/hookManager.js +782 -0
  592. package/dist/hooks/hookManager.js.map +1 -0
  593. package/dist/hooks/index.d.ts +62 -0
  594. package/dist/hooks/index.d.ts.map +1 -0
  595. package/dist/hooks/index.js +66 -0
  596. package/dist/hooks/index.js.map +1 -0
  597. package/dist/hooks/lowContextHook.d.ts +71 -0
  598. package/dist/hooks/lowContextHook.d.ts.map +1 -0
  599. package/dist/hooks/lowContextHook.js +258 -0
  600. package/dist/hooks/lowContextHook.js.map +1 -0
  601. package/dist/hooks/simpleContextHook.d.ts +65 -0
  602. package/dist/hooks/simpleContextHook.d.ts.map +1 -0
  603. package/dist/hooks/simpleContextHook.js +194 -0
  604. package/dist/hooks/simpleContextHook.js.map +1 -0
  605. package/dist/hooks/teamFramingCli.d.ts +56 -0
  606. package/dist/hooks/teamFramingCli.d.ts.map +1 -0
  607. package/dist/hooks/teamFramingCli.js +264 -0
  608. package/dist/hooks/teamFramingCli.js.map +1 -0
  609. package/dist/hooks/teamMemberPrepromptHook.d.ts +150 -0
  610. package/dist/hooks/teamMemberPrepromptHook.d.ts.map +1 -0
  611. package/dist/hooks/teamMemberPrepromptHook.js +308 -0
  612. package/dist/hooks/teamMemberPrepromptHook.js.map +1 -0
  613. package/dist/index.d.ts +42 -0
  614. package/dist/index.d.ts.map +1 -0
  615. package/dist/index.js +4433 -0
  616. package/dist/index.js.map +1 -0
  617. package/dist/init/claudeConfigInjector.d.ts +116 -0
  618. package/dist/init/claudeConfigInjector.d.ts.map +1 -0
  619. package/dist/init/claudeConfigInjector.js +1154 -0
  620. package/dist/init/claudeConfigInjector.js.map +1 -0
  621. package/dist/installer/autoInstall.d.ts +72 -0
  622. package/dist/installer/autoInstall.d.ts.map +1 -0
  623. package/dist/installer/autoInstall.js +617 -0
  624. package/dist/installer/autoInstall.js.map +1 -0
  625. package/dist/installer/dbSetup.d.ts +84 -0
  626. package/dist/installer/dbSetup.d.ts.map +1 -0
  627. package/dist/installer/dbSetup.js +350 -0
  628. package/dist/installer/dbSetup.js.map +1 -0
  629. package/dist/installer/firstRun.d.ts +49 -0
  630. package/dist/installer/firstRun.d.ts.map +1 -0
  631. package/dist/installer/firstRun.js +207 -0
  632. package/dist/installer/firstRun.js.map +1 -0
  633. package/dist/installer/index.d.ts +10 -0
  634. package/dist/installer/index.d.ts.map +1 -0
  635. package/dist/installer/index.js +10 -0
  636. package/dist/installer/index.js.map +1 -0
  637. package/dist/installer/silentAutoInstall.d.ts +99 -0
  638. package/dist/installer/silentAutoInstall.d.ts.map +1 -0
  639. package/dist/installer/silentAutoInstall.js +491 -0
  640. package/dist/installer/silentAutoInstall.js.map +1 -0
  641. package/dist/installer/systemDeps.d.ts +54 -0
  642. package/dist/installer/systemDeps.d.ts.map +1 -0
  643. package/dist/installer/systemDeps.js +322 -0
  644. package/dist/installer/systemDeps.js.map +1 -0
  645. package/dist/mcp/cliNotifications.d.ts +133 -0
  646. package/dist/mcp/cliNotifications.d.ts.map +1 -0
  647. package/dist/mcp/cliNotifications.js +289 -0
  648. package/dist/mcp/cliNotifications.js.map +1 -0
  649. package/dist/mcp/embeddingServerManager.d.ts +307 -0
  650. package/dist/mcp/embeddingServerManager.d.ts.map +1 -0
  651. package/dist/mcp/embeddingServerManager.js +2081 -0
  652. package/dist/mcp/embeddingServerManager.js.map +1 -0
  653. package/dist/mcp/healthMonitor.d.ts +196 -0
  654. package/dist/mcp/healthMonitor.d.ts.map +1 -0
  655. package/dist/mcp/healthMonitor.js +685 -0
  656. package/dist/mcp/healthMonitor.js.map +1 -0
  657. package/dist/mcp/hotReloadManager.d.ts +101 -0
  658. package/dist/mcp/hotReloadManager.d.ts.map +1 -0
  659. package/dist/mcp/hotReloadManager.js +251 -0
  660. package/dist/mcp/hotReloadManager.js.map +1 -0
  661. package/dist/mcp/index.d.ts +16 -0
  662. package/dist/mcp/index.d.ts.map +1 -0
  663. package/dist/mcp/index.js +22 -0
  664. package/dist/mcp/index.js.map +1 -0
  665. package/dist/mcp/mcpProtocolHandler.d.ts +64 -0
  666. package/dist/mcp/mcpProtocolHandler.d.ts.map +1 -0
  667. package/dist/mcp/mcpProtocolHandler.js +253 -0
  668. package/dist/mcp/mcpProtocolHandler.js.map +1 -0
  669. package/dist/mcp/miniCOTServerManager.d.ts +336 -0
  670. package/dist/mcp/miniCOTServerManager.d.ts.map +1 -0
  671. package/dist/mcp/miniCOTServerManager.js +1384 -0
  672. package/dist/mcp/miniCOTServerManager.js.map +1 -0
  673. package/dist/mcp/promptExecutor.d.ts +188 -0
  674. package/dist/mcp/promptExecutor.d.ts.map +1 -0
  675. package/dist/mcp/promptExecutor.js +469 -0
  676. package/dist/mcp/promptExecutor.js.map +1 -0
  677. package/dist/mcp/reloadBroadcast.d.ts +127 -0
  678. package/dist/mcp/reloadBroadcast.d.ts.map +1 -0
  679. package/dist/mcp/reloadBroadcast.js +275 -0
  680. package/dist/mcp/reloadBroadcast.js.map +1 -0
  681. package/dist/mcp/resilientTransport.d.ts +249 -0
  682. package/dist/mcp/resilientTransport.d.ts.map +1 -0
  683. package/dist/mcp/resilientTransport.js +931 -0
  684. package/dist/mcp/resilientTransport.js.map +1 -0
  685. package/dist/mcp/samplingHandler.d.ts +129 -0
  686. package/dist/mcp/samplingHandler.d.ts.map +1 -0
  687. package/dist/mcp/samplingHandler.js +276 -0
  688. package/dist/mcp/samplingHandler.js.map +1 -0
  689. package/dist/mcp/specMemServer.d.ts +305 -0
  690. package/dist/mcp/specMemServer.d.ts.map +1 -0
  691. package/dist/mcp/specMemServer.js +2048 -0
  692. package/dist/mcp/specMemServer.js.map +1 -0
  693. package/dist/mcp/toolRegistry.d.ts +122 -0
  694. package/dist/mcp/toolRegistry.d.ts.map +1 -0
  695. package/dist/mcp/toolRegistry.js +609 -0
  696. package/dist/mcp/toolRegistry.js.map +1 -0
  697. package/dist/mcp/tools/embeddingControl.d.ts +114 -0
  698. package/dist/mcp/tools/embeddingControl.d.ts.map +1 -0
  699. package/dist/mcp/tools/embeddingControl.js +222 -0
  700. package/dist/mcp/tools/embeddingControl.js.map +1 -0
  701. package/dist/mcp/tools/index.d.ts +10 -0
  702. package/dist/mcp/tools/index.d.ts.map +1 -0
  703. package/dist/mcp/tools/index.js +17 -0
  704. package/dist/mcp/tools/index.js.map +1 -0
  705. package/dist/mcp/tools/teamComms.d.ts +444 -0
  706. package/dist/mcp/tools/teamComms.d.ts.map +1 -0
  707. package/dist/mcp/tools/teamComms.js +1953 -0
  708. package/dist/mcp/tools/teamComms.js.map +1 -0
  709. package/dist/mcp/triggerSystem.d.ts +129 -0
  710. package/dist/mcp/triggerSystem.d.ts.map +1 -0
  711. package/dist/mcp/triggerSystem.js +363 -0
  712. package/dist/mcp/triggerSystem.js.map +1 -0
  713. package/dist/mcp/watcherIntegration.d.ts +77 -0
  714. package/dist/mcp/watcherIntegration.d.ts.map +1 -0
  715. package/dist/mcp/watcherIntegration.js +428 -0
  716. package/dist/mcp/watcherIntegration.js.map +1 -0
  717. package/dist/mcp/watcherToolWrappers.d.ts +89 -0
  718. package/dist/mcp/watcherToolWrappers.d.ts.map +1 -0
  719. package/dist/mcp/watcherToolWrappers.js +91 -0
  720. package/dist/mcp/watcherToolWrappers.js.map +1 -0
  721. package/dist/memorization/claudeCodeMigration.d.ts +34 -0
  722. package/dist/memorization/claudeCodeMigration.d.ts.map +1 -0
  723. package/dist/memorization/claudeCodeMigration.js +210 -0
  724. package/dist/memorization/claudeCodeMigration.js.map +1 -0
  725. package/dist/memorization/claudeCodeTracker.d.ts +147 -0
  726. package/dist/memorization/claudeCodeTracker.d.ts.map +1 -0
  727. package/dist/memorization/claudeCodeTracker.js +424 -0
  728. package/dist/memorization/claudeCodeTracker.js.map +1 -0
  729. package/dist/memorization/codeMemorizer.d.ts +158 -0
  730. package/dist/memorization/codeMemorizer.d.ts.map +1 -0
  731. package/dist/memorization/codeMemorizer.js +357 -0
  732. package/dist/memorization/codeMemorizer.js.map +1 -0
  733. package/dist/memorization/codeRecall.d.ts +156 -0
  734. package/dist/memorization/codeRecall.d.ts.map +1 -0
  735. package/dist/memorization/codeRecall.js +499 -0
  736. package/dist/memorization/codeRecall.js.map +1 -0
  737. package/dist/memorization/index.d.ts +55 -0
  738. package/dist/memorization/index.d.ts.map +1 -0
  739. package/dist/memorization/index.js +64 -0
  740. package/dist/memorization/index.js.map +1 -0
  741. package/dist/memorization/memorizationTools.d.ts +413 -0
  742. package/dist/memorization/memorizationTools.d.ts.map +1 -0
  743. package/dist/memorization/memorizationTools.js +513 -0
  744. package/dist/memorization/memorizationTools.js.map +1 -0
  745. package/dist/memorization/watcherIntegration.d.ts +100 -0
  746. package/dist/memorization/watcherIntegration.d.ts.map +1 -0
  747. package/dist/memorization/watcherIntegration.js +196 -0
  748. package/dist/memorization/watcherIntegration.js.map +1 -0
  749. package/dist/memory/humanLikeMemory.d.ts +206 -0
  750. package/dist/memory/humanLikeMemory.d.ts.map +1 -0
  751. package/dist/memory/humanLikeMemory.js +603 -0
  752. package/dist/memory/humanLikeMemory.js.map +1 -0
  753. package/dist/memory/index.d.ts +22 -0
  754. package/dist/memory/index.d.ts.map +1 -0
  755. package/dist/memory/index.js +24 -0
  756. package/dist/memory/index.js.map +1 -0
  757. package/dist/memory/memoryEvolutionMigration.d.ts +36 -0
  758. package/dist/memory/memoryEvolutionMigration.d.ts.map +1 -0
  759. package/dist/memory/memoryEvolutionMigration.js +371 -0
  760. package/dist/memory/memoryEvolutionMigration.js.map +1 -0
  761. package/dist/memory/quadrantSearch.d.ts +221 -0
  762. package/dist/memory/quadrantSearch.d.ts.map +1 -0
  763. package/dist/memory/quadrantSearch.js +897 -0
  764. package/dist/memory/quadrantSearch.js.map +1 -0
  765. package/dist/middleware/apiVersioning.d.ts +83 -0
  766. package/dist/middleware/apiVersioning.d.ts.map +1 -0
  767. package/dist/middleware/apiVersioning.js +152 -0
  768. package/dist/middleware/apiVersioning.js.map +1 -0
  769. package/dist/middleware/compression.d.ts +48 -0
  770. package/dist/middleware/compression.d.ts.map +1 -0
  771. package/dist/middleware/compression.js +240 -0
  772. package/dist/middleware/compression.js.map +1 -0
  773. package/dist/middleware/csrf.d.ts +118 -0
  774. package/dist/middleware/csrf.d.ts.map +1 -0
  775. package/dist/middleware/csrf.js +300 -0
  776. package/dist/middleware/csrf.js.map +1 -0
  777. package/dist/middleware/index.d.ts +13 -0
  778. package/dist/middleware/index.d.ts.map +1 -0
  779. package/dist/middleware/index.js +17 -0
  780. package/dist/middleware/index.js.map +1 -0
  781. package/dist/middleware/wsRateLimiter.d.ts +129 -0
  782. package/dist/middleware/wsRateLimiter.d.ts.map +1 -0
  783. package/dist/middleware/wsRateLimiter.js +279 -0
  784. package/dist/middleware/wsRateLimiter.js.map +1 -0
  785. package/dist/migrations/run.d.ts +2 -0
  786. package/dist/migrations/run.d.ts.map +1 -0
  787. package/dist/migrations/run.js +25 -0
  788. package/dist/migrations/run.js.map +1 -0
  789. package/dist/migrations/syncDimensions.d.ts +24 -0
  790. package/dist/migrations/syncDimensions.d.ts.map +1 -0
  791. package/dist/migrations/syncDimensions.js +140 -0
  792. package/dist/migrations/syncDimensions.js.map +1 -0
  793. package/dist/migrations/teamComms.d.ts +16 -0
  794. package/dist/migrations/teamComms.d.ts.map +1 -0
  795. package/dist/migrations/teamComms.js +210 -0
  796. package/dist/migrations/teamComms.js.map +1 -0
  797. package/dist/openapi/index.d.ts +10 -0
  798. package/dist/openapi/index.d.ts.map +1 -0
  799. package/dist/openapi/index.js +10 -0
  800. package/dist/openapi/index.js.map +1 -0
  801. package/dist/openapi/spec.d.ts +902 -0
  802. package/dist/openapi/spec.d.ts.map +1 -0
  803. package/dist/openapi/spec.js +733 -0
  804. package/dist/openapi/spec.js.map +1 -0
  805. package/dist/packages/dependencyHistory.d.ts +113 -0
  806. package/dist/packages/dependencyHistory.d.ts.map +1 -0
  807. package/dist/packages/dependencyHistory.js +360 -0
  808. package/dist/packages/dependencyHistory.js.map +1 -0
  809. package/dist/packages/index.d.ts +30 -0
  810. package/dist/packages/index.d.ts.map +1 -0
  811. package/dist/packages/index.js +65 -0
  812. package/dist/packages/index.js.map +1 -0
  813. package/dist/packages/packageTools.d.ts +255 -0
  814. package/dist/packages/packageTools.d.ts.map +1 -0
  815. package/dist/packages/packageTools.js +242 -0
  816. package/dist/packages/packageTools.js.map +1 -0
  817. package/dist/packages/packageTracker.d.ts +98 -0
  818. package/dist/packages/packageTracker.d.ts.map +1 -0
  819. package/dist/packages/packageTracker.js +268 -0
  820. package/dist/packages/packageTracker.js.map +1 -0
  821. package/dist/packages/packageWatcher.d.ts +62 -0
  822. package/dist/packages/packageWatcher.d.ts.map +1 -0
  823. package/dist/packages/packageWatcher.js +146 -0
  824. package/dist/packages/packageWatcher.js.map +1 -0
  825. package/dist/providers/MiniCOTProvider.d.ts +48 -0
  826. package/dist/providers/MiniCOTProvider.d.ts.map +1 -0
  827. package/dist/providers/MiniCOTProvider.js +98 -0
  828. package/dist/providers/MiniCOTProvider.js.map +1 -0
  829. package/dist/reminders/index.d.ts +5 -0
  830. package/dist/reminders/index.d.ts.map +1 -0
  831. package/dist/reminders/index.js +5 -0
  832. package/dist/reminders/index.js.map +1 -0
  833. package/dist/reminders/skillReminder.d.ts +131 -0
  834. package/dist/reminders/skillReminder.d.ts.map +1 -0
  835. package/dist/reminders/skillReminder.js +386 -0
  836. package/dist/reminders/skillReminder.js.map +1 -0
  837. package/dist/search.d.ts +35 -0
  838. package/dist/search.d.ts.map +1 -0
  839. package/dist/search.js +574 -0
  840. package/dist/search.js.map +1 -0
  841. package/dist/security/localhostOnly.d.ts +36 -0
  842. package/dist/security/localhostOnly.d.ts.map +1 -0
  843. package/dist/security/localhostOnly.js +101 -0
  844. package/dist/security/localhostOnly.js.map +1 -0
  845. package/dist/services/CameraZoomSearch.d.ts +206 -0
  846. package/dist/services/CameraZoomSearch.d.ts.map +1 -0
  847. package/dist/services/CameraZoomSearch.js +669 -0
  848. package/dist/services/CameraZoomSearch.js.map +1 -0
  849. package/dist/services/DataFlowPipeline.d.ts +111 -0
  850. package/dist/services/DataFlowPipeline.d.ts.map +1 -0
  851. package/dist/services/DataFlowPipeline.js +379 -0
  852. package/dist/services/DataFlowPipeline.js.map +1 -0
  853. package/dist/services/DimensionAdapter.d.ts +194 -0
  854. package/dist/services/DimensionAdapter.d.ts.map +1 -0
  855. package/dist/services/DimensionAdapter.js +566 -0
  856. package/dist/services/DimensionAdapter.js.map +1 -0
  857. package/dist/services/DimensionService.d.ts +252 -0
  858. package/dist/services/DimensionService.d.ts.map +1 -0
  859. package/dist/services/DimensionService.js +564 -0
  860. package/dist/services/DimensionService.js.map +1 -0
  861. package/dist/services/EmbeddingQueue.d.ts +71 -0
  862. package/dist/services/EmbeddingQueue.d.ts.map +1 -0
  863. package/dist/services/EmbeddingQueue.js +258 -0
  864. package/dist/services/EmbeddingQueue.js.map +1 -0
  865. package/dist/services/MemoryDrilldown.d.ts +226 -0
  866. package/dist/services/MemoryDrilldown.d.ts.map +1 -0
  867. package/dist/services/MemoryDrilldown.js +479 -0
  868. package/dist/services/MemoryDrilldown.js.map +1 -0
  869. package/dist/services/MiniCOTScorer.d.ts +140 -0
  870. package/dist/services/MiniCOTScorer.d.ts.map +1 -0
  871. package/dist/services/MiniCOTScorer.js +292 -0
  872. package/dist/services/MiniCOTScorer.js.map +1 -0
  873. package/dist/services/ProjectContext.d.ts +342 -0
  874. package/dist/services/ProjectContext.d.ts.map +1 -0
  875. package/dist/services/ProjectContext.js +667 -0
  876. package/dist/services/ProjectContext.js.map +1 -0
  877. package/dist/services/ResponseCompactor.d.ts +135 -0
  878. package/dist/services/ResponseCompactor.d.ts.map +1 -0
  879. package/dist/services/ResponseCompactor.js +501 -0
  880. package/dist/services/ResponseCompactor.js.map +1 -0
  881. package/dist/services/TeamCommsDbService.d.ts +202 -0
  882. package/dist/services/TeamCommsDbService.d.ts.map +1 -0
  883. package/dist/services/TeamCommsDbService.js +526 -0
  884. package/dist/services/TeamCommsDbService.js.map +1 -0
  885. package/dist/services/UnifiedPasswordService.d.ts +166 -0
  886. package/dist/services/UnifiedPasswordService.d.ts.map +1 -0
  887. package/dist/services/UnifiedPasswordService.js +587 -0
  888. package/dist/services/UnifiedPasswordService.js.map +1 -0
  889. package/dist/services/adaptiveSearchConfig.d.ts +64 -0
  890. package/dist/services/adaptiveSearchConfig.d.ts.map +1 -0
  891. package/dist/services/adaptiveSearchConfig.js +187 -0
  892. package/dist/services/adaptiveSearchConfig.js.map +1 -0
  893. package/dist/skills/index.d.ts +8 -0
  894. package/dist/skills/index.d.ts.map +1 -0
  895. package/dist/skills/index.js +8 -0
  896. package/dist/skills/index.js.map +1 -0
  897. package/dist/skills/skillScanner.d.ts +203 -0
  898. package/dist/skills/skillScanner.d.ts.map +1 -0
  899. package/dist/skills/skillScanner.js +559 -0
  900. package/dist/skills/skillScanner.js.map +1 -0
  901. package/dist/skills/skillsResource.d.ts +69 -0
  902. package/dist/skills/skillsResource.d.ts.map +1 -0
  903. package/dist/skills/skillsResource.js +257 -0
  904. package/dist/skills/skillsResource.js.map +1 -0
  905. package/dist/startup/index.d.ts +9 -0
  906. package/dist/startup/index.d.ts.map +1 -0
  907. package/dist/startup/index.js +12 -0
  908. package/dist/startup/index.js.map +1 -0
  909. package/dist/startup/startupIndexing.d.ts +80 -0
  910. package/dist/startup/startupIndexing.d.ts.map +1 -0
  911. package/dist/startup/startupIndexing.js +463 -0
  912. package/dist/startup/startupIndexing.js.map +1 -0
  913. package/dist/startup/validation.d.ts +89 -0
  914. package/dist/startup/validation.d.ts.map +1 -0
  915. package/dist/startup/validation.js +590 -0
  916. package/dist/startup/validation.js.map +1 -0
  917. package/dist/storage/index.d.ts +4 -0
  918. package/dist/storage/index.d.ts.map +1 -0
  919. package/dist/storage/index.js +4 -0
  920. package/dist/storage/index.js.map +1 -0
  921. package/dist/storage/overflowManager.d.ts +80 -0
  922. package/dist/storage/overflowManager.d.ts.map +1 -0
  923. package/dist/storage/overflowManager.js +317 -0
  924. package/dist/storage/overflowManager.js.map +1 -0
  925. package/dist/storage/overflowStorage.d.ts +69 -0
  926. package/dist/storage/overflowStorage.d.ts.map +1 -0
  927. package/dist/storage/overflowStorage.js +379 -0
  928. package/dist/storage/overflowStorage.js.map +1 -0
  929. package/dist/storage/toonFormat.d.ts +50 -0
  930. package/dist/storage/toonFormat.d.ts.map +1 -0
  931. package/dist/storage/toonFormat.js +224 -0
  932. package/dist/storage/toonFormat.js.map +1 -0
  933. package/dist/team-members/communication.d.ts +237 -0
  934. package/dist/team-members/communication.d.ts.map +1 -0
  935. package/dist/team-members/communication.js +650 -0
  936. package/dist/team-members/communication.js.map +1 -0
  937. package/dist/team-members/index.d.ts +14 -0
  938. package/dist/team-members/index.d.ts.map +1 -0
  939. package/dist/team-members/index.js +22 -0
  940. package/dist/team-members/index.js.map +1 -0
  941. package/dist/team-members/taskOrchestrator.d.ts +224 -0
  942. package/dist/team-members/taskOrchestrator.d.ts.map +1 -0
  943. package/dist/team-members/taskOrchestrator.js +574 -0
  944. package/dist/team-members/taskOrchestrator.js.map +1 -0
  945. package/dist/team-members/taskTeamMemberLogger.d.ts +157 -0
  946. package/dist/team-members/taskTeamMemberLogger.d.ts.map +1 -0
  947. package/dist/team-members/taskTeamMemberLogger.js +478 -0
  948. package/dist/team-members/taskTeamMemberLogger.js.map +1 -0
  949. package/dist/team-members/teamCommsService.d.ts +221 -0
  950. package/dist/team-members/teamCommsService.d.ts.map +1 -0
  951. package/dist/team-members/teamCommsService.js +628 -0
  952. package/dist/team-members/teamCommsService.js.map +1 -0
  953. package/dist/team-members/teamMemberChannels.d.ts +217 -0
  954. package/dist/team-members/teamMemberChannels.d.ts.map +1 -0
  955. package/dist/team-members/teamMemberChannels.js +687 -0
  956. package/dist/team-members/teamMemberChannels.js.map +1 -0
  957. package/dist/team-members/teamMemberDashboard.d.ts +222 -0
  958. package/dist/team-members/teamMemberDashboard.d.ts.map +1 -0
  959. package/dist/team-members/teamMemberDashboard.js +610 -0
  960. package/dist/team-members/teamMemberDashboard.js.map +1 -0
  961. package/dist/team-members/teamMemberDeployment.d.ts +60 -0
  962. package/dist/team-members/teamMemberDeployment.d.ts.map +1 -0
  963. package/dist/team-members/teamMemberDeployment.js +429 -0
  964. package/dist/team-members/teamMemberDeployment.js.map +1 -0
  965. package/dist/team-members/teamMemberDiscovery.d.ts +178 -0
  966. package/dist/team-members/teamMemberDiscovery.d.ts.map +1 -0
  967. package/dist/team-members/teamMemberDiscovery.js +446 -0
  968. package/dist/team-members/teamMemberDiscovery.js.map +1 -0
  969. package/dist/team-members/teamMemberHistory.d.ts +80 -0
  970. package/dist/team-members/teamMemberHistory.d.ts.map +1 -0
  971. package/dist/team-members/teamMemberHistory.js +426 -0
  972. package/dist/team-members/teamMemberHistory.js.map +1 -0
  973. package/dist/team-members/teamMemberLimits.d.ts +66 -0
  974. package/dist/team-members/teamMemberLimits.d.ts.map +1 -0
  975. package/dist/team-members/teamMemberLimits.js +259 -0
  976. package/dist/team-members/teamMemberLimits.js.map +1 -0
  977. package/dist/team-members/teamMemberRegistry.d.ts +199 -0
  978. package/dist/team-members/teamMemberRegistry.d.ts.map +1 -0
  979. package/dist/team-members/teamMemberRegistry.js +572 -0
  980. package/dist/team-members/teamMemberRegistry.js.map +1 -0
  981. package/dist/team-members/teamMemberTracker.d.ts +148 -0
  982. package/dist/team-members/teamMemberTracker.d.ts.map +1 -0
  983. package/dist/team-members/teamMemberTracker.js +828 -0
  984. package/dist/team-members/teamMemberTracker.js.map +1 -0
  985. package/dist/team-members/workers/aiWorker.d.ts +53 -0
  986. package/dist/team-members/workers/aiWorker.d.ts.map +1 -0
  987. package/dist/team-members/workers/aiWorker.js +322 -0
  988. package/dist/team-members/workers/aiWorker.js.map +1 -0
  989. package/dist/team-members/workers/baseWorker.d.ts +101 -0
  990. package/dist/team-members/workers/baseWorker.d.ts.map +1 -0
  991. package/dist/team-members/workers/baseWorker.js +179 -0
  992. package/dist/team-members/workers/baseWorker.js.map +1 -0
  993. package/dist/team-members/workers/codeReviewWorker.d.ts +3 -0
  994. package/dist/team-members/workers/codeReviewWorker.d.ts.map +1 -0
  995. package/dist/team-members/workers/codeReviewWorker.js +144 -0
  996. package/dist/team-members/workers/codeReviewWorker.js.map +1 -0
  997. package/dist/team-members/workers/index.d.ts +7 -0
  998. package/dist/team-members/workers/index.d.ts.map +1 -0
  999. package/dist/team-members/workers/index.js +7 -0
  1000. package/dist/team-members/workers/index.js.map +1 -0
  1001. package/dist/team-members/workers/repairWorker.d.ts +9 -0
  1002. package/dist/team-members/workers/repairWorker.d.ts.map +1 -0
  1003. package/dist/team-members/workers/repairWorker.js +102 -0
  1004. package/dist/team-members/workers/repairWorker.js.map +1 -0
  1005. package/dist/team-members/workers/sendToTeamMemberB.d.ts +9 -0
  1006. package/dist/team-members/workers/sendToTeamMemberB.d.ts.map +1 -0
  1007. package/dist/team-members/workers/sendToTeamMemberB.js +105 -0
  1008. package/dist/team-members/workers/sendToTeamMemberB.js.map +1 -0
  1009. package/dist/team-members/workers/specmemClient.d.ts +179 -0
  1010. package/dist/team-members/workers/specmemClient.d.ts.map +1 -0
  1011. package/dist/team-members/workers/specmemClient.js +421 -0
  1012. package/dist/team-members/workers/specmemClient.js.map +1 -0
  1013. package/dist/team-members/workers/testCommunication.d.ts +8 -0
  1014. package/dist/team-members/workers/testCommunication.d.ts.map +1 -0
  1015. package/dist/team-members/workers/testCommunication.js +136 -0
  1016. package/dist/team-members/workers/testCommunication.js.map +1 -0
  1017. package/dist/team-members/workers/testCommunicationSuite.d.ts +26 -0
  1018. package/dist/team-members/workers/testCommunicationSuite.d.ts.map +1 -0
  1019. package/dist/team-members/workers/testCommunicationSuite.js +415 -0
  1020. package/dist/team-members/workers/testCommunicationSuite.js.map +1 -0
  1021. package/dist/team-members/workers/testWorker.d.ts +9 -0
  1022. package/dist/team-members/workers/testWorker.d.ts.map +1 -0
  1023. package/dist/team-members/workers/testWorker.js +107 -0
  1024. package/dist/team-members/workers/testWorker.js.map +1 -0
  1025. package/dist/tools/agentDefinitions.d.ts +30 -0
  1026. package/dist/tools/agentDefinitions.d.ts.map +1 -0
  1027. package/dist/tools/agentDefinitions.js +166 -0
  1028. package/dist/tools/agentDefinitions.js.map +1 -0
  1029. package/dist/tools/goofy/checkSyncStatus.d.ts +68 -0
  1030. package/dist/tools/goofy/checkSyncStatus.d.ts.map +1 -0
  1031. package/dist/tools/goofy/checkSyncStatus.js +112 -0
  1032. package/dist/tools/goofy/checkSyncStatus.js.map +1 -0
  1033. package/dist/tools/goofy/codeMemoryLink.d.ts +82 -0
  1034. package/dist/tools/goofy/codeMemoryLink.d.ts.map +1 -0
  1035. package/dist/tools/goofy/codeMemoryLink.js +212 -0
  1036. package/dist/tools/goofy/codeMemoryLink.js.map +1 -0
  1037. package/dist/tools/goofy/compareInstanceMemory.d.ts +97 -0
  1038. package/dist/tools/goofy/compareInstanceMemory.d.ts.map +1 -0
  1039. package/dist/tools/goofy/compareInstanceMemory.js +218 -0
  1040. package/dist/tools/goofy/compareInstanceMemory.js.map +1 -0
  1041. package/dist/tools/goofy/createReasoningChain.d.ts +135 -0
  1042. package/dist/tools/goofy/createReasoningChain.d.ts.map +1 -0
  1043. package/dist/tools/goofy/createReasoningChain.js +257 -0
  1044. package/dist/tools/goofy/createReasoningChain.js.map +1 -0
  1045. package/dist/tools/goofy/deployTeamMember.d.ts +63 -0
  1046. package/dist/tools/goofy/deployTeamMember.d.ts.map +1 -0
  1047. package/dist/tools/goofy/deployTeamMember.js +103 -0
  1048. package/dist/tools/goofy/deployTeamMember.js.map +1 -0
  1049. package/dist/tools/goofy/drillDown.d.ts +143 -0
  1050. package/dist/tools/goofy/drillDown.d.ts.map +1 -0
  1051. package/dist/tools/goofy/drillDown.js +288 -0
  1052. package/dist/tools/goofy/drillDown.js.map +1 -0
  1053. package/dist/tools/goofy/extractClaudeSessions.d.ts +90 -0
  1054. package/dist/tools/goofy/extractClaudeSessions.d.ts.map +1 -0
  1055. package/dist/tools/goofy/extractClaudeSessions.js +277 -0
  1056. package/dist/tools/goofy/extractClaudeSessions.js.map +1 -0
  1057. package/dist/tools/goofy/extractContextRestorations.d.ts +70 -0
  1058. package/dist/tools/goofy/extractContextRestorations.d.ts.map +1 -0
  1059. package/dist/tools/goofy/extractContextRestorations.js +100 -0
  1060. package/dist/tools/goofy/extractContextRestorations.js.map +1 -0
  1061. package/dist/tools/goofy/findCodePointers.d.ts +364 -0
  1062. package/dist/tools/goofy/findCodePointers.d.ts.map +1 -0
  1063. package/dist/tools/goofy/findCodePointers.js +1764 -0
  1064. package/dist/tools/goofy/findCodePointers.js.map +1 -0
  1065. package/dist/tools/goofy/findMemoryGallery.d.ts +40 -0
  1066. package/dist/tools/goofy/findMemoryGallery.d.ts.map +1 -0
  1067. package/dist/tools/goofy/findMemoryGallery.js +66 -0
  1068. package/dist/tools/goofy/findMemoryGallery.js.map +1 -0
  1069. package/dist/tools/goofy/findWhatISaid.d.ts +300 -0
  1070. package/dist/tools/goofy/findWhatISaid.d.ts.map +1 -0
  1071. package/dist/tools/goofy/findWhatISaid.js +2547 -0
  1072. package/dist/tools/goofy/findWhatISaid.js.map +1 -0
  1073. package/dist/tools/goofy/forceResync.d.ts +57 -0
  1074. package/dist/tools/goofy/forceResync.d.ts.map +1 -0
  1075. package/dist/tools/goofy/forceResync.js +100 -0
  1076. package/dist/tools/goofy/forceResync.js.map +1 -0
  1077. package/dist/tools/goofy/getActiveTeamMembers.d.ts +48 -0
  1078. package/dist/tools/goofy/getActiveTeamMembers.d.ts.map +1 -0
  1079. package/dist/tools/goofy/getActiveTeamMembers.js +136 -0
  1080. package/dist/tools/goofy/getActiveTeamMembers.js.map +1 -0
  1081. package/dist/tools/goofy/getMemoryFull.d.ts +34 -0
  1082. package/dist/tools/goofy/getMemoryFull.d.ts.map +1 -0
  1083. package/dist/tools/goofy/getMemoryFull.js +58 -0
  1084. package/dist/tools/goofy/getMemoryFull.js.map +1 -0
  1085. package/dist/tools/goofy/getSessionWatcherStatus.d.ts +43 -0
  1086. package/dist/tools/goofy/getSessionWatcherStatus.d.ts.map +1 -0
  1087. package/dist/tools/goofy/getSessionWatcherStatus.js +92 -0
  1088. package/dist/tools/goofy/getSessionWatcherStatus.js.map +1 -0
  1089. package/dist/tools/goofy/getTeamMemberOutput.d.ts +35 -0
  1090. package/dist/tools/goofy/getTeamMemberOutput.d.ts.map +1 -0
  1091. package/dist/tools/goofy/getTeamMemberOutput.js +62 -0
  1092. package/dist/tools/goofy/getTeamMemberOutput.js.map +1 -0
  1093. package/dist/tools/goofy/getTeamMemberScreen.d.ts +28 -0
  1094. package/dist/tools/goofy/getTeamMemberScreen.d.ts.map +1 -0
  1095. package/dist/tools/goofy/getTeamMemberScreen.js +59 -0
  1096. package/dist/tools/goofy/getTeamMemberScreen.js.map +1 -0
  1097. package/dist/tools/goofy/getTeamMemberStatus.d.ts +33 -0
  1098. package/dist/tools/goofy/getTeamMemberStatus.d.ts.map +1 -0
  1099. package/dist/tools/goofy/getTeamMemberStatus.js +56 -0
  1100. package/dist/tools/goofy/getTeamMemberStatus.js.map +1 -0
  1101. package/dist/tools/goofy/index.d.ts +39 -0
  1102. package/dist/tools/goofy/index.d.ts.map +1 -0
  1103. package/dist/tools/goofy/index.js +51 -0
  1104. package/dist/tools/goofy/index.js.map +1 -0
  1105. package/dist/tools/goofy/interveneTeamMember.d.ts +33 -0
  1106. package/dist/tools/goofy/interveneTeamMember.d.ts.map +1 -0
  1107. package/dist/tools/goofy/interveneTeamMember.js +69 -0
  1108. package/dist/tools/goofy/interveneTeamMember.js.map +1 -0
  1109. package/dist/tools/goofy/killDeployedTeamMember.d.ts +29 -0
  1110. package/dist/tools/goofy/killDeployedTeamMember.d.ts.map +1 -0
  1111. package/dist/tools/goofy/killDeployedTeamMember.js +56 -0
  1112. package/dist/tools/goofy/killDeployedTeamMember.js.map +1 -0
  1113. package/dist/tools/goofy/linkTheVibes.d.ts +125 -0
  1114. package/dist/tools/goofy/linkTheVibes.d.ts.map +1 -0
  1115. package/dist/tools/goofy/linkTheVibes.js +354 -0
  1116. package/dist/tools/goofy/linkTheVibes.js.map +1 -0
  1117. package/dist/tools/goofy/listDeployedTeamMembers.d.ts +26 -0
  1118. package/dist/tools/goofy/listDeployedTeamMembers.d.ts.map +1 -0
  1119. package/dist/tools/goofy/listDeployedTeamMembers.js +52 -0
  1120. package/dist/tools/goofy/listDeployedTeamMembers.js.map +1 -0
  1121. package/dist/tools/goofy/listenForMessages.d.ts +56 -0
  1122. package/dist/tools/goofy/listenForMessages.d.ts.map +1 -0
  1123. package/dist/tools/goofy/listenForMessages.js +122 -0
  1124. package/dist/tools/goofy/listenForMessages.js.map +1 -0
  1125. package/dist/tools/goofy/memoryHealthCheck.d.ts +159 -0
  1126. package/dist/tools/goofy/memoryHealthCheck.d.ts.map +1 -0
  1127. package/dist/tools/goofy/memoryHealthCheck.js +443 -0
  1128. package/dist/tools/goofy/memoryHealthCheck.js.map +1 -0
  1129. package/dist/tools/goofy/rememberThisShit.d.ts +103 -0
  1130. package/dist/tools/goofy/rememberThisShit.d.ts.map +1 -0
  1131. package/dist/tools/goofy/rememberThisShit.js +291 -0
  1132. package/dist/tools/goofy/rememberThisShit.js.map +1 -0
  1133. package/dist/tools/goofy/sayToTeamMember.d.ts +55 -0
  1134. package/dist/tools/goofy/sayToTeamMember.d.ts.map +1 -0
  1135. package/dist/tools/goofy/sayToTeamMember.js +116 -0
  1136. package/dist/tools/goofy/sayToTeamMember.js.map +1 -0
  1137. package/dist/tools/goofy/selfMessage.d.ts +54 -0
  1138. package/dist/tools/goofy/selfMessage.d.ts.map +1 -0
  1139. package/dist/tools/goofy/selfMessage.js +111 -0
  1140. package/dist/tools/goofy/selfMessage.js.map +1 -0
  1141. package/dist/tools/goofy/sendHeartbeat.d.ts +53 -0
  1142. package/dist/tools/goofy/sendHeartbeat.d.ts.map +1 -0
  1143. package/dist/tools/goofy/sendHeartbeat.js +119 -0
  1144. package/dist/tools/goofy/sendHeartbeat.js.map +1 -0
  1145. package/dist/tools/goofy/showMeTheStats.d.ts +216 -0
  1146. package/dist/tools/goofy/showMeTheStats.d.ts.map +1 -0
  1147. package/dist/tools/goofy/showMeTheStats.js +535 -0
  1148. package/dist/tools/goofy/showMeTheStats.js.map +1 -0
  1149. package/dist/tools/goofy/smartRecall.d.ts +136 -0
  1150. package/dist/tools/goofy/smartRecall.d.ts.map +1 -0
  1151. package/dist/tools/goofy/smartRecall.js +286 -0
  1152. package/dist/tools/goofy/smartRecall.js.map +1 -0
  1153. package/dist/tools/goofy/smartSearch.d.ts +64 -0
  1154. package/dist/tools/goofy/smartSearch.d.ts.map +1 -0
  1155. package/dist/tools/goofy/smartSearch.js +89 -0
  1156. package/dist/tools/goofy/smartSearch.js.map +1 -0
  1157. package/dist/tools/goofy/smushMemoriesTogether.d.ts +128 -0
  1158. package/dist/tools/goofy/smushMemoriesTogether.d.ts.map +1 -0
  1159. package/dist/tools/goofy/smushMemoriesTogether.js +536 -0
  1160. package/dist/tools/goofy/smushMemoriesTogether.js.map +1 -0
  1161. package/dist/tools/goofy/spatialSearch.d.ts +198 -0
  1162. package/dist/tools/goofy/spatialSearch.d.ts.map +1 -0
  1163. package/dist/tools/goofy/spatialSearch.js +551 -0
  1164. package/dist/tools/goofy/spatialSearch.js.map +1 -0
  1165. package/dist/tools/goofy/spawnResearchTeamMember.d.ts +104 -0
  1166. package/dist/tools/goofy/spawnResearchTeamMember.d.ts.map +1 -0
  1167. package/dist/tools/goofy/spawnResearchTeamMember.js +290 -0
  1168. package/dist/tools/goofy/spawnResearchTeamMember.js.map +1 -0
  1169. package/dist/tools/goofy/spawnResearchTeamMemberTool.d.ts +121 -0
  1170. package/dist/tools/goofy/spawnResearchTeamMemberTool.d.ts.map +1 -0
  1171. package/dist/tools/goofy/spawnResearchTeamMemberTool.js +215 -0
  1172. package/dist/tools/goofy/spawnResearchTeamMemberTool.js.map +1 -0
  1173. package/dist/tools/goofy/startWatchingTheFiles.d.ts +81 -0
  1174. package/dist/tools/goofy/startWatchingTheFiles.d.ts.map +1 -0
  1175. package/dist/tools/goofy/startWatchingTheFiles.js +161 -0
  1176. package/dist/tools/goofy/startWatchingTheFiles.js.map +1 -0
  1177. package/dist/tools/goofy/stopWatchingTheFiles.d.ts +50 -0
  1178. package/dist/tools/goofy/stopWatchingTheFiles.d.ts.map +1 -0
  1179. package/dist/tools/goofy/stopWatchingTheFiles.js +81 -0
  1180. package/dist/tools/goofy/stopWatchingTheFiles.js.map +1 -0
  1181. package/dist/tools/goofy/whatDidIMean.d.ts +113 -0
  1182. package/dist/tools/goofy/whatDidIMean.d.ts.map +1 -0
  1183. package/dist/tools/goofy/whatDidIMean.js +401 -0
  1184. package/dist/tools/goofy/whatDidIMean.js.map +1 -0
  1185. package/dist/tools/goofy/yeahNahDeleteThat.d.ts +109 -0
  1186. package/dist/tools/goofy/yeahNahDeleteThat.d.ts.map +1 -0
  1187. package/dist/tools/goofy/yeahNahDeleteThat.js +319 -0
  1188. package/dist/tools/goofy/yeahNahDeleteThat.js.map +1 -0
  1189. package/dist/tools/index.d.ts +9 -0
  1190. package/dist/tools/index.d.ts.map +1 -0
  1191. package/dist/tools/index.js +9 -0
  1192. package/dist/tools/index.js.map +1 -0
  1193. package/dist/tools/teamMemberDeployer.d.ts +117 -0
  1194. package/dist/tools/teamMemberDeployer.d.ts.map +1 -0
  1195. package/dist/tools/teamMemberDeployer.js +613 -0
  1196. package/dist/tools/teamMemberDeployer.js.map +1 -0
  1197. package/dist/trace/index.d.ts +14 -0
  1198. package/dist/trace/index.d.ts.map +1 -0
  1199. package/dist/trace/index.js +16 -0
  1200. package/dist/trace/index.js.map +1 -0
  1201. package/dist/trace/tools/analyzeImpact.d.ts +90 -0
  1202. package/dist/trace/tools/analyzeImpact.d.ts.map +1 -0
  1203. package/dist/trace/tools/analyzeImpact.js +240 -0
  1204. package/dist/trace/tools/analyzeImpact.js.map +1 -0
  1205. package/dist/trace/tools/exploreDependencies.d.ts +81 -0
  1206. package/dist/trace/tools/exploreDependencies.d.ts.map +1 -0
  1207. package/dist/trace/tools/exploreDependencies.js +161 -0
  1208. package/dist/trace/tools/exploreDependencies.js.map +1 -0
  1209. package/dist/trace/tools/findSimilarBugs.d.ts +112 -0
  1210. package/dist/trace/tools/findSimilarBugs.d.ts.map +1 -0
  1211. package/dist/trace/tools/findSimilarBugs.js +216 -0
  1212. package/dist/trace/tools/findSimilarBugs.js.map +1 -0
  1213. package/dist/trace/tools/index.d.ts +22 -0
  1214. package/dist/trace/tools/index.d.ts.map +1 -0
  1215. package/dist/trace/tools/index.js +39 -0
  1216. package/dist/trace/tools/index.js.map +1 -0
  1217. package/dist/trace/tools/smartExplore.d.ts +126 -0
  1218. package/dist/trace/tools/smartExplore.d.ts.map +1 -0
  1219. package/dist/trace/tools/smartExplore.js +303 -0
  1220. package/dist/trace/tools/smartExplore.js.map +1 -0
  1221. package/dist/trace/tools/traceError.d.ts +101 -0
  1222. package/dist/trace/tools/traceError.d.ts.map +1 -0
  1223. package/dist/trace/tools/traceError.js +175 -0
  1224. package/dist/trace/tools/traceError.js.map +1 -0
  1225. package/dist/trace/traceExploreSystem.d.ts +271 -0
  1226. package/dist/trace/traceExploreSystem.d.ts.map +1 -0
  1227. package/dist/trace/traceExploreSystem.js +789 -0
  1228. package/dist/trace/traceExploreSystem.js.map +1 -0
  1229. package/dist/types/index.d.ts +421 -0
  1230. package/dist/types/index.d.ts.map +1 -0
  1231. package/dist/types/index.js +118 -0
  1232. package/dist/types/index.js.map +1 -0
  1233. package/dist/utils/circuitBreaker.d.ts +195 -0
  1234. package/dist/utils/circuitBreaker.d.ts.map +1 -0
  1235. package/dist/utils/circuitBreaker.js +374 -0
  1236. package/dist/utils/circuitBreaker.js.map +1 -0
  1237. package/dist/utils/cleanupHandler.d.ts +108 -0
  1238. package/dist/utils/cleanupHandler.d.ts.map +1 -0
  1239. package/dist/utils/cleanupHandler.js +203 -0
  1240. package/dist/utils/cleanupHandler.js.map +1 -0
  1241. package/dist/utils/compactXmlResponse.d.ts +60 -0
  1242. package/dist/utils/compactXmlResponse.d.ts.map +1 -0
  1243. package/dist/utils/compactXmlResponse.js +209 -0
  1244. package/dist/utils/compactXmlResponse.js.map +1 -0
  1245. package/dist/utils/cotBroadcast.d.ts +56 -0
  1246. package/dist/utils/cotBroadcast.d.ts.map +1 -0
  1247. package/dist/utils/cotBroadcast.js +157 -0
  1248. package/dist/utils/cotBroadcast.js.map +1 -0
  1249. package/dist/utils/debugLogger.d.ts +95 -0
  1250. package/dist/utils/debugLogger.d.ts.map +1 -0
  1251. package/dist/utils/debugLogger.js +610 -0
  1252. package/dist/utils/debugLogger.js.map +1 -0
  1253. package/dist/utils/fileProcessingQueue.d.ts +259 -0
  1254. package/dist/utils/fileProcessingQueue.d.ts.map +1 -0
  1255. package/dist/utils/fileProcessingQueue.js +714 -0
  1256. package/dist/utils/fileProcessingQueue.js.map +1 -0
  1257. package/dist/utils/humanReadableOutput.d.ts +124 -0
  1258. package/dist/utils/humanReadableOutput.d.ts.map +1 -0
  1259. package/dist/utils/humanReadableOutput.js +340 -0
  1260. package/dist/utils/humanReadableOutput.js.map +1 -0
  1261. package/dist/utils/index.d.ts +32 -0
  1262. package/dist/utils/index.d.ts.map +1 -0
  1263. package/dist/utils/index.js +71 -0
  1264. package/dist/utils/index.js.map +1 -0
  1265. package/dist/utils/instanceManager.d.ts +530 -0
  1266. package/dist/utils/instanceManager.d.ts.map +1 -0
  1267. package/dist/utils/instanceManager.js +1784 -0
  1268. package/dist/utils/instanceManager.js.map +1 -0
  1269. package/dist/utils/logger.d.ts +6 -0
  1270. package/dist/utils/logger.d.ts.map +1 -0
  1271. package/dist/utils/logger.js +49 -0
  1272. package/dist/utils/logger.js.map +1 -0
  1273. package/dist/utils/mapCleanup.d.ts +58 -0
  1274. package/dist/utils/mapCleanup.d.ts.map +1 -0
  1275. package/dist/utils/mapCleanup.js +150 -0
  1276. package/dist/utils/mapCleanup.js.map +1 -0
  1277. package/dist/utils/memoryManager.d.ts +349 -0
  1278. package/dist/utils/memoryManager.d.ts.map +1 -0
  1279. package/dist/utils/memoryManager.js +799 -0
  1280. package/dist/utils/memoryManager.js.map +1 -0
  1281. package/dist/utils/metrics.d.ts +160 -0
  1282. package/dist/utils/metrics.d.ts.map +1 -0
  1283. package/dist/utils/metrics.js +558 -0
  1284. package/dist/utils/metrics.js.map +1 -0
  1285. package/dist/utils/pathValidator.d.ts +96 -0
  1286. package/dist/utils/pathValidator.d.ts.map +1 -0
  1287. package/dist/utils/pathValidator.js +320 -0
  1288. package/dist/utils/pathValidator.js.map +1 -0
  1289. package/dist/utils/portAllocator.d.ts +296 -0
  1290. package/dist/utils/portAllocator.d.ts.map +1 -0
  1291. package/dist/utils/portAllocator.js +768 -0
  1292. package/dist/utils/portAllocator.js.map +1 -0
  1293. package/dist/utils/portUtils.d.ts +97 -0
  1294. package/dist/utils/portUtils.d.ts.map +1 -0
  1295. package/dist/utils/portUtils.js +285 -0
  1296. package/dist/utils/portUtils.js.map +1 -0
  1297. package/dist/utils/postgresAutoSetup.d.ts +55 -0
  1298. package/dist/utils/postgresAutoSetup.d.ts.map +1 -0
  1299. package/dist/utils/postgresAutoSetup.js +406 -0
  1300. package/dist/utils/postgresAutoSetup.js.map +1 -0
  1301. package/dist/utils/processHealthCheck.d.ts +61 -0
  1302. package/dist/utils/processHealthCheck.d.ts.map +1 -0
  1303. package/dist/utils/processHealthCheck.js +313 -0
  1304. package/dist/utils/processHealthCheck.js.map +1 -0
  1305. package/dist/utils/progressReporter.d.ts +151 -0
  1306. package/dist/utils/progressReporter.d.ts.map +1 -0
  1307. package/dist/utils/progressReporter.js +345 -0
  1308. package/dist/utils/progressReporter.js.map +1 -0
  1309. package/dist/utils/projectEnv.d.ts +73 -0
  1310. package/dist/utils/projectEnv.d.ts.map +1 -0
  1311. package/dist/utils/projectEnv.js +137 -0
  1312. package/dist/utils/projectEnv.js.map +1 -0
  1313. package/dist/utils/qoms.d.ts +122 -0
  1314. package/dist/utils/qoms.d.ts.map +1 -0
  1315. package/dist/utils/qoms.js +650 -0
  1316. package/dist/utils/qoms.js.map +1 -0
  1317. package/dist/utils/retryHelper.d.ts +122 -0
  1318. package/dist/utils/retryHelper.d.ts.map +1 -0
  1319. package/dist/utils/retryHelper.js +272 -0
  1320. package/dist/utils/retryHelper.js.map +1 -0
  1321. package/dist/utils/safeProcessTermination.d.ts +206 -0
  1322. package/dist/utils/safeProcessTermination.d.ts.map +1 -0
  1323. package/dist/utils/safeProcessTermination.js +552 -0
  1324. package/dist/utils/safeProcessTermination.js.map +1 -0
  1325. package/dist/utils/sessionInjector.d.ts +68 -0
  1326. package/dist/utils/sessionInjector.d.ts.map +1 -0
  1327. package/dist/utils/sessionInjector.js +189 -0
  1328. package/dist/utils/sessionInjector.js.map +1 -0
  1329. package/dist/utils/statsCache.d.ts +134 -0
  1330. package/dist/utils/statsCache.d.ts.map +1 -0
  1331. package/dist/utils/statsCache.js +285 -0
  1332. package/dist/utils/statsCache.js.map +1 -0
  1333. package/dist/utils/timeoutMiddleware.d.ts +81 -0
  1334. package/dist/utils/timeoutMiddleware.d.ts.map +1 -0
  1335. package/dist/utils/timeoutMiddleware.js +155 -0
  1336. package/dist/utils/timeoutMiddleware.js.map +1 -0
  1337. package/dist/utils/timerRegistry.d.ts +91 -0
  1338. package/dist/utils/timerRegistry.d.ts.map +1 -0
  1339. package/dist/utils/timerRegistry.js +187 -0
  1340. package/dist/utils/timerRegistry.js.map +1 -0
  1341. package/dist/utils/tokenCompressor.d.ts +332 -0
  1342. package/dist/utils/tokenCompressor.d.ts.map +1 -0
  1343. package/dist/utils/tokenCompressor.js +1306 -0
  1344. package/dist/utils/tokenCompressor.js.map +1 -0
  1345. package/dist/utils/tracing.d.ts +236 -0
  1346. package/dist/utils/tracing.d.ts.map +1 -0
  1347. package/dist/utils/tracing.js +378 -0
  1348. package/dist/utils/tracing.js.map +1 -0
  1349. package/dist/watcher/changeHandler.d.ts +123 -0
  1350. package/dist/watcher/changeHandler.d.ts.map +1 -0
  1351. package/dist/watcher/changeHandler.js +623 -0
  1352. package/dist/watcher/changeHandler.js.map +1 -0
  1353. package/dist/watcher/changeQueue.d.ts +133 -0
  1354. package/dist/watcher/changeQueue.d.ts.map +1 -0
  1355. package/dist/watcher/changeQueue.js +355 -0
  1356. package/dist/watcher/changeQueue.js.map +1 -0
  1357. package/dist/watcher/fileWatcher.d.ts +121 -0
  1358. package/dist/watcher/fileWatcher.d.ts.map +1 -0
  1359. package/dist/watcher/fileWatcher.js +531 -0
  1360. package/dist/watcher/fileWatcher.js.map +1 -0
  1361. package/dist/watcher/index.d.ts +94 -0
  1362. package/dist/watcher/index.d.ts.map +1 -0
  1363. package/dist/watcher/index.js +235 -0
  1364. package/dist/watcher/index.js.map +1 -0
  1365. package/dist/watcher/syncChecker.d.ts +93 -0
  1366. package/dist/watcher/syncChecker.d.ts.map +1 -0
  1367. package/dist/watcher/syncChecker.js +401 -0
  1368. package/dist/watcher/syncChecker.js.map +1 -0
  1369. package/dist/watcher/tsCompiler.d.ts +88 -0
  1370. package/dist/watcher/tsCompiler.d.ts.map +1 -0
  1371. package/dist/watcher/tsCompiler.js +212 -0
  1372. package/dist/watcher/tsCompiler.js.map +1 -0
  1373. package/embedding-sandbox/Dockerfile +77 -0
  1374. package/embedding-sandbox/Dockerfile.frankenstein +91 -0
  1375. package/embedding-sandbox/README.md +193 -0
  1376. package/embedding-sandbox/__pycache__/frankenstein-embeddings.cpython-312.pyc +0 -0
  1377. package/embedding-sandbox/__pycache__/frankenstein-embeddings.cpython-313.pyc +0 -0
  1378. package/embedding-sandbox/__pycache__/qqms_v2.cpython-312.pyc +0 -0
  1379. package/embedding-sandbox/__pycache__/qqms_v2.cpython-313.pyc +0 -0
  1380. package/embedding-sandbox/add_js_docs.py +684 -0
  1381. package/embedding-sandbox/build_docs_db.py +239 -0
  1382. package/embedding-sandbox/client.cjs +376 -0
  1383. package/embedding-sandbox/client.ts +913 -0
  1384. package/embedding-sandbox/deploy-frankenstein.sh +240 -0
  1385. package/embedding-sandbox/docker-compose.yml +60 -0
  1386. package/embedding-sandbox/docker-manager.py +325 -0
  1387. package/embedding-sandbox/docs/python_docs.db +0 -0
  1388. package/embedding-sandbox/download-model.mjs +79 -0
  1389. package/embedding-sandbox/download-model.py +28 -0
  1390. package/embedding-sandbox/embedding-supervisor.sh +164 -0
  1391. package/embedding-sandbox/frankenstein-embeddings.py +3940 -0
  1392. package/embedding-sandbox/manage-services.sh +354 -0
  1393. package/embedding-sandbox/overflow_queue.py +345 -0
  1394. package/embedding-sandbox/package.json +17 -0
  1395. package/embedding-sandbox/project_isolation.py +292 -0
  1396. package/embedding-sandbox/qqms_v2.py +967 -0
  1397. package/embedding-sandbox/ram-manager.sh +311 -0
  1398. package/embedding-sandbox/requirements-frankenstein.txt +7 -0
  1399. package/embedding-sandbox/run_js_docs.py +59 -0
  1400. package/embedding-sandbox/seed_docs.py +885 -0
  1401. package/embedding-sandbox/server-batch.mjs +228 -0
  1402. package/embedding-sandbox/server.mjs +389 -0
  1403. package/embedding-sandbox/specmem/sockets/claude-input-state.json +1 -0
  1404. package/embedding-sandbox/specmem/sockets/embedding-death-reason.txt +3 -0
  1405. package/embedding-sandbox/specmem/sockets/seen-sessions.json +1 -0
  1406. package/embedding-sandbox/specmem/sockets/session-start.lock +1 -0
  1407. package/embedding-sandbox/specmem/sockets/session-stops.log +7 -0
  1408. package/embedding-sandbox/start-frankenstein-throttled.sh +98 -0
  1409. package/embedding-sandbox/start-on-demand.sh +116 -0
  1410. package/embedding-sandbox/start-sandbox.sh +237 -0
  1411. package/embedding-sandbox/start-supervised.sh +11 -0
  1412. package/embedding-sandbox/stop-sandbox.sh +51 -0
  1413. package/embedding-sandbox/test-socket.mjs +61 -0
  1414. package/embedding-sandbox/warm-start.sh +353 -0
  1415. package/embedding-sandbox/warm_start_feeder.py +660 -0
  1416. package/legal/README.md +31 -0
  1417. package/legal/anthropic-privacy-center-screenshot-2026-01-30.png +0 -0
  1418. package/legal/anthropic-tos-screenshot-2026-01-30.png +0 -0
  1419. package/lib/codebase-bridge.cjs +308 -0
  1420. package/package.json +136 -0
  1421. package/plugins/specmem-agents/agents/bug-hunter.md +79 -0
  1422. package/plugins/specmem-agents/agents/memory-explorer.md +57 -0
  1423. package/plugins/specmem-agents/agents/team-coordinator.md +82 -0
  1424. package/scripts/auto-updater.cjs +399 -0
  1425. package/scripts/backfill-code-definition-embeddings.ts +440 -0
  1426. package/scripts/backfill-code-embeddings.ts +206 -0
  1427. package/scripts/capture-tos-screenshots.cjs +94 -0
  1428. package/scripts/check-global-install.cjs +67 -0
  1429. package/scripts/cleanup-embedding-servers.sh +25 -0
  1430. package/scripts/dashboard-standalone.sh +369 -0
  1431. package/scripts/deploy-hooks.cjs +1451 -0
  1432. package/scripts/deploy.sh +106 -0
  1433. package/scripts/docker-project-down.sh +83 -0
  1434. package/scripts/docker-project-list.sh +40 -0
  1435. package/scripts/docker-project-up.sh +79 -0
  1436. package/scripts/fast-backfill-embeddings.ts +173 -0
  1437. package/scripts/fast-batch-embedder.cjs +334 -0
  1438. package/scripts/first-run-model-setup.cjs +849 -0
  1439. package/scripts/global-postinstall.cjs +1957 -0
  1440. package/scripts/index-codebase.js +72 -0
  1441. package/scripts/migrate-fix-embeddings.py +110 -0
  1442. package/scripts/migrate-to-project-schemas.ts +525 -0
  1443. package/scripts/optimize-embedding-model.py +324 -0
  1444. package/scripts/optimize-instructions.cjs +530 -0
  1445. package/scripts/pack-docker-images.sh +68 -0
  1446. package/scripts/pack-for-testing.sh +130 -0
  1447. package/scripts/postinstall.cjs +54 -0
  1448. package/scripts/project-env.sh +51 -0
  1449. package/scripts/reset-db.sh +30 -0
  1450. package/scripts/run-indexer.ts +69 -0
  1451. package/scripts/run-migrations.js +47 -0
  1452. package/scripts/setup-db.sh +34 -0
  1453. package/scripts/setup-minimal-schema.sql +143 -0
  1454. package/scripts/skills/code-review.md +44 -0
  1455. package/scripts/skills/debugging.md +56 -0
  1456. package/scripts/skills/specmem-deployteam.md +239 -0
  1457. package/scripts/skills/teammemberskills/EFFICIENT_GREP.md +171 -0
  1458. package/scripts/skills/teammemberskills/task-planning.md +67 -0
  1459. package/scripts/specmem/sockets/session-start.lock +1 -0
  1460. package/scripts/specmem/sockets/session-stops.log +1 -0
  1461. package/scripts/specmem-health.sh +382 -0
  1462. package/scripts/specmem-init.cjs +6935 -0
  1463. package/scripts/strip-debug-logs.cjs +43 -0
  1464. package/scripts/test-mcp-standalone.sh +365 -0
  1465. package/scripts/test-optimized-models.py +166 -0
  1466. package/scripts/verify-embedding-fix.sh +148 -0
  1467. package/skills/code-review.md +44 -0
  1468. package/skills/debugging.md +56 -0
  1469. package/skills/specmem-deployteam.md +239 -0
  1470. package/skills/teammemberskills/EFFICIENT_GREP.md +171 -0
  1471. package/skills/teammemberskills/task-planning.md +67 -0
  1472. package/specmem-health.cjs +522 -0
  1473. package/specmem.env +216 -0
@@ -0,0 +1,1154 @@
1
+ /**
2
+ * CLAUDE CONFIG INJECTOR - ENHANCED AUTO-CONFIGURATION
3
+ * =====================================================
4
+ *
5
+ * Auto-injects SpecMem configuration into Code on startup.
6
+ * This is the CENTRAL entry point for all configuration.
7
+ *
8
+ * Features:
9
+ * - Auto-detects if SpecMem MCP server is configured for current project
10
+ * - Adds MCP server config to ~/.claude/config.json if missing
11
+ * - Deploys hooks to ~/.claude/hooks/
12
+ * - Deploys slash commands to ~/.claude/commands/
13
+ * - Sets required permissions in ~/.claude/settings.json
14
+ * - Sets SPECMEM_PROJECT_PATH for project isolation
15
+ * - Hot-patches running instances via SIGHUP
16
+ * - Fully idempotent - safe to run multiple times
17
+ *
18
+ * Config Hierarchy:
19
+ * - ~/.claude/config.json: MCP server registration (command, args, env)
20
+ * - ~/.claude/settings.json: Hooks, permissions, preferences
21
+ * - ~/.claude/hooks/: Hook script files
22
+ * - ~/.claude/commands/: Slash command .md files
23
+ */
24
+ import * as fs from 'fs';
25
+ import * as path from 'path';
26
+ import * as os from 'os';
27
+ import { execSync } from 'child_process';
28
+ import { fileURLToPath } from 'url';
29
+ import { logger } from '../utils/logger.js';
30
+ // ES module equivalent of __dirname
31
+ const __filename = fileURLToPath(import.meta.url);
32
+ const __dirname = path.dirname(__filename);
33
+ // ============================================================================
34
+ // Path Configuration
35
+ // ============================================================================
36
+ const HOME_DIR = os.homedir();
37
+ const CLAUDE_CONFIG_DIR = path.join(HOME_DIR, '.claude');
38
+ const CONFIG_PATH = path.join(CLAUDE_CONFIG_DIR, 'config.json');
39
+ const SETTINGS_PATH = path.join(CLAUDE_CONFIG_DIR, 'settings.json');
40
+ const HOOKS_DIR = path.join(CLAUDE_CONFIG_DIR, 'hooks');
41
+ const COMMANDS_DIR = path.join(CLAUDE_CONFIG_DIR, 'commands');
42
+ // stores per-project MCP configs in ~/.claude.json under "projects" key
43
+ const CLAUDE_JSON_PATH = path.join(HOME_DIR, '.claude.json');
44
+ // SpecMem directory detection - works from both src/ and dist/
45
+ function getSpecmemRoot() {
46
+ // Check environment variable first
47
+ if (process.env.SPECMEM_ROOT) {
48
+ return process.env.SPECMEM_ROOT;
49
+ }
50
+ // Try to detect from current file location
51
+ // When compiled: dist/init/claudeConfigInjector.js -> need to go up 2 levels
52
+ // When in src: src/init/claudeConfigInjector.ts -> need to go up 2 levels
53
+ const currentDir = __dirname;
54
+ const possibleRoot = path.resolve(currentDir, '..', '..');
55
+ // Verify by checking for bootstrap.js
56
+ const bootstrapPath = path.join(possibleRoot, 'bootstrap.js');
57
+ if (fs.existsSync(bootstrapPath)) {
58
+ return possibleRoot;
59
+ }
60
+ // Fallback to cwd
61
+ return process.cwd();
62
+ }
63
+ const SPECMEM_ROOT = getSpecmemRoot();
64
+ const BOOTSTRAP_PATH = path.join(SPECMEM_ROOT, 'bootstrap.js');
65
+ const SOURCE_HOOKS_DIR = path.join(SPECMEM_ROOT, 'claude-hooks');
66
+ const SOURCE_COMMANDS_DIR = path.join(SPECMEM_ROOT, 'commands');
67
+ // ============================================================================
68
+ // The specmem hooks that should be configured
69
+ // ============================================================================
70
+ // Environment variables for all hooks - MUST include paths!
71
+ // NOTE: Socket paths are per-project at {PROJECT}/specmem/sockets/
72
+ const HOOK_ENV = {
73
+ SPECMEM_HOME: path.join(HOME_DIR, '.specmem'), // Dynamic path using os.homedir()
74
+ SPECMEM_PKG: SPECMEM_ROOT, // Use detected package root
75
+ // Per-project socket paths - ${cwd} is expanded at runtime by Code
76
+ SPECMEM_RUN_DIR: '${cwd}/specmem/sockets',
77
+ SPECMEM_EMBEDDING_SOCKET: '${cwd}/specmem/sockets/embeddings.sock',
78
+ SPECMEM_PROJECT_PATH: '${cwd}', // Dynamically set by Code
79
+ SPECMEM_SEARCH_LIMIT: '5',
80
+ SPECMEM_THRESHOLD: '0.30',
81
+ SPECMEM_MAX_CONTENT: '200'
82
+ };
83
+ // ============================================================================
84
+ // Permissions SpecMem needs auto-allowed
85
+ // ============================================================================
86
+ const SPECMEM_PERMISSIONS = [
87
+ 'mcp__specmem__*', // All SpecMem MCP tools
88
+ 'Read(*)', // File reading for context
89
+ 'Grep(*)', // Code search
90
+ 'Glob(*)' // File pattern matching
91
+ ];
92
+ // ============================================================================
93
+ // JSON File Utilities
94
+ // ============================================================================
95
+ function safeReadJson(filePath, defaultValue) {
96
+ try {
97
+ if (!fs.existsSync(filePath)) {
98
+ return defaultValue;
99
+ }
100
+ const content = fs.readFileSync(filePath, 'utf-8');
101
+ return JSON.parse(content);
102
+ }
103
+ catch (err) {
104
+ logger.warn({ filePath, err }, '[ConfigInjector] Could not read JSON file');
105
+ return defaultValue;
106
+ }
107
+ }
108
+ function safeWriteJson(filePath, data) {
109
+ try {
110
+ // Ensure directory exists
111
+ const dir = path.dirname(filePath);
112
+ if (!fs.existsSync(dir)) {
113
+ fs.mkdirSync(dir, { recursive: true, mode: 0o755 });
114
+ }
115
+ // Create backup if file exists
116
+ if (fs.existsSync(filePath)) {
117
+ const backupPath = `${filePath}.backup.${Date.now()}`;
118
+ fs.copyFileSync(filePath, backupPath);
119
+ cleanupOldBackups(filePath, 3);
120
+ }
121
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf-8');
122
+ return true;
123
+ }
124
+ catch (err) {
125
+ logger.error({ filePath, err }, '[ConfigInjector] Failed to write JSON');
126
+ return false;
127
+ }
128
+ }
129
+ function cleanupOldBackups(basePath, keepCount) {
130
+ try {
131
+ const dir = path.dirname(basePath);
132
+ const baseName = path.basename(basePath);
133
+ const files = fs.readdirSync(dir);
134
+ const backups = files
135
+ .filter(f => f.startsWith(`${baseName}.backup.`))
136
+ .sort()
137
+ .reverse();
138
+ for (let i = keepCount; i < backups.length; i++) {
139
+ fs.unlinkSync(path.join(dir, backups[i]));
140
+ }
141
+ }
142
+ catch {
143
+ // Ignore cleanup errors
144
+ }
145
+ }
146
+ // ============================================================================
147
+ // MCP Server Configuration (config.json)
148
+ // ============================================================================
149
+ /**
150
+ * Check if SpecMem MCP server is configured for the current project
151
+ */
152
+ export function isSpecmemMcpConfigured(projectPath) {
153
+ const config = safeReadJson(CONFIG_PATH, {});
154
+ if (!config.mcpServers?.specmem) {
155
+ return false;
156
+ }
157
+ const specmem = config.mcpServers.specmem;
158
+ // Check if it points to a valid bootstrap.js
159
+ if (!specmem.args || specmem.args.length < 2) {
160
+ return false;
161
+ }
162
+ const bootstrapArg = specmem.args[1];
163
+ // Check if bootstrap exists
164
+ if (!fs.existsSync(bootstrapArg)) {
165
+ return false;
166
+ }
167
+ // If projectPath specified, check if env has correct project path
168
+ if (projectPath) {
169
+ const configuredPath = specmem.env?.SPECMEM_PROJECT_PATH;
170
+ // ${PWD} is expanded at runtime by Code, so it's valid
171
+ if (configuredPath && configuredPath !== '${PWD}' && configuredPath !== projectPath) {
172
+ return false;
173
+ }
174
+ }
175
+ return true;
176
+ }
177
+ /**
178
+ * Configure SpecMem MCP server in config.json
179
+ * Returns true if changes were made
180
+ */
181
+ function configureMcpServer() {
182
+ // Verify bootstrap.js exists
183
+ if (!fs.existsSync(BOOTSTRAP_PATH)) {
184
+ return {
185
+ configured: false,
186
+ error: `bootstrap.js not found at ${BOOTSTRAP_PATH}`
187
+ };
188
+ }
189
+ const config = safeReadJson(CONFIG_PATH, {});
190
+ if (!config.mcpServers) {
191
+ config.mcpServers = {};
192
+ }
193
+ // Build the SpecMem MCP server config
194
+ // CRITICAL: ${cwd} is expanded by Code at runtime to current working directory
195
+ // NOTE: ${PWD} resolves at MCP server startup, ${cwd} resolves per-invocation
196
+ const specmemConfig = {
197
+ command: 'node',
198
+ args: ['--max-old-space-size=250', BOOTSTRAP_PATH],
199
+ env: {
200
+ // Core paths - ${cwd} gives us project isolation (dynamic per-directory)
201
+ HOME: HOME_DIR,
202
+ SPECMEM_PROJECT_PATH: '${cwd}',
203
+ SPECMEM_WATCHER_ROOT_PATH: '${cwd}',
204
+ SPECMEM_CODEBASE_PATH: '${cwd}',
205
+ // Database (use environment values or defaults)
206
+ SPECMEM_DB_HOST: process.env.SPECMEM_DB_HOST || 'localhost',
207
+ SPECMEM_DB_PORT: process.env.SPECMEM_DB_PORT || '5432',
208
+ // Watchers enabled by default
209
+ SPECMEM_SESSION_WATCHER_ENABLED: 'true',
210
+ SPECMEM_WATCHER_ENABLED: 'true',
211
+ // Dashboard
212
+ SPECMEM_DASHBOARD_ENABLED: 'true',
213
+ SPECMEM_DASHBOARD_PORT: process.env.SPECMEM_DASHBOARD_PORT || '8595',
214
+ }
215
+ };
216
+ // Check if update needed - compare serialized configs
217
+ const existing = config.mcpServers.specmem;
218
+ const needsUpdate = !existing ||
219
+ existing.args?.[1] !== BOOTSTRAP_PATH ||
220
+ !existing.env?.SPECMEM_PROJECT_PATH;
221
+ if (!needsUpdate) {
222
+ return { configured: false }; // Already correctly configured
223
+ }
224
+ // Update config
225
+ config.mcpServers.specmem = specmemConfig;
226
+ if (safeWriteJson(CONFIG_PATH, config)) {
227
+ logger.info({ path: CONFIG_PATH, bootstrap: BOOTSTRAP_PATH }, '[ConfigInjector] MCP server configured in config.json');
228
+ return { configured: true };
229
+ }
230
+ return { configured: false, error: 'Failed to write config.json' };
231
+ }
232
+ // ============================================================================
233
+ // Project-Level MCP Config Fixer
234
+ // ============================================================================
235
+ /**
236
+ * Fix outdated specmem MCP configs in ~/.claude.json
237
+ *
238
+ * stores per-project MCP configs in ~/.claude.json under "projects" key.
239
+ * Old specmem installations may have left stale paths that point to non-existent
240
+ * locations. This function scans all project entries and fixes specmem configs
241
+ * to point to the current BOOTSTRAP_PATH.
242
+ *
243
+ * @returns Number of project configs that were fixed
244
+ */
245
+ function fixProjectMcpConfigs() {
246
+ const errors = [];
247
+ let fixed = 0;
248
+ // Read ~/.claude.json
249
+ if (!fs.existsSync(CLAUDE_JSON_PATH)) {
250
+ return { fixed: 0, errors: [] }; // No file = nothing to fix
251
+ }
252
+ let claudeJson;
253
+ try {
254
+ const content = fs.readFileSync(CLAUDE_JSON_PATH, 'utf-8');
255
+ claudeJson = JSON.parse(content);
256
+ }
257
+ catch (err) {
258
+ return { fixed: 0, errors: [`Failed to read ${CLAUDE_JSON_PATH}: ${err}`] };
259
+ }
260
+ // Check for projects section
261
+ if (!claudeJson.projects || typeof claudeJson.projects !== 'object') {
262
+ return { fixed: 0, errors: [] }; // No projects = nothing to fix
263
+ }
264
+ let modified = false;
265
+ // Scan all project entries
266
+ for (const [projectPath, projectConfig] of Object.entries(claudeJson.projects)) {
267
+ const config = projectConfig;
268
+ // Check if this project has a specmem MCP server config
269
+ if (config?.mcpServers?.specmem) {
270
+ const specmem = config.mcpServers.specmem;
271
+ const args = specmem.args || [];
272
+ // Check if the args contain an outdated specmem path
273
+ let needsUpdate = false;
274
+ const updatedArgs = args.map((arg) => {
275
+ if (typeof arg === 'string' &&
276
+ arg.includes('specmem') &&
277
+ arg !== BOOTSTRAP_PATH &&
278
+ (arg.endsWith('index.js') || arg.endsWith('bootstrap.js'))) {
279
+ needsUpdate = true;
280
+ return BOOTSTRAP_PATH;
281
+ }
282
+ return arg;
283
+ });
284
+ if (needsUpdate) {
285
+ // Update the args
286
+ specmem.args = updatedArgs;
287
+ // Ensure SPECMEM_PROJECT_PATH is set to actual project path
288
+ // CRITICAL: ${PWD} doesn't get expanded by Code, use literal path
289
+ if (!specmem.env) {
290
+ specmem.env = {};
291
+ }
292
+ if (!specmem.env.SPECMEM_PROJECT_PATH || specmem.env.SPECMEM_PROJECT_PATH === '${PWD}' || specmem.env.SPECMEM_PROJECT_PATH === '${cwd}') {
293
+ specmem.env.SPECMEM_PROJECT_PATH = projectPath; // Use the actual project path key
294
+ }
295
+ logger.info({ projectPath, oldArgs: args, newArgs: updatedArgs }, '[ConfigInjector] Fixed outdated specmem path in project config');
296
+ fixed++;
297
+ modified = true;
298
+ }
299
+ }
300
+ }
301
+ // Write back if modified
302
+ if (modified) {
303
+ try {
304
+ fs.writeFileSync(CLAUDE_JSON_PATH, JSON.stringify(claudeJson, null, 2));
305
+ logger.info({ path: CLAUDE_JSON_PATH, projectsFixed: fixed }, '[ConfigInjector] Updated project-level MCP configs');
306
+ }
307
+ catch (err) {
308
+ errors.push(`Failed to write ${CLAUDE_JSON_PATH}: ${err}`);
309
+ }
310
+ }
311
+ return { fixed, errors };
312
+ }
313
+ // ============================================================================
314
+ // Hook Files Deployment
315
+ // ============================================================================
316
+ /**
317
+ * Copy hook files from source to ~/.claude/hooks/
318
+ * Only copies if content differs (idempotent)
319
+ */
320
+ function deployHooks() {
321
+ const copied = [];
322
+ const errors = [];
323
+ // Ensure target directory exists
324
+ if (!fs.existsSync(HOOKS_DIR)) {
325
+ try {
326
+ fs.mkdirSync(HOOKS_DIR, { recursive: true, mode: 0o755 });
327
+ }
328
+ catch (err) {
329
+ return { copied: [], errors: [`Could not create hooks dir: ${err}`] };
330
+ }
331
+ }
332
+ // Check source directory
333
+ if (!fs.existsSync(SOURCE_HOOKS_DIR)) {
334
+ return { copied: [], errors: [`Source hooks dir not found: ${SOURCE_HOOKS_DIR}`] };
335
+ }
336
+ // Copy all hook files (including .js for CommonJS compatibility)
337
+ try {
338
+ const files = fs.readdirSync(SOURCE_HOOKS_DIR);
339
+ for (const file of files) {
340
+ if (file.endsWith('.js') || file.endsWith('.cjs') || file.endsWith('.py') || file.endsWith('.sh') || file.endsWith('.json')) {
341
+ const srcPath = path.join(SOURCE_HOOKS_DIR, file);
342
+ const dstPath = path.join(HOOKS_DIR, file);
343
+ try {
344
+ // Check if update needed
345
+ let needsCopy = true;
346
+ if (fs.existsSync(dstPath)) {
347
+ const srcContent = fs.readFileSync(srcPath, 'utf-8');
348
+ const dstContent = fs.readFileSync(dstPath, 'utf-8');
349
+ needsCopy = srcContent !== dstContent;
350
+ }
351
+ if (needsCopy) {
352
+ fs.copyFileSync(srcPath, dstPath);
353
+ // Make executable for scripts (not JSON data files)
354
+ if (!file.endsWith('.json')) {
355
+ fs.chmodSync(dstPath, 0o755);
356
+ }
357
+ copied.push(file);
358
+ }
359
+ }
360
+ catch (err) {
361
+ errors.push(`Could not copy ${file}: ${err}`);
362
+ }
363
+ }
364
+ }
365
+ }
366
+ catch (err) {
367
+ errors.push(`Could not read source dir: ${err}`);
368
+ }
369
+ return { copied, errors };
370
+ }
371
+ // ============================================================================
372
+ // Command Files Deployment
373
+ // ============================================================================
374
+ /**
375
+ * Copy slash command files from source to ~/.claude/commands/
376
+ */
377
+ function deployCommands() {
378
+ const copied = [];
379
+ const errors = [];
380
+ // Ensure target directory exists
381
+ if (!fs.existsSync(COMMANDS_DIR)) {
382
+ try {
383
+ fs.mkdirSync(COMMANDS_DIR, { recursive: true, mode: 0o755 });
384
+ }
385
+ catch (err) {
386
+ return { copied: [], errors: [`Could not create commands dir: ${err}`] };
387
+ }
388
+ }
389
+ // Check source directory
390
+ if (!fs.existsSync(SOURCE_COMMANDS_DIR)) {
391
+ return { copied: [], errors: [`Source commands dir not found: ${SOURCE_COMMANDS_DIR}`] };
392
+ }
393
+ // Remove outdated specmem commands
394
+ try {
395
+ const existingFiles = fs.readdirSync(COMMANDS_DIR);
396
+ for (const file of existingFiles) {
397
+ if (file.startsWith('specmem-') && file.endsWith('.md')) {
398
+ const srcPath = path.join(SOURCE_COMMANDS_DIR, file);
399
+ if (!fs.existsSync(srcPath)) {
400
+ try {
401
+ fs.unlinkSync(path.join(COMMANDS_DIR, file));
402
+ logger.info({ file }, '[ConfigInjector] Removed outdated command');
403
+ }
404
+ catch {
405
+ // Non-fatal
406
+ }
407
+ }
408
+ }
409
+ }
410
+ }
411
+ catch {
412
+ // Non-fatal
413
+ }
414
+ // Copy command files
415
+ try {
416
+ const files = fs.readdirSync(SOURCE_COMMANDS_DIR);
417
+ for (const file of files) {
418
+ if (file.endsWith('.md')) {
419
+ const srcPath = path.join(SOURCE_COMMANDS_DIR, file);
420
+ const dstPath = path.join(COMMANDS_DIR, file);
421
+ try {
422
+ let needsCopy = true;
423
+ if (fs.existsSync(dstPath)) {
424
+ const srcContent = fs.readFileSync(srcPath, 'utf-8');
425
+ const dstContent = fs.readFileSync(dstPath, 'utf-8');
426
+ needsCopy = srcContent !== dstContent;
427
+ }
428
+ if (needsCopy) {
429
+ fs.copyFileSync(srcPath, dstPath);
430
+ copied.push(file.replace('.md', ''));
431
+ }
432
+ }
433
+ catch (err) {
434
+ errors.push(`Could not copy ${file}: ${err}`);
435
+ }
436
+ }
437
+ }
438
+ }
439
+ catch (err) {
440
+ errors.push(`Could not read source dir: ${err}`);
441
+ }
442
+ return { copied, errors };
443
+ }
444
+ // ============================================================================
445
+ // Per-Project Command Deployment
446
+ // ============================================================================
447
+ /**
448
+ * Deploy commands to a specific project's .claude/commands/ directory
449
+ * This enables project-specific command overrides and ensures commands
450
+ * are available even without global installation.
451
+ *
452
+ * @param projectPath - The project root directory
453
+ */
454
+ function deployCommandsToProject(projectPath) {
455
+ const copied = [];
456
+ const errors = [];
457
+ if (!projectPath) {
458
+ return { copied, errors: ['No project path provided'] };
459
+ }
460
+ const projectCommandsDir = path.join(projectPath, '.claude', 'commands');
461
+ // Ensure target directory exists
462
+ if (!fs.existsSync(projectCommandsDir)) {
463
+ try {
464
+ fs.mkdirSync(projectCommandsDir, { recursive: true, mode: 0o755 });
465
+ logger.info({ path: projectCommandsDir }, '[ConfigInjector] Created per-project commands dir');
466
+ }
467
+ catch (err) {
468
+ return { copied: [], errors: [`Could not create project commands dir: ${err}`] };
469
+ }
470
+ }
471
+ // Check source directory
472
+ if (!fs.existsSync(SOURCE_COMMANDS_DIR)) {
473
+ return { copied: [], errors: [`Source commands dir not found: ${SOURCE_COMMANDS_DIR}`] };
474
+ }
475
+ // Copy command files to project
476
+ try {
477
+ const files = fs.readdirSync(SOURCE_COMMANDS_DIR);
478
+ for (const file of files) {
479
+ if (file.endsWith('.md') && file.startsWith('specmem')) {
480
+ const srcPath = path.join(SOURCE_COMMANDS_DIR, file);
481
+ const dstPath = path.join(projectCommandsDir, file);
482
+ try {
483
+ let needsCopy = true;
484
+ if (fs.existsSync(dstPath)) {
485
+ const srcContent = fs.readFileSync(srcPath, 'utf-8');
486
+ const dstContent = fs.readFileSync(dstPath, 'utf-8');
487
+ needsCopy = srcContent !== dstContent;
488
+ }
489
+ if (needsCopy) {
490
+ fs.copyFileSync(srcPath, dstPath);
491
+ copied.push(file.replace('.md', ''));
492
+ }
493
+ }
494
+ catch (err) {
495
+ errors.push(`Could not copy ${file} to project: ${err}`);
496
+ }
497
+ }
498
+ }
499
+ }
500
+ catch (err) {
501
+ errors.push(`Could not read source dir: ${err}`);
502
+ }
503
+ if (copied.length > 0) {
504
+ logger.info({ projectPath, copied }, '[ConfigInjector] Deployed commands to per-project dir');
505
+ }
506
+ return { copied, errors };
507
+ }
508
+ /**
509
+ * Configure per-project settings.local.json
510
+ * This allows project-specific settings without modifying global config
511
+ */
512
+ function configureProjectSettings(projectPath) {
513
+ if (!projectPath) {
514
+ return { updated: false, error: 'No project path provided' };
515
+ }
516
+ const projectSettingsPath = path.join(projectPath, '.claude', 'settings.local.json');
517
+ const projectDir = path.join(projectPath, '.claude');
518
+ // Ensure .claude directory exists
519
+ if (!fs.existsSync(projectDir)) {
520
+ try {
521
+ fs.mkdirSync(projectDir, { recursive: true, mode: 0o755 });
522
+ }
523
+ catch (err) {
524
+ return { updated: false, error: `Could not create .claude dir: ${err}` };
525
+ }
526
+ }
527
+ // Read existing or create new
528
+ let settings = {};
529
+ if (fs.existsSync(projectSettingsPath)) {
530
+ try {
531
+ settings = JSON.parse(fs.readFileSync(projectSettingsPath, 'utf-8'));
532
+ }
533
+ catch {
534
+ settings = {};
535
+ }
536
+ }
537
+ let needsUpdate = false;
538
+ // Ensure MCP permissions are set for this project
539
+ if (!settings.permissions)
540
+ settings.permissions = {};
541
+ if (!settings.permissions.allow)
542
+ settings.permissions.allow = [];
543
+ for (const perm of SPECMEM_PERMISSIONS) {
544
+ if (!settings.permissions.allow.includes(perm)) {
545
+ settings.permissions.allow.push(perm);
546
+ needsUpdate = true;
547
+ }
548
+ }
549
+ // Set default mode to accept edits for smoother experience
550
+ if (!settings.permissions.defaultMode) {
551
+ settings.permissions.defaultMode = 'acceptEdits';
552
+ needsUpdate = true;
553
+ }
554
+ if (!needsUpdate) {
555
+ return { updated: false };
556
+ }
557
+ try {
558
+ fs.writeFileSync(projectSettingsPath, JSON.stringify(settings, null, 2) + '\n');
559
+ logger.info({ path: projectSettingsPath }, '[ConfigInjector] Updated per-project settings');
560
+ return { updated: true };
561
+ }
562
+ catch (err) {
563
+ return { updated: false, error: `Could not write settings: ${err}` };
564
+ }
565
+ }
566
+ // ============================================================================
567
+ // Settings Configuration (settings.json)
568
+ // ============================================================================
569
+ /**
570
+ * Configure hooks and permissions in settings.json
571
+ * Hook format rules from Code source:
572
+ * - UserPromptSubmit, SessionStart, Stop: NO matcher field
573
+ * - PreToolUse, PostToolUse: matcher is a STRING pattern ("*", "Bash", etc.)
574
+ */
575
+ /**
576
+ * MASTER HOOK CONFIGURATION
577
+ * =========================
578
+ * ALL SpecMem hooks are defined here. If a hook is missing from settings.json,
579
+ * it will be added automatically. This ensures consistent configuration.
580
+ */
581
+ function getRequiredHooks() {
582
+ // All hook files with their paths
583
+ const HOOKS = {
584
+ drilldown: path.join(HOOKS_DIR, 'specmem-drilldown-hook.js'),
585
+ smartContext: path.join(HOOKS_DIR, 'smart-context-hook.js'),
586
+ inputAware: path.join(HOOKS_DIR, 'input-aware-improver.js'),
587
+ sessionStart: path.join(HOOKS_DIR, 'specmem-session-start.js'),
588
+ precompact: path.join(HOOKS_DIR, 'specmem-precompact.js'),
589
+ agentLoading: path.join(HOOKS_DIR, 'agent-loading-hook.js'),
590
+ taskProgress: path.join(HOOKS_DIR, 'task-progress-hook.js'),
591
+ subagentLoading: path.join(HOOKS_DIR, 'subagent-loading-hook.js'),
592
+ teamMemberInject: path.join(HOOKS_DIR, 'specmem-team-member-inject.js'),
593
+ agentOutputInterceptor: path.join(HOOKS_DIR, 'agent-output-interceptor.js'),
594
+ // Daemon that monitors and compresses agent output files in real-time
595
+ agentOutputFader: path.join(HOOKS_DIR, 'agent-output-fader.cjs'),
596
+ };
597
+ // Environment for search/context hooks
598
+ const searchEnv = {
599
+ ...HOOK_ENV,
600
+ SPECMEM_SEARCH_LIMIT: '3',
601
+ SPECMEM_THRESHOLD: '0.25',
602
+ SPECMEM_MAX_CONTENT: '150'
603
+ };
604
+ return {
605
+ // =========================================================================
606
+ // UserPromptSubmit - fires when user submits a prompt
607
+ // =========================================================================
608
+ UserPromptSubmit: [
609
+ {
610
+ hooks: [
611
+ // Drilldown hook - provides semantic context from memories
612
+ ...(fs.existsSync(HOOKS.drilldown) ? [{
613
+ type: 'command',
614
+ command: `node ${HOOKS.drilldown}`,
615
+ timeout: 30,
616
+ env: HOOK_ENV
617
+ }] : []),
618
+ // Input-aware improver - enhances prompt understanding
619
+ ...(fs.existsSync(HOOKS.inputAware) ? [{
620
+ type: 'command',
621
+ command: `node ${HOOKS.inputAware}`,
622
+ timeout: 5,
623
+ env: HOOK_ENV
624
+ }] : [])
625
+ ].filter(h => h)
626
+ }
627
+ ],
628
+ // =========================================================================
629
+ // PreToolUse - fires BEFORE a tool is used (can modify input!)
630
+ // =========================================================================
631
+ PreToolUse: [
632
+ // CRITICAL: Agent loading hook for Task tool - injects SpecMem context & auto-backgrounds
633
+ ...(fs.existsSync(HOOKS.agentLoading) ? [{
634
+ matcher: 'Task',
635
+ hooks: [{
636
+ type: 'command',
637
+ command: `node ${HOOKS.agentLoading}`,
638
+ timeout: 10,
639
+ statusMessage: 'Deploying team member...',
640
+ env: HOOK_ENV
641
+ }]
642
+ }] : []),
643
+ // Smart context for Grep
644
+ ...(fs.existsSync(HOOKS.smartContext) ? [{
645
+ matcher: 'Grep',
646
+ hooks: [{
647
+ type: 'command',
648
+ command: `node ${HOOKS.smartContext}`,
649
+ timeout: 8,
650
+ env: searchEnv
651
+ }]
652
+ }] : []),
653
+ // Smart context for Glob
654
+ ...(fs.existsSync(HOOKS.smartContext) ? [{
655
+ matcher: 'Glob',
656
+ hooks: [{
657
+ type: 'command',
658
+ command: `node ${HOOKS.smartContext}`,
659
+ timeout: 8,
660
+ env: searchEnv
661
+ }]
662
+ }] : []),
663
+ // Smart context for Read
664
+ ...(fs.existsSync(HOOKS.smartContext) ? [{
665
+ matcher: 'Read',
666
+ hooks: [{
667
+ type: 'command',
668
+ command: `node ${HOOKS.smartContext}`,
669
+ timeout: 8,
670
+ env: searchEnv
671
+ }]
672
+ }] : []),
673
+ // CRITICAL: Agent output interceptor - blocks wasteful agent output file reads
674
+ // Fires for Read to block direct file reads
675
+ ...(fs.existsSync(HOOKS.agentOutputInterceptor) ? [{
676
+ matcher: 'Read',
677
+ hooks: [{
678
+ type: 'command',
679
+ command: `node ${HOOKS.agentOutputInterceptor}`,
680
+ timeout: 3,
681
+ env: HOOK_ENV
682
+ }]
683
+ }] : []),
684
+ // Also fires for Bash to block tail/cat/head on output files
685
+ ...(fs.existsSync(HOOKS.agentOutputInterceptor) ? [{
686
+ matcher: 'Bash',
687
+ hooks: [{
688
+ type: 'command',
689
+ command: `node ${HOOKS.agentOutputInterceptor}`,
690
+ timeout: 3,
691
+ env: HOOK_ENV
692
+ }]
693
+ }] : [])
694
+ ].filter(h => h.hooks?.length > 0),
695
+ // =========================================================================
696
+ // PostToolUse - fires AFTER a tool completes
697
+ // =========================================================================
698
+ PostToolUse: [
699
+ ...(fs.existsSync(HOOKS.taskProgress) ? [{
700
+ matcher: 'Task',
701
+ hooks: [{
702
+ type: 'command',
703
+ command: `node ${HOOKS.taskProgress}`,
704
+ timeout: 10,
705
+ statusMessage: 'Team member finished',
706
+ env: HOOK_ENV
707
+ }]
708
+ }] : [])
709
+ ].filter(h => h.hooks?.length > 0),
710
+ // =========================================================================
711
+ // SessionStart - fires when Code session starts
712
+ // =========================================================================
713
+ SessionStart: [
714
+ ...(fs.existsSync(HOOKS.sessionStart) ? [{
715
+ hooks: [{
716
+ type: 'command',
717
+ command: `node ${HOOKS.sessionStart}`,
718
+ timeout: 30,
719
+ statusMessage: 'Loading SpecMem context...',
720
+ env: HOOK_ENV
721
+ }]
722
+ }] : []),
723
+ // Start the agent output fader daemon - monitors & compresses agent outputs in real-time
724
+ ...(fs.existsSync(HOOKS.agentOutputFader) ? [{
725
+ hooks: [{
726
+ type: 'command',
727
+ command: `node ${HOOKS.agentOutputFader} --daemon`,
728
+ timeout: 3,
729
+ statusMessage: '🌫️ Starting output fader daemon...',
730
+ env: {}
731
+ }]
732
+ }] : [])
733
+ ].filter(h => h.hooks?.length > 0),
734
+ // =========================================================================
735
+ // PreCompact - fires before context compaction (save memories!)
736
+ // =========================================================================
737
+ PreCompact: [
738
+ ...(fs.existsSync(HOOKS.precompact) ? [{
739
+ hooks: [{
740
+ type: 'command',
741
+ command: `node ${HOOKS.precompact}`,
742
+ timeout: 60,
743
+ statusMessage: 'Saving context before compaction...',
744
+ env: HOOK_ENV
745
+ }]
746
+ }] : [])
747
+ ].filter(h => h.hooks?.length > 0),
748
+ // =========================================================================
749
+ // SubagentStart/Stop - fires when subagents start/finish
750
+ // =========================================================================
751
+ SubagentStart: [
752
+ ...(fs.existsSync(HOOKS.subagentLoading) ? [{
753
+ hooks: [{
754
+ type: 'command',
755
+ command: `node ${HOOKS.subagentLoading}`,
756
+ timeout: 5,
757
+ statusMessage: 'Starting subagent...'
758
+ }]
759
+ }] : [])
760
+ ].filter(h => h.hooks?.length > 0),
761
+ SubagentStop: [
762
+ ...(fs.existsSync(HOOKS.subagentLoading) ? [{
763
+ hooks: [{
764
+ type: 'command',
765
+ command: `node ${HOOKS.subagentLoading}`,
766
+ timeout: 5,
767
+ statusMessage: 'Subagent completed'
768
+ }]
769
+ }] : [])
770
+ ].filter(h => h.hooks?.length > 0),
771
+ // =========================================================================
772
+ // Stop - fires when Code session ends
773
+ // =========================================================================
774
+ Stop: [
775
+ ...(fs.existsSync(HOOKS.drilldown) ? [{
776
+ hooks: [{
777
+ type: 'command',
778
+ command: `node ${HOOKS.drilldown}`,
779
+ timeout: 15,
780
+ env: HOOK_ENV
781
+ }]
782
+ }] : [])
783
+ ].filter(h => h.hooks?.length > 0)
784
+ };
785
+ }
786
+ /**
787
+ * Check if a specific hook exists in settings with the correct command
788
+ */
789
+ function hasHook(hooks, commandSubstring, matcher) {
790
+ if (!hooks || hooks.length === 0)
791
+ return false;
792
+ return hooks.some(entry => {
793
+ // For matchers, check if matcher matches
794
+ if (matcher && entry.matcher !== matcher)
795
+ return false;
796
+ // Check if any hook command includes the substring
797
+ return entry.hooks?.some(h => h.command?.includes(commandSubstring));
798
+ });
799
+ }
800
+ function configureSettings() {
801
+ const settings = safeReadJson(SETTINGS_PATH, {});
802
+ const permissionsAdded = [];
803
+ const hooksAdded = [];
804
+ let needsUpdate = false;
805
+ // Initialize sections
806
+ if (!settings.hooks)
807
+ settings.hooks = {};
808
+ if (!settings.permissions)
809
+ settings.permissions = { allow: [] };
810
+ if (!settings.permissions.allow)
811
+ settings.permissions.allow = [];
812
+ // Get all required hooks
813
+ const requiredHooks = getRequiredHooks();
814
+ // =========================================================================
815
+ // VERIFY AND ADD EACH HOOK TYPE
816
+ // =========================================================================
817
+ for (const [hookType, requiredEntries] of Object.entries(requiredHooks)) {
818
+ if (requiredEntries.length === 0)
819
+ continue;
820
+ const currentHooks = settings.hooks[hookType] || [];
821
+ // Check each required entry
822
+ for (const required of requiredEntries) {
823
+ const hookFile = required.hooks?.[0]?.command?.match(/node (.+\.js)/)?.[1] || '';
824
+ const hookName = path.basename(hookFile, '.js');
825
+ const matcher = required.matcher;
826
+ // Check if this specific hook already exists
827
+ const exists = hasHook(currentHooks, hookName, matcher);
828
+ if (!exists) {
829
+ // Add the missing hook
830
+ if (!settings.hooks[hookType]) {
831
+ settings.hooks[hookType] = [];
832
+ }
833
+ settings.hooks[hookType].push(required);
834
+ hooksAdded.push(`${hookType}:${matcher || 'default'}:${hookName}`);
835
+ needsUpdate = true;
836
+ logger.info({ hookType, hookName, matcher }, '[ConfigInjector] Added missing hook');
837
+ }
838
+ }
839
+ }
840
+ // =========================================================================
841
+ // PERMISSIONS
842
+ // =========================================================================
843
+ for (const perm of SPECMEM_PERMISSIONS) {
844
+ if (!settings.permissions.allow.includes(perm)) {
845
+ settings.permissions.allow.push(perm);
846
+ permissionsAdded.push(perm);
847
+ needsUpdate = true;
848
+ }
849
+ }
850
+ if (!needsUpdate) {
851
+ return { updated: false, permissionsAdded: [], hooksAdded: [] };
852
+ }
853
+ // Log what we're adding
854
+ if (hooksAdded.length > 0) {
855
+ logger.info({ hooksAdded }, '[ConfigInjector] Adding hooks to settings.json');
856
+ }
857
+ if (safeWriteJson(SETTINGS_PATH, settings)) {
858
+ logger.info({ path: SETTINGS_PATH, permissionsAdded, hooksAdded }, '[ConfigInjector] Settings updated');
859
+ return { updated: true, permissionsAdded, hooksAdded };
860
+ }
861
+ return { updated: false, permissionsAdded: [], hooksAdded: [], error: 'Failed to write settings.json' };
862
+ }
863
+ // ============================================================================
864
+ // Hot-Patching Running Instances
865
+ // ============================================================================
866
+ /**
867
+ * Hot-patch running instances by sending SIGHUP
868
+ * This causes them to reload their configuration without restart
869
+ *
870
+ * SAFETY NOTE: This function is intentionally DISABLED by default because it
871
+ * sends signals to ALL processes on the machine, which could affect
872
+ * instances from OTHER projects. This is dangerous in multi-project
873
+ * environments.
874
+ *
875
+ * To enable, set SPECMEM_ENABLE_CLAUDE_HOT_PATCH=true in environment.
876
+ *
877
+ * Even when enabled, we:
878
+ * 1. Skip our own process
879
+ * 2. Skip our parent process (the that spawned us)
880
+ * 3. Log warnings about the cross-project nature of this operation
881
+ */
882
+ function hotPatchRunning() {
883
+ // SAFETY: Disabled by default - opt-in only
884
+ if (process.env['SPECMEM_ENABLE_CLAUDE_HOT_PATCH'] !== 'true') {
885
+ logger.debug('[ConfigInjector] Hot-patching disabled (SPECMEM_ENABLE_CLAUDE_HOT_PATCH != true)');
886
+ return 0;
887
+ }
888
+ let patchedCount = 0;
889
+ // Get our parent PID - this is the that spawned us as MCP server
890
+ // We must NOT signal our parent or we'll kill ourselves!
891
+ const parentPid = process.ppid;
892
+ // SAFETY WARNING: We're about to signal ALL processes
893
+ logger.warn('[ConfigInjector] Hot-patching enabled - this may affect instances from OTHER projects!');
894
+ try {
895
+ // Find all running processes
896
+ const output = execSync('pgrep -f "claude" 2>/dev/null || true', { encoding: 'utf-8' });
897
+ const pids = output.trim().split('\n').filter(Boolean);
898
+ for (const pid of pids) {
899
+ try {
900
+ const pidNum = parseInt(pid, 10);
901
+ // Don't signal ourselves
902
+ if (pidNum === process.pid)
903
+ continue;
904
+ // Don't signal our parent (the that spawned us)!
905
+ if (pidNum === parentPid) {
906
+ logger.debug({ pid: pidNum }, '[ConfigInjector] Skipping parent process');
907
+ continue;
908
+ }
909
+ process.kill(pidNum, 'SIGHUP');
910
+ patchedCount++;
911
+ logger.info({ pid: pidNum }, '[ConfigInjector] Sent SIGHUP to ');
912
+ }
913
+ catch {
914
+ // Process might have exited, ignore
915
+ }
916
+ }
917
+ if (patchedCount > 0) {
918
+ logger.info({ count: patchedCount, skippedParent: parentPid }, '[ConfigInjector] Hot-patched running instances');
919
+ }
920
+ }
921
+ catch {
922
+ logger.debug('[ConfigInjector] No running processes found');
923
+ }
924
+ return patchedCount;
925
+ }
926
+ // ============================================================================
927
+ // Main Injection Function
928
+ // ============================================================================
929
+ /**
930
+ * Main injection function - call this on SpecMem startup
931
+ *
932
+ * This function:
933
+ * 1. Deploys hook files to ~/.claude/hooks/
934
+ * 2. Deploys command files to ~/.claude/commands/ (GLOBAL)
935
+ * 3. Configures MCP server in ~/.claude/config.json
936
+ * 4. Configures hooks and permissions in ~/.claude/settings.json
937
+ * 4.5. Deploys commands to {PROJECT}/.claude/commands/ (PER-PROJECT)
938
+ * 4.6. Configures {PROJECT}/.claude/settings.local.json (PER-PROJECT)
939
+ * 5. Hot-patches running instances (disabled by default)
940
+ *
941
+ * Deploy Targets:
942
+ * - GLOBAL: ~/.claude/commands/ - available to all projects
943
+ * - PER-PROJECT: {PROJECT}/.claude/commands/ - project-specific
944
+ * - GLOBAL SETTINGS: ~/.claude/settings.json - hooks & permissions
945
+ * - PER-PROJECT SETTINGS: {PROJECT}/.claude/settings.local.json
946
+ *
947
+ * Fully idempotent - safe to call on every startup
948
+ */
949
+ export async function injectConfig(projectPath) {
950
+ logger.info({ projectPath: projectPath || 'auto' }, '[ConfigInjector] Starting config injection...');
951
+ const result = {
952
+ success: true,
953
+ mcpServerConfigured: false,
954
+ settingsUpdated: false,
955
+ hooksCopied: [],
956
+ commandsCopied: [],
957
+ permissionsAdded: [],
958
+ hooksAdded: [],
959
+ instancesPatched: 0,
960
+ projectConfigsFixed: 0,
961
+ errors: [],
962
+ alreadyConfigured: false,
963
+ bypassEnabled: false // backwards compat, set true when permissions added
964
+ };
965
+ try {
966
+ // Step 1: Deploy hook files FIRST (before settings.json references them)
967
+ const hooksResult = deployHooks();
968
+ result.hooksCopied = hooksResult.copied;
969
+ if (hooksResult.errors.length > 0) {
970
+ result.errors.push(...hooksResult.errors);
971
+ }
972
+ if (hooksResult.copied.length > 0) {
973
+ logger.info({ files: hooksResult.copied }, '[ConfigInjector] Deployed hooks');
974
+ }
975
+ // Step 2: Deploy command files
976
+ const commandsResult = deployCommands();
977
+ result.commandsCopied = commandsResult.copied;
978
+ if (commandsResult.errors.length > 0) {
979
+ result.errors.push(...commandsResult.errors);
980
+ }
981
+ if (commandsResult.copied.length > 0) {
982
+ logger.info({ files: commandsResult.copied }, '[ConfigInjector] Deployed commands');
983
+ }
984
+ // Step 3: Configure MCP server in config.json
985
+ const mcpResult = configureMcpServer();
986
+ result.mcpServerConfigured = mcpResult.configured;
987
+ if (mcpResult.error) {
988
+ result.errors.push(mcpResult.error);
989
+ }
990
+ // Step 3.5: Fix stale project-level MCP configs in ~/.claude.json
991
+ const projectFixResult = fixProjectMcpConfigs();
992
+ result.projectConfigsFixed = projectFixResult.fixed;
993
+ if (projectFixResult.errors.length > 0) {
994
+ result.errors.push(...projectFixResult.errors);
995
+ }
996
+ if (projectFixResult.fixed > 0) {
997
+ logger.info({ count: projectFixResult.fixed }, '[ConfigInjector] Fixed stale project MCP configs');
998
+ }
999
+ // Step 4: Configure settings (hooks + permissions)
1000
+ const settingsResult = configureSettings();
1001
+ result.settingsUpdated = settingsResult.updated;
1002
+ result.permissionsAdded = settingsResult.permissionsAdded;
1003
+ result.hooksAdded = settingsResult.hooksAdded || [];
1004
+ result.bypassEnabled = settingsResult.permissionsAdded.length > 0;
1005
+ if (settingsResult.error) {
1006
+ result.errors.push(settingsResult.error);
1007
+ }
1008
+ if (settingsResult.hooksAdded?.length > 0) {
1009
+ logger.info({ hooksAdded: settingsResult.hooksAdded }, '[ConfigInjector] Dynamically added hooks to settings.json');
1010
+ }
1011
+ // Step 4.5: Deploy commands to per-project .claude/commands/
1012
+ // This ensures commands work even without global installation
1013
+ const actualProjectPath = projectPath || process.env.SPECMEM_PROJECT_PATH || process.cwd();
1014
+ if (actualProjectPath && actualProjectPath !== HOME_DIR) {
1015
+ const projectCommandsResult = deployCommandsToProject(actualProjectPath);
1016
+ if (projectCommandsResult.copied.length > 0) {
1017
+ // Add to result (prefix with "project:" to distinguish)
1018
+ result.commandsCopied.push(...projectCommandsResult.copied.map(c => `project:${c}`));
1019
+ logger.info({
1020
+ projectPath: actualProjectPath,
1021
+ copied: projectCommandsResult.copied
1022
+ }, '[ConfigInjector] Deployed commands to per-project dir');
1023
+ }
1024
+ if (projectCommandsResult.errors.length > 0) {
1025
+ result.errors.push(...projectCommandsResult.errors);
1026
+ }
1027
+ // Also configure per-project settings.local.json
1028
+ const projectSettingsResult = configureProjectSettings(actualProjectPath);
1029
+ if (projectSettingsResult.updated) {
1030
+ result.settingsUpdated = true;
1031
+ logger.info({ projectPath: actualProjectPath }, '[ConfigInjector] Updated per-project settings.local.json');
1032
+ }
1033
+ if (projectSettingsResult.error) {
1034
+ result.errors.push(projectSettingsResult.error);
1035
+ }
1036
+ }
1037
+ // Step 5: Hot-patch running instances
1038
+ // DISABLED: Cannot safely signal parent from MCP child process
1039
+ // - SIGHUP kills Code
1040
+ // - Other instances have different project contexts
1041
+ // Config changes take effect on next restart
1042
+ result.instancesPatched = 0;
1043
+ // Determine if already fully configured
1044
+ result.alreadyConfigured =
1045
+ result.hooksCopied.length === 0 &&
1046
+ result.commandsCopied.length === 0 &&
1047
+ !result.mcpServerConfigured &&
1048
+ !result.settingsUpdated &&
1049
+ result.projectConfigsFixed === 0;
1050
+ // Set overall success
1051
+ result.success = result.errors.length === 0;
1052
+ // Log summary
1053
+ if (result.alreadyConfigured) {
1054
+ logger.info('[ConfigInjector] Already fully configured');
1055
+ }
1056
+ else {
1057
+ logger.info({
1058
+ mcpServerConfigured: result.mcpServerConfigured,
1059
+ settingsUpdated: result.settingsUpdated,
1060
+ hooksCopied: result.hooksCopied.length,
1061
+ commandsCopied: result.commandsCopied.length,
1062
+ permissionsAdded: result.permissionsAdded.length,
1063
+ projectConfigsFixed: result.projectConfigsFixed,
1064
+ instancesPatched: result.instancesPatched
1065
+ }, '[ConfigInjector] Config injection complete');
1066
+ }
1067
+ }
1068
+ catch (error) {
1069
+ result.success = false;
1070
+ result.errors.push(`Unexpected error: ${error.message}`);
1071
+ logger.error({ error }, '[ConfigInjector] Config injection failed');
1072
+ }
1073
+ return result;
1074
+ }
1075
+ // ============================================================================
1076
+ // Quick Check Functions
1077
+ // ============================================================================
1078
+ /**
1079
+ * Check if SpecMem is fully configured in
1080
+ */
1081
+ export function isConfigInjected() {
1082
+ // Check config.json has specmem MCP server
1083
+ const config = safeReadJson(CONFIG_PATH, {});
1084
+ if (!config.mcpServers?.specmem) {
1085
+ return false;
1086
+ }
1087
+ // Check settings.json has specmem hooks
1088
+ const settings = safeReadJson(SETTINGS_PATH, {});
1089
+ const hasPreToolHook = settings.hooks?.PreToolUse?.some((entry) => JSON.stringify(entry).includes('specmem'));
1090
+ const hasUserPromptHook = settings.hooks?.UserPromptSubmit?.some((entry) => JSON.stringify(entry).includes('specmem'));
1091
+ // Check at least one hook exists (now .js for CommonJS compatibility)
1092
+ const drilldownHookExists = fs.existsSync(path.join(HOOKS_DIR, 'specmem-drilldown-hook.js'));
1093
+ return !!(hasPreToolHook || hasUserPromptHook) && drilldownHookExists;
1094
+ }
1095
+ /**
1096
+ * Get detailed installation status
1097
+ */
1098
+ export function getInstallationStatus() {
1099
+ const config = safeReadJson(CONFIG_PATH, {});
1100
+ const settings = safeReadJson(SETTINGS_PATH, {});
1101
+ const configOk = !!config.mcpServers?.specmem;
1102
+ const settingsOk = !!(settings.hooks?.UserPromptSubmit?.some((e) => JSON.stringify(e).includes('specmem')) ||
1103
+ settings.hooks?.PreToolUse?.some((e) => JSON.stringify(e).includes('specmem')));
1104
+ let hooksOk = false;
1105
+ try {
1106
+ if (fs.existsSync(HOOKS_DIR)) {
1107
+ const files = fs.readdirSync(HOOKS_DIR);
1108
+ hooksOk = files.some(f => f.includes('specmem'));
1109
+ }
1110
+ }
1111
+ catch {
1112
+ // Not ok
1113
+ }
1114
+ let commandsOk = false;
1115
+ try {
1116
+ if (fs.existsSync(COMMANDS_DIR)) {
1117
+ const files = fs.readdirSync(COMMANDS_DIR);
1118
+ commandsOk = files.some(f => f.startsWith('specmem-'));
1119
+ }
1120
+ }
1121
+ catch {
1122
+ // Not ok
1123
+ }
1124
+ return {
1125
+ config: configOk,
1126
+ settings: settingsOk,
1127
+ hooks: hooksOk,
1128
+ commands: commandsOk,
1129
+ fullyConfigured: configOk && settingsOk && hooksOk && commandsOk
1130
+ };
1131
+ }
1132
+ // ============================================================================
1133
+ // Exports
1134
+ // ============================================================================
1135
+ export default {
1136
+ injectConfig,
1137
+ isConfigInjected,
1138
+ isSpecmemMcpConfigured,
1139
+ getInstallationStatus,
1140
+ hotPatchRunning
1141
+ };
1142
+ // Export paths for testing and other modules
1143
+ export const paths = {
1144
+ CLAUDE_CONFIG_DIR,
1145
+ CONFIG_PATH,
1146
+ SETTINGS_PATH,
1147
+ HOOKS_DIR,
1148
+ COMMANDS_DIR,
1149
+ SPECMEM_ROOT,
1150
+ BOOTSTRAP_PATH,
1151
+ SOURCE_HOOKS_DIR,
1152
+ SOURCE_COMMANDS_DIR
1153
+ };
1154
+ //# sourceMappingURL=claudeConfigInjector.js.map