deepline 0.1.204 → 0.1.205
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/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.205',
|
|
110
110
|
apiContract: '2026-06-dataset-handle-results-hard-cutover',
|
|
111
111
|
supportPolicy: {
|
|
112
|
-
latest: '0.1.
|
|
112
|
+
latest: '0.1.205',
|
|
113
113
|
minimumSupported: '0.1.53',
|
|
114
114
|
deprecatedBelow: '0.1.53',
|
|
115
115
|
commandMinimumSupported: [
|
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.205",
|
|
627
627
|
apiContract: "2026-06-dataset-handle-results-hard-cutover",
|
|
628
628
|
supportPolicy: {
|
|
629
|
-
latest: "0.1.
|
|
629
|
+
latest: "0.1.205",
|
|
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.205",
|
|
612
612
|
apiContract: "2026-06-dataset-handle-results-hard-cutover",
|
|
613
613
|
supportPolicy: {
|
|
614
|
-
latest: "0.1.
|
|
614
|
+
latest: "0.1.205",
|
|
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.205",
|
|
426
426
|
apiContract: "2026-06-dataset-handle-results-hard-cutover",
|
|
427
427
|
supportPolicy: {
|
|
428
|
-
latest: "0.1.
|
|
428
|
+
latest: "0.1.205",
|
|
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.205",
|
|
356
356
|
apiContract: "2026-06-dataset-handle-results-hard-cutover",
|
|
357
357
|
supportPolicy: {
|
|
358
|
-
latest: "0.1.
|
|
358
|
+
latest: "0.1.205",
|
|
359
359
|
minimumSupported: "0.1.53",
|
|
360
360
|
deprecatedBelow: "0.1.53",
|
|
361
361
|
commandMinimumSupported: [
|