deepline 0.3.392 → 0.3.393

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 (145) hide show
  1. package/dist/bundling-sources/sdk/src/client.ts +156 -24
  2. package/dist/bundling-sources/sdk/src/compat.ts +9 -0
  3. package/dist/bundling-sources/sdk/src/http.ts +5 -1
  4. package/dist/bundling-sources/sdk/src/index.ts +5 -0
  5. package/dist/bundling-sources/sdk/src/plays/run-request.ts +182 -6
  6. package/dist/bundling-sources/sdk/src/release.ts +4 -1
  7. package/dist/bundling-sources/sdk/src/types.ts +13 -0
  8. package/dist/bundling-sources/shared_libs/integration-contracts/request-warnings.ts +64 -0
  9. package/dist/bundling-sources/shared_libs/play-data-plane/runtime-sheet-storage-contract.ts +315 -0
  10. package/dist/bundling-sources/shared_libs/play-runtime/async-operation.ts +41 -8
  11. package/dist/bundling-sources/shared_libs/play-runtime/context.ts +418 -44
  12. package/dist/bundling-sources/shared_libs/play-runtime/ctx-types.ts +36 -3
  13. package/dist/bundling-sources/shared_libs/play-runtime/durable-invocation-fence.ts +36 -0
  14. package/dist/bundling-sources/shared_libs/play-runtime/map-execution-frame.ts +11 -3
  15. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/projection/gateway-adapter.ts +1 -0
  16. package/dist/bundling-sources/shared_libs/play-runtime/play-runtime-semantics.ts +19 -1
  17. package/dist/bundling-sources/shared_libs/play-runtime/run-identity.ts +26 -0
  18. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/index.ts +158 -10
  19. package/dist/bundling-sources/shared_libs/play-runtime/runtime-api.ts +235 -2
  20. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-runtime-worker.ts +92 -58
  21. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-pool.ts +7 -1
  22. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-progress.ts +30 -7
  23. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres.ts +1161 -316
  24. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-event-search.ts +28 -15
  25. package/dist/bundling-sources/shared_libs/play-runtime/tool-execute-retry-policy.ts +24 -3
  26. package/dist/bundling-sources/shared_libs/play-runtime/tool-result.ts +31 -0
  27. package/dist/bundling-sources/shared_libs/plays/authoring-contract.ts +37 -4
  28. package/dist/bundling-sources/shared_libs/plays/dataset.ts +172 -79
  29. package/dist/bundling-sources/shared_libs/plays/static-pipeline.ts +173 -1
  30. package/dist/cli/{auth-6JSA2ZCW.mjs → auth-5PXHA232.mjs} +4 -4
  31. package/dist/cli/auth-P3MVDTXM.js +39 -0
  32. package/dist/cli/{billing-Q5BLQHIU.js → billing-JFB2XLSO.js} +101 -74
  33. package/dist/cli/{billing-MRRO643H.mjs → billing-Z2N7ZAGM.mjs} +32 -5
  34. package/dist/cli/{chunk-CVLM3WMJ.js → chunk-2HAD745V.js} +242 -183
  35. package/dist/cli/{chunk-HGYBEAQP.mjs → chunk-2LGC4EFT.mjs} +3 -3
  36. package/dist/cli/{chunk-A3APGZFP.mjs → chunk-4PT2VA3A.mjs} +2 -2
  37. package/dist/cli/{chunk-6DBOU7UH.js → chunk-4XX6443T.js} +176 -87
  38. package/dist/cli/{chunk-2QLML6G4.mjs → chunk-5KWKZIQR.mjs} +4 -4
  39. package/dist/cli/{chunk-2G7DXFHI.mjs → chunk-5PRVMXKB.mjs} +27 -2
  40. package/dist/cli/{chunk-DSWSEHRX.mjs → chunk-6I73X254.mjs} +1 -1
  41. package/dist/cli/{chunk-ZTACINO5.mjs → chunk-7HR7BGZL.mjs} +13 -3
  42. package/dist/cli/{chunk-BB3FNYFY.js → chunk-AARX5L4B.js} +2 -2
  43. package/dist/cli/{chunk-WMS5U6YB.js → chunk-CDFH2DYL.js} +20 -19
  44. package/dist/cli/{chunk-R3O2CZ4H.mjs → chunk-FQ6VHPW4.mjs} +2 -2
  45. package/dist/cli/{chunk-MU6M3URX.mjs → chunk-HLEESTCH.mjs} +1 -1
  46. package/dist/cli/{chunk-Q6EOHNRH.mjs → chunk-JI2B4RZP.mjs} +119 -6
  47. package/dist/cli/{chunk-2Q3GEFL4.mjs → chunk-KIYU2TGL.mjs} +2 -2
  48. package/dist/cli/{chunk-Y6VOGHF2.mjs → chunk-KZZC33PY.mjs} +0 -181
  49. package/dist/cli/{chunk-UCKJQG25.js → chunk-L2SYLGRP.js} +8 -8
  50. package/dist/cli/{chunk-2GAHHSLB.mjs → chunk-LMMEAMA7.mjs} +3 -2
  51. package/dist/cli/{chunk-YAZCDBXX.mjs → chunk-LZPCDB7U.mjs} +3 -2
  52. package/dist/cli/{chunk-RV6ALZIX.js → chunk-M7Y7JYZX.js} +32 -7
  53. package/dist/cli/{chunk-QGKPTBRR.js → chunk-MS6GUPBB.js} +3 -3
  54. package/dist/cli/{chunk-4SFPVW7A.js → chunk-OXNOAD6Y.js} +26 -26
  55. package/dist/cli/{chunk-JOFPQGXW.js → chunk-PTDECJGP.js} +50 -50
  56. package/dist/cli/{chunk-5O4B6AUN.js → chunk-PWSWAN7Q.js} +25 -2
  57. package/dist/cli/{chunk-YN6YA7ZZ.mjs → chunk-Q26LUSQ2.mjs} +79 -20
  58. package/dist/cli/{chunk-3VN4FTE3.js → chunk-RDXFGPJU.js} +1 -182
  59. package/dist/cli/{chunk-7E66A24V.mjs → chunk-RKMB3N7K.mjs} +25 -2
  60. package/dist/cli/{chunk-JSLPHFP7.js → chunk-RWHWF5ZJ.js} +3 -2
  61. package/dist/cli/{chunk-3FV4GBRK.mjs → chunk-STNYIMIV.mjs} +97 -8
  62. package/dist/cli/chunk-UBKA33KY.mjs +310 -0
  63. package/dist/cli/{chunk-PAIMOGCM.js → chunk-UHNDVD3P.js} +125 -12
  64. package/dist/cli/{chunk-24VEN5PQ.mjs → chunk-UOGZUA24.mjs} +179 -17
  65. package/dist/cli/{chunk-T7OKJ2T6.js → chunk-VIQJIX2P.js} +73 -63
  66. package/dist/cli/{chunk-RIV2GS5E.js → chunk-VIWE6WRK.js} +627 -465
  67. package/dist/cli/{chunk-EY7RFC6A.js → chunk-W4WOMXR3.js} +15 -15
  68. package/dist/cli/chunk-XDVT3GOM.js +310 -0
  69. package/dist/cli/{chunk-2FQG2HU4.js → chunk-Z3OOZM5L.js} +8 -8
  70. package/dist/cli/{csv-E4QGUIGI.mjs → csv-KJWZHKCH.mjs} +3 -3
  71. package/dist/cli/{csv-26U5T24Z.js → csv-P3Z3YE7H.js} +12 -12
  72. package/dist/cli/{db-JTRJIAQW.mjs → db-NCM4CQIS.mjs} +6 -5
  73. package/dist/cli/{db-QHBFLMVL.js → db-NUZGJNQC.js} +31 -30
  74. package/dist/cli/{describe-E3DE3ZK3.mjs → describe-WT6MM2GO.mjs} +17 -16
  75. package/dist/cli/{describe-FDV2V74F.js → describe-YGSEN5WC.js} +24 -23
  76. package/dist/cli/{executions-VZYOGVQY.js → executions-PCOLHN7Q.js} +8 -7
  77. package/dist/cli/{executions-B3GTNPRE.mjs → executions-XS2IPJ4W.mjs} +6 -5
  78. package/dist/cli/{feedback-CR55FJA2.js → feedback-4MSH7TFU.js} +7 -7
  79. package/dist/cli/{feedback-4CEBR3OV.mjs → feedback-CCLTS5SV.mjs} +3 -3
  80. package/dist/cli/{git-NM2PHHZ4.mjs → git-K2DHPMPC.mjs} +4 -4
  81. package/dist/cli/git-RNM45FX4.js +23 -0
  82. package/dist/cli/index.js +96 -92
  83. package/dist/cli/index.mjs +46 -42
  84. package/dist/cli/{legacy-noops-A7MSW5ND.mjs → legacy-noops-B5S4AR3P.mjs} +4 -4
  85. package/dist/cli/{legacy-noops-ZUA4YFIH.js → legacy-noops-GPNOPFXV.js} +7 -7
  86. package/dist/cli/{monitors-NVPRQYP3.mjs → monitors-JLMAIPRG.mjs} +6 -5
  87. package/dist/cli/{monitors-ZE3TLZ4H.js → monitors-ZAWD7NSN.js} +87 -86
  88. package/dist/cli/{org-U7A6DV5D.js → org-P2KN4CES.js} +66 -65
  89. package/dist/cli/{org-KUBILNQV.mjs → org-T3JTHP4G.mjs} +6 -5
  90. package/dist/cli/{play-HRDXQ4QE.mjs → play-NK6BLRGL.mjs} +11 -10
  91. package/dist/cli/play-PDXR6JFB.js +158 -0
  92. package/dist/cli/{providers-OHIWI453.mjs → providers-3NQRA7IT.mjs} +6 -5
  93. package/dist/cli/{providers-VD6YTVQZ.js → providers-5QRZN3DT.js} +9 -8
  94. package/dist/cli/{quickstart-UBV2FONF.mjs → quickstart-PIA2JGPV.mjs} +3 -3
  95. package/dist/cli/{quickstart-ETTCWPA4.js → quickstart-R7NUZGNW.js} +5 -5
  96. package/dist/cli/run-identity-G257GQED.js +25 -0
  97. package/dist/cli/run-identity-MRNCEGV2.mjs +25 -0
  98. package/dist/cli/{search-F44IZRT7.mjs → search-AIDIIGLY.mjs} +7 -6
  99. package/dist/cli/search-QRWL7MFM.js +27 -0
  100. package/dist/cli/{secrets-CAEMRORF.js → secrets-BT3PGMWN.js} +15 -14
  101. package/dist/cli/{secrets-R6XOJZKU.mjs → secrets-OQNHL45O.mjs} +6 -5
  102. package/dist/cli/{sessions-6GC7OFTT.js → sessions-EYXWOSWK.js} +5 -5
  103. package/dist/cli/{sessions-RLN6UQS3.mjs → sessions-SF7WJPJP.mjs} +4 -4
  104. package/dist/cli/{settings-DPNVUAV2.js → settings-BA3GHBOD.js} +76 -75
  105. package/dist/cli/{settings-KIPAMRPP.mjs → settings-Y57JTFDD.mjs} +9 -8
  106. package/dist/cli/{setup-TU2F7PU5.mjs → setup-7GR5GBHA.mjs} +6 -6
  107. package/dist/cli/{setup-DTL3L5SG.js → setup-RERXYC66.js} +41 -41
  108. package/dist/cli/{skills-UV5MYJ46.mjs → skills-SJWIQAV5.mjs} +4 -4
  109. package/dist/cli/skills-V7EY75HB.js +28 -0
  110. package/dist/cli/tools-H5HLBCHH.js +41 -0
  111. package/dist/cli/{tools-QRRNDCQ7.mjs → tools-ZF3JXPNL.mjs} +10 -9
  112. package/dist/cli/update-472HA3LT.js +28 -0
  113. package/dist/cli/{update-4426TF35.mjs → update-FFFYQAOJ.mjs} +6 -6
  114. package/dist/cli/{workflow-HNLOVISB.js → workflow-SZJVQH4T.js} +17 -16
  115. package/dist/cli/{workflow-N4U5VLZ3.mjs → workflow-XVFEEGAS.mjs} +7 -6
  116. package/dist/{client-e6Qh5ZIg.d.mts → client-DU5dtHDy.d.mts} +153 -4
  117. package/dist/{client-Uxuy-xQ2.d.ts → client-mCE88hC4.d.ts} +153 -4
  118. package/dist/{compiler-manifest-CY2v8ab0.d.ts → compiler-manifest-DE4RdAiY.d.mts} +61 -1
  119. package/dist/{compiler-manifest-CY2v8ab0.d.mts → compiler-manifest-DE4RdAiY.d.ts} +61 -1
  120. package/dist/{index-B9fBZH1g.d.mts → index-BI6nWgaV.d.mts} +1 -1
  121. package/dist/{index-BZ6uzZJl.d.ts → index-Bi-f7HFT.d.ts} +1 -1
  122. package/dist/index.d.mts +5 -5
  123. package/dist/index.d.ts +5 -5
  124. package/dist/index.js +120 -29
  125. package/dist/index.mjs +111 -20
  126. package/dist/install-integrity.json +91 -86
  127. package/dist/plays/bundle-play-file.d.mts +3 -3
  128. package/dist/plays/bundle-play-file.d.ts +3 -3
  129. package/dist/plays/bundle-play-file.mjs +2 -2
  130. package/dist/plays/run-request.d.mts +2 -2
  131. package/dist/plays/run-request.d.ts +2 -2
  132. package/dist/plays/run-request.js +5 -2
  133. package/dist/plays/run-request.mjs +4 -1
  134. package/dist/release.d.mts +4 -1
  135. package/dist/release.d.ts +4 -1
  136. package/dist/release.js +2 -2
  137. package/dist/release.mjs +1 -1
  138. package/package.json +1 -1
  139. package/dist/cli/auth-67TAELQL.js +0 -39
  140. package/dist/cli/git-I5JTK6YU.js +0 -23
  141. package/dist/cli/play-A2V7YDU7.js +0 -157
  142. package/dist/cli/search-WWXMBVPH.js +0 -26
  143. package/dist/cli/skills-SWOSEZLB.js +0 -28
  144. package/dist/cli/tools-IL2YCDQ6.js +0 -40
  145. package/dist/cli/update-BERDPEYR.js +0 -28
