experimental-agent 0.7.1 → 0.8.0-alpha.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.
@@ -0,0 +1,123 @@
1
+ // package.json
2
+ var package_default = {
3
+ name: "experimental-agent",
4
+ version: "0.8.0-alpha.1",
5
+ main: "./dist/index.js",
6
+ module: "./dist/index.mjs",
7
+ types: "./dist/index.d.ts",
8
+ sideEffects: true,
9
+ license: "MIT",
10
+ files: [
11
+ "dist/**"
12
+ ],
13
+ exports: {
14
+ ".": {
15
+ types: "./dist/index.d.ts",
16
+ import: "./dist/index.mjs",
17
+ require: "./dist/index.js"
18
+ },
19
+ "./storage": {
20
+ types: "./dist/storage.d.ts",
21
+ import: "./dist/storage.mjs",
22
+ require: "./dist/storage.js"
23
+ },
24
+ "./sandbox": {
25
+ types: "./dist/sandbox.d.ts",
26
+ import: "./dist/sandbox.mjs",
27
+ require: "./dist/sandbox.js"
28
+ },
29
+ "./next": {
30
+ types: "./dist/next.d.ts",
31
+ import: "./dist/next.mjs",
32
+ require: "./dist/next.js"
33
+ },
34
+ "./next/loader": {
35
+ types: "./dist/next/loader.d.ts",
36
+ import: "./dist/next/loader.mjs",
37
+ require: "./dist/next/loader.js"
38
+ },
39
+ "./next/agents": {
40
+ types: "./dist/next/agents.d.ts",
41
+ import: "./dist/next/agents.mjs",
42
+ require: "./dist/next/agents.js"
43
+ },
44
+ "./framework": {
45
+ types: "./dist/framework.d.ts",
46
+ import: "./dist/framework.mjs",
47
+ require: "./dist/framework.js"
48
+ },
49
+ "./framework-runtime": {
50
+ types: "./dist/framework-runtime.d.ts",
51
+ import: "./dist/framework-runtime.mjs",
52
+ require: "./dist/framework-runtime.js"
53
+ },
54
+ "./client": {
55
+ types: "./dist/client.d.ts",
56
+ import: "./dist/client.mjs",
57
+ require: "./dist/client.js"
58
+ },
59
+ "./lifecycle-workflow": {
60
+ types: "./dist/lifecycle-workflow.d.ts",
61
+ import: "./dist/lifecycle-workflow.mjs",
62
+ require: "./dist/lifecycle-workflow.js"
63
+ },
64
+ "./lifecycle-workflow-steps": {
65
+ types: "./dist/lifecycle-workflow-steps.d.ts",
66
+ import: "./dist/lifecycle-workflow-steps.mjs",
67
+ require: "./dist/lifecycle-workflow-steps.js"
68
+ },
69
+ "./react": {
70
+ types: "./dist/react.d.ts",
71
+ import: "./dist/react.mjs",
72
+ require: "./dist/react.js"
73
+ }
74
+ },
75
+ scripts: {
76
+ build: "tsup",
77
+ dev: "tsup --watch",
78
+ clean: "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
79
+ release: "pnpm build && npm publish",
80
+ typecheck: "tsc --noEmit",
81
+ test: "vitest run",
82
+ "test:watch": "vitest"
83
+ },
84
+ dependencies: {
85
+ "@elysiajs/openapi": "^1.4.14",
86
+ "@swc/core": "^1.10.0",
87
+ "@tanstack/react-query": "^5.90.21",
88
+ "@vercel/kv2": "^0.0.18",
89
+ "@vercel/oidc": "^3.1.0",
90
+ "@vercel/sandbox": "1.7.1",
91
+ "@workflow/serde": "4.1.0-beta.2",
92
+ "better-all": "^0.0.5",
93
+ elysia: "^1.4.25",
94
+ errore: "^0.14.0",
95
+ "fast-deep-equal": "^3.1.3",
96
+ ulid: "^3.0.2",
97
+ zod: "^4.3.6"
98
+ },
99
+ devDependencies: {
100
+ "@agent/tsconfig": "workspace:*",
101
+ "@ai-sdk/react": "^3.0.88",
102
+ "@types/node": "^20.11.24",
103
+ "@types/react": "^19.2.14",
104
+ dotenv: "^17.2.3",
105
+ next: "^16.0.0",
106
+ react: "^19.2.4",
107
+ tsup: "^8.0.2",
108
+ typescript: "5.5.4",
109
+ vitest: "^3.0.0",
110
+ workflow: "4.2.0-beta.70"
111
+ },
112
+ peerDependencies: {
113
+ ai: "^6.0.0"
114
+ },
115
+ publishConfig: {
116
+ access: "public"
117
+ }
118
+ };
119
+
120
+ export {
121
+ package_default
122
+ };
123
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vcGFja2FnZS5qc29uIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ7XG4gIFwibmFtZVwiOiBcImV4cGVyaW1lbnRhbC1hZ2VudFwiLFxuICBcInZlcnNpb25cIjogXCIwLjguMC1hbHBoYS4xXCIsXG4gIFwibWFpblwiOiBcIi4vZGlzdC9pbmRleC5qc1wiLFxuICBcIm1vZHVsZVwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcbiAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLnRzXCIsXG4gIFwic2lkZUVmZmVjdHNcIjogdHJ1ZSxcbiAgXCJsaWNlbnNlXCI6IFwiTUlUXCIsXG4gIFwiZmlsZXNcIjogW1xuICAgIFwiZGlzdC8qKlwiXG4gIF0sXG4gIFwiZXhwb3J0c1wiOiB7XG4gICAgXCIuXCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvaW5kZXgubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvaW5kZXguanNcIlxuICAgIH0sXG4gICAgXCIuL3N0b3JhZ2VcIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9zdG9yYWdlLmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L3N0b3JhZ2UubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3Qvc3RvcmFnZS5qc1wiXG4gICAgfSxcbiAgICBcIi4vc2FuZGJveFwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L3NhbmRib3guZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3Qvc2FuZGJveC5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9zYW5kYm94LmpzXCJcbiAgICB9LFxuICAgIFwiLi9uZXh0XCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbmV4dC5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9uZXh0Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L25leHQuanNcIlxuICAgIH0sXG4gICAgXCIuL25leHQvbG9hZGVyXCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIuanNcIlxuICAgIH0sXG4gICAgXCIuL25leHQvYWdlbnRzXCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbmV4dC9hZ2VudHMuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvbmV4dC9hZ2VudHMubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvbmV4dC9hZ2VudHMuanNcIlxuICAgIH0sXG4gICAgXCIuL2ZyYW1ld29ya1wiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L2ZyYW1ld29yay5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9mcmFtZXdvcmsubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvZnJhbWV3b3JrLmpzXCJcbiAgICB9LFxuICAgIFwiLi9mcmFtZXdvcmstcnVudGltZVwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L2ZyYW1ld29yay1ydW50aW1lLmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L2ZyYW1ld29yay1ydW50aW1lLm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L2ZyYW1ld29yay1ydW50aW1lLmpzXCJcbiAgICB9LFxuICAgIFwiLi9jbGllbnRcIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9jbGllbnQuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvY2xpZW50Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L2NsaWVudC5qc1wiXG4gICAgfSxcbiAgICBcIi4vbGlmZWN5Y2xlLXdvcmtmbG93XCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbGlmZWN5Y2xlLXdvcmtmbG93LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L2xpZmVjeWNsZS13b3JrZmxvdy5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9saWZlY3ljbGUtd29ya2Zsb3cuanNcIlxuICAgIH0sXG4gICAgXCIuL2xpZmVjeWNsZS13b3JrZmxvdy1zdGVwc1wiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L2xpZmVjeWNsZS13b3JrZmxvdy1zdGVwcy5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9saWZlY3ljbGUtd29ya2Zsb3ctc3RlcHMubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvbGlmZWN5Y2xlLXdvcmtmbG93LXN0ZXBzLmpzXCJcbiAgICB9LFxuICAgIFwiLi9yZWFjdFwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L3JlYWN0LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L3JlYWN0Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L3JlYWN0LmpzXCJcbiAgICB9XG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJidWlsZFwiOiBcInRzdXBcIixcbiAgICBcImRldlwiOiBcInRzdXAgLS13YXRjaFwiLFxuICAgIFwiY2xlYW5cIjogXCJybSAtcmYgLnR1cmJvICYmIHJtIC1yZiBub2RlX21vZHVsZXMgJiYgcm0gLXJmIGRpc3RcIixcbiAgICBcInJlbGVhc2VcIjogXCJwbnBtIGJ1aWxkICYmIG5wbSBwdWJsaXNoXCIsXG4gICAgXCJ0eXBlY2hlY2tcIjogXCJ0c2MgLS1ub0VtaXRcIixcbiAgICBcInRlc3RcIjogXCJ2aXRlc3QgcnVuXCIsXG4gICAgXCJ0ZXN0OndhdGNoXCI6IFwidml0ZXN0XCJcbiAgfSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGVseXNpYWpzL29wZW5hcGlcIjogXCJeMS40LjE0XCIsXG4gICAgXCJAc3djL2NvcmVcIjogXCJeMS4xMC4wXCIsXG4gICAgXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjogXCJeNS45MC4yMVwiLFxuICAgIFwiQHZlcmNlbC9rdjJcIjogXCJeMC4wLjE4XCIsXG4gICAgXCJAdmVyY2VsL29pZGNcIjogXCJeMy4xLjBcIixcbiAgICBcIkB2ZXJjZWwvc2FuZGJveFwiOiBcIjEuNy4xXCIsXG4gICAgXCJAd29ya2Zsb3cvc2VyZGVcIjogXCI0LjEuMC1iZXRhLjJcIixcbiAgICBcImJldHRlci1hbGxcIjogXCJeMC4wLjVcIixcbiAgICBcImVseXNpYVwiOiBcIl4xLjQuMjVcIixcbiAgICBcImVycm9yZVwiOiBcIl4wLjE0LjBcIixcbiAgICBcImZhc3QtZGVlcC1lcXVhbFwiOiBcIl4zLjEuM1wiLFxuICAgIFwidWxpZFwiOiBcIl4zLjAuMlwiLFxuICAgIFwiem9kXCI6IFwiXjQuMy42XCJcbiAgfSxcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGFnZW50L3RzY29uZmlnXCI6IFwid29ya3NwYWNlOipcIixcbiAgICBcIkBhaS1zZGsvcmVhY3RcIjogXCJeMy4wLjg4XCIsXG4gICAgXCJAdHlwZXMvbm9kZVwiOiBcIl4yMC4xMS4yNFwiLFxuICAgIFwiQHR5cGVzL3JlYWN0XCI6IFwiXjE5LjIuMTRcIixcbiAgICBcImRvdGVudlwiOiBcIl4xNy4yLjNcIixcbiAgICBcIm5leHRcIjogXCJeMTYuMC4wXCIsXG4gICAgXCJyZWFjdFwiOiBcIl4xOS4yLjRcIixcbiAgICBcInRzdXBcIjogXCJeOC4wLjJcIixcbiAgICBcInR5cGVzY3JpcHRcIjogXCI1LjUuNFwiLFxuICAgIFwidml0ZXN0XCI6IFwiXjMuMC4wXCIsXG4gICAgXCJ3b3JrZmxvd1wiOiBcIjQuMi4wLWJldGEuNzBcIlxuICB9LFxuICBcInBlZXJEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiYWlcIjogXCJeNi4wLjBcIlxuICB9LFxuICBcInB1Ymxpc2hDb25maWdcIjoge1xuICAgIFwiYWNjZXNzXCI6IFwicHVibGljXCJcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBO0FBQUEsRUFDRSxNQUFRO0FBQUEsRUFDUixTQUFXO0FBQUEsRUFDWCxNQUFRO0FBQUEsRUFDUixRQUFVO0FBQUEsRUFDVixPQUFTO0FBQUEsRUFDVCxhQUFlO0FBQUEsRUFDZixTQUFXO0FBQUEsRUFDWCxPQUFTO0FBQUEsSUFDUDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFNBQVc7QUFBQSxJQUNULEtBQUs7QUFBQSxNQUNILE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxhQUFhO0FBQUEsTUFDWCxPQUFTO0FBQUEsTUFDVCxRQUFVO0FBQUEsTUFDVixTQUFXO0FBQUEsSUFDYjtBQUFBLElBQ0EsYUFBYTtBQUFBLE1BQ1gsT0FBUztBQUFBLE1BQ1QsUUFBVTtBQUFBLE1BQ1YsU0FBVztBQUFBLElBQ2I7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxpQkFBaUI7QUFBQSxNQUNmLE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxpQkFBaUI7QUFBQSxNQUNmLE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxlQUFlO0FBQUEsTUFDYixPQUFTO0FBQUEsTUFDVCxRQUFVO0FBQUEsTUFDVixTQUFXO0FBQUEsSUFDYjtBQUFBLElBQ0EsdUJBQXVCO0FBQUEsTUFDckIsT0FBUztBQUFBLE1BQ1QsUUFBVTtBQUFBLE1BQ1YsU0FBVztBQUFBLElBQ2I7QUFBQSxJQUNBLFlBQVk7QUFBQSxNQUNWLE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSx3QkFBd0I7QUFBQSxNQUN0QixPQUFTO0FBQUEsTUFDVCxRQUFVO0FBQUEsTUFDVixTQUFXO0FBQUEsSUFDYjtBQUFBLElBQ0EsOEJBQThCO0FBQUEsTUFDNUIsT0FBUztBQUFBLE1BQ1QsUUFBVTtBQUFBLE1BQ1YsU0FBVztBQUFBLElBQ2I7QUFBQSxJQUNBLFdBQVc7QUFBQSxNQUNULE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsRUFDRjtBQUFBLEVBQ0EsU0FBVztBQUFBLElBQ1QsT0FBUztBQUFBLElBQ1QsS0FBTztBQUFBLElBQ1AsT0FBUztBQUFBLElBQ1QsU0FBVztBQUFBLElBQ1gsV0FBYTtBQUFBLElBQ2IsTUFBUTtBQUFBLElBQ1IsY0FBYztBQUFBLEVBQ2hCO0FBQUEsRUFDQSxjQUFnQjtBQUFBLElBQ2QscUJBQXFCO0FBQUEsSUFDckIsYUFBYTtBQUFBLElBQ2IseUJBQXlCO0FBQUEsSUFDekIsZUFBZTtBQUFBLElBQ2YsZ0JBQWdCO0FBQUEsSUFDaEIsbUJBQW1CO0FBQUEsSUFDbkIsbUJBQW1CO0FBQUEsSUFDbkIsY0FBYztBQUFBLElBQ2QsUUFBVTtBQUFBLElBQ1YsUUFBVTtBQUFBLElBQ1YsbUJBQW1CO0FBQUEsSUFDbkIsTUFBUTtBQUFBLElBQ1IsS0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLGlCQUFtQjtBQUFBLElBQ2pCLG1CQUFtQjtBQUFBLElBQ25CLGlCQUFpQjtBQUFBLElBQ2pCLGVBQWU7QUFBQSxJQUNmLGdCQUFnQjtBQUFBLElBQ2hCLFFBQVU7QUFBQSxJQUNWLE1BQVE7QUFBQSxJQUNSLE9BQVM7QUFBQSxJQUNULE1BQVE7QUFBQSxJQUNSLFlBQWM7QUFBQSxJQUNkLFFBQVU7QUFBQSxJQUNWLFVBQVk7QUFBQSxFQUNkO0FBQUEsRUFDQSxrQkFBb0I7QUFBQSxJQUNsQixJQUFNO0FBQUEsRUFDUjtBQUFBLEVBQ0EsZUFBaUI7QUFBQSxJQUNmLFFBQVU7QUFBQSxFQUNaO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -6,6 +6,7 @@ import * as ai from 'ai';
6
6
  import { UIMessage, InferToolInput, ModelMessage, ToolSet, InferUITools, GatewayModelId } from 'ai';
