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.
- package/CHANGELOG.md +299 -0
- package/LICENSE.md +6406 -0
- package/README.md +539 -0
- package/bin/AegisTheme.cjs +1022 -0
- package/bin/AnsiRenderer.cjs +1055 -0
- package/bin/BoxRenderer.cjs +605 -0
- package/bin/ClaudeLiveScreen.cjs +1299 -0
- package/bin/DashboardModules.cjs +733 -0
- package/bin/LiveScreenCapture.cjs +1012 -0
- package/bin/MemoryBrowserScreen.cjs +1595 -0
- package/bin/TabManager.cjs +1414 -0
- package/bin/checkAgentStatus-fix.patch +30 -0
- package/bin/mcp-socket-client.cjs +462 -0
- package/bin/screen-utils.cjs +106 -0
- package/bin/specmem-autoclaude.cjs +663 -0
- package/bin/specmem-cleanup.cjs +421 -0
- package/bin/specmem-cli.cjs +794 -0
- package/bin/specmem-console-teamcomms-class.cjs +428 -0
- package/bin/specmem-console.cjs +8104 -0
- package/bin/specmem-statusbar.cjs +530 -0
- package/bootstrap.cjs +5065 -0
- package/claude-hooks/agent-chooser-hook.js +179 -0
- package/claude-hooks/agent-chooser-inject.js +121 -0
- package/claude-hooks/agent-loading-hook.js +990 -0
- package/claude-hooks/agent-output-fader.cjs +542 -0
- package/claude-hooks/agent-output-interceptor.js +193 -0
- package/claude-hooks/agent-type-matcher.js +419 -0
- package/claude-hooks/auto-bypass.py +74 -0
- package/claude-hooks/background-completion-silencer.js +134 -0
- package/claude-hooks/bash-auto-background.js +182 -0
- package/claude-hooks/build-cedict-dictionary.mjs +167 -0
- package/claude-hooks/bullshit-radar.cjs +323 -0
- package/claude-hooks/cedict-codes.json +270 -0
- package/claude-hooks/cedict-extracted.json +22632 -0
- package/claude-hooks/claude-watchdog.sh +401 -0
- package/claude-hooks/context-dedup.cjs +144 -0
- package/claude-hooks/context-yeeter.cjs +244 -0
- package/claude-hooks/debug-suffix.cjs +15 -0
- package/claude-hooks/debug2.cjs +7 -0
- package/claude-hooks/drilldown-enforcer.js +242 -0
- package/claude-hooks/english-morphology-standalone.cjs +149 -0
- package/claude-hooks/english-morphology.cjs +152 -0
- package/claude-hooks/extract-translations.mjs +193 -0
- package/claude-hooks/file-claim-enforcer.cjs +293 -0
- package/claude-hooks/file-claim-enforcer.js +293 -0
- package/claude-hooks/find-collisions.cjs +39 -0
- package/claude-hooks/fix-abbreviations.cjs +60 -0
- package/claude-hooks/fix-collisions.cjs +60 -0
- package/claude-hooks/fix-decompressor.cjs +79 -0
- package/claude-hooks/fix-suffixes.cjs +66 -0
- package/claude-hooks/grammar-engine.cjs +159 -0
- package/claude-hooks/input-aware-improver.js +231 -0
- package/claude-hooks/is-agent.cjs +64 -0
- package/claude-hooks/mega-test.cjs +213 -0
- package/claude-hooks/merge-dictionaries.mjs +207 -0
- package/claude-hooks/merged-codes.cjs +22675 -0
- package/claude-hooks/merged-codes.json +22676 -0
- package/claude-hooks/output-cleaner.cjs +388 -0
- package/claude-hooks/post-write-memory-hook.cjs +430 -0
- package/claude-hooks/quick-test.cjs +24 -0
- package/claude-hooks/quick-test2.cjs +24 -0
- package/claude-hooks/remove-bad-codes.cjs +23 -0
- package/claude-hooks/search-reminder-hook.js +90 -0
- package/claude-hooks/semantic-test.cjs +93 -0
- package/claude-hooks/settings.json +445 -0
- package/claude-hooks/smart-context-hook.cjs +547 -0
- package/claude-hooks/smart-context-hook.js +539 -0
- package/claude-hooks/smart-search-interceptor.js +364 -0
- package/claude-hooks/socket-connect-helper.cjs +235 -0
- package/claude-hooks/specmem/sockets/session-start.lock +1 -0
- package/claude-hooks/specmem-context-hook.cjs +357 -0
- package/claude-hooks/specmem-context-hook.js +357 -0
- package/claude-hooks/specmem-drilldown-hook.cjs +480 -0
- package/claude-hooks/specmem-drilldown-hook.js +480 -0
- package/claude-hooks/specmem-drilldown-setter.js +210 -0
- package/claude-hooks/specmem-paths.cjs +213 -0
- package/claude-hooks/specmem-precompact.js +183 -0
- package/claude-hooks/specmem-session-init.sh +33 -0
- package/claude-hooks/specmem-session-start.cjs +498 -0
- package/claude-hooks/specmem-stop-hook.cjs +73 -0
- package/claude-hooks/specmem-stop-hook.js +5 -0
- package/claude-hooks/specmem-team-comms.cjs +434 -0
- package/claude-hooks/specmem-team-member-inject.js +271 -0
- package/claude-hooks/specmem-unified-hook.py +670 -0
- package/claude-hooks/subagent-loading-hook.js +194 -0
- package/claude-hooks/sysprompt-squisher.cjs +167 -0
- package/claude-hooks/task-progress-hook.js +204 -0
- package/claude-hooks/team-comms-enforcer.cjs +585 -0
- package/claude-hooks/test-accuracy.cjs +27 -0
- package/claude-hooks/test-big.cjs +28 -0
- package/claude-hooks/test-inflectors.cjs +39 -0
- package/claude-hooks/test-pluralize.cjs +37 -0
- package/claude-hooks/test-quick.cjs +8 -0
- package/claude-hooks/test-wink.cjs +20 -0
- package/claude-hooks/token-compressor.cjs +940 -0
- package/claude-hooks/use-code-pointers.cjs +279 -0
- package/commands/COMMAND_TOOL_MAP.md +299 -0
- package/commands/specmem-agents.md +412 -0
- package/commands/specmem-autoclaude.md +295 -0
- package/commands/specmem-changes.md +247 -0
- package/commands/specmem-code.md +103 -0
- package/commands/specmem-configteammembercomms.md +322 -0
- package/commands/specmem-drilldown.md +208 -0
- package/commands/specmem-find.md +195 -0
- package/commands/specmem-getdashboard.md +243 -0
- package/commands/specmem-hooks.md +219 -0
- package/commands/specmem-pointers.md +149 -0
- package/commands/specmem-progress.md +287 -0
- package/commands/specmem-remember.md +123 -0
- package/commands/specmem-service.md +349 -0
- package/commands/specmem-stats.md +189 -0
- package/commands/specmem-team-member.md +409 -0
- package/commands/specmem-webdev.md +583 -0
- package/commands/specmem.md +363 -0
- package/dist/autoStart/index.d.ts +214 -0
- package/dist/autoStart/index.d.ts.map +1 -0
- package/dist/autoStart/index.js +883 -0
- package/dist/autoStart/index.js.map +1 -0
- package/dist/claude-sessions/contextRestorationParser.d.ts +74 -0
- package/dist/claude-sessions/contextRestorationParser.d.ts.map +1 -0
- package/dist/claude-sessions/contextRestorationParser.js +570 -0
- package/dist/claude-sessions/contextRestorationParser.js.map +1 -0
- package/dist/claude-sessions/index.d.ts +13 -0
- package/dist/claude-sessions/index.d.ts.map +1 -0
- package/dist/claude-sessions/index.js +11 -0
- package/dist/claude-sessions/index.js.map +1 -0
- package/dist/claude-sessions/sessionIntegration.d.ts +48 -0
- package/dist/claude-sessions/sessionIntegration.d.ts.map +1 -0
- package/dist/claude-sessions/sessionIntegration.js +146 -0
- package/dist/claude-sessions/sessionIntegration.js.map +1 -0
- package/dist/claude-sessions/sessionParser.d.ts +293 -0
- package/dist/claude-sessions/sessionParser.d.ts.map +1 -0
- package/dist/claude-sessions/sessionParser.js +1028 -0
- package/dist/claude-sessions/sessionParser.js.map +1 -0
- package/dist/claude-sessions/sessionWatcher.d.ts +139 -0
- package/dist/claude-sessions/sessionWatcher.d.ts.map +1 -0
- package/dist/claude-sessions/sessionWatcher.js +722 -0
- package/dist/claude-sessions/sessionWatcher.js.map +1 -0
- package/dist/cli/deploy-to-claude.d.ts +56 -0
- package/dist/cli/deploy-to-claude.d.ts.map +1 -0
- package/dist/cli/deploy-to-claude.js +576 -0
- package/dist/cli/deploy-to-claude.js.map +1 -0
- package/dist/code-explanations/explainCode.d.ts +86 -0
- package/dist/code-explanations/explainCode.d.ts.map +1 -0
- package/dist/code-explanations/explainCode.js +286 -0
- package/dist/code-explanations/explainCode.js.map +1 -0
- package/dist/code-explanations/feedback.d.ts +87 -0
- package/dist/code-explanations/feedback.d.ts.map +1 -0
- package/dist/code-explanations/feedback.js +212 -0
- package/dist/code-explanations/feedback.js.map +1 -0
- package/dist/code-explanations/getRelatedCode.d.ts +80 -0
- package/dist/code-explanations/getRelatedCode.d.ts.map +1 -0
- package/dist/code-explanations/getRelatedCode.js +262 -0
- package/dist/code-explanations/getRelatedCode.js.map +1 -0
- package/dist/code-explanations/index.d.ts +284 -0
- package/dist/code-explanations/index.d.ts.map +1 -0
- package/dist/code-explanations/index.js +249 -0
- package/dist/code-explanations/index.js.map +1 -0
- package/dist/code-explanations/linkCodeToPrompt.d.ts +79 -0
- package/dist/code-explanations/linkCodeToPrompt.d.ts.map +1 -0
- package/dist/code-explanations/linkCodeToPrompt.js +213 -0
- package/dist/code-explanations/linkCodeToPrompt.js.map +1 -0
- package/dist/code-explanations/recallExplanation.d.ts +88 -0
- package/dist/code-explanations/recallExplanation.d.ts.map +1 -0
- package/dist/code-explanations/recallExplanation.js +218 -0
- package/dist/code-explanations/recallExplanation.js.map +1 -0
- package/dist/code-explanations/schema.d.ts +32 -0
- package/dist/code-explanations/schema.d.ts.map +1 -0
- package/dist/code-explanations/schema.js +221 -0
- package/dist/code-explanations/schema.js.map +1 -0
- package/dist/code-explanations/semanticSearch.d.ts +75 -0
- package/dist/code-explanations/semanticSearch.d.ts.map +1 -0
- package/dist/code-explanations/semanticSearch.js +203 -0
- package/dist/code-explanations/semanticSearch.js.map +1 -0
- package/dist/code-explanations/types.d.ts +328 -0
- package/dist/code-explanations/types.d.ts.map +1 -0
- package/dist/code-explanations/types.js +122 -0
- package/dist/code-explanations/types.js.map +1 -0
- package/dist/codebase/codeAnalyzer.d.ts +272 -0
- package/dist/codebase/codeAnalyzer.d.ts.map +1 -0
- package/dist/codebase/codeAnalyzer.js +1353 -0
- package/dist/codebase/codeAnalyzer.js.map +1 -0
- package/dist/codebase/codebaseIndexer.d.ts +360 -0
- package/dist/codebase/codebaseIndexer.d.ts.map +1 -0
- package/dist/codebase/codebaseIndexer.js +1735 -0
- package/dist/codebase/codebaseIndexer.js.map +1 -0
- package/dist/codebase/codebaseTools.d.ts +853 -0
- package/dist/codebase/codebaseTools.d.ts.map +1 -0
- package/dist/codebase/codebaseTools.js +1279 -0
- package/dist/codebase/codebaseTools.js.map +1 -0
- package/dist/codebase/exclusions.d.ts +111 -0
- package/dist/codebase/exclusions.d.ts.map +1 -0
- package/dist/codebase/exclusions.js +771 -0
- package/dist/codebase/exclusions.js.map +1 -0
- package/dist/codebase/fileWatcher.d.ts +135 -0
- package/dist/codebase/fileWatcher.d.ts.map +1 -0
- package/dist/codebase/fileWatcher.js +309 -0
- package/dist/codebase/fileWatcher.js.map +1 -0
- package/dist/codebase/index.d.ts +33 -0
- package/dist/codebase/index.d.ts.map +1 -0
- package/dist/codebase/index.js +77 -0
- package/dist/codebase/index.js.map +1 -0
- package/dist/codebase/ingestion.d.ts +177 -0
- package/dist/codebase/ingestion.d.ts.map +1 -0
- package/dist/codebase/ingestion.js +690 -0
- package/dist/codebase/ingestion.js.map +1 -0
- package/dist/codebase/languageDetection.d.ts +75 -0
- package/dist/codebase/languageDetection.d.ts.map +1 -0
- package/dist/codebase/languageDetection.js +768 -0
- package/dist/codebase/languageDetection.js.map +1 -0
- package/dist/commands/codebaseCommands.d.ts +101 -0
- package/dist/commands/codebaseCommands.d.ts.map +1 -0
- package/dist/commands/codebaseCommands.js +911 -0
- package/dist/commands/codebaseCommands.js.map +1 -0
- package/dist/commands/commandHandler.d.ts +126 -0
- package/dist/commands/commandHandler.d.ts.map +1 -0
- package/dist/commands/commandHandler.js +296 -0
- package/dist/commands/commandHandler.js.map +1 -0
- package/dist/commands/commandLoader.d.ts +103 -0
- package/dist/commands/commandLoader.d.ts.map +1 -0
- package/dist/commands/commandLoader.js +223 -0
- package/dist/commands/commandLoader.js.map +1 -0
- package/dist/commands/contextCommands.d.ts +83 -0
- package/dist/commands/contextCommands.d.ts.map +1 -0
- package/dist/commands/contextCommands.js +512 -0
- package/dist/commands/contextCommands.js.map +1 -0
- package/dist/commands/index.d.ts +24 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +28 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/mcpResources.d.ts +50 -0
- package/dist/commands/mcpResources.d.ts.map +1 -0
- package/dist/commands/mcpResources.js +372 -0
- package/dist/commands/mcpResources.js.map +1 -0
- package/dist/commands/memoryCommands.d.ts +74 -0
- package/dist/commands/memoryCommands.d.ts.map +1 -0
- package/dist/commands/memoryCommands.js +609 -0
- package/dist/commands/memoryCommands.js.map +1 -0
- package/dist/commands/promptCommands.d.ts +91 -0
- package/dist/commands/promptCommands.d.ts.map +1 -0
- package/dist/commands/promptCommands.js +801 -0
- package/dist/commands/promptCommands.js.map +1 -0
- package/dist/commands/teamMemberCommands.d.ts +21 -0
- package/dist/commands/teamMemberCommands.d.ts.map +1 -0
- package/dist/commands/teamMemberCommands.js +137 -0
- package/dist/commands/teamMemberCommands.js.map +1 -0
- package/dist/comms/fileCommsTransport.d.ts +91 -0
- package/dist/comms/fileCommsTransport.d.ts.map +1 -0
- package/dist/comms/fileCommsTransport.js +244 -0
- package/dist/comms/fileCommsTransport.js.map +1 -0
- package/dist/comms/index.d.ts +7 -0
- package/dist/comms/index.d.ts.map +1 -0
- package/dist/comms/index.js +7 -0
- package/dist/comms/index.js.map +1 -0
- package/dist/config/apiKeyDetection.d.ts +41 -0
- package/dist/config/apiKeyDetection.d.ts.map +1 -0
- package/dist/config/apiKeyDetection.js +211 -0
- package/dist/config/apiKeyDetection.js.map +1 -0
- package/dist/config/autoConfig.d.ts +188 -0
- package/dist/config/autoConfig.d.ts.map +1 -0
- package/dist/config/autoConfig.js +850 -0
- package/dist/config/autoConfig.js.map +1 -0
- package/dist/config/configSync.d.ts +119 -0
- package/dist/config/configSync.d.ts.map +1 -0
- package/dist/config/configSync.js +878 -0
- package/dist/config/configSync.js.map +1 -0
- package/dist/config/embeddingTimeouts.d.ts +145 -0
- package/dist/config/embeddingTimeouts.d.ts.map +1 -0
- package/dist/config/embeddingTimeouts.js +255 -0
- package/dist/config/embeddingTimeouts.js.map +1 -0
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/languageConfig.d.ts +68 -0
- package/dist/config/languageConfig.d.ts.map +1 -0
- package/dist/config/languageConfig.js +473 -0
- package/dist/config/languageConfig.js.map +1 -0
- package/dist/config/password.d.ts +145 -0
- package/dist/config/password.d.ts.map +1 -0
- package/dist/config/password.js +428 -0
- package/dist/config/password.js.map +1 -0
- package/dist/config.d.ts +338 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +1177 -0
- package/dist/config.js.map +1 -0
- package/dist/consolidation.d.ts +44 -0
- package/dist/consolidation.d.ts.map +1 -0
- package/dist/consolidation.js +447 -0
- package/dist/consolidation.js.map +1 -0
- package/dist/constants.d.ts +371 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +552 -0
- package/dist/constants.js.map +1 -0
- package/dist/coordination/TeamMemberRegistry.d.ts +192 -0
- package/dist/coordination/TeamMemberRegistry.d.ts.map +1 -0
- package/dist/coordination/TeamMemberRegistry.js +415 -0
- package/dist/coordination/TeamMemberRegistry.js.map +1 -0
- package/dist/coordination/events.d.ts +369 -0
- package/dist/coordination/events.d.ts.map +1 -0
- package/dist/coordination/events.js +232 -0
- package/dist/coordination/events.js.map +1 -0
- package/dist/coordination/handlers.d.ts +116 -0
- package/dist/coordination/handlers.d.ts.map +1 -0
- package/dist/coordination/handlers.js +400 -0
- package/dist/coordination/handlers.js.map +1 -0
- package/dist/coordination/index.d.ts +14 -0
- package/dist/coordination/index.d.ts.map +1 -0
- package/dist/coordination/index.js +31 -0
- package/dist/coordination/index.js.map +1 -0
- package/dist/coordination/integration.d.ts +260 -0
- package/dist/coordination/integration.d.ts.map +1 -0
- package/dist/coordination/integration.js +472 -0
- package/dist/coordination/integration.js.map +1 -0
- package/dist/coordination/server.d.ts +266 -0
- package/dist/coordination/server.d.ts.map +1 -0
- package/dist/coordination/server.js +995 -0
- package/dist/coordination/server.js.map +1 -0
- package/dist/coordination/serviceProvider.d.ts +70 -0
- package/dist/coordination/serviceProvider.d.ts.map +1 -0
- package/dist/coordination/serviceProvider.js +273 -0
- package/dist/coordination/serviceProvider.js.map +1 -0
- package/dist/dashboard/api/claudeControl.d.ts +44 -0
- package/dist/dashboard/api/claudeControl.d.ts.map +1 -0
- package/dist/dashboard/api/claudeControl.js +650 -0
- package/dist/dashboard/api/claudeControl.js.map +1 -0
- package/dist/dashboard/api/claudeHistory.d.ts +4 -0
- package/dist/dashboard/api/claudeHistory.d.ts.map +1 -0
- package/dist/dashboard/api/claudeHistory.js +319 -0
- package/dist/dashboard/api/claudeHistory.js.map +1 -0
- package/dist/dashboard/api/dataExport.d.ts +23 -0
- package/dist/dashboard/api/dataExport.d.ts.map +1 -0
- package/dist/dashboard/api/dataExport.js +509 -0
- package/dist/dashboard/api/dataExport.js.map +1 -0
- package/dist/dashboard/api/fileManager.d.ts +39 -0
- package/dist/dashboard/api/fileManager.d.ts.map +1 -0
- package/dist/dashboard/api/fileManager.js +814 -0
- package/dist/dashboard/api/fileManager.js.map +1 -0
- package/dist/dashboard/api/hooks.d.ts +16 -0
- package/dist/dashboard/api/hooks.d.ts.map +1 -0
- package/dist/dashboard/api/hooks.js +342 -0
- package/dist/dashboard/api/hooks.js.map +1 -0
- package/dist/dashboard/api/hotReload.d.ts +14 -0
- package/dist/dashboard/api/hotReload.d.ts.map +1 -0
- package/dist/dashboard/api/hotReload.js +219 -0
- package/dist/dashboard/api/hotReload.js.map +1 -0
- package/dist/dashboard/api/liveSessionStream.d.ts +19 -0
- package/dist/dashboard/api/liveSessionStream.d.ts.map +1 -0
- package/dist/dashboard/api/liveSessionStream.js +430 -0
- package/dist/dashboard/api/liveSessionStream.js.map +1 -0
- package/dist/dashboard/api/memoryRecall.d.ts +20 -0
- package/dist/dashboard/api/memoryRecall.d.ts.map +1 -0
- package/dist/dashboard/api/memoryRecall.js +524 -0
- package/dist/dashboard/api/memoryRecall.js.map +1 -0
- package/dist/dashboard/api/promptSend.d.ts +33 -0
- package/dist/dashboard/api/promptSend.d.ts.map +1 -0
- package/dist/dashboard/api/promptSend.js +544 -0
- package/dist/dashboard/api/promptSend.js.map +1 -0
- package/dist/dashboard/api/settings.d.ts +10 -0
- package/dist/dashboard/api/settings.d.ts.map +1 -0
- package/dist/dashboard/api/settings.js +656 -0
- package/dist/dashboard/api/settings.js.map +1 -0
- package/dist/dashboard/api/setup.d.ts +21 -0
- package/dist/dashboard/api/setup.d.ts.map +1 -0
- package/dist/dashboard/api/setup.js +663 -0
- package/dist/dashboard/api/setup.js.map +1 -0
- package/dist/dashboard/api/specmemTools.d.ts +14 -0
- package/dist/dashboard/api/specmemTools.d.ts.map +1 -0
- package/dist/dashboard/api/specmemTools.js +1059 -0
- package/dist/dashboard/api/specmemTools.js.map +1 -0
- package/dist/dashboard/api/taskTeamMembers.d.ts +8 -0
- package/dist/dashboard/api/taskTeamMembers.d.ts.map +1 -0
- package/dist/dashboard/api/taskTeamMembers.js +136 -0
- package/dist/dashboard/api/taskTeamMembers.js.map +1 -0
- package/dist/dashboard/api/teamMemberDeploy.d.ts +15 -0
- package/dist/dashboard/api/teamMemberDeploy.d.ts.map +1 -0
- package/dist/dashboard/api/teamMemberDeploy.js +421 -0
- package/dist/dashboard/api/teamMemberDeploy.js.map +1 -0
- package/dist/dashboard/api/teamMemberHistory.d.ts +38 -0
- package/dist/dashboard/api/teamMemberHistory.d.ts.map +1 -0
- package/dist/dashboard/api/teamMemberHistory.js +583 -0
- package/dist/dashboard/api/teamMemberHistory.js.map +1 -0
- package/dist/dashboard/api/terminal.d.ts +12 -0
- package/dist/dashboard/api/terminal.d.ts.map +1 -0
- package/dist/dashboard/api/terminal.js +344 -0
- package/dist/dashboard/api/terminal.js.map +1 -0
- package/dist/dashboard/api/terminalInject.d.ts +17 -0
- package/dist/dashboard/api/terminalInject.d.ts.map +1 -0
- package/dist/dashboard/api/terminalInject.js +322 -0
- package/dist/dashboard/api/terminalInject.js.map +1 -0
- package/dist/dashboard/api/terminalStream.d.ts +12 -0
- package/dist/dashboard/api/terminalStream.d.ts.map +1 -0
- package/dist/dashboard/api/terminalStream.js +482 -0
- package/dist/dashboard/api/terminalStream.js.map +1 -0
- package/dist/dashboard/index.d.ts +7 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +7 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/ptyStreamer.d.ts +173 -0
- package/dist/dashboard/ptyStreamer.d.ts.map +1 -0
- package/dist/dashboard/ptyStreamer.js +661 -0
- package/dist/dashboard/ptyStreamer.js.map +1 -0
- package/dist/dashboard/public/DASHBOARD-README.md +378 -0
- package/dist/dashboard/public/INTEGRATION-GUIDE.md +395 -0
- package/dist/dashboard/public/codebase-config.html +1247 -0
- package/dist/dashboard/public/dashboard-v2.html +1942 -0
- package/dist/dashboard/public/data-export.html +819 -0
- package/dist/dashboard/public/example-page.html +164 -0
- package/dist/dashboard/public/file-explorer.html +1023 -0
- package/dist/dashboard/public/hooks.html +1103 -0
- package/dist/dashboard/public/index-improvements.css +499 -0
- package/dist/dashboard/public/index.html +5534 -0
- package/dist/dashboard/public/memory-controls.html +1959 -0
- package/dist/dashboard/public/memory-recall.html +1495 -0
- package/dist/dashboard/public/previews/skeleton-memory-graph.html +361 -0
- package/dist/dashboard/public/previews/skeleton-memory-list.html +366 -0
- package/dist/dashboard/public/previews/skeleton-search-results.html +609 -0
- package/dist/dashboard/public/previews/skeleton-stats-dashboard.html +556 -0
- package/dist/dashboard/public/prompt-console.html +2763 -0
- package/dist/dashboard/public/react-dist/assets/index-CkjobT5B.js +871 -0
- package/dist/dashboard/public/react-dist/assets/index-iRclxMst.css +1 -0
- package/dist/dashboard/public/react-dist/index.html +16 -0
- package/dist/dashboard/public/shared-header.js +325 -0
- package/dist/dashboard/public/shared-language-selector.js +626 -0
- package/dist/dashboard/public/shared-logger.js +66 -0
- package/dist/dashboard/public/shared-nav.js +325 -0
- package/dist/dashboard/public/shared-theme-blue.css +331 -0
- package/dist/dashboard/public/shared-theme.css +813 -0
- package/dist/dashboard/public/shared-toast.js +415 -0
- package/dist/dashboard/public/team-member-history.html +1291 -0
- package/dist/dashboard/public/team-member-spy.html +1199 -0
- package/dist/dashboard/public/team-members.html +3756 -0
- package/dist/dashboard/public/terminal-output.html +1013 -0
- package/dist/dashboard/public/terminal.html +372 -0
- package/dist/dashboard/sessionStore.d.ts +86 -0
- package/dist/dashboard/sessionStore.d.ts.map +1 -0
- package/dist/dashboard/sessionStore.js +262 -0
- package/dist/dashboard/sessionStore.js.map +1 -0
- package/dist/dashboard/standalone.d.ts +27 -0
- package/dist/dashboard/standalone.d.ts.map +1 -0
- package/dist/dashboard/standalone.js +380 -0
- package/dist/dashboard/standalone.js.map +1 -0
- package/dist/dashboard/webServer.d.ts +390 -0
- package/dist/dashboard/webServer.d.ts.map +1 -0
- package/dist/dashboard/webServer.js +4297 -0
- package/dist/dashboard/webServer.js.map +1 -0
- package/dist/dashboard/websocket/teamMemberStream.d.ts +87 -0
- package/dist/dashboard/websocket/teamMemberStream.d.ts.map +1 -0
- package/dist/dashboard/websocket/teamMemberStream.js +366 -0
- package/dist/dashboard/websocket/teamMemberStream.js.map +1 -0
- package/dist/dashboard/websocket/terminalStream.d.ts +130 -0
- package/dist/dashboard/websocket/terminalStream.d.ts.map +1 -0
- package/dist/dashboard/websocket/terminalStream.js +456 -0
- package/dist/dashboard/websocket/terminalStream.js.map +1 -0
- package/dist/database/embeddedPostgres.d.ts +187 -0
- package/dist/database/embeddedPostgres.d.ts.map +1 -0
- package/dist/database/embeddedPostgres.js +763 -0
- package/dist/database/embeddedPostgres.js.map +1 -0
- package/dist/database/index.d.ts +12 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +20 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/initEmbeddedPostgres.d.ts +124 -0
- package/dist/database/initEmbeddedPostgres.d.ts.map +1 -0
- package/dist/database/initEmbeddedPostgres.js +855 -0
- package/dist/database/initEmbeddedPostgres.js.map +1 -0
- package/dist/database.d.ts +256 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +1209 -0
- package/dist/database.js.map +1 -0
- package/dist/db/apiDataManager.d.ts +334 -0
- package/dist/db/apiDataManager.d.ts.map +1 -0
- package/dist/db/apiDataManager.js +631 -0
- package/dist/db/apiDataManager.js.map +1 -0
- package/dist/db/batchOperations.d.ts +154 -0
- package/dist/db/batchOperations.d.ts.map +1 -0
- package/dist/db/batchOperations.js +564 -0
- package/dist/db/batchOperations.js.map +1 -0
- package/dist/db/bigBrainMigrations.d.ts +48 -0
- package/dist/db/bigBrainMigrations.d.ts.map +1 -0
- package/dist/db/bigBrainMigrations.js +4266 -0
- package/dist/db/bigBrainMigrations.js.map +1 -0
- package/dist/db/connectionPoolGoBrrr.d.ts +94 -0
- package/dist/db/connectionPoolGoBrrr.d.ts.map +1 -0
- package/dist/db/connectionPoolGoBrrr.js +548 -0
- package/dist/db/connectionPoolGoBrrr.js.map +1 -0
- package/dist/db/dashboardQueries.d.ts +182 -0
- package/dist/db/dashboardQueries.d.ts.map +1 -0
- package/dist/db/dashboardQueries.js +821 -0
- package/dist/db/dashboardQueries.js.map +1 -0
- package/dist/db/deploymentBootstrap.d.ts +43 -0
- package/dist/db/deploymentBootstrap.d.ts.map +1 -0
- package/dist/db/deploymentBootstrap.js +329 -0
- package/dist/db/deploymentBootstrap.js.map +1 -0
- package/dist/db/dimensionService.d.ts +140 -0
- package/dist/db/dimensionService.d.ts.map +1 -0
- package/dist/db/dimensionService.js +261 -0
- package/dist/db/dimensionService.js.map +1 -0
- package/dist/db/embeddingOverflow.d.ts +69 -0
- package/dist/db/embeddingOverflow.d.ts.map +1 -0
- package/dist/db/embeddingOverflow.js +332 -0
- package/dist/db/embeddingOverflow.js.map +1 -0
- package/dist/db/embeddingOverflow.sql +221 -0
- package/dist/db/findThatShit.d.ts +145 -0
- package/dist/db/findThatShit.d.ts.map +1 -0
- package/dist/db/findThatShit.js +782 -0
- package/dist/db/findThatShit.js.map +1 -0
- package/dist/db/hotPathManager.d.ts +187 -0
- package/dist/db/hotPathManager.d.ts.map +1 -0
- package/dist/db/hotPathManager.js +504 -0
- package/dist/db/hotPathManager.js.map +1 -0
- package/dist/db/index.d.ts +85 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +219 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/memoryDrilldown.sql +99 -0
- package/dist/db/migrate.d.ts +3 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +97 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/migrateJsonToPostgres.d.ts +43 -0
- package/dist/db/migrateJsonToPostgres.d.ts.map +1 -0
- package/dist/db/migrateJsonToPostgres.js +465 -0
- package/dist/db/migrateJsonToPostgres.js.map +1 -0
- package/dist/db/nukeFromOrbit.d.ts +63 -0
- package/dist/db/nukeFromOrbit.d.ts.map +1 -0
- package/dist/db/nukeFromOrbit.js +499 -0
- package/dist/db/nukeFromOrbit.js.map +1 -0
- package/dist/db/processedTraining.sql +60 -0
- package/dist/db/projectNamespacing.d.ts +258 -0
- package/dist/db/projectNamespacing.d.ts.map +1 -0
- package/dist/db/projectNamespacing.js +920 -0
- package/dist/db/projectNamespacing.js.map +1 -0
- package/dist/db/projectNamespacing.sql +374 -0
- package/dist/db/projectSchemaInit.sql +271 -0
- package/dist/db/spatialMemory.d.ts +296 -0
- package/dist/db/spatialMemory.d.ts.map +1 -0
- package/dist/db/spatialMemory.js +818 -0
- package/dist/db/spatialMemory.js.map +1 -0
- package/dist/db/streamingQuery.d.ts +143 -0
- package/dist/db/streamingQuery.d.ts.map +1 -0
- package/dist/db/streamingQuery.js +350 -0
- package/dist/db/streamingQuery.js.map +1 -0
- package/dist/db/teamComms.sql +224 -0
- package/dist/db/yeetStuffInDb.d.ts +72 -0
- package/dist/db/yeetStuffInDb.d.ts.map +1 -0
- package/dist/db/yeetStuffInDb.js +473 -0
- package/dist/db/yeetStuffInDb.js.map +1 -0
- package/dist/embedding-providers/index.d.ts +10 -0
- package/dist/embedding-providers/index.d.ts.map +1 -0
- package/dist/embedding-providers/index.js +12 -0
- package/dist/embedding-providers/index.js.map +1 -0
- package/dist/embeddings/projectionLayer.d.ts +114 -0
- package/dist/embeddings/projectionLayer.d.ts.map +1 -0
- package/dist/embeddings/projectionLayer.js +345 -0
- package/dist/embeddings/projectionLayer.js.map +1 -0
- package/dist/events/Publisher.d.ts +193 -0
- package/dist/events/Publisher.d.ts.map +1 -0
- package/dist/events/Publisher.js +439 -0
- package/dist/events/Publisher.js.map +1 -0
- package/dist/events/config.d.ts +139 -0
- package/dist/events/config.d.ts.map +1 -0
- package/dist/events/config.js +266 -0
- package/dist/events/config.js.map +1 -0
- package/dist/events/index.d.ts +19 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +31 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/integration.d.ts +206 -0
- package/dist/events/integration.d.ts.map +1 -0
- package/dist/events/integration.js +348 -0
- package/dist/events/integration.js.map +1 -0
- package/dist/events/metrics.d.ts +147 -0
- package/dist/events/metrics.d.ts.map +1 -0
- package/dist/events/metrics.js +343 -0
- package/dist/events/metrics.js.map +1 -0
- package/dist/hooks/cli.d.ts +28 -0
- package/dist/hooks/cli.d.ts.map +1 -0
- package/dist/hooks/cli.js +118 -0
- package/dist/hooks/cli.js.map +1 -0
- package/dist/hooks/contextInjectionHook.d.ts +60 -0
- package/dist/hooks/contextInjectionHook.d.ts.map +1 -0
- package/dist/hooks/contextInjectionHook.js +294 -0
- package/dist/hooks/contextInjectionHook.js.map +1 -0
- package/dist/hooks/drilldownHook.d.ts +125 -0
- package/dist/hooks/drilldownHook.d.ts.map +1 -0
- package/dist/hooks/drilldownHook.js +181 -0
- package/dist/hooks/drilldownHook.js.map +1 -0
- package/dist/hooks/hookManager.d.ts +180 -0
- package/dist/hooks/hookManager.d.ts.map +1 -0
- package/dist/hooks/hookManager.js +782 -0
- package/dist/hooks/hookManager.js.map +1 -0
- package/dist/hooks/index.d.ts +62 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +66 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/lowContextHook.d.ts +71 -0
- package/dist/hooks/lowContextHook.d.ts.map +1 -0
- package/dist/hooks/lowContextHook.js +258 -0
- package/dist/hooks/lowContextHook.js.map +1 -0
- package/dist/hooks/simpleContextHook.d.ts +65 -0
- package/dist/hooks/simpleContextHook.d.ts.map +1 -0
- package/dist/hooks/simpleContextHook.js +194 -0
- package/dist/hooks/simpleContextHook.js.map +1 -0
- package/dist/hooks/teamFramingCli.d.ts +56 -0
- package/dist/hooks/teamFramingCli.d.ts.map +1 -0
- package/dist/hooks/teamFramingCli.js +264 -0
- package/dist/hooks/teamFramingCli.js.map +1 -0
- package/dist/hooks/teamMemberPrepromptHook.d.ts +150 -0
- package/dist/hooks/teamMemberPrepromptHook.d.ts.map +1 -0
- package/dist/hooks/teamMemberPrepromptHook.js +308 -0
- package/dist/hooks/teamMemberPrepromptHook.js.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4433 -0
- package/dist/index.js.map +1 -0
- package/dist/init/claudeConfigInjector.d.ts +116 -0
- package/dist/init/claudeConfigInjector.d.ts.map +1 -0
- package/dist/init/claudeConfigInjector.js +1154 -0
- package/dist/init/claudeConfigInjector.js.map +1 -0
- package/dist/installer/autoInstall.d.ts +72 -0
- package/dist/installer/autoInstall.d.ts.map +1 -0
- package/dist/installer/autoInstall.js +617 -0
- package/dist/installer/autoInstall.js.map +1 -0
- package/dist/installer/dbSetup.d.ts +84 -0
- package/dist/installer/dbSetup.d.ts.map +1 -0
- package/dist/installer/dbSetup.js +350 -0
- package/dist/installer/dbSetup.js.map +1 -0
- package/dist/installer/firstRun.d.ts +49 -0
- package/dist/installer/firstRun.d.ts.map +1 -0
- package/dist/installer/firstRun.js +207 -0
- package/dist/installer/firstRun.js.map +1 -0
- package/dist/installer/index.d.ts +10 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +10 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/installer/silentAutoInstall.d.ts +99 -0
- package/dist/installer/silentAutoInstall.d.ts.map +1 -0
- package/dist/installer/silentAutoInstall.js +491 -0
- package/dist/installer/silentAutoInstall.js.map +1 -0
- package/dist/installer/systemDeps.d.ts +54 -0
- package/dist/installer/systemDeps.d.ts.map +1 -0
- package/dist/installer/systemDeps.js +322 -0
- package/dist/installer/systemDeps.js.map +1 -0
- package/dist/mcp/cliNotifications.d.ts +133 -0
- package/dist/mcp/cliNotifications.d.ts.map +1 -0
- package/dist/mcp/cliNotifications.js +289 -0
- package/dist/mcp/cliNotifications.js.map +1 -0
- package/dist/mcp/embeddingServerManager.d.ts +307 -0
- package/dist/mcp/embeddingServerManager.d.ts.map +1 -0
- package/dist/mcp/embeddingServerManager.js +2081 -0
- package/dist/mcp/embeddingServerManager.js.map +1 -0
- package/dist/mcp/healthMonitor.d.ts +196 -0
- package/dist/mcp/healthMonitor.d.ts.map +1 -0
- package/dist/mcp/healthMonitor.js +685 -0
- package/dist/mcp/healthMonitor.js.map +1 -0
- package/dist/mcp/hotReloadManager.d.ts +101 -0
- package/dist/mcp/hotReloadManager.d.ts.map +1 -0
- package/dist/mcp/hotReloadManager.js +251 -0
- package/dist/mcp/hotReloadManager.js.map +1 -0
- package/dist/mcp/index.d.ts +16 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +22 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcpProtocolHandler.d.ts +64 -0
- package/dist/mcp/mcpProtocolHandler.d.ts.map +1 -0
- package/dist/mcp/mcpProtocolHandler.js +253 -0
- package/dist/mcp/mcpProtocolHandler.js.map +1 -0
- package/dist/mcp/miniCOTServerManager.d.ts +336 -0
- package/dist/mcp/miniCOTServerManager.d.ts.map +1 -0
- package/dist/mcp/miniCOTServerManager.js +1384 -0
- package/dist/mcp/miniCOTServerManager.js.map +1 -0
- package/dist/mcp/promptExecutor.d.ts +188 -0
- package/dist/mcp/promptExecutor.d.ts.map +1 -0
- package/dist/mcp/promptExecutor.js +469 -0
- package/dist/mcp/promptExecutor.js.map +1 -0
- package/dist/mcp/reloadBroadcast.d.ts +127 -0
- package/dist/mcp/reloadBroadcast.d.ts.map +1 -0
- package/dist/mcp/reloadBroadcast.js +275 -0
- package/dist/mcp/reloadBroadcast.js.map +1 -0
- package/dist/mcp/resilientTransport.d.ts +249 -0
- package/dist/mcp/resilientTransport.d.ts.map +1 -0
- package/dist/mcp/resilientTransport.js +931 -0
- package/dist/mcp/resilientTransport.js.map +1 -0
- package/dist/mcp/samplingHandler.d.ts +129 -0
- package/dist/mcp/samplingHandler.d.ts.map +1 -0
- package/dist/mcp/samplingHandler.js +276 -0
- package/dist/mcp/samplingHandler.js.map +1 -0
- package/dist/mcp/specMemServer.d.ts +305 -0
- package/dist/mcp/specMemServer.d.ts.map +1 -0
- package/dist/mcp/specMemServer.js +2048 -0
- package/dist/mcp/specMemServer.js.map +1 -0
- package/dist/mcp/toolRegistry.d.ts +122 -0
- package/dist/mcp/toolRegistry.d.ts.map +1 -0
- package/dist/mcp/toolRegistry.js +609 -0
- package/dist/mcp/toolRegistry.js.map +1 -0
- package/dist/mcp/tools/embeddingControl.d.ts +114 -0
- package/dist/mcp/tools/embeddingControl.d.ts.map +1 -0
- package/dist/mcp/tools/embeddingControl.js +222 -0
- package/dist/mcp/tools/embeddingControl.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +10 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +17 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/teamComms.d.ts +444 -0
- package/dist/mcp/tools/teamComms.d.ts.map +1 -0
- package/dist/mcp/tools/teamComms.js +1953 -0
- package/dist/mcp/tools/teamComms.js.map +1 -0
- package/dist/mcp/triggerSystem.d.ts +129 -0
- package/dist/mcp/triggerSystem.d.ts.map +1 -0
- package/dist/mcp/triggerSystem.js +363 -0
- package/dist/mcp/triggerSystem.js.map +1 -0
- package/dist/mcp/watcherIntegration.d.ts +77 -0
- package/dist/mcp/watcherIntegration.d.ts.map +1 -0
- package/dist/mcp/watcherIntegration.js +428 -0
- package/dist/mcp/watcherIntegration.js.map +1 -0
- package/dist/mcp/watcherToolWrappers.d.ts +89 -0
- package/dist/mcp/watcherToolWrappers.d.ts.map +1 -0
- package/dist/mcp/watcherToolWrappers.js +91 -0
- package/dist/mcp/watcherToolWrappers.js.map +1 -0
- package/dist/memorization/claudeCodeMigration.d.ts +34 -0
- package/dist/memorization/claudeCodeMigration.d.ts.map +1 -0
- package/dist/memorization/claudeCodeMigration.js +210 -0
- package/dist/memorization/claudeCodeMigration.js.map +1 -0
- package/dist/memorization/claudeCodeTracker.d.ts +147 -0
- package/dist/memorization/claudeCodeTracker.d.ts.map +1 -0
- package/dist/memorization/claudeCodeTracker.js +424 -0
- package/dist/memorization/claudeCodeTracker.js.map +1 -0
- package/dist/memorization/codeMemorizer.d.ts +158 -0
- package/dist/memorization/codeMemorizer.d.ts.map +1 -0
- package/dist/memorization/codeMemorizer.js +357 -0
- package/dist/memorization/codeMemorizer.js.map +1 -0
- package/dist/memorization/codeRecall.d.ts +156 -0
- package/dist/memorization/codeRecall.d.ts.map +1 -0
- package/dist/memorization/codeRecall.js +499 -0
- package/dist/memorization/codeRecall.js.map +1 -0
- package/dist/memorization/index.d.ts +55 -0
- package/dist/memorization/index.d.ts.map +1 -0
- package/dist/memorization/index.js +64 -0
- package/dist/memorization/index.js.map +1 -0
- package/dist/memorization/memorizationTools.d.ts +413 -0
- package/dist/memorization/memorizationTools.d.ts.map +1 -0
- package/dist/memorization/memorizationTools.js +513 -0
- package/dist/memorization/memorizationTools.js.map +1 -0
- package/dist/memorization/watcherIntegration.d.ts +100 -0
- package/dist/memorization/watcherIntegration.d.ts.map +1 -0
- package/dist/memorization/watcherIntegration.js +196 -0
- package/dist/memorization/watcherIntegration.js.map +1 -0
- package/dist/memory/humanLikeMemory.d.ts +206 -0
- package/dist/memory/humanLikeMemory.d.ts.map +1 -0
- package/dist/memory/humanLikeMemory.js +603 -0
- package/dist/memory/humanLikeMemory.js.map +1 -0
- package/dist/memory/index.d.ts +22 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +24 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memoryEvolutionMigration.d.ts +36 -0
- package/dist/memory/memoryEvolutionMigration.d.ts.map +1 -0
- package/dist/memory/memoryEvolutionMigration.js +371 -0
- package/dist/memory/memoryEvolutionMigration.js.map +1 -0
- package/dist/memory/quadrantSearch.d.ts +221 -0
- package/dist/memory/quadrantSearch.d.ts.map +1 -0
- package/dist/memory/quadrantSearch.js +897 -0
- package/dist/memory/quadrantSearch.js.map +1 -0
- package/dist/middleware/apiVersioning.d.ts +83 -0
- package/dist/middleware/apiVersioning.d.ts.map +1 -0
- package/dist/middleware/apiVersioning.js +152 -0
- package/dist/middleware/apiVersioning.js.map +1 -0
- package/dist/middleware/compression.d.ts +48 -0
- package/dist/middleware/compression.d.ts.map +1 -0
- package/dist/middleware/compression.js +240 -0
- package/dist/middleware/compression.js.map +1 -0
- package/dist/middleware/csrf.d.ts +118 -0
- package/dist/middleware/csrf.d.ts.map +1 -0
- package/dist/middleware/csrf.js +300 -0
- package/dist/middleware/csrf.js.map +1 -0
- package/dist/middleware/index.d.ts +13 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +17 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/wsRateLimiter.d.ts +129 -0
- package/dist/middleware/wsRateLimiter.d.ts.map +1 -0
- package/dist/middleware/wsRateLimiter.js +279 -0
- package/dist/middleware/wsRateLimiter.js.map +1 -0
- package/dist/migrations/run.d.ts +2 -0
- package/dist/migrations/run.d.ts.map +1 -0
- package/dist/migrations/run.js +25 -0
- package/dist/migrations/run.js.map +1 -0
- package/dist/migrations/syncDimensions.d.ts +24 -0
- package/dist/migrations/syncDimensions.d.ts.map +1 -0
- package/dist/migrations/syncDimensions.js +140 -0
- package/dist/migrations/syncDimensions.js.map +1 -0
- package/dist/migrations/teamComms.d.ts +16 -0
- package/dist/migrations/teamComms.d.ts.map +1 -0
- package/dist/migrations/teamComms.js +210 -0
- package/dist/migrations/teamComms.js.map +1 -0
- package/dist/openapi/index.d.ts +10 -0
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/index.js +10 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/openapi/spec.d.ts +902 -0
- package/dist/openapi/spec.d.ts.map +1 -0
- package/dist/openapi/spec.js +733 -0
- package/dist/openapi/spec.js.map +1 -0
- package/dist/packages/dependencyHistory.d.ts +113 -0
- package/dist/packages/dependencyHistory.d.ts.map +1 -0
- package/dist/packages/dependencyHistory.js +360 -0
- package/dist/packages/dependencyHistory.js.map +1 -0
- package/dist/packages/index.d.ts +30 -0
- package/dist/packages/index.d.ts.map +1 -0
- package/dist/packages/index.js +65 -0
- package/dist/packages/index.js.map +1 -0
- package/dist/packages/packageTools.d.ts +255 -0
- package/dist/packages/packageTools.d.ts.map +1 -0
- package/dist/packages/packageTools.js +242 -0
- package/dist/packages/packageTools.js.map +1 -0
- package/dist/packages/packageTracker.d.ts +98 -0
- package/dist/packages/packageTracker.d.ts.map +1 -0
- package/dist/packages/packageTracker.js +268 -0
- package/dist/packages/packageTracker.js.map +1 -0
- package/dist/packages/packageWatcher.d.ts +62 -0
- package/dist/packages/packageWatcher.d.ts.map +1 -0
- package/dist/packages/packageWatcher.js +146 -0
- package/dist/packages/packageWatcher.js.map +1 -0
- package/dist/providers/MiniCOTProvider.d.ts +48 -0
- package/dist/providers/MiniCOTProvider.d.ts.map +1 -0
- package/dist/providers/MiniCOTProvider.js +98 -0
- package/dist/providers/MiniCOTProvider.js.map +1 -0
- package/dist/reminders/index.d.ts +5 -0
- package/dist/reminders/index.d.ts.map +1 -0
- package/dist/reminders/index.js +5 -0
- package/dist/reminders/index.js.map +1 -0
- package/dist/reminders/skillReminder.d.ts +131 -0
- package/dist/reminders/skillReminder.d.ts.map +1 -0
- package/dist/reminders/skillReminder.js +386 -0
- package/dist/reminders/skillReminder.js.map +1 -0
- package/dist/search.d.ts +35 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +574 -0
- package/dist/search.js.map +1 -0
- package/dist/security/localhostOnly.d.ts +36 -0
- package/dist/security/localhostOnly.d.ts.map +1 -0
- package/dist/security/localhostOnly.js +101 -0
- package/dist/security/localhostOnly.js.map +1 -0
- package/dist/services/CameraZoomSearch.d.ts +206 -0
- package/dist/services/CameraZoomSearch.d.ts.map +1 -0
- package/dist/services/CameraZoomSearch.js +669 -0
- package/dist/services/CameraZoomSearch.js.map +1 -0
- package/dist/services/DataFlowPipeline.d.ts +111 -0
- package/dist/services/DataFlowPipeline.d.ts.map +1 -0
- package/dist/services/DataFlowPipeline.js +379 -0
- package/dist/services/DataFlowPipeline.js.map +1 -0
- package/dist/services/DimensionAdapter.d.ts +194 -0
- package/dist/services/DimensionAdapter.d.ts.map +1 -0
- package/dist/services/DimensionAdapter.js +566 -0
- package/dist/services/DimensionAdapter.js.map +1 -0
- package/dist/services/DimensionService.d.ts +252 -0
- package/dist/services/DimensionService.d.ts.map +1 -0
- package/dist/services/DimensionService.js +564 -0
- package/dist/services/DimensionService.js.map +1 -0
- package/dist/services/EmbeddingQueue.d.ts +71 -0
- package/dist/services/EmbeddingQueue.d.ts.map +1 -0
- package/dist/services/EmbeddingQueue.js +258 -0
- package/dist/services/EmbeddingQueue.js.map +1 -0
- package/dist/services/MemoryDrilldown.d.ts +226 -0
- package/dist/services/MemoryDrilldown.d.ts.map +1 -0
- package/dist/services/MemoryDrilldown.js +479 -0
- package/dist/services/MemoryDrilldown.js.map +1 -0
- package/dist/services/MiniCOTScorer.d.ts +140 -0
- package/dist/services/MiniCOTScorer.d.ts.map +1 -0
- package/dist/services/MiniCOTScorer.js +292 -0
- package/dist/services/MiniCOTScorer.js.map +1 -0
- package/dist/services/ProjectContext.d.ts +342 -0
- package/dist/services/ProjectContext.d.ts.map +1 -0
- package/dist/services/ProjectContext.js +667 -0
- package/dist/services/ProjectContext.js.map +1 -0
- package/dist/services/ResponseCompactor.d.ts +135 -0
- package/dist/services/ResponseCompactor.d.ts.map +1 -0
- package/dist/services/ResponseCompactor.js +501 -0
- package/dist/services/ResponseCompactor.js.map +1 -0
- package/dist/services/TeamCommsDbService.d.ts +202 -0
- package/dist/services/TeamCommsDbService.d.ts.map +1 -0
- package/dist/services/TeamCommsDbService.js +526 -0
- package/dist/services/TeamCommsDbService.js.map +1 -0
- package/dist/services/UnifiedPasswordService.d.ts +166 -0
- package/dist/services/UnifiedPasswordService.d.ts.map +1 -0
- package/dist/services/UnifiedPasswordService.js +587 -0
- package/dist/services/UnifiedPasswordService.js.map +1 -0
- package/dist/services/adaptiveSearchConfig.d.ts +64 -0
- package/dist/services/adaptiveSearchConfig.d.ts.map +1 -0
- package/dist/services/adaptiveSearchConfig.js +187 -0
- package/dist/services/adaptiveSearchConfig.js.map +1 -0
- package/dist/skills/index.d.ts +8 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +8 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/skillScanner.d.ts +203 -0
- package/dist/skills/skillScanner.d.ts.map +1 -0
- package/dist/skills/skillScanner.js +559 -0
- package/dist/skills/skillScanner.js.map +1 -0
- package/dist/skills/skillsResource.d.ts +69 -0
- package/dist/skills/skillsResource.d.ts.map +1 -0
- package/dist/skills/skillsResource.js +257 -0
- package/dist/skills/skillsResource.js.map +1 -0
- package/dist/startup/index.d.ts +9 -0
- package/dist/startup/index.d.ts.map +1 -0
- package/dist/startup/index.js +12 -0
- package/dist/startup/index.js.map +1 -0
- package/dist/startup/startupIndexing.d.ts +80 -0
- package/dist/startup/startupIndexing.d.ts.map +1 -0
- package/dist/startup/startupIndexing.js +463 -0
- package/dist/startup/startupIndexing.js.map +1 -0
- package/dist/startup/validation.d.ts +89 -0
- package/dist/startup/validation.d.ts.map +1 -0
- package/dist/startup/validation.js +590 -0
- package/dist/startup/validation.js.map +1 -0
- package/dist/storage/index.d.ts +4 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +4 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/overflowManager.d.ts +80 -0
- package/dist/storage/overflowManager.d.ts.map +1 -0
- package/dist/storage/overflowManager.js +317 -0
- package/dist/storage/overflowManager.js.map +1 -0
- package/dist/storage/overflowStorage.d.ts +69 -0
- package/dist/storage/overflowStorage.d.ts.map +1 -0
- package/dist/storage/overflowStorage.js +379 -0
- package/dist/storage/overflowStorage.js.map +1 -0
- package/dist/storage/toonFormat.d.ts +50 -0
- package/dist/storage/toonFormat.d.ts.map +1 -0
- package/dist/storage/toonFormat.js +224 -0
- package/dist/storage/toonFormat.js.map +1 -0
- package/dist/team-members/communication.d.ts +237 -0
- package/dist/team-members/communication.d.ts.map +1 -0
- package/dist/team-members/communication.js +650 -0
- package/dist/team-members/communication.js.map +1 -0
- package/dist/team-members/index.d.ts +14 -0
- package/dist/team-members/index.d.ts.map +1 -0
- package/dist/team-members/index.js +22 -0
- package/dist/team-members/index.js.map +1 -0
- package/dist/team-members/taskOrchestrator.d.ts +224 -0
- package/dist/team-members/taskOrchestrator.d.ts.map +1 -0
- package/dist/team-members/taskOrchestrator.js +574 -0
- package/dist/team-members/taskOrchestrator.js.map +1 -0
- package/dist/team-members/taskTeamMemberLogger.d.ts +157 -0
- package/dist/team-members/taskTeamMemberLogger.d.ts.map +1 -0
- package/dist/team-members/taskTeamMemberLogger.js +478 -0
- package/dist/team-members/taskTeamMemberLogger.js.map +1 -0
- package/dist/team-members/teamCommsService.d.ts +221 -0
- package/dist/team-members/teamCommsService.d.ts.map +1 -0
- package/dist/team-members/teamCommsService.js +628 -0
- package/dist/team-members/teamCommsService.js.map +1 -0
- package/dist/team-members/teamMemberChannels.d.ts +217 -0
- package/dist/team-members/teamMemberChannels.d.ts.map +1 -0
- package/dist/team-members/teamMemberChannels.js +687 -0
- package/dist/team-members/teamMemberChannels.js.map +1 -0
- package/dist/team-members/teamMemberDashboard.d.ts +222 -0
- package/dist/team-members/teamMemberDashboard.d.ts.map +1 -0
- package/dist/team-members/teamMemberDashboard.js +610 -0
- package/dist/team-members/teamMemberDashboard.js.map +1 -0
- package/dist/team-members/teamMemberDeployment.d.ts +60 -0
- package/dist/team-members/teamMemberDeployment.d.ts.map +1 -0
- package/dist/team-members/teamMemberDeployment.js +429 -0
- package/dist/team-members/teamMemberDeployment.js.map +1 -0
- package/dist/team-members/teamMemberDiscovery.d.ts +178 -0
- package/dist/team-members/teamMemberDiscovery.d.ts.map +1 -0
- package/dist/team-members/teamMemberDiscovery.js +446 -0
- package/dist/team-members/teamMemberDiscovery.js.map +1 -0
- package/dist/team-members/teamMemberHistory.d.ts +80 -0
- package/dist/team-members/teamMemberHistory.d.ts.map +1 -0
- package/dist/team-members/teamMemberHistory.js +426 -0
- package/dist/team-members/teamMemberHistory.js.map +1 -0
- package/dist/team-members/teamMemberLimits.d.ts +66 -0
- package/dist/team-members/teamMemberLimits.d.ts.map +1 -0
- package/dist/team-members/teamMemberLimits.js +259 -0
- package/dist/team-members/teamMemberLimits.js.map +1 -0
- package/dist/team-members/teamMemberRegistry.d.ts +199 -0
- package/dist/team-members/teamMemberRegistry.d.ts.map +1 -0
- package/dist/team-members/teamMemberRegistry.js +572 -0
- package/dist/team-members/teamMemberRegistry.js.map +1 -0
- package/dist/team-members/teamMemberTracker.d.ts +148 -0
- package/dist/team-members/teamMemberTracker.d.ts.map +1 -0
- package/dist/team-members/teamMemberTracker.js +828 -0
- package/dist/team-members/teamMemberTracker.js.map +1 -0
- package/dist/team-members/workers/aiWorker.d.ts +53 -0
- package/dist/team-members/workers/aiWorker.d.ts.map +1 -0
- package/dist/team-members/workers/aiWorker.js +322 -0
- package/dist/team-members/workers/aiWorker.js.map +1 -0
- package/dist/team-members/workers/baseWorker.d.ts +101 -0
- package/dist/team-members/workers/baseWorker.d.ts.map +1 -0
- package/dist/team-members/workers/baseWorker.js +179 -0
- package/dist/team-members/workers/baseWorker.js.map +1 -0
- package/dist/team-members/workers/codeReviewWorker.d.ts +3 -0
- package/dist/team-members/workers/codeReviewWorker.d.ts.map +1 -0
- package/dist/team-members/workers/codeReviewWorker.js +144 -0
- package/dist/team-members/workers/codeReviewWorker.js.map +1 -0
- package/dist/team-members/workers/index.d.ts +7 -0
- package/dist/team-members/workers/index.d.ts.map +1 -0
- package/dist/team-members/workers/index.js +7 -0
- package/dist/team-members/workers/index.js.map +1 -0
- package/dist/team-members/workers/repairWorker.d.ts +9 -0
- package/dist/team-members/workers/repairWorker.d.ts.map +1 -0
- package/dist/team-members/workers/repairWorker.js +102 -0
- package/dist/team-members/workers/repairWorker.js.map +1 -0
- package/dist/team-members/workers/sendToTeamMemberB.d.ts +9 -0
- package/dist/team-members/workers/sendToTeamMemberB.d.ts.map +1 -0
- package/dist/team-members/workers/sendToTeamMemberB.js +105 -0
- package/dist/team-members/workers/sendToTeamMemberB.js.map +1 -0
- package/dist/team-members/workers/specmemClient.d.ts +179 -0
- package/dist/team-members/workers/specmemClient.d.ts.map +1 -0
- package/dist/team-members/workers/specmemClient.js +421 -0
- package/dist/team-members/workers/specmemClient.js.map +1 -0
- package/dist/team-members/workers/testCommunication.d.ts +8 -0
- package/dist/team-members/workers/testCommunication.d.ts.map +1 -0
- package/dist/team-members/workers/testCommunication.js +136 -0
- package/dist/team-members/workers/testCommunication.js.map +1 -0
- package/dist/team-members/workers/testCommunicationSuite.d.ts +26 -0
- package/dist/team-members/workers/testCommunicationSuite.d.ts.map +1 -0
- package/dist/team-members/workers/testCommunicationSuite.js +415 -0
- package/dist/team-members/workers/testCommunicationSuite.js.map +1 -0
- package/dist/team-members/workers/testWorker.d.ts +9 -0
- package/dist/team-members/workers/testWorker.d.ts.map +1 -0
- package/dist/team-members/workers/testWorker.js +107 -0
- package/dist/team-members/workers/testWorker.js.map +1 -0
- package/dist/tools/agentDefinitions.d.ts +30 -0
- package/dist/tools/agentDefinitions.d.ts.map +1 -0
- package/dist/tools/agentDefinitions.js +166 -0
- package/dist/tools/agentDefinitions.js.map +1 -0
- package/dist/tools/goofy/checkSyncStatus.d.ts +68 -0
- package/dist/tools/goofy/checkSyncStatus.d.ts.map +1 -0
- package/dist/tools/goofy/checkSyncStatus.js +112 -0
- package/dist/tools/goofy/checkSyncStatus.js.map +1 -0
- package/dist/tools/goofy/codeMemoryLink.d.ts +82 -0
- package/dist/tools/goofy/codeMemoryLink.d.ts.map +1 -0
- package/dist/tools/goofy/codeMemoryLink.js +212 -0
- package/dist/tools/goofy/codeMemoryLink.js.map +1 -0
- package/dist/tools/goofy/compareInstanceMemory.d.ts +97 -0
- package/dist/tools/goofy/compareInstanceMemory.d.ts.map +1 -0
- package/dist/tools/goofy/compareInstanceMemory.js +218 -0
- package/dist/tools/goofy/compareInstanceMemory.js.map +1 -0
- package/dist/tools/goofy/createReasoningChain.d.ts +135 -0
- package/dist/tools/goofy/createReasoningChain.d.ts.map +1 -0
- package/dist/tools/goofy/createReasoningChain.js +257 -0
- package/dist/tools/goofy/createReasoningChain.js.map +1 -0
- package/dist/tools/goofy/deployTeamMember.d.ts +63 -0
- package/dist/tools/goofy/deployTeamMember.d.ts.map +1 -0
- package/dist/tools/goofy/deployTeamMember.js +103 -0
- package/dist/tools/goofy/deployTeamMember.js.map +1 -0
- package/dist/tools/goofy/drillDown.d.ts +143 -0
- package/dist/tools/goofy/drillDown.d.ts.map +1 -0
- package/dist/tools/goofy/drillDown.js +288 -0
- package/dist/tools/goofy/drillDown.js.map +1 -0
- package/dist/tools/goofy/extractClaudeSessions.d.ts +90 -0
- package/dist/tools/goofy/extractClaudeSessions.d.ts.map +1 -0
- package/dist/tools/goofy/extractClaudeSessions.js +277 -0
- package/dist/tools/goofy/extractClaudeSessions.js.map +1 -0
- package/dist/tools/goofy/extractContextRestorations.d.ts +70 -0
- package/dist/tools/goofy/extractContextRestorations.d.ts.map +1 -0
- package/dist/tools/goofy/extractContextRestorations.js +100 -0
- package/dist/tools/goofy/extractContextRestorations.js.map +1 -0
- package/dist/tools/goofy/findCodePointers.d.ts +364 -0
- package/dist/tools/goofy/findCodePointers.d.ts.map +1 -0
- package/dist/tools/goofy/findCodePointers.js +1764 -0
- package/dist/tools/goofy/findCodePointers.js.map +1 -0
- package/dist/tools/goofy/findMemoryGallery.d.ts +40 -0
- package/dist/tools/goofy/findMemoryGallery.d.ts.map +1 -0
- package/dist/tools/goofy/findMemoryGallery.js +66 -0
- package/dist/tools/goofy/findMemoryGallery.js.map +1 -0
- package/dist/tools/goofy/findWhatISaid.d.ts +300 -0
- package/dist/tools/goofy/findWhatISaid.d.ts.map +1 -0
- package/dist/tools/goofy/findWhatISaid.js +2547 -0
- package/dist/tools/goofy/findWhatISaid.js.map +1 -0
- package/dist/tools/goofy/forceResync.d.ts +57 -0
- package/dist/tools/goofy/forceResync.d.ts.map +1 -0
- package/dist/tools/goofy/forceResync.js +100 -0
- package/dist/tools/goofy/forceResync.js.map +1 -0
- package/dist/tools/goofy/getActiveTeamMembers.d.ts +48 -0
- package/dist/tools/goofy/getActiveTeamMembers.d.ts.map +1 -0
- package/dist/tools/goofy/getActiveTeamMembers.js +136 -0
- package/dist/tools/goofy/getActiveTeamMembers.js.map +1 -0
- package/dist/tools/goofy/getMemoryFull.d.ts +34 -0
- package/dist/tools/goofy/getMemoryFull.d.ts.map +1 -0
- package/dist/tools/goofy/getMemoryFull.js +58 -0
- package/dist/tools/goofy/getMemoryFull.js.map +1 -0
- package/dist/tools/goofy/getSessionWatcherStatus.d.ts +43 -0
- package/dist/tools/goofy/getSessionWatcherStatus.d.ts.map +1 -0
- package/dist/tools/goofy/getSessionWatcherStatus.js +92 -0
- package/dist/tools/goofy/getSessionWatcherStatus.js.map +1 -0
- package/dist/tools/goofy/getTeamMemberOutput.d.ts +35 -0
- package/dist/tools/goofy/getTeamMemberOutput.d.ts.map +1 -0
- package/dist/tools/goofy/getTeamMemberOutput.js +62 -0
- package/dist/tools/goofy/getTeamMemberOutput.js.map +1 -0
- package/dist/tools/goofy/getTeamMemberScreen.d.ts +28 -0
- package/dist/tools/goofy/getTeamMemberScreen.d.ts.map +1 -0
- package/dist/tools/goofy/getTeamMemberScreen.js +59 -0
- package/dist/tools/goofy/getTeamMemberScreen.js.map +1 -0
- package/dist/tools/goofy/getTeamMemberStatus.d.ts +33 -0
- package/dist/tools/goofy/getTeamMemberStatus.d.ts.map +1 -0
- package/dist/tools/goofy/getTeamMemberStatus.js +56 -0
- package/dist/tools/goofy/getTeamMemberStatus.js.map +1 -0
- package/dist/tools/goofy/index.d.ts +39 -0
- package/dist/tools/goofy/index.d.ts.map +1 -0
- package/dist/tools/goofy/index.js +51 -0
- package/dist/tools/goofy/index.js.map +1 -0
- package/dist/tools/goofy/interveneTeamMember.d.ts +33 -0
- package/dist/tools/goofy/interveneTeamMember.d.ts.map +1 -0
- package/dist/tools/goofy/interveneTeamMember.js +69 -0
- package/dist/tools/goofy/interveneTeamMember.js.map +1 -0
- package/dist/tools/goofy/killDeployedTeamMember.d.ts +29 -0
- package/dist/tools/goofy/killDeployedTeamMember.d.ts.map +1 -0
- package/dist/tools/goofy/killDeployedTeamMember.js +56 -0
- package/dist/tools/goofy/killDeployedTeamMember.js.map +1 -0
- package/dist/tools/goofy/linkTheVibes.d.ts +125 -0
- package/dist/tools/goofy/linkTheVibes.d.ts.map +1 -0
- package/dist/tools/goofy/linkTheVibes.js +354 -0
- package/dist/tools/goofy/linkTheVibes.js.map +1 -0
- package/dist/tools/goofy/listDeployedTeamMembers.d.ts +26 -0
- package/dist/tools/goofy/listDeployedTeamMembers.d.ts.map +1 -0
- package/dist/tools/goofy/listDeployedTeamMembers.js +52 -0
- package/dist/tools/goofy/listDeployedTeamMembers.js.map +1 -0
- package/dist/tools/goofy/listenForMessages.d.ts +56 -0
- package/dist/tools/goofy/listenForMessages.d.ts.map +1 -0
- package/dist/tools/goofy/listenForMessages.js +122 -0
- package/dist/tools/goofy/listenForMessages.js.map +1 -0
- package/dist/tools/goofy/memoryHealthCheck.d.ts +159 -0
- package/dist/tools/goofy/memoryHealthCheck.d.ts.map +1 -0
- package/dist/tools/goofy/memoryHealthCheck.js +443 -0
- package/dist/tools/goofy/memoryHealthCheck.js.map +1 -0
- package/dist/tools/goofy/rememberThisShit.d.ts +103 -0
- package/dist/tools/goofy/rememberThisShit.d.ts.map +1 -0
- package/dist/tools/goofy/rememberThisShit.js +291 -0
- package/dist/tools/goofy/rememberThisShit.js.map +1 -0
- package/dist/tools/goofy/sayToTeamMember.d.ts +55 -0
- package/dist/tools/goofy/sayToTeamMember.d.ts.map +1 -0
- package/dist/tools/goofy/sayToTeamMember.js +116 -0
- package/dist/tools/goofy/sayToTeamMember.js.map +1 -0
- package/dist/tools/goofy/selfMessage.d.ts +54 -0
- package/dist/tools/goofy/selfMessage.d.ts.map +1 -0
- package/dist/tools/goofy/selfMessage.js +111 -0
- package/dist/tools/goofy/selfMessage.js.map +1 -0
- package/dist/tools/goofy/sendHeartbeat.d.ts +53 -0
- package/dist/tools/goofy/sendHeartbeat.d.ts.map +1 -0
- package/dist/tools/goofy/sendHeartbeat.js +119 -0
- package/dist/tools/goofy/sendHeartbeat.js.map +1 -0
- package/dist/tools/goofy/showMeTheStats.d.ts +216 -0
- package/dist/tools/goofy/showMeTheStats.d.ts.map +1 -0
- package/dist/tools/goofy/showMeTheStats.js +535 -0
- package/dist/tools/goofy/showMeTheStats.js.map +1 -0
- package/dist/tools/goofy/smartRecall.d.ts +136 -0
- package/dist/tools/goofy/smartRecall.d.ts.map +1 -0
- package/dist/tools/goofy/smartRecall.js +286 -0
- package/dist/tools/goofy/smartRecall.js.map +1 -0
- package/dist/tools/goofy/smartSearch.d.ts +64 -0
- package/dist/tools/goofy/smartSearch.d.ts.map +1 -0
- package/dist/tools/goofy/smartSearch.js +89 -0
- package/dist/tools/goofy/smartSearch.js.map +1 -0
- package/dist/tools/goofy/smushMemoriesTogether.d.ts +128 -0
- package/dist/tools/goofy/smushMemoriesTogether.d.ts.map +1 -0
- package/dist/tools/goofy/smushMemoriesTogether.js +536 -0
- package/dist/tools/goofy/smushMemoriesTogether.js.map +1 -0
- package/dist/tools/goofy/spatialSearch.d.ts +198 -0
- package/dist/tools/goofy/spatialSearch.d.ts.map +1 -0
- package/dist/tools/goofy/spatialSearch.js +551 -0
- package/dist/tools/goofy/spatialSearch.js.map +1 -0
- package/dist/tools/goofy/spawnResearchTeamMember.d.ts +104 -0
- package/dist/tools/goofy/spawnResearchTeamMember.d.ts.map +1 -0
- package/dist/tools/goofy/spawnResearchTeamMember.js +290 -0
- package/dist/tools/goofy/spawnResearchTeamMember.js.map +1 -0
- package/dist/tools/goofy/spawnResearchTeamMemberTool.d.ts +121 -0
- package/dist/tools/goofy/spawnResearchTeamMemberTool.d.ts.map +1 -0
- package/dist/tools/goofy/spawnResearchTeamMemberTool.js +215 -0
- package/dist/tools/goofy/spawnResearchTeamMemberTool.js.map +1 -0
- package/dist/tools/goofy/startWatchingTheFiles.d.ts +81 -0
- package/dist/tools/goofy/startWatchingTheFiles.d.ts.map +1 -0
- package/dist/tools/goofy/startWatchingTheFiles.js +161 -0
- package/dist/tools/goofy/startWatchingTheFiles.js.map +1 -0
- package/dist/tools/goofy/stopWatchingTheFiles.d.ts +50 -0
- package/dist/tools/goofy/stopWatchingTheFiles.d.ts.map +1 -0
- package/dist/tools/goofy/stopWatchingTheFiles.js +81 -0
- package/dist/tools/goofy/stopWatchingTheFiles.js.map +1 -0
- package/dist/tools/goofy/whatDidIMean.d.ts +113 -0
- package/dist/tools/goofy/whatDidIMean.d.ts.map +1 -0
- package/dist/tools/goofy/whatDidIMean.js +401 -0
- package/dist/tools/goofy/whatDidIMean.js.map +1 -0
- package/dist/tools/goofy/yeahNahDeleteThat.d.ts +109 -0
- package/dist/tools/goofy/yeahNahDeleteThat.d.ts.map +1 -0
- package/dist/tools/goofy/yeahNahDeleteThat.js +319 -0
- package/dist/tools/goofy/yeahNahDeleteThat.js.map +1 -0
- package/dist/tools/index.d.ts +9 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +9 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/teamMemberDeployer.d.ts +117 -0
- package/dist/tools/teamMemberDeployer.d.ts.map +1 -0
- package/dist/tools/teamMemberDeployer.js +613 -0
- package/dist/tools/teamMemberDeployer.js.map +1 -0
- package/dist/trace/index.d.ts +14 -0
- package/dist/trace/index.d.ts.map +1 -0
- package/dist/trace/index.js +16 -0
- package/dist/trace/index.js.map +1 -0
- package/dist/trace/tools/analyzeImpact.d.ts +90 -0
- package/dist/trace/tools/analyzeImpact.d.ts.map +1 -0
- package/dist/trace/tools/analyzeImpact.js +240 -0
- package/dist/trace/tools/analyzeImpact.js.map +1 -0
- package/dist/trace/tools/exploreDependencies.d.ts +81 -0
- package/dist/trace/tools/exploreDependencies.d.ts.map +1 -0
- package/dist/trace/tools/exploreDependencies.js +161 -0
- package/dist/trace/tools/exploreDependencies.js.map +1 -0
- package/dist/trace/tools/findSimilarBugs.d.ts +112 -0
- package/dist/trace/tools/findSimilarBugs.d.ts.map +1 -0
- package/dist/trace/tools/findSimilarBugs.js +216 -0
- package/dist/trace/tools/findSimilarBugs.js.map +1 -0
- package/dist/trace/tools/index.d.ts +22 -0
- package/dist/trace/tools/index.d.ts.map +1 -0
- package/dist/trace/tools/index.js +39 -0
- package/dist/trace/tools/index.js.map +1 -0
- package/dist/trace/tools/smartExplore.d.ts +126 -0
- package/dist/trace/tools/smartExplore.d.ts.map +1 -0
- package/dist/trace/tools/smartExplore.js +303 -0
- package/dist/trace/tools/smartExplore.js.map +1 -0
- package/dist/trace/tools/traceError.d.ts +101 -0
- package/dist/trace/tools/traceError.d.ts.map +1 -0
- package/dist/trace/tools/traceError.js +175 -0
- package/dist/trace/tools/traceError.js.map +1 -0
- package/dist/trace/traceExploreSystem.d.ts +271 -0
- package/dist/trace/traceExploreSystem.d.ts.map +1 -0
- package/dist/trace/traceExploreSystem.js +789 -0
- package/dist/trace/traceExploreSystem.js.map +1 -0
- package/dist/types/index.d.ts +421 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +118 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/circuitBreaker.d.ts +195 -0
- package/dist/utils/circuitBreaker.d.ts.map +1 -0
- package/dist/utils/circuitBreaker.js +374 -0
- package/dist/utils/circuitBreaker.js.map +1 -0
- package/dist/utils/cleanupHandler.d.ts +108 -0
- package/dist/utils/cleanupHandler.d.ts.map +1 -0
- package/dist/utils/cleanupHandler.js +203 -0
- package/dist/utils/cleanupHandler.js.map +1 -0
- package/dist/utils/compactXmlResponse.d.ts +60 -0
- package/dist/utils/compactXmlResponse.d.ts.map +1 -0
- package/dist/utils/compactXmlResponse.js +209 -0
- package/dist/utils/compactXmlResponse.js.map +1 -0
- package/dist/utils/cotBroadcast.d.ts +56 -0
- package/dist/utils/cotBroadcast.d.ts.map +1 -0
- package/dist/utils/cotBroadcast.js +157 -0
- package/dist/utils/cotBroadcast.js.map +1 -0
- package/dist/utils/debugLogger.d.ts +95 -0
- package/dist/utils/debugLogger.d.ts.map +1 -0
- package/dist/utils/debugLogger.js +610 -0
- package/dist/utils/debugLogger.js.map +1 -0
- package/dist/utils/fileProcessingQueue.d.ts +259 -0
- package/dist/utils/fileProcessingQueue.d.ts.map +1 -0
- package/dist/utils/fileProcessingQueue.js +714 -0
- package/dist/utils/fileProcessingQueue.js.map +1 -0
- package/dist/utils/humanReadableOutput.d.ts +124 -0
- package/dist/utils/humanReadableOutput.d.ts.map +1 -0
- package/dist/utils/humanReadableOutput.js +340 -0
- package/dist/utils/humanReadableOutput.js.map +1 -0
- package/dist/utils/index.d.ts +32 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +71 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/instanceManager.d.ts +530 -0
- package/dist/utils/instanceManager.d.ts.map +1 -0
- package/dist/utils/instanceManager.js +1784 -0
- package/dist/utils/instanceManager.js.map +1 -0
- package/dist/utils/logger.d.ts +6 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +49 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/mapCleanup.d.ts +58 -0
- package/dist/utils/mapCleanup.d.ts.map +1 -0
- package/dist/utils/mapCleanup.js +150 -0
- package/dist/utils/mapCleanup.js.map +1 -0
- package/dist/utils/memoryManager.d.ts +349 -0
- package/dist/utils/memoryManager.d.ts.map +1 -0
- package/dist/utils/memoryManager.js +799 -0
- package/dist/utils/memoryManager.js.map +1 -0
- package/dist/utils/metrics.d.ts +160 -0
- package/dist/utils/metrics.d.ts.map +1 -0
- package/dist/utils/metrics.js +558 -0
- package/dist/utils/metrics.js.map +1 -0
- package/dist/utils/pathValidator.d.ts +96 -0
- package/dist/utils/pathValidator.d.ts.map +1 -0
- package/dist/utils/pathValidator.js +320 -0
- package/dist/utils/pathValidator.js.map +1 -0
- package/dist/utils/portAllocator.d.ts +296 -0
- package/dist/utils/portAllocator.d.ts.map +1 -0
- package/dist/utils/portAllocator.js +768 -0
- package/dist/utils/portAllocator.js.map +1 -0
- package/dist/utils/portUtils.d.ts +97 -0
- package/dist/utils/portUtils.d.ts.map +1 -0
- package/dist/utils/portUtils.js +285 -0
- package/dist/utils/portUtils.js.map +1 -0
- package/dist/utils/postgresAutoSetup.d.ts +55 -0
- package/dist/utils/postgresAutoSetup.d.ts.map +1 -0
- package/dist/utils/postgresAutoSetup.js +406 -0
- package/dist/utils/postgresAutoSetup.js.map +1 -0
- package/dist/utils/processHealthCheck.d.ts +61 -0
- package/dist/utils/processHealthCheck.d.ts.map +1 -0
- package/dist/utils/processHealthCheck.js +313 -0
- package/dist/utils/processHealthCheck.js.map +1 -0
- package/dist/utils/progressReporter.d.ts +151 -0
- package/dist/utils/progressReporter.d.ts.map +1 -0
- package/dist/utils/progressReporter.js +345 -0
- package/dist/utils/progressReporter.js.map +1 -0
- package/dist/utils/projectEnv.d.ts +73 -0
- package/dist/utils/projectEnv.d.ts.map +1 -0
- package/dist/utils/projectEnv.js +137 -0
- package/dist/utils/projectEnv.js.map +1 -0
- package/dist/utils/qoms.d.ts +122 -0
- package/dist/utils/qoms.d.ts.map +1 -0
- package/dist/utils/qoms.js +650 -0
- package/dist/utils/qoms.js.map +1 -0
- package/dist/utils/retryHelper.d.ts +122 -0
- package/dist/utils/retryHelper.d.ts.map +1 -0
- package/dist/utils/retryHelper.js +272 -0
- package/dist/utils/retryHelper.js.map +1 -0
- package/dist/utils/safeProcessTermination.d.ts +206 -0
- package/dist/utils/safeProcessTermination.d.ts.map +1 -0
- package/dist/utils/safeProcessTermination.js +552 -0
- package/dist/utils/safeProcessTermination.js.map +1 -0
- package/dist/utils/sessionInjector.d.ts +68 -0
- package/dist/utils/sessionInjector.d.ts.map +1 -0
- package/dist/utils/sessionInjector.js +189 -0
- package/dist/utils/sessionInjector.js.map +1 -0
- package/dist/utils/statsCache.d.ts +134 -0
- package/dist/utils/statsCache.d.ts.map +1 -0
- package/dist/utils/statsCache.js +285 -0
- package/dist/utils/statsCache.js.map +1 -0
- package/dist/utils/timeoutMiddleware.d.ts +81 -0
- package/dist/utils/timeoutMiddleware.d.ts.map +1 -0
- package/dist/utils/timeoutMiddleware.js +155 -0
- package/dist/utils/timeoutMiddleware.js.map +1 -0
- package/dist/utils/timerRegistry.d.ts +91 -0
- package/dist/utils/timerRegistry.d.ts.map +1 -0
- package/dist/utils/timerRegistry.js +187 -0
- package/dist/utils/timerRegistry.js.map +1 -0
- package/dist/utils/tokenCompressor.d.ts +332 -0
- package/dist/utils/tokenCompressor.d.ts.map +1 -0
- package/dist/utils/tokenCompressor.js +1306 -0
- package/dist/utils/tokenCompressor.js.map +1 -0
- package/dist/utils/tracing.d.ts +236 -0
- package/dist/utils/tracing.d.ts.map +1 -0
- package/dist/utils/tracing.js +378 -0
- package/dist/utils/tracing.js.map +1 -0
- package/dist/watcher/changeHandler.d.ts +123 -0
- package/dist/watcher/changeHandler.d.ts.map +1 -0
- package/dist/watcher/changeHandler.js +623 -0
- package/dist/watcher/changeHandler.js.map +1 -0
- package/dist/watcher/changeQueue.d.ts +133 -0
- package/dist/watcher/changeQueue.d.ts.map +1 -0
- package/dist/watcher/changeQueue.js +355 -0
- package/dist/watcher/changeQueue.js.map +1 -0
- package/dist/watcher/fileWatcher.d.ts +121 -0
- package/dist/watcher/fileWatcher.d.ts.map +1 -0
- package/dist/watcher/fileWatcher.js +531 -0
- package/dist/watcher/fileWatcher.js.map +1 -0
- package/dist/watcher/index.d.ts +94 -0
- package/dist/watcher/index.d.ts.map +1 -0
- package/dist/watcher/index.js +235 -0
- package/dist/watcher/index.js.map +1 -0
- package/dist/watcher/syncChecker.d.ts +93 -0
- package/dist/watcher/syncChecker.d.ts.map +1 -0
- package/dist/watcher/syncChecker.js +401 -0
- package/dist/watcher/syncChecker.js.map +1 -0
- package/dist/watcher/tsCompiler.d.ts +88 -0
- package/dist/watcher/tsCompiler.d.ts.map +1 -0
- package/dist/watcher/tsCompiler.js +212 -0
- package/dist/watcher/tsCompiler.js.map +1 -0
- package/embedding-sandbox/Dockerfile +77 -0
- package/embedding-sandbox/Dockerfile.frankenstein +91 -0
- package/embedding-sandbox/README.md +193 -0
- package/embedding-sandbox/__pycache__/frankenstein-embeddings.cpython-312.pyc +0 -0
- package/embedding-sandbox/__pycache__/frankenstein-embeddings.cpython-313.pyc +0 -0
- package/embedding-sandbox/__pycache__/qqms_v2.cpython-312.pyc +0 -0
- package/embedding-sandbox/__pycache__/qqms_v2.cpython-313.pyc +0 -0
- package/embedding-sandbox/add_js_docs.py +684 -0
- package/embedding-sandbox/build_docs_db.py +239 -0
- package/embedding-sandbox/client.cjs +376 -0
- package/embedding-sandbox/client.ts +913 -0
- package/embedding-sandbox/deploy-frankenstein.sh +240 -0
- package/embedding-sandbox/docker-compose.yml +60 -0
- package/embedding-sandbox/docker-manager.py +325 -0
- package/embedding-sandbox/docs/python_docs.db +0 -0
- package/embedding-sandbox/download-model.mjs +79 -0
- package/embedding-sandbox/download-model.py +28 -0
- package/embedding-sandbox/embedding-supervisor.sh +164 -0
- package/embedding-sandbox/frankenstein-embeddings.py +3940 -0
- package/embedding-sandbox/manage-services.sh +354 -0
- package/embedding-sandbox/overflow_queue.py +345 -0
- package/embedding-sandbox/package.json +17 -0
- package/embedding-sandbox/project_isolation.py +292 -0
- package/embedding-sandbox/qqms_v2.py +967 -0
- package/embedding-sandbox/ram-manager.sh +311 -0
- package/embedding-sandbox/requirements-frankenstein.txt +7 -0
- package/embedding-sandbox/run_js_docs.py +59 -0
- package/embedding-sandbox/seed_docs.py +885 -0
- package/embedding-sandbox/server-batch.mjs +228 -0
- package/embedding-sandbox/server.mjs +389 -0
- package/embedding-sandbox/specmem/sockets/claude-input-state.json +1 -0
- package/embedding-sandbox/specmem/sockets/embedding-death-reason.txt +3 -0
- package/embedding-sandbox/specmem/sockets/seen-sessions.json +1 -0
- package/embedding-sandbox/specmem/sockets/session-start.lock +1 -0
- package/embedding-sandbox/specmem/sockets/session-stops.log +7 -0
- package/embedding-sandbox/start-frankenstein-throttled.sh +98 -0
- package/embedding-sandbox/start-on-demand.sh +116 -0
- package/embedding-sandbox/start-sandbox.sh +237 -0
- package/embedding-sandbox/start-supervised.sh +11 -0
- package/embedding-sandbox/stop-sandbox.sh +51 -0
- package/embedding-sandbox/test-socket.mjs +61 -0
- package/embedding-sandbox/warm-start.sh +353 -0
- package/embedding-sandbox/warm_start_feeder.py +660 -0
- package/legal/README.md +31 -0
- package/legal/anthropic-privacy-center-screenshot-2026-01-30.png +0 -0
- package/legal/anthropic-tos-screenshot-2026-01-30.png +0 -0
- package/lib/codebase-bridge.cjs +308 -0
- package/package.json +136 -0
- package/plugins/specmem-agents/agents/bug-hunter.md +79 -0
- package/plugins/specmem-agents/agents/memory-explorer.md +57 -0
- package/plugins/specmem-agents/agents/team-coordinator.md +82 -0
- package/scripts/auto-updater.cjs +399 -0
- package/scripts/backfill-code-definition-embeddings.ts +440 -0
- package/scripts/backfill-code-embeddings.ts +206 -0
- package/scripts/capture-tos-screenshots.cjs +94 -0
- package/scripts/check-global-install.cjs +67 -0
- package/scripts/cleanup-embedding-servers.sh +25 -0
- package/scripts/dashboard-standalone.sh +369 -0
- package/scripts/deploy-hooks.cjs +1451 -0
- package/scripts/deploy.sh +106 -0
- package/scripts/docker-project-down.sh +83 -0
- package/scripts/docker-project-list.sh +40 -0
- package/scripts/docker-project-up.sh +79 -0
- package/scripts/fast-backfill-embeddings.ts +173 -0
- package/scripts/fast-batch-embedder.cjs +334 -0
- package/scripts/first-run-model-setup.cjs +849 -0
- package/scripts/global-postinstall.cjs +1957 -0
- package/scripts/index-codebase.js +72 -0
- package/scripts/migrate-fix-embeddings.py +110 -0
- package/scripts/migrate-to-project-schemas.ts +525 -0
- package/scripts/optimize-embedding-model.py +324 -0
- package/scripts/optimize-instructions.cjs +530 -0
- package/scripts/pack-docker-images.sh +68 -0
- package/scripts/pack-for-testing.sh +130 -0
- package/scripts/postinstall.cjs +54 -0
- package/scripts/project-env.sh +51 -0
- package/scripts/reset-db.sh +30 -0
- package/scripts/run-indexer.ts +69 -0
- package/scripts/run-migrations.js +47 -0
- package/scripts/setup-db.sh +34 -0
- package/scripts/setup-minimal-schema.sql +143 -0
- package/scripts/skills/code-review.md +44 -0
- package/scripts/skills/debugging.md +56 -0
- package/scripts/skills/specmem-deployteam.md +239 -0
- package/scripts/skills/teammemberskills/EFFICIENT_GREP.md +171 -0
- package/scripts/skills/teammemberskills/task-planning.md +67 -0
- package/scripts/specmem/sockets/session-start.lock +1 -0
- package/scripts/specmem/sockets/session-stops.log +1 -0
- package/scripts/specmem-health.sh +382 -0
- package/scripts/specmem-init.cjs +6935 -0
- package/scripts/strip-debug-logs.cjs +43 -0
- package/scripts/test-mcp-standalone.sh +365 -0
- package/scripts/test-optimized-models.py +166 -0
- package/scripts/verify-embedding-fix.sh +148 -0
- package/skills/code-review.md +44 -0
- package/skills/debugging.md +56 -0
- package/skills/specmem-deployteam.md +239 -0
- package/skills/teammemberskills/EFFICIENT_GREP.md +171 -0
- package/skills/teammemberskills/task-planning.md +67 -0
- package/specmem-health.cjs +522 -0
- package/specmem.env +216 -0
|
@@ -0,0 +1,850 @@
|
|
|
1
|
+
// yooo auto-config system that goes CRAZY
|
|
2
|
+
// detects first run, generates secure configs, all that good stuff
|
|
3
|
+
// no more manual setup - this does it ALL fr fr
|
|
4
|
+
import * as fs from 'fs/promises';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import * as crypto from 'crypto';
|
|
7
|
+
import * as os from 'os';
|
|
8
|
+
import { logger } from '../utils/logger.js';
|
|
9
|
+
// @ts-ignore - pg types not installed
|
|
10
|
+
import pg from 'pg';
|
|
11
|
+
// Import unified password service for password persistence
|
|
12
|
+
import { persistPasswordToEnv, setPassword } from './password.js';
|
|
13
|
+
const { Client } = pg;
|
|
14
|
+
/**
|
|
15
|
+
* discoverActiveDatabase - dynamically finds which DB has the actual memories
|
|
16
|
+
*
|
|
17
|
+
* Tries databases in order of likelihood:
|
|
18
|
+
* 1. SPECMEM_DB_NAME env var (if set)
|
|
19
|
+
* 2. specmem_westayunprofessional (the OG password-named DB)
|
|
20
|
+
* 3. specmem (the default)
|
|
21
|
+
*
|
|
22
|
+
* Returns the DB with the most memories, or first accessible one
|
|
23
|
+
*/
|
|
24
|
+
async function discoverActiveDatabase(host, port, password) {
|
|
25
|
+
const candidates = [
|
|
26
|
+
process.env['SPECMEM_DB_NAME'], // User override first
|
|
27
|
+
'specmem_westayunprofessional', // The OG database (unified password pattern)
|
|
28
|
+
].filter(Boolean);
|
|
29
|
+
let bestDb = 'specmem_westayunprofessional';
|
|
30
|
+
let maxMemories = -1;
|
|
31
|
+
for (const dbName of candidates) {
|
|
32
|
+
const client = new Client({
|
|
33
|
+
host,
|
|
34
|
+
port,
|
|
35
|
+
database: dbName,
|
|
36
|
+
user: 'specmem_westayunprofessional', // Try the OG user first
|
|
37
|
+
password,
|
|
38
|
+
connectionTimeoutMillis: 3000
|
|
39
|
+
});
|
|
40
|
+
try {
|
|
41
|
+
await client.connect();
|
|
42
|
+
const result = await client.query('SELECT COUNT(*) as count FROM memories');
|
|
43
|
+
const count = parseInt(result.rows[0]?.count || '0', 10);
|
|
44
|
+
logger.info({ database: dbName, memoryCount: count }, '[AutoConfig] Discovered database with memories');
|
|
45
|
+
if (count > maxMemories) {
|
|
46
|
+
maxMemories = count;
|
|
47
|
+
bestDb = dbName;
|
|
48
|
+
}
|
|
49
|
+
await client.end();
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
// Try with env password as fallback
|
|
53
|
+
try {
|
|
54
|
+
const client2 = new Client({
|
|
55
|
+
host,
|
|
56
|
+
port,
|
|
57
|
+
database: dbName,
|
|
58
|
+
user: process.env['SPECMEM_DB_USER'] || 'specmem_westayunprofessional',
|
|
59
|
+
password,
|
|
60
|
+
connectionTimeoutMillis: 3000
|
|
61
|
+
});
|
|
62
|
+
await client2.connect();
|
|
63
|
+
const result = await client2.query('SELECT COUNT(*) as count FROM memories');
|
|
64
|
+
const count = parseInt(result.rows[0]?.count || '0', 10);
|
|
65
|
+
logger.info({ database: dbName, memoryCount: count, user: process.env['SPECMEM_DB_USER'] || 'specmem_westayunprofessional' }, '[AutoConfig] Discovered database (fallback user)');
|
|
66
|
+
if (count > maxMemories) {
|
|
67
|
+
maxMemories = count;
|
|
68
|
+
bestDb = dbName;
|
|
69
|
+
}
|
|
70
|
+
await client2.end();
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
logger.debug({ database: dbName }, '[AutoConfig] Database not accessible');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
logger.info({ selectedDatabase: bestDb, memoryCount: maxMemories }, '[AutoConfig] Selected active database');
|
|
78
|
+
return bestDb;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* isThisTheFirstRodeo - checks if this is the first time running SpecMem
|
|
82
|
+
*
|
|
83
|
+
* looks for config files in:
|
|
84
|
+
* 1. ~/.specmem/config.json
|
|
85
|
+
* 2. .env file in project root
|
|
86
|
+
* 3. existing database connection
|
|
87
|
+
*/
|
|
88
|
+
export async function isThisTheFirstRodeo() {
|
|
89
|
+
try {
|
|
90
|
+
// check for user config directory
|
|
91
|
+
const configDir = await getConfigDirectory();
|
|
92
|
+
const configPath = path.join(configDir, 'config.json');
|
|
93
|
+
try {
|
|
94
|
+
await fs.access(configPath);
|
|
95
|
+
logger.debug({ configPath }, 'found existing config - not first rodeo');
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// config doesn't exist, might be first run
|
|
100
|
+
}
|
|
101
|
+
// check for .env file in project root
|
|
102
|
+
const projectRoot = getProjectRoot();
|
|
103
|
+
const envPath = path.join(projectRoot, '.env');
|
|
104
|
+
try {
|
|
105
|
+
await fs.access(envPath);
|
|
106
|
+
const envContent = await fs.readFile(envPath, 'utf-8');
|
|
107
|
+
// if .env exists and has DB password, probably not first run
|
|
108
|
+
if (envContent.includes('SPECMEM_DB_PASSWORD') && !envContent.includes('your_secure_password_here')) {
|
|
109
|
+
logger.debug({ envPath }, 'found configured .env - not first rodeo');
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
// .env doesn't exist
|
|
115
|
+
}
|
|
116
|
+
logger.info('no existing config found - this IS the first rodeo lets gooo');
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
logger.warn({ err }, 'error checking first run status, assuming first run');
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Parse DATABASE_URL if provided
|
|
126
|
+
* Format: postgres://user:password@host:port/database
|
|
127
|
+
*/
|
|
128
|
+
function parseDatabaseUrlForDetection() {
|
|
129
|
+
const databaseUrl = process.env['DATABASE_URL'];
|
|
130
|
+
if (!databaseUrl) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
try {
|
|
134
|
+
const normalizedUrl = databaseUrl.replace(/^postgresql:\/\//, 'postgres://');
|
|
135
|
+
const url = new URL(normalizedUrl);
|
|
136
|
+
if (url.protocol !== 'postgres:') {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
host: url.hostname,
|
|
141
|
+
port: url.port ? parseInt(url.port, 10) : 5432,
|
|
142
|
+
user: decodeURIComponent(url.username) || 'postgres',
|
|
143
|
+
password: decodeURIComponent(url.password) || ''
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* detectThePostgresVibes - auto-detect PostgreSQL connection details
|
|
152
|
+
*
|
|
153
|
+
* checks common locations:
|
|
154
|
+
* 1. DATABASE_URL (if set, takes priority)
|
|
155
|
+
* 2. Environment variables (PGHOST, PGPORT, etc)
|
|
156
|
+
* 3. localhost:5432 (standard port)
|
|
157
|
+
* 4. Unix socket connection
|
|
158
|
+
* 5. Common Docker/Podman ports
|
|
159
|
+
*/
|
|
160
|
+
export async function detectThePostgresVibes() {
|
|
161
|
+
// DATABASE_URL takes priority if set
|
|
162
|
+
const parsedUrl = parseDatabaseUrlForDetection();
|
|
163
|
+
if (parsedUrl) {
|
|
164
|
+
logger.info({ host: parsedUrl.host, port: parsedUrl.port }, 'DATABASE_URL detected, using that');
|
|
165
|
+
}
|
|
166
|
+
// try environment variables first (or DATABASE_URL if parsed)
|
|
167
|
+
const envHost = parsedUrl?.host || process.env['PGHOST'] || process.env['POSTGRES_HOST'] || 'localhost';
|
|
168
|
+
const envPort = parsedUrl?.port || parseInt(process.env['PGPORT'] || process.env['POSTGRES_PORT'] || '5432', 10);
|
|
169
|
+
logger.info({ host: envHost, port: envPort }, 'yooo auto-detecting postgres lets goooo');
|
|
170
|
+
// try to connect to detect if postgres is available
|
|
171
|
+
const testLocations = [
|
|
172
|
+
{ host: envHost, port: envPort },
|
|
173
|
+
{ host: 'localhost', port: 5432 },
|
|
174
|
+
{ host: '127.0.0.1', port: 5432 },
|
|
175
|
+
];
|
|
176
|
+
// Use credentials from DATABASE_URL if available, otherwise fall back to env vars
|
|
177
|
+
const testUser = parsedUrl?.user || process.env['PGUSER'] || 'postgres';
|
|
178
|
+
const testPassword = parsedUrl?.password || process.env['PGPASSWORD'] || '';
|
|
179
|
+
for (const location of testLocations) {
|
|
180
|
+
try {
|
|
181
|
+
const client = new Client({
|
|
182
|
+
host: location.host,
|
|
183
|
+
port: location.port,
|
|
184
|
+
user: testUser,
|
|
185
|
+
password: testPassword,
|
|
186
|
+
database: 'postgres', // connect to default db
|
|
187
|
+
connectionTimeoutMillis: 2000,
|
|
188
|
+
});
|
|
189
|
+
await client.connect();
|
|
190
|
+
const result = await client.query('SELECT version()');
|
|
191
|
+
const version = result.rows[0]?.version;
|
|
192
|
+
await client.end();
|
|
193
|
+
logger.info({
|
|
194
|
+
host: location.host,
|
|
195
|
+
port: location.port,
|
|
196
|
+
version
|
|
197
|
+
}, 'postgres detected - WE FOUND IT');
|
|
198
|
+
return {
|
|
199
|
+
host: location.host,
|
|
200
|
+
port: location.port,
|
|
201
|
+
available: true,
|
|
202
|
+
version
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
logger.debug({
|
|
207
|
+
host: location.host,
|
|
208
|
+
port: location.port,
|
|
209
|
+
error: err.message
|
|
210
|
+
}, 'postgres not found at this location, trying next...');
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// no postgres found, return defaults
|
|
214
|
+
logger.warn('postgres not detected - using defaults (might need manual config)');
|
|
215
|
+
return {
|
|
216
|
+
host: 'localhost',
|
|
217
|
+
port: 5432,
|
|
218
|
+
available: false
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* generateSecretSauce - creates secure random keys and passwords
|
|
223
|
+
*
|
|
224
|
+
* uses crypto.randomBytes for cryptographically secure randomness
|
|
225
|
+
* generates URL-safe base64 strings for maximum compatibility
|
|
226
|
+
*/
|
|
227
|
+
export function generateSecretSauce(length = 32) {
|
|
228
|
+
// fr fr this config generation go crazy
|
|
229
|
+
const bytes = crypto.randomBytes(length);
|
|
230
|
+
// URL-safe base64 encoding (no special chars that break env files)
|
|
231
|
+
return bytes.toString('base64')
|
|
232
|
+
.replace(/\+/g, '-')
|
|
233
|
+
.replace(/\//g, '_')
|
|
234
|
+
.replace(/=/g, '')
|
|
235
|
+
.slice(0, length);
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get project hash for per-project isolation
|
|
239
|
+
* Uses SPECMEM_PROJECT_HASH env var or computes from project path
|
|
240
|
+
*/
|
|
241
|
+
function getProjectHash() {
|
|
242
|
+
if (process.env['SPECMEM_PROJECT_HASH']) {
|
|
243
|
+
return process.env['SPECMEM_PROJECT_HASH'];
|
|
244
|
+
}
|
|
245
|
+
const projectPath = process.env['SPECMEM_PROJECT_PATH'] || process.cwd();
|
|
246
|
+
return crypto.createHash('sha256').update(path.resolve(projectPath)).digest('hex').slice(0, 12);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Get project-specific database name
|
|
250
|
+
* Format: specmem_{projectHash}
|
|
251
|
+
*/
|
|
252
|
+
function getProjectDatabaseName() {
|
|
253
|
+
if (process.env['SPECMEM_DB_NAME']) {
|
|
254
|
+
return process.env['SPECMEM_DB_NAME'];
|
|
255
|
+
}
|
|
256
|
+
return `specmem_${getProjectHash()}`;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Get project-specific port from hash
|
|
260
|
+
* Derives a unique port in a given range based on project hash
|
|
261
|
+
*/
|
|
262
|
+
function getProjectPortFromHash(basePort, rangeSize = 100) {
|
|
263
|
+
const projectHash = getProjectHash();
|
|
264
|
+
const hashNum = parseInt(projectHash.slice(0, 4), 16);
|
|
265
|
+
return basePort + (hashNum % rangeSize);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* autoMagicSetup - generates complete server configuration
|
|
269
|
+
*
|
|
270
|
+
* creates a production-ready config with:
|
|
271
|
+
* - secure random passwords
|
|
272
|
+
* - auto-detected postgres settings
|
|
273
|
+
* - per-project isolation via project hash
|
|
274
|
+
* - sensible defaults for all options
|
|
275
|
+
*/
|
|
276
|
+
export async function autoMagicSetup() {
|
|
277
|
+
logger.info('starting autoMagicSetup - lets configure this beast');
|
|
278
|
+
// detect postgres
|
|
279
|
+
const pgInfo = await detectThePostgresVibes();
|
|
280
|
+
// generate secure database password
|
|
281
|
+
const dbPassword = generateSecretSauce(32);
|
|
282
|
+
// Get project-specific database name
|
|
283
|
+
const projectDbName = getProjectDatabaseName();
|
|
284
|
+
// Get project-specific port (for embedded postgres)
|
|
285
|
+
const projectDbPort = process.env['SPECMEM_DB_PORT']
|
|
286
|
+
? parseInt(process.env['SPECMEM_DB_PORT'], 10)
|
|
287
|
+
: getProjectPortFromHash(5500, 100);
|
|
288
|
+
logger.info({ projectDbName, projectDbPort, projectHash: getProjectHash() }, 'using project-specific database configuration');
|
|
289
|
+
// create config object
|
|
290
|
+
const config = {
|
|
291
|
+
database: {
|
|
292
|
+
host: pgInfo.host,
|
|
293
|
+
port: pgInfo.available ? pgInfo.port : projectDbPort,
|
|
294
|
+
database: projectDbName,
|
|
295
|
+
user: process.env['SPECMEM_DB_USER'] || 'specmem_westayunprofessional',
|
|
296
|
+
password: dbPassword,
|
|
297
|
+
maxConnections: 20,
|
|
298
|
+
idleTimeout: 30000,
|
|
299
|
+
connectionTimeout: 5000,
|
|
300
|
+
ssl: false
|
|
301
|
+
},
|
|
302
|
+
embedding: {
|
|
303
|
+
// DEPRECATED: dimensions is now auto-detected from the database pgvector column
|
|
304
|
+
// Do NOT hardcode dimensions - they are dynamically detected from pg_attribute
|
|
305
|
+
// The Frankenstein model outputs 384 dims, but DB may be migrated to any dimension
|
|
306
|
+
// dimensions: 384, // REMOVED - auto-detected from database
|
|
307
|
+
model: 'text-embedding-3-small',
|
|
308
|
+
batchSize: 100
|
|
309
|
+
},
|
|
310
|
+
consolidation: {
|
|
311
|
+
autoEnabled: false,
|
|
312
|
+
intervalMinutes: 60,
|
|
313
|
+
minMemoriesForConsolidation: 5,
|
|
314
|
+
similarityQueryLimit: 1000,
|
|
315
|
+
temporalQueryLimit: 500,
|
|
316
|
+
tagBasedQueryLimit: 50,
|
|
317
|
+
importanceQueryLimit: 200
|
|
318
|
+
},
|
|
319
|
+
storage: {
|
|
320
|
+
maxImageSizeBytes: 10 * 1024 * 1024, // 10MB
|
|
321
|
+
allowedImageTypes: ['image/png', 'image/jpeg', 'image/webp', 'image/gif']
|
|
322
|
+
},
|
|
323
|
+
logging: {
|
|
324
|
+
level: 'info',
|
|
325
|
+
prettyPrint: false
|
|
326
|
+
},
|
|
327
|
+
// Watcher - REQUIRED, always enabled by default
|
|
328
|
+
watcher: {
|
|
329
|
+
enabled: true,
|
|
330
|
+
rootPath: process.env['SPECMEM_PROJECT_PATH'] || process.cwd(),
|
|
331
|
+
debounceMs: 1000,
|
|
332
|
+
autoRestart: true,
|
|
333
|
+
maxRestarts: 5,
|
|
334
|
+
maxFileSizeBytes: 1048576,
|
|
335
|
+
autoDetectMetadata: true,
|
|
336
|
+
queueMaxSize: 10000,
|
|
337
|
+
queueBatchSize: 50,
|
|
338
|
+
queueProcessingIntervalMs: 2000,
|
|
339
|
+
syncCheckIntervalMinutes: 60
|
|
340
|
+
},
|
|
341
|
+
// Session watcher - REQUIRED, always enabled by default
|
|
342
|
+
sessionWatcher: {
|
|
343
|
+
enabled: true,
|
|
344
|
+
debounceMs: 2000,
|
|
345
|
+
importance: 'medium',
|
|
346
|
+
additionalTags: []
|
|
347
|
+
}
|
|
348
|
+
};
|
|
349
|
+
logger.info('autoMagicSetup completed - config generated successfully');
|
|
350
|
+
return config;
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* getConfigDirectory - returns the user's config directory
|
|
354
|
+
* creates it if it doesn't exist
|
|
355
|
+
*/
|
|
356
|
+
export async function getConfigDirectory() {
|
|
357
|
+
const homeDir = os.homedir();
|
|
358
|
+
const configDir = path.join(homeDir, '.specmem');
|
|
359
|
+
try {
|
|
360
|
+
await fs.mkdir(configDir, { recursive: true });
|
|
361
|
+
}
|
|
362
|
+
catch (err) {
|
|
363
|
+
logger.warn({ err, configDir }, 'error creating config directory');
|
|
364
|
+
}
|
|
365
|
+
return configDir;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* getProjectRoot - returns the project root directory
|
|
369
|
+
*/
|
|
370
|
+
export function getProjectRoot() {
|
|
371
|
+
// assuming this file is in src/config/autoConfig.ts
|
|
372
|
+
return path.resolve(import.meta.url.replace('file://', ''), '../../..');
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* saveConfigToFile - saves config to ~/.specmem/config.json
|
|
376
|
+
*/
|
|
377
|
+
export async function saveConfigToFile(config) {
|
|
378
|
+
const configDir = await getConfigDirectory();
|
|
379
|
+
const configPath = path.join(configDir, 'config.json');
|
|
380
|
+
await fs.writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
381
|
+
// set restrictive permissions (only owner can read/write)
|
|
382
|
+
await fs.chmod(configPath, 0o600);
|
|
383
|
+
logger.info({ configPath }, 'config saved to file - secure permissions applied');
|
|
384
|
+
return configPath;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* createEnvFile - creates .env file in project root
|
|
388
|
+
*/
|
|
389
|
+
export async function createEnvFile(config) {
|
|
390
|
+
const projectRoot = getProjectRoot();
|
|
391
|
+
const envPath = path.join(projectRoot, '.env');
|
|
392
|
+
// check if .env already exists
|
|
393
|
+
try {
|
|
394
|
+
await fs.access(envPath);
|
|
395
|
+
logger.warn({ envPath }, '.env already exists - backing up to .env.backup');
|
|
396
|
+
// backup existing .env
|
|
397
|
+
const backupPath = path.join(projectRoot, '.env.backup');
|
|
398
|
+
await fs.copyFile(envPath, backupPath);
|
|
399
|
+
}
|
|
400
|
+
catch {
|
|
401
|
+
// .env doesn't exist, we good
|
|
402
|
+
}
|
|
403
|
+
// generate .env content
|
|
404
|
+
// Note: passwords MUST be quoted if they contain # (treated as comment) or other special chars
|
|
405
|
+
const envContent = `# SpecMem Configuration - Auto-generated
|
|
406
|
+
# Generated at: ${new Date().toISOString()}
|
|
407
|
+
|
|
408
|
+
# PostgreSQL Database
|
|
409
|
+
SPECMEM_DB_HOST=${config.database.host}
|
|
410
|
+
SPECMEM_DB_PORT=${config.database.port}
|
|
411
|
+
SPECMEM_DB_NAME=${config.database.database}
|
|
412
|
+
SPECMEM_DB_USER=${config.database.user}
|
|
413
|
+
SPECMEM_DB_PASSWORD="${config.database.password}"
|
|
414
|
+
SPECMEM_DB_MAX_CONNECTIONS=${config.database.maxConnections}
|
|
415
|
+
SPECMEM_DB_IDLE_TIMEOUT=${config.database.idleTimeout}
|
|
416
|
+
SPECMEM_DB_CONNECTION_TIMEOUT=${config.database.connectionTimeout}
|
|
417
|
+
SPECMEM_DB_SSL=${config.database.ssl}
|
|
418
|
+
|
|
419
|
+
# Embedding Configuration
|
|
420
|
+
# Uses local embeddings - fully standalone, no external API needed
|
|
421
|
+
# NOTE: Dimensions are AUTO-DETECTED from the database pgvector column
|
|
422
|
+
# Do NOT configure SPECMEM_EMBEDDING_DIMENSIONS - it is DEPRECATED and ignored
|
|
423
|
+
# The dimension is determined by the Frankenstein model and the DB schema
|
|
424
|
+
SPECMEM_EMBEDDING_BATCH_SIZE=${config.embedding.batchSize}
|
|
425
|
+
|
|
426
|
+
# Coordination Server
|
|
427
|
+
SPECMEM_COORDINATION_ENABLED=true
|
|
428
|
+
SPECMEM_COORDINATION_PORT=3001
|
|
429
|
+
|
|
430
|
+
# Consolidation Settings
|
|
431
|
+
SPECMEM_AUTO_CONSOLIDATION=${config.consolidation.autoEnabled}
|
|
432
|
+
SPECMEM_CONSOLIDATION_INTERVAL=${config.consolidation.intervalMinutes}
|
|
433
|
+
SPECMEM_MIN_MEMORIES_CONSOLIDATION=${config.consolidation.minMemoriesForConsolidation}
|
|
434
|
+
|
|
435
|
+
# Storage Settings
|
|
436
|
+
SPECMEM_MAX_IMAGE_SIZE=${config.storage.maxImageSizeBytes}
|
|
437
|
+
SPECMEM_ALLOWED_IMAGE_TYPES=${config.storage.allowedImageTypes.join(',')}
|
|
438
|
+
|
|
439
|
+
# Logging
|
|
440
|
+
SPECMEM_LOG_LEVEL=${config.logging.level}
|
|
441
|
+
SPECMEM_LOG_PRETTY=${config.logging.prettyPrint}
|
|
442
|
+
`;
|
|
443
|
+
await fs.writeFile(envPath, envContent, 'utf-8');
|
|
444
|
+
// set restrictive permissions
|
|
445
|
+
await fs.chmod(envPath, 0o600);
|
|
446
|
+
logger.info({ envPath }, '.env file created - ready for standalone operation');
|
|
447
|
+
return envPath;
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* runAutoConfig - main entry point for auto-configuration
|
|
451
|
+
*
|
|
452
|
+
* orchestrates the entire auto-config process:
|
|
453
|
+
* 1. Check if first run
|
|
454
|
+
* 2. Detect postgres
|
|
455
|
+
* 3. Generate config
|
|
456
|
+
* 4. Save to files
|
|
457
|
+
*/
|
|
458
|
+
export async function runAutoConfig() {
|
|
459
|
+
logger.info('running auto-config - this bout to be smooth fr');
|
|
460
|
+
const isFirstRun = await isThisTheFirstRodeo();
|
|
461
|
+
if (!isFirstRun) {
|
|
462
|
+
// load existing config
|
|
463
|
+
const configDir = await getConfigDirectory();
|
|
464
|
+
const configPath = path.join(configDir, 'config.json');
|
|
465
|
+
const projectRoot = getProjectRoot();
|
|
466
|
+
const envPath = path.join(projectRoot, '.env');
|
|
467
|
+
try {
|
|
468
|
+
const configContent = await fs.readFile(configPath, 'utf-8');
|
|
469
|
+
const config = JSON.parse(configContent);
|
|
470
|
+
logger.info('loaded existing config - no generation needed');
|
|
471
|
+
return {
|
|
472
|
+
isFirstRun: false,
|
|
473
|
+
configPath,
|
|
474
|
+
envPath,
|
|
475
|
+
config,
|
|
476
|
+
wasGenerated: false
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
catch (err) {
|
|
480
|
+
logger.warn({ err }, 'error loading existing config, generating new one');
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
// generate new config
|
|
484
|
+
const config = await autoMagicSetup();
|
|
485
|
+
// save to both locations
|
|
486
|
+
const configPath = await saveConfigToFile(config);
|
|
487
|
+
const envPath = await createEnvFile(config);
|
|
488
|
+
logger.info({
|
|
489
|
+
configPath,
|
|
490
|
+
envPath,
|
|
491
|
+
isFirstRun
|
|
492
|
+
}, 'auto-config complete - SpecMem is ready to rock');
|
|
493
|
+
return {
|
|
494
|
+
isFirstRun,
|
|
495
|
+
configPath,
|
|
496
|
+
envPath,
|
|
497
|
+
config,
|
|
498
|
+
wasGenerated: true
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* syncConfigToUserFile - ALWAYS syncs current running config to ~/.specmem/config.json
|
|
503
|
+
*
|
|
504
|
+
* This ensures the hook ALWAYS has the latest config, even if .env changed
|
|
505
|
+
* Called on EVERY startup - makes SpecMem deployable anywhere
|
|
506
|
+
*/
|
|
507
|
+
export async function syncConfigToUserFile(config) {
|
|
508
|
+
try {
|
|
509
|
+
const configPath = await saveConfigToFile(config);
|
|
510
|
+
logger.info({ configPath }, 'config synced to user file - hooks will read fresh config');
|
|
511
|
+
}
|
|
512
|
+
catch (err) {
|
|
513
|
+
logger.warn({ err }, 'failed to sync config to user file - hooks may have stale config');
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* Get the .specmem directory path for current project
|
|
518
|
+
*/
|
|
519
|
+
export function getLocalSpecMemDir() {
|
|
520
|
+
return path.join(process.cwd(), '.specmem');
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Get the instance.json path for current project
|
|
524
|
+
*/
|
|
525
|
+
export function getInstanceConfigPath() {
|
|
526
|
+
return path.join(getLocalSpecMemDir(), 'instance.json');
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* createAtomicBackup - Create a backup of a file before modifying
|
|
530
|
+
*
|
|
531
|
+
* Uses timestamp-based naming for multiple backup versions
|
|
532
|
+
* Returns the backup path for potential rollback
|
|
533
|
+
*/
|
|
534
|
+
export async function createAtomicBackup(filePath) {
|
|
535
|
+
try {
|
|
536
|
+
// Check if file exists
|
|
537
|
+
try {
|
|
538
|
+
await fs.access(filePath);
|
|
539
|
+
}
|
|
540
|
+
catch {
|
|
541
|
+
// File doesn't exist, nothing to backup
|
|
542
|
+
return null;
|
|
543
|
+
}
|
|
544
|
+
// Create backup with timestamp
|
|
545
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
546
|
+
const backupPath = `${filePath}.backup.${timestamp}`;
|
|
547
|
+
// Copy file atomically
|
|
548
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
549
|
+
await fs.writeFile(backupPath, content, 'utf-8');
|
|
550
|
+
logger.debug({ filePath, backupPath }, 'created atomic backup');
|
|
551
|
+
return backupPath;
|
|
552
|
+
}
|
|
553
|
+
catch (err) {
|
|
554
|
+
logger.warn({ err, filePath }, 'failed to create backup');
|
|
555
|
+
return null;
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
/**
|
|
559
|
+
* atomicWriteFile - Write a file atomically using temp file + rename
|
|
560
|
+
*
|
|
561
|
+
* Prevents file corruption by writing to a temp file first,
|
|
562
|
+
* then atomically renaming (which is atomic on most filesystems)
|
|
563
|
+
*/
|
|
564
|
+
export async function atomicWriteFile(filePath, content) {
|
|
565
|
+
const tempPath = `${filePath}.tmp.${process.pid}`;
|
|
566
|
+
try {
|
|
567
|
+
// Ensure directory exists
|
|
568
|
+
const dir = path.dirname(filePath);
|
|
569
|
+
await fs.mkdir(dir, { recursive: true });
|
|
570
|
+
// Write to temp file first
|
|
571
|
+
await fs.writeFile(tempPath, content, 'utf-8');
|
|
572
|
+
// Atomically rename temp to target
|
|
573
|
+
await fs.rename(tempPath, filePath);
|
|
574
|
+
// Set restrictive permissions for sensitive files
|
|
575
|
+
if (filePath.includes('.env') || filePath.includes('config.json') || filePath.includes('instance.json')) {
|
|
576
|
+
await fs.chmod(filePath, 0o600);
|
|
577
|
+
}
|
|
578
|
+
logger.debug({ filePath }, 'atomic file write completed');
|
|
579
|
+
}
|
|
580
|
+
catch (err) {
|
|
581
|
+
// Clean up temp file on error
|
|
582
|
+
try {
|
|
583
|
+
await fs.unlink(tempPath);
|
|
584
|
+
}
|
|
585
|
+
catch {
|
|
586
|
+
// Ignore cleanup errors
|
|
587
|
+
}
|
|
588
|
+
throw err;
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
/**
|
|
592
|
+
* rollbackFromBackup - Restore a file from its backup
|
|
593
|
+
*
|
|
594
|
+
* Used when a config update fails and we need to revert
|
|
595
|
+
*/
|
|
596
|
+
export async function rollbackFromBackup(originalPath, backupPath) {
|
|
597
|
+
try {
|
|
598
|
+
const content = await fs.readFile(backupPath, 'utf-8');
|
|
599
|
+
await atomicWriteFile(originalPath, content);
|
|
600
|
+
logger.info({ originalPath, backupPath }, 'rolled back to backup');
|
|
601
|
+
return true;
|
|
602
|
+
}
|
|
603
|
+
catch (err) {
|
|
604
|
+
logger.error({ err, originalPath, backupPath }, 'rollback failed');
|
|
605
|
+
return false;
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
/**
|
|
609
|
+
* loadInstanceConfig - Load the current instance.json configuration
|
|
610
|
+
*/
|
|
611
|
+
export async function loadInstanceConfig() {
|
|
612
|
+
const instancePath = getInstanceConfigPath();
|
|
613
|
+
try {
|
|
614
|
+
const content = await fs.readFile(instancePath, 'utf-8');
|
|
615
|
+
return JSON.parse(content);
|
|
616
|
+
}
|
|
617
|
+
catch {
|
|
618
|
+
return null;
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
/**
|
|
622
|
+
* saveInstanceConfig - Save instance configuration atomically
|
|
623
|
+
*
|
|
624
|
+
* Creates backup before updating, supports rollback on error
|
|
625
|
+
* Uses project hash for per-project isolation
|
|
626
|
+
*/
|
|
627
|
+
export async function saveInstanceConfig(config) {
|
|
628
|
+
const instancePath = getInstanceConfigPath();
|
|
629
|
+
let backupPath = null;
|
|
630
|
+
try {
|
|
631
|
+
// Create backup of existing config
|
|
632
|
+
backupPath = await createAtomicBackup(instancePath);
|
|
633
|
+
// Get project hash for isolation
|
|
634
|
+
const projectHash = getProjectHash();
|
|
635
|
+
const projectDbName = getProjectDatabaseName();
|
|
636
|
+
const projectDbPort = getProjectPortFromHash(5500, 100);
|
|
637
|
+
// Load existing config and merge
|
|
638
|
+
const existingConfig = await loadInstanceConfig() || {
|
|
639
|
+
projectPath: process.cwd(),
|
|
640
|
+
projectHash: projectHash,
|
|
641
|
+
databaseName: projectDbName,
|
|
642
|
+
databasePort: projectDbPort
|
|
643
|
+
};
|
|
644
|
+
const updatedConfig = {
|
|
645
|
+
...existingConfig,
|
|
646
|
+
...config,
|
|
647
|
+
lastConfigUpdate: new Date().toISOString(),
|
|
648
|
+
configVersion: (existingConfig.configVersion || 0) + 1
|
|
649
|
+
};
|
|
650
|
+
// Write atomically
|
|
651
|
+
await atomicWriteFile(instancePath, JSON.stringify(updatedConfig, null, 2));
|
|
652
|
+
logger.info({ instancePath, config }, 'instance config saved successfully');
|
|
653
|
+
return {
|
|
654
|
+
success: true,
|
|
655
|
+
message: 'Instance configuration saved',
|
|
656
|
+
backupPath: backupPath || undefined,
|
|
657
|
+
changedFields: Object.keys(config)
|
|
658
|
+
};
|
|
659
|
+
}
|
|
660
|
+
catch (err) {
|
|
661
|
+
// Attempt rollback if we have a backup
|
|
662
|
+
if (backupPath) {
|
|
663
|
+
await rollbackFromBackup(instancePath, backupPath);
|
|
664
|
+
}
|
|
665
|
+
logger.error({ err, instancePath }, 'failed to save instance config');
|
|
666
|
+
return {
|
|
667
|
+
success: false,
|
|
668
|
+
message: `Failed to save instance config: ${err.message}`
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
/**
|
|
673
|
+
* updateEnvFile - Update a specific variable in specmem.env or .env
|
|
674
|
+
*
|
|
675
|
+
* Handles atomic updates with backup and rollback
|
|
676
|
+
*/
|
|
677
|
+
export async function updateEnvFile(varName, value, envFilePath) {
|
|
678
|
+
// Find the env file to update
|
|
679
|
+
const envPaths = [
|
|
680
|
+
envFilePath,
|
|
681
|
+
path.join(process.cwd(), 'specmem.env'),
|
|
682
|
+
path.join(process.cwd(), '.env'),
|
|
683
|
+
].filter(Boolean);
|
|
684
|
+
for (const envPath of envPaths) {
|
|
685
|
+
try {
|
|
686
|
+
await fs.access(envPath);
|
|
687
|
+
// Create backup
|
|
688
|
+
const backupPath = await createAtomicBackup(envPath);
|
|
689
|
+
// Read current content
|
|
690
|
+
let content = await fs.readFile(envPath, 'utf-8');
|
|
691
|
+
// Check if variable exists and update or append
|
|
692
|
+
const regex = new RegExp(`^${varName}=.*$`, 'm');
|
|
693
|
+
if (regex.test(content)) {
|
|
694
|
+
content = content.replace(regex, `${varName}=${value}`);
|
|
695
|
+
}
|
|
696
|
+
else {
|
|
697
|
+
// Append the new variable
|
|
698
|
+
content = content.trimEnd() + `\n${varName}=${value}\n`;
|
|
699
|
+
}
|
|
700
|
+
// Write atomically
|
|
701
|
+
await atomicWriteFile(envPath, content);
|
|
702
|
+
logger.info({ envPath, varName }, 'env file updated successfully');
|
|
703
|
+
return {
|
|
704
|
+
success: true,
|
|
705
|
+
message: `Updated ${varName} in ${envPath}`,
|
|
706
|
+
backupPath: backupPath || undefined,
|
|
707
|
+
changedFields: [varName]
|
|
708
|
+
};
|
|
709
|
+
}
|
|
710
|
+
catch {
|
|
711
|
+
// Try next path
|
|
712
|
+
continue;
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
return {
|
|
716
|
+
success: false,
|
|
717
|
+
message: `Could not find env file to update ${varName}`
|
|
718
|
+
};
|
|
719
|
+
}
|
|
720
|
+
/**
|
|
721
|
+
* persistDashboardMode - Persist dashboard mode changes to both instance.json and specmem.env
|
|
722
|
+
*
|
|
723
|
+
* Updates:
|
|
724
|
+
* - .specmem/instance.json with mode/host/port
|
|
725
|
+
* - specmem.env with SPECMEM_DASHBOARD_MODE and related vars
|
|
726
|
+
*
|
|
727
|
+
* Returns whether a restart is required (mode change requires rebinding)
|
|
728
|
+
*/
|
|
729
|
+
export async function persistDashboardMode(config) {
|
|
730
|
+
const changedFields = [];
|
|
731
|
+
const errors = [];
|
|
732
|
+
let requiresRestart = false;
|
|
733
|
+
// Load current config to detect changes
|
|
734
|
+
const currentInstance = await loadInstanceConfig();
|
|
735
|
+
const currentMode = currentInstance?.dashboardMode;
|
|
736
|
+
const currentHost = currentInstance?.dashboardHost;
|
|
737
|
+
const currentPort = currentInstance?.dashboardPort;
|
|
738
|
+
// Detect if mode/host changes require restart
|
|
739
|
+
if (currentMode && currentMode !== config.mode) {
|
|
740
|
+
requiresRestart = true;
|
|
741
|
+
changedFields.push('mode');
|
|
742
|
+
}
|
|
743
|
+
if (config.mode === 'public' && currentHost && currentHost !== config.host) {
|
|
744
|
+
requiresRestart = true;
|
|
745
|
+
changedFields.push('host');
|
|
746
|
+
}
|
|
747
|
+
if (currentPort && config.port && currentPort !== config.port) {
|
|
748
|
+
requiresRestart = true;
|
|
749
|
+
changedFields.push('port');
|
|
750
|
+
}
|
|
751
|
+
// Save to instance.json
|
|
752
|
+
const instanceResult = await saveInstanceConfig({
|
|
753
|
+
dashboardMode: config.mode,
|
|
754
|
+
dashboardHost: config.host,
|
|
755
|
+
dashboardPort: config.port
|
|
756
|
+
});
|
|
757
|
+
if (!instanceResult.success) {
|
|
758
|
+
errors.push(instanceResult.message);
|
|
759
|
+
}
|
|
760
|
+
// Update specmem.env with mode
|
|
761
|
+
const modeResult = await updateEnvFile('SPECMEM_DASHBOARD_MODE', config.mode);
|
|
762
|
+
if (!modeResult.success) {
|
|
763
|
+
errors.push(modeResult.message);
|
|
764
|
+
}
|
|
765
|
+
else {
|
|
766
|
+
changedFields.push('SPECMEM_DASHBOARD_MODE');
|
|
767
|
+
}
|
|
768
|
+
// Update host if in public mode
|
|
769
|
+
if (config.mode === 'public' && config.host) {
|
|
770
|
+
const hostResult = await updateEnvFile('SPECMEM_DASHBOARD_HOST', config.host);
|
|
771
|
+
if (hostResult.success) {
|
|
772
|
+
changedFields.push('SPECMEM_DASHBOARD_HOST');
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
// Update port if specified
|
|
776
|
+
if (config.port) {
|
|
777
|
+
const portResult = await updateEnvFile('SPECMEM_DASHBOARD_PORT', config.port.toString());
|
|
778
|
+
if (portResult.success) {
|
|
779
|
+
changedFields.push('SPECMEM_DASHBOARD_PORT');
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
// Update password if specified - use unified password service
|
|
783
|
+
if (config.password) {
|
|
784
|
+
// Use the unified password service for persistence
|
|
785
|
+
const persisted = await persistPasswordToEnv(config.password);
|
|
786
|
+
if (persisted) {
|
|
787
|
+
// Also update runtime password
|
|
788
|
+
setPassword(config.password);
|
|
789
|
+
changedFields.push('SPECMEM_PASSWORD');
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
// Also update process.env for immediate effect (hot reload where possible)
|
|
793
|
+
if (config.mode)
|
|
794
|
+
process.env['SPECMEM_DASHBOARD_MODE'] = config.mode;
|
|
795
|
+
if (config.host)
|
|
796
|
+
process.env['SPECMEM_DASHBOARD_HOST'] = config.host;
|
|
797
|
+
if (config.port)
|
|
798
|
+
process.env['SPECMEM_DASHBOARD_PORT'] = config.port.toString();
|
|
799
|
+
if (errors.length > 0) {
|
|
800
|
+
return {
|
|
801
|
+
success: false,
|
|
802
|
+
message: errors.join('; '),
|
|
803
|
+
changedFields,
|
|
804
|
+
requiresRestart
|
|
805
|
+
};
|
|
806
|
+
}
|
|
807
|
+
return {
|
|
808
|
+
success: true,
|
|
809
|
+
message: requiresRestart
|
|
810
|
+
? 'Dashboard mode updated. Server restart required to apply changes.'
|
|
811
|
+
: 'Dashboard mode updated. Changes applied.',
|
|
812
|
+
changedFields,
|
|
813
|
+
requiresRestart
|
|
814
|
+
};
|
|
815
|
+
}
|
|
816
|
+
/**
|
|
817
|
+
* cleanupOldBackups - Remove backup files older than specified age
|
|
818
|
+
*
|
|
819
|
+
* Keeps the filesystem clean while maintaining recent backups
|
|
820
|
+
*/
|
|
821
|
+
export async function cleanupOldBackups(directory, maxAgeMs = 24 * 60 * 60 * 1000) {
|
|
822
|
+
let cleaned = 0;
|
|
823
|
+
try {
|
|
824
|
+
const files = await fs.readdir(directory);
|
|
825
|
+
const now = Date.now();
|
|
826
|
+
for (const file of files) {
|
|
827
|
+
if (file.includes('.backup.')) {
|
|
828
|
+
const filePath = path.join(directory, file);
|
|
829
|
+
try {
|
|
830
|
+
const stats = await fs.stat(filePath);
|
|
831
|
+
if (now - stats.mtimeMs > maxAgeMs) {
|
|
832
|
+
await fs.unlink(filePath);
|
|
833
|
+
cleaned++;
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
catch {
|
|
837
|
+
// Ignore individual file errors
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
if (cleaned > 0) {
|
|
842
|
+
logger.info({ directory, cleaned }, 'cleaned up old backup files');
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
catch (err) {
|
|
846
|
+
logger.debug({ err, directory }, 'failed to cleanup backups');
|
|
847
|
+
}
|
|
848
|
+
return cleaned;
|
|
849
|
+
}
|
|
850
|
+
//# sourceMappingURL=autoConfig.js.map
|