@tangle-network/agent-runtime 0.123.0 → 0.123.1

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.
Files changed (50) hide show
  1. package/dist/{activation-B7sTehZB.js → activation-DhWJ3p8N.js} +2 -2
  2. package/dist/{activation-B7sTehZB.js.map → activation-DhWJ3p8N.js.map} +1 -1
  3. package/dist/agent.d.ts +1 -1
  4. package/dist/agent.js +3 -3
  5. package/dist/{environment-provider-CY22kUQH.js → environment-provider-DqFS6FSZ.js} +3 -2
  6. package/dist/environment-provider-DqFS6FSZ.js.map +1 -0
  7. package/dist/{environment-provider-CEjwunXO.d.ts → environment-provider-PM9PeW_J.d.ts} +5 -1
  8. package/dist/environment-provider.d.ts +1 -1
  9. package/dist/environment-provider.js +1 -1
  10. package/dist/{improvement-cycle-BcwsSbT-.js → improvement-cycle-IJgCbKWQ.js} +5 -5
  11. package/dist/improvement-cycle-IJgCbKWQ.js.map +1 -0
  12. package/dist/{index-CKply5aj.d.ts → index-4NcThsDc.d.ts} +3 -3
  13. package/dist/{index-BKSzgMvA.d.ts → index-CQBioeAj.d.ts} +5 -5
  14. package/dist/{index-CyXinqJw.d.ts → index-xP27vtnt.d.ts} +2 -2
  15. package/dist/index.d.ts +5 -5
  16. package/dist/index.js +7 -7
  17. package/dist/intelligence.d.ts +1 -1
  18. package/dist/intelligence.js +4 -4
  19. package/dist/kernel.d.ts +2 -2
  20. package/dist/kernel.js +5 -5
  21. package/dist/{knowledge-Cuvb21T7.js → knowledge-BOHj6nGh.js} +3 -3
  22. package/dist/{knowledge-Cuvb21T7.js.map → knowledge-BOHj6nGh.js.map} +1 -1
  23. package/dist/knowledge.d.ts +1 -1
  24. package/dist/knowledge.js +1 -1
  25. package/dist/{loop-runner-bin-BjnNpN5m.d.ts → loop-runner-bin-DMnNxZHw.d.ts} +3 -3
  26. package/dist/{loop-runner-bin-Clhj8gy5.js → loop-runner-bin-DUM37LLw.js} +3 -3
  27. package/dist/{loop-runner-bin-Clhj8gy5.js.map → loop-runner-bin-DUM37LLw.js.map} +1 -1
  28. package/dist/loop-runner-bin.d.ts +1 -1
  29. package/dist/loop-runner-bin.js +1 -1
  30. package/dist/mcp/bin.js +2 -2
  31. package/dist/mcp/index.d.ts +2 -2
  32. package/dist/mcp/index.js +4 -4
  33. package/dist/{openai-tools-BwTsBfd-.js → openai-tools-Bm1SDJIp.js} +2 -2
  34. package/dist/{openai-tools-BwTsBfd-.js.map → openai-tools-Bm1SDJIp.js.map} +1 -1
  35. package/dist/primeintellect/index.d.ts +1 -1
  36. package/dist/{runtime-OI7oLLec.js → runtime-DZblIf3R.js} +9 -8
  37. package/dist/runtime-DZblIf3R.js.map +1 -0
  38. package/dist/{structural-rollout-C4Jv_7vt.js → structural-rollout-zY0oqQzO.js} +2 -2
  39. package/dist/{structural-rollout-C4Jv_7vt.js.map → structural-rollout-zY0oqQzO.js.map} +1 -1
  40. package/dist/{supervise-Dwq16u8n.js → supervise-Cx24b3lw.js} +34 -42
  41. package/dist/supervise-Cx24b3lw.js.map +1 -0
  42. package/dist/{supervisor-DjZ82HIB.js → supervisor-DpjO0Gmy.js} +67 -8
  43. package/dist/supervisor-DpjO0Gmy.js.map +1 -0
  44. package/dist/testing.js +9 -9
  45. package/package.json +1 -1
  46. package/dist/environment-provider-CY22kUQH.js.map +0 -1
  47. package/dist/improvement-cycle-BcwsSbT-.js.map +0 -1
  48. package/dist/runtime-OI7oLLec.js.map +0 -1
  49. package/dist/supervise-Dwq16u8n.js.map +0 -1
  50. package/dist/supervisor-DjZ82HIB.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { it as canonicalCandidateDocument, rt as canonicalCandidateDigest$1, st as immutableCandidateValue, ut as verifyCanonicalCandidateDocument } from "./prepare--8EvLqCr.js";
2
- import { C as agentImprovementTargetInput, S as agentImprovementTargetDigest, T as agentProfileImprovementStateDigest, c as requireSealedCandidateExperiment, d as verifyAgentImprovementActivation, f as verifyAgentImprovementProposal } from "./improvement-cycle-BcwsSbT-.js";
2
+ import { C as agentImprovementTargetInput, S as agentImprovementTargetDigest, T as agentProfileImprovementStateDigest, c as requireSealedCandidateExperiment, d as verifyAgentImprovementActivation, f as verifyAgentImprovementProposal } from "./improvement-cycle-IJgCbKWQ.js";
3
3
  import { agentImprovementActivationResultSchema, agentImprovementActivationSchema, agentProfileImprovementExperimentSchema } from "@tangle-network/agent-interface";
4
4
  //#region src/intelligence/activation.ts
5
5
  /** Create the exact result a product stores in the same transaction as its target write. */
