runwork 0.15.0 → 0.15.2

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