@zhin.js/agent 0.1.20 → 0.1.22

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 (143) hide show
  1. package/README.md +37 -23
  2. package/lib/agent-prompt/format.d.ts +6 -0
  3. package/lib/agent-prompt/format.d.ts.map +1 -0
  4. package/lib/agent-prompt/format.js +40 -0
  5. package/lib/agent-prompt/format.js.map +1 -0
  6. package/lib/agent-prompt/index.d.ts +5 -0
  7. package/lib/agent-prompt/index.d.ts.map +1 -0
  8. package/lib/agent-prompt/index.js +4 -0
  9. package/lib/agent-prompt/index.js.map +1 -0
  10. package/lib/agent-prompt/registry.d.ts +7 -0
  11. package/lib/agent-prompt/registry.d.ts.map +1 -0
  12. package/lib/agent-prompt/registry.js +23 -0
  13. package/lib/agent-prompt/registry.js.map +1 -0
  14. package/lib/agent-prompt/resolver.d.ts +12 -0
  15. package/lib/agent-prompt/resolver.d.ts.map +1 -0
  16. package/lib/agent-prompt/resolver.js +71 -0
  17. package/lib/agent-prompt/resolver.js.map +1 -0
  18. package/lib/builtin/run-deferred-task-tool.d.ts +20 -0
  19. package/lib/builtin/run-deferred-task-tool.d.ts.map +1 -0
  20. package/lib/builtin/run-deferred-task-tool.js +39 -0
  21. package/lib/builtin/run-deferred-task-tool.js.map +1 -0
  22. package/lib/builtin/tool-search-tool.d.ts +19 -0
  23. package/lib/builtin/tool-search-tool.d.ts.map +1 -0
  24. package/lib/builtin/tool-search-tool.js +54 -0
  25. package/lib/builtin/tool-search-tool.js.map +1 -0
  26. package/lib/builtin-tools.d.ts +1 -1
  27. package/lib/builtin-tools.d.ts.map +1 -1
  28. package/lib/builtin-tools.js +1 -5
  29. package/lib/builtin-tools.js.map +1 -1
  30. package/lib/cron-engine.d.ts.map +1 -1
  31. package/lib/cron-engine.js +3 -3
  32. package/lib/cron-engine.js.map +1 -1
  33. package/lib/deferred-worker-runner.d.ts +30 -0
  34. package/lib/deferred-worker-runner.d.ts.map +1 -0
  35. package/lib/deferred-worker-runner.js +159 -0
  36. package/lib/deferred-worker-runner.js.map +1 -0
  37. package/lib/deferred-worker-tool-load.d.ts +6 -0
  38. package/lib/deferred-worker-tool-load.d.ts.map +1 -0
  39. package/lib/deferred-worker-tool-load.js +5 -0
  40. package/lib/deferred-worker-tool-load.js.map +1 -0
  41. package/lib/hooks.d.ts +13 -0
  42. package/lib/hooks.d.ts.map +1 -1
  43. package/lib/hooks.js.map +1 -1
  44. package/lib/index.d.ts +3 -3
  45. package/lib/index.d.ts.map +1 -1
  46. package/lib/index.js +2 -3
  47. package/lib/index.js.map +1 -1
  48. package/lib/init/create-zhin-agent.d.ts.map +1 -1
  49. package/lib/init/create-zhin-agent.js +9 -7
  50. package/lib/init/create-zhin-agent.js.map +1 -1
  51. package/lib/init/register-ai-service.d.ts.map +1 -1
  52. package/lib/init/register-ai-service.js +5 -5
  53. package/lib/init/register-ai-service.js.map +1 -1
  54. package/lib/init/register-ai-trigger.d.ts.map +1 -1
  55. package/lib/init/register-ai-trigger.js +25 -9
  56. package/lib/init/register-ai-trigger.js.map +1 -1
  57. package/lib/init/register-builtin-tools.d.ts.map +1 -1
  58. package/lib/init/register-builtin-tools.js +33 -29
  59. package/lib/init/register-builtin-tools.js.map +1 -1
  60. package/lib/init/register-mcp-from-config.d.ts +2 -0
  61. package/lib/init/register-mcp-from-config.d.ts.map +1 -0
  62. package/lib/init/register-mcp-from-config.js +85 -0
  63. package/lib/init/register-mcp-from-config.js.map +1 -0
  64. package/lib/init/register-mcp-memory-default.d.ts +2 -0
  65. package/lib/init/register-mcp-memory-default.d.ts.map +1 -0
  66. package/lib/init/register-mcp-memory-default.js +34 -0
  67. package/lib/init/register-mcp-memory-default.js.map +1 -0
  68. package/lib/init.d.ts.map +1 -1
  69. package/lib/init.js +4 -0
  70. package/lib/init.js.map +1 -1
  71. package/lib/mcp-client/index.d.ts +1 -2
  72. package/lib/mcp-client/index.d.ts.map +1 -1
  73. package/lib/mcp-client/index.js +1 -2
  74. package/lib/mcp-client/index.js.map +1 -1
  75. package/lib/orchestrator/mcp-lifecycle.d.ts +6 -0
  76. package/lib/orchestrator/mcp-lifecycle.d.ts.map +1 -0
  77. package/lib/orchestrator/mcp-lifecycle.js +7 -0
  78. package/lib/orchestrator/mcp-lifecycle.js.map +1 -0
  79. package/lib/orchestrator/mcp-registry.d.ts +5 -1
  80. package/lib/orchestrator/mcp-registry.d.ts.map +1 -1
  81. package/lib/orchestrator/mcp-registry.js +36 -20
  82. package/lib/orchestrator/mcp-registry.js.map +1 -1
  83. package/lib/orchestrator/owner-confirm-orchestration.d.ts +4 -1
  84. package/lib/orchestrator/owner-confirm-orchestration.d.ts.map +1 -1
  85. package/lib/orchestrator/owner-confirm-orchestration.js.map +1 -1
  86. package/lib/orchestrator/tool-selection.d.ts +2 -0
  87. package/lib/orchestrator/tool-selection.d.ts.map +1 -1
  88. package/lib/orchestrator/tool-selection.js +40 -4
  89. package/lib/orchestrator/tool-selection.js.map +1 -1
  90. package/lib/reserved-tools.js +2 -2
  91. package/lib/reserved-tools.js.map +1 -1
  92. package/lib/security/bash-tool-context.d.ts +17 -2
  93. package/lib/security/bash-tool-context.d.ts.map +1 -1
  94. package/lib/security/bash-tool-context.js +9 -3
  95. package/lib/security/bash-tool-context.js.map +1 -1
  96. package/lib/security/exec-policy.d.ts.map +1 -1
  97. package/lib/security/exec-policy.js +4 -1
  98. package/lib/security/exec-policy.js.map +1 -1
  99. package/lib/subagent.d.ts +7 -1
  100. package/lib/subagent.d.ts.map +1 -1
  101. package/lib/subagent.js +22 -8
  102. package/lib/subagent.js.map +1 -1
  103. package/lib/utils/config-env.d.ts +5 -0
  104. package/lib/utils/config-env.d.ts.map +1 -0
  105. package/lib/utils/config-env.js +34 -0
  106. package/lib/utils/config-env.js.map +1 -0
  107. package/lib/zhin-agent/config.d.ts +23 -0
  108. package/lib/zhin-agent/config.d.ts.map +1 -1
  109. package/lib/zhin-agent/config.js +20 -0
  110. package/lib/zhin-agent/config.js.map +1 -1
  111. package/lib/zhin-agent/index.d.ts +21 -0
  112. package/lib/zhin-agent/index.d.ts.map +1 -1
  113. package/lib/zhin-agent/index.js +257 -35
  114. package/lib/zhin-agent/index.js.map +1 -1
  115. package/lib/zhin-agent/prompt.d.ts +6 -0
  116. package/lib/zhin-agent/prompt.d.ts.map +1 -1
  117. package/lib/zhin-agent/prompt.js +70 -15
  118. package/lib/zhin-agent/prompt.js.map +1 -1
  119. package/lib/zhin-agent/tool-catalog.d.ts +15 -0
  120. package/lib/zhin-agent/tool-catalog.d.ts.map +1 -0
  121. package/lib/zhin-agent/tool-catalog.js +52 -0
  122. package/lib/zhin-agent/tool-catalog.js.map +1 -0
  123. package/lib/zhin-agent/tool-runtime.d.ts +3 -1
  124. package/lib/zhin-agent/tool-runtime.d.ts.map +1 -1
  125. package/lib/zhin-agent/tool-runtime.js +14 -0
  126. package/lib/zhin-agent/tool-runtime.js.map +1 -1
  127. package/lib/zhin-agent/tool-search-orchestrator.d.ts +23 -0
  128. package/lib/zhin-agent/tool-search-orchestrator.d.ts.map +1 -0
  129. package/lib/zhin-agent/tool-search-orchestrator.js +86 -0
  130. package/lib/zhin-agent/tool-search-orchestrator.js.map +1 -0
  131. package/lib/zhin-agent/turn-metrics.d.ts +20 -0
  132. package/lib/zhin-agent/turn-metrics.d.ts.map +1 -0
  133. package/lib/zhin-agent/turn-metrics.js +28 -0
  134. package/lib/zhin-agent/turn-metrics.js.map +1 -0
  135. package/package.json +14 -4
  136. package/lib/builtin/read-memory-tool.d.ts +0 -14
  137. package/lib/builtin/read-memory-tool.d.ts.map +0 -1
  138. package/lib/builtin/read-memory-tool.js +0 -49
  139. package/lib/builtin/read-memory-tool.js.map +0 -1
  140. package/lib/builtin/write-memory-tool.d.ts +0 -14
  141. package/lib/builtin/write-memory-tool.d.ts.map +0 -1
  142. package/lib/builtin/write-memory-tool.js +0 -50
  143. package/lib/builtin/write-memory-tool.js.map +0 -1
