@migor/agentia 0.0.2 → 0.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.
Files changed (70) hide show
  1. package/README.md +62 -6
  2. package/dist/core/json.d.ts +2 -0
  3. package/dist/core/json.js +12 -0
  4. package/dist/core/json.js.map +1 -0
  5. package/dist/core/schema.d.ts +2 -1
  6. package/dist/core/schema.js +11 -9
  7. package/dist/core/schema.js.map +1 -1
  8. package/dist/core/tool.d.ts +19 -1
  9. package/dist/engine/loop.d.ts +11 -3
  10. package/dist/engine/loop.js +69 -15
  11. package/dist/engine/loop.js.map +1 -1
  12. package/dist/engine/replay.d.ts +31 -0
  13. package/dist/engine/replay.js +107 -0
  14. package/dist/engine/replay.js.map +1 -0
  15. package/dist/engine/types.d.ts +18 -4
  16. package/dist/index.d.ts +18 -2
  17. package/dist/index.js +12 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/run/async.d.ts +12 -17
  20. package/dist/run/async.js +66 -16
  21. package/dist/run/async.js.map +1 -1
  22. package/dist/run/http.d.ts +47 -0
  23. package/dist/run/http.js +119 -0
  24. package/dist/run/http.js.map +1 -0
  25. package/dist/run/memory.d.ts +18 -0
  26. package/dist/run/memory.js +18 -0
  27. package/dist/run/memory.js.map +1 -0
  28. package/dist/run/openai.d.ts +24 -0
  29. package/dist/run/openai.js +181 -0
  30. package/dist/run/openai.js.map +1 -0
  31. package/dist/run/otlp.d.ts +26 -0
  32. package/dist/run/otlp.js +105 -0
  33. package/dist/run/otlp.js.map +1 -0
  34. package/dist/run/redisStore.d.ts +54 -0
  35. package/dist/run/redisStore.js +72 -0
  36. package/dist/run/redisStore.js.map +1 -0
  37. package/dist/run/run.d.ts +10 -0
  38. package/dist/run/run.js +31 -0
  39. package/dist/run/run.js.map +1 -1
  40. package/dist/run/spec.d.ts +2 -1
  41. package/dist/run/spec.js.map +1 -1
  42. package/dist/run/sqliteStore.d.ts +24 -0
  43. package/dist/run/sqliteStore.js +60 -0
  44. package/dist/run/sqliteStore.js.map +1 -0
  45. package/dist/run/store.d.ts +12 -5
  46. package/dist/run/store.js.map +1 -1
  47. package/dist/toolkit/collect.d.ts +23 -0
  48. package/dist/toolkit/collect.js +45 -0
  49. package/dist/toolkit/collect.js.map +1 -0
  50. package/dist/toolkit/discover.js +7 -1
  51. package/dist/toolkit/discover.js.map +1 -1
  52. package/dist/toolkit/middleware.d.ts +27 -0
  53. package/dist/toolkit/middleware.js +15 -0
  54. package/dist/toolkit/middleware.js.map +1 -0
  55. package/dist/toolkit/module.d.ts +18 -0
  56. package/dist/toolkit/module.js +34 -1
  57. package/dist/toolkit/module.js.map +1 -1
  58. package/dist/toolkit/prompt.js +6 -20
  59. package/dist/toolkit/prompt.js.map +1 -1
  60. package/dist/toolkit/skill.js +8 -29
  61. package/dist/toolkit/skill.js.map +1 -1
  62. package/dist/toolkit/subagent.d.ts +6 -0
  63. package/dist/toolkit/subagent.js +16 -28
  64. package/dist/toolkit/subagent.js.map +1 -1
  65. package/dist/toolkit/tool.js +3 -25
  66. package/dist/toolkit/tool.js.map +1 -1
  67. package/dist/toolkit/zod.d.ts +26 -0
  68. package/dist/toolkit/zod.js +45 -0
  69. package/dist/toolkit/zod.js.map +1 -0
  70. package/package.json +27 -17