7
7
  import { z } from 'zod';
8
8
  import { WORKFLOW_SERIALIZE, WORKFLOW_DESERIALIZE } from '@workflow/serde';
9
+ import { S as SkillInput } from './types-B3lbsOa7.js';
9
10
 
10
11
  type BuiltInBindings = SandboxBinding<"local", LocalBindingConfig, LocalBindingMetadata> | SandboxBinding<"vercel", VercelBindingConfig, VercelBindingMetadata> | SandboxBinding<"docker", DockerBindingConfig, DockerBindingMetadata>;
11
12
 
@@ -64,58 +65,6 @@ type SessionUsage = {
64
65
  byMessageId: Record<string, UsageSummary | null>;
65
66
  };
66
67
 
67
- type SkillSourceType = "sandbox" | "host" | "git" | "inline";
68
- type SandboxSkillInput = {
69
- type: "sandbox";
70
- path: string;
71
- };
72
- type HostSkillInput = {
73
- type: "host";
74
- path: string;
75
- };
76
- type GitSkillInput = {
77
- type: "git";
78
- repo: string;
79
- ref?: string;
80
- path?: string;
81
- /**
82
- * Skill directory name under `path`.
83
- */
84
- name?: string;
85
- };
86
- type InlineSkillInput = {
87
- type: "inline";
88
- name: string;
89
- description: string;
90
- instructions: string;
91
- };
92
- type SkillInput = SandboxSkillInput | HostSkillInput | GitSkillInput | InlineSkillInput;
93
- type SandboxSkillEntry = {
94
- type: "sandbox";
95
- path: string;
96
- };
97
- type HostSkillEntry = {
98
- type: "host";
99
- path: string;
100
- };
101
- type GitSkillEntry = {
102
- type: "git";
103
- repo: string;
104
- ref?: string;
105
- path?: string;
106
- /**
107
- * Skill directory name under `path`.
108
- */
109
- name?: string;
110
- };
111
- type InlineSkillEntry = {
112
- type: "inline";
113
- name: string;
114
- description: string;
115
- instructions: string;
116
- };
117
- type SkillEntry = SandboxSkillEntry | HostSkillEntry | GitSkillEntry | InlineSkillEntry;
118
-
119
68
  type ToolContext<TContext = Record<string, unknown>, TState = Record<string, unknown>> = {
120
69
  context: TContext;
121
70
  state: TState;
@@ -486,9 +435,15 @@ declare class Agent<TMessageMetadata = unknown, Tools extends ToolSet = ToolSet,
486
435
  signal?: AbortSignal;
487
436
  } | undefined) => Promise<"pending" | "running" | "stopping" | "stopped" | "failed">;