@@ -0,0 +1,20 @@
1
+ import type { Usage } from '@zhin.js/ai';
2
+ export type ZhinAgentTurnPath = 'chat' | 'fast' | 'agent' | 'multimodal' | 'rate_limited';
3
+ export interface ZhinAgentTurnMetrics {
4
+ /** 主 agent + 本轮 spawn 的子 agent 合计 */
5
+ usage: Usage;
6
+ /** 仅主 agent(无子 agent 时与 usage 相同) */
7
+ mainUsage?: Usage;
8
+ /** 本轮 spawn 的子 agent 合计 */
9
+ subagentUsage?: Usage;
10
+ path: ZhinAgentTurnPath;
11
+ iterations?: number;
12
+ model?: string;
13
+ }
14
+ export declare function addUsage(target: Usage, source?: Usage): void;
15
+ export declare const EMPTY_USAGE: Usage;
16
+ /** AI Handler 层统一汇总日志(紧凑 key-value) */
17
+ export declare function formatAiHandlerCompleteLog(metrics: ZhinAgentTurnMetrics, totalMs: number): string;
18
+ /** @deprecated 使用 formatCompactUsage from @zhin.js/logger */
19
+ export declare function formatZhinAgentTurnUsage(usage: Usage, subagentUsage?: Usage): string;
20
+ //# sourceMappingURL=turn-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-metrics.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/turn-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,cAAc,CAAC;AAE1F,MAAM,WAAW,oBAAoB;IACnC,qCAAqC;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,qCAAqC;IACrC,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,2BAA2B;IAC3B,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,CAK5D;AAED,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAEF,uCAAuC;AACvC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQjG;AAED,6DAA6D;AAC7D,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAEpF"}
@@ -0,0 +1,28 @@
1
+ import { formatCompactLog, formatCompactUsage } from '@zhin.js/logger';
2
+ export function addUsage(target, source) {
3
+ if (!source)
4
+ return;
5
+ target.prompt_tokens += source.prompt_tokens;
6
+ target.completion_tokens += source.completion_tokens;
7
+ target.total_tokens += source.total_tokens;
8
+ }
9
+ export const EMPTY_USAGE = {
10
+ prompt_tokens: 0,
11
+ completion_tokens: 0,
12
+ total_tokens: 0,
13
+ };
14
+ /** AI Handler 层统一汇总日志(紧凑 key-value) */
15
+ export function formatAiHandlerCompleteLog(metrics, totalMs) {
16
+ return formatCompactLog('AI Handler', {
17
+ total_ms: Math.round(totalMs),
18
+ usage: formatCompactUsage(metrics.usage, metrics.subagentUsage),
19
+ mode: metrics.path,
20
+ iter: metrics.iterations,
21
+ model: metrics.model,
22
+ });
23
+ }
24
+ /** @deprecated 使用 formatCompactUsage from @zhin.js/logger */
25
+ export function formatZhinAgentTurnUsage(usage, subagentUsage) {
26
+ return formatCompactUsage(usage, subagentUsage);
27
+ }
28
+ //# sourceMappingURL=turn-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-metrics.js","sourceRoot":"","sources":["../../src/zhin-agent/turn-metrics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAgBvE,MAAM,UAAU,QAAQ,CAAC,MAAa,EAAE,MAAc;IACpD,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC;IAC7C,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,CAAC;IACrD,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,aAAa,EAAE,CAAC;IAChB,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC;CAChB,CAAC;AAEF,uCAAuC;AACvC,MAAM,UAAU,0BAA0B,CAAC,OAA6B,EAAE,OAAe;IACvF,OAAO,gBAAgB,CAAC,YAAY,EAAE;QACpC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC7B,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC;QAC/D,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,UAAU;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;AACL,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,wBAAwB,CAAC,KAAY,EAAE,aAAqB;IAC1E,OAAO,kBAAkB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/agent",
3
- "version": "0.1.20",
3
+ "version": "0.1.22",
4
4
  "description": "Zhin AI Agent — session, ZhinAgent, init; composes @zhin.js/core providers and tools",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -18,13 +18,23 @@
