@tyvm/knowhow 0.0.159 → 0.0.160
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/package.json +1 -1
- package/ts_build/package.json +1 -1
- package/ts_build/src/chat/CliChatService.d.ts +2 -1
- package/ts_build/src/chat/CliChatService.js +29 -3
- package/ts_build/src/chat/CliChatService.js.map +1 -1
- package/ts_build/src/chat/modules/AgentModule.js +21 -17
- package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
- package/ts_build/src/chat/renderer/ConsoleRenderer.js +32 -25
- package/ts_build/src/chat/renderer/ConsoleRenderer.js.map +1 -1
- package/ts_build/src/logger.d.ts +1 -0
- package/ts_build/src/logger.js +13 -1
- package/ts_build/src/logger.js.map +1 -1
- package/ts_build/src/utils/InputQueueManager.d.ts +8 -1
- package/ts_build/src/utils/InputQueueManager.js +72 -2
- package/ts_build/src/utils/InputQueueManager.js.map +1 -1
- package/ts_build/src/utils/index.d.ts +3 -1
- package/ts_build/src/utils/index.js +11 -3
- package/ts_build/src/utils/index.js.map +1 -1
- package/CONFIG.md +0 -429
- package/PROCESSING.md +0 -450
- package/WORKER.md +0 -260
- package/autodoc/README.md +0 -324
- package/autodoc/chat-guide.md +0 -444
- package/autodoc/cli-reference.md +0 -720
- package/autodoc/config-reference.md +0 -642
- package/autodoc/embeddings-guide.md +0 -467
- package/autodoc/generate-guide.md +0 -437
- package/autodoc/language-plugin-guide.md +0 -417
- package/autodoc/modules-guide.md +0 -379
- package/autodoc/plugins-guide.md +0 -721
- package/autodoc/quickstart-guide.md +0 -126
- package/autodoc/skills-guide.md +0 -584
- package/autodoc/worker-guide.md +0 -519
- package/docs/input-queue-manager.md +0 -142
- package/docs/multi-worker-management.md +0 -142
- package/docs/shell-commands.md +0 -174
- package/jest.config.js +0 -19
- package/jest.manual.config.js +0 -19
- package/scripts/README.md +0 -119
- package/scripts/build-for-node.sh +0 -148
- package/scripts/cache-miss-debug.ts +0 -365
- package/scripts/check-isolated-deps.sh +0 -69
- package/scripts/check-model-pricing.ts +0 -509
- package/scripts/compare-openrouter-coverage.ts +0 -576
- package/scripts/migrate-usage-json.js +0 -147
- package/scripts/publish.sh +0 -86
- package/scripts/restore_keys.sh +0 -59
- package/scripts/test-repetition-hint.ts +0 -302
- package/scripts/unset_keys.sh +0 -60
- package/src/agents/base/base.ts +0 -1963
- package/src/agents/base/prompt.ts +0 -55
- package/src/agents/configurable/ConfigAgent.ts +0 -24
- package/src/agents/developer/developer.ts +0 -76
- package/src/agents/historyRollback.ts +0 -36
- package/src/agents/index.ts +0 -52
- package/src/agents/interface.ts +0 -11
- package/src/agents/patcher/codebase.md +0 -27
- package/src/agents/patcher/patcher.ts +0 -131
- package/src/agents/researcher/researcher.ts +0 -115
- package/src/agents/setup/setup.ts +0 -63
- package/src/agents/tools/addInternalTools.ts +0 -21
- package/src/agents/tools/agentCall.ts +0 -34
- package/src/agents/tools/aiClient.ts +0 -178
- package/src/agents/tools/askHuman.ts +0 -10
- package/src/agents/tools/callPlugin.ts +0 -10
- package/src/agents/tools/connectAgent.ts +0 -355
- package/src/agents/tools/embeddingSearch.ts +0 -6
- package/src/agents/tools/execCommand.ts +0 -162
- package/src/agents/tools/fileSearch.ts +0 -35
- package/src/agents/tools/finalAnswer.ts +0 -4
- package/src/agents/tools/googleSearch.ts +0 -243
- package/src/agents/tools/index.ts +0 -33
- package/src/agents/tools/language/definitions.ts +0 -105
- package/src/agents/tools/language/index.ts +0 -20
- package/src/agents/tools/lazy/definitions.ts +0 -72
- package/src/agents/tools/lazy/disableTools.ts +0 -16
- package/src/agents/tools/lazy/enableTools.ts +0 -16
- package/src/agents/tools/lazy/index.ts +0 -3
- package/src/agents/tools/lazy/listAvailableTools.ts +0 -17
- package/src/agents/tools/lintFile.ts +0 -19
- package/src/agents/tools/list.ts +0 -739
- package/src/agents/tools/loadImageAsBase64.ts +0 -83
- package/src/agents/tools/loadWebpage.ts +0 -19
- package/src/agents/tools/mcp/connectMcpServer.ts +0 -40
- package/src/agents/tools/mcp/definitions.ts +0 -67
- package/src/agents/tools/mcp/disconnectMcpServer.ts +0 -40
- package/src/agents/tools/mcp/index.ts +0 -3
- package/src/agents/tools/mcp/listAvailableMcpServers.ts +0 -28
- package/src/agents/tools/minimal/callTool.ts +0 -45
- package/src/agents/tools/minimal/definitions.ts +0 -50
- package/src/agents/tools/minimal/index.ts +0 -3
- package/src/agents/tools/minimal/inspectTools.ts +0 -27
- package/src/agents/tools/modifyFile.ts +0 -53
- package/src/agents/tools/observe.ts +0 -247
- package/src/agents/tools/patch.ts +0 -1287
- package/src/agents/tools/readBlocks.ts +0 -83
- package/src/agents/tools/readFile.ts +0 -105
- package/src/agents/tools/replyToParent.ts +0 -123
- package/src/agents/tools/runGenerate.ts +0 -210
- package/src/agents/tools/scanFile.ts +0 -16
- package/src/agents/tools/sendAgentMessage.ts +0 -139
- package/src/agents/tools/skills.ts +0 -79
- package/src/agents/tools/startAgentTask.ts +0 -393
- package/src/agents/tools/stringReplace.ts +0 -105
- package/src/agents/tools/textSearch.ts +0 -128
- package/src/agents/tools/types/fileblock.ts +0 -5
- package/src/agents/tools/visionTool.ts +0 -35
- package/src/agents/tools/waitForAgentCompleted.ts +0 -270
- package/src/agents/tools/writeFile.ts +0 -106
- package/src/agents/tools/ycmd/client.ts +0 -608
- package/src/agents/tools/ycmd/definitions.ts +0 -294
- package/src/agents/tools/ycmd/detection.ts +0 -211
- package/src/agents/tools/ycmd/index.ts +0 -11
- package/src/agents/tools/ycmd/installer.ts +0 -251
- package/src/agents/tools/ycmd/server.ts +0 -545
- package/src/agents/tools/ycmd/serverManager.ts +0 -316
- package/src/agents/tools/ycmd/tools/completion.ts +0 -113
- package/src/agents/tools/ycmd/tools/diagnostics.ts +0 -166
- package/src/agents/tools/ycmd/tools/getLocations.ts +0 -173
- package/src/agents/tools/ycmd/tools/goto.ts +0 -169
- package/src/agents/tools/ycmd/tools/refactor.ts +0 -204
- package/src/agents/tools/ycmd/tools/signature.ts +0 -174
- package/src/agents/tools/ycmd/tools/start.ts +0 -95
- package/src/agents/tools/ycmd/utils/pathUtils.ts +0 -59
- package/src/ai.ts +0 -306
- package/src/auth/browserLogin.ts +0 -406
- package/src/auth/environmentAuth.ts +0 -51
- package/src/auth/errors.ts +0 -6
- package/src/auth/jwtStore.ts +0 -70
- package/src/auth/keyAuth.ts +0 -142
- package/src/auth/keyManager.ts +0 -331
- package/src/auth/registerIdentity.ts +0 -67
- package/src/auth/spinner.ts +0 -23
- package/src/chat/CliChatService.ts +0 -438
- package/src/chat/modules/AgentModule.ts +0 -1664
- package/src/chat/modules/AskModule.ts +0 -98
- package/src/chat/modules/BaseChatModule.ts +0 -65
- package/src/chat/modules/ClipboardImageModule.ts +0 -136
- package/src/chat/modules/CustomCommandsModule.ts +0 -80
- package/src/chat/modules/InternalChatModule.ts +0 -216
- package/src/chat/modules/RemoteSyncModule.ts +0 -482
- package/src/chat/modules/RendererModule.ts +0 -139
- package/src/chat/modules/SearchModule.ts +0 -168
- package/src/chat/modules/SessionsModule.ts +0 -969
- package/src/chat/modules/SetupModule.ts +0 -185
- package/src/chat/modules/ShellCommandModule.ts +0 -98
- package/src/chat/modules/SystemModule.ts +0 -161
- package/src/chat/modules/ToolCommandModule.ts +0 -102
- package/src/chat/modules/VoiceModule.ts +0 -70
- package/src/chat/modules/index.ts +0 -8
- package/src/chat/renderer/CompactRenderer.ts +0 -229
- package/src/chat/renderer/ConsoleRenderer.ts +0 -160
- package/src/chat/renderer/FancyRenderer.ts +0 -440
- package/src/chat/renderer/PlainRenderer.ts +0 -218
- package/src/chat/renderer/index.ts +0 -6
- package/src/chat/renderer/loadRenderer.ts +0 -316
- package/src/chat/renderer/messagesToRenderEvents.ts +0 -96
- package/src/chat/renderer/types.ts +0 -99
- package/src/chat/types.ts +0 -146
- package/src/chat.ts +0 -140
- package/src/cli.ts +0 -180
- package/src/clients/anthropic.ts +0 -772
- package/src/clients/attribution.ts +0 -53
- package/src/clients/cerebras.ts +0 -10
- package/src/clients/contextLimits.ts +0 -263
- package/src/clients/copilot.ts +0 -23
- package/src/clients/deepseek.ts +0 -16
- package/src/clients/fireworks.ts +0 -71
- package/src/clients/gemini.ts +0 -1169
- package/src/clients/github.ts +0 -16
- package/src/clients/groq.ts +0 -15
- package/src/clients/http.ts +0 -719
- package/src/clients/index.ts +0 -1153
- package/src/clients/knowhow.ts +0 -130
- package/src/clients/knowhowMcp.ts +0 -118
- package/src/clients/llama.ts +0 -16
- package/src/clients/meta.ts +0 -27
- package/src/clients/mistral.ts +0 -16
- package/src/clients/nvidia.ts +0 -16
- package/src/clients/openai.ts +0 -1186
- package/src/clients/openrouter.ts +0 -24
- package/src/clients/pricing/anthropic.ts +0 -149
- package/src/clients/pricing/cerebras.ts +0 -11
- package/src/clients/pricing/copilot.ts +0 -60
- package/src/clients/pricing/deepseek.ts +0 -15
- package/src/clients/pricing/fireworks.ts +0 -182
- package/src/clients/pricing/github.ts +0 -69
- package/src/clients/pricing/google.ts +0 -385
- package/src/clients/pricing/groq.ts +0 -56
- package/src/clients/pricing/index.ts +0 -44
- package/src/clients/pricing/llama.ts +0 -18
- package/src/clients/pricing/meta.ts +0 -12
- package/src/clients/pricing/mistral.ts +0 -34
- package/src/clients/pricing/models.ts +0 -25
- package/src/clients/pricing/nvidia.ts +0 -102
- package/src/clients/pricing/openai.ts +0 -409
- package/src/clients/pricing/openrouter.ts +0 -36
- package/src/clients/pricing/qwen.ts +0 -80
- package/src/clients/pricing/types.ts +0 -125
- package/src/clients/pricing/xai.ts +0 -137
- package/src/clients/qwen.ts +0 -16
- package/src/clients/responseMetadata.ts +0 -221
- package/src/clients/types.ts +0 -531
- package/src/clients/withRetry.ts +0 -89
- package/src/clients/xai.ts +0 -693
- package/src/cloudWorker.ts +0 -394
- package/src/commands/agent.ts +0 -342
- package/src/commands/agents.ts +0 -1037
- package/src/commands/behaviors.ts +0 -47
- package/src/commands/convert.ts +0 -291
- package/src/commands/hash.ts +0 -179
- package/src/commands/mcp.ts +0 -743
- package/src/commands/misc.ts +0 -373
- package/src/commands/modules.ts +0 -704
- package/src/commands/processes.ts +0 -248
- package/src/commands/remote.ts +0 -77
- package/src/commands/replay.ts +0 -503
- package/src/commands/sandbox.ts +0 -566
- package/src/commands/services.ts +0 -168
- package/src/commands/skills.ts +0 -107
- package/src/commands/workers.ts +0 -168
- package/src/config.ts +0 -468
- package/src/conversion.ts +0 -69
- package/src/dataset/diffs/README.md +0 -12
- package/src/dataset/diffs/debug-errors.ts +0 -29
- package/src/dataset/diffs/debug.ts +0 -64
- package/src/dataset/diffs/generate.ts +0 -71
- package/src/dataset/diffs/jsonl.ts +0 -53
- package/src/dataset/diffs/test.ts +0 -194
- package/src/embeddings.ts +0 -494
- package/src/fileSync.ts +0 -369
- package/src/generate.ts +0 -529
- package/src/hashes.ts +0 -180
- package/src/index.ts +0 -261
- package/src/logger.ts +0 -197
- package/src/login.ts +0 -209
- package/src/microphone.ts +0 -141
- package/src/migrations.ts +0 -151
- package/src/plugins/AgentsMdPlugin.ts +0 -118
- package/src/plugins/GitPlugin.ts +0 -598
- package/src/plugins/LinterPlugin.ts +0 -214
- package/src/plugins/PluginBase.ts +0 -70
- package/src/plugins/SkillsPlugin.ts +0 -37
- package/src/plugins/embedding.ts +0 -82
- package/src/plugins/exec.ts +0 -70
- package/src/plugins/language.ts +0 -290
- package/src/plugins/plugins.ts +0 -175
- package/src/plugins/tmux.ts +0 -132
- package/src/plugins/types.ts +0 -36
- package/src/plugins/url.ts +0 -101
- package/src/plugins/vim.ts +0 -89
- package/src/processes/ProcessManager.ts +0 -96
- package/src/processes/managedProcessShim.ts +0 -138
- package/src/processors/Base64ImageDetector.ts +0 -502
- package/src/processors/CustomVariables.ts +0 -693
- package/src/processors/GemmaToolProcessor.ts +0 -163
- package/src/processors/HarmonyToolProcessor.ts +0 -264
- package/src/processors/JsonCompressor.ts +0 -510
- package/src/processors/MinimalToolsMessageProcessor.ts +0 -113
- package/src/processors/TokenCompressor.ts +0 -620
- package/src/processors/ToolResponseCache.ts +0 -322
- package/src/processors/XmlToolCallProcessor.ts +0 -533
- package/src/processors/index.ts +0 -14
- package/src/processors/tools/boundedToolResponse.ts +0 -49
- package/src/processors/tools/grepToolResponse.ts +0 -230
- package/src/processors/tools/index.ts +0 -23
- package/src/processors/tools/jqToolResponse.ts +0 -159
- package/src/processors/tools/listStoredToolResponses.ts +0 -124
- package/src/processors/tools/tailToolResponse.ts +0 -148
- package/src/prompts/BasicCodeDocumenter.ts +0 -1
- package/src/prompts/BasicProjectDocumenter.ts +0 -1
- package/src/prompts/EmbeddingSeachHelper.ts +0 -1
- package/src/prompts/KnowhowConfigExamples.ts +0 -376
- package/src/prompts/index.ts +0 -9
- package/src/remotes.ts +0 -110
- package/src/server/index.ts +0 -16
- package/src/services/AgentService.ts +0 -134
- package/src/services/AgentSyncFs.ts +0 -775
- package/src/services/AgentSyncKnowhowWeb.ts +0 -389
- package/src/services/BehaviorsService.ts +0 -466
- package/src/services/DockerService.ts +0 -511
- package/src/services/EmbeddingService.ts +0 -427
- package/src/services/EmbeddingsService.ts +0 -73
- package/src/services/EventService.ts +0 -279
- package/src/services/ExtensionsService.ts +0 -25
- package/src/services/KnowhowClient.ts +0 -928
- package/src/services/LazyToolsService.ts +0 -210
- package/src/services/Mcp.ts +0 -727
- package/src/services/McpServer.ts +0 -155
- package/src/services/McpWebsocketTransport.ts +0 -87
- package/src/services/MediaProcessorService.ts +0 -669
- package/src/services/MessageProcessor.ts +0 -114
- package/src/services/MinimalToolsService.ts +0 -177
- package/src/services/RuntimeReloadService.ts +0 -31
- package/src/services/S3.ts +0 -61
- package/src/services/SessionManager.ts +0 -358
- package/src/services/SkillsService.ts +0 -822
- package/src/services/SyncedAgentWatcher.ts +0 -124
- package/src/services/SyncerService.ts +0 -191
- package/src/services/TaskRegistry.ts +0 -110
- package/src/services/Tools.ts +0 -580
- package/src/services/TracingService.ts +0 -116
- package/src/services/conversion/ConversionService.ts +0 -757
- package/src/services/conversion/index.ts +0 -2
- package/src/services/conversion/types.ts +0 -87
- package/src/services/flags.ts +0 -51
- package/src/services/index.ts +0 -117
- package/src/services/modules/computerUse.ts +0 -218
- package/src/services/modules/index.ts +0 -314
- package/src/services/modules/types.ts +0 -109
- package/src/services/types.ts +0 -60
- package/src/services/watchers/FsSyncer.ts +0 -199
- package/src/services/watchers/RemoteSyncer.ts +0 -196
- package/src/services/watchers/index.ts +0 -2
- package/src/tunnel.ts +0 -243
- package/src/types.ts +0 -282
- package/src/util/Trace.ts +0 -236
- package/src/utils/InputQueueManager.ts +0 -493
- package/src/utils/errors.ts +0 -0
- package/src/utils/http.ts +0 -150
- package/src/utils/index.ts +0 -111
- package/src/worker.ts +0 -696
- package/src/workerRegistry.ts +0 -152
- package/src/workers/auth/PasskeySetup.ts +0 -181
- package/src/workers/auth/WorkerPasskeyAuth.ts +0 -190
- package/src/workers/auth/WsMiddleware.ts +0 -99
- package/src/workers/auth/authMiddleware.ts +0 -104
- package/src/workers/auth/types.ts +0 -70
- package/src/workers/tools/getChallenge.ts +0 -33
- package/src/workers/tools/index.ts +0 -20
- package/src/workers/tools/listAllowedPorts.ts +0 -30
- package/src/workers/tools/lock.ts +0 -31
- package/src/workers/tools/reloadConfig.ts +0 -84
- package/src/workers/tools/unlock.ts +0 -116
- package/tests/XmlToolCallProcessor.test.ts +0 -468
- package/tests/agents/interrupt.test.ts +0 -200
- package/tests/agents/observe-base.test.ts +0 -183
- package/tests/agents/tools/connectAgent.test.ts +0 -138
- package/tests/agents/tools/observe.test.ts +0 -179
- package/tests/agents/tools/readFile.test.ts +0 -88
- package/tests/agents/tools/replyToParent.test.ts +0 -125
- package/tests/agents/tools/sendAgentMessage.test.ts +0 -99
- package/tests/agents/tools/waitForAgentCompleted.test.ts +0 -147
- package/tests/chat/detach-attach-rendering.test.ts +0 -315
- package/tests/clients/AIClient.test.ts +0 -668
- package/tests/clients/anthropic.test.ts +0 -202
- package/tests/clients/contextLimits.test.ts +0 -97
- package/tests/clients/fireworks.test.ts +0 -65
- package/tests/clients/openai.images.test.ts +0 -105
- package/tests/clients/pricing.test.ts +0 -206
- package/tests/clients/reasoningEffort.test.ts +0 -140
- package/tests/compressor/bigstring.test.ts +0 -450
- package/tests/compressor/bigstring.txt +0 -1
- package/tests/compressor/githubjson.txt +0 -1
- package/tests/compressor/toolResponseCache.test.ts +0 -304
- package/tests/compressor/usageBase64.json +0 -159
- package/tests/compressor/usageBase64.test.ts +0 -175
- package/tests/fixtures/fake-secret.txt +0 -1
- package/tests/manual/agent-events/run-test.ts +0 -203
- package/tests/manual/browser-login/README.md +0 -189
- package/tests/manual/browser-login/test_browser_login_basic.ts +0 -115
- package/tests/manual/browser-login/test_cli_integration.ts +0 -169
- package/tests/manual/browser-login/test_cross_platform_browser.ts +0 -186
- package/tests/manual/browser-login/test_error_scenarios.ts +0 -223
- package/tests/manual/cli/no-env.sh +0 -274
- package/tests/manual/clients/completions.json +0 -1151
- package/tests/manual/clients/completions.test.ts +0 -198
- package/tests/manual/file-edits/figma.test.ts +0 -3
- package/tests/manual/file-edits/fileblocks/readwrite.test.ts +0 -100
- package/tests/manual/file-edits/patching/input.txt +0 -145
- package/tests/manual/file-edits/patching/output.txt +0 -145
- package/tests/manual/file-edits/patching/patch.txt +0 -15
- package/tests/manual/file-edits/patching/unseen.txt +0 -80
- package/tests/manual/file-edits/patching.test.ts +0 -139
- package/tests/manual/modalities/README.md +0 -157
- package/tests/manual/modalities/google.modalities.test.ts +0 -335
- package/tests/manual/modalities/openai.modalities.test.ts +0 -329
- package/tests/manual/modalities/streaming.test.ts +0 -260
- package/tests/manual/modalities/xai.modalities.test.ts +0 -294
- package/tests/manual/test-concurrent-ask.ts +0 -43
- package/tests/manual/ycmd/debug_diagnostics_test.ts +0 -127
- package/tests/manual/ycmd/fixtures/debug_diagnostics.ts +0 -26
- package/tests/manual/ycmd/fixtures/file_change_test.ts +0 -17
- package/tests/manual/ycmd/minimal_advanced_test.ts +0 -108
- package/tests/manual/ycmd/simple_diagnostics_test.ts +0 -61
- package/tests/manual/ycmd/simple_test.ts +0 -74
- package/tests/manual/ycmd/test-typescript-sample.ts +0 -34
- package/tests/manual/ycmd/test_advanced_features.ts +0 -407
- package/tests/manual/ycmd/test_advanced_with_tools.ts +0 -320
- package/tests/manual/ycmd/test_comprehensive_typescript.ts +0 -179
- package/tests/manual/ycmd/test_diagnostics_file_changes.ts +0 -249
- package/tests/manual/ycmd/test_diagnostics_fix.ts +0 -99
- package/tests/manual/ycmd/test_diagnostics_simple.ts +0 -100
- package/tests/manual/ycmd/test_diagnostics_timing.ts +0 -120
- package/tests/manual/ycmd/test_discover_commands.ts +0 -310
- package/tests/manual/ycmd/test_endpoints.ts +0 -115
- package/tests/manual/ycmd/test_final_comprehensive.ts +0 -218
- package/tests/manual/ycmd/test_final_validation.ts +0 -150
- package/tests/manual/ycmd/test_implementation.js +0 -42
- package/tests/manual/ycmd/test_individual_ycmd_tool.ts +0 -39
- package/tests/manual/ycmd/test_server_manager.ts +0 -52
- package/tests/manual/ycmd/test_simple_debug.ts +0 -86
- package/tests/manual/ycmd/test_tsserver_workflow.js +0 -83
- package/tests/manual/ycmd/test_tsserver_workflow.ts +0 -122
- package/tests/manual/ycmd/test_typescript_simple.ts +0 -48
- package/tests/manual/ycmd/test_typescript_ycmd.ts +0 -105
- package/tests/manual/ycmd/test_workspace_config.ts +0 -90
- package/tests/manual/ycmd/test_ycmd_auto_start.ts +0 -137
- package/tests/manual/ycmd/test_ycmd_comprehensive.ts +0 -73
- package/tests/manual/ycmd/test_ycmd_connection.py +0 -10
- package/tests/manual/ycmd/test_ycmd_direct.ts +0 -142
- package/tests/manual/ycmd/test_ycmd_experiment.ts +0 -48
- package/tests/manual/ycmd/test_ycmd_final.ts +0 -200
- package/tests/manual/ycmd/test_ycmd_fixed.py +0 -18
- package/tests/manual/ycmd/test_ycmd_integration.ts +0 -112
- package/tests/manual/ycmd/test_ycmd_simple.ts +0 -45
- package/tests/manual/ycmd/test_ycmd_usage.py +0 -27
- package/tests/manual/ycmd/working_simple_test.ts +0 -134
- package/tests/patching/corrupted.test.ts +0 -78
- package/tests/patching/fixtures/transcript-mangles/agent-sync-fs-nested-catch.json +0 -9
- package/tests/patching/fixtures/transcript-mangles/automation-functions-crossed.json +0 -9
- package/tests/patching/fixtures/transcript-mangles/fruit-ninja-confirmed-retirement.json +0 -8
- package/tests/patching/imports.patch.txt +0 -11
- package/tests/patching/imports.test.ts +0 -43
- package/tests/patching/imports.txt +0 -11
- package/tests/patching/interface.patch.txt +0 -15
- package/tests/patching/interface.txt +0 -7
- package/tests/patching/patchFileOutput.test.ts +0 -328
- package/tests/patching/regression-2026.test.ts +0 -752
- package/tests/patching/transcriptMangleRegression.test.ts +0 -125
- package/tests/plugins/language/languagePlugin-content-triggers.test.ts +0 -346
- package/tests/plugins/language/languagePlugin-integration.test.ts +0 -471
- package/tests/plugins/language/languagePlugin.test.ts +0 -385
- package/tests/processes/managedProcessShim.test.ts +0 -59
- package/tests/processors/Base64ImageDetector.test.ts +0 -979
- package/tests/processors/CustomVariables.test.ts +0 -981
- package/tests/processors/CustomVariablesBenchmark.test.ts +0 -237
- package/tests/processors/HarmonyToolProcessor.test.ts +0 -490
- package/tests/processors/TokenCompressor.test.ts +0 -674
- package/tests/processors/ToolResponseCache.test.ts +0 -864
- package/tests/processors/tools/boundedRetrievalTools.test.ts +0 -68
- package/tests/processors/tools/grepToolResponse.test.ts +0 -159
- package/tests/services/ConversionService.test.ts +0 -154
- package/tests/services/DockerService.test.ts +0 -24
- package/tests/services/Tools.test.ts +0 -1738
- package/tests/services/ToolsService.setFunction.test.ts +0 -68
- package/tests/services/WorkerReloadConfig.test.ts +0 -141
- package/tests/test.spec.ts +0 -163
- package/tests/unit/InputQueueManager.test.ts +0 -174
- package/tests/unit/McpWebsocketTransport.test.ts +0 -56
- package/tests/unit/agents/historyRollback.test.ts +0 -53
- package/tests/unit/agents/tools/loadImageAsBase64.test.ts +0 -44
- package/tests/unit/auth/jwtStore.test.ts +0 -55
- package/tests/unit/auth/keyAuth.test.ts +0 -152
- package/tests/unit/auth/keyManager.test.ts +0 -130
- package/tests/unit/auth/registerIdentity.test.ts +0 -99
- package/tests/unit/chat/ToolCommandModule.test.ts +0 -71
- package/tests/unit/chat/historyCommandArgs.test.ts +0 -37
- package/tests/unit/clients/AIClient.test.ts +0 -454
- package/tests/unit/clients/anthropic.responseMetadata.test.ts +0 -81
- package/tests/unit/clients/attribution.test.ts +0 -185
- package/tests/unit/clients/http.responseMetadata.test.ts +0 -86
- package/tests/unit/clients/openai.responseMetadata.test.ts +0 -90
- package/tests/unit/clients/responseMetadata.test.ts +0 -123
- package/tests/unit/clients/withRetry.test.ts +0 -319
- package/tests/unit/commands/agents.test.ts +0 -111
- package/tests/unit/commands/github-credentials.test.ts +0 -210
- package/tests/unit/commands/misc.test.ts +0 -85
- package/tests/unit/commands/remote.test.ts +0 -79
- package/tests/unit/commands/sandbox.test.ts +0 -350
- package/tests/unit/hashes.test.ts +0 -23
- package/tests/unit/input-queue.test.ts +0 -80
- package/tests/unit/login.test.ts +0 -218
- package/tests/unit/modules/moduleLoading.test.ts +0 -305
- package/tests/unit/plugins/pluginLoading.test.ts +0 -97
- package/tests/unit/services/AgentSyncKnowhowWeb.test.ts +0 -38
- package/tests/unit/services/KnowhowClient.test.ts +0 -84
- package/tests/unit/services/LazyToolsService.test.ts +0 -53
- package/tests/unit/services/Mcp.test.ts +0 -56
- package/tests/unit/services/MinimalToolsService.test.ts +0 -424
- package/tests/unit/services/RuntimeReloadService.test.ts +0 -29
- package/tests/unit/services/SessionManager.test.ts +0 -43
- package/tests/unit/services/SyncedAgentWatcher.test.ts +0 -89
- package/tests/unit/services/SyncerService.test.ts +0 -45
- package/tests/unit/tunnel.test.ts +0 -51
- package/tests/unit/util/Trace.test.ts +0 -119
- package/tests/unit/utils/http.test.ts +0 -43
- package/ts_build/tests/XmlToolCallProcessor.test.d.ts +0 -1
- package/ts_build/tests/XmlToolCallProcessor.test.js +0 -376
- package/ts_build/tests/XmlToolCallProcessor.test.js.map +0 -1
- package/ts_build/tests/agents/interrupt.test.d.ts +0 -14
- package/ts_build/tests/agents/interrupt.test.js +0 -136
- package/ts_build/tests/agents/interrupt.test.js.map +0 -1
- package/ts_build/tests/agents/observe-base.test.d.ts +0 -1
- package/ts_build/tests/agents/observe-base.test.js +0 -149
- package/ts_build/tests/agents/observe-base.test.js.map +0 -1
- package/ts_build/tests/agents/tools/connectAgent.test.d.ts +0 -1
- package/ts_build/tests/agents/tools/connectAgent.test.js +0 -142
- package/ts_build/tests/agents/tools/connectAgent.test.js.map +0 -1
- package/ts_build/tests/agents/tools/observe.test.d.ts +0 -1
- package/ts_build/tests/agents/tools/observe.test.js +0 -148
- package/ts_build/tests/agents/tools/observe.test.js.map +0 -1
- package/ts_build/tests/agents/tools/readFile.test.d.ts +0 -1
- package/ts_build/tests/agents/tools/readFile.test.js +0 -90
- package/ts_build/tests/agents/tools/readFile.test.js.map +0 -1
- package/ts_build/tests/agents/tools/replyToParent.test.d.ts +0 -1
- package/ts_build/tests/agents/tools/replyToParent.test.js +0 -116
- package/ts_build/tests/agents/tools/replyToParent.test.js.map +0 -1
- package/ts_build/tests/agents/tools/sendAgentMessage.test.d.ts +0 -1
- package/ts_build/tests/agents/tools/sendAgentMessage.test.js +0 -112
- package/ts_build/tests/agents/tools/sendAgentMessage.test.js.map +0 -1
- package/ts_build/tests/agents/tools/waitForAgentCompleted.test.d.ts +0 -1
- package/ts_build/tests/agents/tools/waitForAgentCompleted.test.js +0 -147
- package/ts_build/tests/agents/tools/waitForAgentCompleted.test.js.map +0 -1
- package/ts_build/tests/chat/detach-attach-rendering.test.d.ts +0 -1
- package/ts_build/tests/chat/detach-attach-rendering.test.js +0 -168
- package/ts_build/tests/chat/detach-attach-rendering.test.js.map +0 -1
- package/ts_build/tests/clients/AIClient.test.d.ts +0 -1
- package/ts_build/tests/clients/AIClient.test.js +0 -483
- package/ts_build/tests/clients/AIClient.test.js.map +0 -1
- package/ts_build/tests/clients/anthropic.test.d.ts +0 -1
- package/ts_build/tests/clients/anthropic.test.js +0 -159
- package/ts_build/tests/clients/anthropic.test.js.map +0 -1
- package/ts_build/tests/clients/contextLimits.test.d.ts +0 -1
- package/ts_build/tests/clients/contextLimits.test.js +0 -69
- package/ts_build/tests/clients/contextLimits.test.js.map +0 -1
- package/ts_build/tests/clients/fireworks.test.d.ts +0 -1
- package/ts_build/tests/clients/fireworks.test.js +0 -65
- package/ts_build/tests/clients/fireworks.test.js.map +0 -1
- package/ts_build/tests/clients/openai.images.test.d.ts +0 -1
- package/ts_build/tests/clients/openai.images.test.js +0 -94
- package/ts_build/tests/clients/openai.images.test.js.map +0 -1
- package/ts_build/tests/clients/pricing.test.d.ts +0 -1
- package/ts_build/tests/clients/pricing.test.js +0 -124
- package/ts_build/tests/clients/pricing.test.js.map +0 -1
- package/ts_build/tests/clients/reasoningEffort.test.d.ts +0 -1
- package/ts_build/tests/clients/reasoningEffort.test.js +0 -116
- package/ts_build/tests/clients/reasoningEffort.test.js.map +0 -1
- package/ts_build/tests/compressor/bigstring.test.d.ts +0 -1
- package/ts_build/tests/compressor/bigstring.test.js +0 -275
- package/ts_build/tests/compressor/bigstring.test.js.map +0 -1
- package/ts_build/tests/compressor/toolResponseCache.test.d.ts +0 -1
- package/ts_build/tests/compressor/toolResponseCache.test.js +0 -250
- package/ts_build/tests/compressor/toolResponseCache.test.js.map +0 -1
- package/ts_build/tests/compressor/usageBase64.test.d.ts +0 -1
- package/ts_build/tests/compressor/usageBase64.test.js +0 -109
- package/ts_build/tests/compressor/usageBase64.test.js.map +0 -1
- package/ts_build/tests/manual/agent-events/run-test.d.ts +0 -2
- package/ts_build/tests/manual/agent-events/run-test.js +0 -148
- package/ts_build/tests/manual/agent-events/run-test.js.map +0 -1
- package/ts_build/tests/manual/browser-login/test_browser_login_basic.d.ts +0 -2
- package/ts_build/tests/manual/browser-login/test_browser_login_basic.js +0 -118
- package/ts_build/tests/manual/browser-login/test_browser_login_basic.js.map +0 -1
- package/ts_build/tests/manual/browser-login/test_cli_integration.d.ts +0 -2
- package/ts_build/tests/manual/browser-login/test_cli_integration.js +0 -163
- package/ts_build/tests/manual/browser-login/test_cli_integration.js.map +0 -1
- package/ts_build/tests/manual/browser-login/test_cross_platform_browser.d.ts +0 -2
- package/ts_build/tests/manual/browser-login/test_cross_platform_browser.js +0 -169
- package/ts_build/tests/manual/browser-login/test_cross_platform_browser.js.map +0 -1
- package/ts_build/tests/manual/browser-login/test_error_scenarios.d.ts +0 -2
- package/ts_build/tests/manual/browser-login/test_error_scenarios.js +0 -207
- package/ts_build/tests/manual/browser-login/test_error_scenarios.js.map +0 -1
- package/ts_build/tests/manual/clients/completions.test.d.ts +0 -1
- package/ts_build/tests/manual/clients/completions.test.js +0 -151
- package/ts_build/tests/manual/clients/completions.test.js.map +0 -1
- package/ts_build/tests/manual/file-edits/figma.test.d.ts +0 -0
- package/ts_build/tests/manual/file-edits/figma.test.js +0 -2
- package/ts_build/tests/manual/file-edits/figma.test.js.map +0 -1
- package/ts_build/tests/manual/file-edits/fileblocks/readwrite.test.d.ts +0 -1
- package/ts_build/tests/manual/file-edits/fileblocks/readwrite.test.js +0 -110
- package/ts_build/tests/manual/file-edits/fileblocks/readwrite.test.js.map +0 -1
- package/ts_build/tests/manual/file-edits/patching.test.d.ts +0 -1
- package/ts_build/tests/manual/file-edits/patching.test.js +0 -129
- package/ts_build/tests/manual/file-edits/patching.test.js.map +0 -1
- package/ts_build/tests/manual/modalities/google.modalities.test.d.ts +0 -1
- package/ts_build/tests/manual/modalities/google.modalities.test.js +0 -262
- package/ts_build/tests/manual/modalities/google.modalities.test.js.map +0 -1
- package/ts_build/tests/manual/modalities/openai.modalities.test.d.ts +0 -1
- package/ts_build/tests/manual/modalities/openai.modalities.test.js +0 -262
- package/ts_build/tests/manual/modalities/openai.modalities.test.js.map +0 -1
- package/ts_build/tests/manual/modalities/streaming.test.d.ts +0 -1
- package/ts_build/tests/manual/modalities/streaming.test.js +0 -216
- package/ts_build/tests/manual/modalities/streaming.test.js.map +0 -1
- package/ts_build/tests/manual/modalities/xai.modalities.test.d.ts +0 -1
- package/ts_build/tests/manual/modalities/xai.modalities.test.js +0 -219
- package/ts_build/tests/manual/modalities/xai.modalities.test.js.map +0 -1
- package/ts_build/tests/manual/test-concurrent-ask.d.ts +0 -1
- package/ts_build/tests/manual/test-concurrent-ask.js +0 -22
- package/ts_build/tests/manual/test-concurrent-ask.js.map +0 -1
- package/ts_build/tests/manual/ycmd/debug_diagnostics_test.d.ts +0 -1
- package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js +0 -124
- package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js.map +0 -1
- package/ts_build/tests/manual/ycmd/minimal_advanced_test.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/minimal_advanced_test.js +0 -114
- package/ts_build/tests/manual/ycmd/minimal_advanced_test.js.map +0 -1
- package/ts_build/tests/manual/ycmd/simple_diagnostics_test.d.ts +0 -1
- package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js +0 -84
- package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js.map +0 -1
- package/ts_build/tests/manual/ycmd/simple_test.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/simple_test.js +0 -92
- package/ts_build/tests/manual/ycmd/simple_test.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test-typescript-sample.d.ts +0 -14
- package/ts_build/tests/manual/ycmd/test-typescript-sample.js +0 -20
- package/ts_build/tests/manual/ycmd/test-typescript-sample.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_advanced_features.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/test_advanced_features.js +0 -306
- package/ts_build/tests/manual/ycmd/test_advanced_features.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_advanced_with_tools.d.ts +0 -3
- package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js +0 -271
- package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js +0 -196
- package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.d.ts +0 -1
- package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js +0 -184
- package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_diagnostics_fix.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js +0 -116
- package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_diagnostics_simple.d.ts +0 -1
- package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js +0 -114
- package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_diagnostics_timing.d.ts +0 -1
- package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js +0 -129
- package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_discover_commands.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/test_discover_commands.js +0 -252
- package/ts_build/tests/manual/ycmd/test_discover_commands.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_endpoints.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/test_endpoints.js +0 -130
- package/ts_build/tests/manual/ycmd/test_endpoints.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_final_comprehensive.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/test_final_comprehensive.js +0 -231
- package/ts_build/tests/manual/ycmd/test_final_comprehensive.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_final_validation.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/test_final_validation.js +0 -170
- package/ts_build/tests/manual/ycmd/test_final_validation.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.js +0 -37
- package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_server_manager.d.ts +0 -1
- package/ts_build/tests/manual/ycmd/test_server_manager.js +0 -38
- package/ts_build/tests/manual/ycmd/test_server_manager.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_simple_debug.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/test_simple_debug.js +0 -109
- package/ts_build/tests/manual/ycmd/test_simple_debug.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_tsserver_workflow.d.ts +0 -1
- package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js +0 -138
- package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_typescript_simple.d.ts +0 -1
- package/ts_build/tests/manual/ycmd/test_typescript_simple.js +0 -76
- package/ts_build/tests/manual/ycmd/test_typescript_simple.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_typescript_ycmd.d.ts +0 -1
- package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js +0 -115
- package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_workspace_config.d.ts +0 -1
- package/ts_build/tests/manual/ycmd/test_workspace_config.js +0 -99
- package/ts_build/tests/manual/ycmd/test_workspace_config.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js +0 -140
- package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.d.ts +0 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js +0 -93
- package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_direct.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/test_ycmd_direct.js +0 -159
- package/ts_build/tests/manual/ycmd/test_ycmd_direct.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_experiment.d.ts +0 -15
- package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js +0 -68
- package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_final.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/test_ycmd_final.js +0 -205
- package/ts_build/tests/manual/ycmd/test_ycmd_final.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_integration.d.ts +0 -3
- package/ts_build/tests/manual/ycmd/test_ycmd_integration.js +0 -119
- package/ts_build/tests/manual/ycmd/test_ycmd_integration.js.map +0 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_simple.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/test_ycmd_simple.js +0 -36
- package/ts_build/tests/manual/ycmd/test_ycmd_simple.js.map +0 -1
- package/ts_build/tests/manual/ycmd/working_simple_test.d.ts +0 -2
- package/ts_build/tests/manual/ycmd/working_simple_test.js +0 -144
- package/ts_build/tests/manual/ycmd/working_simple_test.js.map +0 -1
- package/ts_build/tests/patching/corrupted.test.d.ts +0 -1
- package/ts_build/tests/patching/corrupted.test.js +0 -53
- package/ts_build/tests/patching/corrupted.test.js.map +0 -1
- package/ts_build/tests/patching/imports.test.d.ts +0 -1
- package/ts_build/tests/patching/imports.test.js +0 -71
- package/ts_build/tests/patching/imports.test.js.map +0 -1
- package/ts_build/tests/patching/patchFileOutput.test.d.ts +0 -1
- package/ts_build/tests/patching/patchFileOutput.test.js +0 -269
- package/ts_build/tests/patching/patchFileOutput.test.js.map +0 -1
- package/ts_build/tests/patching/regression-2026.test.d.ts +0 -1
- package/ts_build/tests/patching/regression-2026.test.js +0 -528
- package/ts_build/tests/patching/regression-2026.test.js.map +0 -1
- package/ts_build/tests/patching/transcriptMangleRegression.test.d.ts +0 -1
- package/ts_build/tests/patching/transcriptMangleRegression.test.js +0 -104
- package/ts_build/tests/patching/transcriptMangleRegression.test.js.map +0 -1
- package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.d.ts +0 -1
- package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js +0 -294
- package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js.map +0 -1
- package/ts_build/tests/plugins/language/languagePlugin-integration.test.d.ts +0 -1
- package/ts_build/tests/plugins/language/languagePlugin-integration.test.js +0 -343
- package/ts_build/tests/plugins/language/languagePlugin-integration.test.js.map +0 -1
- package/ts_build/tests/plugins/language/languagePlugin.test.d.ts +0 -1
- package/ts_build/tests/plugins/language/languagePlugin.test.js +0 -315
- package/ts_build/tests/plugins/language/languagePlugin.test.js.map +0 -1
- package/ts_build/tests/processes/managedProcessShim.test.d.ts +0 -1
- package/ts_build/tests/processes/managedProcessShim.test.js +0 -92
- package/ts_build/tests/processes/managedProcessShim.test.js.map +0 -1
- package/ts_build/tests/processors/Base64ImageDetector.test.d.ts +0 -1
- package/ts_build/tests/processors/Base64ImageDetector.test.js +0 -792
- package/ts_build/tests/processors/Base64ImageDetector.test.js.map +0 -1
- package/ts_build/tests/processors/CustomVariables.test.d.ts +0 -1
- package/ts_build/tests/processors/CustomVariables.test.js +0 -764
- package/ts_build/tests/processors/CustomVariables.test.js.map +0 -1
- package/ts_build/tests/processors/CustomVariablesBenchmark.test.d.ts +0 -1
- package/ts_build/tests/processors/CustomVariablesBenchmark.test.js +0 -179
- package/ts_build/tests/processors/CustomVariablesBenchmark.test.js.map +0 -1
- package/ts_build/tests/processors/HarmonyToolProcessor.test.d.ts +0 -1
- package/ts_build/tests/processors/HarmonyToolProcessor.test.js +0 -382
- package/ts_build/tests/processors/HarmonyToolProcessor.test.js.map +0 -1
- package/ts_build/tests/processors/TokenCompressor.test.d.ts +0 -1
- package/ts_build/tests/processors/TokenCompressor.test.js +0 -473
- package/ts_build/tests/processors/TokenCompressor.test.js.map +0 -1
- package/ts_build/tests/processors/ToolResponseCache.test.d.ts +0 -1
- package/ts_build/tests/processors/ToolResponseCache.test.js +0 -657
- package/ts_build/tests/processors/ToolResponseCache.test.js.map +0 -1
- package/ts_build/tests/processors/tools/boundedRetrievalTools.test.d.ts +0 -1
- package/ts_build/tests/processors/tools/boundedRetrievalTools.test.js +0 -57
- package/ts_build/tests/processors/tools/boundedRetrievalTools.test.js.map +0 -1
- package/ts_build/tests/processors/tools/grepToolResponse.test.d.ts +0 -1
- package/ts_build/tests/processors/tools/grepToolResponse.test.js +0 -77
- package/ts_build/tests/processors/tools/grepToolResponse.test.js.map +0 -1
- package/ts_build/tests/services/ConversionService.test.d.ts +0 -1
- package/ts_build/tests/services/ConversionService.test.js +0 -154
- package/ts_build/tests/services/ConversionService.test.js.map +0 -1
- package/ts_build/tests/services/DockerService.test.d.ts +0 -1
- package/ts_build/tests/services/DockerService.test.js +0 -22
- package/ts_build/tests/services/DockerService.test.js.map +0 -1
- package/ts_build/tests/services/Tools.test.d.ts +0 -1
- package/ts_build/tests/services/Tools.test.js +0 -1365
- package/ts_build/tests/services/Tools.test.js.map +0 -1
- package/ts_build/tests/services/ToolsService.setFunction.test.d.ts +0 -1
- package/ts_build/tests/services/ToolsService.setFunction.test.js +0 -51
- package/ts_build/tests/services/ToolsService.setFunction.test.js.map +0 -1
- package/ts_build/tests/services/WorkerReloadConfig.test.d.ts +0 -1
- package/ts_build/tests/services/WorkerReloadConfig.test.js +0 -86
- package/ts_build/tests/services/WorkerReloadConfig.test.js.map +0 -1
- package/ts_build/tests/test.spec.d.ts +0 -1
- package/ts_build/tests/test.spec.js +0 -139
- package/ts_build/tests/test.spec.js.map +0 -1
- package/ts_build/tests/unit/InputQueueManager.test.d.ts +0 -1
- package/ts_build/tests/unit/InputQueueManager.test.js +0 -104
- package/ts_build/tests/unit/InputQueueManager.test.js.map +0 -1
- package/ts_build/tests/unit/McpWebsocketTransport.test.d.ts +0 -1
- package/ts_build/tests/unit/McpWebsocketTransport.test.js +0 -47
- package/ts_build/tests/unit/McpWebsocketTransport.test.js.map +0 -1
- package/ts_build/tests/unit/agents/historyRollback.test.d.ts +0 -1
- package/ts_build/tests/unit/agents/historyRollback.test.js +0 -42
- package/ts_build/tests/unit/agents/historyRollback.test.js.map +0 -1
- package/ts_build/tests/unit/agents/tools/loadImageAsBase64.test.d.ts +0 -1
- package/ts_build/tests/unit/agents/tools/loadImageAsBase64.test.js +0 -67
- package/ts_build/tests/unit/agents/tools/loadImageAsBase64.test.js.map +0 -1
- package/ts_build/tests/unit/auth/jwtStore.test.d.ts +0 -1
- package/ts_build/tests/unit/auth/jwtStore.test.js +0 -46
- package/ts_build/tests/unit/auth/jwtStore.test.js.map +0 -1
- package/ts_build/tests/unit/auth/keyAuth.test.d.ts +0 -1
- package/ts_build/tests/unit/auth/keyAuth.test.js +0 -118
- package/ts_build/tests/unit/auth/keyAuth.test.js.map +0 -1
- package/ts_build/tests/unit/auth/keyManager.test.d.ts +0 -1
- package/ts_build/tests/unit/auth/keyManager.test.js +0 -96
- package/ts_build/tests/unit/auth/keyManager.test.js.map +0 -1
- package/ts_build/tests/unit/auth/registerIdentity.test.d.ts +0 -1
- package/ts_build/tests/unit/auth/registerIdentity.test.js +0 -92
- package/ts_build/tests/unit/auth/registerIdentity.test.js.map +0 -1
- package/ts_build/tests/unit/chat/ToolCommandModule.test.d.ts +0 -1
- package/ts_build/tests/unit/chat/ToolCommandModule.test.js +0 -61
- package/ts_build/tests/unit/chat/ToolCommandModule.test.js.map +0 -1
- package/ts_build/tests/unit/chat/historyCommandArgs.test.d.ts +0 -1
- package/ts_build/tests/unit/chat/historyCommandArgs.test.js +0 -29
- package/ts_build/tests/unit/chat/historyCommandArgs.test.js.map +0 -1
- package/ts_build/tests/unit/clients/AIClient.test.d.ts +0 -1
- package/ts_build/tests/unit/clients/AIClient.test.js +0 -342
- package/ts_build/tests/unit/clients/AIClient.test.js.map +0 -1
- package/ts_build/tests/unit/clients/anthropic.responseMetadata.test.d.ts +0 -1
- package/ts_build/tests/unit/clients/anthropic.responseMetadata.test.js +0 -77
- package/ts_build/tests/unit/clients/anthropic.responseMetadata.test.js.map +0 -1
- package/ts_build/tests/unit/clients/attribution.test.d.ts +0 -1
- package/ts_build/tests/unit/clients/attribution.test.js +0 -153
- package/ts_build/tests/unit/clients/attribution.test.js.map +0 -1
- package/ts_build/tests/unit/clients/http.responseMetadata.test.d.ts +0 -1
- package/ts_build/tests/unit/clients/http.responseMetadata.test.js +0 -77
- package/ts_build/tests/unit/clients/http.responseMetadata.test.js.map +0 -1
- package/ts_build/tests/unit/clients/openai.responseMetadata.test.d.ts +0 -1
- package/ts_build/tests/unit/clients/openai.responseMetadata.test.js +0 -86
- package/ts_build/tests/unit/clients/openai.responseMetadata.test.js.map +0 -1
- package/ts_build/tests/unit/clients/responseMetadata.test.d.ts +0 -1
- package/ts_build/tests/unit/clients/responseMetadata.test.js +0 -96
- package/ts_build/tests/unit/clients/responseMetadata.test.js.map +0 -1
- package/ts_build/tests/unit/clients/withRetry.test.d.ts +0 -1
- package/ts_build/tests/unit/clients/withRetry.test.js +0 -225
- package/ts_build/tests/unit/clients/withRetry.test.js.map +0 -1
- package/ts_build/tests/unit/commands/agents.test.d.ts +0 -1
- package/ts_build/tests/unit/commands/agents.test.js +0 -119
- package/ts_build/tests/unit/commands/agents.test.js.map +0 -1
- package/ts_build/tests/unit/commands/github-credentials.test.d.ts +0 -1
- package/ts_build/tests/unit/commands/github-credentials.test.js +0 -145
- package/ts_build/tests/unit/commands/github-credentials.test.js.map +0 -1
- package/ts_build/tests/unit/commands/misc.test.d.ts +0 -1
- package/ts_build/tests/unit/commands/misc.test.js +0 -70
- package/ts_build/tests/unit/commands/misc.test.js.map +0 -1
- package/ts_build/tests/unit/commands/remote.test.d.ts +0 -1
- package/ts_build/tests/unit/commands/remote.test.js +0 -70
- package/ts_build/tests/unit/commands/remote.test.js.map +0 -1
- package/ts_build/tests/unit/commands/sandbox.test.d.ts +0 -1
- package/ts_build/tests/unit/commands/sandbox.test.js +0 -258
- package/ts_build/tests/unit/commands/sandbox.test.js.map +0 -1
- package/ts_build/tests/unit/hashes.test.d.ts +0 -1
- package/ts_build/tests/unit/hashes.test.js +0 -25
- package/ts_build/tests/unit/hashes.test.js.map +0 -1
- package/ts_build/tests/unit/input-queue.test.d.ts +0 -1
- package/ts_build/tests/unit/input-queue.test.js +0 -32
- package/ts_build/tests/unit/input-queue.test.js.map +0 -1
- package/ts_build/tests/unit/login.test.d.ts +0 -1
- package/ts_build/tests/unit/login.test.js +0 -166
- package/ts_build/tests/unit/login.test.js.map +0 -1
- package/ts_build/tests/unit/modules/moduleLoading.test.d.ts +0 -1
- package/ts_build/tests/unit/modules/moduleLoading.test.js +0 -272
- package/ts_build/tests/unit/modules/moduleLoading.test.js.map +0 -1
- package/ts_build/tests/unit/plugins/pluginLoading.test.d.ts +0 -1
- package/ts_build/tests/unit/plugins/pluginLoading.test.js +0 -117
- package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +0 -1
- package/ts_build/tests/unit/services/AgentSyncKnowhowWeb.test.d.ts +0 -1
- package/ts_build/tests/unit/services/AgentSyncKnowhowWeb.test.js +0 -32
- package/ts_build/tests/unit/services/AgentSyncKnowhowWeb.test.js.map +0 -1
- package/ts_build/tests/unit/services/KnowhowClient.test.d.ts +0 -1
- package/ts_build/tests/unit/services/KnowhowClient.test.js +0 -69
- package/ts_build/tests/unit/services/KnowhowClient.test.js.map +0 -1
- package/ts_build/tests/unit/services/LazyToolsService.test.d.ts +0 -1
- package/ts_build/tests/unit/services/LazyToolsService.test.js +0 -47
- package/ts_build/tests/unit/services/LazyToolsService.test.js.map +0 -1
- package/ts_build/tests/unit/services/Mcp.test.d.ts +0 -1
- package/ts_build/tests/unit/services/Mcp.test.js +0 -45
- package/ts_build/tests/unit/services/Mcp.test.js.map +0 -1
- package/ts_build/tests/unit/services/MinimalToolsService.test.d.ts +0 -1
- package/ts_build/tests/unit/services/MinimalToolsService.test.js +0 -320
- package/ts_build/tests/unit/services/MinimalToolsService.test.js.map +0 -1
- package/ts_build/tests/unit/services/RuntimeReloadService.test.d.ts +0 -1
- package/ts_build/tests/unit/services/RuntimeReloadService.test.js +0 -26
- package/ts_build/tests/unit/services/RuntimeReloadService.test.js.map +0 -1
- package/ts_build/tests/unit/services/SessionManager.test.d.ts +0 -1
- package/ts_build/tests/unit/services/SessionManager.test.js +0 -72
- package/ts_build/tests/unit/services/SessionManager.test.js.map +0 -1
- package/ts_build/tests/unit/services/SyncedAgentWatcher.test.d.ts +0 -1
- package/ts_build/tests/unit/services/SyncedAgentWatcher.test.js +0 -78
- package/ts_build/tests/unit/services/SyncedAgentWatcher.test.js.map +0 -1
- package/ts_build/tests/unit/services/SyncerService.test.d.ts +0 -1
- package/ts_build/tests/unit/services/SyncerService.test.js +0 -40
- package/ts_build/tests/unit/services/SyncerService.test.js.map +0 -1
- package/ts_build/tests/unit/tunnel.test.d.ts +0 -1
- package/ts_build/tests/unit/tunnel.test.js +0 -47
- package/ts_build/tests/unit/tunnel.test.js.map +0 -1
- package/ts_build/tests/unit/util/Trace.test.d.ts +0 -1
- package/ts_build/tests/unit/util/Trace.test.js +0 -107
- package/ts_build/tests/unit/util/Trace.test.js.map +0 -1
- package/ts_build/tests/unit/utils/http.test.d.ts +0 -1
- package/ts_build/tests/unit/utils/http.test.js +0 -69
- package/ts_build/tests/unit/utils/http.test.js.map +0 -1
- package/tsconfig.json +0 -34
- package/tslint.json +0 -11
|
@@ -1,493 +0,0 @@
|
|
|
1
|
-
import readline from "node:readline";
|
|
2
|
-
|
|
3
|
-
// Callback type for notifying when a new history entry is added
|
|
4
|
-
type OnNewHistoryEntry = (entry: string) => void;
|
|
5
|
-
|
|
6
|
-
type AskOptions = {
|
|
7
|
-
question: string;
|
|
8
|
-
options?: string[];
|
|
9
|
-
history?: string[];
|
|
10
|
-
resolve: (value: string) => void;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export class InputQueueManager {
|
|
14
|
-
private stack: AskOptions[] = [];
|
|
15
|
-
private static instance: InputQueueManager | null = null;
|
|
16
|
-
private static rl: readline.Interface | null = null;
|
|
17
|
-
private static keypressListenerSetup = false;
|
|
18
|
-
|
|
19
|
-
// Tab completion state
|
|
20
|
-
private lastKeypressWasTab = false;
|
|
21
|
-
|
|
22
|
-
// We keep one "live" buffer shared across stacked questions
|
|
23
|
-
// (so typing is preserved when questions change)
|
|
24
|
-
private currentLine = "";
|
|
25
|
-
|
|
26
|
-
// Paste detection - buffer lines during paste operations
|
|
27
|
-
private pasteBuffer: string[] = [];
|
|
28
|
-
private pasteTimeout: NodeJS.Timeout | null = null;
|
|
29
|
-
private readonly PASTE_DELAY_MS = 10; // Time to wait for more paste lines
|
|
30
|
-
|
|
31
|
-
// History navigation state - uses only the history passed to ask()
|
|
32
|
-
private historyIndex = -1;
|
|
33
|
-
private savedLineBeforeHistory = "";
|
|
34
|
-
|
|
35
|
-
// Callback to notify caller when a new entry should be added to history
|
|
36
|
-
// This allows CliChatService to update inputHistory immediately
|
|
37
|
-
private onNewEntry?: OnNewHistoryEntry;
|
|
38
|
-
|
|
39
|
-
constructor() {
|
|
40
|
-
// Store the current instance as the singleton
|
|
41
|
-
InputQueueManager.instance = this;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Set a callback to be notified when user enters a new history entry.
|
|
46
|
-
* This allows the caller to update their history source immediately.
|
|
47
|
-
*/
|
|
48
|
-
setOnNewEntry(callback: OnNewHistoryEntry | undefined): void {
|
|
49
|
-
this.onNewEntry = callback;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
private ensureRl(): readline.Interface {
|
|
53
|
-
if (InputQueueManager.rl) return InputQueueManager.rl;
|
|
54
|
-
|
|
55
|
-
InputQueueManager.rl = readline.createInterface({
|
|
56
|
-
input: process.stdin,
|
|
57
|
-
output: process.stdout,
|
|
58
|
-
terminal: true,
|
|
59
|
-
// Disable readline's internal history - we manage history ourselves
|
|
60
|
-
historySize: 0,
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Disable readline's built-in completion display - we handle Tab ourselves
|
|
64
|
-
* in the keypress listener to avoid readline's kRefreshLine overwriting
|
|
65
|
-
* small completion lists (lists that fit in 1-2 lines get erased).
|
|
66
|
-
*/
|
|
67
|
-
completer: (line: string) => [[], line],
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
// When user presses Enter, buffer the line for paste detection
|
|
71
|
-
InputQueueManager.rl.on("line", (line) => {
|
|
72
|
-
const current = this.peek();
|
|
73
|
-
if (!current) return;
|
|
74
|
-
|
|
75
|
-
// Detect paste operation: if we receive a line while already processing lines,
|
|
76
|
-
// it's likely part of a paste. Buffer it and wait for more.
|
|
77
|
-
if (this.pasteTimeout) {
|
|
78
|
-
// Already in paste mode, add to buffer
|
|
79
|
-
this.pasteBuffer.push(line);
|
|
80
|
-
clearTimeout(this.pasteTimeout);
|
|
81
|
-
this.pasteTimeout = setTimeout(
|
|
82
|
-
() => this.flushPasteBuffer(),
|
|
83
|
-
this.PASTE_DELAY_MS
|
|
84
|
-
);
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
// Start paste detection mode - buffer this line and wait to see if more come
|
|
89
|
-
this.pasteBuffer.push(line);
|
|
90
|
-
this.pasteTimeout = setTimeout(
|
|
91
|
-
() => this.flushPasteBuffer(),
|
|
92
|
-
this.PASTE_DELAY_MS
|
|
93
|
-
);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
InputQueueManager.rl.on("close", () => {
|
|
97
|
-
// Flush any remaining paste buffer on close
|
|
98
|
-
if (this.pasteTimeout) {
|
|
99
|
-
clearTimeout(this.pasteTimeout);
|
|
100
|
-
this.flushPasteBuffer();
|
|
101
|
-
this.historyIndex = -1;
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
// Handle Ctrl+C (readline SIGINT)
|
|
106
|
-
InputQueueManager.rl.on("SIGINT", () => {
|
|
107
|
-
// If there's an active question, cancel it (like Esc)
|
|
108
|
-
if (this.stack.length > 0) {
|
|
109
|
-
const cancelled = this.stack.pop();
|
|
110
|
-
cancelled?.resolve("");
|
|
111
|
-
this.currentLine = "";
|
|
112
|
-
this.historyIndex = -1;
|
|
113
|
-
this.savedLineBeforeHistory = "";
|
|
114
|
-
this.renderTopOrClose();
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
// Otherwise exit
|
|
118
|
-
this.close();
|
|
119
|
-
process.exit(0);
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
// Capture keypresses for ESC + history nav while still using readline.
|
|
123
|
-
// Tab is handled by rl completer.
|
|
124
|
-
// Only set up keypress listener once to avoid multiple handlers
|
|
125
|
-
if (!InputQueueManager.keypressListenerSetup) {
|
|
126
|
-
InputQueueManager.keypressListenerSetup = true;
|
|
127
|
-
readline.emitKeypressEvents(process.stdin);
|
|
128
|
-
if (process.stdin.isTTY) process.stdin.setRawMode(true);
|
|
129
|
-
|
|
130
|
-
process.stdin.on("keypress", (_str, key) => {
|
|
131
|
-
// Handle Ctrl+C in raw mode (some terminals deliver this here instead of SIGINT)
|
|
132
|
-
const instance = InputQueueManager.instance;
|
|
133
|
-
if (!instance) return;
|
|
134
|
-
|
|
135
|
-
if (key?.ctrl && key?.name === "c") {
|
|
136
|
-
if (instance.stack.length > 0) {
|
|
137
|
-
const cancelled = instance.stack.pop();
|
|
138
|
-
cancelled?.resolve("");
|
|
139
|
-
instance.currentLine = "";
|
|
140
|
-
}
|
|
141
|
-
instance.close();
|
|
142
|
-
process.exit(0);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// If RL is closed or nothing to ask, ignore
|
|
146
|
-
if (!InputQueueManager.rl || instance.stack.length === 0) return;
|
|
147
|
-
|
|
148
|
-
// Keep our buffer in sync with readline's live line
|
|
149
|
-
instance.syncFromReadline();
|
|
150
|
-
|
|
151
|
-
// Any "real typing" should exit history mode
|
|
152
|
-
// (we'll treat left/right as not exiting; you can tweak)
|
|
153
|
-
const exitsHistoryMode =
|
|
154
|
-
key &&
|
|
155
|
-
(key.name === "return" ||
|
|
156
|
-
key.name === "enter" ||
|
|
157
|
-
key.name === "backspace" ||
|
|
158
|
-
(key.sequence &&
|
|
159
|
-
key.sequence.length === 1 &&
|
|
160
|
-
!key.ctrl &&
|
|
161
|
-
!key.meta));
|
|
162
|
-
if (exitsHistoryMode && instance.historyIndex !== -1) {
|
|
163
|
-
instance.historyIndex = -1;
|
|
164
|
-
instance.savedLineBeforeHistory = "";
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// Handle Tab completion ourselves to avoid readline's kRefreshLine
|
|
168
|
-
// overwriting small completion lists (1-2 line lists get erased by readline).
|
|
169
|
-
if (key?.name === "tab") {
|
|
170
|
-
instance.handleTabCompletion();
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// Any non-tab keypress resets the "last was tab" state
|
|
175
|
-
instance.lastKeypressWasTab = false;
|
|
176
|
-
|
|
177
|
-
// Custom Up/Down history navigation using only passed-in history
|
|
178
|
-
if (key?.name === "up") {
|
|
179
|
-
const history = instance.getHistory();
|
|
180
|
-
if (history.length === 0) return;
|
|
181
|
-
|
|
182
|
-
if (instance.historyIndex === -1) {
|
|
183
|
-
// entering history mode: remember current typed text
|
|
184
|
-
instance.savedLineBeforeHistory = instance.currentLine;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
if (instance.historyIndex < history.length - 1) {
|
|
188
|
-
instance.historyIndex++;
|
|
189
|
-
const index = history.length - 1 - instance.historyIndex;
|
|
190
|
-
const next = history[index] ?? "";
|
|
191
|
-
instance.replaceLine(next);
|
|
192
|
-
instance.currentLine = next;
|
|
193
|
-
}
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
if (key?.name === "down") {
|
|
198
|
-
const history = instance.getHistory();
|
|
199
|
-
if (history.length === 0) return;
|
|
200
|
-
|
|
201
|
-
if (instance.historyIndex > 0) {
|
|
202
|
-
instance.historyIndex--;
|
|
203
|
-
const index = history.length - 1 - instance.historyIndex;
|
|
204
|
-
const next = history[index] ?? "";
|
|
205
|
-
instance.replaceLine(next);
|
|
206
|
-
instance.currentLine = next;
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
if (instance.historyIndex === 0) {
|
|
211
|
-
// leave history mode, restore what user was typing
|
|
212
|
-
instance.historyIndex = -1;
|
|
213
|
-
const restore = instance.savedLineBeforeHistory ?? "";
|
|
214
|
-
instance.savedLineBeforeHistory = "";
|
|
215
|
-
instance.replaceLine(restore);
|
|
216
|
-
instance.currentLine = restore;
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
return InputQueueManager.rl;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
private flushPasteBuffer(): void {
|
|
229
|
-
if (this.pasteBuffer.length === 0) return;
|
|
230
|
-
|
|
231
|
-
const answer = this.pasteBuffer.join("\n");
|
|
232
|
-
this.pasteBuffer = [];
|
|
233
|
-
this.pasteTimeout = null;
|
|
234
|
-
|
|
235
|
-
const current = this.peek();
|
|
236
|
-
if (!current) return;
|
|
237
|
-
|
|
238
|
-
// Pop & resolve current question with the combined paste content (or single line)
|
|
239
|
-
const resolved = this.stack.pop();
|
|
240
|
-
resolved?.resolve(answer);
|
|
241
|
-
|
|
242
|
-
// Notify caller about new entry
|
|
243
|
-
if (answer && this.onNewEntry) {
|
|
244
|
-
this.onNewEntry(answer);
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
// Reset preserved buffer + history nav state for the next question
|
|
248
|
-
this.currentLine = "";
|
|
249
|
-
this.historyIndex = -1;
|
|
250
|
-
this.savedLineBeforeHistory = "";
|
|
251
|
-
|
|
252
|
-
// Update prompt for next stacked question (if any)
|
|
253
|
-
this.renderTopOrClose();
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
async ask(question: string, options: string[] = [], history: string[] = []) {
|
|
257
|
-
return new Promise<string>((resolve) => {
|
|
258
|
-
this.stack.push({ question, options, history, resolve });
|
|
259
|
-
this.historyIndex = -1; // reset history nav when a new question is asked
|
|
260
|
-
|
|
261
|
-
const rl = this.ensureRl();
|
|
262
|
-
|
|
263
|
-
// IMPORTANT: snapshot readline's current buffer before we redraw/switch prompts.
|
|
264
|
-
// This prevents us from clobbering tab-completed text with a stale currentLine.
|
|
265
|
-
this.syncFromReadline();
|
|
266
|
-
|
|
267
|
-
// Update prompt to top-of-stack
|
|
268
|
-
this.render();
|
|
269
|
-
|
|
270
|
-
// Preserve what user typed so far
|
|
271
|
-
this.replaceLine(this.currentLine);
|
|
272
|
-
|
|
273
|
-
rl.prompt(true);
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
private peek(): AskOptions | undefined {
|
|
278
|
-
return this.stack[this.stack.length - 1];
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
private syncFromReadline(): void {
|
|
282
|
-
if (!InputQueueManager.rl) return;
|
|
283
|
-
this.currentLine = (InputQueueManager.rl as any).line ?? "";
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
private sanitizeHistoryEntry(value: string): string {
|
|
287
|
-
// Prevent embedded newlines from triggering readline's "line" event
|
|
288
|
-
return value.replace(/[\r\n]+/g, " ").trim();
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
/**
|
|
292
|
-
* Get history for navigation - simply uses the history passed to ask()
|
|
293
|
-
* Single source of truth: the caller (CliChatService) manages all history
|
|
294
|
-
*/
|
|
295
|
-
private getHistory(): string[] {
|
|
296
|
-
const current = this.peek();
|
|
297
|
-
const history = current?.history ?? [];
|
|
298
|
-
|
|
299
|
-
// Sanitize entries
|
|
300
|
-
const out: string[] = [];
|
|
301
|
-
for (const item of history) {
|
|
302
|
-
const clean = this.sanitizeHistoryEntry(item);
|
|
303
|
-
if (clean) {
|
|
304
|
-
out.push(clean);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
return out;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* Handle Tab key completion manually.
|
|
313
|
-
*
|
|
314
|
-
* We do this ourselves instead of using readline's built-in completer because
|
|
315
|
-
* readline's kRefreshLine (called after displaying completions) uses
|
|
316
|
-
* clearScreenDown which erases small completion lists (1-2 lines) that fit
|
|
317
|
-
* within the terminal's current scroll region. Large lists scroll past and
|
|
318
|
-
* survive, but small lists get wiped out before the user can read them.
|
|
319
|
-
*
|
|
320
|
-
* Behavior:
|
|
321
|
-
* - First Tab: extend line to longest common prefix of matches (if possible)
|
|
322
|
-
* - Second consecutive Tab (no extension possible): print the matches list
|
|
323
|
-
*/
|
|
324
|
-
private handleTabCompletion(): void {
|
|
325
|
-
const current = this.peek();
|
|
326
|
-
const opts = current?.options ?? [];
|
|
327
|
-
|
|
328
|
-
// Sync current line from readline before we do anything
|
|
329
|
-
this.syncFromReadline();
|
|
330
|
-
const line = this.currentLine;
|
|
331
|
-
|
|
332
|
-
if (opts.length === 0) {
|
|
333
|
-
this.lastKeypressWasTab = false;
|
|
334
|
-
return;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
// Find the "word" to complete (everything after last space/tab)
|
|
338
|
-
const lastSpace = Math.max(line.lastIndexOf(" "), line.lastIndexOf("\t"));
|
|
339
|
-
const word = line.slice(lastSpace + 1);
|
|
340
|
-
|
|
341
|
-
const hits = opts.filter((c) => c.startsWith(word));
|
|
342
|
-
|
|
343
|
-
let effectiveHits: string[];
|
|
344
|
-
let completionWord: string; // the replacement for `word` in the line
|
|
345
|
-
|
|
346
|
-
if (hits.length > 0) {
|
|
347
|
-
// Exact prefix matches: use normal longest-common-prefix logic
|
|
348
|
-
effectiveHits = hits;
|
|
349
|
-
completionWord = this.longestCommonPrefix(effectiveHits);
|
|
350
|
-
} else {
|
|
351
|
-
// Contains matches: find options that contain the typed word somewhere
|
|
352
|
-
const containsHits = opts.filter((c) => c.includes(word));
|
|
353
|
-
effectiveHits = containsHits;
|
|
354
|
-
|
|
355
|
-
if (containsHits.length > 0) {
|
|
356
|
-
// If there's only one match, complete to the full option string
|
|
357
|
-
if (containsHits.length === 1) {
|
|
358
|
-
completionWord = containsHits[0];
|
|
359
|
-
} else {
|
|
360
|
-
// For each match, find the position of `word` inside it, then take
|
|
361
|
-
// the substring from that position and find the longest common prefix
|
|
362
|
-
// of all those suffixes. This gives us the longest unambiguous extension
|
|
363
|
-
// starting from the user's typed word.
|
|
364
|
-
const suffixes = containsHits.map((c) => {
|
|
365
|
-
const idx = c.indexOf(word);
|
|
366
|
-
return c.slice(idx); // e.g. "opus-4-5" from "anthropic/claude-opus-4-5"
|
|
367
|
-
});
|
|
368
|
-
completionWord = this.longestCommonPrefix(suffixes);
|
|
369
|
-
}
|
|
370
|
-
} else {
|
|
371
|
-
completionWord = word;
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
if (effectiveHits.length === 0) {
|
|
376
|
-
this.lastKeypressWasTab = false;
|
|
377
|
-
return;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
if (completionWord.length > word.length) {
|
|
381
|
-
// Can extend - replace word with the longer completion
|
|
382
|
-
const before = line.slice(0, lastSpace + 1);
|
|
383
|
-
const newLine = before + completionWord;
|
|
384
|
-
this.replaceLine(newLine);
|
|
385
|
-
this.currentLine = newLine;
|
|
386
|
-
this.lastKeypressWasTab = false;
|
|
387
|
-
return;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
// No extension possible - show list on second consecutive Tab
|
|
391
|
-
if (!this.lastKeypressWasTab) {
|
|
392
|
-
// First tab with no extension: just set flag, user needs to tab again
|
|
393
|
-
this.lastKeypressWasTab = true;
|
|
394
|
-
return;
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
// Second consecutive tab: print the completions list
|
|
398
|
-
this.lastKeypressWasTab = false;
|
|
399
|
-
const columns = process.stdout.columns || 80;
|
|
400
|
-
const maxWidth = Math.max(...effectiveHits.map((h) => h.length)) + 2;
|
|
401
|
-
const numCols = Math.max(1, Math.floor(columns / maxWidth));
|
|
402
|
-
const rows: string[] = [];
|
|
403
|
-
for (let i = 0; i < effectiveHits.length; i += numCols) {
|
|
404
|
-
const row = effectiveHits.slice(i, i + numCols);
|
|
405
|
-
rows.push(row.map((h) => h.padEnd(maxWidth)).join(""));
|
|
406
|
-
}
|
|
407
|
-
// Write completions. We intentionally do NOT call rl.prompt() here because
|
|
408
|
-
// readline tracks the cursor row internally. When prompt(true) is called,
|
|
409
|
-
// readline moves the cursor back UP to where it thinks the prompt is and
|
|
410
|
-
// redraws — overwriting any completion output that fit within the same scroll
|
|
411
|
-
// region (i.e., small lists that didn't cause the terminal to scroll).
|
|
412
|
-
//
|
|
413
|
-
// Instead, we write the completions and then a fresh prompt line manually,
|
|
414
|
-
// without involving readline's cursor tracking at all.
|
|
415
|
-
const promptText = current!.question;
|
|
416
|
-
const inputText = this.currentLine;
|
|
417
|
-
process.stdout.write("\r\n" + rows.join("\r\n") + "\r\n" + promptText + inputText);
|
|
418
|
-
// Now sync readline's internal state to match what we drew manually.
|
|
419
|
-
// We replace the line content via ctrl+u then re-type it so readline's
|
|
420
|
-
// internal `line` buffer and cursor position are correct.
|
|
421
|
-
InputQueueManager.rl?.write(null, { ctrl: true, name: "u" });
|
|
422
|
-
if (inputText) InputQueueManager.rl?.write(inputText);
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
private render(): void {
|
|
426
|
-
if (!InputQueueManager.rl) return;
|
|
427
|
-
const current = this.peek();
|
|
428
|
-
if (!current) return;
|
|
429
|
-
|
|
430
|
-
// Make prompt be the question (readline manages wrapping/cursor)
|
|
431
|
-
InputQueueManager.rl.setPrompt(current.question);
|
|
432
|
-
InputQueueManager.rl.prompt(true);
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
private renderTopOrClose(): void {
|
|
436
|
-
if (this.stack.length === 0) {
|
|
437
|
-
this.close();
|
|
438
|
-
return;
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
// IMPORTANT: snapshot readline's current buffer before we redraw/switch prompts.
|
|
442
|
-
// This prevents us from clobbering tab-completed text with a stale currentLine.
|
|
443
|
-
this.syncFromReadline();
|
|
444
|
-
|
|
445
|
-
this.render();
|
|
446
|
-
this.replaceLine(this.currentLine);
|
|
447
|
-
InputQueueManager.rl?.prompt(true);
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
private replaceLine(next: string): void {
|
|
451
|
-
if (!InputQueueManager.rl) return;
|
|
452
|
-
|
|
453
|
-
const safe = this.sanitizeHistoryEntry(next);
|
|
454
|
-
|
|
455
|
-
// Clear current line and write next input without affecting terminal scrollback
|
|
456
|
-
InputQueueManager.rl.write(null, { ctrl: true, name: "u" }); // Ctrl+U clears the line
|
|
457
|
-
if (safe) InputQueueManager.rl.write(safe);
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
/**
|
|
461
|
-
* Returns the longest common prefix of all strings in the array.
|
|
462
|
-
*/
|
|
463
|
-
private longestCommonPrefix(items: string[]): string {
|
|
464
|
-
if (items.length === 0) return "";
|
|
465
|
-
let prefix = items[0];
|
|
466
|
-
|
|
467
|
-
for (let i = 1; i < items.length; i++) {
|
|
468
|
-
const s = items[i];
|
|
469
|
-
let j = 0;
|
|
470
|
-
while (j < prefix.length && j < s.length && prefix[j] === s[j]) j++;
|
|
471
|
-
prefix = prefix.slice(0, j);
|
|
472
|
-
if (!prefix) break;
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
return prefix;
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
private close(): void {
|
|
479
|
-
if (!InputQueueManager.rl) return;
|
|
480
|
-
InputQueueManager.rl.close();
|
|
481
|
-
InputQueueManager.rl = null;
|
|
482
|
-
// Note: We don't reset keypressListenerSetup because the listener stays attached to process.stdin
|
|
483
|
-
// and will continue to work for the next readline interface
|
|
484
|
-
|
|
485
|
-
if (process.stdin.isTTY) {
|
|
486
|
-
try {
|
|
487
|
-
process.stdin.setRawMode(false);
|
|
488
|
-
} catch {
|
|
489
|
-
// ignore
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
}
|
package/src/utils/errors.ts
DELETED
|
File without changes
|
package/src/utils/http.ts
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Thin native-fetch wrapper that returns { data: T } for backward compatibility.
|
|
3
|
-
* Replaces axios throughout the codebase.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
export interface HttpResponse<T = any> {
|
|
7
|
-
data: T;
|
|
8
|
-
status: number;
|
|
9
|
-
headers: Headers;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export class HttpError extends Error {
|
|
13
|
-
constructor(
|
|
14
|
-
public status: number,
|
|
15
|
-
public response: Response,
|
|
16
|
-
message: string,
|
|
17
|
-
public body?: any,
|
|
18
|
-
) {
|
|
19
|
-
super(message);
|
|
20
|
-
this.name = "HttpError";
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Optional, non-enumerable hook carried by an authenticated headers object.
|
|
26
|
-
* The hook may replace an expired credential before one safe 401 retry.
|
|
27
|
-
*/
|
|
28
|
-
export const HTTP_UNAUTHORIZED_HANDLER = Symbol("httpUnauthorizedHandler");
|
|
29
|
-
export type RefreshableHeaders = Record<string, string> & {
|
|
30
|
-
[HTTP_UNAUTHORIZED_HANDLER]?: () => Promise<void>;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
async function parseBody<T>(response: Response, responseType?: string): Promise<T> {
|
|
34
|
-
if (responseType === "arraybuffer") {
|
|
35
|
-
return (await response.arrayBuffer()) as unknown as T;
|
|
36
|
-
}
|
|
37
|
-
if (responseType === "stream") {
|
|
38
|
-
return response.body as unknown as T;
|
|
39
|
-
}
|
|
40
|
-
const text = await response.text();
|
|
41
|
-
if (!text) return undefined as unknown as T;
|
|
42
|
-
try {
|
|
43
|
-
return JSON.parse(text) as T;
|
|
44
|
-
} catch {
|
|
45
|
-
return text as unknown as T;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
async function request<T = any>(
|
|
50
|
-
url: string,
|
|
51
|
-
options: {
|
|
52
|
-
method?: string;
|
|
53
|
-
headers?: RefreshableHeaders;
|
|
54
|
-
body?: any;
|
|
55
|
-
responseType?: "json" | "arraybuffer" | "stream" | "text";
|
|
56
|
-
params?: Record<string, any>;
|
|
57
|
-
/** Timeout in milliseconds. Default: 30000 (30s). Use 0 to disable. */
|
|
58
|
-
timeout?: number;
|
|
59
|
-
} = {},
|
|
60
|
-
mayRefresh = true
|
|
61
|
-
): Promise<HttpResponse<T>> {
|
|
62
|
-
const { method = "GET", headers = {}, body, responseType, params, timeout = 30000 } = options;
|
|
63
|
-
|
|
64
|
-
let fullUrl = url;
|
|
65
|
-
if (params && Object.keys(params).length > 0) {
|
|
66
|
-
const searchParams = new URLSearchParams();
|
|
67
|
-
for (const [k, v] of Object.entries(params)) {
|
|
68
|
-
if (v !== undefined && v !== null) {
|
|
69
|
-
searchParams.set(k, String(v));
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
fullUrl = `${url}?${searchParams.toString()}`;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const fetchOptions: RequestInit = {
|
|
76
|
-
method,
|
|
77
|
-
headers: { ...headers },
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
if (body !== undefined && body !== null) {
|
|
81
|
-
if (body instanceof Buffer || body instanceof Uint8Array || typeof (body as any).pipe === "function") {
|
|
82
|
-
// Stream or buffer — pass directly, Node fetch supports ReadableStream
|
|
83
|
-
fetchOptions.body = body;
|
|
84
|
-
} else if (typeof body === "object" && !(body instanceof FormData)) {
|
|
85
|
-
fetchOptions.body = JSON.stringify(body);
|
|
86
|
-
(fetchOptions.headers as Record<string, string>)["Content-Type"] = "application/json";
|
|
87
|
-
} else {
|
|
88
|
-
fetchOptions.body = body;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// Apply timeout via AbortController
|
|
93
|
-
let timeoutId: ReturnType<typeof setTimeout> | undefined;
|
|
94
|
-
if (timeout > 0) {
|
|
95
|
-
const controller = new AbortController();
|
|
96
|
-
fetchOptions.signal = controller.signal;
|
|
97
|
-
timeoutId = setTimeout(() => {
|
|
98
|
-
controller.abort();
|
|
99
|
-
}, timeout);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
let response: Response;
|
|
103
|
-
try {
|
|
104
|
-
response = await fetch(fullUrl, fetchOptions);
|
|
105
|
-
} catch (e: any) {
|
|
106
|
-
if (e?.name === "AbortError") {
|
|
107
|
-
throw new HttpError(408, undefined as any, `Request timeout after ${timeout}ms: ${url}`);
|
|
108
|
-
}
|
|
109
|
-
throw e;
|
|
110
|
-
} finally {
|
|
111
|
-
if (timeoutId !== undefined) clearTimeout(timeoutId);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
if (!response.ok) {
|
|
115
|
-
const refresh = headers[HTTP_UNAUTHORIZED_HANDLER];
|
|
116
|
-
if (response.status === 401 && mayRefresh && refresh) {
|
|
117
|
-
await refresh();
|
|
118
|
-
return request<T>(url, options, false);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const text = await response.text().catch(() => "");
|
|
122
|
-
let parsedBody: any;
|
|
123
|
-
try {
|
|
124
|
-
parsedBody = JSON.parse(text);
|
|
125
|
-
} catch {
|
|
126
|
-
parsedBody = { message: text };
|
|
127
|
-
}
|
|
128
|
-
throw new HttpError(response.status, response, `HTTP ${response.status}: ${text}`, parsedBody);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
const data = await parseBody<T>(response, responseType);
|
|
132
|
-
|
|
133
|
-
return { data, status: response.status, headers: response.headers };
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
export const http = {
|
|
137
|
-
get: <T = any>(url: string, options?: Omit<Parameters<typeof request>[1], "method">) =>
|
|
138
|
-
request<T>(url, { ...options, method: "GET" }),
|
|
139
|
-
post: <T = any>(url: string, body?: any, options?: Omit<Parameters<typeof request>[1], "method" | "body">) =>
|
|
140
|
-
request<T>(url, { ...options, method: "POST", body }),
|
|
141
|
-
put: <T = any>(url: string, body?: any, options?: Omit<Parameters<typeof request>[1], "method" | "body">) =>
|
|
142
|
-
request<T>(url, { ...options, method: "PUT", body }),
|
|
143
|
-
patch: <T = any>(url: string, body?: any, options?: Omit<Parameters<typeof request>[1], "method" | "body">) =>
|
|
144
|
-
request<T>(url, { ...options, method: "PATCH", body }),
|
|
145
|
-
delete: <T = any>(url: string, options?: Omit<Parameters<typeof request>[1], "method">) =>
|
|
146
|
-
request<T>(url, { ...options, method: "DELETE" }),
|
|
147
|
-
isHttpError: (e: any): e is HttpError => e instanceof HttpError,
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
export default http;
|