@the-open-engine/zeroshot 6.35.3 → 6.37.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/cli/index.js +99 -29
- package/lib/agent-cli-provider/adapters/omp.js +1 -1
- package/lib/agent-cli-provider/adapters/omp.js.map +1 -1
- package/lib/hosted-target/adapter-types.d.cts +0 -8
- package/lib/hosted-target/adapter-types.d.mts +0 -8
- package/lib/hosted-target/adapter-types.d.ts +0 -8
- package/lib/hosted-target/index.d.cts +1 -1
- package/lib/hosted-target/index.d.mts +1 -1
- package/lib/hosted-target/index.d.ts +1 -1
- package/lib/hosted-target/retry-executor.d.cts +1 -1
- package/lib/hosted-target/retry-executor.d.mts +1 -1
- package/lib/hosted-target/retry-executor.d.ts +1 -1
- package/lib/hosted-target/target-adapter.d.cts +1 -1
- package/lib/hosted-target/target-adapter.d.mts +1 -1
- package/lib/hosted-target/target-adapter.d.ts +1 -1
- package/lib/hosted-target/zero-cloud-v1-adapter.cjs +0 -29
- package/lib/hosted-target/zero-cloud-v1-adapter.d.cts +0 -2
- package/lib/hosted-target/zero-cloud-v1-adapter.d.mts +0 -2
- package/lib/hosted-target/zero-cloud-v1-adapter.d.ts +0 -2
- package/lib/hosted-target/zero-cloud-v1-adapter.mjs +0 -29
- package/lib/target/discovery-sections.cjs +2 -21
- package/lib/target/discovery-sections.d.cts +0 -2
- package/lib/target/discovery-sections.d.mts +0 -2
- package/lib/target/discovery-sections.d.ts +0 -2
- package/lib/target/discovery-sections.js +2 -21
- package/lib/target/discovery-sections.mjs +3 -22
- package/lib/target/discovery-validation.cjs +4 -28
- package/lib/target/discovery-validation.d.cts +0 -10
- package/lib/target/discovery-validation.d.mts +0 -10
- package/lib/target/discovery-validation.d.ts +0 -10
- package/lib/target/discovery-validation.js +4 -28
- package/lib/target/discovery-validation.mjs +4 -27
- package/lib/target/discovery.cjs +0 -1
- package/lib/target/discovery.d.cts +0 -3
- package/lib/target/discovery.d.mts +0 -3
- package/lib/target/discovery.d.ts +0 -3
- package/lib/target/discovery.js +0 -1
- package/lib/target/discovery.mjs +1 -2
- package/lib/target/index.d.ts +1 -1
- package/lib/target/run-intent-discovery.cjs +3 -1
- package/lib/target/run-intent-discovery.js +3 -1
- package/lib/target/run-intent-discovery.mjs +4 -2
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/src/agent/agent-lifecycle.js +25 -76
- package/src/agent/agent-liveness-poll.js +93 -0
- package/src/agent/agent-task-executor.js +19 -3
- package/src/agent-cli-provider/adapters/omp.ts +1 -1
- package/src/foreground-benchmark-files.js +81 -0
- package/src/foreground-benchmark-result.js +233 -0
- package/src/foreground-benchmark-run.js +72 -0
- package/src/hosted-target/adapter-types.ts +0 -14
- package/src/hosted-target/index.ts +0 -1
- package/src/hosted-target/retry-executor.ts +12 -14
- package/src/hosted-target/target-adapter.ts +1 -5
- package/src/hosted-target/zero-cloud-v1-adapter.ts +0 -37
- package/src/target/discovery-sections.ts +3 -28
- package/src/target/discovery-validation.ts +15 -61
- package/src/target/discovery.ts +1 -9
- package/src/target/index.ts +0 -1
- package/src/target/run-intent-discovery.ts +3 -2
- package/task-lib/runner.js +7 -0
- package/lib/hosted-target/runtime-install.cjs +0 -45
- package/lib/hosted-target/runtime-install.d.cts +0 -14
- package/lib/hosted-target/runtime-install.d.mts +0 -14
- package/lib/hosted-target/runtime-install.d.ts +0 -14
- package/lib/hosted-target/runtime-install.mjs +0 -42
- package/src/hosted-target/runtime-install.ts +0 -83
package/cli/index.js
CHANGED
|
@@ -73,6 +73,11 @@ const {
|
|
|
73
73
|
resolveEffectiveRunPlan,
|
|
74
74
|
} = require('../lib/start-cluster');
|
|
75
75
|
const { requirePreflight } = require('../src/preflight');
|
|
76
|
+
const {
|
|
77
|
+
exitCodeForResult,
|
|
78
|
+
isForegroundStatusSettled,
|
|
79
|
+
writeForegroundResult,
|
|
80
|
+
} = require('../src/foreground-benchmark-run');
|
|
76
81
|
const {
|
|
77
82
|
createUnsupportedProviderCapabilityError,
|
|
78
83
|
serializeTaskStartupError,
|
|
@@ -251,6 +256,17 @@ function shouldRunDetached(options) {
|
|
|
251
256
|
return options.detach && !process.env.ZEROSHOT_DAEMON;
|
|
252
257
|
}
|
|
253
258
|
|
|
259
|
+
function requireForegroundResultMode(options) {
|
|
260
|
+
if (!options.resultFile) return;
|
|
261
|
+
if (shouldRunDetached(options) || process.env.ZEROSHOT_DAEMON) {
|
|
262
|
+
throw new Error('--result-file requires foreground execution without --detach');
|
|
263
|
+
}
|
|
264
|
+
if (options.pr || options.ship) {
|
|
265
|
+
throw new Error('--result-file is incompatible with --pr and --ship delivery');
|
|
266
|
+
}
|
|
267
|
+
process.env.ZEROSHOT_TASK_EXECUTION_CONTEXT = 'benchmark';
|
|
268
|
+
}
|
|
269
|
+
|
|
254
270
|
function printDetachedClusterStart(plan, clusterId, logPath) {
|
|
255
271
|
const runMode = runModeFromPlan(plan);
|
|
256
272
|
console.log(runMode ? `Started ${clusterId} (${runMode})` : `Started ${clusterId}`);
|
|
@@ -605,65 +621,83 @@ function createForegroundCleanup({
|
|
|
605
621
|
return { stop, stopWithFlush };
|
|
606
622
|
}
|
|
607
623
|
|
|
608
|
-
function
|
|
609
|
-
|
|
624
|
+
function setupForegroundSignalHandler({ orchestrator, clusterId, cleanup, settle, handleSigterm }) {
|
|
625
|
+
let handling = false;
|
|
626
|
+
const handler = async (signal) => {
|
|
627
|
+
if (handling) return;
|
|
628
|
+
handling = true;
|
|
610
629
|
cleanup.stop();
|
|
611
|
-
|
|
612
|
-
console.log(chalk.dim('\n\n--- Interrupted ---'));
|
|
630
|
+
console.log(chalk.dim(`\n\n--- Interrupted (${signal}) ---`));
|
|
613
631
|
|
|
614
632
|
try {
|
|
615
633
|
console.log(chalk.dim(`Stopping cluster ${clusterId}...`));
|
|
616
634
|
await orchestrator.stop(clusterId);
|
|
617
635
|
console.log(chalk.dim(`Cluster ${clusterId} stopped.`));
|
|
636
|
+
settle({ cancelled: true });
|
|
618
637
|
} catch (stopErr) {
|
|
619
|
-
|
|
638
|
+
settle(null, stopErr);
|
|
620
639
|
}
|
|
621
|
-
|
|
622
|
-
process.exit(0);
|
|
623
640
|
};
|
|
624
641
|
|
|
625
|
-
|
|
642
|
+
const onSigint = () => handler('SIGINT');
|
|
643
|
+
const onSigterm = () => handler('SIGTERM');
|
|
644
|
+
process.on('SIGINT', onSigint);
|
|
645
|
+
if (handleSigterm) process.on('SIGTERM', onSigterm);
|
|
626
646
|
return () => {
|
|
627
|
-
process.off('SIGINT',
|
|
647
|
+
process.off('SIGINT', onSigint);
|
|
648
|
+
if (handleSigterm) process.off('SIGTERM', onSigterm);
|
|
628
649
|
};
|
|
629
650
|
}
|
|
630
651
|
|
|
631
|
-
function waitForClusterCompletion(orchestrator, clusterId, cleanup) {
|
|
632
|
-
return new Promise((resolve) => {
|
|
652
|
+
function waitForClusterCompletion(orchestrator, clusterId, cleanup, handleSigterm) {
|
|
653
|
+
return new Promise((resolve, reject) => {
|
|
633
654
|
let checkInterval;
|
|
655
|
+
let settled = false;
|
|
656
|
+
let terminalObservedAt = null;
|
|
657
|
+
let removeSignals = () => {};
|
|
634
658
|
const stopChecking = () => {
|
|
635
659
|
if (checkInterval) {
|
|
636
660
|
clearInterval(checkInterval);
|
|
637
661
|
}
|
|
638
662
|
};
|
|
639
|
-
const
|
|
663
|
+
const settle = (result, error) => {
|
|
664
|
+
if (settled) return;
|
|
665
|
+
settled = true;
|
|
666
|
+
stopChecking();
|
|
667
|
+
removeSignals();
|
|
668
|
+
if (error) reject(error);
|
|
669
|
+
else resolve(result);
|
|
670
|
+
};
|
|
671
|
+
removeSignals = setupForegroundSignalHandler({
|
|
640
672
|
orchestrator,
|
|
641
673
|
clusterId,
|
|
642
674
|
cleanup,
|
|
643
|
-
|
|
675
|
+
settle,
|
|
676
|
+
handleSigterm,
|
|
644
677
|
});
|
|
645
678
|
|
|
646
|
-
const finish = (finalizer) => {
|
|
647
|
-
stopChecking();
|
|
648
|
-
removeSigint();
|
|
649
|
-
finalizer();
|
|
650
|
-
resolve();
|
|
651
|
-
};
|
|
652
|
-
|
|
653
679
|
checkInterval = setInterval(() => {
|
|
654
680
|
try {
|
|
655
681
|
const status = orchestrator.getStatus(clusterId);
|
|
656
|
-
if (status
|
|
657
|
-
|
|
682
|
+
if (isForegroundStatusSettled(status)) {
|
|
683
|
+
cleanup.stopWithFlush();
|
|
684
|
+
settle({ cancelled: false });
|
|
685
|
+
} else if (['stopped', 'killed'].includes(status.state)) {
|
|
686
|
+
terminalObservedAt ??= Date.now();
|
|
687
|
+
if (Date.now() - terminalObservedAt > 30_000) {
|
|
688
|
+
cleanup.stop();
|
|
689
|
+
settle(null, new Error('foreground agent processes did not settle after terminal'));
|
|
690
|
+
}
|
|
658
691
|
}
|
|
659
|
-
} catch {
|
|
660
|
-
|
|
692
|
+
} catch (error) {
|
|
693
|
+
cleanup.stop();
|
|
694
|
+
settle(null, error);
|
|
661
695
|
}
|
|
662
696
|
}, 500);
|
|
663
697
|
});
|
|
664
698
|
}
|
|
665
699
|
|
|
666
|
-
async function streamClusterInForeground(cluster, orchestrator, clusterId, plan) {
|
|
700
|
+
async function streamClusterInForeground(cluster, orchestrator, clusterId, plan, handleSigterm) {
|
|
667
701
|
const sendersWithOutput = new Set();
|
|
668
702
|
const processedMessageIds = new Set();
|
|
669
703
|
|
|
@@ -696,8 +730,34 @@ async function streamClusterInForeground(cluster, orchestrator, clusterId, plan)
|
|
|
696
730
|
sendersWithOutput,
|
|
697
731
|
});
|
|
698
732
|
|
|
699
|
-
await waitForClusterCompletion(orchestrator, clusterId, cleanup);
|
|
700
|
-
|
|
733
|
+
const result = await waitForClusterCompletion(orchestrator, clusterId, cleanup, handleSigterm);
|
|
734
|
+
const label = result.cancelled ? 'cancelled' : 'finished';
|
|
735
|
+
console.log(chalk.dim(`\nCluster ${clusterId} ${label}.`));
|
|
736
|
+
return result;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
async function finishForegroundRun({ cluster, orchestrator, clusterId, plan, resultPath }) {
|
|
740
|
+
try {
|
|
741
|
+
const foreground = await streamClusterInForeground(
|
|
742
|
+
cluster,
|
|
743
|
+
orchestrator,
|
|
744
|
+
clusterId,
|
|
745
|
+
plan,
|
|
746
|
+
Boolean(resultPath)
|
|
747
|
+
);
|
|
748
|
+
if (!resultPath) return;
|
|
749
|
+
const receipt = writeForegroundResult({
|
|
750
|
+
orchestrator,
|
|
751
|
+
cluster,
|
|
752
|
+
clusterId,
|
|
753
|
+
resultPath,
|
|
754
|
+
cancelled: foreground.cancelled,
|
|
755
|
+
});
|
|
756
|
+
process.exitCode = exitCodeForResult(receipt);
|
|
757
|
+
console.log(chalk.dim(`Result ${receipt.outcome} committed to ${resultPath}`));
|
|
758
|
+
} finally {
|
|
759
|
+
orchestrator.close();
|
|
760
|
+
}
|
|
701
761
|
}
|
|
702
762
|
|
|
703
763
|
function setupDaemonCleanup(orchestrator, clusterId) {
|
|
@@ -2662,6 +2722,10 @@ program
|
|
|
2662
2722
|
'fast'
|
|
2663
2723
|
)
|
|
2664
2724
|
.option('-d, --detach', 'Run in background (default: attach to first agent)')
|
|
2725
|
+
.option(
|
|
2726
|
+
'--result-file <path>',
|
|
2727
|
+
'Atomically write a closed foreground result receipt (incompatible with --detach)'
|
|
2728
|
+
)
|
|
2665
2729
|
.addHelpText(
|
|
2666
2730
|
'after',
|
|
2667
2731
|
`
|
|
@@ -2768,6 +2832,7 @@ Force provider flags: -G (GitHub), -L (GitLab), -J (Jira), -D (DevOps), -N (Line
|
|
|
2768
2832
|
}
|
|
2769
2833
|
|
|
2770
2834
|
const { generateName } = require('../src/name-generator');
|
|
2835
|
+
requireForegroundResultMode(effectiveOptions);
|
|
2771
2836
|
if (shouldRunDetached(effectiveOptions)) {
|
|
2772
2837
|
const clusterId = generateName('cluster');
|
|
2773
2838
|
await spawnDetachedCluster(effectiveOptions, effectiveRunPlan, clusterId, stdinText);
|
|
@@ -2811,8 +2876,13 @@ Force provider flags: -G (GitHub), -L (GitLab), -J (Jira), -D (DevOps), -N (Line
|
|
|
2811
2876
|
}
|
|
2812
2877
|
|
|
2813
2878
|
if (!process.env.ZEROSHOT_DAEMON) {
|
|
2814
|
-
await
|
|
2815
|
-
|
|
2879
|
+
await finishForegroundRun({
|
|
2880
|
+
cluster,
|
|
2881
|
+
orchestrator,
|
|
2882
|
+
clusterId,
|
|
2883
|
+
plan: effectiveRunPlan,
|
|
2884
|
+
resultPath: effectiveOptions.resultFile,
|
|
2885
|
+
});
|
|
2816
2886
|
}
|
|
2817
2887
|
setupDaemonCleanup(orchestrator, clusterId);
|
|
2818
2888
|
} catch (error) {
|
|
@@ -42,7 +42,7 @@ function detectCliFeatures(helpText, versionText) {
|
|
|
42
42
|
return {
|
|
43
43
|
provider: 'omp',
|
|
44
44
|
versionMatches: VERSION_TOKEN_PATTERN.test(version),
|
|
45
|
-
supportsRpcMode: /(
|
|
45
|
+
supportsRpcMode: /(?<![A-Za-z0-9_-])rpc(?![A-Za-z0-9_-])/.test(help),
|
|
46
46
|
supportsConfig: /--config\b/.test(help),
|
|
47
47
|
supportsModel: /--model\b/.test(help),
|
|
48
48
|
supportsThinking: /--thinking\b/.test(help),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omp.js","sourceRoot":"","sources":["../../../src/agent-cli-provider/adapters/omp.ts"],"names":[],"mappings":";;;AA8LA,wCAEC;AAhMD,wDAAmD;AACnD,sCAA+D;AAC/D,sCAAmD;AACnD,kCAAqD;AACrD,4CAAwE;AACxE,kDAAmE;AAEnE,oCAekB;AAClB,qCAOkB;AAClB,6CAIsB;AAStB,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,aAAa,GAAY,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAC1E,IAAI,CAAC,IAAA,eAAQ,EAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,sBAAsB,EAAE,CAAC;IACvD,IACE,CAAC,IAAA,eAAQ,EAAC,OAAO,CAAC;QAClB,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;QAC/B,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAChC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,aAAa,GAAgD,EAAE,CAAC;AAEtE,MAAM,aAAa,GAAiD;IAClE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;IACnC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;IACtC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;CACpC,CAAC;AAEF,MAAM,mBAAmB,GAAG,oCAAuB,CAAC;AAEpD,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAC5D,MAAM,gBAAgB,GAAG,yCAAyC,CAAC;AAEnE,SAAS,iBAAiB,CAAC,QAAwB,EAAE,WAA2B;IAC9E,MAAM,IAAI,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,cAAc,EAAE,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;QACnD,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"omp.js","sourceRoot":"","sources":["../../../src/agent-cli-provider/adapters/omp.ts"],"names":[],"mappings":";;;AA8LA,wCAEC;AAhMD,wDAAmD;AACnD,sCAA+D;AAC/D,sCAAmD;AACnD,kCAAqD;AACrD,4CAAwE;AACxE,kDAAmE;AAEnE,oCAekB;AAClB,qCAOkB;AAClB,6CAIsB;AAStB,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,aAAa,GAAY,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAC1E,IAAI,CAAC,IAAA,eAAQ,EAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,sBAAsB,EAAE,CAAC;IACvD,IACE,CAAC,IAAA,eAAQ,EAAC,OAAO,CAAC;QAClB,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;QAC/B,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAChC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,aAAa,GAAgD,EAAE,CAAC;AAEtE,MAAM,aAAa,GAAiD;IAClE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;IACnC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;IACtC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;CACpC,CAAC;AAEF,MAAM,mBAAmB,GAAG,oCAAuB,CAAC;AAEpD,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAC5D,MAAM,gBAAgB,GAAG,yCAAyC,CAAC;AAEnE,SAAS,iBAAiB,CAAC,QAAwB,EAAE,WAA2B;IAC9E,MAAM,IAAI,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,cAAc,EAAE,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;QACnD,eAAe,EAAE,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC;QACpE,cAAc,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QACvC,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACrC,gBAAgB,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3C,oBAAoB,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;QACpD,eAAe,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1C,iBAAiB,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9C,kBAAkB,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChD,cAAc,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QACvC,OAAO,EAAE,CAAC,IAAI;KACf,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAoC;IACnE,OAAO,OAAO,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAoC;IACrE,MAAM,QAAQ,GAAG,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,QAAQ,GAA0D;QACtE,CAAC,QAAQ,CAAC,cAAc,EAAE,qBAAqB,+BAAqB,EAAE,CAAC;QACvE,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC;QACxC,CAAC,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;QACrC,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC;QACnC,CAAC,QAAQ,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;QAClD,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC;QACxC,CAAC,QAAQ,CAAC,iBAAiB,EAAE,cAAc,CAAC;QAC5C,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM;YACzB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAW,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,CAAW,CAAC,CAAC,CAAC,EAAE,CAAC;KACzF,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAChG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,IAAA,+BAAa,EAAC;QAClB,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,CAAC;QACX,OAAO,EACL,yCAAyC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,yBAAe,GAAG;YAClF,iEAAiE;KACpE,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mCAAmC,CAAC,OAAoC;IAC/E,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,IAAA,+BAAa,EAAC;YAClB,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,yBAAyB;YAChC,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,yGAAyG;SACnH,CAAC,CAAC;IACL,CAAC;IACD,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;IAC7E,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAChE,MAAM,IAAA,+BAAa,EAAC;YAClB,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,yBAAyB;YAChC,QAAQ,EAAE,CAAC;YACX,OAAO,EACL,2IAA2I;SAC9I,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAAyB;IAC5C,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,CAAC,cAAc,CAAC,CAAC;QAC1B,KAAK,OAAO;YACV,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnD,KAAK,QAAQ;YACX,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAAoC;IAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjE,MAAM,IAAI,2CAAkC,CAC1C,KAAK,EACL,YAAY,EACZ,sLAAsL,CACvL,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAoC;IAChE,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAChE,MAAM,IAAA,+BAAa,EAAC;QAClB,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,2EAA2E;KACrF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,OAAoC;IAC3D,IAAI,CAAC,OAAO,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO;QACL,IAAA,gBAAO,EACL,KAAK,EACL,gBAAgB,EAChB,2HAA2H,CAC5H;KACF,CAAC;AACJ,CAAC;AAED,kGAAkG;AAClG,SAAgB,cAAc,CAAC,OAAe,EAAE,UAAuC,EAAE;IACvF,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,+BAAsB,EAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC5F,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,UAAuC,EAAE;IAC/E,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,mCAAmC,CAAC,OAAO,CAAC,CAAC;IAC7C,eAAe,CAAC,OAAO,CAAC,CAAC;IACzB,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAEjD,MAAM,IAAI,GAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC5F,IAAI,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7E,OAAO,IAAA,oBAAW,EAAC;QACjB,MAAM,EAAE,KAAK;QACb,IAAI;QACJ,GAAG,EAAE,EAAE;QACP,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1D,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;QACtB,eAAe,EAAE;YACf,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE;SAC1F;QACD,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,KAA0B;IAC1D,OAAO,IAAA,2CAA8B,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAiB,EAAE,SAA0B;IACrE,OAAO,IAAA,mCAA0B,EAAC;QAChC,OAAO,EAAE,aAAa;QACtB,YAAY,EAAE,QAAQ;QACtB,KAAK;QACL,SAAS;QACT,eAAe;KAChB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,OAAkC;IACzD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IAC9D,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,iCAAyB,CACjC,kBAAkB,IAAA,uBAAgB,EAAC,OAAO,CAAC,oCAAoC,gBAAgB,CAAC,MAAM,GAAG,CAC1G,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAID,SAAS,aAAa,CAAC,KAAc;IACnC,MAAM,OAAO,GAAG,IAAA,uBAAgB,EAAC,KAAK,CAAC,CAAC;IACxC,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,IAAA,kCAAyB,EAAC,KAAK,EAAE,mCAAsB,EAAE,mCAAsB,CAAC,CAAC;AAC1F,CAAC;AAEY,QAAA,UAAU,GAAoB;IACzC,EAAE,EAAE,KAAK;IACT,WAAW,EAAE,gBAAgB;IAC7B,MAAM,EAAE,KAAK;IACb,cAAc,EAAE,GAAG;IACnB,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,aAAa;IAC3B,YAAY,EAAE,aAAa;IAC3B,YAAY,EAAE,QAAQ;IACtB,eAAe,EAAE,QAAQ;IACzB,eAAe,EAAE,QAAQ;IACzB,iBAAiB;IACjB,YAAY;IACZ,UAAU;IACV,iBAAiB,EAAE,cAAc;IACjC,gBAAgB;IAChB,eAAe;IACf,aAAa;CACd,CAAC"}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import type { TargetDiscoveryDescriptor } from '../target/discovery.js';
|
|
2
2
|
import type { AllocateRequest, Capsule, CapsuleAccess, CapsuleLimits, CapsuleListPage, Clock, HttpTransport, ListRequest, RetryPolicy, TargetAccessTokenProvider } from './types.js';
|
|
3
|
-
export type CredentialInstallCapability = {
|
|
4
|
-
readonly supported: false;
|
|
5
|
-
} | {
|
|
6
|
-
readonly supported: true;
|
|
7
|
-
readonly descriptor: NonNullable<TargetDiscoveryDescriptor['credentialInstall']>;
|
|
8
|
-
};
|
|
9
3
|
export interface TargetAdapter {
|
|
10
4
|
allocate(req: AllocateRequest, signal?: AbortSignal): Promise<Capsule>;
|
|
11
5
|
list(req?: ListRequest, signal?: AbortSignal): Promise<CapsuleListPage>;
|
|
@@ -13,8 +7,6 @@ export interface TargetAdapter {
|
|
|
13
7
|
terminate(capsuleId: string, signal?: AbortSignal): Promise<Capsule>;
|
|
14
8
|
limits(signal?: AbortSignal): Promise<CapsuleLimits>;
|
|
15
9
|
access(capsuleId: string, signal?: AbortSignal): Promise<CapsuleAccess>;
|
|
16
|
-
installRuntime(capsuleId: string, runtime: unknown, accessToken: string, signal?: AbortSignal): Promise<void>;
|
|
17
|
-
readonly credentialInstall: CredentialInstallCapability;
|
|
18
10
|
}
|
|
19
11
|
export interface CreateTargetAdapterOptions {
|
|
20
12
|
readonly descriptor: TargetDiscoveryDescriptor;
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import type { TargetDiscoveryDescriptor } from '../target/discovery.js';
|
|
2
2
|
import type { AllocateRequest, Capsule, CapsuleAccess, CapsuleLimits, CapsuleListPage, Clock, HttpTransport, ListRequest, RetryPolicy, TargetAccessTokenProvider } from './types.js';
|
|
3
|
-
export type CredentialInstallCapability = {
|
|
4
|
-
readonly supported: false;
|
|
5
|
-
} | {
|
|
6
|
-
readonly supported: true;
|
|
7
|
-
readonly descriptor: NonNullable<TargetDiscoveryDescriptor['credentialInstall']>;
|
|
8
|
-
};
|
|
9
3
|
export interface TargetAdapter {
|
|
10
4
|
allocate(req: AllocateRequest, signal?: AbortSignal): Promise<Capsule>;
|
|
11
5
|
list(req?: ListRequest, signal?: AbortSignal): Promise<CapsuleListPage>;
|
|
@@ -13,8 +7,6 @@ export interface TargetAdapter {
|
|
|
13
7
|
terminate(capsuleId: string, signal?: AbortSignal): Promise<Capsule>;
|
|
14
8
|
limits(signal?: AbortSignal): Promise<CapsuleLimits>;
|
|
15
9
|
access(capsuleId: string, signal?: AbortSignal): Promise<CapsuleAccess>;
|
|
16
|
-
installRuntime(capsuleId: string, runtime: unknown, accessToken: string, signal?: AbortSignal): Promise<void>;
|
|
17
|
-
readonly credentialInstall: CredentialInstallCapability;
|
|
18
10
|
}
|
|
19
11
|
export interface CreateTargetAdapterOptions {
|
|
20
12
|
readonly descriptor: TargetDiscoveryDescriptor;
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import type { TargetDiscoveryDescriptor } from '../target/discovery.js';
|
|
2
2
|
import type { AllocateRequest, Capsule, CapsuleAccess, CapsuleLimits, CapsuleListPage, Clock, HttpTransport, ListRequest, RetryPolicy, TargetAccessTokenProvider } from './types.js';
|
|
3
|
-
export type CredentialInstallCapability = {
|
|
4
|
-
readonly supported: false;
|
|
5
|
-
} | {
|
|
6
|
-
readonly supported: true;
|
|
7
|
-
readonly descriptor: NonNullable<TargetDiscoveryDescriptor['credentialInstall']>;
|
|
8
|
-
};
|
|
9
3
|
export interface TargetAdapter {
|
|
10
4
|
allocate(req: AllocateRequest, signal?: AbortSignal): Promise<Capsule>;
|
|
11
5
|
list(req?: ListRequest, signal?: AbortSignal): Promise<CapsuleListPage>;
|
|
@@ -13,8 +7,6 @@ export interface TargetAdapter {
|
|
|
13
7
|
terminate(capsuleId: string, signal?: AbortSignal): Promise<Capsule>;
|
|
14
8
|
limits(signal?: AbortSignal): Promise<CapsuleLimits>;
|
|
15
9
|
access(capsuleId: string, signal?: AbortSignal): Promise<CapsuleAccess>;
|
|
16
|
-
installRuntime(capsuleId: string, runtime: unknown, accessToken: string, signal?: AbortSignal): Promise<void>;
|
|
17
|
-
readonly credentialInstall: CredentialInstallCapability;
|
|
18
10
|
}
|
|
19
11
|
export interface CreateTargetAdapterOptions {
|
|
20
12
|
readonly descriptor: TargetDiscoveryDescriptor;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createTargetAdapter, type TargetAdapter, type CreateTargetAdapterOptions,
|
|
1
|
+
export { createTargetAdapter, type TargetAdapter, type CreateTargetAdapterOptions, } from './target-adapter.js';
|
|
2
2
|
export { TargetAdapterError, TargetAuthError, TargetConflictError, TargetRateLimitError, TargetTransportError, TargetProtocolError, TargetCapacityError, TargetNotFoundError, TargetServerError, isRetryable, } from './errors.js';
|
|
3
3
|
export type { TargetAccessTokenProvider, CapsuleState, Capsule, CapsuleAccess, CapsuleListPage, CapsuleLimits, AllocateRequest, ListRequest, HttpTransport, Clock, RetryPolicy, } from './types.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createTargetAdapter, type TargetAdapter, type CreateTargetAdapterOptions,
|
|
1
|
+
export { createTargetAdapter, type TargetAdapter, type CreateTargetAdapterOptions, } from './target-adapter.js';
|
|
2
2
|
export { TargetAdapterError, TargetAuthError, TargetConflictError, TargetRateLimitError, TargetTransportError, TargetProtocolError, TargetCapacityError, TargetNotFoundError, TargetServerError, isRetryable, } from './errors.js';
|
|
3
3
|
export type { TargetAccessTokenProvider, CapsuleState, Capsule, CapsuleAccess, CapsuleListPage, CapsuleLimits, AllocateRequest, ListRequest, HttpTransport, Clock, RetryPolicy, } from './types.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createTargetAdapter, type TargetAdapter, type CreateTargetAdapterOptions,
|
|
1
|
+
export { createTargetAdapter, type TargetAdapter, type CreateTargetAdapterOptions, } from './target-adapter.js';
|
|
2
2
|
export { TargetAdapterError, TargetAuthError, TargetConflictError, TargetRateLimitError, TargetTransportError, TargetProtocolError, TargetCapacityError, TargetNotFoundError, TargetServerError, isRetryable, } from './errors.js';
|
|
3
3
|
export type { TargetAccessTokenProvider, CapsuleState, Capsule, CapsuleAccess, CapsuleListPage, CapsuleLimits, AllocateRequest, ListRequest, HttpTransport, Clock, RetryPolicy, } from './types.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Clock, RetryPolicy } from './types.js';
|
|
2
|
-
export type TargetOperation = 'allocate' | 'list' | 'inspect' | 'terminate' | 'limits' | 'access'
|
|
2
|
+
export type TargetOperation = 'allocate' | 'list' | 'inspect' | 'terminate' | 'limits' | 'access';
|
|
3
3
|
type RetryContext = {
|
|
4
4
|
readonly clock: Clock;
|
|
5
5
|
readonly policy: RetryPolicy;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Clock, RetryPolicy } from './types.js';
|
|
2
|
-
export type TargetOperation = 'allocate' | 'list' | 'inspect' | 'terminate' | 'limits' | 'access'
|
|
2
|
+
export type TargetOperation = 'allocate' | 'list' | 'inspect' | 'terminate' | 'limits' | 'access';
|
|
3
3
|
type RetryContext = {
|
|
4
4
|
readonly clock: Clock;
|
|
5
5
|
readonly policy: RetryPolicy;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Clock, RetryPolicy } from './types.js';
|
|
2
|
-
export type TargetOperation = 'allocate' | 'list' | 'inspect' | 'terminate' | 'limits' | 'access'
|
|
2
|
+
export type TargetOperation = 'allocate' | 'list' | 'inspect' | 'terminate' | 'limits' | 'access';
|
|
3
3
|
type RetryContext = {
|
|
4
4
|
readonly clock: Clock;
|
|
5
5
|
readonly policy: RetryPolicy;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { CreateTargetAdapterOptions, TargetAdapter } from './adapter-types.js';
|
|
2
|
-
export type { CreateTargetAdapterOptions,
|
|
2
|
+
export type { CreateTargetAdapterOptions, TargetAdapter } from './adapter-types.js';
|
|
3
3
|
export declare function createTargetAdapter(options: CreateTargetAdapterOptions): TargetAdapter;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { CreateTargetAdapterOptions, TargetAdapter } from './adapter-types.js';
|
|
2
|
-
export type { CreateTargetAdapterOptions,
|
|
2
|
+
export type { CreateTargetAdapterOptions, TargetAdapter } from './adapter-types.js';
|
|
3
3
|
export declare function createTargetAdapter(options: CreateTargetAdapterOptions): TargetAdapter;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { CreateTargetAdapterOptions, TargetAdapter } from './adapter-types.js';
|
|
2
|
-
export type { CreateTargetAdapterOptions,
|
|
2
|
+
export type { CreateTargetAdapterOptions, TargetAdapter } from './adapter-types.js';
|
|
3
3
|
export declare function createTargetAdapter(options: CreateTargetAdapterOptions): TargetAdapter;
|
|
@@ -8,7 +8,6 @@ const response_validation_js_1 = require("./response-validation.cjs");
|
|
|
8
8
|
const bounded_response_js_1 = require("../target/bounded-response.cjs");
|
|
9
9
|
const access_url_js_1 = require("./access-url.cjs");
|
|
10
10
|
const retry_executor_js_1 = require("./retry-executor.cjs");
|
|
11
|
-
const runtime_install_js_1 = require("./runtime-install.cjs");
|
|
12
11
|
const response_status_js_1 = require("./response-status.cjs");
|
|
13
12
|
const adapter_request_js_1 = require("./adapter-request.cjs");
|
|
14
13
|
const DEFAULT_CLOCK = { now: () => Date.now() };
|
|
@@ -33,12 +32,6 @@ class ZeroCloudV1TargetAdapter {
|
|
|
33
32
|
this.#clock = options.clock ?? DEFAULT_CLOCK;
|
|
34
33
|
this.#retryPolicy = options.retryPolicy ?? new retry_js_1.DefaultRetryPolicy();
|
|
35
34
|
}
|
|
36
|
-
get credentialInstall() {
|
|
37
|
-
const descriptor = this.#descriptor.credentialInstall;
|
|
38
|
-
return descriptor === null
|
|
39
|
-
? Object.freeze({ supported: false })
|
|
40
|
-
: Object.freeze({ supported: true, descriptor });
|
|
41
|
-
}
|
|
42
35
|
allocate(request, signal) {
|
|
43
36
|
try {
|
|
44
37
|
if (!bounds_js_1.IDEMPOTENCY_KEY_PATTERN.test(request.idempotencyKey))
|
|
@@ -99,28 +92,6 @@ class ZeroCloudV1TargetAdapter {
|
|
|
99
92
|
(0, access_url_js_1.validateAccessUrl)(result.websocketUrl, capsuleId, this.#descriptor);
|
|
100
93
|
return result;
|
|
101
94
|
}
|
|
102
|
-
async installRuntime(capsuleId, runtime, accessToken, signal) {
|
|
103
|
-
const descriptor = this.#descriptor.credentialInstall;
|
|
104
|
-
if (descriptor === null) {
|
|
105
|
-
throw new errors_js_1.TargetProtocolError('Target does not advertise runtime installation');
|
|
106
|
-
}
|
|
107
|
-
await (0, runtime_install_js_1.installRuntime)({
|
|
108
|
-
capsuleId,
|
|
109
|
-
runtime,
|
|
110
|
-
accessToken,
|
|
111
|
-
descriptor,
|
|
112
|
-
...(signal === undefined ? {} : { signal }),
|
|
113
|
-
clock: this.#clock,
|
|
114
|
-
retryPolicy: this.#retryPolicy,
|
|
115
|
-
request: (method, path, requestSignal, body, token) => this.#request({
|
|
116
|
-
method,
|
|
117
|
-
path,
|
|
118
|
-
signal: requestSignal,
|
|
119
|
-
request: { body },
|
|
120
|
-
accessToken: token,
|
|
121
|
-
}),
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
95
|
#execute(...args) {
|
|
125
96
|
return Promise.resolve().then(() => this.#executeExpanded(args));
|
|
126
97
|
}
|
|
@@ -3,12 +3,10 @@ import type { AllocateRequest, Capsule, CapsuleAccess, CapsuleLimits, CapsuleLis
|
|
|
3
3
|
export declare class ZeroCloudV1TargetAdapter implements TargetAdapter {
|
|
4
4
|
#private;
|
|
5
5
|
constructor(options: CreateTargetAdapterOptions);
|
|
6
|
-
get credentialInstall(): TargetAdapter['credentialInstall'];
|
|
7
6
|
allocate(request: AllocateRequest, signal?: AbortSignal): Promise<Capsule>;
|
|
8
7
|
list(request?: ListRequest, signal?: AbortSignal): Promise<CapsuleListPage>;
|
|
9
8
|
inspect(capsuleId: string, signal?: AbortSignal): Promise<Capsule>;
|
|
10
9
|
terminate(capsuleId: string, signal?: AbortSignal): Promise<Capsule>;
|
|
11
10
|
limits(signal?: AbortSignal): Promise<CapsuleLimits>;
|
|
12
11
|
access(capsuleId: string, signal?: AbortSignal): Promise<CapsuleAccess>;
|
|
13
|
-
installRuntime(capsuleId: string, runtime: unknown, accessToken: string, signal?: AbortSignal): Promise<void>;
|
|
14
12
|
}
|
|
@@ -3,12 +3,10 @@ import type { AllocateRequest, Capsule, CapsuleAccess, CapsuleLimits, CapsuleLis
|
|
|
3
3
|
export declare class ZeroCloudV1TargetAdapter implements TargetAdapter {
|
|
4
4
|
#private;
|
|
5
5
|
constructor(options: CreateTargetAdapterOptions);
|
|
6
|
-
get credentialInstall(): TargetAdapter['credentialInstall'];
|
|
7
6
|
allocate(request: AllocateRequest, signal?: AbortSignal): Promise<Capsule>;
|
|
8
7
|
list(request?: ListRequest, signal?: AbortSignal): Promise<CapsuleListPage>;
|
|
9
8
|
inspect(capsuleId: string, signal?: AbortSignal): Promise<Capsule>;
|
|
10
9
|
terminate(capsuleId: string, signal?: AbortSignal): Promise<Capsule>;
|
|
11
10
|
limits(signal?: AbortSignal): Promise<CapsuleLimits>;
|
|
12
11
|
access(capsuleId: string, signal?: AbortSignal): Promise<CapsuleAccess>;
|
|
13
|
-
installRuntime(capsuleId: string, runtime: unknown, accessToken: string, signal?: AbortSignal): Promise<void>;
|
|
14
12
|
}
|
|
@@ -3,12 +3,10 @@ import type { AllocateRequest, Capsule, CapsuleAccess, CapsuleLimits, CapsuleLis
|
|
|
3
3
|
export declare class ZeroCloudV1TargetAdapter implements TargetAdapter {
|
|
4
4
|
#private;
|
|
5
5
|
constructor(options: CreateTargetAdapterOptions);
|
|
6
|
-
get credentialInstall(): TargetAdapter['credentialInstall'];
|
|
7
6
|
allocate(request: AllocateRequest, signal?: AbortSignal): Promise<Capsule>;
|
|
8
7
|
list(request?: ListRequest, signal?: AbortSignal): Promise<CapsuleListPage>;
|
|
9
8
|
inspect(capsuleId: string, signal?: AbortSignal): Promise<Capsule>;
|
|
10
9
|
terminate(capsuleId: string, signal?: AbortSignal): Promise<Capsule>;
|
|
11
10
|
limits(signal?: AbortSignal): Promise<CapsuleLimits>;
|
|
12
11
|
access(capsuleId: string, signal?: AbortSignal): Promise<CapsuleAccess>;
|
|
13
|
-
installRuntime(capsuleId: string, runtime: unknown, accessToken: string, signal?: AbortSignal): Promise<void>;
|
|
14
12
|
}
|
|
@@ -5,7 +5,6 @@ import { assertCapsule, assertCapsuleAccess, assertCapsuleLimits, assertCapsuleL
|
|
|
5
5
|
import { readBoundedResponseJson } from '../target/bounded-response.mjs';
|
|
6
6
|
import { validateAccessUrl } from './access-url.mjs';
|
|
7
7
|
import { withTargetRetry } from './retry-executor.mjs';
|
|
8
|
-
import { installRuntime as installOpaqueRuntime } from './runtime-install.mjs';
|
|
9
8
|
import { assertCapsuleResponseStatus } from './response-status.mjs';
|
|
10
9
|
import { createAdapterRequester, } from './adapter-request.mjs';
|
|
11
10
|
const DEFAULT_CLOCK = { now: () => Date.now() };
|
|
@@ -30,12 +29,6 @@ export class ZeroCloudV1TargetAdapter {
|
|
|
30
29
|
this.#clock = options.clock ?? DEFAULT_CLOCK;
|
|
31
30
|
this.#retryPolicy = options.retryPolicy ?? new DefaultRetryPolicy();
|
|
32
31
|
}
|
|
33
|
-
get credentialInstall() {
|
|
34
|
-
const descriptor = this.#descriptor.credentialInstall;
|
|
35
|
-
return descriptor === null
|
|
36
|
-
? Object.freeze({ supported: false })
|
|
37
|
-
: Object.freeze({ supported: true, descriptor });
|
|
38
|
-
}
|
|
39
32
|
allocate(request, signal) {
|
|
40
33
|
try {
|
|
41
34
|
if (!IDEMPOTENCY_KEY_PATTERN.test(request.idempotencyKey))
|
|
@@ -96,28 +89,6 @@ export class ZeroCloudV1TargetAdapter {
|
|
|
96
89
|
validateAccessUrl(result.websocketUrl, capsuleId, this.#descriptor);
|
|
97
90
|
return result;
|
|
98
91
|
}
|
|
99
|
-
async installRuntime(capsuleId, runtime, accessToken, signal) {
|
|
100
|
-
const descriptor = this.#descriptor.credentialInstall;
|
|
101
|
-
if (descriptor === null) {
|
|
102
|
-
throw new TargetProtocolError('Target does not advertise runtime installation');
|
|
103
|
-
}
|
|
104
|
-
await installOpaqueRuntime({
|
|
105
|
-
capsuleId,
|
|
106
|
-
runtime,
|
|
107
|
-
accessToken,
|
|
108
|
-
descriptor,
|
|
109
|
-
...(signal === undefined ? {} : { signal }),
|
|
110
|
-
clock: this.#clock,
|
|
111
|
-
retryPolicy: this.#retryPolicy,
|
|
112
|
-
request: (method, path, requestSignal, body, token) => this.#request({
|
|
113
|
-
method,
|
|
114
|
-
path,
|
|
115
|
-
signal: requestSignal,
|
|
116
|
-
request: { body },
|
|
117
|
-
accessToken: token,
|
|
118
|
-
}),
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
92
|
#execute(...args) {
|
|
122
93
|
return Promise.resolve().then(() => this.#executeExpanded(args));
|
|
123
94
|
}
|
|
@@ -52,29 +52,10 @@ function parseSizes(discovery) {
|
|
|
52
52
|
}
|
|
53
53
|
function parseExtensions(discovery, origin) {
|
|
54
54
|
if (discovery.extensions === undefined || discovery.extensions === null) {
|
|
55
|
-
return Object.freeze({
|
|
55
|
+
return Object.freeze({ runIntent: null });
|
|
56
56
|
}
|
|
57
|
-
const extensions = (0, discovery_validation_js_1.
|
|
58
|
-
'connections',
|
|
59
|
-
'credential_install',
|
|
60
|
-
'run_intent',
|
|
61
|
-
]);
|
|
62
|
-
if (extensions.connections === undefined) {
|
|
63
|
-
throw new discovery_errors_js_1.TargetDiscoveryError('extensions.connections is required');
|
|
64
|
-
}
|
|
65
|
-
const connections = (0, discovery_validation_js_1.closedRecord)(extensions.connections, 'extensions.connections', [
|
|
66
|
-
'kind',
|
|
67
|
-
'base_url',
|
|
68
|
-
'route_templates',
|
|
69
|
-
]);
|
|
70
|
-
(0, discovery_validation_js_1.exact)(connections.kind, 'zerocloud.connections/v1', 'extensions.connections.kind');
|
|
71
|
-
(0, discovery_validation_js_1.sameOriginUrl)(connections.base_url, 'extensions.connections.base_url', origin);
|
|
72
|
-
const routes = (0, discovery_validation_js_1.closedRecord)(connections.route_templates, 'extensions.connections.route_templates', ['list', 'create', 'update']);
|
|
73
|
-
(0, route_template_js_1.routeTemplate)(routes.list, 'extensions.connections.route_templates.list', []);
|
|
74
|
-
(0, route_template_js_1.routeTemplate)(routes.create, 'extensions.connections.route_templates.create', []);
|
|
75
|
-
(0, route_template_js_1.routeTemplate)(routes.update, 'extensions.connections.route_templates.update', ['connection_id']);
|
|
57
|
+
const extensions = (0, discovery_validation_js_1.record)(discovery.extensions, 'extensions');
|
|
76
58
|
return Object.freeze({
|
|
77
|
-
credentialInstall: (0, discovery_validation_js_1.parseCredentialInstall)(extensions.credential_install),
|
|
78
59
|
runIntent: (0, run_intent_discovery_js_1.parseRunIntent)(extensions.run_intent, origin),
|
|
79
60
|
});
|
|
80
61
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type CredentialInstallDescriptor } from './discovery-validation.js';
|
|
2
1
|
import { type RunIntentDescriptor } from './run-intent-discovery.js';
|
|
3
2
|
export declare function parseAdapter(discovery: Record<string, unknown>): {
|
|
4
3
|
readonly name: 'fargate' | 'docker' | 'local';
|
|
@@ -10,7 +9,6 @@ export declare function parseSizes(discovery: Record<string, unknown>): {
|
|
|
10
9
|
readonly default: 'tiny' | 'small' | 'standard' | 'large';
|
|
11
10
|
};
|
|
12
11
|
export declare function parseExtensions(discovery: Record<string, unknown>, origin: string): {
|
|
13
|
-
readonly credentialInstall: CredentialInstallDescriptor | null;
|
|
14
12
|
readonly runIntent: RunIntentDescriptor | null;
|
|
15
13
|
};
|
|
16
14
|
export declare function validateOAuthMetadata(metadata: Record<string, unknown>, origin: string, expected: readonly [string, string, string]): void;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type CredentialInstallDescriptor } from './discovery-validation.js';
|
|
2
1
|
import { type RunIntentDescriptor } from './run-intent-discovery.js';
|
|
3
2
|
export declare function parseAdapter(discovery: Record<string, unknown>): {
|
|
4
3
|
readonly name: 'fargate' | 'docker' | 'local';
|
|
@@ -10,7 +9,6 @@ export declare function parseSizes(discovery: Record<string, unknown>): {
|
|
|
10
9
|
readonly default: 'tiny' | 'small' | 'standard' | 'large';
|
|
11
10
|
};
|
|
12
11
|
export declare function parseExtensions(discovery: Record<string, unknown>, origin: string): {
|
|
13
|
-
readonly credentialInstall: CredentialInstallDescriptor | null;
|
|
14
12
|
readonly runIntent: RunIntentDescriptor | null;
|
|
15
13
|
};
|
|
16
14
|
export declare function validateOAuthMetadata(metadata: Record<string, unknown>, origin: string, expected: readonly [string, string, string]): void;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type CredentialInstallDescriptor } from './discovery-validation.js';
|
|
2
1
|
import { type RunIntentDescriptor } from './run-intent-discovery.js';
|
|
3
2
|
export declare function parseAdapter(discovery: Record<string, unknown>): {
|
|
4
3
|
readonly name: 'fargate' | 'docker' | 'local';
|
|
@@ -10,7 +9,6 @@ export declare function parseSizes(discovery: Record<string, unknown>): {
|
|
|
10
9
|
readonly default: 'tiny' | 'small' | 'standard' | 'large';
|
|
11
10
|
};
|
|
12
11
|
export declare function parseExtensions(discovery: Record<string, unknown>, origin: string): {
|
|
13
|
-
readonly credentialInstall: CredentialInstallDescriptor | null;
|
|
14
12
|
readonly runIntent: RunIntentDescriptor | null;
|
|
15
13
|
};
|
|
16
14
|
export declare function validateOAuthMetadata(metadata: Record<string, unknown>, origin: string, expected: readonly [string, string, string]): void;
|
|
@@ -52,29 +52,10 @@ function parseSizes(discovery) {
|
|
|
52
52
|
}
|
|
53
53
|
function parseExtensions(discovery, origin) {
|
|
54
54
|
if (discovery.extensions === undefined || discovery.extensions === null) {
|
|
55
|
-
return Object.freeze({
|
|
55
|
+
return Object.freeze({ runIntent: null });
|
|
56
56
|
}
|
|
57
|
-
const extensions = (0, discovery_validation_js_1.
|
|
58
|
-
'connections',
|
|
59
|
-
'credential_install',
|
|
60
|
-
'run_intent',
|
|
61
|
-
]);
|
|
62
|
-
if (extensions.connections === undefined) {
|
|
63
|
-
throw new discovery_errors_js_1.TargetDiscoveryError('extensions.connections is required');
|
|
64
|
-
}
|
|
65
|
-
const connections = (0, discovery_validation_js_1.closedRecord)(extensions.connections, 'extensions.connections', [
|
|
66
|
-
'kind',
|
|
67
|
-
'base_url',
|
|
68
|
-
'route_templates',
|
|
69
|
-
]);
|
|
70
|
-
(0, discovery_validation_js_1.exact)(connections.kind, 'zerocloud.connections/v1', 'extensions.connections.kind');
|
|
71
|
-
(0, discovery_validation_js_1.sameOriginUrl)(connections.base_url, 'extensions.connections.base_url', origin);
|
|
72
|
-
const routes = (0, discovery_validation_js_1.closedRecord)(connections.route_templates, 'extensions.connections.route_templates', ['list', 'create', 'update']);
|
|
73
|
-
(0, route_template_js_1.routeTemplate)(routes.list, 'extensions.connections.route_templates.list', []);
|
|
74
|
-
(0, route_template_js_1.routeTemplate)(routes.create, 'extensions.connections.route_templates.create', []);
|
|
75
|
-
(0, route_template_js_1.routeTemplate)(routes.update, 'extensions.connections.route_templates.update', ['connection_id']);
|
|
57
|
+
const extensions = (0, discovery_validation_js_1.record)(discovery.extensions, 'extensions');
|
|
76
58
|
return Object.freeze({
|
|
77
|
-
credentialInstall: (0, discovery_validation_js_1.parseCredentialInstall)(extensions.credential_install),
|
|
78
59
|
runIntent: (0, run_intent_discovery_js_1.parseRunIntent)(extensions.run_intent, origin),
|
|
79
60
|
});
|
|
80
61
|
}
|