18
18
  "dependencies": {
19
19
  "he": "^1.2.0",
20
20
  "js-yaml": "^4.1.0",
21
- "@zhin.js/ai": "1.1.20",
22
- "@zhin.js/core": "1.1.22"
21
+ "@zhin.js/ai": "1.1.22",
22
+ "@zhin.js/core": "1.1.24",
23
+ "@zhin.js/logger": "0.1.64"
24
+ },
25
+ "peerDependencies": {
26
+ "@modelcontextprotocol/sdk": "^1.29.0"
27
+ },
28
+ "peerDependenciesMeta": {
29
+ "@modelcontextprotocol/sdk": {
30
+ "optional": true
31
+ }
23
32
  },
24
33
  "devDependencies": {
34
+ "@modelcontextprotocol/sdk": "^1.29.0",
25
35
  "@types/he": "^1.2.3",
26
36
  "@types/js-yaml": "^4.0.9",
27
- "@types/node": "^25.7.0",
37
+ "@types/node": "^25.8.0",
28
38
  "rimraf": "^6.0.0",
29
39
  "typescript": "^6.0.3"
30
40
  },
@@ -1,14 +0,0 @@
1
- import type { Tool, ToolContext, ToolParametersSchema, ToolResult } from '@zhin.js/core';
2
- import { BuiltinBaseTool } from './builtin-base-tool.js';
3
- export declare const READ_MEMORY_PARAMETERS: ToolParametersSchema;
4
- export declare class ReadMemoryBuiltinTool extends BuiltinBaseTool {
5
- private readonly dataDir;
6
- readonly name = "read_memory";
7
- readonly description = "\u8BFB\u53D6\u6301\u4E45\u5316\u8BB0\u5FC6\uFF08AGENTS.md\uFF09\u3002\u8BB0\u5FC6\u8DE8\u4F1A\u8BDD\u4FDD\u6301\u3002scope: global\uFF08\u5171\u4EAB\uFF09\u6216 chat\uFF08\u6309\u804A\u5929\u9694\u79BB\uFF09";
8
- readonly parameters: ToolParametersSchema<Record<string, any>>;
9
- readonly kind = "memory";
10
- constructor(dataDir: string);
11
- run(args: Record<string, unknown>, _context?: ToolContext): Promise<ToolResult>;
12
- }
13
- export declare function createReadMemoryTool(dataDir: string): Tool;
14
- //# sourceMappingURL=read-memory-tool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read-memory-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/read-memory-tool.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEzF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,eAAO,MAAM,sBAAsB,EAAE,oBAWpC,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,eAAe;IAO5C,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,qNAC0C;IAC9D,QAAQ,CAAC,UAAU,4CAA0B;IAC7C,QAAQ,CAAC,IAAI,YAAY;gBAEI,OAAO,EAAE,MAAM;IAMtC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CAWtF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1D"}
@@ -1,49 +0,0 @@
1
- /**
2
- * read_memory — 读取持久化记忆(AGENTS.md)
3
- */
4
- import * as fs from 'node:fs';
5
- import * as path from 'node:path';
6
- import { errMsg } from '../discovery/utils.js';
7
- import { BuiltinBaseTool } from './builtin-base-tool.js';
8
- export const READ_MEMORY_PARAMETERS = {
9
- type: 'object',
10
- properties: {
11
- scope: {
12
- type: 'string',
13
- description: "'global' 或 'chat'(默认 chat)",
14
- enum: ['global', 'chat'],
15
- },
16
- chat_id: { type: 'string', description: '聊天 ID(chat scope 时使用)' },
17
- },
18
- required: ['scope'],
19
- };
20
- export class ReadMemoryBuiltinTool extends BuiltinBaseTool {
21
- dataDir;
22
- name = 'read_memory';
23
- description = '读取持久化记忆(AGENTS.md)。记忆跨会话保持。scope: global(共享)或 chat(按聊天隔离)';
24
- parameters = READ_MEMORY_PARAMETERS;
25
- kind = 'memory';
26
- constructor(dataDir) {
27
- super();
28
- this.dataDir = dataDir;
29
- this.tags.push('memory', 'agents');
30
- this.keywords.push('记忆', '记住', '回忆', '之前', '上次', 'memory');
31
- }
32
- async run(args, _context) {
33
- try {
34
- const memPath = args.scope === 'global'
35
- ? path.join(this.dataDir, 'AGENTS.md')
36
- : path.join(this.dataDir, 'groups', args.chat_id || 'default', 'AGENTS.md');
37
- if (!fs.existsSync(memPath))
38
- return 'No memory stored yet.';
39
- return await fs.promises.readFile(memPath, 'utf-8');
40
- }
41
- catch (e) {
42
- return `Error: ${errMsg(e)}`;
43
- }
44
- }
45
- }
46
- export function createReadMemoryTool(dataDir) {
47
- return new ReadMemoryBuiltinTool(dataDir).toTool();
48
- }
49
- //# sourceMappingURL=read-memory-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read-memory-tool.js","sourceRoot":"","sources":["../../src/builtin/read-memory-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,sBAAsB,GAAyB;IAC1D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,4BAA4B;YACzC,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;SACzB;QACD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;KAClE;IACD,QAAQ,EAAE,CAAC,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IAO3B;IANpB,IAAI,GAAG,aAAa,CAAC;IACrB,WAAW,GAClB,2DAA2D,CAAC;IACrD,UAAU,GAAG,sBAAsB,CAAC;IACpC,IAAI,GAAG,QAAQ,CAAC;IAEzB,YAA6B,OAAe;QAC1C,KAAK,EAAE,CAAC;QADmB,YAAO,GAAP,OAAO,CAAQ;QAE1C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAA6B,EAAE,QAAsB;QAC7D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,QAAQ;gBACrC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;gBACtC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAG,IAAI,CAAC,OAAkB,IAAI,SAAS,EAAE,WAAW,CAAC,CAAC;YAC1F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO,uBAAuB,CAAC;YAC5D,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,OAAO,UAAU,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;AACrD,CAAC"}
@@ -1,14 +0,0 @@
1
- import type { Tool, ToolContext, ToolParametersSchema, ToolResult } from '@zhin.js/core';
2
- import { BuiltinBaseTool } from './builtin-base-tool.js';
3
- export declare const WRITE_MEMORY_PARAMETERS: ToolParametersSchema;
4
- export declare class WriteMemoryBuiltinTool extends BuiltinBaseTool {
5
- private readonly dataDir;
6
- readonly name = "write_memory";
7
- readonly description = "\u5199\u5165\u6301\u4E45\u5316\u8BB0\u5FC6\u3002\u5F53\u7528\u6237\u8BF4\"\u8BB0\u4F4F\u2026\"\u3001\"\u8BB0\u5F55\u2026\"\u65F6\u4F7F\u7528\u6B64\u5DE5\u5177";
8
- readonly parameters: ToolParametersSchema<Record<string, any>>;
9
- readonly kind = "memory";
10
- constructor(dataDir: string);
11
- run(args: Record<string, unknown>, _context?: ToolContext): Promise<ToolResult>;
12
- }
13
- export declare function createWriteMemoryTool(dataDir: string): Tool;
14
- //# sourceMappingURL=write-memory-tool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-memory-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/write-memory-tool.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEzF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,eAAO,MAAM,uBAAuB,EAAE,oBAYrC,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,eAAe;IAM7C,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,WAAW,oKAAmC;IACvD,QAAQ,CAAC,UAAU,4CAA2B;IAC9C,QAAQ,CAAC,IAAI,YAAY;gBAEI,OAAO,EAAE,MAAM;IAMtC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CAYtF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3D"}
@@ -1,50 +0,0 @@
1
- /**
2
- * write_memory — 写入持久化记忆(AGENTS.md)
3
- */
4
- import * as fs from 'node:fs/promises';
5
- import * as path from 'node:path';
6
- import { errMsg } from '../discovery/utils.js';
7
- import { BuiltinBaseTool } from './builtin-base-tool.js';
8
- export const WRITE_MEMORY_PARAMETERS = {
9
- type: 'object',
10
- properties: {
11
- content: { type: 'string', description: '要保存的记忆内容(Markdown)' },
12
- scope: {
13
- type: 'string',
14
- description: "'global' 或 'chat'(默认 chat)",
15
- enum: ['global', 'chat'],
16
- },
17
- chat_id: { type: 'string', description: '聊天 ID' },
18
- },
19
- required: ['content'],
20
- };
21
- export class WriteMemoryBuiltinTool extends BuiltinBaseTool {
22
- dataDir;
23
- name = 'write_memory';
24
- description = '写入持久化记忆。当用户说"记住…"、"记录…"时使用此工具';
25
- parameters = WRITE_MEMORY_PARAMETERS;
26
- kind = 'memory';
27
- constructor(dataDir) {
28
- super();
29
- this.dataDir = dataDir;
30
- this.tags.push('memory', 'agents');
31
- this.keywords.push('记住', '保存', 'remember', '记录');
32
- }
33
- async run(args, _context) {
34
- try {
35
- const memPath = args.scope === 'global'
36
- ? path.join(this.dataDir, 'AGENTS.md')
37
- : path.join(this.dataDir, 'groups', args.chat_id || 'default', 'AGENTS.md');
38
- await fs.mkdir(path.dirname(memPath), { recursive: true });
39
- await fs.writeFile(memPath, String(args.content), 'utf-8');
40
- return `✅ Memory saved (${args.scope || 'chat'} scope)`;
41
- }
42
- catch (e) {
43
- return `Error: ${errMsg(e)}`;
44
- }
45
- }
46
- }
47
- export function createWriteMemoryTool(dataDir) {
48
- return new WriteMemoryBuiltinTool(dataDir).toTool();
49
- }
50
- //# sourceMappingURL=write-memory-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-memory-tool.js","sourceRoot":"","sources":["../../src/builtin/write-memory-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,uBAAuB,GAAyB;IAC3D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;QAC9D,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,4BAA4B;YACzC,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;SACzB;QACD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;KAClD;IACD,QAAQ,EAAE,CAAC,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,OAAO,sBAAuB,SAAQ,eAAe;IAM5B;IALpB,IAAI,GAAG,cAAc,CAAC;IACtB,WAAW,GAAG,+BAA+B,CAAC;IAC9C,UAAU,GAAG,uBAAuB,CAAC;IACrC,IAAI,GAAG,QAAQ,CAAC;IAEzB,YAA6B,OAAe;QAC1C,KAAK,EAAE,CAAC;QADmB,YAAO,GAAP,OAAO,CAAQ;QAE1C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAA6B,EAAE,QAAsB;QAC7D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,QAAQ;gBACrC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;gBACtC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAG,IAAI,CAAC,OAAkB,IAAI,SAAS,EAAE,WAAW,CAAC,CAAC;YAC1F,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3D,OAAO,mBAAoB,IAAI,CAAC,KAAgB,IAAI,MAAM,SAAS,CAAC;QACtE,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,OAAO,UAAU,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;AACtD,CAAC"}