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,280 +0,0 @@
1
- import { describe, it, expect, beforeEach, vi } from 'vitest';
2
- vi.mock('fs', () => ({
3
- existsSync: vi.fn(),
4
- readdirSync: vi.fn(),
5
- readFileSync: vi.fn(),
6
- statSync: vi.fn(),
7
- writeFileSync: vi.fn(),
8
- mkdirSync: vi.fn(),
9
- }));
10
- vi.mock('os', () => ({
11
- homedir: vi.fn(() => '/mock/home'),
12
- platform: vi.fn(() => 'darwin'),
13
- }));
14
- // Mock the utility imports so the module loads cleanly
15
- vi.mock('../utils/json-config.js', () => ({
16
- mergeJsonMcpServers: vi.fn(),
17
- readJsonConfig: vi.fn(() => ({})),
18
- writeJsonConfig: vi.fn(),
19
- }));
20
- import { existsSync, readdirSync, readFileSync, statSync } from 'fs';
21
- import { ClaudeDesktopAdapter } from '../claude-desktop.js';
22
- import * as path from 'path';
23
- const CLAUDE_APP_DIR = '/mock/home/Library/Application Support/Claude';
24
- const AGENT_SESSIONS_DIR = `${CLAUDE_APP_DIR}/local-agent-mode-sessions`;
25
- const CODE_SESSIONS_DIR = `${CLAUDE_APP_DIR}/claude-code-sessions`;
26
- const SCHEDULED_TASKS_PATH = `${CLAUDE_APP_DIR}/scheduled-tasks.json`;
27
- const SDK_VERSION_PATH = `${CLAUDE_APP_DIR}/claude-code/sdk-version`;
28
- // Fixture data
29
- const SESSION_1 = JSON.stringify({
30
- sessionId: 'test-session-1',
31
- title: 'Test coding session',
32
- model: 'claude-opus-4-6',
33
- createdAt: 1711929600000,
34
- lastActivityAt: 1711933200000,
35
- isArchived: false,
36
- cwd: '/test/project',
37
- memoryEnabled: true,
38
- enabledMcpTools: { 'tool-a': {}, 'tool-b': {}, 'tool-c': {} },
39
- });
40
- const SESSION_2 = JSON.stringify({
41
- sessionId: 'test-session-2',
42
- title: 'Research session',
43
- model: 'claude-sonnet-4-6',
44
- createdAt: 1712000000000,
45
- lastActivityAt: 1712003600000,
46
- isArchived: false,
47
- cwd: '/test/other',
48
- memoryEnabled: true,
49
- });
50
- const SCHEDULED_TASKS = JSON.stringify([
51
- {
52
- name: 'daily-research',
53
- createdAt: '2026-03-01T00:00:00Z',
54
- lastRunAt: '2026-03-30T06:00:00Z',
55
- lastScheduledFor: '2026-03-30T06:00:00Z',
56
- },
57
- ]);
58
- // Helper to set up the typical org/user directory structure
59
- function setupSessionDirs(baseDir, sessions) {
60
- const orgIds = [...new Set(sessions.map(s => s.orgId))];
61
- const userIds = [...new Set(sessions.map(s => `${s.orgId}/${s.userId}`))];
62
- readdirSync.mockImplementation((dir) => {
63
- if (dir === baseDir)
64
- return orgIds;
65
- for (const org of orgIds) {
66
- if (dir === path.join(baseDir, org)) {
67
- // Deduplicate userIds within this org
68
- return [...new Set(sessions.filter(s => s.orgId === org).map(s => s.userId))];
69
- }
70
- }
71
- for (const uid of userIds) {
72
- if (dir === path.join(baseDir, uid)) {
73
- return sessions.filter(s => `${s.orgId}/${s.userId}` === uid).map(s => s.fileName);
74
- }
75
- }
76
- return [];
77
- });
78
- statSync.mockImplementation(() => ({
79
- isDirectory: () => true,
80
- }));
81
- readFileSync.mockImplementation((filePath) => {
82
- for (const s of sessions) {
83
- if (filePath === path.join(baseDir, s.orgId, s.userId, s.fileName)) {
84
- return s.content;
85
- }
86
- }
87
- if (filePath === SCHEDULED_TASKS_PATH)
88
- return SCHEDULED_TASKS;
89
- if (filePath === SDK_VERSION_PATH)
90
- return '1.2.3\n';
91
- return '';
92
- });
93
- }
94
- describe('ClaudeDesktopAdapter.readUsageStats', () => {
95
- let adapter;
96
- beforeEach(() => {
97
- vi.restoreAllMocks();
98
- adapter = new ClaudeDesktopAdapter();
99
- // Default: Claude app dir exists
100
- existsSync.mockImplementation((p) => {
101
- if (p === CLAUDE_APP_DIR)
102
- return true;
103
- return false;
104
- });
105
- });
106
- it('reads and counts sessions across org/user directories', async () => {
107
- existsSync.mockImplementation((p) => {
108
- if (p === CLAUDE_APP_DIR)
109
- return true;
110
- if (p === AGENT_SESSIONS_DIR)
111
- return true;
112
- return false;
113
- });
114
- setupSessionDirs(AGENT_SESSIONS_DIR, [
115
- { orgId: 'org1', userId: 'user1', fileName: 'session1.json', content: SESSION_1 },
116
- { orgId: 'org1', userId: 'user2', fileName: 'session2.json', content: SESSION_2 },
117
- ]);
118
- const result = await adapter.readUsageStats(null);
119
- expect(result).not.toBeNull();
120
- expect(result.sessionCount).toBe(2);
121
- expect(result.hasNewActivity).toBe(true);
122
- });
123
- it('filters sessions by lastSyncAt', async () => {
124
- existsSync.mockImplementation((p) => {
125
- if (p === CLAUDE_APP_DIR)
126
- return true;
127
- if (p === AGENT_SESSIONS_DIR)
128
- return true;
129
- return false;
130
- });
131
- setupSessionDirs(AGENT_SESSIONS_DIR, [
132
- { orgId: 'org1', userId: 'user1', fileName: 'session1.json', content: SESSION_1 },
133
- { orgId: 'org1', userId: 'user1', fileName: 'session2.json', content: SESSION_2 },
134
- ]);
135
- // lastSyncAt between session1 and session2
136
- const syncAt = new Date(1711940000000).toISOString();
137
- const result = await adapter.readUsageStats(syncAt);
138
- expect(result).not.toBeNull();
139
- // Only session2 (lastActivityAt 1712003600000) is after syncAt
140
- expect(result.sessionCount).toBe(1);
141
- });
142
- it('collects unique models used', async () => {
143
- existsSync.mockImplementation((p) => {
144
- if (p === CLAUDE_APP_DIR)
145
- return true;
146
- if (p === AGENT_SESSIONS_DIR)
147
- return true;
148
- return false;
149
- });
150
- setupSessionDirs(AGENT_SESSIONS_DIR, [
151
- { orgId: 'org1', userId: 'user1', fileName: 's1.json', content: SESSION_1 },
152
- { orgId: 'org1', userId: 'user1', fileName: 's2.json', content: SESSION_2 },
153
- ]);
154
- const result = await adapter.readUsageStats(null);
155
- expect(result).not.toBeNull();
156
- expect(result.modelsUsed).toContain('claude-opus-4-6');
157
- expect(result.modelsUsed).toContain('claude-sonnet-4-6');
158
- expect(result.modelsUsed.length).toBe(2);
159
- });
160
- it('counts max MCP tools from enabledMcpTools', async () => {
161
- existsSync.mockImplementation((p) => {
162
- if (p === CLAUDE_APP_DIR)
163
- return true;
164
- if (p === AGENT_SESSIONS_DIR)
165
- return true;
166
- return false;
167
- });
168
- setupSessionDirs(AGENT_SESSIONS_DIR, [
169
- { orgId: 'org1', userId: 'user1', fileName: 's1.json', content: SESSION_1 },
170
- { orgId: 'org1', userId: 'user1', fileName: 's2.json', content: SESSION_2 },
171
- ]);
172
- const result = await adapter.readUsageStats(null);
173
- expect(result).not.toBeNull();
174
- // session1 has 3 MCP tools, session2 has none
175
- expect(result.mcpToolCount).toBe(3);
176
- });
177
- it('counts scheduled task runs since lastSyncAt', async () => {
178
- existsSync.mockImplementation((p) => {
179
- if (p === CLAUDE_APP_DIR)
180
- return true;
181
- if (p === SCHEDULED_TASKS_PATH)
182
- return true;
183
- return false;
184
- });
185
- readFileSync.mockImplementation((filePath) => {
186
- if (filePath === SCHEDULED_TASKS_PATH)
187
- return SCHEDULED_TASKS;
188
- return '';
189
- });
190
- // Sync before the task run
191
- const syncAt = new Date('2026-03-29T00:00:00Z').toISOString();
192
- const result = await adapter.readUsageStats(syncAt);
193
- expect(result).not.toBeNull();
194
- expect(result.extra).toBeDefined();
195
- expect(result.extra.scheduledTaskRuns).toBe(1);
196
- });
197
- it('returns null when Claude Desktop not installed', async () => {
198
- existsSync.mockReturnValue(false);
199
- const result = await adapter.readUsageStats(null);
200
- expect(result).toBeNull();
201
- });
202
- it('returns null when local-agent-mode-sessions directory is empty', async () => {
203
- existsSync.mockImplementation((p) => {
204
- if (p === CLAUDE_APP_DIR)
205
- return true;
206
- if (p === AGENT_SESSIONS_DIR)
207
- return true;
208
- return false;
209
- });
210
- readdirSync.mockReturnValue([]);
211
- const result = await adapter.readUsageStats(null);
212
- expect(result).toBeNull();
213
- });
214
- it('handles corrupted session JSON gracefully', async () => {
215
- existsSync.mockImplementation((p) => {
216
- if (p === CLAUDE_APP_DIR)
217
- return true;
218
- if (p === AGENT_SESSIONS_DIR)
219
- return true;
220
- return false;
221
- });
222
- setupSessionDirs(AGENT_SESSIONS_DIR, [
223
- { orgId: 'org1', userId: 'user1', fileName: 'bad.json', content: '{{{invalid json' },
224
- { orgId: 'org1', userId: 'user1', fileName: 'good.json', content: SESSION_1 },
225
- ]);
226
- const result = await adapter.readUsageStats(null);
227
- expect(result).not.toBeNull();
228
- // Only the valid session is counted
229
- expect(result.sessionCount).toBe(1);
230
- });
231
- it('handles session with missing fields', async () => {
232
- const minimalSession = JSON.stringify({
233
- sessionId: 'minimal',
234
- createdAt: 1712000000000,
235
- lastActivityAt: 1712003600000,
236
- });
237
- existsSync.mockImplementation((p) => {
238
- if (p === CLAUDE_APP_DIR)
239
- return true;
240
- if (p === AGENT_SESSIONS_DIR)
241
- return true;
242
- return false;
243
- });
244
- setupSessionDirs(AGENT_SESSIONS_DIR, [
245
- { orgId: 'org1', userId: 'user1', fileName: 's.json', content: minimalSession },
246
- ]);
247
- const result = await adapter.readUsageStats(null);
248
- expect(result).not.toBeNull();
249
- expect(result.sessionCount).toBe(1);
250
- // No model, no enabledMcpTools
251
- expect(result.modelsUsed).toEqual([]);
252
- expect(result.mcpToolCount).toBeUndefined();
253
- });
254
- });
255
- describe('ClaudeDesktopAdapter.readVersion', () => {
256
- let adapter;
257
- beforeEach(() => {
258
- vi.restoreAllMocks();
259
- adapter = new ClaudeDesktopAdapter();
260
- });
261
- it('returns version from sdk-version file', async () => {
262
- existsSync.mockImplementation((p) => {
263
- if (p === SDK_VERSION_PATH)
264
- return true;
265
- return false;
266
- });
267
- readFileSync.mockImplementation((filePath) => {
268
- if (filePath === SDK_VERSION_PATH)
269
- return '1.2.3\n';
270
- return '';
271
- });
272
- const version = await adapter.readVersion();
273
- expect(version).toBe('1.2.3');
274
- });
275
- it('returns null when file does not exist', async () => {
276
- existsSync.mockReturnValue(false);
277
- const version = await adapter.readVersion();
278
- expect(version).toBeNull();
279
- });
280
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,57 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
- import { existsSync, mkdtempSync, readFileSync, rmSync } from 'fs';
3
- import { join } from 'path';
4
- import { tmpdir } from 'os';
5
- let mockHomeDir = '/tmp/runwork-cli-codex-instructions-tests';
6
- vi.mock('os', async () => {
7
- const actual = await vi.importActual('os');
8
- return {
9
- ...actual,
10
- homedir: vi.fn(() => mockHomeDir),
11
- platform: vi.fn(() => 'darwin'),
12
- };
13
- });
14
- import { CodexAdapter } from '../codex.js';
15
- describe('CodexAdapter user-scope instruction file', () => {
16
- let tempHomeDir;
17
- beforeEach(() => {
18
- tempHomeDir = mkdtempSync(join(tmpdir(), 'runwork-codex-instr-'));
19
- mockHomeDir = tempHomeDir;
20
- });
21
- afterEach(() => {
22
- rmSync(tempHomeDir, { recursive: true, force: true });
23
- });
24
- it('writeInstructionHint writes to ~/.codex/AGENTS.md', async () => {
25
- const adapter = new CodexAdapter();
26
- await adapter.writeInstructionHint('<!-- runwork:start -->\nhello\n<!-- runwork:end -->', 'user');
27
- const agentsPath = join(tempHomeDir, '.codex', 'AGENTS.md');
28
- expect(existsSync(agentsPath)).toBe(true);
29
- expect(readFileSync(agentsPath, 'utf-8')).toContain('hello');
30
- // Legacy location must not be touched.
31
- expect(existsSync(join(tempHomeDir, '.codex', 'instructions.md'))).toBe(false);
32
- });
33
- it('writeTeamInstructions writes to ~/.codex/AGENTS.md', async () => {
34
- const adapter = new CodexAdapter();
35
- await adapter.writeTeamInstructions('team rule', 'user');
36
- const agentsPath = join(tempHomeDir, '.codex', 'AGENTS.md');
37
- expect(existsSync(agentsPath)).toBe(true);
38
- const contents = readFileSync(agentsPath, 'utf-8');
39
- expect(contents).toContain('<!-- runwork-team:start -->');
40
- expect(contents).toContain('team rule');
41
- expect(contents).toContain('<!-- runwork-team:end -->');
42
- expect(existsSync(join(tempHomeDir, '.codex', 'instructions.md'))).toBe(false);
43
- });
44
- it('cleanup removes both hint and team markers from ~/.codex/AGENTS.md', async () => {
45
- const adapter = new CodexAdapter();
46
- await adapter.writeInstructionHint('<!-- runwork:start -->\nhint body\n<!-- runwork:end -->', 'user');
47
- await adapter.writeTeamInstructions('team body', 'user');
48
- const agentsPath = join(tempHomeDir, '.codex', 'AGENTS.md');
49
- expect(readFileSync(agentsPath, 'utf-8')).toContain('hint body');
50
- await adapter.cleanup('user');
51
- const after = readFileSync(agentsPath, 'utf-8');
52
- expect(after).not.toContain('runwork:start');
53
- expect(after).not.toContain('runwork-team:start');
54
- expect(after).not.toContain('hint body');
55
- expect(after).not.toContain('team body');
56
- });
57
- });
@@ -1,82 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
- import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'fs';
3
- import { join } from 'path';
4
- import { tmpdir } from 'os';
5
- let mockHomeDir = '/tmp/runwork-cli-codex-min-perms-tests';
6
- vi.mock('os', async () => {
7
- const actual = await vi.importActual('os');
8
- return {
9
- ...actual,
10
- homedir: vi.fn(() => mockHomeDir),
11
- platform: vi.fn(() => 'darwin'),
12
- };
13
- });
14
- import { CodexAdapter } from '../codex.js';
15
- // Matches the orderings used in sync.ts. Keep these in sync with that file —
16
- // the whole point of these tests is to lock the floor semantics in place.
17
- const APPROVAL_FLOOR = {
18
- field: 'approval_policy',
19
- order: ['untrusted', 'on-request', 'on-failure', 'never'],
20
- minimum: 'on-request',
21
- };
22
- const SANDBOX_FLOOR = {
23
- field: 'sandbox_mode',
24
- order: ['read-only', 'workspace-write', 'danger-full-access'],
25
- minimum: 'workspace-write',
26
- };
27
- describe('CodexAdapter minimumPermissions floors', () => {
28
- let tempHomeDir;
29
- let configPath;
30
- beforeEach(() => {
31
- tempHomeDir = mkdtempSync(join(tmpdir(), 'runwork-codex-floors-'));
32
- mockHomeDir = tempHomeDir;
33
- mkdirSync(join(tempHomeDir, '.codex'), { recursive: true });
34
- configPath = join(tempHomeDir, '.codex', 'config.toml');
35
- });
36
- afterEach(() => {
37
- rmSync(tempHomeDir, { recursive: true, force: true });
38
- });
39
- function readConfig() {
40
- return existsSync(configPath) ? readFileSync(configPath, 'utf-8') : '';
41
- }
42
- it('preserves danger-full-access (more permissive than the floor)', async () => {
43
- writeFileSync(configPath, `sandbox_mode = "danger-full-access"\n`);
44
- const adapter = new CodexAdapter();
45
- await adapter.writeAgentConfig({ minimumPermissions: [SANDBOX_FLOOR] }, 'user');
46
- expect(readConfig()).toContain('sandbox_mode = "danger-full-access"');
47
- });
48
- it('preserves "never" approval_policy (more permissive than the floor)', async () => {
49
- writeFileSync(configPath, `approval_policy = "never"\n`);
50
- const adapter = new CodexAdapter();
51
- await adapter.writeAgentConfig({ minimumPermissions: [APPROVAL_FLOOR] }, 'user');
52
- expect(readConfig()).toContain('approval_policy = "never"');
53
- });
54
- it('preserves "on-failure" approval_policy (between floor and "never")', async () => {
55
- // Regression for the case where on-failure was missing from the order
56
- // array, making it look "unknown" and triggering an unwanted downgrade.
57
- writeFileSync(configPath, `approval_policy = "on-failure"\n`);
58
- const adapter = new CodexAdapter();
59
- await adapter.writeAgentConfig({ minimumPermissions: [APPROVAL_FLOOR] }, 'user');
60
- expect(readConfig()).toContain('approval_policy = "on-failure"');
61
- });
62
- it('upgrades restrictive "read-only" sandbox_mode to the floor', async () => {
63
- writeFileSync(configPath, `sandbox_mode = "read-only"\n`);
64
- const adapter = new CodexAdapter();
65
- await adapter.writeAgentConfig({ minimumPermissions: [SANDBOX_FLOOR] }, 'user');
66
- expect(readConfig()).toContain('sandbox_mode = "workspace-write"');
67
- });
68
- it('upgrades restrictive "untrusted" approval_policy to the floor', async () => {
69
- writeFileSync(configPath, `approval_policy = "untrusted"\n`);
70
- const adapter = new CodexAdapter();
71
- await adapter.writeAgentConfig({ minimumPermissions: [APPROVAL_FLOOR] }, 'user');
72
- expect(readConfig()).toContain('approval_policy = "on-request"');
73
- });
74
- it('sets the floor when the field is absent', async () => {
75
- writeFileSync(configPath, `model = "gpt-5"\n`);
76
- const adapter = new CodexAdapter();
77
- await adapter.writeAgentConfig({ minimumPermissions: [APPROVAL_FLOOR, SANDBOX_FLOOR] }, 'user');
78
- const content = readConfig();
79
- expect(content).toContain('approval_policy = "on-request"');
80
- expect(content).toContain('sandbox_mode = "workspace-write"');
81
- });
82
- });
@@ -1 +0,0 @@
1
- export {};