qlogicagent 0.1.0
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/README.md +45 -0
- package/dist/agent/agent.d.ts +44 -0
- package/dist/agent/agent.d.ts.map +1 -0
- package/dist/agent/agent.js +114 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/tool-loop.d.ts +65 -0
- package/dist/agent/tool-loop.d.ts.map +1 -0
- package/dist/agent/tool-loop.js +576 -0
- package/dist/agent/tool-loop.js.map +1 -0
- package/dist/agent/types.d.ts +176 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +15 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/cli/main.d.ts +12 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +24 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/stdio-server.d.ts +46 -0
- package/dist/cli/stdio-server.d.ts.map +1 -0
- package/dist/cli/stdio-server.js +464 -0
- package/dist/cli/stdio-server.js.map +1 -0
- package/dist/config/config.d.ts +18 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +22 -0
- package/dist/config/config.js.map +1 -0
- package/dist/contracts/hooks.d.ts +121 -0
- package/dist/contracts/hooks.d.ts.map +1 -0
- package/dist/contracts/hooks.js +8 -0
- package/dist/contracts/hooks.js.map +1 -0
- package/dist/contracts/index.d.ts +11 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +11 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/planner.d.ts +36 -0
- package/dist/contracts/planner.d.ts.map +1 -0
- package/dist/contracts/planner.js +3 -0
- package/dist/contracts/planner.js.map +1 -0
- package/dist/contracts/skill-candidate.d.ts +64 -0
- package/dist/contracts/skill-candidate.d.ts.map +1 -0
- package/dist/contracts/skill-candidate.js +196 -0
- package/dist/contracts/skill-candidate.js.map +1 -0
- package/dist/contracts/todo.d.ts +15 -0
- package/dist/contracts/todo.d.ts.map +1 -0
- package/dist/contracts/todo.js +10 -0
- package/dist/contracts/todo.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/builtin-providers.d.ts +11 -0
- package/dist/llm/builtin-providers.d.ts.map +1 -0
- package/dist/llm/builtin-providers.js +532 -0
- package/dist/llm/builtin-providers.js.map +1 -0
- package/dist/llm/index.d.ts +16 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +15 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/llm-client.d.ts +44 -0
- package/dist/llm/llm-client.d.ts.map +1 -0
- package/dist/llm/llm-client.js +68 -0
- package/dist/llm/llm-client.js.map +1 -0
- package/dist/llm/model-catalog.d.ts +54 -0
- package/dist/llm/model-catalog.d.ts.map +1 -0
- package/dist/llm/model-catalog.js +192 -0
- package/dist/llm/model-catalog.js.map +1 -0
- package/dist/llm/provider-def.d.ts +60 -0
- package/dist/llm/provider-def.d.ts.map +1 -0
- package/dist/llm/provider-def.js +13 -0
- package/dist/llm/provider-def.js.map +1 -0
- package/dist/llm/provider-registry.d.ts +55 -0
- package/dist/llm/provider-registry.d.ts.map +1 -0
- package/dist/llm/provider-registry.js +148 -0
- package/dist/llm/provider-registry.js.map +1 -0
- package/dist/llm/transport.d.ts +63 -0
- package/dist/llm/transport.d.ts.map +1 -0
- package/dist/llm/transport.js +28 -0
- package/dist/llm/transport.js.map +1 -0
- package/dist/llm/transports/anthropic-messages.d.ts +32 -0
- package/dist/llm/transports/anthropic-messages.d.ts.map +1 -0
- package/dist/llm/transports/anthropic-messages.js +294 -0
- package/dist/llm/transports/anthropic-messages.js.map +1 -0
- package/dist/llm/transports/openai-chat.d.ts +37 -0
- package/dist/llm/transports/openai-chat.d.ts.map +1 -0
- package/dist/llm/transports/openai-chat.js +166 -0
- package/dist/llm/transports/openai-chat.js.map +1 -0
- package/dist/orchestration/agent-registry.d.ts +42 -0
- package/dist/orchestration/agent-registry.d.ts.map +1 -0
- package/dist/orchestration/agent-registry.js +117 -0
- package/dist/orchestration/agent-registry.js.map +1 -0
- package/dist/orchestration/approval-aware-tool-plan.d.ts +33 -0
- package/dist/orchestration/approval-aware-tool-plan.d.ts.map +1 -0
- package/dist/orchestration/approval-aware-tool-plan.js +88 -0
- package/dist/orchestration/approval-aware-tool-plan.js.map +1 -0
- package/dist/orchestration/context-compression.d.ts +221 -0
- package/dist/orchestration/context-compression.d.ts.map +1 -0
- package/dist/orchestration/context-compression.js +584 -0
- package/dist/orchestration/context-compression.js.map +1 -0
- package/dist/orchestration/conversation-repair.d.ts +62 -0
- package/dist/orchestration/conversation-repair.d.ts.map +1 -0
- package/dist/orchestration/conversation-repair.js +430 -0
- package/dist/orchestration/conversation-repair.js.map +1 -0
- package/dist/orchestration/curator-scheduler.d.ts +120 -0
- package/dist/orchestration/curator-scheduler.d.ts.map +1 -0
- package/dist/orchestration/curator-scheduler.js +136 -0
- package/dist/orchestration/curator-scheduler.js.map +1 -0
- package/dist/orchestration/embedded-failover-policy.d.ts +111 -0
- package/dist/orchestration/embedded-failover-policy.d.ts.map +1 -0
- package/dist/orchestration/embedded-failover-policy.js +169 -0
- package/dist/orchestration/embedded-failover-policy.js.map +1 -0
- package/dist/orchestration/error-classification.d.ts +13 -0
- package/dist/orchestration/error-classification.d.ts.map +1 -0
- package/dist/orchestration/error-classification.js +78 -0
- package/dist/orchestration/error-classification.js.map +1 -0
- package/dist/orchestration/failover-classification.d.ts +9 -0
- package/dist/orchestration/failover-classification.d.ts.map +1 -0
- package/dist/orchestration/failover-classification.js +382 -0
- package/dist/orchestration/failover-classification.js.map +1 -0
- package/dist/orchestration/failover-error.d.ts +34 -0
- package/dist/orchestration/failover-error.d.ts.map +1 -0
- package/dist/orchestration/failover-error.js +199 -0
- package/dist/orchestration/failover-error.js.map +1 -0
- package/dist/orchestration/fork-subagent.d.ts +101 -0
- package/dist/orchestration/fork-subagent.d.ts.map +1 -0
- package/dist/orchestration/fork-subagent.js +99 -0
- package/dist/orchestration/fork-subagent.js.map +1 -0
- package/dist/orchestration/index.d.ts +121 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +268 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/memory-flush-policy.d.ts +58 -0
- package/dist/orchestration/memory-flush-policy.d.ts.map +1 -0
- package/dist/orchestration/memory-flush-policy.js +86 -0
- package/dist/orchestration/memory-flush-policy.js.map +1 -0
- package/dist/orchestration/memory-provider.d.ts +15 -0
- package/dist/orchestration/memory-provider.d.ts.map +1 -0
- package/dist/orchestration/memory-provider.js +3 -0
- package/dist/orchestration/memory-provider.js.map +1 -0
- package/dist/orchestration/parallel-tool-calls.d.ts +42 -0
- package/dist/orchestration/parallel-tool-calls.d.ts.map +1 -0
- package/dist/orchestration/parallel-tool-calls.js +60 -0
- package/dist/orchestration/parallel-tool-calls.js.map +1 -0
- package/dist/orchestration/prompt-cache-strategy.d.ts +127 -0
- package/dist/orchestration/prompt-cache-strategy.d.ts.map +1 -0
- package/dist/orchestration/prompt-cache-strategy.js +229 -0
- package/dist/orchestration/prompt-cache-strategy.js.map +1 -0
- package/dist/orchestration/reactive-compact.d.ts +74 -0
- package/dist/orchestration/reactive-compact.d.ts.map +1 -0
- package/dist/orchestration/reactive-compact.js +79 -0
- package/dist/orchestration/reactive-compact.js.map +1 -0
- package/dist/orchestration/retry-loop.d.ts +23 -0
- package/dist/orchestration/retry-loop.d.ts.map +1 -0
- package/dist/orchestration/retry-loop.js +25 -0
- package/dist/orchestration/retry-loop.js.map +1 -0
- package/dist/orchestration/skill-candidate.d.ts +53 -0
- package/dist/orchestration/skill-candidate.d.ts.map +1 -0
- package/dist/orchestration/skill-candidate.js +142 -0
- package/dist/orchestration/skill-candidate.js.map +1 -0
- package/dist/orchestration/skill-consolidation.d.ts +124 -0
- package/dist/orchestration/skill-consolidation.d.ts.map +1 -0
- package/dist/orchestration/skill-consolidation.js +221 -0
- package/dist/orchestration/skill-consolidation.js.map +1 -0
- package/dist/orchestration/skill-improvement.d.ts +60 -0
- package/dist/orchestration/skill-improvement.d.ts.map +1 -0
- package/dist/orchestration/skill-improvement.js +67 -0
- package/dist/orchestration/skill-improvement.js.map +1 -0
- package/dist/orchestration/skill-similarity.d.ts +99 -0
- package/dist/orchestration/skill-similarity.d.ts.map +1 -0
- package/dist/orchestration/skill-similarity.js +132 -0
- package/dist/orchestration/skill-similarity.js.map +1 -0
- package/dist/orchestration/streaming-tool-executor.d.ts +74 -0
- package/dist/orchestration/streaming-tool-executor.d.ts.map +1 -0
- package/dist/orchestration/streaming-tool-executor.js +97 -0
- package/dist/orchestration/streaming-tool-executor.js.map +1 -0
- package/dist/orchestration/team-orchestration.d.ts +196 -0
- package/dist/orchestration/team-orchestration.d.ts.map +1 -0
- package/dist/orchestration/team-orchestration.js +370 -0
- package/dist/orchestration/team-orchestration.js.map +1 -0
- package/dist/orchestration/team-tool-loop-wiring.d.ts +93 -0
- package/dist/orchestration/team-tool-loop-wiring.d.ts.map +1 -0
- package/dist/orchestration/team-tool-loop-wiring.js +148 -0
- package/dist/orchestration/team-tool-loop-wiring.js.map +1 -0
- package/dist/orchestration/tool-choice-policy.d.ts +55 -0
- package/dist/orchestration/tool-choice-policy.d.ts.map +1 -0
- package/dist/orchestration/tool-choice-policy.js +165 -0
- package/dist/orchestration/tool-choice-policy.js.map +1 -0
- package/dist/orchestration/tool-loop-state.d.ts +51 -0
- package/dist/orchestration/tool-loop-state.d.ts.map +1 -0
- package/dist/orchestration/tool-loop-state.js +134 -0
- package/dist/orchestration/tool-loop-state.js.map +1 -0
- package/dist/orchestration/tool-schema.d.ts +40 -0
- package/dist/orchestration/tool-schema.d.ts.map +1 -0
- package/dist/orchestration/tool-schema.js +298 -0
- package/dist/orchestration/tool-schema.js.map +1 -0
- package/dist/orchestration/transcript-repair.d.ts +43 -0
- package/dist/orchestration/transcript-repair.d.ts.map +1 -0
- package/dist/orchestration/transcript-repair.js +427 -0
- package/dist/orchestration/transcript-repair.js.map +1 -0
- package/dist/orchestration/turn-loop-guard.d.ts +87 -0
- package/dist/orchestration/turn-loop-guard.d.ts.map +1 -0
- package/dist/orchestration/turn-loop-guard.js +93 -0
- package/dist/orchestration/turn-loop-guard.js.map +1 -0
- package/dist/orchestration/web-browser-policy.d.ts +18 -0
- package/dist/orchestration/web-browser-policy.d.ts.map +1 -0
- package/dist/orchestration/web-browser-policy.js +40 -0
- package/dist/orchestration/web-browser-policy.js.map +1 -0
- package/dist/runtime/context-compression.d.ts +62 -0
- package/dist/runtime/context-compression.d.ts.map +1 -0
- package/dist/runtime/context-compression.js +275 -0
- package/dist/runtime/context-compression.js.map +1 -0
- package/dist/runtime/hook-registry.d.ts +13 -0
- package/dist/runtime/hook-registry.d.ts.map +1 -0
- package/dist/runtime/hook-registry.js +54 -0
- package/dist/runtime/hook-registry.js.map +1 -0
- package/dist/runtime/memory-hooks.d.ts +24 -0
- package/dist/runtime/memory-hooks.d.ts.map +1 -0
- package/dist/runtime/memory-hooks.js +66 -0
- package/dist/runtime/memory-hooks.js.map +1 -0
- package/dist/runtime/tool-eligibility.d.ts +60 -0
- package/dist/runtime/tool-eligibility.d.ts.map +1 -0
- package/dist/runtime/tool-eligibility.js +112 -0
- package/dist/runtime/tool-eligibility.js.map +1 -0
- package/dist/skills/index.d.ts +109 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +83 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/memory-extractor.d.ts +65 -0
- package/dist/skills/memory-extractor.d.ts.map +1 -0
- package/dist/skills/memory-extractor.js +174 -0
- package/dist/skills/memory-extractor.js.map +1 -0
- package/dist/skills/memory-query-tool.d.ts +44 -0
- package/dist/skills/memory-query-tool.d.ts.map +1 -0
- package/dist/skills/memory-query-tool.js +128 -0
- package/dist/skills/memory-query-tool.js.map +1 -0
- package/dist/skills/memory-store.d.ts +67 -0
- package/dist/skills/memory-store.d.ts.map +1 -0
- package/dist/skills/memory-store.js +229 -0
- package/dist/skills/memory-store.js.map +1 -0
- package/dist/skills/memory-tool.d.ts +68 -0
- package/dist/skills/memory-tool.d.ts.map +1 -0
- package/dist/skills/memory-tool.js +193 -0
- package/dist/skills/memory-tool.js.map +1 -0
- package/dist/skills/portable-tool.d.ts +72 -0
- package/dist/skills/portable-tool.d.ts.map +1 -0
- package/dist/skills/portable-tool.js +15 -0
- package/dist/skills/portable-tool.js.map +1 -0
- package/dist/skills/qmemory-adapter.d.ts +53 -0
- package/dist/skills/qmemory-adapter.d.ts.map +1 -0
- package/dist/skills/qmemory-adapter.js +166 -0
- package/dist/skills/qmemory-adapter.js.map +1 -0
- package/dist/skills/skill-frontmatter.d.ts +20 -0
- package/dist/skills/skill-frontmatter.d.ts.map +1 -0
- package/dist/skills/skill-frontmatter.js +345 -0
- package/dist/skills/skill-frontmatter.js.map +1 -0
- package/dist/skills/skill-guard.d.ts +24 -0
- package/dist/skills/skill-guard.d.ts.map +1 -0
- package/dist/skills/skill-guard.js +230 -0
- package/dist/skills/skill-guard.js.map +1 -0
- package/dist/skills/skill-loader.d.ts +17 -0
- package/dist/skills/skill-loader.d.ts.map +1 -0
- package/dist/skills/skill-loader.js +304 -0
- package/dist/skills/skill-loader.js.map +1 -0
- package/dist/skills/skill-source.d.ts +120 -0
- package/dist/skills/skill-source.d.ts.map +1 -0
- package/dist/skills/skill-source.js +127 -0
- package/dist/skills/skill-source.js.map +1 -0
- package/dist/skills/skill-types.d.ts +200 -0
- package/dist/skills/skill-types.d.ts.map +1 -0
- package/dist/skills/skill-types.js +7 -0
- package/dist/skills/skill-types.js.map +1 -0
- package/dist/skills/think-tool.d.ts +17 -0
- package/dist/skills/think-tool.d.ts.map +1 -0
- package/dist/skills/think-tool.js +60 -0
- package/dist/skills/think-tool.js.map +1 -0
- package/dist/skills/todo-tool.d.ts +64 -0
- package/dist/skills/todo-tool.d.ts.map +1 -0
- package/dist/skills/todo-tool.js +115 -0
- package/dist/skills/todo-tool.js.map +1 -0
- package/dist/skills/tools/agent-tool.d.ts +92 -0
- package/dist/skills/tools/agent-tool.d.ts.map +1 -0
- package/dist/skills/tools/agent-tool.js +143 -0
- package/dist/skills/tools/agent-tool.js.map +1 -0
- package/dist/skills/tools/apply-patch-tool.d.ts +30 -0
- package/dist/skills/tools/apply-patch-tool.d.ts.map +1 -0
- package/dist/skills/tools/apply-patch-tool.js +185 -0
- package/dist/skills/tools/apply-patch-tool.js.map +1 -0
- package/dist/skills/tools/ask-user-tool.d.ts +81 -0
- package/dist/skills/tools/ask-user-tool.d.ts.map +1 -0
- package/dist/skills/tools/ask-user-tool.js +122 -0
- package/dist/skills/tools/ask-user-tool.js.map +1 -0
- package/dist/skills/tools/brief-tool.d.ts +75 -0
- package/dist/skills/tools/brief-tool.d.ts.map +1 -0
- package/dist/skills/tools/brief-tool.js +96 -0
- package/dist/skills/tools/brief-tool.js.map +1 -0
- package/dist/skills/tools/browser-tool.d.ts +115 -0
- package/dist/skills/tools/browser-tool.d.ts.map +1 -0
- package/dist/skills/tools/browser-tool.js +156 -0
- package/dist/skills/tools/browser-tool.js.map +1 -0
- package/dist/skills/tools/checkpoint-tool.d.ts +67 -0
- package/dist/skills/tools/checkpoint-tool.d.ts.map +1 -0
- package/dist/skills/tools/checkpoint-tool.js +103 -0
- package/dist/skills/tools/checkpoint-tool.js.map +1 -0
- package/dist/skills/tools/config-tool.d.ts +64 -0
- package/dist/skills/tools/config-tool.d.ts.map +1 -0
- package/dist/skills/tools/config-tool.js +144 -0
- package/dist/skills/tools/config-tool.js.map +1 -0
- package/dist/skills/tools/cron-tool.d.ts +117 -0
- package/dist/skills/tools/cron-tool.d.ts.map +1 -0
- package/dist/skills/tools/cron-tool.js +176 -0
- package/dist/skills/tools/cron-tool.js.map +1 -0
- package/dist/skills/tools/edit-tool.d.ts +44 -0
- package/dist/skills/tools/edit-tool.d.ts.map +1 -0
- package/dist/skills/tools/edit-tool.js +71 -0
- package/dist/skills/tools/edit-tool.js.map +1 -0
- package/dist/skills/tools/exec-tool.d.ts +103 -0
- package/dist/skills/tools/exec-tool.d.ts.map +1 -0
- package/dist/skills/tools/exec-tool.js +134 -0
- package/dist/skills/tools/exec-tool.js.map +1 -0
- package/dist/skills/tools/image-generate-tool.d.ts +63 -0
- package/dist/skills/tools/image-generate-tool.d.ts.map +1 -0
- package/dist/skills/tools/image-generate-tool.js +68 -0
- package/dist/skills/tools/image-generate-tool.js.map +1 -0
- package/dist/skills/tools/instructions-tool.d.ts +104 -0
- package/dist/skills/tools/instructions-tool.d.ts.map +1 -0
- package/dist/skills/tools/instructions-tool.js +188 -0
- package/dist/skills/tools/instructions-tool.js.map +1 -0
- package/dist/skills/tools/lsp-tool.d.ts +154 -0
- package/dist/skills/tools/lsp-tool.d.ts.map +1 -0
- package/dist/skills/tools/lsp-tool.js +228 -0
- package/dist/skills/tools/lsp-tool.js.map +1 -0
- package/dist/skills/tools/mcp-client-types.d.ts +270 -0
- package/dist/skills/tools/mcp-client-types.d.ts.map +1 -0
- package/dist/skills/tools/mcp-client-types.js +54 -0
- package/dist/skills/tools/mcp-client-types.js.map +1 -0
- package/dist/skills/tools/mcp-tool.d.ts +250 -0
- package/dist/skills/tools/mcp-tool.d.ts.map +1 -0
- package/dist/skills/tools/mcp-tool.js +504 -0
- package/dist/skills/tools/mcp-tool.js.map +1 -0
- package/dist/skills/tools/memory-tool.d.ts +75 -0
- package/dist/skills/tools/memory-tool.d.ts.map +1 -0
- package/dist/skills/tools/memory-tool.js +89 -0
- package/dist/skills/tools/memory-tool.js.map +1 -0
- package/dist/skills/tools/monitor-tool.d.ts +114 -0
- package/dist/skills/tools/monitor-tool.d.ts.map +1 -0
- package/dist/skills/tools/monitor-tool.js +132 -0
- package/dist/skills/tools/monitor-tool.js.map +1 -0
- package/dist/skills/tools/music-generate-tool.d.ts +56 -0
- package/dist/skills/tools/music-generate-tool.d.ts.map +1 -0
- package/dist/skills/tools/music-generate-tool.js +63 -0
- package/dist/skills/tools/music-generate-tool.js.map +1 -0
- package/dist/skills/tools/notify-tool.d.ts +54 -0
- package/dist/skills/tools/notify-tool.d.ts.map +1 -0
- package/dist/skills/tools/notify-tool.js +63 -0
- package/dist/skills/tools/notify-tool.js.map +1 -0
- package/dist/skills/tools/patch-tool.d.ts +46 -0
- package/dist/skills/tools/patch-tool.d.ts.map +1 -0
- package/dist/skills/tools/patch-tool.js +506 -0
- package/dist/skills/tools/patch-tool.js.map +1 -0
- package/dist/skills/tools/pdf-tool.d.ts +67 -0
- package/dist/skills/tools/pdf-tool.d.ts.map +1 -0
- package/dist/skills/tools/pdf-tool.js +89 -0
- package/dist/skills/tools/pdf-tool.js.map +1 -0
- package/dist/skills/tools/plan-mode-tool.d.ts +60 -0
- package/dist/skills/tools/plan-mode-tool.d.ts.map +1 -0
- package/dist/skills/tools/plan-mode-tool.js +123 -0
- package/dist/skills/tools/plan-mode-tool.js.map +1 -0
- package/dist/skills/tools/read-tool.d.ts +52 -0
- package/dist/skills/tools/read-tool.d.ts.map +1 -0
- package/dist/skills/tools/read-tool.js +85 -0
- package/dist/skills/tools/read-tool.js.map +1 -0
- package/dist/skills/tools/repl-tool.d.ts +71 -0
- package/dist/skills/tools/repl-tool.d.ts.map +1 -0
- package/dist/skills/tools/repl-tool.js +70 -0
- package/dist/skills/tools/repl-tool.js.map +1 -0
- package/dist/skills/tools/search-tool.d.ts +113 -0
- package/dist/skills/tools/search-tool.d.ts.map +1 -0
- package/dist/skills/tools/search-tool.js +226 -0
- package/dist/skills/tools/search-tool.js.map +1 -0
- package/dist/skills/tools/send-message-tool.d.ts +52 -0
- package/dist/skills/tools/send-message-tool.d.ts.map +1 -0
- package/dist/skills/tools/send-message-tool.js +77 -0
- package/dist/skills/tools/send-message-tool.js.map +1 -0
- package/dist/skills/tools/skill-list-tool.d.ts +34 -0
- package/dist/skills/tools/skill-list-tool.d.ts.map +1 -0
- package/dist/skills/tools/skill-list-tool.js +55 -0
- package/dist/skills/tools/skill-list-tool.js.map +1 -0
- package/dist/skills/tools/skill-manage-tool.d.ts +74 -0
- package/dist/skills/tools/skill-manage-tool.d.ts.map +1 -0
- package/dist/skills/tools/skill-manage-tool.js +154 -0
- package/dist/skills/tools/skill-manage-tool.js.map +1 -0
- package/dist/skills/tools/skill-view-tool.d.ts +38 -0
- package/dist/skills/tools/skill-view-tool.d.ts.map +1 -0
- package/dist/skills/tools/skill-view-tool.js +73 -0
- package/dist/skills/tools/skill-view-tool.js.map +1 -0
- package/dist/skills/tools/sleep-tool.d.ts +50 -0
- package/dist/skills/tools/sleep-tool.d.ts.map +1 -0
- package/dist/skills/tools/sleep-tool.js +82 -0
- package/dist/skills/tools/sleep-tool.js.map +1 -0
- package/dist/skills/tools/structured-output-tool.d.ts +117 -0
- package/dist/skills/tools/structured-output-tool.d.ts.map +1 -0
- package/dist/skills/tools/structured-output-tool.js +177 -0
- package/dist/skills/tools/structured-output-tool.js.map +1 -0
- package/dist/skills/tools/task-tool.d.ts +105 -0
- package/dist/skills/tools/task-tool.d.ts.map +1 -0
- package/dist/skills/tools/task-tool.js +162 -0
- package/dist/skills/tools/task-tool.js.map +1 -0
- package/dist/skills/tools/team-tool.d.ts +90 -0
- package/dist/skills/tools/team-tool.d.ts.map +1 -0
- package/dist/skills/tools/team-tool.js +106 -0
- package/dist/skills/tools/team-tool.js.map +1 -0
- package/dist/skills/tools/tool-search-tool.d.ts +52 -0
- package/dist/skills/tools/tool-search-tool.d.ts.map +1 -0
- package/dist/skills/tools/tool-search-tool.js +111 -0
- package/dist/skills/tools/tool-search-tool.js.map +1 -0
- package/dist/skills/tools/tts-tool.d.ts +39 -0
- package/dist/skills/tools/tts-tool.d.ts.map +1 -0
- package/dist/skills/tools/tts-tool.js +46 -0
- package/dist/skills/tools/tts-tool.js.map +1 -0
- package/dist/skills/tools/video-edit-tool.d.ts +70 -0
- package/dist/skills/tools/video-edit-tool.d.ts.map +1 -0
- package/dist/skills/tools/video-edit-tool.js +75 -0
- package/dist/skills/tools/video-edit-tool.js.map +1 -0
- package/dist/skills/tools/video-generate-tool.d.ts +63 -0
- package/dist/skills/tools/video-generate-tool.d.ts.map +1 -0
- package/dist/skills/tools/video-generate-tool.js +67 -0
- package/dist/skills/tools/video-generate-tool.js.map +1 -0
- package/dist/skills/tools/video-merge-tool.d.ts +106 -0
- package/dist/skills/tools/video-merge-tool.d.ts.map +1 -0
- package/dist/skills/tools/video-merge-tool.js +93 -0
- package/dist/skills/tools/video-merge-tool.js.map +1 -0
- package/dist/skills/tools/video-upscale-tool.d.ts +46 -0
- package/dist/skills/tools/video-upscale-tool.d.ts.map +1 -0
- package/dist/skills/tools/video-upscale-tool.js +53 -0
- package/dist/skills/tools/video-upscale-tool.js.map +1 -0
- package/dist/skills/tools/web-fetch-tool.d.ts +79 -0
- package/dist/skills/tools/web-fetch-tool.d.ts.map +1 -0
- package/dist/skills/tools/web-fetch-tool.js +93 -0
- package/dist/skills/tools/web-fetch-tool.js.map +1 -0
- package/dist/skills/tools/web-search-tool.d.ts +58 -0
- package/dist/skills/tools/web-search-tool.d.ts.map +1 -0
- package/dist/skills/tools/web-search-tool.js +87 -0
- package/dist/skills/tools/web-search-tool.js.map +1 -0
- package/dist/skills/tools/worktree-tool.d.ts +70 -0
- package/dist/skills/tools/worktree-tool.d.ts.map +1 -0
- package/dist/skills/tools/worktree-tool.js +148 -0
- package/dist/skills/tools/worktree-tool.js.map +1 -0
- package/dist/skills/tools/write-tool.d.ts +46 -0
- package/dist/skills/tools/write-tool.d.ts.map +1 -0
- package/dist/skills/tools/write-tool.js +82 -0
- package/dist/skills/tools/write-tool.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// Memory Tool Contract — dual-layer agent memory system.
|
|
3
|
+
//
|
|
4
|
+
// Two independent layers (Hermes-inspired):
|
|
5
|
+
//
|
|
6
|
+
// 1. **MD Memory** (local notes, always in system prompt):
|
|
7
|
+
// Agent explicitly manages via add / replace / remove.
|
|
8
|
+
// Character-bounded, no LLM needed, zero-cost.
|
|
9
|
+
// Frozen snapshot in system prompt for KV cache stability.
|
|
10
|
+
//
|
|
11
|
+
// 2. **QMemory** (semantic long-term memory):
|
|
12
|
+
// Automatic extraction from every conversation turn.
|
|
13
|
+
// Agent queries via search action. Vector-based recall.
|
|
14
|
+
//
|
|
15
|
+
// The two layers are independent — no cross-dedup, no sync.
|
|
16
|
+
// MD = curated highlights; QMemory = conversation sediment.
|
|
17
|
+
// ============================================================
|
|
18
|
+
// ── Constants ───────────────────────────────────────────────────
|
|
19
|
+
export const MEMORY_TOOL_NAME = "memory";
|
|
20
|
+
export const MEMORY_TOOL_MAX_CONTENT_LENGTH = 2000;
|
|
21
|
+
export const MEMORY_TOOL_ACTIONS = ["add", "replace", "remove", "search"];
|
|
22
|
+
// ── Tool schema (JSON Schema compatible) ────────────────────
|
|
23
|
+
export const MEMORY_TOOL_SCHEMA = {
|
|
24
|
+
type: "object",
|
|
25
|
+
properties: {
|
|
26
|
+
action: {
|
|
27
|
+
type: "string",
|
|
28
|
+
enum: MEMORY_TOOL_ACTIONS,
|
|
29
|
+
description: [
|
|
30
|
+
"The operation to perform:",
|
|
31
|
+
"• 'add' — Save a concise note about this user (→ local notes, always visible)",
|
|
32
|
+
"• 'replace' — Update an existing note by matching a substring (→ local notes)",
|
|
33
|
+
"• 'remove' — Delete a note by matching a substring (→ local notes)",
|
|
34
|
+
"• 'search' — Semantic search across long-term memory (→ qmemory)",
|
|
35
|
+
].join("\n"),
|
|
36
|
+
},
|
|
37
|
+
target: {
|
|
38
|
+
type: "string",
|
|
39
|
+
enum: ["memory", "user"],
|
|
40
|
+
description: [
|
|
41
|
+
"Which note target to operate on (for add/replace/remove):",
|
|
42
|
+
"• 'memory' — Your personal observations/notes about this user (default)",
|
|
43
|
+
"• 'user' — User profile facts (preferences, timezone, etc.)",
|
|
44
|
+
].join("\n"),
|
|
45
|
+
},
|
|
46
|
+
content: {
|
|
47
|
+
type: "string",
|
|
48
|
+
description: [
|
|
49
|
+
"Required for 'add' and 'replace'. The note content to store.",
|
|
50
|
+
"Write a concise, factual statement.",
|
|
51
|
+
"Good: '用户是后端工程师,主要使用 TypeScript 和 Go'",
|
|
52
|
+
"Good: 'User prefers dark UI themes and minimalist design'",
|
|
53
|
+
"Bad: '用户说了很多话' (too vague)",
|
|
54
|
+
"Bad: entire conversation transcripts (too long)",
|
|
55
|
+
].join("\n"),
|
|
56
|
+
},
|
|
57
|
+
old_text: {
|
|
58
|
+
type: "string",
|
|
59
|
+
description: "Required for 'replace' and 'remove'. A substring that uniquely identifies the note entry to modify.",
|
|
60
|
+
},
|
|
61
|
+
query: {
|
|
62
|
+
type: "string",
|
|
63
|
+
description: "Required for 'search'. Natural language query to find relevant memories.",
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
required: ["action"],
|
|
67
|
+
};
|
|
68
|
+
export const MEMORY_TOOL_DESCRIPTION = [
|
|
69
|
+
"Manage your notes about this user and search long-term memory.",
|
|
70
|
+
"",
|
|
71
|
+
"Your notes (add/replace/remove) are always visible in the system prompt.",
|
|
72
|
+
"Long-term memories are automatically extracted from every conversation",
|
|
73
|
+
"and searchable via 'search'.",
|
|
74
|
+
"",
|
|
75
|
+
"Guidelines:",
|
|
76
|
+
"- Use 'add' to record important user preferences, facts, or context",
|
|
77
|
+
"- Use 'replace' to update outdated notes (match by substring)",
|
|
78
|
+
"- Use 'remove' to delete incorrect notes (match by substring)",
|
|
79
|
+
"- Use 'search' to recall conversation history and past interactions",
|
|
80
|
+
"- Keep notes concise — there's a character limit",
|
|
81
|
+
].join("\n");
|
|
82
|
+
export const MEMORY_TOOL_LABEL = "Memory";
|
|
83
|
+
// ── Content safety ──────────────────────────────────────────
|
|
84
|
+
const BLOCKED_PATTERNS = [
|
|
85
|
+
/ignore\s+(previous|all|above|prior)\s+instructions/i,
|
|
86
|
+
/you\s+are\s+now\s+/i,
|
|
87
|
+
/do\s+not\s+tell\s+the\s+user/i,
|
|
88
|
+
/system\s+prompt\s+override/i,
|
|
89
|
+
];
|
|
90
|
+
export function isMemoryContentSafe(text) {
|
|
91
|
+
return !BLOCKED_PATTERNS.some((pattern) => pattern.test(text));
|
|
92
|
+
}
|
|
93
|
+
export async function executeMemoryTool(params, deps) {
|
|
94
|
+
const { action } = params;
|
|
95
|
+
const target = params.target ?? "memory";
|
|
96
|
+
// ── MD store operations: add / replace / remove ───────
|
|
97
|
+
if (action === "add") {
|
|
98
|
+
if (!deps.store) {
|
|
99
|
+
return { ok: false, message: "Local memory store is not available.", action, errorCode: "no_store" };
|
|
100
|
+
}
|
|
101
|
+
const content = params.content?.trim();
|
|
102
|
+
if (!content) {
|
|
103
|
+
return { ok: false, message: "content is required for 'add' action.", action, errorCode: "empty_content" };
|
|
104
|
+
}
|
|
105
|
+
if (content.length > MEMORY_TOOL_MAX_CONTENT_LENGTH) {
|
|
106
|
+
return { ok: false, message: `Content too long (${content.length} chars, max ${MEMORY_TOOL_MAX_CONTENT_LENGTH}).`, action, errorCode: "too_long" };
|
|
107
|
+
}
|
|
108
|
+
const result = deps.store.add(target, content);
|
|
109
|
+
return {
|
|
110
|
+
ok: result.ok,
|
|
111
|
+
message: result.ok
|
|
112
|
+
? `${result.message} [${result.usage}]`
|
|
113
|
+
: result.message,
|
|
114
|
+
action,
|
|
115
|
+
entryCount: result.entryCount,
|
|
116
|
+
usage: result.usage,
|
|
117
|
+
storeModified: result.ok,
|
|
118
|
+
errorCode: result.errorCode,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (action === "replace") {
|
|
122
|
+
if (!deps.store) {
|
|
123
|
+
return { ok: false, message: "Local memory store is not available.", action, errorCode: "no_store" };
|
|
124
|
+
}
|
|
125
|
+
const oldText = params.old_text?.trim();
|
|
126
|
+
const content = params.content?.trim();
|
|
127
|
+
if (!oldText) {
|
|
128
|
+
return { ok: false, message: "old_text is required for 'replace' action.", action, errorCode: "empty_old_text" };
|
|
129
|
+
}
|
|
130
|
+
if (!content) {
|
|
131
|
+
return { ok: false, message: "content is required for 'replace' action.", action, errorCode: "empty_content" };
|
|
132
|
+
}
|
|
133
|
+
if (content.length > MEMORY_TOOL_MAX_CONTENT_LENGTH) {
|
|
134
|
+
return { ok: false, message: `Content too long (${content.length} chars, max ${MEMORY_TOOL_MAX_CONTENT_LENGTH}).`, action, errorCode: "too_long" };
|
|
135
|
+
}
|
|
136
|
+
const result = deps.store.replace(target, oldText, content);
|
|
137
|
+
return {
|
|
138
|
+
ok: result.ok,
|
|
139
|
+
message: result.ok
|
|
140
|
+
? `${result.message} [${result.usage}]`
|
|
141
|
+
: result.message,
|
|
142
|
+
action,
|
|
143
|
+
entryCount: result.entryCount,
|
|
144
|
+
usage: result.usage,
|
|
145
|
+
storeModified: result.ok,
|
|
146
|
+
errorCode: result.errorCode,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
if (action === "remove") {
|
|
150
|
+
if (!deps.store) {
|
|
151
|
+
return { ok: false, message: "Local memory store is not available.", action, errorCode: "no_store" };
|
|
152
|
+
}
|
|
153
|
+
const oldText = params.old_text?.trim();
|
|
154
|
+
if (!oldText) {
|
|
155
|
+
return { ok: false, message: "old_text is required for 'remove' action.", action, errorCode: "empty_old_text" };
|
|
156
|
+
}
|
|
157
|
+
const result = deps.store.remove(target, oldText);
|
|
158
|
+
return {
|
|
159
|
+
ok: result.ok,
|
|
160
|
+
message: result.ok
|
|
161
|
+
? `${result.message} [${result.usage}]`
|
|
162
|
+
: result.message,
|
|
163
|
+
action,
|
|
164
|
+
entryCount: result.entryCount,
|
|
165
|
+
usage: result.usage,
|
|
166
|
+
storeModified: result.ok,
|
|
167
|
+
errorCode: result.errorCode,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
if (action === "search") {
|
|
171
|
+
const query = params.query?.trim();
|
|
172
|
+
if (!query) {
|
|
173
|
+
return { ok: false, message: "query is required for 'search' action.", action, errorCode: "empty_query" };
|
|
174
|
+
}
|
|
175
|
+
try {
|
|
176
|
+
const results = await deps.provider.search(query, deps.userId, { limit: 10 });
|
|
177
|
+
if (results.length === 0) {
|
|
178
|
+
return { ok: true, message: "No matching memories found.", action, results: [] };
|
|
179
|
+
}
|
|
180
|
+
return {
|
|
181
|
+
ok: true,
|
|
182
|
+
message: results.map((r, i) => `${i + 1}. [${r.blockId}] ${r.text}`).join("\n"),
|
|
183
|
+
action,
|
|
184
|
+
results,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
return { ok: false, message: `Search failed: ${error instanceof Error ? error.message : String(error)}`, action, errorCode: "search_failed" };
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return { ok: false, message: `Unknown action: ${action}. Use 'add', 'replace', 'remove', or 'search'.`, action, errorCode: "unknown_action" };
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=memory-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-tool.js","sourceRoot":"","sources":["../../src/skills/memory-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content block returned by tool execution.
|
|
3
|
+
* Compatible with OpenAI / Anthropic content array format.
|
|
4
|
+
*/
|
|
5
|
+
export interface ToolContentBlock {
|
|
6
|
+
type: "text" | "image";
|
|
7
|
+
text?: string;
|
|
8
|
+
/** base64-encoded image data (only when type === "image") */
|
|
9
|
+
data?: string;
|
|
10
|
+
mimeType?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Result of executing a portable tool.
|
|
14
|
+
*/
|
|
15
|
+
export interface PortableToolResult {
|
|
16
|
+
content: ToolContentBlock[];
|
|
17
|
+
/** Arbitrary structured metadata for the calling runtime. */
|
|
18
|
+
details?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A runtime-agnostic tool definition.
|
|
22
|
+
*
|
|
23
|
+
* @typeParam TParams The expected parameter shape (for TypeScript consumers).
|
|
24
|
+
*/
|
|
25
|
+
export interface PortableTool<TParams = Record<string, unknown>> {
|
|
26
|
+
/** Unique tool name (e.g. "think", "todo", "memory_query"). */
|
|
27
|
+
name: string;
|
|
28
|
+
/** Human-readable label. */
|
|
29
|
+
label: string;
|
|
30
|
+
/** Tool description shown to the LLM. */
|
|
31
|
+
description: string;
|
|
32
|
+
/** JSON Schema object describing the tool's parameters. */
|
|
33
|
+
parameters: Record<string, unknown>;
|
|
34
|
+
/**
|
|
35
|
+
* When true, the tool should NOT appear in the default tool list.
|
|
36
|
+
* The host injects it only for complex tasks (e.g. multi-step reasoning)
|
|
37
|
+
* or when explicitly activated via tool_search.
|
|
38
|
+
* This saves context tokens in simple conversations.
|
|
39
|
+
*/
|
|
40
|
+
shouldDefer?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Whether the tool can safely run concurrently with other tools.
|
|
43
|
+
* When true, the runtime may execute this tool in parallel with others.
|
|
44
|
+
* Default: false (sequential execution assumed).
|
|
45
|
+
*/
|
|
46
|
+
isConcurrencySafe?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Whether the tool only reads state and never mutates anything.
|
|
49
|
+
* Read-only tools can skip confirmation prompts in strict permission modes.
|
|
50
|
+
*/
|
|
51
|
+
isReadOnly?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Brief keyword hint for tool_search to match against
|
|
54
|
+
* (e.g. "return the final response as structured JSON").
|
|
55
|
+
*/
|
|
56
|
+
searchHint?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Maximum allowed content size in characters for the tool result.
|
|
59
|
+
* The runtime should truncate/reject results exceeding this.
|
|
60
|
+
*/
|
|
61
|
+
maxResultSizeChars?: number;
|
|
62
|
+
/**
|
|
63
|
+
* Execute the tool.
|
|
64
|
+
*
|
|
65
|
+
* @param toolCallId - Unique ID for this tool invocation (for tracing).
|
|
66
|
+
* @param params - Parsed parameters matching the JSON Schema.
|
|
67
|
+
* @param signal - Optional abort signal.
|
|
68
|
+
* @returns Tool result with content blocks + optional details.
|
|
69
|
+
*/
|
|
70
|
+
execute(toolCallId: string, params: TParams, signal?: AbortSignal): Promise<PortableToolResult>;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=portable-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portable-tool.d.ts","sourceRoot":"","sources":["../../src/skills/portable-tool.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,OAAO,CACL,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// Portable Tool Contract — runtime-agnostic tool interface.
|
|
3
|
+
//
|
|
4
|
+
// This is the minimal tool definition that any agent runtime
|
|
5
|
+
// (openclaw, Hub, Electron, third-party) can consume. It uses
|
|
6
|
+
// plain JSON Schema objects instead of @sinclair/typebox so
|
|
7
|
+
// there are zero external dependencies.
|
|
8
|
+
//
|
|
9
|
+
// Consumers wrap PortableTool into their own tool system:
|
|
10
|
+
// - openclaw → AgentTool<TSchema> (via typebox adapter)
|
|
11
|
+
// - Hub → hub-managed tool registration
|
|
12
|
+
// - Electron → desktop tool host
|
|
13
|
+
// ============================================================
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=portable-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portable-tool.js","sourceRoot":"","sources":["../../src/skills/portable-tool.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,4DAA4D;AAC5D,EAAE;AACF,6DAA6D;AAC7D,8DAA8D;AAC9D,4DAA4D;AAC5D,wCAAwC;AACxC,EAAE;AACF,0DAA0D;AAC1D,2DAA2D;AAC3D,+CAA+C;AAC/C,mCAAmC;AACnC,+DAA+D"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { MemoryIngestOptions, MemoryProvider } from "qlogicagent-runtime-contracts";
|
|
2
|
+
/** A pre-extracted memory item ready to be stored (no LLM needed). */
|
|
3
|
+
export interface ExtractedMemoryItem {
|
|
4
|
+
text: string;
|
|
5
|
+
category?: string;
|
|
6
|
+
importance?: number;
|
|
7
|
+
speaker?: string;
|
|
8
|
+
event_date?: string;
|
|
9
|
+
tags?: string[];
|
|
10
|
+
}
|
|
11
|
+
/** Configuration for the QMemory HTTP adapter. */
|
|
12
|
+
export interface QMemoryAdapterConfig {
|
|
13
|
+
/** Base URL of the qmemory server (e.g. "http://localhost:18800"). */
|
|
14
|
+
baseUrl: string;
|
|
15
|
+
/** Optional API key for authentication. */
|
|
16
|
+
apiKey?: string;
|
|
17
|
+
/** Request timeout in milliseconds (default: 5000). */
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
/** Prefix prepended to userId for multi-tenant isolation. */
|
|
20
|
+
userIdPrefix?: string;
|
|
21
|
+
}
|
|
22
|
+
/** Health status returned by qmemory `/v1/health/`. */
|
|
23
|
+
export interface QMemoryHealthStatus {
|
|
24
|
+
status: string;
|
|
25
|
+
version: string;
|
|
26
|
+
memoryCount: number;
|
|
27
|
+
dbSizeBytes: number;
|
|
28
|
+
embeddingModel: string;
|
|
29
|
+
uptimeSeconds: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create a MemoryProvider backed by a QMemory HTTP server.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* const provider = createQMemoryAdapter({
|
|
37
|
+
* baseUrl: "http://localhost:18800",
|
|
38
|
+
* apiKey: "sk-...",
|
|
39
|
+
* });
|
|
40
|
+
*
|
|
41
|
+
* const results = await provider.search("last meeting notes", "alice");
|
|
42
|
+
* await provider.ingest([{ role: "user", content: "..." }], "alice");
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function createQMemoryAdapter(config: QMemoryAdapterConfig): MemoryProvider & {
|
|
46
|
+
/** Check qmemory server health. */
|
|
47
|
+
health(): Promise<QMemoryHealthStatus>;
|
|
48
|
+
/** Write pre-extracted memories (no LLM extraction on qmemory side). */
|
|
49
|
+
ingestExtracted(items: ExtractedMemoryItem[], userId: string, options?: MemoryIngestOptions): Promise<{
|
|
50
|
+
memoriesAdded: number;
|
|
51
|
+
}>;
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=qmemory-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qmemory-adapter.d.ts","sourceRoot":"","sources":["../../src/skills/qmemory-adapter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAEV,mBAAmB,EACnB,cAAc,EAGf,MAAM,+BAA+B,CAAC;AAGvC,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,kDAAkD;AAClD,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,uDAAuD;AACvD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAKD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,GAAG;IACnF,mCAAmC;IACnC,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvC,wEAAwE;IACxE,eAAe,CACb,KAAK,EAAE,mBAAmB,EAAE,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvC,CA6KA"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// QMemory HTTP adapter — implements MemoryProvider against the
|
|
3
|
+
// QMemory REST API (v1).
|
|
4
|
+
//
|
|
5
|
+
// This is a Hub-ready, provider-agnostic adapter that can be
|
|
6
|
+
// plugged into any consumer of the MemoryProvider contract.
|
|
7
|
+
// ============================================================
|
|
8
|
+
const DEFAULT_TIMEOUT_MS = 5_000;
|
|
9
|
+
const PROVIDER_ID = "qmemory";
|
|
10
|
+
/**
|
|
11
|
+
* Create a MemoryProvider backed by a QMemory HTTP server.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const provider = createQMemoryAdapter({
|
|
16
|
+
* baseUrl: "http://localhost:18800",
|
|
17
|
+
* apiKey: "sk-...",
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* const results = await provider.search("last meeting notes", "alice");
|
|
21
|
+
* await provider.ingest([{ role: "user", content: "..." }], "alice");
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export function createQMemoryAdapter(config) {
|
|
25
|
+
const baseUrl = config.baseUrl.replace(/\/+$/, "");
|
|
26
|
+
const timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
27
|
+
function resolveUserId(userId) {
|
|
28
|
+
return config.userIdPrefix ? `${config.userIdPrefix}:${userId}` : userId;
|
|
29
|
+
}
|
|
30
|
+
function buildHeaders() {
|
|
31
|
+
const headers = {
|
|
32
|
+
"Accept": "application/json",
|
|
33
|
+
};
|
|
34
|
+
if (config.apiKey) {
|
|
35
|
+
headers["Authorization"] = `Bearer ${config.apiKey}`;
|
|
36
|
+
}
|
|
37
|
+
return headers;
|
|
38
|
+
}
|
|
39
|
+
async function request(pathname, init) {
|
|
40
|
+
const url = `${baseUrl}${pathname}`;
|
|
41
|
+
const controller = new AbortController();
|
|
42
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
43
|
+
try {
|
|
44
|
+
const response = await fetch(url, {
|
|
45
|
+
...init,
|
|
46
|
+
headers: { ...buildHeaders(), ...init?.headers },
|
|
47
|
+
signal: controller.signal,
|
|
48
|
+
});
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
const text = await response.text().catch(() => "");
|
|
51
|
+
throw new Error(`QMemory ${init?.method ?? "GET"} ${pathname} returned ${response.status}: ${text.slice(0, 200)}`);
|
|
52
|
+
}
|
|
53
|
+
return await response.json();
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
clearTimeout(timer);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
providerId: PROVIDER_ID,
|
|
61
|
+
async search(query, userId, options) {
|
|
62
|
+
const resolvedUserId = resolveUserId(userId);
|
|
63
|
+
const limit = options?.limit ?? 10;
|
|
64
|
+
const params = new URLSearchParams({
|
|
65
|
+
q: query,
|
|
66
|
+
user_id: resolvedUserId,
|
|
67
|
+
limit: String(limit),
|
|
68
|
+
});
|
|
69
|
+
const result = await request(`/v1/memories/search/?${params.toString()}`);
|
|
70
|
+
return (result.memories ?? [])
|
|
71
|
+
.filter((m) => m.id && m.text)
|
|
72
|
+
.map((m) => ({
|
|
73
|
+
blockId: m.id,
|
|
74
|
+
text: m.text,
|
|
75
|
+
score: typeof m.importance === "number" ? m.importance : 0,
|
|
76
|
+
source: PROVIDER_ID,
|
|
77
|
+
metadata: m.metadata,
|
|
78
|
+
}));
|
|
79
|
+
},
|
|
80
|
+
async ingest(messages, userId, options) {
|
|
81
|
+
const resolvedUserId = resolveUserId(userId);
|
|
82
|
+
await request("/v1/memories/", {
|
|
83
|
+
method: "POST",
|
|
84
|
+
headers: { "Content-Type": "application/json" },
|
|
85
|
+
body: JSON.stringify({
|
|
86
|
+
user_id: resolvedUserId,
|
|
87
|
+
messages: messages.map((m) => ({
|
|
88
|
+
role: m.role,
|
|
89
|
+
content: m.content,
|
|
90
|
+
...(m.timestamp ? { timestamp: m.timestamp } : {}),
|
|
91
|
+
})), extraction_mode: "none", ...(options?.sessionId ? { session_id: options.sessionId } : {}),
|
|
92
|
+
...(options?.source ? { metadata: { source: options.source } } : {}),
|
|
93
|
+
run_async: true,
|
|
94
|
+
}),
|
|
95
|
+
});
|
|
96
|
+
},
|
|
97
|
+
async health() {
|
|
98
|
+
const raw = await request("/v1/health/");
|
|
99
|
+
return {
|
|
100
|
+
status: raw.status ?? "unknown",
|
|
101
|
+
version: raw.version ?? "",
|
|
102
|
+
memoryCount: raw.memory_count ?? 0,
|
|
103
|
+
dbSizeBytes: raw.db_size_bytes ?? 0,
|
|
104
|
+
embeddingModel: raw.embedding_model ?? "",
|
|
105
|
+
uptimeSeconds: raw.uptime_seconds ?? 0,
|
|
106
|
+
};
|
|
107
|
+
},
|
|
108
|
+
async addText(text, userId, options) {
|
|
109
|
+
const resolvedUserId = resolveUserId(userId);
|
|
110
|
+
const result = await request("/v1/memories/", {
|
|
111
|
+
method: "POST",
|
|
112
|
+
headers: { "Content-Type": "application/json" },
|
|
113
|
+
body: JSON.stringify({
|
|
114
|
+
user_id: resolvedUserId,
|
|
115
|
+
text,
|
|
116
|
+
extraction_mode: "none",
|
|
117
|
+
...(options?.sessionId ? { session_id: options.sessionId } : {}),
|
|
118
|
+
...(options?.source ? { metadata: { source: options.source } } : {}),
|
|
119
|
+
}),
|
|
120
|
+
});
|
|
121
|
+
return { memoriesAdded: result.memories_added ?? 0 };
|
|
122
|
+
},
|
|
123
|
+
async ingestExtracted(items, userId, options) {
|
|
124
|
+
if (items.length === 0)
|
|
125
|
+
return { memoriesAdded: 0 };
|
|
126
|
+
const resolvedUserId = resolveUserId(userId);
|
|
127
|
+
const results = await Promise.allSettled(items.map((item) => request("/v1/memories/", {
|
|
128
|
+
method: "POST",
|
|
129
|
+
headers: { "Content-Type": "application/json" },
|
|
130
|
+
body: JSON.stringify({
|
|
131
|
+
user_id: resolvedUserId,
|
|
132
|
+
text: item.text,
|
|
133
|
+
extraction_mode: "none",
|
|
134
|
+
...(options?.sessionId ? { session_id: options.sessionId } : {}),
|
|
135
|
+
metadata: {
|
|
136
|
+
...(options?.source ? { source: options.source } : {}),
|
|
137
|
+
...(item.category ? { category: item.category } : {}),
|
|
138
|
+
...(typeof item.importance === "number" ? { importance: item.importance } : {}),
|
|
139
|
+
...(item.speaker ? { speaker: item.speaker } : {}),
|
|
140
|
+
...(item.event_date ? { event_date: item.event_date } : {}),
|
|
141
|
+
...(item.tags?.length ? { tags: item.tags } : {}),
|
|
142
|
+
},
|
|
143
|
+
}),
|
|
144
|
+
})));
|
|
145
|
+
let total = 0;
|
|
146
|
+
for (const r of results) {
|
|
147
|
+
if (r.status === "fulfilled") {
|
|
148
|
+
total += r.value.memories_added ?? 1;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return { memoriesAdded: total };
|
|
152
|
+
},
|
|
153
|
+
async remove(memoryId) {
|
|
154
|
+
try {
|
|
155
|
+
await request(`/v1/memories/${encodeURIComponent(memoryId)}/`, {
|
|
156
|
+
method: "DELETE",
|
|
157
|
+
});
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=qmemory-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qmemory-adapter.js","sourceRoot":"","sources":["../../src/skills/qmemory-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ParsedSkillFrontmatter, SkillInvocationPolicy, SkillMetadata } from "./skill-types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a YAML-like frontmatter block into a flat key→value record.
|
|
4
|
+
* Uses a lightweight line parser to avoid a YAML library dependency.
|
|
5
|
+
*/
|
|
6
|
+
export declare function parseFrontmatter(content: string): ParsedSkillFrontmatter;
|
|
7
|
+
/**
|
|
8
|
+
* Resolve structured metadata from the `metadata:` frontmatter field.
|
|
9
|
+
* Expects `metadata: {"openclaw": {...}}` (JSON format).
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveSkillMetadata(frontmatter: ParsedSkillFrontmatter): SkillMetadata | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Resolve invocation policy from frontmatter fields.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveSkillInvocationPolicy(frontmatter: ParsedSkillFrontmatter): SkillInvocationPolicy;
|
|
16
|
+
/**
|
|
17
|
+
* Get the canonical key for a skill (metadata.skillKey or skill.name).
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveSkillKey(skillName: string, metadata?: SkillMetadata): string;
|
|
20
|
+
//# sourceMappingURL=skill-frontmatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-frontmatter.d.ts","sourceRoot":"","sources":["../../src/skills/skill-frontmatter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,sBAAsB,EAEtB,qBAAqB,EACrB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAiD1B;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,CA8CxE;AAuLD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,sBAAsB,GAClC,aAAa,GAAG,SAAS,CAyC3B;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,sBAAsB,GAClC,qBAAqB,CAKvB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,aAAa,GACvB,MAAM,CAER"}
|