qlogicagent 2.20.2 → 2.20.3

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.
Files changed (191) hide show
  1. package/dist/agent-contract.js +1 -1
  2. package/dist/agent.js +39 -35
  3. package/dist/cli.js +1 -1
  4. package/dist/host-contract.js +1 -1
  5. package/dist/host-session-collection-contract.js +1 -1
  6. package/dist/index.js +624 -549
  7. package/dist/memory-category-contract.js +1 -0
  8. package/dist/orchestration.js +1 -1
  9. package/dist/project-memory-host.js +21 -21
  10. package/dist/protocol.js +1 -1
  11. package/dist/skill-category-contract.js +1 -0
  12. package/dist/skills/builtin/web-research/SKILL.md +37 -0
  13. package/dist/skills/mcp/astraclaw-native-mcp-server.js +1 -1
  14. package/dist/tunables.js +1 -1
  15. package/dist/types/agent/memory-recall-context.d.ts +6 -9
  16. package/dist/types/agent/memory-recall-injection.d.ts +1 -6
  17. package/dist/types/agent/tool-loop/agent-argument-normalizer.d.ts +12 -0
  18. package/dist/types/agent/tool-loop/artifact-final-contract.d.ts +8 -0
  19. package/dist/types/agent/tool-loop.d.ts +5 -0
  20. package/dist/types/agent/types.d.ts +5 -0
  21. package/dist/types/cli/acp-extended-handlers.d.ts +11 -9
  22. package/dist/types/cli/acp-session-handlers.d.ts +1 -1
  23. package/dist/types/cli/acp-session-host.d.ts +8 -0
  24. package/dist/types/cli/agent-runtime-bootstrap.d.ts +7 -1
  25. package/dist/types/cli/agent-runtime-session-state.d.ts +23 -6
  26. package/dist/types/cli/atomic-text-file.d.ts +31 -0
  27. package/dist/types/cli/background-context-capsule.d.ts +12 -0
  28. package/dist/types/cli/base-tool-bootstrap.d.ts +1 -0
  29. package/dist/types/cli/cli-acp-request-handler.d.ts +3 -1
  30. package/dist/types/cli/community-workflow-installer.d.ts +1 -1
  31. package/dist/types/cli/core-tool-coordinator.d.ts +1 -0
  32. package/dist/types/cli/core-tools/agent-tool-service.d.ts +17 -1
  33. package/dist/types/cli/dev-tool-bootstrap.d.ts +3 -2
  34. package/dist/types/cli/dev-tools/dev-tool-bootstrap-service.d.ts +1 -0
  35. package/dist/types/cli/dev-tools/dev-tool-registry.d.ts +3 -1
  36. package/dist/types/cli/dev-tools/incremental-repo-map.d.ts +81 -0
  37. package/dist/types/cli/dev-tools/lsp-supervisor.d.ts +59 -0
  38. package/dist/types/cli/dev-tools/lsp-tool-service.d.ts +2 -0
  39. package/dist/types/cli/handlers/dream-handler.d.ts +1 -1
  40. package/dist/types/cli/handlers/memory-handler.d.ts +2 -14
  41. package/dist/types/cli/handlers/product-handler.d.ts +6 -24
  42. package/dist/types/cli/handlers/turn-handler.d.ts +1 -0
  43. package/dist/types/cli/idle-dream-coordinator.d.ts +9 -5
  44. package/dist/types/cli/memory-background-coordinator.d.ts +26 -0
  45. package/dist/types/cli/memory-candidate-service.d.ts +2 -3
  46. package/dist/types/cli/memory-coordinator.d.ts +12 -8
  47. package/dist/types/cli/permission-bootstrap.d.ts +10 -1
  48. package/dist/types/cli/product-acp-params.d.ts +29 -0
  49. package/dist/types/cli/resolved-agent-cache.d.ts +18 -7
  50. package/dist/types/cli/rpc-registry.d.ts +2 -1
  51. package/dist/types/cli/runtime-hook-bootstrap.d.ts +2 -0
  52. package/dist/types/cli/stdio-acp-request-host.d.ts +7 -4
  53. package/dist/types/cli/stdio-agent-session-bootstrap.d.ts +8 -2
  54. package/dist/types/cli/stdio-rpc-handler-hosts.d.ts +4 -2
  55. package/dist/types/cli/stdio-runtime-bootstrap.d.ts +1 -0
  56. package/dist/types/cli/stdio-server.d.ts +49 -16
  57. package/dist/types/cli/stdio-session-runtime-coordinator.d.ts +0 -2
  58. package/dist/types/cli/task-distillation-coordinator.d.ts +42 -14
  59. package/dist/types/cli/tool-bootstrap-core-registration.d.ts +14 -4
  60. package/dist/types/cli/tool-bootstrap.d.ts +2 -1
  61. package/dist/types/cli/turn-core.d.ts +4 -0
  62. package/dist/types/cli/turn-lifecycle.d.ts +1 -0
  63. package/dist/types/contracts/hooks.d.ts +3 -2
  64. package/dist/types/contracts/turn-event.d.ts +7 -0
  65. package/dist/types/host-contract/index.d.ts +111 -12
  66. package/dist/types/host-contract/memory-category.d.ts +8 -0
  67. package/dist/types/host-contract/skill-category.d.ts +5 -0
  68. package/dist/types/host-session-collection-contract.d.ts +1 -0
  69. package/dist/types/orchestration/agent-instance.d.ts +15 -0
  70. package/dist/types/orchestration/dag-scheduler.d.ts +18 -0
  71. package/dist/types/orchestration/delegate-approval-policy.d.ts +8 -0
  72. package/dist/types/orchestration/goal-acceptance.d.ts +2 -5
  73. package/dist/types/orchestration/goal-loop-coordinator.d.ts +4 -2
  74. package/dist/types/orchestration/goal-mode-adapters.d.ts +16 -0
  75. package/dist/types/orchestration/goal-run-types.d.ts +6 -1
  76. package/dist/types/orchestration/product-budget.d.ts +35 -16
  77. package/dist/types/orchestration/product-persistence.d.ts +5 -14
  78. package/dist/types/orchestration/product-planner.d.ts +38 -0
  79. package/dist/types/orchestration/product-worktree.d.ts +4 -2
  80. package/dist/types/orchestration/solo-evaluator.d.ts +42 -2
  81. package/dist/types/orchestration/solo-spec-builder.d.ts +3 -0
  82. package/dist/types/orchestration/testing/delegate-test-bridge.d.ts +6 -0
  83. package/dist/types/orchestration/testing/run-state-client-double.d.ts +13 -0
  84. package/dist/types/orchestration/workflow/builtin-capabilities.d.ts +3 -0
  85. package/dist/types/orchestration/workflow/capability-catalog.d.ts +31 -0
  86. package/dist/types/orchestration/workflow/cron-schedule.d.ts +3 -4
  87. package/dist/types/orchestration/workflow/expression.d.ts +2 -1
  88. package/dist/types/orchestration/workflow/n8n-import.d.ts +3 -0
  89. package/dist/types/orchestration/workflow/node-registry.d.ts +2 -2
  90. package/dist/types/orchestration/workflow/node-schema.d.ts +20 -4
  91. package/dist/types/orchestration/workflow/params-schema.d.ts +7 -6
  92. package/dist/types/orchestration/workflow/qla-executor-host.d.ts +4 -1
  93. package/dist/types/orchestration/workflow/run-history-store.d.ts +33 -3
  94. package/dist/types/orchestration/workflow/semantic-acceptance.d.ts +65 -0
  95. package/dist/types/orchestration/workflow/workflow-authoring.d.ts +74 -0
  96. package/dist/types/orchestration/workflow/workflow-bundle.d.ts +4 -0
  97. package/dist/types/orchestration/workflow/workflow-controller.d.ts +16 -4
  98. package/dist/types/orchestration/workflow/workflow-edit-context.d.ts +46 -0
  99. package/dist/types/orchestration/workflow/workflow-intent-contract.d.ts +56 -0
  100. package/dist/types/orchestration/workflow/workflow-patch.d.ts +7 -0
  101. package/dist/types/orchestration/workflow/workflow-runtime.d.ts +5 -0
  102. package/dist/types/orchestration/workflow/workflow-scheduler.d.ts +11 -0
  103. package/dist/types/orchestration/workflow/workflow-store.d.ts +5 -0
  104. package/dist/types/orchestration/workflow/workflow-template-setup.d.ts +65 -0
  105. package/dist/types/orchestration/workflow/workflow-trigger.d.ts +4 -0
  106. package/dist/types/orchestration/workflow-chat-builder.d.ts +105 -20
  107. package/dist/types/orchestration/worktree-task-prompt.d.ts +1 -0
  108. package/dist/types/protocol/agent-contract.d.ts +49 -8
  109. package/dist/types/protocol/notifications.d.ts +1 -1
  110. package/dist/types/protocol/wire/acp-agent-management.d.ts +97 -9
  111. package/dist/types/protocol/wire/acp-protocol.d.ts +7 -1
  112. package/dist/types/protocol/wire/agent-methods.d.ts +15 -1
  113. package/dist/types/protocol/wire/index.d.ts +2 -4
  114. package/dist/types/protocol/wire/memory-provider-lifecycle.d.ts +1 -39
  115. package/dist/types/protocol/wire/notification-payloads.d.ts +96 -1
  116. package/dist/types/protocol/wire/web-capability.d.ts +2 -2
  117. package/dist/types/runtime/config/tunable-defaults.d.ts +0 -6
  118. package/dist/types/runtime/execution/bounded-output-tail.d.ts +7 -0
  119. package/dist/types/runtime/execution/dream-agent.d.ts +8 -5
  120. package/dist/types/runtime/execution/dream-category-context.d.ts +3 -3
  121. package/dist/types/runtime/execution/structured-tool-progress.d.ts +21 -0
  122. package/dist/types/runtime/hooks/memory-hooks.d.ts +20 -8
  123. package/dist/types/runtime/infra/background-tasks.d.ts +5 -1
  124. package/dist/types/runtime/infra/subagent-turn-snapshot.d.ts +32 -0
  125. package/dist/types/runtime/infra/turn-telemetry-store.d.ts +22 -0
  126. package/dist/types/runtime/memory/implicit-extraction.d.ts +23 -7
  127. package/dist/types/runtime/ports/agent-runtime-ports.d.ts +0 -5
  128. package/dist/types/runtime/ports/index.d.ts +2 -3
  129. package/dist/types/runtime/ports/memory-provider.d.ts +31 -16
  130. package/dist/types/runtime/ports/memory-writer.d.ts +55 -6
  131. package/dist/types/runtime/ports/permission-contracts.d.ts +2 -0
  132. package/dist/types/runtime/ports/tool-contracts.d.ts +3 -1
  133. package/dist/types/runtime/prompt/identity-section.d.ts +2 -0
  134. package/dist/types/runtime/session/session-permission-store.d.ts +6 -0
  135. package/dist/types/runtime/tasks/task-types.d.ts +2 -0
  136. package/dist/types/skills/memory/host-memory-provider.d.ts +59 -9
  137. package/dist/types/skills/memory/memory-tool.d.ts +3 -1
  138. package/dist/types/skills/memory/task-distillation.d.ts +22 -3
  139. package/dist/types/skills/permissions/hook-runner.d.ts +8 -0
  140. package/dist/types/skills/permissions/operation-classifier.d.ts +7 -0
  141. package/dist/types/skills/skill-system/skill-category.d.ts +10 -0
  142. package/dist/types/skills/tools/agent-tool.d.ts +13 -21
  143. package/dist/types/skills/tools/edit-tool.d.ts +10 -2
  144. package/dist/types/skills/tools/exec-tool.d.ts +2 -2
  145. package/dist/types/skills/tools/file-text-snapshot.d.ts +24 -0
  146. package/dist/types/skills/tools/lsp-tool.d.ts +1 -1
  147. package/dist/types/skills/tools/patch-tool.d.ts +10 -3
  148. package/dist/types/skills/tools/read-tool.d.ts +23 -1
  149. package/dist/types/skills/tools/repo-map-tool.d.ts +52 -0
  150. package/dist/types/skills/tools/search-tool.d.ts +10 -1
  151. package/dist/types/skills/tools/shell/index.d.ts +1 -2
  152. package/dist/types/skills/tools/shell/shell-command.d.ts +1 -1
  153. package/dist/types/skills/tools/shell/shell-exec.d.ts +2 -2
  154. package/dist/types/skills/tools/shell/task-output.d.ts +12 -3
  155. package/dist/types/skills/tools/subagent-decision-tool.d.ts +15 -0
  156. package/dist/types/skills/tools/task-tool.d.ts +16 -2
  157. package/dist/types/skills/tools/write-tool.d.ts +2 -1
  158. package/dist/types/transport/acp-server.d.ts +1 -0
  159. package/dist/types/transport/host-run-state-client.d.ts +6 -0
  160. package/dist/types/workflow-host.d.ts +8 -1
  161. package/dist/workflow-host.js +9 -9
  162. package/package.json +25 -6
  163. package/dist/types/cli/tool-bootstrap-web-registration.d.ts +0 -14
  164. package/dist/types/orchestration/tool-cascade.d.ts +0 -49
  165. package/dist/types/protocol/wire/channel-ingress.d.ts +0 -29
  166. package/dist/types/protocol/wire/channel.d.ts +0 -89
  167. package/dist/types/runtime/infra/native-mcp-config-sync.d.ts +0 -16
  168. package/dist/types/runtime/memory/categories.d.ts +0 -5
  169. package/dist/types/runtime/memory/recall-category-filter.d.ts +0 -42
  170. package/dist/types/runtime/ports/source-provider.d.ts +0 -39
  171. package/dist/types/runtime/ports/web-search-contracts.d.ts +0 -21
  172. package/dist/types/server/search-svc.d.ts +0 -1
  173. package/dist/types/skills/memory/local-embedding.d.ts +0 -80
  174. package/dist/types/skills/memory/memory-config-resolver.d.ts +0 -4
  175. package/dist/types/skills/memory/memory-embedding-config.d.ts +0 -31
  176. package/dist/types/skills/tools/web-answer-tool.d.ts +0 -27
  177. package/dist/types/skills/tools/web-fetch-tool.d.ts +0 -80
  178. package/dist/types/skills/tools/web-research-tool.d.ts +0 -48
  179. package/dist/types/skills/tools/web-search-tool.d.ts +0 -46
  180. package/dist/types/skills/web-search/brave-source.d.ts +0 -3
  181. package/dist/types/skills/web-search/crawl4ai-extractor.d.ts +0 -16
  182. package/dist/types/skills/web-search/embedding-rerank.d.ts +0 -13
  183. package/dist/types/skills/web-search/exa-source.d.ts +0 -3
  184. package/dist/types/skills/web-search/multi-source-backend.d.ts +0 -23
  185. package/dist/types/skills/web-search/redis-source-cache.d.ts +0 -6
  186. package/dist/types/skills/web-search/search-svc-source.d.ts +0 -5
  187. package/dist/types/skills/web-search/searxng-source.d.ts +0 -4
  188. package/dist/types/skills/web-search/serper-source.d.ts +0 -3
  189. package/dist/types/skills/web-search/source-factory.d.ts +0 -6
  190. package/dist/types/skills/web-search/stability.d.ts +0 -26
  191. package/dist/types/skills/web-search/web-tunable-resolver.d.ts +0 -16
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qlogicagent",
3
- "version": "2.20.2",
3
+ "version": "2.20.3",
4
4
  "description": "XiaozhiClaw Agent CLI — subprocess architecture (JSON-RPC over stdio)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -52,6 +52,14 @@
