deepline 0.3.421 → 0.3.423

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 (149) hide show
  1. package/dist/bundling-sources/sdk/src/client.ts +2 -2
  2. package/dist/bundling-sources/sdk/src/index.ts +2 -0
  3. package/dist/bundling-sources/sdk/src/play.ts +227 -184
  4. package/dist/bundling-sources/sdk/src/plays/local-file-discovery.ts +9 -2
  5. package/dist/bundling-sources/sdk/src/plays/local-play-execution.ts +1 -1
  6. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  7. package/dist/bundling-sources/sdk/src/tool-calls.ts +3 -1
  8. package/dist/bundling-sources/sdk/src/types.ts +5 -5
  9. package/dist/bundling-sources/shared_libs/observability/scheduled-jobs.json +6 -6
  10. package/dist/bundling-sources/shared_libs/plays/authoring-contract.ts +37 -36
  11. package/dist/bundling-sources/shared_libs/plays/bundling/index.ts +179 -38
  12. package/dist/bundling-sources/shared_libs/plays/dataset.ts +2 -2
  13. package/dist/bundling-sources/shared_libs/plays/docflow.ts +4 -0
  14. package/dist/bundling-sources/shared_libs/plays/fetch-http-error.ts +1 -1
  15. package/dist/bundling-sources/shared_libs/plays/local-file-discovery.ts +12 -4
  16. package/dist/bundling-sources/shared_libs/plays/play-exports.ts +27 -5
  17. package/dist/bundling-sources/shared_libs/plays/script-entry.ts +992 -0
  18. package/dist/bundling-sources/shared_libs/plays/source-authoring-edition.ts +63 -0
  19. package/dist/bundling-sources/shared_libs/plays/tool-result-types.ts +8 -4
  20. package/dist/bundling-sources/shared_libs/plays/ts-ast.ts +2 -0
  21. package/dist/cli/{auth-56JTC4Q7.mjs → auth-L7Q53QKK.mjs} +4 -4
  22. package/dist/cli/auth-SUNY477Y.js +40 -0
  23. package/dist/cli/{billing-ZXOOZEUW.mjs → billing-IH7AKDR2.mjs} +4 -4
  24. package/dist/cli/{billing-C5LR6FA7.js → billing-QNP6YGI2.js} +73 -73
  25. package/dist/cli/{chunk-AARWVK4C.mjs → chunk-2BQUML3X.mjs} +792 -69
  26. package/dist/cli/{chunk-7SRVIWGT.js → chunk-2F5ULM2F.js} +1 -1
  27. package/dist/cli/{chunk-HP5FD2LI.js → chunk-2U3AMRHF.js} +8 -8
  28. package/dist/cli/{chunk-ERFN2QY4.mjs → chunk-3DNKFH2G.mjs} +1 -1
  29. package/dist/cli/{chunk-5F6W5NWV.mjs → chunk-44US3EL2.mjs} +5 -5
  30. package/dist/cli/{chunk-6UKY4LBW.js → chunk-4WT5RISA.js} +20 -20
  31. package/dist/cli/{chunk-QJV2ALPN.js → chunk-5DGR3TB6.js} +2 -2
  32. package/dist/cli/{chunk-UCI4QROZ.mjs → chunk-6FFORGD2.mjs} +2 -2
  33. package/dist/cli/{chunk-ZSVWCV3G.mjs → chunk-ARTGL3FM.mjs} +1 -1
  34. package/dist/cli/{chunk-FB5H5OOH.js → chunk-AVOBDFQ5.js} +11 -11
  35. package/dist/cli/{chunk-2WOVAVJ3.js → chunk-DRK6FYJU.js} +26 -26
  36. package/dist/cli/{chunk-63ILLN5H.mjs → chunk-DS7Y7X26.mjs} +2 -2
  37. package/dist/cli/{chunk-CTNA5QY2.mjs → chunk-EER67G2B.mjs} +43 -28
  38. package/dist/cli/{chunk-GIJ47TAV.js → chunk-EWWWOKX2.js} +6 -6
  39. package/dist/cli/{chunk-5E55HHW3.mjs → chunk-FJRFSBWO.mjs} +4 -4
  40. package/dist/cli/{chunk-27GJKC5Q.js → chunk-GXOQRZXG.js} +2 -2
  41. package/dist/cli/{chunk-RURYN2BE.mjs → chunk-H662SHPT.mjs} +28 -27
  42. package/dist/cli/{chunk-PKBPSMOT.js → chunk-INFLI36H.js} +43 -28
  43. package/dist/cli/{chunk-RJLFCJ23.mjs → chunk-IW5QK3K6.mjs} +3 -3
  44. package/dist/cli/{chunk-SPLOMS4N.mjs → chunk-JDAXVQV7.mjs} +1 -1
  45. package/dist/cli/{chunk-4PG4ARL2.mjs → chunk-KPKU53YO.mjs} +1 -1
  46. package/dist/cli/{chunk-IMZ56EOH.mjs → chunk-LXTSVUZN.mjs} +2 -2
  47. package/dist/cli/{chunk-F4V4JJED.mjs → chunk-MHG3NND4.mjs} +3 -3
  48. package/dist/cli/{chunk-IHG7UAHD.mjs → chunk-MLJBCS3E.mjs} +32 -13
  49. package/dist/cli/{chunk-5KYK4DGY.js → chunk-MMI2DXCW.js} +8 -8
  50. package/dist/cli/{chunk-VEYAPBS4.js → chunk-NA6SGG7X.js} +260 -259
  51. package/dist/cli/{chunk-AZGJNNNE.mjs → chunk-NFIZ5YED.mjs} +2 -2
  52. package/dist/cli/{chunk-WR4M5VWK.js → chunk-OMWO2JLC.js} +52 -52
  53. package/dist/cli/{chunk-EKQH4IUU.mjs → chunk-OPI7UCQG.mjs} +1 -1
  54. package/dist/cli/{chunk-2XKDLS5P.js → chunk-OZLMMMZH.js} +6 -6
  55. package/dist/cli/{chunk-ZLPT2RZ5.mjs → chunk-PH4BP6KM.mjs} +2 -2
  56. package/dist/cli/{chunk-NSJRLP7R.js → chunk-PQ4G6MKI.js} +16 -16
  57. package/dist/cli/{chunk-4NS4EZHN.mjs → chunk-QN6DG4JO.mjs} +2 -2
  58. package/dist/cli/{chunk-VC3E5HFO.mjs → chunk-QWJJMQNE.mjs} +1 -1
  59. package/dist/cli/{chunk-GEJDBXXM.js → chunk-QWRHGGUH.js} +1 -1
  60. package/dist/cli/{chunk-AD47BXN2.js → chunk-R2QWSSAG.js} +8 -8
  61. package/dist/cli/{chunk-JJQLBZEW.js → chunk-RAL75ND3.js} +2 -2
  62. package/dist/cli/{chunk-QADCFSGH.js → chunk-RDIN3NKA.js} +17 -17
  63. package/dist/cli/{chunk-7TSF7E3B.mjs → chunk-S6KG7JCR.mjs} +2 -2
  64. package/dist/cli/{chunk-BQR6UN3C.js → chunk-VUYUI35Q.js} +32 -13
  65. package/dist/cli/{chunk-C25ZYL6U.js → chunk-W42SSVM7.js} +4 -4
  66. package/dist/cli/{chunk-ZZBXD5VX.js → chunk-WJO7KIFT.js} +50 -50
  67. package/dist/cli/{chunk-VYLZS7X4.mjs → chunk-XSERB7H2.mjs} +1 -1
  68. package/dist/cli/{chunk-4I26IVFC.js → chunk-YCHR57TD.js} +35 -35
  69. package/dist/cli/{chunk-OQQOXSYA.js → chunk-YHRS6XTB.js} +845 -122
  70. package/dist/cli/{chunk-ZOL3CIKN.mjs → chunk-YNT7PJND.mjs} +3 -3
  71. package/dist/cli/command-docs.js +2 -2
  72. package/dist/cli/command-docs.mjs +1 -1
  73. package/dist/cli/{csv-EJ4QRLA2.mjs → csv-5KW7M6ZS.mjs} +3 -3
  74. package/dist/cli/{csv-G6H3U4XV.js → csv-GF7VRES5.js} +12 -12
  75. package/dist/cli/{db-WKQFXUWI.js → db-AEDXKB4F.js} +26 -26
  76. package/dist/cli/{db-PBIIALJ5.mjs → db-NN4JQAC4.mjs} +5 -5
  77. package/dist/cli/{describe-ZCU36ES2.js → describe-5RLXW332.js} +24 -24
  78. package/dist/cli/{describe-DMRK4UNO.mjs → describe-RX6VROHQ.mjs} +16 -16
  79. package/dist/cli/describe-core.d.mts +2 -2
  80. package/dist/cli/describe-core.d.ts +2 -2
  81. package/dist/cli/describe-core.js +4 -4
  82. package/dist/cli/describe-core.mjs +3 -3
  83. package/dist/cli/{executions-JAHW6GMA.mjs → executions-EJZ34VUB.mjs} +4 -4
  84. package/dist/cli/{executions-SBA3UYMH.js → executions-PGIGFDDS.js} +6 -6
  85. package/dist/cli/{feedback-PKBUYHMD.mjs → feedback-6MWOKE7H.mjs} +3 -3
  86. package/dist/cli/{feedback-QAE4V2NY.js → feedback-L2ODMANV.js} +7 -7
  87. package/dist/cli/git-2ZDCRTBD.js +24 -0
  88. package/dist/cli/{git-GAO3SJAQ.mjs → git-456RF3AT.mjs} +4 -4
  89. package/dist/cli/index.js +135 -135
  90. package/dist/cli/index.mjs +37 -37
  91. package/dist/cli/{legacy-noops-JCMVW5BL.js → legacy-noops-MDPB3MIS.js} +7 -7
  92. package/dist/cli/{legacy-noops-5PY2ZZF3.mjs → legacy-noops-ZPRBXQDE.mjs} +4 -4
  93. package/dist/cli/{monitors-YPS4LPDG.js → monitors-TXKR5XYW.js} +86 -86
  94. package/dist/cli/{monitors-GVYAZRMB.mjs → monitors-ZLP6A7FT.mjs} +6 -6
  95. package/dist/cli/{org-OBVAU6K7.js → org-73SQ3AT2.js} +64 -64
  96. package/dist/cli/{org-R7AKPKUB.mjs → org-YZ62BIGM.mjs} +4 -4
  97. package/dist/cli/{play-MTHQQHR6.js → play-M75EBXEV.js} +606 -567
  98. package/dist/cli/{play-3LFM2SV2.mjs → play-VCYQKCKF.mjs} +113 -74
  99. package/dist/cli/{providers-CTIROUI3.js → providers-GIINJPWQ.js} +7 -7
  100. package/dist/cli/{providers-IRICPDKU.mjs → providers-JLA6LST3.mjs} +4 -4
  101. package/dist/cli/{quickstart-5FBQVZ5B.mjs → quickstart-AHCU75GG.mjs} +3 -3
  102. package/dist/cli/{quickstart-OZDVFNF2.js → quickstart-HHHLYCHT.js} +5 -5
  103. package/dist/cli/{search-FYM47QFU.mjs → search-5GACUIAX.mjs} +5 -5
  104. package/dist/cli/search-W2PGBXQO.js +30 -0
  105. package/dist/cli/{secrets-43GJUDAE.js → secrets-PI7IPCOE.js} +13 -13
  106. package/dist/cli/{secrets-ENBXU3O3.mjs → secrets-S2NBKAEN.mjs} +4 -4
  107. package/dist/cli/{sessions-RXX5IHG6.js → sessions-BK4CSRFS.js} +5 -5
  108. package/dist/cli/{sessions-7IQJOH5Z.mjs → sessions-IBKYGTBD.mjs} +4 -4
  109. package/dist/cli/{settings-Z2CWWV7P.js → settings-2G7TUDM7.js} +75 -75
  110. package/dist/cli/{settings-EZGDTS3K.mjs → settings-JY6UN4KO.mjs} +8 -8
  111. package/dist/cli/{setup-N5UMUBBV.mjs → setup-HS5X3OSN.mjs} +7 -7
  112. package/dist/cli/{setup-2ON3TUXP.js → setup-R424FIBF.js} +42 -42
  113. package/dist/cli/skills-M3RZAN4A.js +29 -0
  114. package/dist/cli/{skills-4MR2Z2M5.mjs → skills-UIBUDTGN.mjs} +5 -5
  115. package/dist/cli/tools-K2GII2PA.js +44 -0
  116. package/dist/cli/{tools-MCEIWE3I.mjs → tools-SB4FREB6.mjs} +15 -15
  117. package/dist/cli/update-C2ORJRXN.js +31 -0
  118. package/dist/cli/{update-2JDBGLTX.mjs → update-NJSUE2YU.mjs} +7 -7
  119. package/dist/cli/{workflow-7DNBY4WJ.js → workflow-3AZWZ4J3.js} +19 -19
  120. package/dist/cli/{workflow-7UDXYU5Y.mjs → workflow-HBG76XYX.mjs} +9 -9
  121. package/dist/{client-CCWIUnk7.d.mts → client-BTUOYGID.d.mts} +10 -9
  122. package/dist/{client-vHqBm-OL.d.ts → client-C668iUhZ.d.ts} +10 -9
  123. package/dist/{compiler-manifest-lzWpbV3w.d.ts → compiler-manifest-DaFuA1ki.d.mts} +35 -32
  124. package/dist/{compiler-manifest-lzWpbV3w.d.mts → compiler-manifest-DaFuA1ki.d.ts} +35 -32
  125. package/dist/{index-CtNK-0nI.d.mts → index-0yS9ihly.d.mts} +10 -3
  126. package/dist/{index-C8Cy-YTm.d.ts → index-CRAScKPg.d.ts} +10 -3
  127. package/dist/index.d.mts +120 -150
  128. package/dist/index.d.ts +120 -150
  129. package/dist/index.js +77 -12
  130. package/dist/index.mjs +74 -9
  131. package/dist/install-integrity.json +99 -98
  132. package/dist/plays/bundle-play-file.d.mts +3 -3
  133. package/dist/plays/bundle-play-file.d.ts +3 -3
  134. package/dist/plays/bundle-play-file.mjs +1 -1
  135. package/dist/plays/play-description.d.mts +2 -2
  136. package/dist/plays/play-description.d.ts +2 -2
  137. package/dist/plays/run-request.d.mts +2 -2
  138. package/dist/plays/run-request.d.ts +2 -2
  139. package/dist/release.d.mts +1 -1
  140. package/dist/release.d.ts +1 -1
  141. package/dist/release.js +2 -2
  142. package/dist/release.mjs +1 -1
  143. package/package.json +1 -1
  144. package/dist/cli/auth-ZQMAF7W5.js +0 -40
  145. package/dist/cli/git-54INNT33.js +0 -24
  146. package/dist/cli/search-XIKHDZJ3.js +0 -30
  147. package/dist/cli/skills-2WIHNEOS.js +0 -29
  148. package/dist/cli/tools-YUUSOKYX.js +0 -44
  149. package/dist/cli/update-PWX4MJ3R.js +0 -31
