@migor/agentia 0.4.2 → 0.6.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.
Files changed (71) hide show
  1. package/README.md +1 -1
  2. package/dist/AGENTS.md +145 -10
  3. package/dist/core/message.d.ts +148 -0
  4. package/dist/core/message.js +25 -0
  5. package/dist/core/message.js.map +1 -0
  6. package/dist/core/tool.d.ts +10 -9
  7. package/dist/core/trace.d.ts +21 -0
  8. package/dist/core/trace.js +9 -1
  9. package/dist/core/trace.js.map +1 -1
  10. package/dist/engine/errors.d.ts +12 -0
  11. package/dist/engine/errors.js +46 -13
  12. package/dist/engine/errors.js.map +1 -1
  13. package/dist/engine/loop.d.ts +17 -11
  14. package/dist/engine/loop.js +46 -433
  15. package/dist/engine/loop.js.map +1 -1
  16. package/dist/engine/replay.d.ts +18 -3
  17. package/dist/engine/replay.js +49 -8
  18. package/dist/engine/replay.js.map +1 -1
  19. package/dist/engine/retry.d.ts +5 -4
  20. package/dist/engine/retry.js.map +1 -1
  21. package/dist/engine/spec.d.ts +5 -5
  22. package/dist/engine/spec.js.map +1 -1
  23. package/dist/engine/trace-diff.d.ts +57 -0
  24. package/dist/engine/trace-diff.js +188 -0
  25. package/dist/engine/trace-diff.js.map +1 -0
  26. package/dist/engine/trimming.d.ts +7 -7
  27. package/dist/engine/trimming.js +6 -5
  28. package/dist/engine/trimming.js.map +1 -1
  29. package/dist/engine/turn.d.ts +157 -0
  30. package/dist/engine/turn.js +500 -0
  31. package/dist/engine/turn.js.map +1 -0
  32. package/dist/engine/types.d.ts +18 -8
  33. package/dist/engine/usage.d.ts +2 -2
  34. package/dist/engine/usage.js.map +1 -1
  35. package/dist/eval/defineEval.d.ts +1 -1
  36. package/dist/eval/defineEval.js +12 -0
  37. package/dist/eval/defineEval.js.map +1 -1
  38. package/dist/eval/harvest.d.ts +37 -0
  39. package/dist/eval/harvest.js +132 -0
  40. package/dist/eval/harvest.js.map +1 -0
  41. package/dist/eval/scripted.js.map +1 -1
  42. package/dist/index.d.ts +8 -2
  43. package/dist/index.js +4 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/integrations/anthropic.d.ts +41 -37
  46. package/dist/integrations/anthropic.js +408 -17
  47. package/dist/integrations/anthropic.js.map +1 -1
  48. package/dist/integrations/metrics.d.ts +13 -0
  49. package/dist/integrations/metrics.js +65 -0
  50. package/dist/integrations/metrics.js.map +1 -1
  51. package/dist/integrations/openai.d.ts +1 -1
  52. package/dist/integrations/openai.js +3 -3
  53. package/dist/integrations/openai.js.map +1 -1
  54. package/dist/integrations/otlp.d.ts +10 -0
  55. package/dist/integrations/otlp.js +59 -0
  56. package/dist/integrations/otlp.js.map +1 -1
  57. package/dist/runtime/run.js +2 -0
  58. package/dist/runtime/run.js.map +1 -1
  59. package/dist/runtime/session.d.ts +5 -5
  60. package/dist/runtime/session.js.map +1 -1
  61. package/dist/toolkit/module.d.ts +8 -2
  62. package/dist/toolkit/module.js +56 -8
  63. package/dist/toolkit/module.js.map +1 -1
  64. package/dist/toolkit/prompt.d.ts +20 -0
  65. package/dist/toolkit/prompt.js +18 -4
  66. package/dist/toolkit/prompt.js.map +1 -1
  67. package/dist/toolkit/skill.d.ts +3 -3
  68. package/dist/toolkit/subagent.d.ts +2 -2
  69. package/dist/toolkit/subagent.js +1 -1
  70. package/dist/transport/async.d.ts +2 -2
  71. package/package.json +2 -4
@@ -20,9 +20,29 @@ export interface PromptSpec {
20
20
  description: string;
21
21
  /** 模板化入参 schema;缺省空对象(无参资产) */
22
22
  schema?: JsonSchema;
23
+ /**
24
+ * 资产版本号(git hash / 'v3' 等)。装配时随能力名收集成 { 能力名: 版本 } 表,
25
+ * 每次 run 落到 run 根 span 的 `prompts.versions` attribute(engine 拼成 name@ver 逗号串)——
26
+ * 回答「质量退化是不是换了这个 prompt 资产导致的」。缺省(无版本)则该能力不进表。
27
+ */
28
+ version?: string;
23
29
  }