52
52
  "types": "./dist/types/host-contract/index.d.ts",
53
53
  "default": "./dist/host-contract.js"
54
54
  },
55
+ "./memory-category-contract": {
56
+ "types": "./dist/types/host-contract/memory-category.d.ts",
57
+ "default": "./dist/memory-category-contract.js"
58
+ },
59
+ "./skill-category-contract": {
60
+ "types": "./dist/types/host-contract/skill-category.d.ts",
61
+ "default": "./dist/skill-category-contract.js"
62
+ },
55
63
  "./host-session-collection-contract": {
56
64
  "types": "./dist/types/host-session-collection-contract.d.ts",
57
65
  "default": "./dist/host-session-collection-contract.js"
@@ -99,6 +107,12 @@
99
107
  "host-contract": [
100
108
  "./dist/types/host-contract/index.d.ts"
101
109
  ],
110
+ "memory-category-contract": [
111
+ "./dist/types/host-contract/memory-category.d.ts"
112
+ ],
113
+ "skill-category-contract": [
114
+ "./dist/types/host-contract/skill-category.d.ts"
115
+ ],
102
116
  "host-session-collection-contract": [
103
117
  "./dist/types/host-session-collection-contract.d.ts"
104
118
  ],
@@ -111,12 +125,16 @@
111
125
  "dev": "tsx watch src/index.ts",
112
126
  "build": "node scripts/build.mjs",
113
127
  "build:tsc": "tsc --noCheck",
114
- "build:search-svc": "node scripts/build-search-svc.mjs",
115
128
  "start": "node dist/cli.js",
116
129
  "test": "vitest run",
117
130
  "test:slow": "vitest run --config vitest.release.config.ts",
118
131
  "test:release": "pnpm test && pnpm run test:slow",
119
132
  "test:replay": "vitest run benchmarks/transcript-replay",
133
+ "benchmark:multi-session-real": "tsx benchmarks/multi-session-real/runner.ts",
134
+ "benchmark:multi-session-live": "tsx benchmarks/multi-session-real/live-runner.ts",
135
+ "benchmark:multi-session-live:resume": "tsx benchmarks/multi-session-real/live-runner.ts --resume",
136
+ "benchmark:subagent-delegation-live": "tsx benchmarks/subagent-delegation/live-runner.ts",
137
+ "benchmark:workflow-authoring": "tsx benchmarks/workflow-authoring/runner.ts",
120
138
  "check": "node scripts/run-check.mjs",
121
139
  "test:watch": "vitest",
122
140
  "benchmark:hermes-superiority": "tsx benchmarks/hermes-superiority/runner.ts",
@@ -145,8 +163,8 @@
145
163
  "dependencies": {
146
164
  "@agentclientprotocol/sdk": "^0.25.0",
147
165
  "@napi-rs/canvas": "0.1.100",
148
- "@xiaozhiclaw/module-sdk": "0.2.1",
149
- "@xiaozhiclaw/provider-core": "^0.1.28",
166
+ "@xiaozhiclaw/module-sdk": "0.2.2",
167
+ "@xiaozhiclaw/provider-core": "^0.1.29",
150
168
  "better-sqlite3": "^12.10.0",
151
169
  "dotenv": "^17.3.1",
152
170
  "ioredis": "^5.11.1",
@@ -154,7 +172,9 @@
154
172
  "mcporter": "^0.12.0",
155
173
  "nanoid": "^5.1.5",
156
174
  "pino": "^9.6.0",
157
- "pino-pretty": "^13.0.0"
175
+ "pino-pretty": "^13.0.0",
176
+ "typescript": "^5.9.3",
177
+ "typescript-language-server": "5.3.0"
158
178
  },
159
179
  "devDependencies": {
160
180
  "@types/better-sqlite3": "^7.6.13",
@@ -163,7 +183,6 @@
163
183
  "javascript-obfuscator": "^5.4.3",
164
184
  "oxlint": "1.67.0",
165
185
  "tsx": "^4.19.0",
166
- "typescript": "^5.9.0",
167
186
  "vitest": "^3.1.0"
168
187
  }
169
188
  }
