@finalai/agent-definition 0.1.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.

Potentially problematic release.


This version of @finalai/agent-definition might be problematic. Click here for more details.

Files changed (206) hide show
  1. package/README.md +16 -0
  2. package/THIRD_PARTY_NOTICES.md +303 -0
  3. package/dist/compiler-assets/chunk-2CZRHOLL.ts +10 -0
  4. package/dist/compiler-assets/chunk-32O3ODZE.ts +39 -0
  5. package/dist/compiler-assets/chunk-5BK6FVRE.ts +75 -0
  6. package/dist/compiler-assets/chunk-6WR3PGNF.ts +0 -0
  7. package/dist/compiler-assets/chunk-7QP2CKPI.ts +30 -0
  8. package/dist/compiler-assets/chunk-7VSSVZM4.ts +55 -0
  9. package/dist/compiler-assets/chunk-7WGYG73V.ts +42 -0
  10. package/dist/compiler-assets/chunk-BLB6JGLO.ts +481 -0
  11. package/dist/compiler-assets/chunk-CWWRTRWW.ts +76 -0
  12. package/dist/compiler-assets/chunk-EVQIK62B.ts +188 -0
  13. package/dist/compiler-assets/chunk-GNR7XBPN.ts +3364 -0
  14. package/dist/compiler-assets/chunk-GTUZOATD.ts +10 -0
  15. package/dist/compiler-assets/chunk-HFS4KLEL.ts +10 -0
  16. package/dist/compiler-assets/chunk-HGW4YHAY.ts +6865 -0
  17. package/dist/compiler-assets/chunk-HNPUTP35.ts +172 -0
  18. package/dist/compiler-assets/chunk-JIPNTA56.ts +59 -0
  19. package/dist/compiler-assets/chunk-JNJE72EH.ts +10 -0
  20. package/dist/compiler-assets/chunk-JPY4L2UJ.ts +349 -0
  21. package/dist/compiler-assets/chunk-JTGTLYDT.ts +0 -0
  22. package/dist/compiler-assets/chunk-LUSAAV4L.ts +33 -0
  23. package/dist/compiler-assets/chunk-MZMSKIKU.ts +472 -0
  24. package/dist/compiler-assets/chunk-NMYHO2QN.ts +25 -0
  25. package/dist/compiler-assets/chunk-NYTOYKKF.ts +28 -0
  26. package/dist/compiler-assets/chunk-OWC6SFFF.ts +295 -0
  27. package/dist/compiler-assets/chunk-QMKWAFVZ.ts +59 -0
  28. package/dist/compiler-assets/chunk-QMWTDPNT.ts +79 -0
  29. package/dist/compiler-assets/chunk-RWUIMTBI.ts +13 -0
  30. package/dist/compiler-assets/chunk-SKTNMUO7.ts +64 -0
  31. package/dist/compiler-assets/chunk-T6WG4L4M.ts +19 -0
  32. package/dist/compiler-assets/chunk-TATN3PYK.ts +81 -0
  33. package/dist/compiler-assets/chunk-VHXHUU7L.ts +16 -0
  34. package/dist/compiler-assets/chunk-WMXMVFHM.ts +121 -0
  35. package/dist/compiler-assets/chunk-XHKPWT3G.ts +55 -0
  36. package/dist/compiler-assets/chunk-ZDLVA6XF.ts +476 -0
  37. package/dist/compiler-assets/src/authoring/agent.ts +10 -0
  38. package/dist/compiler-assets/src/authoring/approval.ts +19 -0
  39. package/dist/compiler-assets/src/authoring/brand.ts +23 -0
  40. package/dist/compiler-assets/src/authoring/channels.ts +26 -0
  41. package/dist/compiler-assets/src/authoring/connections.ts +10 -0
  42. package/dist/compiler-assets/src/authoring/context.ts +7 -0
  43. package/dist/compiler-assets/src/authoring/credentials.ts +21 -0
  44. package/dist/compiler-assets/src/authoring/dynamic.ts +10 -0
  45. package/dist/compiler-assets/src/authoring/harness.ts +17 -0
  46. package/dist/compiler-assets/src/authoring/hooks.ts +28 -0
  47. package/dist/compiler-assets/src/authoring/index.ts +110 -0
  48. package/dist/compiler-assets/src/authoring/instructions.ts +14 -0
  49. package/dist/compiler-assets/src/authoring/sandbox.ts +25 -0
  50. package/dist/compiler-assets/src/authoring/schedules.ts +10 -0
  51. package/dist/compiler-assets/src/authoring/skills.ts +10 -0
  52. package/dist/compiler-assets/src/authoring/tools.ts +23 -0
  53. package/dist/compiler-assets/src/compatibility.ts +14810 -0
  54. package/dist/compiler-assets/src/compiler/evaluate-child.mjs +77 -0
  55. package/dist/compiler-assets/src/index.ts +195 -0
  56. package/dist/compiler-assets/src/manifest.ts +72 -0
  57. package/dist/compiler-assets/src/resolve.ts +19 -0
  58. package/dist/compiler-assets/src/runtime/bundle.ts +72 -0
  59. package/dist/compiler-assets/src/runtime/describe.ts +31 -0
  60. package/dist/compiler-assets/src/runtime/described.ts +142 -0
  61. package/dist/compiler-assets/src/runtime/isolate.ts +28 -0
  62. package/dist/compiler-assets/src/runtime/layout.ts +15 -0
  63. package/dist/compiler-assets/src/runtime/lower.ts +52 -0
  64. package/dist/compiler-assets/src/runtime/schema-validation.ts +21 -0
  65. package/dist/compiler-assets/src/runtime/values.ts +38 -0
  66. package/dist/modules/authoring/agent.d.mts +22 -0
  67. package/dist/modules/authoring/agent.mjs +6 -0
  68. package/dist/modules/authoring/agent.mjs.map +7 -0
  69. package/dist/modules/authoring/approval.d.mts +17 -0
  70. package/dist/modules/authoring/approval.mjs +42 -0
  71. package/dist/modules/authoring/approval.mjs.map +7 -0
  72. package/dist/modules/authoring/brand.d.mts +27 -0
  73. package/dist/modules/authoring/brand.mjs +51 -0
  74. package/dist/modules/authoring/brand.mjs.map +7 -0
  75. package/dist/modules/authoring/channels.d.mts +41 -0
  76. package/dist/modules/authoring/channels.mjs +65 -0
  77. package/dist/modules/authoring/channels.mjs.map +7 -0
  78. package/dist/modules/authoring/connections.d.mts +23 -0
  79. package/dist/modules/authoring/connections.mjs +6 -0
  80. package/dist/modules/authoring/connections.mjs.map +7 -0
  81. package/dist/modules/authoring/context.d.mts +83 -0
  82. package/dist/modules/authoring/context.mjs +12 -0
  83. package/dist/modules/authoring/context.mjs.map +7 -0
  84. package/dist/modules/authoring/credentials.d.mts +10 -0
  85. package/dist/modules/authoring/credentials.mjs +31 -0
  86. package/dist/modules/authoring/credentials.mjs.map +7 -0
  87. package/dist/modules/authoring/dynamic.d.mts +30 -0
  88. package/dist/modules/authoring/dynamic.mjs +15 -0
  89. package/dist/modules/authoring/dynamic.mjs.map +7 -0
  90. package/dist/modules/authoring/harness.d.mts +85 -0
  91. package/dist/modules/authoring/harness.mjs +55 -0
  92. package/dist/modules/authoring/harness.mjs.map +7 -0
  93. package/dist/modules/authoring/hooks.d.mts +120 -0
  94. package/dist/modules/authoring/hooks.mjs +72 -0
  95. package/dist/modules/authoring/hooks.mjs.map +7 -0
  96. package/dist/modules/authoring/index.d.mts +27 -0
  97. package/dist/modules/authoring/index.mjs +63 -0
  98. package/dist/modules/authoring/index.mjs.map +7 -0
  99. package/dist/modules/authoring/instructions.d.mts +13 -0
  100. package/dist/modules/authoring/instructions.mjs +15 -0
  101. package/dist/modules/authoring/instructions.mjs.map +7 -0
  102. package/dist/modules/authoring/sandbox.d.mts +21 -0
  103. package/dist/modules/authoring/sandbox.mjs +13 -0
  104. package/dist/modules/authoring/sandbox.mjs.map +7 -0
  105. package/dist/modules/authoring/schedules.d.mts +8 -0
  106. package/dist/modules/authoring/schedules.mjs +6 -0
  107. package/dist/modules/authoring/schedules.mjs.map +7 -0
  108. package/dist/modules/authoring/skills.d.mts +8 -0
  109. package/dist/modules/authoring/skills.mjs +6 -0
  110. package/dist/modules/authoring/skills.mjs.map +7 -0
  111. package/dist/modules/authoring/tools.d.mts +80 -0
  112. package/dist/modules/authoring/tools.mjs +70 -0
  113. package/dist/modules/authoring/tools.mjs.map +7 -0
  114. package/dist/modules/compatibility.d.mts +36 -0
  115. package/dist/modules/compatibility.mjs +536 -0
  116. package/dist/modules/compatibility.mjs.map +7 -0
  117. package/dist/modules/compiler/assemble.d.mts +30 -0
  118. package/dist/modules/compiler/assemble.mjs +923 -0
  119. package/dist/modules/compiler/assemble.mjs.map +7 -0
  120. package/dist/modules/compiler/bundle.d.mts +22 -0
  121. package/dist/modules/compiler/bundle.mjs +385 -0
  122. package/dist/modules/compiler/bundle.mjs.map +7 -0
  123. package/dist/modules/compiler/diagnostics.d.mts +40 -0
  124. package/dist/modules/compiler/diagnostics.mjs +38 -0
  125. package/dist/modules/compiler/diagnostics.mjs.map +7 -0
  126. package/dist/modules/compiler/discovery.d.mts +36 -0
  127. package/dist/modules/compiler/discovery.mjs +158 -0
  128. package/dist/modules/compiler/discovery.mjs.map +7 -0
  129. package/dist/modules/compiler/evaluate.d.mts +13 -0
  130. package/dist/modules/compiler/evaluate.mjs +194 -0
  131. package/dist/modules/compiler/evaluate.mjs.map +7 -0
  132. package/dist/modules/compiler/files.d.mts +19 -0
  133. package/dist/modules/compiler/files.mjs +90 -0
  134. package/dist/modules/compiler/files.mjs.map +7 -0
  135. package/dist/modules/compiler/frontmatter.d.mts +9 -0
  136. package/dist/modules/compiler/frontmatter.mjs +34 -0
  137. package/dist/modules/compiler/frontmatter.mjs.map +7 -0
  138. package/dist/modules/compiler/index.d.mts +49 -0
  139. package/dist/modules/compiler/index.mjs +244 -0
  140. package/dist/modules/compiler/index.mjs.map +7 -0
  141. package/dist/modules/compiler/load.d.mts +8 -0
  142. package/dist/modules/compiler/load.mjs +45 -0
  143. package/dist/modules/compiler/load.mjs.map +7 -0
  144. package/dist/modules/compiler/local-isolate.d.mts +20 -0
  145. package/dist/modules/compiler/local-isolate.mjs +93 -0
  146. package/dist/modules/compiler/local-isolate.mjs.map +7 -0
  147. package/dist/modules/compiler/packages.d.mts +66 -0
  148. package/dist/modules/compiler/packages.mjs +307 -0
  149. package/dist/modules/compiler/packages.mjs.map +7 -0
  150. package/dist/modules/index.d.mts +7 -0
  151. package/dist/modules/index.mjs +25 -0
  152. package/dist/modules/index.mjs.map +7 -0
  153. package/dist/modules/manifest.d.mts +2 -0
  154. package/dist/modules/manifest.mjs +67 -0
  155. package/dist/modules/manifest.mjs.map +7 -0
  156. package/dist/modules/resolve.d.mts +24 -0
  157. package/dist/modules/resolve.mjs +176 -0
  158. package/dist/modules/resolve.mjs.map +7 -0
  159. package/dist/modules/runtime/bundle.d.mts +12 -0
  160. package/dist/modules/runtime/bundle.mjs +48 -0
  161. package/dist/modules/runtime/bundle.mjs.map +7 -0
  162. package/dist/modules/runtime/describe.d.mts +19 -0
  163. package/dist/modules/runtime/describe.mjs +471 -0
  164. package/dist/modules/runtime/describe.mjs.map +7 -0
  165. package/dist/modules/runtime/described.d.mts +376 -0
  166. package/dist/modules/runtime/described.mjs +116 -0
  167. package/dist/modules/runtime/described.mjs.map +7 -0
  168. package/dist/modules/runtime/isolate.d.mts +70 -0
  169. package/dist/modules/runtime/isolate.mjs +454 -0
  170. package/dist/modules/runtime/isolate.mjs.map +7 -0
  171. package/dist/modules/runtime/layout.d.mts +21 -0
  172. package/dist/modules/runtime/layout.mjs +24 -0
  173. package/dist/modules/runtime/layout.mjs.map +7 -0
  174. package/dist/modules/runtime/lower.d.mts +73 -0
  175. package/dist/modules/runtime/lower.mjs +463 -0
  176. package/dist/modules/runtime/lower.mjs.map +7 -0
  177. package/dist/modules/runtime/schema-validation.d.mts +21 -0
  178. package/dist/modules/runtime/schema-validation.mjs +238 -0
  179. package/dist/modules/runtime/schema-validation.mjs.map +7 -0
  180. package/dist/modules/runtime/values.d.mts +20 -0
  181. package/dist/modules/runtime/values.mjs +48 -0
  182. package/dist/modules/runtime/values.mjs.map +7 -0
  183. package/fixtures/acme-fleet/agent/agent.ts +74 -0
  184. package/fixtures/acme-fleet/agent/instructions.md +1 -0
  185. package/fixtures/assistant/agent/agent.ts +16 -0
  186. package/fixtures/assistant/agent/instructions.md +1 -0
  187. package/fixtures/assistant/agent/tools/current_time.ts +9 -0
  188. package/fixtures/assistant-with-tools/agent/agent.ts +16 -0
  189. package/fixtures/assistant-with-tools/agent/instructions.md +1 -0
  190. package/fixtures/assistant-with-tools/agent/tools/current_time.ts +9 -0
  191. package/fixtures/final-connection/agent/agent.ts +15 -0
  192. package/fixtures/final-connection/agent/connections/final.ts +9 -0
  193. package/fixtures/release-scout/agent/agent.ts +22 -0
  194. package/fixtures/release-scout/agent/channels/github-signature.ts +27 -0
  195. package/fixtures/release-scout/agent/channels/github.ts +38 -0
  196. package/fixtures/release-scout/agent/connections/linear.ts +9 -0
  197. package/fixtures/release-scout/agent/hooks/audit.ts +24 -0
  198. package/fixtures/release-scout/agent/instructions/org-context.ts +26 -0
  199. package/fixtures/release-scout/agent/instructions.md +2 -0
  200. package/fixtures/release-scout/agent/sandbox.ts +20 -0
  201. package/fixtures/release-scout/agent/schedules/daily-digest.md +7 -0
  202. package/fixtures/release-scout/agent/skills/triage/SKILL.md +8 -0
  203. package/fixtures/release-scout/agent/skills/triage/checklist.md +3 -0
  204. package/fixtures/release-scout/agent/tools/lookup_release_notes.ts +24 -0
  205. package/fixtures/tsconfig.json +5 -0
  206. package/package.json +94 -0
