deepline 0.3.313 → 0.3.314

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.
Files changed (100) hide show
  1. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  2. package/dist/bundling-sources/shared_libs/play-runtime/play-run-recovery-policy.ts +50 -0
  3. package/dist/bundling-sources/shared_libs/play-runtime/run-event-query.ts +15 -2
  4. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-launch-transport.ts +210 -2
  5. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-lifecycle.ts +226 -14
  6. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona.ts +4 -18
  7. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-runtime-worker.ts +5 -0
  8. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres.ts +66 -14
  9. package/dist/cli/{auth-LNA6WCQA.mjs → auth-GWF55S3N.mjs} +4 -4
  10. package/dist/cli/auth-QX2L4LPM.js +31 -0
  11. package/dist/cli/{billing-GJJUUCOZ.js → billing-2YU6E2IF.js} +70 -70
  12. package/dist/cli/{billing-D37QNIE3.mjs → billing-WWOJN7GV.mjs} +4 -4
  13. package/dist/cli/{chunk-DOI3UBGV.mjs → chunk-25SPKKF2.mjs} +1 -1
  14. package/dist/cli/{chunk-RDUS2EDE.mjs → chunk-2Q2IKUL5.mjs} +3 -3
  15. package/dist/cli/{chunk-QCXDLOGA.mjs → chunk-3A4LJUX6.mjs} +2 -2
  16. package/dist/cli/{chunk-XFEPRIW7.mjs → chunk-3CKNUJVZ.mjs} +4 -4
  17. package/dist/cli/{chunk-HM2TSTCT.mjs → chunk-3K6QD7Z3.mjs} +1 -1
  18. package/dist/cli/{chunk-FSZTWQFK.js → chunk-B5LUKLKH.js} +4 -4
  19. package/dist/cli/{chunk-BS4GAUMH.mjs → chunk-CPN2N6EZ.mjs} +7 -6
  20. package/dist/cli/{chunk-3ZC4PHJ6.mjs → chunk-DR3S76BG.mjs} +1 -1
  21. package/dist/cli/{chunk-P4N7233B.js → chunk-ENQZV7NR.js} +221 -220
  22. package/dist/cli/{chunk-MHETTUWR.js → chunk-GSRDZD7R.js} +2 -2
  23. package/dist/cli/{chunk-BLMO3JMZ.mjs → chunk-HTXZLCSP.mjs} +2 -2
  24. package/dist/cli/{chunk-YZ5PP6TX.mjs → chunk-IZTIBG7A.mjs} +13 -3
  25. package/dist/cli/{chunk-6G7ZYA6E.js → chunk-JNUHGWB2.js} +50 -50
  26. package/dist/cli/{chunk-UQBMMN4U.mjs → chunk-JZZT4GAY.mjs} +5 -5
  27. package/dist/cli/{chunk-VSAYSOVC.js → chunk-MLEJ2FYH.js} +212 -202
  28. package/dist/cli/{chunk-KNGTN7NE.js → chunk-NG4WDOGN.js} +6 -6
  29. package/dist/cli/{chunk-GQXEHX5X.js → chunk-ODEWOXWW.js} +6 -6
  30. package/dist/cli/{chunk-OTA5C7DD.mjs → chunk-OUHCJL5B.mjs} +1 -1
  31. package/dist/cli/{chunk-CSH4PKPJ.mjs → chunk-QB5MAFCU.mjs} +1 -1
  32. package/dist/cli/{chunk-QQMKX7JW.js → chunk-UZTTPEG2.js} +6 -6
  33. package/dist/cli/{chunk-JG2ZTDZV.js → chunk-VBRO5QCI.js} +15 -15
  34. package/dist/cli/{chunk-HY2SSFRI.js → chunk-VFRZG4OW.js} +1 -1
  35. package/dist/cli/{chunk-I4FHFGMA.js → chunk-VWW6VHQX.js} +60 -60
  36. package/dist/cli/{chunk-FJUIXWZF.js → chunk-WDPRE6DU.js} +48 -48
  37. package/dist/cli/{chunk-N2DXWS6W.mjs → chunk-WTO3ITBC.mjs} +2 -2
  38. package/dist/cli/{chunk-4UXNEC5C.js → chunk-YVMJTXEG.js} +26 -26
  39. package/dist/cli/{client-6RVRZ4OY.mjs → client-EYGNDORT.mjs} +3 -3
  40. package/dist/cli/client-Z4VFNTUB.js +20 -0
  41. package/dist/cli/{csv-SBOHBKEG.mjs → csv-NZCN7SVV.mjs} +3 -3
  42. package/dist/cli/{csv-2UHRG67O.js → csv-YOW5JMOH.js} +12 -12
  43. package/dist/cli/{db-VRE7CLIQ.js → db-6BIYLZ6F.js} +20 -20
  44. package/dist/cli/{db-TUFTPYEA.mjs → db-HALJV3KY.mjs} +4 -4
  45. package/dist/cli/{describe-WCBZTSOF.mjs → describe-KY2ZYGBR.mjs} +8 -8
  46. package/dist/cli/{describe-GS5A2XH4.js → describe-WA6R2JSH.js} +15 -15
  47. package/dist/cli/{executions-UTN3O372.mjs → executions-CBOAN6KI.mjs} +4 -4
  48. package/dist/cli/{executions-ENMOOKWH.js → executions-NMCTN7XM.js} +6 -6
  49. package/dist/cli/{feedback-PXBA3AG7.mjs → feedback-FOMPE3DJ.mjs} +3 -3
  50. package/dist/cli/{feedback-BLN6SIRG.js → feedback-ZZFDSCWS.js} +6 -6
  51. package/dist/cli/git-AC2ATBDK.js +23 -0
  52. package/dist/cli/{git-YDMIRW3Q.mjs → git-YQR2NBCO.mjs} +4 -4
  53. package/dist/cli/index.js +74 -74
  54. package/dist/cli/index.mjs +31 -31
  55. package/dist/cli/{legacy-noops-OVG2SICQ.mjs → legacy-noops-KMU6P3K4.mjs} +4 -4
  56. package/dist/cli/{legacy-noops-CWTUWTDB.js → legacy-noops-XH2TFFI6.js} +7 -7
  57. package/dist/cli/{monitors-ATIDXJA4.mjs → monitors-2ONK5L3I.mjs} +4 -4
  58. package/dist/cli/{monitors-T63OPBTY.js → monitors-5M3BZ5OR.js} +85 -85
  59. package/dist/cli/{org-7RVAPMRN.js → org-6MKULUZI.js} +60 -60
  60. package/dist/cli/{org-NXKNIM3H.mjs → org-LR5BMCGL.mjs} +4 -4
  61. package/dist/cli/{play-B62OVHD4.mjs → play-4NOSD7DW.mjs} +7 -7
  62. package/dist/cli/play-U3CZ4F2W.js +152 -0
  63. package/dist/cli/{providers-U7B7JEYY.mjs → providers-UBGIKGCA.mjs} +4 -4
  64. package/dist/cli/{providers-EITVEGXD.js → providers-UFJD3VKF.js} +7 -7
  65. package/dist/cli/{quickstart-VSWTYNJM.mjs → quickstart-KDUKQRUH.mjs} +3 -3
  66. package/dist/cli/{quickstart-G64F2XRU.js → quickstart-KQZHZE6C.js} +5 -5
  67. package/dist/cli/{search-SKYTFKKF.mjs → search-4BVOOS5Q.mjs} +5 -5
  68. package/dist/cli/search-Y7OTFRCI.js +26 -0
  69. package/dist/cli/{secrets-JSFHSCGM.js → secrets-TVXZ3WJ3.js} +13 -13
  70. package/dist/cli/{secrets-4DNS7KWS.mjs → secrets-YGV23N3N.mjs} +4 -4
  71. package/dist/cli/{sessions-HB7RQ4XN.mjs → sessions-G7ROUW35.mjs} +4 -4
  72. package/dist/cli/{sessions-MLTYPPCG.js → sessions-RWIQWDFD.js} +5 -5
  73. package/dist/cli/{settings-BT5WCU65.mjs → settings-QZEVGCXE.mjs} +7 -7
  74. package/dist/cli/{settings-3PCKNBPU.js → settings-TG3E2NR7.js} +74 -74
  75. package/dist/cli/{setup-EYZWTDJI.js → setup-3KDUNEEE.js} +41 -41
  76. package/dist/cli/{setup-EIWDTMCK.mjs → setup-HUXINKOH.mjs} +6 -6
  77. package/dist/cli/skills-CO5YUWBK.js +28 -0
  78. package/dist/cli/{skills-AQ3ORN2C.mjs → skills-LHU3DB7J.mjs} +4 -4
  79. package/dist/cli/{tools-OFTB2BGP.mjs → tools-J5WQ33BB.mjs} +6 -6
  80. package/dist/cli/tools-MWPT5X47.js +38 -0
  81. package/dist/cli/{update-ERQTFSAR.mjs → update-T6744RM7.mjs} +6 -6
  82. package/dist/cli/update-VVIJW7ZJ.js +28 -0
  83. package/dist/cli/{workflow-SRLWGGBM.mjs → workflow-CG2B65HD.mjs} +5 -5
  84. package/dist/cli/{workflow-6D6NHUH4.js → workflow-YF5SQJLG.js} +15 -15
  85. package/dist/index.js +6 -6
  86. package/dist/index.mjs +3 -3
  87. package/dist/install-integrity.json +74 -74
  88. package/dist/release.d.mts +1 -1
  89. package/dist/release.d.ts +1 -1
  90. package/dist/release.js +2 -2
  91. package/dist/release.mjs +1 -1
  92. package/package.json +1 -1
  93. package/dist/cli/auth-56NYRTQK.js +0 -31
  94. package/dist/cli/client-XUTMYJDL.js +0 -20
  95. package/dist/cli/git-26D3VD2I.js +0 -23
  96. package/dist/cli/play-WM3NZVE7.js +0 -152
  97. package/dist/cli/search-TXQJJQWY.js +0 -26
  98. package/dist/cli/skills-73T4BSDE.js +0 -28
  99. package/dist/cli/tools-ZGSOHWBY.js +0 -38
  100. package/dist/cli/update-L4V5TF7I.js +0 -28
