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,20 +0,0 @@
1
- /**
2
- * Files that must survive a remote sync. The sync path can rebase or, as a
3
- * last resort, merge with `-X theirs` (remote wins) to reconcile diverged
4
- * histories. If the remote tip is missing one of these (e.g. right after a
5
- * fresh init, or a server-side reconcile), the merge can delete the local
6
- * copy. Losing `.runwork.json` in particular bricks the app for the CLI
7
- * ("not a Runwork app"). We snapshot these before the sync and restore any
8
- * the sync removed.
9
- *
10
- * Shared by `runwork dev` (startup sync) and `runwork deploy` so both protect
11
- * the same set with identical logic.
12
- */
13
- export declare const CRITICAL_FILES: readonly [".runwork.json", "blueprint.json", ".gitignore"];
14
- export interface CriticalSnapshot {
15
- path: string;
16
- contents: string;
17
- }
18
- export declare function snapshotCriticalFiles(cwd: string): CriticalSnapshot[];
19
- export declare function restoreMissingCriticalFiles(cwd: string, snapshots: CriticalSnapshot[]): string[];
20
- export declare function commitAndPushRestoredFiles(cwd: string, files: string[]): boolean;
@@ -1,68 +0,0 @@
1
- import { execFileSync } from '../utils/subprocess.js';
2
- import { readFileSync, writeFileSync, existsSync } from 'fs';
3
- import { join } from 'path';
4
- /**
5
- * Files that must survive a remote sync. The sync path can rebase or, as a
6
- * last resort, merge with `-X theirs` (remote wins) to reconcile diverged
7
- * histories. If the remote tip is missing one of these (e.g. right after a
8
- * fresh init, or a server-side reconcile), the merge can delete the local
9
- * copy. Losing `.runwork.json` in particular bricks the app for the CLI
10
- * ("not a Runwork app"). We snapshot these before the sync and restore any
11
- * the sync removed.
12
- *
13
- * Shared by `runwork dev` (startup sync) and `runwork deploy` so both protect
14
- * the same set with identical logic.
15
- */
16
- export const CRITICAL_FILES = ['.runwork.json', 'blueprint.json', '.gitignore'];
17
- export function snapshotCriticalFiles(cwd) {
18
- const snapshots = [];
19
- for (const rel of CRITICAL_FILES) {
20
- const abs = join(cwd, rel);
21
- if (!existsSync(abs))
22
- continue;
23
- try {
24
- snapshots.push({ path: rel, contents: readFileSync(abs, 'utf-8') });
25
- }
26
- catch {
27
- // Best-effort: skip unreadable files.
28
- }
29
- }
30
- return snapshots;
31
- }
32
- export function restoreMissingCriticalFiles(cwd, snapshots) {
33
- const restored = [];
34
- for (const snap of snapshots) {
35
- const abs = join(cwd, snap.path);
36
- if (existsSync(abs))
37
- continue;
38
- try {
39
- writeFileSync(abs, snap.contents, 'utf-8');
40
- restored.push(snap.path);
41
- }
42
- catch {
43
- // Best-effort: skip files we cannot write back.
44
- }
45
- }
46
- return restored;
47
- }
48
- export function commitAndPushRestoredFiles(cwd, files) {
49
- if (files.length === 0)
50
- return false;
51
- try {
52
- execFileSync('git', ['add', '--', ...files], { cwd, stdio: 'pipe' });
53
- execFileSync('git', ['commit', '-m', 'chore: restore critical files removed by sync'], { cwd, stdio: 'pipe' });
54
- }
55
- catch {
56
- return false;
57
- }
58
- try {
59
- // `HEAD:main` so the push works regardless of local branch name.
60
- execFileSync('git', ['push', 'runwork', 'HEAD:main'], { cwd, stdio: 'pipe' });
61
- return true;
62
- }
63
- catch {
64
- // Push failures are non-fatal: the local copy is restored, and the
65
- // restoration commit will be pushed with the next auto-sync cycle.
66
- return false;
67
- }
68
- }
@@ -1,53 +0,0 @@
1
- /**
2
- * Deploy guard: detect whether `runwork deploy` is about to commit and
3
- * deploy code that the preview does not reflect, and decide whether to
4
- * warn the user about it.
5
- *
6
- * The preview reflects the last *pushed* commit. When an auto-syncing
7
- * `runwork dev` session is running, its file watcher commits and pushes
8
- * continuously, so the working tree, the remote, and the preview stay in
9
- * lockstep and there is nothing to warn about. But when there is no
10
- * session, or the session is `--no-sync` (manual git), a dirty or
11
- * ahead-of-remote working tree means the deploy will ship code the user
12
- * never saw in the preview. That is the case we warn on.
13
- *
14
- * The pure decision (`shouldWarnBeforeDeploy`) is separated from the git
15
- * and session IO so it can be unit-tested without a repo or session file.
16
- */
17
- import { type SessionState } from '../dev/session.js';
18
- export interface WorkingTreeStatus {
19
- /** `git status --porcelain` reported at least one entry (tracked or untracked). */
20
- dirty: boolean;
21
- /** Local HEAD has commits not present on `runwork/main`. */
22
- ahead: boolean;
23
- }
24
- /**
25
- * Whether the working tree diverges from what the preview shows.
26
- * "Dirty" = uncommitted changes; "ahead" = committed but unpushed.
27
- */
28
- export declare function isDirtyOrAhead(status: WorkingTreeStatus): boolean;
29
- /**
30
- * Decide whether to warn before deploying.
31
- *
32
- * We warn only when the tree diverges from the preview AND no
33
- * auto-syncing dev session is keeping things in lockstep. A live session
34
- * whose `noSync` is not true owns commits/pushes, so it is suppressed; a
35
- * `noSync` session (or no session at all) does not, so we warn.
36
- */
37
- export declare function shouldWarnBeforeDeploy(status: WorkingTreeStatus, session: SessionState): boolean;
38
- /**
39
- * Probe the working tree via git. `dirty` includes untracked files (a new
40
- * file the user added is still not in the preview). `ahead` counts local
41
- * commits not on `runwork/main`; a missing remote ref is treated as not
42
- * ahead (no baseline to compare against, and the push step handles it).
43
- */
44
- export declare function readWorkingTreeStatus(cwd: string): WorkingTreeStatus;
45
- /**
46
- * End-to-end guard decision against the real repo and session file.
47
- * Returns the status alongside the warn decision so callers can include
48
- * the specifics (dirty / ahead) in their message.
49
- */
50
- export declare function evaluateDeployGuard(cwd: string, appId: string): {
51
- status: WorkingTreeStatus;
52
- warn: boolean;
53
- };
@@ -1,78 +0,0 @@
1
- /**
2
- * Deploy guard: detect whether `runwork deploy` is about to commit and
3
- * deploy code that the preview does not reflect, and decide whether to
4
- * warn the user about it.
5
- *
6
- * The preview reflects the last *pushed* commit. When an auto-syncing
7
- * `runwork dev` session is running, its file watcher commits and pushes
8
- * continuously, so the working tree, the remote, and the preview stay in
9
- * lockstep and there is nothing to warn about. But when there is no
10
- * session, or the session is `--no-sync` (manual git), a dirty or
11
- * ahead-of-remote working tree means the deploy will ship code the user
12
- * never saw in the preview. That is the case we warn on.
13
- *
14
- * The pure decision (`shouldWarnBeforeDeploy`) is separated from the git
15
- * and session IO so it can be unit-tested without a repo or session file.
16
- */
17
- import { execFileSync } from '../utils/subprocess.js';
18
- import { getSessionState } from '../dev/session.js';
19
- /**
20
- * Whether the working tree diverges from what the preview shows.
21
- * "Dirty" = uncommitted changes; "ahead" = committed but unpushed.
22
- */
23
- export function isDirtyOrAhead(status) {
24
- return status.dirty || status.ahead;
25
- }
26
- /**
27
- * Decide whether to warn before deploying.
28
- *
29
- * We warn only when the tree diverges from the preview AND no
30
- * auto-syncing dev session is keeping things in lockstep. A live session
31
- * whose `noSync` is not true owns commits/pushes, so it is suppressed; a
32
- * `noSync` session (or no session at all) does not, so we warn.
33
- */
34
- export function shouldWarnBeforeDeploy(status, session) {
35
- if (!isDirtyOrAhead(status))
36
- return false;
37
- if (session.state === 'alive' && session.file.noSync !== true) {
38
- // An auto-syncing watcher keeps the preview in lockstep with the tree.
39
- return false;
40
- }
41
- return true;
42
- }
43
- /**
44
- * Probe the working tree via git. `dirty` includes untracked files (a new
45
- * file the user added is still not in the preview). `ahead` counts local
46
- * commits not on `runwork/main`; a missing remote ref is treated as not
47
- * ahead (no baseline to compare against, and the push step handles it).
48
- */
49
- export function readWorkingTreeStatus(cwd) {
50
- let dirty = false;
51
- try {
52
- const porcelain = execFileSync('git', ['status', '--porcelain'], { cwd, encoding: 'utf-8' });
53
- dirty = porcelain.trim().length > 0;
54
- }
55
- catch {
56
- // Not a git repo yet, or git unavailable. Nothing meaningful to warn about.
57
- }
58
- let ahead = false;
59
- try {
60
- const count = execFileSync('git', ['rev-list', '--count', 'runwork/main..HEAD'], { cwd, encoding: 'utf-8' });
61
- ahead = parseInt(count.trim(), 10) > 0;
62
- }
63
- catch {
64
- // `runwork/main` does not exist locally (never fetched) or no HEAD yet.
65
- // Treat as not ahead: there is no pushed baseline to diverge from.
66
- }
67
- return { dirty, ahead };
68
- }
69
- /**
70
- * End-to-end guard decision against the real repo and session file.
71
- * Returns the status alongside the warn decision so callers can include
72
- * the specifics (dirty / ahead) in their message.
73
- */
74
- export function evaluateDeployGuard(cwd, appId) {
75
- const status = readWorkingTreeStatus(cwd);
76
- const session = getSessionState(cwd, appId);
77
- return { status, warn: shouldWarnBeforeDeploy(status, session) };
78
- }
@@ -1,44 +0,0 @@
1
- import type { Credentials } from '../types.js';
2
- /**
3
- * Derive a human-friendly display name from an email address. Used when the
4
- * credentials store only has the email (which is the common case). e.g.
5
- * "oytun@motaword.com" -> "Oytun"; "anna.maria@example.com" -> "Anna Maria".
6
- */
7
- declare function deriveNameFromEmail(email: string): string;
8
- declare function pickIdentity(creds?: Credentials | null): {
9
- email: string;
10
- name: string;
11
- };
12
- /**
13
- * Ensure the repository at `cwd` has a usable git identity (user.email and
14
- * user.name) and that, whenever possible, commits are attributed to the
15
- * authenticated Runwork user.
16
- *
17
- * Precedence:
18
- * 1. If we have usable Runwork credentials, always write local-scoped
19
- * `user.email` / `user.name` from those credentials. Commits to a
20
- * Runwork remote should be attributable to the logged-in Runwork user,
21
- * not to whatever generic identity the developer uses for unrelated
22
- * personal repos.
23
- * 2. If credentials are missing or are an unusable placeholder
24
- * (e.g. API-key login), fall back to any existing global / system
25
- * configuration so the user's pre-existing identity still works.
26
- * 3. If neither credentials nor any existing config are available, write a
27
- * synthetic local identity so the inevitable `git commit` does not fail
28
- * on a fresh Windows / minimal-container install with the classic
29
- * `unable to auto-detect email address` error.
30
- *
31
- * Local scope (`git config --local`) is mandatory: we never touch the user's
32
- * global config so we cannot disturb identities they use elsewhere.
33
- *
34
- * Safe to call multiple times; it short-circuits when the desired identity
35
- * is already in place.
36
- */
37
- export declare function ensureGitIdentity(cwd: string, creds?: Credentials | null): void;
38
- export declare const __testing: {
39
- deriveNameFromEmail: typeof deriveNameFromEmail;
40
- pickIdentity: typeof pickIdentity;
41
- FALLBACK_EMAIL: string;
42
- FALLBACK_NAME: string;
43
- };
44
- export {};
@@ -1,133 +0,0 @@
1
- import { execFileSync } from '../utils/subprocess.js';
2
- /**
3
- * Default identity used when we cannot derive anything better from the
4
- * authenticated credentials. Local-scoped, never written to global config,
5
- * so it does not leak into other repositories on the user's machine.
6
- */
7
- const FALLBACK_EMAIL = 'runwork-cli@runwork.local';
8
- const FALLBACK_NAME = 'Runwork User';
9
- /**
10
- * Derive a human-friendly display name from an email address. Used when the
11
- * credentials store only has the email (which is the common case). e.g.
12
- * "oytun@motaword.com" -> "Oytun"; "anna.maria@example.com" -> "Anna Maria".
13
- */
14
- function deriveNameFromEmail(email) {
15
- const local = email.split('@')[0] ?? '';
16
- if (!local)
17
- return FALLBACK_NAME;
18
- const cleaned = local.replace(/[._+-]+/g, ' ').trim();
19
- if (!cleaned)
20
- return FALLBACK_NAME;
21
- return cleaned
22
- .split(/\s+/)
23
- .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
24
- .join(' ');
25
- }
26
- function isUsableEmail(value) {
27
- if (!value)
28
- return false;
29
- // Reject the "api-key-auth" placeholder used by API-key login flows.
30
- if (!value.includes('@'))
31
- return false;
32
- return true;
33
- }
34
- function pickIdentity(creds) {
35
- const email = isUsableEmail(creds?.email) ? creds.email : FALLBACK_EMAIL;
36
- const name = email === FALLBACK_EMAIL ? FALLBACK_NAME : deriveNameFromEmail(email);
37
- return { email, name };
38
- }
39
- function readGitConfig(cwd, key) {
40
- try {
41
- const value = execFileSync('git', ['config', '--get', key], { cwd, stdio: ['ignore', 'pipe', 'ignore'] });
42
- return value.toString('utf-8').trim();
43
- }
44
- catch {
45
- return '';
46
- }
47
- }
48
- function readLocalGitConfig(cwd, key) {
49
- try {
50
- const value = execFileSync('git', ['config', '--local', '--get', key], { cwd, stdio: ['ignore', 'pipe', 'ignore'] });
51
- return value.toString('utf-8').trim();
52
- }
53
- catch {
54
- return '';
55
- }
56
- }
57
- /**
58
- * Ensure the repository at `cwd` has a usable git identity (user.email and
59
- * user.name) and that, whenever possible, commits are attributed to the
60
- * authenticated Runwork user.
61
- *
62
- * Precedence:
63
- * 1. If we have usable Runwork credentials, always write local-scoped
64
- * `user.email` / `user.name` from those credentials. Commits to a
65
- * Runwork remote should be attributable to the logged-in Runwork user,
66
- * not to whatever generic identity the developer uses for unrelated
67
- * personal repos.
68
- * 2. If credentials are missing or are an unusable placeholder
69
- * (e.g. API-key login), fall back to any existing global / system
70
- * configuration so the user's pre-existing identity still works.
71
- * 3. If neither credentials nor any existing config are available, write a
72
- * synthetic local identity so the inevitable `git commit` does not fail
73
- * on a fresh Windows / minimal-container install with the classic
74
- * `unable to auto-detect email address` error.
75
- *
76
- * Local scope (`git config --local`) is mandatory: we never touch the user's
77
- * global config so we cannot disturb identities they use elsewhere.
78
- *
79
- * Safe to call multiple times; it short-circuits when the desired identity
80
- * is already in place.
81
- */
82
- export function ensureGitIdentity(cwd, creds) {
83
- // Only act on actual git repos; refuse silently if `cwd` has no .git.
84
- try {
85
- execFileSync('git', ['rev-parse', '--git-dir'], { cwd, stdio: 'pipe' });
86
- }
87
- catch {
88
- return;
89
- }
90
- const credsUsable = isUsableEmail(creds?.email);
91
- // Path 1: real Runwork credentials -- always overwrite local config so the
92
- // commit is attributed to the Runwork user, regardless of global state.
93
- if (credsUsable) {
94
- const { email, name } = pickIdentity(creds);
95
- const existingLocalEmail = readLocalGitConfig(cwd, 'user.email');
96
- const existingLocalName = readLocalGitConfig(cwd, 'user.name');
97
- if (existingLocalEmail !== email) {
98
- try {
99
- execFileSync('git', ['config', '--local', 'user.email', email], { cwd, stdio: 'pipe' });
100
- }
101
- catch { /* read-only fs */ }
102
- }
103
- if (existingLocalName !== name) {
104
- try {
105
- execFileSync('git', ['config', '--local', 'user.name', name], { cwd, stdio: 'pipe' });
106
- }
107
- catch { /* read-only fs */ }
108
- }
109
- return;
110
- }
111
- // Path 2: no usable creds. Respect any pre-existing identity (global/local).
112
- const existingEmail = readGitConfig(cwd, 'user.email');
113
- const existingName = readGitConfig(cwd, 'user.name');
114
- if (existingEmail && existingName)
115
- return;
116
- // Path 3: no creds AND no existing identity -- seed a synthetic fallback
117
- // so commits do not fail on a fresh machine.
118
- const { email, name } = pickIdentity(creds);
119
- if (!existingEmail) {
120
- try {
121
- execFileSync('git', ['config', '--local', 'user.email', email], { cwd, stdio: 'pipe' });
122
- }
123
- catch { /* read-only fs */ }
124
- }
125
- if (!existingName) {
126
- try {
127
- execFileSync('git', ['config', '--local', 'user.name', name], { cwd, stdio: 'pipe' });
128
- }
129
- catch { /* read-only fs */ }
130
- }
131
- }
132
- // Exported for unit tests so we do not have to re-derive expectations there.
133
- export const __testing = { deriveNameFromEmail, pickIdentity, FALLBACK_EMAIL, FALLBACK_NAME };
@@ -1,57 +0,0 @@
1
- export type GitSource = 'PATH' | 'where' | 'registry' | 'canonical';
2
- export interface GitProbe {
3
- installed: boolean;
4
- /** Trimmed `git --version` output when detected; undefined otherwise. */
5
- version?: string;
6
- /** Resolved binary path; 'git' when bare PATH lookup worked, absolute when discovered via fallback. */
7
- path?: string;
8
- /** How we resolved the binary -- useful for `runwork doctor --verbose` diagnostics. */
9
- source?: GitSource;
10
- /** Underlying error for diagnostics (most often ENOENT on a missing git binary). */
11
- error?: NodeJS.ErrnoException;
12
- }
13
- /**
14
- * Probe whether `git` is callable from this process.
15
- *
16
- * Strategy:
17
- * 1. Try a bare `git --version` -- the common path on macOS, Linux, and
18
- * most Windows installs.
19
- * 2. On Windows, fall back to `where.exe git` (uses the same PATH +
20
- * PATHEXT rules cmd.exe applies, which are more permissive than
21
- * Bun's spawn lookup in standalone-compiled binaries).
22
- * 3. On Windows, finally probe canonical install paths under
23
- * %ProgramFiles%, %ProgramFiles(x86)%, %LOCALAPPDATA%\Programs.
24
- *
25
- * When step 2 or 3 succeeds, we prepend the resolved directory to
26
- * process.env.PATH so the ~50 other call sites that do
27
- * `execFileSync('git', ...)` automatically benefit, without rewriting
28
- * each one. Result is cached for the lifetime of the process.
29
- */
30
- export declare function probeGit(): GitProbe;
31
- /**
32
- * Reset the cached probe result. Exposed for tests and for `runwork doctor`
33
- * when it wants to re-check after a guided install.
34
- */
35
- export declare function resetGitProbeCache(): void;
36
- /**
37
- * Extract a short numeric version (e.g. "2.43.0") from a `git --version`
38
- * output line. Returns null if no number could be parsed.
39
- */
40
- export declare function parseGitVersion(versionLine: string | undefined): string | null;
41
- /**
42
- * Build a beginner-friendly message explaining how to recover from a missing
43
- * git binary. Includes a Windows-specific hint because the most common
44
- * scenario there is "winget install Git.Git just succeeded but this shell's
45
- * PATH was cached at launch" -- restarting the shell fixes it without a
46
- * second install attempt.
47
- *
48
- * If a probe error is supplied, the underlying message is appended so users
49
- * can see *why* detection failed (ENOENT vs EACCES vs something else).
50
- */
51
- export declare function buildMissingGitMessage(commandName: string, probe?: GitProbe): string;
52
- /**
53
- * Convenience wrapper for command entry points: probe git, and if it's
54
- * missing, print the beginner-friendly message and exit with code 1.
55
- * Returns void on success so callers can early-return on failure.
56
- */
57
- export declare function requireGit(commandName: string): void;