@@ -1,14 +0,0 @@
1
- import type { PortableTool } from "../skills/portable-tool.js";
2
- import type { ModelPurpose } from "../runtime/infra/model-registry.js";
3
- import type { LLMTransport } from "./provider-core-facade.js";
4
- export interface LocalWebToolRegistrationContext {
5
- tools: PortableTool<any>[];
6
- resolveClientForPurpose?(purpose: ModelPurpose): {
7
- transport: LLMTransport;
8
- apiKey: string;
9
- model: string;
10
- } | null;
11
- loadTunableOverrides?(): Promise<Record<string, unknown>>;
12
- }
13
- export declare const localWebToolRegistrationModule: import("../runtime/ports/tool-contracts.js").ToolRegistrationModule<LocalWebToolRegistrationContext>;
14
- export declare function registerLocalWebTools(context: LocalWebToolRegistrationContext): void;
@@ -1,49 +0,0 @@
1
- /**
2
- * Tool Cascade — provider-native tool augmentation layer.
3
- *
4
- * When a provider (e.g. Zhipu GLM) offers native utility APIs (web search, reader,
5
- * tokenizer, etc.), the tool cascade automatically routes through the provider API
6
- * first, falling back to the host-provided implementation (e.g. SearXNG) on failure.
7
- *
8
- * ## Architecture
9
- *
10
- * Two levels of provider tool integration:
11
- *
12
- * 1. **D-level (builtin tools)**: Injected directly into chat completion request
13
- * via `builtinWebSearch` / `builtinCodeInterpreter` / `builtinUrlContext` / `builtinMapsGrounding` / `builtinFileSearch` quirks.
14
- * The LLM decides to use these inline during generation — no agent intervention.
15
- * → Handled by openai-chat.ts (GLM/Kimi) and gemini-generatecontent.ts (Google) transport layers.
16
- *
17
- * 2. **C-level (independent APIs)**: Discrete API endpoints the agent calls explicitly
18
- * as tool steps (web_search, reader, tokenizer, moderations).
19
- * → Handled by this cascade layer — wraps host-provided tool deps with
20
- * provider-native backends, falling back on error.
21
- *
22
- * ## Usage
23
- *
24
- * ```ts
25
- * import { cascadeWebSearch } from "./tool-cascade.js";
26
- * const providerApi = host.resolveProviderToolApi();
27
- *
28
- * const providerApi = new ZhipuToolAPI({ baseUrl, apiKey });
29
- * const cascadedSearch = cascadeWebSearch(providerApi, fallbackSearchFn);
30
- * const tool = createWebSearchTool({ search: cascadedSearch });
31
- * ```
32
- */
33
- import type { WebSearchBackend } from "../runtime/ports/web-search-contracts.js";
34
- export interface ProviderToolApiPort {
35
- capabilities: readonly string[];
36
- webSearch?(query: string, options?: {
37
- maxResults?: number;
38
- }): Promise<Array<{
39
- title: string;
40
- url: string;
41
- snippet: string;
42
- }>>;
43
- }
44
- /**
45
- * Cascade web search: provider-native search → host fallback.
46
- * Returns a WebSearchToolDeps.search function that tries the provider's
47
- * webSearch API first, falling back to the host's search on error.
48
- */
49
- export declare function cascadeWebSearch(providerApi: ProviderToolApiPort | undefined, fallbackSearch: WebSearchBackend["search"]): WebSearchBackend["search"];
@@ -1,29 +0,0 @@
1
- export type GatewayChannelExecutionIngressSource = "channel-ingress";
2
- export type GatewayChannelExecutionEgressKind = "partial" | "final" | "approval" | "error" | "artifact" | "control";
3
- export interface GatewayChannelExecutionIngressBindingContract {
4
- requestId: string;
5
- gatewayTargetRef: string;
6
- channelRequestId: string;
7
- replyTargetRef: string;
8
- channelType: string;
9
- channelConversationId: string;
10
- channelUserId: string;
11
- dedupeKey: string;
12
- receivedAt: string;
13
- source: GatewayChannelExecutionIngressSource;
14
- }
15
- export interface GatewayChannelExecutionEgressContract {
16
- requestId: string;
17
- replyTargetRef: string;
18
- channelRequestId?: string;
19
- sessionId?: string;
20
- turnId?: string;
21
- executionId?: string;
22
- rootExecutionId?: string;
23
- parentExecutionId?: string;
24
- sidechainId?: string;
25
- attemptId?: string;
26
- envelopeKind: GatewayChannelExecutionEgressKind;
27
- emittedAt: string;
28
- terminal: boolean;
29
- }
@@ -1,89 +0,0 @@
1
- export type NormalizedChannelType = "telegram" | "slack" | "whatsapp" | "discord" | "wechat" | "custom";
2
- export type NormalizedChannelMessagePartType = "text" | "image" | "audio" | "video" | "file" | "location" | "event" | "custom";
3
- export type NormalizedChannelRetryBackoffPolicy = "fixed" | "exponential" | "provider-managed";
4
- export type NormalizedChannelIdempotencyScope = "reply-target" | "conversation" | "channel-request";
5
- export type NormalizedChannelDeliveryStatus = "pending" | "delivered" | "retrying" | "failed" | "expired" | "cancelled";
6
- export interface NormalizedChannelMessagePart {
7
- partType: NormalizedChannelMessagePartType;
8
- text?: string;
9
- mimeType?: string;
10
- assetRef?: string;
11
- sizeBytes?: number;
12
- data?: Record<string, unknown>;
13
- }
14
- export interface NormalizedChannelAttachment {
15
- attachmentId: string;
16
- mimeType?: string;
17
- filename?: string;
18
- downloadUrl?: string;
19
- assetRef?: string;
20
- sizeBytes?: number;
21
- }
22
- export interface NormalizedChannelExecutionHints {
23
- intent?: string;
24
- locale?: string;
25
- expectsReply?: boolean;
26
- data?: Record<string, unknown>;
27
- }
28
- export interface NormalizedChannelDeliveryPolicy {
29
- allowEdit?: boolean;
30
- allowReplyThread?: boolean;
31
- maxRetryCount?: number;
32
- retryBackoffPolicy?: NormalizedChannelRetryBackoffPolicy;
33
- idempotencyScope?: NormalizedChannelIdempotencyScope;
34
- }
35
- export interface NormalizedChannelInboundRequest {
36
- channelRequestId: string;
37
- channelType: NormalizedChannelType;
38
- channelTenantId?: string;
39
- channelConversationId: string;
40
- channelUserId: string;
41
- receivedAt: string;
42
- dedupeKey: string;
43
- gatewayTargetRef: string;
44
- replyTargetRef: string;
45
- messageParts: NormalizedChannelMessagePart[];
46
- attachments?: NormalizedChannelAttachment[];
47
- executionHints?: NormalizedChannelExecutionHints;
48
- }
49
- export interface NormalizedChannelReplyTarget {
50
- replyTargetRef: string;
51
- channelType: NormalizedChannelType;
52
- channelTenantId?: string;
53
- channelConversationId: string;
54
- channelMessageRef?: string;
55
- recipientRef: string;
56
- threadRef?: string;
57
- expiresAt?: string;
58
- deliveryPolicy?: NormalizedChannelDeliveryPolicy;
59
- data?: Record<string, unknown>;
60
- }
61
- export interface NormalizedChannelReplyRequest {
62
- deliveryAttemptId: string;
63
- replyTargetRef: string;
64
- channelType: NormalizedChannelType;
65
- channelTenantId?: string;
66
- channelConversationId: string;
67
- recipientRef: string;
68
- threadRef?: string;
69
- replyToMessageId: string;
70
- gatewayId: string;
71
- text?: string;
72
- mediaUrl?: string;
73
- mediaUrls?: string[];
74
- fileName?: string;
75
- mimeType?: string;
76
- data?: Record<string, unknown>;
77
- }
78
- export interface NormalizedChannelDeliveryOutcome {
79
- deliveryAttemptId: string;
80
- replyTargetRef: string;
81
- deliveryStatus: NormalizedChannelDeliveryStatus;
82
- providerMessageRef?: string;
83
- providerErrorCode?: string;
84
- providerErrorMessage?: string;
85
- attemptedAt: string;
86
- ackedAt?: string;
87
- retryCount: number;
88
- nextRetryAt?: string;
89
- }
@@ -1,16 +0,0 @@
1
- export type NativeMcpSyncStatus = "updated" | "unchanged" | "unsupported" | "skipped";
2
- export interface NativeMcpSyncInput {
3
- agentId: string;
4
- projectRoot: string;
5
- serverScriptPath: string;
6
- nodePath?: string;
7
- homeDir?: string;
8
- codexHome?: string;
9
- }
10
- export interface NativeMcpSyncResult {
11
- agentId: string;
12
- status: NativeMcpSyncStatus;
13
- configPath?: string;
14
- reason?: string;
15
- }
16
- export declare function syncAstraClawNativeMcpConfig(input: NativeMcpSyncInput): NativeMcpSyncResult;
@@ -1,5 +0,0 @@
1
- /**
2
- * Memory categories for QMemory writes.
3
- * Each has different value thresholds and retention policies.
4
- */
5
- export type QMemoryCategory = "lesson" | "preference" | "pattern" | "fact" | "decision" | "skill-learning";
@@ -1,42 +0,0 @@
1
- import type { QMemoryCategory } from "./categories.js";
2
- /** Detected query scenario with preferred categories. */
3
- export interface RecallCategoryHint {
4
- /** Detected scenario label. */
5
- scenario: QueryScenario;
6
- /** Preferred categories for this scenario (ordered by priority). */
7
- preferred: QMemoryCategory[];
8
- /** Categories to deprioritize (still recalled but scored lower). */
9
- deprioritized: QMemoryCategory[];
10
- /** Confidence of scenario detection (0.0-1.0). */
11
- confidence: number;
12
- }
13
- /** Known query scenarios. */
14
- export type QueryScenario = "coding" | "config" | "conversation" | "learning" | "decision" | "general";
15
- /**
16
- * Detect the query scenario and return category preferences.
17
- *
18
- * Uses pattern matching on the user query to infer intent.
19
- * Returns "general" (no filtering) when confidence is below threshold.
20
- *
21
- * @param query - User query text
22
- * @returns Category hint with preferred/deprioritized categories
23
- */
24
- export declare function detectRecallCategories(query: string): RecallCategoryHint;
25
- /**
26
- * Apply category boost/penalty to a recall score.
27
- *
28
- * Used by recall hooks to adjust memory scores based on category alignment.
29
- *
30
- * @param baseScore - Original relevance score (0.0-1.0)
31
- * @param memoryCategory - Category of the memory entry (if known)
32
- * @param hint - Category hint from detectRecallCategories()
33
- * @returns Adjusted score
34
- */
35
- export declare function applyCategoryBoost(baseScore: number, memoryCategory: string | undefined | null, hint: RecallCategoryHint): number;
36
- /**
37
- * Infer memory category from filename prefix convention.
38
- * E.g. "lesson-docker.md" → "lesson", "fact-ports.md" → "fact"
39
- *
40
- * Exported for use by recall hooks.
41
- */
42
- export declare function inferCategoryFromFilename(filename: string): QMemoryCategory | null;
@@ -1,39 +0,0 @@
1
- export interface RawHit {
2
- title: string;
3
- url: string;
4
- snippet: string;
5
- /** 由 L2 抓取回填(V0 不填) */
6
- content?: string;
7
- publishedAt?: string;
8
- /** source 自带排序分(neural source 用),L3 重排前的参考 */
9
- rawScore?: number;
10
- /** 命中的 SourceProvider.id */
11
- source: string;
12
- }
13
- export interface SourceCapabilities {
14
- /** 神经/语义召回(Exa=true,SearXNG=false) */
15
- semantic: boolean;
16
- /** 支持时效过滤 */
17
- freshness: boolean;
18
- /** 原生支持域名过滤(否则在聚合层兜底) */
19
- domainFilter: boolean;
20
- }
21
- export interface SourceQueryOptions {
22
- maxResults?: number;
23
- allowedDomains?: string[];
24
- blockedDomains?: string[];
25
- freshness?: "day" | "week" | "month" | "year" | "any";
26
- lang?: string;
27
- }
28
- export interface SourceProvider {
29
- readonly id: string;
30
- readonly kind: "serp" | "neural" | "provider-native" | "mcp";
31
- readonly capabilities: SourceCapabilities;
32
- /**
33
- * 只负责"召回原始链接+snippet"。
34
- * 必须接收并尊重 signal —— 取消/硬超时由聚合层经 AbortSignal 强制透传。
35
- */
36
- search(query: string, opts: SourceQueryOptions, signal: AbortSignal): Promise<RawHit[]>;
37
- /** 可选主动健康检查(熔断器冷却后探活) */
38
- health?(signal: AbortSignal): Promise<boolean>;
39
- }
@@ -1,21 +0,0 @@
1
- export interface WebSearchResult {
2
- title: string;
3
- url: string;
4
- snippet: string;
5
- }
6
- export interface WebSearchOutput {
7
- query: string;
8
- results: WebSearchResult[];
9
- totalResults?: number;
10
- }
11
- export interface WebSearchBackend {
12
- search(query: string, options?: {
13
- allowedDomains?: string[];
14
- blockedDomains?: string[];
15
- maxResults?: number;
16
- /** 时效过滤(§4.2):day/week/month/year;源不支持时由其忽略 */
17
- freshness?: "day" | "week" | "month" | "year" | "any";
18
- /** 检索语言(如 "zh"/"en");源不支持时由其忽略 */
19
- lang?: string;
20
- }): Promise<WebSearchOutput>;
21
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,80 +0,0 @@
1
- /**
2
- * Local Embedding — Pluggable embedding interface for local memory.
3
- *
4
- * Provides a unified interface for text → vector embedding.
5
- * If no API config is provided, memory search falls back to FTS-only.
6
- */
7
- export interface EmbeddingProvider {
8
- readonly dimensions: number;
9
- readonly model: string;
10
- embed(text: string): Promise<Float32Array>;
11
- embedBatch(texts: string[]): Promise<Float32Array[]>;
12
- }
13
- export interface EmbeddingApiConfig {
14
- /** OpenAI-compatible embedding API base URL */
15
- baseUrl: string;
16
- /** API key */
17
- apiKey: string;
18
- /** Model name (e.g. "text-embedding-3-small") */
19
- model: string;
20
- /** Expected dimensions (default: 1536 for text-embedding-3-small) */
21
- dimensions?: number;
22
- /** Request timeout in ms (default: 10000) */
23
- timeoutMs?: number;
24
- /**
25
- * Provider-specific API format.
26
- * - "openai": Standard /v1/embeddings with input:string[] → data[].embedding (default)
27
- * - "minimax": /v1/embeddings with texts:string[] → vectors[]
28
- * - "volcengine": /v1/embeddings/multimodal with input:[{type,text}] → data.embedding
29
- */
30
- format?: "openai" | "minimax" | "volcengine";
31
- }
32
- export declare class NullEmbeddingProvider implements EmbeddingProvider {
33
- readonly dimensions = 0;
34
- readonly model = "none";
35
- embed(_text: string): Promise<Float32Array>;
36
- embedBatch(_texts: string[]): Promise<Float32Array[]>;
37
- }
38
- export declare class ApiEmbeddingProvider implements EmbeddingProvider {
39
- readonly dimensions: number;
40
- readonly model: string;
41
- private baseUrl;
42
- private apiKey;
43
- private timeoutMs;
44
- private format;
45
- constructor(config: EmbeddingApiConfig);
46
- embed(text: string): Promise<Float32Array>;
47
- embedBatch(texts: string[]): Promise<Float32Array[]>;
48
- private buildRequest;
49
- private parseResponse;
50
- }
51
- export interface LocalEmbeddingConfig {
52
- api?: EmbeddingApiConfig;
53
- }
54
- /**
55
- * Create an embedding provider based on configuration.
56
- *
57
- * Resolution order:
58
- * 1. API config → ApiEmbeddingProvider
59
- * 2. No API config → NullEmbeddingProvider (FTS-only)
60
- */
61
- export declare function createEmbeddingProvider(config?: LocalEmbeddingConfig): EmbeddingProvider;
62
- /**
63
- * Known provider → format mapping.
64
- * Used only for the explicit ModelRegistry embedding binding.
65
- */
66
- export declare const PROVIDER_EMBEDDING_REGISTRY: Record<string, {
67
- format: "openai" | "minimax" | "volcengine";
68
- baseUrl: string;
69
- defaultModel: string;
70
- defaultDimensions: number;
71
- }>;
72
- /**
73
- * Resolve EmbeddingApiConfig from a known provider name + API key.
74
- * Returns null if the provider has no known embedding endpoint.
75
- */
76
- export declare function resolveProviderEmbeddingConfig(provider: string, apiKey: string, overrides?: {
77
- model?: string;
78
- baseUrl?: string;
79
- dimensions?: number;
80
- }): EmbeddingApiConfig | null;
@@ -1,4 +0,0 @@
1
- import { type MemoryProviderFactoryConfig } from "./memory-embedding-config.js";
2
- export type { MemoryProviderFactoryConfig } from "./memory-embedding-config.js";
3
- /** Resolve embedding configuration without constructing or opening a local memories.db provider. */
4
- export declare function resolveMemoryConfigFromEnv(): MemoryProviderFactoryConfig;
@@ -1,31 +0,0 @@
1
- import type { ConfigPort, PathService } from "../../runtime/ports/index.js";
2
- import type { LocalEmbeddingConfig } from "./local-embedding.js";
3
- export interface MemoryProviderFactoryConfig {
4
- /** Active owner profile. All local memory files are physically scoped here. */
5
- ownerUserId: string;
6
- /** User ID prefix. */
7
- userIdPrefix?: string;
8
- /** Embedding config for local provider. */
9
- embedding?: LocalEmbeddingConfig;
10
- }
11
- export interface MemoryEmbeddingModelBinding {
12
- provider: string;
13
- apiKey: string;
14
- model: string;
15
- baseUrl?: string;
16
- keyHandle: {
17
- release(result: {
18
- success: boolean;
19
- }): void;
20
- };
21
- }
22
- export interface MemoryEmbeddingModelRegistry {
23
- getActiveModel(purpose: "embedding"): MemoryEmbeddingModelBinding | null;
24
- }
25
- export interface MemoryConfigResolutionDeps {
26
- config: ConfigPort;
27
- pathService: PathService;
28
- modelRegistry: MemoryEmbeddingModelRegistry;
29
- }
30
- export declare function resolveMemoryProviderConfig(deps: MemoryConfigResolutionDeps): MemoryProviderFactoryConfig;
31
- export type { LocalEmbeddingConfig };
@@ -1,27 +0,0 @@
1
- import type { PortableTool } from "../portable-tool.js";
2
- import type { WebSearchBackend } from "../../runtime/ports/web-search-contracts.js";
3
- import type { WebFetchToolDeps } from "./web-fetch-tool.js";
4
- export declare const WEB_ANSWER_TOOL_NAME: "web_answer";
5
- export interface WebAnswerToolParams {
6
- query: string;
7
- }
8
- export declare const WEB_ANSWER_TOOL_SCHEMA: {
9
- readonly type: "object";
10
- readonly properties: {
11
- readonly query: {
12
- readonly type: "string";
13
- readonly description: "The question to answer using live web search. Be specific and concise.";
14
- };
15
- };
16
- readonly required: readonly ["query"];
17
- };
18
- export interface WebAnswerToolDeps {
19
- search: WebSearchBackend["search"];
20
- fetchUrl: WebFetchToolDeps["fetchUrl"];
21
- /**
22
- * host 用指定档位 LLM 生成文本(内部 resolveClientForPurpose + transport.stream 累加)。
23
- * 无可用模型时返回 null —— 工具据此 fail-loud 降级,不静默编造。
24
- */
25
- generate(purpose: "smallModel" | "textGeneration", prompt: string, signal: AbortSignal): Promise<string | null>;
26
- }
27
- export declare function createWebAnswerTool(deps: WebAnswerToolDeps): PortableTool<WebAnswerToolParams>;
@@ -1,80 +0,0 @@
1
- import type { PortableTool } from "../portable-tool.js";
2
- export declare const WEB_FETCH_TOOL_NAME: "web_fetch";
3
- export interface WebFetchToolParams {
4
- url: string;
5
- extractMode?: "markdown" | "text" | "json";
6
- maxChars?: number;
7
- query?: string;
8
- extract?: boolean;
9
- summarize?: boolean;
10
- }
11
- export declare const WEB_FETCH_TOOL_SCHEMA: {
12
- readonly type: "object";
13
- readonly properties: {
14
- readonly url: {
15
- readonly type: "string";
16
- readonly description: "HTTP or HTTPS URL to fetch.";
17
- };
18
- readonly extractMode: {
19
- readonly type: "string";
20
- readonly enum: readonly ["markdown", "text", "json"];
21
- readonly description: "Extraction mode: \"markdown\" (default), \"text\", or \"json\" (LLM-driven structured extraction).";
22
- };
23
- readonly maxChars: {
24
- readonly type: "number";
25
- readonly description: "Maximum characters to return (truncates when exceeded).";
26
- readonly minimum: 100;
27
- };
28
- readonly query: {
29
- readonly type: "string";
30
- readonly description: "Original search query. When provided, returns the most query-relevant sections.";
31
- };
32
- readonly extract: {
33
- readonly type: "boolean";
34
- readonly description: "When true, returns structured extraction (title, summary, key facts, entities, topics, sentiment).";
35
- };
36
- readonly summarize: {
37
- readonly type: "boolean";
38
- readonly description: string;
39
- };
40
- };
41
- readonly required: readonly ["url"];
42
- };
43
- export interface WebFetchResult {
44
- content: string;
45
- title?: string;
46
- relevantExcerpts?: string[];
47
- summary?: string;
48
- extraction?: {
49
- title?: string;
50
- summary?: string;
51
- keyFacts?: string[];
52
- entities?: string[];
53
- topics?: string[];
54
- sentiment?: string;
55
- };
56
- }
57
- /** Deps injected by the host runtime for web fetching. */
58
- export interface WebFetchToolDeps {
59
- /**
60
- * Fetch a URL and extract content.
61
- * The host handles user-agent rotation, anti-block,
62
- * JS rendering, caching, and content extraction.
63
- */
64
- fetchUrl(params: {
65
- url: string;
66
- extractMode?: "markdown" | "text" | "json";
67
- maxChars?: number;
68
- query?: string;
69
- extract?: boolean;
70
- /** 调用方取消信号(§15-1):用户中断后抓取必须随之中止,不再烧带宽/时间 */
71
- signal?: AbortSignal;
72
- }): Promise<WebFetchResult>;
73
- /**
74
- * Optional: summarize long content using a small/cheap model.
75
- * When provided and summarize=true is requested, called after fetchUrl.
76
- * Should return a concise summary (< 500 chars) preserving key information.
77
- */
78
- summarizeContent?(content: string, query?: string): Promise<string>;
79
- }
80
- export declare function createWebFetchTool(deps: WebFetchToolDeps): PortableTool<WebFetchToolParams>;