488
437
  };
438
+ /**
439
+ * Create a derived agent with merged options. The returned agent is NOT
440
+ * registered in the workflow registry – it's a one-off instance used by
441
+ * the framework to layer fs-scanned config onto an agent.ts definition.
442
+ */
443
+ extend(fn: (options: AgentOptions<Tools, TSandboxBindings, TContext, TState, TMessageMetadata>) => AgentOptions<Tools, TSandboxBindings, TContext, TState, TMessageMetadata>): Agent<TMessageMetadata, Tools, TSandboxBindings, TContext, TState>;
489
444
  /** Phantom property for type inference. Use `typeof myAgent.$UIMessage` to get the typed UIMessage. */
490
445
  readonly $UIMessage: UIMessage<TMessageMetadata, AgentDataTypes, InferUITools<typeof builtInTools & Tools>>;
491
446
  }
492
447
  declare function agent<Tools extends ToolSet = ToolSet, TSandboxBindings extends SandboxBinding | SandboxBinding[] = SandboxBinding, TContext extends Record<string, unknown> = Record<string, never>, TState extends Record<string, unknown> = Record<string, unknown>, TMessageMetadata = unknown>(name: string, options?: AgentOptions<Tools, TSandboxBindings, TContext, TState, TMessageMetadata>): Agent<TMessageMetadata, Tools, TSandboxBindings, TContext, TState>;