@@ -0,0 +1,93 @@
1
+ import {
2
+ jsonValueSchema
3
+ } from "@finalai/agent-provider";
4
+ import {
5
+ installSandboxOpenScope,
6
+ withSandboxOpener
7
+ } from "@finalai/agent-provider/sandbox/open-scope-node";
8
+ import { transform } from "esbuild";
9
+ import vm from "node:vm";
10
+ import * as z from "zod";
11
+ import { callableSchema } from "../runtime/values.mjs";
12
+ import { parseLoadedBundle } from "./load.mjs";
13
+ const GLOBAL_NAME = "__finalAgentBundle";
14
+ const workerGlobals = (options) => ({
15
+ fetch: options.fetch ?? fetch,
16
+ Request,
17
+ Response,
18
+ Headers,
19
+ FormData,
20
+ Blob,
21
+ File,
22
+ URL,
23
+ URLSearchParams,
24
+ TextEncoder,
25
+ TextDecoder,
26
+ AbortController,
27
+ AbortSignal,
28
+ ReadableStream,
29
+ WritableStream,
30
+ TransformStream,
31
+ EventTarget,
32
+ Event,
33
+ WebSocket,
34
+ crypto,
35
+ performance,
36
+ structuredClone,
37
+ atob,
38
+ btoa,
39
+ queueMicrotask,
40
+ setTimeout,
41
+ clearTimeout,
42
+ setInterval,
43
+ clearInterval,
44
+ console
45
+ });
46
+ const resultTextSchema = z.string();
47
+ const loadBundleInLocalIsolate = async (code, options = {}) => {
48
+ const converted = await transform(code, {
49
+ format: "iife",
50
+ globalName: GLOBAL_NAME,
51
+ loader: "js",
52
+ target: "es2024"
53
+ });
54
+ const context = vm.createContext(workerGlobals(options), {
55
+ name: "final-agent-dev",
56
+ codeGeneration: { strings: false, wasm: false }
57
+ });
58
+ installSandboxOpenScope(context);
59
+ const namespace = z.unknown().parse(
60
+ vm.runInContext(`${converted.code}
61
+ ;${GLOBAL_NAME};`, context, {
62
+ filename: "agent-bundle.js",
63
+ timeout: 1e4
64
+ })
65
+ );
66
+ const loaded = parseLoadedBundle(namespace);
67
+ return {
68
+ ...loaded,
69
+ runSandboxSelector: async (args) => {
70
+ const selector = callableSchema.safeParse(loaded.modules[args.exportName]);
71
+ if (!selector.success) throw new Error(`${args.exportName} is not a sandbox selector`);
72
+ await withSandboxOpener(
73
+ args.open,
74
+ () => selector.data({ session: args.session, secrets: args.secrets, open: args.open })
75
+ );
76
+ },
77
+ callExportMethod: async (args) => {
78
+ const script = `(async () => {
79
+ const target = ${GLOBAL_NAME}.modules[${JSON.stringify(args.exportName)}];
80
+ const method = target == null ? undefined : target[${JSON.stringify(args.method)}];
81
+ if (typeof method !== 'function') throw new Error(${JSON.stringify(`${args.exportName} has no ${args.method}`)});
82
+ return JSON.stringify((await method.apply(target, ${JSON.stringify(args.args)})) ?? null);
83
+ })()`;
84
+ const pending = z.unknown().parse(vm.runInContext(script, context, { timeout: 1e4 }));
85
+ const text = resultTextSchema.parse(await pending);
86
+ return jsonValueSchema.parse(JSON.parse(text));
87
+ }
88
+ };
89
+ };
90
+ export {
91
+ loadBundleInLocalIsolate
92
+ };
93
+ //# sourceMappingURL=local-isolate.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/compiler/local-isolate.ts"],
4
+ "sourcesContent": ["import {\n jsonValueSchema,\n type JsonValue,\n type SandboxOpener,\n type SecretReaderIface,\n} from '@finalai/agent-provider';\nimport {\n installSandboxOpenScope,\n withSandboxOpener,\n} from '@finalai/agent-provider/sandbox/open-scope-node';\nimport { transform } from 'esbuild';\nimport vm from 'node:vm';\nimport * as z from 'zod';\nimport type { AgentSessionInfoIface } from \"../authoring/context.mjs\";\nimport { callableSchema } from \"../runtime/values.mjs\";\nimport { parseLoadedBundle, type LoadedBundleIface } from \"./load.mjs\";\n\n// A local stand-in for the Worker isolate (agent-harness-workers) that runs a\n// compiled bundle for `final agents dev` and `final agents build`: its own\n// realm with only the Web platform globals a Worker has (fetch,\n// Request/Response, crypto, timers, streams), no Node built-ins and no\n// `process`. node:vm is not a security boundary; this runs the author's own\n// code on the author's machine.\n\nconst GLOBAL_NAME = '__finalAgentBundle';\n\nexport interface LocalIsolateOptionsIface {\n // Replaces the realm's fetch (tests, or a proxy for outbound requests).\n fetch?: typeof fetch;\n}\n\nexport interface LocalIsolateBundleIface extends LoadedBundleIface {\n // Calls `<export>.<method>(...args)` inside the realm with JSON arguments\n // and returns its JSON result: a bundle harness's describe, for example.\n callExportMethod(args: {\n exportName: string;\n method: string;\n args: JsonValue[];\n }): Promise<JsonValue>;\n // Runs sandbox.ts's default selector the way the Worker isolate does:\n // `open` (and awaiting an environment's `open(...)` inside it) reaches the\n // target through `args.open`.\n runSandboxSelector(args: {\n exportName: string;\n session: AgentSessionInfoIface;\n secrets: SecretReaderIface;\n open: SandboxOpener;\n }): Promise<void>;\n}\n\nconst workerGlobals = (options: LocalIsolateOptionsIface) => ({\n fetch: options.fetch ?? fetch,\n Request,\n Response,\n Headers,\n FormData,\n Blob,\n File,\n URL,\n URLSearchParams,\n TextEncoder,\n TextDecoder,\n AbortController,\n AbortSignal,\n ReadableStream,\n WritableStream,\n TransformStream,\n EventTarget,\n Event,\n WebSocket,\n crypto,\n performance,\n structuredClone,\n atob,\n btoa,\n queueMicrotask,\n setTimeout,\n clearTimeout,\n setInterval,\n clearInterval,\n console,\n});\n\nconst resultTextSchema = z.string();\n\nexport const loadBundleInLocalIsolate = async (\n code: string,\n options: LocalIsolateOptionsIface = {},\n): Promise<LocalIsolateBundleIface> => {\n const converted = await transform(code, {\n format: 'iife',\n globalName: GLOBAL_NAME,\n loader: 'js',\n target: 'es2024',\n });\n const context = vm.createContext(workerGlobals(options), {\n name: 'final-agent-dev',\n codeGeneration: { strings: false, wasm: false },\n });\n installSandboxOpenScope(context);\n const namespace = z.unknown().parse(\n vm.runInContext(`${converted.code}\\n;${GLOBAL_NAME};`, context, {\n filename: 'agent-bundle.js',\n timeout: 10_000,\n }),\n );\n const loaded = parseLoadedBundle(namespace);\n return {\n ...loaded,\n runSandboxSelector: async (args) => {\n const selector = callableSchema.safeParse(loaded.modules[args.exportName]);\n if (!selector.success) throw new Error(`${args.exportName} is not a sandbox selector`);\n await withSandboxOpener(args.open, () =>\n selector.data({ session: args.session, secrets: args.secrets, open: args.open }),\n );\n },\n callExportMethod: async (args) => {\n // The names and arguments are embedded as JSON literals; the call runs in\n // the realm, so authored values never cross into this one.\n const script = `(async () => {\n const target = ${GLOBAL_NAME}.modules[${JSON.stringify(args.exportName)}];\n const method = target == null ? undefined : target[${JSON.stringify(args.method)}];\n if (typeof method !== 'function') throw new Error(${JSON.stringify(`${args.exportName} has no ${args.method}`)});\n return JSON.stringify((await method.apply(target, ${JSON.stringify(args.args)})) ?? null);\n })()`;\n const pending = z.unknown().parse(vm.runInContext(script, context, { timeout: 10_000 }));\n const text = resultTextSchema.parse(await pending);\n return jsonValueSchema.parse(JSON.parse(text));\n },\n };\n};\n"],
5
+ "mappings": "AAAA;AAAA,EACE;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,iBAAiB;AAC1B,OAAO,QAAQ;AACf,YAAY,OAAO;AAEnB,SAAS,sBAAsB;AAC/B,SAAS,yBAAiD;AAS1D,MAAM,cAAc;AA0BpB,MAAM,gBAAgB,CAAC,aAAuC;AAAA,EAC5D,OAAO,QAAQ,SAAS;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,mBAAmB,EAAE,OAAO;AAE3B,MAAM,2BAA2B,OACtC,MACA,UAAoC,CAAC,MACA;AACrC,QAAM,YAAY,MAAM,UAAU,MAAM;AAAA,IACtC,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,CAAC;AACD,QAAM,UAAU,GAAG,cAAc,cAAc,OAAO,GAAG;AAAA,IACvD,MAAM;AAAA,IACN,gBAAgB,EAAE,SAAS,OAAO,MAAM,MAAM;AAAA,EAChD,CAAC;AACD,0BAAwB,OAAO;AAC/B,QAAM,YAAY,EAAE,QAAQ,EAAE;AAAA,IAC5B,GAAG,aAAa,GAAG,UAAU,IAAI;AAAA,GAAM,WAAW,KAAK,SAAS;AAAA,MAC9D,UAAU;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,QAAM,SAAS,kBAAkB,SAAS;AAC1C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,oBAAoB,OAAO,SAAS;AAClC,YAAM,WAAW,eAAe,UAAU,OAAO,QAAQ,KAAK,UAAU,CAAC;AACzE,UAAI,CAAC,SAAS,QAAS,OAAM,IAAI,MAAM,GAAG,KAAK,UAAU,4BAA4B;AACrF,YAAM;AAAA,QAAkB,KAAK;AAAA,QAAM,MACjC,SAAS,KAAK,EAAE,SAAS,KAAK,SAAS,SAAS,KAAK,SAAS,MAAM,KAAK,KAAK,CAAC;AAAA,MACjF;AAAA,IACF;AAAA,IACA,kBAAkB,OAAO,SAAS;AAGhC,YAAM,SAAS;AAAA,yBACI,WAAW,YAAY,KAAK,UAAU,KAAK,UAAU,CAAC;AAAA,6DAClB,KAAK,UAAU,KAAK,MAAM,CAAC;AAAA,4DAC5B,KAAK,UAAU,GAAG,KAAK,UAAU,WAAW,KAAK,MAAM,EAAE,CAAC;AAAA,4DAC1D,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA;AAE/E,YAAM,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,QAAQ,SAAS,EAAE,SAAS,IAAO,CAAC,CAAC;AACvF,YAAM,OAAO,iBAAiB,MAAM,MAAM,OAAO;AACjD,aAAO,gBAAgB,MAAM,KAAK,MAAM,IAAI,CAAC;AAAA,IAC/C;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,66 @@
1
+ import * as z from 'zod';
2
+ import { type DiagnosticIface } from "./diagnostics.mjs";
3
+ export interface VendoredPackageIface {
4
+ files: Record<string, string>;
5
+ loadError?: string;
6
+ }
7
+ type ExportsTargetIface = string | null | ExportsTargetIface[] | {
8
+ [key: string]: ExportsTargetIface;
9
+ };
10
+ declare const packageJsonSchema: z.ZodObject<{
11
+ name: z.ZodOptional<z.ZodString>;
12
+ main: z.ZodOptional<z.ZodString>;
13
+ module: z.ZodOptional<z.ZodString>;
14
+ exports: z.ZodOptional<z.ZodType<ExportsTargetIface, unknown, z.core.$ZodTypeInternals<ExportsTargetIface, unknown>>>;
15
+ imports: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<ExportsTargetIface, unknown, z.core.$ZodTypeInternals<ExportsTargetIface, unknown>>>>;
16
+ devDependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
17
+ dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
18
+ }, z.core.$loose>;
19
+ export type PackageJsonIface = z.infer<typeof packageJsonSchema>;
20
+ export declare const parsePackageJson: (text: string | undefined) => PackageJsonIface | null;
21
+ export declare const packageImportTarget: (args: {
22
+ packageJson: string | undefined;
23
+ specifier: string;
24
+ require: boolean;
25
+ }) => string | null;
26
+ export declare const splitSpecifier: (specifier: string) => {
27
+ name: string;
28
+ subpath: string;
29
+ } | null;
30
+ export interface PackageEntryIface {
31
+ path: string | null;
32
+ wanted: string;
33
+ exported: boolean;
34
+ }
35
+ export declare const packageEntry: (args: {
36
+ pkg: VendoredPackageIface;
37
+ subpath: string;
38
+ require: boolean;
39
+ resolve: (path: string) => string | null;
40
+ }) => PackageEntryIface;
41
+ export declare const PLATFORM_PACKAGES: ReadonlySet<string>;
42
+ export declare enum WorkspaceDependencyKind {
43
+ Workspace = "workspace",
44
+ Path = "path"
45
+ }
46
+ export interface WorkspaceDependencyIface {
47
+ name: string;
48
+ kind: WorkspaceDependencyKind;
49
+ path: string | null;
50
+ }
51
+ export declare const workspaceDependencies: (packageJson: string | undefined, includeDevDependencies?: boolean) => WorkspaceDependencyIface[];
52
+ export declare const declaredDependencyDiagnostics: (args: {
53
+ packageJson: string | undefined;
54
+ vendored: ReadonlySet<string>;
55
+ local: boolean;
56
+ }) => DiagnosticIface[];
57
+ export declare const workspacePackageGlobs: (args: {
58
+ pnpmWorkspaceYaml: string | undefined;
59
+ rootPackageJson: string | undefined;
60
+ }) => string[];
61
+ export declare const workspacePackageCandidates: (args: {
62
+ paths: readonly string[];
63
+ globs: readonly string[];
64
+ name: string;
65
+ }) => string[];
66
+ export {};
@@ -0,0 +1,307 @@
1
+ import { posix } from "node:path";
2
+ import { parse as parseYaml } from "yaml";
3
+ import * as z from "zod";
4
+ import {
5
+ diagnostic,
6
+ DiagnosticCode,
7
+ DiagnosticSeverity
8
+ } from "./diagnostics.mjs";
9
+ const conditionsSchema = z.lazy(
10
+ () => z.union([
11
+ z.string(),
12
+ z.null(),
13
+ z.array(conditionsSchema),
14
+ z.record(z.string(), conditionsSchema)
15
+ ])
16
+ );
17
+ const packageJsonSchema = z.looseObject({
18
+ name: z.string().optional(),
19
+ main: z.string().optional(),
20
+ module: z.string().optional(),
21
+ exports: conditionsSchema.optional(),
22
+ imports: z.record(z.string(), conditionsSchema).optional(),
23
+ devDependencies: z.record(z.string(), z.string()).optional(),
24
+ dependencies: z.record(z.string(), z.string()).optional()
25
+ });
26
+ const parsePackageJson = (text) => {
27
+ if (text == null) return null;
28
+ try {
29
+ const parsed = packageJsonSchema.safeParse(JSON.parse(text));
30
+ return parsed.success ? parsed.data : null;
31
+ } catch {
32
+ return null;
33
+ }
34
+ };
35
+ const conditionsFor = (require2) => /* @__PURE__ */ new Set(["workerd", "worker", "browser", require2 ? "require" : "import", "module", "default"]);
36
+ var PickKind = /* @__PURE__ */ ((PickKind2) => {
37
+ PickKind2["Matched"] = "matched";
38
+ PickKind2["Excluded"] = "excluded";
39
+ PickKind2["Unmatched"] = "unmatched";
40
+ return PickKind2;
41
+ })(PickKind || {});
42
+ const pick = (target, conditions) => {
43
+ if (target == null) return { kind: "excluded" /* Excluded */ };
44
+ const text = z.string().safeParse(target);
45
+ if (text.success) return { kind: "matched" /* Matched */, path: text.data };
46
+ if (Array.isArray(target)) {
47
+ let excluded = false;
48
+ for (const item of target) {
49
+ const picked = pick(item, conditions);
50
+ excluded ||= picked.kind === "excluded" /* Excluded */;
51
+ if (picked.kind === "matched" /* Matched */ && picked.path.startsWith("./") && !picked.path.split("/").slice(1).some((part) => part === ".." || part === "node_modules"))
52
+ return picked;
53
+ }
54
+ return { kind: excluded ? "excluded" /* Excluded */ : "unmatched" /* Unmatched */ };
55
+ }
56
+ const record = z.record(z.string(), conditionsSchema).safeParse(target);
57
+ if (!record.success) return { kind: "unmatched" /* Unmatched */ };
58
+ for (const [condition, value] of Object.entries(record.data)) {
59
+ if (!conditions.has(condition)) continue;
60
+ const picked = pick(value, conditions);
61
+ if (picked.kind !== "unmatched" /* Unmatched */) return picked;
62
+ }
63
+ return { kind: "unmatched" /* Unmatched */ };
64
+ };
65
+ const pickTarget = (target, conditions) => {
66
+ const picked = pick(target, conditions);
67
+ return picked.kind === "matched" /* Matched */ ? picked.path : null;
68
+ };
69
+ const exportFor = (exports, subpath, conditions) => {
70
+ if (exports == null) return null;
71
+ const record = z.record(z.string(), conditionsSchema).safeParse(exports);
72
+ if (record.success && Object.keys(record.data).some((key) => key.startsWith(".") || key.startsWith("#"))) {
73
+ const exact = record.data[subpath];
74
+ if (exact !== void 0) return pickTarget(exact, conditions);
75
+ let best = null;
76
+ for (const [pattern, target] of Object.entries(record.data)) {
77
+ const star = pattern.indexOf("*");
78
+ if (star < 0 || pattern.indexOf("*", star + 1) >= 0) continue;
79
+ const prefix = pattern.slice(0, star);
80
+ const suffix = pattern.slice(star + 1);
81
+ if (subpath.length < pattern.length) continue;
82
+ if (!subpath.startsWith(prefix) || !subpath.endsWith(suffix)) continue;
83
+ if (best == null || prefix.length > best.prefix.length || prefix.length === best.prefix.length && pattern.length > best.pattern.length)
84
+ best = { prefix, pattern, target };
85
+ }
86
+ if (best == null) return null;
87
+ const suffixLength = best.pattern.length - best.prefix.length - 1;
88
+ const middle = subpath.slice(best.prefix.length, subpath.length - suffixLength);
89
+ if (middle.split("/").some((part) => part === "." || part === ".." || part === "node_modules"))
90
+ return null;
91
+ return pickTarget(best.target, conditions)?.replaceAll("*", () => middle) ?? null;
92
+ }
93
+ return subpath === "." ? pickTarget(exports, conditions) : null;
94
+ };
95
+ const packageImportTarget = (args) => exportFor(
96
+ parsePackageJson(args.packageJson)?.imports,
97
+ args.specifier,
98
+ conditionsFor(args.require)
99
+ );
100
+ const splitSpecifier = (specifier) => {
101
+ const segments = specifier.split("/");
102
+ const nameLength = segments[0]?.startsWith("@") ? 2 : 1;
103
+ if (segments.length < nameLength || segments.slice(0, nameLength).some((part) => part === ""))
104
+ return null;
105
+ const name = segments.slice(0, nameLength).join("/");
106
+ const rest = segments.slice(nameLength).join("/");
107
+ return { name, subpath: rest.length === 0 ? "." : `./${rest}` };
108
+ };
109
+ const packageEntry = (args) => {
110
+ const json = parsePackageJson(args.pkg.files["package.json"]);
111
+ const exported = exportFor(json?.exports, args.subpath, conditionsFor(args.require));
112
+ if ((exported == null || !exported.startsWith("./")) && json?.exports != null)
113
+ return { path: null, wanted: args.subpath, exported: false };
114
+ const candidates = [];
115
+ if (exported != null) candidates.push(exported);
116
+ else if (json?.exports == null) {
117
+ if (args.subpath === ".") {
118
+ if (json?.module != null) candidates.push(json.module);
119
+ if (json?.main != null) candidates.push(json.main);
120
+ candidates.push("./index");
121
+ } else candidates.push(args.subpath);
122
+ }
123
+ for (const candidate of candidates) {
124
+ const normalized = posix.normalize(candidate).replace(/^\.\//, "");
125
+ if (normalized === ".." || normalized.startsWith("../") || normalized.startsWith("/")) continue;
126
+ const resolved = args.resolve(normalized);
127
+ if (resolved != null) return { path: resolved, wanted: candidate, exported: true };
128
+ }
129
+ return { path: null, wanted: candidates[0] ?? args.subpath, exported: true };
130
+ };
131
+ const PLATFORM_PACKAGES = /* @__PURE__ */ new Set(["zod", "yaml", "croner", "re2js"]);
132
+ var WorkspaceDependencyKind = /* @__PURE__ */ ((WorkspaceDependencyKind2) => {
133
+ WorkspaceDependencyKind2["Workspace"] = "workspace";
134
+ WorkspaceDependencyKind2["Path"] = "path";
135
+ return WorkspaceDependencyKind2;
136
+ })(WorkspaceDependencyKind || {});
137
+ const workspaceDependencies = (packageJson, includeDevDependencies = true) => {
138
+ const parsed = parsePackageJson(packageJson);
139
+ const entries = Object.entries(parsed?.dependencies ?? {});
140
+ if (includeDevDependencies) {
141
+ for (const entry of Object.entries(parsed?.devDependencies ?? {}))
142
+ if (!Object.hasOwn(parsed?.dependencies ?? {}, entry[0])) entries.push(entry);
143
+ }
144
+ return entries.flatMap(([name, spec]) => {
145
+ if (spec.startsWith("workspace:"))
146
+ return [{ name, kind: "workspace" /* Workspace */, path: null }];
147
+ const path = /^(?:file|link):(.+)$/u.exec(spec)?.[1];
148
+ return path == null ? [] : [{ name, kind: "path" /* Path */, path }];
149
+ });
150
+ };
151
+ const declaredDependencyDiagnostics = (args) => {
152
+ const json = parsePackageJson(args.packageJson);
153
+ if (json == null) return [];
154
+ const workspace = new Set(workspaceDependencies(args.packageJson).map((entry) => entry.name));
155
+ const out = [];
156
+ for (const name of Object.keys(json.dependencies ?? {})) {
157
+ if (args.vendored.has(name) || PLATFORM_PACKAGES.has(name)) continue;
158
+ if (name === "@finalai/agents" || name.startsWith("@finalai/")) continue;
159
+ if (workspace.has(name)) {
160
+ if (args.local) continue;
161
+ out.push(
162
+ diagnostic({
163
+ severity: DiagnosticSeverity.Warning,
164
+ code: DiagnosticCode.Dependencies,
165
+ message: `package.json depends on the workspace package ${name}, which was not found in the repository at this commit`,
166
+ path: "package.json"
167
+ })
168
+ );
169
+ continue;
170
+ }
171
+ out.push(
172
+ diagnostic({
173
+ severity: DiagnosticSeverity.Warning,
174
+ code: DiagnosticCode.Dependencies,
175
+ message: `package.json depends on ${name} from npm; agents are compiled without installing npm packages, so only workspace packages from this repository and ${[...PLATFORM_PACKAGES].join(", ")} can be imported`,
176
+ path: "package.json"
177
+ })
178
+ );
179
+ }
180
+ return out;
181
+ };
182
+ const pnpmWorkspaceSchema = z.looseObject({ packages: z.array(z.string()).optional() });
183
+ const rootWorkspacesSchema = z.looseObject({
184
+ workspaces: z.union([z.array(z.string()), z.looseObject({ packages: z.array(z.string()).optional() })]).optional()
185
+ });
186
+ const workspacePackageGlobs = (args) => {
187
+ if (args.pnpmWorkspaceYaml != null) {
188
+ try {
189
+ const parsed = pnpmWorkspaceSchema.safeParse(parseYaml(args.pnpmWorkspaceYaml));
190
+ if (parsed.success && parsed.data.packages != null) return parsed.data.packages;
191
+ } catch {
192
+ }
193
+ }
194
+ if (args.rootPackageJson == null) return [];
195
+ try {
196
+ const parsed = rootWorkspacesSchema.safeParse(JSON.parse(args.rootPackageJson));
197
+ const workspaces = parsed.success ? parsed.data.workspaces : void 0;
198
+ if (workspaces == null) return [];
199
+ return Array.isArray(workspaces) ? workspaces : workspaces.packages ?? [];
200
+ } catch {
201
+ return [];
202
+ }
203
+ };
204
+ const expandGlob = (glob) => {
205
+ if (glob.length > 512) throw new Error("Workspace glob exceeds 512 characters.");
206
+ let variants = [glob];
207
+ while (true) {
208
+ const next = [];
209
+ let expanded = false;
210
+ for (const variant of variants) {
211
+ const brace = /\{([^{}]+)\}/u.exec(variant);
212
+ if (brace?.[1] == null) next.push(variant);
213
+ else {
214
+ expanded = true;
215
+ for (const choice of brace[1].split(",")) {
216
+ if (next.length >= 128) throw new Error("Workspace globs exceed 128 expanded patterns.");
217
+ next.push(
218
+ variant.slice(0, brace.index) + choice + variant.slice(brace.index + brace[0].length)
219
+ );
220
+ }
221
+ }
222
+ }
223
+ if (next.length > 128) throw new Error("Workspace globs exceed 128 expanded patterns.");
224
+ if (!expanded) return next;
225
+ variants = next;
226
+ }
227
+ };
228
+ const segmentMatches = ({ directory, glob, consumeWork }) => {
229
+ const text = Array.from(directory);
230
+ const tokens = Array.from(glob);
231
+ let d = 0;
232
+ let p = 0;
233
+ let star = null;
234
+ let matched = 0;
235
+ while (d < text.length) {
236
+ consumeWork();
237
+ if (tokens[p] === "?" || tokens[p] !== "*" && tokens[p] === text[d]) {
238
+ d += 1;
239
+ p += 1;
240
+ } else if (tokens[p] === "*") {
241
+ star = p;
242
+ p += 1;
243
+ matched = d;
244
+ } else if (star != null) {
245
+ p = star + 1;
246
+ matched += 1;
247
+ d = matched;
248
+ } else return false;
249
+ }
250
+ while (tokens[p] === "*") p += 1;
251
+ return p === tokens.length;
252
+ };
253
+ const globMatches = ({ directory, glob, consumeWork }) => {
254
+ const dirParts = directory.split("/");
255
+ const parts = glob.replace(/^\.\//u, "").replace(/\/+$/u, "").split("/");
256
+ const memo = /* @__PURE__ */ new Map();
257
+ const walk = (d, p) => {
258
+ consumeWork();
259
+ const key = `${d}:${p}`;
260
+ const existing = memo.get(key);
261
+ if (existing != null) return existing;
262
+ const part = parts[p];
263
+ const found = p === parts.length ? d === dirParts.length : part === "**" ? walk(d, p + 1) || d < dirParts.length && walk(d + 1, p) : d < dirParts.length && part != null && segmentMatches({ directory: dirParts[d] ?? "", glob: part, consumeWork }) && walk(d + 1, p + 1);
264
+ memo.set(key, found);
265
+ return found;
266
+ };
267
+ return walk(0, 0);
268
+ };
269
+ const workspacePackageCandidates = (args) => {
270
+ const expanded = [];
271
+ for (const glob of args.globs) {
272
+ const patterns = expandGlob(glob);
273
+ if (expanded.length + patterns.length > 128)
274
+ throw new Error("Workspace globs exceed 128 expanded patterns.");
275
+ expanded.push(...patterns);
276
+ }
277
+ let remainingWork = 1e6;
278
+ const consumeWork = () => {
279
+ remainingWork -= 1;
280
+ if (remainingWork < 0)
281
+ throw new Error(
282
+ "Workspace glob matching exceeds its work budget; use narrower globs or file: dependencies."
283
+ );
284
+ };
285
+ const include = expanded.filter((glob) => !glob.startsWith("!"));
286
+ const exclude = expanded.filter((glob) => glob.startsWith("!")).map((glob) => glob.slice(1));
287
+ const unscoped = args.name.split("/").at(-1) ?? args.name;
288
+ const directories = args.paths.filter((path) => path.endsWith("/package.json") && !path.split("/").includes("node_modules")).map((path) => path.slice(0, -"/package.json".length)).filter(
289
+ (directory) => include.some((glob) => globMatches({ directory, glob, consumeWork })) && !exclude.some((glob) => globMatches({ directory, glob, consumeWork }))
290
+ );
291
+ return directories.toSorted(
292
+ (a, b) => Number(posix.basename(b) === unscoped) - Number(posix.basename(a) === unscoped) || (a < b ? -1 : a > b ? 1 : 0)
293
+ );
294
+ };
295
+ export {
296
+ PLATFORM_PACKAGES,
297
+ WorkspaceDependencyKind,
298
+ declaredDependencyDiagnostics,
299
+ packageEntry,
300
+ packageImportTarget,
301
+ parsePackageJson,
302
+ splitSpecifier,
303
+ workspaceDependencies,
304
+ workspacePackageCandidates,
305
+ workspacePackageGlobs
306
+ };
307
+ //# sourceMappingURL=packages.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/compiler/packages.ts"],
4
+ "sourcesContent": ["import { posix } from 'node:path';\nimport { parse as parseYaml } from 'yaml';\nimport * as z from 'zod';\nimport {\n diagnostic,\n DiagnosticCode,\n DiagnosticSeverity,\n type DiagnosticIface,\n} from \"./diagnostics.mjs\";\n\n// Workspace packages share code between agent directories. Repository compilation\n// reads source without\n// installing anything, so a package is vendored source: the files of a\n// directory in the same repository, at the same commit, that the agent's\n// package.json depends on (`workspace:`, `file:` or `link:`). Their own\n// imports resolve the same way; anything else resolves only to what the\n// platform ships (the authoring API and this package's dependencies).\n\nexport interface VendoredPackageIface {\n // Package-relative path \u2192 text, including package.json.\n files: Record<string, string>;\n // A bounded repository read failed; report it only if this package is imported.\n loadError?: string;\n}\n\nconst conditionsSchema: z.ZodType<ExportsTargetIface> = z.lazy(() =>\n z.union([\n z.string(),\n z.null(),\n z.array(conditionsSchema),\n z.record(z.string(), conditionsSchema),\n ]),\n);\ntype ExportsTargetIface =\n | string\n | null\n | ExportsTargetIface[]\n | { [key: string]: ExportsTargetIface };\n\nconst packageJsonSchema = z.looseObject({\n name: z.string().optional(),\n main: z.string().optional(),\n module: z.string().optional(),\n exports: conditionsSchema.optional(),\n imports: z.record(z.string(), conditionsSchema).optional(),\n devDependencies: z.record(z.string(), z.string()).optional(),\n dependencies: z.record(z.string(), z.string()).optional(),\n});\n\nexport type PackageJsonIface = z.infer<typeof packageJsonSchema>;\n\nexport const parsePackageJson = (text: string | undefined): PackageJsonIface | null => {\n if (text == null) return null;\n try {\n const parsed = packageJsonSchema.safeParse(JSON.parse(text));\n return parsed.success ? parsed.data : null;\n } catch {\n return null;\n }\n};\n\n// The conditions the Worker build resolves with (`import` for ESM imports,\n// `require` for require() calls); a conditions object picks its first key,\n// in declaration order, that is one of them.\nconst conditionsFor = (require: boolean): ReadonlySet<string> =>\n new Set(['workerd', 'worker', 'browser', require ? 'require' : 'import', 'module', 'default']);\n\n// Node's target resolution: a conditions object takes its first active\n// condition that matches; an explicit null excludes the export (resolution\n// stops); a nested object with no active condition is unmatched (try on).\nenum PickKind {\n Matched = 'matched',\n Excluded = 'excluded',\n Unmatched = 'unmatched',\n}\n\ntype PickIface =\n | { kind: PickKind.Matched; path: string }\n | { kind: PickKind.Excluded | PickKind.Unmatched };\n\nconst pick = (target: ExportsTargetIface, conditions: ReadonlySet<string>): PickIface => {\n if (target == null) return { kind: PickKind.Excluded };\n const text = z.string().safeParse(target);\n if (text.success) return { kind: PickKind.Matched, path: text.data };\n if (Array.isArray(target)) {\n let excluded = false;\n for (const item of target) {\n const picked = pick(item, conditions);\n excluded ||= picked.kind === PickKind.Excluded;\n if (\n picked.kind === PickKind.Matched &&\n picked.path.startsWith('./') &&\n !picked.path\n .split('/')\n .slice(1)\n .some((part) => part === '..' || part === 'node_modules')\n )\n return picked;\n }\n return { kind: excluded ? PickKind.Excluded : PickKind.Unmatched };\n }\n const record = z.record(z.string(), conditionsSchema).safeParse(target);\n if (!record.success) return { kind: PickKind.Unmatched };\n for (const [condition, value] of Object.entries(record.data)) {\n if (!conditions.has(condition)) continue;\n const picked = pick(value, conditions);\n if (picked.kind !== PickKind.Unmatched) return picked;\n }\n return { kind: PickKind.Unmatched };\n};\n\nconst pickTarget = (target: ExportsTargetIface, conditions: ReadonlySet<string>): string | null => {\n const picked = pick(target, conditions);\n return picked.kind === PickKind.Matched ? picked.path : null;\n};\n\n// `exports` for a subpath ('.' or './x'): a subpath map, or the root's\n// conditions/string when the package exports only '.'.\nconst exportFor = (\n exports: ExportsTargetIface | undefined,\n subpath: string,\n conditions: ReadonlySet<string>,\n): string | null => {\n if (exports == null) return null;\n const record = z.record(z.string(), conditionsSchema).safeParse(exports);\n if (\n record.success &&\n Object.keys(record.data).some((key) => key.startsWith('.') || key.startsWith('#'))\n ) {\n const exact = record.data[subpath];\n if (exact !== undefined) return pickTarget(exact, conditions);\n // `./*` patterns: the most specific match (longest prefix, then longest\n // pattern) wins, as in Node's resolver.\n let best: { prefix: string; pattern: string; target: ExportsTargetIface } | null = null;\n for (const [pattern, target] of Object.entries(record.data)) {\n const star = pattern.indexOf('*');\n if (star < 0 || pattern.indexOf('*', star + 1) >= 0) continue;\n const prefix = pattern.slice(0, star);\n const suffix = pattern.slice(star + 1);\n if (subpath.length < pattern.length) continue;\n if (!subpath.startsWith(prefix) || !subpath.endsWith(suffix)) continue;\n if (\n best == null ||\n prefix.length > best.prefix.length ||\n (prefix.length === best.prefix.length && pattern.length > best.pattern.length)\n )\n best = { prefix, pattern, target };\n }\n if (best == null) return null;\n const suffixLength = best.pattern.length - best.prefix.length - 1;\n const middle = subpath.slice(best.prefix.length, subpath.length - suffixLength);\n if (middle.split('/').some((part) => part === '.' || part === '..' || part === 'node_modules'))\n return null;\n return pickTarget(best.target, conditions)?.replaceAll('*', () => middle) ?? null;\n }\n return subpath === '.' ? pickTarget(exports, conditions) : null;\n};\n\nexport const packageImportTarget = (args: {\n packageJson: string | undefined;\n specifier: string;\n require: boolean;\n}): string | null =>\n exportFor(\n parsePackageJson(args.packageJson)?.imports,\n args.specifier,\n conditionsFor(args.require),\n );\n\nexport const splitSpecifier = (specifier: string): { name: string; subpath: string } | null => {\n const segments = specifier.split('/');\n const nameLength = segments[0]?.startsWith('@') ? 2 : 1;\n if (segments.length < nameLength || segments.slice(0, nameLength).some((part) => part === ''))\n return null;\n const name = segments.slice(0, nameLength).join('/');\n const rest = segments.slice(nameLength).join('/');\n return { name, subpath: rest.length === 0 ? '.' : `./${rest}` };\n};\n\n// The package-relative file a specifier's subpath names: its `exports` entry,\n// else `module`/`main` for the root, else the subpath itself; null when the\n// package does not provide it. `wanted` is reported when the target is not in\n// the repository (build output is not read).\nexport interface PackageEntryIface {\n // The package-relative file, or null when the package does not have it.\n path: string | null;\n // The target the package names, for the error when it is missing.\n wanted: string;\n // False when the package's `exports` do not export the subpath to Workers.\n exported: boolean;\n}\n\nexport const packageEntry = (args: {\n pkg: VendoredPackageIface;\n subpath: string;\n // A require() call rather than an import.\n require: boolean;\n resolve: (path: string) => string | null;\n}): PackageEntryIface => {\n const json = parsePackageJson(args.pkg.files['package.json']);\n const exported = exportFor(json?.exports, args.subpath, conditionsFor(args.require));\n if ((exported == null || !exported.startsWith('./')) && json?.exports != null)\n return { path: null, wanted: args.subpath, exported: false };\n const candidates: string[] = [];\n if (exported != null) candidates.push(exported);\n else if (json?.exports == null) {\n if (args.subpath === '.') {\n if (json?.module != null) candidates.push(json.module);\n if (json?.main != null) candidates.push(json.main);\n candidates.push('./index');\n } else candidates.push(args.subpath);\n }\n for (const candidate of candidates) {\n const normalized = posix.normalize(candidate).replace(/^\\.\\//, '');\n if (normalized === '..' || normalized.startsWith('../') || normalized.startsWith('/')) continue;\n const resolved = args.resolve(normalized);\n if (resolved != null) return { path: resolved, wanted: candidate, exported: true };\n }\n return { path: null, wanted: candidates[0] ?? args.subpath, exported: true };\n};\n\n// npm packages the platform's compiler ships and resolves without installing\n// (this package's own runtime dependencies that run in a Worker); the\n// authoring API is aliased separately.\nexport const PLATFORM_PACKAGES: ReadonlySet<string> = new Set(['zod', 'yaml', 'croner', 're2js']);\n\nexport enum WorkspaceDependencyKind {\n // `workspace:*`: found by name among the repository's workspace packages.\n Workspace = 'workspace',\n // `file:` / `link:`: a directory relative to the declaring package.\n Path = 'path',\n}\n\nexport interface WorkspaceDependencyIface {\n name: string;\n kind: WorkspaceDependencyKind;\n // For Path: the directory, relative to the declaring package's directory.\n path: string | null;\n}\n\n// The dependencies of a package.json the platform vendors from the repository.\nexport const workspaceDependencies = (\n packageJson: string | undefined,\n includeDevDependencies = true,\n): WorkspaceDependencyIface[] => {\n const parsed = parsePackageJson(packageJson);\n const entries = Object.entries(parsed?.dependencies ?? {});\n if (includeDevDependencies) {\n for (const entry of Object.entries(parsed?.devDependencies ?? {}))\n if (!Object.hasOwn(parsed?.dependencies ?? {}, entry[0])) entries.push(entry);\n }\n return entries.flatMap(([name, spec]): WorkspaceDependencyIface[] => {\n if (spec.startsWith('workspace:'))\n return [{ name, kind: WorkspaceDependencyKind.Workspace, path: null }];\n const path = /^(?:file|link):(.+)$/u.exec(spec)?.[1];\n return path == null ? [] : [{ name, kind: WorkspaceDependencyKind.Path, path }];\n });\n};\n\nexport const declaredDependencyDiagnostics = (args: {\n packageJson: string | undefined;\n vendored: ReadonlySet<string>;\n // A checkout compiled in place resolves its installed node_modules.\n local: boolean;\n}): DiagnosticIface[] => {\n const json = parsePackageJson(args.packageJson);\n if (json == null) return [];\n const workspace = new Set(workspaceDependencies(args.packageJson).map((entry) => entry.name));\n const out: DiagnosticIface[] = [];\n for (const name of Object.keys(json.dependencies ?? {})) {\n if (args.vendored.has(name) || PLATFORM_PACKAGES.has(name)) continue;\n if (name === '@finalai/agents' || name.startsWith('@finalai/')) continue;\n if (workspace.has(name)) {\n if (args.local) continue;\n // A warning: importing it fails to bundle, declaring it alone does not.\n out.push(\n diagnostic({\n severity: DiagnosticSeverity.Warning,\n code: DiagnosticCode.Dependencies,\n message: `package.json depends on the workspace package ${name}, which was not found in the repository at this commit`,\n path: 'package.json',\n }),\n );\n continue;\n }\n out.push(\n diagnostic({\n severity: DiagnosticSeverity.Warning,\n code: DiagnosticCode.Dependencies,\n message: `package.json depends on ${name} from npm; agents are compiled without installing npm packages, so only workspace packages from this repository and ${[...PLATFORM_PACKAGES].join(', ')} can be imported`,\n path: 'package.json',\n }),\n );\n }\n return out;\n};\n\n// Where a `workspace:` dependency can live: the repository root's\n// pnpm-workspace.yaml `packages`, else its package.json `workspaces`.\nconst pnpmWorkspaceSchema = z.looseObject({ packages: z.array(z.string()).optional() });\nconst rootWorkspacesSchema = z.looseObject({\n workspaces: z\n .union([z.array(z.string()), z.looseObject({ packages: z.array(z.string()).optional() })])\n .optional(),\n});\n\nexport const workspacePackageGlobs = (args: {\n pnpmWorkspaceYaml: string | undefined;\n rootPackageJson: string | undefined;\n}): string[] => {\n if (args.pnpmWorkspaceYaml != null) {\n try {\n const parsed = pnpmWorkspaceSchema.safeParse(parseYaml(args.pnpmWorkspaceYaml));\n if (parsed.success && parsed.data.packages != null) return parsed.data.packages;\n } catch {\n // An unreadable workspace file names no packages.\n }\n }\n if (args.rootPackageJson == null) return [];\n try {\n const parsed = rootWorkspacesSchema.safeParse(JSON.parse(args.rootPackageJson));\n const workspaces = parsed.success ? parsed.data.workspaces : undefined;\n if (workspaces == null) return [];\n return Array.isArray(workspaces) ? workspaces : (workspaces.packages ?? []);\n } catch {\n return [];\n }\n};\n\n// `packages/*` (one segment), `packages/**` (any depth) and exact directories;\n// `!` patterns exclude.\nconst expandGlob = (glob: string): string[] => {\n if (glob.length > 512) throw new Error('Workspace glob exceeds 512 characters.');\n let variants = [glob];\n while (true) {\n const next: string[] = [];\n let expanded = false;\n for (const variant of variants) {\n const brace = /\\{([^{}]+)\\}/u.exec(variant);\n if (brace?.[1] == null) next.push(variant);\n else {\n expanded = true;\n for (const choice of brace[1].split(',')) {\n if (next.length >= 128) throw new Error('Workspace globs exceed 128 expanded patterns.');\n next.push(\n variant.slice(0, brace.index) + choice + variant.slice(brace.index + brace[0].length),\n );\n }\n }\n }\n if (next.length > 128) throw new Error('Workspace globs exceed 128 expanded patterns.');\n if (!expanded) return next;\n variants = next;\n }\n};\n\ninterface GlobMatchOptionsIface {\n directory: string;\n glob: string;\n consumeWork: () => void;\n}\n\nconst segmentMatches = ({ directory, glob, consumeWork }: GlobMatchOptionsIface): boolean => {\n const text = Array.from(directory);\n const tokens = Array.from(glob);\n let d = 0;\n let p = 0;\n let star: number | null = null;\n let matched = 0;\n while (d < text.length) {\n consumeWork();\n if (tokens[p] === '?' || (tokens[p] !== '*' && tokens[p] === text[d])) {\n d += 1;\n p += 1;\n } else if (tokens[p] === '*') {\n star = p;\n p += 1;\n matched = d;\n } else if (star != null) {\n p = star + 1;\n matched += 1;\n d = matched;\n } else return false;\n }\n while (tokens[p] === '*') p += 1;\n return p === tokens.length;\n};\n\nconst globMatches = ({ directory, glob, consumeWork }: GlobMatchOptionsIface): boolean => {\n const dirParts = directory.split('/');\n const parts = glob.replace(/^\\.\\//u, '').replace(/\\/+$/u, '').split('/');\n const memo = new Map<string, boolean>();\n const walk = (d: number, p: number): boolean => {\n consumeWork();\n const key = `${d}:${p}`;\n const existing = memo.get(key);\n if (existing != null) return existing;\n const part = parts[p];\n const found =\n p === parts.length\n ? d === dirParts.length\n : part === '**'\n ? walk(d, p + 1) || (d < dirParts.length && walk(d + 1, p))\n : d < dirParts.length &&\n part != null &&\n segmentMatches({ directory: dirParts[d] ?? '', glob: part, consumeWork }) &&\n walk(d + 1, p + 1);\n memo.set(key, found);\n return found;\n };\n return walk(0, 0);\n};\n\n// Directories that may hold workspace package `name`, most likely first\n// (the directory named like the package), from the repository's file list.\nexport const workspacePackageCandidates = (args: {\n paths: readonly string[];\n globs: readonly string[];\n name: string;\n}): string[] => {\n const expanded: string[] = [];\n for (const glob of args.globs) {\n const patterns = expandGlob(glob);\n if (expanded.length + patterns.length > 128)\n throw new Error('Workspace globs exceed 128 expanded patterns.');\n expanded.push(...patterns);\n }\n let remainingWork = 1_000_000;\n const consumeWork = () => {\n remainingWork -= 1;\n if (remainingWork < 0)\n throw new Error(\n 'Workspace glob matching exceeds its work budget; use narrower globs or file: dependencies.',\n );\n };\n const include = expanded.filter((glob) => !glob.startsWith('!'));\n const exclude = expanded.filter((glob) => glob.startsWith('!')).map((glob) => glob.slice(1));\n const unscoped = args.name.split('/').at(-1) ?? args.name;\n const directories = args.paths\n .filter((path) => path.endsWith('/package.json') && !path.split('/').includes('node_modules'))\n .map((path) => path.slice(0, -'/package.json'.length))\n .filter(\n (directory) =>\n include.some((glob) => globMatches({ directory, glob, consumeWork })) &&\n !exclude.some((glob) => globMatches({ directory, glob, consumeWork })),\n );\n return directories.toSorted(\n (a, b) =>\n Number(posix.basename(b) === unscoped) - Number(posix.basename(a) === unscoped) ||\n (a < b ? -1 : a > b ? 1 : 0),\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["require", "PickKind", "WorkspaceDependencyKind"]
7
+ }
@@ -0,0 +1,7 @@
1
+ export * from "./authoring/index.mjs";
2
+ export * from "./manifest.mjs";
3
+ export { SlotValueKind, resolveManifest, resolveManifestDetailed, slotKindOf, validateSlotValue, } from "./resolve.mjs";
4
+ export type { ResolveManifestArgsIface, ResolveSlot, ResolvedManifestDetailIface } from "./resolve.mjs";
5
+ export type { AgentBundleIface } from "./runtime/bundle.mjs";
6
+ export type { ChannelRouteArgsIface, ChannelSocketArgsIface, DispatchHookArgsIface, IsolateRuntimeIface, ResolveDynamicArgsIface, RunToolArgsIface, RunToolResultIface, } from "./runtime/isolate.mjs";
7
+ export { AGENT_DYNAMIC_PREFIX, AUTHORED_SERVER_KEY, COMBINED_MCP_SERVERS_EXPORT, } from "./runtime/layout.mjs";
@@ -0,0 +1,25 @@
1
+ export * from "./authoring/index.mjs";
2
+ export * from "./manifest.mjs";
3
+ import {
4
+ SlotValueKind,
5
+ resolveManifest,
6
+ resolveManifestDetailed,
7
+ slotKindOf,
8
+ validateSlotValue
9
+ } from "./resolve.mjs";
10
+ import {
11
+ AGENT_DYNAMIC_PREFIX,
12
+ AUTHORED_SERVER_KEY,
13
+ COMBINED_MCP_SERVERS_EXPORT
14
+ } from "./runtime/layout.mjs";
15
+ export {
16
+ AGENT_DYNAMIC_PREFIX,
17
+ AUTHORED_SERVER_KEY,
18
+ COMBINED_MCP_SERVERS_EXPORT,
19
+ SlotValueKind,
20
+ resolveManifest,
21
+ resolveManifestDetailed,
22
+ slotKindOf,
23
+ validateSlotValue
24
+ };
25
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/index.ts"],
4
+ "sourcesContent": ["// Authoring API, the manifest schema and per-session dynamic resolution. The\n// compiler (esbuild, Node) is `@finalai/agent-definition/compiler`; the\n// compatibility report (ajv) is `@finalai/agent-definition/compatibility`.\nexport * from \"./authoring/index.mjs\";\nexport * from \"./manifest.mjs\";\nexport {\n SlotValueKind,\n resolveManifest,\n resolveManifestDetailed,\n slotKindOf,\n validateSlotValue,\n} from \"./resolve.mjs\";\nexport type { ResolveManifestArgsIface, ResolveSlot, ResolvedManifestDetailIface } from \"./resolve.mjs\";\nexport type { AgentBundleIface } from \"./runtime/bundle.mjs\";\nexport type {\n ChannelRouteArgsIface,\n ChannelSocketArgsIface,\n DispatchHookArgsIface,\n IsolateRuntimeIface,\n ResolveDynamicArgsIface,\n RunToolArgsIface,\n RunToolResultIface,\n} from \"./runtime/isolate.mjs\";\nexport {\n AGENT_DYNAMIC_PREFIX,\n AUTHORED_SERVER_KEY,\n COMBINED_MCP_SERVERS_EXPORT,\n} from \"./runtime/layout.mjs\";\n"],
5
+ "mappings": "AAGA,cAAc;AACd,cAAc;AACd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAYP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ export { BaseCapability, DynamicEvent, InstructionRole, MANIFEST_VERSION, McpServerBindingKind, SandboxAccess, SandboxAttach, ScheduleTarget, ToolApproval, agentManifestSchema, baseToolsSchema, bundleSchema, channelBindingSchema, dynamicSlotSchema, emptyManifest, findDynamicSlots, harnessBindingSchema, hookBindingSchema, httpMcpServerBindingSchema, identitySchema, instructionFragmentSchema, isDynamicSlot, mcpAuthSchema, mcpServerBindingSchema, resolvedAgentManifestSchema, sandboxBindingSchema, scheduleDefinitionSchema, skillBundleSchema, skillFileSchema, toolDescriptorSchema, workerMcpServerBindingSchema, } from '@finalai/agent-provider';
2
+ export type { AgentManifestIface, BaseToolsIface, BundleIface, ChannelBindingIface, DynamicSlotIface, DynamicSlotLocationIface, HarnessBindingIface, HookBindingIface, HttpMcpServerBindingIface, IdentityIface, InstructionFragmentIface, McpAuth, McpServerBinding, ResolvedAgentManifestIface, ResolvedSandboxBindingIface, SandboxBindingIface, ScheduleDefinitionIface, SkillBundleIface, ToolDescriptorIface, WorkerMcpServerBindingIface, } from '@finalai/agent-provider';