@blackbox_ai/blackbox-cli-core 0.0.4
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/LICENSE +203 -0
- package/README.md +420 -0
- package/dist/.last_build +0 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/src/__mocks__/fs/promises.d.ts +11 -0
- package/dist/src/__mocks__/fs/promises.js +17 -0
- package/dist/src/__mocks__/fs/promises.js.map +1 -0
- package/dist/src/blackbox/blackboxContentGenerator.d.ts +70 -0
- package/dist/src/blackbox/blackboxContentGenerator.js +180 -0
- package/dist/src/blackbox/blackboxContentGenerator.js.map +1 -0
- package/dist/src/blackbox/blackboxContentGenerator.test.d.ts +6 -0
- package/dist/src/blackbox/blackboxContentGenerator.test.js +1178 -0
- package/dist/src/blackbox/blackboxContentGenerator.test.js.map +1 -0
- package/dist/src/blackbox/blackboxOAuth2.d.ts +191 -0
- package/dist/src/blackbox/blackboxOAuth2.js +566 -0
- package/dist/src/blackbox/blackboxOAuth2.js.map +1 -0
- package/dist/src/blackbox/blackboxOAuth2.test.d.ts +6 -0
- package/dist/src/blackbox/blackboxOAuth2.test.js +1718 -0
- package/dist/src/blackbox/blackboxOAuth2.test.js.map +1 -0
- package/dist/src/blackbox/sharedTokenManager.d.ts +196 -0
- package/dist/src/blackbox/sharedTokenManager.js +647 -0
- package/dist/src/blackbox/sharedTokenManager.js.map +1 -0
- package/dist/src/blackbox/sharedTokenManager.test.d.ts +7 -0
- package/dist/src/blackbox/sharedTokenManager.test.js +662 -0
- package/dist/src/blackbox/sharedTokenManager.test.js.map +1 -0
- package/dist/src/code_assist/codeAssist.d.ts +10 -0
- package/dist/src/code_assist/codeAssist.js +19 -0
- package/dist/src/code_assist/codeAssist.js.map +1 -0
- package/dist/src/code_assist/converter.d.ts +72 -0
- package/dist/src/code_assist/converter.js +159 -0
- package/dist/src/code_assist/converter.js.map +1 -0
- package/dist/src/code_assist/converter.test.d.ts +6 -0
- package/dist/src/code_assist/converter.test.js +362 -0
- package/dist/src/code_assist/converter.test.js.map +1 -0
- package/dist/src/code_assist/oauth2.d.ts +22 -0
- package/dist/src/code_assist/oauth2.js +368 -0
- package/dist/src/code_assist/oauth2.js.map +1 -0
- package/dist/src/code_assist/oauth2.test.d.ts +6 -0
- package/dist/src/code_assist/oauth2.test.js +436 -0
- package/dist/src/code_assist/oauth2.test.js.map +1 -0
- package/dist/src/code_assist/server.d.ts +37 -0
- package/dist/src/code_assist/server.js +125 -0
- package/dist/src/code_assist/server.js.map +1 -0
- package/dist/src/code_assist/server.test.d.ts +6 -0
- package/dist/src/code_assist/server.test.js +134 -0
- package/dist/src/code_assist/server.test.js.map +1 -0
- package/dist/src/code_assist/setup.d.ts +20 -0
- package/dist/src/code_assist/setup.js +101 -0
- package/dist/src/code_assist/setup.js.map +1 -0
- package/dist/src/code_assist/setup.test.d.ts +6 -0
- package/dist/src/code_assist/setup.test.js +171 -0
- package/dist/src/code_assist/setup.test.js.map +1 -0
- package/dist/src/code_assist/types.d.ts +148 -0
- package/dist/src/code_assist/types.js +46 -0
- package/dist/src/code_assist/types.js.map +1 -0
- package/dist/src/config/blackboxModels.d.ts +28 -0
- package/dist/src/config/blackboxModels.js +148 -0
- package/dist/src/config/blackboxModels.js.map +1 -0
- package/dist/src/config/config.d.ts +381 -0
- package/dist/src/config/config.js +753 -0
- package/dist/src/config/config.js.map +1 -0
- package/dist/src/config/config.test.d.ts +6 -0
- package/dist/src/config/config.test.js +674 -0
- package/dist/src/config/config.test.js.map +1 -0
- package/dist/src/config/flashFallback.test.d.ts +6 -0
- package/dist/src/config/flashFallback.test.js +87 -0
- package/dist/src/config/flashFallback.test.js.map +1 -0
- package/dist/src/config/models.d.ts +12 -0
- package/dist/src/config/models.js +13 -0
- package/dist/src/config/models.js.map +1 -0
- package/dist/src/config/storage.d.ts +32 -0
- package/dist/src/config/storage.js +90 -0
- package/dist/src/config/storage.js.map +1 -0
- package/dist/src/config/storage.test.d.ts +6 -0
- package/dist/src/config/storage.test.js +43 -0
- package/dist/src/config/storage.test.js.map +1 -0
- package/dist/src/core/__tests__/openaiTimeoutHandling.test.d.ts +6 -0
- package/dist/src/core/__tests__/openaiTimeoutHandling.test.js +292 -0
- package/dist/src/core/__tests__/openaiTimeoutHandling.test.js.map +1 -0
- package/dist/src/core/__tests__/orphanedToolCallsTest.d.ts +64 -0
- package/dist/src/core/__tests__/orphanedToolCallsTest.js +122 -0
- package/dist/src/core/__tests__/orphanedToolCallsTest.js.map +1 -0
- package/dist/src/core/client.d.ts +75 -0
- package/dist/src/core/client.js +826 -0
- package/dist/src/core/client.js.map +1 -0
- package/dist/src/core/client.test.d.ts +6 -0
- package/dist/src/core/client.test.js +2059 -0
- package/dist/src/core/client.test.js.map +1 -0
- package/dist/src/core/contentGenerator.d.ts +51 -0
- package/dist/src/core/contentGenerator.js +149 -0
- package/dist/src/core/contentGenerator.js.map +1 -0
- package/dist/src/core/contentGenerator.test.d.ts +6 -0
- package/dist/src/core/contentGenerator.test.js +133 -0
- package/dist/src/core/contentGenerator.test.js.map +1 -0
- package/dist/src/core/coreToolScheduler.d.ts +126 -0
- package/dist/src/core/coreToolScheduler.js +630 -0
- package/dist/src/core/coreToolScheduler.js.map +1 -0
- package/dist/src/core/coreToolScheduler.test.d.ts +6 -0
- package/dist/src/core/coreToolScheduler.test.js +1228 -0
- package/dist/src/core/coreToolScheduler.test.js.map +1 -0
- package/dist/src/core/geminiChat.d.ts +139 -0
- package/dist/src/core/geminiChat.js +636 -0
- package/dist/src/core/geminiChat.js.map +1 -0
- package/dist/src/core/geminiChat.test.d.ts +6 -0
- package/dist/src/core/geminiChat.test.js +1178 -0
- package/dist/src/core/geminiChat.test.js.map +1 -0
- package/dist/src/core/geminiRequest.d.ts +13 -0
- package/dist/src/core/geminiRequest.js +11 -0
- package/dist/src/core/geminiRequest.js.map +1 -0
- package/dist/src/core/geminiRequest.test.d.ts +6 -0
- package/dist/src/core/geminiRequest.test.js +73 -0
- package/dist/src/core/geminiRequest.test.js.map +1 -0
- package/dist/src/core/logger.d.ts +68 -0
- package/dist/src/core/logger.js +370 -0
- package/dist/src/core/logger.js.map +1 -0
- package/dist/src/core/logger.test.d.ts +6 -0
- package/dist/src/core/logger.test.js +591 -0
- package/dist/src/core/logger.test.js.map +1 -0
- package/dist/src/core/loggingContentGenerator.d.ts +25 -0
- package/dist/src/core/loggingContentGenerator.js +97 -0
- package/dist/src/core/loggingContentGenerator.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.d.ts +10 -0
- package/dist/src/core/nonInteractiveToolExecutor.js +24 -0
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.test.d.ts +6 -0
- package/dist/src/core/nonInteractiveToolExecutor.test.js +236 -0
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/constants.d.ts +2 -0
- package/dist/src/core/openaiContentGenerator/constants.js +3 -0
- package/dist/src/core/openaiContentGenerator/constants.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/converter.d.ts +107 -0
- package/dist/src/core/openaiContentGenerator/converter.js +802 -0
- package/dist/src/core/openaiContentGenerator/converter.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/converter.test.d.ts +6 -0
- package/dist/src/core/openaiContentGenerator/converter.test.js +47 -0
- package/dist/src/core/openaiContentGenerator/converter.test.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/errorHandler.d.ts +20 -0
- package/dist/src/core/openaiContentGenerator/errorHandler.js +82 -0
- package/dist/src/core/openaiContentGenerator/errorHandler.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/errorHandler.test.d.ts +6 -0
- package/dist/src/core/openaiContentGenerator/errorHandler.test.js +287 -0
- package/dist/src/core/openaiContentGenerator/errorHandler.test.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/index.d.ts +22 -0
- package/dist/src/core/openaiContentGenerator/index.js +41 -0
- package/dist/src/core/openaiContentGenerator/index.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/openaiContentGenerator.d.ts +21 -0
- package/dist/src/core/openaiContentGenerator/openaiContentGenerator.js +105 -0
- package/dist/src/core/openaiContentGenerator/openaiContentGenerator.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/openaiContentGenerator.test.d.ts +6 -0
- package/dist/src/core/openaiContentGenerator/openaiContentGenerator.test.js +230 -0
- package/dist/src/core/openaiContentGenerator/openaiContentGenerator.test.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/pipeline.d.ts +66 -0
- package/dist/src/core/openaiContentGenerator/pipeline.js +256 -0
- package/dist/src/core/openaiContentGenerator/pipeline.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/pipeline.test.d.ts +6 -0
- package/dist/src/core/openaiContentGenerator/pipeline.test.js +977 -0
- package/dist/src/core/openaiContentGenerator/pipeline.test.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/provider/README.md +61 -0
- package/dist/src/core/openaiContentGenerator/provider/dashscope.d.ts +63 -0
- package/dist/src/core/openaiContentGenerator/provider/dashscope.js +241 -0
- package/dist/src/core/openaiContentGenerator/provider/dashscope.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/provider/dashscope.test.d.ts +6 -0
- package/dist/src/core/openaiContentGenerator/provider/dashscope.test.js +707 -0
- package/dist/src/core/openaiContentGenerator/provider/dashscope.test.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/provider/deepseek.d.ts +14 -0
- package/dist/src/core/openaiContentGenerator/provider/deepseek.js +52 -0
- package/dist/src/core/openaiContentGenerator/provider/deepseek.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/provider/deepseek.test.d.ts +6 -0
- package/dist/src/core/openaiContentGenerator/provider/deepseek.test.js +103 -0
- package/dist/src/core/openaiContentGenerator/provider/deepseek.test.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/provider/default.d.ts +15 -0
- package/dist/src/core/openaiContentGenerator/provider/default.js +38 -0
- package/dist/src/core/openaiContentGenerator/provider/default.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/provider/default.test.d.ts +6 -0
- package/dist/src/core/openaiContentGenerator/provider/default.test.js +176 -0
- package/dist/src/core/openaiContentGenerator/provider/default.test.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/provider/index.d.ts +5 -0
- package/dist/src/core/openaiContentGenerator/provider/index.js +5 -0
- package/dist/src/core/openaiContentGenerator/provider/index.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/provider/openrouter.d.ts +8 -0
- package/dist/src/core/openaiContentGenerator/provider/openrouter.js +21 -0
- package/dist/src/core/openaiContentGenerator/provider/openrouter.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/provider/openrouter.test.d.ts +6 -0
- package/dist/src/core/openaiContentGenerator/provider/openrouter.test.js +152 -0
- package/dist/src/core/openaiContentGenerator/provider/openrouter.test.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/provider/types.d.ts +23 -0
- package/dist/src/core/openaiContentGenerator/provider/types.js +2 -0
- package/dist/src/core/openaiContentGenerator/provider/types.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/streamingToolCallParser.d.ts +142 -0
- package/dist/src/core/openaiContentGenerator/streamingToolCallParser.js +363 -0
- package/dist/src/core/openaiContentGenerator/streamingToolCallParser.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/streamingToolCallParser.test.d.ts +6 -0
- package/dist/src/core/openaiContentGenerator/streamingToolCallParser.test.js +537 -0
- package/dist/src/core/openaiContentGenerator/streamingToolCallParser.test.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/telemetryService.d.ts +35 -0
- package/dist/src/core/openaiContentGenerator/telemetryService.js +146 -0
- package/dist/src/core/openaiContentGenerator/telemetryService.js.map +1 -0
- package/dist/src/core/openaiContentGenerator/telemetryService.test.d.ts +6 -0
- package/dist/src/core/openaiContentGenerator/telemetryService.test.js +978 -0
- package/dist/src/core/openaiContentGenerator/telemetryService.test.js.map +1 -0
- package/dist/src/core/prompts.d.ts +76 -0
- package/dist/src/core/prompts.js +860 -0
- package/dist/src/core/prompts.js.map +1 -0
- package/dist/src/core/prompts.test.d.ts +6 -0
- package/dist/src/core/prompts.test.js +436 -0
- package/dist/src/core/prompts.test.js.map +1 -0
- package/dist/src/core/tokenLimits.d.ts +25 -0
- package/dist/src/core/tokenLimits.js +175 -0
- package/dist/src/core/tokenLimits.js.map +1 -0
- package/dist/src/core/tokenLimits.test.d.ts +1 -0
- package/dist/src/core/tokenLimits.test.js +261 -0
- package/dist/src/core/tokenLimits.test.js.map +1 -0
- package/dist/src/core/turn.d.ts +140 -0
- package/dist/src/core/turn.js +168 -0
- package/dist/src/core/turn.js.map +1 -0
- package/dist/src/core/turn.test.d.ts +6 -0
- package/dist/src/core/turn.test.js +450 -0
- package/dist/src/core/turn.test.js.map +1 -0
- package/dist/src/generated/git-commit.d.ts +7 -0
- package/dist/src/generated/git-commit.js +10 -0
- package/dist/src/generated/git-commit.js.map +1 -0
- package/dist/src/ide/constants.d.ts +6 -0
- package/dist/src/ide/constants.js +7 -0
- package/dist/src/ide/constants.js.map +1 -0
- package/dist/src/ide/detect-ide.d.ts +25 -0
- package/dist/src/ide/detect-ide.js +104 -0
- package/dist/src/ide/detect-ide.js.map +1 -0
- package/dist/src/ide/detect-ide.test.d.ts +6 -0
- package/dist/src/ide/detect-ide.test.js +120 -0
- package/dist/src/ide/detect-ide.test.js.map +1 -0
- package/dist/src/ide/ide-client.d.ts +67 -0
- package/dist/src/ide/ide-client.js +424 -0
- package/dist/src/ide/ide-client.js.map +1 -0
- package/dist/src/ide/ide-client.test.d.ts +6 -0
- package/dist/src/ide/ide-client.test.js +165 -0
- package/dist/src/ide/ide-client.test.js.map +1 -0
- package/dist/src/ide/ide-installer.d.ts +14 -0
- package/dist/src/ide/ide-installer.js +107 -0
- package/dist/src/ide/ide-installer.js.map +1 -0
- package/dist/src/ide/ide-installer.test.d.ts +6 -0
- package/dist/src/ide/ide-installer.test.js +113 -0
- package/dist/src/ide/ide-installer.test.js.map +1 -0
- package/dist/src/ide/ideContext.d.ts +374 -0
- package/dist/src/ide/ideContext.js +147 -0
- package/dist/src/ide/ideContext.js.map +1 -0
- package/dist/src/ide/ideContext.test.d.ts +6 -0
- package/dist/src/ide/ideContext.test.js +265 -0
- package/dist/src/ide/ideContext.test.js.map +1 -0
- package/dist/src/ide/process-utils.d.ts +21 -0
- package/dist/src/ide/process-utils.js +164 -0
- package/dist/src/ide/process-utils.js.map +1 -0
- package/dist/src/ide/process-utils.test.d.ts +6 -0
- package/dist/src/ide/process-utils.test.js +158 -0
- package/dist/src/ide/process-utils.test.js.map +1 -0
- package/dist/src/index.d.ts +86 -0
- package/dist/src/index.js +97 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/index.test.d.ts +6 -0
- package/dist/src/index.test.js +12 -0
- package/dist/src/index.test.js.map +1 -0
- package/dist/src/mcp/google-auth-provider.d.ts +23 -0
- package/dist/src/mcp/google-auth-provider.js +72 -0
- package/dist/src/mcp/google-auth-provider.js.map +1 -0
- package/dist/src/mcp/google-auth-provider.test.d.ts +6 -0
- package/dist/src/mcp/google-auth-provider.test.js +89 -0
- package/dist/src/mcp/google-auth-provider.test.js.map +1 -0
- package/dist/src/mcp/oauth-provider.d.ts +146 -0
- package/dist/src/mcp/oauth-provider.js +601 -0
- package/dist/src/mcp/oauth-provider.js.map +1 -0
- package/dist/src/mcp/oauth-provider.test.d.ts +6 -0
- package/dist/src/mcp/oauth-provider.test.js +672 -0
- package/dist/src/mcp/oauth-provider.test.js.map +1 -0
- package/dist/src/mcp/oauth-token-storage.d.ts +61 -0
- package/dist/src/mcp/oauth-token-storage.js +148 -0
- package/dist/src/mcp/oauth-token-storage.js.map +1 -0
- package/dist/src/mcp/oauth-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/oauth-token-storage.test.js +208 -0
- package/dist/src/mcp/oauth-token-storage.test.js.map +1 -0
- package/dist/src/mcp/oauth-utils.d.ts +119 -0
- package/dist/src/mcp/oauth-utils.js +235 -0
- package/dist/src/mcp/oauth-utils.js.map +1 -0
- package/dist/src/mcp/oauth-utils.test.d.ts +6 -0
- package/dist/src/mcp/oauth-utils.test.js +199 -0
- package/dist/src/mcp/oauth-utils.test.js.map +1 -0
- package/dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
- package/dist/src/mcp/token-storage/base-token-storage.js +36 -0
- package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/base-token-storage.test.d.ts +6 -0
- package/dist/src/mcp/token-storage/base-token-storage.test.js +160 -0
- package/dist/src/mcp/token-storage/base-token-storage.test.js.map +1 -0
- package/dist/src/mcp/token-storage/types.d.ts +34 -0
- package/dist/src/mcp/token-storage/types.js +7 -0
- package/dist/src/mcp/token-storage/types.js.map +1 -0
- package/dist/src/mocks/msw.d.ts +6 -0
- package/dist/src/mocks/msw.js +8 -0
- package/dist/src/mocks/msw.js.map +1 -0
- package/dist/src/prompts/mcp-prompts.d.ts +8 -0
- package/dist/src/prompts/mcp-prompts.js +13 -0
- package/dist/src/prompts/mcp-prompts.js.map +1 -0
- package/dist/src/prompts/prompt-registry.d.ts +34 -0
- package/dist/src/prompts/prompt-registry.js +63 -0
- package/dist/src/prompts/prompt-registry.js.map +1 -0
- package/dist/src/services/chatRecordingService.d.ts +150 -0
- package/dist/src/services/chatRecordingService.js +321 -0
- package/dist/src/services/chatRecordingService.js.map +1 -0
- package/dist/src/services/chatRecordingService.test.d.ts +6 -0
- package/dist/src/services/chatRecordingService.test.js +290 -0
- package/dist/src/services/chatRecordingService.test.js.map +1 -0
- package/dist/src/services/fileDiscoveryService.d.ts +35 -0
- package/dist/src/services/fileDiscoveryService.js +91 -0
- package/dist/src/services/fileDiscoveryService.js.map +1 -0
- package/dist/src/services/fileDiscoveryService.test.d.ts +6 -0
- package/dist/src/services/fileDiscoveryService.test.js +143 -0
- package/dist/src/services/fileDiscoveryService.test.js.map +1 -0
- package/dist/src/services/fileSystemService.d.ts +31 -0
- package/dist/src/services/fileSystemService.js +18 -0
- package/dist/src/services/fileSystemService.js.map +1 -0
- package/dist/src/services/fileSystemService.test.d.ts +6 -0
- package/dist/src/services/fileSystemService.test.js +41 -0
- package/dist/src/services/fileSystemService.test.js.map +1 -0
- package/dist/src/services/gitService.d.ts +23 -0
- package/dist/src/services/gitService.js +110 -0
- package/dist/src/services/gitService.js.map +1 -0
- package/dist/src/services/gitService.test.d.ts +6 -0
- package/dist/src/services/gitService.test.js +212 -0
- package/dist/src/services/gitService.test.js.map +1 -0
- package/dist/src/services/loopDetectionService.d.ts +98 -0
- package/dist/src/services/loopDetectionService.js +363 -0
- package/dist/src/services/loopDetectionService.js.map +1 -0
- package/dist/src/services/loopDetectionService.test.d.ts +6 -0
- package/dist/src/services/loopDetectionService.test.js +560 -0
- package/dist/src/services/loopDetectionService.test.js.map +1 -0
- package/dist/src/services/shellExecutionService.d.ts +68 -0
- package/dist/src/services/shellExecutionService.js +332 -0
- package/dist/src/services/shellExecutionService.js.map +1 -0
- package/dist/src/services/shellExecutionService.test.d.ts +6 -0
- package/dist/src/services/shellExecutionService.test.js +517 -0
- package/dist/src/services/shellExecutionService.test.js.map +1 -0
- package/dist/src/subagents/builtin-agents.d.ts +35 -0
- package/dist/src/subagents/builtin-agents.js +85 -0
- package/dist/src/subagents/builtin-agents.js.map +1 -0
- package/dist/src/subagents/builtin-agents.test.d.ts +6 -0
- package/dist/src/subagents/builtin-agents.test.js +78 -0
- package/dist/src/subagents/builtin-agents.test.js.map +1 -0
- package/dist/src/subagents/index.d.ts +29 -0
- package/dist/src/subagents/index.js +15 -0
- package/dist/src/subagents/index.js.map +1 -0
- package/dist/src/subagents/subagent-events.d.ts +93 -0
- package/dist/src/subagents/subagent-events.js +31 -0
- package/dist/src/subagents/subagent-events.js.map +1 -0
- package/dist/src/subagents/subagent-hooks.d.ts +29 -0
- package/dist/src/subagents/subagent-hooks.js +7 -0
- package/dist/src/subagents/subagent-hooks.js.map +1 -0
- package/dist/src/subagents/subagent-manager.d.ts +170 -0
- package/dist/src/subagents/subagent-manager.js +593 -0
- package/dist/src/subagents/subagent-manager.js.map +1 -0
- package/dist/src/subagents/subagent-manager.test.d.ts +6 -0
- package/dist/src/subagents/subagent-manager.test.js +822 -0
- package/dist/src/subagents/subagent-manager.test.js.map +1 -0
- package/dist/src/subagents/subagent-statistics.d.ts +46 -0
- package/dist/src/subagents/subagent-statistics.js +193 -0
- package/dist/src/subagents/subagent-statistics.js.map +1 -0
- package/dist/src/subagents/subagent-statistics.test.d.ts +6 -0
- package/dist/src/subagents/subagent-statistics.test.js +231 -0
- package/dist/src/subagents/subagent-statistics.test.js.map +1 -0
- package/dist/src/subagents/subagent.d.ts +161 -0
- package/dist/src/subagents/subagent.js +667 -0
- package/dist/src/subagents/subagent.js.map +1 -0
- package/dist/src/subagents/subagent.test.d.ts +6 -0
- package/dist/src/subagents/subagent.test.js +487 -0
- package/dist/src/subagents/subagent.test.js.map +1 -0
- package/dist/src/subagents/types.d.ts +218 -0
- package/dist/src/subagents/types.js +58 -0
- package/dist/src/subagents/types.js.map +1 -0
- package/dist/src/subagents/types.test.d.ts +6 -0
- package/dist/src/subagents/types.test.js +31 -0
- package/dist/src/subagents/types.test.js.map +1 -0
- package/dist/src/subagents/validation.d.ts +63 -0
- package/dist/src/subagents/validation.js +293 -0
- package/dist/src/subagents/validation.js.map +1 -0
- package/dist/src/subagents/validation.test.d.ts +6 -0
- package/dist/src/subagents/validation.test.js +330 -0
- package/dist/src/subagents/validation.test.js.map +1 -0
- package/dist/src/telemetry/blackbox-logger/blackbox-logger.d.ts +80 -0
- package/dist/src/telemetry/blackbox-logger/blackbox-logger.js +583 -0
- package/dist/src/telemetry/blackbox-logger/blackbox-logger.js.map +1 -0
- package/dist/src/telemetry/blackbox-logger/blackbox-logger.test.d.ts +6 -0
- package/dist/src/telemetry/blackbox-logger/blackbox-logger.test.js +301 -0
- package/dist/src/telemetry/blackbox-logger/blackbox-logger.test.js.map +1 -0
- package/dist/src/telemetry/blackbox-logger/event-types.d.ts +73 -0
- package/dist/src/telemetry/blackbox-logger/event-types.js +2 -0
- package/dist/src/telemetry/blackbox-logger/event-types.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +121 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +773 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +17 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +420 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +90 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +229 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -0
- package/dist/src/telemetry/constants.d.ts +34 -0
- package/dist/src/telemetry/constants.js +35 -0
- package/dist/src/telemetry/constants.js.map +1 -0
- package/dist/src/telemetry/file-exporters.d.ts +29 -0
- package/dist/src/telemetry/file-exporters.js +62 -0
- package/dist/src/telemetry/file-exporters.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +20 -0
- package/dist/src/telemetry/index.js +21 -0
- package/dist/src/telemetry/index.js.map +1 -0
- package/dist/src/telemetry/integration.test.circular.d.ts +6 -0
- package/dist/src/telemetry/integration.test.circular.js +95 -0
- package/dist/src/telemetry/integration.test.circular.js.map +1 -0
- package/dist/src/telemetry/loggers.d.ts +26 -0
- package/dist/src/telemetry/loggers.js +406 -0
- package/dist/src/telemetry/loggers.js.map +1 -0
- package/dist/src/telemetry/loggers.test.circular.d.ts +6 -0
- package/dist/src/telemetry/loggers.test.circular.js +107 -0
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -0
- package/dist/src/telemetry/loggers.test.d.ts +6 -0
- package/dist/src/telemetry/loggers.test.js +638 -0
- package/dist/src/telemetry/loggers.test.js.map +1 -0
- package/dist/src/telemetry/metrics.d.ts +40 -0
- package/dist/src/telemetry/metrics.js +229 -0
- package/dist/src/telemetry/metrics.js.map +1 -0
- package/dist/src/telemetry/metrics.test.d.ts +6 -0
- package/dist/src/telemetry/metrics.test.js +242 -0
- package/dist/src/telemetry/metrics.test.js.map +1 -0
- package/dist/src/telemetry/sdk.d.ts +9 -0
- package/dist/src/telemetry/sdk.js +161 -0
- package/dist/src/telemetry/sdk.js.map +1 -0
- package/dist/src/telemetry/sdk.test.d.ts +6 -0
- package/dist/src/telemetry/sdk.test.js +82 -0
- package/dist/src/telemetry/sdk.test.js.map +1 -0
- package/dist/src/telemetry/telemetry-utils.d.ts +6 -0
- package/dist/src/telemetry/telemetry-utils.js +14 -0
- package/dist/src/telemetry/telemetry-utils.js.map +1 -0
- package/dist/src/telemetry/telemetry-utils.test.d.ts +6 -0
- package/dist/src/telemetry/telemetry-utils.test.js +40 -0
- package/dist/src/telemetry/telemetry-utils.test.js.map +1 -0
- package/dist/src/telemetry/telemetry.test.d.ts +6 -0
- package/dist/src/telemetry/telemetry.test.js +50 -0
- package/dist/src/telemetry/telemetry.test.js.map +1 -0
- package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
- package/dist/src/telemetry/tool-call-decision.js +29 -0
- package/dist/src/telemetry/tool-call-decision.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +236 -0
- package/dist/src/telemetry/types.js +405 -0
- package/dist/src/telemetry/types.js.map +1 -0
- package/dist/src/telemetry/uiTelemetry.d.ts +75 -0
- package/dist/src/telemetry/uiTelemetry.js +153 -0
- package/dist/src/telemetry/uiTelemetry.js.map +1 -0
- package/dist/src/telemetry/uiTelemetry.test.d.ts +6 -0
- package/dist/src/telemetry/uiTelemetry.test.js +558 -0
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -0
- package/dist/src/test-utils/config.d.ts +17 -0
- package/dist/src/test-utils/config.js +32 -0
- package/dist/src/test-utils/config.js.map +1 -0
- package/dist/src/test-utils/mockWorkspaceContext.d.ts +13 -0
- package/dist/src/test-utils/mockWorkspaceContext.js +24 -0
- package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -0
- package/dist/src/test-utils/tools.d.ts +45 -0
- package/dist/src/test-utils/tools.js +105 -0
- package/dist/src/test-utils/tools.js.map +1 -0
- package/dist/src/tools/diffOptions.d.ts +9 -0
- package/dist/src/tools/diffOptions.js +38 -0
- package/dist/src/tools/diffOptions.js.map +1 -0
- package/dist/src/tools/diffOptions.test.d.ts +6 -0
- package/dist/src/tools/diffOptions.test.js +119 -0
- package/dist/src/tools/diffOptions.test.js.map +1 -0
- package/dist/src/tools/edit.d.ts +56 -0
- package/dist/src/tools/edit.js +434 -0
- package/dist/src/tools/edit.js.map +1 -0
- package/dist/src/tools/edit.test.d.ts +6 -0
- package/dist/src/tools/edit.test.js +569 -0
- package/dist/src/tools/edit.test.js.map +1 -0
- package/dist/src/tools/exitPlanMode.d.ts +28 -0
- package/dist/src/tools/exitPlanMode.js +137 -0
- package/dist/src/tools/exitPlanMode.js.map +1 -0
- package/dist/src/tools/exitPlanMode.test.d.ts +6 -0
- package/dist/src/tools/exitPlanMode.test.js +219 -0
- package/dist/src/tools/exitPlanMode.test.js.map +1 -0
- package/dist/src/tools/glob.d.ts +52 -0
- package/dist/src/tools/glob.js +237 -0
- package/dist/src/tools/glob.js.map +1 -0
- package/dist/src/tools/glob.test.d.ts +6 -0
- package/dist/src/tools/glob.test.js +375 -0
- package/dist/src/tools/glob.test.js.map +1 -0
- package/dist/src/tools/grep.d.ts +51 -0
- package/dist/src/tools/grep.js +566 -0
- package/dist/src/tools/grep.js.map +1 -0
- package/dist/src/tools/grep.test.d.ts +6 -0
- package/dist/src/tools/grep.test.js +356 -0
- package/dist/src/tools/grep.test.js.map +1 -0
- package/dist/src/tools/ls.d.ts +68 -0
- package/dist/src/tools/ls.js +227 -0
- package/dist/src/tools/ls.js.map +1 -0
- package/dist/src/tools/ls.test.d.ts +6 -0
- package/dist/src/tools/ls.test.js +389 -0
- package/dist/src/tools/ls.test.js.map +1 -0
- package/dist/src/tools/mcp-client-manager.d.ts +38 -0
- package/dist/src/tools/mcp-client-manager.js +74 -0
- package/dist/src/tools/mcp-client-manager.js.map +1 -0
- package/dist/src/tools/mcp-client-manager.test.d.ts +6 -0
- package/dist/src/tools/mcp-client-manager.test.js +39 -0
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -0
- package/dist/src/tools/mcp-client.d.ts +199 -0
- package/dist/src/tools/mcp-client.js +995 -0
- package/dist/src/tools/mcp-client.js.map +1 -0
- package/dist/src/tools/mcp-client.test.d.ts +6 -0
- package/dist/src/tools/mcp-client.test.js +454 -0
- package/dist/src/tools/mcp-client.test.js.map +1 -0
- package/dist/src/tools/mcp-tool.d.ts +23 -0
- package/dist/src/tools/mcp-tool.js +240 -0
- package/dist/src/tools/mcp-tool.js.map +1 -0
- package/dist/src/tools/mcp-tool.test.d.ts +6 -0
- package/dist/src/tools/mcp-tool.test.js +576 -0
- package/dist/src/tools/mcp-tool.test.js.map +1 -0
- package/dist/src/tools/memoryTool.d.ts +41 -0
- package/dist/src/tools/memoryTool.js +435 -0
- package/dist/src/tools/memoryTool.js.map +1 -0
- package/dist/src/tools/memoryTool.test.d.ts +6 -0
- package/dist/src/tools/memoryTool.test.js +420 -0
- package/dist/src/tools/memoryTool.test.js.map +1 -0
- package/dist/src/tools/modifiable-tool.d.ts +32 -0
- package/dist/src/tools/modifiable-tool.js +88 -0
- package/dist/src/tools/modifiable-tool.js.map +1 -0
- package/dist/src/tools/modifiable-tool.test.d.ts +6 -0
- package/dist/src/tools/modifiable-tool.test.js +193 -0
- package/dist/src/tools/modifiable-tool.test.js.map +1 -0
- package/dist/src/tools/read-file.d.ts +35 -0
- package/dist/src/tools/read-file.js +128 -0
- package/dist/src/tools/read-file.js.map +1 -0
- package/dist/src/tools/read-file.test.d.ts +6 -0
- package/dist/src/tools/read-file.test.js +311 -0
- package/dist/src/tools/read-file.test.js.map +1 -0
- package/dist/src/tools/read-many-files.d.ts +60 -0
- package/dist/src/tools/read-many-files.js +416 -0
- package/dist/src/tools/read-many-files.js.map +1 -0
- package/dist/src/tools/read-many-files.test.d.ts +6 -0
- package/dist/src/tools/read-many-files.test.js +565 -0
- package/dist/src/tools/read-many-files.test.js.map +1 -0
- package/dist/src/tools/ripGrep.d.ts +47 -0
- package/dist/src/tools/ripGrep.js +375 -0
- package/dist/src/tools/ripGrep.js.map +1 -0
- package/dist/src/tools/ripGrep.test.d.ts +6 -0
- package/dist/src/tools/ripGrep.test.js +874 -0
- package/dist/src/tools/ripGrep.test.js.map +1 -0
- package/dist/src/tools/shell.d.ts +23 -0
- package/dist/src/tools/shell.js +387 -0
- package/dist/src/tools/shell.js.map +1 -0
- package/dist/src/tools/shell.test.d.ts +6 -0
- package/dist/src/tools/shell.test.js +632 -0
- package/dist/src/tools/shell.test.js.map +1 -0
- package/dist/src/tools/task.d.ts +59 -0
- package/dist/src/tools/task.js +412 -0
- package/dist/src/tools/task.js.map +1 -0
- package/dist/src/tools/task.test.d.ts +6 -0
- package/dist/src/tools/task.test.js +369 -0
- package/dist/src/tools/task.test.js.map +1 -0
- package/dist/src/tools/todoWrite.d.ts +42 -0
- package/dist/src/tools/todoWrite.js +385 -0
- package/dist/src/tools/todoWrite.js.map +1 -0
- package/dist/src/tools/todoWrite.test.d.ts +6 -0
- package/dist/src/tools/todoWrite.test.js +222 -0
- package/dist/src/tools/todoWrite.test.js.map +1 -0
- package/dist/src/tools/tool-error.d.ts +43 -0
- package/dist/src/tools/tool-error.js +58 -0
- package/dist/src/tools/tool-error.js.map +1 -0
- package/dist/src/tools/tool-names.d.ts +23 -0
- package/dist/src/tools/tool-names.js +24 -0
- package/dist/src/tools/tool-names.js.map +1 -0
- package/dist/src/tools/tool-registry.d.ts +86 -0
- package/dist/src/tools/tool-registry.js +369 -0
- package/dist/src/tools/tool-registry.js.map +1 -0
- package/dist/src/tools/tool-registry.test.d.ts +6 -0
- package/dist/src/tools/tool-registry.test.js +332 -0
- package/dist/src/tools/tool-registry.test.js.map +1 -0
- package/dist/src/tools/tools.d.ts +316 -0
- package/dist/src/tools/tools.js +251 -0
- package/dist/src/tools/tools.js.map +1 -0
- package/dist/src/tools/tools.test.d.ts +6 -0
- package/dist/src/tools/tools.test.js +205 -0
- package/dist/src/tools/tools.test.js.map +1 -0
- package/dist/src/tools/web-fetch.d.ts +31 -0
- package/dist/src/tools/web-fetch.js +161 -0
- package/dist/src/tools/web-fetch.js.map +1 -0
- package/dist/src/tools/web-fetch.test.d.ts +6 -0
- package/dist/src/tools/web-fetch.test.js +133 -0
- package/dist/src/tools/web-fetch.test.js.map +1 -0
- package/dist/src/tools/web-search.d.ts +40 -0
- package/dist/src/tools/web-search.js +134 -0
- package/dist/src/tools/web-search.js.map +1 -0
- package/dist/src/tools/web-search.test.d.ts +6 -0
- package/dist/src/tools/web-search.test.js +125 -0
- package/dist/src/tools/web-search.test.js.map +1 -0
- package/dist/src/tools/write-file.d.ts +52 -0
- package/dist/src/tools/write-file.js +298 -0
- package/dist/src/tools/write-file.js.map +1 -0
- package/dist/src/tools/write-file.test.d.ts +6 -0
- package/dist/src/tools/write-file.test.js +436 -0
- package/dist/src/tools/write-file.test.js.map +1 -0
- package/dist/src/utils/LruCache.d.ts +13 -0
- package/dist/src/utils/LruCache.js +38 -0
- package/dist/src/utils/LruCache.js.map +1 -0
- package/dist/src/utils/bfsFileSearch.d.ts +24 -0
- package/dist/src/utils/bfsFileSearch.js +89 -0
- package/dist/src/utils/bfsFileSearch.js.map +1 -0
- package/dist/src/utils/bfsFileSearch.test.d.ts +6 -0
- package/dist/src/utils/bfsFileSearch.test.js +163 -0
- package/dist/src/utils/bfsFileSearch.test.js.map +1 -0
- package/dist/src/utils/browser.d.ts +13 -0
- package/dist/src/utils/browser.js +50 -0
- package/dist/src/utils/browser.js.map +1 -0
- package/dist/src/utils/editor.d.ts +28 -0
- package/dist/src/utils/editor.js +186 -0
- package/dist/src/utils/editor.js.map +1 -0
- package/dist/src/utils/editor.test.d.ts +6 -0
- package/dist/src/utils/editor.test.js +445 -0
- package/dist/src/utils/editor.test.js.map +1 -0
- package/dist/src/utils/environmentContext.d.ts +21 -0
- package/dist/src/utils/environmentContext.js +90 -0
- package/dist/src/utils/environmentContext.js.map +1 -0
- package/dist/src/utils/environmentContext.test.d.ts +6 -0
- package/dist/src/utils/environmentContext.test.js +148 -0
- package/dist/src/utils/environmentContext.test.js.map +1 -0
- package/dist/src/utils/errorParsing.d.ts +8 -0
- package/dist/src/utils/errorParsing.js +93 -0
- package/dist/src/utils/errorParsing.js.map +1 -0
- package/dist/src/utils/errorParsing.test.d.ts +6 -0
- package/dist/src/utils/errorParsing.test.js +172 -0
- package/dist/src/utils/errorParsing.test.js.map +1 -0
- package/dist/src/utils/errorReporting.d.ts +14 -0
- package/dist/src/utils/errorReporting.js +88 -0
- package/dist/src/utils/errorReporting.js.map +1 -0
- package/dist/src/utils/errorReporting.test.d.ts +6 -0
- package/dist/src/utils/errorReporting.test.js +130 -0
- package/dist/src/utils/errorReporting.test.js.map +1 -0
- package/dist/src/utils/errors.d.ts +33 -0
- package/dist/src/utils/errors.js +86 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/fetch.d.ts +11 -0
- package/dist/src/utils/fetch.js +51 -0
- package/dist/src/utils/fetch.js.map +1 -0
- package/dist/src/utils/fileUtils.d.ts +53 -0
- package/dist/src/utils/fileUtils.js +283 -0
- package/dist/src/utils/fileUtils.js.map +1 -0
- package/dist/src/utils/fileUtils.test.d.ts +6 -0
- package/dist/src/utils/fileUtils.test.js +364 -0
- package/dist/src/utils/fileUtils.test.js.map +1 -0
- package/dist/src/utils/filesearch/crawlCache.d.ts +25 -0
- package/dist/src/utils/filesearch/crawlCache.js +57 -0
- package/dist/src/utils/filesearch/crawlCache.js.map +1 -0
- package/dist/src/utils/filesearch/crawlCache.test.d.ts +6 -0
- package/dist/src/utils/filesearch/crawlCache.test.js +103 -0
- package/dist/src/utils/filesearch/crawlCache.test.js.map +1 -0
- package/dist/src/utils/filesearch/crawler.d.ts +15 -0
- package/dist/src/utils/filesearch/crawler.js +50 -0
- package/dist/src/utils/filesearch/crawler.js.map +1 -0
- package/dist/src/utils/filesearch/crawler.test.d.ts +6 -0
- package/dist/src/utils/filesearch/crawler.test.js +468 -0
- package/dist/src/utils/filesearch/crawler.test.js.map +1 -0
- package/dist/src/utils/filesearch/fileSearch.d.ts +38 -0
- package/dist/src/utils/filesearch/fileSearch.js +191 -0
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -0
- package/dist/src/utils/filesearch/fileSearch.test.d.ts +6 -0
- package/dist/src/utils/filesearch/fileSearch.test.js +642 -0
- package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -0
- package/dist/src/utils/filesearch/ignore.d.ts +42 -0
- package/dist/src/utils/filesearch/ignore.js +106 -0
- package/dist/src/utils/filesearch/ignore.js.map +1 -0
- package/dist/src/utils/filesearch/ignore.test.d.ts +6 -0
- package/dist/src/utils/filesearch/ignore.test.js +144 -0
- package/dist/src/utils/filesearch/ignore.test.js.map +1 -0
- package/dist/src/utils/filesearch/result-cache.d.ts +33 -0
- package/dist/src/utils/filesearch/result-cache.js +59 -0
- package/dist/src/utils/filesearch/result-cache.js.map +1 -0
- package/dist/src/utils/filesearch/result-cache.test.d.ts +6 -0
- package/dist/src/utils/filesearch/result-cache.test.js +46 -0
- package/dist/src/utils/filesearch/result-cache.test.js.map +1 -0
- package/dist/src/utils/flashFallback.integration.test.d.ts +6 -0
- package/dist/src/utils/flashFallback.integration.test.js +119 -0
- package/dist/src/utils/flashFallback.integration.test.js.map +1 -0
- package/dist/src/utils/formatters.d.ts +6 -0
- package/dist/src/utils/formatters.js +16 -0
- package/dist/src/utils/formatters.js.map +1 -0
- package/dist/src/utils/generateContentResponseUtilities.d.ts +13 -0
- package/dist/src/utils/generateContentResponseUtilities.js +80 -0
- package/dist/src/utils/generateContentResponseUtilities.js.map +1 -0
- package/dist/src/utils/generateContentResponseUtilities.test.d.ts +6 -0
- package/dist/src/utils/generateContentResponseUtilities.test.js +235 -0
- package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -0
- package/dist/src/utils/getFolderStructure.d.ts +31 -0
- package/dist/src/utils/getFolderStructure.js +246 -0
- package/dist/src/utils/getFolderStructure.js.map +1 -0
- package/dist/src/utils/getFolderStructure.test.d.ts +6 -0
- package/dist/src/utils/getFolderStructure.test.js +282 -0
- package/dist/src/utils/getFolderStructure.test.js.map +1 -0
- package/dist/src/utils/getPty.d.ts +19 -0
- package/dist/src/utils/getPty.js +23 -0
- package/dist/src/utils/getPty.js.map +1 -0
- package/dist/src/utils/gitIgnoreParser.d.ts +20 -0
- package/dist/src/utils/gitIgnoreParser.js +61 -0
- package/dist/src/utils/gitIgnoreParser.js.map +1 -0
- package/dist/src/utils/gitIgnoreParser.test.d.ts +6 -0
- package/dist/src/utils/gitIgnoreParser.test.js +154 -0
- package/dist/src/utils/gitIgnoreParser.test.js.map +1 -0
- package/dist/src/utils/gitUtils.d.ts +17 -0
- package/dist/src/utils/gitUtils.js +61 -0
- package/dist/src/utils/gitUtils.js.map +1 -0
- package/dist/src/utils/ignorePatterns.d.ts +103 -0
- package/dist/src/utils/ignorePatterns.js +220 -0
- package/dist/src/utils/ignorePatterns.js.map +1 -0
- package/dist/src/utils/ignorePatterns.test.d.ts +6 -0
- package/dist/src/utils/ignorePatterns.test.js +250 -0
- package/dist/src/utils/ignorePatterns.test.js.map +1 -0
- package/dist/src/utils/installationManager.d.ts +16 -0
- package/dist/src/utils/installationManager.js +50 -0
- package/dist/src/utils/installationManager.js.map +1 -0
- package/dist/src/utils/installationManager.test.d.ts +6 -0
- package/dist/src/utils/installationManager.test.js +83 -0
- package/dist/src/utils/installationManager.test.js.map +1 -0
- package/dist/src/utils/language-detection.d.ts +6 -0
- package/dist/src/utils/language-detection.js +101 -0
- package/dist/src/utils/language-detection.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +15 -0
- package/dist/src/utils/memoryDiscovery.js +271 -0
- package/dist/src/utils/memoryDiscovery.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.test.d.ts +6 -0
- package/dist/src/utils/memoryDiscovery.test.js +219 -0
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -0
- package/dist/src/utils/memoryImportProcessor.d.ts +42 -0
- package/dist/src/utils/memoryImportProcessor.js +296 -0
- package/dist/src/utils/memoryImportProcessor.js.map +1 -0
- package/dist/src/utils/memoryImportProcessor.test.d.ts +6 -0
- package/dist/src/utils/memoryImportProcessor.test.js +573 -0
- package/dist/src/utils/memoryImportProcessor.test.js.map +1 -0
- package/dist/src/utils/messageInspectors.d.ts +8 -0
- package/dist/src/utils/messageInspectors.js +16 -0
- package/dist/src/utils/messageInspectors.js.map +1 -0
- package/dist/src/utils/nextSpeakerChecker.d.ts +12 -0
- package/dist/src/utils/nextSpeakerChecker.js +91 -0
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -0
- package/dist/src/utils/nextSpeakerChecker.test.d.ts +6 -0
- package/dist/src/utils/nextSpeakerChecker.test.js +168 -0
- package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -0
- package/dist/src/utils/openaiLogger.d.ts +42 -0
- package/dist/src/utils/openaiLogger.js +123 -0
- package/dist/src/utils/openaiLogger.js.map +1 -0
- package/dist/src/utils/partUtils.d.ts +35 -0
- package/dist/src/utils/partUtils.js +133 -0
- package/dist/src/utils/partUtils.js.map +1 -0
- package/dist/src/utils/partUtils.test.d.ts +6 -0
- package/dist/src/utils/partUtils.test.js +241 -0
- package/dist/src/utils/partUtils.test.js.map +1 -0
- package/dist/src/utils/pathReader.d.ts +17 -0
- package/dist/src/utils/pathReader.js +92 -0
- package/dist/src/utils/pathReader.js.map +1 -0
- package/dist/src/utils/pathReader.test.d.ts +6 -0
- package/dist/src/utils/pathReader.test.js +363 -0
- package/dist/src/utils/pathReader.test.js.map +1 -0
- package/dist/src/utils/paths.d.ts +58 -0
- package/dist/src/utils/paths.js +159 -0
- package/dist/src/utils/paths.js.map +1 -0
- package/dist/src/utils/paths.test.d.ts +6 -0
- package/dist/src/utils/paths.test.js +225 -0
- package/dist/src/utils/paths.test.js.map +1 -0
- package/dist/src/utils/projectSummary.d.ts +22 -0
- package/dist/src/utils/projectSummary.js +86 -0
- package/dist/src/utils/projectSummary.js.map +1 -0
- package/dist/src/utils/quotaErrorDetection.d.ts +20 -0
- package/dist/src/utils/quotaErrorDetection.js +114 -0
- package/dist/src/utils/quotaErrorDetection.js.map +1 -0
- package/dist/src/utils/quotaErrorDetection.test.d.ts +6 -0
- package/dist/src/utils/quotaErrorDetection.test.js +153 -0
- package/dist/src/utils/quotaErrorDetection.test.js.map +1 -0
- package/dist/src/utils/request-tokenizer/imageTokenizer.d.ts +112 -0
- package/dist/src/utils/request-tokenizer/imageTokenizer.js +401 -0
- package/dist/src/utils/request-tokenizer/imageTokenizer.js.map +1 -0
- package/dist/src/utils/request-tokenizer/imageTokenizer.test.d.ts +6 -0
- package/dist/src/utils/request-tokenizer/imageTokenizer.test.js +114 -0
- package/dist/src/utils/request-tokenizer/imageTokenizer.test.js.map +1 -0
- package/dist/src/utils/request-tokenizer/index.d.ts +18 -0
- package/dist/src/utils/request-tokenizer/index.js +30 -0
- package/dist/src/utils/request-tokenizer/index.js.map +1 -0
- package/dist/src/utils/request-tokenizer/requestTokenizer.d.ts +56 -0
- package/dist/src/utils/request-tokenizer/requestTokenizer.js +263 -0
- package/dist/src/utils/request-tokenizer/requestTokenizer.js.map +1 -0
- package/dist/src/utils/request-tokenizer/requestTokenizer.test.d.ts +6 -0
- package/dist/src/utils/request-tokenizer/requestTokenizer.test.js +245 -0
- package/dist/src/utils/request-tokenizer/requestTokenizer.test.js.map +1 -0
- package/dist/src/utils/request-tokenizer/supportedImageFormats.d.ts +30 -0
- package/dist/src/utils/request-tokenizer/supportedImageFormats.js +41 -0
- package/dist/src/utils/request-tokenizer/supportedImageFormats.js.map +1 -0
- package/dist/src/utils/request-tokenizer/textTokenizer.d.ts +29 -0
- package/dist/src/utils/request-tokenizer/textTokenizer.js +88 -0
- package/dist/src/utils/request-tokenizer/textTokenizer.js.map +1 -0
- package/dist/src/utils/request-tokenizer/textTokenizer.test.d.ts +6 -0
- package/dist/src/utils/request-tokenizer/textTokenizer.test.js +253 -0
- package/dist/src/utils/request-tokenizer/textTokenizer.test.js.map +1 -0
- package/dist/src/utils/request-tokenizer/types.d.ts +55 -0
- package/dist/src/utils/request-tokenizer/types.js +7 -0
- package/dist/src/utils/request-tokenizer/types.js.map +1 -0
- package/dist/src/utils/retry.d.ts +30 -0
- package/dist/src/utils/retry.js +288 -0
- package/dist/src/utils/retry.js.map +1 -0
- package/dist/src/utils/retry.test.d.ts +6 -0
- package/dist/src/utils/retry.test.js +452 -0
- package/dist/src/utils/retry.test.js.map +1 -0
- package/dist/src/utils/safeJsonParse.d.ts +15 -0
- package/dist/src/utils/safeJsonParse.js +41 -0
- package/dist/src/utils/safeJsonParse.js.map +1 -0
- package/dist/src/utils/safeJsonParse.test.d.ts +6 -0
- package/dist/src/utils/safeJsonParse.test.js +112 -0
- package/dist/src/utils/safeJsonParse.test.js.map +1 -0
- package/dist/src/utils/safeJsonStringify.d.ts +13 -0
- package/dist/src/utils/safeJsonStringify.js +25 -0
- package/dist/src/utils/safeJsonStringify.js.map +1 -0
- package/dist/src/utils/safeJsonStringify.test.d.ts +6 -0
- package/dist/src/utils/safeJsonStringify.test.js +61 -0
- package/dist/src/utils/safeJsonStringify.test.js.map +1 -0
- package/dist/src/utils/schemaValidator.d.ts +15 -0
- package/dist/src/utils/schemaValidator.js +57 -0
- package/dist/src/utils/schemaValidator.js.map +1 -0
- package/dist/src/utils/secure-browser-launcher.d.ts +23 -0
- package/dist/src/utils/secure-browser-launcher.js +165 -0
- package/dist/src/utils/secure-browser-launcher.js.map +1 -0
- package/dist/src/utils/secure-browser-launcher.test.d.ts +6 -0
- package/dist/src/utils/secure-browser-launcher.test.js +149 -0
- package/dist/src/utils/secure-browser-launcher.test.js.map +1 -0
- package/dist/src/utils/session.d.ts +6 -0
- package/dist/src/utils/session.js +8 -0
- package/dist/src/utils/session.js.map +1 -0
- package/dist/src/utils/shell-utils.d.ts +121 -0
- package/dist/src/utils/shell-utils.js +381 -0
- package/dist/src/utils/shell-utils.js.map +1 -0
- package/dist/src/utils/shell-utils.test.d.ts +6 -0
- package/dist/src/utils/shell-utils.test.js +346 -0
- package/dist/src/utils/shell-utils.test.js.map +1 -0
- package/dist/src/utils/shellReadOnlyChecker.d.ts +6 -0
- package/dist/src/utils/shellReadOnlyChecker.js +247 -0
- package/dist/src/utils/shellReadOnlyChecker.js.map +1 -0
- package/dist/src/utils/shellReadOnlyChecker.test.d.ts +6 -0
- package/dist/src/utils/shellReadOnlyChecker.test.js +47 -0
- package/dist/src/utils/shellReadOnlyChecker.test.js.map +1 -0
- package/dist/src/utils/subagentGenerator.d.ts +20 -0
- package/dist/src/utils/subagentGenerator.js +116 -0
- package/dist/src/utils/subagentGenerator.js.map +1 -0
- package/dist/src/utils/subagentGenerator.test.d.ts +6 -0
- package/dist/src/utils/subagentGenerator.test.js +158 -0
- package/dist/src/utils/subagentGenerator.test.js.map +1 -0
- package/dist/src/utils/summarizer.d.ts +25 -0
- package/dist/src/utils/summarizer.js +51 -0
- package/dist/src/utils/summarizer.js.map +1 -0
- package/dist/src/utils/summarizer.test.d.ts +6 -0
- package/dist/src/utils/summarizer.test.js +131 -0
- package/dist/src/utils/summarizer.test.js.map +1 -0
- package/dist/src/utils/systemEncoding.d.ts +40 -0
- package/dist/src/utils/systemEncoding.js +149 -0
- package/dist/src/utils/systemEncoding.js.map +1 -0
- package/dist/src/utils/systemEncoding.test.d.ts +6 -0
- package/dist/src/utils/systemEncoding.test.js +368 -0
- package/dist/src/utils/systemEncoding.test.js.map +1 -0
- package/dist/src/utils/testUtils.d.ts +29 -0
- package/dist/src/utils/testUtils.js +70 -0
- package/dist/src/utils/testUtils.js.map +1 -0
- package/dist/src/utils/textUtils.d.ts +13 -0
- package/dist/src/utils/textUtils.js +28 -0
- package/dist/src/utils/textUtils.js.map +1 -0
- package/dist/src/utils/tool-utils.d.ts +19 -0
- package/dist/src/utils/tool-utils.js +58 -0
- package/dist/src/utils/tool-utils.js.map +1 -0
- package/dist/src/utils/tool-utils.test.d.ts +6 -0
- package/dist/src/utils/tool-utils.test.js +61 -0
- package/dist/src/utils/tool-utils.test.js.map +1 -0
- package/dist/src/utils/userAccountManager.d.ts +20 -0
- package/dist/src/utils/userAccountManager.js +114 -0
- package/dist/src/utils/userAccountManager.js.map +1 -0
- package/dist/src/utils/userAccountManager.test.d.ts +6 -0
- package/dist/src/utils/userAccountManager.test.js +223 -0
- package/dist/src/utils/userAccountManager.test.js.map +1 -0
- package/dist/src/utils/workspaceContext.d.ts +66 -0
- package/dist/src/utils/workspaceContext.js +171 -0
- package/dist/src/utils/workspaceContext.js.map +1 -0
- package/dist/src/utils/workspaceContext.test.d.ts +6 -0
- package/dist/src/utils/workspaceContext.test.js +318 -0
- package/dist/src/utils/workspaceContext.test.js.map +1 -0
- package/dist/src/utils/yaml-parser.d.ts +29 -0
- package/dist/src/utils/yaml-parser.js +172 -0
- package/dist/src/utils/yaml-parser.js.map +1 -0
- package/dist/src/utils/yaml-parser.test.d.ts +6 -0
- package/dist/src/utils/yaml-parser.test.js +170 -0
- package/dist/src/utils/yaml-parser.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,566 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Blackbox
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import crypto from 'crypto';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import { promises as fs } from 'node:fs';
|
|
9
|
+
import * as os from 'os';
|
|
10
|
+
import open from 'open';
|
|
11
|
+
import { EventEmitter } from 'events';
|
|
12
|
+
import { randomUUID } from 'node:crypto';
|
|
13
|
+
import { SharedTokenManager, TokenManagerError, TokenError, } from './sharedTokenManager.js';
|
|
14
|
+
// OAuth Endpoints
|
|
15
|
+
const BLACKBOX_OAUTH_BASE_URL = 'https://chat.blackboxcli.ai';
|
|
16
|
+
const BLACKBOX_OAUTH_DEVICE_CODE_ENDPOINT = `${BLACKBOX_OAUTH_BASE_URL}/api/v1/oauth2/device/code`;
|
|
17
|
+
const BLACKBOX_OAUTH_TOKEN_ENDPOINT = `${BLACKBOX_OAUTH_BASE_URL}/api/v1/oauth2/token`;
|
|
18
|
+
// OAuth Client Configuration
|
|
19
|
+
const BLACKBOX_OAUTH_CLIENT_ID = 'f0304373b74a44d2b584a3fb70ca9e56';
|
|
20
|
+
const BLACKBOX_OAUTH_SCOPE = 'openid profile email model.completion';
|
|
21
|
+
const BLACKBOX_OAUTH_GRANT_TYPE = 'urn:ietf:params:oauth:grant-type:device_code';
|
|
22
|
+
// File System Configuration
|
|
23
|
+
const BLACKBOX_DIR = '.blackboxcli';
|
|
24
|
+
const BLACKBOX_CREDENTIAL_FILENAME = 'oauth_creds.json';
|
|
25
|
+
/**
|
|
26
|
+
* PKCE (Proof Key for Code Exchange) utilities
|
|
27
|
+
* Implements RFC 7636 - Proof Key for Code Exchange by OAuth Public Clients
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* Generate a random code verifier for PKCE
|
|
31
|
+
* @returns A random string of 43-128 characters
|
|
32
|
+
*/
|
|
33
|
+
export function generateCodeVerifier() {
|
|
34
|
+
return crypto.randomBytes(32).toString('base64url');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Generate a code challenge from a code verifier using SHA-256
|
|
38
|
+
* @param codeVerifier The code verifier string
|
|
39
|
+
* @returns The code challenge string
|
|
40
|
+
*/
|
|
41
|
+
export function generateCodeChallenge(codeVerifier) {
|
|
42
|
+
const hash = crypto.createHash('sha256');
|
|
43
|
+
hash.update(codeVerifier);
|
|
44
|
+
return hash.digest('base64url');
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Generate PKCE code verifier and challenge pair
|
|
48
|
+
* @returns Object containing code_verifier and code_challenge
|
|
49
|
+
*/
|
|
50
|
+
export function generatePKCEPair() {
|
|
51
|
+
const codeVerifier = generateCodeVerifier();
|
|
52
|
+
const codeChallenge = generateCodeChallenge(codeVerifier);
|
|
53
|
+
return { code_verifier: codeVerifier, code_challenge: codeChallenge };
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Convert object to URL-encoded form data
|
|
57
|
+
* @param data The object to convert
|
|
58
|
+
* @returns URL-encoded string
|
|
59
|
+
*/
|
|
60
|
+
function objectToUrlEncoded(data) {
|
|
61
|
+
return Object.keys(data)
|
|
62
|
+
.map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`)
|
|
63
|
+
.join('&');
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Custom error class to indicate that credentials should be cleared
|
|
67
|
+
* This is thrown when a 400 error occurs during token refresh, indicating
|
|
68
|
+
* that the refresh token is expired or invalid
|
|
69
|
+
*/
|
|
70
|
+
export class CredentialsClearRequiredError extends Error {
|
|
71
|
+
originalError;
|
|
72
|
+
constructor(message, originalError) {
|
|
73
|
+
super(message);
|
|
74
|
+
this.originalError = originalError;
|
|
75
|
+
this.name = 'CredentialsClearRequiredError';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Type guard to check if device authorization was successful
|
|
80
|
+
*/
|
|
81
|
+
export function isDeviceAuthorizationSuccess(response) {
|
|
82
|
+
return 'device_code' in response;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Type guard to check if device token response was successful
|
|
86
|
+
*/
|
|
87
|
+
export function isDeviceTokenSuccess(response) {
|
|
88
|
+
return ('access_token' in response &&
|
|
89
|
+
response.access_token !== null &&
|
|
90
|
+
response.access_token !== undefined &&
|
|
91
|
+
typeof response.access_token === 'string' &&
|
|
92
|
+
response.access_token.length > 0);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Type guard to check if device token response is pending
|
|
96
|
+
*/
|
|
97
|
+
export function isDeviceTokenPending(response) {
|
|
98
|
+
return ('status' in response &&
|
|
99
|
+
response.status === 'pending');
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Type guard to check if response is an error
|
|
103
|
+
*/
|
|
104
|
+
export function isErrorResponse(response) {
|
|
105
|
+
return 'error' in response;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Blackbox OAuth2 client implementation
|
|
109
|
+
*/
|
|
110
|
+
export class BlackboxOAuth2Client {
|
|
111
|
+
credentials = {};
|
|
112
|
+
sharedManager;
|
|
113
|
+
constructor() {
|
|
114
|
+
this.sharedManager = SharedTokenManager.getInstance();
|
|
115
|
+
}
|
|
116
|
+
setCredentials(credentials) {
|
|
117
|
+
this.credentials = credentials;
|
|
118
|
+
}
|
|
119
|
+
getCredentials() {
|
|
120
|
+
return this.credentials;
|
|
121
|
+
}
|
|
122
|
+
async getAccessToken() {
|
|
123
|
+
try {
|
|
124
|
+
// Always use shared manager for consistency - this prevents race conditions
|
|
125
|
+
// between local credential state and shared state
|
|
126
|
+
const credentials = await this.sharedManager.getValidCredentials(this);
|
|
127
|
+
return { token: credentials.access_token };
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
console.warn('Failed to get access token from shared manager:', error);
|
|
131
|
+
// Don't use fallback to local credentials to prevent race conditions
|
|
132
|
+
// All token management should go through SharedTokenManager for consistency
|
|
133
|
+
// This ensures single source of truth and prevents cross-session issues
|
|
134
|
+
return { token: undefined };
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async requestDeviceAuthorization(options) {
|
|
138
|
+
const bodyData = {
|
|
139
|
+
client_id: BLACKBOX_OAUTH_CLIENT_ID,
|
|
140
|
+
scope: options.scope,
|
|
141
|
+
code_challenge: options.code_challenge,
|
|
142
|
+
code_challenge_method: options.code_challenge_method,
|
|
143
|
+
};
|
|
144
|
+
const response = await fetch(BLACKBOX_OAUTH_DEVICE_CODE_ENDPOINT, {
|
|
145
|
+
method: 'POST',
|
|
146
|
+
headers: {
|
|
147
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
148
|
+
Accept: 'application/json',
|
|
149
|
+
'x-request-id': randomUUID(),
|
|
150
|
+
},
|
|
151
|
+
body: objectToUrlEncoded(bodyData),
|
|
152
|
+
});
|
|
153
|
+
if (!response.ok) {
|
|
154
|
+
const errorData = await response.text();
|
|
155
|
+
throw new Error(`Device authorization failed: ${response.status} ${response.statusText}. Response: ${errorData}`);
|
|
156
|
+
}
|
|
157
|
+
const result = (await response.json());
|
|
158
|
+
console.debug('Device authorization result:', result);
|
|
159
|
+
// Check if the response indicates success
|
|
160
|
+
if (!isDeviceAuthorizationSuccess(result)) {
|
|
161
|
+
const errorData = result;
|
|
162
|
+
throw new Error(`Device authorization failed: ${errorData?.error || 'Unknown error'} - ${errorData?.error_description || 'No details provided'}`);
|
|
163
|
+
}
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
166
|
+
async pollDeviceToken(options) {
|
|
167
|
+
const bodyData = {
|
|
168
|
+
grant_type: BLACKBOX_OAUTH_GRANT_TYPE,
|
|
169
|
+
client_id: BLACKBOX_OAUTH_CLIENT_ID,
|
|
170
|
+
device_code: options.device_code,
|
|
171
|
+
code_verifier: options.code_verifier,
|
|
172
|
+
};
|
|
173
|
+
const response = await fetch(BLACKBOX_OAUTH_TOKEN_ENDPOINT, {
|
|
174
|
+
method: 'POST',
|
|
175
|
+
headers: {
|
|
176
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
177
|
+
Accept: 'application/json',
|
|
178
|
+
},
|
|
179
|
+
body: objectToUrlEncoded(bodyData),
|
|
180
|
+
});
|
|
181
|
+
if (!response.ok) {
|
|
182
|
+
// Parse the response as JSON to check for OAuth RFC 8628 standard errors
|
|
183
|
+
try {
|
|
184
|
+
const errorData = (await response.json());
|
|
185
|
+
// According to OAuth RFC 8628, handle standard polling responses
|
|
186
|
+
if (response.status === 400 &&
|
|
187
|
+
errorData.error === 'authorization_pending') {
|
|
188
|
+
// User has not yet approved the authorization request. Continue polling.
|
|
189
|
+
return { status: 'pending' };
|
|
190
|
+
}
|
|
191
|
+
if (response.status === 429 && errorData.error === 'slow_down') {
|
|
192
|
+
// Client is polling too frequently. Return pending with slowDown flag.
|
|
193
|
+
return {
|
|
194
|
+
status: 'pending',
|
|
195
|
+
slowDown: true,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
// Handle other 400 errors (access_denied, expired_token, etc.) as real errors
|
|
199
|
+
// For other errors, throw with proper error information
|
|
200
|
+
const error = new Error(`Device token poll failed: ${errorData.error || 'Unknown error'} - ${errorData.error_description || 'No details provided'}`);
|
|
201
|
+
error.status = response.status;
|
|
202
|
+
throw error;
|
|
203
|
+
}
|
|
204
|
+
catch (_parseError) {
|
|
205
|
+
// If JSON parsing fails, fall back to text response
|
|
206
|
+
const errorData = await response.text();
|
|
207
|
+
const error = new Error(`Device token poll failed: ${response.status} ${response.statusText}. Response: ${errorData}`);
|
|
208
|
+
error.status = response.status;
|
|
209
|
+
throw error;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return (await response.json());
|
|
213
|
+
}
|
|
214
|
+
async refreshAccessToken() {
|
|
215
|
+
if (!this.credentials.refresh_token) {
|
|
216
|
+
throw new Error('No refresh token available');
|
|
217
|
+
}
|
|
218
|
+
const bodyData = {
|
|
219
|
+
grant_type: 'refresh_token',
|
|
220
|
+
refresh_token: this.credentials.refresh_token,
|
|
221
|
+
client_id: BLACKBOX_OAUTH_CLIENT_ID,
|
|
222
|
+
};
|
|
223
|
+
const response = await fetch(BLACKBOX_OAUTH_TOKEN_ENDPOINT, {
|
|
224
|
+
method: 'POST',
|
|
225
|
+
headers: {
|
|
226
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
227
|
+
Accept: 'application/json',
|
|
228
|
+
},
|
|
229
|
+
body: objectToUrlEncoded(bodyData),
|
|
230
|
+
});
|
|
231
|
+
if (!response.ok) {
|
|
232
|
+
const errorData = await response.text();
|
|
233
|
+
// Handle 400 errors which might indicate refresh token expiry
|
|
234
|
+
if (response.status === 400) {
|
|
235
|
+
await clearBlackboxCredentials();
|
|
236
|
+
throw new CredentialsClearRequiredError("Refresh token expired or invalid. Please use '/auth' to re-authenticate.", { status: response.status, response: errorData });
|
|
237
|
+
}
|
|
238
|
+
throw new Error(`Token refresh failed: ${response.status} ${response.statusText}. Response: ${errorData}`);
|
|
239
|
+
}
|
|
240
|
+
const responseData = (await response.json());
|
|
241
|
+
// Check if the response indicates success
|
|
242
|
+
if (isErrorResponse(responseData)) {
|
|
243
|
+
const errorData = responseData;
|
|
244
|
+
throw new Error(`Token refresh failed: ${errorData?.error || 'Unknown error'} - ${errorData?.error_description || 'No details provided'}`);
|
|
245
|
+
}
|
|
246
|
+
// Handle successful response
|
|
247
|
+
const tokenData = responseData;
|
|
248
|
+
const tokens = {
|
|
249
|
+
access_token: tokenData.access_token,
|
|
250
|
+
token_type: tokenData.token_type,
|
|
251
|
+
// Use new refresh token if provided, otherwise preserve existing one
|
|
252
|
+
refresh_token: tokenData.refresh_token || this.credentials.refresh_token,
|
|
253
|
+
resource_url: tokenData.resource_url, // Include resource_url if provided
|
|
254
|
+
expiry_date: Date.now() + tokenData.expires_in * 1000,
|
|
255
|
+
};
|
|
256
|
+
this.setCredentials(tokens);
|
|
257
|
+
// Note: File caching is now handled by SharedTokenManager
|
|
258
|
+
// to prevent cross-session token invalidation issues
|
|
259
|
+
return responseData;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
export var BlackboxOAuth2Event;
|
|
263
|
+
(function (BlackboxOAuth2Event) {
|
|
264
|
+
BlackboxOAuth2Event["AuthUri"] = "auth-uri";
|
|
265
|
+
BlackboxOAuth2Event["AuthProgress"] = "auth-progress";
|
|
266
|
+
BlackboxOAuth2Event["AuthCancel"] = "auth-cancel";
|
|
267
|
+
})(BlackboxOAuth2Event || (BlackboxOAuth2Event = {}));
|
|
268
|
+
/**
|
|
269
|
+
* Global event emitter instance for BlackboxOAuth2 authentication events
|
|
270
|
+
*/
|
|
271
|
+
export const blackboxOAuth2Events = new EventEmitter();
|
|
272
|
+
export async function getBlackboxOAuthClient(config) {
|
|
273
|
+
const client = new BlackboxOAuth2Client();
|
|
274
|
+
// Use shared token manager to get valid credentials with cross-session synchronization
|
|
275
|
+
const sharedManager = SharedTokenManager.getInstance();
|
|
276
|
+
try {
|
|
277
|
+
// Try to get valid credentials from shared cache first
|
|
278
|
+
const credentials = await sharedManager.getValidCredentials(client);
|
|
279
|
+
client.setCredentials(credentials);
|
|
280
|
+
return client;
|
|
281
|
+
}
|
|
282
|
+
catch (error) {
|
|
283
|
+
console.debug('Shared token manager failed, attempting device flow:', error);
|
|
284
|
+
// Handle specific token manager errors
|
|
285
|
+
if (error instanceof TokenManagerError) {
|
|
286
|
+
switch (error.type) {
|
|
287
|
+
case TokenError.NO_REFRESH_TOKEN:
|
|
288
|
+
console.debug('No refresh token available, proceeding with device flow');
|
|
289
|
+
break;
|
|
290
|
+
case TokenError.REFRESH_FAILED:
|
|
291
|
+
console.debug('Token refresh failed, proceeding with device flow');
|
|
292
|
+
break;
|
|
293
|
+
case TokenError.NETWORK_ERROR:
|
|
294
|
+
console.warn('Network error during token refresh, trying device flow');
|
|
295
|
+
break;
|
|
296
|
+
default:
|
|
297
|
+
console.warn('Token manager error:', error.message);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
// If shared manager fails, check if we have cached credentials for device flow
|
|
301
|
+
if (await loadCachedBlackboxCredentials(client)) {
|
|
302
|
+
// We have cached credentials but they might be expired
|
|
303
|
+
// Try device flow instead of forcing refresh
|
|
304
|
+
const result = await authWithBlackboxDeviceFlow(client, config);
|
|
305
|
+
if (!result.success) {
|
|
306
|
+
throw new Error('Blackbox OAuth authentication failed');
|
|
307
|
+
}
|
|
308
|
+
return client;
|
|
309
|
+
}
|
|
310
|
+
// No cached credentials, use device authorization flow for authentication
|
|
311
|
+
const result = await authWithBlackboxDeviceFlow(client, config);
|
|
312
|
+
if (!result.success) {
|
|
313
|
+
// Only emit timeout event if the failure reason is actually timeout
|
|
314
|
+
// Other error types (401, 429, etc.) have already emitted their specific events
|
|
315
|
+
if (result.reason === 'timeout') {
|
|
316
|
+
blackboxOAuth2Events.emit(BlackboxOAuth2Event.AuthProgress, 'timeout', 'Authentication timed out. Please try again or select a different authentication method.');
|
|
317
|
+
}
|
|
318
|
+
// Throw error with appropriate message based on failure reason
|
|
319
|
+
switch (result.reason) {
|
|
320
|
+
case 'timeout':
|
|
321
|
+
throw new Error('Blackbox OAuth authentication timed out');
|
|
322
|
+
case 'cancelled':
|
|
323
|
+
throw new Error('Blackbox OAuth authentication was cancelled by user');
|
|
324
|
+
case 'rate_limit':
|
|
325
|
+
throw new Error('Too many request for Blackbox OAuth authentication, please try again later.');
|
|
326
|
+
case 'error':
|
|
327
|
+
default:
|
|
328
|
+
throw new Error('Blackbox OAuth authentication failed');
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return client;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
async function authWithBlackboxDeviceFlow(client, config) {
|
|
335
|
+
let isCancelled = false;
|
|
336
|
+
// Set up cancellation listener
|
|
337
|
+
const cancelHandler = () => {
|
|
338
|
+
isCancelled = true;
|
|
339
|
+
};
|
|
340
|
+
blackboxOAuth2Events.once(BlackboxOAuth2Event.AuthCancel, cancelHandler);
|
|
341
|
+
try {
|
|
342
|
+
// Generate PKCE code verifier and challenge
|
|
343
|
+
const { code_verifier, code_challenge } = generatePKCEPair();
|
|
344
|
+
// Request device authorization
|
|
345
|
+
const deviceAuth = await client.requestDeviceAuthorization({
|
|
346
|
+
scope: BLACKBOX_OAUTH_SCOPE,
|
|
347
|
+
code_challenge,
|
|
348
|
+
code_challenge_method: 'S256',
|
|
349
|
+
});
|
|
350
|
+
// Ensure we have a successful authorization response
|
|
351
|
+
if (!isDeviceAuthorizationSuccess(deviceAuth)) {
|
|
352
|
+
const errorData = deviceAuth;
|
|
353
|
+
throw new Error(`Device authorization failed: ${errorData?.error || 'Unknown error'} - ${errorData?.error_description || 'No details provided'}`);
|
|
354
|
+
}
|
|
355
|
+
// Emit device authorization event for UI integration immediately
|
|
356
|
+
blackboxOAuth2Events.emit(BlackboxOAuth2Event.AuthUri, deviceAuth);
|
|
357
|
+
const showFallbackMessage = () => {
|
|
358
|
+
console.log('\n=== Blackbox OAuth Device Authorization ===');
|
|
359
|
+
console.log('Please visit the following URL in your browser to authorize:');
|
|
360
|
+
console.log(`\n${deviceAuth.verification_uri_complete}\n`);
|
|
361
|
+
console.log('Waiting for authorization to complete...\n');
|
|
362
|
+
};
|
|
363
|
+
// If browser launch is not suppressed, try to open the URL
|
|
364
|
+
if (!config.isBrowserLaunchSuppressed()) {
|
|
365
|
+
try {
|
|
366
|
+
const childProcess = await open(deviceAuth.verification_uri_complete);
|
|
367
|
+
// IMPORTANT: Attach an error handler to the returned child process.
|
|
368
|
+
// Without this, if `open` fails to spawn a process (e.g., `xdg-open` is not found
|
|
369
|
+
// in a minimal Docker container), it will emit an unhandled 'error' event,
|
|
370
|
+
// causing the entire Node.js process to crash.
|
|
371
|
+
if (childProcess) {
|
|
372
|
+
childProcess.on('error', () => {
|
|
373
|
+
console.debug('Failed to open browser. Visit this URL to authorize:');
|
|
374
|
+
showFallbackMessage();
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
catch (_err) {
|
|
379
|
+
showFallbackMessage();
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
// Browser launch is suppressed, show fallback message
|
|
384
|
+
showFallbackMessage();
|
|
385
|
+
}
|
|
386
|
+
// Emit auth progress event
|
|
387
|
+
blackboxOAuth2Events.emit(BlackboxOAuth2Event.AuthProgress, 'polling', 'Waiting for authorization...');
|
|
388
|
+
console.debug('Waiting for authorization...\n');
|
|
389
|
+
// Poll for the token
|
|
390
|
+
let pollInterval = 2000; // 2 seconds, can be increased if slow_down is received
|
|
391
|
+
const maxAttempts = Math.ceil(deviceAuth.expires_in / (pollInterval / 1000));
|
|
392
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
393
|
+
// Check if authentication was cancelled
|
|
394
|
+
if (isCancelled) {
|
|
395
|
+
console.debug('\nAuthentication cancelled by user.');
|
|
396
|
+
blackboxOAuth2Events.emit(BlackboxOAuth2Event.AuthProgress, 'error', 'Authentication cancelled by user.');
|
|
397
|
+
return { success: false, reason: 'cancelled' };
|
|
398
|
+
}
|
|
399
|
+
try {
|
|
400
|
+
console.debug('polling for token...');
|
|
401
|
+
const tokenResponse = await client.pollDeviceToken({
|
|
402
|
+
device_code: deviceAuth.device_code,
|
|
403
|
+
code_verifier,
|
|
404
|
+
});
|
|
405
|
+
// Check if the response is successful and contains token data
|
|
406
|
+
if (isDeviceTokenSuccess(tokenResponse)) {
|
|
407
|
+
const tokenData = tokenResponse;
|
|
408
|
+
// Convert to BlackboxCredentials format
|
|
409
|
+
const credentials = {
|
|
410
|
+
access_token: tokenData.access_token, // Safe to assert as non-null due to isDeviceTokenSuccess check
|
|
411
|
+
refresh_token: tokenData.refresh_token || undefined,
|
|
412
|
+
token_type: tokenData.token_type,
|
|
413
|
+
resource_url: tokenData.resource_url,
|
|
414
|
+
expiry_date: tokenData.expires_in
|
|
415
|
+
? Date.now() + tokenData.expires_in * 1000
|
|
416
|
+
: undefined,
|
|
417
|
+
};
|
|
418
|
+
client.setCredentials(credentials);
|
|
419
|
+
// Cache the new tokens
|
|
420
|
+
await cacheBlackboxCredentials(credentials);
|
|
421
|
+
// Emit auth progress success event
|
|
422
|
+
blackboxOAuth2Events.emit(BlackboxOAuth2Event.AuthProgress, 'success', 'Authentication successful! Access token obtained.');
|
|
423
|
+
console.debug('Authentication successful! Access token obtained.');
|
|
424
|
+
return { success: true };
|
|
425
|
+
}
|
|
426
|
+
// Check if the response is pending
|
|
427
|
+
if (isDeviceTokenPending(tokenResponse)) {
|
|
428
|
+
const pendingData = tokenResponse;
|
|
429
|
+
// Handle slow_down error by increasing poll interval
|
|
430
|
+
if (pendingData.slowDown) {
|
|
431
|
+
pollInterval = Math.min(pollInterval * 1.5, 10000); // Increase by 50%, max 10 seconds
|
|
432
|
+
console.debug(`\nServer requested to slow down, increasing poll interval to ${pollInterval}ms'`);
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
pollInterval = 2000; // Reset to default interval
|
|
436
|
+
}
|
|
437
|
+
// Emit polling progress event
|
|
438
|
+
blackboxOAuth2Events.emit(BlackboxOAuth2Event.AuthProgress, 'polling', `Polling... (attempt ${attempt + 1}/${maxAttempts})`);
|
|
439
|
+
// Wait with cancellation check every 100ms
|
|
440
|
+
await new Promise((resolve) => {
|
|
441
|
+
const checkInterval = 100; // Check every 100ms
|
|
442
|
+
let elapsedTime = 0;
|
|
443
|
+
const intervalId = setInterval(() => {
|
|
444
|
+
elapsedTime += checkInterval;
|
|
445
|
+
// Check for cancellation during wait
|
|
446
|
+
if (isCancelled) {
|
|
447
|
+
clearInterval(intervalId);
|
|
448
|
+
resolve();
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
451
|
+
// Complete wait when interval is reached
|
|
452
|
+
if (elapsedTime >= pollInterval) {
|
|
453
|
+
clearInterval(intervalId);
|
|
454
|
+
resolve();
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
}, checkInterval);
|
|
458
|
+
});
|
|
459
|
+
// Check for cancellation after waiting
|
|
460
|
+
if (isCancelled) {
|
|
461
|
+
console.debug('\nAuthentication cancelled by user.');
|
|
462
|
+
blackboxOAuth2Events.emit(BlackboxOAuth2Event.AuthProgress, 'error', 'Authentication cancelled by user.');
|
|
463
|
+
return { success: false, reason: 'cancelled' };
|
|
464
|
+
}
|
|
465
|
+
continue;
|
|
466
|
+
}
|
|
467
|
+
// Handle error response
|
|
468
|
+
if (isErrorResponse(tokenResponse)) {
|
|
469
|
+
const errorData = tokenResponse;
|
|
470
|
+
throw new Error(`Token polling failed: ${errorData?.error || 'Unknown error'} - ${errorData?.error_description || 'No details provided'}`);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
catch (error) {
|
|
474
|
+
// Handle specific error cases
|
|
475
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
476
|
+
const statusCode = error instanceof Error
|
|
477
|
+
? error.status
|
|
478
|
+
: null;
|
|
479
|
+
if (errorMessage.includes('401') || statusCode === 401) {
|
|
480
|
+
const message = 'Device code expired or invalid, please restart the authorization process.';
|
|
481
|
+
// Emit error event
|
|
482
|
+
blackboxOAuth2Events.emit(BlackboxOAuth2Event.AuthProgress, 'error', message);
|
|
483
|
+
return { success: false, reason: 'error' };
|
|
484
|
+
}
|
|
485
|
+
// Handle 429 Too Many Requests error
|
|
486
|
+
if (errorMessage.includes('429') || statusCode === 429) {
|
|
487
|
+
const message = 'Too many requests. The server is rate limiting our requests. Please select a different authentication method or try again later.';
|
|
488
|
+
// Emit rate limit event to notify user
|
|
489
|
+
blackboxOAuth2Events.emit(BlackboxOAuth2Event.AuthProgress, 'rate_limit', message);
|
|
490
|
+
console.log('\n' + message);
|
|
491
|
+
// Return false to stop polling and go back to auth selection
|
|
492
|
+
return { success: false, reason: 'rate_limit' };
|
|
493
|
+
}
|
|
494
|
+
const message = `Error polling for token: ${errorMessage}`;
|
|
495
|
+
// Emit error event
|
|
496
|
+
blackboxOAuth2Events.emit(BlackboxOAuth2Event.AuthProgress, 'error', message);
|
|
497
|
+
// Check for cancellation before waiting
|
|
498
|
+
if (isCancelled) {
|
|
499
|
+
return { success: false, reason: 'cancelled' };
|
|
500
|
+
}
|
|
501
|
+
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
const timeoutMessage = 'Authorization timeout, please restart the process.';
|
|
505
|
+
// Emit timeout error event
|
|
506
|
+
blackboxOAuth2Events.emit(BlackboxOAuth2Event.AuthProgress, 'timeout', timeoutMessage);
|
|
507
|
+
console.error('\n' + timeoutMessage);
|
|
508
|
+
return { success: false, reason: 'timeout' };
|
|
509
|
+
}
|
|
510
|
+
catch (error) {
|
|
511
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
512
|
+
console.error('Device authorization flow failed:', errorMessage);
|
|
513
|
+
return { success: false, reason: 'error' };
|
|
514
|
+
}
|
|
515
|
+
finally {
|
|
516
|
+
// Clean up event listener
|
|
517
|
+
blackboxOAuth2Events.off(BlackboxOAuth2Event.AuthCancel, cancelHandler);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
async function loadCachedBlackboxCredentials(client) {
|
|
521
|
+
try {
|
|
522
|
+
const keyFile = getBlackboxCachedCredentialPath();
|
|
523
|
+
const creds = await fs.readFile(keyFile, 'utf-8');
|
|
524
|
+
const credentials = JSON.parse(creds);
|
|
525
|
+
client.setCredentials(credentials);
|
|
526
|
+
// Verify that the credentials are still valid
|
|
527
|
+
const { token } = await client.getAccessToken();
|
|
528
|
+
if (!token) {
|
|
529
|
+
return false;
|
|
530
|
+
}
|
|
531
|
+
return true;
|
|
532
|
+
}
|
|
533
|
+
catch (_) {
|
|
534
|
+
return false;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
async function cacheBlackboxCredentials(credentials) {
|
|
538
|
+
const filePath = getBlackboxCachedCredentialPath();
|
|
539
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
540
|
+
const credString = JSON.stringify(credentials, null, 2);
|
|
541
|
+
await fs.writeFile(filePath, credString);
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* Clear cached Blackbox credentials from disk
|
|
545
|
+
* This is useful when credentials have expired or need to be reset
|
|
546
|
+
*/
|
|
547
|
+
export async function clearBlackboxCredentials() {
|
|
548
|
+
try {
|
|
549
|
+
const filePath = getBlackboxCachedCredentialPath();
|
|
550
|
+
await fs.unlink(filePath);
|
|
551
|
+
console.debug('Cached Blackbox credentials cleared successfully.');
|
|
552
|
+
}
|
|
553
|
+
catch (error) {
|
|
554
|
+
// If file doesn't exist or can't be deleted, we consider it cleared
|
|
555
|
+
if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
|
|
556
|
+
// File doesn't exist, already cleared
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
559
|
+
// Log other errors but don't throw - clearing credentials should be non-critical
|
|
560
|
+
console.warn('Warning: Failed to clear cached Blackbox credentials:', error);
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
function getBlackboxCachedCredentialPath() {
|
|
564
|
+
return path.join(os.homedir(), BLACKBOX_DIR, BLACKBOX_CREDENTIAL_FILENAME);
|
|
565
|
+
}
|
|
566
|
+
//# sourceMappingURL=blackboxOAuth2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blackboxOAuth2.js","sourceRoot":"","sources":["../../../src/blackbox/blackboxOAuth2.ts"],"names":[],"mappings":"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"}
|