@@ -647,7 +647,19 @@ Writing a play:
647
647
  plays check my.play.ts validate after every edit; free
648
648
  plays run my.play.ts --input '{...}' run the local file
649
649
  plays publish my.play.ts make it live for plays run <name> and triggers
650
- The file is: export default definePlay('name', async (ctx, input) => {...}).
650
+ plays run -e "<code>" run code inline as a play function's body
651
+ (input holds --input), like python -c
652
+ A play is a default-exported async function of its input; the file name
653
+ is its default name:
654
+ import deepline from 'deepline';
655
+ export default async function (input: { domain: string }) {
656
+ const company = await deepline.tools.execute({ id, tool, input, description });
657
+ return { company };
658
+ }
659
+ The parameter's type is the input contract; the returned object is the
660
+ result.
661
+ An optional export const config = { name, description, cron, webhook,
662
+ runtime }; at the top of the file sets the name, triggers and runtime.
651
663
  --help --verbose lists the authoring rules.
652
664
  Auditing plays:
653
665
  plays list every saved play
@@ -672,7 +684,8 @@ Writing a play:
672
684
  deepline_run_inline_play run it without publishing; CSV data files go
673
685
  in files, named by input_file_path
674
686
  deepline_publish_play make it live for deepline_run_play and triggers
