@migor/agentia 0.4.0 → 0.4.2
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 +2 -2
- package/dist/AGENTS.md +39 -21
- package/dist/core/abort.d.ts +7 -0
- package/dist/core/abort.js +28 -2
- package/dist/core/abort.js.map +1 -1
- package/dist/core/schema.js +5 -3
- package/dist/core/schema.js.map +1 -1
- package/dist/core/tool.d.ts +9 -0
- package/dist/engine/loop.d.ts +9 -0
- package/dist/engine/loop.js +95 -23
- package/dist/engine/loop.js.map +1 -1
- package/dist/engine/policy.js +5 -0
- package/dist/engine/policy.js.map +1 -1
- package/dist/engine/spec.d.ts +1 -0
- package/dist/engine/spec.js.map +1 -1
- package/dist/engine/tracer.js +13 -1
- package/dist/engine/tracer.js.map +1 -1
- package/dist/engine/trimming.d.ts +7 -2
- package/dist/engine/trimming.js +20 -6
- package/dist/engine/trimming.js.map +1 -1
- package/dist/engine/types.d.ts +17 -5
- package/dist/engine/usage.d.ts +3 -3
- package/dist/engine/usage.js +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/integrations/mcp.js +9 -1
- package/dist/integrations/mcp.js.map +1 -1
- package/dist/integrations/metrics.d.ts +8 -2
- package/dist/integrations/metrics.js +120 -46
- package/dist/integrations/metrics.js.map +1 -1
- package/dist/integrations/openai.js +14 -1
- package/dist/integrations/openai.js.map +1 -1
- package/dist/integrations/otlp.d.ts +7 -0
- package/dist/integrations/otlp.js +5 -2
- package/dist/integrations/otlp.js.map +1 -1
- package/dist/runtime/run.d.ts +7 -3
- package/dist/runtime/run.js +4 -0
- package/dist/runtime/run.js.map +1 -1
- package/dist/runtime/session.d.ts +5 -0
- package/dist/runtime/session.js.map +1 -1
- package/dist/store/fsStore.d.ts +2 -1
- package/dist/store/fsStore.js +12 -5
- package/dist/store/fsStore.js.map +1 -1
- package/dist/store/redisStore.d.ts +41 -5
- package/dist/store/redisStore.js +37 -6
- package/dist/store/redisStore.js.map +1 -1
- package/dist/toolkit/asset.d.ts +5 -0
- package/dist/toolkit/asset.js +8 -0
- package/dist/toolkit/asset.js.map +1 -1
- package/dist/toolkit/collect.d.ts +6 -0
- package/dist/toolkit/collect.js +29 -4
- package/dist/toolkit/collect.js.map +1 -1
- package/dist/toolkit/discover.js +24 -7
- package/dist/toolkit/discover.js.map +1 -1
- package/dist/toolkit/env.js +5 -0
- package/dist/toolkit/env.js.map +1 -1
- package/dist/toolkit/module.d.ts +3 -1
- package/dist/toolkit/module.js +8 -1
- package/dist/toolkit/module.js.map +1 -1
- package/dist/toolkit/prompt.d.ts +1 -1
- package/dist/toolkit/prompt.js +19 -12
- package/dist/toolkit/prompt.js.map +1 -1
- package/dist/toolkit/skill.js +3 -0
- package/dist/toolkit/skill.js.map +1 -1
- package/dist/toolkit/subagent.js +3 -0
- package/dist/toolkit/subagent.js.map +1 -1
- package/dist/transport/async.d.ts +2 -1
- package/dist/transport/async.js +19 -9
- package/dist/transport/async.js.map +1 -1
- package/dist/transport/http.d.ts +4 -4
- package/dist/transport/http.js +15 -2
- package/dist/transport/http.js.map +1 -1
- package/dist/transport/scheduler.js +13 -1
- package/dist/transport/scheduler.js.map +1 -1
- package/package.json +3 -2
package/dist/store/fsStore.d.ts
CHANGED
|
@@ -38,7 +38,8 @@ export declare class FileTaskStore implements TaskStore {
|
|
|
38
38
|
*
|
|
39
39
|
* append-only 的 JSONL 每 save 一次就追加一行,**容量随 save 次数线性增长**(构造期
|
|
40
40
|
* load 也全量读回)——长期运行的宿主迟早要压。本方法是 TaskStore 接口之外的能力,
|
|
41
|
-
* 由宿主按需周期性调用(如低频 cron
|
|
41
|
+
* 由宿主按需周期性调用(如低频 cron);压实经临时文件 + rename 原子替换(写崩了
|
|
42
|
+
* 旧文件也完整),内存态不受影响。
|
|
42
43
|
*/
|
|
43
44
|
compact(): void;
|
|
44
45
|
}
|
package/dist/store/fsStore.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { appendFileSync, existsSync, mkdirSync, readFileSync, rmSync, truncateSync, writeFileSync, } from 'node:fs';
|
|
1
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, truncateSync, writeFileSync, } from 'node:fs';
|
|
2
2
|
import { dirname } from 'node:path';
|
|
3
3
|
/**
|
|
4
4
|
* Agentia —— 文件宿主 TaskStore(spec §6.6:异步耐久 = 换宿主不换语义)。
|
|
@@ -21,6 +21,9 @@ export class FileTaskStore {
|
|
|
21
21
|
byKey = new Map(); // idempotencyKey → taskId
|
|
22
22
|
constructor(file) {
|
|
23
23
|
this.file = file;
|
|
24
|
+
// 目录在构造期建一次(原在每次 append 时 mkdirSync recursive —— save 是高频路径,
|
|
25
|
+
// 每次都做一次递归 mkdir 是无谓的系统调用)
|
|
26
|
+
mkdirSync(dirname(this.file), { recursive: true });
|
|
24
27
|
this.load();
|
|
25
28
|
}
|
|
26
29
|
load() {
|
|
@@ -80,7 +83,6 @@ export class FileTaskStore {
|
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
85
|
append(rec) {
|
|
83
|
-
mkdirSync(dirname(this.file), { recursive: true });
|
|
84
86
|
writeFileSync(this.file, `${JSON.stringify(rec)}\n`, { flag: 'a' });
|
|
85
87
|
}
|
|
86
88
|
save(rec) {
|
|
@@ -110,12 +112,17 @@ export class FileTaskStore {
|
|
|
110
112
|
*
|
|
111
113
|
* append-only 的 JSONL 每 save 一次就追加一行,**容量随 save 次数线性增长**(构造期
|
|
112
114
|
* load 也全量读回)——长期运行的宿主迟早要压。本方法是 TaskStore 接口之外的能力,
|
|
113
|
-
* 由宿主按需周期性调用(如低频 cron
|
|
115
|
+
* 由宿主按需周期性调用(如低频 cron);压实经临时文件 + rename 原子替换(写崩了
|
|
116
|
+
* 旧文件也完整),内存态不受影响。
|
|
114
117
|
*/
|
|
115
118
|
compact() {
|
|
116
|
-
mkdirSync(dirname(this.file), { recursive: true });
|
|
117
119
|
const body = [...this.byTask.values()].map((r) => `${JSON.stringify(r)}\n`).join('');
|
|
118
|
-
writeFileSync
|
|
120
|
+
// 原子重写:先写临时文件再 rename。直接 writeFileSync 截断重写,中途被杀会留下
|
|
121
|
+
// 半截文件、丢掉全部记录;同目录 rename 是原子的,旧文件在新文件就位前保持完整。
|
|
122
|
+
// 临时文件名固定(单写者前提,见头注释)—— 上次被杀留下的残临时文件会被本次覆写。
|
|
123
|
+
const tmp = `${this.file}.compact.tmp`;
|
|
124
|
+
writeFileSync(tmp, body);
|
|
125
|
+
renameSync(tmp, this.file);
|
|
119
126
|
}
|
|
120
127
|
}
|
|
121
128
|
//# sourceMappingURL=fsStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fsStore.js","sourceRoot":"","sources":["../../src/store/fsStore.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,UAAU,EACV,SAAS,EACT,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,aAAa;IAIK,IAAI;IAHhB,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IACvC,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,0BAA0B;IAE9E,YAA6B,IAAY;oBAAZ,IAAI;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEO,IAAI;QACV,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QACnC,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,qBAAqB;QAC/B,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;gBAC3C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;oBAAE,SAAS;gBACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACjC,IAAI,GAAG,CAAC,cAAc;oBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACzE,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,QAAQ,CAAC,GAAW;QAC1B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO;QACvC,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB;QAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsB,CAAC;YAClD,QAAQ,GAAG,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QACD,IAAI,CAAC;YACH,IAAI,QAAQ;gBACV,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc;;gBAC5C,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7E,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,GAAe;QAC5B,
|
|
1
|
+
{"version":3,"file":"fsStore.js","sourceRoot":"","sources":["../../src/store/fsStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import type { TaskRecord, TaskStore } from './store.js';
|
|
|
9
9
|
* 存储模型(prefix 缺省 'agentia:'):
|
|
10
10
|
* - `${prefix}task:<taskId>` → 整行记录 JSON(save = SET 覆写,last-wins);
|
|
11
11
|
* - `${prefix}idem:<idempotencyKey>` → taskId(同键重提覆写,byIdempotency last-wins)。
|
|
12
|
-
* 两者都按 `ttlSeconds
|
|
12
|
+
* 两者都按 `ttlSeconds`(若设)过期(SET 覆写 + EXPIRE 刷新窗口),见该选项。
|
|
13
13
|
*
|
|
14
14
|
* 语义对照 FileTaskStore / SqliteTaskStore:save 覆写、byIdempotency 取最近、
|
|
15
15
|
* clear 清空本前缀全部 key。差异在 list 序:Redis 本身无序,按 createdAt
|
|
@@ -23,15 +23,33 @@ import type { TaskRecord, TaskStore } from './store.js';
|
|
|
23
23
|
* await 后再 SET idem 索引」的写入顺序(见 async.ts #execute 注释)——若改为
|
|
24
24
|
* 先写索引或 MULTI 事务,需同步复核该去重路径。
|
|
25
25
|
*/
|
|
26
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated 本 store 已不再使用它。历史:这是「对象形态 SET 选项」,对象形态是
|
|
28
|
+
* node-redis 独有(ioredis 会把对象字符串化成 "[object Object]" 发给服务端,报语法错);
|
|
29
|
+
* 0.4.1 曾改用「位置参数形态」想当两家客户端的交集,**但那是错的** —— node-redis 的
|
|
30
|
+
* SET 只声明 `(key, value, options)` 三个形参,多出来的位置参数被 JS **静默丢弃**,
|
|
31
|
+
* TTL 会无声失效(见 `RedisLike.expire`)。保留导出仅为不破坏既有公共面。
|
|
32
|
+
*/
|
|
27
33
|
export interface RedisSetOptions {
|
|
28
34
|
/** 过期秒数(EX);<= 0 视为不过期 */
|
|
29
35
|
EX?: number;
|
|
30
36
|
}
|
|
31
37
|
export interface RedisLike {
|
|
32
38
|
get(key: string): Promise<string | null>;
|
|
33
|
-
/**
|
|
34
|
-
|
|
39
|
+
/**
|
|
40
|
+
* 覆写一个键。**只传两参** —— 这是 ioredis 与 node-redis 唯一无歧义的公共形态:
|
|
41
|
+
* 尾参的「选项形状」两家相反(ioredis 认位置参数 `('EX', n)`、node-redis 认对象
|
|
42
|
+
* `{ EX: n }`),取任何一种写法都会在另一家上静默失效或报语法错。
|
|
43
|
+
* 所以 **TTL 不走这里**,改由 `expire` 单独施加(见 `RedisTaskStore`)。
|
|
44
|
+
* 另:显式补一个 undefined 尾参会让 ioredis 发出 `SET k v ""` → 语法错。
|
|
45
|
+
*/
|
|
46
|
+
set(key: string, value: string): Promise<unknown>;
|
|
47
|
+
/**
|
|
48
|
+
* 设置过期秒数 —— ioredis / node-redis **同名同形**的公共面(`expire(key, seconds)`)。
|
|
49
|
+
* `RedisTaskStore` 的 `ttlSeconds > 0` 时**必需**:构造期校验,缺失即抛错(静默丢掉
|
|
50
|
+
* TTL 会让键永不过期、`list()` 无界增长,比启动期报错难查得多)。
|
|
51
|
+
*/
|
|
52
|
+
expire?(key: string, seconds: number): Promise<unknown>;
|
|
35
53
|
/** 单键删除(ioredis / node-redis 的公共最小面;批量清理由多次单删组成) */
|
|
36
54
|
del(key: string): Promise<unknown>;
|
|
37
55
|
/** 模式枚举(node-redis / ioredis 均有);与 scanIterator 至少提供其一 */
|
|
@@ -60,11 +78,29 @@ export interface RedisTaskStoreOptions {
|
|
|
60
78
|
export declare class RedisTaskStore implements TaskStore {
|
|
61
79
|
private readonly client;
|
|
62
80
|
private readonly prefix;
|
|
63
|
-
|
|
81
|
+
/**
|
|
82
|
+
* TTL 施加函数(`ttlSeconds > 0` 时构造期已确保存在)。TTL 不走 `SET` 的尾参 ——
|
|
83
|
+
* 两家客户端的尾参形状相反,取任何一种都会在另一家上失败(详见 `RedisLike.set`)。
|
|
84
|
+
*/
|
|
85
|
+
private readonly applyTtl?;
|
|
64
86
|
constructor(client: RedisLike, opts?: RedisTaskStoreOptions);
|
|
65
87
|
private taskKey;
|
|
66
88
|
private idemKey;
|
|
67
89
|
save(rec: TaskRecord): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* 写一次(`SET` 覆写 + 设了 `ttlSeconds` 时 `EXPIRE` 刷新窗口)。
|
|
92
|
+
*
|
|
93
|
+
* **为什么 TTL 不走 `SET ... EX`**:两家客户端的尾参形状**相反** —— ioredis 认位置参数
|
|
94
|
+
* `('EX', n)`(给对象会被字符串化成 "[object Object]"、服务端报语法错),而 node-redis
|
|
95
|
+
* 的 SET 只声明 `(key, value, options)` **三个形参**,位置参数被 JS **静默丢弃**
|
|
96
|
+
* (v4.7.1 / v6.2.1 实跑其命令定义确认:`transformArguments('k','v','EX',60)` →
|
|
97
|
+
* `['SET','k','v']`)。`expire(key, seconds)` 是两家**同名同形**的公共面,没有歧义。
|
|
98
|
+
*
|
|
99
|
+
* 代价(如实记):`SET` 与 `EXPIRE` 两条命令、**非原子** —— 两步之间进程被杀会留下一个
|
|
100
|
+
* **没有 TTL 的键**(多活一条本该到期的记录),不会损坏数据。TTL 只是查询窗口,用这个
|
|
101
|
+
* 窗口换「两家客户端都真的生效」,是本 store 有意的取舍(见 spec §10)。
|
|
102
|
+
*/
|
|
103
|
+
private write;
|
|
68
104
|
get(taskId: string): Promise<TaskRecord | undefined>;
|
|
69
105
|
byIdempotency(key: string): Promise<TaskRecord | undefined>;
|
|
70
106
|
list(): Promise<TaskRecord[]>;
|
package/dist/store/redisStore.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
export class RedisTaskStore {
|
|
2
2
|
client;
|
|
3
3
|
prefix;
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* TTL 施加函数(`ttlSeconds > 0` 时构造期已确保存在)。TTL 不走 `SET` 的尾参 ——
|
|
6
|
+
* 两家客户端的尾参形状相反,取任何一种都会在另一家上失败(详见 `RedisLike.set`)。
|
|
7
|
+
*/
|
|
8
|
+
applyTtl;
|
|
5
9
|
constructor(client, opts = {}) {
|
|
6
10
|
this.client = client;
|
|
7
11
|
if (!client.scanIterator && !client.keys) {
|
|
@@ -18,7 +22,15 @@ export class RedisTaskStore {
|
|
|
18
22
|
// !(ttl >= 0) 同时拦 NaN —— NaN 会让 `ttl > 0` 恒假,静默把 TTL 关掉
|
|
19
23
|
throw new Error(`RedisTaskStore 的 ttlSeconds 必须为 ≥ 0 的数(0 = 不设 TTL),收到 ${opts.ttlSeconds}`);
|
|
20
24
|
}
|
|
21
|
-
|
|
25
|
+
if (ttl > 0) {
|
|
26
|
+
const expire = client.expire;
|
|
27
|
+
if (typeof expire !== 'function') {
|
|
28
|
+
// 静默失效比启动期报错难查得多:键永不过期,list() 无界增长,且没有任何信号
|
|
29
|
+
throw new Error('RedisTaskStore 设了 ttlSeconds > 0,但 client 没有 expire(key, seconds) —— ' +
|
|
30
|
+
'TTL 会静默失效(键永不过期)。请用 ioredis / node-redis 客户端,或补一个 expire 实现。');
|
|
31
|
+
}
|
|
32
|
+
this.applyTtl = (key) => expire.call(client, key, ttl);
|
|
33
|
+
}
|
|
22
34
|
}
|
|
23
35
|
taskKey(taskId) {
|
|
24
36
|
return `${this.prefix}task:${taskId}`;
|
|
@@ -27,13 +39,32 @@ export class RedisTaskStore {
|
|
|
27
39
|
return `${this.prefix}idem:${key}`;
|
|
28
40
|
}
|
|
29
41
|
async save(rec) {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
42
|
+
const json = JSON.stringify(rec);
|
|
43
|
+
// 写入顺序是 load-bearing(AsyncRunner 的延迟幂等去重依赖它):先记录、后幂等索引
|
|
44
|
+
await this.write(this.taskKey(rec.taskId), json);
|
|
33
45
|
if (rec.idempotencyKey) {
|
|
34
|
-
await this.
|
|
46
|
+
await this.write(this.idemKey(rec.idempotencyKey), rec.taskId);
|
|
35
47
|
}
|
|
36
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* 写一次(`SET` 覆写 + 设了 `ttlSeconds` 时 `EXPIRE` 刷新窗口)。
|
|
51
|
+
*
|
|
52
|
+
* **为什么 TTL 不走 `SET ... EX`**:两家客户端的尾参形状**相反** —— ioredis 认位置参数
|
|
53
|
+
* `('EX', n)`(给对象会被字符串化成 "[object Object]"、服务端报语法错),而 node-redis
|
|
54
|
+
* 的 SET 只声明 `(key, value, options)` **三个形参**,位置参数被 JS **静默丢弃**
|
|
55
|
+
* (v4.7.1 / v6.2.1 实跑其命令定义确认:`transformArguments('k','v','EX',60)` →
|
|
56
|
+
* `['SET','k','v']`)。`expire(key, seconds)` 是两家**同名同形**的公共面,没有歧义。
|
|
57
|
+
*
|
|
58
|
+
* 代价(如实记):`SET` 与 `EXPIRE` 两条命令、**非原子** —— 两步之间进程被杀会留下一个
|
|
59
|
+
* **没有 TTL 的键**(多活一条本该到期的记录),不会损坏数据。TTL 只是查询窗口,用这个
|
|
60
|
+
* 窗口换「两家客户端都真的生效」,是本 store 有意的取舍(见 spec §10)。
|
|
61
|
+
*/
|
|
62
|
+
async write(key, value) {
|
|
63
|
+
await this.client.set(key, value);
|
|
64
|
+
// 每次覆写都刷新 TTL:任务的查询窗口从「最后一次状态推进」起算,而不是创建时刻
|
|
65
|
+
if (this.applyTtl)
|
|
66
|
+
await this.applyTtl(key);
|
|
67
|
+
}
|
|
37
68
|
async get(taskId) {
|
|
38
69
|
return parseRecord(await this.client.get(this.taskKey(taskId)));
|
|
39
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redisStore.js","sourceRoot":"","sources":["../../src/store/redisStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"redisStore.js","sourceRoot":"","sources":["../../src/store/redisStore.ts"],"names":[],"mappings":"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"}
|
package/dist/toolkit/asset.d.ts
CHANGED
|
@@ -19,5 +19,10 @@
|
|
|
19
19
|
*
|
|
20
20
|
* @param base 调用方模块的 import.meta.url(相对它解析 rel)
|
|
21
21
|
* @param rel 相对资产路径('./system.md')
|
|
22
|
+
*
|
|
23
|
+
* 边界口径:rel 是**开发者字面量**而非外部输入,`../` 越出能力目录**有意放行**
|
|
24
|
+
*(共享资产如 `../../shared/common.md` 是合法用法,框架不替作者设防);
|
|
25
|
+
* 但带 scheme 的「相对路径」(`file:` / `https:` …)会让 `new URL(rel, base)` 整个
|
|
26
|
+
* 忽略 base —— 「以为读了能力目录里的文件,实际读了别处」,这种静默错位显式拒绝。
|
|
22
27
|
*/
|
|
23
28
|
export declare function asset(base: string | URL, rel: string): string;
|
package/dist/toolkit/asset.js
CHANGED
|
@@ -20,8 +20,16 @@ import { readFileSync } from 'node:fs';
|
|
|
20
20
|
*
|
|
21
21
|
* @param base 调用方模块的 import.meta.url(相对它解析 rel)
|
|
22
22
|
* @param rel 相对资产路径('./system.md')
|
|
23
|
+
*
|
|
24
|
+
* 边界口径:rel 是**开发者字面量**而非外部输入,`../` 越出能力目录**有意放行**
|
|
25
|
+
*(共享资产如 `../../shared/common.md` 是合法用法,框架不替作者设防);
|
|
26
|
+
* 但带 scheme 的「相对路径」(`file:` / `https:` …)会让 `new URL(rel, base)` 整个
|
|
27
|
+
* 忽略 base —— 「以为读了能力目录里的文件,实际读了别处」,这种静默错位显式拒绝。
|
|
23
28
|
*/
|
|
24
29
|
export function asset(base, rel) {
|
|
30
|
+
if (/^[A-Za-z][A-Za-z0-9+.-]*:/.test(rel)) {
|
|
31
|
+
throw new Error(`asset() 的 rel 必须是相对路径(如 './system.md'),收到带 scheme 的 "${rel}" —— 它会让 base 被整个忽略`);
|
|
32
|
+
}
|
|
25
33
|
return readFileSync(new URL(rel, base), 'utf8');
|
|
26
34
|
}
|
|
27
35
|
//# sourceMappingURL=asset.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/toolkit/asset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC
|
|
1
|
+
{"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/toolkit/asset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,KAAK,CAAC,IAAkB,EAAE,GAAW;IACnD,IAAI,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,wDAAwD,GAAG,qBAAqB,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -10,6 +10,12 @@ export interface DecoratedMethod<S> {
|
|
|
10
10
|
key: string | symbol;
|
|
11
11
|
spec: S;
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* 能力收集的对象守卫:useValue: null/undefined/原始值 是类型上合法的 provider
|
|
15
|
+
*(容器本身支持 undefined 值),它们不可能挂装饰器能力 —— 收集侧直接给空结果,
|
|
16
|
+
* 不放任 `Object.getPrototypeOf(null)` 抛无上下文 TypeError。
|
|
17
|
+
*/
|
|
18
|
+
export declare function isScannableInstance(instance: unknown): instance is object;
|
|
13
19
|
/**
|
|
14
20
|
* 沿实例原型链扫描被装饰的方法(子类 → 父类)。
|
|
15
21
|
* override 语义:只在命中装饰器时标记 key —— 子类未装饰的 override 不挡
|
package/dist/toolkit/collect.js
CHANGED
|
@@ -5,12 +5,22 @@
|
|
|
5
5
|
* 各自的 WeakMap;收集器在容器实例解析后沿原型链扫描出被装饰的方法。
|
|
6
6
|
* 本模块是这一扫描的唯一实现,四个 collect* 只做各自能力形态的组装。
|
|
7
7
|
*/
|
|
8
|
+
/**
|
|
9
|
+
* 能力收集的对象守卫:useValue: null/undefined/原始值 是类型上合法的 provider
|
|
10
|
+
*(容器本身支持 undefined 值),它们不可能挂装饰器能力 —— 收集侧直接给空结果,
|
|
11
|
+
* 不放任 `Object.getPrototypeOf(null)` 抛无上下文 TypeError。
|
|
12
|
+
*/
|
|
13
|
+
export function isScannableInstance(instance) {
|
|
14
|
+
return (typeof instance === 'object' && instance !== null) || typeof instance === 'function';
|
|
15
|
+
}
|
|
8
16
|
/**
|
|
9
17
|
* 沿实例原型链扫描被装饰的方法(子类 → 父类)。
|
|
10
18
|
* override 语义:只在命中装饰器时标记 key —— 子类未装饰的 override 不挡
|
|
11
19
|
* 父类的 spec(spec 沿原型链继承,调用仍走实例上的子类实现)。
|
|
12
20
|
*/
|
|
13
21
|
export function scanDecoratedMethods(instance, registry) {
|
|
22
|
+
if (!isScannableInstance(instance))
|
|
23
|
+
return [];
|
|
14
24
|
const found = [];
|
|
15
25
|
const seen = new Set();
|
|
16
26
|
let proto = Object.getPrototypeOf(instance);
|
|
@@ -47,13 +57,28 @@ export function assertMethodTarget(context, kind) {
|
|
|
47
57
|
throw new Error(`${kind} 不支持私有方法(#method):收集用 Reflect.ownKeys,私有名不可见`);
|
|
48
58
|
}
|
|
49
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* 能力名合法性:与 MCP 桥(integrations/mcp.ts)同口径 `^[A-Za-z0-9_-]{1,64}$`。
|
|
62
|
+
* 非法名(引号/空格/点/中文/超 64 字符)会让模型 API 直接 400 —— 装配期拦下,
|
|
63
|
+
* 比「首次模型调用才暴露」好查得多;也让装饰器侧与 MCP 侧的错误口径一致。
|
|
64
|
+
*/
|
|
65
|
+
const CAPABILITY_NAME_RE = /^[A-Za-z0-9_-]{1,64}$/;
|
|
50
66
|
/** 能力名解析:spec.name 缺省取方法名;私有符号方法名必须显式给 name。 */
|
|
51
67
|
export function capabilityName(spec, key, kind) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
68
|
+
let name;
|
|
69
|
+
if (typeof spec.name === 'string') {
|
|
70
|
+
name = spec.name;
|
|
71
|
+
}
|
|
72
|
+
else if (typeof key === 'string') {
|
|
73
|
+
name = key;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
55
76
|
throw new Error(`${kind} 需要显式 name(方法名为私有符号 ${String(key)})`);
|
|
56
77
|
}
|
|
57
|
-
|
|
78
|
+
if (!CAPABILITY_NAME_RE.test(name)) {
|
|
79
|
+
throw new Error(`${kind} 能力名 ${JSON.stringify(name)} 非法:须匹配 ^[A-Za-z0-9_-]{1,64}$` +
|
|
80
|
+
'(与 MCP 桥同口径;含引号/空格/点/中文或超 64 字符的名字会让模型 API 400)');
|
|
81
|
+
}
|
|
82
|
+
return name;
|
|
58
83
|
}
|
|
59
84
|
//# sourceMappingURL=collect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect.js","sourceRoot":"","sources":["../../src/toolkit/collect.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,QAA8B;IAE9B,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;IAExC,IAAI,KAAK,GAAkB,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3D,OAAO,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3C,oDAAoD;QACpD,0CAA0C;QAC1C,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU;gBAAE,SAAS;YACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAiB,CAAC,CAAC;YAClD,IAAI,CAAC,IAAI;gBAAE,SAAS,CAAC,qCAAqC;YAC1D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAmC,EAAE,IAAY;IAClF,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oBAAoB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,8CAA8C,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,cAAc,CAC5B,IAAuB,EACvB,GAAoB,EACpB,IAAY;IAEZ,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;
|
|
1
|
+
{"version":3,"file":"collect.js","sourceRoot":"","sources":["../../src/toolkit/collect.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAiB;IACnD,OAAO,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,OAAO,QAAQ,KAAK,UAAU,CAAC;AAC/F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,QAA8B;IAE9B,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;IAExC,IAAI,KAAK,GAAkB,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3D,OAAO,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3C,oDAAoD;QACpD,0CAA0C;QAC1C,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU;gBAAE,SAAS;YACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAiB,CAAC,CAAC;YAClD,IAAI,CAAC,IAAI;gBAAE,SAAS,CAAC,qCAAqC;YAC1D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAmC,EAAE,IAAY;IAClF,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oBAAoB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,8CAA8C,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AAEnD,gDAAgD;AAChD,MAAM,UAAU,cAAc,CAC5B,IAAuB,EACvB,GAAoB,EACpB,IAAY;IAEZ,IAAI,IAAY,CAAC;IACjB,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,IAAI,GAAG,GAAG,CAAC;IACb,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,uBAAuB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,+BAA+B;YAChE,iDAAiD,CACpD,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/toolkit/discover.js
CHANGED
|
@@ -56,22 +56,39 @@ async function discoverOne(dir) {
|
|
|
56
56
|
.map((e) => e.name)
|
|
57
57
|
.sort(); // 排序保证装配顺序稳定(菜单顺序 = 目录名序,可复现)
|
|
58
58
|
for (const name of entries) {
|
|
59
|
-
const
|
|
60
|
-
if (
|
|
59
|
+
const candidates = ENTRY_CANDIDATES.map((f) => join(root, name, f)).filter(existsSync);
|
|
60
|
+
if (candidates.length === 0) {
|
|
61
61
|
// 静默跳过过一次(无入口的目录视为非能力目录,如 assets/):
|
|
62
62
|
// 但「菜单莫名少一个能力」需要留痕,否则只能靠猜
|
|
63
63
|
console.warn(`[agentia:discover] 跳过 ${name}/:无 ${ENTRY_CANDIDATES.join(' / ')} 入口`);
|
|
64
64
|
continue;
|
|
65
65
|
}
|
|
66
|
+
// 候选按序尝试(.ts 优先 —— tsx dev 下必须能选中源码),失败后回落下一候选:
|
|
67
|
+
// 源码与 in-place 编译产物(index.ts + index.js)并存的目录,纯 node 选 .ts 会加载
|
|
68
|
+
// 失败,此时应回落 .js 而非直接报「入口加载失败」;全部失败则列出每个候选与各自原因。
|
|
66
69
|
let mod;
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
let lastError;
|
|
71
|
+
const failures = [];
|
|
72
|
+
for (const entry of candidates) {
|
|
73
|
+
try {
|
|
74
|
+
mod = await import(pathToFileURL(entry).href);
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
lastError = e;
|
|
79
|
+
failures.push(`${entry}: ${e instanceof Error ? e.message : String(e)}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (failures.length === candidates.length) {
|
|
83
|
+
throw new Error(`能力 ${name} 入口加载失败:\n${failures.map((f) => ` - ${f}`).join('\n')}`, { cause: lastError });
|
|
69
84
|
}
|
|
70
|
-
|
|
71
|
-
|
|
85
|
+
if (failures.length > 0) {
|
|
86
|
+
// 回落成功不等于没事:若刚改过 .ts 源码,命中的 .js 可能是陈旧编译产物 —— 留痕
|
|
87
|
+
console.warn(`[agentia:discover] 能力 ${name} 首选入口加载失败,已回落(命中的是 ${candidates[failures.length]};若刚改过源码,注意它可能是陈旧编译产物):\n` +
|
|
88
|
+
failures.map((f) => ` - ${f}`).join('\n'));
|
|
72
89
|
}
|
|
73
90
|
const exported = mod.default;
|
|
74
|
-
providers.push(...normalizeExport(name, exported,
|
|
91
|
+
providers.push(...normalizeExport(name, exported, candidates[failures.length]));
|
|
75
92
|
}
|
|
76
93
|
return providers;
|
|
77
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/toolkit/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAEnF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAsB;IAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,2DAA2D;IAC3D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEvC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,MAAM,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CACV,2BAA2B,KAAK,OAAO,IAAI,OAAO,CAAC,uBAAuB,CAC3E,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qCAAqC;AACrC,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;IACjE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,sCAAsC,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAClC,gDAAgD;QAChD,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACvD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;SAC/C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,EAAE,CAAC,CAAC,8BAA8B;IAEzC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/toolkit/discover.ts"],"names":[],"mappings":"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"}
|
package/dist/toolkit/env.js
CHANGED
|
@@ -18,6 +18,11 @@ export function parseEnvText(text) {
|
|
|
18
18
|
const key = body.slice(0, eq).trim();
|
|
19
19
|
if (!KEY_RE.test(key))
|
|
20
20
|
throw new Error(`.env 第 ${i + 1} 行键名非法:${key || '(空)'}`);
|
|
21
|
+
// __proto__ 走原型 setter:`out['__proto__'] = 'v'`(字符串值)被**静默忽略** ——
|
|
22
|
+
// 正是本文件「静默跳过 = 以为配上了其实没配上」要防的事,显式拒绝
|
|
23
|
+
if (key === '__proto__') {
|
|
24
|
+
throw new Error(`.env 第 ${i + 1} 行键名 "__proto__" 不可用(会走原型 setter 被静默吞掉)`);
|
|
25
|
+
}
|
|
21
26
|
out[key] = parseValue(body.slice(eq + 1));
|
|
22
27
|
}
|
|
23
28
|
return out;
|
package/dist/toolkit/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/toolkit/env.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/toolkit/env.ts"],"names":[],"mappings":"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"}
|
package/dist/toolkit/module.d.ts
CHANGED
|
@@ -76,7 +76,7 @@ export interface AppOptions {
|
|
|
76
76
|
* 调试期在应用级开一次 `false`,不必每个调用点重复传。见 `RunAgentOptions.maxEventChars`。
|
|
77
77
|
*/
|
|
78
78
|
maxEventChars?: number | false;
|
|
79
|
-
/**
|
|
79
|
+
/** 只收集这些 token 的 provider 上的能力(@Tool / @SubAgent / @Skill / @Prompt 四类同样收窄);缺省扫全部 providers */
|
|
80
80
|
toolSources?: Token[];
|
|
81
81
|
/**
|
|
82
82
|
* 直接追加到主菜单的**裸工具**(`AgentTool[]`)—— 给「构造期才知道有哪些工具」的场景
|
|
@@ -143,6 +143,8 @@ export declare class AgentApp {
|
|
|
143
143
|
private readonly base;
|
|
144
144
|
private _tools;
|
|
145
145
|
private readonly sinks;
|
|
146
|
+
/** 装配期那条中间件链的包裹函数:主菜单构造期已包好;per-run tools 覆盖在 run() 里现包 */
|
|
147
|
+
private readonly wrapTools;
|
|
146
148
|
constructor(opts: AppOptions);
|
|
147
149
|
/** app 已装配好的工具菜单(构建期即从容器解析,静态稳定) */
|
|
148
150
|
get tools(): AgentTool[];
|
package/dist/toolkit/module.js
CHANGED
|
@@ -33,6 +33,8 @@ export class AgentApp {
|
|
|
33
33
|
base;
|
|
34
34
|
_tools = [];
|
|
35
35
|
sinks;
|
|
36
|
+
/** 装配期那条中间件链的包裹函数:主菜单构造期已包好;per-run tools 覆盖在 run() 里现包 */
|
|
37
|
+
wrapTools;
|
|
36
38
|
constructor(opts) {
|
|
37
39
|
this.name = opts.name ?? 'app';
|
|
38
40
|
const modules = opts.modules ?? [];
|
|
@@ -80,6 +82,7 @@ export class AgentApp {
|
|
|
80
82
|
// 模块级中间件在前(更外层),应用级在后。
|
|
81
83
|
const middleware = [...modules.flatMap((m) => m.middleware ?? []), ...(opts.middleware ?? [])];
|
|
82
84
|
const wrap = (tools) => middleware.length ? applyMiddleware(tools, middleware) : tools;
|
|
85
|
+
this.wrapTools = wrap;
|
|
83
86
|
/**
|
|
84
87
|
* 中间件包装**之后**的每 provider 菜单。
|
|
85
88
|
*
|
|
@@ -176,7 +179,11 @@ export class AgentApp {
|
|
|
176
179
|
return executeRun({
|
|
177
180
|
system,
|
|
178
181
|
messages,
|
|
179
|
-
tools
|
|
182
|
+
// per-run tools 覆盖与 AppOptions.tools 同语义:同样过装配期那条中间件链,**不是旁路**
|
|
183
|
+
//(否则 per-run 覆盖就绕开了鉴权/限流/审计)。this._tools 构造期已包裹好(直接复用,
|
|
184
|
+
// 不二次包裹);opts.tools 是调用方给的裸菜单,此处现包一次 —— applyMiddleware 产出
|
|
185
|
+
// 新数组新对象(不改写入参),与装配期结果无共享,不会双重包裹。
|
|
186
|
+
tools: opts.tools ? this.wrapTools(opts.tools) : this._tools,
|
|
180
187
|
model: opts.model ?? this.base.model,
|
|
181
188
|
maxTokens: opts.maxTokens ?? this.base.maxTokens,
|
|
182
189
|
maxIterations: opts.maxIterations ?? this.base.maxIterations,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/toolkit/module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK/C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAiBlD,0CAA0C;AAC1C,MAAM,UAAU,YAAY,CAAC,CAAc;IACzC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,YAAY,GAAgB,EAAE,CAAC;AAErC,sEAAsE;AACtE,MAAM,UAAU,wBAAwB,CAAC,IAAe;IACtD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAgGD;;;;;;;;;GASG;AACH,MAAM,OAAO,QAAQ;IACV,IAAI,CAAS;IACL,EAAE,CAAY;IACd,MAAM,CAA6B;IACnC,IAAI,CAanB;IACM,MAAM,GAAgB,EAAE,CAAC;IAChB,KAAK,CAAc;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/toolkit/module.ts"],"names":[],"mappings":"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"}
|
package/dist/toolkit/prompt.d.ts
CHANGED
|
@@ -25,6 +25,6 @@ export interface PromptSpec {
|
|
|
25
25
|
export declare function Prompt(spec: PromptSpec): (value: Function, context: CapabilityDecoratorContext) => void;
|
|
26
26
|
/**
|
|
27
27
|
* 收集容器实例(+ 其类上的静态方法)里所有 @Prompt,产出 AgentTool[]。
|
|
28
|
-
*
|
|
28
|
+
* 实例方法沿原型链(含继承);静态方法同样沿构造函数原型链(含继承的父类静态 @Prompt)。
|
|
29
29
|
*/
|
|
30
30
|
export declare function collectPrompts(instance: object): AgentTool[];
|