@tyvm/knowhow 0.0.158 → 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 +2 -2
- package/ts_build/package.json +2 -2
- 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,693 +0,0 @@
|
|
|
1
|
-
import { Message } from "../clients/types";
|
|
2
|
-
import { MessageProcessorFunction } from "../services/MessageProcessor";
|
|
3
|
-
import { ToolsService } from "../services";
|
|
4
|
-
import { Tool } from "../clients";
|
|
5
|
-
import { ToolCall } from "../clients/types";
|
|
6
|
-
|
|
7
|
-
interface VariableStorage {
|
|
8
|
-
[name: string]: any;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export class CustomVariables {
|
|
12
|
-
private variables: VariableStorage = {};
|
|
13
|
-
private setVariableToolName = "setVariable";
|
|
14
|
-
private getVariableToolName = "getVariable";
|
|
15
|
-
private storeToolCallToolName = "storeToolCallToVariable";
|
|
16
|
-
private listVariablesToolName = "listVariables";
|
|
17
|
-
private deleteVariableToolName = "deleteVariable";
|
|
18
|
-
|
|
19
|
-
constructor(private toolsService: ToolsService) {
|
|
20
|
-
this.registerTools(toolsService);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Validates variable names - alphanumeric and underscore allowed
|
|
25
|
-
*/
|
|
26
|
-
private isValidVariableName(name: string): boolean {
|
|
27
|
-
return /^[a-zA-Z0-9_]+$/.test(name);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Sets a variable value
|
|
32
|
-
*/
|
|
33
|
-
private setVariable(name: string, contents: any): string {
|
|
34
|
-
if (!this.isValidVariableName(name)) {
|
|
35
|
-
return `Error: Invalid variable name "${name}". Only alphanumeric characters and underscores are allowed.`;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
this.variables[name] = contents;
|
|
39
|
-
return `Variable "${name}" has been set successfully.`;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Gets a variable value
|
|
44
|
-
*/
|
|
45
|
-
private getVariable(varName: string): string {
|
|
46
|
-
if (!this.isValidVariableName(varName)) {
|
|
47
|
-
return `Error: Invalid variable name "${varName}". Only alphanumeric characters and underscores are allowed.`;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (!(varName in this.variables)) {
|
|
51
|
-
return `Error: Variable "${varName}" is not defined. Available variables: ${Object.keys(
|
|
52
|
-
this.variables
|
|
53
|
-
).join(", ")}`;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const value = this.variables[varName];
|
|
57
|
-
if (typeof value === "string") {
|
|
58
|
-
return value;
|
|
59
|
-
}
|
|
60
|
-
return JSON.stringify(value, null, 2);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Stores the result of a tool call to a variable
|
|
65
|
-
*/
|
|
66
|
-
private async storeToolCallToVariable(
|
|
67
|
-
varName: string,
|
|
68
|
-
toolName: string,
|
|
69
|
-
toolArgs: string
|
|
70
|
-
): Promise<string> {
|
|
71
|
-
if (!this.isValidVariableName(varName)) {
|
|
72
|
-
return `Error: Invalid variable name "${varName}". Only alphanumeric characters and underscores are allowed.`;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
try {
|
|
76
|
-
// Parse tool arguments
|
|
77
|
-
let parsedArgs: any;
|
|
78
|
-
try {
|
|
79
|
-
parsedArgs = JSON.parse(toolArgs);
|
|
80
|
-
} catch {
|
|
81
|
-
return `Error: Invalid JSON in toolArgs parameter: ${toolArgs}`;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const result = await this.toolsService.callTool({
|
|
85
|
-
id: `${toolName}-${Date.now()}`,
|
|
86
|
-
type: "function",
|
|
87
|
-
function: {
|
|
88
|
-
name: toolName,
|
|
89
|
-
arguments: parsedArgs,
|
|
90
|
-
},
|
|
91
|
-
});
|
|
92
|
-
this.variables[varName] = result;
|
|
93
|
-
|
|
94
|
-
return `Tool call result for "${toolName}" has been stored in variable "${varName}".`;
|
|
95
|
-
} catch (error: any) {
|
|
96
|
-
return `Error storing tool call result: ${error.message}`;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Lists all stored variables with their values
|
|
102
|
-
*/
|
|
103
|
-
private listVariables(): string {
|
|
104
|
-
const variableNames = Object.keys(this.variables);
|
|
105
|
-
|
|
106
|
-
if (variableNames.length === 0) {
|
|
107
|
-
return "No variables are currently stored.";
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
const variableList = variableNames
|
|
111
|
-
.map((name) => {
|
|
112
|
-
const value = this.variables[name];
|
|
113
|
-
const preview =
|
|
114
|
-
typeof value === "string"
|
|
115
|
-
? value.length > 50
|
|
116
|
-
? value.substring(0, 50) + "..."
|
|
117
|
-
: value
|
|
118
|
-
: JSON.stringify(value).substring(0, 50) +
|
|
119
|
-
(JSON.stringify(value).length > 50 ? "..." : "");
|
|
120
|
-
return `- ${name}: ${preview}`;
|
|
121
|
-
})
|
|
122
|
-
.join("\n");
|
|
123
|
-
|
|
124
|
-
return `Currently stored variables (${variableNames.length}):\n${variableList}`;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Deletes a specific variable
|
|
129
|
-
*/
|
|
130
|
-
private deleteVariable(varName: string): string {
|
|
131
|
-
if (!this.isValidVariableName(varName)) {
|
|
132
|
-
return `Error: Invalid variable name "${varName}". Only alphanumeric characters and underscores are allowed.`;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
if (!(varName in this.variables)) {
|
|
136
|
-
return `Error: Variable "${varName}" is not defined. Available variables: ${Object.keys(
|
|
137
|
-
this.variables
|
|
138
|
-
).join(", ")}`;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
delete this.variables[varName];
|
|
142
|
-
return `Variable "${varName}" has been deleted successfully.`;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Processes a value to substitute {{variableName}} patterns
|
|
147
|
-
*/
|
|
148
|
-
private substituteVariables(
|
|
149
|
-
value: any,
|
|
150
|
-
processedVars: Set<string> = new Set()
|
|
151
|
-
): any {
|
|
152
|
-
if (typeof value === "string") {
|
|
153
|
-
// Substitute variables, leaving undefined ones unchanged
|
|
154
|
-
return value.replace(/\{\{([a-zA-Z0-9_]+)\}\}/g, (match, varName) => {
|
|
155
|
-
// Prevent infinite recursion
|
|
156
|
-
if (processedVars.has(varName)) {
|
|
157
|
-
return match; // Leave circular references unchanged
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if (!(varName in this.variables)) {
|
|
161
|
-
return match; // Leave undefined variables unchanged
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
const varValue = this.variables[varName];
|
|
165
|
-
|
|
166
|
-
// For nested variables, return the raw value without further processing
|
|
167
|
-
if (typeof varValue === "string") {
|
|
168
|
-
return varValue;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
// For non-string values, convert to JSON
|
|
172
|
-
return JSON.stringify(varValue);
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
if (Array.isArray(value)) {
|
|
177
|
-
return value.map((item) => this.substituteVariables(item, processedVars));
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
if (value && typeof value === "object") {
|
|
181
|
-
const result: any = {};
|
|
182
|
-
for (const [key, val] of Object.entries(value)) {
|
|
183
|
-
result[key] = this.substituteVariables(val, processedVars);
|
|
184
|
-
}
|
|
185
|
-
return result;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
return value;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Processes messages to substitute variables in content and tool call arguments
|
|
193
|
-
*/
|
|
194
|
-
private processMessage(message: Message): Message {
|
|
195
|
-
// Create a copy of the message to avoid mutating the original
|
|
196
|
-
const processedMessage: Message = { ...message };
|
|
197
|
-
|
|
198
|
-
// Process message content
|
|
199
|
-
if (typeof processedMessage.content === "string") {
|
|
200
|
-
processedMessage.content = this.substituteVariables(
|
|
201
|
-
processedMessage.content
|
|
202
|
-
);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
// Process tool calls if they exist
|
|
206
|
-
if (processedMessage.tool_calls) {
|
|
207
|
-
processedMessage.tool_calls = processedMessage.tool_calls.map(
|
|
208
|
-
(toolCall) => ({
|
|
209
|
-
...toolCall,
|
|
210
|
-
function: {
|
|
211
|
-
...toolCall.function,
|
|
212
|
-
arguments: this.substituteVariables(toolCall.function.arguments),
|
|
213
|
-
},
|
|
214
|
-
})
|
|
215
|
-
);
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
return processedMessage;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Creates a message processor function that substitutes variables in messages
|
|
223
|
-
*
|
|
224
|
-
* CACHING NOTE: To preserve Anthropic prefix-cache stability, we only apply
|
|
225
|
-
* variable substitution to the *last* (most-recently-added) message in the
|
|
226
|
-
* modifiedMessages array. Historical messages have already been processed on
|
|
227
|
-
* prior turns; mutating them would change their content mid-conversation and
|
|
228
|
-
* instantly bust the entire downstream cache window.
|
|
229
|
-
*/
|
|
230
|
-
createProcessor(
|
|
231
|
-
filterFn?: (msg: Message) => boolean
|
|
232
|
-
): MessageProcessorFunction {
|
|
233
|
-
return async (originalMessages: Message[], modifiedMessages: Message[]) => {
|
|
234
|
-
// Only process the last message (the newly added one).
|
|
235
|
-
// Processing historical messages would mutate already-committed content
|
|
236
|
-
// and destroy Anthropic's prefix-cache match from that point onwards.
|
|
237
|
-
const lastIndex = modifiedMessages.length - 1;
|
|
238
|
-
if (lastIndex < 0) return;
|
|
239
|
-
|
|
240
|
-
const message = modifiedMessages[lastIndex];
|
|
241
|
-
if (!filterFn || filterFn(message)) {
|
|
242
|
-
modifiedMessages[lastIndex] = this.processMessage(message);
|
|
243
|
-
}
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Extracts all string values from a JSON-parsed object (recursively)
|
|
249
|
-
*/
|
|
250
|
-
private extractStringValues(obj: any, results: string[] = []): string[] {
|
|
251
|
-
if (typeof obj === "string") {
|
|
252
|
-
results.push(obj);
|
|
253
|
-
} else if (Array.isArray(obj)) {
|
|
254
|
-
for (const item of obj) {
|
|
255
|
-
this.extractStringValues(item, results);
|
|
256
|
-
}
|
|
257
|
-
} else if (obj && typeof obj === "object") {
|
|
258
|
-
for (const val of Object.values(obj)) {
|
|
259
|
-
this.extractStringValues(val, results);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
return results;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
/**
|
|
266
|
-
* Collects all large string values from tool calls, keyed by tool name.
|
|
267
|
-
* Returns an array of {value, toolName} pairs.
|
|
268
|
-
*/
|
|
269
|
-
private collectToolCallStrings(
|
|
270
|
-
messages: Message[],
|
|
271
|
-
minLength: number
|
|
272
|
-
): Array<{ value: string; toolName: string }> {
|
|
273
|
-
const collected: Array<{ value: string; toolName: string }> = [];
|
|
274
|
-
for (const message of messages) {
|
|
275
|
-
if (!message.tool_calls) continue;
|
|
276
|
-
for (const toolCall of message.tool_calls) {
|
|
277
|
-
const strings = this.getToolCallStrings(toolCall);
|
|
278
|
-
for (const str of strings) {
|
|
279
|
-
if (str.length >= minLength) {
|
|
280
|
-
collected.push({ value: str, toolName: toolCall.function.name });
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
return collected;
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
/**
|
|
289
|
-
* Finds the longest common substring between two strings that is >= minLength.
|
|
290
|
-
* Returns the substring or null if none found.
|
|
291
|
-
*
|
|
292
|
-
* PERF NOTE: This is O(n*m) in the worst case on the sampled chunks.
|
|
293
|
-
* For large strings, we sample multiple fixed-size chunks (first quarter,
|
|
294
|
-
* second quarter, third quarter, last quarter) so we catch patterns that
|
|
295
|
-
* appear anywhere in the string — not just the prefix — while keeping cost bounded.
|
|
296
|
-
*/
|
|
297
|
-
private longestCommonSubstring(
|
|
298
|
-
a: string,
|
|
299
|
-
b: string,
|
|
300
|
-
minLength: number
|
|
301
|
-
): string | null {
|
|
302
|
-
// Fast path: exact full match
|
|
303
|
-
if (a === b) return a.length >= minLength ? a : null;
|
|
304
|
-
|
|
305
|
-
// For large strings, sample fixed-size chunks from multiple positions
|
|
306
|
-
// so we catch repeated patterns anywhere in the string without O(n*m) blowup.
|
|
307
|
-
// Chunk size: 200 chars each → at most 200*200=40k iterations per chunk pair.
|
|
308
|
-
const CHUNK_SIZE = 200;
|
|
309
|
-
|
|
310
|
-
const getChunks = (s: string): string[] => {
|
|
311
|
-
if (s.length <= CHUNK_SIZE) return [s];
|
|
312
|
-
const q = Math.floor(s.length / 4);
|
|
313
|
-
return [
|
|
314
|
-
s.slice(0, CHUNK_SIZE), // first quarter
|
|
315
|
-
s.slice(q - CHUNK_SIZE / 2, q + CHUNK_SIZE / 2), // around 1/4 mark
|
|
316
|
-
s.slice(2 * q - CHUNK_SIZE / 2, 2 * q + CHUNK_SIZE / 2), // around midpoint
|
|
317
|
-
s.slice(3 * q - CHUNK_SIZE / 2, 3 * q + CHUNK_SIZE / 2), // around 3/4 mark
|
|
318
|
-
s.slice(-CHUNK_SIZE), // last quarter
|
|
319
|
-
];
|
|
320
|
-
};
|
|
321
|
-
|
|
322
|
-
const chunksA = getChunks(a);
|
|
323
|
-
const chunksB = getChunks(b);
|
|
324
|
-
|
|
325
|
-
// Run LCS on each chunk pair, return the best match found
|
|
326
|
-
let best = "";
|
|
327
|
-
for (const chunkA of chunksA) {
|
|
328
|
-
for (const chunkB of chunksB) {
|
|
329
|
-
for (let i = 0; i < chunkA.length - minLength + 1; i++) {
|
|
330
|
-
for (let j = chunkA.length; j > i + minLength - 1; j--) {
|
|
331
|
-
const sub = chunkA.slice(i, j);
|
|
332
|
-
if (sub.length <= best.length) break; // already found longer
|
|
333
|
-
if (chunkB.includes(sub)) {
|
|
334
|
-
best = sub;
|
|
335
|
-
break;
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
return best.length >= minLength ? best : null;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
/**
|
|
346
|
-
* Extracts all string values from a tool call's arguments
|
|
347
|
-
*/
|
|
348
|
-
private getToolCallStrings(toolCall: ToolCall): string[] {
|
|
349
|
-
try {
|
|
350
|
-
const parsed = JSON.parse(toolCall.function.arguments);
|
|
351
|
-
return this.extractStringValues(parsed);
|
|
352
|
-
} catch {
|
|
353
|
-
// If not JSON, treat the whole arguments string as a single value
|
|
354
|
-
return [toolCall.function.arguments];
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
/**
|
|
359
|
-
* Creates a processor that scans messages for repeated large string values
|
|
360
|
-
* in tool call arguments, and appends a hint suggesting variable storage.
|
|
361
|
-
*
|
|
362
|
-
* This helps the LLM discover that it can avoid re-outputting long strings
|
|
363
|
-
* (e.g. JWTs, file contents) by storing them once with setVariable or
|
|
364
|
-
* storeToolCallToVariable and then referencing them via {{varName}}.
|
|
365
|
-
*
|
|
366
|
-
* CACHING NOTE: To protect Anthropic prefix-cache stability this processor
|
|
367
|
-
* keeps at most ONE hint message in the array. Before injecting a new hint
|
|
368
|
-
* it removes the previous one (identified by a stable sentinel prefix) so
|
|
369
|
-
* the total message count — and therefore every cache breakpoint — stays
|
|
370
|
-
* constant. The hint content is also kept deterministic (no per-call
|
|
371
|
-
* volatile numbers) so that re-injecting the same hint is a cache no-op.
|
|
372
|
-
*/
|
|
373
|
-
createRepetitionHintProcessor(options: {
|
|
374
|
-
minLength?: number; // Minimum string length to consider (default: 50)
|
|
375
|
-
minRepetitions?: number; // Minimum occurrences to trigger hint (default: 2)
|
|
376
|
-
minSubstringLength?: number; // Minimum repeated substring length (default: 50)
|
|
377
|
-
recentMessagesWindow?: number; // Only scan the last N messages (default: 10)
|
|
378
|
-
throttleMessages?: number; // Only emit hint once per N new messages (default: 5)
|
|
379
|
-
maxExamples?: number; // Max number of example variables to show (default: 3)
|
|
380
|
-
hintMessageTokens?: number; // Estimated tokens in the hint message itself for net savings calc (default: 190)
|
|
381
|
-
} = {}): MessageProcessorFunction {
|
|
382
|
-
const minLength = options.minLength ?? 50;
|
|
383
|
-
const minRepetitions = options.minRepetitions ?? 2;
|
|
384
|
-
const minSubstringLength = options.minSubstringLength ?? 50;
|
|
385
|
-
const recentMessagesWindow = options.recentMessagesWindow ?? 10;
|
|
386
|
-
const throttleMessages = options.throttleMessages ?? 5;
|
|
387
|
-
const maxExamples = options.maxExamples ?? 3;
|
|
388
|
-
|
|
389
|
-
// ~100 base + 30 per example = ~190 tokens for the hint message itself
|
|
390
|
-
const hintMessageTokens = options.hintMessageTokens ?? (100 + maxExamples * 30);
|
|
391
|
-
|
|
392
|
-
// Stable sentinel that uniquely identifies hint messages injected by this processor.
|
|
393
|
-
// Must be a fixed string so the cache sees identical bytes on re-injection.
|
|
394
|
-
const HINT_SENTINEL = "⚠️ [knowhow:repetition-hint]";
|
|
395
|
-
|
|
396
|
-
// Throttle state: track the index of the message that was current when we
|
|
397
|
-
// last evaluated (ignoring the hint message itself in the count).
|
|
398
|
-
let lastHintAtMessageCount = -Infinity;
|
|
399
|
-
|
|
400
|
-
return async (originalMessages: Message[], modifiedMessages: Message[]) => {
|
|
401
|
-
// Remove any previously injected hint so we never accumulate duplicates
|
|
402
|
-
// and so the message array length stays predictable for cache breakpoints.
|
|
403
|
-
const existingHintIndex = modifiedMessages.findIndex(
|
|
404
|
-
(m) => typeof m.content === "string" && m.content.startsWith(HINT_SENTINEL)
|
|
405
|
-
);
|
|
406
|
-
if (existingHintIndex !== -1) {
|
|
407
|
-
modifiedMessages.splice(existingHintIndex, 1);
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
// Throttle: only re-evaluate if enough *real* messages have arrived since last hint.
|
|
411
|
-
// We exclude the hint message itself from the count (already removed above).
|
|
412
|
-
const currentMessageCount = modifiedMessages.length;
|
|
413
|
-
if (currentMessageCount - lastHintAtMessageCount < throttleMessages) {
|
|
414
|
-
return;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
// Count occurrences of each string value across all tool call arguments
|
|
418
|
-
const stringCounts = new Map<string, { count: number; toolNames: Set<string> }>();
|
|
419
|
-
|
|
420
|
-
// Only scan the most recent N messages to keep cost bounded
|
|
421
|
-
const recentMessages = modifiedMessages.slice(-recentMessagesWindow);
|
|
422
|
-
|
|
423
|
-
// Step 1: exact full-string matches
|
|
424
|
-
const toolStrings = this.collectToolCallStrings(recentMessages, minLength);
|
|
425
|
-
|
|
426
|
-
for (const { value, toolName } of toolStrings) {
|
|
427
|
-
const existing = stringCounts.get(value);
|
|
428
|
-
if (existing) {
|
|
429
|
-
existing.count++;
|
|
430
|
-
existing.toolNames.add(toolName);
|
|
431
|
-
} else {
|
|
432
|
-
stringCounts.set(value, { count: 1, toolNames: new Set([toolName]) });
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
// Step 2: detect repeated substrings across different full strings
|
|
437
|
-
// e.g. the same JWT embedded in many different commands
|
|
438
|
-
const substringCounts = new Map<string, { count: number; toolNames: Set<string> }>();
|
|
439
|
-
|
|
440
|
-
for (let i = 0; i < toolStrings.length; i++) {
|
|
441
|
-
for (let j = i + 1; j < toolStrings.length; j++) {
|
|
442
|
-
const a = toolStrings[i];
|
|
443
|
-
const b = toolStrings[j];
|
|
444
|
-
// Skip if the full strings are identical (already counted above)
|
|
445
|
-
if (a.value === b.value) continue;
|
|
446
|
-
|
|
447
|
-
const common = this.longestCommonSubstring(a.value, b.value, minSubstringLength);
|
|
448
|
-
if (common) {
|
|
449
|
-
const existing = substringCounts.get(common);
|
|
450
|
-
if (existing) {
|
|
451
|
-
existing.count++;
|
|
452
|
-
existing.toolNames.add(a.toolName);
|
|
453
|
-
existing.toolNames.add(b.toolName);
|
|
454
|
-
} else {
|
|
455
|
-
substringCounts.set(common, {
|
|
456
|
-
count: 1,
|
|
457
|
-
toolNames: new Set([a.toolName, b.toolName]),
|
|
458
|
-
});
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
// Merge substring counts: count = number of unique pairs, so count+1 = occurrences
|
|
465
|
-
for (const [sub, info] of substringCounts.entries()) {
|
|
466
|
-
if (info.count + 1 >= minRepetitions) {
|
|
467
|
-
const existing = stringCounts.get(sub);
|
|
468
|
-
if (!existing) {
|
|
469
|
-
stringCounts.set(sub, { count: info.count + 1, toolNames: info.toolNames });
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
// Find entries that exceed the repetition threshold
|
|
475
|
-
const repeatedTools: string[] = [];
|
|
476
|
-
const repeatedEntries: Array<{ str: string; count: number; toolNames: Set<string> }> = [];
|
|
477
|
-
|
|
478
|
-
for (const [str, info] of stringCounts.entries()) {
|
|
479
|
-
if (info.count >= minRepetitions) {
|
|
480
|
-
repeatedEntries.push({ str, count: info.count, toolNames: info.toolNames });
|
|
481
|
-
for (const toolName of info.toolNames) {
|
|
482
|
-
if (!repeatedTools.includes(toolName)) {
|
|
483
|
-
repeatedTools.push(toolName);
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
if (repeatedTools.length > 0) {
|
|
490
|
-
lastHintAtMessageCount = currentMessageCount;
|
|
491
|
-
|
|
492
|
-
// Sort by (count * str.length) desc to surface highest-savings items first
|
|
493
|
-
repeatedEntries.sort((a, b) => b.count * b.str.length - a.count * a.str.length);
|
|
494
|
-
|
|
495
|
-
// Estimate token savings: chars_saved ÷ 4 (rough tokens-per-char estimate)
|
|
496
|
-
// Savings = (repetitions - 1) * str.length chars saved by using a short variable ref
|
|
497
|
-
let totalCharsSaved = 0;
|
|
498
|
-
for (const { str, count } of repeatedEntries) {
|
|
499
|
-
totalCharsSaved += (count - 1) * str.length;
|
|
500
|
-
}
|
|
501
|
-
const grossTokensSaved = Math.round(totalCharsSaved / 4);
|
|
502
|
-
const netTokensSaved = grossTokensSaved - hintMessageTokens;
|
|
503
|
-
|
|
504
|
-
// Skip the hint if the net savings are negative — the reminder costs more than it saves
|
|
505
|
-
if (netTokensSaved <= 0) {
|
|
506
|
-
return;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
// Build example variable suggestions
|
|
510
|
-
// Use stable previews (fixed 80-char slices) to keep hint content
|
|
511
|
-
// deterministic across calls — volatile token counts are omitted so
|
|
512
|
-
// re-injecting the same hint does not bust the Anthropic prefix cache.
|
|
513
|
-
const examples = repeatedEntries.slice(0, maxExamples).map(({ str, toolNames }, i) => {
|
|
514
|
-
const preview = str.trim().slice(0, 80).replace(/\s+/g, " ");
|
|
515
|
-
const ellipsis = str.length > 80 ? "…" : "";
|
|
516
|
-
const varName = `var${i + 1}`;
|
|
517
|
-
return ` • \`${varName}\` (in ${[...toolNames].join(", ")}): "${preview}${ellipsis}"`;
|
|
518
|
-
});
|
|
519
|
-
|
|
520
|
-
modifiedMessages.push({
|
|
521
|
-
role: "user",
|
|
522
|
-
content:
|
|
523
|
-
`${HINT_SENTINEL} Tool inputs have large repetitions detected in: ${repeatedTools.join(", ")}. ` +
|
|
524
|
-
`Consider storing repeated values with \`setVariable\` or \`storeToolCallToVariable\`, ` +
|
|
525
|
-
`then reference them via {{variableName}} in future tool calls.\n` +
|
|
526
|
-
`Top repeated values to consider storing as variables:\n` +
|
|
527
|
-
examples.join("\n"),
|
|
528
|
-
});
|
|
529
|
-
}
|
|
530
|
-
};
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
/**
|
|
534
|
-
* Registers all custom variable tools with the ToolsService
|
|
535
|
-
*/
|
|
536
|
-
private registerTools(toolsService: ToolsService): void {
|
|
537
|
-
// Register setVariable tool
|
|
538
|
-
toolsService.addTools([
|
|
539
|
-
setVariableToolDefinition,
|
|
540
|
-
getVariableToolDefinition,
|
|
541
|
-
storeToolCallToVariableDefinition,
|
|
542
|
-
listVariablesToolDefinition,
|
|
543
|
-
deleteVariableToolDefinition,
|
|
544
|
-
]);
|
|
545
|
-
toolsService.addFunctions({
|
|
546
|
-
[this.setVariableToolName]: (name: string, contents: any) => {
|
|
547
|
-
return this.setVariable(name, contents);
|
|
548
|
-
},
|
|
549
|
-
[this.getVariableToolName]: (varName: string) => {
|
|
550
|
-
return this.getVariable(varName);
|
|
551
|
-
},
|
|
552
|
-
[this.storeToolCallToolName]: async (
|
|
553
|
-
varName: string,
|
|
554
|
-
toolName: string,
|
|
555
|
-
toolArgs: string
|
|
556
|
-
) => {
|
|
557
|
-
return await this.storeToolCallToVariable(varName, toolName, toolArgs);
|
|
558
|
-
},
|
|
559
|
-
[this.listVariablesToolName]: () => {
|
|
560
|
-
return this.listVariables();
|
|
561
|
-
},
|
|
562
|
-
[this.deleteVariableToolName]: (varName: string) => {
|
|
563
|
-
return this.deleteVariable(varName);
|
|
564
|
-
},
|
|
565
|
-
});
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
/**
|
|
569
|
-
* Gets all variable names
|
|
570
|
-
*/
|
|
571
|
-
getVariableNames(): string[] {
|
|
572
|
-
return Object.keys(this.variables);
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
/**
|
|
576
|
-
* Clears all variables
|
|
577
|
-
*/
|
|
578
|
-
clearVariables(): void {
|
|
579
|
-
this.variables = {};
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
/**
|
|
583
|
-
* Gets the number of stored variables
|
|
584
|
-
*/
|
|
585
|
-
getVariableCount(): number {
|
|
586
|
-
return Object.keys(this.variables).length;
|
|
587
|
-
}
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
export const setVariableToolDefinition: Tool = {
|
|
591
|
-
type: "function",
|
|
592
|
-
function: {
|
|
593
|
-
name: "setVariable",
|
|
594
|
-
description:
|
|
595
|
-
"Store a value in a variable for later use. The variable can then be referenced using {{variableName}} syntax in messages or tool calls.",
|
|
596
|
-
parameters: {
|
|
597
|
-
type: "object",
|
|
598
|
-
positional: true,
|
|
599
|
-
properties: {
|
|
600
|
-
name: {
|
|
601
|
-
type: "string",
|
|
602
|
-
description:
|
|
603
|
-
"The name of the variable (alphanumeric and underscore only)",
|
|
604
|
-
},
|
|
605
|
-
contents: {
|
|
606
|
-
type: "string",
|
|
607
|
-
description: "The value to store in the variable",
|
|
608
|
-
},
|
|
609
|
-
},
|
|
610
|
-
required: ["name", "contents"],
|
|
611
|
-
},
|
|
612
|
-
},
|
|
613
|
-
};
|
|
614
|
-
|
|
615
|
-
export const getVariableToolDefinition: Tool = {
|
|
616
|
-
type: "function",
|
|
617
|
-
function: {
|
|
618
|
-
name: "getVariable",
|
|
619
|
-
description: "Retrieve the value of a previously stored variable.",
|
|
620
|
-
parameters: {
|
|
621
|
-
type: "object",
|
|
622
|
-
positional: true,
|
|
623
|
-
properties: {
|
|
624
|
-
varName: {
|
|
625
|
-
type: "string",
|
|
626
|
-
description: "The name of the variable to retrieve",
|
|
627
|
-
},
|
|
628
|
-
},
|
|
629
|
-
required: ["varName"],
|
|
630
|
-
},
|
|
631
|
-
},
|
|
632
|
-
};
|
|
633
|
-
|
|
634
|
-
export const storeToolCallToVariableDefinition: Tool = {
|
|
635
|
-
type: "function",
|
|
636
|
-
function: {
|
|
637
|
-
name: "storeToolCallToVariable",
|
|
638
|
-
description:
|
|
639
|
-
"Execute a tool call and store its result in a variable for later use.",
|
|
640
|
-
parameters: {
|
|
641
|
-
type: "object",
|
|
642
|
-
positional: true,
|
|
643
|
-
properties: {
|
|
644
|
-
varName: {
|
|
645
|
-
type: "string",
|
|
646
|
-
description: "The name of the variable to store the result in",
|
|
647
|
-
},
|
|
648
|
-
toolName: {
|
|
649
|
-
type: "string",
|
|
650
|
-
description: "The name of the tool to call",
|
|
651
|
-
},
|
|
652
|
-
toolArgs: {
|
|
653
|
-
type: "string",
|
|
654
|
-
description: "The arguments for the tool call as a JSON string",
|
|
655
|
-
},
|
|
656
|
-
},
|
|
657
|
-
required: ["varName", "toolName", "toolArgs"],
|
|
658
|
-
},
|
|
659
|
-
},
|
|
660
|
-
};
|
|
661
|
-
|
|
662
|
-
export const listVariablesToolDefinition: Tool = {
|
|
663
|
-
type: "function",
|
|
664
|
-
function: {
|
|
665
|
-
name: "listVariables",
|
|
666
|
-
description: "List all currently stored variables with their values.",
|
|
667
|
-
parameters: {
|
|
668
|
-
type: "object",
|
|
669
|
-
positional: false,
|
|
670
|
-
properties: {},
|
|
671
|
-
required: [],
|
|
672
|
-
},
|
|
673
|
-
},
|
|
674
|
-
};
|
|
675
|
-
|
|
676
|
-
export const deleteVariableToolDefinition: Tool = {
|
|
677
|
-
type: "function",
|
|
678
|
-
function: {
|
|
679
|
-
name: "deleteVariable",
|
|
680
|
-
description: "Delete a specific variable from storage.",
|
|
681
|
-
parameters: {
|
|
682
|
-
type: "object",
|
|
683
|
-
positional: true,
|
|
684
|
-
properties: {
|
|
685
|
-
varName: {
|
|
686
|
-
type: "string",
|
|
687
|
-
description: "The name of the variable to delete",
|
|
688
|
-
},
|
|
689
|
-
},
|
|
690
|
-
required: ["varName"],
|
|
691
|
-
},
|
|
692
|
-
},
|
|
693
|
-
};
|