493
448
 
494
- export { type AnyAgent as A, type BuiltInToolName as B, type GitSkillEntry as G, type HostSkillEntry as H, type InferSession as I, type NeedsApprovalMap as N, type Resolvable as R, type SessionSendArgs as S, type ToolContext as T, type UsageSummary as U, type WorkflowRunLike as W, AgentStatus as a, type SendResult as b, type AgentDataTypes as c, type AgentHooks as d, type AgentOptions as e, type ApprovalData as f, type GitSkillInput as g, type HostSkillInput as h, type InferUIMessage as i, type InlineSkillEntry as j, type InlineSkillInput as k, type ResolvableArgs as l, type SandboxSkillEntry as m, type SandboxSkillInput as n, type SendInput as o, type SessionDefaults as p, type SkillEntry as q, type SkillInput as r, type SkillSourceType as s, type StepUsage as t, agent as u, builtinToolNames as v };
449
+ export { type AnyAgent as A, type BuiltInToolName as B, type InferSession as I, type NeedsApprovalMap as N, type Resolvable as R, type SessionSendArgs as S, type ToolContext as T, type UsageSummary as U, type WorkflowRunLike as W, AgentStatus as a, type SendResult as b, type AgentDataTypes as c, type AgentHooks as d, type AgentOptions as e, type ApprovalData as f, type InferUIMessage as g, type ResolvableArgs as h, type SendInput as i, type SessionDefaults as j, type StepUsage as k, agent as l, builtinToolNames as m };
@@ -6,6 +6,7 @@ import * as ai from 'ai';
6
6
  import { UIMessage, InferToolInput, ModelMessage, ToolSet, InferUITools, GatewayModelId } from 'ai';