@@ -477,187 +477,6 @@ function extractSummaryFields(payload) {
477
477
  return {};
478
478
  }
479
479
 
480
- // ../plays/row-identity.ts
481
- var POSTGRES_IDENTIFIER_MAX_LENGTH = 63;
482
- var MAP_KEY_NAMESPACE_MAX_LENGTH = POSTGRES_IDENTIFIER_MAX_LENGTH;
483
- var SHA256_INITIAL_HASH = [
484
- 1779033703,
485
- 3144134277,
486
- 1013904242,
487
- 2773480762,
488
- 1359893119,
489
- 2600822924,
490
- 528734635,
491
- 1541459225
492
- ];
493
- var SHA256_ROUND_CONSTANTS = [
494
- 1116352408,
495
- 1899447441,
496
- 3049323471,
497
- 3921009573,
498
- 961987163,
499
- 1508970993,
500
- 2453635748,
501
- 2870763221,
502
- 3624381080,
503
- 310598401,
504
- 607225278,
505
- 1426881987,
506
- 1925078388,
507
- 2162078206,
508
- 2614888103,
509
- 3248222580,
510
- 3835390401,
511
- 4022224774,
512
- 264347078,
513
- 604807628,
514
- 770255983,
515
- 1249150122,
516
- 1555081692,
517
- 1996064986,
518
- 2554220882,
519
- 2821834349,
520
- 2952996808,
521
- 3210313671,
522
- 3336571891,
523
- 3584528711,
524
- 113926993,
525
- 338241895,
526
- 666307205,
527
- 773529912,
528
- 1294757372,
529
- 1396182291,
530
- 1695183700,
531
- 1986661051,
532
- 2177026350,
533
- 2456956037,
534
- 2730485921,
535
- 2820302411,
536
- 3259730800,
537
- 3345764771,
538
- 3516065817,
539
- 3600352804,
540
- 4094571909,
541
- 275423344,
542
- 430227734,
543
- 506948616,
544
- 659060556,
545
- 883997877,
546
- 958139571,
547
- 1322822218,
548
- 1537002063,
549
- 1747873779,
550
- 1955562222,
551
- 2024104815,
552
- 2227730452,
553
- 2361852424,
554
- 2428436474,
555
- 2756734187,
556
- 3204031479,
557
- 3329325298
558
- ];
559
- function stableValue(value) {
560
- if (Array.isArray(value)) {
561
- return value.map((entry) => stableValue(entry));
562
- }
563
- if (value && typeof value === "object") {
564
- return Object.fromEntries(
565
- Object.entries(value).filter(([, entry]) => entry !== void 0).sort(([left], [right]) => left.localeCompare(right)).map(([key, entry]) => [key, stableValue(entry)])
566
- );
567
- }
568
- return value;
569
- }
570
- function stableStringify(value) {
571
- return JSON.stringify(stableValue(value));
572
- }
573
- function rightRotate32(value, bits) {
574
- return value >>> bits | value << 32 - bits;
575
- }
576
- function sha256Hex(input) {
577
- const bytes = Array.from(new TextEncoder().encode(input));
578
- const bitLength = bytes.length * 8;
579
- bytes.push(128);
580
- while (bytes.length % 64 !== 56) {
581
- bytes.push(0);
582
- }
583
- const highBits = Math.floor(bitLength / 4294967296);
584
- const lowBits = bitLength >>> 0;
585
- bytes.push(
586
- highBits >>> 24 & 255,
587
- highBits >>> 16 & 255,
588
- highBits >>> 8 & 255,
589
- highBits & 255,
590
- lowBits >>> 24 & 255,
591
- lowBits >>> 16 & 255,
592
- lowBits >>> 8 & 255,
593
- lowBits & 255
594
- );
595
- const hash = [...SHA256_INITIAL_HASH];
596
- const words = new Array(64).fill(0);
597
- for (let offset = 0; offset < bytes.length; offset += 64) {
598
- for (let index = 0; index < 16; index += 1) {
599
- const wordOffset = offset + index * 4;
600
- words[index] = (_nullishCoalesce(bytes[wordOffset], () => ( 0))) << 24 | (_nullishCoalesce(bytes[wordOffset + 1], () => ( 0))) << 16 | (_nullishCoalesce(bytes[wordOffset + 2], () => ( 0))) << 8 | (_nullishCoalesce(bytes[wordOffset + 3], () => ( 0)));
601
- }
602
- for (let index = 16; index < 64; index += 1) {
603
- const s0 = rightRotate32(words[index - 15], 7) ^ rightRotate32(words[index - 15], 18) ^ words[index - 15] >>> 3;
604
- const s1 = rightRotate32(words[index - 2], 17) ^ rightRotate32(words[index - 2], 19) ^ words[index - 2] >>> 10;
605
- words[index] = words[index - 16] + s0 + words[index - 7] + s1 >>> 0;
606
- }
607
- let [a, b, c, d, e, f, g, h] = hash;
608
- for (let index = 0; index < 64; index += 1) {
609
- const s1 = rightRotate32(e, 6) ^ rightRotate32(e, 11) ^ rightRotate32(e, 25);
610
- const ch = e & f ^ ~e & g;
611
- const temp1 = h + s1 + ch + SHA256_ROUND_CONSTANTS[index] + words[index] >>> 0;
612
- const s0 = rightRotate32(a, 2) ^ rightRotate32(a, 13) ^ rightRotate32(a, 22);
613
- const maj = a & b ^ a & c ^ b & c;
614
- const temp2 = s0 + maj >>> 0;
615
- h = g;
616
- g = f;
617
- f = e;
618
- e = d + temp1 >>> 0;
619
- d = c;
620
- c = b;
621
- b = a;
622
- a = temp1 + temp2 >>> 0;
623
- }
624
- hash[0] = hash[0] + a >>> 0;
625
- hash[1] = hash[1] + b >>> 0;
626
- hash[2] = hash[2] + c >>> 0;
627
- hash[3] = hash[3] + d >>> 0;
628
- hash[4] = hash[4] + e >>> 0;
629
- hash[5] = hash[5] + f >>> 0;
630
- hash[6] = hash[6] + g >>> 0;
631
- hash[7] = hash[7] + h >>> 0;
632
- }
633
- return hash.map((word) => word.toString(16).padStart(8, "0")).join("");
634
- }
635
- function sanitizeIdentifierPart(value) {
636
- return value.trim().replace(/[^a-z0-9]+/gi, "_").replace(/_+/g, "_").replace(/^_+|_+$/g, "").toLowerCase();
637
- }
638
- function validateIdentifierPart(rawValue, label, maxLength) {
639
- const sanitized = sanitizeIdentifierPart(rawValue);
640
- if (!sanitized) {
641
- throw new Error(`${label} must contain a letter or number.`);
642
- }
643
- if (sanitized.length > maxLength) {
644
- throw new Error(
645
- `${label} is too long after normalization (${sanitized.length}/${maxLength}): "${sanitized}".`
646
- );
647
- }
648
- return sanitized;
649
- }
650
- function normalizeTableNamespace(value) {
651
- return validateIdentifierPart(
652
- value,
653
- "ctx.dataset() key",
654
- MAP_KEY_NAMESPACE_MAX_LENGTH
655
- );
656
- }
657
-
658
-
659
-
660
-
661
480
 
