@finalai/agent-definition 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HOSTING.md +234 -0
- package/README.md +7 -0
- package/dist/compiler-assets/{chunk-TATN3PYK.ts → chunk-2ZRYQO4Q.ts} +4 -4
- package/dist/compiler-assets/{chunk-HGW4YHAY.ts → chunk-3K4C4SVG.ts} +9 -0
- package/dist/compiler-assets/{chunk-7VSSVZM4.ts → chunk-4A66SVBJ.ts} +4 -4
- package/dist/compiler-assets/{chunk-CWWRTRWW.ts → chunk-4E5HECVD.ts} +1 -1
- package/dist/compiler-assets/{chunk-7QP2CKPI.ts → chunk-4X2DS5BR.ts} +1 -1
- package/dist/compiler-assets/{chunk-ZDLVA6XF.ts → chunk-5NTKRRMC.ts} +112 -21
- package/dist/compiler-assets/{chunk-2CZRHOLL.ts → chunk-7XUPKRZU.ts} +1 -1
- package/dist/compiler-assets/{chunk-OWC6SFFF.ts → chunk-APU2VKLW.ts} +52 -12
- package/dist/compiler-assets/{chunk-HFS4KLEL.ts → chunk-D3SB4CCB.ts} +1 -1
- package/dist/compiler-assets/{chunk-HNPUTP35.ts → chunk-GCFSHHH2.ts} +2 -2
- package/dist/compiler-assets/{chunk-5BK6FVRE.ts → chunk-IF6MR7JF.ts} +2 -2
- package/dist/compiler-assets/{chunk-LUSAAV4L.ts → chunk-IZGOMT7K.ts} +2 -2
- package/dist/compiler-assets/{chunk-GTUZOATD.ts → chunk-JGQ2KAN7.ts} +1 -1
- package/dist/compiler-assets/{chunk-NYTOYKKF.ts → chunk-K6D7ZK74.ts} +3 -3
- package/dist/compiler-assets/{chunk-WMXMVFHM.ts → chunk-K7V4IMOB.ts} +3 -3
- package/dist/compiler-assets/{chunk-VHXHUU7L.ts → chunk-LHMUAIYJ.ts} +1 -1
- package/dist/compiler-assets/{chunk-SKTNMUO7.ts → chunk-MSE7X5YG.ts} +25 -2
- package/dist/compiler-assets/chunk-PFLSBTJA.ts +39 -0
- package/dist/compiler-assets/{chunk-XHKPWT3G.ts → chunk-QJ26GEUM.ts} +1 -1
- package/dist/compiler-assets/{chunk-JPY4L2UJ.ts → chunk-RIEMTCTV.ts} +12 -8
- package/dist/compiler-assets/chunk-RMIQJHSL.ts +0 -0
- package/dist/compiler-assets/chunk-TJ536HI4.ts +61 -0
- package/dist/compiler-assets/{chunk-QMWTDPNT.ts → chunk-TJZS457N.ts} +3 -3
- package/dist/compiler-assets/{chunk-JIPNTA56.ts → chunk-TM36NO3C.ts} +1 -1
- package/dist/compiler-assets/{chunk-MZMSKIKU.ts → chunk-UBR53WBH.ts} +33 -8
- package/dist/compiler-assets/chunk-ULI5WWRR.ts +40 -0
- package/dist/compiler-assets/chunk-W6DOJA4W.ts +3763 -0
- package/dist/compiler-assets/{chunk-EVQIK62B.ts → chunk-YW7HDGQA.ts} +11 -7
- package/dist/compiler-assets/{chunk-BLB6JGLO.ts → chunk-YWFGIPHD.ts} +27 -24
- package/dist/compiler-assets/{chunk-QMKWAFVZ.ts → chunk-Z5TO7RSJ.ts} +5 -3
- package/dist/compiler-assets/src/authoring/agent.ts +4 -4
- package/dist/compiler-assets/src/authoring/approval.ts +7 -7
- package/dist/compiler-assets/src/authoring/brand.ts +3 -3
- package/dist/compiler-assets/src/authoring/channels.ts +6 -6
- package/dist/compiler-assets/src/authoring/connections.ts +14 -4
- package/dist/compiler-assets/src/authoring/credentials.ts +7 -6
- package/dist/compiler-assets/src/authoring/dynamic.ts +9 -4
- package/dist/compiler-assets/src/authoring/harness.ts +9 -9
- package/dist/compiler-assets/src/authoring/hooks.ts +10 -8
- package/dist/compiler-assets/src/authoring/index.ts +33 -26
- package/dist/compiler-assets/src/authoring/instructions.ts +10 -5
- package/dist/compiler-assets/src/authoring/sandbox.ts +10 -10
- package/dist/compiler-assets/src/authoring/schedules.ts +4 -4
- package/dist/compiler-assets/src/authoring/skills.ts +4 -4
- package/dist/compiler-assets/src/authoring/tools.ts +10 -8
- package/dist/compiler-assets/src/compatibility.ts +11 -11
- package/dist/compiler-assets/src/hosted-bindings.ts +15 -0
- package/dist/compiler-assets/src/index.ts +54 -41
- package/dist/compiler-assets/src/manifest.ts +8 -4
- package/dist/compiler-assets/src/resolve.ts +5 -5
- package/dist/compiler-assets/src/runtime/bundle.ts +22 -20
- package/dist/compiler-assets/src/runtime/describe.ts +14 -12
- package/dist/compiler-assets/src/runtime/described.ts +19 -12
- package/dist/compiler-assets/src/runtime/isolate.ts +18 -16
- package/dist/compiler-assets/src/runtime/lower.ts +13 -11
- package/dist/compiler-assets/src/runtime/schema-validation.ts +4 -4
- package/dist/compiler-assets/src/runtime/values.ts +2 -2
- package/dist/modules/authoring/agent.d.mts +3 -2
- package/dist/modules/authoring/agent.mjs.map +2 -2
- package/dist/modules/authoring/connections.d.mts +15 -2
- package/dist/modules/authoring/connections.mjs +36 -0
- package/dist/modules/authoring/connections.mjs.map +2 -2
- package/dist/modules/authoring/context.d.mts +3 -1
- package/dist/modules/authoring/context.mjs.map +2 -2
- package/dist/modules/authoring/dynamic.d.mts +3 -1
- package/dist/modules/authoring/dynamic.mjs +19 -1
- package/dist/modules/authoring/dynamic.mjs.map +2 -2
- package/dist/modules/authoring/harness.mjs +2 -0
- package/dist/modules/authoring/harness.mjs.map +2 -2
- package/dist/modules/authoring/hooks.d.mts +2 -1
- package/dist/modules/authoring/hooks.mjs.map +2 -2
- package/dist/modules/authoring/index.d.mts +4 -2
- package/dist/modules/authoring/index.mjs +4 -1
- package/dist/modules/authoring/index.mjs.map +2 -2
- package/dist/modules/authoring/sandbox.d.mts +2 -1
- package/dist/modules/authoring/sandbox.mjs.map +2 -2
- package/dist/modules/compiler/assemble.mjs +6 -1
- package/dist/modules/compiler/assemble.mjs.map +2 -2
- package/dist/modules/compiler/index.d.mts +2 -1
- package/dist/modules/compiler/index.mjs +18 -0
- package/dist/modules/compiler/index.mjs.map +2 -2
- package/dist/modules/compiler/local-isolate.d.mts +2 -1
- package/dist/modules/compiler/local-isolate.mjs +6 -1
- package/dist/modules/compiler/local-isolate.mjs.map +2 -2
- package/dist/modules/hosted-bindings.d.mts +10 -0
- package/dist/modules/hosted-bindings.mjs +36 -0
- package/dist/modules/hosted-bindings.mjs.map +7 -0
- package/dist/modules/index.d.mts +2 -0
- package/dist/modules/index.mjs +2 -0
- package/dist/modules/index.mjs.map +2 -2
- package/dist/modules/manifest.d.mts +2 -2
- package/dist/modules/manifest.mjs +4 -0
- package/dist/modules/manifest.mjs.map +2 -2
- package/dist/modules/resolve.mjs +4 -0
- package/dist/modules/resolve.mjs.map +2 -2
- package/dist/modules/runtime/describe.mjs +25 -4
- package/dist/modules/runtime/describe.mjs.map +2 -2
- package/dist/modules/runtime/described.d.mts +40 -4
- package/dist/modules/runtime/described.mjs +7 -2
- package/dist/modules/runtime/described.mjs.map +2 -2
- package/dist/modules/runtime/isolate.d.mts +2 -0
- package/dist/modules/runtime/isolate.mjs +7 -4
- package/dist/modules/runtime/isolate.mjs.map +2 -2
- package/dist/modules/runtime/lower.mjs +76 -14
- package/dist/modules/runtime/lower.mjs.map +2 -2
- package/dist/modules/runtime/schema-validation.mjs +19 -2
- package/dist/modules/runtime/schema-validation.mjs.map +2 -2
- package/fixtures/assistant/agent/agent.ts +7 -0
- package/package.json +4 -3
- package/dist/compiler-assets/chunk-GNR7XBPN.ts +0 -3364
- package/dist/compiler-assets/chunk-JNJE72EH.ts +0 -10
- package/dist/compiler-assets/chunk-T6WG4L4M.ts +0 -19
- /package/dist/compiler-assets/{chunk-6WR3PGNF.ts → chunk-CIWWFQHL.ts} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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;",
|
|
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 { validateHostedBindings } from \"./hosted-bindings.mjs\";\nexport type { ValidateHostedBindingsOptionsIface } from \"./hosted-bindings.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,SAAS,8BAA8B;AAEvC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAYP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +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';
|
|
1
|
+
export { BaseCapability, DynamicEvent, InstructionRole, MANIFEST_VERSION, McpServerBindingKind, SandboxAccess, SandboxAttach, ScheduleTarget, ToolApproval, agentAvatarSchema, avatarMediaSchema, 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 { AgentAvatarIface, AvatarMedia, AvatarState, AgentManifestIface, BaseToolsIface, BundleIface, ChannelBindingIface, DynamicSlotIface, DynamicSlotLocationIface, HarnessBindingIface, HookBindingIface, HttpMcpServerBindingIface, IdentityIface, InstructionFragmentIface, McpAuth, McpServerBinding, ResolvedAgentManifestIface, ResolvedSandboxBindingIface, SandboxBindingIface, ScheduleDefinitionIface, SkillBundleIface, ToolDescriptorIface, WorkerMcpServerBindingIface, } from '@finalai/agent-provider';
|
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
SandboxAttach,
|
|
9
9
|
ScheduleTarget,
|
|
10
10
|
ToolApproval,
|
|
11
|
+
agentAvatarSchema,
|
|
12
|
+
avatarMediaSchema,
|
|
11
13
|
agentManifestSchema,
|
|
12
14
|
baseToolsSchema,
|
|
13
15
|
bundleSchema,
|
|
@@ -41,7 +43,9 @@ export {
|
|
|
41
43
|
SandboxAttach,
|
|
42
44
|
ScheduleTarget,
|
|
43
45
|
ToolApproval,
|
|
46
|
+
agentAvatarSchema,
|
|
44
47
|
agentManifestSchema,
|
|
48
|
+
avatarMediaSchema,
|
|
45
49
|
baseToolsSchema,
|
|
46
50
|
bundleSchema,
|
|
47
51
|
channelBindingSchema,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/manifest.ts"],
|
|
4
|
-
"sourcesContent": ["// The Agent Manifest lives in the provider contract (harnesses, sandboxes and\n// channels receive it); this package compiles directories into it.\nexport {\n BaseCapability,\n DynamicEvent,\n InstructionRole,\n MANIFEST_VERSION,\n McpServerBindingKind,\n SandboxAccess,\n SandboxAttach,\n ScheduleTarget,\n ToolApproval,\n agentManifestSchema,\n baseToolsSchema,\n bundleSchema,\n channelBindingSchema,\n dynamicSlotSchema,\n emptyManifest,\n findDynamicSlots,\n harnessBindingSchema,\n hookBindingSchema,\n httpMcpServerBindingSchema,\n identitySchema,\n instructionFragmentSchema,\n isDynamicSlot,\n mcpAuthSchema,\n mcpServerBindingSchema,\n resolvedAgentManifestSchema,\n sandboxBindingSchema,\n scheduleDefinitionSchema,\n skillBundleSchema,\n skillFileSchema,\n toolDescriptorSchema,\n workerMcpServerBindingSchema,\n} from '@finalai/agent-provider';\nexport type {\n AgentManifestIface,\n BaseToolsIface,\n BundleIface,\n ChannelBindingIface,\n DynamicSlotIface,\n DynamicSlotLocationIface,\n HarnessBindingIface,\n HookBindingIface,\n HttpMcpServerBindingIface,\n IdentityIface,\n InstructionFragmentIface,\n McpAuth,\n McpServerBinding,\n ResolvedAgentManifestIface,\n ResolvedSandboxBindingIface,\n SandboxBindingIface,\n ScheduleDefinitionIface,\n SkillBundleIface,\n ToolDescriptorIface,\n WorkerMcpServerBindingIface,\n} from '@finalai/agent-provider';\n"],
|
|
5
|
-
"mappings": "AAEA;AAAA,EACE;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;AAAA,EACA;AAAA,EACA;AAAA,OACK;",
|
|
4
|
+
"sourcesContent": ["// The Agent Manifest lives in the provider contract (harnesses, sandboxes and\n// channels receive it); this package compiles directories into it.\nexport {\n BaseCapability,\n DynamicEvent,\n InstructionRole,\n MANIFEST_VERSION,\n McpServerBindingKind,\n SandboxAccess,\n SandboxAttach,\n ScheduleTarget,\n ToolApproval,\n agentAvatarSchema,\n avatarMediaSchema,\n agentManifestSchema,\n baseToolsSchema,\n bundleSchema,\n channelBindingSchema,\n dynamicSlotSchema,\n emptyManifest,\n findDynamicSlots,\n harnessBindingSchema,\n hookBindingSchema,\n httpMcpServerBindingSchema,\n identitySchema,\n instructionFragmentSchema,\n isDynamicSlot,\n mcpAuthSchema,\n mcpServerBindingSchema,\n resolvedAgentManifestSchema,\n sandboxBindingSchema,\n scheduleDefinitionSchema,\n skillBundleSchema,\n skillFileSchema,\n toolDescriptorSchema,\n workerMcpServerBindingSchema,\n} from '@finalai/agent-provider';\nexport type {\n AgentAvatarIface,\n AvatarMedia,\n AvatarState,\n AgentManifestIface,\n BaseToolsIface,\n BundleIface,\n ChannelBindingIface,\n DynamicSlotIface,\n DynamicSlotLocationIface,\n HarnessBindingIface,\n HookBindingIface,\n HttpMcpServerBindingIface,\n IdentityIface,\n InstructionFragmentIface,\n McpAuth,\n McpServerBinding,\n ResolvedAgentManifestIface,\n ResolvedSandboxBindingIface,\n SandboxBindingIface,\n ScheduleDefinitionIface,\n SkillBundleIface,\n ToolDescriptorIface,\n WorkerMcpServerBindingIface,\n} from '@finalai/agent-provider';\n"],
|
|
5
|
+
"mappings": "AAEA;AAAA,EACE;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;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/modules/resolve.mjs
CHANGED
|
@@ -145,6 +145,10 @@ const resolveManifestDetailed = async (args) => {
|
|
|
145
145
|
for (const found of slots) {
|
|
146
146
|
const subscribed = found.slot.$dynamic.events.includes(args.event);
|
|
147
147
|
const raw = subscribed ? await args.resolve(found.slot, found.path) : args.previous?.[found.path] ?? null;
|
|
148
|
+
if ((found.slot.$dynamic.requiredBindings?.length ?? 0) > 0 && raw == null)
|
|
149
|
+
throw new Error(
|
|
150
|
+
`Required hosted bindings for ${found.path} did not resolve: ${found.slot.$dynamic.requiredBindings?.map((item) => item.name).join(", ")}`
|
|
151
|
+
);
|
|
148
152
|
if (subscribed) checkEnvironmentProvider(args.manifest, found.path, raw);
|
|
149
153
|
normalized[found.path] = validateSlotValue(found.path, raw) ?? FIELD_DEFAULTS.get(found.path) ?? null;
|
|
150
154
|
values[found.path] = slotKindOf(found.path) === "sandbox-environment" /* SandboxEnvironment */ ? raw : normalized[found.path] ?? null;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/resolve.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n findDynamicSlots,\n formatProviderRef,\n instructionFragmentSchema,\n isDynamicSlot,\n jsonObjectSchema,\n jsonValueSchema,\n mcpServerBindingSchema,\n ProviderRefKind,\n providerRefSchema,\n resolvedAgentManifestSchema,\n sandboxBindingSchema,\n skillBundleSchema,\n type AgentManifestIface,\n type DynamicEvent,\n type DynamicSlotIface,\n type JsonValue,\n type ResolvedAgentManifestIface,\n} from '@finalai/agent-provider';\nimport * as z from 'zod';\n\n// Resolves a static manifest's dynamic slots for one session. The session service runs each resolver in the agent's isolate; this\n// helper decides which slots run at a boundary, validates each output against\n// the static field's schema, and splices the results in.\n\nexport type ResolveSlot = (slot: DynamicSlotIface, path: string) => Promise<JsonValue | null>;\n\nexport interface ResolveManifestArgsIface {\n manifest: AgentManifestIface;\n event: DynamicEvent;\n resolve: ResolveSlot;\n // Values from an earlier boundary (session.started values at turn.started),\n // used for slots that do not resolve at this event.\n previous?: Record<string, JsonValue | null>;\n}\n\nexport interface ResolvedManifestDetailIface {\n manifest: ResolvedAgentManifestIface;\n // Slot path \u2192 resolved value, for agent.session_manifests and later boundaries.\n values: Record<string, JsonValue | null>;\n}\n\nexport enum SlotValueKind {\n InstructionFragment = 'instruction-fragment',\n SkillBundle = 'skill-bundle',\n McpServers = 'mcp-servers',\n Sandboxes = 'sandboxes',\n SandboxEnvironment = 'sandbox-environment',\n Opaque = 'opaque',\n}\n\nexport const slotKindOf = (path: string): SlotValueKind => {\n if (/^harness\\.config\\.instructions\\[\\d+\\]$/.test(path)) return SlotValueKind.InstructionFragment;\n if (/^harness\\.config\\.skills\\[\\d+\\]$/.test(path)) return SlotValueKind.SkillBundle;\n if (path === 'mcpServers') return SlotValueKind.McpServers;\n if (path === 'sandboxes') return SlotValueKind.Sandboxes;\n if (/^sandboxes\\.[^.]+\\.environment$/.test(path)) return SlotValueKind.SandboxEnvironment;\n return SlotValueKind.Opaque;\n};\n\nconst resolvedSandboxesSchema = z.record(\n z.string(),\n sandboxBindingSchema.extend({ environment: jsonValueSchema }),\n);\n\nconst issueText = (error: z.ZodError): string =>\n error.issues.map((issue) => `${issue.path.join('.') || 'value'}: ${issue.message}`).join('; ');\n\nconst invalid = (path: string, detail: string): Error =>\n new Error(`dynamic slot ${path} resolved to an invalid value: ${detail}`);\n\nconst parseAs = <T extends z.ZodType>(schema: T, value: JsonValue, path: string): JsonValue => {\n const parsed = schema.safeParse(value);\n if (!parsed.success) throw invalid(path, issueText(parsed.error));\n return jsonValueSchema.parse(parsed.data);\n};\n\nconst isRecord = (value: JsonValue): value is { [key: string]: JsonValue } =>\n jsonObjectSchema.safeParse(value).success;\n\nconst roleless = z.looseObject({ role: z.null().optional() });\nconst environmentResultSchema = z.looseObject({\n providerName: z.string(),\n providerRef: jsonValueSchema.optional(),\n options: jsonValueSchema.optional(),\n openOptions: jsonValueSchema.optional(),\n});\n\n// Instruction results without a role ({ content }) default to system;\n// environment-shaped results normalize to their options.\nexport const validateSlotValue = (\n path: string,\n value: JsonValue | null,\n manifest?: AgentManifestIface,\n): JsonValue | null => {\n if (value == null) return null;\n switch (slotKindOf(path)) {\n case SlotValueKind.InstructionFragment: {\n if (isRecord(value) && roleless.safeParse(value).success) {\n return parseAs(instructionFragmentSchema, { ...value, role: 'system' }, path);\n }\n return parseAs(instructionFragmentSchema, value, path);\n }\n case SlotValueKind.SkillBundle:\n return Array.isArray(value)\n ? parseAs(z.array(skillBundleSchema), value, path)\n : parseAs(skillBundleSchema, value, path);\n case SlotValueKind.McpServers:\n return parseAs(z.array(mcpServerBindingSchema), value, path);\n case SlotValueKind.Sandboxes:\n return parseAs(resolvedSandboxesSchema, value, path);\n case SlotValueKind.SandboxEnvironment:\n if (manifest != null) checkEnvironmentProvider(manifest, path, value);\n const environment = environmentResultSchema.safeParse(value);\n if (environment.success && environment.data.openOptions != null)\n parseAs(\n sandboxBindingSchema.pick({ access: true, attach: true }).partial(),\n environment.data.openOptions,\n path,\n );\n return environment.success ? (environment.data.options ?? null) : value;\n case SlotValueKind.Opaque:\n return value;\n }\n};\n\nconst childPath = (parent: string, key: string | number): string => {\n if (z.number().safeParse(key).success) return `${parent}[${key}]`;\n return parent.length === 0 ? `${key}` : `${parent}.${key}`;\n};\n\n// Like replaceDynamicSlots, except that an array-item slot that resolved to\n// an array (several skills from one resolver) splices all of them in, and an\n// object field that resolved to null is omitted.\nconst splice = (\n value: JsonValue,\n values: Record<string, JsonValue | null>,\n path: string,\n): JsonValue => {\n if (isDynamicSlot(value)) return values[path] ?? null;\n if (Array.isArray(value)) {\n const out: JsonValue[] = [];\n value.forEach((item, index) => {\n const itemPath = childPath(path, index);\n if (isDynamicSlot(item)) {\n const resolved = values[itemPath];\n if (resolved == null) return;\n if (Array.isArray(resolved) && slotKindOf(itemPath) === SlotValueKind.SkillBundle)\n out.push(...resolved);\n else out.push(resolved);\n return;\n }\n out.push(splice(item, values, itemPath));\n });\n return out;\n }\n if (isRecord(value)) {\n const out: { [key: string]: JsonValue } = {};\n for (const [key, item] of Object.entries(value)) {\n const itemPath = childPath(path, key);\n // A config field whose resolver returned null is left out, so the\n // harness applies its own default; required fields keep their value.\n if (isDynamicSlot(item) && values[itemPath] == null && !KEEP_NULL.test(itemPath)) continue;\n out[key] = splice(item, values, itemPath);\n }\n return out;\n }\n return value;\n};\n\nconst KEEP_NULL = /^(sandboxes\\.[^.]+\\.environment)$/;\n\nconst FIELD_DEFAULTS = new Map<string, JsonValue>([\n ['mcpServers', []],\n ['sandboxes', {}],\n ['harness.config', {}],\n]);\n\n// A dynamic sandbox environment must be one of its binding's provider (the\n// compiler may have inferred that provider).\n\nconst checkEnvironmentProvider = (\n manifest: AgentManifestIface,\n path: string,\n value: JsonValue | null,\n): void => {\n if (slotKindOf(path) !== SlotValueKind.SandboxEnvironment || value == null) return;\n const returned = environmentResultSchema.safeParse(value);\n if (!returned.success) return;\n const target = path.slice('sandboxes.'.length, -'.environment'.length);\n const sandboxes = z.record(z.string(), sandboxBindingSchema).safeParse(manifest.sandboxes);\n const provider = sandboxes.success ? sandboxes.data[target]?.provider : undefined;\n if (provider == null) return;\n const returnedRef = providerRefSchema.safeParse(returned.data.providerRef);\n const mismatch = returnedRef.success\n ? formatProviderRef(returnedRef.data) !== formatProviderRef(provider)\n : // A bundle provider's environment carries only its name; installed ones are named for their specifier.\n provider.kind === ProviderRefKind.Package;\n if (mismatch) {\n throw invalid(\n path,\n `returned a ${returned.data.providerName} environment for a ${formatProviderRef(provider)} target`,\n );\n }\n};\n\nexport const resolveManifestDetailed = async (\n args: ResolveManifestArgsIface,\n): Promise<ResolvedManifestDetailIface> => {\n const manifestJson = jsonValueSchema.parse(args.manifest);\n const slots = findDynamicSlots(manifestJson);\n const values: Record<string, JsonValue | null> = {};\n const normalized: Record<string, JsonValue | null> = {};\n for (const found of slots) {\n const subscribed = found.slot.$dynamic.events.includes(args.event);\n const raw = subscribed\n ? await args.resolve(found.slot, found.path)\n : (args.previous?.[found.path] ?? null);\n if (subscribed) checkEnvironmentProvider(args.manifest, found.path, raw);\n normalized[found.path] =\n validateSlotValue(found.path, raw) ?? FIELD_DEFAULTS.get(found.path) ?? null;\n // Retain the descriptor so a later boundary preserves its open options too.\n values[found.path] =\n slotKindOf(found.path) === SlotValueKind.SandboxEnvironment\n ? raw\n : (normalized[found.path] ?? null);\n }\n const spliced = splice(manifestJson, normalized, '');\n const parsed = resolvedAgentManifestSchema.safeParse(spliced);\n if (!parsed.success) throw new Error(`resolved manifest is invalid: ${issueText(parsed.error)}`);\n const openOptionsSchema = sandboxBindingSchema.pick({ access: true, attach: true }).partial();\n for (const [path, raw] of Object.entries(values)) {\n if (slotKindOf(path) !== SlotValueKind.SandboxEnvironment) continue;\n const environment = environmentResultSchema.safeParse(raw);\n if (!environment.success || environment.data.openOptions == null) continue;\n const options = openOptionsSchema.safeParse(environment.data.openOptions);\n if (!options.success) throw invalid(path, issueText(options.error));\n const target = path.slice('sandboxes.'.length, -'.environment'.length);\n const binding = parsed.data.sandboxes[target];\n if (binding != null) parsed.data.sandboxes[target] = { ...binding, ...options.data };\n }\n return { manifest: parsed.data, values };\n};\n\nexport const resolveManifest = async (\n args: ResolveManifestArgsIface,\n): Promise<ResolvedAgentManifestIface> => (await resolveManifestDetailed(args)).manifest;\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import {\n findDynamicSlots,\n formatProviderRef,\n instructionFragmentSchema,\n isDynamicSlot,\n jsonObjectSchema,\n jsonValueSchema,\n mcpServerBindingSchema,\n ProviderRefKind,\n providerRefSchema,\n resolvedAgentManifestSchema,\n sandboxBindingSchema,\n skillBundleSchema,\n type AgentManifestIface,\n type DynamicEvent,\n type DynamicSlotIface,\n type JsonValue,\n type ResolvedAgentManifestIface,\n} from '@finalai/agent-provider';\nimport * as z from 'zod';\n\n// Resolves a static manifest's dynamic slots for one session. The session service runs each resolver in the agent's isolate; this\n// helper decides which slots run at a boundary, validates each output against\n// the static field's schema, and splices the results in.\n\nexport type ResolveSlot = (slot: DynamicSlotIface, path: string) => Promise<JsonValue | null>;\n\nexport interface ResolveManifestArgsIface {\n manifest: AgentManifestIface;\n event: DynamicEvent;\n resolve: ResolveSlot;\n // Values from an earlier boundary (session.started values at turn.started),\n // used for slots that do not resolve at this event.\n previous?: Record<string, JsonValue | null>;\n}\n\nexport interface ResolvedManifestDetailIface {\n manifest: ResolvedAgentManifestIface;\n // Slot path \u2192 resolved value, for agent.session_manifests and later boundaries.\n values: Record<string, JsonValue | null>;\n}\n\nexport enum SlotValueKind {\n InstructionFragment = 'instruction-fragment',\n SkillBundle = 'skill-bundle',\n McpServers = 'mcp-servers',\n Sandboxes = 'sandboxes',\n SandboxEnvironment = 'sandbox-environment',\n Opaque = 'opaque',\n}\n\nexport const slotKindOf = (path: string): SlotValueKind => {\n if (/^harness\\.config\\.instructions\\[\\d+\\]$/.test(path)) return SlotValueKind.InstructionFragment;\n if (/^harness\\.config\\.skills\\[\\d+\\]$/.test(path)) return SlotValueKind.SkillBundle;\n if (path === 'mcpServers') return SlotValueKind.McpServers;\n if (path === 'sandboxes') return SlotValueKind.Sandboxes;\n if (/^sandboxes\\.[^.]+\\.environment$/.test(path)) return SlotValueKind.SandboxEnvironment;\n return SlotValueKind.Opaque;\n};\n\nconst resolvedSandboxesSchema = z.record(\n z.string(),\n sandboxBindingSchema.extend({ environment: jsonValueSchema }),\n);\n\nconst issueText = (error: z.ZodError): string =>\n error.issues.map((issue) => `${issue.path.join('.') || 'value'}: ${issue.message}`).join('; ');\n\nconst invalid = (path: string, detail: string): Error =>\n new Error(`dynamic slot ${path} resolved to an invalid value: ${detail}`);\n\nconst parseAs = <T extends z.ZodType>(schema: T, value: JsonValue, path: string): JsonValue => {\n const parsed = schema.safeParse(value);\n if (!parsed.success) throw invalid(path, issueText(parsed.error));\n return jsonValueSchema.parse(parsed.data);\n};\n\nconst isRecord = (value: JsonValue): value is { [key: string]: JsonValue } =>\n jsonObjectSchema.safeParse(value).success;\n\nconst roleless = z.looseObject({ role: z.null().optional() });\nconst environmentResultSchema = z.looseObject({\n providerName: z.string(),\n providerRef: jsonValueSchema.optional(),\n options: jsonValueSchema.optional(),\n openOptions: jsonValueSchema.optional(),\n});\n\n// Instruction results without a role ({ content }) default to system;\n// environment-shaped results normalize to their options.\nexport const validateSlotValue = (\n path: string,\n value: JsonValue | null,\n manifest?: AgentManifestIface,\n): JsonValue | null => {\n if (value == null) return null;\n switch (slotKindOf(path)) {\n case SlotValueKind.InstructionFragment: {\n if (isRecord(value) && roleless.safeParse(value).success) {\n return parseAs(instructionFragmentSchema, { ...value, role: 'system' }, path);\n }\n return parseAs(instructionFragmentSchema, value, path);\n }\n case SlotValueKind.SkillBundle:\n return Array.isArray(value)\n ? parseAs(z.array(skillBundleSchema), value, path)\n : parseAs(skillBundleSchema, value, path);\n case SlotValueKind.McpServers:\n return parseAs(z.array(mcpServerBindingSchema), value, path);\n case SlotValueKind.Sandboxes:\n return parseAs(resolvedSandboxesSchema, value, path);\n case SlotValueKind.SandboxEnvironment:\n if (manifest != null) checkEnvironmentProvider(manifest, path, value);\n const environment = environmentResultSchema.safeParse(value);\n if (environment.success && environment.data.openOptions != null)\n parseAs(\n sandboxBindingSchema.pick({ access: true, attach: true }).partial(),\n environment.data.openOptions,\n path,\n );\n return environment.success ? (environment.data.options ?? null) : value;\n case SlotValueKind.Opaque:\n return value;\n }\n};\n\nconst childPath = (parent: string, key: string | number): string => {\n if (z.number().safeParse(key).success) return `${parent}[${key}]`;\n return parent.length === 0 ? `${key}` : `${parent}.${key}`;\n};\n\n// Like replaceDynamicSlots, except that an array-item slot that resolved to\n// an array (several skills from one resolver) splices all of them in, and an\n// object field that resolved to null is omitted.\nconst splice = (\n value: JsonValue,\n values: Record<string, JsonValue | null>,\n path: string,\n): JsonValue => {\n if (isDynamicSlot(value)) return values[path] ?? null;\n if (Array.isArray(value)) {\n const out: JsonValue[] = [];\n value.forEach((item, index) => {\n const itemPath = childPath(path, index);\n if (isDynamicSlot(item)) {\n const resolved = values[itemPath];\n if (resolved == null) return;\n if (Array.isArray(resolved) && slotKindOf(itemPath) === SlotValueKind.SkillBundle)\n out.push(...resolved);\n else out.push(resolved);\n return;\n }\n out.push(splice(item, values, itemPath));\n });\n return out;\n }\n if (isRecord(value)) {\n const out: { [key: string]: JsonValue } = {};\n for (const [key, item] of Object.entries(value)) {\n const itemPath = childPath(path, key);\n // A config field whose resolver returned null is left out, so the\n // harness applies its own default; required fields keep their value.\n if (isDynamicSlot(item) && values[itemPath] == null && !KEEP_NULL.test(itemPath)) continue;\n out[key] = splice(item, values, itemPath);\n }\n return out;\n }\n return value;\n};\n\nconst KEEP_NULL = /^(sandboxes\\.[^.]+\\.environment)$/;\n\nconst FIELD_DEFAULTS = new Map<string, JsonValue>([\n ['mcpServers', []],\n ['sandboxes', {}],\n ['harness.config', {}],\n]);\n\n// A dynamic sandbox environment must be one of its binding's provider (the\n// compiler may have inferred that provider).\n\nconst checkEnvironmentProvider = (\n manifest: AgentManifestIface,\n path: string,\n value: JsonValue | null,\n): void => {\n if (slotKindOf(path) !== SlotValueKind.SandboxEnvironment || value == null) return;\n const returned = environmentResultSchema.safeParse(value);\n if (!returned.success) return;\n const target = path.slice('sandboxes.'.length, -'.environment'.length);\n const sandboxes = z.record(z.string(), sandboxBindingSchema).safeParse(manifest.sandboxes);\n const provider = sandboxes.success ? sandboxes.data[target]?.provider : undefined;\n if (provider == null) return;\n const returnedRef = providerRefSchema.safeParse(returned.data.providerRef);\n const mismatch = returnedRef.success\n ? formatProviderRef(returnedRef.data) !== formatProviderRef(provider)\n : // A bundle provider's environment carries only its name; installed ones are named for their specifier.\n provider.kind === ProviderRefKind.Package;\n if (mismatch) {\n throw invalid(\n path,\n `returned a ${returned.data.providerName} environment for a ${formatProviderRef(provider)} target`,\n );\n }\n};\n\nexport const resolveManifestDetailed = async (\n args: ResolveManifestArgsIface,\n): Promise<ResolvedManifestDetailIface> => {\n const manifestJson = jsonValueSchema.parse(args.manifest);\n const slots = findDynamicSlots(manifestJson);\n const values: Record<string, JsonValue | null> = {};\n const normalized: Record<string, JsonValue | null> = {};\n for (const found of slots) {\n const subscribed = found.slot.$dynamic.events.includes(args.event);\n const raw = subscribed\n ? await args.resolve(found.slot, found.path)\n : (args.previous?.[found.path] ?? null);\n if ((found.slot.$dynamic.requiredBindings?.length ?? 0) > 0 && raw == null)\n throw new Error(\n `Required hosted bindings for ${found.path} did not resolve: ${found.slot.$dynamic.requiredBindings?.map((item) => item.name).join(', ')}`,\n );\n if (subscribed) checkEnvironmentProvider(args.manifest, found.path, raw);\n normalized[found.path] =\n validateSlotValue(found.path, raw) ?? FIELD_DEFAULTS.get(found.path) ?? null;\n // Retain the descriptor so a later boundary preserves its open options too.\n values[found.path] =\n slotKindOf(found.path) === SlotValueKind.SandboxEnvironment\n ? raw\n : (normalized[found.path] ?? null);\n }\n const spliced = splice(manifestJson, normalized, '');\n const parsed = resolvedAgentManifestSchema.safeParse(spliced);\n if (!parsed.success) throw new Error(`resolved manifest is invalid: ${issueText(parsed.error)}`);\n const openOptionsSchema = sandboxBindingSchema.pick({ access: true, attach: true }).partial();\n for (const [path, raw] of Object.entries(values)) {\n if (slotKindOf(path) !== SlotValueKind.SandboxEnvironment) continue;\n const environment = environmentResultSchema.safeParse(raw);\n if (!environment.success || environment.data.openOptions == null) continue;\n const options = openOptionsSchema.safeParse(environment.data.openOptions);\n if (!options.success) throw invalid(path, issueText(options.error));\n const target = path.slice('sandboxes.'.length, -'.environment'.length);\n const binding = parsed.data.sandboxes[target];\n if (binding != null) parsed.data.sandboxes[target] = { ...binding, ...options.data };\n }\n return { manifest: parsed.data, values };\n};\n\nexport const resolveManifest = async (\n args: ResolveManifestArgsIface,\n): Promise<ResolvedAgentManifestIface> => (await resolveManifestDetailed(args)).manifest;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["SlotValueKind"]
|
|
7
7
|
}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
agentAvatarSchema,
|
|
3
|
+
jsonValueSchema,
|
|
4
|
+
hostedBindingRequirementSchema
|
|
5
|
+
} from "@finalai/agent-provider";
|
|
1
6
|
import * as z from "zod";
|
|
2
7
|
import {
|
|
3
8
|
AuthoredKind,
|
|
@@ -61,7 +66,8 @@ const describeDynamic = (value) => {
|
|
|
61
66
|
events: dynamicEventsOf(value),
|
|
62
67
|
description: stringOrNull(fieldOf(value, "description")),
|
|
63
68
|
preview: stringOrNull(fieldOf(value, "preview")),
|
|
64
|
-
provider: hint
|
|
69
|
+
provider: hint,
|
|
70
|
+
requiredBindings: z.array(hostedBindingRequirementSchema).parse(fieldOf(value, "requiredBindings") ?? [])
|
|
65
71
|
};
|
|
66
72
|
};
|
|
67
73
|
const collectAgentDynamics = (agent) => {
|
|
@@ -88,13 +94,15 @@ const dynamicSlot = (value, path) => {
|
|
|
88
94
|
const slot = { resolver: `${AGENT_DYNAMIC_PREFIX}${path}`, events: described.events };
|
|
89
95
|
if (described.description != null) slot["description"] = described.description;
|
|
90
96
|
if (described.preview != null) slot["preview"] = described.preview;
|
|
97
|
+
if ((described.requiredBindings?.length ?? 0) > 0)
|
|
98
|
+
slot["requiredBindings"] = jsonValueSchema.parse(described.requiredBindings);
|
|
91
99
|
return { $dynamic: slot };
|
|
92
100
|
};
|
|
93
101
|
const isDefinedHarnessLike = (value) => isCallable(value) && isCallable(fieldOf(value, "describe")) && isCallable(fieldOf(value, "open"));
|
|
94
102
|
const KNOWN_AGENT_FIELDS = /* @__PURE__ */ new Set([
|
|
95
103
|
"name",
|
|
96
104
|
"description",
|
|
97
|
-
"
|
|
105
|
+
"avatar",
|
|
98
106
|
"harness",
|
|
99
107
|
"tools",
|
|
100
108
|
"toolPolicy",
|
|
@@ -121,7 +129,7 @@ const unknownAgentField = (key) => {
|
|
|
121
129
|
if (key === "defaultTools")
|
|
122
130
|
return "agent.ts field defaultTools is not supported: base tools are declared with tools: baseTools({ ... }) and are off by default";
|
|
123
131
|
if (key === "subagents" || key === "memory") return `agent.ts field ${key} is not supported yet`;
|
|
124
|
-
return `agent.ts field ${key} is not an agent field (name, description,
|
|
132
|
+
return `agent.ts field ${key} is not an agent field (name, description, avatar, harness, tools, toolPolicy, secrets, channels)`;
|
|
125
133
|
};
|
|
126
134
|
const describeHarness = (harness, ctx, issues) => {
|
|
127
135
|
if (harness == null) return null;
|
|
@@ -191,6 +199,19 @@ const describeSecrets = (value, issues) => {
|
|
|
191
199
|
issues.push(error("agent.ts secrets must be a list of secret names"));
|
|
192
200
|
return null;
|
|
193
201
|
};
|
|
202
|
+
const describeAvatar = (value, issues) => {
|
|
203
|
+
if (value === void 0) return null;
|
|
204
|
+
const parsed = agentAvatarSchema.safeParse(toJson(value, { path: "avatar", issues }));
|
|
205
|
+
if (parsed.success) return parsed.data;
|
|
206
|
+
for (const issue of parsed.error.issues) {
|
|
207
|
+
issues.push(
|
|
208
|
+
error(
|
|
209
|
+
`agent.ts avatar${issue.path.length > 0 ? `.${issue.path.join(".")}` : ""}: ${issue.message}`
|
|
210
|
+
)
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
return null;
|
|
214
|
+
};
|
|
194
215
|
const describeAgent = (value, ctx, issues) => {
|
|
195
216
|
if (value == null) return null;
|
|
196
217
|
if (!isPlainObject(value)) {
|
|
@@ -229,7 +250,7 @@ const describeAgent = (value, ctx, issues) => {
|
|
|
229
250
|
type: "agent",
|
|
230
251
|
name: stringOrNull(value["name"]),
|
|
231
252
|
description: stringOrNull(value["description"]),
|
|
232
|
-
|
|
253
|
+
avatar: describeAvatar(value["avatar"], issues),
|
|
233
254
|
harness: describeHarness(value["harness"], ctx, issues),
|
|
234
255
|
tools: baseToolsDescription?.targets ?? null,
|
|
235
256
|
hostTools: baseToolsDescription?.host ?? null,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/runtime/describe.ts"],
|
|
4
|
-
"sourcesContent": ["import type { JsonObject, JsonValue } from '@finalai/agent-provider';\nimport * as z from 'zod';\nimport {\n AuthoredKind,\n authoredKindOf,\n pendingEntries,\n pendingExportName,\n} from \"../authoring/brand.mjs\";\nimport type {\n DescribedAgentIface,\n DescribedBundleIface,\n DescribedDynamicIface,\n DescribedModuleIface,\n DescribedSandboxIface,\n DescribedSandboxTargetIface,\n DescribedValue,\n} from \"./described.mjs\";\nimport {\n AGENT_DYNAMIC_PREFIX,\n COMBINED_MCP_SERVERS_EXPORT,\n namedExportName,\n SlotKind,\n type LayoutModuleIface,\n} from \"./layout.mjs\";\nimport {\n childPath,\n dynamicEventsOf,\n error,\n isDynamicSentinel,\n isEnvironmentLike,\n isOpenRequestLike,\n lowerConnection,\n lowerEnvironment,\n lowerInstructions,\n lowerSkill,\n lowerTool,\n note,\n sandboxProviderNameOf,\n toJson,\n type IssueIface,\n} from \"./lower.mjs\";\nimport {\n entriesOf,\n fieldOf,\n isCallable,\n isObjectLike,\n isPlainObject,\n isPromiseLike,\n isString,\n messageOf,\n stringOrNull,\n type AuthoredRecord,\n type AuthoredValue,\n} from \"./values.mjs\";\n\n// Static extraction, run inside the realm that evaluated the bundle. Reads\n// authored values; never calls tool bodies, resolvers or routes, and calls a\n// sandbox selector only to read the request a synchronous one returns.\n\nexport interface NamespaceEntryIface {\n layout: LayoutModuleIface;\n namespace: AuthoredRecord;\n}\n\nexport const describeDynamic = (value: AuthoredValue): DescribedDynamicIface => {\n const provider = fieldOf(value, 'provider');\n let hint: DescribedDynamicIface['provider'] = null;\n if (provider != null) {\n const kind = fieldOf(provider, 'kind');\n const ref = fieldOf(provider, 'providerRef');\n const issues: IssueIface[] = [];\n if ((kind === 'package' || kind === 'bundle') && provider != null) {\n hint = { ref: toJson(provider, { path: 'provider', issues }), name: null };\n } else if (ref != null) {\n hint = { ref: toJson(ref, { path: 'provider', issues }), name: null };\n } else {\n hint = {\n ref: null,\n name:\n stringOrNull(fieldOf(provider, 'name')) ??\n stringOrNull(fieldOf(fieldOf(provider, 'definition'), 'name')),\n };\n }\n }\n return {\n type: 'dynamic',\n events: dynamicEventsOf(value),\n description: stringOrNull(fieldOf(value, 'description')),\n preview: stringOrNull(fieldOf(value, 'preview')),\n provider: hint,\n };\n};\n\n// Dynamic sentinels inside agent.ts's harness config, addressed by their authored path. The bundle exports each as\n// `agent:<path>`.\nexport const collectAgentDynamics = (\n agent: AuthoredValue,\n): { path: string; value: AuthoredValue }[] => {\n const found: { path: string; value: AuthoredValue }[] = [];\n const walk = (value: AuthoredValue, path: string, depth: number): void => {\n if (depth > 32) return;\n if (isDynamicSentinel(value)) {\n found.push({ path, value });\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((item, index) => walk(item, childPath(path, index), depth + 1));\n return;\n }\n if (isPlainObject(value) || authoredKindOf(value) != null) {\n for (const [key, item] of entriesOf(value)) walk(item, childPath(path, key), depth + 1);\n }\n };\n walk(fieldOf(fieldOf(agent, 'harness'), 'config'), 'harness.config', 0);\n return found;\n};\n\nconst dynamicSlot = (value: AuthoredValue, path: string): JsonValue => {\n const described = describeDynamic(value);\n const slot: JsonObject = { resolver: `${AGENT_DYNAMIC_PREFIX}${path}`, events: described.events };\n if (described.description != null) slot['description'] = described.description;\n if (described.preview != null) slot['preview'] = described.preview;\n return { $dynamic: slot };\n};\n\nconst isDefinedHarnessLike = (value: AuthoredValue): boolean =>\n isCallable(value) && isCallable(fieldOf(value, 'describe')) && isCallable(fieldOf(value, 'open'));\n\nconst KNOWN_AGENT_FIELDS: ReadonlySet<string> = new Set([\n 'name',\n 'description',\n 'avatarUrl',\n 'harness',\n 'tools',\n 'toolPolicy',\n 'secrets',\n 'channels',\n]);\n\n// Harness configuration belongs in the harness binding rather than top-level agent fields.\nconst HARNESS_CONFIG_FIELDS: ReadonlySet<string> = new Set([\n 'model',\n 'reasoning',\n 'credentials',\n 'permissions',\n 'permissionMode',\n 'instructions',\n 'skills',\n 'system',\n 'temperature',\n 'providerOptions',\n 'maxSteps',\n 'stopWhen',\n]);\n\nconst unknownAgentField = (key: string): string => {\n if (HARNESS_CONFIG_FIELDS.has(key))\n return `agent.ts field ${key} belongs in harness config (harness: serverlessPi({ ${key}: ... }))`;\n if (key === 'defaultTools')\n return 'agent.ts field defaultTools is not supported: base tools are declared with tools: baseTools({ ... }) and are off by default';\n if (key === 'subagents' || key === 'memory') return `agent.ts field ${key} is not supported yet`;\n return `agent.ts field ${key} is not an agent field (name, description, avatarUrl, harness, tools, toolPolicy, secrets, channels)`;\n};\n\ninterface DescribeContextIface {\n entries: NamespaceEntryIface[];\n sandboxIdentity: Map<AuthoredValue, string>;\n}\n\nconst describeHarness = (\n harness: AuthoredValue,\n ctx: DescribeContextIface,\n issues: IssueIface[],\n): DescribedAgentIface['harness'] => {\n if (harness == null) return null;\n const ref = fieldOf(harness, 'harness');\n if (!isObjectLike(ref)) {\n issues.push(error('agent.ts harness must be a harness binding, e.g. serverlessPi({ ... })'));\n return null;\n }\n let refJson = toJson(ref, { path: 'harness.harness', issues });\n if (fieldOf(ref, 'kind') === 'bundle' && fieldOf(ref, 'export') === '<pending>') {\n const candidates = ctx.entries.flatMap((entry) =>\n Object.entries(entry.namespace)\n .filter(([, value]) => isDefinedHarnessLike(value))\n .map(([name]) => namedExportName(entry.layout.base, name)),\n );\n if (candidates.length === 1 && candidates[0] != null)\n refJson = { kind: 'bundle', export: candidates[0] };\n else\n issues.push(\n error(\n 'the custom harness must come from defineHarness in @finalai/agents, or be exported once',\n ),\n );\n }\n const config = toJson(fieldOf(harness, 'config') ?? {}, {\n path: 'harness.config',\n issues,\n visit: (value, path) => (isDynamicSentinel(value) ? dynamicSlot(value, path) : undefined),\n });\n return { harness: refJson, config };\n};\n\n// Capabilities bound to sandbox targets (by export name) and those declared on\n// the harness's own host (`harnessHost`).\nconst describeBaseTools = (\n tools: AuthoredValue,\n ctx: DescribeContextIface,\n issues: IssueIface[],\n): { targets: Record<string, string>; host: string[] } | null => {\n if (tools == null) return null;\n if (authoredKindOf(tools) !== AuthoredKind.BaseTools) {\n issues.push(error('agent.ts tools must be baseTools({ shell: target, files: target, ... })'));\n return null;\n }\n const base = fieldOf(tools, 'base');\n const out: Record<string, string> = {};\n const host: string[] = [];\n if (!isPlainObject(base)) return { targets: out, host };\n for (const [capability, target] of Object.entries(base)) {\n if (target == null) continue;\n if (authoredKindOf(target) === AuthoredKind.HarnessHost) {\n host.push(capability);\n continue;\n }\n if (isString(target)) {\n out[capability] = target;\n continue;\n }\n const name = ctx.sandboxIdentity.get(target);\n if (name == null) {\n issues.push(\n error(\n `baseTools ${capability} is bound to a value that is not a sandbox target exported from sandbox.ts`,\n ),\n );\n continue;\n }\n out[capability] = name;\n }\n return { targets: out, host };\n};\n\nconst describeSecrets = (value: AuthoredValue, issues: IssueIface[]): string[] | null => {\n if (value == null) return null;\n const parsed = z.array(z.string().min(1)).safeParse(value);\n if (parsed.success) return parsed.data;\n issues.push(error('agent.ts secrets must be a list of secret names'));\n return null;\n};\n\nconst describeAgent = (\n value: AuthoredValue,\n ctx: DescribeContextIface,\n issues: IssueIface[],\n): DescribedAgentIface | null => {\n if (value == null) return null;\n if (!isPlainObject(value)) {\n issues.push(error('agent.ts must export defineAgent({ ... }) as its default export'));\n return null;\n }\n for (const key of Object.keys(value)) {\n if (!KNOWN_AGENT_FIELDS.has(key)) issues.push(error(unknownAgentField(key)));\n }\n const toolPolicyRaw = value['toolPolicy'];\n let toolPolicy: Record<string, string> | null = null;\n if (isPlainObject(toolPolicyRaw)) {\n toolPolicy = {};\n for (const [key, policy] of Object.entries(toolPolicyRaw)) {\n if (policy === 'allow' || policy === 'ask') toolPolicy[key] = policy;\n else issues.push(error(`agent.ts toolPolicy.${key} must be 'allow' or 'ask'`));\n }\n }\n const channelsRaw = value['channels'];\n let channels: DescribedAgentIface['channels'] = null;\n if (Array.isArray(channelsRaw)) {\n channels = channelsRaw.map((binding, index) => ({\n key: stringOrNull(fieldOf(binding, 'key')),\n channel: toJson(fieldOf(binding, 'channel') ?? null, {\n path: `channels[${index}].channel`,\n issues,\n }),\n config: toJson(fieldOf(binding, 'config') ?? {}, {\n path: `channels[${index}].config`,\n issues,\n }),\n }));\n }\n const baseToolsDescription = describeBaseTools(value['tools'], ctx, issues);\n return {\n type: 'agent',\n name: stringOrNull(value['name']),\n description: stringOrNull(value['description']),\n avatarUrl: stringOrNull(value['avatarUrl']),\n harness: describeHarness(value['harness'], ctx, issues),\n tools: baseToolsDescription?.targets ?? null,\n hostTools: baseToolsDescription?.host ?? null,\n toolPolicy,\n secrets: describeSecrets(value['secrets'], issues),\n channels,\n };\n};\n\nconst probeSelector = (selector: AuthoredValue, issues: IssueIface[]): AuthoredValue | null => {\n if (!isCallable(selector)) return null;\n try {\n const result = selector({\n session: null,\n secrets: { get: async () => null },\n open: async () => {\n throw new Error('sandboxes do not open while compiling');\n },\n });\n if (isEnvironmentLike(result) || isOpenRequestLike(result)) return result;\n // An async selector: what it opens is known only at session start.\n if (isPromiseLike(result)) Promise.resolve(result).catch(() => undefined);\n return null;\n } catch (cause) {\n issues.push(\n error(\n `sandbox.ts selector failed during compilation: ${String(cause)}; export its environment when it needs session context`,\n ),\n );\n return null;\n }\n};\n\nconst describeSandbox = (\n namespace: AuthoredRecord,\n issues: IssueIface[],\n): DescribedSandboxIface => {\n const targets: Record<string, DescribedSandboxTargetIface> = {};\n const providers: Record<string, string> = {};\n const describeTarget = (\n value: AuthoredValue,\n exportName: string,\n path: string,\n ): DescribedSandboxTargetIface | null => {\n if (isDynamicSentinel(value))\n return { exportName, environment: null, dynamic: describeDynamic(value) };\n if (isEnvironmentLike(value) || isOpenRequestLike(value)) {\n return { exportName, environment: lowerEnvironment(value, path, issues), dynamic: null };\n }\n return null;\n };\n for (const [name, value] of Object.entries(namespace)) {\n if (name === 'default') continue;\n const exportName = namedExportName('sandbox', name);\n const providerName = sandboxProviderNameOf(value);\n if (providerName != null) {\n providers[exportName] = providerName;\n continue;\n }\n const target = describeTarget(value, exportName, `sandbox.ts ${name}`);\n if (target != null) targets[name] = target;\n }\n const named = Object.keys(targets);\n const fallback = describeTarget(namespace['default'], 'sandbox', 'sandbox.ts default export');\n const selector = authoredKindOf(namespace['default']) === AuthoredKind.SandboxSelector;\n if (fallback != null) targets['default'] = fallback;\n else if (namespace['default'] != null && !selector) {\n issues.push(\n error(\n 'sandbox.ts default export must be defineSandbox(selector), an environment, or defineDynamic(...)',\n ),\n );\n }\n // A selector that opens an environment it creates itself\n // (`defineSandbox(() => computer().open())`) names no export\n // to bind; a synchronous one is called once to read the request it returns,\n // which becomes the default target.\n if (selector && named.length === 0 && fallback == null) {\n const opened = probeSelector(namespace['default'], issues);\n if (opened != null) {\n targets['default'] = {\n exportName: 'sandbox',\n environment: lowerEnvironment(opened, 'sandbox.ts default export', issues),\n dynamic: null,\n };\n }\n }\n let defaultTarget: string | null = null;\n if (targets['default'] != null) defaultTarget = 'default';\n else if (named.length === 1) defaultTarget = named[0] ?? null;\n if (selector && defaultTarget == null) {\n issues.push(\n error(\n named.length === 0\n ? 'sandbox.ts default export opens a sandbox but no environment is exported; export the environment it opens (export const computer = computer({ ... }))'\n : 'sandbox.ts default export opens a sandbox but several environments are exported; the selector needs exactly one',\n ),\n );\n }\n return { type: 'sandbox', targets, providers, selector, defaultTarget };\n};\n\nconst sandboxIdentityOf = (\n namespace: AuthoredRecord | null,\n sandbox: DescribedSandboxIface | null,\n): Map<AuthoredValue, string> => {\n const identity = new Map<AuthoredValue, string>();\n if (namespace == null || sandbox == null) return identity;\n for (const [name, value] of Object.entries(namespace)) {\n if (name === 'default') {\n if (sandbox.defaultTarget != null) identity.set(value, sandbox.defaultTarget);\n } else if (sandbox.targets[name] != null) identity.set(value, name);\n }\n return identity;\n};\n\nconst describeModuleValue = (\n entry: NamespaceEntryIface,\n ctx: DescribeContextIface,\n sandbox: DescribedSandboxIface | null,\n issues: IssueIface[],\n): DescribedValue | null => {\n const { layout, namespace } = entry;\n const value = namespace['default'];\n switch (layout.slot) {\n case SlotKind.Agent:\n return describeAgent(value, ctx, issues);\n case SlotKind.Sandbox:\n return sandbox;\n case SlotKind.Instructions: {\n if (isDynamicSentinel(value)) return describeDynamic(value);\n const fragment = lowerInstructions(value, null);\n if (fragment == null) {\n issues.push(\n error(\n `${layout.path} must export defineInstructions({ content, role }) or defineDynamic(...)`,\n ),\n );\n return null;\n }\n return { type: 'instructions', role: fragment.role, content: fragment.content };\n }\n case SlotKind.Skill: {\n if (isDynamicSentinel(value)) return describeDynamic(value);\n const lowered = lowerSkill({ key: layout.key, value });\n issues.push(...lowered.issues);\n return { type: 'skill', skill: toJson(lowered.skill, { path: layout.path, issues }) };\n }\n case SlotKind.Tool: {\n if (isDynamicSentinel(value)) return describeDynamic(value);\n const lowered = lowerTool({ name: layout.key, exportName: layout.base, value });\n issues.push(...lowered.issues);\n return {\n type: 'tool',\n descriptor: toJson(lowered.descriptor, { path: layout.path, issues }),\n approval: lowered.approval,\n };\n }\n case SlotKind.Connection: {\n if (isDynamicSentinel(value)) return describeDynamic(value);\n const lowered = lowerConnection({ key: layout.key, exportName: layout.base, value });\n issues.push(...lowered.issues);\n return {\n type: 'connection',\n binding: toJson(lowered.binding, { path: layout.path, issues }),\n };\n }\n case SlotKind.Schedule:\n return {\n type: 'schedule',\n cron: stringOrNull(fieldOf(value, 'cron')),\n markdown: stringOrNull(fieldOf(value, 'markdown')),\n timezone: stringOrNull(fieldOf(value, 'timezone')),\n target: stringOrNull(fieldOf(value, 'target')),\n };\n case SlotKind.Hook: {\n const events = fieldOf(value, 'events');\n return {\n type: 'hook',\n keys: entriesOf(events).map(([key]) => key),\n };\n }\n case SlotKind.Channel: {\n const routes = fieldOf(value, 'routes');\n return {\n type: 'channel',\n disabled: fieldOf(value, 'disabled') === true,\n installed: toJson(fieldOf(value, 'installed') ?? null, {\n path: `${layout.path} installed`,\n issues,\n }),\n routes: Array.isArray(routes)\n ? routes.map((route) => ({\n method: String(fieldOf(route, 'method')),\n path: String(fieldOf(route, 'path')),\n }))\n : [],\n turnPolicy: stringOrNull(fieldOf(value, 'turnPolicy')),\n config: toJson(fieldOf(value, 'config') ?? {}, { path: `${layout.path} config`, issues }),\n };\n }\n }\n};\n\nexport const describeBundle = (\n entries: NamespaceEntryIface[],\n synthesized: string[],\n): DescribedBundleIface => {\n const sandboxEntry = entries.find((entry) => entry.layout.slot === SlotKind.Sandbox) ?? null;\n const sandboxIssues: IssueIface[] = [];\n let sandbox: DescribedSandboxIface | null = null;\n if (sandboxEntry != null) {\n try {\n sandbox = describeSandbox(sandboxEntry.namespace, sandboxIssues);\n } catch (cause) {\n sandboxIssues.push(error(`sandbox.ts could not be described: ${messageOf(cause)}`));\n }\n }\n const ctx: DescribeContextIface = {\n entries,\n sandboxIdentity: sandboxIdentityOf(sandboxEntry?.namespace ?? null, sandbox),\n };\n const modules: DescribedModuleIface[] = entries.map((entry) => {\n const issues: IssueIface[] = entry.layout.slot === SlotKind.Sandbox ? sandboxIssues : [];\n const hasDefault = 'default' in entry.namespace && entry.namespace['default'] !== undefined;\n let value: DescribedValue | null = null;\n if (hasDefault || entry.layout.slot === SlotKind.Sandbox) {\n try {\n value = describeModuleValue(entry, ctx, sandbox, issues);\n } catch (cause) {\n issues.push(error(`${entry.layout.path} could not be described: ${messageOf(cause)}`));\n }\n } else if (entry.layout.slot !== SlotKind.Agent) {\n issues.push(note(`${entry.layout.path} has no default export; treated as a helper module`));\n }\n return {\n base: entry.layout.base,\n path: entry.layout.path,\n slot: entry.layout.slot,\n key: entry.layout.key,\n hasDefault,\n issues,\n value,\n };\n });\n return { modules, synthesized };\n};\n\n// Export names the bundle synthesizes, in the order describe and the isolate\n// both compute them.\nexport const synthesizedExports = (\n entries: NamespaceEntryIface[],\n): { name: string; value: AuthoredValue }[] => {\n const out: { name: string; value: AuthoredValue }[] = [];\n for (const entry of entries) {\n if (entry.layout.slot !== SlotKind.Agent) continue;\n for (const found of collectAgentDynamics(entry.namespace['default'])) {\n out.push({ name: `${AGENT_DYNAMIC_PREFIX}${found.path}`, value: found.value });\n }\n }\n for (const pending of pendingEntries())\n out.push({ name: pendingExportName(pending.index), value: pending.value });\n return out;\n};\n\nexport const needsCombinedMcpServers = (entries: NamespaceEntryIface[]): boolean =>\n entries.some(\n (entry) =>\n (entry.layout.slot === SlotKind.Tool || entry.layout.slot === SlotKind.Connection) &&\n isDynamicSentinel(entry.namespace['default']),\n );\n\nexport { COMBINED_MCP_SERVERS_EXPORT };\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import {\n agentAvatarSchema,\n jsonValueSchema,\n hostedBindingRequirementSchema,\n type JsonObject,\n type JsonValue,\n} from '@finalai/agent-provider';\nimport * as z from 'zod';\nimport {\n AuthoredKind,\n authoredKindOf,\n pendingEntries,\n pendingExportName,\n} from \"../authoring/brand.mjs\";\nimport type {\n DescribedAgentIface,\n DescribedBundleIface,\n DescribedDynamicIface,\n DescribedModuleIface,\n DescribedSandboxIface,\n DescribedSandboxTargetIface,\n DescribedValue,\n} from \"./described.mjs\";\nimport {\n AGENT_DYNAMIC_PREFIX,\n COMBINED_MCP_SERVERS_EXPORT,\n namedExportName,\n SlotKind,\n type LayoutModuleIface,\n} from \"./layout.mjs\";\nimport {\n childPath,\n dynamicEventsOf,\n error,\n isDynamicSentinel,\n isEnvironmentLike,\n isOpenRequestLike,\n lowerConnection,\n lowerEnvironment,\n lowerInstructions,\n lowerSkill,\n lowerTool,\n note,\n sandboxProviderNameOf,\n toJson,\n type IssueIface,\n} from \"./lower.mjs\";\nimport {\n entriesOf,\n fieldOf,\n isCallable,\n isObjectLike,\n isPlainObject,\n isPromiseLike,\n isString,\n messageOf,\n stringOrNull,\n type AuthoredRecord,\n type AuthoredValue,\n} from \"./values.mjs\";\n\n// Static extraction, run inside the realm that evaluated the bundle. Reads\n// authored values; never calls tool bodies, resolvers or routes, and calls a\n// sandbox selector only to read the request a synchronous one returns.\n\nexport interface NamespaceEntryIface {\n layout: LayoutModuleIface;\n namespace: AuthoredRecord;\n}\n\nexport const describeDynamic = (value: AuthoredValue): DescribedDynamicIface => {\n const provider = fieldOf(value, 'provider');\n let hint: DescribedDynamicIface['provider'] = null;\n if (provider != null) {\n const kind = fieldOf(provider, 'kind');\n const ref = fieldOf(provider, 'providerRef');\n const issues: IssueIface[] = [];\n if ((kind === 'package' || kind === 'bundle') && provider != null) {\n hint = { ref: toJson(provider, { path: 'provider', issues }), name: null };\n } else if (ref != null) {\n hint = { ref: toJson(ref, { path: 'provider', issues }), name: null };\n } else {\n hint = {\n ref: null,\n name:\n stringOrNull(fieldOf(provider, 'name')) ??\n stringOrNull(fieldOf(fieldOf(provider, 'definition'), 'name')),\n };\n }\n }\n return {\n type: 'dynamic',\n events: dynamicEventsOf(value),\n description: stringOrNull(fieldOf(value, 'description')),\n preview: stringOrNull(fieldOf(value, 'preview')),\n provider: hint,\n requiredBindings: z\n .array(hostedBindingRequirementSchema)\n .parse(fieldOf(value, 'requiredBindings') ?? []),\n };\n};\n\n// Dynamic sentinels inside agent.ts's harness config, addressed by their authored path. The bundle exports each as\n// `agent:<path>`.\nexport const collectAgentDynamics = (\n agent: AuthoredValue,\n): { path: string; value: AuthoredValue }[] => {\n const found: { path: string; value: AuthoredValue }[] = [];\n const walk = (value: AuthoredValue, path: string, depth: number): void => {\n if (depth > 32) return;\n if (isDynamicSentinel(value)) {\n found.push({ path, value });\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((item, index) => walk(item, childPath(path, index), depth + 1));\n return;\n }\n if (isPlainObject(value) || authoredKindOf(value) != null) {\n for (const [key, item] of entriesOf(value)) walk(item, childPath(path, key), depth + 1);\n }\n };\n walk(fieldOf(fieldOf(agent, 'harness'), 'config'), 'harness.config', 0);\n return found;\n};\n\nconst dynamicSlot = (value: AuthoredValue, path: string): JsonValue => {\n const described = describeDynamic(value);\n const slot: JsonObject = { resolver: `${AGENT_DYNAMIC_PREFIX}${path}`, events: described.events };\n if (described.description != null) slot['description'] = described.description;\n if (described.preview != null) slot['preview'] = described.preview;\n if ((described.requiredBindings?.length ?? 0) > 0)\n slot['requiredBindings'] = jsonValueSchema.parse(described.requiredBindings);\n return { $dynamic: slot };\n};\n\nconst isDefinedHarnessLike = (value: AuthoredValue): boolean =>\n isCallable(value) && isCallable(fieldOf(value, 'describe')) && isCallable(fieldOf(value, 'open'));\n\nconst KNOWN_AGENT_FIELDS: ReadonlySet<string> = new Set([\n 'name',\n 'description',\n 'avatar',\n 'harness',\n 'tools',\n 'toolPolicy',\n 'secrets',\n 'channels',\n]);\n\n// Harness configuration belongs in the harness binding rather than top-level agent fields.\nconst HARNESS_CONFIG_FIELDS: ReadonlySet<string> = new Set([\n 'model',\n 'reasoning',\n 'credentials',\n 'permissions',\n 'permissionMode',\n 'instructions',\n 'skills',\n 'system',\n 'temperature',\n 'providerOptions',\n 'maxSteps',\n 'stopWhen',\n]);\n\nconst unknownAgentField = (key: string): string => {\n if (HARNESS_CONFIG_FIELDS.has(key))\n return `agent.ts field ${key} belongs in harness config (harness: serverlessPi({ ${key}: ... }))`;\n if (key === 'defaultTools')\n return 'agent.ts field defaultTools is not supported: base tools are declared with tools: baseTools({ ... }) and are off by default';\n if (key === 'subagents' || key === 'memory') return `agent.ts field ${key} is not supported yet`;\n return `agent.ts field ${key} is not an agent field (name, description, avatar, harness, tools, toolPolicy, secrets, channels)`;\n};\n\ninterface DescribeContextIface {\n entries: NamespaceEntryIface[];\n sandboxIdentity: Map<AuthoredValue, string>;\n}\n\nconst describeHarness = (\n harness: AuthoredValue,\n ctx: DescribeContextIface,\n issues: IssueIface[],\n): DescribedAgentIface['harness'] => {\n if (harness == null) return null;\n const ref = fieldOf(harness, 'harness');\n if (!isObjectLike(ref)) {\n issues.push(error('agent.ts harness must be a harness binding, e.g. serverlessPi({ ... })'));\n return null;\n }\n let refJson = toJson(ref, { path: 'harness.harness', issues });\n if (fieldOf(ref, 'kind') === 'bundle' && fieldOf(ref, 'export') === '<pending>') {\n const candidates = ctx.entries.flatMap((entry) =>\n Object.entries(entry.namespace)\n .filter(([, value]) => isDefinedHarnessLike(value))\n .map(([name]) => namedExportName(entry.layout.base, name)),\n );\n if (candidates.length === 1 && candidates[0] != null)\n refJson = { kind: 'bundle', export: candidates[0] };\n else\n issues.push(\n error(\n 'the custom harness must come from defineHarness in @finalai/agents, or be exported once',\n ),\n );\n }\n const config = toJson(fieldOf(harness, 'config') ?? {}, {\n path: 'harness.config',\n issues,\n visit: (value, path) => (isDynamicSentinel(value) ? dynamicSlot(value, path) : undefined),\n });\n return { harness: refJson, config };\n};\n\n// Capabilities bound to sandbox targets (by export name) and those declared on\n// the harness's own host (`harnessHost`).\nconst describeBaseTools = (\n tools: AuthoredValue,\n ctx: DescribeContextIface,\n issues: IssueIface[],\n): { targets: Record<string, string>; host: string[] } | null => {\n if (tools == null) return null;\n if (authoredKindOf(tools) !== AuthoredKind.BaseTools) {\n issues.push(error('agent.ts tools must be baseTools({ shell: target, files: target, ... })'));\n return null;\n }\n const base = fieldOf(tools, 'base');\n const out: Record<string, string> = {};\n const host: string[] = [];\n if (!isPlainObject(base)) return { targets: out, host };\n for (const [capability, target] of Object.entries(base)) {\n if (target == null) continue;\n if (authoredKindOf(target) === AuthoredKind.HarnessHost) {\n host.push(capability);\n continue;\n }\n if (isString(target)) {\n out[capability] = target;\n continue;\n }\n const name = ctx.sandboxIdentity.get(target);\n if (name == null) {\n issues.push(\n error(\n `baseTools ${capability} is bound to a value that is not a sandbox target exported from sandbox.ts`,\n ),\n );\n continue;\n }\n out[capability] = name;\n }\n return { targets: out, host };\n};\n\nconst describeSecrets = (value: AuthoredValue, issues: IssueIface[]): string[] | null => {\n if (value == null) return null;\n const parsed = z.array(z.string().min(1)).safeParse(value);\n if (parsed.success) return parsed.data;\n issues.push(error('agent.ts secrets must be a list of secret names'));\n return null;\n};\n\nconst describeAvatar = (\n value: AuthoredValue,\n issues: IssueIface[],\n): DescribedAgentIface['avatar'] => {\n if (value === undefined) return null;\n const parsed = agentAvatarSchema.safeParse(toJson(value, { path: 'avatar', issues }));\n if (parsed.success) return parsed.data;\n for (const issue of parsed.error.issues) {\n issues.push(\n error(\n `agent.ts avatar${issue.path.length > 0 ? `.${issue.path.join('.')}` : ''}: ${issue.message}`,\n ),\n );\n }\n return null;\n};\n\nconst describeAgent = (\n value: AuthoredValue,\n ctx: DescribeContextIface,\n issues: IssueIface[],\n): DescribedAgentIface | null => {\n if (value == null) return null;\n if (!isPlainObject(value)) {\n issues.push(error('agent.ts must export defineAgent({ ... }) as its default export'));\n return null;\n }\n for (const key of Object.keys(value)) {\n if (!KNOWN_AGENT_FIELDS.has(key)) issues.push(error(unknownAgentField(key)));\n }\n const toolPolicyRaw = value['toolPolicy'];\n let toolPolicy: Record<string, string> | null = null;\n if (isPlainObject(toolPolicyRaw)) {\n toolPolicy = {};\n for (const [key, policy] of Object.entries(toolPolicyRaw)) {\n if (policy === 'allow' || policy === 'ask') toolPolicy[key] = policy;\n else issues.push(error(`agent.ts toolPolicy.${key} must be 'allow' or 'ask'`));\n }\n }\n const channelsRaw = value['channels'];\n let channels: DescribedAgentIface['channels'] = null;\n if (Array.isArray(channelsRaw)) {\n channels = channelsRaw.map((binding, index) => ({\n key: stringOrNull(fieldOf(binding, 'key')),\n channel: toJson(fieldOf(binding, 'channel') ?? null, {\n path: `channels[${index}].channel`,\n issues,\n }),\n config: toJson(fieldOf(binding, 'config') ?? {}, {\n path: `channels[${index}].config`,\n issues,\n }),\n }));\n }\n const baseToolsDescription = describeBaseTools(value['tools'], ctx, issues);\n return {\n type: 'agent',\n name: stringOrNull(value['name']),\n description: stringOrNull(value['description']),\n avatar: describeAvatar(value['avatar'], issues),\n harness: describeHarness(value['harness'], ctx, issues),\n tools: baseToolsDescription?.targets ?? null,\n hostTools: baseToolsDescription?.host ?? null,\n toolPolicy,\n secrets: describeSecrets(value['secrets'], issues),\n channels,\n };\n};\n\nconst probeSelector = (selector: AuthoredValue, issues: IssueIface[]): AuthoredValue | null => {\n if (!isCallable(selector)) return null;\n try {\n const result = selector({\n session: null,\n secrets: { get: async () => null },\n open: async () => {\n throw new Error('sandboxes do not open while compiling');\n },\n });\n if (isEnvironmentLike(result) || isOpenRequestLike(result)) return result;\n // An async selector: what it opens is known only at session start.\n if (isPromiseLike(result)) Promise.resolve(result).catch(() => undefined);\n return null;\n } catch (cause) {\n issues.push(\n error(\n `sandbox.ts selector failed during compilation: ${String(cause)}; export its environment when it needs session context`,\n ),\n );\n return null;\n }\n};\n\nconst describeSandbox = (\n namespace: AuthoredRecord,\n issues: IssueIface[],\n): DescribedSandboxIface => {\n const targets: Record<string, DescribedSandboxTargetIface> = {};\n const providers: Record<string, string> = {};\n const describeTarget = (\n value: AuthoredValue,\n exportName: string,\n path: string,\n ): DescribedSandboxTargetIface | null => {\n if (isDynamicSentinel(value))\n return { exportName, environment: null, dynamic: describeDynamic(value) };\n if (isEnvironmentLike(value) || isOpenRequestLike(value)) {\n return { exportName, environment: lowerEnvironment(value, path, issues), dynamic: null };\n }\n return null;\n };\n for (const [name, value] of Object.entries(namespace)) {\n if (name === 'default') continue;\n const exportName = namedExportName('sandbox', name);\n const providerName = sandboxProviderNameOf(value);\n if (providerName != null) {\n providers[exportName] = providerName;\n continue;\n }\n const target = describeTarget(value, exportName, `sandbox.ts ${name}`);\n if (target != null) targets[name] = target;\n }\n const named = Object.keys(targets);\n const fallback = describeTarget(namespace['default'], 'sandbox', 'sandbox.ts default export');\n const selector = authoredKindOf(namespace['default']) === AuthoredKind.SandboxSelector;\n if (fallback != null) targets['default'] = fallback;\n else if (namespace['default'] != null && !selector) {\n issues.push(\n error(\n 'sandbox.ts default export must be defineSandbox(selector), an environment, or defineDynamic(...)',\n ),\n );\n }\n // A selector that opens an environment it creates itself\n // (`defineSandbox(() => computer().open())`) names no export\n // to bind; a synchronous one is called once to read the request it returns,\n // which becomes the default target.\n if (selector && named.length === 0 && fallback == null) {\n const opened = probeSelector(namespace['default'], issues);\n if (opened != null) {\n targets['default'] = {\n exportName: 'sandbox',\n environment: lowerEnvironment(opened, 'sandbox.ts default export', issues),\n dynamic: null,\n };\n }\n }\n let defaultTarget: string | null = null;\n if (targets['default'] != null) defaultTarget = 'default';\n else if (named.length === 1) defaultTarget = named[0] ?? null;\n if (selector && defaultTarget == null) {\n issues.push(\n error(\n named.length === 0\n ? 'sandbox.ts default export opens a sandbox but no environment is exported; export the environment it opens (export const computer = computer({ ... }))'\n : 'sandbox.ts default export opens a sandbox but several environments are exported; the selector needs exactly one',\n ),\n );\n }\n return { type: 'sandbox', targets, providers, selector, defaultTarget };\n};\n\nconst sandboxIdentityOf = (\n namespace: AuthoredRecord | null,\n sandbox: DescribedSandboxIface | null,\n): Map<AuthoredValue, string> => {\n const identity = new Map<AuthoredValue, string>();\n if (namespace == null || sandbox == null) return identity;\n for (const [name, value] of Object.entries(namespace)) {\n if (name === 'default') {\n if (sandbox.defaultTarget != null) identity.set(value, sandbox.defaultTarget);\n } else if (sandbox.targets[name] != null) identity.set(value, name);\n }\n return identity;\n};\n\nconst describeModuleValue = (\n entry: NamespaceEntryIface,\n ctx: DescribeContextIface,\n sandbox: DescribedSandboxIface | null,\n issues: IssueIface[],\n): DescribedValue | null => {\n const { layout, namespace } = entry;\n const value = namespace['default'];\n switch (layout.slot) {\n case SlotKind.Agent:\n return describeAgent(value, ctx, issues);\n case SlotKind.Sandbox:\n return sandbox;\n case SlotKind.Instructions: {\n if (isDynamicSentinel(value)) return describeDynamic(value);\n const fragment = lowerInstructions(value, null);\n if (fragment == null) {\n issues.push(\n error(\n `${layout.path} must export defineInstructions({ content, role }) or defineDynamic(...)`,\n ),\n );\n return null;\n }\n return { type: 'instructions', role: fragment.role, content: fragment.content };\n }\n case SlotKind.Skill: {\n if (isDynamicSentinel(value)) return describeDynamic(value);\n const lowered = lowerSkill({ key: layout.key, value });\n issues.push(...lowered.issues);\n return { type: 'skill', skill: toJson(lowered.skill, { path: layout.path, issues }) };\n }\n case SlotKind.Tool: {\n if (isDynamicSentinel(value)) return describeDynamic(value);\n const lowered = lowerTool({ name: layout.key, exportName: layout.base, value });\n issues.push(...lowered.issues);\n return {\n type: 'tool',\n descriptor: toJson(lowered.descriptor, { path: layout.path, issues }),\n approval: lowered.approval,\n };\n }\n case SlotKind.Connection: {\n if (isDynamicSentinel(value)) return describeDynamic(value);\n const lowered = lowerConnection({ key: layout.key, exportName: layout.base, value });\n issues.push(...lowered.issues);\n return {\n type: 'connection',\n binding: toJson(lowered.binding, { path: layout.path, issues }),\n };\n }\n case SlotKind.Schedule:\n return {\n type: 'schedule',\n cron: stringOrNull(fieldOf(value, 'cron')),\n markdown: stringOrNull(fieldOf(value, 'markdown')),\n timezone: stringOrNull(fieldOf(value, 'timezone')),\n target: stringOrNull(fieldOf(value, 'target')),\n };\n case SlotKind.Hook: {\n const events = fieldOf(value, 'events');\n return {\n type: 'hook',\n keys: entriesOf(events).map(([key]) => key),\n };\n }\n case SlotKind.Channel: {\n const routes = fieldOf(value, 'routes');\n return {\n type: 'channel',\n disabled: fieldOf(value, 'disabled') === true,\n installed: toJson(fieldOf(value, 'installed') ?? null, {\n path: `${layout.path} installed`,\n issues,\n }),\n routes: Array.isArray(routes)\n ? routes.map((route) => ({\n method: String(fieldOf(route, 'method')),\n path: String(fieldOf(route, 'path')),\n }))\n : [],\n turnPolicy: stringOrNull(fieldOf(value, 'turnPolicy')),\n config: toJson(fieldOf(value, 'config') ?? {}, { path: `${layout.path} config`, issues }),\n };\n }\n }\n};\n\nexport const describeBundle = (\n entries: NamespaceEntryIface[],\n synthesized: string[],\n): DescribedBundleIface => {\n const sandboxEntry = entries.find((entry) => entry.layout.slot === SlotKind.Sandbox) ?? null;\n const sandboxIssues: IssueIface[] = [];\n let sandbox: DescribedSandboxIface | null = null;\n if (sandboxEntry != null) {\n try {\n sandbox = describeSandbox(sandboxEntry.namespace, sandboxIssues);\n } catch (cause) {\n sandboxIssues.push(error(`sandbox.ts could not be described: ${messageOf(cause)}`));\n }\n }\n const ctx: DescribeContextIface = {\n entries,\n sandboxIdentity: sandboxIdentityOf(sandboxEntry?.namespace ?? null, sandbox),\n };\n const modules: DescribedModuleIface[] = entries.map((entry) => {\n const issues: IssueIface[] = entry.layout.slot === SlotKind.Sandbox ? sandboxIssues : [];\n const hasDefault = 'default' in entry.namespace && entry.namespace['default'] !== undefined;\n let value: DescribedValue | null = null;\n if (hasDefault || entry.layout.slot === SlotKind.Sandbox) {\n try {\n value = describeModuleValue(entry, ctx, sandbox, issues);\n } catch (cause) {\n issues.push(error(`${entry.layout.path} could not be described: ${messageOf(cause)}`));\n }\n } else if (entry.layout.slot !== SlotKind.Agent) {\n issues.push(note(`${entry.layout.path} has no default export; treated as a helper module`));\n }\n return {\n base: entry.layout.base,\n path: entry.layout.path,\n slot: entry.layout.slot,\n key: entry.layout.key,\n hasDefault,\n issues,\n value,\n };\n });\n return { modules, synthesized };\n};\n\n// Export names the bundle synthesizes, in the order describe and the isolate\n// both compute them.\nexport const synthesizedExports = (\n entries: NamespaceEntryIface[],\n): { name: string; value: AuthoredValue }[] => {\n const out: { name: string; value: AuthoredValue }[] = [];\n for (const entry of entries) {\n if (entry.layout.slot !== SlotKind.Agent) continue;\n for (const found of collectAgentDynamics(entry.namespace['default'])) {\n out.push({ name: `${AGENT_DYNAMIC_PREFIX}${found.path}`, value: found.value });\n }\n }\n for (const pending of pendingEntries())\n out.push({ name: pendingExportName(pending.index), value: pending.value });\n return out;\n};\n\nexport const needsCombinedMcpServers = (entries: NamespaceEntryIface[]): boolean =>\n entries.some(\n (entry) =>\n (entry.layout.slot === SlotKind.Tool || entry.layout.slot === SlotKind.Connection) &&\n isDynamicSentinel(entry.namespace['default']),\n );\n\nexport { COMBINED_MCP_SERVERS_EXPORT };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -10,6 +10,10 @@ export declare const describedDynamicSchema: z.ZodObject<{
|
|
|
10
10
|
events: z.ZodArray<z.ZodString>;
|
|
11
11
|
description: z.ZodNullable<z.ZodString>;
|
|
12
12
|
preview: z.ZodNullable<z.ZodString>;
|
|
13
|
+
requiredBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
14
|
+
name: z.ZodString;
|
|
15
|
+
schema: z.ZodType<import("@finalai/agent-provider").JsonObject, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonObject, unknown>>;
|
|
16
|
+
}, z.core.$strip>>>;
|
|
13
17
|
provider: z.ZodNullable<z.ZodObject<{
|
|
14
18
|
ref: z.ZodNullable<z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>>;
|
|
15
19
|
name: z.ZodNullable<z.ZodString>;
|
|
@@ -19,7 +23,7 @@ declare const describedAgentSchema: z.ZodObject<{
|
|
|
19
23
|
type: z.ZodLiteral<"agent">;
|
|
20
24
|
name: z.ZodNullable<z.ZodString>;
|
|
21
25
|
description: z.ZodNullable<z.ZodString>;
|
|
22
|
-
|
|
26
|
+
avatar: z.ZodDefault<z.ZodNullable<z.ZodType<import("@finalai/agent-protocol").AgentAvatarIface, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-protocol").AgentAvatarIface, unknown>>>>;
|
|
23
27
|
harness: z.ZodNullable<z.ZodObject<{
|
|
24
28
|
harness: z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>;
|
|
25
29
|
config: z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>;
|
|
@@ -53,6 +57,10 @@ declare const describedSandboxTargetSchema: z.ZodObject<{
|
|
|
53
57
|
events: z.ZodArray<z.ZodString>;
|
|
54
58
|
description: z.ZodNullable<z.ZodString>;
|
|
55
59
|
preview: z.ZodNullable<z.ZodString>;
|
|
60
|
+
requiredBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
61
|
+
name: z.ZodString;
|
|
62
|
+
schema: z.ZodType<import("@finalai/agent-provider").JsonObject, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonObject, unknown>>;
|
|
63
|
+
}, z.core.$strip>>>;
|
|
56
64
|
provider: z.ZodNullable<z.ZodObject<{
|
|
57
65
|
ref: z.ZodNullable<z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>>;
|
|
58
66
|
name: z.ZodNullable<z.ZodString>;
|
|
@@ -74,6 +82,10 @@ declare const describedSandboxSchema: z.ZodObject<{
|
|
|
74
82
|
events: z.ZodArray<z.ZodString>;
|
|
75
83
|
description: z.ZodNullable<z.ZodString>;
|
|
76
84
|
preview: z.ZodNullable<z.ZodString>;
|
|
85
|
+
requiredBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
86
|
+
name: z.ZodString;
|
|
87
|
+
schema: z.ZodType<import("@finalai/agent-provider").JsonObject, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonObject, unknown>>;
|
|
88
|
+
}, z.core.$strip>>>;
|
|
77
89
|
provider: z.ZodNullable<z.ZodObject<{
|
|
78
90
|
ref: z.ZodNullable<z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>>;
|
|
79
91
|
name: z.ZodNullable<z.ZodString>;
|
|
@@ -88,7 +100,7 @@ export declare const describedValueSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
|
|
|
88
100
|
type: z.ZodLiteral<"agent">;
|
|
89
101
|
name: z.ZodNullable<z.ZodString>;
|
|
90
102
|
description: z.ZodNullable<z.ZodString>;
|
|
91
|
-
|
|
103
|
+
avatar: z.ZodDefault<z.ZodNullable<z.ZodType<import("@finalai/agent-protocol").AgentAvatarIface, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-protocol").AgentAvatarIface, unknown>>>>;
|
|
92
104
|
harness: z.ZodNullable<z.ZodObject<{
|
|
93
105
|
harness: z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>;
|
|
94
106
|
config: z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>;
|
|
@@ -107,6 +119,10 @@ export declare const describedValueSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
|
|
|
107
119
|
events: z.ZodArray<z.ZodString>;
|
|
108
120
|
description: z.ZodNullable<z.ZodString>;
|
|
109
121
|
preview: z.ZodNullable<z.ZodString>;
|
|
122
|
+
requiredBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
123
|
+
name: z.ZodString;
|
|
124
|
+
schema: z.ZodType<import("@finalai/agent-provider").JsonObject, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonObject, unknown>>;
|
|
125
|
+
}, z.core.$strip>>>;
|
|
110
126
|
provider: z.ZodNullable<z.ZodObject<{
|
|
111
127
|
ref: z.ZodNullable<z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>>;
|
|
112
128
|
name: z.ZodNullable<z.ZodString>;
|
|
@@ -159,6 +175,10 @@ export declare const describedValueSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
|
|
|
159
175
|
events: z.ZodArray<z.ZodString>;
|
|
160
176
|
description: z.ZodNullable<z.ZodString>;
|
|
161
177
|
preview: z.ZodNullable<z.ZodString>;
|
|
178
|
+
requiredBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
179
|
+
name: z.ZodString;
|
|
180
|
+
schema: z.ZodType<import("@finalai/agent-provider").JsonObject, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonObject, unknown>>;
|
|
181
|
+
}, z.core.$strip>>>;
|
|
162
182
|
provider: z.ZodNullable<z.ZodObject<{
|
|
163
183
|
ref: z.ZodNullable<z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>>;
|
|
164
184
|
name: z.ZodNullable<z.ZodString>;
|
|
@@ -183,7 +203,7 @@ export declare const describedModuleSchema: z.ZodObject<{
|
|
|
183
203
|
type: z.ZodLiteral<"agent">;
|
|
184
204
|
name: z.ZodNullable<z.ZodString>;
|
|
185
205
|
description: z.ZodNullable<z.ZodString>;
|
|
186
|
-
|
|
206
|
+
avatar: z.ZodDefault<z.ZodNullable<z.ZodType<import("@finalai/agent-protocol").AgentAvatarIface, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-protocol").AgentAvatarIface, unknown>>>>;
|
|
187
207
|
harness: z.ZodNullable<z.ZodObject<{
|
|
188
208
|
harness: z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>;
|
|
189
209
|
config: z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>;
|
|
@@ -202,6 +222,10 @@ export declare const describedModuleSchema: z.ZodObject<{
|
|
|
202
222
|
events: z.ZodArray<z.ZodString>;
|
|
203
223
|
description: z.ZodNullable<z.ZodString>;
|
|
204
224
|
preview: z.ZodNullable<z.ZodString>;
|
|
225
|
+
requiredBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
226
|
+
name: z.ZodString;
|
|
227
|
+
schema: z.ZodType<import("@finalai/agent-provider").JsonObject, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonObject, unknown>>;
|
|
228
|
+
}, z.core.$strip>>>;
|
|
205
229
|
provider: z.ZodNullable<z.ZodObject<{
|
|
206
230
|
ref: z.ZodNullable<z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>>;
|
|
207
231
|
name: z.ZodNullable<z.ZodString>;
|
|
@@ -254,6 +278,10 @@ export declare const describedModuleSchema: z.ZodObject<{
|
|
|
254
278
|
events: z.ZodArray<z.ZodString>;
|
|
255
279
|
description: z.ZodNullable<z.ZodString>;
|
|
256
280
|
preview: z.ZodNullable<z.ZodString>;
|
|
281
|
+
requiredBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
282
|
+
name: z.ZodString;
|
|
283
|
+
schema: z.ZodType<import("@finalai/agent-provider").JsonObject, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonObject, unknown>>;
|
|
284
|
+
}, z.core.$strip>>>;
|
|
257
285
|
provider: z.ZodNullable<z.ZodObject<{
|
|
258
286
|
ref: z.ZodNullable<z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>>;
|
|
259
287
|
name: z.ZodNullable<z.ZodString>;
|
|
@@ -280,7 +308,7 @@ export declare const describedBundleSchema: z.ZodObject<{
|
|
|
280
308
|
type: z.ZodLiteral<"agent">;
|
|
281
309
|
name: z.ZodNullable<z.ZodString>;
|
|
282
310
|
description: z.ZodNullable<z.ZodString>;
|
|
283
|
-
|
|
311
|
+
avatar: z.ZodDefault<z.ZodNullable<z.ZodType<import("@finalai/agent-protocol").AgentAvatarIface, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-protocol").AgentAvatarIface, unknown>>>>;
|
|
284
312
|
harness: z.ZodNullable<z.ZodObject<{
|
|
285
313
|
harness: z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>;
|
|
286
314
|
config: z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>;
|
|
@@ -299,6 +327,10 @@ export declare const describedBundleSchema: z.ZodObject<{
|
|
|
299
327
|
events: z.ZodArray<z.ZodString>;
|
|
300
328
|
description: z.ZodNullable<z.ZodString>;
|
|
301
329
|
preview: z.ZodNullable<z.ZodString>;
|
|
330
|
+
requiredBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
331
|
+
name: z.ZodString;
|
|
332
|
+
schema: z.ZodType<import("@finalai/agent-provider").JsonObject, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonObject, unknown>>;
|
|
333
|
+
}, z.core.$strip>>>;
|
|
302
334
|
provider: z.ZodNullable<z.ZodObject<{
|
|
303
335
|
ref: z.ZodNullable<z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>>;
|
|
304
336
|
name: z.ZodNullable<z.ZodString>;
|
|
@@ -351,6 +383,10 @@ export declare const describedBundleSchema: z.ZodObject<{
|
|
|
351
383
|
events: z.ZodArray<z.ZodString>;
|
|
352
384
|
description: z.ZodNullable<z.ZodString>;
|
|
353
385
|
preview: z.ZodNullable<z.ZodString>;
|
|
386
|
+
requiredBindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
387
|
+
name: z.ZodString;
|
|
388
|
+
schema: z.ZodType<import("@finalai/agent-provider").JsonObject, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonObject, unknown>>;
|
|
389
|
+
}, z.core.$strip>>>;
|
|
354
390
|
provider: z.ZodNullable<z.ZodObject<{
|
|
355
391
|
ref: z.ZodNullable<z.ZodType<import("@finalai/agent-provider").JsonValue, unknown, z.core.$ZodTypeInternals<import("@finalai/agent-provider").JsonValue, unknown>>>;
|
|
356
392
|
name: z.ZodNullable<z.ZodString>;
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
agentAvatarSchema,
|
|
3
|
+
hostedBindingRequirementSchema,
|
|
4
|
+
jsonValueSchema
|
|
5
|
+
} from "@finalai/agent-provider";
|
|
2
6
|
import * as z from "zod";
|
|
3
7
|
import { SlotKind } from "./layout.mjs";
|
|
4
8
|
import { IssueSeverity } from "./lower.mjs";
|
|
@@ -12,13 +16,14 @@ const describedDynamicSchema = z.object({
|
|
|
12
16
|
events: z.array(z.string()),
|
|
13
17
|
description: z.string().nullable(),
|
|
14
18
|
preview: z.string().nullable(),
|
|
19
|
+
requiredBindings: z.array(hostedBindingRequirementSchema).optional(),
|
|
15
20
|
provider: providerHintSchema.nullable()
|
|
16
21
|
});
|
|
17
22
|
const describedAgentSchema = z.object({
|
|
18
23
|
type: z.literal("agent"),
|
|
19
24
|
name: z.string().nullable(),
|
|
20
25
|
description: z.string().nullable(),
|
|
21
|
-
|
|
26
|
+
avatar: agentAvatarSchema.nullable().default(null),
|
|
22
27
|
harness: z.object({ harness: jsonValueSchema, config: jsonValueSchema }).nullable(),
|
|
23
28
|
tools: z.record(z.string(), z.string()).nullable(),
|
|
24
29
|
// Capabilities bound to `harnessHost` (the harness's own host, no target).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/runtime/described.ts"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": "AAAA,
|
|
4
|
+
"sourcesContent": ["import {\n agentAvatarSchema,\n hostedBindingRequirementSchema,\n jsonValueSchema,\n} from '@finalai/agent-provider';\nimport * as z from 'zod';\nimport { SlotKind } from \"./layout.mjs\";\nimport { IssueSeverity } from \"./lower.mjs\";\n\n// The static description of a bundle's authored modules, produced inside the\n// evaluation realm and parsed by the compiler. Everything is JSON.\n\nexport const issueSchema = z.object({ severity: z.nativeEnum(IssueSeverity), message: z.string() });\n\nconst providerHintSchema = z.object({\n ref: jsonValueSchema.nullable(),\n name: z.string().nullable(),\n});\n\nexport const describedDynamicSchema = z.object({\n type: z.literal('dynamic'),\n events: z.array(z.string()),\n description: z.string().nullable(),\n preview: z.string().nullable(),\n requiredBindings: z.array(hostedBindingRequirementSchema).optional(),\n provider: providerHintSchema.nullable(),\n});\n\nconst describedAgentSchema = z.object({\n type: z.literal('agent'),\n name: z.string().nullable(),\n description: z.string().nullable(),\n avatar: agentAvatarSchema.nullable().default(null),\n harness: z.object({ harness: jsonValueSchema, config: jsonValueSchema }).nullable(),\n tools: z.record(z.string(), z.string()).nullable(),\n // Capabilities bound to `harnessHost` (the harness's own host, no target).\n hostTools: z.array(z.string()).nullable().default(null),\n toolPolicy: z.record(z.string(), z.string()).nullable(),\n secrets: z.array(z.string()).nullable(),\n channels: z\n .array(\n z.object({ key: z.string().nullable(), channel: jsonValueSchema, config: jsonValueSchema }),\n )\n .nullable(),\n});\n\nconst describedInstructionsSchema = z.object({\n type: z.literal('instructions'),\n role: z.string(),\n content: z.string(),\n});\n\nconst describedSkillSchema = z.object({ type: z.literal('skill'), skill: jsonValueSchema });\n\nconst describedToolSchema = z.object({\n type: z.literal('tool'),\n descriptor: jsonValueSchema,\n approval: z.string(),\n});\n\nconst describedConnectionSchema = z.object({\n type: z.literal('connection'),\n binding: jsonValueSchema,\n});\n\nconst describedScheduleSchema = z.object({\n type: z.literal('schedule'),\n cron: z.string().nullable(),\n markdown: z.string().nullable(),\n timezone: z.string().nullable(),\n target: z.string().nullable(),\n});\n\nconst describedHookSchema = z.object({ type: z.literal('hook'), keys: z.array(z.string()) });\n\nconst describedChannelSchema = z.object({\n type: z.literal('channel'),\n routes: z.array(z.object({ method: z.string(), path: z.string() })),\n turnPolicy: z.string().nullable(),\n config: jsonValueSchema,\n disabled: z.boolean().default(false),\n installed: jsonValueSchema.nullable().default(null),\n});\n\nexport const describedEnvironmentSchema = z.object({\n providerName: z.string(),\n providerRef: jsonValueSchema.nullable(),\n options: jsonValueSchema,\n openOptions: jsonValueSchema.nullable(),\n});\n\nconst describedSandboxTargetSchema = z.object({\n exportName: z.string(),\n environment: describedEnvironmentSchema.nullable(),\n dynamic: describedDynamicSchema.nullable(),\n});\n\nconst describedSandboxSchema = z.object({\n type: z.literal('sandbox'),\n targets: z.record(z.string(), describedSandboxTargetSchema),\n // Bundle export name \u2192 provider name, for providers defined in sandbox.ts.\n providers: z.record(z.string(), z.string()),\n selector: z.boolean(),\n defaultTarget: z.string().nullable(),\n});\n\nexport const describedValueSchema = z.discriminatedUnion('type', [\n describedAgentSchema,\n describedDynamicSchema,\n describedInstructionsSchema,\n describedSkillSchema,\n describedToolSchema,\n describedConnectionSchema,\n describedScheduleSchema,\n describedHookSchema,\n describedChannelSchema,\n describedSandboxSchema,\n]);\n\nexport const describedModuleSchema = z.object({\n base: z.string(),\n path: z.string(),\n slot: z.nativeEnum(SlotKind),\n key: z.string(),\n hasDefault: z.boolean(),\n issues: z.array(issueSchema),\n value: describedValueSchema.nullable(),\n});\n\nexport const describedBundleSchema = z.object({\n modules: z.array(describedModuleSchema),\n // Exports the bundle synthesizes beyond the authored ones.\n synthesized: z.array(z.string()),\n});\n\nexport type DescribedIssueIface = z.infer<typeof issueSchema>;\nexport type DescribedDynamicIface = z.infer<typeof describedDynamicSchema>;\nexport type DescribedAgentIface = z.infer<typeof describedAgentSchema>;\nexport type DescribedSandboxIface = z.infer<typeof describedSandboxSchema>;\nexport type DescribedSandboxTargetIface = z.infer<typeof describedSandboxTargetSchema>;\nexport type DescribedEnvironmentIface = z.infer<typeof describedEnvironmentSchema>;\nexport type DescribedValue = z.infer<typeof describedValueSchema>;\nexport type DescribedModuleIface = z.infer<typeof describedModuleSchema>;\nexport type DescribedBundleIface = z.infer<typeof describedBundleSchema>;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|