@finalai/agent-provider 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-provider might be problematic. Click here for more details.

Files changed (176) hide show
  1. package/README.md +12 -0
  2. package/dist/modules/channel-context.d.mts +102 -0
  3. package/dist/modules/channel-context.mjs +52 -0
  4. package/dist/modules/channel-context.mjs.map +7 -0
  5. package/dist/modules/channel-socket.d.mts +65 -0
  6. package/dist/modules/channel-socket.mjs +188 -0
  7. package/dist/modules/channel-socket.mjs.map +7 -0
  8. package/dist/modules/channel.d.mts +382 -0
  9. package/dist/modules/channel.mjs +146 -0
  10. package/dist/modules/channel.mjs.map +7 -0
  11. package/dist/modules/conformance/agent.d.mts +20 -0
  12. package/dist/modules/conformance/agent.mjs +623 -0
  13. package/dist/modules/conformance/agent.mjs.map +7 -0
  14. package/dist/modules/conformance/fixtures.d.mts +41 -0
  15. package/dist/modules/conformance/fixtures.mjs +190 -0
  16. package/dist/modules/conformance/fixtures.mjs.map +7 -0
  17. package/dist/modules/conformance/harness-kit.d.mts +82 -0
  18. package/dist/modules/conformance/harness-kit.mjs +1303 -0
  19. package/dist/modules/conformance/harness-kit.mjs.map +7 -0
  20. package/dist/modules/conformance/image.d.mts +2 -0
  21. package/dist/modules/conformance/image.mjs +79 -0
  22. package/dist/modules/conformance/image.mjs.map +7 -0
  23. package/dist/modules/conformance/index.d.mts +8 -0
  24. package/dist/modules/conformance/index.mjs +12 -0
  25. package/dist/modules/conformance/index.mjs.map +7 -0
  26. package/dist/modules/conformance/local-harness.d.mts +25 -0
  27. package/dist/modules/conformance/local-harness.mjs +108 -0
  28. package/dist/modules/conformance/local-harness.mjs.map +7 -0
  29. package/dist/modules/conformance/protocol.d.mts +30 -0
  30. package/dist/modules/conformance/protocol.mjs +56 -0
  31. package/dist/modules/conformance/protocol.mjs.map +7 -0
  32. package/dist/modules/conformance/sandbox-kit.d.mts +19 -0
  33. package/dist/modules/conformance/sandbox-kit.mjs +320 -0
  34. package/dist/modules/conformance/sandbox-kit.mjs.map +7 -0
  35. package/dist/modules/conformance/scripted-model/chat-completions.d.mts +30 -0
  36. package/dist/modules/conformance/scripted-model/chat-completions.mjs +125 -0
  37. package/dist/modules/conformance/scripted-model/chat-completions.mjs.map +7 -0
  38. package/dist/modules/conformance/scripted-model/directives.d.mts +84 -0
  39. package/dist/modules/conformance/scripted-model/directives.mjs +304 -0
  40. package/dist/modules/conformance/scripted-model/directives.mjs.map +7 -0
  41. package/dist/modules/conformance/scripted-model/handler.d.mts +14 -0
  42. package/dist/modules/conformance/scripted-model/handler.mjs +133 -0
  43. package/dist/modules/conformance/scripted-model/handler.mjs.map +7 -0
  44. package/dist/modules/conformance/scripted-model/index.d.mts +6 -0
  45. package/dist/modules/conformance/scripted-model/index.mjs +7 -0
  46. package/dist/modules/conformance/scripted-model/index.mjs.map +7 -0
  47. package/dist/modules/conformance/scripted-model/messages.d.mts +39 -0
  48. package/dist/modules/conformance/scripted-model/messages.mjs +139 -0
  49. package/dist/modules/conformance/scripted-model/messages.mjs.map +7 -0
  50. package/dist/modules/conformance/scripted-model/responses.d.mts +62 -0
  51. package/dist/modules/conformance/scripted-model/responses.mjs +273 -0
  52. package/dist/modules/conformance/scripted-model/responses.mjs.map +7 -0
  53. package/dist/modules/conformance/scripted-model/sse.d.mts +15 -0
  54. package/dist/modules/conformance/scripted-model/sse.mjs +75 -0
  55. package/dist/modules/conformance/scripted-model/sse.mjs.map +7 -0
  56. package/dist/modules/conformance/v1-agent.d.mts +24 -0
  57. package/dist/modules/conformance/v1-agent.mjs +40 -0
  58. package/dist/modules/conformance/v1-agent.mjs.map +7 -0
  59. package/dist/modules/credential-routes.d.mts +24 -0
  60. package/dist/modules/credential-routes.mjs +25 -0
  61. package/dist/modules/credential-routes.mjs.map +7 -0
  62. package/dist/modules/credentials.d.mts +206 -0
  63. package/dist/modules/credentials.mjs +207 -0
  64. package/dist/modules/credentials.mjs.map +7 -0
  65. package/dist/modules/dynamic.d.mts +32 -0
  66. package/dist/modules/dynamic.mjs +77 -0
  67. package/dist/modules/dynamic.mjs.map +7 -0
  68. package/dist/modules/harness.d.mts +397 -0
  69. package/dist/modules/harness.mjs +213 -0
  70. package/dist/modules/harness.mjs.map +7 -0
  71. package/dist/modules/index.d.mts +15 -0
  72. package/dist/modules/index.mjs +40 -0
  73. package/dist/modules/index.mjs.map +7 -0
  74. package/dist/modules/json.d.mts +12 -0
  75. package/dist/modules/json.mjs +19 -0
  76. package/dist/modules/json.mjs.map +7 -0
  77. package/dist/modules/local-channel-socket.d.mts +23 -0
  78. package/dist/modules/local-channel-socket.mjs +141 -0
  79. package/dist/modules/local-channel-socket.mjs.map +7 -0
  80. package/dist/modules/manifest.d.mts +558 -0
  81. package/dist/modules/manifest.mjs +266 -0
  82. package/dist/modules/manifest.mjs.map +7 -0
  83. package/dist/modules/mcp-content.d.mts +21 -0
  84. package/dist/modules/mcp-content.mjs +86 -0
  85. package/dist/modules/mcp-content.mjs.map +7 -0
  86. package/dist/modules/provider-ref.d.mts +29 -0
  87. package/dist/modules/provider-ref.mjs +55 -0
  88. package/dist/modules/provider-ref.mjs.map +7 -0
  89. package/dist/modules/sandbox/bytes.d.mts +9 -0
  90. package/dist/modules/sandbox/bytes.mjs +154 -0
  91. package/dist/modules/sandbox/bytes.mjs.map +7 -0
  92. package/dist/modules/sandbox/client.d.mts +51 -0
  93. package/dist/modules/sandbox/client.mjs +500 -0
  94. package/dist/modules/sandbox/client.mjs.map +7 -0
  95. package/dist/modules/sandbox/confined-files.d.mts +22 -0
  96. package/dist/modules/sandbox/confined-files.mjs +142 -0
  97. package/dist/modules/sandbox/confined-files.mjs.map +7 -0
  98. package/dist/modules/sandbox/convenience.d.mts +10 -0
  99. package/dist/modules/sandbox/convenience.mjs +116 -0
  100. package/dist/modules/sandbox/convenience.mjs.map +7 -0
  101. package/dist/modules/sandbox/editor.d.mts +49 -0
  102. package/dist/modules/sandbox/editor.mjs +43 -0
  103. package/dist/modules/sandbox/editor.mjs.map +7 -0
  104. package/dist/modules/sandbox/frame-channel.d.mts +47 -0
  105. package/dist/modules/sandbox/frame-channel.mjs +153 -0
  106. package/dist/modules/sandbox/frame-channel.mjs.map +7 -0
  107. package/dist/modules/sandbox/index.d.mts +18 -0
  108. package/dist/modules/sandbox/index.mjs +70 -0
  109. package/dist/modules/sandbox/index.mjs.map +7 -0
  110. package/dist/modules/sandbox/mcp-channel.d.mts +9 -0
  111. package/dist/modules/sandbox/mcp-channel.mjs +77 -0
  112. package/dist/modules/sandbox/mcp-channel.mjs.map +7 -0
  113. package/dist/modules/sandbox/mcp-hosted.d.mts +46 -0
  114. package/dist/modules/sandbox/mcp-hosted.mjs +221 -0
  115. package/dist/modules/sandbox/mcp-hosted.mjs.map +7 -0
  116. package/dist/modules/sandbox/mcp-search.d.mts +51 -0
  117. package/dist/modules/sandbox/mcp-search.mjs +129 -0
  118. package/dist/modules/sandbox/mcp-search.mjs.map +7 -0
  119. package/dist/modules/sandbox/mcp-shell.d.mts +21 -0
  120. package/dist/modules/sandbox/mcp-shell.mjs +205 -0
  121. package/dist/modules/sandbox/mcp-shell.mjs.map +7 -0
  122. package/dist/modules/sandbox/mcp-testing.d.mts +11 -0
  123. package/dist/modules/sandbox/mcp-testing.mjs +33 -0
  124. package/dist/modules/sandbox/mcp-testing.mjs.map +7 -0
  125. package/dist/modules/sandbox/mcp.d.mts +83 -0
  126. package/dist/modules/sandbox/mcp.mjs +971 -0
  127. package/dist/modules/sandbox/mcp.mjs.map +7 -0
  128. package/dist/modules/sandbox/memory-sandbox.d.mts +32 -0
  129. package/dist/modules/sandbox/memory-sandbox.mjs +416 -0
  130. package/dist/modules/sandbox/memory-sandbox.mjs.map +7 -0
  131. package/dist/modules/sandbox/memory-shell.d.mts +29 -0
  132. package/dist/modules/sandbox/memory-shell.mjs +278 -0
  133. package/dist/modules/sandbox/memory-shell.mjs.map +7 -0
  134. package/dist/modules/sandbox/open-scope-node.d.mts +4 -0
  135. package/dist/modules/sandbox/open-scope-node.mjs +19 -0
  136. package/dist/modules/sandbox/open-scope-node.mjs.map +7 -0
  137. package/dist/modules/sandbox/open-scope.d.mts +16 -0
  138. package/dist/modules/sandbox/open-scope.mjs +66 -0
  139. package/dist/modules/sandbox/open-scope.mjs.map +7 -0
  140. package/dist/modules/sandbox/paths.d.mts +7 -0
  141. package/dist/modules/sandbox/paths.mjs +50 -0
  142. package/dist/modules/sandbox/paths.mjs.map +7 -0
  143. package/dist/modules/sandbox/rpc-peer.d.mts +35 -0
  144. package/dist/modules/sandbox/rpc-peer.mjs +224 -0
  145. package/dist/modules/sandbox/rpc-peer.mjs.map +7 -0
  146. package/dist/modules/sandbox/seeds.d.mts +26 -0
  147. package/dist/modules/sandbox/seeds.mjs +228 -0
  148. package/dist/modules/sandbox/seeds.mjs.map +7 -0
  149. package/dist/modules/sandbox/server.d.mts +66 -0
  150. package/dist/modules/sandbox/server.mjs +567 -0
  151. package/dist/modules/sandbox/server.mjs.map +7 -0
  152. package/dist/modules/sandbox/snapshots.d.mts +49 -0
  153. package/dist/modules/sandbox/snapshots.mjs +55 -0
  154. package/dist/modules/sandbox/snapshots.mjs.map +7 -0
  155. package/dist/modules/sandbox/stream-mux.d.mts +18 -0
  156. package/dist/modules/sandbox/stream-mux.mjs +285 -0
  157. package/dist/modules/sandbox/stream-mux.mjs.map +7 -0
  158. package/dist/modules/sandbox/testing.d.mts +25 -0
  159. package/dist/modules/sandbox/testing.mjs +64 -0
  160. package/dist/modules/sandbox/testing.mjs.map +7 -0
  161. package/dist/modules/sandbox/types.d.mts +352 -0
  162. package/dist/modules/sandbox/types.mjs +86 -0
  163. package/dist/modules/sandbox/types.mjs.map +7 -0
  164. package/dist/modules/sandbox/wire.d.mts +671 -0
  165. package/dist/modules/sandbox/wire.mjs +537 -0
  166. package/dist/modules/sandbox/wire.mjs.map +7 -0
  167. package/dist/modules/sandbox/workspace-root.d.mts +8 -0
  168. package/dist/modules/sandbox/workspace-root.mjs +79 -0
  169. package/dist/modules/sandbox/workspace-root.mjs.map +7 -0
  170. package/dist/modules/schemas.d.mts +121 -0
  171. package/dist/modules/schemas.mjs +146 -0
  172. package/dist/modules/schemas.mjs.map +7 -0
  173. package/dist/modules/semantic-events.d.mts +31 -0
  174. package/dist/modules/semantic-events.mjs +23 -0
  175. package/dist/modules/semantic-events.mjs.map +7 -0
  176. package/package.json +199 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/credentials.ts"],