662
481
 
663
482
 
@@ -672,4 +491,4 @@ function normalizeTableNamespace(value) {
672
491
 
673
492
 
674
493
 
675
- exports.EMAIL_STATUS_JSON_SCHEMA = EMAIL_STATUS_JSON_SCHEMA; exports.buildEmailStatus = buildEmailStatus; exports.JOB_CHANGE_STATUS_VALUES = JOB_CHANGE_STATUS_VALUES; exports.JOB_CHANGE_JSON_SCHEMA = JOB_CHANGE_JSON_SCHEMA; exports.PHONE_STATUS_VALUES = PHONE_STATUS_VALUES; exports.DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS = DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS; exports.DEEPLINE_EXTRACTOR_TARGETS = DEEPLINE_EXTRACTOR_TARGETS; exports.isDeeplineExtractorTarget = isDeeplineExtractorTarget; exports.stableStringify = stableStringify; exports.sha256Hex = sha256Hex; exports.normalizeTableNamespace = normalizeTableNamespace; exports.tryConvertToList = tryConvertToList; exports.projectRowOutput = projectRowOutput; exports.writeJsonOutputFile = writeJsonOutputFile; exports.writeCsvOutputFile = writeCsvOutputFile; exports.extractSummaryFields = extractSummaryFields;
494
+ exports.EMAIL_STATUS_JSON_SCHEMA = EMAIL_STATUS_JSON_SCHEMA; exports.buildEmailStatus = buildEmailStatus; exports.JOB_CHANGE_STATUS_VALUES = JOB_CHANGE_STATUS_VALUES; exports.JOB_CHANGE_JSON_SCHEMA = JOB_CHANGE_JSON_SCHEMA; exports.PHONE_STATUS_VALUES = PHONE_STATUS_VALUES; exports.DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS = DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS; exports.DEEPLINE_EXTRACTOR_TARGETS = DEEPLINE_EXTRACTOR_TARGETS; exports.isDeeplineExtractorTarget = isDeeplineExtractorTarget; exports.tryConvertToList = tryConvertToList; exports.projectRowOutput = projectRowOutput; exports.writeJsonOutputFile = writeJsonOutputFile; exports.writeCsvOutputFile = writeCsvOutputFile; exports.extractSummaryFields = extractSummaryFields;
@@ -12,7 +12,8 @@ var SUPPORTED_PLAY_AUTHORING_CONTRACT_EDITIONS = [
12
12
  7,
13
13
  8,
14
14
  9,
15
- 10
15
+ 10,
16
+ 11
16
17
  ];
17
18
  var PLAY_AUTHORING_CONTRACT_CHANGELOG_DETAILS = [
18
19
  {
@@ -74,6 +75,12 @@ var PLAY_AUTHORING_CONTRACT_CHANGELOG_DETAILS = [
74
75
  compatibilityOwner: "Plays Runtime",
75
76
  newWritesEnd: null,
76
77
  readerRemoval: null
78
+ },
79
+ {
80
+ changed: 'CSV datasets always use source row identity and process every input occurrence, even when key or rowIdentity: "key" is supplied. Editions 1\u201310 retain their admitted row identity and completed receipts; non-CSV datasets retain explicit key deduplication.',
81
+ compatibilityOwner: "Plays Runtime",
82
+ newWritesEnd: null,
83
+ readerRemoval: null
77
84
  }
78
85
  ];
79
86
  function playToolListGetterMode(edition = PLAY_AUTHORING_CONTRACT_EDITION) {
@@ -985,6 +992,22 @@ var PLAY_AUTHORING_FIELD_REGISTRY = {
985
992
  description: "Stable field or fields used for durable row identity.",
986
993
  errorMessage: "ctx.dataset run key must be a non-empty field, field list, or key function."
987
994
  },
995
+ "ctx.dataset.run.rowIdentity": {
996
+ schema: Type.Union([Type.Literal("source_row"), Type.Literal("key")]),
997
+ fixtures: {
998
+ valid: "source_row",
999
+ invalid: "dedupe",
1000
+ absent: void 0,
1001
+ unresolved: { expression: "rowIdentity" },
1002
+ edition1: "key"
1003
+ },
1004
+ referenceType: "'source_row' | 'key'",
1005
+ required: false,
1006
+ resolution: "static-when-present",
1007
+ issueCode: "play_authoring_dataset_option_invalid",
1008
+ description: "Select source_row to process every input occurrence. CSV datasets default to source_row in edition 11; earlier editions retain key identity. Select key only to intentionally deduplicate business keys.",
1009
+ errorMessage: 'ctx.dataset run rowIdentity must be "source_row" or "key".'
1010
+ },
988
1011
  "ctx.dataset.run.onRowError": {
989
1012
  schema: Type.Union([Type.Literal("isolate"), Type.Literal("fail")]),
990
1013
  fixtures: {
@@ -1609,7 +1632,7 @@ var PLAY_AUTHORING_CLOUD_TYPE_DECLARATIONS = [
1609
1632
  "export type StepProgramOutput<TProgram> = TProgram extends StepProgram<unknown, infer Output, unknown> ? Output : never;",
1610
1633
  "export type DatasetRowKey<InputRow extends object> = (keyof InputRow & string) | readonly (keyof InputRow & string)[] | ((row: InputRow, index: number) => string | number | readonly unknown[]);",
1611
1634
  "export type DatasetDefinitionOptions<InputRow extends object> = { key?: DatasetRowKey<InputRow> };",
1612
- `export type DatasetRunOptions<InputRow extends object> = { description?: ${cloudReferenceType("ctx.dataset.run.description")}; key?: DatasetRowKey<InputRow>; onRowError?: ${cloudReferenceType("ctx.dataset.run.onRowError")}; mode?: ${cloudReferenceType("ctx.dataset.run.mode")}; undrawnColumns?: ${cloudReferenceType("ctx.dataset.run.undrawnColumns")} };`,
1635
+ `export type DatasetRunOptions<InputRow extends object> = { description?: ${cloudReferenceType("ctx.dataset.run.description")}; key?: DatasetRowKey<InputRow>; rowIdentity?: ${cloudReferenceType("ctx.dataset.run.rowIdentity")}; onRowError?: ${cloudReferenceType("ctx.dataset.run.onRowError")}; mode?: ${cloudReferenceType("ctx.dataset.run.mode")}; undrawnColumns?: ${cloudReferenceType("ctx.dataset.run.undrawnColumns")} };`,
1613
1636
  "export type DatasetBuilder<InputRow extends object, OutputRow extends object> = {",
1614
1637
  " withColumn<Name extends string, Value>(name: Name, resolver: ColumnResolver<OutputRow, Value>): DatasetBuilder<InputRow, OutputRow & Record<Name, Value>>;",
1615
1638
  " withColumn<Name extends string, Value>(name: Name, definition: DatasetColumnDefinition<OutputRow, Value> & { readonly runIf: (row: OutputRow, index: number) => boolean | Promise<boolean> }): DatasetBuilder<InputRow, OutputRow & Record<Name, Value | null>>;",
@@ -49,10 +49,11 @@ var SDK_RELEASE = {
49
49
  // getters keep their established compatibility behavior.
50
50
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
51
51
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
52
- version: "0.3.392",
52
+ version: "0.3.393",
53
53
  updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
54
54
  packageCapabilities: {
55
- updatePreferences: 1
55
+ updatePreferences: 1,
56
+ skillsGuidance: 1
56
57
  },
57
58
  contracts: {
58
59
  api: {
@@ -13,7 +13,7 @@ import {
13
13
  observedMaxText,
14
14
  recentSearchRef,
15
15
  registerDeprecatedSearchCommand
16
- } from "./chunk-HGYBEAQP.mjs";
16
+ } from "./chunk-2LGC4EFT.mjs";
17
17
  import {
18
18
  DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS,
19
19
  EMAIL_STATUS_JSON_SCHEMA,
@@ -21,18 +21,20 @@ import {
21
21
  extractSummaryFields,
22
22
  isDeeplineExtractorTarget,
23
23
  projectRowOutput,
24
- stableStringify,
25
24
  tryConvertToList,
26
25
  writeCsvOutputFile,
27
26
  writeJsonOutputFile
28
- } from "./chunk-Y6VOGHF2.mjs";
27
+ } from "./chunk-KZZC33PY.mjs";
29
28
  import {
30
29
  playToolListGetterMode
31
- } from "./chunk-7E66A24V.mjs";
30
+ } from "./chunk-RKMB3N7K.mjs";
32
31
  import {
33
32
  DeeplineClient,
34
33
  validateExecutionIdempotencyKey
35
- } from "./chunk-YN6YA7ZZ.mjs";
34
+ } from "./chunk-Q26LUSQ2.mjs";
35
+ import {
36
+ stableStringify
37
+ } from "./chunk-UBKA33KY.mjs";
36
38
  import {
37
39
  beginToolExecuteCommand,
38
40
  getToolExecuteInvocationId,
@@ -46,17 +48,51 @@ import {
46
48
  printJsonError,
47
49
  renderCommandEnvelopeText,
48
50
  shouldEmitJson
49
- } from "./chunk-2G7DXFHI.mjs";
51
+ } from "./chunk-5PRVMXKB.mjs";
50
52
  import {
51
53
  resolveConfig,
52
54
  sdkCliStateDirPath
53
- } from "./chunk-2GAHHSLB.mjs";
55
+ } from "./chunk-LMMEAMA7.mjs";
54
56
  import {
55
57
  DeeplineError
56
58
  } from "./chunk-NXGCO4JB.mjs";
57
59
 
58
60
  // src/cli/commands/tools.ts
59
61
  import { Option } from "commander";
62
+
63
+ // ../integration-contracts/request-warnings.ts
64
+ function matchesToolRequestCondition(condition, payload) {
65
+ if ("all" in condition) {
66
+ return condition.all.every(
67
+ (entry) => matchesToolRequestCondition(entry, payload)
68
+ );
69
+ }
70
+ if ("any" in condition) {
71
+ return condition.any.some(
72
+ (entry) => matchesToolRequestCondition(entry, payload)
73
+ );
74
+ }
75
+ const value2 = payload?.[condition.field];
76
+ switch (condition.operator) {
77
+ case "equals":
78
+ return value2 === condition.value;
79
+ case "number_equals":
80
+ try {
81
+ return Number(value2) === condition.value;
82
+ } catch {
83
+ return false;
84
+ }
85
+ case "present_nonblank":
86
+ return typeof value2 === "string" ? value2.trim().length > 0 : value2 !== void 0 && value2 !== null;
87
+ default:
88
+ throw new Error("Unsupported tool request warning condition.");
89
+ }
90
+ }
91
+ function firstMatchingToolRequestWarning(rules, payload) {
92
+ return rules?.find((rule) => matchesToolRequestCondition(rule.when, payload));
93
+ }
94
+
95
+ // src/cli/commands/tools.ts
60
96
  import {
61
97
  chmodSync,
62
98
  existsSync as existsSync2,
@@ -979,6 +1015,46 @@ Output:
979
1015
  exact charge. Workspace balance changes also include other callers' activity.
980
1016
  `
981
1017
  );
1018
+ tools.command("connect <provider>").description(
1019
+ "Save your provider credentials for the active workspace (owner/admin required)."
1020
+ ).requiredOption(
1021
+ "--credentials-file <path>",
1022
+ "JSON object of credential field names and string values; keep this file private"
1023
+ ).option("--json", "Emit a confirmation without credential values").action(
1024
+ async (provider, options) => {
1025
+ let credentials;
1026
+ try {
1027
+ credentials = JSON.parse(
1028
+ readFileSync2(resolve(options.credentialsFile), "utf8")
1029
+ );
1030
+ } catch {
1031
+ throw new Error(
1032
+ "Unable to read --credentials-file as a JSON object."
1033
+ );
1034
+ }
1035
+ if (!credentials || typeof credentials !== "object" || Array.isArray(credentials) || Object.keys(credentials).length === 0 || Object.values(credentials).some((value2) => typeof value2 !== "string")) {
1036
+ throw new Error(
1037
+ "--credentials-file must contain a nonempty JSON object of string credential values."
1038
+ );
1039
+ }
1040
+ const result = await new DeeplineClient().setIntegrationCredentials(
1041
+ provider,
1042
+ credentials
1043
+ );
1044
+ if (!result.ok || result.credential_saved !== true) {
1045
+ throw new Error(
1046
+ "The API did not confirm that provider credentials were saved. Inspect the integration before retrying."
1047
+ );
1048
+ }
1049
+ const confirmation = { provider, credential_saved: true };
1050
+ if (shouldEmitJson(options.json))
1051
+ console.log(JSON.stringify(confirmation));
1052
+ else
1053
+ console.log(
1054
+ `Credentials saved for ${provider} in the active workspace.`
1055
+ );
1056
+ }
1057
+ );
982
1058
  tools.command("list [category]").description("Browse tool categories, or list every tool in a category.").addHelpText(
983
1059
  "after",
984
1060
  `
@@ -1112,7 +1188,7 @@ Examples:
1112
1188
  process.exitCode = await narrowView();
1113
1189
  return;
1114
1190
  }
1115
- const { describeAnything } = await import("./describe-E3DE3ZK3.mjs");
1191
+ const { describeAnything } = await import("./describe-WT6MM2GO.mjs");
1116
1192
  process.exitCode = await describeAnything(
1117
1193
  toolId,
1118
1194
  {
@@ -1418,6 +1494,7 @@ function toolContractJsonForDescribe(tool, requestedToolId, authoringContractEdi
1418
1494
  description: tool.description,
1419
1495
  ...Object.keys(guidance).length > 0 ? { guidance } : {},
1420
1496
  categories: tool.categories,
1497
+ ...Array.isArray(tool.requestWarnings) ? { requestWarnings: tool.requestWarnings } : {},
1421
1498
  ...deprecated ? {
1422
1499
  deprecated: true,
1423
1500
  callable: tool.callable !== false,
@@ -3126,6 +3203,18 @@ async function executeTool(toolId, options) {
3126
3203
  }
3127
3204
  return 2;
3128
3205
  }
3206
+ if (metadata.deprecation?.message) {
3207
+ console.error(
3208
+ `Warning: ${parsed.toolId} is deprecated. ${metadata.deprecation.message}`
3209
+ );
3210
+ }
3211
+ const requestWarning = firstMatchingToolRequestWarning(
3212
+ metadata.requestWarnings,
3213
+ parsed.params
3214
+ );
3215
+ if (requestWarning) {
3216
+ console.error(`Warning: ${requestWarning.message}`);
3217
+ }
3129
3218
  const responseIntent = parsed.outPath || parsed.outputFormat === "csv" || parsed.outputFormat === "csv_file" ? "row_artifact" : "raw";
3130
3219
  const recovery = ToolCallRecovery.open({
3131
3220
  toolId: parsed.toolId,