deepline 0.3.408 → 0.3.410

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 (217) hide show
  1. package/dist/bundling-sources/sdk/src/agent-runtime.ts +18 -1
  2. package/dist/bundling-sources/sdk/src/client.ts +212 -334
  3. package/dist/bundling-sources/sdk/src/compat.ts +45 -2
  4. package/dist/bundling-sources/sdk/src/db/query.ts +9 -10
  5. package/dist/bundling-sources/sdk/src/http.ts +38 -20
  6. package/dist/bundling-sources/sdk/src/index.ts +4 -5
  7. package/dist/bundling-sources/sdk/src/play.ts +10 -10
  8. package/dist/bundling-sources/sdk/src/plays/bundle-play-file.ts +6 -4
  9. package/dist/bundling-sources/sdk/src/plays/check-local-play-graph.ts +114 -0
  10. package/dist/bundling-sources/sdk/src/plays/client.ts +431 -0
  11. package/dist/bundling-sources/sdk/src/plays/local-play-execution.ts +2 -2
  12. package/dist/bundling-sources/sdk/src/plays/run-request.ts +106 -16
  13. package/dist/bundling-sources/sdk/src/release.ts +13 -7
  14. package/dist/bundling-sources/sdk/src/runs/read-errors.ts +8 -0
  15. package/dist/bundling-sources/sdk/src/runs/watch-polling.ts +124 -13
  16. package/dist/bundling-sources/sdk/src/tool-calls.ts +108 -19
  17. package/dist/bundling-sources/sdk/src/types.ts +18 -0
  18. package/dist/bundling-sources/shared_libs/integration-contracts/execute-retry-contract.ts +37 -0
  19. package/dist/bundling-sources/shared_libs/integration-contracts/package.json +3 -0
  20. package/dist/bundling-sources/shared_libs/play-data-plane/r2.ts +3 -1
  21. package/dist/bundling-sources/shared_libs/play-runtime/context.ts +277 -76
  22. package/dist/bundling-sources/shared_libs/play-runtime/ctx-types.ts +6 -0
  23. package/dist/bundling-sources/shared_libs/play-runtime/dataset-row-input.ts +124 -0
  24. package/dist/bundling-sources/shared_libs/play-runtime/durable-call-cache.ts +6 -62
  25. package/dist/bundling-sources/shared_libs/play-runtime/durable-receipt-execution.ts +1 -0
  26. package/dist/bundling-sources/shared_libs/play-runtime/durable-tool-identity.ts +67 -0
  27. package/dist/bundling-sources/shared_libs/play-runtime/execute-server-timing.ts +64 -6
  28. package/dist/bundling-sources/shared_libs/play-runtime/freshness-receipt-execution.ts +1 -5
  29. package/dist/bundling-sources/shared_libs/play-runtime/ledger-safe-payload.ts +1 -1
  30. package/dist/bundling-sources/shared_libs/play-runtime/play-artifact-runtime-contract.ts +3 -0
  31. package/dist/bundling-sources/shared_libs/play-runtime/play-http-request.ts +10 -0
  32. package/dist/bundling-sources/shared_libs/play-runtime/query-result-dataset.ts +3 -0
  33. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/egress-probe.ts +3 -0
  34. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/index.ts +26 -16
  35. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/runtime-heartbeat.ts +36 -11
  36. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/runtime-terminal-push.ts +35 -0
  37. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-launch-transport.ts +21 -0
  38. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-payload-transport.ts +21 -6
  39. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-session-execution.ts +11 -2
  40. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona.ts +85 -20
  41. package/dist/bundling-sources/shared_libs/play-runtime/runtime-api.ts +71 -13
  42. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-execution-queries.ts +100 -0
  43. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-pool.ts +9 -5
  44. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-runtime-worker.ts +337 -146
  45. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-shared.ts +26 -12
  46. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-rate-state.ts +3 -1
  47. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres.ts +425 -102
  48. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/run-ledger-dispatch-authority.ts +4 -0
  49. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/run-ledger-outbox-recovery.ts +4 -0
  50. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-event-search.ts +9 -0
  51. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-sandbox-capacity.ts +181 -124
  52. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-worker-wake.ts +152 -0
  53. package/dist/bundling-sources/shared_libs/play-runtime/test-runtime-seams.ts +5 -3
  54. package/dist/bundling-sources/shared_libs/play-runtime/tool-cache-policy.ts +31 -0
  55. package/dist/bundling-sources/shared_libs/play-runtime/transient-service-error.ts +10 -0
  56. package/dist/bundling-sources/shared_libs/plays/ambiguous-write-error.ts +25 -0
  57. package/dist/bundling-sources/shared_libs/plays/artifact-types.ts +4 -0
  58. package/dist/bundling-sources/shared_libs/plays/authoring-contract.ts +63 -68
  59. package/dist/bundling-sources/shared_libs/plays/bundling/index.ts +129 -63
  60. package/dist/bundling-sources/shared_libs/plays/contracts.ts +14 -0
  61. package/dist/bundling-sources/shared_libs/plays/enrich-play-compiler.ts +58 -16
  62. package/dist/bundling-sources/shared_libs/plays/fetch-http-error.ts +50 -0
  63. package/dist/bundling-sources/shared_libs/plays/source-authoring-edition.ts +351 -0
  64. package/dist/bundling-sources/shared_libs/plays/tool-list-getter-mode.ts +9 -0
  65. package/dist/bundling-sources/shared_libs/plays/tool-result-types.ts +1 -1
  66. package/dist/cli/{auth-UVD3CUBB.mjs → auth-LLXLIILR.mjs} +6 -6
  67. package/dist/cli/auth-UG4WOYGL.js +40 -0
  68. package/dist/cli/{billing-BZVTXXLM.mjs → billing-5FVXZYAC.mjs} +8 -8
  69. package/dist/cli/{billing-BZVYAF6T.js → billing-NFPK7GYP.js} +84 -84
  70. package/dist/cli/{chunk-ZAAKSJAS.js → chunk-27GJKC5Q.js} +17 -10
  71. package/dist/cli/{chunk-UHNDVD3P.js → chunk-2H4EY7KH.js} +100 -41
  72. package/dist/cli/{chunk-WTT6CLED.mjs → chunk-2YR7BIIC.mjs} +5 -2
  73. package/dist/cli/{chunk-3ZB6IIA7.js → chunk-36AHOWVS.js} +26 -26
  74. package/dist/cli/{chunk-OSDXE27V.mjs → chunk-4PG4ARL2.mjs} +17 -10
  75. package/dist/cli/{chunk-LOYISF7S.mjs → chunk-4XQLVUC7.mjs} +738 -512
  76. package/dist/cli/{chunk-J5PTX66Y.js → chunk-5MLCBXXU.js} +8 -1
  77. package/dist/cli/chunk-5TUGWDEB.js +313 -0
  78. package/dist/cli/{chunk-D6FFBSM5.js → chunk-5UUQAGJS.js} +5 -2
  79. package/dist/cli/{chunk-4CFULMRB.mjs → chunk-5V5Y37BC.mjs} +2 -2
  80. package/dist/cli/{chunk-PMVFAYL7.mjs → chunk-63ILLN5H.mjs} +2 -2
  81. package/dist/cli/{chunk-AUMD2VXP.js → chunk-63S7X326.js} +1032 -806
  82. package/dist/cli/{chunk-4QFT5LGV.mjs → chunk-6PGATQ6L.mjs} +6 -3
  83. package/dist/cli/{chunk-6BJK4EJ3.mjs → chunk-AARWVK4C.mjs} +2132 -65
  84. package/dist/cli/{chunk-FERRDNMO.js → chunk-AD47BXN2.js} +5 -5
  85. package/dist/cli/{chunk-4RNDKFNQ.js → chunk-D37FEBES.js} +2 -2
  86. package/dist/cli/{chunk-S6R3OX7B.js → chunk-E4CABWXL.js} +25 -2
  87. package/dist/cli/{chunk-NXGCO4JB.mjs → chunk-E4IXDAZI.mjs} +5 -0
  88. package/dist/cli/chunk-EQ4Z7RJW.mjs +35 -0
  89. package/dist/cli/chunk-FR2ILQ4G.mjs +8 -0
  90. package/dist/cli/{chunk-QUAQX3FQ.js → chunk-FVLNYDI4.js} +128 -376
  91. package/dist/cli/{chunk-BRJUESQV.js → chunk-FZJAM576.js} +50 -50
  92. package/dist/cli/{chunk-BZAMOCPA.mjs → chunk-IMZ56EOH.mjs} +3 -3
  93. package/dist/cli/{chunk-IOHRWLQE.mjs → chunk-IPG42SD2.mjs} +452 -138
  94. package/dist/cli/chunk-J33TSWO5.js +8 -0
  95. package/dist/cli/{chunk-XXLXOUUU.mjs → chunk-JNXJZ577.mjs} +1 -1
  96. package/dist/cli/{chunk-JI2B4RZP.mjs → chunk-KCC3FKIW.mjs} +71 -12
  97. package/dist/cli/{chunk-6IKARAYD.mjs → chunk-L2VKAASU.mjs} +23 -0
  98. package/dist/cli/{chunk-PYZZMAJQ.mjs → chunk-LFSHGNT2.mjs} +8 -1
  99. package/dist/cli/{chunk-2XXXFPTD.js → chunk-LTFL4JRN.js} +426 -721
  100. package/dist/cli/{chunk-YHPYUZZX.mjs → chunk-MAMVGOSC.mjs} +1 -1
  101. package/dist/cli/{chunk-URACNNLO.mjs → chunk-MN2OWLFA.mjs} +2 -2
  102. package/dist/cli/{chunk-Q3PUHXOY.js → chunk-NF4V5DTY.js} +12 -12
  103. package/dist/cli/{chunk-Q2E4E4FJ.js → chunk-NPBJI7RE.js} +8 -8
  104. package/dist/cli/chunk-NTVLGHFM.js +501 -0
  105. package/dist/cli/{chunk-HQXL5526.mjs → chunk-NUX2QHNC.mjs} +1 -1
  106. package/dist/cli/{chunk-E3PJF6YP.js → chunk-OBB4QXHA.js} +19 -4
  107. package/dist/cli/{chunk-SEFMGO3Z.js → chunk-OQQOXSYA.js} +2184 -117
  108. package/dist/cli/chunk-OZ6E3IRZ.js +6084 -0
  109. package/dist/cli/{chunk-7P5AA3SN.js → chunk-PPDBRJRW.js} +6 -1
  110. package/dist/cli/{chunk-IWBXJDZA.mjs → chunk-PZSLPBDA.mjs} +2 -2
  111. package/dist/cli/{chunk-ILHRA7AD.js → chunk-QADCFSGH.js} +7 -7
  112. package/dist/cli/{chunk-ECVLPS67.js → chunk-QJI5FIOW.js} +170 -49
  113. package/dist/cli/{chunk-I3DHIXVJ.mjs → chunk-QL22Y56M.mjs} +149 -28
  114. package/dist/cli/{chunk-SD7MXAJA.mjs → chunk-RFB25DSQ.mjs} +36 -284
  115. package/dist/cli/chunk-T44IIOT6.mjs +501 -0
  116. package/dist/cli/chunk-VK2LZ5IP.js +35 -0
  117. package/dist/cli/chunk-VKKVSFRD.js +62 -0
  118. package/dist/cli/{chunk-RWCY6YI2.js → chunk-VYKV5XHL.js} +644 -330
  119. package/dist/cli/{chunk-GSK6NHVM.js → chunk-WU4U6VSB.js} +5 -5
  120. package/dist/cli/chunk-XHLKJOTN.mjs +313 -0
  121. package/dist/cli/{chunk-MJELBQBU.mjs → chunk-XIHWSXSV.mjs} +330 -625
  122. package/dist/cli/chunk-XNZJKRJA.mjs +6084 -0
  123. package/dist/cli/chunk-ZCALLYF6.mjs +62 -0
  124. package/dist/cli/{chunk-ZBABPK6Y.js → chunk-ZFZ427HN.js} +11 -8
  125. package/dist/cli/{chunk-SJVVBWRL.mjs → chunk-ZKYEW55U.mjs} +16 -1
  126. package/dist/cli/command-docs.js +2 -2
  127. package/dist/cli/command-docs.mjs +1 -1
  128. package/dist/cli/{csv-XLGLHJ6P.js → csv-7U3FJYKZ.js} +14 -14
  129. package/dist/cli/{csv-WPSXG6ZZ.mjs → csv-ZWLDMM4A.mjs} +5 -5
  130. package/dist/cli/{db-5PTNJG4X.js → db-DNCGV5PC.js} +42 -47
  131. package/dist/cli/{db-ABS57ABJ.mjs → db-IMYXVMGI.mjs} +15 -20
  132. package/dist/cli/{describe-PVWQJ2PB.mjs → describe-Q23DWJUK.mjs} +20 -15
  133. package/dist/cli/{describe-EZS6PQXA.js → describe-S34JUX5W.js} +27 -22
  134. package/dist/cli/describe-core.d.mts +2 -2
  135. package/dist/cli/describe-core.d.ts +2 -2
  136. package/dist/cli/describe-core.js +6 -6
  137. package/dist/cli/describe-core.mjs +5 -5
  138. package/dist/cli/{executions-OKJGATQZ.mjs → executions-A73EUGSI.mjs} +8 -8
  139. package/dist/cli/{executions-FNTAFQ7Y.js → executions-XOMPX2YJ.js} +10 -10
  140. package/dist/cli/{feedback-W27HDMRR.mjs → feedback-N4GJ2POI.mjs} +11 -7
  141. package/dist/cli/{feedback-6YBOMSUA.js → feedback-QTCHNJJH.js} +13 -9
  142. package/dist/cli/{git-YOOUEL6M.mjs → git-4Q3JIQYZ.mjs} +6 -6
  143. package/dist/cli/git-I6CPBEVG.js +24 -0
  144. package/dist/cli/index.js +240 -352
  145. package/dist/cli/index.mjs +163 -275
  146. package/dist/cli/{legacy-noops-V6OKW7VR.mjs → legacy-noops-3SOVGFF7.mjs} +6 -6
  147. package/dist/cli/{legacy-noops-2VZ7XT6C.js → legacy-noops-4OSHZM34.js} +9 -9
  148. package/dist/cli/{monitors-FBWGVIUS.js → monitors-LVE2KZNG.js} +94 -94
  149. package/dist/cli/{monitors-P2YYWTWT.mjs → monitors-QP2XID2B.mjs} +8 -8
  150. package/dist/cli/{org-DVMG6H3C.mjs → org-IVRETVQA.mjs} +8 -8
  151. package/dist/cli/{org-3XUSVX5T.js → org-XFLK5IAP.js} +68 -68
  152. package/dist/cli/{play-GNC5CQAS.mjs → play-DE7VH6NU.mjs} +533 -98
  153. package/dist/cli/{play-YG5L4BWQ.js → play-XXTPPP23.js} +1067 -632
  154. package/dist/cli/{providers-7PSWG2OV.js → providers-DLD3I4JF.js} +11 -11
  155. package/dist/cli/{providers-JR33SLWL.mjs → providers-GX2NIZQQ.mjs} +8 -8
  156. package/dist/cli/{quickstart-VUOBQYIQ.mjs → quickstart-72B4L4PK.mjs} +5 -5
  157. package/dist/cli/{quickstart-FDVZ5BL3.js → quickstart-XNS3HSWC.js} +7 -7
  158. package/dist/cli/search-6NCH4HB5.js +30 -0
  159. package/dist/cli/{search-JZYLO33K.mjs → search-SUTRANJI.mjs} +9 -9
  160. package/dist/cli/{secrets-VS266FVA.js → secrets-6OBLOVEV.js} +17 -17
  161. package/dist/cli/{secrets-3MCYBT4I.mjs → secrets-FPFXXNUH.mjs} +8 -8
  162. package/dist/cli/sessions-235532DR.js +16 -0
  163. package/dist/cli/{sessions-ELLLT23E.mjs → sessions-R25I4QKN.mjs} +6 -6
  164. package/dist/cli/{settings-PZCKAFII.mjs → settings-AOP6F5PZ.mjs} +12 -12
  165. package/dist/cli/{settings-7364NMMA.js → settings-VL5FOFPN.js} +79 -79
  166. package/dist/cli/{setup-PMWYLCT6.js → setup-BSC67YT3.js} +45 -44
  167. package/dist/cli/{setup-A7GQ4KIA.mjs → setup-ZMPHBHVJ.mjs} +11 -10
  168. package/dist/cli/skills-3IWLYYRL.js +29 -0
  169. package/dist/cli/{skills-WS6BIFPQ.mjs → skills-KF65TVFO.mjs} +7 -7
  170. package/dist/cli/tools-LR66SPYU.js +44 -0
  171. package/dist/cli/{tools-BR4DOZA2.mjs → tools-SX4XIPM7.mjs} +19 -14
  172. package/dist/cli/{update-D2B7UNFT.mjs → update-QRMFRAQQ.mjs} +11 -9
  173. package/dist/cli/update-SP7UEO53.js +31 -0
  174. package/dist/cli/{workflow-PQXC2R47.mjs → workflow-FOEEEB7G.mjs} +44 -20
  175. package/dist/cli/{workflow-6ODTCYXU.js → workflow-KOCK2FLW.js} +54 -30
  176. package/dist/{client-Z9Pye1Wm.d.mts → client-74k4IPh6.d.mts} +137 -54
  177. package/dist/{client-BcvhDfJJ.d.ts → client-C1IK1f8c.d.ts} +137 -54
  178. package/dist/{compiler-manifest-Ycx-hoAr.d.mts → compiler-manifest-lzWpbV3w.d.mts} +83 -66
  179. package/dist/{compiler-manifest-Ycx-hoAr.d.ts → compiler-manifest-lzWpbV3w.d.ts} +83 -66
  180. package/dist/{index-CZXgiN3E.d.mts → index-C8Cy-YTm.d.ts} +5 -1
  181. package/dist/{index-NPG5pqxQ.d.ts → index-CtNK-0nI.d.mts} +5 -1
  182. package/dist/index.d.mts +47 -9
  183. package/dist/index.d.ts +47 -9
  184. package/dist/index.js +17 -14
  185. package/dist/index.mjs +13 -10
  186. package/dist/install-integrity.json +120 -104
  187. package/dist/plays/bundle-play-file.d.mts +3 -3
  188. package/dist/plays/bundle-play-file.d.ts +3 -3
  189. package/dist/plays/bundle-play-file.mjs +5 -4
  190. package/dist/plays/csv-data-input.js +3 -3
  191. package/dist/plays/csv-data-input.mjs +2 -2
  192. package/dist/plays/play-description.d.mts +2 -2
  193. package/dist/plays/play-description.d.ts +2 -2
  194. package/dist/plays/run-request.d.mts +2 -2
  195. package/dist/plays/run-request.d.ts +2 -2
  196. package/dist/plays/run-request.js +11 -3
  197. package/dist/plays/run-request.mjs +10 -2
  198. package/dist/release.d.mts +15 -6
  199. package/dist/release.d.ts +15 -6
  200. package/dist/release.js +2 -2
  201. package/dist/release.mjs +1 -1
  202. package/package.json +2 -2
  203. package/dist/cli/auth-3GB2K636.js +0 -40
  204. package/dist/cli/chunk-67RWR34T.mjs +0 -155
  205. package/dist/cli/chunk-CLJGSOVM.mjs +0 -1716
  206. package/dist/cli/chunk-HQY2SG3K.js +0 -83
  207. package/dist/cli/chunk-OSFWFV72.js +0 -155
  208. package/dist/cli/chunk-Q3LFI3VH.js +0 -392
  209. package/dist/cli/chunk-WPAB4DCU.mjs +0 -83
  210. package/dist/cli/chunk-YMOFWHGO.mjs +0 -392
  211. package/dist/cli/chunk-Z4VNJOF7.js +0 -1716
  212. package/dist/cli/git-YKUXXJOR.js +0 -24
  213. package/dist/cli/search-PPPYC5OZ.js +0 -30
  214. package/dist/cli/sessions-TEHEWW7O.js +0 -16
  215. package/dist/cli/skills-SYS7VRRK.js +0 -29
  216. package/dist/cli/tools-KK4BKVQR.js +0 -39
  217. package/dist/cli/update-2IV5JTX2.js +0 -29
