runwork 0.15.0 → 0.15.2

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 (403) hide show
  1. package/dist/index.js +19272 -116
  2. package/package.json +4 -4
  3. package/dist/__tests__/curl-parser.test.d.ts +0 -1
  4. package/dist/__tests__/curl-parser.test.js +0 -250
  5. package/dist/__tests__/install-scripts.test.d.ts +0 -1
  6. package/dist/__tests__/install-scripts.test.js +0 -280
  7. package/dist/__tests__/types-manager.test.d.ts +0 -1
  8. package/dist/__tests__/types-manager.test.js +0 -89
  9. package/dist/agents/__tests__/chatgpt-registry.test.d.ts +0 -1
  10. package/dist/agents/__tests__/chatgpt-registry.test.js +0 -61
  11. package/dist/agents/__tests__/claude-code-managed-block.test.d.ts +0 -1
  12. package/dist/agents/__tests__/claude-code-managed-block.test.js +0 -97
  13. package/dist/agents/__tests__/claude-code-plugin.test.d.ts +0 -1
  14. package/dist/agents/__tests__/claude-code-plugin.test.js +0 -47
  15. package/dist/agents/__tests__/claude-code-stats.test.d.ts +0 -1
  16. package/dist/agents/__tests__/claude-code-stats.test.js +0 -390
  17. package/dist/agents/__tests__/claude-desktop-memory.test.d.ts +0 -1
  18. package/dist/agents/__tests__/claude-desktop-memory.test.js +0 -154
  19. package/dist/agents/__tests__/claude-desktop-plugin-tree.test.d.ts +0 -1
  20. package/dist/agents/__tests__/claude-desktop-plugin-tree.test.js +0 -161
  21. package/dist/agents/__tests__/claude-desktop-plugin.test.d.ts +0 -1
  22. package/dist/agents/__tests__/claude-desktop-plugin.test.js +0 -117
  23. package/dist/agents/__tests__/claude-desktop-rpm.test.d.ts +0 -1
  24. package/dist/agents/__tests__/claude-desktop-rpm.test.js +0 -126
  25. package/dist/agents/__tests__/claude-desktop-stats.test.d.ts +0 -1
  26. package/dist/agents/__tests__/claude-desktop-stats.test.js +0 -280
  27. package/dist/agents/__tests__/codex-instructions.test.d.ts +0 -1
  28. package/dist/agents/__tests__/codex-instructions.test.js +0 -57
  29. package/dist/agents/__tests__/codex-minimum-permissions.test.d.ts +0 -1
  30. package/dist/agents/__tests__/codex-minimum-permissions.test.js +0 -82
  31. package/dist/agents/__tests__/codex-stats.test.d.ts +0 -1
  32. package/dist/agents/__tests__/codex-stats.test.js +0 -370
  33. package/dist/agents/__tests__/cursor-merge.test.d.ts +0 -1
  34. package/dist/agents/__tests__/cursor-merge.test.js +0 -66
  35. package/dist/agents/__tests__/cursor-stats.test.d.ts +0 -1
  36. package/dist/agents/__tests__/cursor-stats.test.js +0 -183
  37. package/dist/agents/__tests__/defaults-merge.test.d.ts +0 -1
  38. package/dist/agents/__tests__/defaults-merge.test.js +0 -268
  39. package/dist/agents/__tests__/detection.test.d.ts +0 -1
  40. package/dist/agents/__tests__/detection.test.js +0 -89
  41. package/dist/agents/__tests__/graceful-degradation.test.d.ts +0 -1
  42. package/dist/agents/__tests__/graceful-degradation.test.js +0 -129
  43. package/dist/agents/__tests__/instruction-hint.test.d.ts +0 -1
  44. package/dist/agents/__tests__/instruction-hint.test.js +0 -69
  45. package/dist/agents/__tests__/intro-skill.test.d.ts +0 -1
  46. package/dist/agents/__tests__/intro-skill.test.js +0 -193
  47. package/dist/agents/__tests__/schema-validation.test.d.ts +0 -1
  48. package/dist/agents/__tests__/schema-validation.test.js +0 -212
  49. package/dist/agents/__tests__/skill-slug.test.d.ts +0 -1
  50. package/dist/agents/__tests__/skill-slug.test.js +0 -77
  51. package/dist/agents/claude-code.d.ts +0 -53
  52. package/dist/agents/claude-code.js +0 -754
  53. package/dist/agents/claude-desktop-plugin-tree.d.ts +0 -59
  54. package/dist/agents/claude-desktop-plugin-tree.js +0 -143
  55. package/dist/agents/claude-desktop.d.ts +0 -47
  56. package/dist/agents/claude-desktop.js +0 -684
  57. package/dist/agents/cline.d.ts +0 -15
  58. package/dist/agents/cline.js +0 -130
  59. package/dist/agents/codex.d.ts +0 -44
  60. package/dist/agents/codex.js +0 -453
  61. package/dist/agents/conversation-skills.d.ts +0 -18
  62. package/dist/agents/conversation-skills.js +0 -229
  63. package/dist/agents/cursor.d.ts +0 -48
  64. package/dist/agents/cursor.js +0 -324
  65. package/dist/agents/default-config.d.ts +0 -30
  66. package/dist/agents/default-config.js +0 -67
  67. package/dist/agents/defaults-merge.d.ts +0 -72
  68. package/dist/agents/defaults-merge.js +0 -131
  69. package/dist/agents/detect.d.ts +0 -4
  70. package/dist/agents/detect.js +0 -67
  71. package/dist/agents/detection.d.ts +0 -18
  72. package/dist/agents/detection.js +0 -94
  73. package/dist/agents/gemini.d.ts +0 -15
  74. package/dist/agents/gemini.js +0 -122
  75. package/dist/agents/generic-adapter.d.ts +0 -25
  76. package/dist/agents/generic-adapter.js +0 -151
  77. package/dist/agents/intro-skill.d.ts +0 -45
  78. package/dist/agents/intro-skill.js +0 -447
  79. package/dist/agents/registry-data.d.ts +0 -192
  80. package/dist/agents/registry-data.js +0 -669
  81. package/dist/agents/registry.d.ts +0 -13
  82. package/dist/agents/registry.js +0 -36
  83. package/dist/agents/runtime-detection.d.ts +0 -82
  84. package/dist/agents/runtime-detection.js +0 -271
  85. package/dist/agents/session-start-hook.d.ts +0 -37
  86. package/dist/agents/session-start-hook.js +0 -159
  87. package/dist/agents/types.d.ts +0 -171
  88. package/dist/agents/types.js +0 -75
  89. package/dist/agents/utils/instruction-hint.d.ts +0 -21
  90. package/dist/agents/utils/instruction-hint.js +0 -108
  91. package/dist/agents/utils/json-config.d.ts +0 -19
  92. package/dist/agents/utils/json-config.js +0 -69
  93. package/dist/agents/utils/toml-config.d.ts +0 -8
  94. package/dist/agents/utils/toml-config.js +0 -27
  95. package/dist/agents/windsurf.d.ts +0 -14
  96. package/dist/agents/windsurf.js +0 -102
  97. package/dist/api/__tests__/client.test.d.ts +0 -1
  98. package/dist/api/__tests__/client.test.js +0 -272
  99. package/dist/api/client.d.ts +0 -326
  100. package/dist/api/client.js +0 -427
  101. package/dist/auth/__tests__/login-flow.test.d.ts +0 -1
  102. package/dist/auth/__tests__/login-flow.test.js +0 -101
  103. package/dist/auth/__tests__/store.test.d.ts +0 -1
  104. package/dist/auth/__tests__/store.test.js +0 -132
  105. package/dist/auth/login-flow.d.ts +0 -26
  106. package/dist/auth/login-flow.js +0 -137
  107. package/dist/auth/store.d.ts +0 -5
  108. package/dist/auth/store.js +0 -62
  109. package/dist/commands/__tests__/clone-args.test.d.ts +0 -1
  110. package/dist/commands/__tests__/clone-args.test.js +0 -51
  111. package/dist/commands/__tests__/clone-source-result.test.d.ts +0 -1
  112. package/dist/commands/__tests__/clone-source-result.test.js +0 -45
  113. package/dist/commands/__tests__/info-merge.test.d.ts +0 -1
  114. package/dist/commands/__tests__/info-merge.test.js +0 -55
  115. package/dist/commands/__tests__/mcp-entries.test.d.ts +0 -1
  116. package/dist/commands/__tests__/mcp-entries.test.js +0 -48
  117. package/dist/commands/__tests__/setup-persona.test.d.ts +0 -1
  118. package/dist/commands/__tests__/setup-persona.test.js +0 -31
  119. package/dist/commands/__tests__/setup.test.d.ts +0 -1
  120. package/dist/commands/__tests__/setup.test.js +0 -81
  121. package/dist/commands/__tests__/sync-redetect.test.d.ts +0 -1
  122. package/dist/commands/__tests__/sync-redetect.test.js +0 -96
  123. package/dist/commands/__tests__/sync-telemetry.test.d.ts +0 -1
  124. package/dist/commands/__tests__/sync-telemetry.test.js +0 -281
  125. package/dist/commands/__tests__/upgrade.test.d.ts +0 -1
  126. package/dist/commands/__tests__/upgrade.test.js +0 -157
  127. package/dist/commands/agents.d.ts +0 -2
  128. package/dist/commands/agents.js +0 -160
  129. package/dist/commands/api-keys.d.ts +0 -2
  130. package/dist/commands/api-keys.js +0 -95
  131. package/dist/commands/apps.d.ts +0 -2
  132. package/dist/commands/apps.js +0 -82
  133. package/dist/commands/build-plugin.d.ts +0 -2
  134. package/dist/commands/build-plugin.js +0 -135
  135. package/dist/commands/clone.d.ts +0 -60
  136. package/dist/commands/clone.js +0 -271
  137. package/dist/commands/components.d.ts +0 -2
  138. package/dist/commands/components.js +0 -43
  139. package/dist/commands/deploy.d.ts +0 -2
  140. package/dist/commands/deploy.js +0 -279
  141. package/dist/commands/dev.d.ts +0 -11
  142. package/dist/commands/dev.js +0 -1011
  143. package/dist/commands/doctor.d.ts +0 -2
  144. package/dist/commands/doctor.js +0 -230
  145. package/dist/commands/endpoints.d.ts +0 -2
  146. package/dist/commands/endpoints.js +0 -189
  147. package/dist/commands/entities.d.ts +0 -2
  148. package/dist/commands/entities.js +0 -198
  149. package/dist/commands/files.d.ts +0 -2
  150. package/dist/commands/files.js +0 -193
  151. package/dist/commands/inbox.d.ts +0 -11
  152. package/dist/commands/inbox.js +0 -60
  153. package/dist/commands/info.d.ts +0 -178
  154. package/dist/commands/info.js +0 -455
  155. package/dist/commands/init.d.ts +0 -21
  156. package/dist/commands/init.js +0 -185
  157. package/dist/commands/integrations.d.ts +0 -2
  158. package/dist/commands/integrations.js +0 -233
  159. package/dist/commands/login.d.ts +0 -2
  160. package/dist/commands/login.js +0 -44
  161. package/dist/commands/logout.d.ts +0 -2
  162. package/dist/commands/logout.js +0 -13
  163. package/dist/commands/logs.d.ts +0 -2
  164. package/dist/commands/logs.js +0 -232
  165. package/dist/commands/mcp-entries.d.ts +0 -13
  166. package/dist/commands/mcp-entries.js +0 -26
  167. package/dist/commands/mcp.d.ts +0 -2
  168. package/dist/commands/mcp.js +0 -245
  169. package/dist/commands/open.d.ts +0 -2
  170. package/dist/commands/open.js +0 -53
  171. package/dist/commands/resume.d.ts +0 -2
  172. package/dist/commands/resume.js +0 -289
  173. package/dist/commands/save-convo.d.ts +0 -8
  174. package/dist/commands/save-convo.js +0 -20
  175. package/dist/commands/schedules.d.ts +0 -2
  176. package/dist/commands/schedules.js +0 -221
  177. package/dist/commands/setup.d.ts +0 -27
  178. package/dist/commands/setup.js +0 -177
  179. package/dist/commands/share-convo.d.ts +0 -24
  180. package/dist/commands/share-convo.js +0 -167
  181. package/dist/commands/skills.d.ts +0 -2
  182. package/dist/commands/skills.js +0 -352
  183. package/dist/commands/sync-telemetry.d.ts +0 -33
  184. package/dist/commands/sync-telemetry.js +0 -186
  185. package/dist/commands/sync.d.ts +0 -37
  186. package/dist/commands/sync.js +0 -702
  187. package/dist/commands/uninstall.d.ts +0 -2
  188. package/dist/commands/uninstall.js +0 -145
  189. package/dist/commands/upgrade.d.ts +0 -14
  190. package/dist/commands/upgrade.js +0 -217
  191. package/dist/commands/validate.d.ts +0 -2
  192. package/dist/commands/validate.js +0 -89
  193. package/dist/commands/welcome.d.ts +0 -1
  194. package/dist/commands/welcome.js +0 -86
  195. package/dist/commands/workflows.d.ts +0 -2
  196. package/dist/commands/workflows.js +0 -187
  197. package/dist/deploy/__tests__/deploy-state.test.d.ts +0 -1
  198. package/dist/deploy/__tests__/deploy-state.test.js +0 -80
  199. package/dist/deploy/__tests__/deploy-status.test.d.ts +0 -1
  200. package/dist/deploy/__tests__/deploy-status.test.js +0 -41
  201. package/dist/deploy/__tests__/detach-args.test.d.ts +0 -1
  202. package/dist/deploy/__tests__/detach-args.test.js +0 -30
  203. package/dist/deploy/deploy-state.d.ts +0 -36
  204. package/dist/deploy/deploy-state.js +0 -63
  205. package/dist/deploy/deploy-status.d.ts +0 -21
  206. package/dist/deploy/deploy-status.js +0 -36
  207. package/dist/deploy/detach.d.ts +0 -32
  208. package/dist/deploy/detach.js +0 -71
  209. package/dist/dev/__tests__/attach.test.d.ts +0 -1
  210. package/dist/dev/__tests__/attach.test.js +0 -296
  211. package/dist/dev/__tests__/detach.test.d.ts +0 -1
  212. package/dist/dev/__tests__/detach.test.js +0 -404
  213. package/dist/dev/__tests__/preview-url-poller.test.d.ts +0 -1
  214. package/dist/dev/__tests__/preview-url-poller.test.js +0 -149
  215. package/dist/dev/__tests__/session.test.d.ts +0 -1
  216. package/dist/dev/__tests__/session.test.js +0 -446
  217. package/dist/dev/__tests__/startup-sync.test.d.ts +0 -1
  218. package/dist/dev/__tests__/startup-sync.test.js +0 -32
  219. package/dist/dev/__tests__/stop.test.d.ts +0 -1
  220. package/dist/dev/__tests__/stop.test.js +0 -172
  221. package/dist/dev/attach.d.ts +0 -120
  222. package/dist/dev/attach.js +0 -269
  223. package/dist/dev/detach.d.ts +0 -187
  224. package/dist/dev/detach.js +0 -292
  225. package/dist/dev/preview-url-poller.d.ts +0 -35
  226. package/dist/dev/preview-url-poller.js +0 -50
  227. package/dist/dev/session.d.ts +0 -175
  228. package/dist/dev/session.js +0 -258
  229. package/dist/dev/startup-sync.d.ts +0 -23
  230. package/dist/dev/startup-sync.js +0 -14
  231. package/dist/dev/stop.d.ts +0 -52
  232. package/dist/dev/stop.js +0 -101
  233. package/dist/devtools/registry-data.d.ts +0 -46
  234. package/dist/devtools/registry-data.js +0 -40
  235. package/dist/generated/bundled-types.d.ts +0 -1
  236. package/dist/generated/bundled-types.js +0 -46
  237. package/dist/generated/version.d.ts +0 -1
  238. package/dist/generated/version.js +0 -2
  239. package/dist/git/__tests__/auto-commit.test.d.ts +0 -1
  240. package/dist/git/__tests__/auto-commit.test.js +0 -431
  241. package/dist/git/__tests__/classify-sync-error.test.d.ts +0 -1
  242. package/dist/git/__tests__/classify-sync-error.test.js +0 -57
  243. package/dist/git/__tests__/credential-helper-e2e.test.d.ts +0 -21
  244. package/dist/git/__tests__/credential-helper-e2e.test.js +0 -195
  245. package/dist/git/__tests__/credentials.test.d.ts +0 -1
  246. package/dist/git/__tests__/credentials.test.js +0 -141
  247. package/dist/git/__tests__/deploy-guard.test.d.ts +0 -1
  248. package/dist/git/__tests__/deploy-guard.test.js +0 -61
  249. package/dist/git/__tests__/ensure-git-credential-helper.test.d.ts +0 -1
  250. package/dist/git/__tests__/ensure-git-credential-helper.test.js +0 -133
  251. package/dist/git/__tests__/ensure-runwork-remote.test.d.ts +0 -1
  252. package/dist/git/__tests__/ensure-runwork-remote.test.js +0 -109
  253. package/dist/git/__tests__/identity.test.d.ts +0 -1
  254. package/dist/git/__tests__/identity.test.js +0 -146
  255. package/dist/git/__tests__/manifest.test.d.ts +0 -1
  256. package/dist/git/__tests__/manifest.test.js +0 -446
  257. package/dist/git/__tests__/preflight-resolution.test.d.ts +0 -1
  258. package/dist/git/__tests__/preflight-resolution.test.js +0 -366
  259. package/dist/git/__tests__/preflight.test.d.ts +0 -1
  260. package/dist/git/__tests__/preflight.test.js +0 -36
  261. package/dist/git/__tests__/repo-config.test.d.ts +0 -1
  262. package/dist/git/__tests__/repo-config.test.js +0 -26
  263. package/dist/git/__tests__/sync.test.d.ts +0 -1
  264. package/dist/git/__tests__/sync.test.js +0 -405
  265. package/dist/git/auto-commit.d.ts +0 -35
  266. package/dist/git/auto-commit.js +0 -293
  267. package/dist/git/classify-sync-error.d.ts +0 -21
  268. package/dist/git/classify-sync-error.js +0 -111
  269. package/dist/git/credentials.d.ts +0 -75
  270. package/dist/git/credentials.js +0 -164
  271. package/dist/git/critical-files.d.ts +0 -20
  272. package/dist/git/critical-files.js +0 -68
  273. package/dist/git/deploy-guard.d.ts +0 -53
  274. package/dist/git/deploy-guard.js +0 -78
  275. package/dist/git/identity.d.ts +0 -44
  276. package/dist/git/identity.js +0 -133
  277. package/dist/git/preflight.d.ts +0 -57
  278. package/dist/git/preflight.js +0 -276
  279. package/dist/git/remote.d.ts +0 -37
  280. package/dist/git/remote.js +0 -75
  281. package/dist/git/repo-config.d.ts +0 -8
  282. package/dist/git/repo-config.js +0 -29
  283. package/dist/git/sync.d.ts +0 -15
  284. package/dist/git/sync.js +0 -159
  285. package/dist/health/__tests__/checks.test.d.ts +0 -1
  286. package/dist/health/__tests__/checks.test.js +0 -357
  287. package/dist/health/__tests__/cli-distribution-checks.test.d.ts +0 -1
  288. package/dist/health/__tests__/cli-distribution-checks.test.js +0 -196
  289. package/dist/health/__tests__/fix.test.d.ts +0 -1
  290. package/dist/health/__tests__/fix.test.js +0 -72
  291. package/dist/health/__tests__/runner-filter.test.d.ts +0 -1
  292. package/dist/health/__tests__/runner-filter.test.js +0 -61
  293. package/dist/health/checks.d.ts +0 -42
  294. package/dist/health/checks.js +0 -636
  295. package/dist/health/fix.d.ts +0 -22
  296. package/dist/health/fix.js +0 -62
  297. package/dist/health/runner.d.ts +0 -8
  298. package/dist/health/runner.js +0 -47
  299. package/dist/health/types.d.ts +0 -12
  300. package/dist/health/types.js +0 -1
  301. package/dist/index.d.ts +0 -1
  302. package/dist/logs/__tests__/tailer-format.test.d.ts +0 -1
  303. package/dist/logs/__tests__/tailer-format.test.js +0 -43
  304. package/dist/logs/tailer.d.ts +0 -17
  305. package/dist/logs/tailer.js +0 -217
  306. package/dist/sync/__tests__/change-detect.test.d.ts +0 -1
  307. package/dist/sync/__tests__/change-detect.test.js +0 -123
  308. package/dist/sync/__tests__/hash.test.d.ts +0 -1
  309. package/dist/sync/__tests__/hash.test.js +0 -18
  310. package/dist/sync/change-detect.d.ts +0 -19
  311. package/dist/sync/change-detect.js +0 -136
  312. package/dist/sync/conflict-ui.d.ts +0 -5
  313. package/dist/sync/conflict-ui.js +0 -78
  314. package/dist/sync/executor.d.ts +0 -23
  315. package/dist/sync/executor.js +0 -102
  316. package/dist/sync/hash.d.ts +0 -1
  317. package/dist/sync/hash.js +0 -4
  318. package/dist/sync/types.d.ts +0 -24
  319. package/dist/sync/types.js +0 -1
  320. package/dist/template/manifest.d.ts +0 -17
  321. package/dist/template/manifest.js +0 -145
  322. package/dist/tools/types.d.ts +0 -52
  323. package/dist/tools/types.js +0 -8
  324. package/dist/types-manager.d.ts +0 -1
  325. package/dist/types-manager.js +0 -35
  326. package/dist/types.d.ts +0 -349
  327. package/dist/types.js +0 -1
  328. package/dist/ui/__tests__/banner.test.d.ts +0 -1
  329. package/dist/ui/__tests__/banner.test.js +0 -98
  330. package/dist/ui/__tests__/colors.test.d.ts +0 -1
  331. package/dist/ui/__tests__/colors.test.js +0 -22
  332. package/dist/ui/__tests__/keyboard.test.d.ts +0 -1
  333. package/dist/ui/__tests__/keyboard.test.js +0 -34
  334. package/dist/ui/__tests__/status-line.test.d.ts +0 -1
  335. package/dist/ui/__tests__/status-line.test.js +0 -54
  336. package/dist/ui/banner.d.ts +0 -29
  337. package/dist/ui/banner.js +0 -153
  338. package/dist/ui/colors.d.ts +0 -4
  339. package/dist/ui/colors.js +0 -7
  340. package/dist/ui/keyboard.d.ts +0 -12
  341. package/dist/ui/keyboard.js +0 -61
  342. package/dist/ui/status-line.d.ts +0 -6
  343. package/dist/ui/status-line.js +0 -53
  344. package/dist/utils/__tests__/format-error.test.d.ts +0 -1
  345. package/dist/utils/__tests__/format-error.test.js +0 -43
  346. package/dist/utils/__tests__/help-json.test.d.ts +0 -1
  347. package/dist/utils/__tests__/help-json.test.js +0 -39
  348. package/dist/utils/__tests__/http.test.d.ts +0 -1
  349. package/dist/utils/__tests__/http.test.js +0 -381
  350. package/dist/utils/__tests__/ignore-matcher.test.d.ts +0 -1
  351. package/dist/utils/__tests__/ignore-matcher.test.js +0 -205
  352. package/dist/utils/__tests__/output.test.d.ts +0 -1
  353. package/dist/utils/__tests__/output.test.js +0 -38
  354. package/dist/utils/__tests__/prompt.test.d.ts +0 -1
  355. package/dist/utils/__tests__/prompt.test.js +0 -27
  356. package/dist/utils/__tests__/resolve.test.d.ts +0 -1
  357. package/dist/utils/__tests__/resolve.test.js +0 -95
  358. package/dist/utils/__tests__/sqlite.test.d.ts +0 -1
  359. package/dist/utils/__tests__/sqlite.test.js +0 -89
  360. package/dist/utils/agent-guidance.d.ts +0 -47
  361. package/dist/utils/agent-guidance.js +0 -128
  362. package/dist/utils/app-info.d.ts +0 -70
  363. package/dist/utils/app-info.js +0 -167
  364. package/dist/utils/curl-parser.d.ts +0 -12
  365. package/dist/utils/curl-parser.js +0 -162
  366. package/dist/utils/data-input.d.ts +0 -1
  367. package/dist/utils/data-input.js +0 -38
  368. package/dist/utils/format-error.d.ts +0 -10
  369. package/dist/utils/format-error.js +0 -38
  370. package/dist/utils/fs.d.ts +0 -5
  371. package/dist/utils/fs.js +0 -23
  372. package/dist/utils/help-json.d.ts +0 -70
  373. package/dist/utils/help-json.js +0 -88
  374. package/dist/utils/http.d.ts +0 -46
  375. package/dist/utils/http.js +0 -421
  376. package/dist/utils/ignore-matcher.d.ts +0 -47
  377. package/dist/utils/ignore-matcher.js +0 -132
  378. package/dist/utils/output.d.ts +0 -17
  379. package/dist/utils/output.js +0 -27
  380. package/dist/utils/prompt.d.ts +0 -5
  381. package/dist/utils/prompt.js +0 -42
  382. package/dist/utils/resolve.d.ts +0 -12
  383. package/dist/utils/resolve.js +0 -52
  384. package/dist/utils/setup-state.d.ts +0 -3
  385. package/dist/utils/setup-state.js +0 -19
  386. package/dist/utils/sqlite-adapter.d.ts +0 -48
  387. package/dist/utils/sqlite-adapter.js +0 -147
  388. package/dist/utils/sqlite.d.ts +0 -14
  389. package/dist/utils/sqlite.js +0 -14
  390. package/dist/utils/subprocess.d.ts +0 -19
  391. package/dist/utils/subprocess.js +0 -27
  392. package/dist/utils/which.d.ts +0 -14
  393. package/dist/utils/which.js +0 -47
  394. package/dist/utils/zip.d.ts +0 -7
  395. package/dist/utils/zip.js +0 -42
  396. package/dist/validate/__tests__/validate.test.d.ts +0 -1
  397. package/dist/validate/__tests__/validate.test.js +0 -42
  398. package/dist/validate/freshness.d.ts +0 -28
  399. package/dist/validate/freshness.js +0 -48
  400. package/dist/validate/preview.d.ts +0 -21
  401. package/dist/validate/preview.js +0 -39
  402. package/dist/workspace/resolve.d.ts +0 -19
  403. 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;