675
- The file is: export default definePlay('name', async (ctx, input) => {...}).
687
+ A play default-exports an async function of its input; it calls
688
+ deepline.tools.execute and returns { ... }.
676
689
  deepline_help with command "plays" and detail "verbose" lists the
677
690
  authoring rules.
678
691
  Auditing plays:
@@ -686,58 +699,60 @@ Cost:
686
699
  `,
687
700
  verbose: `
688
701
  Authoring rules:
689
- Reach the outside world only through ctx: ctx.csv, ctx.dataset,
690
- ctx.tools.execute, ctx.runPlay, ctx.step, ctx.fetch, ctx.secrets,
691
- ctx.customerDb, and ctx.log. No fs, raw fetch, or shell commands, also not
692
- inside ctx.step. Local nondeterministic work such as Date.now or
693
- Math.random goes inside ctx.step.
702
+ Reach the outside world only through deepline: deepline.csv,
703
+ deepline.dataset, deepline.tools.execute, deepline.runPlay, deepline.step,
704
+ deepline.fetch, deepline.secrets, deepline.customerDb, and deepline.log.
705
+ No fs, raw fetch, or shell commands, also not inside deepline.step. Local
706
+ nondeterministic work such as Date.now or Math.random goes inside
707
+ deepline.step. Call deepline.* only in the play file; pass it to helpers.
694
708
  A run can be interrupted and replayed from the top; every finished step
695
709
  and tool call then returns its saved result. So the play name, each
696
- ctx.dataset key, ctx.step id, ctx.fetch key, and ctx.tools.execute id is
697
- a fixed string literal, and renaming one pays for that work again.
698
- Rows: ctx.dataset('key', rows).withColumn('name', (row, rowCtx) => ...)
699
- .run({ key: 'domain' }). Use a business identifier as the row key. Put
710
+ dataset key, step id, fetch key, and tools.execute id is a fixed string
711
+ literal, and renaming one pays for that work again.
712
+ Rows: deepline.dataset('key', rows).withColumn('name', (row) => ...)
713
+ .run({ key: 'domain' }); call deepline.* inside the column too. Use a business identifier as the row key. Put
700
714
  one paid call in a column, and shaping, status, and miss_reason in
701
715
  separate plain columns after it. Return the dataset for anything that
702
716
  should export as CSV.
703
717
  Dataset handles are async: await rows.count(), rows.first(),
704
718
  rows.peek(n), rows.materialize(n), or for await. Array methods on a
705
719
  handle fail [[cli:plays check]][[mcp:deepline_check_play]].