@@ -201,4 +201,4 @@ function targetIdentity(target) {
201
201
  //#endregion
202
202
  export { executeAgentImprovementActivation as n, verifyAgentImprovementActivationResult as r, createAgentImprovementActivationResult as t };
203
203
 
204
- //# sourceMappingURL=activation-B7sTehZB.js.map
204
+ //# sourceMappingURL=activation-DhWJ3p8N.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"activation-B7sTehZB.js","names":["canonicalCandidateDigest"],"sources":["../src/intelligence/activation.ts"],"sourcesContent":["import type {\n AgentCandidateBundle,\n AgentCandidateExperiment,\n AgentImprovementActivation,\n AgentImprovementActivationOutcome,\n AgentImprovementActivationResult,\n AgentImprovementActivationTarget,\n AgentImprovementProposal,\n AgentImprovementReview,\n AgentImprovementSurface,\n AgentProfileImprovementChange,\n AgentProfileImprovementExperiment,\n Sha256Digest,\n} from '@tangle-network/agent-interface'\nimport {\n agentImprovementActivationResultSchema,\n agentImprovementActivationSchema,\n agentProfileImprovementExperimentSchema,\n} from '@tangle-network/agent-interface'\n\nimport {\n canonicalCandidateDigest,\n canonicalCandidateDocument,\n immutableCandidateValue,\n verifyCanonicalCandidateDocument,\n} from '../candidate-execution/digest'\nimport {\n requireSealedCandidateExperiment,\n verifyAgentImprovementActivation,\n verifyAgentImprovementProposal,\n} from './improvement-cycle'\nimport {\n agentImprovementTargetDigest,\n agentImprovementTargetInput,\n agentProfileImprovementStateDigest,\n} from './improvement-surfaces'\n\nexport interface CreateAgentImprovementActivationResultOptions {\n completedAt: string\n outcome: AgentImprovementActivationOutcome\n}\n\nexport interface AgentImprovementActivationTargetPlan extends AgentImprovementActivationTarget {\n desiredDigest: Sha256Digest\n /**\n * Exact measured input the product must apply to reach `desiredDigest`.\n * Transition surfaces such as code and knowledge are applied operations, so\n * their resulting state digest is not the digest of this input document.\n */\n desiredInput: unknown\n}\n\nexport type AgentProfileImprovementActivationOperation =\n | {\n kind: 'apply-change'\n changes: AgentProfileImprovementChange\n }\n | {\n /** The product must load its own saved state at `desiredStateDigest`. */\n kind: 'restore-state'\n }\n\nexport interface AgentProfileImprovementActivationTargetPlan\n extends AgentImprovementActivationTarget {\n desiredDigest: Sha256Digest\n desiredInput: AgentProfileImprovementActivationOperation\n}\n\nexport interface SealedCandidateActivationTransitionInput {\n kind: 'sealed-candidate'\n activation: AgentImprovementActivation\n candidateBundle: AgentCandidateBundle\n bundle: AgentCandidateBundle\n targets: [AgentImprovementActivationTargetPlan, ...AgentImprovementActivationTargetPlan[]]\n attemptedAt: string\n expired: boolean\n}\n\n/**\n * A measured profile change without raw profile bytes.\n * The product owns the private state lookup and atomic write.\n */\nexport interface ProfileImprovementActivationTransitionInput {\n kind: 'profile-improvement'\n activation: AgentImprovementActivation\n experiment: AgentProfileImprovementExperiment\n sourceStateDigest: Sha256Digest\n desiredStateDigest: Sha256Digest\n operation: AgentProfileImprovementActivationOperation\n targets: [\n AgentProfileImprovementActivationTargetPlan,\n ...AgentProfileImprovementActivationTargetPlan[],\n ]\n attemptedAt: string\n expired: boolean\n}\n\nexport type AgentImprovementActivationTransitionInput =\n | SealedCandidateActivationTransitionInput\n | ProfileImprovementActivationTransitionInput\n\nexport interface AgentImprovementActivationResultStore {\n load(idempotencyKey: Sha256Digest): Promise<unknown | undefined>\n putIfAbsent(result: AgentImprovementActivationResult): Promise<unknown>\n}\n\n/**\n * Product-owned or Runtime-composed transition.\n *\n * Implementations resolve a stored result for `activation.digest`, compare\n * every target, and make the write durably idempotent. Co-located targets store\n * the all-or-none write with its result. Other targets throw when result\n * storage fails so a retry can reconcile it. Runtime never invokes this write\n * function after authorization expires.\n */\nexport type AgentImprovementActivationTransition = (\n input: AgentImprovementActivationTransitionInput,\n) => Promise<unknown>\n\n/**\n * Target-read-only check for a prior exact write.\n * It may persist recovered result metadata, but must not change an activation target.\n * Return undefined only when no target write can have committed.\n */\nexport type AgentImprovementActivationReconciliation = (\n input: AgentImprovementActivationTransitionInput,\n) => Promise<unknown | undefined>\n\nexport interface ExecuteAgentImprovementActivationInput {\n proposal: AgentImprovementProposal\n review: AgentImprovementReview\n activation: AgentImprovementActivation\n}\n\nexport interface ExecuteAgentImprovementActivationOptions {\n transition: AgentImprovementActivationTransition\n reconcile?: AgentImprovementActivationReconciliation\n now?: () => Date\n}\n\n/** Create the exact result a product stores in the same transaction as its target write. */\nexport function createAgentImprovementActivationResult(\n transition: AgentImprovementActivationTransitionInput,\n options: CreateAgentImprovementActivationResultOptions,\n): AgentImprovementActivationResult {\n const activation = verifyCanonicalCandidateDocument(\n agentImprovementActivationSchema.parse(transition.activation),\n 'agent improvement activation',\n )\n assertTransitionInput(activation, transition)\n const result = agentImprovementActivationResultSchema.parse(\n canonicalCandidateDocument<AgentImprovementActivationResult>({\n kind: 'agent-improvement-activation-result',\n idempotencyKey: activation.digest,\n attemptedAt: transition.attemptedAt,\n completedAt: options.completedAt,\n outcome: options.outcome,\n }).value,\n )\n assertResultAgainstActivation(activation, result)\n assertOutcomeDesiredState(\n activation,\n result,\n new Map(transition.targets.map((target) => [targetIdentity(target), target.desiredDigest])),\n )\n return immutableCandidateValue(result)\n}\n\n/**\n * Recompute one historical activation result against the exact measured proposal and authority.\n * The result records that attempt; it is not a query of the target's current state.\n */\nexport function verifyAgentImprovementActivationResult(input: {\n proposal: unknown\n review: unknown\n activation: unknown\n result: unknown\n}): AgentImprovementActivationResult {\n const proposal = verifyAgentImprovementProposal(input.proposal)\n const activation = verifyAgentImprovementActivation(input)\n const result = verifyCanonicalCandidateDocument(\n agentImprovementActivationResultSchema.parse(input.result),\n 'agent improvement activation result',\n )\n assertResultAgainstActivation(activation, result)\n assertResultDesiredState(proposal, activation, result)\n return result\n}\n\n/** Validate and execute one product-owned activation transition. */\nexport async function executeAgentImprovementActivation(\n input: ExecuteAgentImprovementActivationInput,\n options: ExecuteAgentImprovementActivationOptions,\n): Promise<AgentImprovementActivationResult> {\n const proposal = verifyAgentImprovementProposal(input.proposal)\n const activation = verifyAgentImprovementActivation(input)\n const observedAt = (options.now ?? (() => new Date()))().toISOString()\n const attemptedAt =\n Date.parse(observedAt) < Date.parse(activation.authorizedAt)\n ? activation.authorizedAt\n : observedAt\n const expired = Date.parse(attemptedAt) >= Date.parse(activation.expiresAt)\n const transition = immutableCandidateValue<AgentImprovementActivationTransitionInput>(\n proposal.evaluation.kind === 'agent-improvement-measured-comparison'\n ? sealedCandidateTransition(proposal.evaluation.experiment, activation, attemptedAt, expired)\n : profileImprovementTransition(\n proposal.evaluation.experiment,\n activation,\n attemptedAt,\n expired,\n ),\n )\n\n if (transition.expired) {\n if (!options.reconcile) {\n return uncertainActivationResult(transition, 'RECONCILIATION_UNAVAILABLE')\n }\n let reconciled: unknown\n try {\n reconciled = await options.reconcile(transition)\n } catch {\n return uncertainActivationResult(transition, 'RECONCILIATION_THROW')\n }\n if (reconciled === undefined) {\n return createAgentImprovementActivationResult(transition, {\n completedAt: transition.attemptedAt,\n outcome: { status: 'expired' },\n })\n }\n try {\n return verifyAgentImprovementActivationResult({ ...input, result: reconciled })\n } catch {\n return uncertainActivationResult(transition, 'INVALID_RECONCILIATION')\n }\n }\n\n let rawResult: unknown\n try {\n rawResult = await options.transition(transition)\n } catch {\n return uncertainActivationResult(transition, 'TRANSITION_THROW')\n }\n try {\n return verifyAgentImprovementActivationResult({ ...input, result: rawResult })\n } catch {\n return uncertainActivationResult(transition, 'INVALID_RESULT')\n }\n}\n\nfunction sealedCandidateTransition(\n experiment: AgentCandidateExperiment,\n activation: AgentImprovementActivation,\n attemptedAt: string,\n expired: boolean,\n): SealedCandidateActivationTransitionInput {\n const targetArm = activation.intent === 'activate-candidate' ? 'candidate' : 'baseline'\n return {\n kind: 'sealed-candidate',\n activation,\n candidateBundle: experiment.candidate,\n bundle: experiment[targetArm],\n targets: activation.targets.map((target) => ({\n ...target,\n desiredDigest: agentImprovementTargetDigest(experiment, targetArm, target.surface),\n desiredInput: agentImprovementTargetInput(experiment[targetArm], target.surface),\n })) as SealedCandidateActivationTransitionInput['targets'],\n attemptedAt,\n expired,\n }\n}\n\nfunction profileImprovementTransition(\n experiment: AgentProfileImprovementExperiment,\n activation: AgentImprovementActivation,\n attemptedAt: string,\n expired: boolean,\n): ProfileImprovementActivationTransitionInput {\n const sourceArm = activation.intent === 'activate-candidate' ? 'baseline' : 'candidate'\n const targetArm = activation.intent === 'activate-candidate' ? 'candidate' : 'baseline'\n const operation = profileImprovementOperation(experiment, activation.intent)\n return {\n kind: 'profile-improvement',\n activation,\n experiment,\n sourceStateDigest: agentProfileImprovementStateDigest(experiment, sourceArm),\n desiredStateDigest: agentProfileImprovementStateDigest(experiment, targetArm),\n operation,\n targets: activation.targets.map((target) => ({\n ...target,\n desiredDigest: agentProfileImprovementStateDigest(experiment, targetArm),\n desiredInput: operation,\n })) as ProfileImprovementActivationTransitionInput['targets'],\n attemptedAt,\n expired,\n }\n}\n\nfunction profileImprovementOperation(\n experiment: AgentProfileImprovementExperiment,\n intent: AgentImprovementActivation['intent'],\n): AgentProfileImprovementActivationOperation {\n return intent === 'activate-candidate'\n ? { kind: 'apply-change', changes: experiment.change }\n : { kind: 'restore-state' }\n}\n\nfunction uncertainActivationResult(\n transition: AgentImprovementActivationTransitionInput,\n code: string,\n): AgentImprovementActivationResult {\n return createAgentImprovementActivationResult(transition, {\n completedAt: transition.attemptedAt,\n outcome: {\n status: 'indeterminate',\n code,\n message: 'The product transition did not return a trustworthy commit result.',\n },\n })\n}\n\nfunction assertTransitionInput(\n activation: AgentImprovementActivation,\n transition: AgentImprovementActivationTransitionInput,\n): void {\n if (transition.kind === 'sealed-candidate') {\n assertSealedCandidateTransitionInput(activation, transition)\n return\n }\n assertProfileImprovementTransitionInput(activation, transition)\n}\n\nfunction assertSealedCandidateTransitionInput(\n activation: AgentImprovementActivation,\n transition: SealedCandidateActivationTransitionInput,\n): void {\n assertAuthorizedTransitionTargets(activation, transition.targets)\n const desiredInputsMatch = transition.targets.every(\n (target) =>\n canonicalCandidateDigest(target.desiredInput) ===\n canonicalCandidateDigest(agentImprovementTargetInput(transition.bundle, target.surface)),\n )\n if (\n transition.expired !== Date.parse(transition.attemptedAt) >= Date.parse(activation.expiresAt) ||\n transition.candidateBundle.digest !== activation.candidateDigest ||\n !desiredInputsMatch ||\n (activation.intent === 'activate-candidate' &&\n transition.bundle.digest !== transition.candidateBundle.digest)\n ) {\n throw new Error('activation transition does not match its authorization')\n }\n}\n\nfunction assertProfileImprovementTransitionInput(\n activation: AgentImprovementActivation,\n transition: ProfileImprovementActivationTransitionInput,\n): void {\n assertAuthorizedTransitionTargets(activation, transition.targets)\n const targetsAgentProfile = activation.targets.some(\n (target) => target.surface === 'agent-profile',\n )\n const experiment = agentProfileImprovementExperimentSchema.parse(transition.experiment)\n const sourceArm = activation.intent === 'activate-candidate' ? 'baseline' : 'candidate'\n const targetArm = activation.intent === 'activate-candidate' ? 'candidate' : 'baseline'\n const sourceStateDigest = agentProfileImprovementStateDigest(experiment, sourceArm)\n const desiredStateDigest = agentProfileImprovementStateDigest(experiment, targetArm)\n const operation = profileImprovementOperation(experiment, activation.intent)\n const targetsMatch = transition.targets.every(\n (target) =>\n target.expectedBaseDigest === sourceStateDigest &&\n target.desiredDigest === desiredStateDigest &&\n canonicalCandidateDigest(target.desiredInput) === canonicalCandidateDigest(operation),\n )\n if (\n transition.expired !== Date.parse(transition.attemptedAt) >= Date.parse(activation.expiresAt) ||\n experiment.digest !== activation.experimentDigest ||\n experiment.candidate.stateDigest !== activation.candidateDigest ||\n (targetsAgentProfile &&\n (activation.executionRef === undefined ||\n canonicalCandidateDigest(activation.executionRef) !==\n canonicalCandidateDigest(experiment.executionRef))) ||\n transition.sourceStateDigest !== sourceStateDigest ||\n transition.desiredStateDigest !== desiredStateDigest ||\n canonicalCandidateDigest(transition.operation) !== canonicalCandidateDigest(operation) ||\n !targetsMatch\n ) {\n throw new Error('activation transition does not match its authorization')\n }\n}\n\nfunction assertAuthorizedTransitionTargets(\n activation: AgentImprovementActivation,\n targets: readonly AgentImprovementActivationTargetPlan[],\n): void {\n const authorized = targetMap(activation.targets)\n const planned = targetMap(targets)\n if (\n authorized.size !== planned.size ||\n [...authorized.entries()].some(\n ([identity, target]) =>\n planned.get(identity)?.expectedBaseDigest !== target.expectedBaseDigest,\n )\n ) {\n throw new Error('activation transition does not match its authorization')\n }\n}\n\nfunction assertResultAgainstActivation(\n activation: AgentImprovementActivation,\n result: AgentImprovementActivationResult,\n): void {\n const attemptedAt = Date.parse(result.attemptedAt)\n const completedAt = Date.parse(result.completedAt)\n const expiresAt = Date.parse(activation.expiresAt)\n if (\n result.idempotencyKey !== activation.digest ||\n attemptedAt < Date.parse(activation.authorizedAt) ||\n completedAt < attemptedAt\n ) {\n throw new Error('activation result does not bind its authorization')\n }\n const expired = attemptedAt >= expiresAt\n if (\n (result.outcome.status === 'expired' && !expired) ||\n (expired && !['expired', 'indeterminate', 'already-applied'].includes(result.outcome.status))\n ) {\n throw new Error('activation result does not honor its authorization expiry')\n }\n if (!('targets' in result.outcome)) return\n const authorized = targetMap(activation.targets)\n const observed = new Set(result.outcome.targets.map(targetIdentity))\n if (\n authorized.size !== observed.size ||\n [...authorized.keys()].some((identity) => !observed.has(identity))\n ) {\n throw new Error('activation result must cover every authorized target exactly once')\n }\n if (\n result.outcome.status === 'applied' &&\n result.outcome.targets.some(\n (target) =>\n target.beforeDigest !== authorized.get(targetIdentity(target))?.expectedBaseDigest,\n )\n ) {\n throw new Error('applied activation did not start from its authorized base state')\n }\n}\n\nfunction assertResultDesiredState(\n proposal: AgentImprovementProposal,\n activation: AgentImprovementActivation,\n result: AgentImprovementActivationResult,\n): void {\n if (!('targets' in result.outcome)) return\n const targetArm = activation.intent === 'activate-candidate' ? 'candidate' : 'baseline'\n const desiredStateDigest =\n proposal.evaluation.kind === 'agent-profile-improvement-measured-comparison'\n ? agentProfileImprovementStateDigest(proposal.evaluation.experiment, targetArm)\n : undefined\n const desired = new Map(\n activation.targets.map((target) => [\n targetIdentity(target),\n desiredStateDigest ??\n agentImprovementTargetDigest(\n requireSealedCandidateExperiment(proposal),\n targetArm,\n target.surface,\n ),\n ]),\n )\n assertOutcomeDesiredState(activation, result, desired)\n}\n\nfunction assertOutcomeDesiredState(\n activation: AgentImprovementActivation,\n result: AgentImprovementActivationResult,\n desired: ReadonlyMap<string, Sha256Digest>,\n): void {\n if (!('targets' in result.outcome)) return\n if (result.outcome.status === 'applied') {\n if (\n result.outcome.targets.some(\n (target) => target.afterDigest !== desired.get(targetIdentity(target)),\n )\n ) {\n throw new Error('applied activation does not match the requested bundle')\n }\n return\n }\n const allDesired = result.outcome.targets.every(\n (target) => target.currentDigest === desired.get(targetIdentity(target)),\n )\n if (result.outcome.status === 'already-applied') {\n if (!allDesired) throw new Error('already-applied activation is not at the requested state')\n return\n }\n const authorized = targetMap(activation.targets)\n const hasStaleTarget = result.outcome.targets.some(\n (target) => target.currentDigest !== authorized.get(targetIdentity(target))?.expectedBaseDigest,\n )\n if (allDesired || !hasStaleTarget) {\n throw new Error('activation conflict does not identify stale target state')\n }\n}\n\nfunction targetMap<T extends { surface: AgentImprovementSurface; identity: string }>(\n targets: readonly T[],\n): Map<string, T> {\n return new Map(targets.map((target) => [targetIdentity(target), target]))\n}\n\nfunction targetIdentity(target: { surface: AgentImprovementSurface; identity: string }): string {\n return `${target.surface}\\u0000${target.identity}`\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"activation-DhWJ3p8N.js","names":["canonicalCandidateDigest"],"sources":["../src/intelligence/activation.ts"],"sourcesContent":["import type {\n AgentCandidateBundle,\n AgentCandidateExperiment,\n AgentImprovementActivation,\n AgentImprovementActivationOutcome,\n AgentImprovementActivationResult,\n AgentImprovementActivationTarget,\n AgentImprovementProposal,\n AgentImprovementReview,\n AgentImprovementSurface,\n AgentProfileImprovementChange,\n AgentProfileImprovementExperiment,\n Sha256Digest,\n} from '@tangle-network/agent-interface'\nimport {\n agentImprovementActivationResultSchema,\n agentImprovementActivationSchema,\n agentProfileImprovementExperimentSchema,\n} from '@tangle-network/agent-interface'\n\nimport {\n canonicalCandidateDigest,\n canonicalCandidateDocument,\n immutableCandidateValue,\n verifyCanonicalCandidateDocument,\n} from '../candidate-execution/digest'\nimport {\n requireSealedCandidateExperiment,\n verifyAgentImprovementActivation,\n verifyAgentImprovementProposal,\n} from './improvement-cycle'\nimport {\n agentImprovementTargetDigest,\n agentImprovementTargetInput,\n agentProfileImprovementStateDigest,\n} from './improvement-surfaces'\n\nexport interface CreateAgentImprovementActivationResultOptions {\n completedAt: string\n outcome: AgentImprovementActivationOutcome\n}\n\nexport interface AgentImprovementActivationTargetPlan extends AgentImprovementActivationTarget {\n desiredDigest: Sha256Digest\n /**\n * Exact measured input the product must apply to reach `desiredDigest`.\n * Transition surfaces such as code and knowledge are applied operations, so\n * their resulting state digest is not the digest of this input document.\n */\n desiredInput: unknown\n}\n\nexport type AgentProfileImprovementActivationOperation =\n | {\n kind: 'apply-change'\n changes: AgentProfileImprovementChange\n }\n | {\n /** The product must load its own saved state at `desiredStateDigest`. */\n kind: 'restore-state'\n }\n\nexport interface AgentProfileImprovementActivationTargetPlan\n extends AgentImprovementActivationTarget {\n desiredDigest: Sha256Digest\n desiredInput: AgentProfileImprovementActivationOperation\n}\n\nexport interface SealedCandidateActivationTransitionInput {\n kind: 'sealed-candidate'\n activation: AgentImprovementActivation\n candidateBundle: AgentCandidateBundle\n bundle: AgentCandidateBundle\n targets: [AgentImprovementActivationTargetPlan, ...AgentImprovementActivationTargetPlan[]]\n attemptedAt: string\n expired: boolean\n}\n\n/**\n * A measured profile change without raw profile bytes.\n * The product owns the private state lookup and atomic write.\n */\nexport interface ProfileImprovementActivationTransitionInput {\n kind: 'profile-improvement'\n activation: AgentImprovementActivation\n experiment: AgentProfileImprovementExperiment\n sourceStateDigest: Sha256Digest\n desiredStateDigest: Sha256Digest\n operation: AgentProfileImprovementActivationOperation\n targets: [\n AgentProfileImprovementActivationTargetPlan,\n ...AgentProfileImprovementActivationTargetPlan[],\n ]\n attemptedAt: string\n expired: boolean\n}\n\nexport type AgentImprovementActivationTransitionInput =\n | SealedCandidateActivationTransitionInput\n | ProfileImprovementActivationTransitionInput\n\nexport interface AgentImprovementActivationResultStore {\n load(idempotencyKey: Sha256Digest): Promise<unknown | undefined>\n putIfAbsent(result: AgentImprovementActivationResult): Promise<unknown>\n}\n\n/**\n * Product-owned or Runtime-composed transition.\n *\n * Implementations resolve a stored result for `activation.digest`, compare\n * every target, and make the write durably idempotent. Co-located targets store\n * the all-or-none write with its result. Other targets throw when result\n * storage fails so a retry can reconcile it. Runtime never invokes this write\n * function after authorization expires.\n */\nexport type AgentImprovementActivationTransition = (\n input: AgentImprovementActivationTransitionInput,\n) => Promise<unknown>\n\n/**\n * Target-read-only check for a prior exact write.\n * It may persist recovered result metadata, but must not change an activation target.\n * Return undefined only when no target write can have committed.\n */\nexport type AgentImprovementActivationReconciliation = (\n input: AgentImprovementActivationTransitionInput,\n) => Promise<unknown | undefined>\n\nexport interface ExecuteAgentImprovementActivationInput {\n proposal: AgentImprovementProposal\n review: AgentImprovementReview\n activation: AgentImprovementActivation\n}\n\nexport interface ExecuteAgentImprovementActivationOptions {\n transition: AgentImprovementActivationTransition\n reconcile?: AgentImprovementActivationReconciliation\n now?: () => Date\n}\n\n/** Create the exact result a product stores in the same transaction as its target write. */\nexport function createAgentImprovementActivationResult(\n transition: AgentImprovementActivationTransitionInput,\n options: CreateAgentImprovementActivationResultOptions,\n): AgentImprovementActivationResult {\n const activation = verifyCanonicalCandidateDocument(\n agentImprovementActivationSchema.parse(transition.activation),\n 'agent improvement activation',\n )\n assertTransitionInput(activation, transition)\n const result = agentImprovementActivationResultSchema.parse(\n canonicalCandidateDocument<AgentImprovementActivationResult>({\n kind: 'agent-improvement-activation-result',\n idempotencyKey: activation.digest,\n attemptedAt: transition.attemptedAt,\n completedAt: options.completedAt,\n outcome: options.outcome,\n }).value,\n )\n assertResultAgainstActivation(activation, result)\n assertOutcomeDesiredState(\n activation,\n result,\n new Map(transition.targets.map((target) => [targetIdentity(target), target.desiredDigest])),\n )\n return immutableCandidateValue(result)\n}\n\n/**\n * Recompute one historical activation result against the exact measured proposal and authority.\n * The result records that attempt; it is not a query of the target's current state.\n */\nexport function verifyAgentImprovementActivationResult(input: {\n proposal: unknown\n review: unknown\n activation: unknown\n result: unknown\n}): AgentImprovementActivationResult {\n const proposal = verifyAgentImprovementProposal(input.proposal)\n const activation = verifyAgentImprovementActivation(input)\n const result = verifyCanonicalCandidateDocument(\n agentImprovementActivationResultSchema.parse(input.result),\n 'agent improvement activation result',\n )\n assertResultAgainstActivation(activation, result)\n assertResultDesiredState(proposal, activation, result)\n return result\n}\n\n/** Validate and execute one product-owned activation transition. */\nexport async function executeAgentImprovementActivation(\n input: ExecuteAgentImprovementActivationInput,\n options: ExecuteAgentImprovementActivationOptions,\n): Promise<AgentImprovementActivationResult> {\n const proposal = verifyAgentImprovementProposal(input.proposal)\n const activation = verifyAgentImprovementActivation(input)\n const observedAt = (options.now ?? (() => new Date()))().toISOString()\n const attemptedAt =\n Date.parse(observedAt) < Date.parse(activation.authorizedAt)\n ? activation.authorizedAt\n : observedAt\n const expired = Date.parse(attemptedAt) >= Date.parse(activation.expiresAt)\n const transition = immutableCandidateValue<AgentImprovementActivationTransitionInput>(\n proposal.evaluation.kind === 'agent-improvement-measured-comparison'\n ? sealedCandidateTransition(proposal.evaluation.experiment, activation, attemptedAt, expired)\n : profileImprovementTransition(\n proposal.evaluation.experiment,\n activation,\n attemptedAt,\n expired,\n ),\n )\n\n if (transition.expired) {\n if (!options.reconcile) {\n return uncertainActivationResult(transition, 'RECONCILIATION_UNAVAILABLE')\n }\n let reconciled: unknown\n try {\n reconciled = await options.reconcile(transition)\n } catch {\n return uncertainActivationResult(transition, 'RECONCILIATION_THROW')\n }\n if (reconciled === undefined) {\n return createAgentImprovementActivationResult(transition, {\n completedAt: transition.attemptedAt,\n outcome: { status: 'expired' },\n })\n }\n try {\n return verifyAgentImprovementActivationResult({ ...input, result: reconciled })\n } catch {\n return uncertainActivationResult(transition, 'INVALID_RECONCILIATION')\n }\n }\n\n let rawResult: unknown\n try {\n rawResult = await options.transition(transition)\n } catch {\n return uncertainActivationResult(transition, 'TRANSITION_THROW')\n }\n try {\n return verifyAgentImprovementActivationResult({ ...input, result: rawResult })\n } catch {\n return uncertainActivationResult(transition, 'INVALID_RESULT')\n }\n}\n\nfunction sealedCandidateTransition(\n experiment: AgentCandidateExperiment,\n activation: AgentImprovementActivation,\n attemptedAt: string,\n expired: boolean,\n): SealedCandidateActivationTransitionInput {\n const targetArm = activation.intent === 'activate-candidate' ? 'candidate' : 'baseline'\n return {\n kind: 'sealed-candidate',\n activation,\n candidateBundle: experiment.candidate,\n bundle: experiment[targetArm],\n targets: activation.targets.map((target) => ({\n ...target,\n desiredDigest: agentImprovementTargetDigest(experiment, targetArm, target.surface),\n desiredInput: agentImprovementTargetInput(experiment[targetArm], target.surface),\n })) as SealedCandidateActivationTransitionInput['targets'],\n attemptedAt,\n expired,\n }\n}\n\nfunction profileImprovementTransition(\n experiment: AgentProfileImprovementExperiment,\n activation: AgentImprovementActivation,\n attemptedAt: string,\n expired: boolean,\n): ProfileImprovementActivationTransitionInput {\n const sourceArm = activation.intent === 'activate-candidate' ? 'baseline' : 'candidate'\n const targetArm = activation.intent === 'activate-candidate' ? 'candidate' : 'baseline'\n const operation = profileImprovementOperation(experiment, activation.intent)\n return {\n kind: 'profile-improvement',\n activation,\n experiment,\n sourceStateDigest: agentProfileImprovementStateDigest(experiment, sourceArm),\n desiredStateDigest: agentProfileImprovementStateDigest(experiment, targetArm),\n operation,\n targets: activation.targets.map((target) => ({\n ...target,\n desiredDigest: agentProfileImprovementStateDigest(experiment, targetArm),\n desiredInput: operation,\n })) as ProfileImprovementActivationTransitionInput['targets'],\n attemptedAt,\n expired,\n }\n}\n\nfunction profileImprovementOperation(\n experiment: AgentProfileImprovementExperiment,\n intent: AgentImprovementActivation['intent'],\n): AgentProfileImprovementActivationOperation {\n return intent === 'activate-candidate'\n ? { kind: 'apply-change', changes: experiment.change }\n : { kind: 'restore-state' }\n}\n\nfunction uncertainActivationResult(\n transition: AgentImprovementActivationTransitionInput,\n code: string,\n): AgentImprovementActivationResult {\n return createAgentImprovementActivationResult(transition, {\n completedAt: transition.attemptedAt,\n outcome: {\n status: 'indeterminate',\n code,\n message: 'The product transition did not return a trustworthy commit result.',\n },\n })\n}\n\nfunction assertTransitionInput(\n activation: AgentImprovementActivation,\n transition: AgentImprovementActivationTransitionInput,\n): void {\n if (transition.kind === 'sealed-candidate') {\n assertSealedCandidateTransitionInput(activation, transition)\n return\n }\n assertProfileImprovementTransitionInput(activation, transition)\n}\n\nfunction assertSealedCandidateTransitionInput(\n activation: AgentImprovementActivation,\n transition: SealedCandidateActivationTransitionInput,\n): void {\n assertAuthorizedTransitionTargets(activation, transition.targets)\n const desiredInputsMatch = transition.targets.every(\n (target) =>\n canonicalCandidateDigest(target.desiredInput) ===\n canonicalCandidateDigest(agentImprovementTargetInput(transition.bundle, target.surface)),\n )\n if (\n transition.expired !== Date.parse(transition.attemptedAt) >= Date.parse(activation.expiresAt) ||\n transition.candidateBundle.digest !== activation.candidateDigest ||\n !desiredInputsMatch ||\n (activation.intent === 'activate-candidate' &&\n transition.bundle.digest !== transition.candidateBundle.digest)\n ) {\n throw new Error('activation transition does not match its authorization')\n }\n}\n\nfunction assertProfileImprovementTransitionInput(\n activation: AgentImprovementActivation,\n transition: ProfileImprovementActivationTransitionInput,\n): void {\n assertAuthorizedTransitionTargets(activation, transition.targets)\n const targetsAgentProfile = activation.targets.some(\n (target) => target.surface === 'agent-profile',\n )\n const experiment = agentProfileImprovementExperimentSchema.parse(transition.experiment)\n const sourceArm = activation.intent === 'activate-candidate' ? 'baseline' : 'candidate'\n const targetArm = activation.intent === 'activate-candidate' ? 'candidate' : 'baseline'\n const sourceStateDigest = agentProfileImprovementStateDigest(experiment, sourceArm)\n const desiredStateDigest = agentProfileImprovementStateDigest(experiment, targetArm)\n const operation = profileImprovementOperation(experiment, activation.intent)\n const targetsMatch = transition.targets.every(\n (target) =>\n target.expectedBaseDigest === sourceStateDigest &&\n target.desiredDigest === desiredStateDigest &&\n canonicalCandidateDigest(target.desiredInput) === canonicalCandidateDigest(operation),\n )\n if (\n transition.expired !== Date.parse(transition.attemptedAt) >= Date.parse(activation.expiresAt) ||\n experiment.digest !== activation.experimentDigest ||\n experiment.candidate.stateDigest !== activation.candidateDigest ||\n (targetsAgentProfile &&\n (activation.executionRef === undefined ||\n canonicalCandidateDigest(activation.executionRef) !==\n canonicalCandidateDigest(experiment.executionRef))) ||\n transition.sourceStateDigest !== sourceStateDigest ||\n transition.desiredStateDigest !== desiredStateDigest ||\n canonicalCandidateDigest(transition.operation) !== canonicalCandidateDigest(operation) ||\n !targetsMatch\n ) {\n throw new Error('activation transition does not match its authorization')\n }\n}\n\nfunction assertAuthorizedTransitionTargets(\n activation: AgentImprovementActivation,\n targets: readonly AgentImprovementActivationTargetPlan[],\n): void {\n const authorized = targetMap(activation.targets)\n const planned = targetMap(targets)\n if (\n authorized.size !== planned.size ||\n [...authorized.entries()].some(\n ([identity, target]) =>\n planned.get(identity)?.expectedBaseDigest !== target.expectedBaseDigest,\n )\n ) {\n throw new Error('activation transition does not match its authorization')\n }\n}\n\nfunction assertResultAgainstActivation(\n activation: AgentImprovementActivation,\n result: AgentImprovementActivationResult,\n): void {\n const attemptedAt = Date.parse(result.attemptedAt)\n const completedAt = Date.parse(result.completedAt)\n const expiresAt = Date.parse(activation.expiresAt)\n if (\n result.idempotencyKey !== activation.digest ||\n attemptedAt < Date.parse(activation.authorizedAt) ||\n completedAt < attemptedAt\n ) {\n throw new Error('activation result does not bind its authorization')\n }\n const expired = attemptedAt >= expiresAt\n if (\n (result.outcome.status === 'expired' && !expired) ||\n (expired && !['expired', 'indeterminate', 'already-applied'].includes(result.outcome.status))\n ) {\n throw new Error('activation result does not honor its authorization expiry')\n }\n if (!('targets' in result.outcome)) return\n const authorized = targetMap(activation.targets)\n const observed = new Set(result.outcome.targets.map(targetIdentity))\n if (\n authorized.size !== observed.size ||\n [...authorized.keys()].some((identity) => !observed.has(identity))\n ) {\n throw new Error('activation result must cover every authorized target exactly once')\n }\n if (\n result.outcome.status === 'applied' &&\n result.outcome.targets.some(\n (target) =>\n target.beforeDigest !== authorized.get(targetIdentity(target))?.expectedBaseDigest,\n )\n ) {\n throw new Error('applied activation did not start from its authorized base state')\n }\n}\n\nfunction assertResultDesiredState(\n proposal: AgentImprovementProposal,\n activation: AgentImprovementActivation,\n result: AgentImprovementActivationResult,\n): void {\n if (!('targets' in result.outcome)) return\n const targetArm = activation.intent === 'activate-candidate' ? 'candidate' : 'baseline'\n const desiredStateDigest =\n proposal.evaluation.kind === 'agent-profile-improvement-measured-comparison'\n ? agentProfileImprovementStateDigest(proposal.evaluation.experiment, targetArm)\n : undefined\n const desired = new Map(\n activation.targets.map((target) => [\n targetIdentity(target),\n desiredStateDigest ??\n agentImprovementTargetDigest(\n requireSealedCandidateExperiment(proposal),\n targetArm,\n target.surface,\n ),\n ]),\n )\n assertOutcomeDesiredState(activation, result, desired)\n}\n\nfunction assertOutcomeDesiredState(\n activation: AgentImprovementActivation,\n result: AgentImprovementActivationResult,\n desired: ReadonlyMap<string, Sha256Digest>,\n): void {\n if (!('targets' in result.outcome)) return\n if (result.outcome.status === 'applied') {\n if (\n result.outcome.targets.some(\n (target) => target.afterDigest !== desired.get(targetIdentity(target)),\n )\n ) {\n throw new Error('applied activation does not match the requested bundle')\n }\n return\n }\n const allDesired = result.outcome.targets.every(\n (target) => target.currentDigest === desired.get(targetIdentity(target)),\n )\n if (result.outcome.status === 'already-applied') {\n if (!allDesired) throw new Error('already-applied activation is not at the requested state')\n return\n }\n const authorized = targetMap(activation.targets)\n const hasStaleTarget = result.outcome.targets.some(\n (target) => target.currentDigest !== authorized.get(targetIdentity(target))?.expectedBaseDigest,\n )\n if (allDesired || !hasStaleTarget) {\n throw new Error('activation conflict does not identify stale target state')\n }\n}\n\nfunction targetMap<T extends { surface: AgentImprovementSurface; identity: string }>(\n targets: readonly T[],\n): Map<string, T> {\n return new Map(targets.map((target) => [targetIdentity(target), target]))\n}\n\nfunction targetIdentity(target: { surface: AgentImprovementSurface; identity: string }): string {\n return `${target.surface}\\u0000${target.identity}`\n}\n"],"mappings":"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"}
package/dist/agent.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { x as RuntimeStreamEvent } from "./types-C9j4qg6l.js";
2
2
  import { a as createSurfaceImprovementProposer, c as SurfaceValidationIssue, d as validateSurfaces, i as SurfaceImprovementEdit, l as renderSurfaceIssues, n as DraftPatchInput, o as AgentSurfaces, r as DraftPatchOutput, s as ResolvedSurface, t as CreateSurfaceImprovementProposerOptions, u as resolveSubjectPath } from "./improvement-adapter-D5gwwoXQ.js";
3
- import { $f as defineProfileMaterializationContract, Gf as CanonicalAgentProfileMaterializationAxis, Hf as AGENT_PROFILE_MATERIALIZATION_AXES, Jf as ProfileMaterializationContract, Kf as DefineProfileMaterializationContractOptions, Qf as controlProfileMaterialization, Uf as AgentProfileMaterializationAxis, Wf as AssertProfileMaterializationOptions, Xf as ValidateProfileMaterializationOptions, Yf as ProfileMaterializationIssue, Zf as assertProfileMaterialization, ap as promptResourceProfileMaterialization, cp as validateProfileMaterialization, ep as fullProfileMaterialization, ip as promptOnlyProfileMaterialization, lp as worktreeCliProfileMaterialization, np as promptControlProfileMaterialization, op as renderProfileMaterializationIssues, qf as KnownAgentProfileMaterializationAxis, rp as promptModelProfileMaterialization, sp as sandboxActProfileMaterialization, tp as profileMaterializationAxes } from "./index-CyXinqJw.js";
3
+ import { $f as defineProfileMaterializationContract, Gf as CanonicalAgentProfileMaterializationAxis, Hf as AGENT_PROFILE_MATERIALIZATION_AXES, Jf as ProfileMaterializationContract, Kf as DefineProfileMaterializationContractOptions, Qf as controlProfileMaterialization, Uf as AgentProfileMaterializationAxis, Wf as AssertProfileMaterializationOptions, Xf as ValidateProfileMaterializationOptions, Yf as ProfileMaterializationIssue, Zf as assertProfileMaterialization, ap as promptResourceProfileMaterialization, cp as validateProfileMaterialization, ep as fullProfileMaterialization, ip as promptOnlyProfileMaterialization, lp as worktreeCliProfileMaterialization, np as promptControlProfileMaterialization, op as renderProfileMaterializationIssues, qf as KnownAgentProfileMaterializationAxis, rp as promptModelProfileMaterialization, sp as sandboxActProfileMaterialization, tp as profileMaterializationAxes } from "./index-xP27vtnt.js";
4
4
  import { E as SandboxClient, t as AgentRunSpec, w as OutputAdapter } from "./types-DnNGJ5Gz.js";
5
5
  import { TraceAnalystDefinition } from "@tangle-network/agent-eval";
6
6
  import { AgentProfile as AgentProfile$1, AgentProfileFileMount, AgentProfileMcpServer } from "@tangle-network/agent-interface";
package/dist/agent.js CHANGED
@@ -1,7 +1,7 @@
1
- import { At as controlProfileMaterialization, Bt as validateProfileMaterialization, Ft as promptModelProfileMaterialization, It as promptOnlyProfileMaterialization, Lt as promptResourceProfileMaterialization, Mt as fullProfileMaterialization, Nt as profileMaterializationAxes, Ot as AGENT_PROFILE_MATERIALIZATION_AXES, Pt as promptControlProfileMaterialization, Rt as renderProfileMaterializationIssues, Vt as worktreeCliProfileMaterialization, jt as defineProfileMaterializationContract, kt as assertProfileMaterialization, zt as sandboxActProfileMaterialization } from "./supervisor-DjZ82HIB.js";
2
- import "./runtime-OI7oLLec.js";
1
+ import { At as controlProfileMaterialization, Bt as validateProfileMaterialization, Ft as promptModelProfileMaterialization, It as promptOnlyProfileMaterialization, Lt as promptResourceProfileMaterialization, Mt as fullProfileMaterialization, Nt as profileMaterializationAxes, Ot as AGENT_PROFILE_MATERIALIZATION_AXES, Pt as promptControlProfileMaterialization, Rt as renderProfileMaterializationIssues, Vt as worktreeCliProfileMaterialization, jt as defineProfileMaterializationContract, kt as assertProfileMaterialization, zt as sandboxActProfileMaterialization } from "./supervisor-DpjO0Gmy.js";
2
+ import "./runtime-DZblIf3R.js";
3
3
  import { r as mapSandboxEvent } from "./sandbox-events-Yhd1GYWl.js";
4
- import { At as createSandboxForSpec } from "./supervise-Dwq16u8n.js";
4
+ import { At as createSandboxForSpec } from "./supervise-Cx24b3lw.js";
5
5
  import { createHash } from "node:crypto";
6
6
  import { existsSync, readFileSync, statSync } from "node:fs";
7
7
  import { isAbsolute, join, relative, resolve, sep } from "node:path";
@@ -517,9 +517,10 @@ function createProviderExecutor(provider, profile, ctx, options) {
517
517
  async function* streamProviderExecutor(args) {
518
518
  const started = Date.now();
519
519
  const linked = mergeAbortSignals(args.signal, args.controller.signal);
520
+ const createProfile = args.options.profileForCreate?.(args.profile) ?? args.profile;
520
521
  const environment = await args.provider.create({
521
522
  ...args.options.defaults ?? {},
522
- profile: args.profile,
523
+ profile: createProfile,
523
524
  signal: linked
524
525
  });
525
526
  args.onEnvironment(environment);
@@ -1274,4 +1275,4 @@ function hasExec(box) {
1274
1275
  //#endregion
1275
1276
  export { sandboxClientAsProvider as a, resolveAgentEnvironmentProvider as i, providerAsExecutor as n, createTangleSandboxExactProcessProvider as o, providerAsSandboxClient as r, createAgentEnvironmentProviderRegistry as t };
1276
1277
 
1277
- //# sourceMappingURL=environment-provider-CY22kUQH.js.map
1278
+ //# sourceMappingURL=environment-provider-DqFS6FSZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-provider-DqFS6FSZ.js","names":[],"sources":["../src/runtime/tangle-sandbox-exact-process-provider.ts","../src/runtime/environment-provider.ts"],"sourcesContent":["import { isDeepStrictEqual } from 'node:util'\n\nimport type { AgentCandidateTermination } from '@tangle-network/agent-interface'\nimport type {\n AgentEnvironmentCapabilities,\n AgentEnvironmentProvider,\n AgentExactProcess,\n AgentExactProcessEnvironment,\n AgentExactProcessEnvironmentQuery,\n AgentExactProcessProvider,\n AgentExactProcessStatus,\n CreateAgentExactProcessEnvironmentInput,\n} from '@tangle-network/agent-interface/environment-provider'\nimport type {\n Process,\n ProcessStatus,\n Sandbox,\n SandboxInstance,\n SandboxResources,\n} from '@tangle-network/sandbox'\n\nexport type SandboxControlClient = Pick<Sandbox, 'create' | 'get' | 'list'>\n\ntype ExactSandboxEgressPolicy =\n | { mode: 'blocked' }\n | { mode: 'strict'; allowDomains: string[]; includeImplicitDomains: false }\n\nexport interface CreateTangleSandboxExactProcessProviderOptions {\n name?: string\n}\n\nconst exactProcessProviderMarker = 'agent-runtime.exact-process-provider'\nconst exactProcessEgressMarker = 'agent-runtime.exact-process-egress'\n\n/**\n * Adapt Tangle Sandbox's managed control runtime to Runtime's exact-process provider.\n *\n * The adapter deliberately exposes no ordinary agent environment: an exact experiment\n * must start a fresh Sandbox with no managed agent and launch its declared argv directly.\n */\nexport function createTangleSandboxExactProcessProvider(\n client: SandboxControlClient,\n options: CreateTangleSandboxExactProcessProviderOptions = {},\n): AgentEnvironmentProvider {\n const name = options.name ?? 'tangle-sandbox-exact-process'\n if (!name.trim()) throw new Error('Tangle Sandbox exact-process provider name must not be empty')\n\n const exactProcess: AgentExactProcessProvider = {\n async create(input: CreateAgentExactProcessEnvironmentInput) {\n throwIfAborted(input.signal)\n assertNoProviderOptions(input.providerOptions)\n const egressPolicy = sandboxEgressPolicy(input.egress)\n const metadata = exactMetadata(input.metadata, name, egressPolicy)\n const sandbox = await client.create(\n {\n environment: requiredText(input.image, 'exact-process image'),\n agent: false,\n bare: false,\n ephemeral: true,\n egressPolicy,\n resources: sandboxResources(input),\n maxLifetimeSeconds: sandboxLifetimeSeconds(input.maxLifetimeMs),\n metadata,\n idempotencyKey: requiredText(input.idempotencyKey, 'exact-process idempotency key'),\n },\n {\n ...(input.provisionTimeoutMs === undefined\n ? {}\n : { timeoutMs: positiveInteger(input.provisionTimeoutMs, 'provision timeout') }),\n ...(input.signal === undefined ? {} : { signal: input.signal }),\n },\n )\n try {\n throwIfAborted(input.signal)\n assertExactSandboxMetadata(sandbox, metadata)\n await assertExactSandboxEgress(sandbox, egressPolicy)\n } catch (error) {\n await discardInvalidSandbox(sandbox, error)\n }\n return sandboxAsExactProcessEnvironment(sandbox, name)\n },\n async get(id: string) {\n const sandbox = await client.get(id)\n if (!sandbox || !isExactSandbox(sandbox, name)) return null\n await assertExactSandboxEgress(sandbox, egressFromMetadata(sandbox.metadata))\n return sandboxAsExactProcessEnvironment(sandbox, name)\n },\n async list(query?: AgentExactProcessEnvironmentQuery) {\n assertNoProviderOptions(query?.providerOptions)\n const sandboxes = await client.list()\n return Promise.all(\n sandboxes\n .filter((sandbox) => isExactSandbox(sandbox, name))\n .filter((sandbox) => metadataMatches(sandbox.metadata, query?.metadata))\n .map(async (sandbox) => {\n await assertExactSandboxEgress(sandbox, egressFromMetadata(sandbox.metadata))\n return sandboxAsExactProcessEnvironment(sandbox, name)\n }),\n )\n },\n }\n\n return {\n name,\n exactProcess,\n capabilities: exactProcessOnlyCapabilities,\n async create() {\n throw new Error(`agent environment provider \"${name}\" supports exactProcess.create() only`)\n },\n }\n}\n\nfunction sandboxAsExactProcessEnvironment(\n sandbox: SandboxInstance,\n provider: string,\n): AgentExactProcessEnvironment {\n return {\n id: requiredText(sandbox.id, 'Sandbox id'),\n provider,\n ...(sandbox.metadata ? { metadata: sandbox.metadata } : {}),\n process: {\n async list(): Promise<AgentExactProcessStatus[]> {\n return (await sandbox.process.list()).map((status) => exactProcessStatus(status))\n },\n async get(pid: number): Promise<AgentExactProcess | null> {\n const process = await sandbox.process.get(pid)\n return process ? sandboxProcessAsExactProcess(process) : null\n },\n async spawn(input, options): Promise<AgentExactProcess> {\n const process = await afterAbortCheck(options?.signal, () =>\n sandbox.process.spawnExact(input.executable, [...input.args], {\n cwd: input.cwd,\n env: { ...input.env },\n inheritEnv: false,\n ...(input.stdin === undefined ? {} : { stdin: input.stdin }),\n timeoutMs: input.timeoutMs,\n }),\n )\n return sandboxProcessAsExactProcess(process)\n },\n },\n async writeFile(path, bytes, options): Promise<void> {\n if (sandbox.fs.supportsWriteMode !== true) {\n throw new Error('Tangle Sandbox does not declare exact file-mode support')\n }\n await afterAbortCheck(options.signal, () =>\n sandbox.fs.write(path, Buffer.from(bytes).toString('base64'), {\n encoding: 'base64',\n mode: fileMode(options.mode),\n }),\n )\n },\n async readFile(path, options): Promise<Uint8Array> {\n const maxBytes = nonnegativeInteger(options.maxBytes, 'exact-process file read maximum')\n const initialSize = nonnegativeInteger(\n (await afterAbortCheck(options.signal, () => sandbox.fs.stat(path))).size,\n `Tangle Sandbox file size for \"${path}\"`,\n )\n if (initialSize > maxBytes) {\n throw new Error(\n `Tangle Sandbox file \"${path}\" exceeds the ${maxBytes}-byte exact read maximum`,\n )\n }\n const result = await afterAbortCheck(options.signal, () =>\n sandbox.fs.readBatch([path], { encoding: 'base64' }),\n )\n const failure = result.errors.find((entry) => entry.path === path)\n if (failure) {\n throw new Error(`Tangle Sandbox failed to read \"${path}\": ${failure.error}`)\n }\n const files = result.files.filter((entry) => entry.path === path)\n if (files.length !== 1) {\n throw new Error(`Tangle Sandbox returned ${files.length} files for exact read \"${path}\"`)\n }\n const file = files[0]!\n if (file.encoding !== 'base64') {\n throw new Error(`Tangle Sandbox returned non-binary content for exact read \"${path}\"`)\n }\n const size = nonnegativeInteger(file.size, `Tangle Sandbox file size for \"${path}\"`)\n if (size !== initialSize) {\n throw new Error(`Tangle Sandbox file \"${path}\" changed during exact read`)\n }\n if (size > maxBytes) {\n throw new Error(\n `Tangle Sandbox file \"${path}\" exceeds the ${maxBytes}-byte exact read maximum`,\n )\n }\n const bytes = Buffer.from(file.content, 'base64')\n if (bytes.byteLength !== size || bytes.toString('base64') !== file.content) {\n throw new Error(\n `Tangle Sandbox returned an invalid binary payload for exact read \"${path}\"`,\n )\n }\n return Uint8Array.from(bytes)\n },\n async destroy(): Promise<void> {\n await sandbox.delete()\n },\n }\n}\n\nfunction sandboxProcessAsExactProcess(process: Process): AgentExactProcess {\n const pid = positiveInteger(process.pid, 'Tangle Sandbox process pid')\n return {\n pid,\n async status(): Promise<AgentExactProcessStatus> {\n return exactProcessStatus(await process.status(), pid)\n },\n async wait(): Promise<AgentCandidateTermination> {\n const waitExitCode = await process.wait()\n if (!Number.isSafeInteger(waitExitCode)) {\n throw new Error('Tangle Sandbox process wait returned an invalid exit code')\n }\n const status = exactProcessStatus(await process.status(), pid)\n if (status.running || !status.termination) {\n throw new Error('Tangle Sandbox process wait returned before terminal status')\n }\n if (status.termination.kind === 'exit' && status.termination.exitCode !== waitExitCode) {\n throw new Error('Tangle Sandbox process wait and status disagree on exit code')\n }\n return status.termination\n },\n async kill(): Promise<void> {\n await process.kill('SIGKILL', { tree: true })\n },\n async *stdout(): AsyncIterable<string> {\n yield* process.stdout()\n },\n async *stderr(): AsyncIterable<string> {\n yield* process.stderr()\n },\n }\n}\n\nfunction exactProcessStatus(status: ProcessStatus, expectedPid?: number): AgentExactProcessStatus {\n const pid = positiveInteger(status.pid, 'Tangle Sandbox process pid')\n if (expectedPid !== undefined && pid !== expectedPid) {\n throw new Error('Tangle Sandbox process status changed process identity')\n }\n if (typeof status.running !== 'boolean') {\n throw new Error('Tangle Sandbox process status is missing running state')\n }\n if (!Number.isSafeInteger(status.exitCode)) {\n throw new Error('Tangle Sandbox process status is missing an integer exit code')\n }\n const exitSignal = optionalText(status.exitSignal, 'Tangle Sandbox process exit signal')\n if (status.running) {\n if (status.exitCode !== -1) {\n throw new Error('Tangle Sandbox running process must report exit code -1')\n }\n if (exitSignal) {\n throw new Error('Tangle Sandbox running process must not report an exit signal')\n }\n return {\n pid,\n running: true,\n exitCode: -1,\n }\n }\n const termination = exitSignal\n ? ({ kind: 'signal', signal: exitSignal } as const)\n : status.exitCode >= 0\n ? ({ kind: 'exit', exitCode: status.exitCode } as const)\n : undefined\n if (!termination) {\n throw new Error('Tangle Sandbox stopped process has no terminal reason')\n }\n return {\n pid,\n running: false,\n exitCode: status.exitCode,\n ...(exitSignal ? { exitSignal } : {}),\n termination,\n }\n}\n\nfunction exactMetadata(\n metadata: Record<string, unknown>,\n provider: string,\n egressPolicy: ExactSandboxEgressPolicy,\n): Record<string, unknown> {\n for (const marker of [exactProcessProviderMarker, exactProcessEgressMarker]) {\n if (Object.hasOwn(metadata, marker)) {\n throw new Error(`exact-process metadata must not set \"${marker}\"`)\n }\n }\n return {\n ...metadata,\n [exactProcessProviderMarker]: provider,\n [exactProcessEgressMarker]: serializeEgressPolicy(egressPolicy),\n }\n}\n\nfunction isExactSandbox(sandbox: SandboxInstance, provider: string): boolean {\n return sandbox.metadata?.[exactProcessProviderMarker] === provider\n}\n\nfunction metadataMatches(\n metadata: Record<string, unknown> | undefined,\n expected: Record<string, unknown> | undefined,\n): boolean {\n return (\n expected === undefined ||\n Object.entries(expected).every(([key, value]) => isDeepStrictEqual(metadata?.[key], value))\n )\n}\n\nfunction assertExactSandboxMetadata(\n sandbox: SandboxInstance,\n expected: Record<string, unknown>,\n): void {\n if (!metadataMatches(sandbox.metadata, expected)) {\n throw new Error('Tangle Sandbox did not persist exact-process metadata')\n }\n}\n\nfunction egressFromMetadata(\n metadata: Record<string, unknown> | undefined,\n): ExactSandboxEgressPolicy {\n const encoded = metadata?.[exactProcessEgressMarker]\n if (typeof encoded !== 'string') {\n throw new Error('Tangle Sandbox exact-process environment is missing egress metadata')\n }\n try {\n const parsed: unknown = JSON.parse(encoded)\n if (!parsed || typeof parsed !== 'object') throw new Error('expected egress object')\n const policy = parsed as {\n mode?: unknown\n allowDomains?: unknown\n includeImplicitDomains?: unknown\n }\n if (policy.mode === 'blocked' && policy.allowDomains === undefined) return { mode: 'blocked' }\n if (\n policy.mode === 'strict' &&\n policy.includeImplicitDomains === false &&\n Array.isArray(policy.allowDomains) &&\n policy.allowDomains.every((domain): domain is string => typeof domain === 'string')\n ) {\n const allowDomains = sortedDomains(policy.allowDomains)\n if (new Set(allowDomains).size === allowDomains.length) {\n return { mode: 'strict', allowDomains, includeImplicitDomains: false }\n }\n }\n } catch {\n throw new Error('Tangle Sandbox exact-process environment has invalid egress metadata')\n }\n throw new Error('Tangle Sandbox exact-process environment has invalid egress metadata')\n}\n\nasync function assertExactSandboxEgress(\n sandbox: SandboxInstance,\n expected: ExactSandboxEgressPolicy,\n): Promise<void> {\n const actual = (await sandbox.egress.get()).policy\n if (actual.mode !== expected.mode) {\n throw new Error(\n `Tangle Sandbox egress mismatch: expected ${expected.mode}, received ${actual.mode}`,\n )\n }\n if (expected.mode === 'blocked') {\n const allowDomains = (actual as { allowDomains?: unknown }).allowDomains\n if (\n actual.mode === 'blocked' &&\n (allowDomains === undefined || (Array.isArray(allowDomains) && allowDomains.length === 0))\n ) {\n return\n }\n throw new Error('Tangle Sandbox blocked egress retained an allowlist')\n }\n if (actual.mode !== 'strict') {\n throw new Error('Tangle Sandbox did not return strict egress policy')\n }\n const expectedDomains = sortedDomains(expected.allowDomains)\n const actualDomains = sortedDomains(actual.allowDomains ?? [])\n if (!isDeepStrictEqual(actualDomains, expectedDomains)) {\n throw new Error('Tangle Sandbox strict egress differs from the exact allowlist')\n }\n if (actual.includeImplicitDomains !== false) {\n throw new Error('Tangle Sandbox strict egress retained implicit domains')\n }\n}\n\nfunction sandboxEgressPolicy(\n input: CreateAgentExactProcessEnvironmentInput['egress'],\n): ExactSandboxEgressPolicy {\n if (input.mode === 'blocked') return { mode: 'blocked' }\n const allowDomains = input.allowDomains.map((domain) =>\n requiredText(domain, 'strict egress domain'),\n )\n if (new Set(allowDomains).size !== allowDomains.length) {\n throw new Error('strict egress domains must not contain duplicates')\n }\n return { mode: 'strict', allowDomains, includeImplicitDomains: false }\n}\n\nfunction serializeEgressPolicy(policy: ExactSandboxEgressPolicy): string {\n return JSON.stringify(\n policy.mode === 'blocked'\n ? { mode: 'blocked' }\n : {\n mode: 'strict',\n allowDomains: sortedDomains(policy.allowDomains),\n includeImplicitDomains: false,\n },\n )\n}\n\nfunction sandboxResources(input: CreateAgentExactProcessEnvironmentInput): SandboxResources {\n const cpuCores = positiveNumber(input.resources.cpu, 'exact-process cpu')\n const memoryMB = positiveInteger(input.resources.memoryMb, 'exact-process memory')\n const diskMb = positiveInteger(input.resources.diskMb, 'exact-process disk')\n if (diskMb % 1024 !== 0) {\n throw new Error('Tangle Sandbox exact-process disk must be a whole GiB')\n }\n return { cpuCores, memoryMB, diskGB: diskMb / 1024 }\n}\n\nfunction sandboxLifetimeSeconds(maxLifetimeMs: number): number {\n const milliseconds = positiveInteger(maxLifetimeMs, 'exact-process maximum lifetime')\n if (milliseconds % 1_000 !== 0) {\n throw new Error(\n 'Tangle Sandbox exact-process maximum lifetime must be a whole number of seconds',\n )\n }\n return milliseconds / 1_000\n}\n\nfunction fileMode(value: number): number {\n const mode = nonnegativeInteger(value, 'exact-process file mode')\n if (mode > 0o7777) throw new Error('exact-process file mode exceeds POSIX mode bits')\n return mode\n}\n\nfunction assertNoProviderOptions(providerOptions: Record<string, unknown> | undefined): void {\n if (providerOptions && Object.keys(providerOptions).length > 0) {\n throw new Error('Tangle Sandbox exact-process provider does not accept providerOptions')\n }\n}\n\nfunction exactProcessOnlyCapabilities(): AgentEnvironmentCapabilities {\n return {\n profile: {\n namedProfiles: false,\n systemPrompt: false,\n instructions: false,\n tools: false,\n permissions: false,\n mcp: false,\n subagents: false,\n resources: {\n files: false,\n instructions: false,\n tools: false,\n skills: false,\n agents: false,\n commands: false,\n },\n hooks: false,\n modes: false,\n runtimeUpdate: false,\n validation: false,\n },\n streaming: { live: false, replay: false, detach: false, turnIdempotency: false },\n sessions: { continue: false, list: false, messages: false },\n workspace: {\n read: false,\n write: false,\n exec: false,\n git: false,\n upload: false,\n download: false,\n },\n branching: { checkpoint: false, fork: false },\n placement: false,\n usage: false,\n confidential: false,\n exactProcess: { egress: ['blocked', 'strict'] },\n }\n}\n\nasync function discardInvalidSandbox(sandbox: SandboxInstance, cause: unknown): Promise<never> {\n try {\n await sandbox.delete()\n } catch (destroyError) {\n throw new AggregateError(\n [cause, destroyError],\n 'Tangle Sandbox exact-process creation failed and cleanup failed',\n )\n }\n throw cause\n}\n\nfunction sortedDomains(domains: readonly string[]): string[] {\n return [...domains].sort((left, right) => left.localeCompare(right))\n}\n\nfunction requiredText(value: string, label: string): string {\n if (typeof value !== 'string' || !value.trim())\n throw new Error(`${label} must be a non-empty string`)\n return value\n}\n\nfunction optionalText(value: string | undefined, label: string): string | undefined {\n if (value === undefined) return undefined\n return requiredText(value, label)\n}\n\nfunction positiveNumber(value: number, label: string): number {\n if (!Number.isFinite(value) || value <= 0) throw new Error(`${label} must be positive`)\n return value\n}\n\nfunction positiveInteger(value: number, label: string): number {\n if (!Number.isSafeInteger(value) || value < 1)\n throw new Error(`${label} must be a positive integer`)\n return value\n}\n\nfunction nonnegativeInteger(value: number, label: string): number {\n if (!Number.isSafeInteger(value) || value < 0)\n throw new Error(`${label} must be a non-negative integer`)\n return value\n}\n\nfunction throwIfAborted(signal: AbortSignal | undefined): void {\n signal?.throwIfAborted()\n}\n\nasync function afterAbortCheck<T>(\n signal: AbortSignal | undefined,\n operation: () => Promise<T>,\n): Promise<T> {\n throwIfAborted(signal)\n const result = await operation()\n throwIfAborted(signal)\n return result\n}\n","import type {\n AgentProfile,\n AgentProfileValidationResult,\n InputPart,\n TokenUsage,\n} from '@tangle-network/agent-interface'\nimport type {\n AgentEnvironment,\n AgentEnvironmentCapabilities,\n AgentEnvironmentEvent,\n AgentEnvironmentProvider,\n AgentEnvironmentQuery,\n AgentEnvironmentStatus,\n AgentEnvironmentSummary,\n AgentProfileRef,\n AgentSession,\n AgentSessionRef,\n AgentSessionStatus,\n AgentTurnInput,\n AgentTurnResult,\n CheckpointRef,\n CheckpointRequest,\n CreateAgentEnvironmentInput,\n ExecRequest,\n ExecResult,\n ForkRequest,\n PlacementInfo,\n ResourceRequest,\n} from '@tangle-network/agent-interface/environment-provider'\nimport type {\n BackendType,\n CreateSandboxOptions,\n PromptInputPart,\n PromptOptions,\n PromptResult,\n SandboxEvent,\n ExecResult as SandboxExecResult,\n SandboxInstance,\n} from '@tangle-network/sandbox'\nimport type {\n Executor,\n ExecutorContext,\n ExecutorFactory,\n ExecutorResult,\n Runtime,\n Spend,\n UsageEvent,\n} from './supervise/types'\nimport type { LoopSandboxPlacement, SandboxClient } from './types'\nimport { zeroTokenUsage } from './util'\n\n// Keep this file loadable from the lean `./environment-provider` export without agent-eval installed.\nclass ValidationError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options)\n this.name = 'ValidationError'\n }\n}\n\nexport type {\n AgentEnvironment,\n AgentEnvironmentCapabilities,\n AgentEnvironmentEvent,\n AgentEnvironmentProvider,\n AgentEnvironmentQuery,\n AgentEnvironmentStatus,\n AgentEnvironmentSummary,\n AgentProfileRef,\n AgentSession,\n AgentSessionRef,\n AgentSessionStatus,\n AgentTurnInput,\n AgentTurnResult,\n CheckpointRef,\n CheckpointRequest,\n CreateAgentEnvironmentInput,\n ExecRequest,\n ExecResult,\n ForkRequest,\n PlacementInfo,\n ResourceRequest,\n WorkspaceRequest,\n} from '@tangle-network/agent-interface/environment-provider'\n\nexport {\n type CreateTangleSandboxExactProcessProviderOptions,\n createTangleSandboxExactProcessProvider,\n} from './tangle-sandbox-exact-process-provider'\n\n/** Provider object or registry name accepted by runtime provider adapters.\n * @experimental */\nexport type AgentEnvironmentProviderRef = AgentEnvironmentProvider | string\n\n/** In-memory registry for named `AgentEnvironmentProvider` instances.\n * @experimental */\nexport interface AgentEnvironmentProviderRegistry {\n register(provider: AgentEnvironmentProvider, options?: { replace?: boolean }): void\n has(name: string): boolean\n get(name: string): AgentEnvironmentProvider | undefined\n require(name: string): AgentEnvironmentProvider\n names(): string[]\n providers(): AgentEnvironmentProvider[]\n capabilities(name: string): Promise<AgentEnvironmentCapabilities>\n}\n\n/** Create a registry that resolves provider names to concrete provider instances.\n * @experimental */\nexport function createAgentEnvironmentProviderRegistry(\n providers: Iterable<AgentEnvironmentProvider> = [],\n): AgentEnvironmentProviderRegistry {\n const entries = new Map<string, AgentEnvironmentProvider>()\n\n const registry: AgentEnvironmentProviderRegistry = {\n register(provider, options = {}): void {\n if (!provider.name) {\n throw new ValidationError('agent environment provider registry: provider.name required')\n }\n if (!options.replace && entries.has(provider.name)) {\n throw new ValidationError(\n `agent environment provider registry: provider \"${provider.name}\" already registered`,\n )\n }\n entries.set(provider.name, provider)\n },\n has(name): boolean {\n return entries.has(name)\n },\n get(name): AgentEnvironmentProvider | undefined {\n return entries.get(name)\n },\n require(name): AgentEnvironmentProvider {\n const provider = entries.get(name)\n if (!provider) {\n const available = Array.from(entries.keys()).sort()\n const suffix = available.length > 0 ? `; available: ${available.join(', ')}` : ''\n throw new ValidationError(\n `agent environment provider registry: provider \"${name}\" is not registered${suffix}`,\n )\n }\n return provider\n },\n names(): string[] {\n return Array.from(entries.keys()).sort()\n },\n providers(): AgentEnvironmentProvider[] {\n return registry.names().map((name) => registry.require(name))\n },\n async capabilities(name): Promise<AgentEnvironmentCapabilities> {\n return registry.require(name).capabilities()\n },\n }\n\n for (const provider of providers) registry.register(provider)\n return registry\n}\n\n/** Resolve a provider instance or registry name, failing loudly when a name is unknown.\n * @experimental */\nexport function resolveAgentEnvironmentProvider(\n provider: AgentEnvironmentProviderRef,\n registry?: AgentEnvironmentProviderRegistry,\n): AgentEnvironmentProvider {\n if (typeof provider !== 'string') return provider\n if (!registry) {\n throw new ValidationError(\n `agent environment provider \"${provider}\" requires an AgentEnvironmentProviderRegistry`,\n )\n }\n return registry.require(provider)\n}\n\n/** Options for exposing an `AgentEnvironmentProvider` through the legacy sandbox client port.\n * @experimental */\nexport interface ProviderAsSandboxClientOptions {\n defaults?: Partial<CreateAgentEnvironmentInput>\n requireTerminalEvent?: boolean\n /** Require declared live continuation plus concrete session controls. */\n requireSession?: boolean\n mapCreateOptions?: (\n options: CreateSandboxOptions | undefined,\n ) => Partial<CreateAgentEnvironmentInput>\n}\n\n/** Adapt a neutral environment provider to the `SandboxClient` interface used by existing loop paths.\n * @experimental */\nexport function providerAsSandboxClient(\n provider: AgentEnvironmentProvider,\n options: ProviderAsSandboxClientOptions = {},\n): SandboxClient {\n return {\n async create(createOptions?: CreateSandboxOptions): Promise<SandboxInstance> {\n const defaults = options.defaults ?? {}\n const sandboxInput = createInputFromSandboxOptions(createOptions)\n const customInput = options.mapCreateOptions?.(createOptions) ?? {}\n const mapped = {\n ...defaults,\n ...sandboxInput,\n ...customInput,\n providerOptions: {\n ...(defaults.providerOptions ?? {}),\n ...(sandboxInput.providerOptions ?? {}),\n ...(customInput.providerOptions ?? {}),\n },\n }\n if (mapped.backend === undefined) delete mapped.backend\n if (mapped.profile === undefined) {\n throw new ValidationError(\n `providerAsSandboxClient(${provider.name}): profile required in defaults or CreateSandboxOptions.backend.profile`,\n )\n }\n if (options.requireSession) {\n const capabilities = await provider.capabilities()\n if (!capabilities.streaming.live || !capabilities.sessions.continue) {\n throw new ValidationError(\n `providerAsSandboxClient(${provider.name}): live session continuation is required`,\n )\n }\n }\n const environment = await provider.create(mapped as CreateAgentEnvironmentInput)\n if (options.requireSession && !environment.session) {\n await environment.destroy?.()\n throw new ValidationError(\n `providerAsSandboxClient(${provider.name}): session() is required`,\n )\n }\n return environmentAsSandboxInstance(environment, {\n requireTerminalEvent: options.requireTerminalEvent ?? true,\n })\n },\n }\n}\n\n/** Options for wrapping the current Tangle sandbox client as an environment provider.\n * @experimental */\nexport interface SandboxClientProviderOptions {\n name?: string\n defaultBackend?: BackendType\n capabilities?:\n | AgentEnvironmentCapabilities\n | (() => AgentEnvironmentCapabilities | Promise<AgentEnvironmentCapabilities>)\n validateProfile?: (\n profile: AgentProfileRef,\n ) => AgentProfileValidationResult | Promise<AgentProfileValidationResult>\n /** Resolve a named profile before calling Sandbox, which accepts inline profiles only. */\n resolveProfile?: (profileId: string) => AgentProfile | Promise<AgentProfile>\n mapCreateInput?: (input: CreateAgentEnvironmentInput) => CreateSandboxOptions\n}\n\n/** Adapt a `SandboxClient` into the shared `AgentEnvironmentProvider` contract.\n * @experimental */\nexport function sandboxClientAsProvider(\n client: SandboxClient,\n options: SandboxClientProviderOptions = {},\n): AgentEnvironmentProvider {\n const providerName = options.name ?? 'tangle-sandbox'\n return {\n name: providerName,\n capabilities: async () => {\n if (options.capabilities) {\n return typeof options.capabilities === 'function'\n ? options.capabilities()\n : options.capabilities\n }\n return defaultTangleSandboxCapabilities({\n namedProfiles: options.resolveProfile !== undefined,\n })\n },\n ...(options.validateProfile ? { validateProfile: options.validateProfile } : {}),\n async create(input: CreateAgentEnvironmentInput): Promise<AgentEnvironment> {\n const createOptions =\n options.mapCreateInput?.(input) ??\n (await sandboxOptionsFromCreateInput(\n input,\n options.defaultBackend ?? 'opencode',\n options.resolveProfile,\n ))\n const box = await client.create(createOptions)\n return sandboxInstanceAsEnvironment(box, providerName, client)\n },\n ...(hasGet(client)\n ? {\n async get(id: string): Promise<AgentEnvironment | null> {\n const box = await client.get(id)\n return box ? sandboxInstanceAsEnvironment(box, providerName, client) : null\n },\n }\n : {}),\n ...(hasList(client)\n ? {\n async list(query?: AgentEnvironmentQuery): Promise<AgentEnvironmentSummary[]> {\n const boxes = await client.list(query?.providerOptions)\n return boxes.map((box) => ({\n id: String(box.id),\n provider: providerName,\n name: typeof box.name === 'string' ? box.name : undefined,\n status: statusFromUnknown(readBoxStatus(box)),\n metadata: readBoxMetadata(box),\n }))\n },\n }\n : {}),\n }\n}\n\n/** Options for running a provider as a supervise-mode executor.\n * @experimental */\nexport interface ProviderExecutorOptions {\n defaults?: Partial<CreateAgentEnvironmentInput>\n runtime?: Runtime\n destroyOnSettle?: boolean\n requireTerminalEvent?: boolean\n /** Transform only the profile sent to `provider.create`. The original profile\n * remains the input to `taskToTurn`, so execution-only normalization cannot\n * rewrite the caller's task mapping. */\n profileForCreate?: (profile: AgentProfile) => AgentProfile\n taskToTurn?: (task: unknown, specProfile: AgentProfile) => AgentTurnInput\n}\n\n/** Adapt an environment provider into an `ExecutorFactory` for `createExecutor`.\n * @experimental */\nexport function providerAsExecutor(\n provider: AgentEnvironmentProvider,\n options: ProviderExecutorOptions = {},\n): ExecutorFactory<unknown> {\n return (spec, ctx) => createProviderExecutor(provider, spec.profile, ctx, options)\n}\n\nfunction createProviderExecutor(\n provider: AgentEnvironmentProvider,\n profile: AgentProfile,\n ctx: ExecutorContext,\n options: ProviderExecutorOptions,\n): Executor<unknown> {\n const controller = new AbortController()\n const abortIfSignalled = () => {\n if (ctx.signal.aborted) controller.abort()\n }\n abortIfSignalled()\n if (!ctx.signal.aborted) ctx.signal.addEventListener('abort', abortIfSignalled, { once: true })\n\n let environment: AgentEnvironment | undefined\n let artifact: ExecutorResult<unknown> | undefined\n\n return {\n runtime: options.runtime ?? (provider.name as Runtime),\n execute(task, signal): AsyncIterable<UsageEvent> {\n return streamProviderExecutor({\n provider,\n profile,\n task,\n signal,\n controller,\n options,\n onEnvironment: (env) => {\n environment = env\n },\n onArtifact: (next) => {\n artifact = next\n },\n })\n },\n async teardown(_grace): Promise<{ destroyed: boolean }> {\n controller.abort()\n await environment?.destroy?.()\n return { destroyed: true }\n },\n resultArtifact(): ExecutorResult<unknown> {\n if (!artifact) {\n throw new ValidationError(\n `providerAsExecutor(${provider.name}): resultArtifact() read before stream drained`,\n )\n }\n return artifact\n },\n }\n}\n\ninterface StreamProviderExecutorArgs {\n provider: AgentEnvironmentProvider\n profile: AgentProfile\n task: unknown\n signal: AbortSignal\n controller: AbortController\n options: ProviderExecutorOptions\n onEnvironment: (environment: AgentEnvironment) => void\n onArtifact: (artifact: ExecutorResult<unknown>) => void\n}\n\nasync function* streamProviderExecutor(\n args: StreamProviderExecutorArgs,\n): AsyncIterable<UsageEvent> {\n const started = Date.now()\n const linked = mergeAbortSignals(args.signal, args.controller.signal)\n const createProfile = args.options.profileForCreate?.(args.profile) ?? args.profile\n const environment = await args.provider.create({\n ...(args.options.defaults ?? {}),\n profile: createProfile,\n signal: linked,\n })\n args.onEnvironment(environment)\n\n const turn =\n args.options.taskToTurn?.(args.task, args.profile) ?? taskToTurnInput(args.task, linked)\n const events: AgentEnvironmentEvent[] = []\n const tokens = zeroTokenUsage()\n let usd = 0\n let text = ''\n let terminal = false\n try {\n for await (const event of environment.stream({ ...turn, signal: linked })) {\n events.push(event)\n text += textFromEnvironmentEvent(event)\n const usage = usageFromEnvironmentEvent(event)\n if (usage.input || usage.output) {\n tokens.input += usage.input\n tokens.output += usage.output\n yield { kind: 'tokens', input: usage.input, output: usage.output }\n }\n if (usage.usd) {\n usd += usage.usd\n yield { kind: 'cost', usd: usage.usd }\n }\n if (isTerminalEnvironmentEvent(event)) terminal = true\n }\n if ((args.options.requireTerminalEvent ?? true) && !terminal) {\n throw new ValidationError(\n `providerAsExecutor(${args.provider.name}): stream ended without a terminal result/done/status event`,\n )\n }\n yield { kind: 'iteration' }\n const result = resultFromEvents(events, text)\n const spent: Spend = {\n iterations: 1,\n tokens,\n usd,\n ms: Date.now() - started,\n }\n args.onArtifact({\n outRef: contentRef(`provider:${args.provider.name}`, result),\n out: result,\n spent,\n })\n } finally {\n if (args.options.destroyOnSettle ?? true) await environment.destroy?.()\n }\n}\n\nfunction createInputFromSandboxOptions(\n options: CreateSandboxOptions | undefined,\n): Partial<CreateAgentEnvironmentInput> {\n const profile = options?.backend?.profile\n const backend = options?.backend?.type\n const workspace = {\n ...(options?.environment ? { environment: options.environment } : {}),\n ...(options?.git?.url ? { repoUrl: options.git.url } : {}),\n ...(options?.git?.ref ? { gitRef: options.git.ref } : {}),\n }\n return {\n ...(profile !== undefined ? { profile } : {}),\n ...(backend ? { backend } : {}),\n ...(Object.keys(workspace).length > 0 ? { workspace } : {}),\n ...(options?.resources ? { resources: options.resources as ResourceRequest } : {}),\n ...(options?.env ? { env: options.env } : {}),\n ...(options?.secrets ? { secrets: options.secrets } : {}),\n ...(options?.metadata ? { metadata: options.metadata } : {}),\n ...(options?.name ? { name: options.name } : {}),\n ...(options?.idempotencyKey ? { idempotencyKey: options.idempotencyKey } : {}),\n providerOptions: { sandboxCreateOptions: options ?? {} },\n }\n}\n\nasync function sandboxOptionsFromCreateInput(\n input: CreateAgentEnvironmentInput,\n defaultBackend: BackendType,\n resolveProfile?: SandboxClientProviderOptions['resolveProfile'],\n): Promise<CreateSandboxOptions> {\n const backendType = (input.backend ?? defaultBackend) as BackendType\n const workspace = input.workspace ?? {}\n const environment = sandboxEnvironmentFromWorkspace(workspace)\n const providerOptions = input.providerOptions?.sandboxCreateOptions\n const base =\n providerOptions && typeof providerOptions === 'object'\n ? ({ ...(providerOptions as CreateSandboxOptions) } as CreateSandboxOptions)\n : ({} satisfies CreateSandboxOptions)\n assertSandboxSecretNames(input.secrets)\n assertSandboxSecretNames((base as { secrets?: unknown }).secrets)\n const profile = await sandboxProfileFromReference(input.profile, resolveProfile)\n const { profile: _baseProfile, ...baseBackend } = base.backend ?? {}\n return {\n ...base,\n ...(environment ? { environment } : {}),\n ...(workspace.repoUrl ? { git: { url: workspace.repoUrl, ref: workspace.gitRef } } : {}),\n ...(input.resources ? { resources: input.resources as CreateSandboxOptions['resources'] } : {}),\n ...(input.env ? { env: input.env } : {}),\n ...(Array.isArray(input.secrets) ? { secrets: input.secrets } : {}),\n ...(input.metadata ? { metadata: input.metadata } : {}),\n ...(input.name ? { name: input.name } : {}),\n ...(input.idempotencyKey ? { idempotencyKey: input.idempotencyKey } : {}),\n backend: {\n ...baseBackend,\n type: backendType,\n profile,\n },\n }\n}\n\nfunction assertSandboxSecretNames(secrets: unknown): asserts secrets is string[] | undefined {\n if (\n secrets !== undefined &&\n (!Array.isArray(secrets) ||\n secrets.some((secret) => typeof secret !== 'string' || secret.trim().length === 0))\n ) {\n throw new ValidationError(\n 'Tangle Sandbox secret names must be non-empty strings; secret values are unsupported',\n )\n }\n}\n\nfunction sandboxEnvironmentFromWorkspace(\n workspace: NonNullable<CreateAgentEnvironmentInput['workspace']>,\n): string | undefined {\n if (\n workspace.environment !== undefined &&\n workspace.image !== undefined &&\n workspace.environment !== workspace.image\n ) {\n throw new ValidationError(\n 'Tangle Sandbox accepts one environment value; workspace.environment and workspace.image must match',\n )\n }\n return workspace.environment ?? workspace.image\n}\n\nasync function sandboxProfileFromReference(\n profile: AgentProfileRef,\n resolveProfile: SandboxClientProviderOptions['resolveProfile'],\n): Promise<AgentProfile> {\n if (typeof profile !== 'string') return profile\n if (!resolveProfile) {\n throw new ValidationError(\n `Tangle Sandbox requires an inline AgentProfile; named profile \"${profile}\" needs SandboxClientProviderOptions.resolveProfile`,\n )\n }\n return resolveProfile(profile)\n}\n\nfunction environmentAsSandboxInstance(\n environment: AgentEnvironment,\n options: { requireTerminalEvent: boolean },\n): SandboxInstance {\n const box = {\n id: environment.id,\n name: environment.name,\n status: 'running',\n async refresh(): Promise<void> {\n await environment.refresh?.()\n },\n async *streamPrompt(\n message: string | PromptInputPart[],\n promptOptions?: PromptOptions,\n ): AsyncGenerator<SandboxEvent> {\n let terminal = false\n const input = turnInputFromPrompt(message, promptOptions)\n let cancellation: Promise<void> | undefined\n let cancellationStarted = false\n let cancellationFailed = false\n let cancellationError: unknown\n const cancel = () => {\n if (cancellationStarted || !input.sessionId || !environment.session) return\n cancellationStarted = true\n try {\n cancellation = environment\n .session(input.sessionId)\n .cancel()\n .catch((error: unknown) => {\n cancellationFailed = true\n cancellationError = error\n })\n } catch (error) {\n cancellationFailed = true\n cancellationError = error\n }\n }\n input.signal?.addEventListener('abort', cancel, { once: true })\n if (input.signal?.aborted) cancel()\n let streamFailed = false\n let streamError: unknown\n try {\n for await (const event of environment.stream(input)) {\n if (isTerminalEnvironmentEvent(event)) terminal = true\n const usageEvent = usageSandboxEvent(event)\n if (usageEvent) yield usageEvent\n yield sandboxEventFromEnvironmentEvent(event)\n }\n } catch (error) {\n streamFailed = true\n streamError = error\n } finally {\n input.signal?.removeEventListener('abort', cancel)\n if (input.signal?.aborted) {\n cancel()\n await cancellation\n }\n }\n if (input.signal?.aborted) {\n const abortError = new DOMException('Provider session stream aborted', 'AbortError')\n const causes = [\n ...(streamFailed ? [streamError] : []),\n ...(cancellationFailed ? [cancellationError] : []),\n ]\n if (causes.length > 0) {\n Object.defineProperty(abortError, 'cause', {\n value:\n causes.length === 1\n ? causes[0]\n : new AggregateError(causes, 'Provider stream and cancellation failed'),\n })\n }\n throw abortError\n }\n if (streamFailed) throw streamError\n if (cancellationFailed) throw cancellationError\n if (options.requireTerminalEvent && !terminal) {\n throw new ValidationError(\n `providerAsSandboxClient(${environment.provider}): stream ended without a terminal result/done/status event`,\n )\n }\n },\n async prompt(\n message: string | PromptInputPart[],\n promptOptions?: PromptOptions,\n ): Promise<PromptResult> {\n const events: AgentEnvironmentEvent[] = []\n let text = ''\n let usage: TokenUsage | undefined\n let terminal = false\n for await (const event of environment.stream(turnInputFromPrompt(message, promptOptions))) {\n events.push(event)\n if (isTerminalEnvironmentEvent(event)) terminal = true\n text += textFromEnvironmentEvent(event)\n usage = mergeTokenUsage(usage, event.usage)\n }\n if (options.requireTerminalEvent && !terminal) {\n throw new ValidationError(\n `providerAsSandboxClient(${environment.provider}): prompt ended without a terminal result/done/status event`,\n )\n }\n return {\n response: resultFromEvents(events, text).content,\n success: true,\n status: 'success',\n durationMs: 0,\n ...(usage ? { usage } : {}),\n }\n },\n ...(environment.dispatch && environment.session\n ? {\n async dispatchPrompt(message: string | PromptInputPart[], promptOptions?: PromptOptions) {\n const session = await environment.dispatch?.(\n turnInputFromPrompt(message, promptOptions),\n )\n if (!session)\n throw new ValidationError('providerAsSandboxClient: dispatch returned no session')\n return sandboxDispatchResultFromSessionRef(session)\n },\n }\n : {}),\n ...(environment.session\n ? {\n session(id: string) {\n return sandboxSessionFromAgentSession(environment.session?.(id))\n },\n }\n : {}),\n ...(environment.read ? { read: environment.read.bind(environment) } : {}),\n ...(environment.write ? { write: environment.write.bind(environment) } : {}),\n ...(environment.exec\n ? {\n exec: environment.exec.bind(environment),\n }\n : {}),\n ...(environment.checkpoint\n ? {\n async checkpoint(checkpointOptions?: CheckpointRequest) {\n const checkpoint = await environment.checkpoint?.(checkpointOptions)\n return { checkpointId: checkpoint?.id, id: checkpoint?.id }\n },\n }\n : {}),\n ...(environment.fork\n ? {\n async fork(checkpointId: string, forkOptions?: ForkRequest) {\n const forked = await environment.fork?.({ id: checkpointId }, forkOptions)\n if (!forked)\n throw new ValidationError('providerAsSandboxClient: fork returned no environment')\n return environmentAsSandboxInstance(forked, options)\n },\n }\n : {}),\n async delete(): Promise<void> {\n await environment.destroy?.()\n },\n }\n return box as unknown as SandboxInstance\n}\n\nfunction sandboxInstanceAsEnvironment(\n box: SandboxInstance,\n providerName: string,\n client: SandboxClient,\n): AgentEnvironment {\n const environment: AgentEnvironment = {\n id: String(box.id),\n provider: providerName,\n ...(typeof box.name === 'string' ? { name: box.name } : {}),\n async status(): Promise<AgentEnvironmentStatus> {\n await maybeRefresh(box)\n return statusFromUnknown(readBoxStatus(box))\n },\n async *stream(input: AgentTurnInput): AsyncIterable<AgentEnvironmentEvent> {\n for await (const event of box.streamPrompt(\n promptFromTurnInput(input),\n promptOptionsFromTurnInput(input),\n )) {\n yield environmentEventFromSandboxEvent(event)\n }\n },\n ...(hasDispatchPrompt(box)\n ? {\n async dispatch(input: AgentTurnInput): Promise<AgentSessionRef> {\n const dispatched = await box.dispatchPrompt(\n promptFromTurnInput(input),\n promptOptionsFromTurnInput(input),\n )\n return sessionRefFromSandboxDispatch(dispatched, providerName)\n },\n }\n : {}),\n ...(hasSession(box)\n ? {\n session(id: string): AgentSession {\n return sandboxSessionAsAgentSession(box.session(id))\n },\n }\n : {}),\n ...(hasRead(box) ? { read: box.read.bind(box) } : {}),\n ...(hasWrite(box) ? { write: box.write.bind(box) } : {}),\n ...(hasExec(box)\n ? {\n async exec(command: string, options?: ExecRequest): Promise<ExecResult> {\n return execResultFromSandboxExecResult(await box.exec(command, options as never))\n },\n }\n : {}),\n async checkpoint(options?: CheckpointRequest): Promise<CheckpointRef> {\n const result = await box.snapshot({\n ...(options?.name ? { tags: [options.name] } : {}),\n })\n return {\n id: result.snapshotId,\n provider: providerName,\n ...(options?.metadata ? { metadata: options.metadata } : {}),\n }\n },\n async fork(checkpoint: CheckpointRef, options?: ForkRequest): Promise<AgentEnvironment> {\n const forked = await client.create({\n fromSnapshot: checkpoint.id,\n fromSandboxId: String(box.id),\n ...(options?.name ? { name: options.name } : {}),\n ...(options?.metadata ? { metadata: options.metadata } : {}),\n })\n return sandboxInstanceAsEnvironment(forked, providerName, client)\n },\n async placement(): Promise<PlacementInfo> {\n return placementInfoFromLoopPlacement(client.describePlacement?.(box), box)\n },\n async refresh(): Promise<void> {\n await maybeRefresh(box)\n },\n async destroy(): Promise<void> {\n await destroyBox(box)\n },\n }\n return environment\n}\n\nfunction sandboxSessionAsAgentSession(session: SandboxSessionLike): AgentSession {\n return {\n id: session.id,\n async status(): Promise<AgentSessionStatus | null> {\n const status = await session.status()\n if (!status) return null\n return sessionStatusFromUnknown((status as { status?: unknown }).status)\n },\n async *events(options?: {\n since?: string\n signal?: AbortSignal\n }): AsyncIterable<AgentEnvironmentEvent> {\n for await (const event of session.events(options))\n yield environmentEventFromSandboxEvent(event)\n },\n async result(): Promise<AgentTurnResult> {\n return agentTurnResultFromPromptResult(await session.result())\n },\n async prompt(input: AgentTurnInput): Promise<AgentTurnResult> {\n return agentTurnResultFromPromptResult(\n await session.prompt(promptFromTurnInput(input), promptOptionsFromTurnInput(input)),\n )\n },\n cancel(): Promise<void> {\n return session.interrupt().then(() => undefined)\n },\n }\n}\n\nfunction sandboxSessionFromAgentSession(session: AgentSession | undefined): SandboxSessionLike {\n if (!session) throw new ValidationError('providerAsSandboxClient: session is unavailable')\n return {\n id: session.id,\n async status() {\n const status = await session.status()\n if (!status) return null\n return {\n id: session.id,\n status: sandboxSessionStatusFromAgentSessionStatus(status),\n }\n },\n async *events(options?: {\n since?: string\n signal?: AbortSignal\n }): AsyncGenerator<SandboxEvent> {\n for await (const event of session.events(options))\n yield sandboxEventFromEnvironmentEvent(event)\n },\n async result(): Promise<PromptResult> {\n return promptResultFromAgentTurnResult(await session.result())\n },\n async prompt(\n message: string | PromptInputPart[],\n options?: PromptOptions,\n ): Promise<PromptResult> {\n return promptResultFromAgentTurnResult(\n await session.prompt(turnInputFromPrompt(message, options)),\n )\n },\n async interrupt() {\n await session.cancel()\n return { cancelled: true }\n },\n }\n}\n\nfunction sandboxSessionStatusFromAgentSessionStatus(\n status: AgentSessionStatus,\n): 'queued' | 'running' | 'completed' | 'failed' | 'cancelled' {\n switch (status) {\n case 'pending':\n case 'provisioning':\n return 'queued'\n case 'running':\n return 'running'\n case 'completed':\n return 'completed'\n case 'cancelled':\n return 'cancelled'\n // Sandbox has no neutral stopped state; do not report completion without success proof.\n case 'stopped':\n case 'failed':\n case 'expired':\n case 'unknown':\n return 'failed'\n }\n}\n\nfunction promptResultFromAgentTurnResult(result: AgentTurnResult): PromptResult {\n return {\n response: result.text,\n success: result.success,\n status: result.success ? 'success' : 'failed',\n durationMs: 0,\n ...(result.error ? { error: result.error } : {}),\n ...(result.usage\n ? {\n usage: {\n inputTokens: result.usage.inputTokens,\n outputTokens: result.usage.outputTokens,\n },\n ...(result.usage.cost === undefined ? {} : { costUsd: result.usage.cost }),\n }\n : {}),\n }\n}\n\nfunction environmentEventFromSandboxEvent(event: SandboxEvent): AgentEnvironmentEvent {\n const data =\n event.data && typeof event.data === 'object'\n ? (event.data as Record<string, unknown>)\n : ({} as Record<string, unknown>)\n return {\n type: String(event.type),\n data,\n ...(event.id ? { id: event.id } : {}),\n usage: tokenUsageFromData(data),\n providerEvent: event,\n }\n}\n\nfunction sandboxEventFromEnvironmentEvent(event: AgentEnvironmentEvent): SandboxEvent {\n const normalized = event.normalized\n const type = normalized?.type ?? event.type\n const baseData = normalized ? sandboxDataFromNormalizedEvent(event.data, normalized) : event.data\n const usage = event.usage ? tokenUsageData(event.usage) : undefined\n const data = (() => {\n if (!usage) return baseData\n if (isUsageType(type))\n return {\n ...baseData,\n tokensIn: event.usage?.inputTokens,\n tokensOut: event.usage?.outputTokens,\n ...(event.usage?.cost !== undefined ? { costUsd: event.usage.cost } : {}),\n ...usage,\n }\n if (isNestedUsageType(type)) return { ...baseData, usage }\n if (type === 'done') {\n return {\n ...baseData,\n tokenUsage: usage,\n ...(usage.totalCostUsd !== undefined ? { totalCostUsd: usage.totalCostUsd } : {}),\n }\n }\n return baseData\n })()\n return {\n type,\n data,\n ...(event.id ? { id: event.id } : {}),\n }\n}\n\nfunction usageSandboxEvent(event: AgentEnvironmentEvent): SandboxEvent | undefined {\n const type = event.normalized?.type ?? event.type\n if (!event.usage || isUsageType(type) || isNestedUsageType(type) || type === 'done') {\n return undefined\n }\n const usage = tokenUsageData(event.usage)\n if (\n usage.inputTokens === undefined &&\n usage.outputTokens === undefined &&\n usage.totalCostUsd === undefined\n ) {\n return undefined\n }\n return { type: 'llm_call', data: usage }\n}\n\nfunction sandboxDataFromNormalizedEvent(\n rawData: Record<string, unknown>,\n normalized: NonNullable<AgentEnvironmentEvent['normalized']>,\n): Record<string, unknown> {\n const { type: _type, ...normalizedData } = normalized\n return {\n ...rawData,\n ...normalizedData,\n ...(normalized.type === 'message.part.updated' && normalized.part.type === 'text'\n ? { text: normalized.part.text }\n : {}),\n }\n}\n\nfunction tokenUsageData(usage: TokenUsage): Record<string, number> {\n return {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n ...(usage.totalTokens !== undefined ? { totalTokens: usage.totalTokens } : {}),\n ...(usage.cacheReadInputTokens !== undefined\n ? { cacheReadInputTokens: usage.cacheReadInputTokens }\n : {}),\n ...(usage.cacheCreationInputTokens !== undefined\n ? { cacheCreationInputTokens: usage.cacheCreationInputTokens }\n : {}),\n ...(usage.reasoningTokens !== undefined ? { reasoningTokens: usage.reasoningTokens } : {}),\n ...(usage.cost !== undefined ? { totalCostUsd: usage.cost } : {}),\n }\n}\n\nfunction turnInputFromPrompt(\n message: string | PromptInputPart[],\n options?: PromptOptions,\n): AgentTurnInput {\n return {\n ...(typeof message === 'string' ? { prompt: message } : { parts: message }),\n ...(options?.sessionId ? { sessionId: options.sessionId } : {}),\n ...(options?.model ? { model: options.model } : {}),\n ...(options?.timeoutMs ? { timeoutMs: options.timeoutMs } : {}),\n ...(options?.executionId ? { executionId: options.executionId } : {}),\n ...(options?.lastEventId ? { lastEventId: options.lastEventId } : {}),\n ...(options?.turnId ? { turnId: options.turnId } : {}),\n ...(options?.detach !== undefined ? { detach: options.detach } : {}),\n ...(options?.context ? { context: options.context } : {}),\n ...(options?.signal ? { signal: options.signal } : {}),\n ...(options?.backend ? { providerOptions: { backend: options.backend } } : {}),\n }\n}\n\nfunction promptFromTurnInput(input: AgentTurnInput): string | PromptInputPart[] {\n if (input.parts) return input.parts.map(promptPartFromInputPart)\n return input.prompt ?? ''\n}\n\nfunction promptPartFromInputPart(part: InputPart): PromptInputPart {\n if (part.type === 'text' || part.type === 'image') return part\n if (part.content !== undefined || part.path !== undefined) {\n throw new ValidationError(\n 'Tangle Sandbox file prompt parts require a URL; inline content and local paths are not representable',\n )\n }\n if (!part.filename || !part.url) {\n throw new ValidationError('Tangle Sandbox file prompt parts require both filename and URL')\n }\n return {\n type: 'file',\n filename: part.filename,\n ...(part.mediaType ? { mediaType: part.mediaType } : {}),\n url: part.url,\n }\n}\n\nfunction promptOptionsFromTurnInput(input: AgentTurnInput): PromptOptions {\n return {\n ...(input.sessionId ? { sessionId: input.sessionId } : {}),\n ...(input.model ? { model: input.model } : {}),\n ...(input.timeoutMs ? { timeoutMs: input.timeoutMs } : {}),\n ...(input.context ? { context: input.context } : {}),\n ...(input.signal ? { signal: input.signal } : {}),\n ...(input.executionId ? { executionId: input.executionId } : {}),\n ...(input.lastEventId ? { lastEventId: input.lastEventId } : {}),\n ...(input.turnId ? { turnId: input.turnId } : {}),\n ...(input.detach !== undefined ? { detach: input.detach } : {}),\n }\n}\n\nfunction taskToTurnInput(task: unknown, signal: AbortSignal): AgentTurnInput {\n return { prompt: taskToPrompt(task), signal }\n}\n\nfunction taskToPrompt(task: unknown): string {\n if (typeof task === 'string') return task\n if (task && typeof task === 'object') {\n const record = task as Record<string, unknown>\n for (const key of ['prompt', 'content', 'task', 'message']) {\n if (typeof record[key] === 'string') return record[key]\n }\n }\n return JSON.stringify(task)\n}\n\nfunction resultFromEvents(\n events: AgentEnvironmentEvent[],\n fallbackText: string,\n): { content: string; events: AgentEnvironmentEvent[] } {\n for (let i = events.length - 1; i >= 0; i -= 1) {\n const event = events[i]\n const text = event ? resultTextFromData(event.data) : undefined\n if (text !== undefined) return { content: text, events }\n }\n return { content: fallbackText, events }\n}\n\nfunction textFromEnvironmentEvent(event: AgentEnvironmentEvent): string {\n if (\n typeof event.normalized === 'object' &&\n event.normalized &&\n event.normalized.type === 'message.part.updated'\n ) {\n return typeof event.normalized.delta === 'string' ? event.normalized.delta : ''\n }\n const data = event.data\n for (const key of ['delta', 'chunk', 'content', 'text']) {\n if (typeof data[key] === 'string' && !isTerminalEnvironmentEvent(event)) return data[key]\n }\n return ''\n}\n\nfunction resultTextFromData(data: Record<string, unknown>): string | undefined {\n for (const key of ['finalText', 'text', 'response', 'resultSummary', 'content']) {\n if (typeof data[key] === 'string') return data[key]\n }\n return undefined\n}\n\nfunction isTerminalEnvironmentEvent(event: AgentEnvironmentEvent): boolean {\n if (isTerminalEventShape(event.type, event.data)) return true\n const normalized = event.normalized\n return (\n normalized?.type === 'status' &&\n (normalized.status === 'completed' || normalized.status === 'failed')\n )\n}\n\nfunction isTerminalEventShape(type: string, data: Record<string, unknown>): boolean {\n if (type === 'result' || type === 'done' || type === 'final') return true\n if (type.endsWith('.completed') || type.endsWith('.failed')) return true\n if (type !== 'status') return false\n return data.status === 'completed' || data.status === 'failed' || data.status === 'cancelled'\n}\n\nfunction isUsageType(type: string): boolean {\n return type === 'llm_call' || type === 'usage' || type === 'cost.usage'\n}\n\nfunction isNestedUsageType(type: string): boolean {\n return type === 'message.completed' || type === 'result' || type === 'final'\n}\n\nfunction usageFromEnvironmentEvent(event: AgentEnvironmentEvent): {\n input: number\n output: number\n usd: number\n} {\n const usage = event.usage ?? tokenUsageFromData(event.data)\n return {\n input: finiteNumber(usage?.inputTokens) ?? 0,\n output: (finiteNumber(usage?.outputTokens) ?? 0) + (finiteNumber(usage?.reasoningTokens) ?? 0),\n usd:\n finiteNumber(usage?.cost) ??\n finiteNumber(event.data.costUsd) ??\n finiteNumber(event.data.totalCostUsd) ??\n 0,\n }\n}\n\nfunction tokenUsageFromData(data: Record<string, unknown>): TokenUsage | undefined {\n const usageRecord =\n data.usage && typeof data.usage === 'object'\n ? (data.usage as Record<string, unknown>)\n : data.tokenUsage && typeof data.tokenUsage === 'object'\n ? (data.tokenUsage as Record<string, unknown>)\n : data\n const inputTokens =\n finiteNumber(usageRecord.inputTokens) ??\n finiteNumber(usageRecord.tokensIn) ??\n finiteNumber(usageRecord.prompt_tokens)\n const outputTokens =\n finiteNumber(usageRecord.outputTokens) ??\n finiteNumber(usageRecord.tokensOut) ??\n finiteNumber(usageRecord.completion_tokens)\n const totalTokens = finiteNumber(usageRecord.totalTokens)\n const cacheReadInputTokens = finiteNumber(usageRecord.cacheReadInputTokens)\n const cacheCreationInputTokens = finiteNumber(usageRecord.cacheCreationInputTokens)\n const reasoningTokens = finiteNumber(usageRecord.reasoningTokens)\n const cost =\n finiteNumber(usageRecord.cost) ??\n finiteNumber(usageRecord.costUsd) ??\n finiteNumber(usageRecord.totalCostUsd) ??\n finiteNumber(data.costUsd) ??\n finiteNumber(data.totalCostUsd)\n if (\n inputTokens === undefined &&\n outputTokens === undefined &&\n totalTokens === undefined &&\n cacheReadInputTokens === undefined &&\n cacheCreationInputTokens === undefined &&\n reasoningTokens === undefined &&\n cost === undefined\n )\n return undefined\n return {\n inputTokens: inputTokens ?? 0,\n outputTokens: outputTokens ?? 0,\n ...(totalTokens !== undefined ? { totalTokens } : {}),\n ...(cacheReadInputTokens !== undefined ? { cacheReadInputTokens } : {}),\n ...(cacheCreationInputTokens !== undefined ? { cacheCreationInputTokens } : {}),\n ...(reasoningTokens !== undefined ? { reasoningTokens } : {}),\n ...(cost !== undefined ? { cost } : {}),\n }\n}\n\nfunction mergeTokenUsage(\n left: TokenUsage | undefined,\n right: TokenUsage | undefined,\n): TokenUsage | undefined {\n if (!left) return right\n if (!right) return left\n return {\n inputTokens: left.inputTokens + right.inputTokens,\n outputTokens: left.outputTokens + right.outputTokens,\n ...(left.totalTokens !== undefined || right.totalTokens !== undefined\n ? { totalTokens: (left.totalTokens ?? 0) + (right.totalTokens ?? 0) }\n : {}),\n ...(left.cacheReadInputTokens !== undefined || right.cacheReadInputTokens !== undefined\n ? {\n cacheReadInputTokens:\n (left.cacheReadInputTokens ?? 0) + (right.cacheReadInputTokens ?? 0),\n }\n : {}),\n ...(left.cacheCreationInputTokens !== undefined || right.cacheCreationInputTokens !== undefined\n ? {\n cacheCreationInputTokens:\n (left.cacheCreationInputTokens ?? 0) + (right.cacheCreationInputTokens ?? 0),\n }\n : {}),\n ...(left.reasoningTokens !== undefined || right.reasoningTokens !== undefined\n ? { reasoningTokens: (left.reasoningTokens ?? 0) + (right.reasoningTokens ?? 0) }\n : {}),\n ...(left.cost !== undefined || right.cost !== undefined\n ? { cost: (left.cost ?? 0) + (right.cost ?? 0) }\n : {}),\n }\n}\n\nfunction finiteNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction agentTurnResultFromPromptResult(result: PromptResult): AgentTurnResult {\n const record = result as unknown as Record<string, unknown>\n const text =\n typeof record.response === 'string'\n ? record.response\n : typeof record.text === 'string'\n ? record.text\n : typeof record.finalText === 'string'\n ? record.finalText\n : ''\n const success = typeof record.success === 'boolean' ? record.success : true\n return {\n text,\n success,\n ...(typeof record.error === 'string' ? { error: record.error } : {}),\n usage: tokenUsageFromData(record),\n }\n}\n\nfunction sandboxDispatchResultFromSessionRef(session: AgentSessionRef): Record<string, unknown> {\n const hasStatus = session.metadata && Object.hasOwn(session.metadata, 'status')\n const status = hasStatus ? sessionStatusFromUnknown(session.metadata?.status) : 'running'\n return {\n sessionId: session.id,\n status,\n alreadyExisted: session.metadata?.alreadyExisted === true,\n }\n}\n\nfunction sessionRefFromSandboxDispatch(dispatched: unknown, providerName: string): AgentSessionRef {\n const record =\n dispatched && typeof dispatched === 'object'\n ? (dispatched as Record<string, unknown>)\n : undefined\n const id = record?.sessionId ?? record?.id\n if (typeof id !== 'string' || id.length === 0) {\n throw new ValidationError('sandboxClientAsProvider: dispatch returned no session id')\n }\n if (!record) {\n throw new ValidationError('sandboxClientAsProvider: dispatch returned no session record')\n }\n return {\n id,\n provider: providerName,\n metadata: {\n ...(record.status ? { status: record.status } : {}),\n ...(record.alreadyExisted !== undefined ? { alreadyExisted: record.alreadyExisted } : {}),\n },\n }\n}\n\nfunction execResultFromSandboxExecResult(result: SandboxExecResult): ExecResult {\n const record = result as unknown as Record<string, unknown>\n const exitCode = finiteNumber(record.exitCode) ?? finiteNumber(record.code)\n if (exitCode === undefined) {\n throw new ValidationError('sandboxClientAsProvider: exec returned no exit code')\n }\n return {\n exitCode,\n stdout: typeof record.stdout === 'string' ? record.stdout : '',\n stderr: typeof record.stderr === 'string' ? record.stderr : '',\n }\n}\n\nfunction statusFromUnknown(status: unknown): AgentEnvironmentStatus {\n if (status === 'pending' || status === 'provisioning' || status === 'running') return status\n if (status === 'stopped' || status === 'failed' || status === 'expired') return status\n if (status === 'completed') return 'stopped'\n if (status === 'cancelled') return 'stopped'\n return 'unknown'\n}\n\nfunction sessionStatusFromUnknown(status: unknown): AgentSessionStatus | null {\n if (status === 'completed' || status === 'cancelled') return status\n return statusFromUnknown(status)\n}\n\nfunction readBoxStatus(box: SandboxInstance): unknown {\n return (box as unknown as { status?: unknown }).status\n}\n\nfunction readBoxMetadata(box: SandboxInstance): Record<string, unknown> | undefined {\n const metadata = (box as unknown as { metadata?: unknown }).metadata\n return metadata && typeof metadata === 'object'\n ? (metadata as Record<string, unknown>)\n : undefined\n}\n\nasync function maybeRefresh(box: SandboxInstance): Promise<void> {\n const refresh = (box as unknown as { refresh?: () => Promise<void> }).refresh\n if (typeof refresh === 'function') await refresh.call(box)\n}\n\nasync function destroyBox(box: SandboxInstance): Promise<void> {\n const deleteBox = (box as unknown as { delete?: () => Promise<void> }).delete\n if (typeof deleteBox === 'function') await deleteBox.call(box)\n}\n\nfunction placementInfoFromLoopPlacement(\n placement: LoopSandboxPlacement | undefined,\n box: SandboxInstance,\n): PlacementInfo {\n if (!placement) return { kind: 'sandbox', sandboxId: String(box.id) }\n return {\n kind: placement.kind === 'fleet' ? 'fleet' : 'sandbox',\n ...(placement.sandboxId ? { sandboxId: placement.sandboxId } : { sandboxId: String(box.id) }),\n ...(placement.fleetId ? { fleetId: placement.fleetId } : {}),\n ...(placement.machineId ? { machineId: placement.machineId } : {}),\n }\n}\n\nfunction defaultTangleSandboxCapabilities(options: {\n namedProfiles: boolean\n}): AgentEnvironmentCapabilities {\n return {\n profile: {\n namedProfiles: options.namedProfiles,\n systemPrompt: true,\n instructions: true,\n tools: true,\n permissions: true,\n mcp: true,\n subagents: true,\n resources: {\n files: true,\n instructions: true,\n tools: true,\n skills: true,\n agents: true,\n commands: true,\n },\n hooks: true,\n modes: true,\n runtimeUpdate: true,\n validation: true,\n },\n streaming: { live: true, replay: true, detach: true, turnIdempotency: true },\n sessions: { continue: true, list: true, messages: true },\n workspace: { read: true, write: true, exec: true, git: true, upload: true, download: true },\n branching: { checkpoint: true, fork: true },\n placement: true,\n usage: true,\n confidential: true,\n }\n}\n\nfunction mergeAbortSignals(a: AbortSignal, b: AbortSignal): AbortSignal {\n const controller = new AbortController()\n const abort = () => controller.abort()\n if (a.aborted || b.aborted) controller.abort()\n else {\n a.addEventListener('abort', abort, { once: true })\n b.addEventListener('abort', abort, { once: true })\n }\n return controller.signal\n}\n\nfunction contentRef(prefix: string, value: unknown): string {\n let str: string\n try {\n str = JSON.stringify(value) ?? String(value)\n } catch {\n str = String(value)\n }\n let hash = 0x811c9dc5\n for (let i = 0; i < str.length; i += 1) {\n hash ^= str.charCodeAt(i)\n hash = Math.imul(hash, 0x01000193)\n }\n return `${prefix}:${(hash >>> 0).toString(16).padStart(8, '0')}`\n}\n\nfunction hasGet(\n client: SandboxClient,\n): client is SandboxClient & { get(id: string): Promise<SandboxInstance | null> } {\n return typeof (client as { get?: unknown }).get === 'function'\n}\n\nfunction hasList(\n client: SandboxClient,\n): client is SandboxClient & { list(options?: unknown): Promise<SandboxInstance[]> } {\n return typeof (client as { list?: unknown }).list === 'function'\n}\n\nfunction hasDispatchPrompt(box: SandboxInstance): box is SandboxInstance & {\n dispatchPrompt(message: string | PromptInputPart[], options?: PromptOptions): Promise<unknown>\n} {\n return typeof (box as { dispatchPrompt?: unknown }).dispatchPrompt === 'function'\n}\n\nfunction hasSession(\n box: SandboxInstance,\n): box is SandboxInstance & { session(id: string): SandboxSessionLike } {\n return typeof (box as { session?: unknown }).session === 'function'\n}\n\nfunction hasRead(box: SandboxInstance): box is SandboxInstance & {\n read(path: string, options?: { sessionId?: string }): Promise<string>\n} {\n return typeof (box as { read?: unknown }).read === 'function'\n}\n\nfunction hasWrite(\n box: SandboxInstance,\n): box is SandboxInstance & { write(path: string, content: string): Promise<void> } {\n return typeof (box as { write?: unknown }).write === 'function'\n}\n\nfunction hasExec(box: SandboxInstance): box is SandboxInstance & {\n exec(command: string, options?: unknown): Promise<SandboxExecResult>\n} {\n return typeof (box as { exec?: unknown }).exec === 'function'\n}\n\ninterface SandboxSessionLike {\n readonly id: string\n status(): Promise<unknown | null>\n events(options?: { since?: string; signal?: AbortSignal }): AsyncIterable<SandboxEvent>\n result(): Promise<PromptResult>\n prompt(message: string | PromptInputPart[], options?: PromptOptions): Promise<PromptResult>\n interrupt(): Promise<unknown>\n}\n"],"mappings":"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"}
@@ -1846,6 +1846,10 @@ interface ProviderExecutorOptions {
1846
1846
  runtime?: Runtime;
1847
1847
  destroyOnSettle?: boolean;
1848
1848
  requireTerminalEvent?: boolean;
1849
+ /** Transform only the profile sent to `provider.create`. The original profile
1850
+ * remains the input to `taskToTurn`, so execution-only normalization cannot
1851
+ * rewrite the caller's task mapping. */
1852
+ profileForCreate?: (profile: AgentProfile$1) => AgentProfile$1;
1849
1853
  taskToTurn?: (task: unknown, specProfile: AgentProfile$1) => AgentTurnInput;
1850
1854
  }
1851
1855
  /** Adapt an environment provider into an `ExecutorFactory` for `createExecutor`.
@@ -1853,4 +1857,4 @@ interface ProviderExecutorOptions {
1853
1857
  declare function providerAsExecutor(provider: AgentEnvironmentProvider, options?: ProviderExecutorOptions): ExecutorFactory<unknown>;
1854
1858
  //#endregion
1855
1859
  export { MaterializedModelIdentity as $, RuntimeEventOtelOptions as $t, providerAsSandboxClient as A, isWaitOutcome as An, WidenGate as At, DefaultVerdict as B, decodeToolPart as Bn, mergeTraceEnv as Bt, ProviderAsSandboxClientOptions as C, PendingWait as Cn, SupervisedResult as Ct, WorkspaceRequest as D, WaitRejection as Dn, UnknownMaterializationReason as Dt, SandboxClientProviderOptions as E, WaitProbeRegistry as En, TreeView as Et, createTangleSandboxExactProcessProvider as F, SessionMessageLike as Fn, readWorkerTraceContext as Ft, ExecutorExecutionBinding as G, ExecutorProgress as Gn, EvalRunsExportConfig as Gt, Executor as H, ActivityLog as Hn, traceContextToEnv as Ht, Agent as I, SessionTraceBox as In, workerTraceEnv as It, ExecutorNodeContext as J, createActivityLog as Jn, LoopSpanNode as Jt, ExecutorFactory as K, ScopeProgressInput as Kn, EvalRunsExportResult as Kt, AgentExecutionRef as L, ToolStepInput as Ln, workerTraceSeamKey as Lt, sandboxClientAsProvider as M, timerAt as Mn, WorkerTraceUnavailableReason as Mt, CreateTangleSandboxExactProcessProviderOptions as N, validateWaitSpec as Nn, WorkerTraceResolver as Nt, createAgentEnvironmentProviderRegistry as O, WaitSpec as On, UsageEvent as Ot, SandboxControlClient as P, waitUntil as Pn, WorkerTraceSeamCarrier as Pt, MaterializedExecutionIdentity as Q, OtelSpan as Qt, AgentSpec as R, TraceSource as Rn, TraceContext as Rt, PlacementInfo as S, sanitizeRuntimeStreamEvent as Sn, SteerableRootHandle as St, ResourceRequest as T, WaitProbe as Tn, SupervisorOpts as Tt, ExecutorAccounting as U, ActivityNote as Un, EvalRunEvent as Ut, ExecutionBindingReceipt as V, sandboxSessionTraceSource as Vn, readTraceContextFromEnv as Vt, ExecutorContext as W, DEFAULT_STALL_AFTER_MS as Wn, EvalRunGeneration as Wt, ExecutorResult as X, OtelExportConfig as Xt, ExecutorRegistry as Y, readWorkerProgress as Yn, OtelAttribute as Yt, Handle as Z, OtelExporter as Zt, CheckpointRequest as _, SanitizedKnowledgeRequirement as _n, SpawnJournal as _t, AgentEnvironmentProviderRef as a, exportEvalRuns as an, ProfileMaterializationReceipt as at, ExecResult as b, sanitizeAgentRuntimeEvent as bn, SpawnRejection as bt, AgentEnvironmentStatus as c, padSpanId as cn, ResumedKeyState as ct, AgentSession as d, RuntimeEventCollector as dn, RootMaterialization as dt, buildLoopOtelSpans as en, NoWinnerError as et, AgentSessionRef as f, RuntimeStreamEventCollector as fn, RootSignal as ft, CheckpointRef as g, SanitizedKnowledgeReadinessReport as gn, SpawnEvent as gt, AgentTurnResult as h, RuntimeTelemetryOptions as hn, Settled as ht, AgentEnvironmentProvider$1 as i, createOtelExporter as in, NodeStatus as it, resolveAgentEnvironmentProvider as j, pollFor as jn, WorkerTraceEvidence as jt, providerAsExecutor as k, createWaitProbes as kn, WaitOpts as kt, AgentEnvironmentSummary as l, padTraceId as ln, ResumedWork as lt, AgentTurnInput$1 as m, RuntimeStreamEventSummary as mn, Scope as mt, AgentEnvironmentCapabilities$1 as n, buildRuntimeEventOtelSpans as nn, NodeId as nt, AgentEnvironmentProviderRegistry as o, generateSpanId as on, Restart as ot, AgentSessionStatus as p, RuntimeStreamEventSink as pn, Runtime as pt, ExecutorMaterialization as q, WorkerProgress as qn, INTELLIGENCE_WIRE_VERSION as qt, AgentEnvironmentEvent as r, createOpenInferenceFileExporter as rn, NodeSnapshot as rt, AgentEnvironmentQuery as s, loopEventToOtelSpan as sn, ResultBlobStore as st, AgentEnvironment as t, buildLoopSpanNodes as tn, NodeExecutionIdentity as tt, AgentProfileRef$1 as u, toOtelAttributes as un, RootHandle as ut, CreateAgentEnvironmentInput$1 as v, createRuntimeEventCollector as vn, SpawnOpts as vt, ProviderExecutorOptions as w, WaitOutcome as wn, Supervisor as wt, ForkRequest as x, sanitizeKnowledgeReadinessReport as xn, Spend as xt, ExecRequest as y, createRuntimeStreamEventCollector as yn, SpawnPrior as yt, Budget as z, createPushTraceSource as zn, createPropagatingTraceEmitter as zt };
1856
- //# sourceMappingURL=environment-provider-CEjwunXO.d.ts.map
1860
+ //# sourceMappingURL=environment-provider-PM9PeW_J.d.ts.map
@@ -1,2 +1,2 @@
1
- import { A as providerAsSandboxClient, C as ProviderAsSandboxClientOptions, D as WorkspaceRequest, E as SandboxClientProviderOptions, F as createTangleSandboxExactProcessProvider, M as sandboxClientAsProvider, N as CreateTangleSandboxExactProcessProviderOptions, O as createAgentEnvironmentProviderRegistry, S as PlacementInfo, T as ResourceRequest, _ as CheckpointRequest, a as AgentEnvironmentProviderRef, b as ExecResult, c as AgentEnvironmentStatus, d as AgentSession, f as AgentSessionRef, g as CheckpointRef, h as AgentTurnResult, i as AgentEnvironmentProvider, j as resolveAgentEnvironmentProvider, k as providerAsExecutor, l as AgentEnvironmentSummary, m as AgentTurnInput, n as AgentEnvironmentCapabilities, o as AgentEnvironmentProviderRegistry, p as AgentSessionStatus, r as AgentEnvironmentEvent, s as AgentEnvironmentQuery, t as AgentEnvironment, u as AgentProfileRef, v as CreateAgentEnvironmentInput, w as ProviderExecutorOptions, x as ForkRequest, y as ExecRequest } from "./environment-provider-CEjwunXO.js";
1
+ import { A as providerAsSandboxClient, C as ProviderAsSandboxClientOptions, D as WorkspaceRequest, E as SandboxClientProviderOptions, F as createTangleSandboxExactProcessProvider, M as sandboxClientAsProvider, N as CreateTangleSandboxExactProcessProviderOptions, O as createAgentEnvironmentProviderRegistry, S as PlacementInfo, T as ResourceRequest, _ as CheckpointRequest, a as AgentEnvironmentProviderRef, b as ExecResult, c as AgentEnvironmentStatus, d as AgentSession, f as AgentSessionRef, g as CheckpointRef, h as AgentTurnResult, i as AgentEnvironmentProvider, j as resolveAgentEnvironmentProvider, k as providerAsExecutor, l as AgentEnvironmentSummary, m as AgentTurnInput, n as AgentEnvironmentCapabilities, o as AgentEnvironmentProviderRegistry, p as AgentSessionStatus, r as AgentEnvironmentEvent, s as AgentEnvironmentQuery, t as AgentEnvironment, u as AgentProfileRef, v as CreateAgentEnvironmentInput, w as ProviderExecutorOptions, x as ForkRequest, y as ExecRequest } from "./environment-provider-PM9PeW_J.js";
2
2
  export { type AgentEnvironment, type AgentEnvironmentCapabilities, type AgentEnvironmentEvent, type AgentEnvironmentProvider, AgentEnvironmentProviderRef, AgentEnvironmentProviderRegistry, type AgentEnvironmentQuery, type AgentEnvironmentStatus, type AgentEnvironmentSummary, type AgentProfileRef, type AgentSession, type AgentSessionRef, type AgentSessionStatus, type AgentTurnInput, type AgentTurnResult, type CheckpointRef, type CheckpointRequest, type CreateAgentEnvironmentInput, type CreateTangleSandboxExactProcessProviderOptions, type ExecRequest, type ExecResult, type ForkRequest, type PlacementInfo, ProviderAsSandboxClientOptions, ProviderExecutorOptions, type ResourceRequest, SandboxClientProviderOptions, type WorkspaceRequest, createAgentEnvironmentProviderRegistry, createTangleSandboxExactProcessProvider, providerAsExecutor, providerAsSandboxClient, resolveAgentEnvironmentProvider, sandboxClientAsProvider };
@@ -1,2 +1,2 @@
1
- import { a as sandboxClientAsProvider, i as resolveAgentEnvironmentProvider, n as providerAsExecutor, o as createTangleSandboxExactProcessProvider, r as providerAsSandboxClient, t as createAgentEnvironmentProviderRegistry } from "./environment-provider-CY22kUQH.js";
1
+ import { a as sandboxClientAsProvider, i as resolveAgentEnvironmentProvider, n as providerAsExecutor, o as createTangleSandboxExactProcessProvider, r as providerAsSandboxClient, t as createAgentEnvironmentProviderRegistry } from "./environment-provider-DqFS6FSZ.js";
2
2
  export { createAgentEnvironmentProviderRegistry, createTangleSandboxExactProcessProvider, providerAsExecutor, providerAsSandboxClient, resolveAgentEnvironmentProvider, sandboxClientAsProvider };
@@ -1,7 +1,7 @@
1
1
  import { i as ConfigError } from "./errors-DEAvWQPy.js";
2
2
  import { $ as parseExactAgentProfile, G as agentCandidateProfileAsAgentProfile, J as candidateMaterializerHarness, K as applyExactAgentProfileDiff, Q as parseAgentCandidateProfileActivation, Y as createAgentCandidateProfileActivation, Z as omitUndefinedObjectFields, ct as omitTopLevelDigest, d as verifiedResourceTextByDigest, f as verifyAgentCandidateBundle, it as canonicalCandidateDocument, n as executePreparedAgentCandidate, nt as canonicalCandidateBytes, q as assertCandidateProfileBinding, rt as canonicalCandidateDigest$1, st as immutableCandidateValue, t as prepareAgentCandidateExecution, ut as verifyCanonicalCandidateDocument } from "./prepare--8EvLqCr.js";
3
- import { Jt as runLocalHarness, Wt as harnessInvocation, xt as runSettledCommand } from "./supervisor-DjZ82HIB.js";
4
- import { E as optimizerMethod, a as defaultStructuralRolloutPolicy } from "./structural-rollout-C4Jv_7vt.js";
3
+ import { $t as concreteProfileModel, Jt as runLocalHarness, Wt as harnessInvocation, xt as runSettledCommand } from "./supervisor-DpjO0Gmy.js";
4
+ import { E as optimizerMethod, a as defaultStructuralRolloutPolicy } from "./structural-rollout-zY0oqQzO.js";
5
5
  import { t as runAnalystLoop } from "./analyst-loop-DvSciOfB.js";
6
6
  import { CostLedger, canonicalJson, makeProposalFinding } from "@tangle-network/agent-eval";
7
7
  import { campaignScenarioIdentity, campaignSplitDigestFromIdentities, compareOptimizationMethods, gitWorktreeAdapter, verifyCodeSurface } from "@tangle-network/agent-eval/campaign";
@@ -119,7 +119,7 @@ function agenticGenerator(opts = {}) {
119
119
  return harnessResult;
120
120
  };
121
121
  if (reproducibleCostLedger) {
122
- const model = opts.profile?.model?.default;
122
+ const model = opts.profile ? concreteProfileModel(opts.profile) : void 0;
123
123
  if (!model) throw new Error("agenticGenerator: reproducible Codex requires profile.model.default");
124
124
  const paid = await reproducibleCostLedger.runPaidCall({
125
125
  channel: "driver",
@@ -372,7 +372,7 @@ function shotReceipt(input) {
372
372
  shot: input.shot + 1,
373
373
  maxShots: input.maxShots,
374
374
  harness: input.harness,
375
- model: input.profile?.model?.default ?? null,
375
+ model: input.profile ? concreteProfileModel(input.profile) ?? null : null,
376
376
  reasoningEffort: input.profile?.model?.reasoningEffort ?? null,
377
377
  promptSha256: sha256(input.prompt),
378
378
  startedAt: input.startedAt.toISOString(),
@@ -2989,4 +2989,4 @@ function sameOrderedValues(left, right) {
2989
2989
  //#endregion
2990
2990
  export { improve as A, agenticGenerator as B, agentImprovementTargetInput as C, buildAgentImprovementActivationTargets as D, assertProfileImprovementTargetsShareIdentity as E, normalizeRolloutPolicy as F, summarizeFindings as G, defaultBuildPrompt as H, parseRolloutPolicy as I, worktreeChangedPaths as K, serializeRolloutPolicy as L, rawTraceDistiller as M, ROLLOUT_POLICY_EXTENSION as N, isAgentImprovementProfileSurface as O, applyRolloutPolicyToProfile as P, structuralRolloutPolicyFromProfile as R, agentImprovementTargetDigest as S, agentProfileImprovementStateDigest as T, rawTraceEvidenceProblem as U, commandVerifier as V, requiresRawTraceEvidence as W, AGENT_IMPROVEMENT_PROFILE_SURFACES as _, executeAgentCandidateExperimentCell as a, agentImprovementProfileSurfaceDigest as b, requireSealedCandidateExperiment as c, verifyAgentImprovementActivation as d, verifyAgentImprovementProposal as f, optimizationActivationReceiptFromMetadata as g, createOptimizationActivationReceipt as h, createAgentImprovementProposal as i, withMethodRuntimeControls as j, isAgentProfileMeasuredSurface as k, reviewAgentImprovementProposal as l, verifyCandidateExecutionEvidence as m, createAgentImprovementActivation as n, proposeAgentImprovement as o, verifyAgentImprovementReview as p, createAgentImprovementMeasuredComparison as r, proposeAgentProfileImprovement as s, AgentCandidateExperimentCellExecutionError as t, runAgentCandidateExperiment as u, AGENT_PROFILE_MEASURED_SURFACES as v, agentImprovementTargetProfileDiffs as w, agentImprovementProfileSurfaceInput as x, agentImprovementProfileDiffs as y, AGENTIC_PROFILE_RESOURCE_ROOT as z };
2991
2991
 
2992
- //# sourceMappingURL=improvement-cycle-BcwsSbT-.js.map
2992
+ //# sourceMappingURL=improvement-cycle-IJgCbKWQ.js.map