24
30
  /** 方法装饰器(实例或 static 均可):登记 prompt spec。返回值 = 资产文本。 */
25
31
  export declare function Prompt(spec: PromptSpec): (value: Function, context: CapabilityDecoratorContext) => void;
32
+ /** collectPromptEntries 的产物:菜单工具 + 带版本能力的 name→version 表(最终菜单名口径)。 */
33
+ export interface CollectedPrompts {
34
+ tools: AgentTool[];
35
+ /** 带 version 的 @Prompt 的 { 最终菜单名: 版本 };无版本能力不进表 */
36
+ versions: Record<string, string>;
37
+ }
38
+ /**
39
+ * 收集容器实例(+ 其类上的静态方法)里所有 @Prompt,产出 AgentTool[] 与版本表。
40
+ * 实例方法沿原型链(含继承);静态方法同样沿构造函数原型链(含继承的父类静态 @Prompt)。
41
+ *
42
+ * collectPrompts 是公共面(只回 AgentTool[],历史形状不动);装配侧需要版本表,
43
+ * 故内核收两份 —— module 级 export,不进公共导出面(src/index.ts)。
44
+ */
45
+ export declare function collectPromptEntries(instance: object): CollectedPrompts;
26
46
  /**
27
47
  * 收集容器实例(+ 其类上的静态方法)里所有 @Prompt,产出 AgentTool[]。
28
48
  * 实例方法沿原型链(含继承);静态方法同样沿构造函数原型链(含继承的父类静态 @Prompt)。
@@ -13,14 +13,18 @@ export function Prompt(spec) {
13
13
  };
14
14
  }
15
15
  /**
16
- * 收集容器实例(+ 其类上的静态方法)里所有 @Prompt,产出 AgentTool[]。
16
+ * 收集容器实例(+ 其类上的静态方法)里所有 @Prompt,产出 AgentTool[] 与版本表。
17
17
  * 实例方法沿原型链(含继承);静态方法同样沿构造函数原型链(含继承的父类静态 @Prompt)。
18
+ *
19
+ * collectPrompts 是公共面(只回 AgentTool[],历史形状不动);装配侧需要版本表,
20
+ * 故内核收两份 —— module 级 export,不进公共导出面(src/index.ts)。
18
21
  */
19
- export function collectPrompts(instance) {
22
+ export function collectPromptEntries(instance) {
20
23
  const tools = [];
24
+ const versions = {};
21
25
  // null/undefined/原始值 provider(useValue 合法形态):无装饰器能力可收,空结果
22
26
  if (!isScannableInstance(instance))
23
- return tools;
27
+ return { tools, versions };
24
28
  // 传 key 而非捕获的 fn:子类「未装饰地 override」时 spec 继承自父类,
25
29
  // 但实现必须取**实例/类上**的(否则会绕开子类实现,与 @Tool 语义不一致)。
26
30
  const pushTool = (name, target, key, spec) => {
@@ -30,6 +34,9 @@ export function collectPrompts(instance) {
30
34
  inputSchema: spec.schema ?? EMPTY_SCHEMA,
31
35
  run: (input) => Reflect.apply(target[key], target, [input]),
32
36
  });
37
+ // 版本表以最终菜单名(capabilityName 校验后的 name)为键;缺省无版本不进表
38
+ if (spec.version !== undefined)
39
+ versions[spec.name ?? name] = spec.version;
33
40
  };
34
41
  // 实例方法(沿原型链)
35
42
  const found = scanDecoratedMethods(instance, promptSpecs);
@@ -59,6 +66,13 @@ export function collectPrompts(instance) {
59
66
  }
60
67
  ctor = Object.getPrototypeOf(ctor);
61
68
  }
62
- return tools;
69
+ return { tools, versions };
70
+ }
71
+ /**
72
+ * 收集容器实例(+ 其类上的静态方法)里所有 @Prompt,产出 AgentTool[]。
73
+ * 实例方法沿原型链(含继承);静态方法同样沿构造函数原型链(含继承的父类静态 @Prompt)。
74
+ */
75
+ export function collectPrompts(instance) {
76
+ return collectPromptEntries(instance).tools;
63
77
  }
64
78
  //# sourceMappingURL=prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/toolkit/prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/toolkit/prompt.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { CapabilityDecoratorContext } from './collect.js';
2
- import type Anthropic from '@anthropic-ai/sdk';
2
+ import type { MessageParam } from '../core/message.js';
3
3
  import type { AgentTool, JsonSchema } from '../core/tool.js';
4
4
  import type { AgentStopReason } from '../engine/types.js';
5
5
  import { SystemPrompt } from '../runtime/systemPrompt.js';
