runwork 0.15.1 → 0.16.0

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 (404) hide show
  1. package/bundled-types/task-delegation/task-delegation/types.d.ts +6 -0
  2. package/dist/index.js +20237 -116
  3. package/package.json +4 -4
  4. package/dist/__tests__/curl-parser.test.d.ts +0 -1
  5. package/dist/__tests__/curl-parser.test.js +0 -250
  6. package/dist/__tests__/install-scripts.test.d.ts +0 -1
  7. package/dist/__tests__/install-scripts.test.js +0 -280
  8. package/dist/__tests__/types-manager.test.d.ts +0 -1
  9. package/dist/__tests__/types-manager.test.js +0 -89
  10. package/dist/agents/__tests__/chatgpt-registry.test.d.ts +0 -1
  11. package/dist/agents/__tests__/chatgpt-registry.test.js +0 -61
  12. package/dist/agents/__tests__/claude-code-managed-block.test.d.ts +0 -1
  13. package/dist/agents/__tests__/claude-code-managed-block.test.js +0 -105
  14. package/dist/agents/__tests__/claude-code-plugin.test.d.ts +0 -1
  15. package/dist/agents/__tests__/claude-code-plugin.test.js +0 -47
  16. package/dist/agents/__tests__/claude-code-stats.test.d.ts +0 -1
  17. package/dist/agents/__tests__/claude-code-stats.test.js +0 -390
  18. package/dist/agents/__tests__/claude-desktop-memory.test.d.ts +0 -1
  19. package/dist/agents/__tests__/claude-desktop-memory.test.js +0 -154
  20. package/dist/agents/__tests__/claude-desktop-plugin-tree.test.d.ts +0 -1
  21. package/dist/agents/__tests__/claude-desktop-plugin-tree.test.js +0 -161
  22. package/dist/agents/__tests__/claude-desktop-plugin.test.d.ts +0 -1
  23. package/dist/agents/__tests__/claude-desktop-plugin.test.js +0 -117
  24. package/dist/agents/__tests__/claude-desktop-rpm.test.d.ts +0 -1
  25. package/dist/agents/__tests__/claude-desktop-rpm.test.js +0 -126
  26. package/dist/agents/__tests__/claude-desktop-stats.test.d.ts +0 -1
  27. package/dist/agents/__tests__/claude-desktop-stats.test.js +0 -280
  28. package/dist/agents/__tests__/codex-instructions.test.d.ts +0 -1
  29. package/dist/agents/__tests__/codex-instructions.test.js +0 -57
  30. package/dist/agents/__tests__/codex-minimum-permissions.test.d.ts +0 -1
  31. package/dist/agents/__tests__/codex-minimum-permissions.test.js +0 -82
  32. package/dist/agents/__tests__/codex-stats.test.d.ts +0 -1
  33. package/dist/agents/__tests__/codex-stats.test.js +0 -370
  34. package/dist/agents/__tests__/cursor-merge.test.d.ts +0 -1
  35. package/dist/agents/__tests__/cursor-merge.test.js +0 -66
  36. package/dist/agents/__tests__/cursor-stats.test.d.ts +0 -1
  37. package/dist/agents/__tests__/cursor-stats.test.js +0 -183
  38. package/dist/agents/__tests__/defaults-merge.test.d.ts +0 -1
  39. package/dist/agents/__tests__/defaults-merge.test.js +0 -268
  40. package/dist/agents/__tests__/detection.test.d.ts +0 -1
  41. package/dist/agents/__tests__/detection.test.js +0 -89
  42. package/dist/agents/__tests__/graceful-degradation.test.d.ts +0 -1
  43. package/dist/agents/__tests__/graceful-degradation.test.js +0 -129
  44. package/dist/agents/__tests__/instruction-hint.test.d.ts +0 -1
  45. package/dist/agents/__tests__/instruction-hint.test.js +0 -69
  46. package/dist/agents/__tests__/intro-skill.test.d.ts +0 -1
  47. package/dist/agents/__tests__/intro-skill.test.js +0 -193
  48. package/dist/agents/__tests__/schema-validation.test.d.ts +0 -1
  49. package/dist/agents/__tests__/schema-validation.test.js +0 -212
  50. package/dist/agents/__tests__/skill-slug.test.d.ts +0 -1
  51. package/dist/agents/__tests__/skill-slug.test.js +0 -77
  52. package/dist/agents/claude-code.d.ts +0 -59
  53. package/dist/agents/claude-code.js +0 -753
  54. package/dist/agents/claude-desktop-plugin-tree.d.ts +0 -59
  55. package/dist/agents/claude-desktop-plugin-tree.js +0 -143
  56. package/dist/agents/claude-desktop.d.ts +0 -47
  57. package/dist/agents/claude-desktop.js +0 -684
  58. package/dist/agents/cline.d.ts +0 -15
  59. package/dist/agents/cline.js +0 -130
  60. package/dist/agents/codex.d.ts +0 -44
  61. package/dist/agents/codex.js +0 -453
  62. package/dist/agents/conversation-skills.d.ts +0 -18
  63. package/dist/agents/conversation-skills.js +0 -229
  64. package/dist/agents/cursor.d.ts +0 -35
  65. package/dist/agents/cursor.js +0 -294
  66. package/dist/agents/default-config.d.ts +0 -30
  67. package/dist/agents/default-config.js +0 -67
  68. package/dist/agents/defaults-merge.d.ts +0 -87
  69. package/dist/agents/defaults-merge.js +0 -150
  70. package/dist/agents/detect.d.ts +0 -4
  71. package/dist/agents/detect.js +0 -67
  72. package/dist/agents/detection.d.ts +0 -18
  73. package/dist/agents/detection.js +0 -94
  74. package/dist/agents/gemini.d.ts +0 -15
  75. package/dist/agents/gemini.js +0 -122
  76. package/dist/agents/generic-adapter.d.ts +0 -25
  77. package/dist/agents/generic-adapter.js +0 -151
  78. package/dist/agents/intro-skill.d.ts +0 -45
  79. package/dist/agents/intro-skill.js +0 -447
  80. package/dist/agents/registry-data.d.ts +0 -192
  81. package/dist/agents/registry-data.js +0 -669
  82. package/dist/agents/registry.d.ts +0 -13
  83. package/dist/agents/registry.js +0 -36
  84. package/dist/agents/runtime-detection.d.ts +0 -82
  85. package/dist/agents/runtime-detection.js +0 -271
  86. package/dist/agents/session-start-hook.d.ts +0 -37
  87. package/dist/agents/session-start-hook.js +0 -159
  88. package/dist/agents/types.d.ts +0 -171
  89. package/dist/agents/types.js +0 -75
  90. package/dist/agents/utils/instruction-hint.d.ts +0 -21
  91. package/dist/agents/utils/instruction-hint.js +0 -108
  92. package/dist/agents/utils/json-config.d.ts +0 -19
  93. package/dist/agents/utils/json-config.js +0 -69
  94. package/dist/agents/utils/toml-config.d.ts +0 -8
  95. package/dist/agents/utils/toml-config.js +0 -27
  96. package/dist/agents/windsurf.d.ts +0 -14
  97. package/dist/agents/windsurf.js +0 -102
  98. package/dist/api/__tests__/client.test.d.ts +0 -1
  99. package/dist/api/__tests__/client.test.js +0 -272
  100. package/dist/api/client.d.ts +0 -326
  101. package/dist/api/client.js +0 -427
  102. package/dist/auth/__tests__/login-flow.test.d.ts +0 -1
  103. package/dist/auth/__tests__/login-flow.test.js +0 -101
  104. package/dist/auth/__tests__/store.test.d.ts +0 -1
  105. package/dist/auth/__tests__/store.test.js +0 -132
  106. package/dist/auth/login-flow.d.ts +0 -26
  107. package/dist/auth/login-flow.js +0 -137
  108. package/dist/auth/store.d.ts +0 -5
  109. package/dist/auth/store.js +0 -62
  110. package/dist/commands/__tests__/clone-args.test.d.ts +0 -1
  111. package/dist/commands/__tests__/clone-args.test.js +0 -51
  112. package/dist/commands/__tests__/clone-source-result.test.d.ts +0 -1
  113. package/dist/commands/__tests__/clone-source-result.test.js +0 -45
  114. package/dist/commands/__tests__/info-merge.test.d.ts +0 -1
  115. package/dist/commands/__tests__/info-merge.test.js +0 -55
  116. package/dist/commands/__tests__/mcp-entries.test.d.ts +0 -1
  117. package/dist/commands/__tests__/mcp-entries.test.js +0 -48
  118. package/dist/commands/__tests__/setup-persona.test.d.ts +0 -1
  119. package/dist/commands/__tests__/setup-persona.test.js +0 -31
  120. package/dist/commands/__tests__/setup.test.d.ts +0 -1
  121. package/dist/commands/__tests__/setup.test.js +0 -81
  122. package/dist/commands/__tests__/sync-redetect.test.d.ts +0 -1
  123. package/dist/commands/__tests__/sync-redetect.test.js +0 -96
  124. package/dist/commands/__tests__/sync-telemetry.test.d.ts +0 -1
  125. package/dist/commands/__tests__/sync-telemetry.test.js +0 -281
  126. package/dist/commands/__tests__/upgrade.test.d.ts +0 -1
  127. package/dist/commands/__tests__/upgrade.test.js +0 -157
  128. package/dist/commands/agents.d.ts +0 -2
  129. package/dist/commands/agents.js +0 -160
  130. package/dist/commands/api-keys.d.ts +0 -2
  131. package/dist/commands/api-keys.js +0 -95
  132. package/dist/commands/apps.d.ts +0 -2
  133. package/dist/commands/apps.js +0 -82
  134. package/dist/commands/build-plugin.d.ts +0 -2
  135. package/dist/commands/build-plugin.js +0 -135
  136. package/dist/commands/clone.d.ts +0 -60
  137. package/dist/commands/clone.js +0 -271
  138. package/dist/commands/components.d.ts +0 -2
  139. package/dist/commands/components.js +0 -43
  140. package/dist/commands/deploy.d.ts +0 -2
  141. package/dist/commands/deploy.js +0 -279
  142. package/dist/commands/dev.d.ts +0 -11
  143. package/dist/commands/dev.js +0 -1011
  144. package/dist/commands/doctor.d.ts +0 -2
  145. package/dist/commands/doctor.js +0 -230
  146. package/dist/commands/endpoints.d.ts +0 -2
  147. package/dist/commands/endpoints.js +0 -189
  148. package/dist/commands/entities.d.ts +0 -2
  149. package/dist/commands/entities.js +0 -198
  150. package/dist/commands/files.d.ts +0 -2
  151. package/dist/commands/files.js +0 -193
  152. package/dist/commands/inbox.d.ts +0 -11
  153. package/dist/commands/inbox.js +0 -60
  154. package/dist/commands/info.d.ts +0 -178
  155. package/dist/commands/info.js +0 -455
  156. package/dist/commands/init.d.ts +0 -21
  157. package/dist/commands/init.js +0 -185
  158. package/dist/commands/integrations.d.ts +0 -2
  159. package/dist/commands/integrations.js +0 -233
  160. package/dist/commands/login.d.ts +0 -2
  161. package/dist/commands/login.js +0 -44
  162. package/dist/commands/logout.d.ts +0 -2
  163. package/dist/commands/logout.js +0 -13
  164. package/dist/commands/logs.d.ts +0 -2
  165. package/dist/commands/logs.js +0 -232
  166. package/dist/commands/mcp-entries.d.ts +0 -13
  167. package/dist/commands/mcp-entries.js +0 -26
  168. package/dist/commands/mcp.d.ts +0 -2
  169. package/dist/commands/mcp.js +0 -245
  170. package/dist/commands/open.d.ts +0 -2
  171. package/dist/commands/open.js +0 -53
  172. package/dist/commands/resume.d.ts +0 -2
  173. package/dist/commands/resume.js +0 -289
  174. package/dist/commands/save-convo.d.ts +0 -8
  175. package/dist/commands/save-convo.js +0 -20
  176. package/dist/commands/schedules.d.ts +0 -2
  177. package/dist/commands/schedules.js +0 -221
  178. package/dist/commands/setup.d.ts +0 -27
  179. package/dist/commands/setup.js +0 -177
  180. package/dist/commands/share-convo.d.ts +0 -24
  181. package/dist/commands/share-convo.js +0 -167
  182. package/dist/commands/skills.d.ts +0 -2
  183. package/dist/commands/skills.js +0 -352
  184. package/dist/commands/sync-telemetry.d.ts +0 -33
  185. package/dist/commands/sync-telemetry.js +0 -186
  186. package/dist/commands/sync.d.ts +0 -37
  187. package/dist/commands/sync.js +0 -702
  188. package/dist/commands/uninstall.d.ts +0 -2
  189. package/dist/commands/uninstall.js +0 -145
  190. package/dist/commands/upgrade.d.ts +0 -14
  191. package/dist/commands/upgrade.js +0 -217
  192. package/dist/commands/validate.d.ts +0 -2
  193. package/dist/commands/validate.js +0 -89
  194. package/dist/commands/welcome.d.ts +0 -1
  195. package/dist/commands/welcome.js +0 -86
  196. package/dist/commands/workflows.d.ts +0 -2
  197. package/dist/commands/workflows.js +0 -187
  198. package/dist/deploy/__tests__/deploy-state.test.d.ts +0 -1
  199. package/dist/deploy/__tests__/deploy-state.test.js +0 -80
  200. package/dist/deploy/__tests__/deploy-status.test.d.ts +0 -1
  201. package/dist/deploy/__tests__/deploy-status.test.js +0 -41
  202. package/dist/deploy/__tests__/detach-args.test.d.ts +0 -1
  203. package/dist/deploy/__tests__/detach-args.test.js +0 -30
  204. package/dist/deploy/deploy-state.d.ts +0 -36
  205. package/dist/deploy/deploy-state.js +0 -63
  206. package/dist/deploy/deploy-status.d.ts +0 -21
  207. package/dist/deploy/deploy-status.js +0 -36
  208. package/dist/deploy/detach.d.ts +0 -32
  209. package/dist/deploy/detach.js +0 -71
  210. package/dist/dev/__tests__/attach.test.d.ts +0 -1
  211. package/dist/dev/__tests__/attach.test.js +0 -296
  212. package/dist/dev/__tests__/detach.test.d.ts +0 -1
  213. package/dist/dev/__tests__/detach.test.js +0 -404
  214. package/dist/dev/__tests__/preview-url-poller.test.d.ts +0 -1
  215. package/dist/dev/__tests__/preview-url-poller.test.js +0 -149
  216. package/dist/dev/__tests__/session.test.d.ts +0 -1
  217. package/dist/dev/__tests__/session.test.js +0 -446
  218. package/dist/dev/__tests__/startup-sync.test.d.ts +0 -1
  219. package/dist/dev/__tests__/startup-sync.test.js +0 -32
  220. package/dist/dev/__tests__/stop.test.d.ts +0 -1
  221. package/dist/dev/__tests__/stop.test.js +0 -172
  222. package/dist/dev/attach.d.ts +0 -120
  223. package/dist/dev/attach.js +0 -269
  224. package/dist/dev/detach.d.ts +0 -187
  225. package/dist/dev/detach.js +0 -292
  226. package/dist/dev/preview-url-poller.d.ts +0 -35
  227. package/dist/dev/preview-url-poller.js +0 -50
  228. package/dist/dev/session.d.ts +0 -175
  229. package/dist/dev/session.js +0 -258
  230. package/dist/dev/startup-sync.d.ts +0 -23
  231. package/dist/dev/startup-sync.js +0 -14
  232. package/dist/dev/stop.d.ts +0 -52
  233. package/dist/dev/stop.js +0 -101
  234. package/dist/devtools/registry-data.d.ts +0 -46
  235. package/dist/devtools/registry-data.js +0 -40
  236. package/dist/generated/bundled-types.d.ts +0 -1
  237. package/dist/generated/bundled-types.js +0 -46
  238. package/dist/generated/version.d.ts +0 -1
  239. package/dist/generated/version.js +0 -2
  240. package/dist/git/__tests__/auto-commit.test.d.ts +0 -1
  241. package/dist/git/__tests__/auto-commit.test.js +0 -431
  242. package/dist/git/__tests__/classify-sync-error.test.d.ts +0 -1
  243. package/dist/git/__tests__/classify-sync-error.test.js +0 -57
  244. package/dist/git/__tests__/credential-helper-e2e.test.d.ts +0 -21
  245. package/dist/git/__tests__/credential-helper-e2e.test.js +0 -195
  246. package/dist/git/__tests__/credentials.test.d.ts +0 -1
  247. package/dist/git/__tests__/credentials.test.js +0 -141
  248. package/dist/git/__tests__/deploy-guard.test.d.ts +0 -1
  249. package/dist/git/__tests__/deploy-guard.test.js +0 -61
  250. package/dist/git/__tests__/ensure-git-credential-helper.test.d.ts +0 -1
  251. package/dist/git/__tests__/ensure-git-credential-helper.test.js +0 -133
  252. package/dist/git/__tests__/ensure-runwork-remote.test.d.ts +0 -1
  253. package/dist/git/__tests__/ensure-runwork-remote.test.js +0 -109
  254. package/dist/git/__tests__/identity.test.d.ts +0 -1
  255. package/dist/git/__tests__/identity.test.js +0 -146
  256. package/dist/git/__tests__/manifest.test.d.ts +0 -1
  257. package/dist/git/__tests__/manifest.test.js +0 -446
  258. package/dist/git/__tests__/preflight-resolution.test.d.ts +0 -1
  259. package/dist/git/__tests__/preflight-resolution.test.js +0 -366
  260. package/dist/git/__tests__/preflight.test.d.ts +0 -1
  261. package/dist/git/__tests__/preflight.test.js +0 -36
  262. package/dist/git/__tests__/repo-config.test.d.ts +0 -1
  263. package/dist/git/__tests__/repo-config.test.js +0 -26
  264. package/dist/git/__tests__/sync.test.d.ts +0 -1
  265. package/dist/git/__tests__/sync.test.js +0 -405
  266. package/dist/git/auto-commit.d.ts +0 -35
  267. package/dist/git/auto-commit.js +0 -293
  268. package/dist/git/classify-sync-error.d.ts +0 -21
  269. package/dist/git/classify-sync-error.js +0 -111
  270. package/dist/git/credentials.d.ts +0 -75
  271. package/dist/git/credentials.js +0 -164
  272. package/dist/git/critical-files.d.ts +0 -20
  273. package/dist/git/critical-files.js +0 -68
  274. package/dist/git/deploy-guard.d.ts +0 -53
  275. package/dist/git/deploy-guard.js +0 -78
  276. package/dist/git/identity.d.ts +0 -44
  277. package/dist/git/identity.js +0 -133
  278. package/dist/git/preflight.d.ts +0 -57
  279. package/dist/git/preflight.js +0 -276
  280. package/dist/git/remote.d.ts +0 -37
  281. package/dist/git/remote.js +0 -75
  282. package/dist/git/repo-config.d.ts +0 -8
  283. package/dist/git/repo-config.js +0 -29
  284. package/dist/git/sync.d.ts +0 -15
  285. package/dist/git/sync.js +0 -159
  286. package/dist/health/__tests__/checks.test.d.ts +0 -1
  287. package/dist/health/__tests__/checks.test.js +0 -357
  288. package/dist/health/__tests__/cli-distribution-checks.test.d.ts +0 -1
  289. package/dist/health/__tests__/cli-distribution-checks.test.js +0 -196
  290. package/dist/health/__tests__/fix.test.d.ts +0 -1
  291. package/dist/health/__tests__/fix.test.js +0 -72
  292. package/dist/health/__tests__/runner-filter.test.d.ts +0 -1
  293. package/dist/health/__tests__/runner-filter.test.js +0 -61
  294. package/dist/health/checks.d.ts +0 -42
  295. package/dist/health/checks.js +0 -636
  296. package/dist/health/fix.d.ts +0 -22
  297. package/dist/health/fix.js +0 -62
  298. package/dist/health/runner.d.ts +0 -8
  299. package/dist/health/runner.js +0 -47
  300. package/dist/health/types.d.ts +0 -12
  301. package/dist/health/types.js +0 -1
  302. package/dist/index.d.ts +0 -1
  303. package/dist/logs/__tests__/tailer-format.test.d.ts +0 -1
  304. package/dist/logs/__tests__/tailer-format.test.js +0 -43
  305. package/dist/logs/tailer.d.ts +0 -17
  306. package/dist/logs/tailer.js +0 -217
  307. package/dist/sync/__tests__/change-detect.test.d.ts +0 -1
  308. package/dist/sync/__tests__/change-detect.test.js +0 -123
  309. package/dist/sync/__tests__/hash.test.d.ts +0 -1
  310. package/dist/sync/__tests__/hash.test.js +0 -18
  311. package/dist/sync/change-detect.d.ts +0 -19
  312. package/dist/sync/change-detect.js +0 -136
  313. package/dist/sync/conflict-ui.d.ts +0 -5
  314. package/dist/sync/conflict-ui.js +0 -78
  315. package/dist/sync/executor.d.ts +0 -23
  316. package/dist/sync/executor.js +0 -102
  317. package/dist/sync/hash.d.ts +0 -1
  318. package/dist/sync/hash.js +0 -4
  319. package/dist/sync/types.d.ts +0 -24
  320. package/dist/sync/types.js +0 -1
  321. package/dist/template/manifest.d.ts +0 -17
  322. package/dist/template/manifest.js +0 -145
  323. package/dist/tools/types.d.ts +0 -52
  324. package/dist/tools/types.js +0 -8
  325. package/dist/types-manager.d.ts +0 -1
  326. package/dist/types-manager.js +0 -35
  327. package/dist/types.d.ts +0 -349
  328. package/dist/types.js +0 -1
  329. package/dist/ui/__tests__/banner.test.d.ts +0 -1
  330. package/dist/ui/__tests__/banner.test.js +0 -98
  331. package/dist/ui/__tests__/colors.test.d.ts +0 -1
  332. package/dist/ui/__tests__/colors.test.js +0 -22
  333. package/dist/ui/__tests__/keyboard.test.d.ts +0 -1
  334. package/dist/ui/__tests__/keyboard.test.js +0 -34
  335. package/dist/ui/__tests__/status-line.test.d.ts +0 -1
  336. package/dist/ui/__tests__/status-line.test.js +0 -54
  337. package/dist/ui/banner.d.ts +0 -29
  338. package/dist/ui/banner.js +0 -153
  339. package/dist/ui/colors.d.ts +0 -4
  340. package/dist/ui/colors.js +0 -7
  341. package/dist/ui/keyboard.d.ts +0 -12
  342. package/dist/ui/keyboard.js +0 -61
  343. package/dist/ui/status-line.d.ts +0 -6
  344. package/dist/ui/status-line.js +0 -53
  345. package/dist/utils/__tests__/format-error.test.d.ts +0 -1
  346. package/dist/utils/__tests__/format-error.test.js +0 -43
  347. package/dist/utils/__tests__/help-json.test.d.ts +0 -1
  348. package/dist/utils/__tests__/help-json.test.js +0 -39
  349. package/dist/utils/__tests__/http.test.d.ts +0 -1
  350. package/dist/utils/__tests__/http.test.js +0 -381
  351. package/dist/utils/__tests__/ignore-matcher.test.d.ts +0 -1
  352. package/dist/utils/__tests__/ignore-matcher.test.js +0 -205
  353. package/dist/utils/__tests__/output.test.d.ts +0 -1
  354. package/dist/utils/__tests__/output.test.js +0 -38
  355. package/dist/utils/__tests__/prompt.test.d.ts +0 -1
  356. package/dist/utils/__tests__/prompt.test.js +0 -27
  357. package/dist/utils/__tests__/resolve.test.d.ts +0 -1
  358. package/dist/utils/__tests__/resolve.test.js +0 -95
  359. package/dist/utils/__tests__/sqlite.test.d.ts +0 -1
  360. package/dist/utils/__tests__/sqlite.test.js +0 -89
  361. package/dist/utils/agent-guidance.d.ts +0 -47
  362. package/dist/utils/agent-guidance.js +0 -128
  363. package/dist/utils/app-info.d.ts +0 -70
  364. package/dist/utils/app-info.js +0 -167
  365. package/dist/utils/curl-parser.d.ts +0 -12
  366. package/dist/utils/curl-parser.js +0 -162
  367. package/dist/utils/data-input.d.ts +0 -1
  368. package/dist/utils/data-input.js +0 -38
  369. package/dist/utils/format-error.d.ts +0 -10
  370. package/dist/utils/format-error.js +0 -38
  371. package/dist/utils/fs.d.ts +0 -5
  372. package/dist/utils/fs.js +0 -23
  373. package/dist/utils/help-json.d.ts +0 -70
  374. package/dist/utils/help-json.js +0 -88
  375. package/dist/utils/http.d.ts +0 -46
  376. package/dist/utils/http.js +0 -421
  377. package/dist/utils/ignore-matcher.d.ts +0 -47
  378. package/dist/utils/ignore-matcher.js +0 -132
  379. package/dist/utils/output.d.ts +0 -17
  380. package/dist/utils/output.js +0 -27
  381. package/dist/utils/prompt.d.ts +0 -5
  382. package/dist/utils/prompt.js +0 -42
  383. package/dist/utils/resolve.d.ts +0 -12
  384. package/dist/utils/resolve.js +0 -52
  385. package/dist/utils/setup-state.d.ts +0 -3
  386. package/dist/utils/setup-state.js +0 -19
  387. package/dist/utils/sqlite-adapter.d.ts +0 -48
  388. package/dist/utils/sqlite-adapter.js +0 -147
  389. package/dist/utils/sqlite.d.ts +0 -14
  390. package/dist/utils/sqlite.js +0 -14
  391. package/dist/utils/subprocess.d.ts +0 -19
  392. package/dist/utils/subprocess.js +0 -27
  393. package/dist/utils/which.d.ts +0 -14
  394. package/dist/utils/which.js +0 -47
  395. package/dist/utils/zip.d.ts +0 -7
  396. package/dist/utils/zip.js +0 -42
  397. package/dist/validate/__tests__/validate.test.d.ts +0 -1
  398. package/dist/validate/__tests__/validate.test.js +0 -42
  399. package/dist/validate/freshness.d.ts +0 -28
  400. package/dist/validate/freshness.js +0 -48
  401. package/dist/validate/preview.d.ts +0 -21
  402. package/dist/validate/preview.js +0 -39
  403. package/dist/workspace/resolve.d.ts +0 -19
  404. package/dist/workspace/resolve.js +0 -100