@@ -1 +1 @@
1
- {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/toolkit/subagent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/toolkit/subagent.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { scanDecoratedMethods, unitName } from './collect.js';
1
2
  /** 方法函数 → spec。WeakMap 不阻碍 GC,也不要求 globalThis 注册表。 */
2
3
  const toolSpecs = new WeakMap();
3
4
  /**
@@ -17,34 +18,11 @@ export function Tool(spec) {
17
18
  }
18
19
  /** 把容器实例上所有 @Tool 方法收集成 AgentTool[](沿原型链,含继承的父类工具)。 */
19
20
  export function collectTools(instance) {
20
- const tools = [];
21
- const seen = new Set();
22
- let proto = Object.getPrototypeOf(instance);
23
- while (proto && proto !== Object.prototype) {
24
- for (const key of Object.getOwnPropertyNames(proto)) {
25
- if (seen.has(key))
26
- continue;
27
- const desc = Object.getOwnPropertyDescriptor(proto, key);
28
- if (!desc || typeof desc.value !== 'function')
29
- continue;
30
- const spec = toolSpecs.get(desc.value);
31
- // 子类未装饰的 override 不标 seen:让父类的 spec 沿原型链继续生效
32
- // (Reflect.apply(instance[key]) 仍调到子类实现,override 生效、菜单不丢)
33
- if (!spec)
34
- continue;
35
- seen.add(key);
36
- tools.push(buildTool(instance, key, spec));
37
- }
38
- proto = Object.getPrototypeOf(proto);
39
- }
40
- return tools;
21
+ return scanDecoratedMethods(instance, toolSpecs).map(({ key, spec }) => buildTool(instance, key, spec));
41
22
  }
42
23
  function buildTool(instance, key, spec) {
43
- if (typeof spec.name !== 'string' && typeof key !== 'string') {
44
- throw new Error(`@Tool 需要显式 name(方法名为私有符号 ${String(key)})`);
45
- }
46
24
  return {
47
- name: spec.name ?? key,
25
+ name: unitName(spec, key, '@Tool'),
48
26
  description: spec.description,
49
27
  inputSchema: spec.schema,
50
28
  ...(spec.strict ? { strict: true } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/toolkit/tool.ts"],"names":[],"mappings":"AAyBA,sDAAsD;AACtD,MAAM,SAAS,GAAG,IAAI,OAAO,EAAsB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,UAAU,IAAI,CAAmB,IAAc;IACnD,OAAO,UACL,KAAmC,EACnC,OAAgD;QAEhD,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,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,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,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,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAiB,CAAC,CAAC;YACnD,6CAA6C;YAC7C,0DAA0D;YAC1D,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,GAAoB,EAAE,IAAc;IACvE,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI,IAAK,GAAc;QAClC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,MAAM;QACxB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,GAAG,EAAE,CAAC,KAAc,EAAE,EAAE,CACtB,OAAO,CAAC,KAAK,CACV,QAAqE,CAAC,GAAG,CAAC,EAC3E,QAAQ,EACR,CAAC,KAAK,CAAC,CACR;KACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/toolkit/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAyB9D,sDAAsD;AACtD,MAAM,SAAS,GAAG,IAAI,OAAO,EAAsB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,UAAU,IAAI,CAAmB,IAAc;IACnD,OAAO,UACL,KAAmC,EACnC,OAAgD;QAEhD,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CACrE,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,GAAoB,EAAE,IAAc;IACvE,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;QAClC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,MAAM;QACxB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,GAAG,EAAE,CAAC,KAAc,EAAE,EAAE,CACtB,OAAO,CAAC,KAAK,CACV,QAAqE,CAAC,GAAG,CAAC,EAC3E,QAAQ,EACR,CAAC,KAAK,CAAC,CACR;KACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { JsonSchema } from '../core/tool.js';
2
+ /**
3
+ * Agentia —— zod 可选接入(R2,duck-typed,框架永不 import zod)。
4
+ *
5
+ * zod 是用户的 peer 依赖:开发者自己 `npm i zod`,用 zod 生成 JSON Schema,
6
+ * 再把 zod schema 本体交给 fromZod 挂上运行时校验。框架只认 safeParse 结构面,
7
+ * zod v3/v4 或其他同形校验库(valibot/arktype 适配后)均可用。
8
+ *
9
+ * 用法:
10
+ * ```ts
11
+ * import { z } from 'zod';
12
+ * const Weather = z.object({ city: z.string(), days: z.number().int().min(1).max(7) });
13
+ *
14
+ * class WeatherTools {
15
+ * @Tool({
16
+ * description: '查天气',
17
+ * schema: fromZod(z.toJSONSchema(Weather) as JsonSchema, Weather),
18
+ * })
19
+ * get(input: { city: string; days: number }) { ... }
20
+ * }
21
+ * ```
22
+ *
23
+ * @param jsonSchema 由 zod 推导的 JSON Schema(发给模型 / 走 JSON Schema 子集校验)
24
+ * @param zod zod schema 本体(只需带 safeParse),其校验结果优先于 JSON Schema 子集
25
+ */
26
+ export declare function fromZod(jsonSchema: JsonSchema, zod: unknown): JsonSchema;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Agentia —— zod 可选接入(R2,duck-typed,框架永不 import zod)。
3
+ *
4
+ * zod 是用户的 peer 依赖:开发者自己 `npm i zod`,用 zod 生成 JSON Schema,
5
+ * 再把 zod schema 本体交给 fromZod 挂上运行时校验。框架只认 safeParse 结构面,
6
+ * zod v3/v4 或其他同形校验库(valibot/arktype 适配后)均可用。
7
+ *
8
+ * 用法:
9
+ * ```ts
10
+ * import { z } from 'zod';
11
+ * const Weather = z.object({ city: z.string(), days: z.number().int().min(1).max(7) });
12
+ *
13
+ * class WeatherTools {
14
+ * @Tool({
15
+ * description: '查天气',
16
+ * schema: fromZod(z.toJSONSchema(Weather) as JsonSchema, Weather),
17
+ * })
18
+ * get(input: { city: string; days: number }) { ... }
19
+ * }
20
+ * ```
21
+ *
22
+ * @param jsonSchema 由 zod 推导的 JSON Schema(发给模型 / 走 JSON Schema 子集校验)
23
+ * @param zod zod schema 本体(只需带 safeParse),其校验结果优先于 JSON Schema 子集
24
+ */
25
+ export function fromZod(jsonSchema, zod) {
26
+ const zp = zod;
27
+ if (typeof zp?.safeParse !== 'function') {
28
+ throw new Error('fromZod:第二参需为带 safeParse 的 zod schema(框架不 import zod,靠结构面识别)');
29
+ }
30
+ // 挂到隐藏字段:发给 API 时 JSON 序列化自动丢弃函数,不污染 input_schema
31
+ return {
32
+ ...jsonSchema,
33
+ __zodValidate: (input) => {
34
+ const r = zp.safeParse(input);
35
+ if (r.success)
36
+ return null;
37
+ const issue = r.error?.issues?.[0];
38
+ if (!issue)
39
+ return 'zod 校验失败';
40
+ const path = (issue.path ?? []).map(String).join('.');
41
+ return path ? `${path}: ${issue.message}` : (issue.message ?? 'zod 校验失败');
42
+ },
43
+ };
44
+ }
45
+ //# sourceMappingURL=zod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod.js","sourceRoot":"","sources":["../../src/toolkit/zod.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,OAAO,CAAC,UAAsB,EAAE,GAAY;IAC1D,MAAM,EAAE,GAAG,GAKV,CAAC;IACF,IAAI,OAAO,EAAE,EAAE,SAAS,KAAK,UAAU,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IACD,kDAAkD;IAClD,OAAO;QACL,GAAG,UAAU;QACb,aAAa,EAAE,CAAC,KAAc,EAAiB,EAAE;YAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,SAAU,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;YAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,KAAK;gBAAE,OAAO,UAAU,CAAC;YAC9B,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC;QAC5E,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,37 +1,47 @@
1
1
  {
2
2
  "name": "@migor/agentia",
3
- "version": "0.0.2",
3
+ "version": "0.2.0",
4
4
  "description": "面向应用开发者的声明式 agent 服务开发框架:装饰器 + DI 声明 tool/skill/subagent/prompt 单元,主 agent 编排执行,最终形态为流水线(pipeline)服务。",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
- "files": ["dist"],
8
+ "files": [
9
+ "dist"
10
+ ],
9
11
  "repository": "retrychx/agentia",
10
- "keywords": ["agent", "llm", "anthropic", "claude", "framework", "di", "decorators"],
11
- "engines": { "node": ">=18" },
12
- "publishConfig": { "access": "public" },
13
- "workspaces": ["packages/*"],
12
+ "keywords": [
13
+ "agent",
14
+ "llm",
15
+ "anthropic",
16
+ "claude",
17
+ "framework",
18
+ "di",
19
+ "decorators"
20
+ ],
21
+ "engines": {
22
+ "node": ">=18"
23
+ },
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "workspaces": [
28
+ "packages/*"
29
+ ],
14
30
  "scripts": {
15
31
  "build": "tsc -p tsconfig.json",
16
32
  "build:cli": "tsc -p packages/cli/tsconfig.json",
33
+ "deploy:website": "npx wrangler pages deploy packages/website/public --project-name=agentia-web",
17
34
  "prepublishOnly": "npm run build",
18
35
  "dev": "tsx watch src/index.ts",
19
36
  "typecheck": "tsc --noEmit -p tsconfig.json",
20
- "smoke": "npm run build && node scripts/smoke.mjs",
21
- "smoke:run": "npm run build && node scripts/smoke-run.mjs",
22
- "smoke:tools": "tsx scripts/smoke-tools.ts",
23
- "smoke:subagent": "tsx scripts/smoke-subagent.ts",
24
- "smoke:context": "tsx scripts/smoke-context.ts",
25
- "smoke:triggers": "tsx scripts/smoke-triggers.ts",
26
- "smoke:units": "tsx scripts/smoke-units.ts",
27
- "smoke:cli": "npm run build && npm run build:cli && tsx scripts/smoke-cli.ts",
28
- "live": "npm run build && node examples/live.mjs",
29
- "live:skill": "tsx examples/live-skill.ts"
37
+ "test": "node --import tsx --test \"tests/**/*.test.ts\"",
38
+ "e2e": "npm run build && npm run build:cli && tsx scripts/e2e-cli.ts"
30
39
  },
31
40
  "devDependencies": {
32
41
  "@types/node": "^22.0.0",
33
42
  "tsx": "^4.19.0",
34
- "typescript": "^7.0.2"
43
+ "typescript": "^7.0.2",
44
+ "zod": "^4.6.1"
35
45
  },
36
46
  "dependencies": {
37
47
  "@anthropic-ai/sdk": "^0.124.0"