kagent-ts 0.1.3 → 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 +407 -35
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +685 -70
- 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 +144 -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 +128 -101
- 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 +61 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +121 -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/index.d.ts +4 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +8 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcp-client-manager.d.ts +72 -0
- package/dist/mcp/mcp-client-manager.d.ts.map +1 -0
- package/dist/mcp/mcp-client-manager.js +235 -0
- package/dist/mcp/mcp-client-manager.js.map +1 -0
- package/dist/mcp/mcp-types.d.ts +58 -0
- package/dist/mcp/mcp-types.d.ts.map +1 -0
- package/dist/mcp/mcp-types.js +20 -0
- package/dist/mcp/mcp-types.js.map +1 -0
- 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 +9 -20
- package/dist/skills/file-skill-loader.d.ts.map +1 -1
- package/dist/skills/file-skill-loader.js +35 -164
- 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 +22 -29
- package/dist/skills/skill-manager.d.ts.map +1 -1
- package/dist/skills/skill-manager.js +63 -85
- package/dist/skills/skill-manager.js.map +1 -1
- package/dist/skills/types.d.ts +4 -16
- 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 +83 -7
- package/dist/trace/trace-logger.js.map +1 -1
- package/package.json +14 -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":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,EAChB,gCAAgC,EAChC,WAAW,GACZ,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.wrapAndScan = exports.buildUserContentInjectionWarning = exports.wrapUserAuthored = exports.buildInjectionWarning = exports.detectInjectionSignatures = exports.wrapUntrusted = void 0;
|
|
4
|
+
var boundaries_1 = require("./boundaries");
|
|
5
|
+
Object.defineProperty(exports, "wrapUntrusted", { enumerable: true, get: function () { return boundaries_1.wrapUntrusted; } });
|
|
6
|
+
Object.defineProperty(exports, "detectInjectionSignatures", { enumerable: true, get: function () { return boundaries_1.detectInjectionSignatures; } });
|
|
7
|
+
Object.defineProperty(exports, "buildInjectionWarning", { enumerable: true, get: function () { return boundaries_1.buildInjectionWarning; } });
|
|
8
|
+
Object.defineProperty(exports, "wrapUserAuthored", { enumerable: true, get: function () { return boundaries_1.wrapUserAuthored; } });
|
|
9
|
+
Object.defineProperty(exports, "buildUserContentInjectionWarning", { enumerable: true, get: function () { return boundaries_1.buildUserContentInjectionWarning; } });
|
|
10
|
+
Object.defineProperty(exports, "wrapAndScan", { enumerable: true, get: function () { return boundaries_1.wrapAndScan; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":";;;AAAA,2CAOsB;AANpB,2GAAA,aAAa,OAAA;AACb,uHAAA,yBAAyB,OAAA;AACzB,mHAAA,qBAAqB,OAAA;AACrB,8GAAA,gBAAgB,OAAA;AAChB,8HAAA,gCAAgC,OAAA;AAChC,yGAAA,WAAW,OAAA"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { MessageData } from "../messages/types";
|
|
2
|
+
import type { OrchestratorSessionState } from "../orchestrator/orchestrator-types";
|
|
2
3
|
/**
|
|
3
4
|
* Which agent paradigm the session belongs to.
|
|
4
5
|
*/
|
|
5
|
-
export type AgentType = "react" | "plan-solve";
|
|
6
|
+
export type AgentType = "react" | "plan-solve" | "fusion" | "orchestrator";
|
|
6
7
|
/**
|
|
7
8
|
* Lifecycle status of a persisted session.
|
|
8
|
-
* - "active":
|
|
9
|
+
* - "active": Session is in progress, checkpoint was saved mid-run.
|
|
9
10
|
* - "interrupted": Session was interrupted by a network error, ready for resume.
|
|
10
|
-
* - "completed":
|
|
11
|
+
* - "completed": Session finished normally.
|
|
12
|
+
* - "cancelled": User cancelled (Ctrl+C); session preserved for later resume.
|
|
11
13
|
*/
|
|
12
|
-
export type SessionStatus = "active" | "interrupted" | "completed";
|
|
14
|
+
export type SessionStatus = "active" | "interrupted" | "completed" | "cancelled";
|
|
13
15
|
/**
|
|
14
16
|
* Serializable plan state for PlanSolveAgent sessions.
|
|
15
17
|
*/
|
|
@@ -19,6 +21,21 @@ export interface PlanSolveSessionState {
|
|
|
19
21
|
completedSteps: number;
|
|
20
22
|
consecutiveFailures: number;
|
|
21
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Serializable fusion state for FusionAgent sessions.
|
|
26
|
+
*/
|
|
27
|
+
export interface FusionSessionState {
|
|
28
|
+
/** Task complexity determined during routing. */
|
|
29
|
+
complexity: "simple" | "complex";
|
|
30
|
+
/** Whether routing has been completed. */
|
|
31
|
+
routed: boolean;
|
|
32
|
+
currentPlan: string[];
|
|
33
|
+
hasPlan: boolean;
|
|
34
|
+
completedSteps: number;
|
|
35
|
+
consecutiveFailures: number;
|
|
36
|
+
reflectionEnabled: boolean;
|
|
37
|
+
inlineReflectionsDone: number;
|
|
38
|
+
}
|
|
22
39
|
/**
|
|
23
40
|
* Full session state snapshot.
|
|
24
41
|
*
|
|
@@ -39,6 +56,10 @@ export interface SessionState {
|
|
|
39
56
|
messages: MessageData[];
|
|
40
57
|
/** Plan-Solve specific state (only present for plan-solve agents). */
|
|
41
58
|
planState?: PlanSolveSessionState;
|
|
59
|
+
/** Fusion specific state (only present for fusion agents). */
|
|
60
|
+
fusionState?: FusionSessionState;
|
|
61
|
+
/** Orchestrator specific state (only present for orchestrator agents). */
|
|
62
|
+
orchestratorState?: OrchestratorSessionState;
|
|
42
63
|
/** ISO-8601 timestamp of session creation (stable across saves). */
|
|
43
64
|
createdAt: string;
|
|
44
65
|
/** ISO-8601 timestamp of last checkpoint save. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-types.d.ts","sourceRoot":"","sources":["../../src/session/session-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-types.d.ts","sourceRoot":"","sources":["../../src/session/session-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAEnF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;IACjC,0CAA0C;IAC1C,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAElB,6CAA6C;IAC7C,SAAS,EAAE,SAAS,CAAC;IAErB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IAErB,+CAA+C;IAC/C,QAAQ,EAAE,WAAW,EAAE,CAAC;IAExB,sEAAsE;IACtE,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAElC,8DAA8D;IAC9D,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAEjC,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAE7C,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAElB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAElB,gCAAgC;IAChC,MAAM,EAAE,aAAa,CAAC;IAEtB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Skill } from "./types";
|
|
2
|
-
import {
|
|
2
|
+
import { Logger } from "../logging/logger";
|
|
3
3
|
/**
|
|
4
4
|
* Parse YAML-like frontmatter from a Markdown file.
|
|
5
5
|
*
|
|
@@ -19,11 +19,6 @@ export declare function parseFrontmatter(raw: string): {
|
|
|
19
19
|
frontmatter: Record<string, string>;
|
|
20
20
|
body: string;
|
|
21
21
|
};
|
|
22
|
-
/**
|
|
23
|
-
* Parse a comma-separated keywords string into an array.
|
|
24
|
-
* Returns `undefined` when the input is empty or absent.
|
|
25
|
-
*/
|
|
26
|
-
export declare function parseKeywords(raw?: string): string[] | undefined;
|
|
27
22
|
/**
|
|
28
23
|
* Loads skill definitions from a directory on disk.
|
|
29
24
|
*
|
|
@@ -32,37 +27,39 @@ export declare function parseKeywords(raw?: string): string[] | undefined;
|
|
|
32
27
|
* skills/
|
|
33
28
|
* ├── <skill-name>/
|
|
34
29
|
* │ ├── SKILL.md # Frontmatter (metadata) + body (system prompt)
|
|
35
|
-
* │
|
|
36
|
-
* │ └── scripts/ # Optional executable scripts
|
|
30
|
+
* │ └── reference/ # Optional reference docs (*.md, *.txt)
|
|
37
31
|
* ├── <another-skill>/
|
|
38
32
|
* │ └── ...
|
|
39
33
|
* ```
|
|
40
34
|
*
|
|
41
35
|
* Loading is two-phase:
|
|
42
36
|
* 1. `scan()` — reads only frontmatter, returns metadata-only `Skill[]`
|
|
43
|
-
* 2. `loadSystemPrompt()`
|
|
37
|
+
* 2. `loadSystemPrompt()` — full content (body + reference docs), called
|
|
44
38
|
* lazily on activation.
|
|
45
39
|
*/
|
|
46
40
|
export declare class FileSkillLoader {
|
|
47
41
|
private directory;
|
|
42
|
+
private logger;
|
|
48
43
|
/**
|
|
49
44
|
* @param directory Path to the skills root directory (default: `./skills`).
|
|
45
|
+
* @param logger Logger instance (defaults to ConsoleLogger).
|
|
50
46
|
*/
|
|
51
|
-
constructor(directory?: string);
|
|
47
|
+
constructor(directory?: string, logger?: Logger);
|
|
52
48
|
/**
|
|
53
49
|
* Get the root directory path.
|
|
54
50
|
*/
|
|
55
51
|
getDirectory(): string;
|
|
56
52
|
/**
|
|
57
53
|
* Get the absolute path to a named skill's subdirectory.
|
|
54
|
+
* Throws if the skill name contains path traversal characters.
|
|
58
55
|
*/
|
|
59
56
|
getSkillDir(name: string): string;
|
|
60
57
|
/**
|
|
61
58
|
* Scan the skills directory and return metadata-only Skill objects.
|
|
62
59
|
*
|
|
63
60
|
* Reads only the frontmatter from each SKILL.md — the body (systemPrompt)
|
|
64
|
-
*
|
|
65
|
-
*
|
|
61
|
+
* is NOT loaded at this stage. It is loaded lazily when the skill is
|
|
62
|
+
* activated.
|
|
66
63
|
*
|
|
67
64
|
* Subdirectories without a valid SKILL.md (or without a `name` in
|
|
68
65
|
* frontmatter) are skipped with a warning.
|
|
@@ -76,13 +73,5 @@ export declare class FileSkillLoader {
|
|
|
76
73
|
* Throws if the skill directory does not exist.
|
|
77
74
|
*/
|
|
78
75
|
loadSystemPrompt(name: string): string;
|
|
79
|
-
/**
|
|
80
|
-
* Create Tool objects from scripts in the scripts/ subdirectory.
|
|
81
|
-
*
|
|
82
|
-
* Each recognized script file becomes a Tool named `{skillName}_{scriptName}`.
|
|
83
|
-
*
|
|
84
|
-
* Returns an empty array if the scripts/ directory is missing or empty.
|
|
85
|
-
*/
|
|
86
|
-
loadScriptsAsTools(name: string): Tool[];
|
|
87
76
|
}
|
|
88
77
|
//# sourceMappingURL=file-skill-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-skill-loader.d.ts","sourceRoot":"","sources":["../../src/skills/file-skill-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-skill-loader.d.ts","sourceRoot":"","sources":["../../src/skills/file-skill-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAiB,MAAM,mBAAmB,CAAC;AAI1D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAC7C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;CACd,CAuBA;AAwBD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAS;IAEvB;;;OAGG;gBACS,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAK/C;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAKjC;;;;;;;;;OASG;IACH,IAAI,IAAI,KAAK,EAAE;IA2Df;;;;;;OAMG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAsCvC"}
|
|
@@ -35,10 +35,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.FileSkillLoader = void 0;
|
|
37
37
|
exports.parseFrontmatter = parseFrontmatter;
|
|
38
|
-
exports.parseKeywords = parseKeywords;
|
|
39
38
|
const fs = __importStar(require("fs"));
|
|
40
39
|
const path = __importStar(require("path"));
|
|
41
|
-
const
|
|
40
|
+
const logger_1 = require("../logging/logger");
|
|
42
41
|
// ─── Frontmatter Parsing ───────────────────────────────────────────────────
|
|
43
42
|
/**
|
|
44
43
|
* Parse YAML-like frontmatter from a Markdown file.
|
|
@@ -69,98 +68,31 @@ function parseFrontmatter(raw) {
|
|
|
69
68
|
if (colonIdx <= 0)
|
|
70
69
|
continue;
|
|
71
70
|
const key = trimmed.slice(0, colonIdx).trim();
|
|
72
|
-
|
|
71
|
+
let value = trimmed.slice(colonIdx + 1).trim();
|
|
72
|
+
// Strip surrounding quotes if both ends match
|
|
73
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
74
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
75
|
+
value = value.slice(1, -1).trim();
|
|
76
|
+
}
|
|
73
77
|
if (key)
|
|
74
78
|
frontmatter[key] = value;
|
|
75
79
|
}
|
|
76
80
|
return { frontmatter, body: match[2].trim() };
|
|
77
81
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Parse a comma-separated keywords string into an array.
|
|
80
|
-
* Returns `undefined` when the input is empty or absent.
|
|
81
|
-
*/
|
|
82
|
-
function parseKeywords(raw) {
|
|
83
|
-
if (!raw)
|
|
84
|
-
return undefined;
|
|
85
|
-
const keywords = raw
|
|
86
|
-
.split(",")
|
|
87
|
-
.map((k) => k.trim())
|
|
88
|
-
.filter(Boolean);
|
|
89
|
-
return keywords.length > 0 ? keywords : undefined;
|
|
90
|
-
}
|
|
91
82
|
// ─── Script Execution ──────────────────────────────────────────────────────
|
|
92
|
-
const SUPPORTED_SCRIPT_EXTENSIONS = new Set([
|
|
93
|
-
".sh",
|
|
94
|
-
".bat",
|
|
95
|
-
".cmd",
|
|
96
|
-
".ps1",
|
|
97
|
-
".js",
|
|
98
|
-
".py",
|
|
99
|
-
]);
|
|
100
83
|
const REFERENCE_EXTENSIONS = new Set([".md", ".txt"]);
|
|
101
84
|
/**
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*/
|
|
105
|
-
function getInterpreter(filePath) {
|
|
106
|
-
const ext = path.extname(filePath).toLowerCase();
|
|
107
|
-
switch (ext) {
|
|
108
|
-
case ".sh":
|
|
109
|
-
return ["bash", filePath];
|
|
110
|
-
case ".bat":
|
|
111
|
-
case ".cmd":
|
|
112
|
-
return ["cmd.exe", "/c", filePath];
|
|
113
|
-
case ".ps1":
|
|
114
|
-
return ["powershell.exe", "-File", filePath];
|
|
115
|
-
case ".js":
|
|
116
|
-
return ["node", filePath];
|
|
117
|
-
case ".py":
|
|
118
|
-
// Try python3 first, fall back to python
|
|
119
|
-
try {
|
|
120
|
-
(0, child_process_1.execFileSync)("python3", ["--version"], { timeout: 5000, stdio: "ignore" });
|
|
121
|
-
return ["python3", filePath];
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
return ["python", filePath];
|
|
125
|
-
}
|
|
126
|
-
default:
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Extract a description for a script tool from the first comment/line
|
|
132
|
-
* of the file, or fall back to a generic description.
|
|
85
|
+
* Validate a skill name to prevent path traversal.
|
|
86
|
+
* Only allows alphanumeric characters, hyphens, underscores, and dots.
|
|
133
87
|
*/
|
|
134
|
-
function
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const firstLine = content.split("\n")[0]?.trim();
|
|
138
|
-
if (firstLine) {
|
|
139
|
-
// Strip common comment markers and shebang
|
|
140
|
-
const clean = firstLine
|
|
141
|
-
.replace(/^#!\s*/, "")
|
|
142
|
-
.replace(/^#\s*/, "")
|
|
143
|
-
.replace(/^\/\/\s*/, "")
|
|
144
|
-
.replace(/^--\s*/, "")
|
|
145
|
-
.trim();
|
|
146
|
-
if (clean && !clean.startsWith("/"))
|
|
147
|
-
return clean;
|
|
148
|
-
}
|
|
88
|
+
function validateSkillName(name) {
|
|
89
|
+
if (!name) {
|
|
90
|
+
throw new Error(`Skill name must not be empty.`);
|
|
149
91
|
}
|
|
150
|
-
|
|
151
|
-
|
|
92
|
+
// Prevent path traversal: reject names with slashes, backslashes, "..", or null bytes
|
|
93
|
+
if (/[/\\]|\.\.|\0/.test(name)) {
|
|
94
|
+
throw new Error(`Invalid skill name "${name}": contains path traversal characters.`);
|
|
152
95
|
}
|
|
153
|
-
return `Execute the ${path.basename(filePath)} script`;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Sanitize a string for use as a tool name (alphanumeric + underscores only).
|
|
157
|
-
*/
|
|
158
|
-
function sanitizeToolName(name) {
|
|
159
|
-
return name
|
|
160
|
-
.toLowerCase()
|
|
161
|
-
.replace(/[^a-z0-9_]/g, "_")
|
|
162
|
-
.replace(/_+/g, "_")
|
|
163
|
-
.replace(/^_|_$/g, "");
|
|
164
96
|
}
|
|
165
97
|
// ─── FileSkillLoader ───────────────────────────────────────────────────────
|
|
166
98
|
/**
|
|
@@ -171,24 +103,26 @@ function sanitizeToolName(name) {
|
|
|
171
103
|
* skills/
|
|
172
104
|
* ├── <skill-name>/
|
|
173
105
|
* │ ├── SKILL.md # Frontmatter (metadata) + body (system prompt)
|
|
174
|
-
* │
|
|
175
|
-
* │ └── scripts/ # Optional executable scripts
|
|
106
|
+
* │ └── reference/ # Optional reference docs (*.md, *.txt)
|
|
176
107
|
* ├── <another-skill>/
|
|
177
108
|
* │ └── ...
|
|
178
109
|
* ```
|
|
179
110
|
*
|
|
180
111
|
* Loading is two-phase:
|
|
181
112
|
* 1. `scan()` — reads only frontmatter, returns metadata-only `Skill[]`
|
|
182
|
-
* 2. `loadSystemPrompt()`
|
|
113
|
+
* 2. `loadSystemPrompt()` — full content (body + reference docs), called
|
|
183
114
|
* lazily on activation.
|
|
184
115
|
*/
|
|
185
116
|
class FileSkillLoader {
|
|
186
117
|
directory;
|
|
118
|
+
logger;
|
|
187
119
|
/**
|
|
188
120
|
* @param directory Path to the skills root directory (default: `./skills`).
|
|
121
|
+
* @param logger Logger instance (defaults to ConsoleLogger).
|
|
189
122
|
*/
|
|
190
|
-
constructor(directory) {
|
|
123
|
+
constructor(directory, logger) {
|
|
191
124
|
this.directory = path.resolve(directory || "./skills");
|
|
125
|
+
this.logger = logger ?? new logger_1.ConsoleLogger();
|
|
192
126
|
}
|
|
193
127
|
/**
|
|
194
128
|
* Get the root directory path.
|
|
@@ -198,16 +132,18 @@ class FileSkillLoader {
|
|
|
198
132
|
}
|
|
199
133
|
/**
|
|
200
134
|
* Get the absolute path to a named skill's subdirectory.
|
|
135
|
+
* Throws if the skill name contains path traversal characters.
|
|
201
136
|
*/
|
|
202
137
|
getSkillDir(name) {
|
|
138
|
+
validateSkillName(name);
|
|
203
139
|
return path.join(this.directory, name);
|
|
204
140
|
}
|
|
205
141
|
/**
|
|
206
142
|
* Scan the skills directory and return metadata-only Skill objects.
|
|
207
143
|
*
|
|
208
144
|
* Reads only the frontmatter from each SKILL.md — the body (systemPrompt)
|
|
209
|
-
*
|
|
210
|
-
*
|
|
145
|
+
* is NOT loaded at this stage. It is loaded lazily when the skill is
|
|
146
|
+
* activated.
|
|
211
147
|
*
|
|
212
148
|
* Subdirectories without a valid SKILL.md (or without a `name` in
|
|
213
149
|
* frontmatter) are skipped with a warning.
|
|
@@ -235,21 +171,27 @@ class FileSkillLoader {
|
|
|
235
171
|
raw = fs.readFileSync(skillMdPath, "utf-8");
|
|
236
172
|
}
|
|
237
173
|
catch {
|
|
238
|
-
|
|
174
|
+
this.logger.warn("Skills", `Skipping "${entry.name}": no SKILL.md found in ${skillPath}`);
|
|
239
175
|
continue;
|
|
240
176
|
}
|
|
241
177
|
const { frontmatter, body } = parseFrontmatter(raw);
|
|
242
178
|
const name = frontmatter.name?.trim();
|
|
243
179
|
if (!name) {
|
|
244
|
-
|
|
180
|
+
this.logger.warn("Skills", `Skipping "${entry.name}": SKILL.md has no "name" in frontmatter`);
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
try {
|
|
184
|
+
validateSkillName(name);
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
188
|
+
this.logger.warn("Skills", `Skipping "${entry.name}": ${message}`);
|
|
245
189
|
continue;
|
|
246
190
|
}
|
|
247
191
|
skills.push({
|
|
248
192
|
name,
|
|
249
193
|
description: frontmatter.description?.trim() ?? "",
|
|
250
194
|
systemPrompt: "", // Loaded lazily on activation
|
|
251
|
-
keywords: parseKeywords(frontmatter.keywords),
|
|
252
|
-
tools: [], // Loaded lazily on activation
|
|
253
195
|
});
|
|
254
196
|
}
|
|
255
197
|
return skills;
|
|
@@ -289,77 +231,6 @@ class FileSkillLoader {
|
|
|
289
231
|
}
|
|
290
232
|
return parts.join("").trim();
|
|
291
233
|
}
|
|
292
|
-
/**
|
|
293
|
-
* Create Tool objects from scripts in the scripts/ subdirectory.
|
|
294
|
-
*
|
|
295
|
-
* Each recognized script file becomes a Tool named `{skillName}_{scriptName}`.
|
|
296
|
-
*
|
|
297
|
-
* Returns an empty array if the scripts/ directory is missing or empty.
|
|
298
|
-
*/
|
|
299
|
-
loadScriptsAsTools(name) {
|
|
300
|
-
const scriptsDir = path.join(this.getSkillDir(name), "scripts");
|
|
301
|
-
const tools = [];
|
|
302
|
-
let entries;
|
|
303
|
-
try {
|
|
304
|
-
entries = fs.readdirSync(scriptsDir, { withFileTypes: true });
|
|
305
|
-
}
|
|
306
|
-
catch {
|
|
307
|
-
// No scripts/ directory — return empty
|
|
308
|
-
return [];
|
|
309
|
-
}
|
|
310
|
-
for (const entry of entries) {
|
|
311
|
-
if (!entry.isFile())
|
|
312
|
-
continue;
|
|
313
|
-
const ext = path.extname(entry.name).toLowerCase();
|
|
314
|
-
if (!SUPPORTED_SCRIPT_EXTENSIONS.has(ext))
|
|
315
|
-
continue;
|
|
316
|
-
const scriptPath = path.join(scriptsDir, entry.name);
|
|
317
|
-
const scriptName = path.basename(entry.name, ext);
|
|
318
|
-
const toolName = sanitizeToolName(`${name}_${scriptName}`);
|
|
319
|
-
const toolDescription = getScriptDescription(scriptPath);
|
|
320
|
-
const tool = {
|
|
321
|
-
name: toolName,
|
|
322
|
-
description: toolDescription,
|
|
323
|
-
parameters: {
|
|
324
|
-
type: "object",
|
|
325
|
-
properties: {
|
|
326
|
-
args: {
|
|
327
|
-
type: "string",
|
|
328
|
-
description: `Arguments to pass to the ${entry.name} script. ` +
|
|
329
|
-
`Use shell-style syntax (space-separated).`,
|
|
330
|
-
},
|
|
331
|
-
},
|
|
332
|
-
required: ["args"],
|
|
333
|
-
},
|
|
334
|
-
async execute(params) {
|
|
335
|
-
const argsStr = String(params.args ?? "");
|
|
336
|
-
const interpreter = getInterpreter(scriptPath);
|
|
337
|
-
if (!interpreter) {
|
|
338
|
-
return `Error: Unsupported script type "${ext}" for ${entry.name}`;
|
|
339
|
-
}
|
|
340
|
-
const [cmd, ...cmdArgs] = interpreter;
|
|
341
|
-
// Append the script argument after the interpreter args
|
|
342
|
-
const allArgs = argsStr
|
|
343
|
-
? [...cmdArgs, ...argsStr.split(/\s+/).filter(Boolean)]
|
|
344
|
-
: cmdArgs;
|
|
345
|
-
return new Promise((resolve) => {
|
|
346
|
-
const child = (0, child_process_1.execFile)(cmd, allArgs, { timeout: 30000, maxBuffer: 1024 * 1024 }, (err, stdout, stderr) => {
|
|
347
|
-
if (err) {
|
|
348
|
-
const details = stderr
|
|
349
|
-
? `\nstderr:\n${stderr.trim()}`
|
|
350
|
-
: "";
|
|
351
|
-
resolve(`Error executing ${entry.name}: ${err.message}${details}`);
|
|
352
|
-
return;
|
|
353
|
-
}
|
|
354
|
-
resolve(stdout.trim() || "(no output)");
|
|
355
|
-
});
|
|
356
|
-
});
|
|
357
|
-
},
|
|
358
|
-
};
|
|
359
|
-
tools.push(tool);
|
|
360
|
-
}
|
|
361
|
-
return tools;
|
|
362
|
-
}
|
|
363
234
|
}
|
|
364
235
|
exports.FileSkillLoader = FileSkillLoader;
|
|
365
236
|
//# sourceMappingURL=file-skill-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-skill-loader.js","sourceRoot":"","sources":["../../src/skills/file-skill-loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"file-skill-loader.js","sourceRoot":"","sources":["../../src/skills/file-skill-loader.ts"],"names":[],"mappings":"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"}
|
package/dist/skills/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { SkillManager } from "./skill-manager";
|
|
2
|
-
export { FileSkillLoader, parseFrontmatter
|
|
2
|
+
export { FileSkillLoader, parseFrontmatter } from "./file-skill-loader";
|
|
3
3
|
export type { Skill, SkillStatus } from "./types";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACxE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/skills/index.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseFrontmatter = exports.FileSkillLoader = exports.SkillManager = void 0;
|
|
4
4
|
var skill_manager_1 = require("./skill-manager");
|
|
5
5
|
Object.defineProperty(exports, "SkillManager", { enumerable: true, get: function () { return skill_manager_1.SkillManager; } });
|
|
6
6
|
var file_skill_loader_1 = require("./file-skill-loader");
|
|
7
7
|
Object.defineProperty(exports, "FileSkillLoader", { enumerable: true, get: function () { return file_skill_loader_1.FileSkillLoader; } });
|
|
8
8
|
Object.defineProperty(exports, "parseFrontmatter", { enumerable: true, get: function () { return file_skill_loader_1.parseFrontmatter; } });
|
|
9
|
-
Object.defineProperty(exports, "parseKeywords", { enumerable: true, get: function () { return file_skill_loader_1.parseKeywords; } });
|
|
10
9
|
//# sourceMappingURL=index.js.map
|
package/dist/skills/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":";;;AAAA,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":";;;AAAA,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,yDAAwE;AAA/D,oHAAA,eAAe,OAAA;AAAE,qHAAA,gBAAgB,OAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Skill, SkillStatus } from "./types";
|
|
2
|
-
import {
|
|
2
|
+
import { Logger } from "../logging/logger";
|
|
3
3
|
/**
|
|
4
4
|
* Manages skill registration, activation, and progressive disclosure.
|
|
5
5
|
*
|
|
@@ -8,12 +8,15 @@ import { ToolRegistry } from "../tools/tool-registry";
|
|
|
8
8
|
* core system prompt small while allowing deep expertise to be
|
|
9
9
|
* injected when needed.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
* 1.
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* Workflow:
|
|
12
|
+
* 1. Skills are registered from a directory (metadata only: name, description, keywords)
|
|
13
|
+
* 2. `buildAvailableSkillsHint()` lists all available skills in the system prompt
|
|
14
|
+
* 3. LLM decides which skill to use → `activate(name)` loads the full content
|
|
15
|
+
* 4. `buildSkillsPrompt()` includes the active skill's full system prompt
|
|
15
16
|
*/
|
|
16
17
|
export declare class SkillManager {
|
|
18
|
+
private logger;
|
|
19
|
+
constructor(logger?: Logger);
|
|
17
20
|
/** All registered skills (active or not), keyed by name. */
|
|
18
21
|
private registry;
|
|
19
22
|
/** Skills that are currently active. */
|
|
@@ -24,21 +27,11 @@ export declare class SkillManager {
|
|
|
24
27
|
private fileLoaders;
|
|
25
28
|
/** File-based skills whose full content has been loaded from disk. */
|
|
26
29
|
private loadedFileSkills;
|
|
27
|
-
/** Reference to the ToolRegistry for registering/unregistering skill tools. */
|
|
28
|
-
private toolRegistry?;
|
|
29
30
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
31
|
+
* Register a skill object directly (programmatic registration).
|
|
32
|
+
* Used when skills are defined in code rather than loaded from disk.
|
|
32
33
|
*/
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Bind a ToolRegistry so skill tools are managed automatically.
|
|
36
|
-
*/
|
|
37
|
-
bindToolRegistry(registry: ToolRegistry): void;
|
|
38
|
-
/**
|
|
39
|
-
* Register one or more skills.
|
|
40
|
-
*/
|
|
41
|
-
register(...skills: Skill[]): void;
|
|
34
|
+
register(skill: Skill): void;
|
|
42
35
|
/**
|
|
43
36
|
* Unregister a skill by name. Deactivates it first if active.
|
|
44
37
|
*/
|
|
@@ -54,6 +47,16 @@ export declare class SkillManager {
|
|
|
54
47
|
* @returns Number of skills successfully registered.
|
|
55
48
|
*/
|
|
56
49
|
registerFromDirectory(dir: string): number;
|
|
50
|
+
/**
|
|
51
|
+
* Re-scan the skills directory for new SKILL.md files.
|
|
52
|
+
*
|
|
53
|
+
* Safe to call at the start of each run — only registers skills that
|
|
54
|
+
* haven't been registered yet. Already-registered skills are left as-is.
|
|
55
|
+
*
|
|
56
|
+
* @param dir Path to the skills directory.
|
|
57
|
+
* @returns Names of newly registered skills (empty if nothing changed).
|
|
58
|
+
*/
|
|
59
|
+
reloadFromDirectory(dir: string): string[];
|
|
57
60
|
/**
|
|
58
61
|
* Check if a skill is registered.
|
|
59
62
|
*/
|
|
@@ -68,8 +71,7 @@ export declare class SkillManager {
|
|
|
68
71
|
getAll(): Skill[];
|
|
69
72
|
/**
|
|
70
73
|
* Activate a skill by name.
|
|
71
|
-
* -
|
|
72
|
-
* - Registers its tools (if a ToolRegistry is bound).
|
|
74
|
+
* - Lazy-loads the full system prompt from disk (if file-based).
|
|
73
75
|
* - Returns true if the skill was newly activated.
|
|
74
76
|
*/
|
|
75
77
|
activate(name: string): boolean;
|
|
@@ -79,21 +81,12 @@ export declare class SkillManager {
|
|
|
79
81
|
activateMany(names: string[]): string[];
|
|
80
82
|
/**
|
|
81
83
|
* Deactivate a skill.
|
|
82
|
-
* - Unregisters its tools (if a ToolRegistry is bound).
|
|
83
84
|
*/
|
|
84
85
|
deactivate(name: string): boolean;
|
|
85
86
|
/**
|
|
86
87
|
* Deactivate all active skills.
|
|
87
88
|
*/
|
|
88
89
|
deactivateAll(): void;
|
|
89
|
-
/**
|
|
90
|
-
* Scan user input against unregistered (not yet active) skills.
|
|
91
|
-
* Activates any skill whose keywords match the input.
|
|
92
|
-
*
|
|
93
|
-
* @param input The user's input text.
|
|
94
|
-
* @returns Names of newly activated skills.
|
|
95
|
-
*/
|
|
96
|
-
detectAndActivate(input: string): string[];
|
|
97
90
|
/**
|
|
98
91
|
* Build the accumulated system prompt content from all active skills.
|
|
99
92
|
* Each skill's prompt is wrapped in a named section for clarity.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-manager.d.ts","sourceRoot":"","sources":["../../src/skills/skill-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"skill-manager.d.ts","sourceRoot":"","sources":["../../src/skills/skill-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAiB,MAAM,mBAAmB,CAAC;AAO1D;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,CAAC,EAAE,MAAM;IAI3B,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAiC;IAEjD,wCAAwC;IACxC,OAAO,CAAC,YAAY,CAAiC;IAErD,oDAAoD;IACpD,OAAO,CAAC,WAAW,CAAgC;IAEnD,mEAAmE;IACnE,OAAO,CAAC,WAAW,CAA2C;IAE9D,sEAAsE;IACtE,OAAO,CAAC,gBAAgB,CAA0B;IAIlD;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAO5B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQjC;;;;;;;;;OASG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IA+B1C;;;;;;;;OAQG;IACH,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAc1C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAIpC;;OAEG;IACH,MAAM,IAAI,KAAK,EAAE;IAMjB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IA+B/B;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAcvC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAWjC;;OAEG;IACH,aAAa,IAAI,IAAI;IASrB;;;;;OAKG;IACH,iBAAiB,IAAI,MAAM;IAqB3B;;;;;;OAMG;IACH,wBAAwB,IAAI,MAAM;IAwBlC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAI/B;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,YAAY,IAAI,WAAW,EAAE;IAY7B;;OAEG;IACH,eAAe,IAAI,WAAW,EAAE;CAGjC"}
|