@boxrouter/sdk 0.0.1-alpha.0 → 0.12.190
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/NOTICE +29 -5
- package/README.md +497 -24
- package/dist/addresses.d.ts +5 -0
- package/dist/addresses.js +10 -0
- package/dist/api-error.d.ts +62 -0
- package/dist/api-error.js +264 -0
- package/dist/boxrouter.d.ts +68 -0
- package/dist/boxrouter.js +291 -0
- package/dist/browser-session/index.d.ts +17 -0
- package/dist/browser-session/index.js +48 -0
- package/dist/browser-session/operations.gen.d.ts +272 -0
- package/dist/browser-session/operations.gen.js +58 -0
- package/dist/browser-session/responseContracts/api_keys.d.ts +2 -0
- package/dist/browser-session/responseContracts/api_keys.js +10 -0
- package/dist/browser-session/responseContracts/credits.d.ts +2 -0
- package/dist/browser-session/responseContracts/credits.js +8 -0
- package/dist/browser-session/responseContracts/github.d.ts +2 -0
- package/dist/browser-session/responseContracts/github.js +11 -0
- package/dist/browser-session/responseContracts/identity.d.ts +2 -0
- package/dist/browser-session/responseContracts/identity.js +30 -0
- package/dist/browser-session/responseContracts/organizations.d.ts +2 -0
- package/dist/browser-session/responseContracts/organizations.js +17 -0
- package/dist/browser-session/responseContracts/privacy.d.ts +2 -0
- package/dist/browser-session/responseContracts/privacy.js +7 -0
- package/dist/browser-session/responseContracts.gen.d.ts +3 -0
- package/dist/browser-session/responseContracts.gen.js +10 -0
- package/dist/browser-session/responseValidators/api_keys-diagnostics.cjs +1 -0
- package/dist/browser-session/responseValidators/api_keys-diagnostics.d.cts +4 -0
- package/dist/browser-session/responseValidators/api_keys.cjs +2 -0
- package/dist/browser-session/responseValidators/api_keys.d.cts +4 -0
- package/dist/browser-session/responseValidators/credits-diagnostics.cjs +1 -0
- package/dist/browser-session/responseValidators/credits-diagnostics.d.cts +3 -0
- package/dist/browser-session/responseValidators/credits.cjs +2 -0
- package/dist/browser-session/responseValidators/credits.d.cts +3 -0
- package/dist/browser-session/responseValidators/github-diagnostics.cjs +1 -0
- package/dist/browser-session/responseValidators/github-diagnostics.d.cts +3 -0
- package/dist/browser-session/responseValidators/github.cjs +2 -0
- package/dist/browser-session/responseValidators/github.d.cts +3 -0
- package/dist/browser-session/responseValidators/identity-diagnostics.cjs +1 -0
- package/dist/browser-session/responseValidators/identity-diagnostics.d.cts +23 -0
- package/dist/browser-session/responseValidators/identity.cjs +2 -0
- package/dist/browser-session/responseValidators/identity.d.cts +23 -0
- package/dist/browser-session/responseValidators/organizations-diagnostics.cjs +1 -0
- package/dist/browser-session/responseValidators/organizations-diagnostics.d.cts +15 -0
- package/dist/browser-session/responseValidators/organizations.cjs +2 -0
- package/dist/browser-session/responseValidators/organizations.d.cts +15 -0
- package/dist/browser-session/responseValidators/privacy-diagnostics.cjs +1 -0
- package/dist/browser-session/responseValidators/privacy-diagnostics.d.cts +2 -0
- package/dist/browser-session/responseValidators/privacy.cjs +2 -0
- package/dist/browser-session/responseValidators/privacy.d.cts +2 -0
- package/dist/client/client.gen.d.ts +1 -1
- package/dist/client/client.gen.js +46 -94
- package/dist/client/index.d.ts +10 -10
- package/dist/client/index.js +16 -5
- package/dist/client/types.gen.d.ts +6 -6
- package/dist/client/types.gen.js +2 -1
- package/dist/client/utils.gen.d.ts +2 -2
- package/dist/client/utils.gen.js +31 -20
- package/dist/client.gen.d.ts +2 -2
- package/dist/client.gen.js +5 -2
- package/dist/command-check.gen.d.ts +14 -0
- package/dist/command-check.gen.js +23 -0
- package/dist/command-input.gen.d.ts +6 -0
- package/dist/command-input.gen.js +45 -0
- package/dist/core/auth.gen.js +5 -1
- package/dist/core/binaryStream.d.ts +8 -0
- package/dist/core/binaryStream.js +76 -0
- package/dist/core/bodySerializer.gen.d.ts +1 -1
- package/dist/core/bodySerializer.gen.js +8 -5
- package/dist/core/commandValidators.cjs +1 -0
- package/dist/core/commandValidators.d.cts +14 -0
- package/dist/core/eventValidation.d.ts +17 -0
- package/dist/core/eventValidation.js +56 -0
- package/dist/core/eventValidators.cjs +1 -0
- package/dist/core/eventValidators.d.cts +2 -0
- package/dist/core/json.d.ts +3 -0
- package/dist/core/json.js +33 -0
- package/dist/core/params.gen.js +4 -1
- package/dist/core/pathSerializer.gen.js +20 -11
- package/dist/core/queryKeySerializer.gen.js +12 -6
- package/dist/core/responseContracts/actions.d.ts +2 -0
- package/dist/core/responseContracts/actions.js +30 -0
- package/dist/core/responseContracts/agents.d.ts +2 -0
- package/dist/core/responseContracts/agents.js +7 -0
- package/dist/core/responseContracts/artifacts.d.ts +2 -0
- package/dist/core/responseContracts/artifacts.js +8 -0
- package/dist/core/responseContracts/commands.d.ts +2 -0
- package/dist/core/responseContracts/commands.js +6 -0
- package/dist/core/responseContracts/credits.d.ts +2 -0
- package/dist/core/responseContracts/credits.js +27 -0
- package/dist/core/responseContracts/files.d.ts +2 -0
- package/dist/core/responseContracts/files.js +15 -0
- package/dist/core/responseContracts/github.d.ts +2 -0
- package/dist/core/responseContracts/github.js +8 -0
- package/dist/core/responseContracts/images.d.ts +2 -0
- package/dist/core/responseContracts/images.js +8 -0
- package/dist/core/responseContracts/launchRuns.d.ts +2 -0
- package/dist/core/responseContracts/launchRuns.js +10 -0
- package/dist/core/responseContracts/launches.d.ts +2 -0
- package/dist/core/responseContracts/launches.js +10 -0
- package/dist/core/responseContracts/operations.d.ts +2 -0
- package/dist/core/responseContracts/operations.js +7 -0
- package/dist/core/responseContracts/previews.d.ts +2 -0
- package/dist/core/responseContracts/previews.js +8 -0
- package/dist/core/responseContracts/pricing.d.ts +2 -0
- package/dist/core/responseContracts/pricing.js +6 -0
- package/dist/core/responseContracts/processes.d.ts +2 -0
- package/dist/core/responseContracts/processes.js +11 -0
- package/dist/core/responseContracts/provider_accounts.d.ts +2 -0
- package/dist/core/responseContracts/provider_accounts.js +13 -0
- package/dist/core/responseContracts/providers.d.ts +2 -0
- package/dist/core/responseContracts/providers.js +6 -0
- package/dist/core/responseContracts/routing.d.ts +2 -0
- package/dist/core/responseContracts/routing.js +8 -0
- package/dist/core/responseContracts/sandboxes.d.ts +2 -0
- package/dist/core/responseContracts/sandboxes.js +15 -0
- package/dist/core/responseContracts/secrets.d.ts +2 -0
- package/dist/core/responseContracts/secrets.js +8 -0
- package/dist/core/responseContracts/spend_limits.d.ts +2 -0
- package/dist/core/responseContracts/spend_limits.js +8 -0
- package/dist/core/responseContracts/terminals.d.ts +2 -0
- package/dist/core/responseContracts/terminals.js +11 -0
- package/dist/core/responseContracts/usage.d.ts +2 -0
- package/dist/core/responseContracts/usage.js +7 -0
- package/dist/core/responseContracts/volumes.d.ts +2 -0
- package/dist/core/responseContracts/volumes.js +19 -0
- package/dist/core/responseContracts.gen.d.ts +3 -0
- package/dist/core/responseContracts.gen.js +27 -0
- package/dist/core/responseModes.d.ts +19 -0
- package/dist/core/responseModes.js +13 -0
- package/dist/core/responseValidation.d.ts +44 -0
- package/dist/core/responseValidation.js +174 -0
- package/dist/core/responseValidators/actions-diagnostics.cjs +4 -0
- package/dist/core/responseValidators/actions-diagnostics.d.cts +24 -0
- package/dist/core/responseValidators/actions.cjs +2 -0
- package/dist/core/responseValidators/actions.d.cts +24 -0
- package/dist/core/responseValidators/agents-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/agents-diagnostics.d.cts +2 -0
- package/dist/core/responseValidators/agents.cjs +2 -0
- package/dist/core/responseValidators/agents.d.cts +2 -0
- package/dist/core/responseValidators/artifacts-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/artifacts-diagnostics.d.cts +2 -0
- package/dist/core/responseValidators/artifacts.cjs +2 -0
- package/dist/core/responseValidators/artifacts.d.cts +2 -0
- package/dist/core/responseValidators/commands-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/commands-diagnostics.d.cts +1 -0
- package/dist/core/responseValidators/commands.cjs +2 -0
- package/dist/core/responseValidators/commands.d.cts +1 -0
- package/dist/core/responseValidators/compact.cjs +122 -0
- package/dist/core/responseValidators/credits-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/credits-diagnostics.d.cts +21 -0
- package/dist/core/responseValidators/credits.cjs +2 -0
- package/dist/core/responseValidators/credits.d.cts +21 -0
- package/dist/core/responseValidators/files-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/files-diagnostics.d.cts +5 -0
- package/dist/core/responseValidators/files.cjs +2 -0
- package/dist/core/responseValidators/files.d.cts +5 -0
- package/dist/core/responseValidators/github-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/github-diagnostics.d.cts +2 -0
- package/dist/core/responseValidators/github.cjs +2 -0
- package/dist/core/responseValidators/github.d.cts +2 -0
- package/dist/core/responseValidators/images-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/images-diagnostics.d.cts +3 -0
- package/dist/core/responseValidators/images.cjs +2 -0
- package/dist/core/responseValidators/images.d.cts +3 -0
- package/dist/core/responseValidators/launchRuns-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/launchRuns-diagnostics.d.cts +5 -0
- package/dist/core/responseValidators/launchRuns.cjs +2 -0
- package/dist/core/responseValidators/launchRuns.d.cts +5 -0
- package/dist/core/responseValidators/launches-diagnostics.cjs +10 -0
- package/dist/core/responseValidators/launches-diagnostics.d.cts +5 -0
- package/dist/core/responseValidators/launches.cjs +2 -0
- package/dist/core/responseValidators/launches.d.cts +5 -0
- package/dist/core/responseValidators/operations-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/operations-diagnostics.d.cts +2 -0
- package/dist/core/responseValidators/operations.cjs +2 -0
- package/dist/core/responseValidators/operations.d.cts +2 -0
- package/dist/core/responseValidators/previews-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/previews-diagnostics.d.cts +3 -0
- package/dist/core/responseValidators/previews.cjs +2 -0
- package/dist/core/responseValidators/previews.d.cts +3 -0
- package/dist/core/responseValidators/pricing-diagnostics.cjs +7 -0
- package/dist/core/responseValidators/pricing-diagnostics.d.cts +1 -0
- package/dist/core/responseValidators/pricing.cjs +2 -0
- package/dist/core/responseValidators/pricing.d.cts +1 -0
- package/dist/core/responseValidators/processes-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/processes-diagnostics.d.cts +2 -0
- package/dist/core/responseValidators/processes.cjs +2 -0
- package/dist/core/responseValidators/processes.d.cts +2 -0
- package/dist/core/responseValidators/provider_accounts-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/provider_accounts-diagnostics.d.cts +8 -0
- package/dist/core/responseValidators/provider_accounts.cjs +2 -0
- package/dist/core/responseValidators/provider_accounts.d.cts +8 -0
- package/dist/core/responseValidators/providers-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/providers-diagnostics.d.cts +1 -0
- package/dist/core/responseValidators/providers.cjs +2 -0
- package/dist/core/responseValidators/providers.d.cts +1 -0
- package/dist/core/responseValidators/routing-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/routing-diagnostics.d.cts +3 -0
- package/dist/core/responseValidators/routing.cjs +2 -0
- package/dist/core/responseValidators/routing.d.cts +3 -0
- package/dist/core/responseValidators/sandboxes-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/sandboxes-diagnostics.d.cts +10 -0
- package/dist/core/responseValidators/sandboxes.cjs +2 -0
- package/dist/core/responseValidators/sandboxes.d.cts +10 -0
- package/dist/core/responseValidators/secrets-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/secrets-diagnostics.d.cts +1 -0
- package/dist/core/responseValidators/secrets.cjs +2 -0
- package/dist/core/responseValidators/secrets.d.cts +1 -0
- package/dist/core/responseValidators/spend_limits-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/spend_limits-diagnostics.d.cts +3 -0
- package/dist/core/responseValidators/spend_limits.cjs +2 -0
- package/dist/core/responseValidators/spend_limits.d.cts +3 -0
- package/dist/core/responseValidators/terminals-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/terminals-diagnostics.d.cts +2 -0
- package/dist/core/responseValidators/terminals.cjs +2 -0
- package/dist/core/responseValidators/terminals.d.cts +2 -0
- package/dist/core/responseValidators/usage-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/usage-diagnostics.d.cts +1 -0
- package/dist/core/responseValidators/usage.cjs +2 -0
- package/dist/core/responseValidators/usage.d.cts +1 -0
- package/dist/core/responseValidators/volumes-diagnostics.cjs +1 -0
- package/dist/core/responseValidators/volumes-diagnostics.d.cts +10 -0
- package/dist/core/responseValidators/volumes.cjs +2 -0
- package/dist/core/responseValidators/volumes.d.cts +10 -0
- package/dist/core/serverSentEvents.gen.d.ts +21 -62
- package/dist/core/serverSentEvents.gen.js +297 -116
- package/dist/core/streamErrors.d.ts +32 -0
- package/dist/core/streamErrors.js +51 -0
- package/dist/core/types.gen.d.ts +2 -2
- package/dist/core/types.gen.js +2 -1
- package/dist/core/utils.gen.d.ts +1 -1
- package/dist/core/utils.gen.js +16 -10
- package/dist/creation.gen.d.ts +21 -0
- package/dist/creation.gen.js +35 -0
- package/dist/data-origin.d.ts +25 -0
- package/dist/data-origin.js +57 -0
- package/dist/error-codes.gen.d.ts +2 -0
- package/dist/error-codes.gen.js +2 -0
- package/dist/idempotency.gen.d.ts +1 -0
- package/dist/idempotency.gen.js +60 -0
- package/dist/images.d.ts +74 -0
- package/dist/images.js +88 -0
- package/dist/index.d.ts +22 -2
- package/dist/index.js +79 -1
- package/dist/launch-input.gen.d.ts +9 -0
- package/dist/launch-input.gen.js +83 -0
- package/dist/launch.d.ts +28 -0
- package/dist/launch.js +222 -0
- package/dist/namespace-actions.d.mts +307 -0
- package/dist/namespace-actions.mjs +595 -0
- package/dist/namespace-agents.d.mts +33 -0
- package/dist/namespace-agents.mjs +40 -0
- package/dist/namespace-artifacts.d.mts +46 -0
- package/dist/namespace-artifacts.mjs +69 -0
- package/dist/namespace-base.d.mts +7 -0
- package/dist/namespace-base.mjs +7 -0
- package/dist/namespace-commands.d.mts +57 -0
- package/dist/namespace-commands.mjs +57 -0
- package/dist/namespace-credits.d.mts +213 -0
- package/dist/namespace-credits.mjs +476 -0
- package/dist/namespace-files.d.mts +203 -0
- package/dist/namespace-files.mjs +334 -0
- package/dist/namespace-github.d.mts +50 -0
- package/dist/namespace-github.mjs +68 -0
- package/dist/namespace-images.d.mts +52 -0
- package/dist/namespace-images.mjs +78 -0
- package/dist/namespace-launch_runs.d.mts +89 -0
- package/dist/namespace-launch_runs.mjs +133 -0
- package/dist/namespace-launches.d.mts +89 -0
- package/dist/namespace-launches.mjs +133 -0
- package/dist/namespace-operations.d.mts +45 -0
- package/dist/namespace-operations.mjs +52 -0
- package/dist/namespace-previews.d.mts +79 -0
- package/dist/namespace-previews.mjs +101 -0
- package/dist/namespace-pricing.d.mts +31 -0
- package/dist/namespace-pricing.mjs +22 -0
- package/dist/namespace-processes.d.mts +125 -0
- package/dist/namespace-processes.mjs +184 -0
- package/dist/namespace-provider_accounts.d.mts +156 -0
- package/dist/namespace-provider_accounts.mjs +241 -0
- package/dist/namespace-providers.d.mts +28 -0
- package/dist/namespace-providers.mjs +24 -0
- package/dist/namespace-routing.d.mts +64 -0
- package/dist/namespace-routing.mjs +86 -0
- package/dist/namespace-sandboxes.d.mts +287 -0
- package/dist/namespace-sandboxes.mjs +402 -0
- package/dist/namespace-secrets.d.mts +46 -0
- package/dist/namespace-secrets.mjs +68 -0
- package/dist/namespace-spend_limits.d.mts +48 -0
- package/dist/namespace-spend_limits.mjs +70 -0
- package/dist/namespace-terminals.d.mts +112 -0
- package/dist/namespace-terminals.mjs +177 -0
- package/dist/namespace-usage.d.mts +46 -0
- package/dist/namespace-usage.mjs +53 -0
- package/dist/namespace-volumes.d.mts +110 -0
- package/dist/namespace-volumes.mjs +269 -0
- package/dist/operations.d.ts +14 -0
- package/dist/operations.js +31 -0
- package/dist/retry.d.ts +8 -0
- package/dist/retry.js +63 -0
- package/dist/routing-choices.gen.d.ts +132 -0
- package/dist/routing-choices.gen.js +136 -0
- package/dist/routing.d.ts +23 -0
- package/dist/routing.js +38 -0
- package/dist/sandbox-handle.gen.d.ts +8 -0
- package/dist/sandbox-handle.gen.js +14 -0
- package/dist/sandboxes.d.ts +213 -0
- package/dist/sandboxes.js +507 -0
- package/dist/sdk.gen.d.ts +2016 -12
- package/dist/sdk.gen.js +3862 -16
- package/dist/server-timing.d.ts +19 -0
- package/dist/server-timing.gen.d.ts +265 -0
- package/dist/server-timing.gen.js +254 -0
- package/dist/server-timing.js +421 -0
- package/dist/spend-limits.d.ts +17 -0
- package/dist/spend-limits.js +26 -0
- package/dist/telemetry.d.ts +51 -0
- package/dist/telemetry.gen.d.ts +1 -0
- package/dist/telemetry.gen.js +5 -0
- package/dist/telemetry.js +438 -0
- package/dist/terminal.d.ts +61 -0
- package/dist/terminal.js +266 -0
- package/dist/transfer.d.ts +75 -0
- package/dist/transfer.js +389 -0
- package/dist/types.gen.d.ts +14936 -110
- package/dist/types.gen.js +2 -1
- package/dist/user-agent.d.ts +2 -0
- package/dist/user-agent.js +18 -0
- package/dist/version.gen.d.ts +1 -0
- package/dist/version.gen.js +5 -0
- package/dist/volumes.d.ts +33 -0
- package/dist/volumes.js +221 -0
- package/dist/waits.d.ts +31 -0
- package/dist/waits.js +42 -0
- package/dist/workflow-policy.gen.d.ts +41 -0
- package/dist/workflow-policy.gen.js +45 -0
- package/package.json +124 -14
package/dist/index.js
CHANGED
|
@@ -1,2 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
// This file is auto-generated by @hey-api/openapi-ts
|
|
2
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.RANKED_BY_CHOICES = exports.OBJECTIVE_CHOICES = exports.MODE_CHOICES = exports.SORT_CHOICES = exports.CommandFailed = exports.RequestError = exports.APIError = exports.TerminalError = exports.Terminal = exports.WaitTimeoutError = exports.OperationResources = exports.privateImage = exports.ImageResources = exports.SpendLimitResources = exports.RoutingResources = exports.VolumeResources = exports.TransferError = exports.ProcessHandle = exports.SandboxHandle = exports.BoxRouter = exports.Volumes = exports.Usage2 = exports.Terminals = exports.SpendLimits = exports.Secrets = exports.Sandboxes = exports.Runs = exports.Routing = exports.Repositories = exports.Providers = exports.ProviderAccounts = exports.Processes = exports.Pricing = exports.Previews = exports.PoolIdleTime = exports.Policies = exports.Placements = exports.Operations = exports.LaunchRuns = exports.Launches = exports.Jobs = exports.Images = exports.Github = exports.Files = exports.Credits = exports.Commands = exports.BoxRouterApi = exports.Artifacts = exports.Agents = exports.Actions = void 0;
|
|
5
|
+
exports.setRequestPhaseObserver = exports.createServerTimingFetch = exports.IncompleteStream = exports.StreamValidationError = exports.StreamHTTPError = exports.RUNNER_OBJECTIVE_CHOICES = exports.RANKING_REASON_CHOICES = void 0;
|
|
6
|
+
var sdk_gen_1 = require("./sdk.gen");
|
|
7
|
+
Object.defineProperty(exports, "Actions", { enumerable: true, get: function () { return sdk_gen_1.Actions; } });
|
|
8
|
+
Object.defineProperty(exports, "Agents", { enumerable: true, get: function () { return sdk_gen_1.Agents; } });
|
|
9
|
+
Object.defineProperty(exports, "Artifacts", { enumerable: true, get: function () { return sdk_gen_1.Artifacts; } });
|
|
10
|
+
Object.defineProperty(exports, "BoxRouterApi", { enumerable: true, get: function () { return sdk_gen_1.BoxRouterApi; } });
|
|
11
|
+
Object.defineProperty(exports, "Commands", { enumerable: true, get: function () { return sdk_gen_1.Commands; } });
|
|
12
|
+
Object.defineProperty(exports, "Credits", { enumerable: true, get: function () { return sdk_gen_1.Credits; } });
|
|
13
|
+
Object.defineProperty(exports, "Files", { enumerable: true, get: function () { return sdk_gen_1.Files; } });
|
|
14
|
+
Object.defineProperty(exports, "Github", { enumerable: true, get: function () { return sdk_gen_1.Github; } });
|
|
15
|
+
Object.defineProperty(exports, "Images", { enumerable: true, get: function () { return sdk_gen_1.Images; } });
|
|
16
|
+
Object.defineProperty(exports, "Jobs", { enumerable: true, get: function () { return sdk_gen_1.Jobs; } });
|
|
17
|
+
Object.defineProperty(exports, "Launches", { enumerable: true, get: function () { return sdk_gen_1.Launches; } });
|
|
18
|
+
Object.defineProperty(exports, "LaunchRuns", { enumerable: true, get: function () { return sdk_gen_1.LaunchRuns; } });
|
|
19
|
+
Object.defineProperty(exports, "Operations", { enumerable: true, get: function () { return sdk_gen_1.Operations; } });
|
|
20
|
+
Object.defineProperty(exports, "Placements", { enumerable: true, get: function () { return sdk_gen_1.Placements; } });
|
|
21
|
+
Object.defineProperty(exports, "Policies", { enumerable: true, get: function () { return sdk_gen_1.Policies; } });
|
|
22
|
+
Object.defineProperty(exports, "PoolIdleTime", { enumerable: true, get: function () { return sdk_gen_1.PoolIdleTime; } });
|
|
23
|
+
Object.defineProperty(exports, "Previews", { enumerable: true, get: function () { return sdk_gen_1.Previews; } });
|
|
24
|
+
Object.defineProperty(exports, "Pricing", { enumerable: true, get: function () { return sdk_gen_1.Pricing; } });
|
|
25
|
+
Object.defineProperty(exports, "Processes", { enumerable: true, get: function () { return sdk_gen_1.Processes; } });
|
|
26
|
+
Object.defineProperty(exports, "ProviderAccounts", { enumerable: true, get: function () { return sdk_gen_1.ProviderAccounts; } });
|
|
27
|
+
Object.defineProperty(exports, "Providers", { enumerable: true, get: function () { return sdk_gen_1.Providers; } });
|
|
28
|
+
Object.defineProperty(exports, "Repositories", { enumerable: true, get: function () { return sdk_gen_1.Repositories; } });
|
|
29
|
+
Object.defineProperty(exports, "Routing", { enumerable: true, get: function () { return sdk_gen_1.Routing; } });
|
|
30
|
+
Object.defineProperty(exports, "Runs", { enumerable: true, get: function () { return sdk_gen_1.Runs; } });
|
|
31
|
+
Object.defineProperty(exports, "Sandboxes", { enumerable: true, get: function () { return sdk_gen_1.Sandboxes; } });
|
|
32
|
+
Object.defineProperty(exports, "Secrets", { enumerable: true, get: function () { return sdk_gen_1.Secrets; } });
|
|
33
|
+
Object.defineProperty(exports, "SpendLimits", { enumerable: true, get: function () { return sdk_gen_1.SpendLimits; } });
|
|
34
|
+
Object.defineProperty(exports, "Terminals", { enumerable: true, get: function () { return sdk_gen_1.Terminals; } });
|
|
35
|
+
Object.defineProperty(exports, "Usage2", { enumerable: true, get: function () { return sdk_gen_1.Usage; } });
|
|
36
|
+
Object.defineProperty(exports, "Volumes", { enumerable: true, get: function () { return sdk_gen_1.Volumes; } });
|
|
37
|
+
var boxrouter_1 = require("./boxrouter");
|
|
38
|
+
Object.defineProperty(exports, "BoxRouter", { enumerable: true, get: function () { return boxrouter_1.BoxRouter; } });
|
|
39
|
+
var sandboxes_1 = require("./sandboxes");
|
|
40
|
+
Object.defineProperty(exports, "SandboxHandle", { enumerable: true, get: function () { return sandboxes_1.SandboxHandle; } });
|
|
41
|
+
Object.defineProperty(exports, "ProcessHandle", { enumerable: true, get: function () { return sandboxes_1.ProcessHandle; } });
|
|
42
|
+
var transfer_1 = require("./transfer");
|
|
43
|
+
Object.defineProperty(exports, "TransferError", { enumerable: true, get: function () { return transfer_1.TransferError; } });
|
|
44
|
+
var volumes_1 = require("./volumes");
|
|
45
|
+
Object.defineProperty(exports, "VolumeResources", { enumerable: true, get: function () { return volumes_1.VolumeResources; } });
|
|
46
|
+
var routing_1 = require("./routing");
|
|
47
|
+
Object.defineProperty(exports, "RoutingResources", { enumerable: true, get: function () { return routing_1.RoutingResources; } });
|
|
48
|
+
var spend_limits_1 = require("./spend-limits");
|
|
49
|
+
Object.defineProperty(exports, "SpendLimitResources", { enumerable: true, get: function () { return spend_limits_1.SpendLimitResources; } });
|
|
50
|
+
var images_1 = require("./images");
|
|
51
|
+
Object.defineProperty(exports, "ImageResources", { enumerable: true, get: function () { return images_1.ImageResources; } });
|
|
52
|
+
Object.defineProperty(exports, "privateImage", { enumerable: true, get: function () { return images_1.privateImage; } });
|
|
53
|
+
var operations_1 = require("./operations");
|
|
54
|
+
Object.defineProperty(exports, "OperationResources", { enumerable: true, get: function () { return operations_1.OperationResources; } });
|
|
55
|
+
var waits_1 = require("./waits");
|
|
56
|
+
Object.defineProperty(exports, "WaitTimeoutError", { enumerable: true, get: function () { return waits_1.WaitTimeoutError; } });
|
|
57
|
+
var terminal_1 = require("./terminal");
|
|
58
|
+
Object.defineProperty(exports, "Terminal", { enumerable: true, get: function () { return terminal_1.Terminal; } });
|
|
59
|
+
Object.defineProperty(exports, "TerminalError", { enumerable: true, get: function () { return terminal_1.TerminalError; } });
|
|
60
|
+
var api_error_1 = require("./api-error");
|
|
61
|
+
Object.defineProperty(exports, "APIError", { enumerable: true, get: function () { return api_error_1.APIError; } });
|
|
62
|
+
Object.defineProperty(exports, "RequestError", { enumerable: true, get: function () { return api_error_1.RequestError; } });
|
|
63
|
+
var command_check_gen_1 = require("./command-check.gen");
|
|
64
|
+
Object.defineProperty(exports, "CommandFailed", { enumerable: true, get: function () { return command_check_gen_1.CommandFailed; } });
|
|
65
|
+
var routing_choices_gen_1 = require("./routing-choices.gen");
|
|
66
|
+
Object.defineProperty(exports, "SORT_CHOICES", { enumerable: true, get: function () { return routing_choices_gen_1.SORT_CHOICES; } });
|
|
67
|
+
Object.defineProperty(exports, "MODE_CHOICES", { enumerable: true, get: function () { return routing_choices_gen_1.MODE_CHOICES; } });
|
|
68
|
+
Object.defineProperty(exports, "OBJECTIVE_CHOICES", { enumerable: true, get: function () { return routing_choices_gen_1.OBJECTIVE_CHOICES; } });
|
|
69
|
+
Object.defineProperty(exports, "RANKED_BY_CHOICES", { enumerable: true, get: function () { return routing_choices_gen_1.RANKED_BY_CHOICES; } });
|
|
70
|
+
Object.defineProperty(exports, "RANKING_REASON_CHOICES", { enumerable: true, get: function () { return routing_choices_gen_1.RANKING_REASON_CHOICES; } });
|
|
71
|
+
Object.defineProperty(exports, "RUNNER_OBJECTIVE_CHOICES", { enumerable: true, get: function () { return routing_choices_gen_1.RUNNER_OBJECTIVE_CHOICES; } });
|
|
72
|
+
var serverSentEvents_gen_1 = require("./core/serverSentEvents.gen");
|
|
73
|
+
Object.defineProperty(exports, "StreamHTTPError", { enumerable: true, get: function () { return serverSentEvents_gen_1.StreamHTTPError; } });
|
|
74
|
+
var eventValidation_1 = require("./core/eventValidation");
|
|
75
|
+
Object.defineProperty(exports, "StreamValidationError", { enumerable: true, get: function () { return eventValidation_1.StreamValidationError; } });
|
|
76
|
+
Object.defineProperty(exports, "IncompleteStream", { enumerable: true, get: function () { return eventValidation_1.IncompleteStream; } });
|
|
77
|
+
var server_timing_1 = require("./server-timing");
|
|
78
|
+
Object.defineProperty(exports, "createServerTimingFetch", { enumerable: true, get: function () { return server_timing_1.createServerTimingFetch; } });
|
|
79
|
+
var telemetry_1 = require("./telemetry");
|
|
80
|
+
Object.defineProperty(exports, "setRequestPhaseObserver", { enumerable: true, get: function () { return telemetry_1.setRequestPhaseObserver; } });
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface LaunchInputOptions {
|
|
2
|
+
secretNames?: string[];
|
|
3
|
+
provider?: string;
|
|
4
|
+
credentialDelivery?: "prefer_native" | "require_native";
|
|
5
|
+
}
|
|
6
|
+
export declare function launchInputOptions(options: LaunchInputOptions): Record<string, unknown>;
|
|
7
|
+
export declare function normalizeLaunchInputs(options: Record<string, unknown>, declaredSecrets: readonly string[]): Record<string, unknown>;
|
|
8
|
+
export declare function validateLaunchInputs(value: unknown): void;
|
|
9
|
+
export declare function legacySecretMissing(error: unknown, request: Record<string, unknown>): boolean;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.launchInputOptions = launchInputOptions;
|
|
7
|
+
exports.normalizeLaunchInputs = normalizeLaunchInputs;
|
|
8
|
+
exports.validateLaunchInputs = validateLaunchInputs;
|
|
9
|
+
exports.legacySecretMissing = legacySecretMissing;
|
|
10
|
+
const commandValidators_cjs_1 = __importDefault(require("./core/commandValidators.cjs"));
|
|
11
|
+
const POLICY = JSON.parse("{\"secret_names\":{\"option\":\"secret_names\",\"flag\":\"secret\",\"format\":\"name\",\"declared_field\":\"legacy_secret_names\",\"extra_field\":\"additional_secret_refs\",\"reference_field\":\"secret_name\",\"help\":\"Declared legacy names use the existing resolver; other names select saved custom secrets.\"},\"provider\":{\"option\":\"provider\",\"flag\":\"provider\",\"format\":\"name\",\"request_path\":[\"overrides\",\"placement\",\"preferences\",\"only\"],\"help\":\"Pin the launch to one provider.\"},\"credential_delivery\":{\"option\":\"credential_delivery\",\"flag\":\"credential-delivery\",\"format\":\"enum\",\"schema\":\"CredentialDeliveryPolicy\",\"request_field\":\"credential_delivery\",\"help\":\"Choose whether environment fallback is allowed.\"},\"retry\":{\"condition\":\"legacySecretMissing\",\"error_code\":\"secret_missing\",\"name_source\":\"manifest.secrets\",\"exclude_referenced_names\":true}}");
|
|
12
|
+
const DELIVERY_VALUES = ["prefer_native", "require_native"];
|
|
13
|
+
function launchInputOptions(options) {
|
|
14
|
+
return {
|
|
15
|
+
secret_names: options.secretNames,
|
|
16
|
+
provider: options.provider,
|
|
17
|
+
credential_delivery: options.credentialDelivery,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function normalizeLaunchInputs(options, declaredSecrets) {
|
|
21
|
+
if (declaredSecrets.some(name => typeof name !== 'string' || !name))
|
|
22
|
+
throw new TypeError('Invalid launch input');
|
|
23
|
+
const declared = [...new Set(declaredSecrets)];
|
|
24
|
+
const extra = Object.create(null);
|
|
25
|
+
const secretPolicy = POLICY.secret_names;
|
|
26
|
+
const names = options[secretPolicy.option];
|
|
27
|
+
if (names != null) {
|
|
28
|
+
if (!Array.isArray(names) || names.some(name => typeof name !== 'string' || !name))
|
|
29
|
+
throw new TypeError('Invalid launch input');
|
|
30
|
+
for (const name of names)
|
|
31
|
+
if (!declared.includes(name))
|
|
32
|
+
extra[name] = { [secretPolicy.reference_field]: name };
|
|
33
|
+
}
|
|
34
|
+
const result = { [secretPolicy.declared_field]: declared };
|
|
35
|
+
if (Object.keys(extra).length)
|
|
36
|
+
result[secretPolicy.extra_field] = extra;
|
|
37
|
+
const providerPolicy = POLICY.provider;
|
|
38
|
+
const provider = options[providerPolicy.option];
|
|
39
|
+
if (provider != null) {
|
|
40
|
+
if (typeof provider !== 'string' || !provider)
|
|
41
|
+
throw new TypeError('Invalid launch input');
|
|
42
|
+
const path = providerPolicy.request_path;
|
|
43
|
+
if (!Array.isArray(path) || path.length === 0)
|
|
44
|
+
throw new TypeError('Invalid launch input');
|
|
45
|
+
const target = path.slice(0, -1).reduce((node, segment) => {
|
|
46
|
+
const child = node[segment];
|
|
47
|
+
if (!child || typeof child !== 'object' || Array.isArray(child))
|
|
48
|
+
node[segment] = {};
|
|
49
|
+
return node[segment];
|
|
50
|
+
}, result);
|
|
51
|
+
target[path[path.length - 1]] = [provider];
|
|
52
|
+
}
|
|
53
|
+
const deliveryPolicy = POLICY.credential_delivery;
|
|
54
|
+
const delivery = options[deliveryPolicy.option];
|
|
55
|
+
if (delivery != null) {
|
|
56
|
+
if (typeof delivery !== 'string' || !DELIVERY_VALUES.includes(delivery))
|
|
57
|
+
throw new TypeError('Invalid launch input');
|
|
58
|
+
result[deliveryPolicy.request_field] = delivery;
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
function validateLaunchInputs(value) {
|
|
63
|
+
if (!commandValidators_cjs_1.default.launch_inputs(value))
|
|
64
|
+
throw new TypeError('Invalid launch input');
|
|
65
|
+
}
|
|
66
|
+
function legacySecretMissing(error, request) {
|
|
67
|
+
if (!error || typeof error !== 'object')
|
|
68
|
+
return false;
|
|
69
|
+
const body = 'error' in error && error.error && typeof error.error === 'object' ? error.error : error;
|
|
70
|
+
const code = 'code' in body ? body.code : undefined;
|
|
71
|
+
const details = 'details' in body ? body.details : undefined;
|
|
72
|
+
if (code !== 'secret_missing' || !Array.isArray(request.legacy_secret_names) || !details || typeof details !== 'object' || !('names' in details) || !Array.isArray(details.names) || !details.names.length)
|
|
73
|
+
return false;
|
|
74
|
+
const declared = new Set(request.legacy_secret_names);
|
|
75
|
+
const refs = request.additional_secret_refs;
|
|
76
|
+
if (refs != null && (typeof refs !== 'object' || Array.isArray(refs)))
|
|
77
|
+
return false;
|
|
78
|
+
const saved = new Set(Object.keys(refs ?? {}));
|
|
79
|
+
for (const ref of Object.values(refs ?? {}))
|
|
80
|
+
if (ref && typeof ref === 'object' && 'secret_name' in ref)
|
|
81
|
+
saved.add(ref.secret_name);
|
|
82
|
+
return details.names.every(name => typeof name === 'string' && declared.has(name) && !saved.has(name));
|
|
83
|
+
}
|
package/dist/launch.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { BoxRouterApi } from './sdk.gen';
|
|
2
|
+
import type { AgentManifest, Launch, LaunchOperation, LaunchSourceManifest } from './types.gen';
|
|
3
|
+
import { type LaunchInputOptions } from './launch-input.gen';
|
|
4
|
+
import type { PrivateImage } from './images';
|
|
5
|
+
export interface LaunchOptions extends LaunchInputOptions {
|
|
6
|
+
signal?: AbortSignal;
|
|
7
|
+
idempotencyKey?: string;
|
|
8
|
+
repo?: string;
|
|
9
|
+
/** An OCI reference, or the `image` of `privateImage()`; spread `privateImage()` to add its login. */
|
|
10
|
+
image?: string | PrivateImage['image'];
|
|
11
|
+
/** The login for a private `image`; request-only, used once for the setup and never stored. */
|
|
12
|
+
registry_credentials?: PrivateImage['registry_credentials'];
|
|
13
|
+
manifest?: AgentManifest | LaunchSourceManifest;
|
|
14
|
+
name?: string;
|
|
15
|
+
command?: string;
|
|
16
|
+
lifetime?: number;
|
|
17
|
+
onProgress?: (operation: LaunchOperation) => void;
|
|
18
|
+
resolveSecret?: (name: string) => Promise<string> | string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Resolve an agent and wait until its launch operation settles. Returns the launch result, with
|
|
22
|
+
* `interactive` resolved, and the command its terminal starts (none when the launch runs unattended).
|
|
23
|
+
* Rejects with a TimeoutError when the launch is still pending after its bound.
|
|
24
|
+
*/
|
|
25
|
+
export declare function launchAgent(api: BoxRouterApi, agent: string | undefined, options?: LaunchOptions): Promise<{
|
|
26
|
+
launch: Launch;
|
|
27
|
+
terminalCommand: string | undefined;
|
|
28
|
+
}>;
|
package/dist/launch.js
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.launchAgent = launchAgent;
|
|
4
|
+
const api_error_1 = require("./api-error");
|
|
5
|
+
const launch_input_gen_1 = require("./launch-input.gen");
|
|
6
|
+
const workflow_policy_gen_1 = require("./workflow-policy.gen");
|
|
7
|
+
const waits_1 = require("./waits");
|
|
8
|
+
function _launch_pending(operation) {
|
|
9
|
+
return workflow_policy_gen_1.LAUNCH_PENDING.includes(operation.status);
|
|
10
|
+
}
|
|
11
|
+
/** Whether the launch runs attended: the launch's own answer, else the manifest's, else yes. */
|
|
12
|
+
function _launch_interactive(launch, manifest) {
|
|
13
|
+
return (launch.interactive ?? manifest.interactive ?? true) !== false;
|
|
14
|
+
}
|
|
15
|
+
/** The command a launched sandbox's terminal starts; none for an unattended launch. */
|
|
16
|
+
function _launch_terminal_command(manifest, launch) {
|
|
17
|
+
if (!_launch_interactive(launch, manifest))
|
|
18
|
+
return undefined;
|
|
19
|
+
const resolvedSourceCommand = launch.phases.find(phase => phase.name === 'source')?.command;
|
|
20
|
+
return resolvedSourceCommand || ('command' in manifest ? manifest.command : undefined) || undefined;
|
|
21
|
+
}
|
|
22
|
+
function _launch_code(repo) {
|
|
23
|
+
if (repo === undefined)
|
|
24
|
+
return undefined;
|
|
25
|
+
if (!repo || /\s|\0/.test(repo))
|
|
26
|
+
throw new TypeError('Repository override must use owner/repo@ref');
|
|
27
|
+
const separator = repo.indexOf('@');
|
|
28
|
+
const name = repo.slice(0, separator);
|
|
29
|
+
const ref = repo.slice(separator + 1);
|
|
30
|
+
if (separator < 0 || name.split('/').length !== 2 || name.split('/').some(part => !part) || !ref) {
|
|
31
|
+
throw new TypeError('Repository override must use owner/repo@ref');
|
|
32
|
+
}
|
|
33
|
+
return { repo: name, ref };
|
|
34
|
+
}
|
|
35
|
+
function _launch_source(repo) {
|
|
36
|
+
if (!repo || /\s|\0/.test(repo))
|
|
37
|
+
throw new TypeError('Repository source must use owner/repo[@ref]');
|
|
38
|
+
const separator = repo.indexOf('@');
|
|
39
|
+
const name = repo.slice(0, separator < 0 ? undefined : separator);
|
|
40
|
+
const ref = separator < 0 ? workflow_policy_gen_1.LAUNCH_SOURCE_DEFAULT_REF : repo.slice(separator + 1);
|
|
41
|
+
const parts = name.split('/');
|
|
42
|
+
if (parts.length !== 2 || parts.some(part => !part) || !ref) {
|
|
43
|
+
throw new TypeError('Repository source must use owner/repo[@ref]');
|
|
44
|
+
}
|
|
45
|
+
return { repo: name, ref, path: workflow_policy_gen_1.LAUNCH_SOURCE_MANIFEST_PATH };
|
|
46
|
+
}
|
|
47
|
+
function _launch_name(value) {
|
|
48
|
+
let candidate = value.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
|
|
49
|
+
if (!candidate || !/^[a-z]/.test(candidate))
|
|
50
|
+
candidate = `agent-${candidate}`;
|
|
51
|
+
candidate = candidate.slice(0, 63).replace(/-+$/g, '');
|
|
52
|
+
return new RegExp(workflow_policy_gen_1.LAUNCH_CUSTOM_NAME_PATTERN).test(candidate) ? candidate : 'agent';
|
|
53
|
+
}
|
|
54
|
+
function _launch_failure(operation, idempotencyKey) {
|
|
55
|
+
if (!operation.error)
|
|
56
|
+
throw new TypeError('Failed launch operation did not include its API error');
|
|
57
|
+
const response = new Response(JSON.stringify(operation.error), {
|
|
58
|
+
status: Number(operation.failure_status ?? 409),
|
|
59
|
+
headers: { 'Content-Type': 'application/json' },
|
|
60
|
+
});
|
|
61
|
+
return new api_error_1.APIError(operation.error, response, undefined, undefined, idempotencyKey);
|
|
62
|
+
}
|
|
63
|
+
function _missing_secret_names(error) {
|
|
64
|
+
const details = error.error.details;
|
|
65
|
+
if (details === null || typeof details !== 'object' || !('names' in details) ||
|
|
66
|
+
!Array.isArray(details.names) || !details.names.every(name => typeof name === 'string')) {
|
|
67
|
+
throw new TypeError('The missing-secret response did not include valid secret names');
|
|
68
|
+
}
|
|
69
|
+
return details.names;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Resolve an agent and wait until its launch operation settles. Returns the launch result, with
|
|
73
|
+
* `interactive` resolved, and the command its terminal starts (none when the launch runs unattended).
|
|
74
|
+
* Rejects with a TimeoutError when the launch is still pending after its bound.
|
|
75
|
+
*/
|
|
76
|
+
async function launchAgent(api, agent, options = {}) {
|
|
77
|
+
const { signal, idempotencyKey, resolveSecret } = options;
|
|
78
|
+
const { repo, image, registry_credentials: registryCredentials, manifest: inputManifest, name, command, secretNames = [], lifetime, onProgress } = options;
|
|
79
|
+
if (agent !== undefined && !agent)
|
|
80
|
+
throw new TypeError('Agent name must be nonempty');
|
|
81
|
+
if (name !== undefined && !new RegExp(workflow_policy_gen_1.LAUNCH_CUSTOM_NAME_PATTERN).test(name)) {
|
|
82
|
+
throw new TypeError('Custom agent name must be a valid slug');
|
|
83
|
+
}
|
|
84
|
+
if (secretNames.some(secret => typeof secret !== 'string' || !secret)) {
|
|
85
|
+
throw new TypeError('Secret names must be nonempty strings');
|
|
86
|
+
}
|
|
87
|
+
const inputOptions = (0, launch_input_gen_1.launchInputOptions)(options);
|
|
88
|
+
(0, launch_input_gen_1.normalizeLaunchInputs)(inputOptions, []);
|
|
89
|
+
if (agent !== undefined && (image !== undefined || inputManifest !== undefined || name !== undefined ||
|
|
90
|
+
command !== undefined)) {
|
|
91
|
+
throw new TypeError('Choose a catalog agent or one custom launch source');
|
|
92
|
+
}
|
|
93
|
+
if (agent === undefined && [image, repo, inputManifest].filter(value => value !== undefined).length !== 1) {
|
|
94
|
+
throw new TypeError('Choose exactly one of image, repository or manifest');
|
|
95
|
+
}
|
|
96
|
+
if ((typeof image === 'object' && registryCredentials === undefined) ||
|
|
97
|
+
(registryCredentials !== undefined && typeof image !== 'object' && inputManifest === undefined)) {
|
|
98
|
+
throw new TypeError('A private image needs its registry_credentials, and registry_credentials need a private image');
|
|
99
|
+
}
|
|
100
|
+
if (lifetime !== undefined && (!Number.isSafeInteger(lifetime) || lifetime < 1)) {
|
|
101
|
+
throw new TypeError('Lifetime must be a positive integer number of seconds');
|
|
102
|
+
}
|
|
103
|
+
let manifest;
|
|
104
|
+
if (agent !== undefined) {
|
|
105
|
+
manifest = (await api.agents.get({ path: { name: agent }, signal })).manifest;
|
|
106
|
+
}
|
|
107
|
+
else if (repo !== undefined) {
|
|
108
|
+
const source = _launch_source(repo);
|
|
109
|
+
manifest = {
|
|
110
|
+
name: name ?? _launch_name(source.repo.split('/').pop() ?? source.repo),
|
|
111
|
+
source,
|
|
112
|
+
...(command ? { command } : {}),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
else if (image !== undefined) {
|
|
116
|
+
const reference = typeof image === 'string' ? image : image.private_oci;
|
|
117
|
+
const imageName = reference.split('/').pop()?.split('@', 1)[0]?.split(':', 1)[0] ?? reference;
|
|
118
|
+
manifest = {
|
|
119
|
+
name: name ?? _launch_name(imageName),
|
|
120
|
+
image,
|
|
121
|
+
command: command || workflow_policy_gen_1.LAUNCH_DEFAULT_SHELL_COMMAND,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const supplied = inputManifest;
|
|
126
|
+
manifest = {
|
|
127
|
+
...supplied,
|
|
128
|
+
...(name === undefined ? {} : { name }),
|
|
129
|
+
...(command ? { command } : {}),
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
let operation;
|
|
133
|
+
let launchPollDeadline;
|
|
134
|
+
const secretValues = {};
|
|
135
|
+
const code = agent !== undefined ? _launch_code(repo) : undefined;
|
|
136
|
+
const overrides = code || lifetime !== undefined
|
|
137
|
+
? { ...(code ? { code } : {}), ...(lifetime === undefined ? {} : { lifetime_seconds: lifetime }) }
|
|
138
|
+
: undefined;
|
|
139
|
+
const launchInputs = (0, launch_input_gen_1.normalizeLaunchInputs)(inputOptions, 'secrets' in manifest ? manifest.secrets ?? [] : []);
|
|
140
|
+
const selectionInputs = Object.fromEntries(Object.entries(launchInputs).filter(([key]) => key !== 'legacy_secret_names'));
|
|
141
|
+
(0, launch_input_gen_1.validateLaunchInputs)(selectionInputs);
|
|
142
|
+
const requestInputs = {
|
|
143
|
+
...selectionInputs,
|
|
144
|
+
...(registryCredentials === undefined ? {} : { registry_credentials: registryCredentials }),
|
|
145
|
+
};
|
|
146
|
+
const selectedOverrides = requestInputs.overrides;
|
|
147
|
+
const combinedOverrides = overrides || selectedOverrides
|
|
148
|
+
? { ...(overrides ?? {}), ...(selectedOverrides ?? {}) }
|
|
149
|
+
: undefined;
|
|
150
|
+
const key = idempotencyKey ?? globalThis.crypto.randomUUID();
|
|
151
|
+
try {
|
|
152
|
+
const body = agent !== undefined
|
|
153
|
+
? { agent, ...requestInputs, ...(combinedOverrides ? { overrides: combinedOverrides } : {}) }
|
|
154
|
+
: { manifest, ...requestInputs, ...(combinedOverrides ? { overrides: combinedOverrides } : {}) };
|
|
155
|
+
operation = await api.launches.create({
|
|
156
|
+
body,
|
|
157
|
+
headers: { 'Idempotency-Key': key },
|
|
158
|
+
signal,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
if (!(error instanceof api_error_1.APIError))
|
|
163
|
+
throw error;
|
|
164
|
+
if ((0, launch_input_gen_1.legacySecretMissing)(error, launchInputs)) {
|
|
165
|
+
for (const secret_name of _missing_secret_names(error)) {
|
|
166
|
+
if (resolveSecret === undefined) {
|
|
167
|
+
throw new Error(`Launch is missing secret ${secret_name}; set it in the environment or provide a resolver`);
|
|
168
|
+
}
|
|
169
|
+
const value = await resolveSecret(secret_name);
|
|
170
|
+
if (typeof value !== 'string')
|
|
171
|
+
throw new TypeError(`Secret resolver did not return text for ${secret_name}`);
|
|
172
|
+
secretValues[secret_name] = value;
|
|
173
|
+
}
|
|
174
|
+
operation = await api.launches.create({
|
|
175
|
+
body: agent !== undefined
|
|
176
|
+
? { agent, ...requestInputs, secret_values: secretValues,
|
|
177
|
+
...(combinedOverrides ? { overrides: combinedOverrides } : {}) }
|
|
178
|
+
: { manifest, ...requestInputs, secret_values: secretValues,
|
|
179
|
+
...(combinedOverrides ? { overrides: combinedOverrides } : {}) },
|
|
180
|
+
headers: { 'Idempotency-Key': key },
|
|
181
|
+
signal,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
const launchTiming = waits_1.waitHooks.timing({ intervalSeconds: workflow_policy_gen_1.LAUNCH_POLL_INTERVAL_SECONDS, boundSeconds: workflow_policy_gen_1.LAUNCH_BOUND_SECONDS });
|
|
189
|
+
const launchDeadline = waits_1.waitHooks.now() + launchTiming.boundSeconds;
|
|
190
|
+
launchPollDeadline = performance.now() + workflow_policy_gen_1.LAUNCH_OPERATION_NOT_FOUND_GRACE_SECONDS * 1000;
|
|
191
|
+
onProgress?.(operation);
|
|
192
|
+
while (_launch_pending(operation)) {
|
|
193
|
+
if (waits_1.waitHooks.now() + launchTiming.intervalSeconds > launchDeadline) {
|
|
194
|
+
throw new waits_1.WaitTimeoutError(operation.id, `Launch ${operation.id} is still ${operation.status} after ${workflow_policy_gen_1.LAUNCH_BOUND_SECONDS} s; ` +
|
|
195
|
+
'read the operation before launching again');
|
|
196
|
+
}
|
|
197
|
+
await waits_1.waitHooks.sleep(launchTiming.intervalSeconds);
|
|
198
|
+
while (true) {
|
|
199
|
+
signal?.throwIfAborted();
|
|
200
|
+
try {
|
|
201
|
+
operation = await api.launches.getOperation({ path: { operation_id: operation.id }, signal });
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
const remaining = launchPollDeadline - performance.now();
|
|
206
|
+
if (!(error instanceof api_error_1.APIError) || error.response.status !== 404 || remaining <= 0)
|
|
207
|
+
throw error;
|
|
208
|
+
await new Promise(resolve => setTimeout(resolve, Math.min(workflow_policy_gen_1.LAUNCH_OPERATION_POLL_RETRY_INTERVAL_SECONDS * 1000, remaining)));
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
launchPollDeadline = performance.now() + workflow_policy_gen_1.LAUNCH_OPERATION_NOT_FOUND_GRACE_SECONDS * 1000;
|
|
212
|
+
onProgress?.(operation);
|
|
213
|
+
}
|
|
214
|
+
if (operation.status === 'failed')
|
|
215
|
+
throw _launch_failure(operation, key);
|
|
216
|
+
if (operation.status !== 'succeeded' || !operation.result) {
|
|
217
|
+
throw new TypeError('Launch polling stopped before a terminal result');
|
|
218
|
+
}
|
|
219
|
+
const launch = operation.result;
|
|
220
|
+
return { launch: { ...launch, interactive: _launch_interactive(launch, manifest) },
|
|
221
|
+
terminalCommand: _launch_terminal_command(manifest, launch) };
|
|
222
|
+
}
|