@faapi/faapi 3.1.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +17 -22
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +33 -11
- package/dist/index.js +31 -32
- package/dist/index.js.map +1 -1
- package/dist/testing.js +2 -9
- package/dist/testing.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -322,6 +322,31 @@ interface AgentConfig {
|
|
|
322
322
|
* 默认值由 Phase 3.x 的 @faapi/agent 插件定义(如 3)。
|
|
323
323
|
*/
|
|
324
324
|
maxAgentDepth?: number;
|
|
325
|
+
/**
|
|
326
|
+
* 启用 tracing 的全局默认值(默认 true)
|
|
327
|
+
*
|
|
328
|
+
* 开启时 `agent.run()` / `agent.stream()` 返回的 `result.trace` /
|
|
329
|
+
* `chunk.traceEvent` 填充结构化调用明细(按轮次组织的 LLM 调用、tool 调用、
|
|
330
|
+
* sub-agent 嵌套调用事件,含 timing 与 token 用量)。
|
|
331
|
+
*
|
|
332
|
+
* 三层覆盖优先级:`AgentRunOptions.enableTracing` > agent 自身配置 >
|
|
333
|
+
* 此全局配置 > 默认 `true`。
|
|
334
|
+
*
|
|
335
|
+
* 业务方在生产主路径(高 QPS 端点)显式设 `false` 关闭以零开销运行:
|
|
336
|
+
*
|
|
337
|
+
* ```ts
|
|
338
|
+
* import type { FaapiConfig } from '@faapi/faapi';
|
|
339
|
+
* export default {
|
|
340
|
+
* agent: {
|
|
341
|
+
* enableTracing: false,
|
|
342
|
+
* llms: { openai: { provider: 'openai', apiKey: '...', models: { 'gpt-4o': {} } } },
|
|
343
|
+
* },
|
|
344
|
+
* } satisfies FaapiConfig;
|
|
345
|
+
* ```
|
|
346
|
+
*
|
|
347
|
+
* 详见 `@faapi/agent` 的 [trace](../../agent/src/trace.md) 文档。
|
|
348
|
+
*/
|
|
349
|
+
enableTracing?: boolean;
|
|
325
350
|
}
|
|
326
351
|
/**
|
|
327
352
|
* faapi 配置文件类型
|
|
@@ -967,9 +992,9 @@ interface ToolPathMeta {
|
|
|
967
992
|
* 返回 [AgentCore](../ast/extractAgentMetadata.md) 字段(name / description /
|
|
968
993
|
* systemPrompt / tools / agents / model / maxTurns),**不含** `filePath` / `hasRun`。
|
|
969
994
|
*
|
|
970
|
-
*
|
|
971
|
-
*
|
|
972
|
-
*
|
|
995
|
+
* 仅查文件 registry(编译期 `faapi-agents.js` 产物来源)。**不 fallback 到
|
|
996
|
+
* [skillRegistry](./skillRegistry.ts)**——skill 与 agent 职责正交不耦合,
|
|
997
|
+
* skill 由业务方 plugin 内部使用,不参与 agent 查询链路。
|
|
973
998
|
*
|
|
974
999
|
* 用于 LLM-facing 场景(`agents` 参数注入、`asTool` 描述、
|
|
975
1000
|
* `resolveAgentTools` / `resolveSubAgents` 解析)。
|
|
@@ -986,11 +1011,10 @@ declare function getAgent(name: string): AgentCore | undefined;
|
|
|
986
1011
|
* 额外含 `filePath` / `hasRun`,供 `@faapi/agent` 子包 `loadAgentModule`
|
|
987
1012
|
* 加载 handler.js 执行自定义 `run` 函数。
|
|
988
1013
|
*
|
|
989
|
-
* **不 fallback 到 skillRegistry**——DB skill 无源文件,不走 `loadAgentModule`。
|
|
990
1014
|
* 调用方需先判断 `entry?.hasRun` 再决定是否加载 handler.js。
|
|
991
1015
|
*
|
|
992
1016
|
* @param name agent 名
|
|
993
|
-
* @returns `AgentMetadata` 或 `undefined
|
|
1017
|
+
* @returns `AgentMetadata` 或 `undefined`(未注册)
|
|
994
1018
|
*/
|
|
995
1019
|
declare function getAgentEntry(name: string): AgentMetadata | undefined;
|
|
996
1020
|
/**
|
|
@@ -1029,9 +1053,7 @@ interface AgentToolDescriptor {
|
|
|
1029
1053
|
*
|
|
1030
1054
|
* agent 必须显式声明用哪些 tool,显式优于隐式。
|
|
1031
1055
|
*
|
|
1032
|
-
*
|
|
1033
|
-
* skill 的 `tools` 字段同样会被解析。DB skill 引用的 tool 必须在 toolRegistry
|
|
1034
|
-
* 注册(文件型 tool 或未来 DB-driven tool)。
|
|
1056
|
+
* 通过 [getAgent](#getAgent) 查询文件型 agent,不 fallback 到 skillRegistry。
|
|
1035
1057
|
*
|
|
1036
1058
|
* `tools` 中未在 toolRegistry 找到的 tool 名静默跳过(tool 可选可用,不强制存在)。
|
|
1037
1059
|
*
|
|
@@ -1046,10 +1068,10 @@ declare function resolveAgentTools(name: string): ToolMetadata[];
|
|
|
1046
1068
|
* 解析 agent 可调用的子 agent 集合
|
|
1047
1069
|
*
|
|
1048
1070
|
* 读 `agent.agents` 字段([extractAgentMetadata](../ast/extractAgentMetadata.md)
|
|
1049
|
-
* 提取的 `config.agents`
|
|
1071
|
+
* 提取的 `config.agents` 字面量列表),按名查找已注册文件型 agent。
|
|
1050
1072
|
*
|
|
1051
|
-
*
|
|
1052
|
-
* 父 agent
|
|
1073
|
+
* 不 fallback 到 skillRegistry——skill 不参与 sub-agent 递归,
|
|
1074
|
+
* 父 agent 的 `agents` 列表只能引用文件型 agent 名。
|
|
1053
1075
|
*
|
|
1054
1076
|
* 返回 `AgentCore[]`(LLM-facing 字段,供 `@faapi/agent` 子包包装为
|
|
1055
1077
|
* `AgentToolDescriptor` 发给 LLM)。加载 sub-agent handler.js 执行 `run` 函数
|
package/dist/index.js
CHANGED
|
@@ -1350,53 +1350,27 @@ function getTool(name) {
|
|
|
1350
1350
|
return registry.get(name);
|
|
1351
1351
|
}
|
|
1352
1352
|
|
|
1353
|
-
// src/injection/skillRegistry.ts
|
|
1354
|
-
var registry2 = /* @__PURE__ */ new Map();
|
|
1355
|
-
function hydrateSkillRegistry(skills) {
|
|
1356
|
-
const next = /* @__PURE__ */ new Map();
|
|
1357
|
-
for (const skill of skills) {
|
|
1358
|
-
next.set(skill.name, skill);
|
|
1359
|
-
}
|
|
1360
|
-
registry2 = next;
|
|
1361
|
-
}
|
|
1362
|
-
function clearSkillRegistry() {
|
|
1363
|
-
registry2 = /* @__PURE__ */ new Map();
|
|
1364
|
-
}
|
|
1365
|
-
function upsertSkill(core) {
|
|
1366
|
-
registry2.set(core.name, core);
|
|
1367
|
-
}
|
|
1368
|
-
function removeSkill(name) {
|
|
1369
|
-
registry2.delete(name);
|
|
1370
|
-
}
|
|
1371
|
-
function getSkill(name) {
|
|
1372
|
-
return registry2.get(name);
|
|
1373
|
-
}
|
|
1374
|
-
function listSkills() {
|
|
1375
|
-
return Array.from(registry2.values());
|
|
1376
|
-
}
|
|
1377
|
-
|
|
1378
1353
|
// src/injection/agentRegistry.ts
|
|
1379
|
-
var
|
|
1354
|
+
var registry2 = /* @__PURE__ */ new Map();
|
|
1380
1355
|
function hydrateAgentRegistry(agents) {
|
|
1381
1356
|
const next = /* @__PURE__ */ new Map();
|
|
1382
1357
|
for (const agent of agents) {
|
|
1383
1358
|
next.set(agent.name, agent);
|
|
1384
1359
|
}
|
|
1385
|
-
|
|
1360
|
+
registry2 = next;
|
|
1386
1361
|
}
|
|
1387
1362
|
function clearAgentRegistry() {
|
|
1388
|
-
|
|
1363
|
+
registry2 = /* @__PURE__ */ new Map();
|
|
1389
1364
|
}
|
|
1390
1365
|
function getAgent(name) {
|
|
1391
|
-
return
|
|
1366
|
+
return registry2.get(name);
|
|
1392
1367
|
}
|
|
1393
1368
|
function getAgentEntry(name) {
|
|
1394
|
-
return
|
|
1369
|
+
return registry2.get(name);
|
|
1395
1370
|
}
|
|
1396
1371
|
function listAgents() {
|
|
1397
1372
|
const merged = /* @__PURE__ */ new Map();
|
|
1398
|
-
for (const agent of
|
|
1399
|
-
for (const skill of listSkills()) merged.set(skill.name, skill);
|
|
1373
|
+
for (const agent of registry2.values()) merged.set(agent.name, agent);
|
|
1400
1374
|
return Array.from(merged.values());
|
|
1401
1375
|
}
|
|
1402
1376
|
function resolveAgentTools(name) {
|
|
@@ -1422,6 +1396,31 @@ function resolveSubAgents(name) {
|
|
|
1422
1396
|
return result;
|
|
1423
1397
|
}
|
|
1424
1398
|
|
|
1399
|
+
// src/injection/skillRegistry.ts
|
|
1400
|
+
var registry3 = /* @__PURE__ */ new Map();
|
|
1401
|
+
function hydrateSkillRegistry(skills) {
|
|
1402
|
+
const next = /* @__PURE__ */ new Map();
|
|
1403
|
+
for (const skill of skills) {
|
|
1404
|
+
next.set(skill.name, skill);
|
|
1405
|
+
}
|
|
1406
|
+
registry3 = next;
|
|
1407
|
+
}
|
|
1408
|
+
function clearSkillRegistry() {
|
|
1409
|
+
registry3 = /* @__PURE__ */ new Map();
|
|
1410
|
+
}
|
|
1411
|
+
function upsertSkill(core) {
|
|
1412
|
+
registry3.set(core.name, core);
|
|
1413
|
+
}
|
|
1414
|
+
function removeSkill(name) {
|
|
1415
|
+
registry3.delete(name);
|
|
1416
|
+
}
|
|
1417
|
+
function getSkill(name) {
|
|
1418
|
+
return registry3.get(name);
|
|
1419
|
+
}
|
|
1420
|
+
function listSkills() {
|
|
1421
|
+
return Array.from(registry3.values());
|
|
1422
|
+
}
|
|
1423
|
+
|
|
1425
1424
|
// src/loader/loadAgentModule.ts
|
|
1426
1425
|
import fs6 from "fs";
|
|
1427
1426
|
|