@@ -1,160 +0,0 @@
1
- import { Command } from 'commander';
2
- import { requireAuth } from '../auth/store.js';
3
- import { ApiClient } from '../api/client.js';
4
- import { resolveWorkspace, resolveApp } from '../workspace/resolve.js';
5
- import { shouldOutputJson, jsonOut } from '../utils/output.js';
6
- function truncate(text, max) {
7
- if (!text)
8
- return '';
9
- const first = text.split('\n')[0];
10
- if (first.length <= max)
11
- return first;
12
- return first.slice(0, max - 3) + '...';
13
- }
14
- const listCommand = new Command('list')
15
- .description('List agents in workspace')
16
- .option('--workspace <id>', 'Workspace ID')
17
- .option('--app <id>', 'Filter by app name or ID')
18
- .action(async (opts, command) => {
19
- const useJson = shouldOutputJson(command.optsWithGlobals().json);
20
- const credentials = requireAuth();
21
- const client = new ApiClient(credentials);
22
- const { workspaceId, workspaceName } = await resolveWorkspace(client, opts);
23
- try {
24
- let agents = await client.listAgents(workspaceId);
25
- if (opts.app) {
26
- agents = agents.filter(a => a.appId === opts.app || a.appName === opts.app);
27
- }
28
- if (useJson) {
29
- jsonOut({ agents });
30
- return;
31
- }
32
- if (agents.length === 0) {
33
- console.log('No agents found in this workspace.');
34
- return;
35
- }
36
- console.log(`\nWorkspace: ${workspaceName || workspaceId}\n`);
37
- console.log(' ' +
38
- 'Name'.padEnd(24) +
39
- 'Type'.padEnd(16) +
40
- 'App'.padEnd(20) +
41
- 'Description'.padEnd(42) +
42
- 'Integrations'.padEnd(20) +
43
- 'Entities'.padEnd(20) +
44
- 'Mode');
45
- console.log(' ' + '-'.repeat(140));
46
- for (const a of agents) {
47
- const name = a.agentName.padEnd(24);
48
- const type = a.type.padEnd(16);
49
- const app = truncate(a.appName, 18).padEnd(20);
50
- const desc = truncate(a.description, 40).padEnd(42);
51
- const integrations = (a.integrations?.join(', ') || '').padEnd(20);
52
- const entities = (a.entities?.join(', ') || '').padEnd(20);
53
- const mode = a.deploymentMode || '';
54
- console.log(` ${name}${type}${app}${desc}${integrations}${entities}${mode}`);
55
- }
56
- console.log('');
57
- }
58
- catch (err) {
59
- console.error('Failed to list agents:', err instanceof Error ? err.message : err);
60
- process.exit(1);
61
- }
62
- });
63
- const statusCommand = new Command('status')
64
- .description('Get status of a specific agent')
65
- .argument('<name>', 'Agent name')
66
- .option('--workspace <id>', 'Workspace ID')
67
- .option('--app <id>', 'App name or ID (required)')
68
- .action(async (name, opts, command) => {
69
- const useJson = shouldOutputJson(command.optsWithGlobals().json);
70
- const credentials = requireAuth();
71
- const client = new ApiClient(credentials);
72
- const { workspaceId } = await resolveWorkspace(client, opts);
73
- const { appId } = await resolveApp(client, workspaceId, opts);
74
- try {
75
- const status = await client.getAgentStatus(workspaceId, name, appId);
76
- if (useJson) {
77
- jsonOut({ status });
78
- return;
79
- }
80
- console.log(JSON.stringify(status, null, 2));
81
- }
82
- catch (err) {
83
- console.error('Failed to get agent status:', err instanceof Error ? err.message : err);
84
- process.exit(1);
85
- }
86
- });
87
- const executionsCommand = new Command('executions')
88
- .description('List agent execution history for workspace')
89
- .option('--workspace <id>', 'Workspace ID')
90
- .action(async (opts, command) => {
91
- const useJson = shouldOutputJson(command.optsWithGlobals().json);
92
- const credentials = requireAuth();
93
- const client = new ApiClient(credentials);
94
- const { workspaceId } = await resolveWorkspace(client, opts);
95
- try {
96
- const executions = await client.listAgentExecutions(workspaceId);
97
- if (useJson) {
98
- jsonOut({ executions });
99
- return;
100
- }
101
- if (executions.length === 0) {
102
- console.log('No agent executions found.');
103
- return;
104
- }
105
- console.log(' ' +
106
- 'Session ID'.padEnd(36) +
107
- 'Agent'.padEnd(22) +
108
- 'App'.padEnd(22) +
109
- 'Prompt'.padEnd(52) +
110
- 'Status'.padEnd(12) +
111
- 'Duration'.padEnd(12) +
112
- 'Usage');
113
- console.log(' ' + '-'.repeat(160));
114
- for (const e of executions) {
115
- const sessionId = e.sessionId.padEnd(36);
116
- const agent = truncate(e.agentName, 20).padEnd(22);
117
- const app = truncate(e.appId, 20).padEnd(22);
118
- const prompt = truncate(e.prompt, 50).padEnd(52);
119
- const status = e.status.padEnd(12);
120
- const duration = e.durationMs != null ? `${e.durationMs}ms` : '';
121
- const usage = e.usage
122
- ? `${e.usage.inputTokens}/${e.usage.outputTokens}`
123
- : '';
124
- console.log(` ${sessionId}${agent}${app}${prompt}${status}${duration.padEnd(12)}${usage}`);
125
- }
126
- console.log('');
127
- }
128
- catch (err) {
129
- console.error('Failed to list agent executions:', err instanceof Error ? err.message : err);
130
- process.exit(1);
131
- }
132
- });
133
- const executionCommand = new Command('execution')
134
- .description('Get execution stream for a specific session')
135
- .argument('<sessionId>', 'Session ID')
136
- .option('--workspace <id>', 'Workspace ID')
137
- .action(async (sessionId, opts, command) => {
138
- const useJson = shouldOutputJson(command.optsWithGlobals().json);
139
- const credentials = requireAuth();
140
- const client = new ApiClient(credentials);
141
- const { workspaceId } = await resolveWorkspace(client, opts);
142
- try {
143
- const stream = await client.getAgentExecutionStream(workspaceId, sessionId);
144
- if (useJson) {
145
- jsonOut({ stream });
146
- return;
147
- }
148
- process.stdout.write(stream);
149
- }
150
- catch (err) {
151
- console.error('Failed to get agent execution stream:', err instanceof Error ? err.message : err);
152
- process.exit(1);
153
- }
154
- });
155
- export const agentsCommand = new Command('agents')
156
- .description('Manage workspace agents and execution history')
157
- .addCommand(listCommand)
158
- .addCommand(statusCommand)
159
- .addCommand(executionsCommand)
160
- .addCommand(executionCommand);
@@ -1,2 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const apiKeysCommand: Command;
@@ -1,95 +0,0 @@
1
- import { Command } from 'commander';
2
- import { requireAuth } from '../auth/store.js';
3
- import { ApiClient } from '../api/client.js';
4
- import { resolveWorkspace, resolveApp } from '../workspace/resolve.js';
5
- import { shouldOutputJson, jsonOut } from '../utils/output.js';
6
- import { promptInput } from '../utils/prompt.js';
7
- const listCommand = new Command('list')
8
- .description('List API keys for the workspace')
9
- .option('--workspace <id>', 'Workspace ID')
10
- .action(async (opts, command) => {
11
- const useJson = shouldOutputJson(command.optsWithGlobals().json);
12
- const credentials = requireAuth();
13
- const client = new ApiClient(credentials);
14
- const { workspaceId, workspaceName } = await resolveWorkspace(client, opts);
15
- try {
16
- const apiKeys = await client.listApiKeys(workspaceId);
17
- if (useJson) {
18
- jsonOut({ apiKeys });
19
- return;
20
- }
21
- if (apiKeys.length === 0) {
22
- console.log('No API keys found in this workspace.');
23
- return;
24
- }
25
- console.log(`\nWorkspace: ${workspaceName || workspaceId}\n`);
26
- console.log(` ${'Name'.padEnd(24)} ${'Key Prefix'.padEnd(16)} ${'App'.padEnd(20)} ${'Active'.padEnd(8)} ${'Requests'.padEnd(10)} ${'Last Used'.padEnd(22)} Created`);
27
- console.log(' ' + '-'.repeat(112));
28
- for (const k of apiKeys) {
29
- const prefix = `${k.keyPrefix}...`;
30
- const appLabel = k.appId ? k.appId : 'all';
31
- const active = k.isActive ? 'yes' : 'no';
32
- const requests = k.requestCount !== undefined ? String(k.requestCount) : '-';
33
- const lastUsed = k.lastUsedAt ? new Date(k.lastUsedAt).toLocaleString() : '-';
34
- const created = new Date(k.createdAt).toLocaleString();
35
- console.log(` ${k.name.padEnd(24)} ${prefix.padEnd(16)} ${appLabel.padEnd(20)} ${active.padEnd(8)} ${requests.padEnd(10)} ${lastUsed.padEnd(22)} ${created}`);
36
- }
37
- console.log('');
38
- }
39
- catch (err) {
40
- console.error('Failed to list API keys:', err instanceof Error ? err.message : err);
41
- process.exit(1);
42
- }
43
- });
44
- const createCommand = new Command('create')
45
- .description('Create a new API key')
46
- .option('--workspace <id>', 'Workspace ID')
47
- .option('--name <name>', 'API key name')
48
- .option('--app <id>', 'Restrict key to a specific app (name or ID)')
49
- .option('--scopes <scopes>', 'Comma-separated list of scopes')
50
- .action(async (opts, command) => {
51
- const useJson = shouldOutputJson(command.optsWithGlobals().json);
52
- const credentials = requireAuth();
53
- const client = new ApiClient(credentials);
54
- const { workspaceId } = await resolveWorkspace(client, opts);
55
- let name = opts.name ?? '';
56
- if (!name) {
57
- if (process.stdout.isTTY) {
58
- name = await promptInput('API key name:');
59
- if (!name) {
60
- console.error('API key name is required.');
61
- process.exit(1);
62
- }
63
- }
64
- else {
65
- console.error('API key name is required. Use --name flag.');
66
- process.exit(1);
67
- }
68
- }
69
- let appId;
70
- if (opts.app) {
71
- const resolved = await resolveApp(client, workspaceId, { app: opts.app });
72
- appId = resolved.appId;
73
- }
74
- const scopes = opts.scopes
75
- ? opts.scopes.split(',').map((s) => s.trim()).filter(Boolean)
76
- : undefined;
77
- try {
78
- const result = await client.createApiKey(workspaceId, { name, appId, scopes });
79
- if (useJson) {
80
- jsonOut({ apiKey: result });
81
- return;
82
- }
83
- console.log(`\nAPI key created: ${result.name}`);
84
- console.log(`\n Key: ${result.key}`);
85
- console.log(`\n WARNING: Save this key now - it cannot be retrieved again.\n`);
86
- }
87
- catch (err) {
88
- console.error('Failed to create API key:', err instanceof Error ? err.message : err);
89
- process.exit(1);
90
- }
91
- });
92
- export const apiKeysCommand = new Command('api-keys')
93
- .description('Manage workspace API keys')
94
- .addCommand(listCommand)
95
- .addCommand(createCommand);
@@ -1,2 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const appsCommand: Command;
@@ -1,82 +0,0 @@
1
- import { Command } from 'commander';
2
- import { requireAuth } from '../auth/store.js';
3
- import { ApiClient } from '../api/client.js';
4
- import { resolveWorkspace, resolveApp } from '../workspace/resolve.js';
5
- import { shouldOutputJson, jsonOut } from '../utils/output.js';
6
- import { fetchAppInfo, printAppInfo } from '../utils/app-info.js';
7
- import { runCreateFlow } from './init.js';
8
- const listCommand = new Command('list')
9
- .description('List apps in workspace')
10
- .option('--workspace <id>', 'Workspace ID')
11
- .action(async (opts, command) => {
12
- const useJson = shouldOutputJson(command.optsWithGlobals().json);
13
- const credentials = requireAuth();
14
- const client = new ApiClient(credentials);
15
- const { workspaceId, workspaceName } = await resolveWorkspace(client, opts);
16
- try {
17
- const apps = await client.listApps(workspaceId);
18
- if (useJson) {
19
- jsonOut({ apps });
20
- return;
21
- }
22
- if (apps.length === 0) {
23
- console.log('No apps in this workspace.');
24
- console.log('Create one with: runwork create <name>');
25
- return;
26
- }
27
- console.log(`\nWorkspace: ${workspaceName || workspaceId}\n`);
28
- console.log(` ${'Name'.padEnd(28)} ${'ID'.padEnd(38)} Status`);
29
- console.log(' ' + '-'.repeat(80));
30
- for (const app of apps) {
31
- console.log(` ${(app.name || '').padEnd(28)} ${app.id}`);
32
- }
33
- console.log('');
34
- }
35
- catch (err) {
36
- console.error('Failed to list apps:', err instanceof Error ? err.message : err);
37
- process.exit(1);
38
- }
39
- });
40
- const createCommand = new Command('create')
41
- .description('Create a new Runwork app')
42
- .argument('[name]', 'App name')
43
- .action(async (name) => {
44
- await runCreateFlow(name);
45
- });
46
- const infoCommand = new Command('info')
47
- .description('Show detailed app info, preview status, and registries')
48
- .argument('[app]', 'App ID, name, or slug')
49
- .option('--workspace <id>', 'Workspace ID')
50
- .action(async (appArg, opts, command) => {
51
- const useJson = shouldOutputJson(command.optsWithGlobals().json);
52
- const credentials = requireAuth();
53
- const client = new ApiClient(credentials);
54
- const { workspaceId, workspaceName } = await resolveWorkspace(client, opts);
55
- const { appId, appName } = await resolveApp(client, workspaceId, { app: appArg });
56
- let appSlug = appName;
57
- try {
58
- const appData = await client.getApp(appId);
59
- appSlug = appData.slug || appName;
60
- }
61
- catch {
62
- // Fall back to appName as slug
63
- }
64
- const data = await fetchAppInfo(client, {
65
- appId,
66
- appName,
67
- appSlug,
68
- workspaceId,
69
- workspaceName,
70
- baseUrl: credentials.baseUrl || 'https://runwork.ai',
71
- });
72
- if (useJson) {
73
- jsonOut(data);
74
- return;
75
- }
76
- printAppInfo(data);
77
- });
78
- export const appsCommand = new Command('apps')
79
- .description('Manage workspace apps')
80
- .addCommand(listCommand)
81
- .addCommand(createCommand)
82
- .addCommand(infoCommand);
@@ -1,2 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const buildPluginCommand: Command;
@@ -1,135 +0,0 @@
1
- import { Command } from 'commander';
2
- import { existsSync, readFileSync } from 'fs';
3
- import { resolve, join } from 'path';
4
- import { homedir } from 'os';
5
- import { requireAuth } from '../auth/store.js';
6
- import { ApiClient } from '../api/client.js';
7
- import { getAdapterBySlug } from '../agents/detect.js';
8
- import { RUNWORK_MCP_PREFIX, RUNWORK_WORKSPACE_MCP_NAME } from '../agents/types.js';
9
- import { generateIntroSkill, buildAppSkillDescription } from '../agents/intro-skill.js';
10
- function loadSetupState(filePath) {
11
- if (!existsSync(filePath))
12
- return null;
13
- try {
14
- return JSON.parse(readFileSync(filePath, 'utf-8'));
15
- }
16
- catch {
17
- return null;
18
- }
19
- }
20
- export const buildPluginCommand = new Command('build-plugin')
21
- .description('Build an installable plugin archive for an agent (e.g. Claude Desktop)')
22
- .requiredOption('--agent <slug>', 'Target agent slug (e.g. claude-desktop)')
23
- .option('--output <path>', 'Output zip path', 'runwork-plugin.zip')
24
- .action(async (opts) => {
25
- const adapter = getAdapterBySlug(opts.agent);
26
- if (!adapter) {
27
- console.error(`Unknown agent: ${opts.agent}`);
28
- process.exit(1);
29
- }
30
- if (!adapter.buildPluginZip) {
31
- console.error(`Agent "${adapter.name}" does not support plugin zip build.`);
32
- process.exit(1);
33
- }
34
- const credentials = requireAuth();
35
- // Find the first available setup state so we know which workspace to
36
- // pull content from. We don't care about project vs user scope here —
37
- // plugin archives are always user-scoped for the agent they're uploaded to.
38
- const projectStatePath = join(process.cwd(), '.runwork', 'setup.json');
39
- const userStatePath = join(homedir(), '.runwork', 'setup.json');
40
- const state = loadSetupState(projectStatePath) ?? loadSetupState(userStatePath);
41
- if (!state) {
42
- console.error('No setup state found. Run `runwork setup` first.');
43
- process.exit(1);
44
- }
45
- const client = new ApiClient(credentials);
46
- // Refresh workspace name/slug if missing or stale (matches sync behavior).
47
- if (!state.workspaceName || state.workspaceName === state.workspaceId || !state.workspaceSlug) {
48
- try {
49
- const workspaces = await client.listWorkspaces();
50
- const ws = workspaces.find((w) => w.id === state.workspaceId);
51
- if (ws?.name)
52
- state.workspaceName = ws.name;
53
- if (ws?.slug)
54
- state.workspaceSlug = ws.slug;
55
- }
56
- catch {
57
- /* best-effort */
58
- }
59
- }
60
- console.log(`Building plugin for ${adapter.name} from workspace ${state.workspaceName || state.workspaceId}...`);
61
- // Fetch the same inputs sync uses. The plugin archive must contain
62
- // identical content to what sync would write into the plugin directory,
63
- // including workspace team instructions + per-agent extra instructions.
64
- const [allSkills, mcpServers, externalSkills, registries, connectedIntegrations, onboardingConfig,] = await Promise.all([
65
- client.listWorkspaceSkills(state.workspaceId, true),
66
- client.listMcpServers(state.workspaceId),
67
- client.listExternalSkills(state.workspaceId),
68
- client.getWorkspaceAll(state.workspaceId).catch(() => null),
69
- client
70
- .listConnectedIntegrations(state.workspaceId)
71
- .then((list) => list.map((i) => i.canonicalId ?? i.integrationId))
72
- .catch(() => []),
73
- client.getOnboardingConfig(state.workspaceId).catch(() => null),
74
- ]);
75
- const baseUrl = credentials.baseUrl || 'https://runwork.ai';
76
- const mcpEntries = mcpServers
77
- .filter((s) => s.enabled)
78
- .map((s) => ({
79
- name: `${RUNWORK_MCP_PREFIX}${s.name}`,
80
- url: s.url,
81
- transport: s.transport,
82
- headers: { Authorization: `Bearer ${credentials.apiKey}` },
83
- description: `Runwork MCP server: ${s.name}. Provides tools for interacting with this workspace resource.`,
84
- }));
85
- mcpEntries.push({
86
- name: RUNWORK_WORKSPACE_MCP_NAME,
87
- url: `${baseUrl}/api/workspaces/${state.workspaceId}/mcp`,
88
- transport: 'streamable-http',
89
- headers: { Authorization: `Bearer ${credentials.apiKey}` },
90
- description: "Runwork workspace tools: query entities, trigger workflows, manage integrations, run agents, and access shared data across your team's apps.",
91
- });
92
- const remoteSkills = [];
93
- for (const s of externalSkills) {
94
- remoteSkills.push({ name: s.name, content: s.content, source: 'external' });
95
- }
96
- for (const s of allSkills) {
97
- if (s.type === 'app' && s.appId && s.content?.trim()) {
98
- remoteSkills.push({ name: s.name, content: s.content, source: 'app', appId: s.appId });
99
- }
100
- }
101
- const introSkill = generateIntroSkill({
102
- workspaceName: state.workspaceName || state.workspaceId,
103
- workspaceId: state.workspaceId,
104
- workspaceSlug: state.workspaceSlug,
105
- registries,
106
- connectedIntegrations,
107
- mcpServerCount: mcpEntries.length,
108
- skillCount: remoteSkills.length,
109
- mcpServerNames: mcpEntries.map((e) => e.name.replace(RUNWORK_MCP_PREFIX, '')),
110
- skillNames: remoteSkills.map((s) => s.name),
111
- });
112
- // When the adapter exposes skills through MCP already, skip duplicating
113
- // app skills into the plugin — same rule sync applies per-adapter.
114
- const skipAppSkills = adapter.mcpProvidesSkills && mcpEntries.length > 0;
115
- const skillFiles = [
116
- introSkill,
117
- ...remoteSkills
118
- .filter((s) => !(skipAppSkills && s.source === 'app'))
119
- .map((s) => ({
120
- name: s.name,
121
- filename: s.name.toLowerCase().replace(/[^a-z0-9]+/g, '-'),
122
- content: s.content,
123
- description: s.source === 'app'
124
- ? buildAppSkillDescription(s.name, registries) || `${s.name} - Runwork workspace application`
125
- : `${s.name} - Runwork workspace skill`,
126
- })),
127
- ];
128
- // Merge team instructions + per-agent extra instructions (same rule as sync).
129
- const teamInstructions = onboardingConfig?.config?.teamInstructions;
130
- const agentExtra = onboardingConfig?.config?.agentConfigs?.[adapter.slug]?.extraInstructions;
131
- const mergedInstructions = [teamInstructions, agentExtra].filter(Boolean).join('\n\n') || null;
132
- const outputPath = resolve(opts.output);
133
- await adapter.buildPluginZip(skillFiles, mcpEntries, mergedInstructions, outputPath);
134
- console.log(`Wrote ${outputPath}`);
135
- });
@@ -1,60 +0,0 @@
1
- import { Command } from 'commander';
2
- import { ApiClient } from '../api/client.js';
3
- import type { Credentials, AppInfo } from '../types.js';
4
- import { type SyncErrorReason } from '../git/classify-sync-error.js';
5
- /**
6
- * Outcome of overlaying the app's git-tracked source on top of the template.
7
- * `pulled: false` with `reason: 'empty-remote'` is the expected, benign state
8
- * for a brand-new app (nothing pushed yet). Any other `reason` is a real
9
- * failure that left a template-only scaffold -- the caller must NOT report
10
- * success, since editing it would edit the wrong code (friction log #1).
11
- */
12
- export interface CloneSource {
13
- pulled: boolean;
14
- reason?: 'empty-remote' | SyncErrorReason;
15
- detail?: string;
16
- }
17
- export interface CloneResult {
18
- appId: string;
19
- appName: string;
20
- slug: string;
21
- directory: string;
22
- workspaceId: string;
23
- workspaceName: string;
24
- source: CloneSource;
25
- }
26
- export declare function execClone(client: ApiClient, app: AppInfo, directory?: string, creds?: Credentials | null): Promise<CloneResult>;
27
- /**
28
- * Turn a failed-pull error into a CloneSource: an empty remote (benign,
29
- * brand-new app) vs a classified real failure (auth/network/no-remote) that
30
- * leaves a template-only scaffold.
31
- */
32
- export declare function pullOutcomeFromError(err: unknown): CloneSource;
33
- /**
34
- * A clone is a real failure -- a template-only scaffold rather than the app's
35
- * code -- when the source pull didn't happen for any reason other than an
36
- * empty remote. Callers must not report success in that case.
37
- */
38
- export declare function isCloneSourceFailure(source: CloneSource): boolean;
39
- /**
40
- * Reconcile positional args with --app. When --app is provided, the first
41
- * positional argument is intended as the *directory* -- not another appId
42
- * -- because the app is already disambiguated by the option. Without this,
43
- * `runwork clone --app foo C:\path\to\dir` ends up parsing `C:\path\to\dir`
44
- * as `appId` (which is then ignored because `--app` wins), leaving
45
- * `directory` undefined and silently cloning into the slug under cwd.
46
- */
47
- export declare function normalizeCloneArgs(appId: string | undefined, directory: string | undefined, options: {
48
- app?: string;
49
- } | undefined): {
50
- appId: string | undefined;
51
- directory: string | undefined;
52
- };
53
- /**
54
- * Help epilogue shown under `runwork clone --help`. Agents tend to read help
55
- * before running, so we surface the restricted-mount caveat (friction log #9)
56
- * here. Exported so it can be asserted on directly (commander's help-text
57
- * hooks aren't reflected by `helpInformation()`).
58
- */
59
- export declare const RESTRICTED_FS_HELP = "\nNote for AI agents: clone into a normal working directory. Some sandboxed\n\"outputs\" mounts (e.g. certain agent environments) disallow the unlink\noperations git uses for pack files, which can corrupt the repo with errors\nlike \"unable to unlink '.git/objects/pack/...': Operation not permitted\". If\nyou hit that, clone into your home directory or another standard path instead.";
60
- export declare const cloneCommand: Command;