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,366 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
- // Mocks must be declared before imports of the module under test so vitest
3
- // hoists them above the static import.
4
- vi.mock('child_process', async () => {
5
- const actual = await vi.importActual('child_process');
6
- return { ...actual, execFileSync: vi.fn() };
7
- });
8
- vi.mock('fs', async () => {
9
- const actual = await vi.importActual('fs');
10
- return { ...actual, existsSync: vi.fn() };
11
- });
12
- vi.mock('os', async () => {
13
- const actual = await vi.importActual('os');
14
- return { ...actual, homedir: vi.fn(() => 'C:\\Users\\test') };
15
- });
16
- import { execFileSync } from 'child_process';
17
- import { existsSync } from 'fs';
18
- import { probeGit, resetGitProbeCache, buildMissingGitMessage, parseGitVersion, } from '../preflight.js';
19
- const mockedExec = vi.mocked(execFileSync);
20
- const mockedExists = vi.mocked(existsSync);
21
- function enoent(file) {
22
- const err = new Error(`spawn ${file} ENOENT`);
23
- err.code = 'ENOENT';
24
- err.errno = -2;
25
- err.syscall = `spawn ${file}`;
26
- err.path = file;
27
- return err;
28
- }
29
- describe('probeGit -- Windows fallback resolution', () => {
30
- let originalPlatform;
31
- let originalPath;
32
- let originalProgramFiles;
33
- let originalProgramFilesX86;
34
- let originalLocalAppData;
35
- beforeEach(() => {
36
- resetGitProbeCache();
37
- originalPlatform = Object.getOwnPropertyDescriptor(process, 'platform');
38
- Object.defineProperty(process, 'platform', { value: 'win32', writable: true, configurable: true });
39
- originalPath = process.env.PATH;
40
- originalProgramFiles = process.env.ProgramFiles;
41
- originalProgramFilesX86 = process.env['ProgramFiles(x86)'];
42
- originalLocalAppData = process.env.LOCALAPPDATA;
43
- process.env.PATH = 'C:\\Windows\\system32;C:\\Windows';
44
- process.env.ProgramFiles = 'C:\\Program Files';
45
- process.env['ProgramFiles(x86)'] = 'C:\\Program Files (x86)';
46
- process.env.LOCALAPPDATA = 'C:\\Users\\test\\AppData\\Local';
47
- mockedExec.mockReset();
48
- mockedExists.mockReset();
49
- });
50
- afterEach(() => {
51
- if (originalPlatform)
52
- Object.defineProperty(process, 'platform', originalPlatform);
53
- if (originalPath !== undefined)
54
- process.env.PATH = originalPath;
55
- else
56
- delete process.env.PATH;
57
- if (originalProgramFiles !== undefined)
58
- process.env.ProgramFiles = originalProgramFiles;
59
- else
60
- delete process.env.ProgramFiles;
61
- if (originalProgramFilesX86 !== undefined)
62
- process.env['ProgramFiles(x86)'] = originalProgramFilesX86;
63
- else
64
- delete process.env['ProgramFiles(x86)'];
65
- if (originalLocalAppData !== undefined)
66
- process.env.LOCALAPPDATA = originalLocalAppData;
67
- else
68
- delete process.env.LOCALAPPDATA;
69
- delete process.env.Path;
70
- });
71
- it('resolves via where.exe when bare git lookup fails', () => {
72
- const realGitPath = 'C:\\Program Files\\Git\\cmd\\git.exe';
73
- mockedExec.mockImplementation((file) => {
74
- if (file === 'git')
75
- throw enoent('git');
76
- if (file === 'where.exe')
77
- return Buffer.from(`${realGitPath}\r\n`);
78
- if (file === realGitPath)
79
- return Buffer.from('git version 2.43.0.windows.1');
80
- throw enoent(file);
81
- });
82
- mockedExists.mockImplementation((p) => p === realGitPath);
83
- const probe = probeGit();
84
- expect(probe.installed).toBe(true);
85
- expect(probe.source).toBe('where');
86
- expect(probe.path).toBe(realGitPath);
87
- expect(probe.version).toContain('git version 2.43.0');
88
- });
89
- it('prepends the resolved git directory to PATH', () => {
90
- const realGitPath = 'C:\\Program Files\\Git\\cmd\\git.exe';
91
- mockedExec.mockImplementation((file) => {
92
- if (file === 'git')
93
- throw enoent('git');
94
- if (file === 'where.exe')
95
- return Buffer.from(`${realGitPath}\r\n`);
96
- if (file === realGitPath)
97
- return Buffer.from('git version 2.43.0');
98
- throw enoent(file);
99
- });
100
- mockedExists.mockReturnValue(true);
101
- probeGit();
102
- expect(process.env.PATH?.split(';')[0]).toBe('C:\\Program Files\\Git\\cmd');
103
- });
104
- it('also mirrors the new value into Path (case variant) when present', () => {
105
- process.env.Path = process.env.PATH; // simulate Windows where Path is set
106
- const realGitPath = 'C:\\Program Files\\Git\\cmd\\git.exe';
107
- mockedExec.mockImplementation((file) => {
108
- if (file === 'git')
109
- throw enoent('git');
110
- if (file === 'where.exe')
111
- return Buffer.from(`${realGitPath}\r\n`);
112
- if (file === realGitPath)
113
- return Buffer.from('git version 2.43.0');
114
- throw enoent(file);
115
- });
116
- mockedExists.mockReturnValue(true);
117
- probeGit();
118
- expect(process.env.Path).toBe(process.env.PATH);
119
- });
120
- it('prefers .exe match when where.exe lists multiple candidates', () => {
121
- const exePath = 'C:\\Program Files\\Git\\cmd\\git.exe';
122
- const cmdShim = 'C:\\Users\\test\\.runwork\\bin\\git';
123
- mockedExec.mockImplementation((file) => {
124
- if (file === 'git')
125
- throw enoent('git');
126
- if (file === 'where.exe')
127
- return Buffer.from(`${cmdShim}\r\n${exePath}\r\n`);
128
- if (file === exePath)
129
- return Buffer.from('git version 2.43.0');
130
- throw enoent(file);
131
- });
132
- mockedExists.mockImplementation((p) => p === exePath || p === cmdShim);
133
- const probe = probeGit();
134
- expect(probe.path).toBe(exePath);
135
- });
136
- it('falls back to the registry when where.exe fails', () => {
137
- const installRoot = 'C:\\Program Files\\Git';
138
- const gitExe = 'C:\\Program Files\\Git\\cmd\\git.exe';
139
- mockedExec.mockImplementation((file, args) => {
140
- if (file === 'git')
141
- throw enoent('git');
142
- if (file === 'where.exe')
143
- throw enoent('where.exe');
144
- if (file === 'reg.exe') {
145
- // Only HKLM has a value; HKCU returns nothing (we throw to mimic).
146
- const key = args?.[1] ?? '';
147
- if (key.includes('HKLM')) {
148
- return Buffer.from('HKEY_LOCAL_MACHINE\\SOFTWARE\\GitForWindows\r\n' +
149
- ` InstallPath REG_SZ ${installRoot}\r\n`);
150
- }
151
- throw enoent('reg.exe');
152
- }
153
- if (file === gitExe)
154
- return Buffer.from('git version 2.43.0');
155
- throw enoent(file);
156
- });
157
- mockedExists.mockImplementation((p) => p === gitExe);
158
- const probe = probeGit();
159
- expect(probe.installed).toBe(true);
160
- expect(probe.source).toBe('registry');
161
- expect(probe.path).toBe(gitExe);
162
- expect(process.env.PATH?.split(';')[0]).toBe('C:\\Program Files\\Git\\cmd');
163
- });
164
- it('honours HKCU\\Software\\GitForWindows when HKLM is empty', () => {
165
- const installRoot = 'C:\\Users\\test\\AppData\\Local\\Programs\\Git';
166
- const gitExe = 'C:\\Users\\test\\AppData\\Local\\Programs\\Git\\cmd\\git.exe';
167
- mockedExec.mockImplementation((file, args) => {
168
- if (file === 'git')
169
- throw enoent('git');
170
- if (file === 'where.exe')
171
- throw enoent('where.exe');
172
- if (file === 'reg.exe') {
173
- const key = args?.[1] ?? '';
174
- if (key.includes('HKLM'))
175
- throw enoent('reg.exe');
176
- if (key.includes('HKCU')) {
177
- return Buffer.from('HKEY_CURRENT_USER\\Software\\GitForWindows\r\n' +
178
- ` InstallPath REG_SZ ${installRoot}\r\n`);
179
- }
180
- throw enoent('reg.exe');
181
- }
182
- if (file === gitExe)
183
- return Buffer.from('git version 2.43.0');
184
- throw enoent(file);
185
- });
186
- mockedExists.mockImplementation((p) => p === gitExe);
187
- const probe = probeGit();
188
- expect(probe.installed).toBe(true);
189
- expect(probe.source).toBe('registry');
190
- expect(probe.path).toBe(gitExe);
191
- });
192
- it('falls back to canonical install path when where.exe and registry both fail', () => {
193
- const canonical = 'C:\\Program Files\\Git\\cmd\\git.exe';
194
- mockedExec.mockImplementation((file) => {
195
- if (file === 'git')
196
- throw enoent('git');
197
- if (file === 'where.exe')
198
- throw enoent('where.exe');
199
- if (file === 'reg.exe')
200
- throw enoent('reg.exe');
201
- if (file === canonical)
202
- return Buffer.from('git version 2.43.0');
203
- throw enoent(file);
204
- });
205
- mockedExists.mockImplementation((p) => p === canonical);
206
- const probe = probeGit();
207
- expect(probe.installed).toBe(true);
208
- expect(probe.source).toBe('canonical');
209
- expect(probe.path).toBe(canonical);
210
- expect(process.env.PATH?.split(';')[0]).toBe('C:\\Program Files\\Git\\cmd');
211
- });
212
- it('finds a portable MinGit dropped under ~/.runwork/tools/mingit', () => {
213
- const portable = 'C:\\Users\\test\\.runwork\\tools\\mingit\\cmd\\git.exe';
214
- mockedExec.mockImplementation((file) => {
215
- if (file === 'git')
216
- throw enoent('git');
217
- if (file === 'where.exe')
218
- throw enoent('where.exe');
219
- if (file === 'reg.exe')
220
- throw enoent('reg.exe');
221
- if (file === portable)
222
- return Buffer.from('git version 2.45.0.windows.1');
223
- throw enoent(file);
224
- });
225
- mockedExists.mockImplementation((p) => p === portable);
226
- const probe = probeGit();
227
- expect(probe.installed).toBe(true);
228
- expect(probe.source).toBe('canonical');
229
- expect(probe.path).toBe(portable);
230
- });
231
- it('finds a Scoop install at ~/scoop/apps/git/current/cmd/git.exe', () => {
232
- const scoop = 'C:\\Users\\test\\scoop\\apps\\git\\current\\cmd\\git.exe';
233
- mockedExec.mockImplementation((file) => {
234
- if (file === 'git')
235
- throw enoent('git');
236
- if (file === 'where.exe')
237
- throw enoent('where.exe');
238
- if (file === 'reg.exe')
239
- throw enoent('reg.exe');
240
- if (file === scoop)
241
- return Buffer.from('git version 2.45.0');
242
- throw enoent(file);
243
- });
244
- mockedExists.mockImplementation((p) => p === scoop);
245
- const probe = probeGit();
246
- expect(probe.installed).toBe(true);
247
- expect(probe.path).toBe(scoop);
248
- });
249
- it('returns installed=false when nothing resolves and preserves the bare-call error', () => {
250
- mockedExec.mockImplementation((file) => { throw enoent(file); });
251
- mockedExists.mockReturnValue(false);
252
- const probe = probeGit();
253
- expect(probe.installed).toBe(false);
254
- expect(probe.error?.code).toBe('ENOENT');
255
- expect(probe.error?.path).toBe('git');
256
- // No PATH side-effect when nothing was resolved.
257
- expect(process.env.PATH?.startsWith('C:\\Windows\\system32')).toBe(true);
258
- });
259
- it('caches the probe result across calls and stops re-spawning git', () => {
260
- const realGitPath = 'C:\\Program Files\\Git\\cmd\\git.exe';
261
- mockedExec.mockImplementation((file) => {
262
- if (file === 'git')
263
- throw enoent('git');
264
- if (file === 'where.exe')
265
- return Buffer.from(`${realGitPath}\r\n`);
266
- if (file === realGitPath)
267
- return Buffer.from('git version 2.43.0');
268
- throw enoent(file);
269
- });
270
- mockedExists.mockReturnValue(true);
271
- const first = probeGit();
272
- const callsAfterFirst = mockedExec.mock.calls.length;
273
- const second = probeGit();
274
- expect(second).toBe(first);
275
- expect(mockedExec.mock.calls.length).toBe(callsAfterFirst);
276
- });
277
- it('does not double-prepend PATH on repeat probes after a cache reset', () => {
278
- const realGitPath = 'C:\\Program Files\\Git\\cmd\\git.exe';
279
- mockedExec.mockImplementation((file) => {
280
- if (file === 'git')
281
- throw enoent('git');
282
- if (file === 'where.exe')
283
- return Buffer.from(`${realGitPath}\r\n`);
284
- if (file === realGitPath)
285
- return Buffer.from('git version 2.43.0');
286
- throw enoent(file);
287
- });
288
- mockedExists.mockReturnValue(true);
289
- probeGit();
290
- const pathAfterFirst = process.env.PATH;
291
- resetGitProbeCache();
292
- probeGit();
293
- expect(process.env.PATH).toBe(pathAfterFirst);
294
- });
295
- it('skips canonical paths whose env var is unset', () => {
296
- delete process.env.ProgramFiles;
297
- delete process.env['ProgramFiles(x86)'];
298
- delete process.env.LOCALAPPDATA;
299
- // Only the hard-coded "C:\\Program Files\\Git\\cmd\\git.exe" default
300
- // remains. Make existsSync reject it too -- nothing should resolve.
301
- mockedExec.mockImplementation((file) => { throw enoent(file); });
302
- mockedExists.mockReturnValue(false);
303
- const probe = probeGit();
304
- expect(probe.installed).toBe(false);
305
- });
306
- });
307
- describe('probeGit -- non-Windows hosts skip the fallback', () => {
308
- let originalPlatform;
309
- beforeEach(() => {
310
- resetGitProbeCache();
311
- originalPlatform = Object.getOwnPropertyDescriptor(process, 'platform');
312
- Object.defineProperty(process, 'platform', { value: 'darwin', writable: true, configurable: true });
313
- mockedExec.mockReset();
314
- mockedExists.mockReset();
315
- });
316
- afterEach(() => {
317
- if (originalPlatform)
318
- Object.defineProperty(process, 'platform', originalPlatform);
319
- });
320
- it('does not invoke where.exe on macOS when bare lookup fails', () => {
321
- mockedExec.mockImplementation((file) => { throw enoent(file); });
322
- mockedExists.mockReturnValue(true);
323
- const probe = probeGit();
324
- expect(probe.installed).toBe(false);
325
- const calledFiles = mockedExec.mock.calls.map((c) => c[0]);
326
- expect(calledFiles).toContain('git');
327
- expect(calledFiles).not.toContain('where.exe');
328
- });
329
- it('returns immediately on bare-call success without further probing', () => {
330
- mockedExec.mockImplementation((file) => {
331
- if (file === 'git')
332
- return Buffer.from('git version 2.45.0');
333
- throw enoent(file);
334
- });
335
- mockedExists.mockReturnValue(false);
336
- const probe = probeGit();
337
- expect(probe.installed).toBe(true);
338
- expect(probe.source).toBe('PATH');
339
- expect(probe.path).toBe('git');
340
- expect(mockedExists).not.toHaveBeenCalled();
341
- });
342
- });
343
- describe('parseGitVersion', () => {
344
- it('extracts a semver-ish number from `git --version` output', () => {
345
- expect(parseGitVersion('git version 2.43.0')).toBe('2.43.0');
346
- expect(parseGitVersion('git version 2.43.0.windows.1')).toBe('2.43.0');
347
- expect(parseGitVersion('git version 2.45')).toBe('2.45');
348
- });
349
- it('returns null for unparsable input', () => {
350
- expect(parseGitVersion(undefined)).toBeNull();
351
- expect(parseGitVersion('')).toBeNull();
352
- expect(parseGitVersion('not a version')).toBeNull();
353
- });
354
- });
355
- describe('buildMissingGitMessage with a probe error', () => {
356
- it('appends the underlying error message when one is present', () => {
357
- const err = new Error('spawn git ENOENT');
358
- err.code = 'ENOENT';
359
- const msg = buildMissingGitMessage('clone', { installed: false, error: err });
360
- expect(msg).toContain('Underlying error: spawn git ENOENT');
361
- });
362
- it('omits the underlying-error footer when no probe is supplied', () => {
363
- const msg = buildMissingGitMessage('clone');
364
- expect(msg).not.toContain('Underlying error');
365
- });
366
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,36 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { probeGit, buildMissingGitMessage } from '../preflight.js';
3
- describe('probeGit', () => {
4
- it('reports installed=true when git is on PATH (CI invariant)', () => {
5
- // The CLI test suite already shells out to git in many other tests, so
6
- // we treat git as a hard prerequisite for this package's own tests.
7
- const probe = probeGit();
8
- expect(probe.installed).toBe(true);
9
- expect(probe.version).toMatch(/^git version /);
10
- });
11
- });
12
- describe('buildMissingGitMessage', () => {
13
- it('mentions the failing command name', () => {
14
- const msg = buildMissingGitMessage('clone');
15
- expect(msg).toContain('runwork clone');
16
- });
17
- it('lists install hints for all three OSes', () => {
18
- const msg = buildMissingGitMessage('dev');
19
- expect(msg).toMatch(/macOS/);
20
- expect(msg).toMatch(/Windows/);
21
- expect(msg).toMatch(/Linux/);
22
- });
23
- it('ends with a verification command', () => {
24
- const msg = buildMissingGitMessage('init');
25
- expect(msg).toContain('git --version');
26
- });
27
- it('only includes the Windows-shell-PATH hint when running on Windows', () => {
28
- const msg = buildMissingGitMessage('clone');
29
- if (process.platform === 'win32') {
30
- expect(msg).toMatch(/cached when it opened/);
31
- }
32
- else {
33
- expect(msg).not.toMatch(/cached when it opened/);
34
- }
35
- });
36
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,26 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- vi.mock('child_process');
3
- const mockExecFileSync = (await import('child_process')).execFileSync;
4
- const { hardenRepoForRestrictedFs } = await import('../repo-config.js');
5
- describe('git/repo-config hardenRepoForRestrictedFs', () => {
6
- beforeEach(() => vi.clearAllMocks());
7
- it('disables gc.auto and maintenance.auto in the repo (local scope)', () => {
8
- mockExecFileSync.mockReturnValue(Buffer.from(''));
9
- hardenRepoForRestrictedFs('/repo');
10
- const configCalls = mockExecFileSync.mock.calls
11
- .filter((c) => c[0] === 'git' && c[1][0] === 'config')
12
- .map((c) => c[1].slice(1));
13
- expect(configCalls).toContainEqual(['gc.auto', '0']);
14
- expect(configCalls).toContainEqual(['maintenance.auto', 'false']);
15
- // Repo scope, not --global.
16
- expect(configCalls.every((args) => !args.includes('--global'))).toBe(true);
17
- // Run against the given cwd.
18
- for (const call of mockExecFileSync.mock.calls) {
19
- expect(call[2].cwd).toBe('/repo');
20
- }
21
- });
22
- it('never throws when git config fails (best-effort)', () => {
23
- mockExecFileSync.mockImplementation(() => { throw new Error('git unavailable'); });
24
- expect(() => hardenRepoForRestrictedFs('/repo')).not.toThrow();
25
- });
26
- });
@@ -1 +0,0 @@
1
- export {};