@@ -26,13 +26,13 @@ export interface SkillSpec {
26
26
  model?: string;
27
27
  maxTokens?: number;
28
28
  maxIterations?: number;
29
- /** skill 内 ctx.llm() 可调工具:容器 provider token 列表(复用其 @Tool 菜单) */
29
+ /** skill 内 ctx.llm() 可调工具:容器 provider token 列表,或 `<token>/<能力名>` 能力级路径(只引该 provider 菜单里的单个能力);缺省 = 无工具纯文本 */
30
30
  tools?: string[];
31
31
  }
32
32
  export interface SkillLlmOptions {
33
33
  /** 二选一:直接给 prompt(包成单条 user),或给完整 messages */
34
34
  prompt?: string;
35
- messages?: Anthropic.MessageParam[];
35
+ messages?: MessageParam[];
36
36
  /** 本次受限子运行的系统提示;SystemPrompt 实例自动打缓存 breakpoint */
37
37
  system?: string | SystemPrompt;
38
38
  model?: string;
@@ -28,7 +28,7 @@ export interface SubAgentSpec {
28
28
  * 注意:这是裁剪上下文的源头 —— 只写子 agent 完成该任务所需的角色/约束。
29
29
  */
30
30
  system: string | SystemPrompt | ((task: Record<string, unknown>) => SystemParam | Promise<SystemParam>);
31
- /** 子 agent 可调工具:容器 provider token 列表(复用其 @Tool 菜单);缺省 = 无工具纯文本 */
31
+ /** 子 agent 可调工具:容器 provider token 列表,或 `<token>/<能力名>` 能力级路径(只引该 provider 菜单里的单个能力);缺省 = 无工具纯文本 */
32
32
  tools?: string[];
33
33
  model?: string;
34
34
  maxTokens?: number;
@@ -53,6 +53,6 @@ export declare function collectSubAgents(instance: object): SubAgentCapability[]
53
53
  /**
54
54
  * 把 SubAgentCapability 变成主 agent 菜单里的 AgentTool。
55
55
  * run(input, ctx) 需要 ToolRunContext(engine 调用时必有);手动直调会抛错提示。
56
- * tools token 列表 → resolveTools() 由装配层给出(该 token 的 @Tool 菜单)。
56
+ * tools 引用(整片 token / `<token>/<能力名>` 能力级路径)→ resolveTools() 由装配层给出。
57
57
  */
58
58
  export declare function subagentToTool(capability: SubAgentCapability, resolveTools: () => AgentTool[]): AgentTool;
@@ -35,7 +35,7 @@ async function resolveSubSystem(spec, task) {
35
35
  /**
36
36
  * 把 SubAgentCapability 变成主 agent 菜单里的 AgentTool。
37
37
  * run(input, ctx) 需要 ToolRunContext(engine 调用时必有);手动直调会抛错提示。
38
- * tools token 列表 → resolveTools() 由装配层给出(该 token 的 @Tool 菜单)。
38
+ * tools 引用(整片 token / `<token>/<能力名>` 能力级路径)→ resolveTools() 由装配层给出。
39
39
  */
40
40
  export function subagentToTool(capability, resolveTools) {
41
41
  const { name, spec } = capability;
@@ -1,4 +1,4 @@
1
- import type Anthropic from '@anthropic-ai/sdk';
1
+ import type { MessageParam } from '../core/message.js';
2
2
  import type { ModelClient } from '../core/tool.js';
3
3
  import type { AgentRunResult } from '../engine/types.js';
4
4
  import type { RunStatus } from '../core/run.js';
@@ -60,7 +60,7 @@ export interface ResumePendingOptions {
60
60
  /** 应用最小调用面(agent 装配无关,避免 run 层向上依赖 toolkit) */
61
61
  export interface AppCallable {
62
62
  readonly name: string;
63
- run(messages: Anthropic.MessageParam[], opts?: RunInvocationOptions): Promise<{
63
+ run(messages: MessageParam[], opts?: RunInvocationOptions): Promise<{
64
64
  run: {
65
65
  runId: string;
66
66
  status: RunStatus;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@migor/agentia",
3
- "version": "0.4.2",
3
+ "version": "0.6.0",
4
4
  "description": "面向应用开发的声明式 agent 服务开发框架:装饰器 + DI 声明四类能力,主 agent 编排执行;每次 run 产出结构化结果与可观测调用树(trace、成本、指标),交付可直接上线的服务。",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -53,13 +53,11 @@
53
53
  "e2e:mcp": "npm run build:cli && tsx scripts/e2e-mcp.ts"
54
54
  },
55
55
  "devDependencies": {
56
+ "@anthropic-ai/sdk": "^0.125.0",
56
57
  "@biomejs/biome": "^2.5.13",
57
58
  "@types/node": "^26.5.1",
58
59
  "tsx": "^4.19.0",
59
60
  "typescript": "^7.0.2",
60
61
  "zod": "^4.6.1"
61
- },
62
- "dependencies": {
63
- "@anthropic-ai/sdk": "^0.124.0"
64
62
  }
65
63
  }