4
+ "sourcesContent": ["import * as z from 'zod';\nimport { DynamicEvent } from \"./dynamic.mjs\";\n\n// Credential policies. Authors build them from resolver\n// functions; each compiles to a small JSON node so the manifest stays renderable\n// and harnesses never parse a policy. The broker in agent-session-service is the\n// only resolver.\n\nexport enum CredentialPayer {\n AgentOwner = 'agent-owner',\n Organization = 'organization',\n PromptingUser = 'prompting-user',\n ConversationOwner = 'conversation-owner',\n}\n\nexport enum CredentialOwner {\n Payer = 'payer',\n Organization = 'organization',\n}\n\nexport enum CredentialNodeKind {\n Subscription = 'subscription',\n ApiKey = 'api-key',\n Platform = 'platform',\n HarnessOwned = 'harness-owned',\n Custom = 'custom',\n}\n\n// Credential kinds a harness can consume (HarnessDescriptionIface.inference.kinds).\nexport enum InferenceCredentialKind {\n Subscription = 'subscription',\n ApiKey = 'api-key',\n Platform = 'platform',\n HarnessOwned = 'harness-owned',\n}\n\nexport enum CredentialDelivery {\n PerRequest = 'per-request',\n AtOpen = 'at-open',\n}\n\n// Vendors are open strings; these are the ones the broker knows today.\nexport const KNOWN_INFERENCE_VENDORS = [\n 'openai',\n 'anthropic',\n 'openrouter',\n 'google',\n 'bedrock',\n] as const;\n\nexport const subscriptionNodeSchema = z.object({\n kind: z.literal(CredentialNodeKind.Subscription),\n owner: z.nativeEnum(CredentialOwner),\n vendor: z.string().min(1).optional(),\n pin: z.string().min(1).optional(),\n});\n\nexport const apiKeyOwnerNodeSchema = z.object({\n pin: z.string().min(1).optional(),\n kind: z.literal(CredentialNodeKind.ApiKey),\n owner: z.nativeEnum(CredentialOwner),\n vendor: z.string().min(1).optional(),\n});\n\nexport const apiKeySecretNodeSchema = z.object({\n kind: z.literal(CredentialNodeKind.ApiKey),\n secret: z.string().min(1),\n baseUrl: z.string().url().optional(),\n vendor: z.string().min(1).optional(),\n});\n\nexport const platformNodeSchema = z.object({\n kind: z.literal(CredentialNodeKind.Platform),\n budget: z.string().min(1).optional(),\n});\n\nexport const harnessNodeSchema = z.object({\n kind: z.literal(CredentialNodeKind.HarnessOwned),\n});\n\nexport const customNodeSchema = z.object({\n kind: z.literal(CredentialNodeKind.Custom),\n // Bundle export of a defineDynamic resolver returning one of the other nodes,\n // or `{ kind: 'api-key', value }` held in memory by the broker.\n resolver: z.string().min(1),\n events: z.array(z.nativeEnum(DynamicEvent)).default([DynamicEvent.SessionStarted]),\n});\n\nexport const credentialNodeSchema = z.union([\n subscriptionNodeSchema,\n apiKeySecretNodeSchema,\n apiKeyOwnerNodeSchema,\n platformNodeSchema,\n harnessNodeSchema,\n customNodeSchema,\n]);\n\nexport const credentialPolicySchema = z.object({\n payer: z.nativeEnum(CredentialPayer),\n tryInOrder: z.array(credentialNodeSchema).min(1),\n});\n\nexport type SubscriptionNodeIface = z.infer<typeof subscriptionNodeSchema>;\nexport type ApiKeyOwnerNodeIface = z.infer<typeof apiKeyOwnerNodeSchema>;\nexport type ApiKeySecretNodeIface = z.infer<typeof apiKeySecretNodeSchema>;\nexport type PlatformNodeIface = z.infer<typeof platformNodeSchema>;\nexport type HarnessOwnedNodeIface = z.infer<typeof harnessNodeSchema>;\nexport type CustomNodeIface = z.infer<typeof customNodeSchema>;\nexport type CredentialNode = z.infer<typeof credentialNodeSchema>;\nexport type CredentialPolicyIface = z.infer<typeof credentialPolicySchema>;\n\n// What a custom resolver may return at run time: any static node, or a literal\n// key the broker holds in memory and redacts from snapshots.\nexport const customResolverResultSchema = z.union([\n credentialNodeSchema,\n z.object({\n kind: z.literal(CredentialNodeKind.ApiKey),\n value: z.string().min(1),\n vendor: z.string().min(1).optional(),\n baseUrl: z.string().url().optional(),\n }),\n]);\nexport type CustomResolverResult = z.infer<typeof customResolverResultSchema>;\n\ninterface SubscriptionArgsIface {\n owner: CredentialOwner | `${CredentialOwner}`;\n vendor?: string;\n pin?: string;\n}\n\ninterface ApiKeyOwnerArgsIface {\n pin?: string;\n owner: CredentialOwner | `${CredentialOwner}`;\n vendor?: string;\n}\n\ninterface ApiKeySecretArgsIface {\n secret: string;\n baseUrl?: string;\n vendor?: string;\n}\n\ninterface ChainArgsIface {\n payer: CredentialPayer | `${CredentialPayer}`;\n tryInOrder: CredentialNode[];\n}\n\nconst ownerSchema = z.nativeEnum(CredentialOwner);\nconst toOwner = (owner: CredentialOwner | `${CredentialOwner}`): CredentialOwner =>\n ownerSchema.parse(owner);\n\nconst payerSchema = z.nativeEnum(CredentialPayer);\nconst toPayer = (payer: CredentialPayer | `${CredentialPayer}`): CredentialPayer =>\n payerSchema.parse(payer);\n\n// A defineDynamic-shaped value: only the bundle export name is recorded in the\n// manifest; the compiler fills it in when it sees the resolver in the bundle.\ninterface CustomResolverRefIface {\n resolverExport: string;\n events?: DynamicEvent[];\n}\n\nexport const credentials = {\n chain: (args: ChainArgsIface): CredentialPolicyIface =>\n credentialPolicySchema.parse({ payer: toPayer(args.payer), tryInOrder: args.tryInOrder }),\n subscription: (args: SubscriptionArgsIface): SubscriptionNodeIface => {\n const node: SubscriptionNodeIface = {\n kind: CredentialNodeKind.Subscription,\n owner: toOwner(args.owner),\n };\n if (args.vendor != null) node.vendor = args.vendor;\n if (args.pin != null) node.pin = args.pin;\n return node;\n },\n apiKey: (args: ApiKeyOwnerArgsIface | ApiKeySecretArgsIface): CredentialNode => {\n if ('secret' in args) {\n const node: ApiKeySecretNodeIface = { kind: CredentialNodeKind.ApiKey, secret: args.secret };\n if (args.baseUrl != null) node.baseUrl = args.baseUrl;\n if (args.vendor != null) node.vendor = args.vendor;\n return node;\n }\n const node: ApiKeyOwnerNodeIface = {\n kind: CredentialNodeKind.ApiKey,\n owner: toOwner(args.owner),\n };\n if (args.vendor != null) node.vendor = args.vendor;\n if (args.pin != null) node.pin = args.pin;\n return node;\n },\n platform: (args?: { budget?: string }): PlatformNodeIface => {\n const node: PlatformNodeIface = { kind: CredentialNodeKind.Platform };\n if (args?.budget != null) node.budget = args.budget;\n return node;\n },\n harness: (): HarnessOwnedNodeIface => ({ kind: CredentialNodeKind.HarnessOwned }),\n custom: (ref: CustomResolverRefIface): CustomNodeIface => ({\n kind: CredentialNodeKind.Custom,\n resolver: ref.resolverExport,\n events: ref.events ?? [DynamicEvent.SessionStarted],\n }),\n};\n\n// Defaults: personal agents pay with the owner's subscriptions,\n// organization agents with the organization's; both fall back to the platform.\nexport const defaultPersonalCredentialPolicy = (): CredentialPolicyIface =>\n credentials.chain({\n payer: CredentialPayer.AgentOwner,\n tryInOrder: [\n credentials.subscription({ owner: CredentialOwner.Payer }),\n credentials.platform(),\n ],\n });\n\nexport const defaultOrganizationCredentialPolicy = (): CredentialPolicyIface =>\n credentials.chain({\n payer: CredentialPayer.Organization,\n tryInOrder: [\n credentials.subscription({ owner: CredentialOwner.Organization }),\n credentials.platform(),\n ],\n });\n\n// Maps a policy node onto the inference credential kind it produces, for the\n// compatibility report and for the broker dropping entries a harness cannot use.\nexport const inferenceKindOfNode = (node: CredentialNode): InferenceCredentialKind | null => {\n switch (node.kind) {\n case CredentialNodeKind.Subscription:\n return InferenceCredentialKind.Subscription;\n case CredentialNodeKind.ApiKey:\n return InferenceCredentialKind.ApiKey;\n case CredentialNodeKind.Platform:\n return InferenceCredentialKind.Platform;\n case CredentialNodeKind.HarnessOwned:\n return InferenceCredentialKind.HarnessOwned;\n case CredentialNodeKind.Custom:\n return null;\n }\n};\n\n// Why a resolution could not produce a model grant; shown to people as a notice.\nexport enum CredentialFailureReason {\n SubscriptionNotConnected = 'subscription_not_connected',\n UsageExhausted = 'usage_exhausted',\n BudgetExceeded = 'budget_exceeded',\n CredentialInvalid = 'credential_invalid',\n HarnessIncompatible = 'harness_incompatible',\n}\n\n// Why a candidate was skipped during resolution (recorded as fallback_reason).\nexport enum CredentialFallbackReason {\n Archived = 'archived',\n Invalid = 'invalid',\n VendorMismatch = 'vendor_mismatch',\n Exhausted = 'exhausted',\n NotGranted = 'not_granted',\n OverBudget = 'over_budget',\n KindUnsupported = 'kind_unsupported',\n Missing = 'missing',\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["CredentialPayer", "CredentialOwner", "CredentialNodeKind", "InferenceCredentialKind", "CredentialDelivery", "node", "CredentialFailureReason", "CredentialFallbackReason"]
7
+ }
@@ -0,0 +1,32 @@
1
+ import * as z from 'zod';
2
+ import type { JsonValue } from "./json.mjs";
3
+ export declare enum DynamicEvent {
4
+ SessionStarted = "session.started",
5
+ TurnStarted = "turn.started"
6
+ }
7
+ export declare const dynamicSlotSchema: z.ZodObject<{
8
+ $dynamic: z.ZodObject<{
9
+ resolver: z.ZodString;
10
+ events: z.ZodArray<z.ZodEnum<typeof DynamicEvent>>;
11
+ description: z.ZodOptional<z.ZodString>;
12
+ preview: z.ZodOptional<z.ZodString>;
13
+ }, z.core.$strip>;
14
+ }, z.core.$strip>;
15
+ export type DynamicSlotIface = z.infer<typeof dynamicSlotSchema>;
16
+ export type Dynamic<_T> = DynamicSlotIface;
17
+ export declare const isDynamicSlot: <T>(value: T) => value is T & DynamicSlotIface;
18
+ export declare const maybeDynamic: <T extends z.ZodType>(schema: T) => z.ZodUnion<readonly [z.ZodObject<{
19
+ $dynamic: z.ZodObject<{
20
+ resolver: z.ZodString;
21
+ events: z.ZodArray<z.ZodEnum<typeof DynamicEvent>>;
22
+ description: z.ZodOptional<z.ZodString>;
23
+ preview: z.ZodOptional<z.ZodString>;
24
+ }, z.core.$strip>;
25
+ }, z.core.$strip>, T]>;
26
+ export interface DynamicSlotLocationIface {
27
+ path: string;
28
+ slot: DynamicSlotIface;
29
+ }
30
+ export declare const findDynamicSlots: <T>(value: T, path?: string) => DynamicSlotLocationIface[];
31
+ export declare const containsDynamicSlot: <T>(value: T) => boolean;
32
+ export declare const replaceDynamicSlots: (value: JsonValue, resolved: Record<string, JsonValue | null>, path?: string) => JsonValue;
@@ -0,0 +1,77 @@
1
+ import * as z from "zod";
2
+ var DynamicEvent = /* @__PURE__ */ ((DynamicEvent2) => {
3
+ DynamicEvent2["SessionStarted"] = "session.started";
4
+ DynamicEvent2["TurnStarted"] = "turn.started";
5
+ return DynamicEvent2;
6
+ })(DynamicEvent || {});
7
+ const dynamicSlotSchema = z.object({
8
+ $dynamic: z.object({
9
+ // Bundle export that implements the resolver ('instructions/org-context').
10
+ resolver: z.string().min(1),
11
+ events: z.array(z.nativeEnum(DynamicEvent)).min(1),
12
+ // Final additions so Build can render a slot without resolving it.
13
+ description: z.string().optional(),
14
+ preview: z.string().optional()
15
+ })
16
+ });
17
+ const isDynamicSlot = (value) => dynamicSlotSchema.safeParse(value).success;
18
+ const slotOf = (value) => {
19
+ const parsed = dynamicSlotSchema.safeParse(value);
20
+ return parsed.success ? parsed.data : null;
21
+ };
22
+ const listSchema = z.array(z.json());
23
+ const objectSchema = z.record(z.string(), z.json());
24
+ const looseListSchema = z.array(z.unknown());
25
+ const looseObjectSchema = z.record(z.string(), z.unknown());
26
+ const maybeDynamic = (schema) => z.union([dynamicSlotSchema, schema]);
27
+ const indexPath = (parent, index) => `${parent}[${index}]`;
28
+ const keyPath = (parent, key) => parent.length === 0 ? key : `${parent}.${key}`;
29
+ const findDynamicSlots = (value, path = "") => {
30
+ const slot = slotOf(value);
31
+ if (slot != null) return [{ path, slot }];
32
+ const list = looseListSchema.safeParse(value);
33
+ if (list.success) {
34
+ return list.data.flatMap((item, index) => findDynamicSlots(item, indexPath(path, index)));
35
+ }
36
+ const object = looseObjectSchema.safeParse(value);
37
+ if (object.success) {
38
+ return Object.entries(object.data).flatMap(
39
+ ([key, item]) => findDynamicSlots(item, keyPath(path, key))
40
+ );
41
+ }
42
+ return [];
43
+ };
44
+ const containsDynamicSlot = (value) => findDynamicSlots(value).length > 0;
45
+ const replaceDynamicSlots = (value, resolved, path = "") => {
46
+ if (isDynamicSlot(value)) return resolved[path] ?? null;
47
+ const list = listSchema.safeParse(value);
48
+ if (list.success) {
49
+ const out = [];
50
+ list.data.forEach((item, index) => {
51
+ const itemPath = indexPath(path, index);
52
+ if (isDynamicSlot(item) && resolved[itemPath] == null) return;
53
+ out.push(replaceDynamicSlots(item, resolved, itemPath));
54
+ });
55
+ return out;
56
+ }
57
+ const object = objectSchema.safeParse(value);
58
+ if (object.success) {
59
+ return Object.fromEntries(
60
+ Object.entries(object.data).map(([key, item]) => [
61
+ key,
62
+ replaceDynamicSlots(item, resolved, keyPath(path, key))
63
+ ])
64
+ );
65
+ }
66
+ return value;
67
+ };
68
+ export {
69
+ DynamicEvent,
70
+ containsDynamicSlot,
71
+ dynamicSlotSchema,
72
+ findDynamicSlots,
73
+ isDynamicSlot,
74
+ maybeDynamic,
75
+ replaceDynamicSlots
76
+ };
77
+ //# sourceMappingURL=dynamic.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/dynamic.ts"],
4
+ "sourcesContent": ["import * as z from 'zod';\nimport type { JsonValue } from \"./json.mjs\";\n\n// Lifecycle boundaries a dynamic slot may resolve at.\n// The harness owns steps, so `step.started` is not supported.\nexport enum DynamicEvent {\n SessionStarted = 'session.started',\n TurnStarted = 'turn.started',\n}\n\nexport const dynamicSlotSchema = z.object({\n $dynamic: z.object({\n // Bundle export that implements the resolver ('instructions/org-context').\n resolver: z.string().min(1),\n events: z.array(z.nativeEnum(DynamicEvent)).min(1),\n // Final additions so Build can render a slot without resolving it.\n description: z.string().optional(),\n preview: z.string().optional(),\n }),\n});\n\nexport type DynamicSlotIface = z.infer<typeof dynamicSlotSchema>;\nexport type Dynamic<_T> = DynamicSlotIface;\n\nexport const isDynamicSlot = <T>(value: T): value is T & DynamicSlotIface =>\n dynamicSlotSchema.safeParse(value).success;\n\nconst slotOf = <T>(value: T): DynamicSlotIface | null => {\n const parsed = dynamicSlotSchema.safeParse(value);\n return parsed.success ? parsed.data : null;\n};\n\nconst listSchema = z.array(z.json());\nconst objectSchema = z.record(z.string(), z.json());\nconst looseListSchema = z.array(z.unknown());\nconst looseObjectSchema = z.record(z.string(), z.unknown());\n\nexport const maybeDynamic = <T extends z.ZodType>(schema: T) =>\n z.union([dynamicSlotSchema, schema]);\n\n// A dynamic slot found while walking a JSON document, addressed by a stable\n// path ('harness.config.instructions[1]') that the manifest's bundle.resolvers\n// map keys by.\nexport interface DynamicSlotLocationIface {\n path: string;\n slot: DynamicSlotIface;\n}\n\nconst indexPath = (parent: string, index: number): string => `${parent}[${index}]`;\nconst keyPath = (parent: string, key: string): string =>\n parent.length === 0 ? key : `${parent}.${key}`;\n\nexport const findDynamicSlots = <T>(value: T, path = ''): DynamicSlotLocationIface[] => {\n const slot = slotOf(value);\n if (slot != null) return [{ path, slot }];\n const list = looseListSchema.safeParse(value);\n if (list.success) {\n return list.data.flatMap((item, index) => findDynamicSlots(item, indexPath(path, index)));\n }\n const object = looseObjectSchema.safeParse(value);\n if (object.success) {\n return Object.entries(object.data).flatMap(([key, item]) =>\n findDynamicSlots(item, keyPath(path, key)),\n );\n }\n return [];\n};\n\nexport const containsDynamicSlot = <T>(value: T): boolean => findDynamicSlots(value).length > 0;\n\n// Replaces each slot with the resolver output for its path. A resolver that\n// returned null removes an array entry and leaves an object field as null.\nexport const replaceDynamicSlots = (\n value: JsonValue,\n resolved: Record<string, JsonValue | null>,\n path = '',\n): JsonValue => {\n if (isDynamicSlot(value)) return resolved[path] ?? null;\n const list = listSchema.safeParse(value);\n if (list.success) {\n const out: JsonValue[] = [];\n list.data.forEach((item, index) => {\n const itemPath = indexPath(path, index);\n if (isDynamicSlot(item) && resolved[itemPath] == null) return;\n out.push(replaceDynamicSlots(item, resolved, itemPath));\n });\n return out;\n }\n const object = objectSchema.safeParse(value);\n if (object.success) {\n return Object.fromEntries(\n Object.entries(object.data).map(([key, item]) => [\n key,\n replaceDynamicSlots(item, resolved, keyPath(path, key)),\n ]),\n );\n }\n return value;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["DynamicEvent"]
7
+ }
@@ -0,0 +1,397 @@
1
+ import type { McpServer } from '@agentclientprotocol/sdk/experimental/v2';
2
+ import * as z from 'zod';
3
+ import { CredentialRoute, type RouteGrantIface } from "./credential-routes.mjs";
4
+ import { CredentialDelivery, InferenceCredentialKind } from "./credentials.mjs";
5
+ import type { JsonSchema, JsonValue } from "./json.mjs";
6
+ import { BaseCapability, type ResolvedAgentManifestIface } from "./manifest.mjs";
7
+ import { type ProviderRef } from "./provider-ref.mjs";
8
+ export declare const PENDING_BUNDLE_EXPORT = "<pending>";
9
+ export declare enum AcpTransport {
10
+ Relay = "relay",
11
+ Ws = "ws",
12
+ Http = "http",
13
+ Stdio = "stdio"
14
+ }
15
+ export declare enum McpTransportKind {
16
+ Acp = "acp",
17
+ Http = "http",
18
+ Stdio = "stdio"
19
+ }
20
+ export declare enum BaseToolProvision {
21
+ Bound = "bound",
22
+ HostDisableable = "host-disableable",
23
+ HostFixed = "host-fixed"
24
+ }
25
+ export declare enum SandboxWire {
26
+ HandleRpc = "handle-rpc",
27
+ Mcp = "mcp"
28
+ }
29
+ export declare enum UserInstructionDelivery {
30
+ History = "history",
31
+ System = "system"
32
+ }
33
+ export declare enum HarnessTrustClass {
34
+ FirstParty = "first-party",
35
+ ThirdParty = "third-party"
36
+ }
37
+ export declare enum PromptWhileRunning {
38
+ Inject = "inject",
39
+ Queue = "queue"
40
+ }
41
+ export declare const DEFAULT_PROMPT_WHILE_RUNNING = PromptWhileRunning.Queue;
42
+ export declare const DEFAULT_SESSION_SURVIVES_DISCONNECT = false;
43
+ export declare const baseToolDeclarationSchema: z.ZodObject<{
44
+ provision: z.ZodEnum<typeof BaseToolProvision>;
45
+ nativeTools: z.ZodArray<z.ZodString>;
46
+ }, z.core.$strip>;
47
+ export declare const harnessDescriptionSchema: z.ZodObject<{
48
+ configSchema: z.ZodType<import("./json.mjs").JsonObject, unknown, z.core.$ZodTypeInternals<import("./json.mjs").JsonObject, unknown>>;
49
+ userInstructionDelivery: z.ZodOptional<z.ZodEnum<typeof UserInstructionDelivery>>;
50
+ acp: z.ZodObject<{
51
+ transports: z.ZodArray<z.ZodEnum<typeof AcpTransport>>;
52
+ mcp: z.ZodArray<z.ZodEnum<typeof McpTransportKind>>;
53
+ }, z.core.$strip>;
54
+ baseTools: z.ZodRecord<z.ZodEnum<typeof BaseCapability> & z.core.$partial, z.ZodObject<{
55
+ provision: z.ZodEnum<typeof BaseToolProvision>;
56
+ nativeTools: z.ZodArray<z.ZodString>;
57
+ }, z.core.$strip>>;
58
+ consumes: z.ZodArray<z.ZodEnum<typeof SandboxWire>>;
59
+ inference: z.ZodObject<{
60
+ vendors: z.ZodArray<z.ZodString>;
61
+ kinds: z.ZodArray<z.ZodEnum<typeof InferenceCredentialKind>>;
62
+ delivery: z.ZodEnum<typeof CredentialDelivery>;
63
+ }, z.core.$strip>;
64
+ trust: z.ZodOptional<z.ZodEnum<typeof HarnessTrustClass>>;
65
+ supports: z.ZodObject<{
66
+ observe: z.ZodBoolean;
67
+ resumeReplay: z.ZodBoolean;
68
+ fork: z.ZodBoolean;
69
+ authorMeta: z.ZodBoolean;
70
+ nativeToolPolicy: z.ZodOptional<z.ZodBoolean>;
71
+ }, z.core.$strip>;
72
+ promptWhileRunning: z.ZodDefault<z.ZodEnum<typeof PromptWhileRunning>>;
73
+ sessionSurvivesDisconnect: z.ZodDefault<z.ZodBoolean>;
74
+ }, z.core.$strip>;
75
+ export type BaseToolDeclarationIface = z.infer<typeof baseToolDeclarationSchema>;
76
+ export type HarnessDescriptionIface = z.infer<typeof harnessDescriptionSchema>;
77
+ export declare const deliveredHarnessConfig: (args: {
78
+ config: JsonValue;
79
+ description: HarnessDescriptionIface;
80
+ }) => JsonValue;
81
+ export declare const harnessSessionRefSchema: z.ZodObject<{
82
+ harness: z.ZodDiscriminatedUnion<[z.ZodObject<{
83
+ kind: z.ZodLiteral<import("./provider-ref.mjs").ProviderRefKind.Package>;
84
+ specifier: z.ZodString;
85
+ }, z.core.$strip>, z.ZodObject<{
86
+ kind: z.ZodLiteral<import("./provider-ref.mjs").ProviderRefKind.Bundle>;
87
+ export: z.ZodString;
88
+ }, z.core.$strip>], "kind">;
89
+ harnessSessionRef: z.ZodString;
90
+ generation: z.ZodNumber;
91
+ }, z.core.$strip>;
92
+ export type HarnessSessionRefIface = z.infer<typeof harnessSessionRefSchema>;
93
+ export { credentialRefreshRequestSchema, CredentialRoute, routeGrantSchema, type CredentialRefreshRequestIface, type RouteGrantIface, } from "./credential-routes.mjs";
94
+ export interface CredentialGrantIface {
95
+ brokerUrl: string;
96
+ grants: RouteGrantIface[];
97
+ atOpen: AtOpenModelCredentialIface | null;
98
+ refresh: CredentialGrantRefreshIface | null;
99
+ }
100
+ export interface CredentialGrantRefreshIface {
101
+ url: string;
102
+ token: string;
103
+ harnessSessionId: string;
104
+ expiresAt: string;
105
+ }
106
+ export interface AtOpenModelCredentialIface {
107
+ vendor: string;
108
+ kind: InferenceCredentialKind;
109
+ baseUrl: string | null;
110
+ apiKey: string | null;
111
+ subscription: {
112
+ format: 'claude-setup-token' | 'chatgpt-auth-tokens';
113
+ value: string;
114
+ } | null;
115
+ fingerprint: string;
116
+ }
117
+ export declare const atOpenModelCredentialSchema: z.ZodObject<{
118
+ vendor: z.ZodString;
119
+ kind: z.ZodEnum<typeof InferenceCredentialKind>;
120
+ baseUrl: z.ZodNullable<z.ZodString>;
121
+ apiKey: z.ZodNullable<z.ZodString>;
122
+ subscription: z.ZodNullable<z.ZodObject<{
123
+ format: z.ZodUnion<readonly [z.ZodLiteral<"claude-setup-token">, z.ZodLiteral<"chatgpt-auth-tokens">]>;
124
+ value: z.ZodString;
125
+ }, z.core.$strip>>;
126
+ fingerprint: z.ZodString;
127
+ }, z.core.$strip>;
128
+ export declare const credentialGrantRefreshSchema: z.ZodObject<{
129
+ url: z.ZodString;
130
+ token: z.ZodString;
131
+ harnessSessionId: z.ZodString;
132
+ expiresAt: z.ZodString;
133
+ }, z.core.$strip>;
134
+ export declare const credentialGrantSchema: z.ZodObject<{
135
+ brokerUrl: z.ZodString;
136
+ grants: z.ZodArray<z.ZodObject<{
137
+ route: z.ZodEnum<typeof CredentialRoute>;
138
+ token: z.ZodString;
139
+ expiresAt: z.ZodString;
140
+ }, z.core.$strip>>;
141
+ atOpen: z.ZodNullable<z.ZodObject<{
142
+ vendor: z.ZodString;
143
+ kind: z.ZodEnum<typeof InferenceCredentialKind>;
144
+ baseUrl: z.ZodNullable<z.ZodString>;
145
+ apiKey: z.ZodNullable<z.ZodString>;
146
+ subscription: z.ZodNullable<z.ZodObject<{
147
+ format: z.ZodUnion<readonly [z.ZodLiteral<"claude-setup-token">, z.ZodLiteral<"chatgpt-auth-tokens">]>;
148
+ value: z.ZodString;
149
+ }, z.core.$strip>>;
150
+ fingerprint: z.ZodString;
151
+ }, z.core.$strip>>;
152
+ refresh: z.ZodNullable<z.ZodObject<{
153
+ url: z.ZodString;
154
+ token: z.ZodString;
155
+ harnessSessionId: z.ZodString;
156
+ expiresAt: z.ZodString;
157
+ }, z.core.$strip>>;
158
+ }, z.core.$strip>;
159
+ export interface RenewedMcpServerIface {
160
+ name: string;
161
+ url: string;
162
+ headers: {
163
+ name: string;
164
+ value: string;
165
+ }[];
166
+ }
167
+ export interface CredentialRefreshResultIface extends CredentialGrantIface {
168
+ mcpServers: RenewedMcpServerIface[];
169
+ sandboxes: Record<string, SandboxTargetEndpointIface>;
170
+ }
171
+ export declare const sandboxTargetEndpointSchema: z.ZodObject<{
172
+ target: z.ZodString;
173
+ bindingId: z.ZodString;
174
+ capabilities: z.ZodArray<z.ZodString>;
175
+ rpc: z.ZodNullable<z.ZodObject<{
176
+ url: z.ZodString;
177
+ token: z.ZodString;
178
+ expiresAt: z.ZodString;
179
+ }, z.core.$strip>>;
180
+ mcp: z.ZodNullable<z.ZodObject<{
181
+ url: z.ZodString;
182
+ token: z.ZodString;
183
+ expiresAt: z.ZodString;
184
+ }, z.core.$strip>>;
185
+ }, z.core.$strip>;
186
+ export declare const renewedMcpServerSchema: z.ZodObject<{
187
+ name: z.ZodString;
188
+ url: z.ZodString;
189
+ headers: z.ZodArray<z.ZodObject<{
190
+ name: z.ZodString;
191
+ value: z.ZodString;
192
+ }, z.core.$strip>>;
193
+ }, z.core.$strip>;
194
+ export declare const credentialRefreshResultSchema: z.ZodObject<{
195
+ brokerUrl: z.ZodString;
196
+ grants: z.ZodArray<z.ZodObject<{
197
+ route: z.ZodEnum<typeof CredentialRoute>;
198
+ token: z.ZodString;
199
+ expiresAt: z.ZodString;
200
+ }, z.core.$strip>>;
201
+ atOpen: z.ZodNullable<z.ZodObject<{
202
+ vendor: z.ZodString;
203
+ kind: z.ZodEnum<typeof InferenceCredentialKind>;
204
+ baseUrl: z.ZodNullable<z.ZodString>;
205
+ apiKey: z.ZodNullable<z.ZodString>;
206
+ subscription: z.ZodNullable<z.ZodObject<{
207
+ format: z.ZodUnion<readonly [z.ZodLiteral<"claude-setup-token">, z.ZodLiteral<"chatgpt-auth-tokens">]>;
208
+ value: z.ZodString;
209
+ }, z.core.$strip>>;
210
+ fingerprint: z.ZodString;
211
+ }, z.core.$strip>>;
212
+ refresh: z.ZodNullable<z.ZodObject<{
213
+ url: z.ZodString;
214
+ token: z.ZodString;
215
+ harnessSessionId: z.ZodString;
216
+ expiresAt: z.ZodString;
217
+ }, z.core.$strip>>;
218
+ mcpServers: z.ZodDefault<z.ZodArray<z.ZodObject<{
219
+ name: z.ZodString;
220
+ url: z.ZodString;
221
+ headers: z.ZodArray<z.ZodObject<{
222
+ name: z.ZodString;
223
+ value: z.ZodString;
224
+ }, z.core.$strip>>;
225
+ }, z.core.$strip>>>;
226
+ sandboxes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
227
+ target: z.ZodString;
228
+ bindingId: z.ZodString;
229
+ capabilities: z.ZodArray<z.ZodString>;
230
+ rpc: z.ZodNullable<z.ZodObject<{
231
+ url: z.ZodString;
232
+ token: z.ZodString;
233
+ expiresAt: z.ZodString;
234
+ }, z.core.$strip>>;
235
+ mcp: z.ZodNullable<z.ZodObject<{
236
+ url: z.ZodString;
237
+ token: z.ZodString;
238
+ expiresAt: z.ZodString;
239
+ }, z.core.$strip>>;
240
+ }, z.core.$strip>>>;
241
+ }, z.core.$strip>;
242
+ export declare const grantRefreshFor: (args: {
243
+ brokerUrl: string;
244
+ harnessSessionId: string;
245
+ grants: readonly RouteGrantIface[];
246
+ }) => CredentialGrantRefreshIface | null;
247
+ export interface SecretReaderIface {
248
+ get(name: string): Promise<string | null>;
249
+ }
250
+ export interface TraceContextIface {
251
+ traceparent: string | null;
252
+ tracestate: string | null;
253
+ }
254
+ export interface SandboxTargetEndpointIface {
255
+ target: string;
256
+ bindingId: string;
257
+ capabilities: string[];
258
+ rpc: {
259
+ url: string;
260
+ token: string;
261
+ expiresAt: string;
262
+ } | null;
263
+ mcp: {
264
+ url: string;
265
+ token: string;
266
+ expiresAt: string;
267
+ } | null;
268
+ }
269
+ export interface HarnessSessionContextIface {
270
+ sessionId: string;
271
+ organizationId: string;
272
+ definitionId: string;
273
+ revisionId: string;
274
+ sessionServiceUrl: string;
275
+ sessionServiceRegion?: string | null;
276
+ }
277
+ export interface HarnessObserverIface {
278
+ invocationAccepted?(event: {
279
+ invocationRef: string;
280
+ at: string;
281
+ }): void;
282
+ invocationStarted?(event: {
283
+ invocationRef: string;
284
+ at: string;
285
+ bootMs: number | null;
286
+ versionId?: string | null;
287
+ commitSha?: string | null;
288
+ }): void;
289
+ invocationKeepalive?(event: {
290
+ invocationRef: string;
291
+ at: string;
292
+ activeWork: number;
293
+ }): void;
294
+ invocationEnded?(event: {
295
+ invocationRef: string;
296
+ at: string;
297
+ reason: string;
298
+ error: string | null;
299
+ metering: Record<string, number>;
300
+ }): void;
301
+ trace?(event: {
302
+ name: string;
303
+ at: string;
304
+ fields: Record<string, JsonValue>;
305
+ }): void;
306
+ }
307
+ export interface OpenHarnessSessionArgsIface {
308
+ session: HarnessSessionContextIface;
309
+ harnessSessionId: string;
310
+ forkSource?: {
311
+ ref: HarnessSessionRefIface;
312
+ acpSessionId: string;
313
+ };
314
+ observer?: HarnessObserverIface;
315
+ config: JsonValue;
316
+ manifest: ResolvedAgentManifestIface;
317
+ mcpServers: McpServer[];
318
+ baseTools: Partial<Record<BaseCapability, SandboxTargetEndpointIface>>;
319
+ sandboxes: Record<string, SandboxTargetEndpointIface>;
320
+ credentials: CredentialGrantIface;
321
+ secrets: SecretReaderIface;
322
+ trace: TraceContextIface;
323
+ }
324
+ export interface ResumeHarnessSessionArgsIface extends OpenHarnessSessionArgsIface {
325
+ ref: HarnessSessionRefIface;
326
+ lastSeq: number;
327
+ }
328
+ export interface HarnessClientTlsIface {
329
+ cert: string;
330
+ key: string;
331
+ ca?: string;
332
+ }
333
+ export type HarnessEndpointIface = {
334
+ ref: HarnessSessionRefIface;
335
+ transport: AcpTransport.Ws;
336
+ url: string;
337
+ headers: Record<string, string>;
338
+ resolveHeaders?: () => Promise<Record<string, string>>;
339
+ tls?: HarnessClientTlsIface;
340
+ } | {
341
+ ref: HarnessSessionRefIface;
342
+ transport: AcpTransport.Http;
343
+ url: string;
344
+ headers: Record<string, string>;
345
+ resolveHeaders?: () => Promise<Record<string, string>>;
346
+ tls?: HarnessClientTlsIface;
347
+ } | {
348
+ ref: HarnessSessionRefIface;
349
+ transport: AcpTransport.Relay;
350
+ channel: string;
351
+ token: string;
352
+ } | {
353
+ ref: HarnessSessionRefIface;
354
+ transport: AcpTransport.Stdio;
355
+ command: string;
356
+ args: string[];
357
+ env: Record<string, string>;
358
+ };
359
+ export interface HarnessHealthIface {
360
+ ok: boolean;
361
+ detail?: string;
362
+ checkedAt: string;
363
+ }
364
+ export interface DescribeHarnessArgsIface {
365
+ config: JsonValue;
366
+ secrets: SecretReaderIface;
367
+ }
368
+ export interface HarnessIface {
369
+ describe(binding?: DescribeHarnessArgsIface): Promise<HarnessDescriptionIface>;
370
+ open(args: OpenHarnessSessionArgsIface): Promise<HarnessEndpointIface>;
371
+ resume(args: ResumeHarnessSessionArgsIface): Promise<HarnessEndpointIface>;
372
+ park(ref: HarnessSessionRefIface): Promise<void>;
373
+ close(ref: HarnessSessionRefIface, opts?: CloseHarnessSessionOptsIface): Promise<void>;
374
+ health(ref: HarnessSessionRefIface, context?: DescribeHarnessArgsIface): Promise<HarnessHealthIface>;
375
+ }
376
+ export interface CloseHarnessSessionOptsIface {
377
+ force?: boolean;
378
+ context?: DescribeHarnessArgsIface;
379
+ }
380
+ export interface HarnessModuleIface<Config> {
381
+ ref: ProviderRef;
382
+ harness: HarnessIface;
383
+ binding: (config: Config) => {
384
+ harness: ProviderRef;
385
+ config: JsonValue;
386
+ };
387
+ }
388
+ export interface DefinedHarnessBindingIface {
389
+ harness: ProviderRef;
390
+ config: JsonValue;
391
+ definedHarness: true;
392
+ }
393
+ export interface DefinedHarnessIface<Config> extends HarnessIface {
394
+ (config: Config): DefinedHarnessBindingIface;
395
+ }
396
+ export declare const defineHarness: <Config extends JsonValue = JsonValue>(implementation: HarnessIface) => DefinedHarnessIface<Config>;
397
+ export declare const describeConfigSchema: (description: HarnessDescriptionIface) => JsonSchema;