7
7
  import { z } from 'zod';
8
8
  import { WORKFLOW_SERIALIZE, WORKFLOW_DESERIALIZE } from '@workflow/serde';
9
+ import { S as SkillInput } from './types-B3lbsOa7.mjs';
9
10
 
10
11
  type BuiltInBindings = SandboxBinding<"local", LocalBindingConfig, LocalBindingMetadata> | SandboxBinding<"vercel", VercelBindingConfig, VercelBindingMetadata> | SandboxBinding<"docker", DockerBindingConfig, DockerBindingMetadata>;
11
12
 
@@ -64,58 +65,6 @@ type SessionUsage = {
64
65
  byMessageId: Record<string, UsageSummary | null>;
65
66
  };
66
67
 
67
- type SkillSourceType = "sandbox" | "host" | "git" | "inline";
68
- type SandboxSkillInput = {
69
- type: "sandbox";
70
- path: string;
71
- };
72
- type HostSkillInput = {
73
- type: "host";
74
- path: string;
75
- };
76
- type GitSkillInput = {
77
- type: "git";
78
- repo: string;
79
- ref?: string;
80
- path?: string;
81
- /**
82
- * Skill directory name under `path`.
83
- */
84
- name?: string;
85
- };
86
- type InlineSkillInput = {
87
- type: "inline";
88
- name: string;
89
- description: string;
90
- instructions: string;
91
- };
92
- type SkillInput = SandboxSkillInput | HostSkillInput | GitSkillInput | InlineSkillInput;
93
- type SandboxSkillEntry = {
94
- type: "sandbox";
95
- path: string;
96
- };
97
- type HostSkillEntry = {
98
- type: "host";
99
- path: string;
100
- };
101
- type GitSkillEntry = {
102
- type: "git";
103
- repo: string;
104
- ref?: string;
105
- path?: string;
106
- /**
107
- * Skill directory name under `path`.
108
- */
109
- name?: string;
110
- };
111
- type InlineSkillEntry = {
112
- type: "inline";
113
- name: string;
114
- description: string;
115
- instructions: string;
116
- };
117
- type SkillEntry = SandboxSkillEntry | HostSkillEntry | GitSkillEntry | InlineSkillEntry;
118
-
119
68
  type ToolContext<TContext = Record<string, unknown>, TState = Record<string, unknown>> = {
120
69
  context: TContext;
121
70
  state: TState;
@@ -486,9 +435,15 @@ declare class Agent<TMessageMetadata = unknown, Tools extends ToolSet = ToolSet,
486
435
  signal?: AbortSignal;
487
436
  } | undefined) => Promise<"pending" | "running" | "stopping" | "stopped" | "failed">;