@@ -0,0 +1,501 @@
1
+ import {
2
+ DEFAULT_SDK_SKILL_NAMES,
3
+ LEGACY_SKILL_NAMES_TO_REMOVE,
4
+ SKILLS_AUTO_SYNC_COMMAND,
5
+ SKILLS_NPX_PACKAGE,
6
+ SkillsStateUnavailableError,
7
+ acquireSkillsInstallLease,
8
+ clearFailedAutomaticSkillsSync,
9
+ hasFailedAutomaticSkillsSync,
10
+ resolveShellSpawn,
11
+ skillsInstallLeasePath,
12
+ skillsSourceUrl,
13
+ syncSdkSkillsIfNeeded
14
+ } from "./chunk-XIHWSXSV.mjs";
15
+ import {
16
+ printCommandEnvelope
17
+ } from "./chunk-5V5Y37BC.mjs";
18
+ import {
19
+ SDK_VERSION,
20
+ autoDetectBaseUrl,
21
+ detectAgentRuntime,
22
+ ensureProjectPrivatePathsIgnored,
23
+ resolveProjectPinTarget,
24
+ sdkCliStateDirPath
25
+ } from "./chunk-RFB25DSQ.mjs";
26
+
27
+ // src/cli/commands/skills.ts
28
+ import { spawn } from "child_process";
29
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
30
+ import { homedir } from "os";
31
+ import { dirname, join } from "path";
32
+ var SKILLS_INSTALL_LEASE_WAIT_MS = 9e4;
33
+ var SKILLS_PROCESS_TIMEOUT_MS = 45e3;
34
+ var RUNTIME_TO_SKILLS_AGENT = {
35
+ antigravity: "antigravity",
36
+ claude_code: "claude-code",
37
+ claude_cowork: "claude-code",
38
+ cline: "cline",
39
+ codex: "codex",
40
+ cursor: "cursor",
41
+ gemini: "gemini-cli",
42
+ windsurf: "windsurf"
43
+ };
44
+ var AGENT_MARKERS = [
45
+ { agent: "codex", paths: [".codex"] },
46
+ { agent: "claude-code", paths: [".claude"] },
47
+ { agent: "cursor", paths: [".cursor"] },
48
+ { agent: "gemini-cli", paths: [".gemini", ".gemini-cli"] },
49
+ { agent: "antigravity", paths: [".antigravity"] }
50
+ ];
51
+ var WORKSPACE_SKILL_ROOTS_BY_AGENT = {
52
+ antigravity: [".agents"],
53
+ "claude-code": [".claude"],
54
+ cline: [".agents"],
55
+ codex: [".agents"],
56
+ cursor: [".agents"],
57
+ "gemini-cli": [".agents"],
58
+ windsurf: [".windsurf"],
59
+ "*": [".agents", ".claude", ".windsurf"]
60
+ };
61
+ function workspaceSkillRootsForAgents(agents) {
62
+ return [
63
+ ...new Set(
64
+ agents.flatMap((agent) => WORKSPACE_SKILL_ROOTS_BY_AGENT[agent] ?? [])
65
+ )
66
+ ].sort((a, b) => a.localeCompare(b));
67
+ }
68
+ function normalizeScope(value) {
69
+ if (value === "global") return "global";
70
+ if (value === "local") return "local";
71
+ if (!value) return inferActiveSkillsScope();
72
+ throw new Error("--scope must be one of: global, local");
73
+ }
74
+ function inferActiveSkillsScope(entrypoint = process.argv[1] ?? "") {
75
+ return /[\\/]\.deepline[\\/]runtime[\\/]/.test(entrypoint) ? "local" : "global";
76
+ }
77
+ function resolveLocalRoot() {
78
+ const target = resolveProjectPinTarget();
79
+ if (!target.ok) {
80
+ throw new Error(
81
+ `Cowork project folder is ambiguous. Candidate folders: ${target.candidates.join(
82
+ ", "
83
+ )}. Set CLAUDE_PROJECT_DIR or cd into the intended project folder.`
84
+ );
85
+ }
86
+ return target.dir;
87
+ }
88
+ function detectSkillsAgents(input) {
89
+ const runtime = input.runtime ?? detectAgentRuntime();
90
+ const knownAgent = RUNTIME_TO_SKILLS_AGENT[runtime];
91
+ if (knownAgent) return [knownAgent];
92
+ const roots = [
93
+ ...input.scope === "local" && input.root ? [input.root] : [],
94
+ input.homeDir ?? homedir()
95
+ ];
96
+ const detected = AGENT_MARKERS.filter(
97
+ (marker) => roots.some(
98
+ (root) => marker.paths.some((path) => existsSync(join(root, path)))
99
+ )
100
+ ).map((marker) => marker.agent);
101
+ return detected.length > 0 ? detected : ["*"];
102
+ }
103
+ function skillsStatePathForScope(baseUrl, scope, root) {
104
+ return scope === "local" && root ? join(root, ".deepline", "setup", "skills.json") : join(sdkCliStateDirPath(baseUrl), "skills-install.json");
105
+ }
106
+ function buildSkillsPlan(input) {
107
+ const scopeArgs = input.scope === "global" ? ["--global"] : [];
108
+ const legacyNames = [...LEGACY_SKILL_NAMES_TO_REMOVE].sort(
109
+ (a, b) => a.localeCompare(b)
110
+ );
111
+ return {
112
+ scope: input.scope,
113
+ root: input.root,
114
+ agents: input.agents,
115
+ skillNames: input.skillNames,
116
+ version: input.version,
117
+ remove: {
118
+ command: "npm",
119
+ args: [
120
+ "exec",
121
+ "--yes",
122
+ `--package=${SKILLS_NPX_PACKAGE}`,
123
+ "--",
124
+ "skills",
125
+ "remove",
126
+ ...scopeArgs,
127
+ "--agent",
128
+ ...input.agents,
129
+ "-y",
130
+ ...legacyNames
131
+ ]
132
+ },
133
+ install: {
134
+ command: "npm",
135
+ args: [
136
+ "exec",
137
+ "--yes",
138
+ `--package=${SKILLS_NPX_PACKAGE}`,
139
+ "--",
140
+ "skills",
141
+ "add",
142
+ skillsSourceUrl(input.baseUrl),
143
+ "--agent",
144
+ ...input.agents,
145
+ ...scopeArgs,
146
+ "--yes",
147
+ ...input.skillNames.flatMap((name) => ["--skill", name]),
148
+ "--full-depth"
149
+ ]
150
+ },
151
+ statePath: skillsStatePathForScope(input.baseUrl, input.scope, input.root)
152
+ };
153
+ }
154
+ function sortedStrings(value) {
155
+ if (!Array.isArray(value) || value.some((entry) => typeof entry !== "string")) {
156
+ return null;
157
+ }
158
+ return [...value].sort((a, b) => a.localeCompare(b));
159
+ }
160
+ function isSkillsPlanCurrent(plan, state) {
161
+ if (!state || state.scope !== plan.scope || state.skillsVersion !== plan.version) {
162
+ return false;
163
+ }
164
+ const installedAgents = sortedStrings(state.agents);
165
+ const installedSkillNames = sortedStrings(state.skillNames);
166
+ if (!installedAgents || !installedSkillNames) return false;
167
+ return installedAgents.join("\0") === [...plan.agents].sort((a, b) => a.localeCompare(b)).join("\0") && installedSkillNames.join("\0") === [...plan.skillNames].sort((a, b) => a.localeCompare(b)).join("\0");
168
+ }
169
+ function readSkillsInstallState(path) {
170
+ try {
171
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
172
+ return parsed !== null && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : null;
173
+ } catch {
174
+ return null;
175
+ }
176
+ }
177
+ function runProcess(command, args, cwd) {
178
+ return new Promise((resolve, reject) => {
179
+ const plan = resolveShellSpawn(
180
+ command,
181
+ args,
182
+ process.platform,
183
+ process.env,
184
+ cwd
185
+ );
186
+ const child = spawn(plan.command, plan.args, {
187
+ cwd,
188
+ env: process.env,
189
+ stdio: ["ignore", "ignore", "pipe"],
190
+ shell: plan.shell
191
+ });
192
+ let stderr = "";
193
+ child.stderr.on("data", (chunk) => {
194
+ stderr += chunk.toString("utf8");
195
+ process.stderr.write(chunk);
196
+ });
197
+ const timeout = setTimeout(() => {
198
+ child.kill("SIGTERM");
199
+ reject(
200
+ new Error(
201
+ `${SKILLS_NPX_PACKAGE} timed out after ${SKILLS_PROCESS_TIMEOUT_MS}ms.`
202
+ )
203
+ );
204
+ }, SKILLS_PROCESS_TIMEOUT_MS);
205
+ child.once("error", (error) => {
206
+ clearTimeout(timeout);
207
+ reject(error);
208
+ });
209
+ child.once("close", (code) => {
210
+ clearTimeout(timeout);
211
+ if (code && stderr.trim()) {
212
+ process.stderr.write(`${SKILLS_NPX_PACKAGE} exited ${code}.
213
+ `);
214
+ }
215
+ resolve(code ?? 1);
216
+ });
217
+ });
218
+ }
219
+ async function runSkillsCommand(options, dependencies = {}) {
220
+ let scope;
221
+ let root;
222
+ try {
223
+ scope = normalizeScope(options.scope);
224
+ root = scope === "local" ? resolveLocalRoot() : null;
225
+ } catch (error) {
226
+ printCommandEnvelope(
227
+ {
228
+ ok: false,
229
+ status: "failed",
230
+ code: "INVALID_SKILLS_SCOPE",
231
+ exitCode: 2,
232
+ message: error instanceof Error ? error.message : String(error)
233
+ },
234
+ { json: options.json }
235
+ );
236
+ return 2;
237
+ }
238
+ const baseUrl = autoDetectBaseUrl().replace(/\/$/, "");
239
+ const catalog = {
240
+ skillNames: [...DEFAULT_SDK_SKILL_NAMES],
241
+ version: SDK_VERSION
242
+ };
243
+ const agents = options.agent ? [options.agent] : detectSkillsAgents({ scope, root });
244
+ const plan = buildSkillsPlan({ baseUrl, scope, root, agents, ...catalog });
245
+ if (options.dryRun) {
246
+ printCommandEnvelope(
247
+ { ok: true, status: "planned", dryRun: true, ...plan },
248
+ { json: options.json }
249
+ );
250
+ return 0;
251
+ }
252
+ if (isSkillsPlanCurrent(plan, readSkillsInstallState(plan.statePath)) && !hasFailedAutomaticSkillsSync(baseUrl, agents)) {
253
+ printCommandEnvelope(
254
+ {
255
+ ok: true,
256
+ status: "current",
257
+ complete: true,
258
+ changed: false,
259
+ skipped: true,
260
+ skipReason: "skills_version_current",
261
+ scope,
262
+ agents,
263
+ skillsVersion: plan.version,
264
+ skillCount: plan.skillNames.length,
265
+ statePath: plan.statePath,
266
+ render: {
267
+ sections: [
268
+ {
269
+ title: "skills",
270
+ lines: [
271
+ `Scope: ${scope}`,
272
+ `Agents: ${agents.join(", ")}`,
273
+ `Current: ${plan.skillNames.length}`
274
+ ]
275
+ }
276
+ ]
277
+ }
278
+ },
279
+ { json: options.json }
280
+ );
281
+ return 0;
282
+ }
283
+ if (scope === "local" && root) {
284
+ const managedNames = [
285
+ .../* @__PURE__ */ new Set([...plan.skillNames, ...LEGACY_SKILL_NAMES_TO_REMOVE])
286
+ ];
287
+ const agentRoots = workspaceSkillRootsForAgents(plan.agents);
288
+ ensureProjectPrivatePathsIgnored(root, [
289
+ ".deepline/",
290
+ ...agentRoots.flatMap(
291
+ (agentRoot) => managedNames.map((name) => `${agentRoot}/skills/${name}/`)
292
+ )
293
+ ]);
294
+ }
295
+ let lease;
296
+ try {
297
+ lease = scope === "global" ? await acquireSkillsInstallLease(baseUrl, agents, plan.version, {
298
+ waitMs: dependencies.installLeaseWaitMs ?? SKILLS_INSTALL_LEASE_WAIT_MS,
299
+ onWait: () => process.stderr.write(
300
+ "Waiting for a background Deepline skills refresh to finish...\n"
301
+ )
302
+ }) : { release: () => {
303
+ } };
304
+ } catch (error) {
305
+ if (!(error instanceof SkillsStateUnavailableError)) throw error;
306
+ printCommandEnvelope(
307
+ {
308
+ ok: false,
309
+ status: "failed",
310
+ code: "SKILLS_STATE_UNAVAILABLE",
311
+ exitCode: 5,
312
+ scope,
313
+ agents,
314
+ message: error.message,
315
+ next: `Resolve this filesystem error, then run: deepline skills --scope ${scope}`
316
+ },
317
+ { json: options.json }
318
+ );
319
+ return 5;
320
+ }
321
+ if (!lease) {
322
+ printCommandEnvelope(
323
+ {
324
+ ok: false,
325
+ status: "failed",
326
+ code: "SKILLS_SYNC_IN_PROGRESS",
327
+ exitCode: 7,
328
+ scope,
329
+ agents,
330
+ message: "A background Deepline skills refresh is still running for these agents.",
331
+ next: `Retry in a moment: deepline skills --scope ${scope}. If no refresh is running, remove ${skillsInstallLeasePath(baseUrl, agents)}`
332
+ },
333
+ { json: options.json }
334
+ );
335
+ return 7;
336
+ }
337
+ try {
338
+ return await runSkillsInstallWithLease({
339
+ options,
340
+ dependencies,
341
+ baseUrl,
342
+ scope,
343
+ root,
344
+ agents,
345
+ plan
346
+ });
347
+ } finally {
348
+ lease.release();
349
+ }
350
+ }
351
+ async function runSkillsInstallWithLease(input) {
352
+ const { options, dependencies, baseUrl, scope, root, agents, plan } = input;
353
+ process.stderr.write(
354
+ `Replacing Deepline skills for ${agents.join(", ")} (${scope})...
355
+ `
356
+ );
357
+ const execute = dependencies.runProcess ?? runProcess;
358
+ try {
359
+ const installCode = await execute(
360
+ plan.install.command,
361
+ plan.install.args,
362
+ root ?? void 0
363
+ );
364
+ if (installCode !== 0) {
365
+ throw new Error("Could not install the current Deepline skills.");
366
+ }
367
+ } catch (error) {
368
+ printCommandEnvelope(
369
+ {
370
+ ok: false,
371
+ status: "failed",
372
+ code: "SKILLS_INSTALL_FAILED",
373
+ exitCode: 5,
374
+ scope,
375
+ agents,
376
+ message: error instanceof Error ? error.message : String(error),
377
+ next: `deepline skills --scope ${scope}`
378
+ },
379
+ { json: options.json }
380
+ );
381
+ return 5;
382
+ }
383
+ try {
384
+ const removeCode = await execute(
385
+ plan.remove.command,
386
+ plan.remove.args,
387
+ root ?? void 0
388
+ );
389
+ if (removeCode !== 0) {
390
+ process.stderr.write(
391
+ "Current Deepline skills installed, but legacy skill cleanup failed. The installed skills remain usable.\n"
392
+ );
393
+ }
394
+ } catch (error) {
395
+ process.stderr.write(
396
+ `Current Deepline skills installed, but legacy skill cleanup failed: ${error instanceof Error ? error.message : String(error)}. The installed skills remain usable.
397
+ `
398
+ );
399
+ }
400
+ mkdirSync(dirname(plan.statePath), { recursive: true });
401
+ writeFileSync(
402
+ plan.statePath,
403
+ `${JSON.stringify(
404
+ {
405
+ schemaVersion: 1,
406
+ installedAt: (/* @__PURE__ */ new Date()).toISOString(),
407
+ cliVersion: SDK_VERSION,
408
+ scope,
409
+ agents,
410
+ skillsVersion: plan.version,
411
+ skillNames: plan.skillNames
412
+ },
413
+ null,
414
+ 2
415
+ )}
416
+ `,
417
+ "utf8"
418
+ );
419
+ if (scope === "global") {
420
+ clearFailedAutomaticSkillsSync(baseUrl, agents);
421
+ }
422
+ printCommandEnvelope(
423
+ {
424
+ ok: true,
425
+ status: "complete",
426
+ scope,
427
+ agents,
428
+ skillsVersion: plan.version,
429
+ skillCount: plan.skillNames.length,
430
+ statePath: plan.statePath,
431
+ render: {
432
+ sections: [
433
+ {
434
+ title: "skills",
435
+ lines: [
436
+ `Scope: ${scope}`,
437
+ `Agents: ${agents.join(", ")}`,
438
+ `Installed: ${plan.skillNames.length}`
439
+ ]
440
+ }
441
+ ]
442
+ }
443
+ },
444
+ { json: options.json }
445
+ );
446
+ return 0;
447
+ }
448
+ function registerSkillsCommand(program) {
449
+ program.command("skills").description("Replace Deepline agent skills with the current release.").option("--scope <scope>", "Install scope: global or local").option("--agent <agent>", "Override the detected agent target").option("--dry-run", "Print the install plan without changing files").option("--json", "Emit one JSON result envelope").addHelpText(
450
+ "after",
451
+ `
452
+ Notes:
453
+ This command reinstalls current Deepline-managed skills using ${SKILLS_NPX_PACKAGE},
454
+ then removes legacy Deepline skill names. Local scope writes into the resolved
455
+ persistent project.
456
+
457
+ Examples:
458
+ deepline skills
459
+ deepline skills --scope local
460
+ deepline skills --agent codex --dry-run
461
+ `
462
+ ).action(async (options) => {
463
+ process.exitCode = await runSkillsCommand(options);
464
+ });
465
+ program.command(SKILLS_AUTO_SYNC_COMMAND, { hidden: true }).description("Refresh Deepline agent skills in the background.").option(
466
+ "--claim <token>",
467
+ "Owner token of the leases this child was started for."
468
+ ).action(async (options) => {
469
+ const claim = options.claim?.trim();
470
+ if (!claim) {
471
+ printCommandEnvelope(
472
+ {
473
+ ok: false,
474
+ status: "failed",
475
+ code: "SKILLS_AUTO_SYNC_CLAIM_REQUIRED",
476
+ exitCode: 2,
477
+ message: "skills-auto-sync is started by ordinary deepline commands and requires the lease token they pass; run `deepline skills` to install skills yourself."
478
+ },
479
+ { json: true }
480
+ );
481
+ process.exitCode = 2;
482
+ return;
483
+ }
484
+ await syncSdkSkillsIfNeeded(autoDetectBaseUrl().replace(/\/$/, ""), {
485
+ mode: "inline",
486
+ notices: "defer",
487
+ claim
488
+ });
489
+ });
490
+ }
491
+
492
+ export {
493
+ workspaceSkillRootsForAgents,
494
+ inferActiveSkillsScope,
495
+ detectSkillsAgents,
496
+ skillsStatePathForScope,
497
+ buildSkillsPlan,
498
+ isSkillsPlanCurrent,
499
+ runSkillsCommand,
500
+ registerSkillsCommand
501
+ };
@@ -0,0 +1,35 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkOBB4QXHAjs = require('./chunk-OBB4QXHA.js');
4
+
5
+
6
+
7
+
8
+ var _chunkLTFL4JRNjs = require('./chunk-LTFL4JRN.js');
9
+
10
+ // src/cli/play-run-admission.ts
11
+ function usesInlinePlayAdmission(command, args) {
12
+ return command === "plays run" && args.includes("--json") && !args.includes("--no-wait") && !args.some(
13
+ (arg) => arg === "--run-id-file" || arg.startsWith("--run-id-file=")
14
+ );
15
+ }
16
+ async function checkPlayRunCompatibility(baseUrl, maintenancePolicy = "configured") {
17
+ if (maintenancePolicy !== "off") _chunkLTFL4JRNjs.flushDeferredSkillsSyncNotices.call(void 0, baseUrl);
18
+ const compatibility = await _chunkOBB4QXHAjs.traceCliSpan.call(void 0,
19
+ "cli.sdk_compatibility",
20
+ { baseUrl, command: "plays run" },
21
+ () => _chunkLTFL4JRNjs.checkSdkCompatibility.call(void 0, baseUrl, {
22
+ command: "plays run",
23
+ persistCache: maintenancePolicy !== "off"
24
+ })
25
+ );
26
+ if (compatibility.error) throw compatibility.error;
27
+ _chunkLTFL4JRNjs.enforceSdkCompatibilityResponse.call(void 0, compatibility.response, {
28
+ quietAdvisory: true
29
+ });
30
+ }
31
+
32
+
33
+
34
+
35
+ exports.usesInlinePlayAdmission = usesInlinePlayAdmission; exports.checkPlayRunCompatibility = checkPlayRunCompatibility;
@@ -0,0 +1,62 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _class; var _class2;// ../plays/fetch-http-error.ts
2
+ var CtxFetchHttpError = (_class = class extends Error {
3
+ /** Build the error from the durable response record. */
4
+ constructor(response) {
5
+ const body = response.bodyText || "empty response body";
6
+ super(
7
+ `ctx.fetch(${response.url}) returned HTTP ${response.status}${response.statusText ? ` ${response.statusText}` : ""}: ${body}`
8
+ );_class.prototype.__init.call(this);;
9
+ this.response = response;
10
+ this.name = "CtxFetchHttpError";
11
+ this.status = response.status;
12
+ this.statusText = response.statusText;
13
+ this.url = response.url;
14
+ this.headers = response.headers;
15
+ this.bodyText = response.bodyText;
16
+ this.json = response.json;
17
+ }
18
+ /**
19
+ * Play source and the runtime are separately bundled. Recognize the stable
20
+ * public error code so `instanceof` works across that boundary as well.
21
+ */
22
+ static [Symbol.hasInstance](value) {
23
+ return value !== null && typeof value === "object" && value.code === "CTX_FETCH_HTTP_ERROR";
24
+ }
25
+ /** Stable machine-readable HTTP-failure code. */
26
+ __init() {this.code = "CTX_FETCH_HTTP_ERROR"}
27
+ /** Upstream HTTP status. */
28
+
29
+ /** Upstream HTTP status text. */
30
+
31
+ /** Final response URL after redirects. */
32
+
33
+ /** Secret-redacted response headers. */
34
+
35
+ /** Complete secret-redacted response body. */
36
+
37
+ /** Eagerly parsed secret-redacted JSON, or null. */
38
+
39
+ }, _class);
40
+
41
+ // ../plays/ambiguous-write-error.ts
42
+ var CtxFetchAmbiguousWriteError = (_class2 = class extends Error {
43
+ constructor(method, origin, options) {
44
+ super(
45
+ `ctx.fetch ${method} to ${origin} was dispatched, but its outcome is unknown. Reconcile with the provider or retry only under its supported idempotency contract using the same intended-operation key.`,
46
+ options
47
+ );_class2.prototype.__init2.call(this);_class2.prototype.__init3.call(this);;
48
+ this.method = method;
49
+ this.origin = origin;
50
+ this.name = "CtxFetchAmbiguousWriteError";
51
+ }
52
+ static [Symbol.hasInstance](value) {
53
+ return value !== null && typeof value === "object" && value.code === "CTX_FETCH_WRITE_OUTCOME_UNKNOWN";
54
+ }
55
+ __init2() {this.code = "CTX_FETCH_WRITE_OUTCOME_UNKNOWN"}
56
+ __init3() {this.outcome = "unknown"}
57
+ }, _class2);
58
+
59
+
60
+
61
+
62
+ exports.CtxFetchHttpError = CtxFetchHttpError; exports.CtxFetchAmbiguousWriteError = CtxFetchAmbiguousWriteError;