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,669 +0,0 @@
1
- /**
2
- * Unified agent registry (types + data + browser-safe lookups).
3
- *
4
- * This file is the SINGLE SOURCE OF TRUTH for every agent Runwork knows about:
5
- * CLI adapters read from here (via `./registry.js`), and the desktop app
6
- * re-exports from here (via the `@cli-agent-registry` path alias).
7
- *
8
- * Keep this file browser-safe: no `os`, `path`, `fs`, or other Node-only
9
- * imports. Node-only path resolvers live next to this file in `./registry.ts`.
10
- */
11
- // ---------------------------------------------------------------------------
12
- // Types
13
- // ---------------------------------------------------------------------------
14
- // ---------------------------------------------------------------------------
15
- // Registry
16
- // ---------------------------------------------------------------------------
17
- const AGENT_REGISTRY = [
18
- // === First-class agents (full Runwork support) ===
19
- {
20
- slug: 'claude-code',
21
- name: 'Claude Code',
22
- description: "Anthropic's AI coding agent for the terminal",
23
- category: 'cli',
24
- detection: { method: 'binary', target: 'claude' },
25
- launch: { cli: 'claude', cliAcceptsPrompt: true },
26
- logo: 'claude',
27
- downloadUrl: 'https://docs.anthropic.com/en/docs/claude-code',
28
- autoInstallable: true,
29
- skillsPaths: { global: '.claude/skills', project: '.claude/skills' },
30
- mcpConfigPath: '.claude/settings.json',
31
- instructionFile: { global: '.claude/CLAUDE.md', project: '.claude/CLAUDE.md' },
32
- mcpConfigKey: 'mcpServers',
33
- firstClass: true,
34
- resumeCapability: {
35
- mode: 'cli-resume',
36
- nativeBundleFormat: 'claude-jsonl',
37
- cliResumeCommand: 'claude --resume {uuid}',
38
- },
39
- quickStart: {
40
- launchHint: 'Open your terminal and type `claude`',
41
- skillCommand: '/skills',
42
- examplePrompts: [
43
- 'Use /skills to see what your workspace can do',
44
- 'What integrations does my team have?',
45
- ],
46
- },
47
- },
48
- {
49
- slug: 'claude-desktop',
50
- name: 'Claude Desktop',
51
- aliases: ['Claude Desktop (Cowork)', 'Cowork'],
52
- description: 'Claude as a desktop application',
53
- category: 'desktop',
54
- detection: {
55
- method: 'any',
56
- target: [
57
- { method: 'path', target: { macos: '/Applications/Claude.app' } },
58
- { method: 'windows-start-app', target: 'Claude' },
59
- ],
60
- },
61
- launch: { app: { macos: 'Claude', windows: 'Claude' } },
62
- logo: 'claude',
63
- downloadUrl: 'https://claude.ai/download',
64
- skillsPaths: { global: '.claude/skills', project: '.claude/skills' },
65
- mcpConfigPath: {
66
- macos: 'Library/Application Support/Claude/claude_desktop_config.json',
67
- windows: 'AppData/Roaming/Claude/claude_desktop_config.json',
68
- linux: '.config/Claude/claude_desktop_config.json',
69
- },
70
- mcpConfigKey: 'mcpServers',
71
- firstClass: true,
72
- resumeCapability: {
73
- mode: 'file-drop-only',
74
- nativeBundleFormat: 'claude-jsonl',
75
- manualOpenHint: 'Open Claude Desktop, switch to the Cowork tab, and the conversation will appear in your session history.',
76
- },
77
- quickStart: {
78
- launchHint: 'Open Claude Desktop',
79
- examplePrompts: [
80
- "What can my team's Runwork workspace do?",
81
- "Check my team's recent activity",
82
- ],
83
- },
84
- manualSetup: {
85
- // Must run after the `connecting` scene: Scene7Connecting is what
86
- // calls `runwork setup`, which writes the setup state that
87
- // `runwork build-plugin` reads. Putting this earlier breaks the
88
- // Download plugin button for first-time users.
89
- title: 'Install Runwork plugin',
90
- showAfter: 'connecting',
91
- downloadArtifact: {
92
- label: 'Download plugin',
93
- filename: 'runwork-plugin.zip',
94
- command: 'build-plugin',
95
- },
96
- steps: [
97
- { id: 'download', label: 'Click Download plugin above to save runwork-plugin.zip' },
98
- { id: 'open', label: "Open Claude Desktop and sign in if you haven't already" },
99
- { id: 'cowork', label: 'Go to the Cowork tab (top of the window)' },
100
- { id: 'customize', label: 'Click Customize in the sidebar' },
101
- { id: 'create-plugin', label: 'Click + next to Personal plugins, then Create plugin, then Upload plugin' },
102
- { id: 'pick-file', label: 'Select runwork-plugin.zip' },
103
- { id: 'add', label: 'Click Add to confirm' },
104
- { id: 'allow-network-go', label: 'Now go back and click your name at the bottom left, click Settings, go to Capabilities' },
105
- { id: 'allow-network', label: 'Scroll down and in Domain Allowlist panel, enable "Allow network egress", and then add "runwork.ai" and "*.runwork.ai" under "Additional allowed domains" so Cowork sessions can reach Runwork' },
106
- ],
107
- },
108
- },
109
- {
110
- slug: 'microsoft-copilot',
111
- name: 'Microsoft Copilot',
112
- description: 'AI assistant by Microsoft for everyday tasks',
113
- category: 'desktop',
114
- detection: {
115
- method: 'any',
116
- target: [
117
- { method: 'path', target: { macos: '/Applications/Microsoft Copilot.app' } },
118
- { method: 'windows-appx', target: 'Microsoft.Copilot' },
119
- ],
120
- },
121
- launch: { app: { macos: 'Microsoft Copilot', windows: 'Microsoft Copilot' } },
122
- logo: 'microsoft-copilot',
123
- downloadUrl: 'https://www.microsoft.com/en-us/microsoft-copilot/for-individuals/get-copilot',
124
- firstClass: true,
125
- quickStart: {
126
- launchHint: 'Open Microsoft Copilot',
127
- examplePrompts: [
128
- 'Help me brainstorm ideas for a project',
129
- 'Summarize this document for me',
130
- ],
131
- },
132
- },
133
- {
134
- slug: 'microsoft-365-copilot',
135
- name: 'Microsoft 365 Copilot',
136
- aliases: ['M365 Copilot'],
137
- description: 'AI assistant integrated with Microsoft 365 apps',
138
- category: 'desktop',
139
- detection: {
140
- method: 'any',
141
- target: [
142
- { method: 'path', target: { macos: '/Applications/Microsoft 365 Copilot.app' } },
143
- { method: 'windows-appx', target: 'Microsoft.M365Copilot' },
144
- ],
145
- },
146
- launch: { app: { macos: 'Microsoft 365 Copilot', windows: 'Microsoft 365 Copilot' } },
147
- logo: 'microsoft-copilot',
148
- downloadUrl: 'https://www.microsoft.com/en-us/microsoft-365-copilot/download-copilot-app',
149
- firstClass: true,
150
- quickStart: {
151
- launchHint: 'Open Microsoft 365 Copilot',
152
- examplePrompts: [
153
- 'Help me draft a project status update',
154
- 'Summarize the latest team emails',
155
- ],
156
- },
157
- },
158
- {
159
- slug: 'cursor',
160
- name: 'Cursor',
161
- description: 'Write and edit code with AI built into every keystroke, great for building features faster',
162
- category: 'ide',
163
- detection: {
164
- method: 'any',
165
- target: [
166
- { method: 'path', target: { macos: '/Applications/Cursor.app' } },
167
- { method: 'windows-start-app', target: 'Cursor' },
168
- ],
169
- },
170
- launch: { app: { macos: 'Cursor', windows: 'Cursor' }, cli: 'cursor' },
171
- logo: 'cursor',
172
- downloadUrl: 'https://cursor.com',
173
- skillsPaths: { global: '.cursor/skills', project: '.cursor/skills' },
174
- mcpConfigPath: '.cursor/mcp.json',
175
- instructionFile: { project: '.cursor/rules/runwork.mdc' },
176
- mcpConfigKey: 'mcpServers',
177
- skillFormat: 'mdc',
178
- firstClass: true,
179
- quickStart: {
180
- panelHint: 'Press Cmd+L for chat, or click the AI tab in the sidebar',
181
- skillCommand: 'Check .cursor/rules/ for workspace skills',
182
- examplePrompts: [
183
- 'Use Runwork tools to check team integrations',
184
- 'What workspace skills are available?',
185
- ],
186
- },
187
- },
188
- {
189
- // Codex desktop reads from ~/.codex (same directory as Codex CLI), so
190
- // CLI-side sync can install skills and MCP servers for the desktop app
191
- // even when the `codex` binary isn't on the user's PATH. Keep the
192
- // skillsPaths / instructionFile in lockstep with the `codex` entry.
193
- slug: 'codex-app',
194
- name: 'Codex',
195
- description: 'OpenAI desktop app for coding and agent workflows',
196
- category: 'desktop',
197
- detection: {
198
- method: 'any',
199
- target: [
200
- { method: 'path', target: { macos: '/Applications/Codex.app' } },
201
- { method: 'windows-appx', target: 'OpenAI.Codex' },
202
- ],
203
- },
204
- launch: { app: { macos: 'Codex', windows: 'Codex' } },
205
- logo: 'openai',
206
- downloadUrl: 'https://openai.com/codex/',
207
- skillsPaths: { global: '.codex/skills', project: '.agents/skills' },
208
- instructionFile: { global: '.codex/instructions.md', project: 'AGENTS.md' },
209
- firstClass: true,
210
- resumeCapability: {
211
- mode: 'file-drop-only',
212
- nativeBundleFormat: 'codex-rollout',
213
- manualOpenHint: 'Open Codex Desktop and the conversation will appear in your recent threads list.',
214
- },
215
- quickStart: {
216
- launchHint: 'Open Codex',
217
- examplePrompts: [
218
- 'Use my workspace skills and integrations',
219
- 'Check what tools my team has connected',
220
- ],
221
- },
222
- },
223
- {
224
- slug: 'codex',
225
- name: 'Codex CLI',
226
- description: "AI in your terminal by OpenAI, great for coding, debugging, and automating dev tasks",
227
- category: 'cli',
228
- detection: { method: 'binary', target: 'codex' },
229
- launch: { cli: 'codex', cliAcceptsPrompt: true },
230
- logo: 'openai',
231
- downloadUrl: 'https://github.com/openai/codex',
232
- skillsPaths: { global: '.codex/skills', project: '.agents/skills' },
233
- instructionFile: { global: '.codex/instructions.md', project: 'AGENTS.md' },
234
- firstClass: true,
235
- resumeCapability: {
236
- mode: 'cli-resume',
237
- nativeBundleFormat: 'codex-rollout',
238
- cliResumeCommand: 'codex resume {uuid}',
239
- },
240
- quickStart: {
241
- launchHint: 'Open your terminal and type `codex`',
242
- skillCommand: 'Check AGENTS.md for workspace skills',
243
- examplePrompts: [
244
- 'Use your skills to check workspace activity',
245
- 'What integrations does my team use?',
246
- ],
247
- },
248
- },
249
- {
250
- // ChatGPT Web. Connect-only: no local files. Shares one account/connector/
251
- // OAuth identity with `chatgpt-app` (family: 'chatgpt'). Launches in the
252
- // browser; chatgpt.com supports `?prompt=` for open + resume.
253
- slug: 'chatgpt',
254
- name: 'ChatGPT (Web)',
255
- aliases: ['ChatGPT'],
256
- description: "OpenAI's ChatGPT in the browser, connected to your workspace via MCP",
257
- category: 'web',
258
- family: 'chatgpt',
259
- detection: { method: 'always' },
260
- launch: { url: 'https://chatgpt.com/?prompt={prompt}' },
261
- logo: 'openai',
262
- downloadUrl: 'https://chatgpt.com',
263
- firstClass: true,
264
- resumeCapability: {
265
- mode: 'url-prompt',
266
- manualOpenHint: 'Opens ChatGPT with a prompt that fetches and continues the shared conversation via your Runwork workspace tools.',
267
- },
268
- quickStart: {
269
- launchHint: 'Open chatgpt.com',
270
- examplePrompts: [
271
- "What can my team's Runwork workspace do?",
272
- "Check my team's recent activity",
273
- ],
274
- },
275
- manualSetup: {
276
- title: 'Connect Runwork in ChatGPT',
277
- showAfter: 'connecting',
278
- copyValue: { label: 'Workspace MCP URL', token: '{mcpUrl}' },
279
- // Flat steps mirror the 'personal' variant as a safe fallback when no
280
- // plan is resolved. The onboarding UI prefers `variants` by plan.
281
- steps: [
282
- { id: 'open', label: 'Open chatgpt.com and sign in' },
283
- { id: 'settings-apps', label: 'Open the profile menu (bottom-left), then Settings, then Apps' },
284
- { id: 'dev-mode', label: 'Click "Advanced settings" and turn on "Developer mode" (skip if it is already on)' },
285
- { id: 'create-app', label: 'Go back to Apps and click "Create app"' },
286
- { id: 'fill', label: 'In the New App dialog, set Name to "Runwork", keep Connection on "Server URL", and paste the Workspace MCP URL above into the Server URL field' },
287
- { id: 'oauth', label: 'Leave Authentication set to "OAuth", check "I understand and want to continue", then click Create' },
288
- { id: 'authorize', label: 'Complete the OAuth sign-in to authorize Runwork for your account' },
289
- { id: 'confirm', label: 'In a new chat, ask "Do you have access to Runwork tools?" to confirm (or check Settings, then Apps, for Runwork)' },
290
- ],
291
- variants: [
292
- {
293
- key: 'team',
294
- label: 'Team / Enterprise',
295
- title: 'Connect the Runwork app in ChatGPT',
296
- steps: [
297
- { id: 'open', label: 'Open chatgpt.com and sign in' },
298
- { id: 'settings-apps', label: 'Open the profile menu (bottom-left), then Settings, then Apps' },
299
- { id: 'find', label: 'Find the Runwork app published by your workspace admin and open it' },
300
- { id: 'connect', label: 'Click Connect and complete the OAuth sign-in to authorize Runwork' },
301
- { id: 'confirm', label: 'In a new chat, ask "Do you have access to Runwork tools?" to confirm (or check Settings, then Apps, for Runwork)' },
302
- ],
303
- },
304
- {
305
- key: 'personal',
306
- label: 'Personal',
307
- title: 'Create the Runwork connector in ChatGPT',
308
- steps: [
309
- { id: 'open', label: 'Open chatgpt.com and sign in' },
310
- { id: 'settings-apps', label: 'Open the profile menu (bottom-left), then Settings, then Apps' },
311
- { id: 'dev-mode', label: 'Click "Advanced settings" and turn on "Developer mode" (skip if it is already on)' },
312
- { id: 'create-app', label: 'Go back to Apps and click "Create app"' },
313
- { id: 'fill', label: 'In the New App dialog, set Name to "Runwork", keep Connection on "Server URL", and paste the Workspace MCP URL above into the Server URL field' },
314
- { id: 'oauth', label: 'Leave Authentication set to "OAuth", check "I understand and want to continue", then click Create' },
315
- { id: 'authorize', label: 'Complete the OAuth sign-in to authorize Runwork for your account' },
316
- { id: 'confirm', label: 'In a new chat, ask "Do you have access to Runwork tools?" to confirm (or check Settings, then Apps, for Runwork)' },
317
- ],
318
- },
319
- ],
320
- },
321
- },
322
- {
323
- // ChatGPT Desktop app. Connect-only (no local files); shares the same
324
- // account/connector/OAuth identity as `chatgpt` Web. Launches the app,
325
- // falling back to the web URL when the app is not installed.
326
- slug: 'chatgpt-app',
327
- name: 'ChatGPT Desktop',
328
- description: "OpenAI's ChatGPT desktop app, connected to your workspace via MCP",
329
- category: 'desktop',
330
- family: 'chatgpt',
331
- detection: {
332
- method: 'any',
333
- target: [
334
- { method: 'path', target: { macos: '/Applications/ChatGPT.app' } },
335
- { method: 'windows-appx', target: 'OpenAI.ChatGPT' },
336
- ],
337
- },
338
- launch: { app: { macos: 'ChatGPT', windows: 'ChatGPT' }, url: 'https://chatgpt.com/?prompt={prompt}' },
339
- logo: 'openai',
340
- downloadUrl: 'https://chatgpt.com/download',
341
- firstClass: true,
342
- resumeCapability: {
343
- mode: 'url-prompt',
344
- manualOpenHint: 'Opens ChatGPT with a prompt that fetches and continues the shared conversation via your Runwork workspace tools.',
345
- },
346
- quickStart: {
347
- launchHint: 'Open the ChatGPT desktop app',
348
- examplePrompts: [
349
- "What can my team's Runwork workspace do?",
350
- "Check my team's recent activity",
351
- ],
352
- },
353
- manualSetup: {
354
- title: 'Connect Runwork in ChatGPT',
355
- showAfter: 'connecting',
356
- copyValue: { label: 'Workspace MCP URL', token: '{mcpUrl}' },
357
- steps: [
358
- { id: 'install', label: 'Install the ChatGPT desktop app from chatgpt.com/download if you have not already' },
359
- { id: 'open-web', label: 'Connectors are created on chatgpt.com: open it in your browser and sign in' },
360
- { id: 'settings-apps', label: 'Open the profile menu (bottom-left), then Settings, then Apps' },
361
- { id: 'dev-mode', label: 'Click "Advanced settings" and turn on "Developer mode" (skip if it is already on)' },
362
- { id: 'create-app', label: 'Go back to Apps and click "Create app"' },
363
- { id: 'fill', label: 'In the New App dialog, set Name to "Runwork", keep Connection on "Server URL", and paste the Workspace MCP URL above into the Server URL field' },
364
- { id: 'oauth', label: 'Leave Authentication set to "OAuth", check "I understand and want to continue", then click Create' },
365
- { id: 'authorize', label: 'Complete the OAuth sign-in to authorize Runwork for your account' },
366
- { id: 'confirm', label: 'Open the ChatGPT desktop app and, in a new chat, ask "Do you have access to Runwork tools?" to confirm' },
367
- ],
368
- variants: [
369
- {
370
- key: 'team',
371
- label: 'Team / Enterprise',
372
- title: 'Connect the Runwork app in ChatGPT',
373
- steps: [
374
- { id: 'install', label: 'Install the ChatGPT desktop app from chatgpt.com/download if you have not already' },
375
- { id: 'open', label: 'Open the ChatGPT desktop app and sign in' },
376
- { id: 'settings-apps', label: 'Open the profile menu (bottom-left), then Settings, then Apps' },
377
- { id: 'find', label: 'Find the Runwork app published by your workspace admin and open it' },
378
- { id: 'connect', label: 'Click Connect and complete the OAuth sign-in to authorize Runwork' },
379
- { id: 'confirm', label: 'In a new chat, ask "Do you have access to Runwork tools?" to confirm (or check Settings, then Apps, for Runwork)' },
380
- ],
381
- },
382
- {
383
- key: 'personal',
384
- label: 'Personal',
385
- title: 'Create the Runwork connector in ChatGPT',
386
- steps: [
387
- { id: 'install', label: 'Install the ChatGPT desktop app from chatgpt.com/download if you have not already' },
388
- { id: 'open-web', label: 'Connectors are created on chatgpt.com: open it in your browser and sign in' },
389
- { id: 'settings-apps', label: 'Open the profile menu (bottom-left), then Settings, then Apps' },
390
- { id: 'dev-mode', label: 'Click "Advanced settings" and turn on "Developer mode" (skip if it is already on)' },
391
- { id: 'create-app', label: 'Go back to Apps and click "Create app"' },
392
- { id: 'fill', label: 'In the New App dialog, set Name to "Runwork", keep Connection on "Server URL", and paste the Workspace MCP URL above into the Server URL field' },
393
- { id: 'oauth', label: 'Leave Authentication set to "OAuth", check "I understand and want to continue", then click Create' },
394
- { id: 'authorize', label: 'Complete the OAuth sign-in to authorize Runwork for your account' },
395
- { id: 'confirm', label: 'Open the ChatGPT desktop app and, in a new chat, ask "Do you have access to Runwork tools?" to confirm' },
396
- ],
397
- },
398
- ],
399
- },
400
- },
401
- {
402
- slug: 'windsurf',
403
- name: 'Windsurf',
404
- description: 'Write and ship code with AI that understands your full project, built for fast iteration',
405
- category: 'ide',
406
- detection: {
407
- method: 'any',
408
- target: [
409
- { method: 'binary', target: 'windsurf' },
410
- { method: 'path', target: { windows: 'AppData/Local/Programs/Windsurf' } },
411
- { method: 'path', target: { windows: 'C:\\Program Files\\Windsurf' } },
412
- ],
413
- },
414
- launch: { app: { macos: 'Windsurf', windows: 'Windsurf' } },
415
- logo: 'windsurf',
416
- downloadUrl: 'https://windsurf.com',
417
- skillsPaths: { global: '.codeium/windsurf/skills', project: '.windsurf/skills' },
418
- mcpConfigPath: '.codeium/windsurf/mcp_config.json',
419
- instructionFile: { global: '.codeium/windsurf/rules/runwork.md', project: '.windsurf/rules/runwork.md' },
420
- mcpConfigKey: 'mcpServers',
421
- skillFormat: 'windsurf-md',
422
- firstClass: true,
423
- quickStart: {
424
- panelHint: 'Press Cmd+L to open Cascade',
425
- skillCommand: 'Check .windsurf/rules/ for workspace skills',
426
- examplePrompts: [
427
- 'Use Runwork tools to check team data',
428
- 'What workspace skills do I have?',
429
- ],
430
- },
431
- },
432
- {
433
- slug: 'gemini',
434
- name: 'Gemini CLI',
435
- description: 'AI in your terminal by Google, great for coding, research, and working across large codebases',
436
- category: 'cli',
437
- detection: { method: 'binary', target: 'gemini' },
438
- launch: { cli: 'gemini', cliAcceptsPrompt: true },
439
- logo: 'gemini',
440
- downloadUrl: 'https://github.com/google-gemini/gemini-cli',
441
- skillsPaths: { global: '.gemini/skills', project: '.gemini/skills' },
442
- mcpConfigPath: '.gemini/settings.json',
443
- instructionFile: { global: '.gemini/GEMINI.md', project: 'GEMINI.md' },
444
- mcpConfigKey: 'mcpServers',
445
- firstClass: true,
446
- quickStart: {
447
- launchHint: 'Open your terminal and type `gemini`',
448
- skillCommand: 'Check GEMINI.md or .gemini/skills/',
449
- examplePrompts: [
450
- 'Use your tools to check workspace activity',
451
- 'What can my workspace do?',
452
- ],
453
- },
454
- },
455
- {
456
- // Google Antigravity - agent-first IDE built as a VS Code fork (Electron).
457
- // Ships with Gemini 3 Pro; also supports Claude Sonnet/Opus. Skill and MCP
458
- // config paths are under ~/.gemini/antigravity/ (shared Google AI namespace
459
- // with Gemini CLI, but a distinct product line). The `antigravity` binary
460
- // on PATH is the Electron launcher; on macOS we also detect via the
461
- // installed app bundle so the registry recognizes installs that did not
462
- // expose a CLI launcher.
463
- slug: 'antigravity',
464
- name: 'Antigravity',
465
- aliases: ['Antigravity (Google)'],
466
- description: "Google's agent-first IDE for building with AI -- Editor view for code, Manager view to orchestrate multiple agents in parallel",
467
- category: 'ide',
468
- detection: {
469
- method: 'any',
470
- target: [
471
- { method: 'binary', target: 'antigravity' },
472
- { method: 'path', target: { macos: '/Applications/Antigravity.app' } },
473
- ],
474
- },
475
- launch: {
476
- app: { macos: 'Antigravity', windows: 'Antigravity' },
477
- cli: 'antigravity',
478
- },
479
- logo: 'antigravity',
480
- downloadUrl: 'https://antigravity.google',
481
- skillsPaths: { global: '.gemini/antigravity/skills', project: '.agent/skills' },
482
- mcpConfigPath: '.gemini/antigravity/mcp_config.json',
483
- mcpConfigKey: 'mcpServers',
484
- firstClass: true,
485
- quickStart: {
486
- launchHint: 'Open Antigravity',
487
- examplePrompts: [
488
- 'What workspace skills do I have available?',
489
- 'Use Runwork tools to check team data',
490
- ],
491
- },
492
- },
493
- // === Additional agents with some custom handling ===
494
- {
495
- slug: 'copilot-vscode',
496
- name: 'GitHub Copilot (VS Code)',
497
- description: "GitHub's AI pair programmer in VS Code",
498
- category: 'extension',
499
- detection: { method: 'binary', target: 'code' },
500
- launch: { app: { macos: 'Visual Studio Code', windows: 'Code' }, cli: 'code' },
501
- logo: 'vscode',
502
- downloadUrl: 'https://marketplace.visualstudio.com/items?itemName=GitHub.copilot',
503
- skillsPaths: { global: '.copilot/skills', project: '.github/skills' },
504
- mcpConfigPath: '.vscode/mcp.json',
505
- mcpConfigKey: 'servers',
506
- },
507
- {
508
- slug: 'cline',
509
- name: 'Cline',
510
- description: 'Autonomous AI coding agent for VS Code',
511
- category: 'extension',
512
- detection: { method: 'binary', target: 'cline' },
513
- launch: { cli: 'cline', cliAcceptsPrompt: true },
514
- logo: 'cline',
515
- skillsPaths: { global: '.agents/skills', project: '.agents/skills' },
516
- },
517
- {
518
- slug: 'copilot-cli',
519
- name: 'GitHub Copilot CLI',
520
- description: 'GitHub Copilot in the terminal',
521
- category: 'cli',
522
- detection: { method: 'binary', target: 'gh' },
523
- logo: 'vscode',
524
- skillsPaths: { global: '.copilot/skills', project: '.github/skills' },
525
- mcpConfigPath: '.copilot/mcp-config.json',
526
- mcpConfigKey: 'mcpServers',
527
- },
528
- // === Community agents (from skillshare targets.yaml) ===
529
- { slug: 'amp', name: 'Amp', description: 'AI coding agent by Sourcegraph', category: 'cli', detection: { method: 'binary', target: 'amp' }, skillsPaths: { global: '.config/agents/skills', project: '.agents/skills' } },
530
- { slug: 'adal', name: 'AdaL', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'adal' }, skillsPaths: { global: '.adal/skills', project: '.adal/skills' } },
531
- { slug: 'astrbot', name: 'AstrBot', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'astrbot' }, skillsPaths: { global: '.astrbot/data/skills', project: 'data/skills' } },
532
- { slug: 'augment', name: 'Augment', description: 'AI coding assistant', category: 'ide', detection: { method: 'binary', target: 'augment' }, skillsPaths: { global: '.augment/skills', project: '.augment/skills' } },
533
- { slug: 'bob', name: 'Bob', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'bob' }, skillsPaths: { global: '.bob/skills', project: '.bob/skills' } },
534
- { slug: 'codebuddy', name: 'CodeBuddy', description: 'AI coding assistant', category: 'cli', detection: { method: 'binary', target: 'codebuddy' }, skillsPaths: { global: '.codebuddy/skills', project: '.codebuddy/skills' } },
535
- { slug: 'comate', name: 'Comate', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'comate' }, skillsPaths: { global: '.comate/skills', project: '.comate/skills' } },
536
- { slug: 'commandcode', name: 'Command Code', aliases: ['command-code'], description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'commandcode' }, skillsPaths: { global: '.commandcode/skills', project: '.commandcode/skills' } },
537
- { slug: 'continue', name: 'Continue', description: 'Open-source AI code assistant', category: 'extension', detection: { method: 'binary', target: 'continue' }, skillsPaths: { global: '.continue/skills', project: '.continue/skills' } },
538
- { slug: 'cortex', name: 'Cortex', aliases: ['Cortex (Snowflake)'], description: "Snowflake's AI coding agent", category: 'cli', detection: { method: 'binary', target: 'cortex' }, skillsPaths: { global: '.snowflake/cortex/skills', project: '.cortex/skills' } },
539
- { slug: 'crush', name: 'Crush', aliases: ['Crush (Charm)'], description: 'AI agent by Charm', category: 'cli', detection: { method: 'binary', target: 'crush' }, skillsPaths: { global: '.config/crush/skills', project: '.crush/skills' } },
540
- { slug: 'deepagents', name: 'Deep Agents', aliases: ['deep-agents'], description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'deepagents' }, skillsPaths: { global: '.deepagents/agent/skills', project: '.deepagents/skills' } },
541
- { slug: 'droid', name: 'Droid', aliases: ['Droid (Factory AI)'], description: "Factory AI's coding agent", category: 'cli', detection: { method: 'binary', target: 'droid' }, skillsPaths: { global: '.factory/skills', project: '.factory/skills' } },
542
- { slug: 'firebender', name: 'Firebender', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'firebender' }, skillsPaths: { global: '.firebender/skills', project: '.firebender/skills' } },
543
- { slug: 'goose', name: 'Goose', description: 'AI coding agent by Block', category: 'cli', detection: { method: 'binary', target: 'goose' }, skillsPaths: { global: '.config/goose/skills', project: '.goose/skills' } },
544
- { slug: 'hermes', name: 'Hermes', aliases: ['hermes-agent'], description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'hermes' }, skillsPaths: { global: '.hermes/skills', project: '.hermes/skills' } },
545
- { slug: 'iflow', name: 'iFlow CLI', aliases: ['iflow-cli'], description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'iflow' }, skillsPaths: { global: '.iflow/skills', project: '.iflow/skills' } },
546
- { slug: 'junie', name: 'Junie', description: 'JetBrains AI coding agent', category: 'ide', detection: { method: 'binary', target: 'junie' }, skillsPaths: { global: '.junie/skills', project: '.junie/skills' } },
547
- { slug: 'kilocode', name: 'Kilo Code', aliases: ['kilo'], description: 'AI coding agent', category: 'extension', detection: { method: 'binary', target: 'kilocode' }, skillsPaths: { global: '.kilocode/skills', project: '.kilocode/skills' } },
548
- { slug: 'kimi', name: 'Kimi Code CLI', aliases: ['kimi-cli'], description: "Moonshot AI's coding agent", category: 'cli', detection: { method: 'binary', target: 'kimi' }, skillsPaths: { global: '.config/agents/skills', project: '.agents/skills' } },
549
- { slug: 'kiro', name: 'Kiro', aliases: ['Kiro CLI', 'kiro-cli'], description: "AWS's AI coding agent", category: 'ide', detection: { method: 'binary', target: 'kiro' }, skillsPaths: { global: '.kiro/skills', project: '.kiro/skills' } },
550
- { slug: 'kode', name: 'Kode', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'kode' }, skillsPaths: { global: '.kode/skills', project: '.kode/skills' } },
551
- { slug: 'letta', name: 'Letta', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'letta' }, skillsPaths: { global: '.letta/skills', project: '.skills' } },
552
- { slug: 'lingma', name: 'Lingma', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'lingma' }, skillsPaths: { global: '.lingma/skills', project: '.lingma/skills' } },
553
- { slug: 'mcpjam', name: 'MCPJam', description: 'MCP-based AI agent', category: 'cli', detection: { method: 'binary', target: 'mcpjam' }, skillsPaths: { global: '.mcpjam/skills', project: '.mcpjam/skills' } },
554
- { slug: 'mux', name: 'Mux', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'mux' }, skillsPaths: { global: '.mux/skills', project: '.mux/skills' } },
555
- { slug: 'neovate', name: 'Neovate', description: 'AI coding agent for Neovim', category: 'extension', detection: { method: 'binary', target: 'neovate' }, skillsPaths: { global: '.neovate/skills', project: '.neovate/skills' } },
556
- { slug: 'omp', name: 'Oh My Pi', aliases: ['oh-my-pi'], description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'omp' }, skillsPaths: { global: '.omp/agent/skills', project: '.omp/skills' } },
557
- { slug: 'openclaw', name: 'OpenClaw', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'openclaw' }, skillsPaths: { global: '.openclaw/skills', project: 'skills' } },
558
- { slug: 'opencode', name: 'OpenCode', description: 'Open-source AI coding agent', category: 'cli', detection: { method: 'binary', target: 'opencode' }, launch: { cli: 'opencode' }, skillsPaths: { global: '.config/opencode/skills', project: '.opencode/skills' } },
559
- { slug: 'openhands', name: 'OpenHands', description: 'Open-source AI coding agent', category: 'cli', detection: { method: 'binary', target: 'openhands' }, skillsPaths: { global: '.openhands/skills', project: '.openhands/skills' } },
560
- { slug: 'pi', name: 'Pi', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'pi' }, skillsPaths: { global: '.pi/agent/skills', project: '.pi/skills' } },
561
- { slug: 'pochi', name: 'Pochi', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'pochi' }, skillsPaths: { global: '.pochi/skills', project: '.pochi/skills' } },
562
- { slug: 'purecode', name: 'PureCode AI', aliases: ['purecode-ai'], description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'purecode' }, skillsPaths: { global: '.purecode/skills', project: '.agents/skills' } },
563
- { slug: 'qoder', name: 'Qoder', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'qoder' }, skillsPaths: { global: '.qoder/skills', project: '.qoder/skills' } },
564
- { slug: 'qwen', name: 'Qwen Code', aliases: ['qwen-code'], description: "Alibaba's AI coding agent", category: 'cli', detection: { method: 'binary', target: 'qwen' }, skillsPaths: { global: '.qwen/skills', project: '.qwen/skills' } },
565
- { slug: 'roo', name: 'Roo Code', description: 'AI coding agent', category: 'extension', detection: { method: 'binary', target: 'roo' }, skillsPaths: { global: '.roo/skills', project: '.roo/skills' } },
566
- { slug: 'trae', name: 'Trae', description: 'ByteDance AI coding IDE', category: 'ide', detection: { method: 'binary', target: 'trae' }, skillsPaths: { global: '.trae/skills', project: '.trae/skills' } },
567
- { slug: 'trae-cn', name: 'Trae CN', description: 'ByteDance AI coding IDE (China)', category: 'ide', detection: { method: 'binary', target: 'trae-cn' }, skillsPaths: { global: '.trae-cn/skills', project: '.trae/skills' } },
568
- { slug: 'mistral-vibe', name: 'Mistral Vibe', aliases: ['vibe'], description: "Mistral's AI coding agent", category: 'cli', detection: { method: 'binary', target: 'vibe' }, skillsPaths: { global: '.vibe/skills', project: '.vibe/skills' } },
569
- { slug: 'verdent', name: 'Verdent', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'verdent' }, skillsPaths: { global: '.verdent/skills', project: '.verdent/skills' } },
570
- { slug: 'warp', name: 'Warp Terminal', aliases: ['Warp AI'], description: 'AI-powered terminal', category: 'cli', detection: { method: 'path', target: { macos: '/Applications/Warp.app', linux: '/usr/bin/warp-terminal' } }, launch: { app: { macos: 'Warp', windows: 'Warp' } }, skillsPaths: { global: '.agents/skills', project: '.agents/skills' } },
571
- { slug: 'witsy', name: 'Witsy', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'witsy' }, skillsPaths: { global: '.agents/skills', project: '.agents/skills' } },
572
- { slug: 'xcode-claude', name: 'Xcode Claude', description: 'Claude integration for Xcode', category: 'extension', detection: { method: 'path', target: { macos: 'Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig' } }, logo: 'claude', skillsPaths: { global: 'Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig/skills', project: '.claude/skills' } },
573
- { slug: 'xcode-codex', name: 'Xcode Codex', description: 'Codex integration for Xcode', category: 'extension', detection: { method: 'path', target: { macos: 'Library/Developer/Xcode/CodingAssistant/codex' } }, logo: 'openai', skillsPaths: { global: 'Library/Developer/Xcode/CodingAssistant/codex/skills', project: '.codex/skills' } },
574
- { slug: 'zencoder', name: 'Zencoder', description: 'AI coding agent', category: 'cli', detection: { method: 'binary', target: 'zencoder' }, skillsPaths: { global: '.zencoder/skills', project: '.zencoder/skills' } },
575
- { slug: 'replit', name: 'Replit', description: 'AI-powered coding platform', category: 'ide', detection: { method: 'binary', target: 'replit' }, skillsPaths: { global: '.config/agents/skills', project: '.agents/skills' } },
576
- ];
577
- // ---------------------------------------------------------------------------
578
- // Indexes
579
- // ---------------------------------------------------------------------------
580
- const slugIndex = new Map();
581
- const nameIndex = new Map();
582
- for (const agent of AGENT_REGISTRY) {
583
- slugIndex.set(agent.slug, agent);
584
- nameIndex.set(agent.name, agent);
585
- if (agent.aliases) {
586
- for (const alias of agent.aliases) {
587
- nameIndex.set(alias, agent);
588
- }
589
- }
590
- }
591
- // Custom adapters live in CLI source tree. This list stays manual so the CLI
592
- // knows which agents to skip when falling back to the generic adapter.
593
- const CUSTOM_ADAPTER_SLUGS = new Set([
594
- 'claude-code',
595
- 'claude-desktop',
596
- 'cursor',
597
- 'windsurf',
598
- 'codex',
599
- 'codex-app',
600
- 'cline',
601
- 'gemini',
602
- ]);
603
- // ---------------------------------------------------------------------------
604
- // Public API (browser-safe)
605
- // ---------------------------------------------------------------------------
606
- export function getAgent(slug) {
607
- return slugIndex.get(slug);
608
- }
609
- export function getAgentByName(name) {
610
- return nameIndex.get(name);
611
- }
612
- export function getAgents() {
613
- return AGENT_REGISTRY;
614
- }
615
- export function getDetectableAgents() {
616
- return AGENT_REGISTRY.filter((a) => a.detection);
617
- }
618
- export function getLaunchableAgents() {
619
- return AGENT_REGISTRY.filter((a) => a.launch);
620
- }
621
- export function getFirstClassAgents() {
622
- return AGENT_REGISTRY.filter((a) => a.firstClass);
623
- }
624
- export function getAgentsByCategory(category) {
625
- return AGENT_REGISTRY.filter((a) => a.category === category);
626
- }
627
- export function isCLIAgent(slug) {
628
- return getAgent(slug)?.category === 'cli';
629
- }
630
- export function isIDEAgent(slug) {
631
- return getAgent(slug)?.category === 'ide';
632
- }
633
- export function isDesktopAgent(slug) {
634
- return getAgent(slug)?.category === 'desktop';
635
- }
636
- export function isWebAgent(slug) {
637
- return getAgent(slug)?.category === 'web';
638
- }
639
- /**
640
- * Connect-only agents have no local footprint to write: no skills directory,
641
- * no MCP config file, no instruction file. The connector lives in the user's
642
- * account (e.g. ChatGPT). `runwork sync` skips these for all local writes.
643
- */
644
- export function isConnectOnlyAgent(agent) {
645
- if (!agent)
646
- return false;
647
- return !agent.skillsPaths && !agent.mcpConfigPath && !agent.instructionFile;
648
- }
649
- /** Family identifier for an agent (e.g. 'chatgpt' for both ChatGPT entries), or its slug when standalone. */
650
- export function getAgentFamily(slug) {
651
- const agent = getAgent(slug);
652
- if (!agent)
653
- return undefined;
654
- return agent.family ?? agent.slug;
655
- }
656
- /** All agents sharing the given family identifier. */
657
- export function getFamilyAgents(family) {
658
- return AGENT_REGISTRY.filter((a) => (a.family ?? a.slug) === family);
659
- }
660
- /** Alias of {@link getAgent} kept for backward compatibility with CLI callers. */
661
- export const getRegistryAgent = getAgent;
662
- /** Alias of {@link getAgents} kept for backward compatibility with CLI callers. */
663
- export const getRegistryAgents = getAgents;
664
- export function getFirstClassSlugs() {
665
- return AGENT_REGISTRY.filter((a) => a.firstClass).map((a) => a.slug);
666
- }
667
- export function getCustomAdapterSlugs() {
668
- return CUSTOM_ADAPTER_SLUGS;
669
- }