@finalai/agent-definition 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of @finalai/agent-definition might be problematic. Click here for more details.
- package/README.md +16 -0
- package/THIRD_PARTY_NOTICES.md +303 -0
- package/dist/compiler-assets/chunk-2CZRHOLL.ts +10 -0
- package/dist/compiler-assets/chunk-32O3ODZE.ts +39 -0
- package/dist/compiler-assets/chunk-5BK6FVRE.ts +75 -0
- package/dist/compiler-assets/chunk-6WR3PGNF.ts +0 -0
- package/dist/compiler-assets/chunk-7QP2CKPI.ts +30 -0
- package/dist/compiler-assets/chunk-7VSSVZM4.ts +55 -0
- package/dist/compiler-assets/chunk-7WGYG73V.ts +42 -0
- package/dist/compiler-assets/chunk-BLB6JGLO.ts +481 -0
- package/dist/compiler-assets/chunk-CWWRTRWW.ts +76 -0
- package/dist/compiler-assets/chunk-EVQIK62B.ts +188 -0
- package/dist/compiler-assets/chunk-GNR7XBPN.ts +3364 -0
- package/dist/compiler-assets/chunk-GTUZOATD.ts +10 -0
- package/dist/compiler-assets/chunk-HFS4KLEL.ts +10 -0
- package/dist/compiler-assets/chunk-HGW4YHAY.ts +6865 -0
- package/dist/compiler-assets/chunk-HNPUTP35.ts +172 -0
- package/dist/compiler-assets/chunk-JIPNTA56.ts +59 -0
- package/dist/compiler-assets/chunk-JNJE72EH.ts +10 -0
- package/dist/compiler-assets/chunk-JPY4L2UJ.ts +349 -0
- package/dist/compiler-assets/chunk-JTGTLYDT.ts +0 -0
- package/dist/compiler-assets/chunk-LUSAAV4L.ts +33 -0
- package/dist/compiler-assets/chunk-MZMSKIKU.ts +472 -0
- package/dist/compiler-assets/chunk-NMYHO2QN.ts +25 -0
- package/dist/compiler-assets/chunk-NYTOYKKF.ts +28 -0
- package/dist/compiler-assets/chunk-OWC6SFFF.ts +295 -0
- package/dist/compiler-assets/chunk-QMKWAFVZ.ts +59 -0
- package/dist/compiler-assets/chunk-QMWTDPNT.ts +79 -0
- package/dist/compiler-assets/chunk-RWUIMTBI.ts +13 -0
- package/dist/compiler-assets/chunk-SKTNMUO7.ts +64 -0
- package/dist/compiler-assets/chunk-T6WG4L4M.ts +19 -0
- package/dist/compiler-assets/chunk-TATN3PYK.ts +81 -0
- package/dist/compiler-assets/chunk-VHXHUU7L.ts +16 -0
- package/dist/compiler-assets/chunk-WMXMVFHM.ts +121 -0
- package/dist/compiler-assets/chunk-XHKPWT3G.ts +55 -0
- package/dist/compiler-assets/chunk-ZDLVA6XF.ts +476 -0
- package/dist/compiler-assets/src/authoring/agent.ts +10 -0
- package/dist/compiler-assets/src/authoring/approval.ts +19 -0
- package/dist/compiler-assets/src/authoring/brand.ts +23 -0
- package/dist/compiler-assets/src/authoring/channels.ts +26 -0
- package/dist/compiler-assets/src/authoring/connections.ts +10 -0
- package/dist/compiler-assets/src/authoring/context.ts +7 -0
- package/dist/compiler-assets/src/authoring/credentials.ts +21 -0
- package/dist/compiler-assets/src/authoring/dynamic.ts +10 -0
- package/dist/compiler-assets/src/authoring/harness.ts +17 -0
- package/dist/compiler-assets/src/authoring/hooks.ts +28 -0
- package/dist/compiler-assets/src/authoring/index.ts +110 -0
- package/dist/compiler-assets/src/authoring/instructions.ts +14 -0
- package/dist/compiler-assets/src/authoring/sandbox.ts +25 -0
- package/dist/compiler-assets/src/authoring/schedules.ts +10 -0
- package/dist/compiler-assets/src/authoring/skills.ts +10 -0
- package/dist/compiler-assets/src/authoring/tools.ts +23 -0
- package/dist/compiler-assets/src/compatibility.ts +14810 -0
- package/dist/compiler-assets/src/compiler/evaluate-child.mjs +77 -0
- package/dist/compiler-assets/src/index.ts +195 -0
- package/dist/compiler-assets/src/manifest.ts +72 -0
- package/dist/compiler-assets/src/resolve.ts +19 -0
- package/dist/compiler-assets/src/runtime/bundle.ts +72 -0
- package/dist/compiler-assets/src/runtime/describe.ts +31 -0
- package/dist/compiler-assets/src/runtime/described.ts +142 -0
- package/dist/compiler-assets/src/runtime/isolate.ts +28 -0
- package/dist/compiler-assets/src/runtime/layout.ts +15 -0
- package/dist/compiler-assets/src/runtime/lower.ts +52 -0
- package/dist/compiler-assets/src/runtime/schema-validation.ts +21 -0
- package/dist/compiler-assets/src/runtime/values.ts +38 -0
- package/dist/modules/authoring/agent.d.mts +22 -0
- package/dist/modules/authoring/agent.mjs +6 -0
- package/dist/modules/authoring/agent.mjs.map +7 -0
- package/dist/modules/authoring/approval.d.mts +17 -0
- package/dist/modules/authoring/approval.mjs +42 -0
- package/dist/modules/authoring/approval.mjs.map +7 -0
- package/dist/modules/authoring/brand.d.mts +27 -0
- package/dist/modules/authoring/brand.mjs +51 -0
- package/dist/modules/authoring/brand.mjs.map +7 -0
- package/dist/modules/authoring/channels.d.mts +41 -0
- package/dist/modules/authoring/channels.mjs +65 -0
- package/dist/modules/authoring/channels.mjs.map +7 -0
- package/dist/modules/authoring/connections.d.mts +23 -0
- package/dist/modules/authoring/connections.mjs +6 -0
- package/dist/modules/authoring/connections.mjs.map +7 -0
- package/dist/modules/authoring/context.d.mts +83 -0
- package/dist/modules/authoring/context.mjs +12 -0
- package/dist/modules/authoring/context.mjs.map +7 -0
- package/dist/modules/authoring/credentials.d.mts +10 -0
- package/dist/modules/authoring/credentials.mjs +31 -0
- package/dist/modules/authoring/credentials.mjs.map +7 -0
- package/dist/modules/authoring/dynamic.d.mts +30 -0
- package/dist/modules/authoring/dynamic.mjs +15 -0
- package/dist/modules/authoring/dynamic.mjs.map +7 -0
- package/dist/modules/authoring/harness.d.mts +85 -0
- package/dist/modules/authoring/harness.mjs +55 -0
- package/dist/modules/authoring/harness.mjs.map +7 -0
- package/dist/modules/authoring/hooks.d.mts +120 -0
- package/dist/modules/authoring/hooks.mjs +72 -0
- package/dist/modules/authoring/hooks.mjs.map +7 -0
- package/dist/modules/authoring/index.d.mts +27 -0
- package/dist/modules/authoring/index.mjs +63 -0
- package/dist/modules/authoring/index.mjs.map +7 -0
- package/dist/modules/authoring/instructions.d.mts +13 -0
- package/dist/modules/authoring/instructions.mjs +15 -0
- package/dist/modules/authoring/instructions.mjs.map +7 -0
- package/dist/modules/authoring/sandbox.d.mts +21 -0
- package/dist/modules/authoring/sandbox.mjs +13 -0
- package/dist/modules/authoring/sandbox.mjs.map +7 -0
- package/dist/modules/authoring/schedules.d.mts +8 -0
- package/dist/modules/authoring/schedules.mjs +6 -0
- package/dist/modules/authoring/schedules.mjs.map +7 -0
- package/dist/modules/authoring/skills.d.mts +8 -0
- package/dist/modules/authoring/skills.mjs +6 -0
- package/dist/modules/authoring/skills.mjs.map +7 -0
- package/dist/modules/authoring/tools.d.mts +80 -0
- package/dist/modules/authoring/tools.mjs +70 -0
- package/dist/modules/authoring/tools.mjs.map +7 -0
- package/dist/modules/compatibility.d.mts +36 -0
- package/dist/modules/compatibility.mjs +536 -0
- package/dist/modules/compatibility.mjs.map +7 -0
- package/dist/modules/compiler/assemble.d.mts +30 -0
- package/dist/modules/compiler/assemble.mjs +923 -0
- package/dist/modules/compiler/assemble.mjs.map +7 -0
- package/dist/modules/compiler/bundle.d.mts +22 -0
- package/dist/modules/compiler/bundle.mjs +385 -0
- package/dist/modules/compiler/bundle.mjs.map +7 -0
- package/dist/modules/compiler/diagnostics.d.mts +40 -0
- package/dist/modules/compiler/diagnostics.mjs +38 -0
- package/dist/modules/compiler/diagnostics.mjs.map +7 -0
- package/dist/modules/compiler/discovery.d.mts +36 -0
- package/dist/modules/compiler/discovery.mjs +158 -0
- package/dist/modules/compiler/discovery.mjs.map +7 -0
- package/dist/modules/compiler/evaluate.d.mts +13 -0
- package/dist/modules/compiler/evaluate.mjs +194 -0
- package/dist/modules/compiler/evaluate.mjs.map +7 -0
- package/dist/modules/compiler/files.d.mts +19 -0
- package/dist/modules/compiler/files.mjs +90 -0
- package/dist/modules/compiler/files.mjs.map +7 -0
- package/dist/modules/compiler/frontmatter.d.mts +9 -0
- package/dist/modules/compiler/frontmatter.mjs +34 -0
- package/dist/modules/compiler/frontmatter.mjs.map +7 -0
- package/dist/modules/compiler/index.d.mts +49 -0
- package/dist/modules/compiler/index.mjs +244 -0
- package/dist/modules/compiler/index.mjs.map +7 -0
- package/dist/modules/compiler/load.d.mts +8 -0
- package/dist/modules/compiler/load.mjs +45 -0
- package/dist/modules/compiler/load.mjs.map +7 -0
- package/dist/modules/compiler/local-isolate.d.mts +20 -0
- package/dist/modules/compiler/local-isolate.mjs +93 -0
- package/dist/modules/compiler/local-isolate.mjs.map +7 -0
- package/dist/modules/compiler/packages.d.mts +66 -0
- package/dist/modules/compiler/packages.mjs +307 -0
- package/dist/modules/compiler/packages.mjs.map +7 -0
- package/dist/modules/index.d.mts +7 -0
- package/dist/modules/index.mjs +25 -0
- package/dist/modules/index.mjs.map +7 -0
- package/dist/modules/manifest.d.mts +2 -0
- package/dist/modules/manifest.mjs +67 -0
- package/dist/modules/manifest.mjs.map +7 -0
- package/dist/modules/resolve.d.mts +24 -0
- package/dist/modules/resolve.mjs +176 -0
- package/dist/modules/resolve.mjs.map +7 -0
- package/dist/modules/runtime/bundle.d.mts +12 -0
- package/dist/modules/runtime/bundle.mjs +48 -0
- package/dist/modules/runtime/bundle.mjs.map +7 -0
- package/dist/modules/runtime/describe.d.mts +19 -0
- package/dist/modules/runtime/describe.mjs +471 -0
- package/dist/modules/runtime/describe.mjs.map +7 -0
- package/dist/modules/runtime/described.d.mts +376 -0
- package/dist/modules/runtime/described.mjs +116 -0
- package/dist/modules/runtime/described.mjs.map +7 -0
- package/dist/modules/runtime/isolate.d.mts +70 -0
- package/dist/modules/runtime/isolate.mjs +454 -0
- package/dist/modules/runtime/isolate.mjs.map +7 -0
- package/dist/modules/runtime/layout.d.mts +21 -0
- package/dist/modules/runtime/layout.mjs +24 -0
- package/dist/modules/runtime/layout.mjs.map +7 -0
- package/dist/modules/runtime/lower.d.mts +73 -0
- package/dist/modules/runtime/lower.mjs +463 -0
- package/dist/modules/runtime/lower.mjs.map +7 -0
- package/dist/modules/runtime/schema-validation.d.mts +21 -0
- package/dist/modules/runtime/schema-validation.mjs +238 -0
- package/dist/modules/runtime/schema-validation.mjs.map +7 -0
- package/dist/modules/runtime/values.d.mts +20 -0
- package/dist/modules/runtime/values.mjs +48 -0
- package/dist/modules/runtime/values.mjs.map +7 -0
- package/fixtures/acme-fleet/agent/agent.ts +74 -0
- package/fixtures/acme-fleet/agent/instructions.md +1 -0
- package/fixtures/assistant/agent/agent.ts +16 -0
- package/fixtures/assistant/agent/instructions.md +1 -0
- package/fixtures/assistant/agent/tools/current_time.ts +9 -0
- package/fixtures/assistant-with-tools/agent/agent.ts +16 -0
- package/fixtures/assistant-with-tools/agent/instructions.md +1 -0
- package/fixtures/assistant-with-tools/agent/tools/current_time.ts +9 -0
- package/fixtures/final-connection/agent/agent.ts +15 -0
- package/fixtures/final-connection/agent/connections/final.ts +9 -0
- package/fixtures/release-scout/agent/agent.ts +22 -0
- package/fixtures/release-scout/agent/channels/github-signature.ts +27 -0
- package/fixtures/release-scout/agent/channels/github.ts +38 -0
- package/fixtures/release-scout/agent/connections/linear.ts +9 -0
- package/fixtures/release-scout/agent/hooks/audit.ts +24 -0
- package/fixtures/release-scout/agent/instructions/org-context.ts +26 -0
- package/fixtures/release-scout/agent/instructions.md +2 -0
- package/fixtures/release-scout/agent/sandbox.ts +20 -0
- package/fixtures/release-scout/agent/schedules/daily-digest.md +7 -0
- package/fixtures/release-scout/agent/skills/triage/SKILL.md +8 -0
- package/fixtures/release-scout/agent/skills/triage/checklist.md +3 -0
- package/fixtures/release-scout/agent/tools/lookup_release_notes.ts +24 -0
- package/fixtures/tsconfig.json +5 -0
- package/package.json +94 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BaseCapability,
|
|
3
|
+
DynamicEvent,
|
|
4
|
+
InstructionRole,
|
|
5
|
+
MANIFEST_VERSION,
|
|
6
|
+
McpServerBindingKind,
|
|
7
|
+
SandboxAccess,
|
|
8
|
+
SandboxAttach,
|
|
9
|
+
ScheduleTarget,
|
|
10
|
+
ToolApproval,
|
|
11
|
+
agentManifestSchema,
|
|
12
|
+
baseToolsSchema,
|
|
13
|
+
bundleSchema,
|
|
14
|
+
channelBindingSchema,
|
|
15
|
+
dynamicSlotSchema,
|
|
16
|
+
emptyManifest,
|
|
17
|
+
findDynamicSlots,
|
|
18
|
+
harnessBindingSchema,
|
|
19
|
+
hookBindingSchema,
|
|
20
|
+
httpMcpServerBindingSchema,
|
|
21
|
+
identitySchema,
|
|
22
|
+
instructionFragmentSchema,
|
|
23
|
+
isDynamicSlot,
|
|
24
|
+
mcpAuthSchema,
|
|
25
|
+
mcpServerBindingSchema,
|
|
26
|
+
resolvedAgentManifestSchema,
|
|
27
|
+
sandboxBindingSchema,
|
|
28
|
+
scheduleDefinitionSchema,
|
|
29
|
+
skillBundleSchema,
|
|
30
|
+
skillFileSchema,
|
|
31
|
+
toolDescriptorSchema,
|
|
32
|
+
workerMcpServerBindingSchema
|
|
33
|
+
} from "@finalai/agent-provider";
|
|
34
|
+
export {
|
|
35
|
+
BaseCapability,
|
|
36
|
+
DynamicEvent,
|
|
37
|
+
InstructionRole,
|
|
38
|
+
MANIFEST_VERSION,
|
|
39
|
+
McpServerBindingKind,
|
|
40
|
+
SandboxAccess,
|
|
41
|
+
SandboxAttach,
|
|
42
|
+
ScheduleTarget,
|
|
43
|
+
ToolApproval,
|
|
44
|
+
agentManifestSchema,
|
|
45
|
+
baseToolsSchema,
|
|
46
|
+
bundleSchema,
|
|
47
|
+
channelBindingSchema,
|
|
48
|
+
dynamicSlotSchema,
|
|
49
|
+
emptyManifest,
|
|
50
|
+
findDynamicSlots,
|
|
51
|
+
harnessBindingSchema,
|
|
52
|
+
hookBindingSchema,
|
|
53
|
+
httpMcpServerBindingSchema,
|
|
54
|
+
identitySchema,
|
|
55
|
+
instructionFragmentSchema,
|
|
56
|
+
isDynamicSlot,
|
|
57
|
+
mcpAuthSchema,
|
|
58
|
+
mcpServerBindingSchema,
|
|
59
|
+
resolvedAgentManifestSchema,
|
|
60
|
+
sandboxBindingSchema,
|
|
61
|
+
scheduleDefinitionSchema,
|
|
62
|
+
skillBundleSchema,
|
|
63
|
+
skillFileSchema,
|
|
64
|
+
toolDescriptorSchema,
|
|
65
|
+
workerMcpServerBindingSchema
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=manifest.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type AgentManifestIface, type DynamicEvent, type DynamicSlotIface, type JsonValue, type ResolvedAgentManifestIface } from '@finalai/agent-provider';
|
|
2
|
+
export type ResolveSlot = (slot: DynamicSlotIface, path: string) => Promise<JsonValue | null>;
|
|
3
|
+
export interface ResolveManifestArgsIface {
|
|
4
|
+
manifest: AgentManifestIface;
|
|
5
|
+
event: DynamicEvent;
|
|
6
|
+
resolve: ResolveSlot;
|
|
7
|
+
previous?: Record<string, JsonValue | null>;
|
|
8
|
+
}
|
|
9
|
+
export interface ResolvedManifestDetailIface {
|
|
10
|
+
manifest: ResolvedAgentManifestIface;
|
|
11
|
+
values: Record<string, JsonValue | null>;
|
|
12
|
+
}
|
|
13
|
+
export declare enum SlotValueKind {
|
|
14
|
+
InstructionFragment = "instruction-fragment",
|
|
15
|
+
SkillBundle = "skill-bundle",
|
|
16
|
+
McpServers = "mcp-servers",
|
|
17
|
+
Sandboxes = "sandboxes",
|
|
18
|
+
SandboxEnvironment = "sandbox-environment",
|
|
19
|
+
Opaque = "opaque"
|
|
20
|
+
}
|
|
21
|
+
export declare const slotKindOf: (path: string) => SlotValueKind;
|
|
22
|
+
export declare const validateSlotValue: (path: string, value: JsonValue | null, manifest?: AgentManifestIface) => JsonValue | null;
|
|
23
|
+
export declare const resolveManifestDetailed: (args: ResolveManifestArgsIface) => Promise<ResolvedManifestDetailIface>;
|
|
24
|
+
export declare const resolveManifest: (args: ResolveManifestArgsIface) => Promise<ResolvedAgentManifestIface>;
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import {
|
|
2
|
+
findDynamicSlots,
|
|
3
|
+
formatProviderRef,
|
|
4
|
+
instructionFragmentSchema,
|
|
5
|
+
isDynamicSlot,
|
|
6
|
+
jsonObjectSchema,
|
|
7
|
+
jsonValueSchema,
|
|
8
|
+
mcpServerBindingSchema,
|
|
9
|
+
ProviderRefKind,
|
|
10
|
+
providerRefSchema,
|
|
11
|
+
resolvedAgentManifestSchema,
|
|
12
|
+
sandboxBindingSchema,
|
|
13
|
+
skillBundleSchema
|
|
14
|
+
} from "@finalai/agent-provider";
|
|
15
|
+
import * as z from "zod";
|
|
16
|
+
var SlotValueKind = /* @__PURE__ */ ((SlotValueKind2) => {
|
|
17
|
+
SlotValueKind2["InstructionFragment"] = "instruction-fragment";
|
|
18
|
+
SlotValueKind2["SkillBundle"] = "skill-bundle";
|
|
19
|
+
SlotValueKind2["McpServers"] = "mcp-servers";
|
|
20
|
+
SlotValueKind2["Sandboxes"] = "sandboxes";
|
|
21
|
+
SlotValueKind2["SandboxEnvironment"] = "sandbox-environment";
|
|
22
|
+
SlotValueKind2["Opaque"] = "opaque";
|
|
23
|
+
return SlotValueKind2;
|
|
24
|
+
})(SlotValueKind || {});
|
|
25
|
+
const slotKindOf = (path) => {
|
|
26
|
+
if (/^harness\.config\.instructions\[\d+\]$/.test(path)) return "instruction-fragment" /* InstructionFragment */;
|
|
27
|
+
if (/^harness\.config\.skills\[\d+\]$/.test(path)) return "skill-bundle" /* SkillBundle */;
|
|
28
|
+
if (path === "mcpServers") return "mcp-servers" /* McpServers */;
|
|
29
|
+
if (path === "sandboxes") return "sandboxes" /* Sandboxes */;
|
|
30
|
+
if (/^sandboxes\.[^.]+\.environment$/.test(path)) return "sandbox-environment" /* SandboxEnvironment */;
|
|
31
|
+
return "opaque" /* Opaque */;
|
|
32
|
+
};
|
|
33
|
+
const resolvedSandboxesSchema = z.record(
|
|
34
|
+
z.string(),
|
|
35
|
+
sandboxBindingSchema.extend({ environment: jsonValueSchema })
|
|
36
|
+
);
|
|
37
|
+
const issueText = (error) => error.issues.map((issue) => `${issue.path.join(".") || "value"}: ${issue.message}`).join("; ");
|
|
38
|
+
const invalid = (path, detail) => new Error(`dynamic slot ${path} resolved to an invalid value: ${detail}`);
|
|
39
|
+
const parseAs = (schema, value, path) => {
|
|
40
|
+
const parsed = schema.safeParse(value);
|
|
41
|
+
if (!parsed.success) throw invalid(path, issueText(parsed.error));
|
|
42
|
+
return jsonValueSchema.parse(parsed.data);
|
|
43
|
+
};
|
|
44
|
+
const isRecord = (value) => jsonObjectSchema.safeParse(value).success;
|
|
45
|
+
const roleless = z.looseObject({ role: z.null().optional() });
|
|
46
|
+
const environmentResultSchema = z.looseObject({
|
|
47
|
+
providerName: z.string(),
|
|
48
|
+
providerRef: jsonValueSchema.optional(),
|
|
49
|
+
options: jsonValueSchema.optional(),
|
|
50
|
+
openOptions: jsonValueSchema.optional()
|
|
51
|
+
});
|
|
52
|
+
const validateSlotValue = (path, value, manifest) => {
|
|
53
|
+
if (value == null) return null;
|
|
54
|
+
switch (slotKindOf(path)) {
|
|
55
|
+
case "instruction-fragment" /* InstructionFragment */: {
|
|
56
|
+
if (isRecord(value) && roleless.safeParse(value).success) {
|
|
57
|
+
return parseAs(instructionFragmentSchema, { ...value, role: "system" }, path);
|
|
58
|
+
}
|
|
59
|
+
return parseAs(instructionFragmentSchema, value, path);
|
|
60
|
+
}
|
|
61
|
+
case "skill-bundle" /* SkillBundle */:
|
|
62
|
+
return Array.isArray(value) ? parseAs(z.array(skillBundleSchema), value, path) : parseAs(skillBundleSchema, value, path);
|
|
63
|
+
case "mcp-servers" /* McpServers */:
|
|
64
|
+
return parseAs(z.array(mcpServerBindingSchema), value, path);
|
|
65
|
+
case "sandboxes" /* Sandboxes */:
|
|
66
|
+
return parseAs(resolvedSandboxesSchema, value, path);
|
|
67
|
+
case "sandbox-environment" /* SandboxEnvironment */:
|
|
68
|
+
if (manifest != null) checkEnvironmentProvider(manifest, path, value);
|
|
69
|
+
const environment = environmentResultSchema.safeParse(value);
|
|
70
|
+
if (environment.success && environment.data.openOptions != null)
|
|
71
|
+
parseAs(
|
|
72
|
+
sandboxBindingSchema.pick({ access: true, attach: true }).partial(),
|
|
73
|
+
environment.data.openOptions,
|
|
74
|
+
path
|
|
75
|
+
);
|
|
76
|
+
return environment.success ? environment.data.options ?? null : value;
|
|
77
|
+
case "opaque" /* Opaque */:
|
|
78
|
+
return value;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const childPath = (parent, key) => {
|
|
82
|
+
if (z.number().safeParse(key).success) return `${parent}[${key}]`;
|
|
83
|
+
return parent.length === 0 ? `${key}` : `${parent}.${key}`;
|
|
84
|
+
};
|
|
85
|
+
const splice = (value, values, path) => {
|
|
86
|
+
if (isDynamicSlot(value)) return values[path] ?? null;
|
|
87
|
+
if (Array.isArray(value)) {
|
|
88
|
+
const out = [];
|
|
89
|
+
value.forEach((item, index) => {
|
|
90
|
+
const itemPath = childPath(path, index);
|
|
91
|
+
if (isDynamicSlot(item)) {
|
|
92
|
+
const resolved = values[itemPath];
|
|
93
|
+
if (resolved == null) return;
|
|
94
|
+
if (Array.isArray(resolved) && slotKindOf(itemPath) === "skill-bundle" /* SkillBundle */)
|
|
95
|
+
out.push(...resolved);
|
|
96
|
+
else out.push(resolved);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
out.push(splice(item, values, itemPath));
|
|
100
|
+
});
|
|
101
|
+
return out;
|
|
102
|
+
}
|
|
103
|
+
if (isRecord(value)) {
|
|
104
|
+
const out = {};
|
|
105
|
+
for (const [key, item] of Object.entries(value)) {
|
|
106
|
+
const itemPath = childPath(path, key);
|
|
107
|
+
if (isDynamicSlot(item) && values[itemPath] == null && !KEEP_NULL.test(itemPath)) continue;
|
|
108
|
+
out[key] = splice(item, values, itemPath);
|
|
109
|
+
}
|
|
110
|
+
return out;
|
|
111
|
+
}
|
|
112
|
+
return value;
|
|
113
|
+
};
|
|
114
|
+
const KEEP_NULL = /^(sandboxes\.[^.]+\.environment)$/;
|
|
115
|
+
const FIELD_DEFAULTS = /* @__PURE__ */ new Map([
|
|
116
|
+
["mcpServers", []],
|
|
117
|
+
["sandboxes", {}],
|
|
118
|
+
["harness.config", {}]
|
|
119
|
+
]);
|
|
120
|
+
const checkEnvironmentProvider = (manifest, path, value) => {
|
|
121
|
+
if (slotKindOf(path) !== "sandbox-environment" /* SandboxEnvironment */ || value == null) return;
|
|
122
|
+
const returned = environmentResultSchema.safeParse(value);
|
|
123
|
+
if (!returned.success) return;
|
|
124
|
+
const target = path.slice("sandboxes.".length, -".environment".length);
|
|
125
|
+
const sandboxes = z.record(z.string(), sandboxBindingSchema).safeParse(manifest.sandboxes);
|
|
126
|
+
const provider = sandboxes.success ? sandboxes.data[target]?.provider : void 0;
|
|
127
|
+
if (provider == null) return;
|
|
128
|
+
const returnedRef = providerRefSchema.safeParse(returned.data.providerRef);
|
|
129
|
+
const mismatch = returnedRef.success ? formatProviderRef(returnedRef.data) !== formatProviderRef(provider) : (
|
|
130
|
+
// A bundle provider's environment carries only its name; installed ones are named for their specifier.
|
|
131
|
+
provider.kind === ProviderRefKind.Package
|
|
132
|
+
);
|
|
133
|
+
if (mismatch) {
|
|
134
|
+
throw invalid(
|
|
135
|
+
path,
|
|
136
|
+
`returned a ${returned.data.providerName} environment for a ${formatProviderRef(provider)} target`
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
const resolveManifestDetailed = async (args) => {
|
|
141
|
+
const manifestJson = jsonValueSchema.parse(args.manifest);
|
|
142
|
+
const slots = findDynamicSlots(manifestJson);
|
|
143
|
+
const values = {};
|
|
144
|
+
const normalized = {};
|
|
145
|
+
for (const found of slots) {
|
|
146
|
+
const subscribed = found.slot.$dynamic.events.includes(args.event);
|
|
147
|
+
const raw = subscribed ? await args.resolve(found.slot, found.path) : args.previous?.[found.path] ?? null;
|
|
148
|
+
if (subscribed) checkEnvironmentProvider(args.manifest, found.path, raw);
|
|
149
|
+
normalized[found.path] = validateSlotValue(found.path, raw) ?? FIELD_DEFAULTS.get(found.path) ?? null;
|
|
150
|
+
values[found.path] = slotKindOf(found.path) === "sandbox-environment" /* SandboxEnvironment */ ? raw : normalized[found.path] ?? null;
|
|
151
|
+
}
|
|
152
|
+
const spliced = splice(manifestJson, normalized, "");
|
|
153
|
+
const parsed = resolvedAgentManifestSchema.safeParse(spliced);
|
|
154
|
+
if (!parsed.success) throw new Error(`resolved manifest is invalid: ${issueText(parsed.error)}`);
|
|
155
|
+
const openOptionsSchema = sandboxBindingSchema.pick({ access: true, attach: true }).partial();
|
|
156
|
+
for (const [path, raw] of Object.entries(values)) {
|
|
157
|
+
if (slotKindOf(path) !== "sandbox-environment" /* SandboxEnvironment */) continue;
|
|
158
|
+
const environment = environmentResultSchema.safeParse(raw);
|
|
159
|
+
if (!environment.success || environment.data.openOptions == null) continue;
|
|
160
|
+
const options = openOptionsSchema.safeParse(environment.data.openOptions);
|
|
161
|
+
if (!options.success) throw invalid(path, issueText(options.error));
|
|
162
|
+
const target = path.slice("sandboxes.".length, -".environment".length);
|
|
163
|
+
const binding = parsed.data.sandboxes[target];
|
|
164
|
+
if (binding != null) parsed.data.sandboxes[target] = { ...binding, ...options.data };
|
|
165
|
+
}
|
|
166
|
+
return { manifest: parsed.data, values };
|
|
167
|
+
};
|
|
168
|
+
const resolveManifest = async (args) => (await resolveManifestDetailed(args)).manifest;
|
|
169
|
+
export {
|
|
170
|
+
SlotValueKind,
|
|
171
|
+
resolveManifest,
|
|
172
|
+
resolveManifestDetailed,
|
|
173
|
+
slotKindOf,
|
|
174
|
+
validateSlotValue
|
|
175
|
+
};
|
|
176
|
+
//# sourceMappingURL=resolve.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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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",
|
|
6
|
+
"names": ["SlotValueKind"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type IsolateRuntimeIface } from "./isolate.mjs";
|
|
2
|
+
import { type LayoutModuleIface } from "./layout.mjs";
|
|
3
|
+
import type { AuthoredRecord } from "./values.mjs";
|
|
4
|
+
export interface AgentBundleIface {
|
|
5
|
+
modules: AuthoredRecord;
|
|
6
|
+
runtime: IsolateRuntimeIface;
|
|
7
|
+
describe(): string;
|
|
8
|
+
}
|
|
9
|
+
export declare const createAgentBundle: (args: {
|
|
10
|
+
layout: LayoutModuleIface[];
|
|
11
|
+
namespaces: AuthoredRecord[];
|
|
12
|
+
}) => AgentBundleIface;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { registerToolName } from "../authoring/tools.mjs";
|
|
2
|
+
import {
|
|
3
|
+
COMBINED_MCP_SERVERS_EXPORT,
|
|
4
|
+
describeBundle,
|
|
5
|
+
needsCombinedMcpServers,
|
|
6
|
+
synthesizedExports
|
|
7
|
+
} from "./describe.mjs";
|
|
8
|
+
import { combineMcpServers, createIsolateRuntime } from "./isolate.mjs";
|
|
9
|
+
import { namedExportName, SlotKind } from "./layout.mjs";
|
|
10
|
+
const createAgentBundle = (args) => {
|
|
11
|
+
const entries = args.layout.map((layout, index) => ({
|
|
12
|
+
layout,
|
|
13
|
+
namespace: { ...args.namespaces[index] }
|
|
14
|
+
}));
|
|
15
|
+
const modules = {};
|
|
16
|
+
for (const entry of entries) {
|
|
17
|
+
for (const [name, value] of Object.entries(entry.namespace)) {
|
|
18
|
+
modules[namedExportName(entry.layout.base, name)] = value;
|
|
19
|
+
}
|
|
20
|
+
if (entry.layout.slot === SlotKind.Tool)
|
|
21
|
+
registerToolName(entry.namespace["default"], entry.layout.key);
|
|
22
|
+
}
|
|
23
|
+
const synthesized = synthesizedExports(entries);
|
|
24
|
+
for (const item of synthesized) modules[item.name] = item.value;
|
|
25
|
+
const names = synthesized.map((item) => item.name);
|
|
26
|
+
if (needsCombinedMcpServers(entries)) {
|
|
27
|
+
modules[COMBINED_MCP_SERVERS_EXPORT] = combineMcpServers(
|
|
28
|
+
entries.filter(
|
|
29
|
+
(entry) => entry.layout.slot === SlotKind.Tool || entry.layout.slot === SlotKind.Connection
|
|
30
|
+
).filter((entry) => entry.namespace["default"] != null).map((entry) => ({
|
|
31
|
+
kind: entry.layout.slot === SlotKind.Tool ? "tool" : "connection",
|
|
32
|
+
key: entry.layout.key,
|
|
33
|
+
exportName: entry.layout.base,
|
|
34
|
+
value: entry.namespace["default"]
|
|
35
|
+
}))
|
|
36
|
+
);
|
|
37
|
+
names.push(COMBINED_MCP_SERVERS_EXPORT);
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
modules,
|
|
41
|
+
runtime: createIsolateRuntime(modules),
|
|
42
|
+
describe: () => JSON.stringify(describeBundle(entries, names))
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export {
|
|
46
|
+
createAgentBundle
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=bundle.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/runtime/bundle.ts"],
|
|
4
|
+
"sourcesContent": ["import { registerToolName } from \"../authoring/tools.mjs\";\nimport {\n COMBINED_MCP_SERVERS_EXPORT,\n describeBundle,\n needsCombinedMcpServers,\n synthesizedExports,\n type NamespaceEntryIface,\n} from \"./describe.mjs\";\nimport { combineMcpServers, createIsolateRuntime, type IsolateRuntimeIface } from \"./isolate.mjs\";\nimport { namedExportName, SlotKind, type LayoutModuleIface } from \"./layout.mjs\";\nimport type { AuthoredRecord } from \"./values.mjs\";\n\nexport interface AgentBundleIface {\n // Export name \u2192 authored value: default exports under their module base\n // ('tools/lookup_release_notes'), named exports as '<base>#<name>', plus\n // synthesized exports ('agent:<path>', 'pending:<n>', 'final:mcpServers').\n modules: AuthoredRecord;\n runtime: IsolateRuntimeIface;\n // The static description as JSON, for the compiler.\n describe(): string;\n}\n\n// Called by the generated bundle entry once every authored module evaluated.\nexport const createAgentBundle = (args: {\n layout: LayoutModuleIface[];\n namespaces: AuthoredRecord[];\n}): AgentBundleIface => {\n const entries: NamespaceEntryIface[] = args.layout.map((layout, index) => ({\n layout,\n namespace: { ...args.namespaces[index] },\n }));\n const modules: AuthoredRecord = {};\n for (const entry of entries) {\n for (const [name, value] of Object.entries(entry.namespace)) {\n modules[namedExportName(entry.layout.base, name)] = value;\n }\n if (entry.layout.slot === SlotKind.Tool)\n registerToolName(entry.namespace['default'], entry.layout.key);\n }\n const synthesized = synthesizedExports(entries);\n for (const item of synthesized) modules[item.name] = item.value;\n const names = synthesized.map((item) => item.name);\n if (needsCombinedMcpServers(entries)) {\n modules[COMBINED_MCP_SERVERS_EXPORT] = combineMcpServers(\n entries\n .filter(\n (entry) =>\n entry.layout.slot === SlotKind.Tool || entry.layout.slot === SlotKind.Connection,\n )\n .filter((entry) => entry.namespace['default'] != null)\n .map((entry) => ({\n kind: entry.layout.slot === SlotKind.Tool ? 'tool' : 'connection',\n key: entry.layout.key,\n exportName: entry.layout.base,\n value: entry.namespace['default'],\n })),\n );\n names.push(COMBINED_MCP_SERVERS_EXPORT);\n }\n return {\n modules,\n runtime: createIsolateRuntime(modules),\n describe: () => JSON.stringify(describeBundle(entries, names)),\n };\n};\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,wBAAwB;AACjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,mBAAmB,4BAAsD;AAClF,SAAS,iBAAiB,gBAAwC;AAc3D,MAAM,oBAAoB,CAAC,SAGV;AACtB,QAAM,UAAiC,KAAK,OAAO,IAAI,CAAC,QAAQ,WAAW;AAAA,IACzE;AAAA,IACA,WAAW,EAAE,GAAG,KAAK,WAAW,KAAK,EAAE;AAAA,EACzC,EAAE;AACF,QAAM,UAA0B,CAAC;AACjC,aAAW,SAAS,SAAS;AAC3B,eAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,MAAM,SAAS,GAAG;AAC3D,cAAQ,gBAAgB,MAAM,OAAO,MAAM,IAAI,CAAC,IAAI;AAAA,IACtD;AACA,QAAI,MAAM,OAAO,SAAS,SAAS;AACjC,uBAAiB,MAAM,UAAU,SAAS,GAAG,MAAM,OAAO,GAAG;AAAA,EACjE;AACA,QAAM,cAAc,mBAAmB,OAAO;AAC9C,aAAW,QAAQ,YAAa,SAAQ,KAAK,IAAI,IAAI,KAAK;AAC1D,QAAM,QAAQ,YAAY,IAAI,CAAC,SAAS,KAAK,IAAI;AACjD,MAAI,wBAAwB,OAAO,GAAG;AACpC,YAAQ,2BAA2B,IAAI;AAAA,MACrC,QACG;AAAA,QACC,CAAC,UACC,MAAM,OAAO,SAAS,SAAS,QAAQ,MAAM,OAAO,SAAS,SAAS;AAAA,MAC1E,EACC,OAAO,CAAC,UAAU,MAAM,UAAU,SAAS,KAAK,IAAI,EACpD,IAAI,CAAC,WAAW;AAAA,QACf,MAAM,MAAM,OAAO,SAAS,SAAS,OAAO,SAAS;AAAA,QACrD,KAAK,MAAM,OAAO;AAAA,QAClB,YAAY,MAAM,OAAO;AAAA,QACzB,OAAO,MAAM,UAAU,SAAS;AAAA,MAClC,EAAE;AAAA,IACN;AACA,UAAM,KAAK,2BAA2B;AAAA,EACxC;AACA,SAAO;AAAA,IACL;AAAA,IACA,SAAS,qBAAqB,OAAO;AAAA,IACrC,UAAU,MAAM,KAAK,UAAU,eAAe,SAAS,KAAK,CAAC;AAAA,EAC/D;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { DescribedBundleIface, DescribedDynamicIface } from "./described.mjs";
|
|
2
|
+
import { COMBINED_MCP_SERVERS_EXPORT, type LayoutModuleIface } from "./layout.mjs";
|
|
3
|
+
import { type AuthoredRecord, type AuthoredValue } from "./values.mjs";
|
|
4
|
+
export interface NamespaceEntryIface {
|
|
5
|
+
layout: LayoutModuleIface;
|
|
6
|
+
namespace: AuthoredRecord;
|
|
7
|
+
}
|
|
8
|
+
export declare const describeDynamic: (value: AuthoredValue) => DescribedDynamicIface;
|
|
9
|
+
export declare const collectAgentDynamics: (agent: AuthoredValue) => {
|
|
10
|
+
path: string;
|
|
11
|
+
value: AuthoredValue;
|
|
12
|
+
}[];
|
|
13
|
+
export declare const describeBundle: (entries: NamespaceEntryIface[], synthesized: string[]) => DescribedBundleIface;
|
|
14
|
+
export declare const synthesizedExports: (entries: NamespaceEntryIface[]) => {
|
|
15
|
+
name: string;
|
|
16
|
+
value: AuthoredValue;
|
|
17
|
+
}[];
|
|
18
|
+
export declare const needsCombinedMcpServers: (entries: NamespaceEntryIface[]) => boolean;
|
|
19
|
+
export { COMBINED_MCP_SERVERS_EXPORT };
|