@openai/agents-core 0.8.4 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agentToolRunConfig.js +3 -0
- package/dist/agentToolRunConfig.js.map +1 -1
- package/dist/agentToolRunConfig.mjs +3 -0
- package/dist/agentToolRunConfig.mjs.map +1 -1
- package/dist/errors.d.ts +10 -0
- package/dist/errors.js +15 -1
- package/dist/errors.js.map +1 -1
- package/dist/errors.mjs +13 -0
- package/dist/errors.mjs.map +1 -1
- package/dist/handoff.js +1 -1
- package/dist/handoff.js.map +1 -1
- package/dist/handoff.mjs +1 -1
- package/dist/handoff.mjs.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -2
- package/dist/index.mjs.map +1 -1
- package/dist/items.d.ts +13 -0
- package/dist/items.js +15 -0
- package/dist/items.js.map +1 -1
- package/dist/items.mjs +15 -0
- package/dist/items.mjs.map +1 -1
- package/dist/memory/historyMutations.d.ts +6 -0
- package/dist/memory/historyMutations.js +32 -0
- package/dist/memory/historyMutations.js.map +1 -0
- package/dist/memory/historyMutations.mjs +29 -0
- package/dist/memory/historyMutations.mjs.map +1 -0
- package/dist/memory/memorySession.d.ts +3 -2
- package/dist/memory/memorySession.js +7 -0
- package/dist/memory/memorySession.js.map +1 -1
- package/dist/memory/memorySession.mjs +7 -0
- package/dist/memory/memorySession.mjs.map +1 -1
- package/dist/memory/session.d.ts +15 -0
- package/dist/memory/session.js +6 -0
- package/dist/memory/session.js.map +1 -1
- package/dist/memory/session.mjs +5 -0
- package/dist/memory/session.mjs.map +1 -1
- package/dist/metadata.js +2 -2
- package/dist/metadata.mjs +2 -2
- package/dist/model.d.ts +21 -0
- package/dist/run.d.ts +7 -1
- package/dist/run.js +116 -57
- package/dist/run.js.map +1 -1
- package/dist/run.mjs +117 -58
- package/dist/run.mjs.map +1 -1
- package/dist/runState.d.ts +83 -1
- package/dist/runState.js +96 -11
- package/dist/runState.js.map +1 -1
- package/dist/runState.mjs +95 -11
- package/dist/runState.mjs.map +1 -1
- package/dist/runner/errorHandlers.d.ts +13 -4
- package/dist/runner/errorHandlers.js +22 -4
- package/dist/runner/errorHandlers.js.map +1 -1
- package/dist/runner/errorHandlers.mjs +21 -4
- package/dist/runner/errorHandlers.mjs.map +1 -1
- package/dist/runner/items.js +11 -1
- package/dist/runner/items.js.map +1 -1
- package/dist/runner/items.mjs +11 -1
- package/dist/runner/items.mjs.map +1 -1
- package/dist/runner/modelPreparation.d.ts +1 -1
- package/dist/runner/modelPreparation.js +7 -7
- package/dist/runner/modelPreparation.js.map +1 -1
- package/dist/runner/modelPreparation.mjs +7 -7
- package/dist/runner/modelPreparation.mjs.map +1 -1
- package/dist/runner/runLoop.d.ts +2 -1
- package/dist/runner/runLoop.js +2 -2
- package/dist/runner/runLoop.js.map +1 -1
- package/dist/runner/runLoop.mjs +2 -2
- package/dist/runner/runLoop.mjs.map +1 -1
- package/dist/runner/sandbox.d.ts +33 -0
- package/dist/runner/sandbox.js +92 -0
- package/dist/runner/sandbox.js.map +1 -0
- package/dist/runner/sandbox.mjs +83 -0
- package/dist/runner/sandbox.mjs.map +1 -0
- package/dist/runner/toolExecution.js +25 -13
- package/dist/runner/toolExecution.js.map +1 -1
- package/dist/runner/toolExecution.mjs +25 -13
- package/dist/runner/toolExecution.mjs.map +1 -1
- package/dist/runner/tracing.js +1 -0
- package/dist/runner/tracing.js.map +1 -1
- package/dist/runner/tracing.mjs +1 -0
- package/dist/runner/tracing.mjs.map +1 -1
- package/dist/runner/turnPreparation.d.ts +2 -4
- package/dist/runner/turnPreparation.js +7 -3
- package/dist/runner/turnPreparation.js.map +1 -1
- package/dist/runner/turnPreparation.mjs +7 -3
- package/dist/runner/turnPreparation.mjs.map +1 -1
- package/dist/runner/turnResolution.js +158 -31
- package/dist/runner/turnResolution.js.map +1 -1
- package/dist/runner/turnResolution.mjs +160 -33
- package/dist/runner/turnResolution.mjs.map +1 -1
- package/dist/runner/types.d.ts +8 -8
- package/dist/sandbox/agent.d.ts +24 -0
- package/dist/sandbox/agent.js +68 -0
- package/dist/sandbox/agent.js.map +1 -0
- package/dist/sandbox/agent.mjs +64 -0
- package/dist/sandbox/agent.mjs.map +1 -0
- package/dist/sandbox/brand.d.ts +1 -0
- package/dist/sandbox/brand.js +5 -0
- package/dist/sandbox/brand.js.map +1 -0
- package/dist/sandbox/brand.mjs +2 -0
- package/dist/sandbox/brand.mjs.map +1 -0
- package/dist/sandbox/capabilities/base.d.ts +25 -0
- package/dist/sandbox/capabilities/base.js +89 -0
- package/dist/sandbox/capabilities/base.js.map +1 -0
- package/dist/sandbox/capabilities/base.mjs +84 -0
- package/dist/sandbox/capabilities/base.mjs.map +1 -0
- package/dist/sandbox/capabilities/compaction.d.ts +33 -0
- package/dist/sandbox/capabilities/compaction.js +172 -0
- package/dist/sandbox/capabilities/compaction.js.map +1 -0
- package/dist/sandbox/capabilities/compaction.mjs +164 -0
- package/dist/sandbox/capabilities/compaction.mjs.map +1 -0
- package/dist/sandbox/capabilities/filesystem.d.ts +14 -0
- package/dist/sandbox/capabilities/filesystem.js +447 -0
- package/dist/sandbox/capabilities/filesystem.js.map +1 -0
- package/dist/sandbox/capabilities/filesystem.mjs +444 -0
- package/dist/sandbox/capabilities/filesystem.mjs.map +1 -0
- package/dist/sandbox/capabilities/index.d.ts +19 -0
- package/dist/sandbox/capabilities/index.js +31 -0
- package/dist/sandbox/capabilities/index.js.map +1 -0
- package/dist/sandbox/capabilities/index.mjs +17 -0
- package/dist/sandbox/capabilities/index.mjs.map +1 -0
- package/dist/sandbox/capabilities/memory.d.ts +52 -0
- package/dist/sandbox/capabilities/memory.js +290 -0
- package/dist/sandbox/capabilities/memory.js.map +1 -0
- package/dist/sandbox/capabilities/memory.mjs +286 -0
- package/dist/sandbox/capabilities/memory.mjs.map +1 -0
- package/dist/sandbox/capabilities/shell.d.ts +15 -0
- package/dist/sandbox/capabilities/shell.js +130 -0
- package/dist/sandbox/capabilities/shell.js.map +1 -0
- package/dist/sandbox/capabilities/shell.mjs +127 -0
- package/dist/sandbox/capabilities/shell.mjs.map +1 -0
- package/dist/sandbox/capabilities/skills.d.ts +47 -0
- package/dist/sandbox/capabilities/skills.js +453 -0
- package/dist/sandbox/capabilities/skills.js.map +1 -0
- package/dist/sandbox/capabilities/skills.mjs +449 -0
- package/dist/sandbox/capabilities/skills.mjs.map +1 -0
- package/dist/sandbox/capabilities/transport.d.ts +3 -0
- package/dist/sandbox/capabilities/transport.js +33 -0
- package/dist/sandbox/capabilities/transport.js.map +1 -0
- package/dist/sandbox/capabilities/transport.mjs +28 -0
- package/dist/sandbox/capabilities/transport.mjs.map +1 -0
- package/dist/sandbox/client.d.ts +53 -0
- package/dist/sandbox/client.js +34 -0
- package/dist/sandbox/client.js.map +1 -0
- package/dist/sandbox/client.mjs +31 -0
- package/dist/sandbox/client.mjs.map +1 -0
- package/dist/sandbox/entries/factories.d.ts +17 -0
- package/dist/sandbox/entries/factories.js +112 -0
- package/dist/sandbox/entries/factories.js.map +1 -0
- package/dist/sandbox/entries/factories.mjs +94 -0
- package/dist/sandbox/entries/factories.mjs.map +1 -0
- package/dist/sandbox/entries/guards.d.ts +5 -0
- package/dist/sandbox/entries/guards.js +19 -0
- package/dist/sandbox/entries/guards.js.map +1 -0
- package/dist/sandbox/entries/guards.mjs +13 -0
- package/dist/sandbox/entries/guards.mjs.map +1 -0
- package/dist/sandbox/entries/index.d.ts +3 -0
- package/dist/sandbox/entries/index.js +26 -0
- package/dist/sandbox/entries/index.js.map +1 -0
- package/dist/sandbox/entries/index.mjs +3 -0
- package/dist/sandbox/entries/index.mjs.map +1 -0
- package/dist/sandbox/entries/types.d.ts +177 -0
- package/dist/sandbox/entries/types.js +3 -0
- package/dist/sandbox/entries/types.js.map +1 -0
- package/dist/sandbox/entries/types.mjs +2 -0
- package/dist/sandbox/entries/types.mjs.map +1 -0
- package/dist/sandbox/errors.d.ts +151 -0
- package/dist/sandbox/errors.js +303 -0
- package/dist/sandbox/errors.js.map +1 -0
- package/dist/sandbox/errors.mjs +251 -0
- package/dist/sandbox/errors.mjs.map +1 -0
- package/dist/sandbox/events.d.ts +51 -0
- package/dist/sandbox/events.js +104 -0
- package/dist/sandbox/events.js.map +1 -0
- package/dist/sandbox/events.mjs +95 -0
- package/dist/sandbox/events.mjs.map +1 -0
- package/dist/sandbox/index.d.ts +14 -0
- package/dist/sandbox/index.js +31 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sandbox/index.mjs +15 -0
- package/dist/sandbox/index.mjs.map +1 -0
- package/dist/sandbox/internal.d.ts +7 -0
- package/dist/sandbox/internal.js +46 -0
- package/dist/sandbox/internal.js.map +1 -0
- package/dist/sandbox/internal.mjs +8 -0
- package/dist/sandbox/internal.mjs.map +1 -0
- package/dist/sandbox/local.d.ts +3 -0
- package/dist/sandbox/local.js +20 -0
- package/dist/sandbox/local.js.map +1 -0
- package/dist/sandbox/local.mjs +4 -0
- package/dist/sandbox/local.mjs.map +1 -0
- package/dist/sandbox/localSkills.d.ts +13 -0
- package/dist/sandbox/localSkills.js +62 -0
- package/dist/sandbox/localSkills.js.map +1 -0
- package/dist/sandbox/localSkills.mjs +59 -0
- package/dist/sandbox/localSkills.mjs.map +1 -0
- package/dist/sandbox/manifest.d.ts +86 -0
- package/dist/sandbox/manifest.js +553 -0
- package/dist/sandbox/manifest.js.map +1 -0
- package/dist/sandbox/manifest.mjs +545 -0
- package/dist/sandbox/manifest.mjs.map +1 -0
- package/dist/sandbox/memory/generation.d.ts +56 -0
- package/dist/sandbox/memory/generation.js +426 -0
- package/dist/sandbox/memory/generation.js.map +1 -0
- package/dist/sandbox/memory/generation.mjs +385 -0
- package/dist/sandbox/memory/generation.mjs.map +1 -0
- package/dist/sandbox/memory/prompts.d.ts +16 -0
- package/dist/sandbox/memory/prompts.js +1685 -0
- package/dist/sandbox/memory/prompts.js.map +1 -0
- package/dist/sandbox/memory/prompts.mjs +1679 -0
- package/dist/sandbox/memory/prompts.mjs.map +1 -0
- package/dist/sandbox/memory/rollouts.d.ts +33 -0
- package/dist/sandbox/memory/rollouts.js +228 -0
- package/dist/sandbox/memory/rollouts.js.map +1 -0
- package/dist/sandbox/memory/rollouts.mjs +221 -0
- package/dist/sandbox/memory/rollouts.mjs.map +1 -0
- package/dist/sandbox/memory/storage.d.ts +70 -0
- package/dist/sandbox/memory/storage.js +543 -0
- package/dist/sandbox/memory/storage.js.map +1 -0
- package/dist/sandbox/memory/storage.mjs +537 -0
- package/dist/sandbox/memory/storage.mjs.map +1 -0
- package/dist/sandbox/pathGrants.d.ts +11 -0
- package/dist/sandbox/pathGrants.js +28 -0
- package/dist/sandbox/pathGrants.js.map +1 -0
- package/dist/sandbox/pathGrants.mjs +25 -0
- package/dist/sandbox/pathGrants.mjs.map +1 -0
- package/dist/sandbox/permissions.d.ts +29 -0
- package/dist/sandbox/permissions.js +140 -0
- package/dist/sandbox/permissions.js.map +1 -0
- package/dist/sandbox/permissions.mjs +134 -0
- package/dist/sandbox/permissions.mjs.map +1 -0
- package/dist/sandbox/runtime/agentKeys.d.ts +7 -0
- package/dist/sandbox/runtime/agentKeys.js +76 -0
- package/dist/sandbox/runtime/agentKeys.js.map +1 -0
- package/dist/sandbox/runtime/agentKeys.mjs +69 -0
- package/dist/sandbox/runtime/agentKeys.mjs.map +1 -0
- package/dist/sandbox/runtime/agentPreparation.d.ts +20 -0
- package/dist/sandbox/runtime/agentPreparation.js +178 -0
- package/dist/sandbox/runtime/agentPreparation.js.map +1 -0
- package/dist/sandbox/runtime/agentPreparation.mjs +172 -0
- package/dist/sandbox/runtime/agentPreparation.mjs.map +1 -0
- package/dist/sandbox/runtime/index.d.ts +5 -0
- package/dist/sandbox/runtime/index.js +22 -0
- package/dist/sandbox/runtime/index.js.map +1 -0
- package/dist/sandbox/runtime/index.mjs +6 -0
- package/dist/sandbox/runtime/index.mjs.map +1 -0
- package/dist/sandbox/runtime/livePreservedSessions.d.ts +25 -0
- package/dist/sandbox/runtime/livePreservedSessions.js +58 -0
- package/dist/sandbox/runtime/livePreservedSessions.js.map +1 -0
- package/dist/sandbox/runtime/livePreservedSessions.mjs +51 -0
- package/dist/sandbox/runtime/livePreservedSessions.mjs.map +1 -0
- package/dist/sandbox/runtime/manager.d.ts +68 -0
- package/dist/sandbox/runtime/manager.js +704 -0
- package/dist/sandbox/runtime/manager.js.map +1 -0
- package/dist/sandbox/runtime/manager.mjs +697 -0
- package/dist/sandbox/runtime/manager.mjs.map +1 -0
- package/dist/sandbox/runtime/prompts.d.ts +6 -0
- package/dist/sandbox/runtime/prompts.js +108 -0
- package/dist/sandbox/runtime/prompts.js.map +1 -0
- package/dist/sandbox/runtime/prompts.mjs +101 -0
- package/dist/sandbox/runtime/prompts.mjs.map +1 -0
- package/dist/sandbox/runtime/providedSessionManifest.d.ts +3 -0
- package/dist/sandbox/runtime/providedSessionManifest.js +175 -0
- package/dist/sandbox/runtime/providedSessionManifest.js.map +1 -0
- package/dist/sandbox/runtime/providedSessionManifest.mjs +172 -0
- package/dist/sandbox/runtime/providedSessionManifest.mjs.map +1 -0
- package/dist/sandbox/runtime/runAsManifest.d.ts +4 -0
- package/dist/sandbox/runtime/runAsManifest.js +40 -0
- package/dist/sandbox/runtime/runAsManifest.js.map +1 -0
- package/dist/sandbox/runtime/runAsManifest.mjs +36 -0
- package/dist/sandbox/runtime/runAsManifest.mjs.map +1 -0
- package/dist/sandbox/runtime/sessionLifecycle.d.ts +6 -0
- package/dist/sandbox/runtime/sessionLifecycle.js +222 -0
- package/dist/sandbox/runtime/sessionLifecycle.js.map +1 -0
- package/dist/sandbox/runtime/sessionLifecycle.mjs +215 -0
- package/dist/sandbox/runtime/sessionLifecycle.mjs.map +1 -0
- package/dist/sandbox/runtime/sessionSerialization.d.ts +12 -0
- package/dist/sandbox/runtime/sessionSerialization.js +74 -0
- package/dist/sandbox/runtime/sessionSerialization.js.map +1 -0
- package/dist/sandbox/runtime/sessionSerialization.mjs +71 -0
- package/dist/sandbox/runtime/sessionSerialization.mjs.map +1 -0
- package/dist/sandbox/runtime/sessionState.d.ts +26 -0
- package/dist/sandbox/runtime/sessionState.js +113 -0
- package/dist/sandbox/runtime/sessionState.js.map +1 -0
- package/dist/sandbox/runtime/sessionState.mjs +104 -0
- package/dist/sandbox/runtime/sessionState.mjs.map +1 -0
- package/dist/sandbox/runtime/spans.d.ts +1 -0
- package/dist/sandbox/runtime/spans.js +51 -0
- package/dist/sandbox/runtime/spans.js.map +1 -0
- package/dist/sandbox/runtime/spans.mjs +48 -0
- package/dist/sandbox/runtime/spans.mjs.map +1 -0
- package/dist/sandbox/runtime/toolRehydration.d.ts +34 -0
- package/dist/sandbox/runtime/toolRehydration.js +207 -0
- package/dist/sandbox/runtime/toolRehydration.js.map +1 -0
- package/dist/sandbox/runtime/toolRehydration.mjs +200 -0
- package/dist/sandbox/runtime/toolRehydration.mjs.map +1 -0
- package/dist/sandbox/sandboxes/docker.d.ts +75 -0
- package/dist/sandbox/sandboxes/docker.js +2015 -0
- package/dist/sandbox/sandboxes/docker.js.map +1 -0
- package/dist/sandbox/sandboxes/docker.mjs +2010 -0
- package/dist/sandbox/sandboxes/docker.mjs.map +1 -0
- package/dist/sandbox/sandboxes/index.d.ts +3 -0
- package/dist/sandbox/sandboxes/index.js +20 -0
- package/dist/sandbox/sandboxes/index.js.map +1 -0
- package/dist/sandbox/sandboxes/index.mjs +4 -0
- package/dist/sandbox/sandboxes/index.mjs.map +1 -0
- package/dist/sandbox/sandboxes/shared/localSnapshotPaths.d.ts +1 -0
- package/dist/sandbox/sandboxes/shared/localSnapshotPaths.js +22 -0
- package/dist/sandbox/sandboxes/shared/localSnapshotPaths.js.map +1 -0
- package/dist/sandbox/sandboxes/shared/localSnapshotPaths.mjs +19 -0
- package/dist/sandbox/sandboxes/shared/localSnapshotPaths.mjs.map +1 -0
- package/dist/sandbox/sandboxes/shared/localSnapshots.d.ts +34 -0
- package/dist/sandbox/sandboxes/shared/localSnapshots.js +525 -0
- package/dist/sandbox/sandboxes/shared/localSnapshots.js.map +1 -0
- package/dist/sandbox/sandboxes/shared/localSnapshots.mjs +508 -0
- package/dist/sandbox/sandboxes/shared/localSnapshots.mjs.map +1 -0
- package/dist/sandbox/sandboxes/shared/localWorkspace.d.ts +27 -0
- package/dist/sandbox/sandboxes/shared/localWorkspace.js +693 -0
- package/dist/sandbox/sandboxes/shared/localWorkspace.js.map +1 -0
- package/dist/sandbox/sandboxes/shared/localWorkspace.mjs +684 -0
- package/dist/sandbox/sandboxes/shared/localWorkspace.mjs.map +1 -0
- package/dist/sandbox/sandboxes/shared/manifestPersistence.d.ts +15 -0
- package/dist/sandbox/sandboxes/shared/manifestPersistence.js +191 -0
- package/dist/sandbox/sandboxes/shared/manifestPersistence.js.map +1 -0
- package/dist/sandbox/sandboxes/shared/manifestPersistence.mjs +182 -0
- package/dist/sandbox/sandboxes/shared/manifestPersistence.mjs.map +1 -0
- package/dist/sandbox/sandboxes/shared/pty.d.ts +9 -0
- package/dist/sandbox/sandboxes/shared/pty.js +151 -0
- package/dist/sandbox/sandboxes/shared/pty.js.map +1 -0
- package/dist/sandbox/sandboxes/shared/pty.mjs +148 -0
- package/dist/sandbox/sandboxes/shared/pty.mjs.map +1 -0
- package/dist/sandbox/sandboxes/shared/runProcess.d.ts +16 -0
- package/dist/sandbox/sandboxes/shared/runProcess.js +90 -0
- package/dist/sandbox/sandboxes/shared/runProcess.js.map +1 -0
- package/dist/sandbox/sandboxes/shared/runProcess.mjs +86 -0
- package/dist/sandbox/sandboxes/shared/runProcess.mjs.map +1 -0
- package/dist/sandbox/sandboxes/shared/sessionStateValues.d.ts +18 -0
- package/dist/sandbox/sandboxes/shared/sessionStateValues.js +40 -0
- package/dist/sandbox/sandboxes/shared/sessionStateValues.js.map +1 -0
- package/dist/sandbox/sandboxes/shared/sessionStateValues.mjs +35 -0
- package/dist/sandbox/sandboxes/shared/sessionStateValues.mjs.map +1 -0
- package/dist/sandbox/sandboxes/shared/shellCommand.d.ts +17 -0
- package/dist/sandbox/sandboxes/shared/shellCommand.js +38 -0
- package/dist/sandbox/sandboxes/shared/shellCommand.js.map +1 -0
- package/dist/sandbox/sandboxes/shared/shellCommand.mjs +34 -0
- package/dist/sandbox/sandboxes/shared/shellCommand.mjs.map +1 -0
- package/dist/sandbox/sandboxes/types.d.ts +11 -0
- package/dist/sandbox/sandboxes/types.js +3 -0
- package/dist/sandbox/sandboxes/types.js.map +1 -0
- package/dist/sandbox/sandboxes/types.mjs +2 -0
- package/dist/sandbox/sandboxes/types.mjs.map +1 -0
- package/dist/sandbox/sandboxes/unixLocal.d.ts +95 -0
- package/dist/sandbox/sandboxes/unixLocal.js +863 -0
- package/dist/sandbox/sandboxes/unixLocal.js.map +1 -0
- package/dist/sandbox/sandboxes/unixLocal.mjs +858 -0
- package/dist/sandbox/sandboxes/unixLocal.mjs.map +1 -0
- package/dist/sandbox/session.d.ts +123 -0
- package/dist/sandbox/session.js +58 -0
- package/dist/sandbox/session.js.map +1 -0
- package/dist/sandbox/session.mjs +50 -0
- package/dist/sandbox/session.mjs.map +1 -0
- package/dist/sandbox/shared/compare.d.ts +2 -0
- package/dist/sandbox/shared/compare.js +13 -0
- package/dist/sandbox/shared/compare.js.map +1 -0
- package/dist/sandbox/shared/compare.mjs +9 -0
- package/dist/sandbox/shared/compare.mjs.map +1 -0
- package/dist/sandbox/shared/environment.d.ts +14 -0
- package/dist/sandbox/shared/environment.js +69 -0
- package/dist/sandbox/shared/environment.js.map +1 -0
- package/dist/sandbox/shared/environment.mjs +59 -0
- package/dist/sandbox/shared/environment.mjs.map +1 -0
- package/dist/sandbox/shared/hostPath.d.ts +4 -0
- package/dist/sandbox/shared/hostPath.js +22 -0
- package/dist/sandbox/shared/hostPath.js.map +1 -0
- package/dist/sandbox/shared/hostPath.mjs +16 -0
- package/dist/sandbox/shared/hostPath.mjs.map +1 -0
- package/dist/sandbox/shared/manifestCollections.d.ts +12 -0
- package/dist/sandbox/shared/manifestCollections.js +40 -0
- package/dist/sandbox/shared/manifestCollections.js.map +1 -0
- package/dist/sandbox/shared/manifestCollections.mjs +34 -0
- package/dist/sandbox/shared/manifestCollections.mjs.map +1 -0
- package/dist/sandbox/shared/media.d.ts +6 -0
- package/dist/sandbox/shared/media.js +126 -0
- package/dist/sandbox/shared/media.js.map +1 -0
- package/dist/sandbox/shared/media.mjs +119 -0
- package/dist/sandbox/shared/media.mjs.map +1 -0
- package/dist/sandbox/shared/output.d.ts +12 -0
- package/dist/sandbox/shared/output.js +108 -0
- package/dist/sandbox/shared/output.js.map +1 -0
- package/dist/sandbox/shared/output.mjs +103 -0
- package/dist/sandbox/shared/output.mjs.map +1 -0
- package/dist/sandbox/shared/posixPath.d.ts +7 -0
- package/dist/sandbox/shared/posixPath.js +90 -0
- package/dist/sandbox/shared/posixPath.js.map +1 -0
- package/dist/sandbox/shared/posixPath.mjs +81 -0
- package/dist/sandbox/shared/posixPath.mjs.map +1 -0
- package/dist/sandbox/shared/remoteMountCommandAllowlist.d.ts +3 -0
- package/dist/sandbox/shared/remoteMountCommandAllowlist.js +33 -0
- package/dist/sandbox/shared/remoteMountCommandAllowlist.js.map +1 -0
- package/dist/sandbox/shared/remoteMountCommandAllowlist.mjs +28 -0
- package/dist/sandbox/shared/remoteMountCommandAllowlist.mjs.map +1 -0
- package/dist/sandbox/shared/shell.d.ts +1 -0
- package/dist/sandbox/shared/shell.js +7 -0
- package/dist/sandbox/shared/shell.js.map +1 -0
- package/dist/sandbox/shared/shell.mjs +4 -0
- package/dist/sandbox/shared/shell.mjs.map +1 -0
- package/dist/sandbox/shared/stableJson.d.ts +12 -0
- package/dist/sandbox/shared/stableJson.js +40 -0
- package/dist/sandbox/shared/stableJson.js.map +1 -0
- package/dist/sandbox/shared/stableJson.mjs +35 -0
- package/dist/sandbox/shared/stableJson.mjs.map +1 -0
- package/dist/sandbox/shared/typeGuards.d.ts +6 -0
- package/dist/sandbox/shared/typeGuards.js +34 -0
- package/dist/sandbox/shared/typeGuards.js.map +1 -0
- package/dist/sandbox/shared/typeGuards.mjs +26 -0
- package/dist/sandbox/shared/typeGuards.mjs.map +1 -0
- package/dist/sandbox/snapshot.d.ts +60 -0
- package/dist/sandbox/snapshot.js +45 -0
- package/dist/sandbox/snapshot.js.map +1 -0
- package/dist/sandbox/snapshot.mjs +39 -0
- package/dist/sandbox/snapshot.mjs.map +1 -0
- package/dist/sandbox/users.d.ts +11 -0
- package/dist/sandbox/users.js +31 -0
- package/dist/sandbox/users.js.map +1 -0
- package/dist/sandbox/users.mjs +26 -0
- package/dist/sandbox/users.mjs.map +1 -0
- package/dist/sandbox/workspacePaths.d.ts +20 -0
- package/dist/sandbox/workspacePaths.js +73 -0
- package/dist/sandbox/workspacePaths.js.map +1 -0
- package/dist/sandbox/workspacePaths.mjs +69 -0
- package/dist/sandbox/workspacePaths.mjs.map +1 -0
- package/dist/tool.js +1 -1
- package/dist/tool.js.map +1 -1
- package/dist/tool.mjs +1 -1
- package/dist/tool.mjs.map +1 -1
- package/dist/types/protocol.d.ts +8 -0
- package/dist/types/protocol.js +1 -0
- package/dist/types/protocol.js.map +1 -1
- package/dist/types/protocol.mjs +1 -0
- package/dist/types/protocol.mjs.map +1 -1
- package/dist/utils/messages.d.ts +6 -0
- package/dist/utils/messages.js +21 -0
- package/dist/utils/messages.js.map +1 -1
- package/dist/utils/messages.mjs +20 -0
- package/dist/utils/messages.mjs.map +1 -1
- package/dist/utils/strictToolSchema.d.ts +4 -0
- package/dist/utils/strictToolSchema.js +358 -0
- package/dist/utils/strictToolSchema.js.map +1 -0
- package/dist/utils/strictToolSchema.mjs +353 -0
- package/dist/utils/strictToolSchema.mjs.map +1 -0
- package/dist/utils/tools.d.ts +3 -1
- package/dist/utils/tools.js +18 -7
- package/dist/utils/tools.js.map +1 -1
- package/dist/utils/tools.mjs +18 -7
- package/dist/utils/tools.mjs.map +1 -1
- package/dist/utils/zodJsonSchemaCompat.js +18 -16
- package/dist/utils/zodJsonSchemaCompat.js.map +1 -1
- package/dist/utils/zodJsonSchemaCompat.mjs +18 -16
- package/dist/utils/zodJsonSchemaCompat.mjs.map +1 -1
- package/package.json +25 -1
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
import { UserError } from "../../../errors.mjs";
|
|
2
|
+
import { isNoopSnapshotSpec, } from "../../snapshot.mjs";
|
|
3
|
+
import { lstat, mkdir, mkdtemp, open, readdir, realpath, rm, stat, } from 'node:fs/promises';
|
|
4
|
+
import { constants } from 'node:fs';
|
|
5
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
6
|
+
import { dirname, join, relative, sep } from 'node:path';
|
|
7
|
+
import { stableJsonStringify } from "../../shared/stableJson.mjs";
|
|
8
|
+
import { isRecord } from "../../shared/typeGuards.mjs";
|
|
9
|
+
import { isHostPathStrictlyWithinRoot, isHostPathWithinRoot, relativeHostPathEscapesRoot, } from "../../shared/hostPath.mjs";
|
|
10
|
+
import { defaultLocalSnapshotBaseDir } from "./localSnapshotPaths.mjs";
|
|
11
|
+
import { serializeManifest } from "./manifestPersistence.mjs";
|
|
12
|
+
export const LOCAL_SNAPSHOT_FINGERPRINT_VERSION = 'workspace_tree_sha256_v1';
|
|
13
|
+
const SNAPSHOT_FILE_READ_FLAGS = constants.O_RDONLY | constants.O_NOFOLLOW;
|
|
14
|
+
const SNAPSHOT_FILE_WRITE_FLAGS = constants.O_WRONLY |
|
|
15
|
+
constants.O_CREAT |
|
|
16
|
+
constants.O_TRUNC |
|
|
17
|
+
constants.O_NOFOLLOW;
|
|
18
|
+
export async function createLocalSnapshot(state, spec) {
|
|
19
|
+
const snapshotPath = await mkdtempForSnapshot(spec);
|
|
20
|
+
await copyDirectory(state.workspaceRootPath, snapshotPath, localSnapshotExcludedPaths(state));
|
|
21
|
+
return {
|
|
22
|
+
id: randomUUID(),
|
|
23
|
+
type: 'local',
|
|
24
|
+
path: snapshotPath,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export async function createRemoteSnapshot(state, spec) {
|
|
28
|
+
const data = await createWorkspaceArchive(state.workspaceRootPath, localSnapshotExcludedPaths(state));
|
|
29
|
+
const saved = await spec.store.save({
|
|
30
|
+
id: spec.id,
|
|
31
|
+
data,
|
|
32
|
+
metadata: spec.metadata,
|
|
33
|
+
});
|
|
34
|
+
return {
|
|
35
|
+
id: saved.id,
|
|
36
|
+
type: 'remote',
|
|
37
|
+
...(saved.metadata ? { metadata: saved.metadata } : {}),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export async function persistLocalSnapshot(providerName, state, spec) {
|
|
41
|
+
if (isNoopSnapshotSpec(spec)) {
|
|
42
|
+
await replaceLocalSnapshot(state, null);
|
|
43
|
+
replaceLocalSnapshotFingerprint(state, null);
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
if (isRemoteSnapshotSpec(spec)) {
|
|
47
|
+
const fingerprint = await computeLocalSnapshotFingerprint(state);
|
|
48
|
+
const snapshot = await createRemoteSnapshot(state, spec);
|
|
49
|
+
await replaceLocalSnapshot(state, snapshot);
|
|
50
|
+
replaceLocalSnapshotFingerprint(state, fingerprint);
|
|
51
|
+
return snapshot;
|
|
52
|
+
}
|
|
53
|
+
if (spec && spec.type !== 'local') {
|
|
54
|
+
throw new UserError(`${providerName} does not support snapshot specs of type "${spec.type}".`);
|
|
55
|
+
}
|
|
56
|
+
const fingerprint = await computeLocalSnapshotFingerprint(state);
|
|
57
|
+
const snapshot = await createLocalSnapshot(state, spec ?? undefined);
|
|
58
|
+
await replaceLocalSnapshot(state, snapshot);
|
|
59
|
+
replaceLocalSnapshotFingerprint(state, fingerprint);
|
|
60
|
+
return snapshot;
|
|
61
|
+
}
|
|
62
|
+
export function serializeLocalSnapshotSpec(spec) {
|
|
63
|
+
if (!spec) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
if (spec.type === 'remote') {
|
|
67
|
+
return {
|
|
68
|
+
type: 'remote',
|
|
69
|
+
...(typeof spec.id === 'string' ? { id: spec.id } : {}),
|
|
70
|
+
...(spec.metadata ? { metadata: structuredClone(spec.metadata) } : {}),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return structuredClone(spec);
|
|
74
|
+
}
|
|
75
|
+
export function rehydrateLocalSnapshotSpec(serialized, configured) {
|
|
76
|
+
// Remote SnapshotStore implementations can carry functions or credentials, so
|
|
77
|
+
// serialized state stores only lookup fields and reattaches the live configured store.
|
|
78
|
+
if (!isRecord(serialized)) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
if (serialized.type !== 'remote') {
|
|
82
|
+
return structuredClone(serialized);
|
|
83
|
+
}
|
|
84
|
+
if (isRemoteSnapshotSpec(serialized)) {
|
|
85
|
+
return serialized;
|
|
86
|
+
}
|
|
87
|
+
if (!isRemoteSnapshotSpec(configured)) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
const id = typeof serialized.id === 'string' ? serialized.id : configured.id;
|
|
91
|
+
const metadata = isRecord(serialized.metadata)
|
|
92
|
+
? structuredClone(serialized.metadata)
|
|
93
|
+
: configured.metadata;
|
|
94
|
+
return {
|
|
95
|
+
type: 'remote',
|
|
96
|
+
store: configured.store,
|
|
97
|
+
...(id ? { id } : {}),
|
|
98
|
+
...(metadata ? { metadata } : {}),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
export async function replaceLocalSnapshot(state, snapshot) {
|
|
102
|
+
const previousSnapshot = state.snapshot;
|
|
103
|
+
state.snapshot = snapshot;
|
|
104
|
+
if (previousSnapshot?.type === 'local' &&
|
|
105
|
+
previousSnapshot.path !== snapshot?.path &&
|
|
106
|
+
previousSnapshot.path !== state.workspaceRootPath) {
|
|
107
|
+
await rm(previousSnapshot.path, { recursive: true, force: true });
|
|
108
|
+
}
|
|
109
|
+
if (previousSnapshot?.type === 'remote' &&
|
|
110
|
+
previousSnapshot.id !== snapshot?.id) {
|
|
111
|
+
const store = remoteSnapshotStoreFromSpec(state);
|
|
112
|
+
await store?.delete?.({ id: previousSnapshot.id }).catch(() => undefined);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export async function canReuseLocalSnapshotWorkspace(state) {
|
|
116
|
+
if (!(await localSnapshotIsRestorable(state))) {
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
const storedFingerprint = state.snapshotFingerprint;
|
|
120
|
+
const storedVersion = state.snapshotFingerprintVersion;
|
|
121
|
+
if (!storedFingerprint ||
|
|
122
|
+
storedVersion !== LOCAL_SNAPSHOT_FINGERPRINT_VERSION) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
const current = await computeLocalSnapshotFingerprint(state).catch(() => null);
|
|
126
|
+
// The fingerprint covers the persisted manifest plus durable workspace tree; ephemeral
|
|
127
|
+
// paths are intentionally ignored because they are rebuilt after resume.
|
|
128
|
+
return (current?.fingerprint === storedFingerprint &&
|
|
129
|
+
current.version === storedVersion);
|
|
130
|
+
}
|
|
131
|
+
export async function localSnapshotIsRestorable(state) {
|
|
132
|
+
if (state.snapshot?.type === 'remote') {
|
|
133
|
+
const store = remoteSnapshotStoreFromSpec(state);
|
|
134
|
+
if (!store) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
if (store.exists) {
|
|
138
|
+
return await store.exists({ id: state.snapshot.id });
|
|
139
|
+
}
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
return Boolean(state.snapshot?.type === 'local' && (await pathExists(state.snapshot.path)));
|
|
143
|
+
}
|
|
144
|
+
export async function restoreLocalSnapshotToWorkspace(state, workspaceRootPath) {
|
|
145
|
+
if (!(await localSnapshotIsRestorable(state))) {
|
|
146
|
+
throw new UserError('No local snapshot is available to restore.');
|
|
147
|
+
}
|
|
148
|
+
if (state.snapshot?.type === 'remote') {
|
|
149
|
+
const store = remoteSnapshotStoreFromSpec(state);
|
|
150
|
+
if (!store) {
|
|
151
|
+
throw new UserError('No remote snapshot store is available to restore.');
|
|
152
|
+
}
|
|
153
|
+
const restored = await store.load({ id: state.snapshot.id });
|
|
154
|
+
await restoreWorkspaceArchive(restored.data, workspaceRootPath);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
await replaceDirectoryContents(state.snapshot.path, workspaceRootPath);
|
|
158
|
+
}
|
|
159
|
+
state.workspaceRootPath = workspaceRootPath;
|
|
160
|
+
const fingerprint = await computeLocalSnapshotFingerprint(state).catch(() => null);
|
|
161
|
+
replaceLocalSnapshotFingerprint(state, fingerprint);
|
|
162
|
+
return state;
|
|
163
|
+
}
|
|
164
|
+
export async function computeLocalSnapshotFingerprint(state) {
|
|
165
|
+
const hash = createHash('sha256');
|
|
166
|
+
appendHashFrame(hash, 'version', LOCAL_SNAPSHOT_FINGERPRINT_VERSION);
|
|
167
|
+
appendHashFrame(hash, 'manifest', stableJsonStringify(serializeManifest(state.manifest), {
|
|
168
|
+
encodeBytes: (value) => ({
|
|
169
|
+
type: 'Uint8Array',
|
|
170
|
+
data: Buffer.from(value).toString('base64'),
|
|
171
|
+
}),
|
|
172
|
+
}));
|
|
173
|
+
await hashDirectory(hash, state.workspaceRootPath, localSnapshotExcludedPaths(state));
|
|
174
|
+
return {
|
|
175
|
+
fingerprint: hash.digest('hex'),
|
|
176
|
+
version: LOCAL_SNAPSHOT_FINGERPRINT_VERSION,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
function localSnapshotExcludedPaths(state) {
|
|
180
|
+
const paths = state.manifest.ephemeralPersistencePaths();
|
|
181
|
+
for (const path of state.snapshotExcludedPaths ?? []) {
|
|
182
|
+
paths.add(path);
|
|
183
|
+
}
|
|
184
|
+
return paths;
|
|
185
|
+
}
|
|
186
|
+
export async function copyDirectory(sourceRoot, destinationRoot, excludedLogicalPaths = new Set(), currentRelativePath = '', expectedSourceStats, destinationRootPath = destinationRoot) {
|
|
187
|
+
const entries = await readStableSnapshotDirectoryEntries(sourceRoot, expectedSourceStats);
|
|
188
|
+
await assertSafeSnapshotDestinationPath(destinationRootPath, destinationRoot);
|
|
189
|
+
await mkdir(destinationRoot, { recursive: true });
|
|
190
|
+
await assertSafeSnapshotDestinationPath(destinationRootPath, destinationRoot);
|
|
191
|
+
for (const entry of entries) {
|
|
192
|
+
const relativePath = currentRelativePath
|
|
193
|
+
? `${currentRelativePath}/${entry.name}`
|
|
194
|
+
: entry.name;
|
|
195
|
+
if (shouldSkipSnapshotPath(relativePath, excludedLogicalPaths)) {
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
const sourcePath = join(sourceRoot, entry.name);
|
|
199
|
+
const destinationPath = join(destinationRoot, entry.name);
|
|
200
|
+
const sourceStats = await lstat(sourcePath);
|
|
201
|
+
if (sourceStats.isDirectory()) {
|
|
202
|
+
await copyDirectory(sourcePath, destinationPath, excludedLogicalPaths, relativePath, sourceStats, destinationRootPath);
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
if (!sourceStats.isFile()) {
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
await assertSafeSnapshotDestinationPath(destinationRootPath, dirname(destinationPath));
|
|
209
|
+
await mkdir(dirname(destinationPath), { recursive: true });
|
|
210
|
+
await assertSafeSnapshotDestinationPath(destinationRootPath, dirname(destinationPath));
|
|
211
|
+
await writeStableSnapshotFile(destinationRootPath, destinationPath, await readStableSnapshotFile(sourcePath, sourceStats), sourceStats.mode & 0o777);
|
|
212
|
+
const destinationStats = await lstat(destinationPath);
|
|
213
|
+
if (!destinationStats.isFile()) {
|
|
214
|
+
await rm(destinationPath, { recursive: true, force: true });
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
export async function createWorkspaceArchive(sourceRoot, excludedLogicalPaths) {
|
|
219
|
+
// Remote SnapshotStore is provider-agnostic, so its portable fallback is a small
|
|
220
|
+
// JSON/base64 archive instead of relying on host tar availability.
|
|
221
|
+
const archive = {
|
|
222
|
+
version: 1,
|
|
223
|
+
directories: [],
|
|
224
|
+
files: [],
|
|
225
|
+
};
|
|
226
|
+
await appendWorkspaceArchiveEntries(archive, sourceRoot, excludedLogicalPaths);
|
|
227
|
+
return new TextEncoder().encode(JSON.stringify(archive));
|
|
228
|
+
}
|
|
229
|
+
async function appendWorkspaceArchiveEntries(archive, sourceRoot, excludedLogicalPaths, currentRelativePath = '', expectedSourceStats) {
|
|
230
|
+
const entries = await readStableSnapshotDirectoryEntries(sourceRoot, expectedSourceStats);
|
|
231
|
+
for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
|
|
232
|
+
const relativePath = currentRelativePath
|
|
233
|
+
? `${currentRelativePath}/${entry.name}`
|
|
234
|
+
: entry.name;
|
|
235
|
+
if (shouldSkipSnapshotPath(relativePath, excludedLogicalPaths)) {
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
const sourcePath = join(sourceRoot, entry.name);
|
|
239
|
+
const sourceStats = await lstat(sourcePath);
|
|
240
|
+
if (sourceStats.isDirectory()) {
|
|
241
|
+
archive.directories.push(relativePath);
|
|
242
|
+
await appendWorkspaceArchiveEntries(archive, sourcePath, excludedLogicalPaths, relativePath, sourceStats);
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
245
|
+
if (!sourceStats.isFile()) {
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
archive.files.push({
|
|
249
|
+
path: relativePath,
|
|
250
|
+
data: Buffer.from(await readStableSnapshotFile(sourcePath, sourceStats)).toString('base64'),
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
export async function restoreWorkspaceArchive(data, destinationRoot) {
|
|
255
|
+
const archive = JSON.parse(typeof data === 'string'
|
|
256
|
+
? data
|
|
257
|
+
: new TextDecoder().decode(workspaceArchiveDataToUint8Array(data)));
|
|
258
|
+
if (archive.version !== 1) {
|
|
259
|
+
throw new UserError('Unsupported remote snapshot archive version.');
|
|
260
|
+
}
|
|
261
|
+
await mkdir(destinationRoot, { recursive: true });
|
|
262
|
+
await clearDirectory(destinationRoot);
|
|
263
|
+
for (const directory of archive.directories) {
|
|
264
|
+
await writeSafeArchiveDirectory(destinationRoot, directory);
|
|
265
|
+
}
|
|
266
|
+
for (const file of archive.files) {
|
|
267
|
+
await writeSafeArchiveFile(destinationRoot, file.path, file.data);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
function workspaceArchiveDataToUint8Array(data) {
|
|
271
|
+
if (data instanceof Uint8Array) {
|
|
272
|
+
return data;
|
|
273
|
+
}
|
|
274
|
+
return new Uint8Array(data);
|
|
275
|
+
}
|
|
276
|
+
async function writeSafeArchiveDirectory(destinationRoot, relativePath) {
|
|
277
|
+
const destinationPath = safeArchivePath(destinationRoot, relativePath);
|
|
278
|
+
await assertSafeSnapshotDestinationPath(destinationRoot, destinationPath);
|
|
279
|
+
await mkdir(destinationPath, { recursive: true });
|
|
280
|
+
await assertSafeSnapshotDestinationPath(destinationRoot, destinationPath);
|
|
281
|
+
}
|
|
282
|
+
async function writeSafeArchiveFile(destinationRoot, relativePath, base64Data) {
|
|
283
|
+
const destinationPath = safeArchivePath(destinationRoot, relativePath);
|
|
284
|
+
await assertSafeSnapshotDestinationPath(destinationRoot, dirname(destinationPath));
|
|
285
|
+
await mkdir(dirname(destinationPath), { recursive: true });
|
|
286
|
+
await assertSafeSnapshotDestinationPath(destinationRoot, dirname(destinationPath));
|
|
287
|
+
await writeStableSnapshotFile(destinationRoot, destinationPath, Buffer.from(base64Data, 'base64'));
|
|
288
|
+
}
|
|
289
|
+
function safeArchivePath(destinationRoot, relativePath) {
|
|
290
|
+
const destinationPath = join(destinationRoot, relativePath);
|
|
291
|
+
if (!isHostPathStrictlyWithinRoot(destinationRoot, destinationPath)) {
|
|
292
|
+
throw new UserError(`Remote snapshot archive path escapes root: ${relativePath}`);
|
|
293
|
+
}
|
|
294
|
+
return destinationPath;
|
|
295
|
+
}
|
|
296
|
+
async function replaceDirectoryContents(sourceRoot, destinationRoot) {
|
|
297
|
+
await assertSafeSnapshotDestinationPath(destinationRoot, destinationRoot);
|
|
298
|
+
await mkdir(destinationRoot, { recursive: true });
|
|
299
|
+
await assertSafeSnapshotDestinationPath(destinationRoot, destinationRoot);
|
|
300
|
+
await clearDirectory(destinationRoot);
|
|
301
|
+
await copyDirectory(sourceRoot, destinationRoot);
|
|
302
|
+
}
|
|
303
|
+
async function clearDirectory(destinationRoot) {
|
|
304
|
+
await assertSafeSnapshotDestinationPath(destinationRoot, destinationRoot);
|
|
305
|
+
const entries = await readdir(destinationRoot);
|
|
306
|
+
await Promise.all(entries.map(async (entry) => {
|
|
307
|
+
await rm(join(destinationRoot, entry), { recursive: true, force: true });
|
|
308
|
+
}));
|
|
309
|
+
}
|
|
310
|
+
function replaceLocalSnapshotFingerprint(state, fingerprint) {
|
|
311
|
+
state.snapshotFingerprint = fingerprint?.fingerprint ?? null;
|
|
312
|
+
state.snapshotFingerprintVersion = fingerprint?.version ?? null;
|
|
313
|
+
}
|
|
314
|
+
async function mkdtempForSnapshot(spec) {
|
|
315
|
+
const baseDir = spec?.baseDir ?? defaultLocalSnapshotBaseDir();
|
|
316
|
+
await mkdir(baseDir, { recursive: true });
|
|
317
|
+
return await mkdtemp(join(baseDir, 'openai-agents-sandbox-snapshot-'));
|
|
318
|
+
}
|
|
319
|
+
function shouldSkipSnapshotPath(relativePath, excludedLogicalPaths) {
|
|
320
|
+
for (const excluded of excludedLogicalPaths) {
|
|
321
|
+
if (excluded === '' ||
|
|
322
|
+
relativePath === excluded ||
|
|
323
|
+
relativePath.startsWith(`${excluded}/`)) {
|
|
324
|
+
return true;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
export function isRemoteSnapshotSpec(spec) {
|
|
330
|
+
const store = spec?.store;
|
|
331
|
+
return (spec?.type === 'remote' &&
|
|
332
|
+
typeof store === 'object' &&
|
|
333
|
+
store !== null &&
|
|
334
|
+
typeof store.save === 'function' &&
|
|
335
|
+
typeof store.load === 'function');
|
|
336
|
+
}
|
|
337
|
+
function remoteSnapshotStoreFromSpec(state) {
|
|
338
|
+
const spec = state.snapshotSpec;
|
|
339
|
+
return isRemoteSnapshotSpec(spec) ? spec.store : undefined;
|
|
340
|
+
}
|
|
341
|
+
async function pathExists(path) {
|
|
342
|
+
try {
|
|
343
|
+
await stat(path);
|
|
344
|
+
return true;
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
return false;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
async function hashDirectory(hash, rootPath, excludedLogicalPaths, currentRelativePath = '', expectedSourceStats) {
|
|
351
|
+
const entries = await readStableSnapshotDirectoryEntries(rootPath, expectedSourceStats);
|
|
352
|
+
for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
|
|
353
|
+
const relativePath = currentRelativePath
|
|
354
|
+
? `${currentRelativePath}/${entry.name}`
|
|
355
|
+
: entry.name;
|
|
356
|
+
if (shouldSkipSnapshotPath(relativePath, excludedLogicalPaths)) {
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
const entryPath = join(rootPath, entry.name);
|
|
360
|
+
const entryStats = await lstat(entryPath);
|
|
361
|
+
if (entryStats.isDirectory()) {
|
|
362
|
+
appendHashFrame(hash, 'dir', relativePath);
|
|
363
|
+
await hashDirectory(hash, entryPath, excludedLogicalPaths, relativePath, entryStats);
|
|
364
|
+
continue;
|
|
365
|
+
}
|
|
366
|
+
if (!entryStats.isFile()) {
|
|
367
|
+
continue;
|
|
368
|
+
}
|
|
369
|
+
const content = await readStableSnapshotFile(entryPath, entryStats);
|
|
370
|
+
appendHashFrame(hash, 'file', relativePath);
|
|
371
|
+
appendHashFrame(hash, 'bytes', String(content.byteLength));
|
|
372
|
+
hash.update(content);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
async function readStableSnapshotDirectoryEntries(sourceRoot, expectedSourceStats) {
|
|
376
|
+
const sourceStats = await lstat(sourceRoot);
|
|
377
|
+
if (!sourceStats.isDirectory() ||
|
|
378
|
+
(expectedSourceStats &&
|
|
379
|
+
!sameFilesystemEntry(sourceStats, expectedSourceStats))) {
|
|
380
|
+
throw snapshotPathChangedError(sourceRoot);
|
|
381
|
+
}
|
|
382
|
+
const entries = await readdir(sourceRoot, { withFileTypes: true });
|
|
383
|
+
await assertStableSnapshotDirectory(sourceRoot, sourceStats);
|
|
384
|
+
return entries;
|
|
385
|
+
}
|
|
386
|
+
async function assertStableSnapshotDirectory(sourceRoot, expectedSourceStats) {
|
|
387
|
+
const sourceStats = await lstat(sourceRoot);
|
|
388
|
+
if (!sourceStats.isDirectory() ||
|
|
389
|
+
!sameFilesystemEntry(sourceStats, expectedSourceStats)) {
|
|
390
|
+
throw snapshotPathChangedError(sourceRoot);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
async function readStableSnapshotFile(sourcePath, expectedSourceStats) {
|
|
394
|
+
const sourceStats = await lstat(sourcePath);
|
|
395
|
+
if (!sourceStats.isFile() ||
|
|
396
|
+
!sameFilesystemEntry(sourceStats, expectedSourceStats)) {
|
|
397
|
+
throw snapshotPathChangedError(sourcePath);
|
|
398
|
+
}
|
|
399
|
+
let handle;
|
|
400
|
+
try {
|
|
401
|
+
handle = await open(sourcePath, SNAPSHOT_FILE_READ_FLAGS);
|
|
402
|
+
}
|
|
403
|
+
catch (error) {
|
|
404
|
+
if (isPathChangedError(error)) {
|
|
405
|
+
throw snapshotPathChangedError(sourcePath);
|
|
406
|
+
}
|
|
407
|
+
throw error;
|
|
408
|
+
}
|
|
409
|
+
try {
|
|
410
|
+
const openedStats = await handle.stat();
|
|
411
|
+
if (!openedStats.isFile() ||
|
|
412
|
+
!sameFilesystemEntry(openedStats, sourceStats)) {
|
|
413
|
+
throw snapshotPathChangedError(sourcePath);
|
|
414
|
+
}
|
|
415
|
+
return await handle.readFile();
|
|
416
|
+
}
|
|
417
|
+
finally {
|
|
418
|
+
await handle.close();
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
async function writeStableSnapshotFile(destinationRoot, destinationPath, content, mode) {
|
|
422
|
+
await assertSafeSnapshotDestinationPath(destinationRoot, destinationPath);
|
|
423
|
+
let handle;
|
|
424
|
+
try {
|
|
425
|
+
handle = await open(destinationPath, SNAPSHOT_FILE_WRITE_FLAGS, mode);
|
|
426
|
+
}
|
|
427
|
+
catch (error) {
|
|
428
|
+
if (isPathChangedError(error)) {
|
|
429
|
+
throw snapshotPathChangedError(destinationPath);
|
|
430
|
+
}
|
|
431
|
+
throw error;
|
|
432
|
+
}
|
|
433
|
+
try {
|
|
434
|
+
await handle.writeFile(content);
|
|
435
|
+
if (mode !== undefined) {
|
|
436
|
+
await handle.chmod(mode);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
finally {
|
|
440
|
+
await handle.close();
|
|
441
|
+
}
|
|
442
|
+
await assertSafeSnapshotDestinationPath(destinationRoot, destinationPath);
|
|
443
|
+
}
|
|
444
|
+
async function assertSafeSnapshotDestinationPath(destinationRoot, destinationPath) {
|
|
445
|
+
const rootStats = await lstat(destinationRoot).catch(() => undefined);
|
|
446
|
+
if (!rootStats?.isDirectory() || rootStats.isSymbolicLink()) {
|
|
447
|
+
throw snapshotPathChangedError(destinationRoot);
|
|
448
|
+
}
|
|
449
|
+
const rootRealPath = await realpath(destinationRoot).catch(() => {
|
|
450
|
+
throw snapshotPathChangedError(destinationRoot);
|
|
451
|
+
});
|
|
452
|
+
const relativeDestination = relative(destinationRoot, destinationPath);
|
|
453
|
+
if (relativeHostPathEscapesRoot(relativeDestination)) {
|
|
454
|
+
throw snapshotPathChangedError(destinationPath);
|
|
455
|
+
}
|
|
456
|
+
if (relativeDestination === '') {
|
|
457
|
+
return;
|
|
458
|
+
}
|
|
459
|
+
let current = destinationRoot;
|
|
460
|
+
for (const segment of relativeDestination.split(sep)) {
|
|
461
|
+
if (!segment) {
|
|
462
|
+
continue;
|
|
463
|
+
}
|
|
464
|
+
current = join(current, segment);
|
|
465
|
+
const currentStats = await lstat(current).catch((error) => {
|
|
466
|
+
if (error.code === 'ENOENT') {
|
|
467
|
+
return undefined;
|
|
468
|
+
}
|
|
469
|
+
throw error;
|
|
470
|
+
});
|
|
471
|
+
if (!currentStats) {
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
if (currentStats.isSymbolicLink()) {
|
|
475
|
+
throw snapshotPathChangedError(current);
|
|
476
|
+
}
|
|
477
|
+
const currentRealPath = await realpath(current).catch(() => {
|
|
478
|
+
throw snapshotPathChangedError(current);
|
|
479
|
+
});
|
|
480
|
+
if (!isHostPathWithinRoot(rootRealPath, currentRealPath)) {
|
|
481
|
+
throw snapshotPathChangedError(current);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
function snapshotPathChangedError(path) {
|
|
486
|
+
return new UserError(`Sandbox snapshot path changed while copying: ${path}`);
|
|
487
|
+
}
|
|
488
|
+
function isPathChangedError(error) {
|
|
489
|
+
return (typeof error === 'object' &&
|
|
490
|
+
error !== null &&
|
|
491
|
+
'code' in error &&
|
|
492
|
+
(error.code === 'ELOOP' ||
|
|
493
|
+
error.code === 'ENOENT' ||
|
|
494
|
+
error.code === 'ENOTDIR'));
|
|
495
|
+
}
|
|
496
|
+
function sameFilesystemEntry(left, right) {
|
|
497
|
+
return left.dev === right.dev && left.ino === right.ino;
|
|
498
|
+
}
|
|
499
|
+
function appendHashFrame(hash, label, value) {
|
|
500
|
+
// Length-delimited frames avoid collisions such as ["ab", "c"] vs ["a", "bc"].
|
|
501
|
+
hash.update(label);
|
|
502
|
+
hash.update('\0');
|
|
503
|
+
hash.update(String(value.length));
|
|
504
|
+
hash.update('\0');
|
|
505
|
+
hash.update(value);
|
|
506
|
+
hash.update('\0');
|
|
507
|
+
}
|
|
508
|
+
//# sourceMappingURL=localSnapshots.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localSnapshots.mjs","sourceRoot":"","sources":["../../../../src/sandbox/sandboxes/shared/localSnapshots.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { SandboxConcurrencyLimits } from '../../client';
|
|
2
|
+
import type { Entry, Mount, TypedMount } from '../../entries';
|
|
3
|
+
import { Manifest } from '../../manifest';
|
|
4
|
+
type MaterializeLocalWorkspaceOptions = {
|
|
5
|
+
concurrencyLimits?: SandboxConcurrencyLimits;
|
|
6
|
+
manifestRoot?: string;
|
|
7
|
+
allowLocalBindMounts?: boolean;
|
|
8
|
+
allowIdentityMetadata?: boolean;
|
|
9
|
+
supportsMount?: (entry: Mount | TypedMount) => boolean;
|
|
10
|
+
materializeMount?: (args: {
|
|
11
|
+
logicalPath: string;
|
|
12
|
+
entry: Mount | TypedMount;
|
|
13
|
+
}) => Promise<void>;
|
|
14
|
+
};
|
|
15
|
+
type LocalWorkspaceManifestMetadataOptions = {
|
|
16
|
+
allowLocalBindMounts?: boolean;
|
|
17
|
+
allowIdentityMetadata?: boolean;
|
|
18
|
+
supportsMount?: (entry: Mount | TypedMount) => boolean;
|
|
19
|
+
};
|
|
20
|
+
export declare function materializeLocalWorkspaceManifest(manifest: Manifest, workspaceRootPath: string, options?: MaterializeLocalWorkspaceOptions): Promise<void>;
|
|
21
|
+
export declare function assertLocalWorkspaceManifestMetadataSupported(providerName: string, manifest: Manifest, options?: LocalWorkspaceManifestMetadataOptions): void;
|
|
22
|
+
export declare function materializeLocalWorkspaceManifestEntry(workspaceRootPath: string, logicalPath: string, entry: Entry, options?: MaterializeLocalWorkspaceOptions): Promise<void>;
|
|
23
|
+
export declare function materializeLocalWorkspaceManifestMounts(manifest: Manifest, workspaceRootPath: string, options?: MaterializeLocalWorkspaceOptions): Promise<void>;
|
|
24
|
+
export declare function applyOwnershipRecursive(targetPath: string, uid: number, gid: number): Promise<void>;
|
|
25
|
+
export declare function pathExists(path: string): Promise<boolean>;
|
|
26
|
+
export declare function joinSandboxLogicalPath(root: string, logicalPath: string): string;
|
|
27
|
+
export {};
|