nomoreide 0.2.0 → 0.3.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/README.md +12 -9
- package/bin/nomoreide.js +82 -0
- package/package.json +24 -132
- package/dist/cli/agents.d.ts +0 -2
- package/dist/cli/agents.js +0 -43
- package/dist/cli/agents.js.map +0 -1
- package/dist/cli/commands.d.ts +0 -11
- package/dist/cli/commands.js +0 -235
- package/dist/cli/commands.js.map +0 -1
- package/dist/cli/daemon.d.ts +0 -15
- package/dist/cli/daemon.js +0 -139
- package/dist/cli/daemon.js.map +0 -1
- package/dist/cli/database.d.ts +0 -2
- package/dist/cli/database.js +0 -145
- package/dist/cli/database.js.map +0 -1
- package/dist/cli/errors.d.ts +0 -2
- package/dist/cli/errors.js +0 -3
- package/dist/cli/errors.js.map +0 -1
- package/dist/cli/flags.d.ts +0 -1
- package/dist/cli/flags.js +0 -19
- package/dist/cli/flags.js.map +0 -1
- package/dist/cli/git.d.ts +0 -2
- package/dist/cli/git.js +0 -113
- package/dist/cli/git.js.map +0 -1
- package/dist/cli/profile.d.ts +0 -2
- package/dist/cli/profile.js +0 -171
- package/dist/cli/profile.js.map +0 -1
- package/dist/core/agent-context.d.ts +0 -9
- package/dist/core/agent-context.js +0 -43
- package/dist/core/agent-context.js.map +0 -1
- package/dist/core/agent-env/antigravity-reader.d.ts +0 -7
- package/dist/core/agent-env/antigravity-reader.js +0 -86
- package/dist/core/agent-env/antigravity-reader.js.map +0 -1
- package/dist/core/agent-env/availability.d.ts +0 -6
- package/dist/core/agent-env/availability.js +0 -79
- package/dist/core/agent-env/availability.js.map +0 -1
- package/dist/core/agent-env/claude-reader.d.ts +0 -7
- package/dist/core/agent-env/claude-reader.js +0 -101
- package/dist/core/agent-env/claude-reader.js.map +0 -1
- package/dist/core/agent-env/codex-reader.d.ts +0 -11
- package/dist/core/agent-env/codex-reader.js +0 -164
- package/dist/core/agent-env/codex-reader.js.map +0 -1
- package/dist/core/agent-env/index.d.ts +0 -9
- package/dist/core/agent-env/index.js +0 -29
- package/dist/core/agent-env/index.js.map +0 -1
- package/dist/core/agent-env/managed-plugins.d.ts +0 -18
- package/dist/core/agent-env/managed-plugins.js +0 -68
- package/dist/core/agent-env/managed-plugins.js.map +0 -1
- package/dist/core/agent-env/plugin-reader.d.ts +0 -9
- package/dist/core/agent-env/plugin-reader.js +0 -174
- package/dist/core/agent-env/plugin-reader.js.map +0 -1
- package/dist/core/agent-env/shared.d.ts +0 -26
- package/dist/core/agent-env/shared.js +0 -116
- package/dist/core/agent-env/shared.js.map +0 -1
- package/dist/core/agent-env/types.d.ts +0 -66
- package/dist/core/agent-env/types.js +0 -7
- package/dist/core/agent-env/types.js.map +0 -1
- package/dist/core/agent-env-actions.d.ts +0 -117
- package/dist/core/agent-env-actions.js +0 -273
- package/dist/core/agent-env-actions.js.map +0 -1
- package/dist/core/agent-env-plugin-uninstall.d.ts +0 -11
- package/dist/core/agent-env-plugin-uninstall.js +0 -189
- package/dist/core/agent-env-plugin-uninstall.js.map +0 -1
- package/dist/core/agent-env-writers.d.ts +0 -71
- package/dist/core/agent-env-writers.js +0 -632
- package/dist/core/agent-env-writers.js.map +0 -1
- package/dist/core/agent-profiles/apply.d.ts +0 -57
- package/dist/core/agent-profiles/apply.js +0 -209
- package/dist/core/agent-profiles/apply.js.map +0 -1
- package/dist/core/agent-profiles/builtin.d.ts +0 -8
- package/dist/core/agent-profiles/builtin.js +0 -33
- package/dist/core/agent-profiles/builtin.js.map +0 -1
- package/dist/core/agent-profiles/credentials.d.ts +0 -26
- package/dist/core/agent-profiles/credentials.js +0 -151
- package/dist/core/agent-profiles/credentials.js.map +0 -1
- package/dist/core/agent-profiles/debug-setup.d.ts +0 -18
- package/dist/core/agent-profiles/debug-setup.js +0 -237
- package/dist/core/agent-profiles/debug-setup.js.map +0 -1
- package/dist/core/agent-profiles/index.d.ts +0 -18
- package/dist/core/agent-profiles/index.js +0 -19
- package/dist/core/agent-profiles/index.js.map +0 -1
- package/dist/core/agent-profiles/plugin-apply.d.ts +0 -16
- package/dist/core/agent-profiles/plugin-apply.js +0 -383
- package/dist/core/agent-profiles/plugin-apply.js.map +0 -1
- package/dist/core/agent-profiles/plugin-bundle.d.ts +0 -6
- package/dist/core/agent-profiles/plugin-bundle.js +0 -32
- package/dist/core/agent-profiles/plugin-bundle.js.map +0 -1
- package/dist/core/agent-profiles/publication.d.ts +0 -105
- package/dist/core/agent-profiles/publication.js +0 -126
- package/dist/core/agent-profiles/publication.js.map +0 -1
- package/dist/core/agent-profiles/registry-auth.d.ts +0 -25
- package/dist/core/agent-profiles/registry-auth.js +0 -78
- package/dist/core/agent-profiles/registry-auth.js.map +0 -1
- package/dist/core/agent-profiles/registry-client.d.ts +0 -98
- package/dist/core/agent-profiles/registry-client.js +0 -109
- package/dist/core/agent-profiles/registry-client.js.map +0 -1
- package/dist/core/agent-profiles/registry-config.d.ts +0 -62
- package/dist/core/agent-profiles/registry-config.js +0 -221
- package/dist/core/agent-profiles/registry-config.js.map +0 -1
- package/dist/core/agent-profiles/registry-transfer.d.ts +0 -42
- package/dist/core/agent-profiles/registry-transfer.js +0 -133
- package/dist/core/agent-profiles/registry-transfer.js.map +0 -1
- package/dist/core/agent-profiles/store.d.ts +0 -62
- package/dist/core/agent-profiles/store.js +0 -479
- package/dist/core/agent-profiles/store.js.map +0 -1
- package/dist/core/agent-profiles/transfer.d.ts +0 -27
- package/dist/core/agent-profiles/transfer.js +0 -359
- package/dist/core/agent-profiles/transfer.js.map +0 -1
- package/dist/core/agent-profiles/types.d.ts +0 -364
- package/dist/core/agent-profiles/types.js +0 -79
- package/dist/core/agent-profiles/types.js.map +0 -1
- package/dist/core/agent-runtime.d.ts +0 -114
- package/dist/core/agent-runtime.js +0 -494
- package/dist/core/agent-runtime.js.map +0 -1
- package/dist/core/agent-sessions.d.ts +0 -46
- package/dist/core/agent-sessions.js +0 -109
- package/dist/core/agent-sessions.js.map +0 -1
- package/dist/core/agent-settings.d.ts +0 -31
- package/dist/core/agent-settings.js +0 -129
- package/dist/core/agent-settings.js.map +0 -1
- package/dist/core/agent-terminal.d.ts +0 -22
- package/dist/core/agent-terminal.js +0 -62
- package/dist/core/agent-terminal.js.map +0 -1
- package/dist/core/agent-transcripts.d.ts +0 -29
- package/dist/core/agent-transcripts.js +0 -281
- package/dist/core/agent-transcripts.js.map +0 -1
- package/dist/core/app-settings.d.ts +0 -74
- package/dist/core/app-settings.js +0 -118
- package/dist/core/app-settings.js.map +0 -1
- package/dist/core/app-version.d.ts +0 -2
- package/dist/core/app-version.js +0 -16
- package/dist/core/app-version.js.map +0 -1
- package/dist/core/approval-broker.d.ts +0 -29
- package/dist/core/approval-broker.js +0 -48
- package/dist/core/approval-broker.js.map +0 -1
- package/dist/core/claude-settings.d.ts +0 -18
- package/dist/core/claude-settings.js +0 -48
- package/dist/core/claude-settings.js.map +0 -1
- package/dist/core/cloudflare-actions.d.ts +0 -90
- package/dist/core/cloudflare-actions.js +0 -178
- package/dist/core/cloudflare-actions.js.map +0 -1
- package/dist/core/cloudflare-auth.d.ts +0 -61
- package/dist/core/cloudflare-auth.js +0 -149
- package/dist/core/cloudflare-auth.js.map +0 -1
- package/dist/core/cloudflare-context.d.ts +0 -2
- package/dist/core/cloudflare-context.js +0 -106
- package/dist/core/cloudflare-context.js.map +0 -1
- package/dist/core/cloudflare-manager.d.ts +0 -258
- package/dist/core/cloudflare-manager.js +0 -414
- package/dist/core/cloudflare-manager.js.map +0 -1
- package/dist/core/cloudflare-provider.d.ts +0 -64
- package/dist/core/cloudflare-provider.js +0 -348
- package/dist/core/cloudflare-provider.js.map +0 -1
- package/dist/core/config-files.d.ts +0 -27
- package/dist/core/config-files.js +0 -154
- package/dist/core/config-files.js.map +0 -1
- package/dist/core/config-store.d.ts +0 -181
- package/dist/core/config-store.js +0 -1026
- package/dist/core/config-store.js.map +0 -1
- package/dist/core/context-library.d.ts +0 -53
- package/dist/core/context-library.js +0 -605
- package/dist/core/context-library.js.map +0 -1
- package/dist/core/context-types.d.ts +0 -83
- package/dist/core/context-types.js +0 -9
- package/dist/core/context-types.js.map +0 -1
- package/dist/core/daemon-client.d.ts +0 -84
- package/dist/core/daemon-client.js +0 -156
- package/dist/core/daemon-client.js.map +0 -1
- package/dist/core/daemon-lifecycle.d.ts +0 -59
- package/dist/core/daemon-lifecycle.js +0 -147
- package/dist/core/daemon-lifecycle.js.map +0 -1
- package/dist/core/db/catalog.d.ts +0 -57
- package/dist/core/db/catalog.js +0 -38
- package/dist/core/db/catalog.js.map +0 -1
- package/dist/core/db/data-masking.d.ts +0 -3
- package/dist/core/db/data-masking.js +0 -14
- package/dist/core/db/data-masking.js.map +0 -1
- package/dist/core/db/driver.d.ts +0 -151
- package/dist/core/db/driver.js +0 -209
- package/dist/core/db/driver.js.map +0 -1
- package/dist/core/db/export.d.ts +0 -17
- package/dist/core/db/export.js +0 -67
- package/dist/core/db/export.js.map +0 -1
- package/dist/core/db/mysql-driver.d.ts +0 -33
- package/dist/core/db/mysql-driver.js +0 -364
- package/dist/core/db/mysql-driver.js.map +0 -1
- package/dist/core/db/postgres-driver.d.ts +0 -34
- package/dist/core/db/postgres-driver.js +0 -430
- package/dist/core/db/postgres-driver.js.map +0 -1
- package/dist/core/db/sqlite-driver.d.ts +0 -30
- package/dist/core/db/sqlite-driver.js +0 -301
- package/dist/core/db/sqlite-driver.js.map +0 -1
- package/dist/core/db-peek.d.ts +0 -99
- package/dist/core/db-peek.js +0 -322
- package/dist/core/db-peek.js.map +0 -1
- package/dist/core/db-write.d.ts +0 -45
- package/dist/core/db-write.js +0 -190
- package/dist/core/db-write.js.map +0 -1
- package/dist/core/docker-inspect.d.ts +0 -34
- package/dist/core/docker-inspect.js +0 -108
- package/dist/core/docker-inspect.js.map +0 -1
- package/dist/core/docker-resources.d.ts +0 -28
- package/dist/core/docker-resources.js +0 -59
- package/dist/core/docker-resources.js.map +0 -1
- package/dist/core/docker-service-runner.d.ts +0 -21
- package/dist/core/docker-service-runner.js +0 -80
- package/dist/core/docker-service-runner.js.map +0 -1
- package/dist/core/docker-stats.d.ts +0 -24
- package/dist/core/docker-stats.js +0 -76
- package/dist/core/docker-stats.js.map +0 -1
- package/dist/core/docker.d.ts +0 -75
- package/dist/core/docker.js +0 -219
- package/dist/core/docker.js.map +0 -1
- package/dist/core/env-file.d.ts +0 -24
- package/dist/core/env-file.js +0 -123
- package/dist/core/env-file.js.map +0 -1
- package/dist/core/env-runtime.d.ts +0 -32
- package/dist/core/env-runtime.js +0 -42
- package/dist/core/env-runtime.js.map +0 -1
- package/dist/core/error-inbox.d.ts +0 -91
- package/dist/core/error-inbox.js +0 -292
- package/dist/core/error-inbox.js.map +0 -1
- package/dist/core/extensions.d.ts +0 -78
- package/dist/core/extensions.js +0 -41
- package/dist/core/extensions.js.map +0 -1
- package/dist/core/external-terminal.d.ts +0 -60
- package/dist/core/external-terminal.js +0 -429
- package/dist/core/external-terminal.js.map +0 -1
- package/dist/core/fix-loop.d.ts +0 -55
- package/dist/core/fix-loop.js +0 -73
- package/dist/core/fix-loop.js.map +0 -1
- package/dist/core/git-actions.d.ts +0 -69
- package/dist/core/git-actions.js +0 -161
- package/dist/core/git-actions.js.map +0 -1
- package/dist/core/git-graph-layout.d.ts +0 -34
- package/dist/core/git-graph-layout.js +0 -94
- package/dist/core/git-graph-layout.js.map +0 -1
- package/dist/core/git-identity.d.ts +0 -78
- package/dist/core/git-identity.js +0 -178
- package/dist/core/git-identity.js.map +0 -1
- package/dist/core/git-manager.d.ts +0 -129
- package/dist/core/git-manager.js +0 -509
- package/dist/core/git-manager.js.map +0 -1
- package/dist/core/git-worktrees.d.ts +0 -35
- package/dist/core/git-worktrees.js +0 -142
- package/dist/core/git-worktrees.js.map +0 -1
- package/dist/core/github-auth.d.ts +0 -28
- package/dist/core/github-auth.js +0 -134
- package/dist/core/github-auth.js.map +0 -1
- package/dist/core/github-context.d.ts +0 -12
- package/dist/core/github-context.js +0 -36
- package/dist/core/github-context.js.map +0 -1
- package/dist/core/github-manager.d.ts +0 -230
- package/dist/core/github-manager.js +0 -324
- package/dist/core/github-manager.js.map +0 -1
- package/dist/core/host-metrics.d.ts +0 -41
- package/dist/core/host-metrics.js +0 -93
- package/dist/core/host-metrics.js.map +0 -1
- package/dist/core/http-inspector.d.ts +0 -20
- package/dist/core/http-inspector.js +0 -106
- package/dist/core/http-inspector.js.map +0 -1
- package/dist/core/jetbrains-import.d.ts +0 -85
- package/dist/core/jetbrains-import.js +0 -599
- package/dist/core/jetbrains-import.js.map +0 -1
- package/dist/core/log-sources.d.ts +0 -21
- package/dist/core/log-sources.js +0 -219
- package/dist/core/log-sources.js.map +0 -1
- package/dist/core/log-store.d.ts +0 -33
- package/dist/core/log-store.js +0 -94
- package/dist/core/log-store.js.map +0 -1
- package/dist/core/log-volume.d.ts +0 -41
- package/dist/core/log-volume.js +0 -81
- package/dist/core/log-volume.js.map +0 -1
- package/dist/core/mcp-auth.d.ts +0 -27
- package/dist/core/mcp-auth.js +0 -90
- package/dist/core/mcp-auth.js.map +0 -1
- package/dist/core/metrics-store.d.ts +0 -74
- package/dist/core/metrics-store.js +0 -187
- package/dist/core/metrics-store.js.map +0 -1
- package/dist/core/one-time-skills.d.ts +0 -27
- package/dist/core/one-time-skills.js +0 -185
- package/dist/core/one-time-skills.js.map +0 -1
- package/dist/core/port-utils.d.ts +0 -23
- package/dist/core/port-utils.js +0 -83
- package/dist/core/port-utils.js.map +0 -1
- package/dist/core/process-manager.d.ts +0 -99
- package/dist/core/process-manager.js +0 -738
- package/dist/core/process-manager.js.map +0 -1
- package/dist/core/process-tree.d.ts +0 -17
- package/dist/core/process-tree.js +0 -64
- package/dist/core/process-tree.js.map +0 -1
- package/dist/core/project-overview.d.ts +0 -52
- package/dist/core/project-overview.js +0 -122
- package/dist/core/project-overview.js.map +0 -1
- package/dist/core/providers/api-base.d.ts +0 -24
- package/dist/core/providers/api-base.js +0 -44
- package/dist/core/providers/api-base.js.map +0 -1
- package/dist/core/providers/credentials.d.ts +0 -93
- package/dist/core/providers/credentials.js +0 -88
- package/dist/core/providers/credentials.js.map +0 -1
- package/dist/core/providers/deploy-provider.d.ts +0 -327
- package/dist/core/providers/deploy-provider.js +0 -25
- package/dist/core/providers/deploy-provider.js.map +0 -1
- package/dist/core/providers/egress.d.ts +0 -58
- package/dist/core/providers/egress.js +0 -124
- package/dist/core/providers/egress.js.map +0 -1
- package/dist/core/providers/host-bridge.d.ts +0 -20
- package/dist/core/providers/host-bridge.js +0 -57
- package/dist/core/providers/host-bridge.js.map +0 -1
- package/dist/core/providers/host-provider.d.ts +0 -160
- package/dist/core/providers/host-provider.js +0 -2
- package/dist/core/providers/host-provider.js.map +0 -1
- package/dist/core/providers/oauth.d.ts +0 -97
- package/dist/core/providers/oauth.js +0 -238
- package/dist/core/providers/oauth.js.map +0 -1
- package/dist/core/providers/project-resolution.d.ts +0 -81
- package/dist/core/providers/project-resolution.js +0 -101
- package/dist/core/providers/project-resolution.js.map +0 -1
- package/dist/core/providers/registry.d.ts +0 -73
- package/dist/core/providers/registry.js +0 -53
- package/dist/core/providers/registry.js.map +0 -1
- package/dist/core/providers/strings.d.ts +0 -95
- package/dist/core/providers/strings.js +0 -59
- package/dist/core/providers/strings.js.map +0 -1
- package/dist/core/public-config.d.ts +0 -18
- package/dist/core/public-config.js +0 -76
- package/dist/core/public-config.js.map +0 -1
- package/dist/core/read-only-files.d.ts +0 -28
- package/dist/core/read-only-files.js +0 -93
- package/dist/core/read-only-files.js.map +0 -1
- package/dist/core/repo-create.d.ts +0 -11
- package/dist/core/repo-create.js +0 -54
- package/dist/core/repo-create.js.map +0 -1
- package/dist/core/repo-match.d.ts +0 -12
- package/dist/core/repo-match.js +0 -40
- package/dist/core/repo-match.js.map +0 -1
- package/dist/core/repo-onboard.d.ts +0 -297
- package/dist/core/repo-onboard.js +0 -667
- package/dist/core/repo-onboard.js.map +0 -1
- package/dist/core/repro-bundle.d.ts +0 -30
- package/dist/core/repro-bundle.js +0 -116
- package/dist/core/repro-bundle.js.map +0 -1
- package/dist/core/service-graph.d.ts +0 -50
- package/dist/core/service-graph.js +0 -143
- package/dist/core/service-graph.js.map +0 -1
- package/dist/core/service-health.d.ts +0 -10
- package/dist/core/service-health.js +0 -46
- package/dist/core/service-health.js.map +0 -1
- package/dist/core/service-log-source.d.ts +0 -9
- package/dist/core/service-log-source.js +0 -49
- package/dist/core/service-log-source.js.map +0 -1
- package/dist/core/service-registry.d.ts +0 -52
- package/dist/core/service-registry.js +0 -101
- package/dist/core/service-registry.js.map +0 -1
- package/dist/core/snapshot-manager.d.ts +0 -62
- package/dist/core/snapshot-manager.js +0 -219
- package/dist/core/snapshot-manager.js.map +0 -1
- package/dist/core/ssh-servers.d.ts +0 -89
- package/dist/core/ssh-servers.js +0 -251
- package/dist/core/ssh-servers.js.map +0 -1
- package/dist/core/ssh-service-runner.d.ts +0 -7
- package/dist/core/ssh-service-runner.js +0 -36
- package/dist/core/ssh-service-runner.js.map +0 -1
- package/dist/core/ssh-setup.d.ts +0 -11
- package/dist/core/ssh-setup.js +0 -49
- package/dist/core/ssh-setup.js.map +0 -1
- package/dist/core/system-processes.d.ts +0 -29
- package/dist/core/system-processes.js +0 -119
- package/dist/core/system-processes.js.map +0 -1
- package/dist/core/terminal-manager.d.ts +0 -123
- package/dist/core/terminal-manager.js +0 -470
- package/dist/core/terminal-manager.js.map +0 -1
- package/dist/core/terminal-session.d.ts +0 -122
- package/dist/core/terminal-session.js +0 -242
- package/dist/core/terminal-session.js.map +0 -1
- package/dist/core/terminal-spawn.d.ts +0 -26
- package/dist/core/terminal-spawn.js +0 -63
- package/dist/core/terminal-spawn.js.map +0 -1
- package/dist/core/test-runner.d.ts +0 -69
- package/dist/core/test-runner.js +0 -199
- package/dist/core/test-runner.js.map +0 -1
- package/dist/core/timeline-store.d.ts +0 -20
- package/dist/core/timeline-store.js +0 -36
- package/dist/core/timeline-store.js.map +0 -1
- package/dist/core/tool-call-store.d.ts +0 -25
- package/dist/core/tool-call-store.js +0 -62
- package/dist/core/tool-call-store.js.map +0 -1
- package/dist/core/types.d.ts +0 -312
- package/dist/core/types.js +0 -2
- package/dist/core/types.js.map +0 -1
- package/dist/core/usage-history.d.ts +0 -81
- package/dist/core/usage-history.js +0 -149
- package/dist/core/usage-history.js.map +0 -1
- package/dist/core/vercel-actions.d.ts +0 -71
- package/dist/core/vercel-actions.js +0 -109
- package/dist/core/vercel-actions.js.map +0 -1
- package/dist/core/vercel-auth.d.ts +0 -40
- package/dist/core/vercel-auth.js +0 -88
- package/dist/core/vercel-auth.js.map +0 -1
- package/dist/core/vercel-context.d.ts +0 -2
- package/dist/core/vercel-context.js +0 -97
- package/dist/core/vercel-context.js.map +0 -1
- package/dist/core/vercel-manager.d.ts +0 -268
- package/dist/core/vercel-manager.js +0 -401
- package/dist/core/vercel-manager.js.map +0 -1
- package/dist/core/vercel-oauth.d.ts +0 -37
- package/dist/core/vercel-oauth.js +0 -57
- package/dist/core/vercel-oauth.js.map +0 -1
- package/dist/core/vercel-provider.d.ts +0 -23
- package/dist/core/vercel-provider.js +0 -276
- package/dist/core/vercel-provider.js.map +0 -1
- package/dist/core/vultr-actions.d.ts +0 -52
- package/dist/core/vultr-actions.js +0 -62
- package/dist/core/vultr-actions.js.map +0 -1
- package/dist/core/vultr-auth.d.ts +0 -32
- package/dist/core/vultr-auth.js +0 -54
- package/dist/core/vultr-auth.js.map +0 -1
- package/dist/core/vultr-context.d.ts +0 -2
- package/dist/core/vultr-context.js +0 -55
- package/dist/core/vultr-context.js.map +0 -1
- package/dist/core/vultr-manager.d.ts +0 -113
- package/dist/core/vultr-manager.js +0 -170
- package/dist/core/vultr-manager.js.map +0 -1
- package/dist/core/vultr-provider.d.ts +0 -69
- package/dist/core/vultr-provider.js +0 -226
- package/dist/core/vultr-provider.js.map +0 -1
- package/dist/core/workflow-triggers.d.ts +0 -139
- package/dist/core/workflow-triggers.js +0 -208
- package/dist/core/workflow-triggers.js.map +0 -1
- package/dist/core/workflows.d.ts +0 -290
- package/dist/core/workflows.js +0 -190
- package/dist/core/workflows.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -66
- package/dist/index.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -37
- package/dist/mcp/server.js +0 -84
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/tools/agent-env.d.ts +0 -9
- package/dist/mcp/tools/agent-env.js +0 -160
- package/dist/mcp/tools/agent-env.js.map +0 -1
- package/dist/mcp/tools/agent-profiles.d.ts +0 -9
- package/dist/mcp/tools/agent-profiles.js +0 -197
- package/dist/mcp/tools/agent-profiles.js.map +0 -1
- package/dist/mcp/tools/agent-registry.d.ts +0 -9
- package/dist/mcp/tools/agent-registry.js +0 -81
- package/dist/mcp/tools/agent-registry.js.map +0 -1
- package/dist/mcp/tools/agent.d.ts +0 -4
- package/dist/mcp/tools/agent.js +0 -29
- package/dist/mcp/tools/agent.js.map +0 -1
- package/dist/mcp/tools/context.d.ts +0 -36
- package/dist/mcp/tools/context.js +0 -69
- package/dist/mcp/tools/context.js.map +0 -1
- package/dist/mcp/tools/database.d.ts +0 -9
- package/dist/mcp/tools/database.js +0 -166
- package/dist/mcp/tools/database.js.map +0 -1
- package/dist/mcp/tools/docs.d.ts +0 -29
- package/dist/mcp/tools/docs.js +0 -134
- package/dist/mcp/tools/docs.js.map +0 -1
- package/dist/mcp/tools/errors.d.ts +0 -12
- package/dist/mcp/tools/errors.js +0 -47
- package/dist/mcp/tools/errors.js.map +0 -1
- package/dist/mcp/tools/git.d.ts +0 -4
- package/dist/mcp/tools/git.js +0 -209
- package/dist/mcp/tools/git.js.map +0 -1
- package/dist/mcp/tools/github.d.ts +0 -4
- package/dist/mcp/tools/github.js +0 -196
- package/dist/mcp/tools/github.js.map +0 -1
- package/dist/mcp/tools/index.d.ts +0 -36
- package/dist/mcp/tools/index.js +0 -61
- package/dist/mcp/tools/index.js.map +0 -1
- package/dist/mcp/tools/onboard.d.ts +0 -10
- package/dist/mcp/tools/onboard.js +0 -30
- package/dist/mcp/tools/onboard.js.map +0 -1
- package/dist/mcp/tools/provider.d.ts +0 -16
- package/dist/mcp/tools/provider.js +0 -110
- package/dist/mcp/tools/provider.js.map +0 -1
- package/dist/mcp/tools/services.d.ts +0 -13
- package/dist/mcp/tools/services.js +0 -204
- package/dist/mcp/tools/services.js.map +0 -1
- package/dist/mcp/tools/snapshots.d.ts +0 -8
- package/dist/mcp/tools/snapshots.js +0 -37
- package/dist/mcp/tools/snapshots.js.map +0 -1
- package/dist/mcp/tools/terminal.d.ts +0 -4
- package/dist/mcp/tools/terminal.js +0 -38
- package/dist/mcp/tools/terminal.js.map +0 -1
- package/dist/tui/app.d.ts +0 -22
- package/dist/tui/app.js +0 -138
- package/dist/tui/app.js.map +0 -1
- package/dist/web/agent-info.d.ts +0 -82
- package/dist/web/agent-info.js +0 -775
- package/dist/web/agent-info.js.map +0 -1
- package/dist/web/client/assets/SymbolsNerdFontMono-Regular-DDncdh2F.ttf +0 -0
- package/dist/web/client/assets/code-editor-TE0sjFGO.js +0 -30
- package/dist/web/client/assets/context-graph-B9MnBpp6.js +0 -7
- package/dist/web/client/assets/core-DhEqZVGG.js +0 -1
- package/dist/web/client/assets/event-BK_86lmQ.js +0 -1
- package/dist/web/client/assets/index-BhDAhmA1.js +0 -1
- package/dist/web/client/assets/index-CSo__8A6.css +0 -1
- package/dist/web/client/assets/index-DAJvBqn9.js +0 -352
- package/dist/web/client/assets/nomoreide-favicon-Ds7Tgj9p.svg +0 -24
- package/dist/web/client/assets/system-process-table-DetWu0Gj.js +0 -1
- package/dist/web/client/assets/window-DlR023_X.js +0 -1
- package/dist/web/client/index.html +0 -44
- package/dist/web/dashboard.d.ts +0 -61
- package/dist/web/dashboard.js +0 -221
- package/dist/web/dashboard.js.map +0 -1
- package/dist/web/directories.d.ts +0 -27
- package/dist/web/directories.js +0 -81
- package/dist/web/directories.js.map +0 -1
- package/dist/web/http-utils.d.ts +0 -13
- package/dist/web/http-utils.js +0 -72
- package/dist/web/http-utils.js.map +0 -1
- package/dist/web/routes/agent-chat-routes.d.ts +0 -3
- package/dist/web/routes/agent-chat-routes.js +0 -186
- package/dist/web/routes/agent-chat-routes.js.map +0 -1
- package/dist/web/routes/agent-env-routes.d.ts +0 -9
- package/dist/web/routes/agent-env-routes.js +0 -86
- package/dist/web/routes/agent-env-routes.js.map +0 -1
- package/dist/web/routes/agent-profile-routes.d.ts +0 -8
- package/dist/web/routes/agent-profile-routes.js +0 -211
- package/dist/web/routes/agent-profile-routes.js.map +0 -1
- package/dist/web/routes/agent-registry-routes.d.ts +0 -2
- package/dist/web/routes/agent-registry-routes.js +0 -375
- package/dist/web/routes/agent-registry-routes.js.map +0 -1
- package/dist/web/routes/agent-routes.d.ts +0 -3
- package/dist/web/routes/agent-routes.js +0 -73
- package/dist/web/routes/agent-routes.js.map +0 -1
- package/dist/web/routes/agent-settings-routes.d.ts +0 -8
- package/dist/web/routes/agent-settings-routes.js +0 -67
- package/dist/web/routes/agent-settings-routes.js.map +0 -1
- package/dist/web/routes/context-library-routes.d.ts +0 -2
- package/dist/web/routes/context-library-routes.js +0 -139
- package/dist/web/routes/context-library-routes.js.map +0 -1
- package/dist/web/routes/context.d.ts +0 -73
- package/dist/web/routes/context.js +0 -48
- package/dist/web/routes/context.js.map +0 -1
- package/dist/web/routes/dashboard-routes.d.ts +0 -3
- package/dist/web/routes/dashboard-routes.js +0 -47
- package/dist/web/routes/dashboard-routes.js.map +0 -1
- package/dist/web/routes/database-routes.d.ts +0 -3
- package/dist/web/routes/database-routes.js +0 -341
- package/dist/web/routes/database-routes.js.map +0 -1
- package/dist/web/routes/docker-routes.d.ts +0 -7
- package/dist/web/routes/docker-routes.js +0 -122
- package/dist/web/routes/docker-routes.js.map +0 -1
- package/dist/web/routes/errors-routes.d.ts +0 -3
- package/dist/web/routes/errors-routes.js +0 -77
- package/dist/web/routes/errors-routes.js.map +0 -1
- package/dist/web/routes/extensions-routes.d.ts +0 -14
- package/dist/web/routes/extensions-routes.js +0 -21
- package/dist/web/routes/extensions-routes.js.map +0 -1
- package/dist/web/routes/git-routes.d.ts +0 -3
- package/dist/web/routes/git-routes.js +0 -598
- package/dist/web/routes/git-routes.js.map +0 -1
- package/dist/web/routes/github-context.d.ts +0 -11
- package/dist/web/routes/github-context.js +0 -34
- package/dist/web/routes/github-context.js.map +0 -1
- package/dist/web/routes/github-routes.d.ts +0 -2
- package/dist/web/routes/github-routes.js +0 -699
- package/dist/web/routes/github-routes.js.map +0 -1
- package/dist/web/routes/host-routes.d.ts +0 -2
- package/dist/web/routes/host-routes.js +0 -188
- package/dist/web/routes/host-routes.js.map +0 -1
- package/dist/web/routes/index.d.ts +0 -10
- package/dist/web/routes/index.js +0 -72
- package/dist/web/routes/index.js.map +0 -1
- package/dist/web/routes/jetbrains-import-routes.d.ts +0 -2
- package/dist/web/routes/jetbrains-import-routes.js +0 -121
- package/dist/web/routes/jetbrains-import-routes.js.map +0 -1
- package/dist/web/routes/log-sources-routes.d.ts +0 -6
- package/dist/web/routes/log-sources-routes.js +0 -102
- package/dist/web/routes/log-sources-routes.js.map +0 -1
- package/dist/web/routes/metrics-routes.d.ts +0 -3
- package/dist/web/routes/metrics-routes.js +0 -60
- package/dist/web/routes/metrics-routes.js.map +0 -1
- package/dist/web/routes/onboard-routes.d.ts +0 -9
- package/dist/web/routes/onboard-routes.js +0 -146
- package/dist/web/routes/onboard-routes.js.map +0 -1
- package/dist/web/routes/overview-routes.d.ts +0 -2
- package/dist/web/routes/overview-routes.js +0 -36
- package/dist/web/routes/overview-routes.js.map +0 -1
- package/dist/web/routes/provider-routes.d.ts +0 -2
- package/dist/web/routes/provider-routes.js +0 -558
- package/dist/web/routes/provider-routes.js.map +0 -1
- package/dist/web/routes/service-routes.d.ts +0 -3
- package/dist/web/routes/service-routes.js +0 -511
- package/dist/web/routes/service-routes.js.map +0 -1
- package/dist/web/routes/settings-routes.d.ts +0 -2
- package/dist/web/routes/settings-routes.js +0 -151
- package/dist/web/routes/settings-routes.js.map +0 -1
- package/dist/web/routes/shell-routes.d.ts +0 -22
- package/dist/web/routes/shell-routes.js +0 -75
- package/dist/web/routes/shell-routes.js.map +0 -1
- package/dist/web/routes/skills-routes.d.ts +0 -2
- package/dist/web/routes/skills-routes.js +0 -49
- package/dist/web/routes/skills-routes.js.map +0 -1
- package/dist/web/routes/snapshot-routes.d.ts +0 -8
- package/dist/web/routes/snapshot-routes.js +0 -194
- package/dist/web/routes/snapshot-routes.js.map +0 -1
- package/dist/web/routes/ssh-server-routes.d.ts +0 -10
- package/dist/web/routes/ssh-server-routes.js +0 -163
- package/dist/web/routes/ssh-server-routes.js.map +0 -1
- package/dist/web/routes/terminal-routes.d.ts +0 -7
- package/dist/web/routes/terminal-routes.js +0 -313
- package/dist/web/routes/terminal-routes.js.map +0 -1
- package/dist/web/routes/workflow-routes.d.ts +0 -8
- package/dist/web/routes/workflow-routes.js +0 -45
- package/dist/web/routes/workflow-routes.js.map +0 -1
- package/dist/web/routes/workflow-trigger-routes.d.ts +0 -9
- package/dist/web/routes/workflow-trigger-routes.js +0 -78
- package/dist/web/routes/workflow-trigger-routes.js.map +0 -1
- package/dist/web/server.d.ts +0 -31
- package/dist/web/server.js +0 -325
- package/dist/web/server.js.map +0 -1
- package/dist/web/service-tester.d.ts +0 -16
- package/dist/web/service-tester.js +0 -107
- package/dist/web/service-tester.js.map +0 -1
- package/dist/web/static-assets.d.ts +0 -9
- package/dist/web/static-assets.js +0 -77
- package/dist/web/static-assets.js.map +0 -1
- package/dist/web/usage-info.d.ts +0 -56
- package/dist/web/usage-info.js +0 -265
- package/dist/web/usage-info.js.map +0 -1
|
@@ -1,699 +0,0 @@
|
|
|
1
|
-
import { getSelectedGitRepository, selectedGitCwd } from "../dashboard.js";
|
|
2
|
-
import { GitManager } from "../../core/git-manager.js";
|
|
3
|
-
import { GitHubApiError, GitHubManager, githubOAuthBase } from "../../core/github-manager.js";
|
|
4
|
-
import { GitHubCliAuth } from "../../core/github-auth.js";
|
|
5
|
-
import { readForm, readJson, requiredFormValue, sendJson, sendText } from "../http-utils.js";
|
|
6
|
-
import { errorMessage, patternRoute, route } from "./context.js";
|
|
7
|
-
import { requireGitHubContext, optionalGitHubContext } from "./github-context.js";
|
|
8
|
-
const DEVICE_CODE_PATH = "/login/device/code";
|
|
9
|
-
const ACCESS_TOKEN_PATH = "/login/oauth/access_token";
|
|
10
|
-
const GITHUB_SCOPES = "repo workflow read:org";
|
|
11
|
-
const DEFAULT_GITHUB_CLIENT_ID = "Ov23litfv3LE0LevxlT2";
|
|
12
|
-
function getClientId() {
|
|
13
|
-
return process.env.NOMOREIDE_GITHUB_CLIENT_ID?.trim() || DEFAULT_GITHUB_CLIENT_ID;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Who a freshly stored token belongs to. Captured once at connect time so the
|
|
17
|
-
* status route can report the account (and its avatar) without spending an API
|
|
18
|
-
* call on every check. Best-effort: a failure here must not fail the login.
|
|
19
|
-
*/
|
|
20
|
-
async function fetchGitHubProfile(token) {
|
|
21
|
-
try {
|
|
22
|
-
const viewer = await new GitHubManager(token, "", "").viewer();
|
|
23
|
-
if (!viewer.login)
|
|
24
|
-
return undefined;
|
|
25
|
-
return { login: viewer.login, avatarUrl: viewer.avatar_url };
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
return undefined;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/** Public avatar for a login we know without having called the API. */
|
|
32
|
-
function avatarForLogin(login) {
|
|
33
|
-
return `https://github.com/${encodeURIComponent(login)}.png?size=64`;
|
|
34
|
-
}
|
|
35
|
-
async function buildPRTemplate(gitCwd, manager) {
|
|
36
|
-
const git = new GitManager(gitCwd);
|
|
37
|
-
const warnings = [];
|
|
38
|
-
const status = await git.status().catch((error) => {
|
|
39
|
-
warnings.push(`Could not read local Git status: ${errorMessage(error)}`);
|
|
40
|
-
return null;
|
|
41
|
-
});
|
|
42
|
-
const repository = await manager.repoInfo().catch((error) => {
|
|
43
|
-
warnings.push(`Could not read GitHub repository metadata: ${errorMessage(error)}`);
|
|
44
|
-
return null;
|
|
45
|
-
});
|
|
46
|
-
const head = status?.branch ?? "";
|
|
47
|
-
if (!head) {
|
|
48
|
-
warnings.push("Current branch could not be detected. Enter the head branch manually.");
|
|
49
|
-
}
|
|
50
|
-
const base = repository?.default_branch ?? inferBaseFromUpstream(status?.upstream) ?? "main";
|
|
51
|
-
let compare = {
|
|
52
|
-
base,
|
|
53
|
-
head,
|
|
54
|
-
aheadBy: 0,
|
|
55
|
-
headSha: null,
|
|
56
|
-
commits: [],
|
|
57
|
-
files: [],
|
|
58
|
-
};
|
|
59
|
-
if (base && head && base !== head) {
|
|
60
|
-
compare = await readCompareSummary({ git, manager, base, head, warnings });
|
|
61
|
-
}
|
|
62
|
-
else if (head && base === head) {
|
|
63
|
-
warnings.push("The current branch matches the base branch. Choose a feature branch before creating a PR.");
|
|
64
|
-
}
|
|
65
|
-
if (compare.headSha) {
|
|
66
|
-
const ciStatus = await manager.getCommitChecks(compare.headSha).catch((error) => {
|
|
67
|
-
warnings.push(`Could not read head CI status: ${errorMessage(error)}`);
|
|
68
|
-
return null;
|
|
69
|
-
});
|
|
70
|
-
if (ciStatus) {
|
|
71
|
-
compare = { ...compare, ciStatus };
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return {
|
|
75
|
-
repository,
|
|
76
|
-
currentBranch: head || null,
|
|
77
|
-
suggestedBase: base,
|
|
78
|
-
base,
|
|
79
|
-
head,
|
|
80
|
-
title: suggestPRTitle(head, compare.commits),
|
|
81
|
-
body: suggestPRBody(compare),
|
|
82
|
-
draft: false,
|
|
83
|
-
compare,
|
|
84
|
-
warnings,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
async function readCompareSummary({ git, manager, base, head, warnings, }) {
|
|
88
|
-
try {
|
|
89
|
-
const compare = await manager.compareBranches(base, head);
|
|
90
|
-
return {
|
|
91
|
-
base,
|
|
92
|
-
head,
|
|
93
|
-
aheadBy: compare.aheadBy,
|
|
94
|
-
headSha: compare.headSha,
|
|
95
|
-
commits: compare.commits,
|
|
96
|
-
files: compare.files,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
warnings.push(`Could not compare pushed GitHub branches: ${errorMessage(error)}`);
|
|
101
|
-
}
|
|
102
|
-
for (const ref of [base, `origin/${base}`]) {
|
|
103
|
-
try {
|
|
104
|
-
return fromLocalCompare(base, head, await git.compareWithBase(ref));
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
if (ref === `origin/${base}`) {
|
|
108
|
-
warnings.push(`Could not compare local branch with ${base}: ${errorMessage(error)}`);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return { base, head, aheadBy: 0, headSha: null, commits: [], files: [] };
|
|
113
|
-
}
|
|
114
|
-
function fromLocalCompare(base, head, compare) {
|
|
115
|
-
return {
|
|
116
|
-
base,
|
|
117
|
-
head,
|
|
118
|
-
aheadBy: compare.aheadBy,
|
|
119
|
-
headSha: compare.headSha,
|
|
120
|
-
commits: compare.commits,
|
|
121
|
-
files: compare.files,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
function inferBaseFromUpstream(upstream) {
|
|
125
|
-
if (!upstream)
|
|
126
|
-
return undefined;
|
|
127
|
-
return upstream.replace(/^origin\//, "") || undefined;
|
|
128
|
-
}
|
|
129
|
-
function suggestPRTitle(head, commits) {
|
|
130
|
-
const latest = commits.at(-1)?.message.trim();
|
|
131
|
-
if (latest)
|
|
132
|
-
return latest;
|
|
133
|
-
return branchTitle(head);
|
|
134
|
-
}
|
|
135
|
-
function branchTitle(head) {
|
|
136
|
-
const leaf = head.split("/").filter(Boolean).at(-1) ?? head;
|
|
137
|
-
return leaf
|
|
138
|
-
.replace(/[-_]+/g, " ")
|
|
139
|
-
.replace(/\s+/g, " ")
|
|
140
|
-
.trim()
|
|
141
|
-
.replace(/^\w/, (char) => char.toUpperCase());
|
|
142
|
-
}
|
|
143
|
-
function suggestPRBody(compare) {
|
|
144
|
-
const lines = [];
|
|
145
|
-
if (compare.commits.length > 0) {
|
|
146
|
-
lines.push("## Commits");
|
|
147
|
-
for (const commit of compare.commits.slice(-10)) {
|
|
148
|
-
lines.push(`- ${commit.message}`);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
if (compare.files.length > 0) {
|
|
152
|
-
if (lines.length > 0)
|
|
153
|
-
lines.push("");
|
|
154
|
-
lines.push("## Changed files");
|
|
155
|
-
for (const file of compare.files.slice(0, 20)) {
|
|
156
|
-
lines.push(`- ${file.status} ${file.path}`);
|
|
157
|
-
}
|
|
158
|
-
if (compare.files.length > 20) {
|
|
159
|
-
lines.push(`- ${compare.files.length - 20} more files`);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
return lines.join("\n");
|
|
163
|
-
}
|
|
164
|
-
export const githubRoutes = [
|
|
165
|
-
// --- Token management ---
|
|
166
|
-
route("GET", "/api/github/token", async ({ response, configStore }) => {
|
|
167
|
-
const config = await configStore.load();
|
|
168
|
-
const token = configStore.getGithubToken(config);
|
|
169
|
-
const selectedRepository = getSelectedGitRepository(config);
|
|
170
|
-
const cliAccounts = await new GitHubCliAuth().listAccounts();
|
|
171
|
-
const selected = selectedRepository?.githubCredential;
|
|
172
|
-
const base = {
|
|
173
|
-
ok: true,
|
|
174
|
-
configured: !!token || selected?.source === "gh",
|
|
175
|
-
storedConfigured: !!token,
|
|
176
|
-
deviceFlowAvailable: !!getClientId(),
|
|
177
|
-
accounts: cliAccounts.accounts,
|
|
178
|
-
cliAvailable: cliAccounts.available,
|
|
179
|
-
cliError: cliAccounts.error,
|
|
180
|
-
selected,
|
|
181
|
-
repositoryName: selectedRepository?.name,
|
|
182
|
-
};
|
|
183
|
-
if (!selectedRepository && !token) {
|
|
184
|
-
sendJson(response, { ...base, status: "not_configured" });
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
// The account behind the connection, resolved without an API call whenever
|
|
188
|
-
// possible: a stored token remembers who it belongs to from connect time,
|
|
189
|
-
// and a `gh` credential already names its login (avatars are public).
|
|
190
|
-
let profile = configStore.getGithubProfile(config);
|
|
191
|
-
if (!profile && token) {
|
|
192
|
-
// Backfill for tokens stored before identity was captured, so existing
|
|
193
|
-
// installs pick up an avatar on their next status check instead of
|
|
194
|
-
// needing a reconnect.
|
|
195
|
-
profile = await fetchGitHubProfile(token);
|
|
196
|
-
if (profile)
|
|
197
|
-
await configStore.setGithubProfile("github.com", profile);
|
|
198
|
-
}
|
|
199
|
-
try {
|
|
200
|
-
if (selectedRepository) {
|
|
201
|
-
const context = await requireGitHubContext(configStore, selectedRepository.path);
|
|
202
|
-
const login = context.credential?.source === "gh" ? context.credential.login : profile?.login;
|
|
203
|
-
const user = login
|
|
204
|
-
? {
|
|
205
|
-
login,
|
|
206
|
-
avatarUrl: login === profile?.login && profile.avatarUrl
|
|
207
|
-
? profile.avatarUrl
|
|
208
|
-
: avatarForLogin(login),
|
|
209
|
-
}
|
|
210
|
-
: undefined;
|
|
211
|
-
const repositorySlug = `${context.owner}/${context.repo}`;
|
|
212
|
-
let repository;
|
|
213
|
-
try {
|
|
214
|
-
repository = await context.manager.repoInfo();
|
|
215
|
-
}
|
|
216
|
-
catch (error) {
|
|
217
|
-
// A 404 here is the credential working perfectly and answering "no
|
|
218
|
-
// such repository for you" — the signed-in account simply can't see
|
|
219
|
-
// this one. Reporting that as a failed connection sent people off to
|
|
220
|
-
// reconnect an account that was never broken.
|
|
221
|
-
if (!(error instanceof GitHubApiError) || error.status !== 404)
|
|
222
|
-
throw error;
|
|
223
|
-
sendJson(response, {
|
|
224
|
-
...base,
|
|
225
|
-
configured: true,
|
|
226
|
-
status: "repo_access",
|
|
227
|
-
credential: context.credential,
|
|
228
|
-
repositorySlug,
|
|
229
|
-
user,
|
|
230
|
-
error: errorMessage(error),
|
|
231
|
-
});
|
|
232
|
-
return;
|
|
233
|
-
}
|
|
234
|
-
sendJson(response, {
|
|
235
|
-
...base,
|
|
236
|
-
configured: true,
|
|
237
|
-
status: "connected",
|
|
238
|
-
credential: context.credential,
|
|
239
|
-
repository,
|
|
240
|
-
repositorySlug,
|
|
241
|
-
user,
|
|
242
|
-
});
|
|
243
|
-
return;
|
|
244
|
-
}
|
|
245
|
-
if (!token)
|
|
246
|
-
throw new Error("No stored GitHub token configured.");
|
|
247
|
-
let account = profile;
|
|
248
|
-
if (!account) {
|
|
249
|
-
const viewer = await new GitHubManager(token, "", "").viewer();
|
|
250
|
-
account = { login: viewer.login, avatarUrl: viewer.avatar_url };
|
|
251
|
-
}
|
|
252
|
-
sendJson(response, {
|
|
253
|
-
...base,
|
|
254
|
-
status: "connected",
|
|
255
|
-
user: {
|
|
256
|
-
login: account.login,
|
|
257
|
-
avatarUrl: account.avatarUrl ?? avatarForLogin(account.login),
|
|
258
|
-
},
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
catch (error) {
|
|
262
|
-
const status = error instanceof GitHubApiError && (error.status === 401 || error.status === 403)
|
|
263
|
-
? "auth_error"
|
|
264
|
-
: "connection_error";
|
|
265
|
-
sendJson(response, { ...base, status, error: errorMessage(error) });
|
|
266
|
-
}
|
|
267
|
-
}),
|
|
268
|
-
route("GET", "/api/github/accounts", async ({ response }) => {
|
|
269
|
-
const result = await new GitHubCliAuth().listAccounts();
|
|
270
|
-
sendJson(response, { ok: true, ...result });
|
|
271
|
-
}),
|
|
272
|
-
route("PUT", "/api/github/account", async ({ request, response, configStore }) => {
|
|
273
|
-
try {
|
|
274
|
-
const body = await readJson(request);
|
|
275
|
-
const repository = typeof body.repository === "string" ? body.repository.trim() : "";
|
|
276
|
-
const candidate = body.credential;
|
|
277
|
-
if (!repository || !candidate || typeof candidate !== "object") {
|
|
278
|
-
throw new Error("repository and credential are required");
|
|
279
|
-
}
|
|
280
|
-
const value = candidate;
|
|
281
|
-
const host = typeof value.host === "string" ? value.host.trim() : "";
|
|
282
|
-
if (host && host !== "github.com") {
|
|
283
|
-
throw new Error("The selected repository uses github.com; choose a github.com account.");
|
|
284
|
-
}
|
|
285
|
-
let credential;
|
|
286
|
-
if (value.source === "gh") {
|
|
287
|
-
const login = typeof value.login === "string" ? value.login.trim() : "";
|
|
288
|
-
if (!host || !login)
|
|
289
|
-
throw new Error("GitHub CLI host and login are required");
|
|
290
|
-
await new GitHubCliAuth().token(host, login);
|
|
291
|
-
credential = { source: "gh", host, login };
|
|
292
|
-
}
|
|
293
|
-
else if (value.source === "stored") {
|
|
294
|
-
const config = await configStore.load();
|
|
295
|
-
if (!host || !configStore.getGithubToken(config, host)) {
|
|
296
|
-
throw new Error(`No stored GitHub token configured for ${host || "that host"}.`);
|
|
297
|
-
}
|
|
298
|
-
credential = { source: "stored", host };
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
throw new Error("Unsupported GitHub credential source");
|
|
302
|
-
}
|
|
303
|
-
await configStore.setGitHubCredential(repository, credential);
|
|
304
|
-
sendJson(response, { ok: true });
|
|
305
|
-
}
|
|
306
|
-
catch (error) {
|
|
307
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
308
|
-
}
|
|
309
|
-
}),
|
|
310
|
-
route("POST", "/api/github/token", async ({ request, response, configStore }) => {
|
|
311
|
-
try {
|
|
312
|
-
const form = await readForm(request);
|
|
313
|
-
const host = form.get("host")?.trim() || "github.com";
|
|
314
|
-
const token = requiredFormValue(form, "token");
|
|
315
|
-
await configStore.setGithubToken(host, token, await fetchGitHubProfile(token));
|
|
316
|
-
const config = await configStore.load();
|
|
317
|
-
const selectedRepository = getSelectedGitRepository(config);
|
|
318
|
-
if (selectedRepository) {
|
|
319
|
-
await configStore.setGitHubCredential(selectedRepository.name, { source: "stored", host });
|
|
320
|
-
}
|
|
321
|
-
sendJson(response, { ok: true });
|
|
322
|
-
}
|
|
323
|
-
catch (error) {
|
|
324
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
325
|
-
}
|
|
326
|
-
}),
|
|
327
|
-
patternRoute(/^\/api\/github\/token\/([^/]+)$/, ["host"], async ({ request, response, configStore, params }) => {
|
|
328
|
-
if (request.method !== "DELETE") {
|
|
329
|
-
sendJson(response, { ok: false, error: "Method not allowed" }, 405);
|
|
330
|
-
return;
|
|
331
|
-
}
|
|
332
|
-
await configStore.removeGithubToken(decodeURIComponent(params.host));
|
|
333
|
-
sendJson(response, { ok: true });
|
|
334
|
-
}),
|
|
335
|
-
// --- OAuth Device Flow ---
|
|
336
|
-
route("POST", "/api/github/oauth/start", async ({ response }) => {
|
|
337
|
-
const clientId = getClientId();
|
|
338
|
-
if (!clientId) {
|
|
339
|
-
sendJson(response, { ok: false, error: "NOMOREIDE_GITHUB_CLIENT_ID is not set." }, 400);
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
try {
|
|
343
|
-
const res = await fetch(`${githubOAuthBase()}${DEVICE_CODE_PATH}`, {
|
|
344
|
-
method: "POST",
|
|
345
|
-
headers: { Accept: "application/json", "Content-Type": "application/json" },
|
|
346
|
-
body: JSON.stringify({ client_id: clientId, scope: GITHUB_SCOPES }),
|
|
347
|
-
});
|
|
348
|
-
const data = await res.json();
|
|
349
|
-
if (data.error) {
|
|
350
|
-
sendJson(response, { ok: false, error: data.error_description ?? data.error }, 400);
|
|
351
|
-
return;
|
|
352
|
-
}
|
|
353
|
-
sendJson(response, {
|
|
354
|
-
ok: true,
|
|
355
|
-
device_code: data.device_code,
|
|
356
|
-
user_code: data.user_code,
|
|
357
|
-
verification_uri: data.verification_uri,
|
|
358
|
-
verification_uri_complete: data.verification_uri_complete ?? data.verification_uri,
|
|
359
|
-
expires_in: data.expires_in ?? 900,
|
|
360
|
-
interval: data.interval ?? 5,
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
catch (error) {
|
|
364
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 500);
|
|
365
|
-
}
|
|
366
|
-
}),
|
|
367
|
-
route("POST", "/api/github/oauth/poll", async ({ request, response, configStore }) => {
|
|
368
|
-
const clientId = getClientId();
|
|
369
|
-
if (!clientId) {
|
|
370
|
-
sendJson(response, { ok: false, error: "NOMOREIDE_GITHUB_CLIENT_ID is not set." }, 400);
|
|
371
|
-
return;
|
|
372
|
-
}
|
|
373
|
-
try {
|
|
374
|
-
const body = await readJson(request);
|
|
375
|
-
const deviceCode = typeof body.device_code === "string" ? body.device_code : "";
|
|
376
|
-
if (!deviceCode) {
|
|
377
|
-
sendJson(response, { ok: false, error: "device_code is required" }, 400);
|
|
378
|
-
return;
|
|
379
|
-
}
|
|
380
|
-
const res = await fetch(`${githubOAuthBase()}${ACCESS_TOKEN_PATH}`, {
|
|
381
|
-
method: "POST",
|
|
382
|
-
headers: { Accept: "application/json", "Content-Type": "application/json" },
|
|
383
|
-
body: JSON.stringify({
|
|
384
|
-
client_id: clientId,
|
|
385
|
-
device_code: deviceCode,
|
|
386
|
-
grant_type: "urn:ietf:params:oauth:grant-type:device_code",
|
|
387
|
-
}),
|
|
388
|
-
});
|
|
389
|
-
const data = await res.json();
|
|
390
|
-
if (data.access_token) {
|
|
391
|
-
await configStore.setGithubToken("github.com", data.access_token, await fetchGitHubProfile(data.access_token));
|
|
392
|
-
const config = await configStore.load();
|
|
393
|
-
const selectedRepository = getSelectedGitRepository(config);
|
|
394
|
-
if (selectedRepository) {
|
|
395
|
-
await configStore.setGitHubCredential(selectedRepository.name, {
|
|
396
|
-
source: "stored",
|
|
397
|
-
host: "github.com",
|
|
398
|
-
});
|
|
399
|
-
}
|
|
400
|
-
sendJson(response, { ok: true, done: true });
|
|
401
|
-
return;
|
|
402
|
-
}
|
|
403
|
-
// authorization_pending and slow_down are expected — not errors
|
|
404
|
-
const pending = data.error === "authorization_pending" || data.error === "slow_down";
|
|
405
|
-
if (pending) {
|
|
406
|
-
sendJson(response, { ok: true, done: false, slowDown: data.error === "slow_down" });
|
|
407
|
-
return;
|
|
408
|
-
}
|
|
409
|
-
sendJson(response, {
|
|
410
|
-
ok: false,
|
|
411
|
-
error: data.error_description ?? data.error ?? "Authorization failed",
|
|
412
|
-
}, 400);
|
|
413
|
-
}
|
|
414
|
-
catch (error) {
|
|
415
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 500);
|
|
416
|
-
}
|
|
417
|
-
}),
|
|
418
|
-
route("GET", "/api/github/branches", async ({ response, configStore, cwd }) => {
|
|
419
|
-
try {
|
|
420
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
421
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
422
|
-
const [repository, branches, status] = await Promise.all([
|
|
423
|
-
manager.repoInfo(),
|
|
424
|
-
manager.listBranches(),
|
|
425
|
-
new GitManager(gitCwd).status().catch(() => null),
|
|
426
|
-
]);
|
|
427
|
-
sendJson(response, {
|
|
428
|
-
ok: true,
|
|
429
|
-
repository,
|
|
430
|
-
defaultBranch: repository.default_branch ?? null,
|
|
431
|
-
currentBranch: status?.branch || null,
|
|
432
|
-
branches,
|
|
433
|
-
});
|
|
434
|
-
}
|
|
435
|
-
catch (error) {
|
|
436
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
437
|
-
}
|
|
438
|
-
}),
|
|
439
|
-
// --- Pull Requests ---
|
|
440
|
-
route("GET", "/api/github/prs", async ({ response, url, configStore, cwd }) => {
|
|
441
|
-
try {
|
|
442
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
443
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
444
|
-
const state = (url.searchParams.get("state") || "open");
|
|
445
|
-
const page = Number(url.searchParams.get("page")) || 1;
|
|
446
|
-
const prs = await manager.listPRs(state, page);
|
|
447
|
-
sendJson(response, { ok: true, prs });
|
|
448
|
-
}
|
|
449
|
-
catch (error) {
|
|
450
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
451
|
-
}
|
|
452
|
-
}),
|
|
453
|
-
route("GET", "/api/github/pr-template", async ({ response, configStore, cwd }) => {
|
|
454
|
-
try {
|
|
455
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
456
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
457
|
-
const template = await buildPRTemplate(gitCwd, manager);
|
|
458
|
-
sendJson(response, { ok: true, template });
|
|
459
|
-
}
|
|
460
|
-
catch (error) {
|
|
461
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
462
|
-
}
|
|
463
|
-
}),
|
|
464
|
-
route("POST", "/api/github/prs", async ({ request, response, configStore, cwd }) => {
|
|
465
|
-
try {
|
|
466
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
467
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
468
|
-
const body = await readJson(request);
|
|
469
|
-
const title = typeof body.title === "string" ? body.title.trim() : "";
|
|
470
|
-
const head = typeof body.head === "string" ? body.head.trim() : "";
|
|
471
|
-
const base = typeof body.base === "string" ? body.base.trim() : "";
|
|
472
|
-
if (!title || !head || !base) {
|
|
473
|
-
sendJson(response, { ok: false, error: "title, head, and base are required" }, 400);
|
|
474
|
-
return;
|
|
475
|
-
}
|
|
476
|
-
const pr = await manager.createPR({
|
|
477
|
-
title,
|
|
478
|
-
body: typeof body.body === "string" ? body.body : undefined,
|
|
479
|
-
head,
|
|
480
|
-
base,
|
|
481
|
-
draft: body.draft === true,
|
|
482
|
-
});
|
|
483
|
-
sendJson(response, { ok: true, pr });
|
|
484
|
-
}
|
|
485
|
-
catch (error) {
|
|
486
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
487
|
-
}
|
|
488
|
-
}),
|
|
489
|
-
patternRoute(/^\/api\/github\/prs\/(\d+)$/, ["number"], async ({ request, response, configStore, cwd, params }) => {
|
|
490
|
-
if (request.method !== "GET") {
|
|
491
|
-
sendJson(response, { ok: false, error: "Method not allowed" }, 405);
|
|
492
|
-
return;
|
|
493
|
-
}
|
|
494
|
-
try {
|
|
495
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
496
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
497
|
-
const pr = await manager.getPR(Number(params.number));
|
|
498
|
-
sendJson(response, { ok: true, pr });
|
|
499
|
-
}
|
|
500
|
-
catch (error) {
|
|
501
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
502
|
-
}
|
|
503
|
-
}),
|
|
504
|
-
patternRoute(/^\/api\/github\/prs\/(\d+)\/merge$/, ["number"], async ({ request, response, configStore, cwd, params }) => {
|
|
505
|
-
if (request.method !== "POST") {
|
|
506
|
-
sendJson(response, { ok: false, error: "Method not allowed" }, 405);
|
|
507
|
-
return;
|
|
508
|
-
}
|
|
509
|
-
try {
|
|
510
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
511
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
512
|
-
const body = await readJson(request).catch(() => ({}));
|
|
513
|
-
const requested = typeof body.method === "string" ? body.method : "squash";
|
|
514
|
-
const method = (["merge", "squash", "rebase"].includes(requested)
|
|
515
|
-
? requested
|
|
516
|
-
: "squash");
|
|
517
|
-
const result = await manager.mergePR(Number(params.number), {
|
|
518
|
-
method,
|
|
519
|
-
commitTitle: typeof body.commitTitle === "string" ? body.commitTitle : undefined,
|
|
520
|
-
commitMessage: typeof body.commitMessage === "string" ? body.commitMessage : undefined,
|
|
521
|
-
});
|
|
522
|
-
sendJson(response, { ok: true, ...result });
|
|
523
|
-
}
|
|
524
|
-
catch (error) {
|
|
525
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
526
|
-
}
|
|
527
|
-
}),
|
|
528
|
-
patternRoute(/^\/api\/github\/prs\/(\d+)\/review$/, ["number"], async ({ request, response, configStore, cwd, params }) => {
|
|
529
|
-
if (request.method !== "GET") {
|
|
530
|
-
sendJson(response, { ok: false, error: "Method not allowed" }, 405);
|
|
531
|
-
return;
|
|
532
|
-
}
|
|
533
|
-
try {
|
|
534
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
535
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
536
|
-
const number = Number(params.number);
|
|
537
|
-
const pr = await manager.getPR(number);
|
|
538
|
-
const [files, reviews, comments, checks] = await Promise.all([
|
|
539
|
-
manager.listPRFiles(number),
|
|
540
|
-
manager.listPRReviews(number),
|
|
541
|
-
manager.listIssueComments(number),
|
|
542
|
-
manager.getCommitChecks(pr.head.sha),
|
|
543
|
-
]);
|
|
544
|
-
sendJson(response, {
|
|
545
|
-
ok: true,
|
|
546
|
-
cockpit: { pr, files, reviews, comments, checks },
|
|
547
|
-
});
|
|
548
|
-
}
|
|
549
|
-
catch (error) {
|
|
550
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
551
|
-
}
|
|
552
|
-
}),
|
|
553
|
-
patternRoute(/^\/api\/github\/prs\/(\d+)\/diff$/, ["number"], async ({ request, response, configStore, cwd, params }) => {
|
|
554
|
-
if (request.method !== "GET") {
|
|
555
|
-
sendJson(response, { ok: false, error: "Method not allowed" }, 405);
|
|
556
|
-
return;
|
|
557
|
-
}
|
|
558
|
-
try {
|
|
559
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
560
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
561
|
-
const diff = await manager.getPRDiff(Number(params.number));
|
|
562
|
-
sendText(response, diff);
|
|
563
|
-
}
|
|
564
|
-
catch (error) {
|
|
565
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
566
|
-
}
|
|
567
|
-
}),
|
|
568
|
-
// --- Issues ---
|
|
569
|
-
route("GET", "/api/github/issues", async ({ response, url, configStore, cwd }) => {
|
|
570
|
-
try {
|
|
571
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
572
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
573
|
-
const state = (url.searchParams.get("state") || "open");
|
|
574
|
-
const page = Number(url.searchParams.get("page")) || 1;
|
|
575
|
-
const issues = await manager.listIssues(state, page);
|
|
576
|
-
sendJson(response, { ok: true, issues });
|
|
577
|
-
}
|
|
578
|
-
catch (error) {
|
|
579
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
580
|
-
}
|
|
581
|
-
}),
|
|
582
|
-
route("POST", "/api/github/issues", async ({ request, response, configStore, cwd }) => {
|
|
583
|
-
try {
|
|
584
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
585
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
586
|
-
const body = await readJson(request);
|
|
587
|
-
const title = typeof body.title === "string" ? body.title.trim() : "";
|
|
588
|
-
if (!title) {
|
|
589
|
-
sendJson(response, { ok: false, error: "title is required" }, 400);
|
|
590
|
-
return;
|
|
591
|
-
}
|
|
592
|
-
const issue = await manager.createIssue({
|
|
593
|
-
title,
|
|
594
|
-
body: typeof body.body === "string" ? body.body : undefined,
|
|
595
|
-
});
|
|
596
|
-
sendJson(response, { ok: true, issue });
|
|
597
|
-
}
|
|
598
|
-
catch (error) {
|
|
599
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
600
|
-
}
|
|
601
|
-
}),
|
|
602
|
-
patternRoute(/^\/api\/github\/issues\/(\d+)$/, ["number"], async ({ request, response, configStore, cwd, params }) => {
|
|
603
|
-
if (request.method !== "GET") {
|
|
604
|
-
sendJson(response, { ok: false, error: "Method not allowed" }, 405);
|
|
605
|
-
return;
|
|
606
|
-
}
|
|
607
|
-
try {
|
|
608
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
609
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
610
|
-
const issue = await manager.getIssue(Number(params.number));
|
|
611
|
-
sendJson(response, { ok: true, issue });
|
|
612
|
-
}
|
|
613
|
-
catch (error) {
|
|
614
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
615
|
-
}
|
|
616
|
-
}),
|
|
617
|
-
patternRoute(/^\/api\/github\/issues\/(\d+)\/comments$/, ["number"], async ({ request, response, configStore, cwd, params }) => {
|
|
618
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
619
|
-
const number = Number(params.number);
|
|
620
|
-
if (request.method === "GET") {
|
|
621
|
-
try {
|
|
622
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
623
|
-
const comments = await manager.listIssueComments(number);
|
|
624
|
-
sendJson(response, { ok: true, comments });
|
|
625
|
-
}
|
|
626
|
-
catch (error) {
|
|
627
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
628
|
-
}
|
|
629
|
-
return;
|
|
630
|
-
}
|
|
631
|
-
if (request.method === "POST") {
|
|
632
|
-
try {
|
|
633
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
634
|
-
const body = await readJson(request);
|
|
635
|
-
const text = typeof body.body === "string" ? body.body.trim() : "";
|
|
636
|
-
if (!text) {
|
|
637
|
-
sendJson(response, { ok: false, error: "body is required" }, 400);
|
|
638
|
-
return;
|
|
639
|
-
}
|
|
640
|
-
const comment = await manager.addIssueComment(number, text);
|
|
641
|
-
sendJson(response, { ok: true, comment });
|
|
642
|
-
}
|
|
643
|
-
catch (error) {
|
|
644
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
645
|
-
}
|
|
646
|
-
return;
|
|
647
|
-
}
|
|
648
|
-
sendJson(response, { ok: false, error: "Method not allowed" }, 405);
|
|
649
|
-
}),
|
|
650
|
-
// --- CI / Actions ---
|
|
651
|
-
patternRoute(/^\/api\/github\/ci\/([0-9a-f]{4,64})$/, ["sha"], async ({ request, response, configStore, cwd, params }) => {
|
|
652
|
-
if (request.method !== "GET") {
|
|
653
|
-
sendJson(response, { ok: false, error: "Method not allowed" }, 405);
|
|
654
|
-
return;
|
|
655
|
-
}
|
|
656
|
-
try {
|
|
657
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
658
|
-
const ctx = await optionalGitHubContext(configStore, gitCwd);
|
|
659
|
-
if (!ctx) {
|
|
660
|
-
sendJson(response, { ok: true, status: { sha: params.sha, state: "unknown", totalCount: 0, runs: [] } });
|
|
661
|
-
return;
|
|
662
|
-
}
|
|
663
|
-
const status = await ctx.manager.getCommitChecks(params.sha);
|
|
664
|
-
sendJson(response, { ok: true, status });
|
|
665
|
-
}
|
|
666
|
-
catch (error) {
|
|
667
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
668
|
-
}
|
|
669
|
-
}),
|
|
670
|
-
route("GET", "/api/github/runs", async ({ response, url, configStore, cwd }) => {
|
|
671
|
-
try {
|
|
672
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
673
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
674
|
-
const branch = url.searchParams.get("branch") || undefined;
|
|
675
|
-
const page = Number(url.searchParams.get("page")) || 1;
|
|
676
|
-
const runs = await manager.listWorkflowRuns(branch, page);
|
|
677
|
-
sendJson(response, { ok: true, runs });
|
|
678
|
-
}
|
|
679
|
-
catch (error) {
|
|
680
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
681
|
-
}
|
|
682
|
-
}),
|
|
683
|
-
patternRoute(/^\/api\/github\/runs\/(\d+)\/jobs$/, ["runId"], async ({ request, response, configStore, cwd, params }) => {
|
|
684
|
-
if (request.method !== "GET") {
|
|
685
|
-
sendJson(response, { ok: false, error: "Method not allowed" }, 405);
|
|
686
|
-
return;
|
|
687
|
-
}
|
|
688
|
-
try {
|
|
689
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
690
|
-
const { manager } = await requireGitHubContext(configStore, gitCwd);
|
|
691
|
-
const jobs = await manager.listWorkflowRunJobs(Number(params.runId));
|
|
692
|
-
sendJson(response, { ok: true, jobs });
|
|
693
|
-
}
|
|
694
|
-
catch (error) {
|
|
695
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
696
|
-
}
|
|
697
|
-
}),
|
|
698
|
-
];
|
|
699
|
-
//# sourceMappingURL=github-routes.js.map
|