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.
- package/dist/index.js +19272 -116
- package/package.json +4 -4
- package/dist/__tests__/curl-parser.test.d.ts +0 -1
- package/dist/__tests__/curl-parser.test.js +0 -250
- package/dist/__tests__/install-scripts.test.d.ts +0 -1
- package/dist/__tests__/install-scripts.test.js +0 -280
- package/dist/__tests__/types-manager.test.d.ts +0 -1
- package/dist/__tests__/types-manager.test.js +0 -89
- package/dist/agents/__tests__/chatgpt-registry.test.d.ts +0 -1
- package/dist/agents/__tests__/chatgpt-registry.test.js +0 -61
- package/dist/agents/__tests__/claude-code-managed-block.test.d.ts +0 -1
- package/dist/agents/__tests__/claude-code-managed-block.test.js +0 -97
- package/dist/agents/__tests__/claude-code-plugin.test.d.ts +0 -1
- package/dist/agents/__tests__/claude-code-plugin.test.js +0 -47
- package/dist/agents/__tests__/claude-code-stats.test.d.ts +0 -1
- package/dist/agents/__tests__/claude-code-stats.test.js +0 -390
- package/dist/agents/__tests__/claude-desktop-memory.test.d.ts +0 -1
- package/dist/agents/__tests__/claude-desktop-memory.test.js +0 -154
- package/dist/agents/__tests__/claude-desktop-plugin-tree.test.d.ts +0 -1
- package/dist/agents/__tests__/claude-desktop-plugin-tree.test.js +0 -161
- package/dist/agents/__tests__/claude-desktop-plugin.test.d.ts +0 -1
- package/dist/agents/__tests__/claude-desktop-plugin.test.js +0 -117
- package/dist/agents/__tests__/claude-desktop-rpm.test.d.ts +0 -1
- package/dist/agents/__tests__/claude-desktop-rpm.test.js +0 -126
- package/dist/agents/__tests__/claude-desktop-stats.test.d.ts +0 -1
- package/dist/agents/__tests__/claude-desktop-stats.test.js +0 -280
- package/dist/agents/__tests__/codex-instructions.test.d.ts +0 -1
- package/dist/agents/__tests__/codex-instructions.test.js +0 -57
- package/dist/agents/__tests__/codex-minimum-permissions.test.d.ts +0 -1
- package/dist/agents/__tests__/codex-minimum-permissions.test.js +0 -82
- package/dist/agents/__tests__/codex-stats.test.d.ts +0 -1
- package/dist/agents/__tests__/codex-stats.test.js +0 -370
- package/dist/agents/__tests__/cursor-merge.test.d.ts +0 -1
- package/dist/agents/__tests__/cursor-merge.test.js +0 -66
- package/dist/agents/__tests__/cursor-stats.test.d.ts +0 -1
- package/dist/agents/__tests__/cursor-stats.test.js +0 -183
- package/dist/agents/__tests__/defaults-merge.test.d.ts +0 -1
- package/dist/agents/__tests__/defaults-merge.test.js +0 -268
- package/dist/agents/__tests__/detection.test.d.ts +0 -1
- package/dist/agents/__tests__/detection.test.js +0 -89
- package/dist/agents/__tests__/graceful-degradation.test.d.ts +0 -1
- package/dist/agents/__tests__/graceful-degradation.test.js +0 -129
- package/dist/agents/__tests__/instruction-hint.test.d.ts +0 -1
- package/dist/agents/__tests__/instruction-hint.test.js +0 -69
- package/dist/agents/__tests__/intro-skill.test.d.ts +0 -1
- package/dist/agents/__tests__/intro-skill.test.js +0 -193
- package/dist/agents/__tests__/schema-validation.test.d.ts +0 -1
- package/dist/agents/__tests__/schema-validation.test.js +0 -212
- package/dist/agents/__tests__/skill-slug.test.d.ts +0 -1
- package/dist/agents/__tests__/skill-slug.test.js +0 -77
- package/dist/agents/claude-code.d.ts +0 -53
- package/dist/agents/claude-code.js +0 -754
- package/dist/agents/claude-desktop-plugin-tree.d.ts +0 -59
- package/dist/agents/claude-desktop-plugin-tree.js +0 -143
- package/dist/agents/claude-desktop.d.ts +0 -47
- package/dist/agents/claude-desktop.js +0 -684
- package/dist/agents/cline.d.ts +0 -15
- package/dist/agents/cline.js +0 -130
- package/dist/agents/codex.d.ts +0 -44
- package/dist/agents/codex.js +0 -453
- package/dist/agents/conversation-skills.d.ts +0 -18
- package/dist/agents/conversation-skills.js +0 -229
- package/dist/agents/cursor.d.ts +0 -48
- package/dist/agents/cursor.js +0 -324
- package/dist/agents/default-config.d.ts +0 -30
- package/dist/agents/default-config.js +0 -67
- package/dist/agents/defaults-merge.d.ts +0 -72
- package/dist/agents/defaults-merge.js +0 -131
- package/dist/agents/detect.d.ts +0 -4
- package/dist/agents/detect.js +0 -67
- package/dist/agents/detection.d.ts +0 -18
- package/dist/agents/detection.js +0 -94
- package/dist/agents/gemini.d.ts +0 -15
- package/dist/agents/gemini.js +0 -122
- package/dist/agents/generic-adapter.d.ts +0 -25
- package/dist/agents/generic-adapter.js +0 -151
- package/dist/agents/intro-skill.d.ts +0 -45
- package/dist/agents/intro-skill.js +0 -447
- package/dist/agents/registry-data.d.ts +0 -192
- package/dist/agents/registry-data.js +0 -669
- package/dist/agents/registry.d.ts +0 -13
- package/dist/agents/registry.js +0 -36
- package/dist/agents/runtime-detection.d.ts +0 -82
- package/dist/agents/runtime-detection.js +0 -271
- package/dist/agents/session-start-hook.d.ts +0 -37
- package/dist/agents/session-start-hook.js +0 -159
- package/dist/agents/types.d.ts +0 -171
- package/dist/agents/types.js +0 -75
- package/dist/agents/utils/instruction-hint.d.ts +0 -21
- package/dist/agents/utils/instruction-hint.js +0 -108
- package/dist/agents/utils/json-config.d.ts +0 -19
- package/dist/agents/utils/json-config.js +0 -69
- package/dist/agents/utils/toml-config.d.ts +0 -8
- package/dist/agents/utils/toml-config.js +0 -27
- package/dist/agents/windsurf.d.ts +0 -14
- package/dist/agents/windsurf.js +0 -102
- package/dist/api/__tests__/client.test.d.ts +0 -1
- package/dist/api/__tests__/client.test.js +0 -272
- package/dist/api/client.d.ts +0 -326
- package/dist/api/client.js +0 -427
- package/dist/auth/__tests__/login-flow.test.d.ts +0 -1
- package/dist/auth/__tests__/login-flow.test.js +0 -101
- package/dist/auth/__tests__/store.test.d.ts +0 -1
- package/dist/auth/__tests__/store.test.js +0 -132
- package/dist/auth/login-flow.d.ts +0 -26
- package/dist/auth/login-flow.js +0 -137
- package/dist/auth/store.d.ts +0 -5
- package/dist/auth/store.js +0 -62
- package/dist/commands/__tests__/clone-args.test.d.ts +0 -1
- package/dist/commands/__tests__/clone-args.test.js +0 -51
- package/dist/commands/__tests__/clone-source-result.test.d.ts +0 -1
- package/dist/commands/__tests__/clone-source-result.test.js +0 -45
- package/dist/commands/__tests__/info-merge.test.d.ts +0 -1
- package/dist/commands/__tests__/info-merge.test.js +0 -55
- package/dist/commands/__tests__/mcp-entries.test.d.ts +0 -1
- package/dist/commands/__tests__/mcp-entries.test.js +0 -48
- package/dist/commands/__tests__/setup-persona.test.d.ts +0 -1
- package/dist/commands/__tests__/setup-persona.test.js +0 -31
- package/dist/commands/__tests__/setup.test.d.ts +0 -1
- package/dist/commands/__tests__/setup.test.js +0 -81
- package/dist/commands/__tests__/sync-redetect.test.d.ts +0 -1
- package/dist/commands/__tests__/sync-redetect.test.js +0 -96
- package/dist/commands/__tests__/sync-telemetry.test.d.ts +0 -1
- package/dist/commands/__tests__/sync-telemetry.test.js +0 -281
- package/dist/commands/__tests__/upgrade.test.d.ts +0 -1
- package/dist/commands/__tests__/upgrade.test.js +0 -157
- package/dist/commands/agents.d.ts +0 -2
- package/dist/commands/agents.js +0 -160
- package/dist/commands/api-keys.d.ts +0 -2
- package/dist/commands/api-keys.js +0 -95
- package/dist/commands/apps.d.ts +0 -2
- package/dist/commands/apps.js +0 -82
- package/dist/commands/build-plugin.d.ts +0 -2
- package/dist/commands/build-plugin.js +0 -135
- package/dist/commands/clone.d.ts +0 -60
- package/dist/commands/clone.js +0 -271
- package/dist/commands/components.d.ts +0 -2
- package/dist/commands/components.js +0 -43
- package/dist/commands/deploy.d.ts +0 -2
- package/dist/commands/deploy.js +0 -279
- package/dist/commands/dev.d.ts +0 -11
- package/dist/commands/dev.js +0 -1011
- package/dist/commands/doctor.d.ts +0 -2
- package/dist/commands/doctor.js +0 -230
- package/dist/commands/endpoints.d.ts +0 -2
- package/dist/commands/endpoints.js +0 -189
- package/dist/commands/entities.d.ts +0 -2
- package/dist/commands/entities.js +0 -198
- package/dist/commands/files.d.ts +0 -2
- package/dist/commands/files.js +0 -193
- package/dist/commands/inbox.d.ts +0 -11
- package/dist/commands/inbox.js +0 -60
- package/dist/commands/info.d.ts +0 -178
- package/dist/commands/info.js +0 -455
- package/dist/commands/init.d.ts +0 -21
- package/dist/commands/init.js +0 -185
- package/dist/commands/integrations.d.ts +0 -2
- package/dist/commands/integrations.js +0 -233
- package/dist/commands/login.d.ts +0 -2
- package/dist/commands/login.js +0 -44
- package/dist/commands/logout.d.ts +0 -2
- package/dist/commands/logout.js +0 -13
- package/dist/commands/logs.d.ts +0 -2
- package/dist/commands/logs.js +0 -232
- package/dist/commands/mcp-entries.d.ts +0 -13
- package/dist/commands/mcp-entries.js +0 -26
- package/dist/commands/mcp.d.ts +0 -2
- package/dist/commands/mcp.js +0 -245
- package/dist/commands/open.d.ts +0 -2
- package/dist/commands/open.js +0 -53
- package/dist/commands/resume.d.ts +0 -2
- package/dist/commands/resume.js +0 -289
- package/dist/commands/save-convo.d.ts +0 -8
- package/dist/commands/save-convo.js +0 -20
- package/dist/commands/schedules.d.ts +0 -2
- package/dist/commands/schedules.js +0 -221
- package/dist/commands/setup.d.ts +0 -27
- package/dist/commands/setup.js +0 -177
- package/dist/commands/share-convo.d.ts +0 -24
- package/dist/commands/share-convo.js +0 -167
- package/dist/commands/skills.d.ts +0 -2
- package/dist/commands/skills.js +0 -352
- package/dist/commands/sync-telemetry.d.ts +0 -33
- package/dist/commands/sync-telemetry.js +0 -186
- package/dist/commands/sync.d.ts +0 -37
- package/dist/commands/sync.js +0 -702
- package/dist/commands/uninstall.d.ts +0 -2
- package/dist/commands/uninstall.js +0 -145
- package/dist/commands/upgrade.d.ts +0 -14
- package/dist/commands/upgrade.js +0 -217
- package/dist/commands/validate.d.ts +0 -2
- package/dist/commands/validate.js +0 -89
- package/dist/commands/welcome.d.ts +0 -1
- package/dist/commands/welcome.js +0 -86
- package/dist/commands/workflows.d.ts +0 -2
- package/dist/commands/workflows.js +0 -187
- package/dist/deploy/__tests__/deploy-state.test.d.ts +0 -1
- package/dist/deploy/__tests__/deploy-state.test.js +0 -80
- package/dist/deploy/__tests__/deploy-status.test.d.ts +0 -1
- package/dist/deploy/__tests__/deploy-status.test.js +0 -41
- package/dist/deploy/__tests__/detach-args.test.d.ts +0 -1
- package/dist/deploy/__tests__/detach-args.test.js +0 -30
- package/dist/deploy/deploy-state.d.ts +0 -36
- package/dist/deploy/deploy-state.js +0 -63
- package/dist/deploy/deploy-status.d.ts +0 -21
- package/dist/deploy/deploy-status.js +0 -36
- package/dist/deploy/detach.d.ts +0 -32
- package/dist/deploy/detach.js +0 -71
- package/dist/dev/__tests__/attach.test.d.ts +0 -1
- package/dist/dev/__tests__/attach.test.js +0 -296
- package/dist/dev/__tests__/detach.test.d.ts +0 -1
- package/dist/dev/__tests__/detach.test.js +0 -404
- package/dist/dev/__tests__/preview-url-poller.test.d.ts +0 -1
- package/dist/dev/__tests__/preview-url-poller.test.js +0 -149
- package/dist/dev/__tests__/session.test.d.ts +0 -1
- package/dist/dev/__tests__/session.test.js +0 -446
- package/dist/dev/__tests__/startup-sync.test.d.ts +0 -1
- package/dist/dev/__tests__/startup-sync.test.js +0 -32
- package/dist/dev/__tests__/stop.test.d.ts +0 -1
- package/dist/dev/__tests__/stop.test.js +0 -172
- package/dist/dev/attach.d.ts +0 -120
- package/dist/dev/attach.js +0 -269
- package/dist/dev/detach.d.ts +0 -187
- package/dist/dev/detach.js +0 -292
- package/dist/dev/preview-url-poller.d.ts +0 -35
- package/dist/dev/preview-url-poller.js +0 -50
- package/dist/dev/session.d.ts +0 -175
- package/dist/dev/session.js +0 -258
- package/dist/dev/startup-sync.d.ts +0 -23
- package/dist/dev/startup-sync.js +0 -14
- package/dist/dev/stop.d.ts +0 -52
- package/dist/dev/stop.js +0 -101
- package/dist/devtools/registry-data.d.ts +0 -46
- package/dist/devtools/registry-data.js +0 -40
- package/dist/generated/bundled-types.d.ts +0 -1
- package/dist/generated/bundled-types.js +0 -46
- package/dist/generated/version.d.ts +0 -1
- package/dist/generated/version.js +0 -2
- package/dist/git/__tests__/auto-commit.test.d.ts +0 -1
- package/dist/git/__tests__/auto-commit.test.js +0 -431
- package/dist/git/__tests__/classify-sync-error.test.d.ts +0 -1
- package/dist/git/__tests__/classify-sync-error.test.js +0 -57
- package/dist/git/__tests__/credential-helper-e2e.test.d.ts +0 -21
- package/dist/git/__tests__/credential-helper-e2e.test.js +0 -195
- package/dist/git/__tests__/credentials.test.d.ts +0 -1
- package/dist/git/__tests__/credentials.test.js +0 -141
- package/dist/git/__tests__/deploy-guard.test.d.ts +0 -1
- package/dist/git/__tests__/deploy-guard.test.js +0 -61
- package/dist/git/__tests__/ensure-git-credential-helper.test.d.ts +0 -1
- package/dist/git/__tests__/ensure-git-credential-helper.test.js +0 -133
- package/dist/git/__tests__/ensure-runwork-remote.test.d.ts +0 -1
- package/dist/git/__tests__/ensure-runwork-remote.test.js +0 -109
- package/dist/git/__tests__/identity.test.d.ts +0 -1
- package/dist/git/__tests__/identity.test.js +0 -146
- package/dist/git/__tests__/manifest.test.d.ts +0 -1
- package/dist/git/__tests__/manifest.test.js +0 -446
- package/dist/git/__tests__/preflight-resolution.test.d.ts +0 -1
- package/dist/git/__tests__/preflight-resolution.test.js +0 -366
- package/dist/git/__tests__/preflight.test.d.ts +0 -1
- package/dist/git/__tests__/preflight.test.js +0 -36
- package/dist/git/__tests__/repo-config.test.d.ts +0 -1
- package/dist/git/__tests__/repo-config.test.js +0 -26
- package/dist/git/__tests__/sync.test.d.ts +0 -1
- package/dist/git/__tests__/sync.test.js +0 -405
- package/dist/git/auto-commit.d.ts +0 -35
- package/dist/git/auto-commit.js +0 -293
- package/dist/git/classify-sync-error.d.ts +0 -21
- package/dist/git/classify-sync-error.js +0 -111
- package/dist/git/credentials.d.ts +0 -75
- package/dist/git/credentials.js +0 -164
- package/dist/git/critical-files.d.ts +0 -20
- package/dist/git/critical-files.js +0 -68
- package/dist/git/deploy-guard.d.ts +0 -53
- package/dist/git/deploy-guard.js +0 -78
- package/dist/git/identity.d.ts +0 -44
- package/dist/git/identity.js +0 -133
- package/dist/git/preflight.d.ts +0 -57
- package/dist/git/preflight.js +0 -276
- package/dist/git/remote.d.ts +0 -37
- package/dist/git/remote.js +0 -75
- package/dist/git/repo-config.d.ts +0 -8
- package/dist/git/repo-config.js +0 -29
- package/dist/git/sync.d.ts +0 -15
- package/dist/git/sync.js +0 -159
- package/dist/health/__tests__/checks.test.d.ts +0 -1
- package/dist/health/__tests__/checks.test.js +0 -357
- package/dist/health/__tests__/cli-distribution-checks.test.d.ts +0 -1
- package/dist/health/__tests__/cli-distribution-checks.test.js +0 -196
- package/dist/health/__tests__/fix.test.d.ts +0 -1
- package/dist/health/__tests__/fix.test.js +0 -72
- package/dist/health/__tests__/runner-filter.test.d.ts +0 -1
- package/dist/health/__tests__/runner-filter.test.js +0 -61
- package/dist/health/checks.d.ts +0 -42
- package/dist/health/checks.js +0 -636
- package/dist/health/fix.d.ts +0 -22
- package/dist/health/fix.js +0 -62
- package/dist/health/runner.d.ts +0 -8
- package/dist/health/runner.js +0 -47
- package/dist/health/types.d.ts +0 -12
- package/dist/health/types.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/logs/__tests__/tailer-format.test.d.ts +0 -1
- package/dist/logs/__tests__/tailer-format.test.js +0 -43
- package/dist/logs/tailer.d.ts +0 -17
- package/dist/logs/tailer.js +0 -217
- package/dist/sync/__tests__/change-detect.test.d.ts +0 -1
- package/dist/sync/__tests__/change-detect.test.js +0 -123
- package/dist/sync/__tests__/hash.test.d.ts +0 -1
- package/dist/sync/__tests__/hash.test.js +0 -18
- package/dist/sync/change-detect.d.ts +0 -19
- package/dist/sync/change-detect.js +0 -136
- package/dist/sync/conflict-ui.d.ts +0 -5
- package/dist/sync/conflict-ui.js +0 -78
- package/dist/sync/executor.d.ts +0 -23
- package/dist/sync/executor.js +0 -102
- package/dist/sync/hash.d.ts +0 -1
- package/dist/sync/hash.js +0 -4
- package/dist/sync/types.d.ts +0 -24
- package/dist/sync/types.js +0 -1
- package/dist/template/manifest.d.ts +0 -17
- package/dist/template/manifest.js +0 -145
- package/dist/tools/types.d.ts +0 -52
- package/dist/tools/types.js +0 -8
- package/dist/types-manager.d.ts +0 -1
- package/dist/types-manager.js +0 -35
- package/dist/types.d.ts +0 -349
- package/dist/types.js +0 -1
- package/dist/ui/__tests__/banner.test.d.ts +0 -1
- package/dist/ui/__tests__/banner.test.js +0 -98
- package/dist/ui/__tests__/colors.test.d.ts +0 -1
- package/dist/ui/__tests__/colors.test.js +0 -22
- package/dist/ui/__tests__/keyboard.test.d.ts +0 -1
- package/dist/ui/__tests__/keyboard.test.js +0 -34
- package/dist/ui/__tests__/status-line.test.d.ts +0 -1
- package/dist/ui/__tests__/status-line.test.js +0 -54
- package/dist/ui/banner.d.ts +0 -29
- package/dist/ui/banner.js +0 -153
- package/dist/ui/colors.d.ts +0 -4
- package/dist/ui/colors.js +0 -7
- package/dist/ui/keyboard.d.ts +0 -12
- package/dist/ui/keyboard.js +0 -61
- package/dist/ui/status-line.d.ts +0 -6
- package/dist/ui/status-line.js +0 -53
- package/dist/utils/__tests__/format-error.test.d.ts +0 -1
- package/dist/utils/__tests__/format-error.test.js +0 -43
- package/dist/utils/__tests__/help-json.test.d.ts +0 -1
- package/dist/utils/__tests__/help-json.test.js +0 -39
- package/dist/utils/__tests__/http.test.d.ts +0 -1
- package/dist/utils/__tests__/http.test.js +0 -381
- package/dist/utils/__tests__/ignore-matcher.test.d.ts +0 -1
- package/dist/utils/__tests__/ignore-matcher.test.js +0 -205
- package/dist/utils/__tests__/output.test.d.ts +0 -1
- package/dist/utils/__tests__/output.test.js +0 -38
- package/dist/utils/__tests__/prompt.test.d.ts +0 -1
- package/dist/utils/__tests__/prompt.test.js +0 -27
- package/dist/utils/__tests__/resolve.test.d.ts +0 -1
- package/dist/utils/__tests__/resolve.test.js +0 -95
- package/dist/utils/__tests__/sqlite.test.d.ts +0 -1
- package/dist/utils/__tests__/sqlite.test.js +0 -89
- package/dist/utils/agent-guidance.d.ts +0 -47
- package/dist/utils/agent-guidance.js +0 -128
- package/dist/utils/app-info.d.ts +0 -70
- package/dist/utils/app-info.js +0 -167
- package/dist/utils/curl-parser.d.ts +0 -12
- package/dist/utils/curl-parser.js +0 -162
- package/dist/utils/data-input.d.ts +0 -1
- package/dist/utils/data-input.js +0 -38
- package/dist/utils/format-error.d.ts +0 -10
- package/dist/utils/format-error.js +0 -38
- package/dist/utils/fs.d.ts +0 -5
- package/dist/utils/fs.js +0 -23
- package/dist/utils/help-json.d.ts +0 -70
- package/dist/utils/help-json.js +0 -88
- package/dist/utils/http.d.ts +0 -46
- package/dist/utils/http.js +0 -421
- package/dist/utils/ignore-matcher.d.ts +0 -47
- package/dist/utils/ignore-matcher.js +0 -132
- package/dist/utils/output.d.ts +0 -17
- package/dist/utils/output.js +0 -27
- package/dist/utils/prompt.d.ts +0 -5
- package/dist/utils/prompt.js +0 -42
- package/dist/utils/resolve.d.ts +0 -12
- package/dist/utils/resolve.js +0 -52
- package/dist/utils/setup-state.d.ts +0 -3
- package/dist/utils/setup-state.js +0 -19
- package/dist/utils/sqlite-adapter.d.ts +0 -48
- package/dist/utils/sqlite-adapter.js +0 -147
- package/dist/utils/sqlite.d.ts +0 -14
- package/dist/utils/sqlite.js +0 -14
- package/dist/utils/subprocess.d.ts +0 -19
- package/dist/utils/subprocess.js +0 -27
- package/dist/utils/which.d.ts +0 -14
- package/dist/utils/which.js +0 -47
- package/dist/utils/zip.d.ts +0 -7
- package/dist/utils/zip.js +0 -42
- package/dist/validate/__tests__/validate.test.d.ts +0 -1
- package/dist/validate/__tests__/validate.test.js +0 -42
- package/dist/validate/freshness.d.ts +0 -28
- package/dist/validate/freshness.js +0 -48
- package/dist/validate/preview.d.ts +0 -21
- package/dist/validate/preview.js +0 -39
- package/dist/workspace/resolve.d.ts +0 -19
- 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
|
-
}
|