deepline 0.1.204 → 0.1.206
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundling-sources/sdk/src/release.ts +2 -2
- package/dist/bundling-sources/shared_libs/play-runtime/app-runtime-api.ts +8 -1
- package/dist/bundling-sources/shared_libs/play-runtime/coordinator-headers.ts +4 -1
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-lifecycle.ts +41 -8
- package/dist/cli/index.js +2 -2
- package/dist/cli/index.mjs +2 -2
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +1 -1
|
@@ -106,10 +106,10 @@ export const SDK_RELEASE = {
|
|
|
106
106
|
// 0.1.154 removes the short-lived generated enrich StepOptions recompute
|
|
107
107
|
// fields shipped in 0.1.153.
|
|
108
108
|
// 0.1.175 ships loud `deepline enrich` empty-waterfall reporting.
|
|
109
|
-
version: '0.1.
|
|
109
|
+
version: '0.1.206',
|
|
110
110
|
apiContract: '2026-06-dataset-handle-results-hard-cutover',
|
|
111
111
|
supportPolicy: {
|
|
112
|
-
latest: '0.1.
|
|
112
|
+
latest: '0.1.206',
|
|
113
113
|
minimumSupported: '0.1.53',
|
|
114
114
|
deprecatedBelow: '0.1.53',
|
|
115
115
|
commandMinimumSupported: [
|
|
@@ -108,9 +108,11 @@ type RuntimeApiRequest =
|
|
|
108
108
|
action: 'append_run_events';
|
|
109
109
|
playId: string;
|
|
110
110
|
events: PlayRunLedgerEvent[];
|
|
111
|
+
idempotencyKey?: string;
|
|
111
112
|
}
|
|
112
113
|
| {
|
|
113
114
|
action: 'start_inline_child_run';
|
|
115
|
+
idempotencyKey?: string;
|
|
114
116
|
playName: string;
|
|
115
117
|
runId: string;
|
|
116
118
|
parentRunId?: string | null;
|
|
@@ -912,7 +914,11 @@ async function updateRunStatusViaAppRuntimeUnlocked(
|
|
|
912
914
|
|
|
913
915
|
export async function appendRunEventsViaAppRuntime(
|
|
914
916
|
context: WorkerRuntimeApiContext,
|
|
915
|
-
input: {
|
|
917
|
+
input: {
|
|
918
|
+
playId: string;
|
|
919
|
+
events: PlayRunLedgerEvent[];
|
|
920
|
+
idempotencyKey?: string;
|
|
921
|
+
},
|
|
916
922
|
): Promise<void> {
|
|
917
923
|
await postAppRuntimeApi<{ ok: true }>(context, {
|
|
918
924
|
action: 'append_run_events',
|
|
@@ -938,6 +944,7 @@ export async function startRunViaAppRuntime(
|
|
|
938
944
|
maxCreditsPerRun?: number | null;
|
|
939
945
|
staticPipeline?: unknown;
|
|
940
946
|
source?: 'published' | 'ad_hoc' | 'draft';
|
|
947
|
+
idempotencyKey?: string;
|
|
941
948
|
},
|
|
942
949
|
): Promise<void> {
|
|
943
950
|
await postAppRuntimeApi<{ ok: true }>(context, {
|
|
@@ -34,7 +34,10 @@ export const RUNTIME_SCHEDULER_SCHEMA_OVERRIDE_HEADER =
|
|
|
34
34
|
* `/api/v2/plays/run`. The run route pins the child to this release lane over
|
|
35
35
|
* the resolver's schema-derived default, so a child always finishes on the
|
|
36
36
|
* release that launched its parent. Honored ONLY for internal `internalRunPlay`
|
|
37
|
-
* child launches (executor-token authed, lineage-validated)
|
|
37
|
+
* child launches (executor-token authed, lineage-validated), plus internally
|
|
38
|
+
* authenticated root `profile=absurd` launches used by deploy canaries to pin
|
|
39
|
+
* an exact candidate release before activation. Public API keys cannot use
|
|
40
|
+
* this override. Absent =>
|
|
38
41
|
* inherit-when-absent back-compat: the resolver default applies unchanged.
|
|
39
42
|
*/
|
|
40
43
|
export const ABSURD_RELEASE_OVERRIDE_HEADER = 'x-deepline-absurd-release';
|
package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-lifecycle.ts
CHANGED
|
@@ -82,7 +82,8 @@ export function validateDaytonaExecutionContext(
|
|
|
82
82
|
* CUSTOMER code in PRODUCTION never runs with unrestricted egress — the
|
|
83
83
|
* production worker must provision `DEEPLINE_DAYTONA_NETWORK_ALLOW_LIST`
|
|
84
84
|
* (comma-separated CIDRs, per the Daytona `networkAllowList` contract) and
|
|
85
|
-
* every prod sandbox is created
|
|
85
|
+
* every prod sandbox is created with that allow-list, which Daytona treats as
|
|
86
|
+
* "block all egress except these CIDRs".
|
|
86
87
|
*
|
|
87
88
|
* "Production" here is the RUN'S topology, not the build flag: a run whose
|
|
88
89
|
* scheduler schema is isolated (per-PR preview CI, per-worktree dev — see
|
|
@@ -97,12 +98,43 @@ export function validateDaytonaExecutionContext(
|
|
|
97
98
|
* An explicitly provisioned allow-list is always honored (preview included),
|
|
98
99
|
* so a future preview fleet with enumerable egress can opt in to full parity.
|
|
99
100
|
*/
|
|
101
|
+
/**
|
|
102
|
+
* Keep only IPv4 CIDR entries from a comma-separated allow-list. Daytona's
|
|
103
|
+
* `networkAllowList` is IPv4-only; an IPv6 entry fails every sandbox create.
|
|
104
|
+
* Returns null when nothing valid remains so the production guard below still
|
|
105
|
+
* fires loudly rather than sending an empty list.
|
|
106
|
+
*/
|
|
107
|
+
export function filterIpv4CidrAllowList(raw: string | null): string | null {
|
|
108
|
+
if (!raw) return raw;
|
|
109
|
+
const entries = raw
|
|
110
|
+
.split(',')
|
|
111
|
+
.map((entry) => entry.trim())
|
|
112
|
+
.filter(Boolean);
|
|
113
|
+
const ipv4 = entries.filter((entry) => !entry.includes(':'));
|
|
114
|
+
const dropped = entries.filter((entry) => entry.includes(':'));
|
|
115
|
+
if (dropped.length > 0) {
|
|
116
|
+
console.warn(
|
|
117
|
+
`[daytona] dropping ${dropped.length} non-IPv4 CIDR(s) from ` +
|
|
118
|
+
`${DAYTONA_NETWORK_ALLOW_LIST_ENV} (Daytona networkAllowList is ` +
|
|
119
|
+
`IPv4-only): ${dropped.join(', ')}`,
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
return ipv4.length > 0 ? ipv4.join(',') : null;
|
|
123
|
+
}
|
|
124
|
+
|
|
100
125
|
export function resolveDaytonaSandboxNetworkPolicy(input: {
|
|
101
126
|
runtimeSchedulerSchema: string | null | undefined;
|
|
102
127
|
env?: NodeJS.ProcessEnv;
|
|
103
128
|
}): { networkAllowList: string | null } {
|
|
104
129
|
const env = input.env ?? process.env;
|
|
105
|
-
|
|
130
|
+
// Daytona's `networkAllowList` accepts IPv4 CIDRs only — it rejects sandbox
|
|
131
|
+
// create outright if any entry is IPv6 ("Invalid IP address ... Must be a
|
|
132
|
+
// valid IPv4 address"). An operator-provisioned list can pick up AAAA-resolved
|
|
133
|
+
// hosts, so drop IPv6 (colon-bearing) entries and keep the IPv4 CIDRs that
|
|
134
|
+
// actually constrain egress. Warn loudly so a dropped entry is visible.
|
|
135
|
+
const networkAllowList = filterIpv4CidrAllowList(
|
|
136
|
+
env[DAYTONA_NETWORK_ALLOW_LIST_ENV]?.trim() || null,
|
|
137
|
+
);
|
|
106
138
|
if (
|
|
107
139
|
!networkAllowList &&
|
|
108
140
|
env.NODE_ENV === 'production' &&
|
|
@@ -153,12 +185,13 @@ async function createOneShotDaytonaSandbox(input: {
|
|
|
153
185
|
ephemeral: true,
|
|
154
186
|
autoStopInterval: DAYTONA_AUTO_STOP_INTERVAL_MINUTES,
|
|
155
187
|
autoArchiveInterval: DAYTONA_AUTO_ARCHIVE_INTERVAL_MINUTES,
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
188
|
+
// A non-empty `networkAllowList` IS the "block all egress except these
|
|
189
|
+
// CIDRs" control; Daytona rejects create when `networkBlockAll: true` is
|
|
190
|
+
// combined with a non-empty allow-list ("networkBlockAll: true cannot be
|
|
191
|
+
// combined with a non-empty networkAllowList or domainAllowList"). Pass
|
|
192
|
+
// the allow-list alone so the egress restriction holds without the
|
|
193
|
+
// contradictory flag.
|
|
194
|
+
...(networkAllowList ? { networkAllowList } : {}),
|
|
162
195
|
},
|
|
163
196
|
{ timeout: DAYTONA_CREATE_TIMEOUT_SECONDS },
|
|
164
197
|
);
|
package/dist/cli/index.js
CHANGED
|
@@ -623,10 +623,10 @@ var SDK_RELEASE = {
|
|
|
623
623
|
// 0.1.154 removes the short-lived generated enrich StepOptions recompute
|
|
624
624
|
// fields shipped in 0.1.153.
|
|
625
625
|
// 0.1.175 ships loud `deepline enrich` empty-waterfall reporting.
|
|
626
|
-
version: "0.1.
|
|
626
|
+
version: "0.1.206",
|
|
627
627
|
apiContract: "2026-06-dataset-handle-results-hard-cutover",
|
|
628
628
|
supportPolicy: {
|
|
629
|
-
latest: "0.1.
|
|
629
|
+
latest: "0.1.206",
|
|
630
630
|
minimumSupported: "0.1.53",
|
|
631
631
|
deprecatedBelow: "0.1.53",
|
|
632
632
|
commandMinimumSupported: [
|
package/dist/cli/index.mjs
CHANGED
|
@@ -608,10 +608,10 @@ var SDK_RELEASE = {
|
|
|
608
608
|
// 0.1.154 removes the short-lived generated enrich StepOptions recompute
|
|
609
609
|
// fields shipped in 0.1.153.
|
|
610
610
|
// 0.1.175 ships loud `deepline enrich` empty-waterfall reporting.
|
|
611
|
-
version: "0.1.
|
|
611
|
+
version: "0.1.206",
|
|
612
612
|
apiContract: "2026-06-dataset-handle-results-hard-cutover",
|
|
613
613
|
supportPolicy: {
|
|
614
|
-
latest: "0.1.
|
|
614
|
+
latest: "0.1.206",
|
|
615
615
|
minimumSupported: "0.1.53",
|
|
616
616
|
deprecatedBelow: "0.1.53",
|
|
617
617
|
commandMinimumSupported: [
|
package/dist/index.js
CHANGED
|
@@ -422,10 +422,10 @@ var SDK_RELEASE = {
|
|
|
422
422
|
// 0.1.154 removes the short-lived generated enrich StepOptions recompute
|
|
423
423
|
// fields shipped in 0.1.153.
|
|
424
424
|
// 0.1.175 ships loud `deepline enrich` empty-waterfall reporting.
|
|
425
|
-
version: "0.1.
|
|
425
|
+
version: "0.1.206",
|
|
426
426
|
apiContract: "2026-06-dataset-handle-results-hard-cutover",
|
|
427
427
|
supportPolicy: {
|
|
428
|
-
latest: "0.1.
|
|
428
|
+
latest: "0.1.206",
|
|
429
429
|
minimumSupported: "0.1.53",
|
|
430
430
|
deprecatedBelow: "0.1.53",
|
|
431
431
|
commandMinimumSupported: [
|
package/dist/index.mjs
CHANGED
|
@@ -352,10 +352,10 @@ var SDK_RELEASE = {
|
|
|
352
352
|
// 0.1.154 removes the short-lived generated enrich StepOptions recompute
|
|
353
353
|
// fields shipped in 0.1.153.
|
|
354
354
|
// 0.1.175 ships loud `deepline enrich` empty-waterfall reporting.
|
|
355
|
-
version: "0.1.
|
|
355
|
+
version: "0.1.206",
|
|
356
356
|
apiContract: "2026-06-dataset-handle-results-hard-cutover",
|
|
357
357
|
supportPolicy: {
|
|
358
|
-
latest: "0.1.
|
|
358
|
+
latest: "0.1.206",
|
|
359
359
|
minimumSupported: "0.1.53",
|
|
360
360
|
deprecatedBelow: "0.1.53",
|
|
361
361
|
commandMinimumSupported: [
|