488
437
  };
438
+ /**
439
+ * Create a derived agent with merged options. The returned agent is NOT
440
+ * registered in the workflow registry – it's a one-off instance used by
441
+ * the framework to layer fs-scanned config onto an agent.ts definition.
442
+ */
443
+ extend(fn: (options: AgentOptions<Tools, TSandboxBindings, TContext, TState, TMessageMetadata>) => AgentOptions<Tools, TSandboxBindings, TContext, TState, TMessageMetadata>): Agent<TMessageMetadata, Tools, TSandboxBindings, TContext, TState>;
489
444
  /** Phantom property for type inference. Use `typeof myAgent.$UIMessage` to get the typed UIMessage. */
490
445
  readonly $UIMessage: UIMessage<TMessageMetadata, AgentDataTypes, InferUITools<typeof builtInTools & Tools>>;
491
446
  }
492
447
  declare function agent<Tools extends ToolSet = ToolSet, TSandboxBindings extends SandboxBinding | SandboxBinding[] = SandboxBinding, TContext extends Record<string, unknown> = Record<string, never>, TState extends Record<string, unknown> = Record<string, unknown>, TMessageMetadata = unknown>(name: string, options?: AgentOptions<Tools, TSandboxBindings, TContext, TState, TMessageMetadata>): Agent<TMessageMetadata, Tools, TSandboxBindings, TContext, TState>;
493
448
 