@@ -1,4 +1,7 @@
1
- import { createDaytonaLaunchClient } from './daytona-launch-transport';
1
+ import {
2
+ createDaytonaLaunchClient,
3
+ redactDaytonaErrorDetail,
4
+ } from './daytona-launch-transport';
2
5
  import type { DaytonaClientOptions } from '../../daytona-runtime-config';
3
6
  import {
4
7
  createDaytonaControlClient,
@@ -328,23 +331,6 @@ function numberProperty(value: unknown, key: string): number | null {
328
331
  : null;
329
332
  }
330
333
 
331
- function redactDaytonaErrorDetail(value: string): string {
332
- return value
333
- .replace(
334
- /authorization\s*[=:]\s*bearer\s+[^\s,;]+/gi,
335
- 'Authorization=Bearer [redacted]',
336
- )
337
- .replace(
338
- /(authorization\s*[=:]\s*)(?!bearer\s+\[redacted\])[^\s,;]+/gi,
339
- '$1[redacted]',
340
- )
341
- .replace(/(bearer\s+)[^\s,;]+/gi, '$1[redacted]')
342
- .replace(/((?:api[_-]?key|token)\s*[=:]\s*)[^\s,;]+/gi, '$1[redacted]')
343
- .replace(/\s+/g, ' ')
344
- .trim()
345
- .slice(0, 1_000);
346
- }
347
-
348
334
  /**
349
335
  * Preserve the actionable shape of a Daytona control-plane failure without
350
336
  * copying credentials or an arbitrarily large upstream response into logs.
@@ -48,6 +48,7 @@ import { RUNTIME_RELIABILITY_POLICY } from '../runtime-reliability-policy';
48
48
  import type { RuntimeTrafficPolicy } from '../runtime-traffic-policy';
49
49
  import { runtimeLimitExceededCause } from '../run-failure';
50
50
  import {
51
+ playRunRecoveryLogDetail,
51
52
  recoveryForDaytonaSandboxAcquisitionUnavailable,
52
53
  recoveryForRuntimeInitializationTransportFailure,
53
54
  recoveryForRuntimeSchedulerAdmissionFailure,
@@ -4359,6 +4360,9 @@ async function executeAssignedAbsurdAttempt(input: {
4359
4360
  }),
4360
4361
  );
4361
4362
  if (recovery.kind === 'deferred') {
4363
+ // Log-only. The persisted reason groups several provider conditions
4364
+ // into one decision; the detail names the one that was observed.
4365
+ const detail = playRunRecoveryLogDetail(recoveryError);
4362
4366
  console.warn('[absurd-runtime.worker] pre_code_recovery_deferred', {
4363
4367
  runId,
4364
4368
  generation,
@@ -4367,6 +4371,7 @@ async function executeAssignedAbsurdAttempt(input: {
4367
4371
  deferCount: recovery.deferCount,
4368
4372
  deadlineAtMs: recovery.deadlineAtMs,
4369
4373
  delaySeconds: recovery.delaySeconds,
4374
+ ...(detail ? { detail } : {}),
4370
4375
  });
4371
4376
  throw new DeferTask(
4372
4377
  `Platform recovery deferred for ${recovery.dependency}: ${recovery.reason}`,
@@ -18151,6 +18151,20 @@ async function claimPostgresSchedulerOutboxPrefix(
18151
18151
  : supportsTerminalBatchMarker && input.allowIngressPrefix === true
18152
18152
  ? `(head.event_type = ${RUN_SCHEDULER_OUTBOX_EVENT_TYPE_SQL_LITERAL.runEvents})`
18153
18153
  : 'false';
18154
+ const findSearchBlockersOnce = seekRunHead && input.searchOnly === true;
18155
+ const blockingPredecessorSql = (alias: string) => `(
18156
+ (${alias}.event_type = ${RUN_SCHEDULER_OUTBOX_EVENT_TYPE_SQL_LITERAL.runEvents}
18157
+ AND NOT (${ingressPrefixSql}))
18158
+ OR (${supportsTerminalBatchMarker && input.allowIngressPrefix === true ? `head.delivery_batch_started_at IS NOT NULL AND ${alias}.delivery_batch_started_at IS NULL` : 'false'})
18159
+ OR ${alias}.failed_at IS NOT NULL
18160
+ OR coalesce(${alias}.next_attempt_at, ${alias}.created_at) > now()
18161
+ OR (
18162
+ $3::text IS NOT NULL
18163
+ AND ${alias}.lease_expires_at IS NOT NULL
18164
+ AND ${alias}.lease_expires_at > now()
18165
+ AND ${alias}.lease_owner IS DISTINCT FROM $3::text
18166
+ )
18167
+ )`;
18154
18168
  return await client.query<{
18155
18169
  row_kind: 'claimed' | 'delivered';
18156
18170
  event_id: string;
@@ -18193,6 +18207,7 @@ async function claimPostgresSchedulerOutboxPrefix(
18193
18207
  : ''
18194
18208
  } head AS MATERIALIZED (
18195
18209
  SELECT candidate.event_id, candidate.run_id, candidate.event_type,
18210
+ ${findSearchBlockersOnce ? 'candidate.created_at,' : ''}
18196
18211
  ${supportsTerminalBatchMarker ? 'candidate.delivery_batch_started_at' : 'NULL::timestamptz'} AS delivery_batch_started_at
18197
18212
  FROM ${tableName('outbox', options)} AS candidate
18198
18213
  ${seekRunHead ? 'JOIN pending_head ON pending_head.event_id = candidate.event_id' : ''}
@@ -18274,7 +18289,41 @@ async function claimPostgresSchedulerOutboxPrefix(
18274
18289
  }
18275
18290
  FOR UPDATE SKIP LOCKED
18276
18291
  LIMIT 1
18277
- ), candidates AS MATERIALIZED (
18292
+ ), ${
18293
+ findSearchBlockersOnce
18294
+ ? `first_blocker AS MATERIALIZED (
18295
+ SELECT predecessor.event_type, predecessor.created_at, predecessor.event_id
18296
+ FROM ${tableName('outbox', options)} AS predecessor
18297
+ JOIN head ON head.run_id = predecessor.run_id
18298
+ WHERE predecessor.run_id = $2::text
18299
+ AND ${pending('predecessor')}
18300
+ AND ${searchLaneSql('predecessor')} = true
18301
+ -- The oldest pending head passed eligibility above. Only later
18302
+ -- facts can introduce an ordinary blocker for this prefix.
18303
+ AND ${runLedgerPositionSql('predecessor')} > (
18304
+ (SELECT CASE head.event_type WHEN ${RUN_EVENT_KIND_SQL_LITERAL.runCreated} THEN 0 WHEN ${RUN_EVENT_KIND_SQL_LITERAL.runStarted} THEN 1 ELSE 2 END FROM head),
18305
+ (SELECT head.created_at FROM head),
18306
+ (SELECT head.event_id FROM head)
18307
+ )
18308
+ AND ${blockingPredecessorSql('predecessor')}
18309
+ ORDER BY ${runLedgerOrderSql('predecessor')}
18310
+ LIMIT 1
18311
+ ), first_started_terminal AS MATERIALIZED (
18312
+ SELECT terminal_predecessor.event_type, terminal_predecessor.created_at, terminal_predecessor.event_id
18313
+ FROM ${tableName('outbox', options)} AS terminal_predecessor
18314
+ JOIN head ON head.run_id = terminal_predecessor.run_id
18315
+ WHERE terminal_predecessor.run_id = $2::text
18316
+ AND ${pending('terminal_predecessor')}
18317
+ AND ${searchLaneSql('terminal_predecessor')} = true
18318
+ AND ${supportsTerminalBatchMarker ? 'terminal_predecessor.delivery_batch_started_at IS NOT NULL' : 'false'}
18319
+ AND terminal_predecessor.event_type IN (
18320
+ ${RUN_EVENT_KIND_SQL_LITERAL.runCompleted}, ${RUN_EVENT_KIND_SQL_LITERAL.runFailed}, ${RUN_EVENT_KIND_SQL_LITERAL.runCancelled}
18321
+ )
18322
+ ORDER BY ${runLedgerOrderSql('terminal_predecessor')}
18323
+ LIMIT 1
18324
+ ),`
18325
+ : ''
18326
+ }candidates AS MATERIALIZED (
18278
18327
  SELECT outbox.event_id
18279
18328
  FROM ${tableName('outbox', options)} AS outbox
18280
18329
  JOIN head ON head.run_id = outbox.run_id
@@ -18313,7 +18362,20 @@ async function claimPostgresSchedulerOutboxPrefix(
18313
18362
  -- that the replay included a new event. A terminal which has not
18314
18363
  -- started a batch yet remains an ordinary causal event and can be
18315
18364
  -- claimed with its existing contiguous prefix.
18365
+ ${
18366
+ findSearchBlockersOnce
18367
+ ? `-- Each cutoff reads this run's blockers once, even when stale
18368
+ -- statistics make a broad pending scan look cheaper than a seek.
18316
18369
  AND NOT EXISTS (
18370
+ SELECT 1 FROM first_started_terminal AS blocker
18371
+ WHERE ${supportsTerminalBatchMarker ? 'outbox.delivery_batch_started_at IS NULL' : 'true'}
18372
+ AND ${runLedgerPositionSql('blocker')} < ${runLedgerPositionSql('outbox')}
18373
+ )
18374
+ AND NOT EXISTS (
18375
+ SELECT 1 FROM first_blocker AS blocker
18376
+ WHERE ${runLedgerPositionSql('blocker')} < ${runLedgerPositionSql('outbox')}
18377
+ )`
18378
+ : ` AND NOT EXISTS (
18317
18379
  SELECT 1
18318
18380
  FROM ${tableName('outbox', options)} AS terminal_predecessor
18319
18381
  WHERE terminal_predecessor.run_id = outbox.run_id
@@ -18341,20 +18403,10 @@ async function claimPostgresSchedulerOutboxPrefix(
18341
18403
  WHERE predecessor.run_id = outbox.run_id
18342
18404
  AND ${pending('predecessor')}
18343
18405
  AND ${runLedgerPrecedesSql('predecessor', 'outbox', false, input.searchOnly === true)}
18344
- AND (
18345
- (predecessor.event_type = ${RUN_SCHEDULER_OUTBOX_EVENT_TYPE_SQL_LITERAL.runEvents}
18346
- AND NOT (${ingressPrefixSql}))
18347
- OR (${supportsTerminalBatchMarker && input.allowIngressPrefix === true ? 'head.delivery_batch_started_at IS NOT NULL AND predecessor.delivery_batch_started_at IS NULL' : 'false'})
18348
- OR predecessor.failed_at IS NOT NULL
18349
- OR coalesce(predecessor.next_attempt_at, predecessor.created_at) > now()
18350
- OR (
18351
- $3::text IS NOT NULL
18352
- AND predecessor.lease_expires_at IS NOT NULL
18353
- AND predecessor.lease_expires_at > now()
18354
- AND predecessor.lease_owner IS DISTINCT FROM $3::text
18355
- )
18356
- )
18406
+ AND ${blockingPredecessorSql('predecessor')}
18357
18407
  )
18408
+ `
18409
+ }
18358
18410
  ORDER BY ${runLedgerOrderSql('outbox')}
18359
18411
  FOR UPDATE OF outbox
18360
18412
  LIMIT $1
@@ -9,11 +9,11 @@ import {
9
9
  registerAuthCommands,
10
10
  reportSetupCompleted,
11
11
  resolvePendingAuthClaimForResume
12
- } from "./chunk-BLMO3JMZ.mjs";
13
- import "./chunk-CSH4PKPJ.mjs";
14
- import "./chunk-DOI3UBGV.mjs";
12
+ } from "./chunk-HTXZLCSP.mjs";
13
+ import "./chunk-QB5MAFCU.mjs";
14
+ import "./chunk-25SPKKF2.mjs";
15
15
  import "./chunk-DLIRSHV6.mjs";
16
- import "./chunk-HM2TSTCT.mjs";
16
+ import "./chunk-3K6QD7Z3.mjs";
17
17
  import "./chunk-NXGCO4JB.mjs";
18
18
  import "./chunk-WZYKRD7T.mjs";
19
19
  import "./chunk-KRD6H754.mjs";
@@ -0,0 +1,31 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+ var _chunkWDPRE6DUjs = require('./chunk-WDPRE6DU.js');
13
+ require('./chunk-ODEWOXWW.js');
14
+ require('./chunk-B5LUKLKH.js');
15
+ require('./chunk-XNYIZMNQ.js');
16
+ require('./chunk-VFRZG4OW.js');
17
+ require('./chunk-7P5AA3SN.js');
18
+ require('./chunk-OG64RBAC.js');
19
+ require('./chunk-COGTRVWW.js');
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+ exports.EXIT_WORKSPACE_MISMATCH = _chunkWDPRE6DUjs.EXIT_WORKSPACE_MISMATCH; exports.clearPendingClaim = _chunkWDPRE6DUjs.clearPendingClaim; exports.clearSatisfiedPendingClaim = _chunkWDPRE6DUjs.clearSatisfiedPendingClaim; exports.handleRegister = _chunkWDPRE6DUjs.handleRegister; exports.handleStatus = _chunkWDPRE6DUjs.handleStatus; exports.handleWait = _chunkWDPRE6DUjs.handleWait; exports.readPendingAuthClaim = _chunkWDPRE6DUjs.readPendingAuthClaim; exports.registerAuthCommands = _chunkWDPRE6DUjs.registerAuthCommands; exports.reportSetupCompleted = _chunkWDPRE6DUjs.reportSetupCompleted; exports.resolvePendingAuthClaimForResume = _chunkWDPRE6DUjs.resolvePendingAuthClaimForResume;