706
- Tool calls: rowCtx.tools.execute({ id, tool, input, description,
720
+ Tool calls: deepline.tools.execute({ id, tool, input, description,
707
721
  staleAfterSeconds }). In authoring edition 11, choose freshness explicitly:
708
722
  0 for fresh logical work, a positive integer for the maximum reusable
709
723
  result age in seconds, or null for indefinite result reuse. A matching
710
724
  completed operation receipt can still recover that operation after resume.
711
- Read
712
- results through the getters [[cli:describe]][[mcp:deepline_describe_tool]] lists:
725
+ Read results through the getters [[cli:describe]][[mcp:deepline_describe_tool]] lists:
713
726
  result.extractedValues.<name>.get() and
714
727
  result.extractedLists.<name>.get(). A field with no getter is under
715
728
  result.toolResponse.rawV2 with the provider's nesting kept.
716
- staleAfterSeconds on the call sets how fresh a saved result must be.
717
- Reuse before rebuilding: ctx.runPlay('prebuilt/<name>', input) runs a
729
+ Reuse before rebuilding: deepline.runPlay(key, 'prebuilt/<name>', input,
730
+ { description }) runs a
718
731
  prebuilt as one stage. Independent calls run together with Promise.all;
719
732
  a call that needs another's result waits for it.
720
733
  Failures: catch only ProviderTransientError, and only when another
721
734
  provider can answer the same question. Keep the last provider outside
722
735
  the catch so an exhausted waterfall fails loudly. Never branch on an
723
736
  error message.
724
- External APIs: ctx.fetch with a fixed key, and credentials through
725
- ctx.secrets.bearer(...) or ctx.secrets.header(...)[[cli:, stored with deepline
726
- secrets set]]. res.json is a property, not a method; check res.ok. A play
727
- cannot loop ctx.fetch over pages: fan out over rows with ctx.dataset, or
737
+ External APIs: deepline.fetch with a fixed key, and credentials through
738
+ deepline.secrets.bearer(...) or deepline.secrets.header(...)[[cli:, stored
739
+ with deepline secrets set]]. res.json is a property, not a method; check
740
+ res.ok. A play cannot loop deepline.fetch over pages: fan out over rows
741
+ with deepline.dataset, or
728
742
  call one endpoint that returns the whole result.
729
- Triggers: a cron trigger receives {} unless its binding declares an input
730
- object, written inline and pinned with the published revision.
743
+ Triggers: export const config = { cron: { schedule, timezone, input } };
744
+ or { webhook: {} }. A cron run receives {} unless cron.input is written
745
+ inline; it is pinned with the published revision.
731
746
  Runtime: The default Play runtime is 30 minutes. For a bounded long batch
732
- set the play option runtime: { timeout: '90m', size: 'standard' }, up to
733
- 4h. That is not the CLI wait timeout.
747
+ set export const config = { runtime: { timeout: '90m', size: 'standard' } };
748
+ up to 4h. That is not the CLI wait timeout.
734
749
  Recurring sourcing: .run({ key: 'domain', mode: 'net_new' }) returns only
735
750
  rows the table has not seen before.
736
751
  Results: project each answer into flat columns (the value, its source,
737
752
  whether it was validated, the outcome, the reason) and keep evidence
738
753
  under _dl_meta, including result._metadata.execution.receiptKey. Unknown
739
754
  stays null, not false.
740
- Diagram: a /** @mermaid <name> */ block above the play draws it in the
755
+ Diagram: a /** @mermaid */ block at the top of the play draws it in the
741
756
  dashboard, with // @mermaid-node <id> out:"<identifier>" above the
742
757
  statement each box stands for. [[cli:plays check]][[mcp:deepline_check_play]] validates it.
743
758
  `
@@ -1087,7 +1102,7 @@ Cost:
1087
1102
  core: `
1088
1103
  Purpose:
1089
1104
  Make one version of a play live, so [[plays run <name>]], triggers, and
1090
- ctx.runPlay callers use it.[[cli: A local .play.ts file is bundled, validated,
1105
+ deepline.runPlay callers use it.[[cli: A local .play.ts file is bundled, validated,
1091
1106
  saved as a revision, and promoted in one step; a saved play promotes one
1092
1107
  of its existing revisions.]][[mcp: It promotes one of a saved play's existing
1093
1108
  revisions; deepline_publish_play saves and promotes a new file graph.]]
@@ -1118,7 +1133,7 @@ Avoid:
1118
1133
  core: `
1119
1134
  Purpose:
1120
1135
  Publish [[cli:a local .play.ts file]][[mcp:an inline .play.ts file graph]] or promote a saved revision, so [[plays run
1121
- <name>]], triggers, and ctx.runPlay callers use it. The same operation as
1136
+ <name>]], triggers, and deepline.runPlay callers use it. The same operation as
1122
1137
  [[plays set-live]].
1123
1138
  When:
1124
1139
  Once a play [[cli:run by file path]][[mcp:run inline]] gives the right result. Running [[cli:a local file]][[mcp:a play inline]]
@@ -1255,7 +1270,7 @@ Debugging a run:
1255
1270
  last event, then [[runs logs <run-id>]][[cli: --failed]] for the failure window, then
1256
1271
  [[cli:runs watch <run-id>]][[mcp:deepline_get_run again]] to follow it if it is still active. A run can go quiet
1257
1272
  for minutes while it waits on a slow provider (Apify actors, large company
1258
- searches), an intentional ctx.sleep, or a rate-limit backoff; that is
1273
+ searches), an intentional deepline.sleep, or a rate-limit backoff; that is
1259
1274
  healthy. Stop it only after about ten minutes without progress on a fast
1260
1275
  tool.
1261
1276
  `
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkC25ZYL6Ujs = require('./chunk-C25ZYL6U.js');
6
+ var _chunkW42SSVM7js = require('./chunk-W42SSVM7.js');
7
7
 
8
8
 
9
9
 
@@ -288,8 +288,8 @@ var BROWSER_OPEN_COOLDOWN_MS = 3e4;
288
288
  var SAME_URL_BROWSER_OPEN_COOLDOWN_MS = 5 * 6e4;
289
289
  var defaultBrowserCommandRunner = childProcess;
290
290
  function getAuthedHttpClient() {
291
- const config = _chunkC25ZYL6Ujs.resolveConfig.call(void 0, );
292
- return { config, http: new (0, _chunkC25ZYL6Ujs.HttpClient)(config) };
291
+ const config = _chunkW42SSVM7js.resolveConfig.call(void 0, );
292
+ return { config, http: new (0, _chunkW42SSVM7js.HttpClient)(config) };
293
293
  }
294
294
  function stableOsUserId() {
295
295
  try {
@@ -629,7 +629,7 @@ function collectLocalEnvInfo() {
629
629
  os: `${process.platform} ${process.arch}`,
630
630
  node_version: process.version,
631
631
  home_dir: homeDir,
632
- agent_runtime: _chunkC25ZYL6Ujs.detectAgentRuntime.call(void 0, )
632
+ agent_runtime: _chunkW42SSVM7js.detectAgentRuntime.call(void 0, )
633
633
  };
634
634
  const env = process.env;
635
635
  const optional = {
@@ -876,9 +876,9 @@ function markdownTableFromRows(rows, preferredColumns = []) {
876
876
  }
877
877
  function withAgentCommandContext(value) {
878
878
  const valueRecord = value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
879
- return _chunkC25ZYL6Ujs.detectAgentRuntime.call(void 0, ) !== "unknown" && valueRecord && !Object.prototype.hasOwnProperty.call(valueRecord, "command_context") ? {
879
+ return _chunkW42SSVM7js.detectAgentRuntime.call(void 0, ) !== "unknown" && valueRecord && !Object.prototype.hasOwnProperty.call(valueRecord, "command_context") ? {
880
880
  ...valueRecord,
881
- command_context: _chunkC25ZYL6Ujs.resolveCliCommandContext.call(void 0, )
881
+ command_context: _chunkW42SSVM7js.resolveCliCommandContext.call(void 0, )
882
882
  } : value;
883
883
  }
884
884
  function printJson(value, fields) {
@@ -4,18 +4,18 @@ import {
4
4
  resolveUpdatePlan,
5
5
  runAutomaticUpdatePlan,
6
6
  shouldRunCliAutoUpdate
7
- } from "./chunk-5F6W5NWV.mjs";
7
+ } from "./chunk-44US3EL2.mjs";
8
8
  import {
9
9
  isCiEnvironment
10
- } from "./chunk-RJLFCJ23.mjs";
10
+ } from "./chunk-IW5QK3K6.mjs";
11
11
  import {
12
12
  addJsonNotice,
13
13
  isJsonOutputMode
14
- } from "./chunk-VC3E5HFO.mjs";
14
+ } from "./chunk-QWJJMQNE.mjs";
15
15
  import {
16
16
  SDK_VERSION,
17
17
  resolveApiKeyForBaseUrl
18
- } from "./chunk-VYLZS7X4.mjs";
18
+ } from "./chunk-XSERB7H2.mjs";
19
19
 
20
20
  // src/cli/compatibility-catalog.ts
21
21
  var readers = /* @__PURE__ */ new WeakMap();
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkBQR6UN3Cjs = require('./chunk-BQR6UN3C.js');
3
+ var _chunkVUYUI35Qjs = require('./chunk-VUYUI35Q.js');
4
4
 
5
5
  // src/cli/describe-options.ts
6
6
  function addDescribeOptions(command, options = {}) {
@@ -18,7 +18,7 @@ function addDescribeOptions(command, options = {}) {
18
18
  "Show only the in-play example, and explain how it takes inputs and returns outputs"
19
19
  ).option("--no-example", "Hide the run examples").option(
20
20
  "--full-schema",
21
- `Print every field: a long schema unfolded (over ${_chunkBQR6UN3Cjs.SCHEMA_LINE_LIMIT} lines), list rows, and a tool's raw response`
21
+ `Print every field: a long schema unfolded (over ${_chunkVUYUI35Qjs.SCHEMA_LINE_LIMIT} lines), list rows, and a tool's raw response`
22
22
  ).option(
23
23
  "--fields <names>",
24
24
  "Show only these fields, comma-separated, plus every required input"
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  addDescribeOptions,
3
3
  recordApiResponse
4
- } from "./chunk-4PG4ARL2.mjs";
4
+ } from "./chunk-KPKU53YO.mjs";
5
5
  import {
6
6
  recentSearchRef,
7
7
  registerDeprecatedSearchCommand
8
- } from "./chunk-ZOL3CIKN.mjs";
8
+ } from "./chunk-YNT7PJND.mjs";
9
9
  import {
10
10
  arrayField,
11
11
  formatModelDescription,
@@ -24,7 +24,7 @@ import {
24
24
  toolInputFieldsForDisplay,
25
25
  toolMetadataJsonForDescribe,
26
26
  toolOutputFieldsForDisplay
27
- } from "./chunk-IMZ56EOH.mjs";
27
+ } from "./chunk-LXTSVUZN.mjs";
28
28
  import {
29
29
  shellQuote
30
30
  } from "./chunk-OVDNJAJN.mjs";
@@ -45,7 +45,7 @@ import {
45
45
  import {
46
46
  DeeplineClient,
47
47
  validateExecutionIdempotencyKey
48
- } from "./chunk-UCI4QROZ.mjs";
48
+ } from "./chunk-6FFORGD2.mjs";
49
49
  import {
50
50
  stableStringify
51
51
  } from "./chunk-UBKA33KY.mjs";
@@ -55,18 +55,18 @@ import {
55
55
  maybeAutoUpdateAndRelaunch,
56
56
  registerCompatibilityCatalog,
57
57
  runToolExecuteStage
58
- } from "./chunk-5E55HHW3.mjs";
58
+ } from "./chunk-FJRFSBWO.mjs";
59
59
  import {
60
60
  isCliTraceEnabled,
61
61
  recordCliTrace,
62
62
  resolveCliMaintenancePolicy
63
- } from "./chunk-EKQH4IUU.mjs";
63
+ } from "./chunk-OPI7UCQG.mjs";
64
64
  import {
65
65
  checkSdkCompatibility,
66
66
  enforceSdkCompatibilityResponse,
67
67
  flushDeferredSkillsSyncNotices,
68
68
  syncSdkSkillsIfNeeded
69
- } from "./chunk-RJLFCJ23.mjs";
69
+ } from "./chunk-IW5QK3K6.mjs";
70
70
  import {
71
71
  printCommandEnvelope,
72
72
  printCompactJson,
@@ -74,12 +74,12 @@ import {
74
74
  printJsonError,
75
75
  renderCommandEnvelopeText,
76
76
  shouldEmitJson
77
- } from "./chunk-VC3E5HFO.mjs";
77
+ } from "./chunk-QWJJMQNE.mjs";
78
78
  import {
79
79
  readSdkSkillsLocalVersion,
80
80
  resolveConfig,
81
81
  sdkCliStateDirPath
82
- } from "./chunk-VYLZS7X4.mjs";
82
+ } from "./chunk-XSERB7H2.mjs";
83
83
  import {
84
84
  DeeplineError
85
85
  } from "./chunk-E4IXDAZI.mjs";
