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
package/dist/config.js ADDED
@@ -0,0 +1,1177 @@
1
+ import * as dotenv from 'dotenv';
2
+ import * as path from 'path';
3
+ import * as fs from 'fs';
4
+ import { createHash } from 'crypto';
5
+ import { fileURLToPath } from 'url';
6
+ // Get __dirname equivalent for ES modules
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = path.dirname(__filename);
9
+ // Load config files - dotenv won't override existing env vars, so order matters
10
+ // First try specmem.env from various locations, then fall back to .env
11
+ const specmemEnvPaths = [
12
+ path.resolve(process.cwd(), 'specmem.env'), // From current working directory
13
+ path.resolve(__dirname, '../specmem.env'), // From project root (relative to src)
14
+ path.resolve(__dirname, '../../specmem.env'), // From dist directory
15
+ ];
16
+ // Load specmem.env from first location that exists
17
+ for (const envPath of specmemEnvPaths) {
18
+ const result = dotenv.config({ path: envPath });
19
+ if (!result.error) {
20
+ break; // Found and loaded successfully
21
+ }
22
+ }
23
+ // Also load .env if it exists (won't override specmem.env values)
24
+ dotenv.config();
25
+ // ============================================================================
26
+ // SAFE MKDIR - Dies with clear message if permission denied
27
+ // ============================================================================
28
+ /**
29
+ * Create directory - dies with clear message if permission denied.
30
+ * If specmem can't create dirs, it needs to be run with sudo.
31
+ */
32
+ export function safeMkdir(dirPath, opts = {}) {
33
+ try {
34
+ fs.mkdirSync(dirPath, { recursive: true, ...opts });
35
+ }
36
+ catch (e) {
37
+ if (e.code === 'EACCES' || e.code === 'EPERM') {
38
+ console.error('\n\x1b[31m\x1b[1m');
39
+ console.error(' ╔═══════════════════════════════════════════════════╗');
40
+ console.error(' ║ Hey, I need sudo! ║');
41
+ console.error(' ║ ║');
42
+ console.error(' ║ SpecMem can\'t create directories without ║');
43
+ console.error(' ║ proper permissions. Run with sudo: ║');
44
+ console.error(' ║ ║');
45
+ console.error(' ║ sudo npx specmem-hardwicksoftware ║');
46
+ console.error(' ║ ║');
47
+ console.error(` ║ Failed path: ${dirPath.slice(0, 35).padEnd(35)} ║`);
48
+ console.error(' ╚═══════════════════════════════════════════════════╝');
49
+ console.error('\x1b[0m');
50
+ process.exit(1);
51
+ }
52
+ throw e;
53
+ }
54
+ }
55
+ // ============================================================================
56
+ // ATOMIC DIRECTORY CREATION - Task #17 fix for socket path duplication race
57
+ // This prevents race conditions when multiple MCP servers try to create
58
+ // the same socket directory simultaneously. Uses O_EXCL for true atomicity.
59
+ // ============================================================================
60
+ /**
61
+ * Check if a process with the given PID is still running
62
+ */
63
+ function isProcessRunningCheck(pid) {
64
+ try {
65
+ process.kill(pid, 0);
66
+ return true;
67
+ }
68
+ catch (e) {
69
+ return e.code === 'EPERM';
70
+ }
71
+ }
72
+ /**
73
+ * Create a directory atomically using O_EXCL lock file
74
+ * Prevents race conditions when multiple processes try to create the same directory
75
+ *
76
+ * @param dirPath - Directory path to create
77
+ * @param mode - Directory permissions (default: 0o755)
78
+ * @returns true if directory was created, false if it already existed
79
+ */
80
+ function atomicMkdirSync(dirPath, mode = 0o755) {
81
+ // Fast path: if directory already exists, return immediately
82
+ if (fs.existsSync(dirPath)) {
83
+ try {
84
+ const stats = fs.statSync(dirPath);
85
+ if (stats.isDirectory()) {
86
+ return false;
87
+ }
88
+ }
89
+ catch (e) {
90
+ // Continue with creation attempt
91
+ }
92
+ }
93
+ const lockPath = dirPath + '.mkdir.lock';
94
+ const lockTimeoutMs = 5000;
95
+ const maxRetries = 50;
96
+ const retryIntervalMs = 10;
97
+ // Try to acquire lock
98
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
99
+ try {
100
+ // O_EXCL ensures atomic creation - fails if file exists
101
+ const fd = fs.openSync(lockPath, fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_WRONLY);
102
+ const lockData = JSON.stringify({ pid: process.pid, timestamp: Date.now() });
103
+ fs.writeSync(fd, lockData);
104
+ fs.closeSync(fd);
105
+ try {
106
+ // Double-check inside lock
107
+ if (fs.existsSync(dirPath)) {
108
+ const stats = fs.statSync(dirPath);
109
+ if (stats.isDirectory()) {
110
+ return false;
111
+ }
112
+ }
113
+ // Create directory
114
+ fs.mkdirSync(dirPath, { recursive: true, mode });
115
+ return true;
116
+ }
117
+ finally {
118
+ // Release lock
119
+ try {
120
+ if (fs.existsSync(lockPath)) {
121
+ const content = fs.readFileSync(lockPath, 'utf-8');
122
+ const data = JSON.parse(content);
123
+ if (data.pid === process.pid) {
124
+ fs.unlinkSync(lockPath);
125
+ }
126
+ }
127
+ }
128
+ catch (e) {
129
+ // Ignore cleanup errors
130
+ }
131
+ }
132
+ }
133
+ catch (e) {
134
+ if (e.code === 'EEXIST') {
135
+ // Lock file exists - check if stale
136
+ try {
137
+ const content = fs.readFileSync(lockPath, 'utf-8');
138
+ const data = JSON.parse(content);
139
+ const ageMs = Date.now() - data.timestamp;
140
+ if (ageMs > lockTimeoutMs || !isProcessRunningCheck(data.pid)) {
141
+ fs.unlinkSync(lockPath);
142
+ continue;
143
+ }
144
+ }
145
+ catch (readErr) {
146
+ try {
147
+ fs.unlinkSync(lockPath);
148
+ continue;
149
+ }
150
+ catch { /* ignore */ }
151
+ }
152
+ // Busy-wait
153
+ const waitUntil = Date.now() + retryIntervalMs;
154
+ while (Date.now() < waitUntil) { /* spin */ }
155
+ }
156
+ else {
157
+ // For other errors, fall back to simple mkdir
158
+ break;
159
+ }
160
+ }
161
+ }
162
+ // Fallback: just try mkdirSync (might race but won't crash)
163
+ try {
164
+ if (!fs.existsSync(dirPath)) {
165
+ fs.mkdirSync(dirPath, { recursive: true, mode });
166
+ return true;
167
+ }
168
+ }
169
+ catch (e) {
170
+ if (e.code === 'EACCES' || e.code === 'EPERM') {
171
+ safeMkdir(dirPath); // Will die with "Hey, I need sudo!" message
172
+ }
173
+ // Ignore other errors - another process likely created it
174
+ }
175
+ return false;
176
+ }
177
+ // Cache for loaded rc config per project
178
+ const rcConfigCache = new Map();
179
+ const RC_CACHE_TTL = 60000; // 1 minute
180
+ /**
181
+ * Load .specmemrc from project root if it exists
182
+ * Returns null if file doesn't exist or is invalid
183
+ * Caches result per project path
184
+ */
185
+ function loadSpecmemRc(projectPath) {
186
+ const cached = rcConfigCache.get(projectPath);
187
+ if (cached && Date.now() - cached.timestamp < RC_CACHE_TTL) {
188
+ return cached.config;
189
+ }
190
+ const rcPath = path.join(projectPath, '.specmemrc');
191
+ let rcConfig = null;
192
+ try {
193
+ if (fs.existsSync(rcPath)) {
194
+ const content = fs.readFileSync(rcPath, 'utf-8');
195
+ rcConfig = JSON.parse(content);
196
+ console.error('[CONFIG] Loaded .specmemrc from ' + rcPath);
197
+ }
198
+ }
199
+ catch (err) {
200
+ console.error('[CONFIG] Failed to load .specmemrc: ' + (err instanceof Error ? err.message : String(err)));
201
+ rcConfig = null;
202
+ }
203
+ rcConfigCache.set(projectPath, { config: rcConfig, timestamp: Date.now() });
204
+ return rcConfig;
205
+ }
206
+ /**
207
+ * Get value from rc config with dot notation path
208
+ * e.g., getRcValue('database.port', 5432) returns rc.database.port or 5432
209
+ */
210
+ function getRcValue(rcConfig, rcPath, defaultValue) {
211
+ if (!rcConfig)
212
+ return defaultValue;
213
+ const parts = rcPath.split('.');
214
+ let current = rcConfig;
215
+ for (const part of parts) {
216
+ if (current === null || current === undefined || typeof current !== 'object') {
217
+ return defaultValue;
218
+ }
219
+ current = current[part];
220
+ }
221
+ return (current !== undefined && current !== null) ? current : defaultValue;
222
+ }
223
+ /**
224
+ * Clear rc config cache - useful for testing or when rc file changes
225
+ */
226
+ export function clearRcConfigCache(projectPath) {
227
+ if (projectPath) {
228
+ rcConfigCache.delete(projectPath);
229
+ }
230
+ else {
231
+ rcConfigCache.clear();
232
+ }
233
+ }
234
+ /**
235
+ * Get the current rc config for the project (useful for debugging)
236
+ */
237
+ export function getSpecmemRcConfig() {
238
+ const projectPath = process.env['SPECMEM_PROJECT_PATH'] || process.cwd();
239
+ return loadSpecmemRc(projectPath);
240
+ }
241
+ /**
242
+ * Get the SpecMem root directory
243
+ * This is the main entry point for all path resolution
244
+ * Works whether running from src/, dist/, or installed via npm
245
+ */
246
+ export function getSpecmemRoot() {
247
+ // If SPECMEM_ROOT is set, use it
248
+ if (process.env['SPECMEM_ROOT']) {
249
+ return process.env['SPECMEM_ROOT'];
250
+ }
251
+ // Default to cwd - specmem should always be run from its root
252
+ return process.cwd();
253
+ }
254
+ // ============================================================================
255
+ // PROJECT PATH UTILITIES - For multi-instance isolation
256
+ // These functions provide project-specific paths and identifiers
257
+ // SPECMEM_PROJECT_PATH is set by Code via MCP config or defaults to cwd
258
+ // ============================================================================
259
+ /**
260
+ * MULTI-PROJECT ISOLATION FIX
261
+ *
262
+ * REMOVED: Marker file /tmp/specmem-current-project.txt
263
+ *
264
+ * The marker file caused race conditions when multiple projects ran simultaneously -
265
+ * whichever hook wrote last would "win", causing other projects to read wrong data.
266
+ *
267
+ * NOW: Each MCP server uses ONLY its SPECMEM_PROJECT_PATH env var (set at startup).
268
+ */
269
+ /**
270
+ * Get the project path that SpecMem is monitoring
271
+ *
272
+ * PROJECT ISOLATION (priority order):
273
+ * 1. SPECMEM_PROJECT_PATH environment variable (set at MCP server start by bootstrap.cjs)
274
+ * 2. process.cwd() as last fallback
275
+ *
276
+ * Each MCP server instance has its own SPECMEM_PROJECT_PATH set at startup,
277
+ * enabling TRUE multi-project simultaneous isolation.
278
+ */
279
+ export function getProjectPath() {
280
+ // PRIORITY 2: Environment variable (static, set at startup)
281
+ if (process.env['SPECMEM_PROJECT_PATH']) {
282
+ return process.env['SPECMEM_PROJECT_PATH'];
283
+ }
284
+ // PRIORITY 3: Current working directory (fallback)
285
+ return process.cwd();
286
+ }
287
+ /**
288
+ * Get the project hash for instance isolation (COLLISION-FREE!)
289
+ * Uses SHA256 hash of FULL project path to ensure different paths get different instances.
290
+ * This prevents collisions between /specmem and ~/specmem.
291
+ * Format: First 16 chars of hash (e.g., "a1b2c3d4e5f6a7b8")
292
+ */
293
+ export function getProjectDirName() {
294
+ // Check env var first (set by bootstrap.cjs)
295
+ if (process.env['SPECMEM_PROJECT_DIR_NAME']) {
296
+ return process.env['SPECMEM_PROJECT_DIR_NAME'];
297
+ }
298
+ // Compute hash from FULL project path
299
+ const projectPath = getProjectPath();
300
+ const normalizedPath = path.resolve(projectPath).toLowerCase().replace(/\\/g, '/');
301
+ const fullHash = createHash('sha256').update(normalizedPath).digest('hex');
302
+ return fullHash.substring(0, 16);
303
+ }
304
+ /**
305
+ * DEPRECATED: Returns project hash
306
+ * Kept for backwards compatibility - now returns the hash
307
+ */
308
+ export function getProjectHash() {
309
+ return getProjectDirName();
310
+ }
311
+ /**
312
+ * DEPRECATED: Returns project hash
313
+ * Kept for backwards compatibility - now returns the hash
314
+ */
315
+ export function getProjectHashFull() {
316
+ if (process.env['SPECMEM_PROJECT_DIR_NAME']) {
317
+ return process.env['SPECMEM_PROJECT_DIR_NAME'];
318
+ }
319
+ // Fallback - compute hash
320
+ return getProjectDirName();
321
+ }
322
+ /**
323
+ * Get the per-instance directory for this project
324
+ * ALWAYS uses PROJECT DIRECTORY for complete isolation
325
+ * e.g. /home/user/myproject/specmem/ - NOT ~/.specmem/
326
+ * User requirement: "EVERYTHING LOCALIZED WITHIN THE PROJECT"
327
+ */
328
+ export function getInstanceDir() {
329
+ // CRITICAL: Use project directory, NOT user home!
330
+ // User explicitly required: "{PROJECT_DIR}/specmem/" for all data
331
+ return path.join(getProjectPath(), 'specmem');
332
+ }
333
+ /**
334
+ * Get project info as a structured object (for logging/debugging)
335
+ */
336
+ export function getProjectInfo() {
337
+ return {
338
+ path: getProjectPath(),
339
+ hash: getProjectHash(),
340
+ hashFull: getProjectHashFull(),
341
+ instanceDir: getInstanceDir(),
342
+ };
343
+ }
344
+ /**
345
+ * Get path to specmem's internal run directory (sockets, PIDs, etc)
346
+ */
347
+ export function getRunDir() {
348
+ return path.join(getSpecmemRoot(), 'run');
349
+ }
350
+ /**
351
+ * Get the project-scoped socket directory
352
+ * Pattern: {PROJECT_DIR}/specmem/sockets/ - FULLY LOCALIZED
353
+ */
354
+ export function getProjectSocketDir() {
355
+ return path.join(getInstanceDir(), 'sockets');
356
+ }
357
+ /**
358
+ * Get the embedding socket path - PROJECT ISOLATION ENFORCED
359
+ *
360
+ * Socket path resolution (strict project isolation):
361
+ * 1. SPECMEM_EMBEDDING_SOCKET env var (explicit override - HIGHEST PRIORITY)
362
+ * 2. Project directory socket: {PROJECT}/specmem/sockets/embeddings.sock
363
+ *
364
+ * IMPORTANT: No fallbacks to shared paths! Each project MUST have its own socket.
365
+ * This prevents embedding pollution between projects.
366
+ *
367
+ * @returns The path to the embedding socket (existing or default project path)
368
+ */
369
+ export function getEmbeddingSocketPath() {
370
+ const isDebug = process.env['SPECMEM_DEBUG'] === 'true' || process.env['SPECMEM_DEBUG'] === '1';
371
+ const debugLog = (msg) => {
372
+ if (isDebug)
373
+ console.error(`[Socket Debug] ${msg}`);
374
+ };
375
+ // Check explicit env var first - HIGHEST PRIORITY
376
+ if (process.env['SPECMEM_EMBEDDING_SOCKET']) {
377
+ const explicitPath = process.env['SPECMEM_EMBEDDING_SOCKET'];
378
+ console.error(`[Socket] Using explicit SPECMEM_EMBEDDING_SOCKET: ${explicitPath}`);
379
+ return explicitPath;
380
+ }
381
+ const { existsSync, lstatSync, readlinkSync } = fs;
382
+ // Helper to check if path is an actual socket file (follows symlinks)
383
+ const socketExists = (socketPath) => {
384
+ try {
385
+ // First check if path exists at all
386
+ if (!existsSync(socketPath)) {
387
+ debugLog(`Path does not exist: ${socketPath}`);
388
+ return false;
389
+ }
390
+ // If it's a symlink, follow it and check the target
391
+ const stats = lstatSync(socketPath);
392
+ if (stats.isSymbolicLink()) {
393
+ try {
394
+ const target = readlinkSync(socketPath);
395
+ const resolvedTarget = path.isAbsolute(target) ? target : path.resolve(path.dirname(socketPath), target);
396
+ debugLog(`Symlink ${socketPath} -> ${resolvedTarget}`);
397
+ const targetStats = lstatSync(resolvedTarget);
398
+ if (targetStats.isSocket()) {
399
+ debugLog(`Symlink target is a valid socket: ${resolvedTarget}`);
400
+ return true;
401
+ }
402
+ debugLog(`Symlink target exists but is not a socket: ${resolvedTarget}`);
403
+ return false;
404
+ }
405
+ catch (e) {
406
+ debugLog(`Symlink target check failed: ${e}`);
407
+ return false;
408
+ }
409
+ }
410
+ // Direct socket file
411
+ if (stats.isSocket()) {
412
+ debugLog(`Direct socket found: ${socketPath}`);
413
+ return true;
414
+ }
415
+ debugLog(`Path exists but is not a socket: ${socketPath}`);
416
+ return false;
417
+ }
418
+ catch (e) {
419
+ debugLog(`Socket check error for ${socketPath}: ${e}`);
420
+ return false;
421
+ }
422
+ };
423
+ // SPECMEM_HOME defaults to SpecMem installation directory, NOT ~/.claude
424
+ // This is critical for multi-project support
425
+ const specmemRoot = getSpecmemRoot();
426
+ const specmemHome = process.env['SPECMEM_HOME'] || specmemRoot;
427
+ // Get project identifiers
428
+ const projectDirName = getProjectDirName();
429
+ const projectHash = getProjectHash();
430
+ // Build comprehensive list of socket locations to check (in priority order)
431
+ // CRITICAL: PROJECT DIRECTORY is ALWAYS checked FIRST - user requirement
432
+ // But we MUST fall back to /tmp/ paths where embedding service may create sockets
433
+ const projectPath = getProjectPath();
434
+ // Socket locations in priority order:
435
+ // 1. Project directory (preferred for isolation)
436
+ // 2. /tmp/ fallbacks (where embedding service may actually create them)
437
+ const socketLocations = [
438
+ // Priority 1: Project-local socket (ideal for isolation)
439
+ {
440
+ path: path.join(projectPath, 'specmem', 'sockets', 'embeddings.sock'),
441
+ description: 'Project socket ({PROJECT}/specmem/sockets)',
442
+ priority: '1-project-dir'
443
+ },
444
+ // Priority 2: /tmp/ with project hash (Docker mounts)
445
+ {
446
+ path: `/tmp/specmem-${projectDirName}/sockets/embeddings.sock`,
447
+ description: '/tmp project-isolated Docker mount',
448
+ priority: '2-tmp-project'
449
+ },
450
+ // Priority 3: SpecMem root run directory
451
+ {
452
+ path: path.join(specmemRoot, 'run', 'embeddings.sock'),
453
+ description: 'SpecMem root/run',
454
+ priority: '3-specmem-run'
455
+ },
456
+ {
457
+ path: path.join(specmemRoot, 'run', 'sockets', 'embeddings.sock'),
458
+ description: 'SpecMem root/run/sockets',
459
+ priority: '4-specmem-run-sockets'
460
+ },
461
+ // Priority 5: Legacy /tmp/ locations (backwards compat)
462
+ {
463
+ path: '/tmp/specmem-embed-0.sock',
464
+ description: '/tmp legacy embed socket',
465
+ priority: '5-tmp-legacy'
466
+ },
467
+ {
468
+ path: '/tmp/specmem-sockets/embeddings.sock',
469
+ description: '/tmp legacy sockets dir',
470
+ priority: '6-tmp-legacy-dir'
471
+ },
472
+ // Priority 7: Container internal path
473
+ {
474
+ path: '/sockets/embeddings.sock',
475
+ description: 'Container internal path',
476
+ priority: '7-container'
477
+ },
478
+ ];
479
+ debugLog(`Searching for embedding socket...`);
480
+ debugLog(` specmemRoot: ${specmemRoot}`);
481
+ debugLog(` specmemHome: ${specmemHome}`);
482
+ debugLog(` projectDirName: ${projectDirName}`);
483
+ debugLog(` projectHash: ${projectHash}`);
484
+ // Check each location and return the first one that has an active socket
485
+ for (const loc of socketLocations) {
486
+ debugLog(`Checking ${loc.priority}: ${loc.path}`);
487
+ if (socketExists(loc.path)) {
488
+ console.error(`[Socket] FOUND at: ${loc.path} (${loc.description})`);
489
+ return loc.path;
490
+ }
491
+ }
492
+ // DEFAULT: Return project directory socket path (where Docker should create it)
493
+ // USER REQUIREMENT: "EVERYTHING LOCALIZED WITHIN THE PROJECT"
494
+ // Pattern: {PROJECT_DIR}/specmem/sockets/embeddings.sock
495
+ const projectSocketDir = path.join(projectPath, 'specmem', 'sockets');
496
+ const defaultSocketPath = path.join(projectSocketDir, 'embeddings.sock');
497
+ // Task #17 FIX: Use atomic mkdir to prevent race condition when multiple
498
+ // MCP servers try to create the socket directory simultaneously
499
+ try {
500
+ const created = atomicMkdirSync(projectSocketDir, 0o755);
501
+ if (created) {
502
+ debugLog(`Created project socket directory atomically: ${projectSocketDir}`);
503
+ }
504
+ }
505
+ catch (e) {
506
+ // Ignore mkdir errors - directory may be created by Docker
507
+ debugLog(`Failed to create socket directory: ${e}`);
508
+ }
509
+ // Log NOT FOUND with details for troubleshooting
510
+ console.error(`[Socket] NOT FOUND - embedding socket not available`);
511
+ console.error(`[Socket] Default path (will wait for socket): ${defaultSocketPath}`);
512
+ if (isDebug) {
513
+ console.error(`[Socket] Searched locations:`);
514
+ for (const loc of socketLocations) {
515
+ console.error(`[Socket] [${loc.priority}] ${loc.path}`);
516
+ }
517
+ console.error(`[Socket] Set SPECMEM_EMBEDDING_SOCKET env var to override detection.`);
518
+ }
519
+ else {
520
+ console.error(`[Socket] Set SPECMEM_DEBUG=true for detailed socket search info.`);
521
+ }
522
+ return defaultSocketPath;
523
+ }
524
+ /**
525
+ * Get detailed socket search information for debugging
526
+ * Returns socket search results with all checked locations
527
+ *
528
+ * Checks multiple locations in priority order:
529
+ * 1. Project directory (preferred for isolation)
530
+ * 2. /tmp/ fallbacks (where embedding service may create them)
531
+ * 3. SpecMem root and legacy locations
532
+ */
533
+ export function getSocketSearchInfo() {
534
+ const specmemRoot = getSpecmemRoot();
535
+ const specmemHome = process.env['SPECMEM_HOME'] || specmemRoot;
536
+ const projectDirName = getProjectDirName();
537
+ const projectHash = getProjectHash();
538
+ const { existsSync, lstatSync, readlinkSync } = fs;
539
+ const checkPath = (p) => {
540
+ try {
541
+ if (!existsSync(p))
542
+ return { exists: false, isSocket: false, isSymlink: false };
543
+ const stats = lstatSync(p);
544
+ const isSymlink = stats.isSymbolicLink();
545
+ let symlinkTarget;
546
+ let isSocket = stats.isSocket();
547
+ if (isSymlink) {
548
+ try {
549
+ symlinkTarget = readlinkSync(p);
550
+ const resolvedTarget = path.isAbsolute(symlinkTarget) ? symlinkTarget : path.resolve(path.dirname(p), symlinkTarget);
551
+ const targetStats = lstatSync(resolvedTarget);
552
+ isSocket = targetStats.isSocket();
553
+ }
554
+ catch {
555
+ // Symlink target doesn't exist or is broken
556
+ isSocket = false;
557
+ }
558
+ }
559
+ return { exists: true, isSocket, isSymlink, symlinkTarget };
560
+ }
561
+ catch {
562
+ return { exists: false, isSocket: false, isSymlink: false };
563
+ }
564
+ };
565
+ // Socket locations with fallbacks (matches getEmbeddingSocketPath)
566
+ const projectPath = getProjectPath();
567
+ const locations = [
568
+ // Priority 1: Project-local socket (ideal for isolation)
569
+ {
570
+ path: path.join(projectPath, 'specmem', 'sockets', 'embeddings.sock'),
571
+ description: 'Project socket ({PROJECT}/specmem/sockets)',
572
+ priority: '1-project-dir'
573
+ },
574
+ // Priority 2: /tmp/ with project hash (Docker mounts)
575
+ {
576
+ path: `/tmp/specmem-${projectDirName}/sockets/embeddings.sock`,
577
+ description: '/tmp project-isolated Docker mount',
578
+ priority: '2-tmp-project'
579
+ },
580
+ // Priority 3: SpecMem root run directory
581
+ {
582
+ path: path.join(specmemRoot, 'run', 'embeddings.sock'),
583
+ description: 'SpecMem root/run',
584
+ priority: '3-specmem-run'
585
+ },
586
+ {
587
+ path: path.join(specmemRoot, 'run', 'sockets', 'embeddings.sock'),
588
+ description: 'SpecMem root/run/sockets',
589
+ priority: '4-specmem-run-sockets'
590
+ },
591
+ // Priority 5: Legacy /tmp/ locations (backwards compat)
592
+ {
593
+ path: '/tmp/specmem-embed-0.sock',
594
+ description: '/tmp legacy embed socket',
595
+ priority: '5-tmp-legacy'
596
+ },
597
+ {
598
+ path: '/tmp/specmem-sockets/embeddings.sock',
599
+ description: '/tmp legacy sockets dir',
600
+ priority: '6-tmp-legacy-dir'
601
+ },
602
+ // Priority 7: Container internal path
603
+ {
604
+ path: '/sockets/embeddings.sock',
605
+ description: 'Container internal path',
606
+ priority: '7-container'
607
+ },
608
+ ];
609
+ const searchedLocations = locations.map(loc => {
610
+ const status = checkPath(loc.path);
611
+ return { ...loc, ...status };
612
+ });
613
+ const foundSocket = searchedLocations.find(loc => loc.isSocket)?.path || null;
614
+ const isDocker = existsSync('/.dockerenv') || existsSync('/run/.containerenv');
615
+ return {
616
+ foundSocket,
617
+ searchedLocations,
618
+ projectDirName,
619
+ projectHash,
620
+ specmemRoot,
621
+ specmemHome,
622
+ isDocker,
623
+ };
624
+ }
625
+ function requireEnv(key) {
626
+ const value = process.env[key];
627
+ if (!value) {
628
+ throw new Error(`Missing required environment variable: ${key}`);
629
+ }
630
+ return value;
631
+ }
632
+ function optionalEnv(key, defaultValue) {
633
+ const value = process.env[key];
634
+ // Empty strings treated as "not set" - use default
635
+ // Fixes: SPECMEM_WATCHER_ENABLED="" should use default (true), not false
636
+ if (value === undefined || value === null || value === '') {
637
+ return defaultValue;
638
+ }
639
+ return value;
640
+ }
641
+ function parseBoolean(value, defaultValue = false) {
642
+ // Empty string = use default (critical for env vars like SPECMEM_WATCHER_ENABLED="")
643
+ if (!value || value === '') {
644
+ return defaultValue;
645
+ }
646
+ const lower = value.toLowerCase();
647
+ return lower === 'true' || value === '1';
648
+ }
649
+ /**
650
+ * Parse port number with validation
651
+ * Validates port is a valid number between 1-65535
652
+ * Returns default if invalid or throws with context if throwOnInvalid=true
653
+ */
654
+ function parsePort(value, defaultValue, envVarName, throwOnInvalid = false) {
655
+ if (!value || value === '') {
656
+ return defaultValue;
657
+ }
658
+ const port = parseInt(value, 10);
659
+ if (isNaN(port) || port < 1 || port > 65535) {
660
+ const context = envVarName ? ' (' + envVarName + ')' : '';
661
+ const errMsg = 'Invalid port "' + value + '"' + context + ': must be number 1-65535';
662
+ if (throwOnInvalid) {
663
+ throw new Error(errMsg);
664
+ }
665
+ console.error('[CONFIG] ' + errMsg + ', using default: ' + defaultValue);
666
+ return defaultValue;
667
+ }
668
+ return port;
669
+ }
670
+ /**
671
+ * Parse DATABASE_URL connection string into components
672
+ * Format: postgres://user:password@host:port/database?sslmode=require
673
+ *
674
+ * Also supports:
675
+ * - postgresql:// prefix (treated same as postgres://)
676
+ * - URL-encoded special chars in password
677
+ * - Optional sslmode query parameter
678
+ *
679
+ * Returns null if DATABASE_URL is not set or invalid
680
+ */
681
+ function parseDatabaseUrl() {
682
+ const databaseUrl = process.env['DATABASE_URL'];
683
+ if (!databaseUrl) {
684
+ return null;
685
+ }
686
+ try {
687
+ // Handle both postgres:// and postgresql:// prefixes
688
+ const normalizedUrl = databaseUrl.replace(/^postgresql:\/\//, 'postgres://');
689
+ // Use URL constructor for robust parsing
690
+ const url = new URL(normalizedUrl);
691
+ if (url.protocol !== 'postgres:') {
692
+ console.error('[CONFIG] DATABASE_URL has invalid protocol: ' + url.protocol);
693
+ return null;
694
+ }
695
+ // Extract components with URL decoding for special chars in password
696
+ const user = decodeURIComponent(url.username);
697
+ const password = decodeURIComponent(url.password);
698
+ const host = url.hostname;
699
+ const port = url.port ? parsePort(url.port, 5432, 'DATABASE_URL port') : 5432;
700
+ const database = url.pathname.replace(/^\//, ''); // Remove leading slash
701
+ // Check for sslmode in query params
702
+ const sslMode = url.searchParams.get('sslmode');
703
+ const ssl = sslMode === 'require' || sslMode === 'verify-ca' || sslMode === 'verify-full';
704
+ if (!user || !host || !database) {
705
+ console.error('[CONFIG] DATABASE_URL missing required components (user, host, or database)');
706
+ return null;
707
+ }
708
+ console.error('[CONFIG] Parsed DATABASE_URL: host=' + host + ' port=' + port + ' database=' + database + ' user=' + user + ' ssl=' + ssl);
709
+ return { user, password, host, port, database, ssl };
710
+ }
711
+ catch (err) {
712
+ console.error('[CONFIG] Failed to parse DATABASE_URL: ' + err.message);
713
+ return null;
714
+ }
715
+ }
716
+ // ============================================================================
717
+ // PORT ALLOCATION UTILITIES - Project directory name derived ports
718
+ // Uses SPECMEM_PROJECT_DIR_NAME to derive unique ports per project
719
+ // NO MORE HASHES - uses readable project directory name
720
+ // ============================================================================
721
+ /**
722
+ * Get project-specific port from project directory name
723
+ * Derives a unique port in a given range based on project name
724
+ * @param basePort - The base port for the range (e.g., 8500)
725
+ * @param rangeSize - The size of the port range (e.g., 100 gives 8500-8599)
726
+ * @returns Port number derived from project directory name
727
+ */
728
+ function getProjectPortFromHash(basePort, rangeSize = 100) {
729
+ // Use project directory name instead of hash
730
+ const projectDirName = process.env['SPECMEM_PROJECT_DIR_NAME'] || getProjectDirName();
731
+ // Simple hash from string to number
732
+ let hashNum = 0;
733
+ for (let i = 0; i < projectDirName.length; i++) {
734
+ hashNum = ((hashNum << 5) - hashNum) + projectDirName.charCodeAt(i);
735
+ hashNum = hashNum & 0xFFFF; // Keep it in range
736
+ }
737
+ return basePort + (Math.abs(hashNum) % rangeSize);
738
+ }
739
+ // ============================================================================
740
+ // UNIFIED CREDENTIALS: ZERO CONFIG REQUIRED
741
+ // Everything derives from SPECMEM_PASSWORD or uses smart defaults
742
+ // Per-project isolation via project directory name for database names and ports
743
+ // NO MORE HASHES - uses readable project directory name everywhere
744
+ // ============================================================================
745
+ const UNIFIED_DEFAULT = 'specmem';
746
+ function getUnifiedCredential() {
747
+ return process.env['SPECMEM_PASSWORD'] || UNIFIED_DEFAULT;
748
+ }
749
+ /**
750
+ * Get project-specific database name
751
+ * Uses SPECMEM_PROJECT_DIR_NAME for per-project isolation
752
+ * Format: specmem_{projectname} or custom via SPECMEM_DB_NAME
753
+ *
754
+ * @returns Database name in format specmem_{project_dir_name}
755
+ */
756
+ export function getProjectDatabaseName() {
757
+ // Explicit override takes precedence
758
+ if (process.env['SPECMEM_DB_NAME']) {
759
+ return process.env['SPECMEM_DB_NAME'];
760
+ }
761
+ // Per-project database using readable project directory name
762
+ const projectDirName = process.env['SPECMEM_PROJECT_DIR_NAME'] || getProjectDirName();
763
+ // Sanitize for PostgreSQL (max 63 chars, alphanumeric + underscore)
764
+ const sanitized = projectDirName.replace(/[^a-z0-9]/g, '_').substring(0, 50);
765
+ return `specmem_${sanitized}`;
766
+ }
767
+ /**
768
+ * Get project-specific database port
769
+ * Uses project directory name to derive unique port in range 5500-5599
770
+ * Falls back to SPECMEM_DB_PORT or default 5432
771
+ *
772
+ * @returns Port number for project-scoped database
773
+ */
774
+ export function getProjectDatabasePort() {
775
+ // Explicit override takes precedence
776
+ if (process.env['SPECMEM_DB_PORT']) {
777
+ return parsePort(process.env['SPECMEM_DB_PORT'], 5432, 'SPECMEM_DB_PORT');
778
+ }
779
+ // For embedded postgres, derive port from project directory name
780
+ if (process.env['SPECMEM_EMBEDDED_PG_ACTIVE'] === 'true') {
781
+ const projectDirName = process.env['SPECMEM_PROJECT_DIR_NAME'] || getProjectDirName();
782
+ // Simple hash from string to number for port allocation
783
+ let hashNum = 0;
784
+ for (let i = 0; i < projectDirName.length; i++) {
785
+ hashNum = ((hashNum << 5) - hashNum) + projectDirName.charCodeAt(i);
786
+ hashNum = hashNum & 0xFFFF;
787
+ }
788
+ return 5500 + (Math.abs(hashNum) % 100);
789
+ }
790
+ return 5432;
791
+ }
792
+ export function loadConfig() {
793
+ const cred = getUnifiedCredential();
794
+ const projectDbName = getProjectDatabaseName();
795
+ const projectDbPort = getProjectDatabasePort();
796
+ // Load .specmemrc if it exists - provides project-specific overrides
797
+ const projectPath = getProjectPath();
798
+ const rc = loadSpecmemRc(projectPath);
799
+ // DATABASE_URL takes priority if set - parse it and use those values
800
+ const parsedUrl = parseDatabaseUrl();
801
+ // Priority: DATABASE_URL > ENV VAR > .specmemrc > default
802
+ // Per-project isolation still applies if DATABASE_URL not set
803
+ const dbHost = parsedUrl?.host || process.env['SPECMEM_DB_HOST'] || getRcValue(rc, 'database.host', 'localhost');
804
+ const dbPort = parsedUrl?.port || projectDbPort;
805
+ const dbName = parsedUrl?.database || projectDbName;
806
+ const dbUser = parsedUrl?.user || process.env['SPECMEM_DB_USER'] || getRcValue(rc, 'database.user', cred);
807
+ const dbPassword = parsedUrl?.password || process.env['SPECMEM_DB_PASSWORD'] || getRcValue(rc, 'database.password', cred);
808
+ const dbSsl = parsedUrl?.ssl;
809
+ return {
810
+ database: {
811
+ host: dbHost,
812
+ port: dbPort,
813
+ database: dbName,
814
+ user: dbUser,
815
+ password: dbPassword,
816
+ maxConnections: 20,
817
+ idleTimeout: 30000,
818
+ connectionTimeout: 5000,
819
+ ssl: dbSsl
820
+ },
821
+ embedding: {
822
+ // DEPRECATED: dimensions is now auto-detected from the database pgvector column
823
+ // This config value is IGNORED - the system queries pg_attribute for actual dimension
824
+ // Kept for backwards compatibility but will be removed in future versions
825
+ // dimensions: parseInt(optionalEnv('SPECMEM_EMBEDDING_DIMENSIONS', '1536'), 10),
826
+ model: process.env['SPECMEM_EMBEDDING_MODEL'] || getRcValue(rc, 'embedding.model', 'text-embedding-3-small'),
827
+ batchSize: process.env['SPECMEM_EMBEDDING_BATCH_SIZE'] ? parseInt(process.env['SPECMEM_EMBEDDING_BATCH_SIZE'], 10) : getRcValue(rc, 'embedding.batchSize', 100),
828
+ // Docker container CPU limit (in cores, e.g., 1.0 = 1 core, 0.5 = half core)
829
+ cpuLimit: process.env['SPECMEM_EMBEDDING_CPU_LIMIT'] ? parseFloat(process.env['SPECMEM_EMBEDDING_CPU_LIMIT']) : getRcValue(rc, 'embedding.cpuLimit', 1.0)
830
+ },
831
+ consolidation: {
832
+ autoEnabled: parseBoolean(optionalEnv('SPECMEM_AUTO_CONSOLIDATION', 'false')),
833
+ intervalMinutes: parseInt(optionalEnv('SPECMEM_CONSOLIDATION_INTERVAL', '60'), 10),
834
+ minMemoriesForConsolidation: parseInt(optionalEnv('SPECMEM_MIN_MEMORIES_CONSOLIDATION', '5'), 10),
835
+ similarityQueryLimit: parseInt(optionalEnv('SPECMEM_CONSOLIDATION_SIMILARITY_LIMIT', '1000'), 10),
836
+ temporalQueryLimit: parseInt(optionalEnv('SPECMEM_CONSOLIDATION_TEMPORAL_LIMIT', '500'), 10),
837
+ tagBasedQueryLimit: parseInt(optionalEnv('SPECMEM_CONSOLIDATION_TAG_LIMIT', '50'), 10),
838
+ importanceQueryLimit: parseInt(optionalEnv('SPECMEM_CONSOLIDATION_IMPORTANCE_LIMIT', '200'), 10)
839
+ },
840
+ storage: {
841
+ maxImageSizeBytes: parseInt(optionalEnv('SPECMEM_MAX_IMAGE_SIZE', '10485760'), 10),
842
+ allowedImageTypes: optionalEnv('SPECMEM_ALLOWED_IMAGE_TYPES', 'image/png,image/jpeg,image/webp,image/gif').split(',')
843
+ },
844
+ logging: {
845
+ level: (process.env['SPECMEM_LOG_LEVEL'] || getRcValue(rc, 'logging.level', 'info')),
846
+ prettyPrint: process.env['SPECMEM_LOG_PRETTY'] ? parseBoolean(process.env['SPECMEM_LOG_PRETTY']) : getRcValue(rc, 'logging.prettyPrint', false)
847
+ },
848
+ // File watcher - ENABLED BY DEFAULT for live codebase updates
849
+ // CRITICAL: Always an object (never undefined) - use enabled: boolean to control
850
+ // Project path is DYNAMIC - uses getProjectPath() which reads SPECMEM_PROJECT_PATH
851
+ watcher: {
852
+ enabled: process.env['SPECMEM_WATCHER_ENABLED'] ? parseBoolean(process.env['SPECMEM_WATCHER_ENABLED']) : getRcValue(rc, 'watcher.enabled', true),
853
+ rootPath: getProjectPath(), // DYNAMIC: Uses env var or cwd, re-evaluated per call
854
+ ignorePath: process.env['SPECMEM_WATCHER_IGNORE_PATH'],
855
+ debounceMs: process.env['SPECMEM_WATCHER_DEBOUNCE_MS'] ? parseInt(process.env['SPECMEM_WATCHER_DEBOUNCE_MS'], 10) : getRcValue(rc, 'watcher.debounceMs', 1000),
856
+ autoRestart: parseBoolean(optionalEnv('SPECMEM_WATCHER_AUTO_RESTART', 'true')),
857
+ maxRestarts: parseInt(optionalEnv('SPECMEM_WATCHER_MAX_RESTARTS', '5'), 10),
858
+ maxFileSizeBytes: process.env['SPECMEM_WATCHER_MAX_FILE_SIZE'] ? parseInt(process.env['SPECMEM_WATCHER_MAX_FILE_SIZE'], 10) : getRcValue(rc, 'watcher.maxFileSizeBytes', 1048576),
859
+ autoDetectMetadata: parseBoolean(optionalEnv('SPECMEM_WATCHER_AUTO_DETECT_METADATA', 'true')),
860
+ queueMaxSize: parseInt(optionalEnv('SPECMEM_WATCHER_QUEUE_MAX_SIZE', '10000'), 10),
861
+ queueBatchSize: parseInt(optionalEnv('SPECMEM_WATCHER_QUEUE_BATCH_SIZE', '50'), 10),
862
+ queueProcessingIntervalMs: parseInt(optionalEnv('SPECMEM_WATCHER_QUEUE_INTERVAL_MS', '2000'), 10),
863
+ syncCheckIntervalMinutes: parseInt(optionalEnv('SPECMEM_WATCHER_SYNC_CHECK_INTERVAL', '60'), 10)
864
+ },
865
+ // Session watcher - ENABLED BY DEFAULT for live chat history updates
866
+ // CRITICAL: Always an object (never undefined) - use enabled: boolean to control
867
+ sessionWatcher: {
868
+ enabled: process.env['SPECMEM_SESSION_WATCHER_ENABLED'] ? parseBoolean(process.env['SPECMEM_SESSION_WATCHER_ENABLED']) : getRcValue(rc, 'sessionWatcher.enabled', true),
869
+ claudeDir: process.env['SPECMEM_SESSION_CLAUDE_DIR'],
870
+ debounceMs: process.env['SPECMEM_SESSION_DEBOUNCE_MS'] ? parseInt(process.env['SPECMEM_SESSION_DEBOUNCE_MS'], 10) : getRcValue(rc, 'sessionWatcher.debounceMs', 2000),
871
+ importance: (process.env['SPECMEM_SESSION_IMPORTANCE'] || getRcValue(rc, 'sessionWatcher.importance', 'medium')),
872
+ additionalTags: process.env['SPECMEM_SESSION_TAGS'] ? process.env['SPECMEM_SESSION_TAGS'].split(',').filter(t => t.trim()) : getRcValue(rc, 'sessionWatcher.additionalTags', [])
873
+ },
874
+ // Chinese Compactor - token efficiency through Traditional Chinese compression
875
+ // Enabled by default for ~3.5x token savings on verbose outputs
876
+ compression: {
877
+ enabled: process.env['SPECMEM_COMPRESSION_ENABLED'] ? parseBoolean(process.env['SPECMEM_COMPRESSION_ENABLED']) : getRcValue(rc, 'compression.enabled', true),
878
+ minLength: process.env['SPECMEM_COMPRESSION_MIN_LENGTH'] ? parseInt(process.env['SPECMEM_COMPRESSION_MIN_LENGTH'], 10) : getRcValue(rc, 'compression.minLength', 50),
879
+ threshold: process.env['SPECMEM_COMPRESSION_THRESHOLD'] ? parseFloat(process.env['SPECMEM_COMPRESSION_THRESHOLD']) : getRcValue(rc, 'compression.threshold', 0.80),
880
+ compressSearchResults: parseBoolean(optionalEnv('SPECMEM_COMPRESS_SEARCH', 'true')),
881
+ compressSystemOutput: parseBoolean(optionalEnv('SPECMEM_COMPRESS_SYSTEM', 'true')),
882
+ compressHookOutput: parseBoolean(optionalEnv('SPECMEM_COMPRESS_HOOKS', 'true'))
883
+ }
884
+ };
885
+ }
886
+ /**
887
+ * Validate configuration at startup - fail fast if something is wrong fr fr
888
+ */
889
+ function validateConfig(cfg) {
890
+ const errors = [];
891
+ // Database validation
892
+ if (cfg.database.port < 1 || cfg.database.port > 65535) {
893
+ errors.push(`Invalid database port: ${cfg.database.port}`);
894
+ }
895
+ if (cfg.database.maxConnections < 1 || cfg.database.maxConnections > 1000) {
896
+ errors.push(`Invalid maxConnections: ${cfg.database.maxConnections} (must be 1-1000)`);
897
+ }
898
+ // Embedding validation - dimensions are now auto-detected from database
899
+ // DEPRECATED: This validation is no longer needed as dimensions come from pgvector column
900
+ // if (cfg.embedding.dimensions < 1 || cfg.embedding.dimensions > 10000) {
901
+ // errors.push(`Invalid embedding dimensions: ${cfg.embedding.dimensions}`);
902
+ // }
903
+ // Logging validation
904
+ const validLogLevels = ['fatal', 'error', 'warn', 'info', 'debug', 'trace'];
905
+ if (!validLogLevels.includes(cfg.logging.level)) {
906
+ errors.push(`Invalid log level: ${cfg.logging.level} (must be one of: ${validLogLevels.join(', ')})`);
907
+ }
908
+ // Watcher validation (if enabled)
909
+ if (cfg.watcher) {
910
+ if (cfg.watcher.debounceMs < 0) {
911
+ errors.push(`Invalid watcher debounce: ${cfg.watcher.debounceMs}ms`);
912
+ }
913
+ if (cfg.watcher.maxFileSizeBytes < 1024) {
914
+ errors.push(`Invalid watcher maxFileSize: ${cfg.watcher.maxFileSizeBytes} (min 1024 bytes)`);
915
+ }
916
+ }
917
+ // Log validation results
918
+ if (errors.length > 0) {
919
+ const logger = console; // Can't use pino here since config isn't loaded yet
920
+ logger.error('=== CONFIG VALIDATION FAILED fr fr ===');
921
+ for (const error of errors) {
922
+ logger.error(` - ${error}`);
923
+ }
924
+ logger.error('Fix these issues and restart bruh');
925
+ process.exit(1);
926
+ }
927
+ }
928
+ const configCache = new Map();
929
+ const CACHE_TTL = 60000; // 1 minute
930
+ /**
931
+ * Get config - returns cached if same project and not expired, reloads otherwise
932
+ * This prevents cross-project pollution while maintaining performance
933
+ * Cache is keyed by project path for true multi-project isolation
934
+ */
935
+ export function getConfig() {
936
+ const projectPath = getProjectPath();
937
+ const cached = configCache.get(projectPath);
938
+ // Return cached if not expired
939
+ if (cached && Date.now() - cached.timestamp < CACHE_TTL) {
940
+ return cached.config;
941
+ }
942
+ // Load fresh config for new project or expired cache
943
+ const config = loadConfig();
944
+ validateConfig(config);
945
+ // Cache with timestamp
946
+ configCache.set(projectPath, { config, timestamp: Date.now() });
947
+ return config;
948
+ }
949
+ /**
950
+ * Force config reload - use when env vars change
951
+ * Clears cache for current project or all projects
952
+ */
953
+ export function reloadConfig(projectPath) {
954
+ if (projectPath) {
955
+ configCache.delete(projectPath);
956
+ }
957
+ else {
958
+ // Clear current project's cache
959
+ const currentProject = getProjectPath();
960
+ configCache.delete(currentProject);
961
+ }
962
+ return getConfig();
963
+ }
964
+ /**
965
+ * Clear the config cache - useful for testing
966
+ * @param projectPath - Optional project path to clear specific cache, or clear all if not specified
967
+ */
968
+ export function clearConfigCache(projectPath) {
969
+ if (projectPath) {
970
+ configCache.delete(projectPath);
971
+ }
972
+ else {
973
+ configCache.clear();
974
+ }
975
+ }
976
+ /**
977
+ * Invalidate config cache for a specific project
978
+ * Used when project context changes or env vars are updated
979
+ */
980
+ export function invalidateConfigCache(projectPath) {
981
+ clearConfigCache(projectPath);
982
+ }
983
+ // BACKWARDS COMPAT: Keep 'config' export but make it call getConfig()
984
+ // This is a Proxy that evaluates lazily on each property access
985
+ // Ensures all existing imports like `import { config } from './config.js'` continue to work
986
+ export const config = new Proxy({}, {
987
+ get(_, prop) {
988
+ return getConfig()[prop];
989
+ },
990
+ // Support spread operator and Object.keys
991
+ ownKeys() {
992
+ return Reflect.ownKeys(getConfig());
993
+ },
994
+ getOwnPropertyDescriptor(_, prop) {
995
+ const cfg = getConfig();
996
+ if (prop in cfg) {
997
+ return {
998
+ value: cfg[prop],
999
+ writable: false,
1000
+ enumerable: true,
1001
+ configurable: true
1002
+ };
1003
+ }
1004
+ return undefined;
1005
+ },
1006
+ has(_, prop) {
1007
+ return prop in getConfig();
1008
+ }
1009
+ });
1010
+ export function loadSkillsConfig() {
1011
+ // Load rc config for skills settings
1012
+ const projectPath = getProjectPath();
1013
+ const rc = loadSpecmemRc(projectPath);
1014
+ // Default skills path relative to current working directory or use __dirname fallback
1015
+ const defaultSkillsPath = (typeof __dirname !== 'undefined' ? `${__dirname}/../skills` : './skills');
1016
+ return {
1017
+ enabled: process.env['SPECMEM_SKILLS_ENABLED'] ? parseBoolean(process.env['SPECMEM_SKILLS_ENABLED']) : getRcValue(rc, 'skills.enabled', true),
1018
+ skillsPath: process.env['SPECMEM_SKILLS_PATH'] || getRcValue(rc, 'skills.skillsPath', defaultSkillsPath),
1019
+ autoReload: parseBoolean(optionalEnv('SPECMEM_SKILLS_AUTO_RELOAD', 'true'))
1020
+ };
1021
+ }
1022
+ export function loadCodebaseConfig() {
1023
+ // Load rc config for codebase settings
1024
+ const projectPath = getProjectPath();
1025
+ const rc = loadSpecmemRc(projectPath);
1026
+ const defaultExcludes = [
1027
+ 'node_modules', '.git', 'dist', 'build', '.next', 'coverage',
1028
+ '__pycache__', '.pytest_cache', '.mypy_cache', 'venv', '.venv',
1029
+ '*.pyc', '*.pyo', '*.log', 'package-lock.json', 'yarn.lock'
1030
+ ];
1031
+ // Priority: ENV > .specmemrc > defaults
1032
+ const envExcludes = process.env['SPECMEM_CODEBASE_EXCLUDE_PATTERNS'];
1033
+ const excludePatterns = envExcludes
1034
+ ? envExcludes.split(',').map(p => p.trim())
1035
+ : getRcValue(rc, 'codebase.excludePatterns', defaultExcludes);
1036
+ // Default codebase path to project path (set by bootstrap.cjs)
1037
+ const defaultCodebasePath = process.env['SPECMEM_CODEBASE_PATH'] || process.env['SPECMEM_PROJECT_PATH'] || process.cwd();
1038
+ return {
1039
+ enabled: process.env['SPECMEM_CODEBASE_ENABLED'] ? parseBoolean(process.env['SPECMEM_CODEBASE_ENABLED']) : getRcValue(rc, 'codebase.enabled', true),
1040
+ codebasePath: optionalEnv('SPECMEM_CODEBASE_PATH', defaultCodebasePath),
1041
+ excludePatterns,
1042
+ watchForChanges: parseBoolean(optionalEnv('SPECMEM_CODEBASE_WATCH', 'true'))
1043
+ };
1044
+ }
1045
+ export function loadCoordinationConfig() {
1046
+ // Use project-hash-derived port: base 8600, range 100 (8600-8699)
1047
+ const defaultPort = String(getProjectPortFromHash(8600, 100));
1048
+ return {
1049
+ enabled: parseBoolean(optionalEnv('SPECMEM_COORDINATION_ENABLED', 'false')),
1050
+ port: parsePort(optionalEnv('SPECMEM_COORDINATION_PORT', defaultPort), parseInt(defaultPort, 10), 'SPECMEM_COORDINATION_PORT'),
1051
+ host: optionalEnv('SPECMEM_COORDINATION_HOST', '127.0.0.1')
1052
+ };
1053
+ }
1054
+ /**
1055
+ * Load dashboard configuration from environment variables
1056
+ *
1057
+ * SPECMEM_DASHBOARD_MODE controls access:
1058
+ * - 'private' (default): Binds to 127.0.0.1, localhost-only access
1059
+ * - 'public': Binds to configured host (0.0.0.0 for all interfaces), network accessible
1060
+ *
1061
+ * SECURITY WARNING: Public mode exposes the dashboard to your network!
1062
+ * Ensure you have a strong password set via SPECMEM_DASHBOARD_PASSWORD
1063
+ */
1064
+ export function loadDashboardConfig() {
1065
+ // Load rc config for dashboard settings
1066
+ const projectPath = getProjectPath();
1067
+ const rc = loadSpecmemRc(projectPath);
1068
+ // Priority: ENV > .specmemrc > default
1069
+ const mode = (process.env['SPECMEM_DASHBOARD_MODE'] || getRcValue(rc, 'dashboard.mode', 'private'));
1070
+ // Validate mode
1071
+ if (mode !== 'private' && mode !== 'public') {
1072
+ console.warn('Invalid SPECMEM_DASHBOARD_MODE: "' + mode + '", defaulting to "private"');
1073
+ }
1074
+ const validMode = (mode === 'public') ? 'public' : 'private';
1075
+ // In private mode, always use localhost regardless of SPECMEM_DASHBOARD_HOST
1076
+ // In public mode, use configured host (default 0.0.0.0 for all interfaces)
1077
+ const configuredHost = optionalEnv('SPECMEM_DASHBOARD_HOST', '0.0.0.0');
1078
+ const effectiveHost = validMode === 'private' ? '127.0.0.1' : configuredHost;
1079
+ // Use project-hash-derived port: base 8500, range 100 (8500-8599)
1080
+ const defaultPort = getProjectPortFromHash(8500, 100);
1081
+ const rcPort = getRcValue(rc, 'dashboard.port', defaultPort);
1082
+ return {
1083
+ enabled: process.env['SPECMEM_DASHBOARD_ENABLED'] ? parseBoolean(process.env['SPECMEM_DASHBOARD_ENABLED']) : getRcValue(rc, 'dashboard.enabled', true),
1084
+ port: process.env['SPECMEM_DASHBOARD_PORT'] ? parsePort(process.env['SPECMEM_DASHBOARD_PORT'], rcPort, 'SPECMEM_DASHBOARD_PORT') : rcPort,
1085
+ host: effectiveHost,
1086
+ mode: validMode
1087
+ };
1088
+ }
1089
+ /**
1090
+ * Get current port configuration
1091
+ * Uses SPECMEM_PROJECT_HASH for per-project port isolation
1092
+ * Reads from environment or derives from project hash
1093
+ * For async allocation with conflict detection, use getInstancePorts from portAllocator
1094
+ */
1095
+ export function getPortConfig() {
1096
+ // Dashboard port: base 8500, range 100 (8500-8599)
1097
+ const dashboardPort = process.env['SPECMEM_DASHBOARD_PORT']
1098
+ ? parsePort(process.env['SPECMEM_DASHBOARD_PORT'], getProjectPortFromHash(8500, 100), 'SPECMEM_DASHBOARD_PORT')
1099
+ : getProjectPortFromHash(8500, 100);
1100
+ // Coordination port: base 8600, range 100 (8600-8699)
1101
+ const coordinationPort = process.env['SPECMEM_COORDINATION_PORT']
1102
+ ? parsePort(process.env['SPECMEM_COORDINATION_PORT'], getProjectPortFromHash(8600, 100), 'SPECMEM_COORDINATION_PORT')
1103
+ : getProjectPortFromHash(8600, 100);
1104
+ return {
1105
+ dashboard: dashboardPort,
1106
+ coordination: coordinationPort,
1107
+ dynamicAllocation: !process.env['SPECMEM_DASHBOARD_PORT'] && !process.env['SPECMEM_COORDINATION_PORT'],
1108
+ projectPath: process.env['SPECMEM_PROJECT_PATH'] || process.cwd()
1109
+ };
1110
+ }
1111
+ export function loadCompressionConfig() {
1112
+ return {
1113
+ enabled: parseBoolean(optionalEnv('SPECMEM_COMPRESSION_ENABLED', 'true')),
1114
+ minLength: parseInt(optionalEnv('SPECMEM_COMPRESSION_MIN_LENGTH', '50'), 10),
1115
+ threshold: parseFloat(optionalEnv('SPECMEM_COMPRESSION_THRESHOLD', '0.80')),
1116
+ compressSearchResults: parseBoolean(optionalEnv('SPECMEM_COMPRESS_SEARCH', 'true')),
1117
+ compressSystemOutput: parseBoolean(optionalEnv('SPECMEM_COMPRESS_SYSTEM', 'true')),
1118
+ compressHookOutput: parseBoolean(optionalEnv('SPECMEM_COMPRESS_HOOKS', 'true'))
1119
+ };
1120
+ }
1121
+ /**
1122
+ * Get the compression config from the main config
1123
+ * Provides safe access with defaults if not set
1124
+ */
1125
+ export function getCompressionConfig() {
1126
+ return config.compression ?? loadCompressionConfig();
1127
+ }
1128
+ /**
1129
+ * Load embedded PostgreSQL configuration
1130
+ * Uses SPECMEM_PROJECT_DIR_NAME for per-project isolation
1131
+ * NO MORE HASHES - uses readable project directory name
1132
+ */
1133
+ export function loadEmbeddedPostgresConfig() {
1134
+ const projectPath = process.env['SPECMEM_PROJECT_PATH'] || process.cwd();
1135
+ const projectDirName = process.env['SPECMEM_PROJECT_DIR_NAME'] || getProjectDirName();
1136
+ // Project-specific database name: specmem_{project_dir_name}
1137
+ const sanitized = projectDirName.replace(/[^a-z0-9]/g, '_').substring(0, 50);
1138
+ const defaultDbName = `specmem_${sanitized}`;
1139
+ // Project-specific port derived from directory name (range 5500-5599)
1140
+ let hashNum = 0;
1141
+ for (let i = 0; i < projectDirName.length; i++) {
1142
+ hashNum = ((hashNum << 5) - hashNum) + projectDirName.charCodeAt(i);
1143
+ hashNum = hashNum & 0xFFFF;
1144
+ }
1145
+ const defaultPort = 5500 + (Math.abs(hashNum) % 100);
1146
+ return {
1147
+ enabled: parseBoolean(optionalEnv('SPECMEM_EMBEDDED_PG_ENABLED', 'true')),
1148
+ projectPath,
1149
+ port: process.env['SPECMEM_EMBEDDED_PG_PORT']
1150
+ ? parsePort(process.env['SPECMEM_EMBEDDED_PG_PORT'], defaultPort, 'SPECMEM_EMBEDDED_PG_PORT')
1151
+ : defaultPort,
1152
+ database: optionalEnv('SPECMEM_DB_NAME', defaultDbName),
1153
+ user: optionalEnv('SPECMEM_DB_USER', 'specmem_westayunprofessional'),
1154
+ password: process.env['SPECMEM_EMBEDDED_PG_PASSWORD'] || undefined,
1155
+ autoStart: parseBoolean(optionalEnv('SPECMEM_EMBEDDED_PG_AUTOSTART', 'true')),
1156
+ autoStop: parseBoolean(optionalEnv('SPECMEM_EMBEDDED_PG_AUTOSTOP', 'true')),
1157
+ portRangeStart: parsePort(optionalEnv('SPECMEM_EMBEDDED_PG_PORT_START', '5500'), 5500, 'SPECMEM_EMBEDDED_PG_PORT_START'),
1158
+ portRangeEnd: parsePort(optionalEnv('SPECMEM_EMBEDDED_PG_PORT_END', '5600'), 5600, 'SPECMEM_EMBEDDED_PG_PORT_END'),
1159
+ };
1160
+ }
1161
+ /**
1162
+ * Check if embedded PostgreSQL is active
1163
+ * Returns true if:
1164
+ * 1. Embedded mode is enabled
1165
+ * 2. SPECMEM_EMBEDDED_PG_ACTIVE env var is set (set by bootstrap.cjs)
1166
+ */
1167
+ export function isEmbeddedPostgresActive() {
1168
+ return parseBoolean(optionalEnv('SPECMEM_EMBEDDED_PG_ACTIVE', 'false'));
1169
+ }
1170
+ /**
1171
+ * Get the embedded PostgreSQL data directory path
1172
+ */
1173
+ export function getEmbeddedPostgresDataDir(projectPath) {
1174
+ const basePath = projectPath || process.env['SPECMEM_PROJECT_PATH'] || process.cwd();
1175
+ return path.join(basePath, '.specmem', 'pgdata');
1176
+ }
1177
+ //# sourceMappingURL=config.js.map