kagent-ts 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +68 -21
- package/README.md +27 -371
- package/dist/compression/progressive-compressor.d.ts +66 -0
- package/dist/compression/progressive-compressor.d.ts.map +1 -0
- package/dist/compression/progressive-compressor.js +367 -0
- package/dist/compression/progressive-compressor.js.map +1 -0
- package/dist/compression/types.d.ts +1 -5
- package/dist/compression/types.d.ts.map +1 -1
- package/dist/context/context-manager.d.ts +34 -15
- package/dist/context/context-manager.d.ts.map +1 -1
- package/dist/context/context-manager.js +78 -28
- package/dist/context/context-manager.js.map +1 -1
- package/dist/context/types.d.ts +20 -4
- package/dist/context/types.d.ts.map +1 -1
- package/dist/core/agent.d.ts +354 -25
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +646 -64
- package/dist/core/agent.js.map +1 -1
- package/dist/core/fusion-agent.d.ts +207 -0
- package/dist/core/fusion-agent.d.ts.map +1 -0
- package/dist/core/fusion-agent.js +769 -0
- package/dist/core/fusion-agent.js.map +1 -0
- package/dist/core/hooks.d.ts +19 -7
- package/dist/core/hooks.d.ts.map +1 -1
- package/dist/core/plan-solve-agent.d.ts +1 -15
- package/dist/core/plan-solve-agent.d.ts.map +1 -1
- package/dist/core/plan-solve-agent.js +142 -117
- package/dist/core/plan-solve-agent.js.map +1 -1
- package/dist/core/react-agent.d.ts +0 -13
- package/dist/core/react-agent.d.ts.map +1 -1
- package/dist/core/react-agent.js +127 -102
- package/dist/core/react-agent.js.map +1 -1
- package/dist/core/response-schema.d.ts +65 -0
- package/dist/core/response-schema.d.ts.map +1 -1
- package/dist/core/response-schema.js +174 -1
- package/dist/core/response-schema.js.map +1 -1
- package/dist/core/system-prompts.d.ts +27 -0
- package/dist/core/system-prompts.d.ts.map +1 -0
- package/dist/core/system-prompts.js +112 -0
- package/dist/core/system-prompts.js.map +1 -0
- package/dist/eval/benchmark.d.ts +81 -0
- package/dist/eval/benchmark.d.ts.map +1 -0
- package/dist/eval/benchmark.js +292 -0
- package/dist/eval/benchmark.js.map +1 -0
- package/dist/eval/eval-runner.d.ts +79 -0
- package/dist/eval/eval-runner.d.ts.map +1 -0
- package/dist/eval/eval-runner.js +252 -0
- package/dist/eval/eval-runner.js.map +1 -0
- package/dist/eval/index.d.ts +7 -0
- package/dist/eval/index.d.ts.map +1 -0
- package/dist/eval/index.js +13 -0
- package/dist/eval/index.js.map +1 -0
- package/dist/eval/tool-call-evaluator.d.ts +72 -0
- package/dist/eval/tool-call-evaluator.d.ts.map +1 -0
- package/dist/eval/tool-call-evaluator.js +265 -0
- package/dist/eval/tool-call-evaluator.js.map +1 -0
- package/dist/eval/types.d.ts +219 -0
- package/dist/eval/types.d.ts.map +1 -0
- package/dist/eval/types.js +3 -0
- package/dist/eval/types.js.map +1 -0
- package/dist/index.d.ts +58 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +116 -8
- package/dist/index.js.map +1 -1
- package/dist/llm/anthropic-provider.d.ts +141 -0
- package/dist/llm/anthropic-provider.d.ts.map +1 -0
- package/dist/llm/anthropic-provider.js +486 -0
- package/dist/llm/anthropic-provider.js.map +1 -0
- package/dist/llm/errors.d.ts +26 -0
- package/dist/llm/errors.d.ts.map +1 -0
- package/dist/llm/errors.js +19 -0
- package/dist/llm/errors.js.map +1 -0
- package/dist/llm/factory.d.ts +73 -0
- package/dist/llm/factory.d.ts.map +1 -0
- package/dist/llm/factory.js +77 -0
- package/dist/llm/factory.js.map +1 -0
- package/dist/llm/fallback-provider.d.ts +47 -0
- package/dist/llm/fallback-provider.d.ts.map +1 -0
- package/dist/llm/fallback-provider.js +91 -0
- package/dist/llm/fallback-provider.js.map +1 -0
- package/dist/llm/interface.d.ts +54 -11
- package/dist/llm/interface.d.ts.map +1 -1
- package/dist/llm/interface.js +34 -0
- package/dist/llm/interface.js.map +1 -1
- package/dist/llm/model-router.d.ts +126 -0
- package/dist/llm/model-router.d.ts.map +1 -0
- package/dist/llm/model-router.js +178 -0
- package/dist/llm/model-router.js.map +1 -0
- package/dist/llm/openai-provider.d.ts +8 -32
- package/dist/llm/openai-provider.d.ts.map +1 -1
- package/dist/llm/openai-provider.js +27 -60
- package/dist/llm/openai-provider.js.map +1 -1
- package/dist/llm/rate-limiter.d.ts +41 -0
- package/dist/llm/rate-limiter.d.ts.map +1 -0
- package/dist/llm/rate-limiter.js +93 -0
- package/dist/llm/rate-limiter.js.map +1 -0
- package/dist/llm/retry.d.ts +26 -0
- package/dist/llm/retry.d.ts.map +1 -0
- package/dist/llm/retry.js +44 -0
- package/dist/llm/retry.js.map +1 -0
- package/dist/llm/token-budget.d.ts +97 -0
- package/dist/llm/token-budget.d.ts.map +1 -0
- package/dist/llm/token-budget.js +115 -0
- package/dist/llm/token-budget.js.map +1 -0
- package/dist/logging/index.d.ts +2 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +7 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/logger.d.ts +38 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +34 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/mcp/mcp-client-manager.d.ts +10 -2
- package/dist/mcp/mcp-client-manager.d.ts.map +1 -1
- package/dist/mcp/mcp-client-manager.js +20 -9
- package/dist/mcp/mcp-client-manager.js.map +1 -1
- package/dist/memory/index.d.ts +3 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +6 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memory-manager.d.ts +119 -0
- package/dist/memory/memory-manager.d.ts.map +1 -0
- package/dist/memory/memory-manager.js +334 -0
- package/dist/memory/memory-manager.js.map +1 -0
- package/dist/messages/types.d.ts +2 -0
- package/dist/messages/types.d.ts.map +1 -1
- package/dist/orchestrator/index.d.ts +5 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +13 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/json-extractor.d.ts +18 -0
- package/dist/orchestrator/json-extractor.d.ts.map +1 -0
- package/dist/orchestrator/json-extractor.js +111 -0
- package/dist/orchestrator/json-extractor.js.map +1 -0
- package/dist/orchestrator/orchestrator-agent.d.ts +152 -0
- package/dist/orchestrator/orchestrator-agent.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator-agent.js +675 -0
- package/dist/orchestrator/orchestrator-agent.js.map +1 -0
- package/dist/orchestrator/orchestrator-response.d.ts +40 -0
- package/dist/orchestrator/orchestrator-response.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator-response.js +275 -0
- package/dist/orchestrator/orchestrator-response.js.map +1 -0
- package/dist/orchestrator/orchestrator-types.d.ts +116 -0
- package/dist/orchestrator/orchestrator-types.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator-types.js +3 -0
- package/dist/orchestrator/orchestrator-types.js.map +1 -0
- package/dist/preferences/preference-manager.d.ts +8 -3
- package/dist/preferences/preference-manager.d.ts.map +1 -1
- package/dist/preferences/preference-manager.js +17 -4
- package/dist/preferences/preference-manager.js.map +1 -1
- package/dist/rag/chroma-store.d.ts +52 -0
- package/dist/rag/chroma-store.d.ts.map +1 -0
- package/dist/rag/chroma-store.js +110 -0
- package/dist/rag/chroma-store.js.map +1 -0
- package/dist/rag/document-loader.d.ts +21 -0
- package/dist/rag/document-loader.d.ts.map +1 -0
- package/dist/rag/document-loader.js +129 -0
- package/dist/rag/document-loader.js.map +1 -0
- package/dist/rag/embedding-provider.d.ts +36 -0
- package/dist/rag/embedding-provider.d.ts.map +1 -0
- package/dist/rag/embedding-provider.js +74 -0
- package/dist/rag/embedding-provider.js.map +1 -0
- package/dist/rag/index.d.ts +17 -0
- package/dist/rag/index.d.ts.map +1 -0
- package/dist/rag/index.js +27 -0
- package/dist/rag/index.js.map +1 -0
- package/dist/rag/keyword-index.d.ts +53 -0
- package/dist/rag/keyword-index.d.ts.map +1 -0
- package/dist/rag/keyword-index.js +161 -0
- package/dist/rag/keyword-index.js.map +1 -0
- package/dist/rag/llm-reranker.d.ts +36 -0
- package/dist/rag/llm-reranker.d.ts.map +1 -0
- package/dist/rag/llm-reranker.js +95 -0
- package/dist/rag/llm-reranker.js.map +1 -0
- package/dist/rag/rag-manager.d.ts +54 -0
- package/dist/rag/rag-manager.d.ts.map +1 -0
- package/dist/rag/rag-manager.js +179 -0
- package/dist/rag/rag-manager.js.map +1 -0
- package/dist/rag/rag-types.d.ts +143 -0
- package/dist/rag/rag-types.d.ts.map +1 -0
- package/dist/rag/rag-types.js +9 -0
- package/dist/rag/rag-types.js.map +1 -0
- package/dist/rag/rrf.d.ts +47 -0
- package/dist/rag/rrf.d.ts.map +1 -0
- package/dist/rag/rrf.js +70 -0
- package/dist/rag/rrf.js.map +1 -0
- package/dist/rag/search-knowledge.d.ts +24 -0
- package/dist/rag/search-knowledge.d.ts.map +1 -0
- package/dist/rag/search-knowledge.js +86 -0
- package/dist/rag/search-knowledge.js.map +1 -0
- package/dist/rag/text-splitter.d.ts +25 -0
- package/dist/rag/text-splitter.d.ts.map +1 -0
- package/dist/rag/text-splitter.js +136 -0
- package/dist/rag/text-splitter.js.map +1 -0
- package/dist/rag/vector-store.d.ts +34 -0
- package/dist/rag/vector-store.d.ts.map +1 -0
- package/dist/rag/vector-store.js +73 -0
- package/dist/rag/vector-store.js.map +1 -0
- package/dist/reflection/error-notebook.d.ts +125 -0
- package/dist/reflection/error-notebook.d.ts.map +1 -0
- package/dist/reflection/error-notebook.js +368 -0
- package/dist/reflection/error-notebook.js.map +1 -0
- package/dist/reflection/index.d.ts +8 -0
- package/dist/reflection/index.d.ts.map +1 -0
- package/dist/reflection/index.js +12 -0
- package/dist/reflection/index.js.map +1 -0
- package/dist/reflection/memory-reflector.d.ts +97 -0
- package/dist/reflection/memory-reflector.d.ts.map +1 -0
- package/dist/reflection/memory-reflector.js +215 -0
- package/dist/reflection/memory-reflector.js.map +1 -0
- package/dist/reflection/reflection-agent.d.ts +105 -0
- package/dist/reflection/reflection-agent.d.ts.map +1 -0
- package/dist/reflection/reflection-agent.js +234 -0
- package/dist/reflection/reflection-agent.js.map +1 -0
- package/dist/reflection/reflection-hook.d.ts +50 -0
- package/dist/reflection/reflection-hook.d.ts.map +1 -0
- package/dist/reflection/reflection-hook.js +108 -0
- package/dist/reflection/reflection-hook.js.map +1 -0
- package/dist/rules/project-rules.d.ts +47 -0
- package/dist/rules/project-rules.d.ts.map +1 -0
- package/dist/rules/project-rules.js +166 -0
- package/dist/rules/project-rules.js.map +1 -0
- package/dist/security/boundaries.d.ts +81 -0
- package/dist/security/boundaries.d.ts.map +1 -0
- package/dist/security/boundaries.js +158 -0
- package/dist/security/boundaries.js.map +1 -0
- package/dist/security/index.d.ts +2 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +11 -0
- package/dist/security/index.js.map +1 -0
- package/dist/session/session-types.d.ts +25 -4
- package/dist/session/session-types.d.ts.map +1 -1
- package/dist/skills/file-skill-loader.d.ts +4 -6
- package/dist/skills/file-skill-loader.d.ts.map +1 -1
- package/dist/skills/file-skill-loader.js +8 -19
- package/dist/skills/file-skill-loader.js.map +1 -1
- package/dist/skills/index.d.ts +1 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +1 -2
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/skill-manager.d.ts +18 -8
- package/dist/skills/skill-manager.d.ts.map +1 -1
- package/dist/skills/skill-manager.js +58 -36
- package/dist/skills/skill-manager.js.map +1 -1
- package/dist/skills/types.d.ts +3 -8
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/subagent/index.d.ts +4 -0
- package/dist/subagent/index.d.ts.map +1 -0
- package/dist/subagent/index.js +8 -0
- package/dist/subagent/index.js.map +1 -0
- package/dist/subagent/subagent-loader.d.ts +53 -0
- package/dist/subagent/subagent-loader.d.ts.map +1 -0
- package/dist/subagent/subagent-loader.js +155 -0
- package/dist/subagent/subagent-loader.js.map +1 -0
- package/dist/subagent/subagent-manager.d.ts +161 -0
- package/dist/subagent/subagent-manager.d.ts.map +1 -0
- package/dist/subagent/subagent-manager.js +468 -0
- package/dist/subagent/subagent-manager.js.map +1 -0
- package/dist/subagent/subagent-types.d.ts +77 -0
- package/dist/subagent/subagent-types.d.ts.map +1 -0
- package/dist/subagent/subagent-types.js +3 -0
- package/dist/subagent/subagent-types.js.map +1 -0
- package/dist/tools/builtin/bash.d.ts +3 -0
- package/dist/tools/builtin/bash.d.ts.map +1 -0
- package/dist/tools/builtin/bash.js +87 -0
- package/dist/tools/builtin/bash.js.map +1 -0
- package/dist/tools/builtin/edit-file.d.ts.map +1 -1
- package/dist/tools/builtin/edit-file.js +1 -0
- package/dist/tools/builtin/edit-file.js.map +1 -1
- package/dist/tools/builtin/index.d.ts +14 -0
- package/dist/tools/builtin/index.d.ts.map +1 -1
- package/dist/tools/builtin/index.js +45 -1
- package/dist/tools/builtin/index.js.map +1 -1
- package/dist/tools/builtin/list-errors.d.ts +7 -0
- package/dist/tools/builtin/list-errors.d.ts.map +1 -0
- package/dist/tools/builtin/list-errors.js +64 -0
- package/dist/tools/builtin/list-errors.js.map +1 -0
- package/dist/tools/builtin/list-subagents.d.ts +7 -0
- package/dist/tools/builtin/list-subagents.d.ts.map +1 -0
- package/dist/tools/builtin/list-subagents.js +21 -0
- package/dist/tools/builtin/list-subagents.js.map +1 -0
- package/dist/tools/builtin/recall.d.ts +11 -0
- package/dist/tools/builtin/recall.d.ts.map +1 -0
- package/dist/tools/builtin/recall.js +60 -0
- package/dist/tools/builtin/recall.js.map +1 -0
- package/dist/tools/builtin/remember.d.ts +12 -0
- package/dist/tools/builtin/remember.d.ts.map +1 -0
- package/dist/tools/builtin/remember.js +72 -0
- package/dist/tools/builtin/remember.js.map +1 -0
- package/dist/tools/builtin/skill.d.ts +14 -0
- package/dist/tools/builtin/skill.d.ts.map +1 -0
- package/dist/tools/builtin/skill.js +71 -0
- package/dist/tools/builtin/skill.js.map +1 -0
- package/dist/tools/builtin/spawn-subagent.d.ts +7 -0
- package/dist/tools/builtin/spawn-subagent.d.ts.map +1 -0
- package/dist/tools/builtin/spawn-subagent.js +43 -0
- package/dist/tools/builtin/spawn-subagent.js.map +1 -0
- package/dist/tools/builtin/web-fetch.d.ts +3 -0
- package/dist/tools/builtin/web-fetch.d.ts.map +1 -0
- package/dist/tools/builtin/web-fetch.js +101 -0
- package/dist/tools/builtin/web-fetch.js.map +1 -0
- package/dist/tools/builtin/write-file.d.ts.map +1 -1
- package/dist/tools/builtin/write-file.js +1 -0
- package/dist/tools/builtin/write-file.js.map +1 -1
- package/dist/tools/circuit-breaker.d.ts +19 -10
- package/dist/tools/circuit-breaker.d.ts.map +1 -1
- package/dist/tools/circuit-breaker.js +22 -11
- package/dist/tools/circuit-breaker.js.map +1 -1
- package/dist/tools/error-tracker.d.ts +28 -44
- package/dist/tools/error-tracker.d.ts.map +1 -1
- package/dist/tools/error-tracker.js +39 -156
- package/dist/tools/error-tracker.js.map +1 -1
- package/dist/tools/tool-filter.d.ts +70 -0
- package/dist/tools/tool-filter.d.ts.map +1 -0
- package/dist/tools/tool-filter.js +92 -0
- package/dist/tools/tool-filter.js.map +1 -0
- package/dist/tools/tool-output-truncator.d.ts +36 -0
- package/dist/tools/tool-output-truncator.d.ts.map +1 -0
- package/dist/tools/tool-output-truncator.js +117 -0
- package/dist/tools/tool-output-truncator.js.map +1 -0
- package/dist/tools/tool-registry.d.ts +25 -9
- package/dist/tools/tool-registry.d.ts.map +1 -1
- package/dist/tools/tool-registry.js +77 -28
- package/dist/tools/tool-registry.js.map +1 -1
- package/dist/tools/tool-validator.d.ts +13 -0
- package/dist/tools/tool-validator.d.ts.map +1 -0
- package/dist/tools/tool-validator.js +116 -0
- package/dist/tools/tool-validator.js.map +1 -0
- package/dist/tools/types.d.ts +86 -3
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js +51 -2
- package/dist/tools/types.js.map +1 -1
- package/dist/trace/trace-logger.d.ts +30 -4
- package/dist/trace/trace-logger.d.ts.map +1 -1
- package/dist/trace/trace-logger.js +82 -6
- package/dist/trace/trace-logger.js.map +1 -1
- package/package.json +13 -4
- package/dist/compression/sliding-window.d.ts +0 -21
- package/dist/compression/sliding-window.d.ts.map +0 -1
- package/dist/compression/sliding-window.js +0 -44
- package/dist/compression/sliding-window.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/llm/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,iBAAiB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAI3E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IACzC,oEAAoE;IACpE,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,iBAAiB,CAAC;CACtD;AAID;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EACrC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC7B,SAAS,EAAE,cAAc,GACxB,OAAO,CAAC,CAAC,CAAC,CA+BZ"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withRetry = withRetry;
|
|
4
|
+
const errors_1 = require("./errors");
|
|
5
|
+
// ─── withRetry ──────────────────────────────────────────────────────────────
|
|
6
|
+
/**
|
|
7
|
+
* Wrap an async operation with network-error retry logic.
|
|
8
|
+
*
|
|
9
|
+
* Retry strategy:
|
|
10
|
+
* - The `callbacks.isRetryable` predicate decides which errors are retried.
|
|
11
|
+
* - Uses exponential backoff with full jitter: delay = base * 2^attempt * random(0.5, 1.0).
|
|
12
|
+
* - Non-retryable errors propagate immediately.
|
|
13
|
+
* - After all retries are exhausted, throws an `LLMNetworkError`.
|
|
14
|
+
*
|
|
15
|
+
* @param fn The async operation to retry.
|
|
16
|
+
* @param config Retry configuration (maxRetries, baseDelayMs, maxDelayMs).
|
|
17
|
+
* @param callbacks Provider-specific error classification callbacks.
|
|
18
|
+
*/
|
|
19
|
+
async function withRetry(fn, config, callbacks) {
|
|
20
|
+
const { maxRetries, baseDelayMs, maxDelayMs } = config;
|
|
21
|
+
let lastError;
|
|
22
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
23
|
+
try {
|
|
24
|
+
return await fn();
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
lastError = error;
|
|
28
|
+
// Non-network errors propagate immediately (e.g., invalid API key, bad request)
|
|
29
|
+
if (!callbacks.isRetryable(error))
|
|
30
|
+
throw error;
|
|
31
|
+
if (attempt >= maxRetries)
|
|
32
|
+
break; // all retries exhausted
|
|
33
|
+
// Exponential backoff with full jitter
|
|
34
|
+
const delay = Math.min(baseDelayMs * Math.pow(2, attempt) * (0.5 + Math.random() * 0.5), maxDelayMs);
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
|
36
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// All retries exhausted — wrap the final error
|
|
40
|
+
const cause = callbacks.classifyError(lastError);
|
|
41
|
+
const message = lastError instanceof Error ? lastError.message : String(lastError);
|
|
42
|
+
throw new errors_1.LLMNetworkError(message, cause);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/llm/retry.ts"],"names":[],"mappings":";;AA8BA,8BAmCC;AAjED,qCAA2E;AAe3E,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,SAAS,CAC7B,EAAqC,EACrC,MAA6B,EAC7B,SAAyB;IAEzB,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACvD,IAAI,SAAkB,CAAC;IAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,SAAS,GAAG,KAAK,CAAC;YAElB,gFAAgF;YAChF,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YAE/C,IAAI,OAAO,IAAI,UAAU;gBAAE,MAAM,CAAC,wBAAwB;YAE1D,uCAAuC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,EAChE,UAAU,CACX,CAAC;YAEF,2DAA2D;YAC3D,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,OAAO,GACX,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACrE,MAAM,IAAI,wBAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Budget — session-level circuit breaker that stops LLM calls when
|
|
3
|
+
* a cumulative token limit is exceeded.
|
|
4
|
+
*
|
|
5
|
+
* The check runs in the agent loop BEFORE each LLM call (with an estimated
|
|
6
|
+
* input size) and usage is recorded AFTER each successful response (using
|
|
7
|
+
* the actual token counts from the LLM provider).
|
|
8
|
+
*/
|
|
9
|
+
export interface TokenBudgetConfig {
|
|
10
|
+
/** Maximum total tokens allowed across all LLM calls in a session (input + output). */
|
|
11
|
+
maxTotalTokens: number;
|
|
12
|
+
/**
|
|
13
|
+
* Warn via the logger when usage exceeds this fraction of the budget.
|
|
14
|
+
* Default: 0.8 (80 %).
|
|
15
|
+
*/
|
|
16
|
+
warnThreshold?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Pricing model for cost estimation.
|
|
19
|
+
* Prices are per 1,000 tokens (standard LLM pricing unit).
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* // GPT-4o
|
|
24
|
+
* pricing: { inputPricePer1K: 0.0025, outputPricePer1K: 0.01 }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
pricing?: {
|
|
28
|
+
inputPricePer1K: number;
|
|
29
|
+
outputPricePer1K: number;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export interface TokenBudgetStatus {
|
|
33
|
+
/** Total tokens consumed so far (input + output). */
|
|
34
|
+
totalTokensUsed: number;
|
|
35
|
+
/** Budget ceiling. */
|
|
36
|
+
maxTotalTokens: number;
|
|
37
|
+
/** Tokens remaining before exhaustion. */
|
|
38
|
+
remainingTokens: number;
|
|
39
|
+
/** Whether the budget has been fully exhausted. */
|
|
40
|
+
isExhausted: boolean;
|
|
41
|
+
/** Number of LLM calls tracked. */
|
|
42
|
+
callCount: number;
|
|
43
|
+
}
|
|
44
|
+
/** Cumulative cost breakdown for the current session. */
|
|
45
|
+
export interface TokenBudgetCost {
|
|
46
|
+
inputTokens: number;
|
|
47
|
+
outputTokens: number;
|
|
48
|
+
totalTokens: number;
|
|
49
|
+
inputCost: number;
|
|
50
|
+
outputCost: number;
|
|
51
|
+
totalCost: number;
|
|
52
|
+
}
|
|
53
|
+
export declare class TokenBudget {
|
|
54
|
+
private maxTotalTokens;
|
|
55
|
+
private warnThreshold;
|
|
56
|
+
private pricing?;
|
|
57
|
+
private totalTokensUsed;
|
|
58
|
+
private inputTokensUsed;
|
|
59
|
+
private outputTokensUsed;
|
|
60
|
+
private callCount;
|
|
61
|
+
private warned;
|
|
62
|
+
constructor(config: TokenBudgetConfig);
|
|
63
|
+
/**
|
|
64
|
+
* Record token usage from a completed LLM call.
|
|
65
|
+
* Called after the LLM response is received.
|
|
66
|
+
*/
|
|
67
|
+
recordUsage(promptTokens: number, completionTokens: number): void;
|
|
68
|
+
/**
|
|
69
|
+
* Check whether the budget allows another LLM call.
|
|
70
|
+
*
|
|
71
|
+
* @param estimatedInputTokens Estimated tokens in the upcoming request
|
|
72
|
+
* (system prompt + context messages).
|
|
73
|
+
* @returns Status snapshot. Callers should check `isExhausted` before
|
|
74
|
+
* making the LLM call.
|
|
75
|
+
*/
|
|
76
|
+
checkBeforeCall(estimatedInputTokens: number): TokenBudgetStatus;
|
|
77
|
+
/**
|
|
78
|
+
* Whether the budget has been warned about (passed `warnThreshold`).
|
|
79
|
+
* Returns true exactly once per threshold crossing — the flag resets
|
|
80
|
+
* after this call so the warning fires only once.
|
|
81
|
+
*/
|
|
82
|
+
shouldWarn(): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Get the cumulative cost of the current session.
|
|
85
|
+
* Returns all zeros if no pricing model was configured.
|
|
86
|
+
*/
|
|
87
|
+
getSessionCost(): TokenBudgetCost;
|
|
88
|
+
/**
|
|
89
|
+
* Reset the budget for a new conversation.
|
|
90
|
+
*/
|
|
91
|
+
reset(): void;
|
|
92
|
+
/**
|
|
93
|
+
* Get a read-only snapshot of the current budget.
|
|
94
|
+
*/
|
|
95
|
+
getStatus(): TokenBudgetStatus;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=token-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-budget.d.ts","sourceRoot":"","sources":["../../src/llm/token-budget.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,iBAAiB;IAChC,uFAAuF;IACvF,cAAc,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE;QACR,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,WAAW,EAAE,OAAO,CAAC;IACrB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,qBAAa,WAAW;IACtB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAwD;IACxE,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,iBAAiB;IAQrC;;;OAGG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAOjE;;;;;;;OAOG;IACH,eAAe,CAAC,oBAAoB,EAAE,MAAM,GAAG,iBAAiB;IAWhE;;;;OAIG;IACH,UAAU,IAAI,OAAO;IAUrB;;;OAGG;IACH,cAAc,IAAI,eAAe;IAkBjC;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,SAAS,IAAI,iBAAiB;CAS/B"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Token Budget — session-level circuit breaker that stops LLM calls when
|
|
4
|
+
* a cumulative token limit is exceeded.
|
|
5
|
+
*
|
|
6
|
+
* The check runs in the agent loop BEFORE each LLM call (with an estimated
|
|
7
|
+
* input size) and usage is recorded AFTER each successful response (using
|
|
8
|
+
* the actual token counts from the LLM provider).
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.TokenBudget = void 0;
|
|
12
|
+
// ─── TokenBudget ─────────────────────────────────────────────────────────────
|
|
13
|
+
class TokenBudget {
|
|
14
|
+
maxTotalTokens;
|
|
15
|
+
warnThreshold;
|
|
16
|
+
pricing;
|
|
17
|
+
totalTokensUsed = 0;
|
|
18
|
+
inputTokensUsed = 0;
|
|
19
|
+
outputTokensUsed = 0;
|
|
20
|
+
callCount = 0;
|
|
21
|
+
warned = false;
|
|
22
|
+
constructor(config) {
|
|
23
|
+
this.maxTotalTokens = config.maxTotalTokens;
|
|
24
|
+
this.warnThreshold = config.warnThreshold ?? 0.8;
|
|
25
|
+
this.pricing = config.pricing;
|
|
26
|
+
}
|
|
27
|
+
// ─── Public API ──────────────────────────────────────────────────────────
|
|
28
|
+
/**
|
|
29
|
+
* Record token usage from a completed LLM call.
|
|
30
|
+
* Called after the LLM response is received.
|
|
31
|
+
*/
|
|
32
|
+
recordUsage(promptTokens, completionTokens) {
|
|
33
|
+
this.totalTokensUsed += promptTokens + completionTokens;
|
|
34
|
+
this.inputTokensUsed += promptTokens;
|
|
35
|
+
this.outputTokensUsed += completionTokens;
|
|
36
|
+
this.callCount++;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check whether the budget allows another LLM call.
|
|
40
|
+
*
|
|
41
|
+
* @param estimatedInputTokens Estimated tokens in the upcoming request
|
|
42
|
+
* (system prompt + context messages).
|
|
43
|
+
* @returns Status snapshot. Callers should check `isExhausted` before
|
|
44
|
+
* making the LLM call.
|
|
45
|
+
*/
|
|
46
|
+
checkBeforeCall(estimatedInputTokens) {
|
|
47
|
+
const projected = this.totalTokensUsed + estimatedInputTokens;
|
|
48
|
+
return {
|
|
49
|
+
totalTokensUsed: this.totalTokensUsed,
|
|
50
|
+
maxTotalTokens: this.maxTotalTokens,
|
|
51
|
+
remainingTokens: Math.max(0, this.maxTotalTokens - projected),
|
|
52
|
+
isExhausted: projected >= this.maxTotalTokens,
|
|
53
|
+
callCount: this.callCount,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Whether the budget has been warned about (passed `warnThreshold`).
|
|
58
|
+
* Returns true exactly once per threshold crossing — the flag resets
|
|
59
|
+
* after this call so the warning fires only once.
|
|
60
|
+
*/
|
|
61
|
+
shouldWarn() {
|
|
62
|
+
if (this.warned)
|
|
63
|
+
return false;
|
|
64
|
+
const ratio = this.totalTokensUsed / this.maxTotalTokens;
|
|
65
|
+
if (ratio >= this.warnThreshold) {
|
|
66
|
+
this.warned = true;
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get the cumulative cost of the current session.
|
|
73
|
+
* Returns all zeros if no pricing model was configured.
|
|
74
|
+
*/
|
|
75
|
+
getSessionCost() {
|
|
76
|
+
const inputCost = this.pricing
|
|
77
|
+
? Math.round(this.inputTokensUsed / 1000 * this.pricing.inputPricePer1K * 10000) / 10000
|
|
78
|
+
: 0;
|
|
79
|
+
const outputCost = this.pricing
|
|
80
|
+
? Math.round(this.outputTokensUsed / 1000 * this.pricing.outputPricePer1K * 10000) / 10000
|
|
81
|
+
: 0;
|
|
82
|
+
return {
|
|
83
|
+
inputTokens: this.inputTokensUsed,
|
|
84
|
+
outputTokens: this.outputTokensUsed,
|
|
85
|
+
totalTokens: this.totalTokensUsed,
|
|
86
|
+
inputCost,
|
|
87
|
+
outputCost,
|
|
88
|
+
totalCost: Math.round((inputCost + outputCost) * 10000) / 10000,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Reset the budget for a new conversation.
|
|
93
|
+
*/
|
|
94
|
+
reset() {
|
|
95
|
+
this.totalTokensUsed = 0;
|
|
96
|
+
this.inputTokensUsed = 0;
|
|
97
|
+
this.outputTokensUsed = 0;
|
|
98
|
+
this.callCount = 0;
|
|
99
|
+
this.warned = false;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get a read-only snapshot of the current budget.
|
|
103
|
+
*/
|
|
104
|
+
getStatus() {
|
|
105
|
+
return {
|
|
106
|
+
totalTokensUsed: this.totalTokensUsed,
|
|
107
|
+
maxTotalTokens: this.maxTotalTokens,
|
|
108
|
+
remainingTokens: Math.max(0, this.maxTotalTokens - this.totalTokensUsed),
|
|
109
|
+
isExhausted: this.totalTokensUsed >= this.maxTotalTokens,
|
|
110
|
+
callCount: this.callCount,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.TokenBudget = TokenBudget;
|
|
115
|
+
//# sourceMappingURL=token-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-budget.js","sourceRoot":"","sources":["../../src/llm/token-budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SilentLogger = exports.ConsoleLogger = void 0;
|
|
4
|
+
var logger_1 = require("./logger");
|
|
5
|
+
Object.defineProperty(exports, "ConsoleLogger", { enumerable: true, get: function () { return logger_1.ConsoleLogger; } });
|
|
6
|
+
Object.defineProperty(exports, "SilentLogger", { enumerable: true, get: function () { return logger_1.SilentLogger; } });
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":";;;AAAA,mCAA+D;AAA9C,uGAAA,aAAa,OAAA;AAAE,sGAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured logger interface for the agent framework.
|
|
3
|
+
*
|
|
4
|
+
* All framework-internal logging goes through this interface so consumers
|
|
5
|
+
* can plug in their own logger (winston, pino, etc.) or silence output
|
|
6
|
+
* entirely for test environments.
|
|
7
|
+
*/
|
|
8
|
+
export interface Logger {
|
|
9
|
+
/** Debug-level diagnostic messages (verbose, typically disabled in production). */
|
|
10
|
+
debug(tag: string, message: string, context?: Record<string, unknown>): void;
|
|
11
|
+
/** Informational messages about agent lifecycle and progress. */
|
|
12
|
+
info(tag: string, message: string, context?: Record<string, unknown>): void;
|
|
13
|
+
/** Warnings — non-fatal issues the operator should know about. */
|
|
14
|
+
warn(tag: string, message: string, context?: Record<string, unknown>): void;
|
|
15
|
+
/** Errors — fatal or near-fatal issues requiring attention. */
|
|
16
|
+
error(tag: string, message: string, context?: Record<string, unknown>): void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Default logger that writes to `console` with the existing `[Tag]` prefix
|
|
20
|
+
* convention. Preserves the exact output format of the pre-logger codebase.
|
|
21
|
+
*/
|
|
22
|
+
export declare class ConsoleLogger implements Logger {
|
|
23
|
+
debug(tag: string, message: string, _context?: Record<string, unknown>): void;
|
|
24
|
+
info(tag: string, message: string, _context?: Record<string, unknown>): void;
|
|
25
|
+
warn(tag: string, message: string, _context?: Record<string, unknown>): void;
|
|
26
|
+
error(tag: string, message: string, _context?: Record<string, unknown>): void;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Logger that discards all messages. Use in tests or when you want to
|
|
30
|
+
* suppress all framework output.
|
|
31
|
+
*/
|
|
32
|
+
export declare class SilentLogger implements Logger {
|
|
33
|
+
debug(_tag: string, _message: string, _context?: Record<string, unknown>): void;
|
|
34
|
+
info(_tag: string, _message: string, _context?: Record<string, unknown>): void;
|
|
35
|
+
warn(_tag: string, _message: string, _context?: Record<string, unknown>): void;
|
|
36
|
+
error(_tag: string, _message: string, _context?: Record<string, unknown>): void;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,MAAM;IACrB,mFAAmF;IACnF,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAE7E,iEAAiE;IACjE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAE5E,kEAAkE;IAClE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAE5E,+DAA+D;IAC/D,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9E;AAED;;;GAGG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI7E,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5E,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5E,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAG9E;AAED;;;GAGG;AACH,qBAAa,YAAa,YAAW,MAAM;IACzC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC/E,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC9E,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC9E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAChF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SilentLogger = exports.ConsoleLogger = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Default logger that writes to `console` with the existing `[Tag]` prefix
|
|
6
|
+
* convention. Preserves the exact output format of the pre-logger codebase.
|
|
7
|
+
*/
|
|
8
|
+
class ConsoleLogger {
|
|
9
|
+
debug(tag, message, _context) {
|
|
10
|
+
console.debug(`[${tag}] ${message}`);
|
|
11
|
+
}
|
|
12
|
+
info(tag, message, _context) {
|
|
13
|
+
console.log(`[${tag}] ${message}`);
|
|
14
|
+
}
|
|
15
|
+
warn(tag, message, _context) {
|
|
16
|
+
console.warn(`[${tag}] ${message}`);
|
|
17
|
+
}
|
|
18
|
+
error(tag, message, _context) {
|
|
19
|
+
console.error(`[${tag}] ${message}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.ConsoleLogger = ConsoleLogger;
|
|
23
|
+
/**
|
|
24
|
+
* Logger that discards all messages. Use in tests or when you want to
|
|
25
|
+
* suppress all framework output.
|
|
26
|
+
*/
|
|
27
|
+
class SilentLogger {
|
|
28
|
+
debug(_tag, _message, _context) { }
|
|
29
|
+
info(_tag, _message, _context) { }
|
|
30
|
+
warn(_tag, _message, _context) { }
|
|
31
|
+
error(_tag, _message, _context) { }
|
|
32
|
+
}
|
|
33
|
+
exports.SilentLogger = SilentLogger;
|
|
34
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":";;;AAqBA;;;GAGG;AACH,MAAa,aAAa;IACxB,KAAK,CAAC,GAAW,EAAE,OAAe,EAAE,QAAkC;QACpE,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,OAAe,EAAE,QAAkC;QACnE,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,OAAe,EAAE,QAAkC;QACnE,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,OAAe,EAAE,QAAkC;QACpE,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;CACF;AAhBD,sCAgBC;AAED;;;GAGG;AACH,MAAa,YAAY;IACvB,KAAK,CAAC,IAAY,EAAE,QAAgB,EAAE,QAAkC,IAAS,CAAC;IAClF,IAAI,CAAC,IAAY,EAAE,QAAgB,EAAE,QAAkC,IAAS,CAAC;IACjF,IAAI,CAAC,IAAY,EAAE,QAAgB,EAAE,QAAkC,IAAS,CAAC;IACjF,KAAK,CAAC,IAAY,EAAE,QAAgB,EAAE,QAAkC,IAAS,CAAC;CACnF;AALD,oCAKC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ToolRegistry } from "../tools/tool-registry";
|
|
2
2
|
import { McpServerConfig, McpConnectionStatus, McpConnectionErrorReport } from "./mcp-types";
|
|
3
|
+
import { Logger } from "../logging/logger";
|
|
3
4
|
/**
|
|
4
5
|
* Manages connections to MCP (Model Context Protocol) servers.
|
|
5
6
|
*
|
|
@@ -14,13 +15,16 @@ export declare class McpClientManager {
|
|
|
14
15
|
private connections;
|
|
15
16
|
/** The ToolRegistry where adapted tools are registered. */
|
|
16
17
|
private toolRegistry;
|
|
17
|
-
|
|
18
|
+
private logger;
|
|
19
|
+
constructor(toolRegistry: ToolRegistry, logger?: Logger);
|
|
18
20
|
/**
|
|
19
21
|
* Connect to a single MCP server, discover its tools, and register them
|
|
20
22
|
* in the ToolRegistry with a `{serverName}_` prefix.
|
|
21
23
|
*
|
|
24
|
+
* Idempotent — if the server is already connected, this is a no-op.
|
|
25
|
+
*
|
|
22
26
|
* @throws McpConnectionError if the config is invalid or the
|
|
23
|
-
* connection/tool-discovery fails.
|
|
27
|
+
* connection/tool-discovery fails (only for new connections).
|
|
24
28
|
*/
|
|
25
29
|
connectToServer(serverName: string, config: McpServerConfig): Promise<void>;
|
|
26
30
|
/**
|
|
@@ -38,6 +42,10 @@ export declare class McpClientManager {
|
|
|
38
42
|
* Disconnect from all MCP servers and unregister all MCP-provided tools.
|
|
39
43
|
*/
|
|
40
44
|
disconnectAll(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Check if a specific server is currently connected.
|
|
47
|
+
*/
|
|
48
|
+
hasServer(serverName: string): boolean;
|
|
41
49
|
/**
|
|
42
50
|
* Get connection status for all servers.
|
|
43
51
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client-manager.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-client-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EAEzB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-client-manager.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-client-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EAEzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAiB,MAAM,mBAAmB,CAAC;AAmC1D;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAC3B,+CAA+C;IAC/C,OAAO,CAAC,WAAW,CAA+C;IAElE,2DAA2D;IAC3D,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAS;gBAEX,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM;IAOvD;;;;;;;;OAQG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA0EjF;;;;;OAKG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAkB/F;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBnD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACH,SAAS,IAAI,mBAAmB,EAAE;IAQlC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAID;;;;;;;;OAQG;IACH,OAAO,CAAC,SAAS;CAgDlB"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.McpClientManager = void 0;
|
|
4
4
|
const mcp_types_1 = require("./mcp-types");
|
|
5
|
+
const logger_1 = require("../logging/logger");
|
|
5
6
|
const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
|
|
6
7
|
const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
|
|
7
8
|
const sse_js_1 = require("@modelcontextprotocol/sdk/client/sse.js");
|
|
@@ -32,20 +33,24 @@ class McpClientManager {
|
|
|
32
33
|
connections = new Map();
|
|
33
34
|
/** The ToolRegistry where adapted tools are registered. */
|
|
34
35
|
toolRegistry;
|
|
35
|
-
|
|
36
|
+
logger;
|
|
37
|
+
constructor(toolRegistry, logger) {
|
|
36
38
|
this.toolRegistry = toolRegistry;
|
|
39
|
+
this.logger = logger ?? new logger_1.ConsoleLogger();
|
|
37
40
|
}
|
|
38
41
|
// ─── Connection Management ────────────────────────────────────────────────
|
|
39
42
|
/**
|
|
40
43
|
* Connect to a single MCP server, discover its tools, and register them
|
|
41
44
|
* in the ToolRegistry with a `{serverName}_` prefix.
|
|
42
45
|
*
|
|
46
|
+
* Idempotent — if the server is already connected, this is a no-op.
|
|
47
|
+
*
|
|
43
48
|
* @throws McpConnectionError if the config is invalid or the
|
|
44
|
-
* connection/tool-discovery fails.
|
|
49
|
+
* connection/tool-discovery fails (only for new connections).
|
|
45
50
|
*/
|
|
46
51
|
async connectToServer(serverName, config) {
|
|
47
52
|
if (this.connections.has(serverName)) {
|
|
48
|
-
|
|
53
|
+
return; // Already connected — idempotent
|
|
49
54
|
}
|
|
50
55
|
const transportConfig = resolveTransportConfig(config);
|
|
51
56
|
// Build transport
|
|
@@ -83,18 +88,18 @@ class McpClientManager {
|
|
|
83
88
|
for (const mcpTool of mcpToolDescriptors) {
|
|
84
89
|
const adapted = this.adaptTool(serverName, mcpTool, client);
|
|
85
90
|
if (this.toolRegistry.has(adapted.name)) {
|
|
86
|
-
|
|
91
|
+
this.logger.warn("MCP", `Tool "${adapted.name}" is already registered. ` +
|
|
87
92
|
`Skipping MCP tool "${serverName}/${mcpTool.name}".`);
|
|
88
93
|
continue;
|
|
89
94
|
}
|
|
90
95
|
adaptedTools.push(adapted);
|
|
91
96
|
}
|
|
92
97
|
if (adaptedTools.length === 0) {
|
|
93
|
-
|
|
98
|
+
this.logger.warn("MCP", `Server "${serverName}" exposed no usable tools.`);
|
|
94
99
|
}
|
|
95
100
|
else {
|
|
96
101
|
this.toolRegistry.registerMany(adaptedTools);
|
|
97
|
-
|
|
102
|
+
this.logger.info("MCP", `Registered ${adaptedTools.length} tool(s) from server "${serverName}".`);
|
|
98
103
|
}
|
|
99
104
|
this.connections.set(serverName, { serverName, client, tools: adaptedTools });
|
|
100
105
|
}
|
|
@@ -113,7 +118,7 @@ class McpClientManager {
|
|
|
113
118
|
catch (err) {
|
|
114
119
|
const message = err instanceof Error ? err.message : String(err);
|
|
115
120
|
errors.push({ serverName: name, error: message });
|
|
116
|
-
|
|
121
|
+
this.logger.error("MCP", `Failed to connect to server "${name}": ${message}`);
|
|
117
122
|
}
|
|
118
123
|
}));
|
|
119
124
|
return errors;
|
|
@@ -134,10 +139,10 @@ class McpClientManager {
|
|
|
134
139
|
await conn.client.close();
|
|
135
140
|
}
|
|
136
141
|
catch (err) {
|
|
137
|
-
|
|
142
|
+
this.logger.warn("MCP", `Error while closing connection to "${serverName}": ${err instanceof Error ? err.message : String(err)}`);
|
|
138
143
|
}
|
|
139
144
|
this.connections.delete(serverName);
|
|
140
|
-
|
|
145
|
+
this.logger.info("MCP", `Disconnected from server "${serverName}".`);
|
|
141
146
|
}
|
|
142
147
|
/**
|
|
143
148
|
* Disconnect from all MCP servers and unregister all MCP-provided tools.
|
|
@@ -147,6 +152,12 @@ class McpClientManager {
|
|
|
147
152
|
await Promise.allSettled(names.map((name) => this.disconnect(name)));
|
|
148
153
|
}
|
|
149
154
|
// ─── Queries ──────────────────────────────────────────────────────────────
|
|
155
|
+
/**
|
|
156
|
+
* Check if a specific server is currently connected.
|
|
157
|
+
*/
|
|
158
|
+
hasServer(serverName) {
|
|
159
|
+
return this.connections.has(serverName);
|
|
160
|
+
}
|
|
150
161
|
/**
|
|
151
162
|
* Get connection status for all servers.
|
|
152
163
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client-manager.js","sourceRoot":"","sources":["../../src/mcp/mcp-client-manager.ts"],"names":[],"mappings":";;;AAEA,2CAKqB;
|
|
1
|
+
{"version":3,"file":"mcp-client-manager.js","sourceRoot":"","sources":["../../src/mcp/mcp-client-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemoryManager = void 0;
|
|
4
|
+
var memory_manager_1 = require("./memory-manager");
|
|
5
|
+
Object.defineProperty(exports, "MemoryManager", { enumerable: true, get: function () { return memory_manager_1.MemoryManager; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAAxC,+GAAA,aAAa,OAAA"}
|