494
- export { type AnyAgent as A, type BuiltInToolName as B, type GitSkillEntry as G, type HostSkillEntry as H, type InferSession as I, type NeedsApprovalMap as N, type Resolvable as R, type SessionSendArgs as S, type ToolContext as T, type UsageSummary as U, type WorkflowRunLike as W, AgentStatus as a, type SendResult as b, type AgentDataTypes as c, type AgentHooks as d, type AgentOptions as e, type ApprovalData as f, type GitSkillInput as g, type HostSkillInput as h, type InferUIMessage as i, type InlineSkillEntry as j, type InlineSkillInput as k, type ResolvableArgs as l, type SandboxSkillEntry as m, type SandboxSkillInput as n, type SendInput as o, type SessionDefaults as p, type SkillEntry as q, type SkillInput as r, type SkillSourceType as s, type StepUsage as t, agent as u, builtinToolNames as v };
449
+ export { type AnyAgent as A, type BuiltInToolName as B, type InferSession as I, type NeedsApprovalMap as N, type Resolvable as R, type SessionSendArgs as S, type ToolContext as T, type UsageSummary as U, type WorkflowRunLike as W, AgentStatus as a, type SendResult as b, type AgentDataTypes as c, type AgentHooks as d, type AgentOptions as e, type ApprovalData as f, type InferUIMessage as g, type ResolvableArgs as h, type SendInput as i, type SessionDefaults as j, type StepUsage as k, agent as l, builtinToolNames as m };
@@ -0,0 +1,61 @@
1
+ import { S as SkillInput } from './types-B3lbsOa7.js';
2
+
3
+ type AgentDir = {
4
+ name: string;
5
+ absolutePath: string;
6
+ hasAgentConfig: boolean;
7
+ };
8
+ type ScannedAgent = AgentDir & {
9
+ skills: SkillInput[];
10
+ systemPrompt: string | undefined;
11
+ tsSkillImportPaths: string[];
12
+ };
13
+
14
+ declare function generateRegistry(opts: {
15
+ agents: ScannedAgent[];
16
+ outputDir: string;
17
+ }): string;
18
+
19
+ /**
20
+ * Framework-agnostic core for filesystem-based agent discovery and
21
+ * registry code generation. Adapters like {@link Next} receive a
22
+ * `Framework` instance and use it to scan agents and produce registry
23
+ * source code.
24
+ */
25
+ declare class Framework {
26
+ readonly cwd: string;
27
+ readonly agentsDir: string | undefined;
28
+ readonly log: (...args: unknown[]) => void;
29
+ constructor(opts: {
30
+ /**
31
+ * Project root directory.
32
+ * @defaultValue `process.cwd()`
33
+ */
34
+ cwd?: string;
35
+ /**
36
+ * Path to the agents directory, relative to `cwd`.
37
+ * When omitted, auto-detected as the first existing directory
38
+ * among `src/agents` and `agents`.
39
+ */
40
+ agentsDir?: string;
41
+ /** Enable verbose logging to stdout. */
42
+ debug?: boolean;
43
+ });
44
+ /**
45
+ * Scan the agents directory and return metadata for every agent found.
46
+ * Each subfolder inside the agents directory becomes one agent.
47
+ * Returns an empty array when no agents directory exists.
48
+ */
49
+ discoverAgents(): ScannedAgent[];
50
+ /**
51
+ * Generate the TypeScript source for an agent registry module.
52
+ *
53
+ * @param opts.agents - Scanned agents to include in the registry.
54
+ * @param opts.outputDir - Directory where the registry file will be written
55
+ * (used to compute relative import paths to each agent's config module).
56
+ * @returns The full source text of the generated `_registry.ts` file.
57
+ */
58
+ generateRegistrySource: typeof generateRegistry;
59
+ }
60
+
61
+ export { Framework as F };
@@ -0,0 +1,61 @@
1
+ import { S as SkillInput } from './types-B3lbsOa7.mjs';
2
+
3
+ type AgentDir = {
4
+ name: string;
5
+ absolutePath: string;
6
+ hasAgentConfig: boolean;
7
+ };
8
+ type ScannedAgent = AgentDir & {
9
+ skills: SkillInput[];
10
+ systemPrompt: string | undefined;
11
+ tsSkillImportPaths: string[];
12
+ };
13
+
14
+ declare function generateRegistry(opts: {
15
+ agents: ScannedAgent[];
16
+ outputDir: string;
17
+ }): string;
18
+
19
+ /**
20
+ * Framework-agnostic core for filesystem-based agent discovery and
21
+ * registry code generation. Adapters like {@link Next} receive a
22
+ * `Framework` instance and use it to scan agents and produce registry
23
+ * source code.
24
+ */
25
+ declare class Framework {
26
+ readonly cwd: string;
27
+ readonly agentsDir: string | undefined;
28
+ readonly log: (...args: unknown[]) => void;
29
+ constructor(opts: {
30
+ /**
31
+ * Project root directory.
32
+ * @defaultValue `process.cwd()`
33
+ */
34
+ cwd?: string;
35
+ /**
36
+ * Path to the agents directory, relative to `cwd`.
37
+ * When omitted, auto-detected as the first existing directory
38
+ * among `src/agents` and `agents`.
39
+ */
40
+ agentsDir?: string;
41
+ /** Enable verbose logging to stdout. */
42
+ debug?: boolean;
43
+ });
44
+ /**
45
+ * Scan the agents directory and return metadata for every agent found.
46
+ * Each subfolder inside the agents directory becomes one agent.
47
+ * Returns an empty array when no agents directory exists.
48
+ */
49
+ discoverAgents(): ScannedAgent[];
50
+ /**
51
+ * Generate the TypeScript source for an agent registry module.
52
+ *
53
+ * @param opts.agents - Scanned agents to include in the registry.
54
+ * @param opts.outputDir - Directory where the registry file will be written
55
+ * (used to compute relative import paths to each agent's config module).
56
+ * @returns The full source text of the generated `_registry.ts` file.
57
+ */
58
+ generateRegistrySource: typeof generateRegistry;
59
+ }
60
+
61
+ export { Framework as F };
@@ -0,0 +1,37 @@
1
+ import { r as resolveFrameworkAgent } from './resolve-Cma6YFgx.mjs';
2
+ import './client-PuttJd6O.mjs';
3
+ import '@vercel/sandbox';
4
+ import './steps-ChOeFWAq.mjs';
5
+ import './adapter-CFq5IeYI.mjs';
6
+ import '@workflow/serde';
7
+ import 'ai';
8
+ import './entry-CRBUC5DB.mjs';
9
+ import 'zod';
10
+ import './types-B3lbsOa7.mjs';
11
+
12
+ /**
13
+ * Request-time utilities for the framework router.
14
+ *
15
+ * Used inside generated route handlers to resolve an agent by name
16
+ * from a registry produced at build time.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * import { runtime } from "experimental-agent/framework-runtime";
21
+ *
22
+ * const agent = await runtime.resolveAgent({ name, agents });
23
+ * ```
24
+ */
25
+ declare const runtime: {
26
+ /**
27
+ * Look up an agent by name from a generated registry, merging any
28
+ * filesystem-scanned config (system prompts, skills) on top of the
29
+ * agent's own options. Results are cached for the lifetime of the
30
+ * process.
31
+ *
32
+ * Returns `null` when the name doesn't match any registry entry.
33
+ */
34
+ resolveAgent: typeof resolveFrameworkAgent;
35
+ };
36
+
37
+ export { runtime };
@@ -0,0 +1,37 @@
1
+ import { r as resolveFrameworkAgent } from './resolve-BZ26gcyj.js';
2
+ import './client-DIanpEQ_.js';
3
+ import '@vercel/sandbox';
4
+ import './steps-DWTQiAPt.js';
5
+ import './adapter-CFq5IeYI.js';
6
+ import '@workflow/serde';
7
+ import 'ai';
8
+ import './entry-BUYBv4Cu.js';
9
+ import 'zod';
10
+ import './types-B3lbsOa7.js';
11
+
12
+ /**
13
+ * Request-time utilities for the framework router.
14
+ *
15
+ * Used inside generated route handlers to resolve an agent by name
16
+ * from a registry produced at build time.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * import { runtime } from "experimental-agent/framework-runtime";
21
+ *
22
+ * const agent = await runtime.resolveAgent({ name, agents });
23
+ * ```
24
+ */
25
+ declare const runtime: {
26
+ /**
27
+ * Look up an agent by name from a generated registry, merging any
28
+ * filesystem-scanned config (system prompts, skills) on top of the
29
+ * agent's own options. Results are cached for the lifetime of the
30
+ * process.
31
+ *
32
+ * Returns `null` when the name doesn't match any registry entry.
33
+ */
34
+ resolveAgent: typeof resolveFrameworkAgent;
35
+ };
36
+
37
+ export { runtime };