@@ -878,7 +878,7 @@ Examples:
878
878
  Notes:
879
879
  Shows the compact agent contract by default: what the tool does, cost,
880
880
  required inputs, play getters, input and full Deepline response examples,
881
- and a ctx.tools.execute snippet. Tool responses live at toolResponse.rawV2;
881
+ and a deepline.tools.execute snippet. Tool responses live at toolResponse.rawV2;
882
882
  preserve the nesting shown in the tool's example. Schemas and examples are
883
883
  separate describe fields.
884
884
  get is accepted as a compatibility alias for describe.
@@ -936,7 +936,7 @@ Examples:
936
936
  process.exitCode = await narrowView();
937
937
  return;
938
938
  }
939
- const { describeAnything } = await import("./describe-DMRK4UNO.mjs");
939
+ const { describeAnything } = await import("./describe-RX6VROHQ.mjs");
940
940
  process.exitCode = await describeAnything(
941
941
  toolId,
942
942
  {
@@ -1576,7 +1576,7 @@ function printToolExamplesOnly(tool, requestedToolId) {
1576
1576
  console.log(JSON.stringify(sampleInput, null, 2));
1577
1577
  console.log(`Use in a play:`);
1578
1578
  console.log("```ts");
1579
- console.log("const result = await ctx.tools.execute({");
1579
+ console.log("const result = await deepline.tools.execute({");
1580
1580
  console.log(" staleAfterSeconds: 0,");
1581
1581
  console.log(` id: '${stableStepIdForTool(toolId)}',`);
1582
1582
  console.log(` tool: '${toolId}',`);
@@ -1690,12 +1690,12 @@ function printToolGettersOnly(tool, requestedToolId) {
1690
1690
  function printListGetterConsumption() {
1691
1691
  if (playToolListGetterMode() === "array") {
1692
1692
  console.log(
1693
- "Use the ordinary array directly, or pass it to ctx.dataset to persist row work. No provider pagination is fetched. Lazy or incomplete lists throw; use readList for an explicit dataset read. A missing getter is not an empty list."
1693
+ "Use the ordinary array directly, or pass it to deepline.dataset to persist row work. No provider pagination is fetched. Lazy or incomplete lists throw; use readList for an explicit dataset read. A missing getter is not an empty list."
1694
1694
  );
1695
1695
  return;
1696
1696
  }
1697
1697
  console.log(
1698
- "Pass the handle to ctx.dataset, use first() for one row, or for await...of to stream rows. materialize() loads the complete current list within the memory cap; materialize(n) and peek(n) return only a prefix. None fetch additional provider pagination. A missing getter is not an empty list."
1698
+ "Pass the handle to deepline.dataset, use first() for one row, or for await...of to stream rows. materialize() loads the complete current list within the memory cap; materialize(n) and peek(n) return only a prefix. None fetch additional provider pagination. A missing getter is not an empty list."
1699
1699
  );
1700
1700
  }
1701
1701
  function listGetterHeading() {
@@ -2094,19 +2094,22 @@ function powerShellQuote(value) {
2094
2094
  }
2095
2095
  function seedToolListScript(input) {
2096
2096
  const stem = safeFileStem(input.toolId);
2097
- const fileName = `${stem}-workflow-seed-${Date.now()}.play.ts`;
2097
+ const fileName = `${stem}-workflow.play.ts`;
2098
2098
  const scriptDir = mkdtempSync(join2(tmpdir(), "deepline-workflow-seed-"));
2099
2099
  chmodSync(scriptDir, 448);
2100
2100
  const scriptPath = join2(scriptDir, fileName);
2101
2101
  const projectDir = `deepline/projects/${stem}-workflow`;
2102
- const playName = `${stem}-workflow`;
2103
2102
  const sampleRows = input.rows.length > 0 ? `${JSON.stringify(input.rows.slice(0, 2)).replace(/\]$/, "")}, ...]` : "[]";
2104
2103
  const columns = Object.keys(input.rows[0] ?? {}).join(", ");
2105
2104
  const rowKey = Object.prototype.hasOwnProperty.call(input.rows[0] ?? {}, "id") ? '"id"' : "(row) => JSON.stringify(row)";
2106
- const script = `import { definePlay } from 'deepline';
2105
+ const script = `import deepline from 'deepline';
2107
2106
 
2108
- export default definePlay(${JSON.stringify(playName)}, async (ctx) => {
2109
- const result = await ctx.tools.execute({
2107
+ export const config = {
2108
+ description: ${JSON.stringify(`Seed ${input.toolId} rows into a Deepline workflow-ready dataset.`)},
2109
+ };
2110
+
2111
+ export default async function () {
2112
+ const result = await deepline.tools.execute({
2110
2113
  staleAfterSeconds: 0,
2111
2114
  id: ${JSON.stringify(input.toolId)},
2112
2115
  tool: ${JSON.stringify(input.toolId)},
@@ -2122,11 +2125,11 @@ export default definePlay(${JSON.stringify(playName)}, async (ctx) => {
2122
2125
  // ${sampleRows}
2123
2126
  // columns: ${columns}
2124
2127
  // ${playToolListGetterMode() === "array" ? "extractedLists.<name>.get() returns an ordinary array from this response." : "extractedLists.<name>.get() returns a dataset handle for row-shaped list outputs."}
2125
- // ${playToolListGetterMode() === "array" ? "Use array methods directly; pass rows to ctx.dataset to persist row work." : "Pass it to ctx.dataset; use rows.peek/count/materialize only for deliberate bounded inspection."}
2126
- // .withColumn('email_waterfall', (row, rowCtx) => rowCtx.runPlay('name_domain_email', 'name-and-domain-to-email', { first_name: String(row.first_name ?? ''), last_name: String(row.last_name ?? ''), domain: String(row.domain ?? '') }, { description: 'Resolve email.' }))
2127
- // .withColumn('phone_waterfall', (row, rowCtx) => rowCtx.runPlay('contact_phone', 'contact-to-phone', { first_name: String(row.first_name ?? ''), last_name: String(row.last_name ?? ''), email: String(row.email ?? '') }, { description: 'Resolve phone.' }))
2128
- // ctx.dataset is idempotent for completed rows during same-run recovery. New runs follow each call's freshness.
2129
- const enrichedData = await ctx
2128
+ // ${playToolListGetterMode() === "array" ? "Use array methods directly; pass rows to deepline.dataset to persist row work." : "Pass it to deepline.dataset; use rows.peek/count/materialize only for deliberate bounded inspection."}
2129
+ // .withColumn('email_waterfall', (row) => deepline.runPlay('name_domain_email', 'name-and-domain-to-email', { first_name: String(row.first_name ?? ''), last_name: String(row.last_name ?? ''), domain: String(row.domain ?? '') }, { description: 'Resolve email.' }))
2130
+ // .withColumn('phone_waterfall', (row) => deepline.runPlay('contact_phone', 'contact-to-phone', { first_name: String(row.first_name ?? ''), last_name: String(row.last_name ?? ''), email: String(row.email ?? '') }, { description: 'Resolve phone.' }))
2131
+ // deepline.dataset is idempotent for completed rows during same-run recovery. New runs follow each call's freshness.
2132
+ const enrichedData = await deepline
2130
2133
  .dataset('enriched_data', rows)
2131
2134
  .run({
2132
2135
  key: ${rowKey},
@@ -2137,9 +2140,7 @@ export default definePlay(${JSON.stringify(playName)}, async (ctx) => {
2137
2140
  rows: enrichedData,
2138
2141
  count: await enrichedData.count(),
2139
2142
  };
2140
- }, {
2141
- description: ${JSON.stringify(`Seed ${input.toolId} rows into a Deepline workflow-ready dataset.`)},
2142
- });
2143
+ }
2143
2144
  `;
2144
2145
  writeFileSync2(scriptPath, script, { encoding: "utf-8", mode: 384 });
2145
2146
  return {
@@ -647,7 +647,19 @@ Writing a play:
647
647
  plays check my.play.ts validate after every edit; free
648
648
  plays run my.play.ts --input '{...}' run the local file
649
649
  plays publish my.play.ts make it live for plays run <name> and triggers
650
- The file is: export default definePlay('name', async (ctx, input) => {...}).
650
+ plays run -e "<code>" run code inline as a play function's body
651
+ (input holds --input), like python -c
652
+ A play is a default-exported async function of its input; the file name
653
+ is its default name:
654
+ import deepline from 'deepline';
655
+ export default async function (input: { domain: string }) {
656
+ const company = await deepline.tools.execute({ id, tool, input, description });
657
+ return { company };
658
+ }
659
+ The parameter's type is the input contract; the returned object is the
660
+ result.
661
+ An optional export const config = { name, description, cron, webhook,
662
+ runtime }; at the top of the file sets the name, triggers and runtime.
651
663
  --help --verbose lists the authoring rules.
652
664
  Auditing plays:
653
665
  plays list every saved play
@@ -672,7 +684,8 @@ Writing a play:
672
684
  deepline_run_inline_play run it without publishing; CSV data files go
673
685
  in files, named by input_file_path
674
686
  deepline_publish_play make it live for deepline_run_play and triggers
675
- The file is: export default definePlay('name', async (ctx, input) => {...}).
687
+ A play default-exports an async function of its input; it calls
688
+ deepline.tools.execute and returns { ... }.
676
689
  deepline_help with command "plays" and detail "verbose" lists the
677
690
  authoring rules.
678
691
  Auditing plays:
@@ -686,58 +699,60 @@ Cost:
686
699
  `,
687
700
  verbose: `
688
701
  Authoring rules:
689
- Reach the outside world only through ctx: ctx.csv, ctx.dataset,
690
- ctx.tools.execute, ctx.runPlay, ctx.step, ctx.fetch, ctx.secrets,
691
- ctx.customerDb, and ctx.log. No fs, raw fetch, or shell commands, also not
692
- inside ctx.step. Local nondeterministic work such as Date.now or
693
- Math.random goes inside ctx.step.
702
+ Reach the outside world only through deepline: deepline.csv,
703
+ deepline.dataset, deepline.tools.execute, deepline.runPlay, deepline.step,
704
+ deepline.fetch, deepline.secrets, deepline.customerDb, and deepline.log.
705
+ No fs, raw fetch, or shell commands, also not inside deepline.step. Local
706
+ nondeterministic work such as Date.now or Math.random goes inside
707
+ deepline.step. Call deepline.* only in the play file; pass it to helpers.
694
708
  A run can be interrupted and replayed from the top; every finished step
695
709
  and tool call then returns its saved result. So the play name, each
696
- ctx.dataset key, ctx.step id, ctx.fetch key, and ctx.tools.execute id is
697
- a fixed string literal, and renaming one pays for that work again.
698
- Rows: ctx.dataset('key', rows).withColumn('name', (row, rowCtx) => ...)
699
- .run({ key: 'domain' }). Use a business identifier as the row key. Put
710
+ dataset key, step id, fetch key, and tools.execute id is a fixed string
711
+ literal, and renaming one pays for that work again.
712
+ Rows: deepline.dataset('key', rows).withColumn('name', (row) => ...)
713
+ .run({ key: 'domain' }); call deepline.* inside the column too. Use a business identifier as the row key. Put
700
714
  one paid call in a column, and shaping, status, and miss_reason in
701
715
  separate plain columns after it. Return the dataset for anything that
702
716
  should export as CSV.
703
717
  Dataset handles are async: await rows.count(), rows.first(),
704
718
  rows.peek(n), rows.materialize(n), or for await. Array methods on a
705
719
  handle fail [[cli:plays check]][[mcp:deepline_check_play]].
706
- Tool calls: rowCtx.tools.execute({ id, tool, input, description,
720
+ Tool calls: deepline.tools.execute({ id, tool, input, description,
707
721
  staleAfterSeconds }). In authoring edition 11, choose freshness explicitly:
708
722
  0 for fresh logical work, a positive integer for the maximum reusable
709
723
  result age in seconds, or null for indefinite result reuse. A matching
710
724
  completed operation receipt can still recover that operation after resume.
711
- Read
712
- results through the getters [[cli:describe]][[mcp:deepline_describe_tool]] lists:
725
+ Read results through the getters [[cli:describe]][[mcp:deepline_describe_tool]] lists:
713
726
  result.extractedValues.<name>.get() and
714
727
  result.extractedLists.<name>.get(). A field with no getter is under
715
728
  result.toolResponse.rawV2 with the provider's nesting kept.
716
- staleAfterSeconds on the call sets how fresh a saved result must be.
717
- Reuse before rebuilding: ctx.runPlay('prebuilt/<name>', input) runs a
729
+ Reuse before rebuilding: deepline.runPlay(key, 'prebuilt/<name>', input,
730
+ { description }) runs a
718
731
  prebuilt as one stage. Independent calls run together with Promise.all;
719
732
  a call that needs another's result waits for it.
720
733
  Failures: catch only ProviderTransientError, and only when another
721
734
  provider can answer the same question. Keep the last provider outside
722
735
  the catch so an exhausted waterfall fails loudly. Never branch on an
723
736
  error message.
724
- External APIs: ctx.fetch with a fixed key, and credentials through
725
- ctx.secrets.bearer(...) or ctx.secrets.header(...)[[cli:, stored with deepline
726
- secrets set]]. res.json is a property, not a method; check res.ok. A play
727
- cannot loop ctx.fetch over pages: fan out over rows with ctx.dataset, or
737
+ External APIs: deepline.fetch with a fixed key, and credentials through
738
+ deepline.secrets.bearer(...) or deepline.secrets.header(...)[[cli:, stored
739
+ with deepline secrets set]]. res.json is a property, not a method; check
740
+ res.ok. A play cannot loop deepline.fetch over pages: fan out over rows
741
+ with deepline.dataset, or
728
742
  call one endpoint that returns the whole result.
729
- Triggers: a cron trigger receives {} unless its binding declares an input
730
- object, written inline and pinned with the published revision.
743
+ Triggers: export const config = { cron: { schedule, timezone, input } };
744
+ or { webhook: {} }. A cron run receives {} unless cron.input is written
745
+ inline; it is pinned with the published revision.
731
746
  Runtime: The default Play runtime is 30 minutes. For a bounded long batch
732
- set the play option runtime: { timeout: '90m', size: 'standard' }, up to
733
- 4h. That is not the CLI wait timeout.
747
+ set export const config = { runtime: { timeout: '90m', size: 'standard' } };
748
+ up to 4h. That is not the CLI wait timeout.
734
749
  Recurring sourcing: .run({ key: 'domain', mode: 'net_new' }) returns only
735
750
  rows the table has not seen before.
736
751
  Results: project each answer into flat columns (the value, its source,
737
752
  whether it was validated, the outcome, the reason) and keep evidence
738
753
  under _dl_meta, including result._metadata.execution.receiptKey. Unknown
739
754
  stays null, not false.
740
- Diagram: a /** @mermaid <name> */ block above the play draws it in the
755
+ Diagram: a /** @mermaid */ block at the top of the play draws it in the
741
756
  dashboard, with // @mermaid-node <id> out:"<identifier>" above the
742
757
  statement each box stands for. [[cli:plays check]][[mcp:deepline_check_play]] validates it.
743
758
  `
@@ -1087,7 +1102,7 @@ Cost:
1087
1102
  core: `
1088
1103
  Purpose:
1089
1104
  Make one version of a play live, so [[plays run <name>]], triggers, and
1090
- ctx.runPlay callers use it.[[cli: A local .play.ts file is bundled, validated,
1105
+ deepline.runPlay callers use it.[[cli: A local .play.ts file is bundled, validated,
1091
1106
  saved as a revision, and promoted in one step; a saved play promotes one
1092
1107
  of its existing revisions.]][[mcp: It promotes one of a saved play's existing
1093
1108
  revisions; deepline_publish_play saves and promotes a new file graph.]]
@@ -1118,7 +1133,7 @@ Avoid:
1118
1133
  core: `
1119
1134
  Purpose:
1120
1135
  Publish [[cli:a local .play.ts file]][[mcp:an inline .play.ts file graph]] or promote a saved revision, so [[plays run
1121
- <name>]], triggers, and ctx.runPlay callers use it. The same operation as
1136
+ <name>]], triggers, and deepline.runPlay callers use it. The same operation as
1122
1137
  [[plays set-live]].
1123
1138
  When:
1124
1139
  Once a play [[cli:run by file path]][[mcp:run inline]] gives the right result. Running [[cli:a local file]][[mcp:a play inline]]
@@ -1255,7 +1270,7 @@ Debugging a run:
1255
1270
  last event, then [[runs logs <run-id>]][[cli: --failed]] for the failure window, then
1256
1271
  [[cli:runs watch <run-id>]][[mcp:deepline_get_run again]] to follow it if it is still active. A run can go quiet
1257
1272
  for minutes while it waits on a slow provider (Apify actors, large company
1258
- searches), an intentional ctx.sleep, or a rate-limit backoff; that is
1273
+ searches), an intentional deepline.sleep, or a rate-limit backoff; that is
1259
1274
  healthy. Stop it only after about ten minutes without progress on a fast
1260
1275
  tool.
1261
1276
  `
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isJsonOutputMode
3
- } from "./chunk-VC3E5HFO.mjs";
3
+ } from "./chunk-QWJJMQNE.mjs";
4
4
  import {
5
5
  DEFAULT_SKILL_AGENTS,
6
6
  KNOWN_SKILL_AGENTS,
@@ -17,13 +17,13 @@ import {
17
17
  sdkCliStateDirPath,
18
18
  skillsAgentPathSegment,
19
19
  writeSdkSkillsLocalVersion
20
- } from "./chunk-VYLZS7X4.mjs";
20
+ } from "./chunk-XSERB7H2.mjs";
21
21
  import {
22
22
  DeeplineError
23
23
  } from "./chunk-E4IXDAZI.mjs";
24
24
  import {
25
25
  SDK_RELEASE
26
- } from "./chunk-SPLOMS4N.mjs";
26
+ } from "./chunk-JDAXVQV7.mjs";
27
27
 
28
28
  // src/compat.ts
29
29
  import { randomUUID } from "crypto";
@@ -49,7 +49,7 @@ 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.421",
52
+ version: "0.3.423",
53
53
  updateSummary: {
54
54
  introducedIn: "0.3.90",
55
55
  summary: "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."
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SCHEMA_LINE_LIMIT
3
- } from "./chunk-IHG7UAHD.mjs";
3
+ } from "./chunk-MLJBCS3E.mjs";
4
4
 
5
5
  // src/cli/describe-options.ts
6
6
  function addDescribeOptions(command, options = {}) {
@@ -2,7 +2,7 @@ import {
2
2
  rateLimitSummary,
3
3
  schemaField,
4
4
  schemaFields
5
- } from "./chunk-IHG7UAHD.mjs";
5
+ } from "./chunk-MLJBCS3E.mjs";
6
6
  import {
7
7
  Capability,
8
8
  observedMaxText
@@ -618,7 +618,7 @@ function usageGuidanceWithAccessDefaults(usageGuidance) {
618
618
  extractedLists: {
619
619
  ...recordField(existingAccess, "extractedLists"),
620
620
  expression: "toolExecutionResult.extractedLists.<name>.get()",
621
- meaning: playToolListGetterMode() === "array" ? "Returns an ordinary array from this response. Use array methods directly or pass it to ctx.dataset to persist row work. Lazy or incomplete lists throw; use readList for an explicit dataset read. It does not fetch provider pages." : "Returns a PlayDataset, not a JavaScript array. Pass the handle to ctx.dataset, use first(), async iteration, or await handle.materialize() for the complete current list within the memory cap. materialize(n) and peek(n) return a prefix; none fetch additional provider pages. A missing getter is not an empty list."
621
+ meaning: playToolListGetterMode() === "array" ? "Returns an ordinary array from this response. Use array methods directly or pass it to deepline.dataset to persist row work. Lazy or incomplete lists throw; use readList for an explicit dataset read. It does not fetch provider pages." : "Returns a PlayDataset, not a JavaScript array. Pass the handle to deepline.dataset, use first(), async iteration, or await handle.materialize() for the complete current list within the memory cap. materialize(n) and peek(n) return a prefix; none fetch additional provider pages. A missing getter is not an empty list."
622
622
  },
623
623
  rawToolResponse: {
624
624
  expression: "toolExecutionResult.toolResponse.rawV2",
@@ -11,10 +11,10 @@ import {
11
11
  skillsInstallLeasePath,
12
12
  skillsSourceUrl,
13
13
  syncSdkSkillsIfNeeded
14
- } from "./chunk-RJLFCJ23.mjs";
14
+ } from "./chunk-IW5QK3K6.mjs";
15
15
  import {
16
16
  printCommandEnvelope
17
- } from "./chunk-VC3E5HFO.mjs";
17
+ } from "./chunk-QWJJMQNE.mjs";
18
18
  import {
19
19
  SDK_VERSION,
20
20
  autoDetectBaseUrl,
@@ -22,7 +22,7 @@ import {
22
22
  ensureProjectPrivatePathsIgnored,
23
23
  resolveProjectPinTarget,
24
24
  sdkCliStateDirPath
25
- } from "./chunk-VYLZS7X4.mjs";
25
+ } from "./chunk-XSERB7H2.mjs";
26
26
 
27
27
  // src/cli/commands/skills.ts
28
28
  import { spawn } from "child_process";