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,160 +0,0 @@
|
|
|
1
|
-
import type { SshServerDefinition } from "../types.js";
|
|
2
|
-
import type { ProviderAccount } from "./deploy-provider.js";
|
|
3
|
-
import type { ProviderApiSpec } from "./egress.js";
|
|
4
|
-
import type { ProviderStrings } from "./strings.js";
|
|
5
|
-
/**
|
|
6
|
-
* The contract an infrastructure host implements — Vultr today, DigitalOcean
|
|
7
|
-
* and Hetzner next.
|
|
8
|
-
*
|
|
9
|
-
* This is the *second* contract, and it exists because the first one could not
|
|
10
|
-
* hold it. A Vultr instance has no projects, no deployments, no build logs and
|
|
11
|
-
* no environment variables; what it has is an address, a power state, and a
|
|
12
|
-
* shell. One `Plugin` interface wide enough for both would have been a union of
|
|
13
|
-
* two disjoint halves, so `DeployProvider` and `HostProvider` stay separate and
|
|
14
|
-
* narrow — see §2 of `docs/plans/2026-08-13-provider-registry-design.md`.
|
|
15
|
-
*
|
|
16
|
-
* What the two contracts *do* share is deliberately shared rather than
|
|
17
|
-
* re-declared: {@link ProviderAccount}, the whole of `providers/credentials.ts`
|
|
18
|
-
* (a host provider's token resolves through the same three-source model), and
|
|
19
|
-
* the read-safe / write-capable split. That overlap is the evidence the
|
|
20
|
-
* provider layer generalized rather than just being renamed.
|
|
21
|
-
*
|
|
22
|
-
* {@link HostProvider.toSshTarget} is why this contract earns its keep: a
|
|
23
|
-
* provider instance becomes a row in the SSH server list the user already has,
|
|
24
|
-
* with the existing probe, metrics and terminal working against it, without
|
|
25
|
-
* anyone registering it by hand.
|
|
26
|
-
*/
|
|
27
|
-
/**
|
|
28
|
-
* Normalized power state, chosen — like {@link
|
|
29
|
-
* import("./deploy-provider.js").ProviderDeploymentState} — to be the
|
|
30
|
-
* intersection that drives an icon and a filter. Anything finer belongs in
|
|
31
|
-
* `rawState`.
|
|
32
|
-
*
|
|
33
|
-
* There is no `suspended`: a vendor lock (Vultr's `suspended`, and whatever
|
|
34
|
-
* each other IaaS calls it) is something the user must act on, which is what
|
|
35
|
-
* `error` already means to the UI, and the vendor's own word survives in
|
|
36
|
-
* `rawState`. That is the pressure valve the deploy contract added on day one
|
|
37
|
-
* and this one inherits.
|
|
38
|
-
*/
|
|
39
|
-
export type HostInstanceState = "running" | "stopped" | "provisioning" | "error" | "unknown";
|
|
40
|
-
/** One virtual machine. */
|
|
41
|
-
export interface HostInstance {
|
|
42
|
-
id: string;
|
|
43
|
-
/** What the user named it, falling back to its hostname or id. */
|
|
44
|
-
label: string;
|
|
45
|
-
/** Drives the icon and the filter. */
|
|
46
|
-
state: HostInstanceState;
|
|
47
|
-
/** The vendor's own word for the state, shown in the UI detail. */
|
|
48
|
-
rawState: string;
|
|
49
|
-
/**
|
|
50
|
-
* Public IPv4. Absent while the instance is still being provisioned, which
|
|
51
|
-
* is exactly when it has no address to be reached at.
|
|
52
|
-
*/
|
|
53
|
-
ipv4?: string;
|
|
54
|
-
ipv6?: string;
|
|
55
|
-
/** The instance's own hostname, when the vendor reports one. */
|
|
56
|
-
hostname?: string;
|
|
57
|
-
/** The vendor's region code — `ewr`, `nyc3`, `fsn1`. */
|
|
58
|
-
region?: string;
|
|
59
|
-
/** The vendor's plan / size id. */
|
|
60
|
-
plan?: string;
|
|
61
|
-
/** Operating system, as the vendor describes it. */
|
|
62
|
-
os?: string;
|
|
63
|
-
specs?: {
|
|
64
|
-
vcpus?: number;
|
|
65
|
-
memoryMb?: number;
|
|
66
|
-
diskGb?: number;
|
|
67
|
-
};
|
|
68
|
-
tags: string[];
|
|
69
|
-
createdAt?: number;
|
|
70
|
-
/**
|
|
71
|
-
* The login the vendor created on the machine — `root` for Vultr's default
|
|
72
|
-
* scheme, `linuxuser` for its unprivileged one, `ubuntu` or `ec2-user`
|
|
73
|
-
* elsewhere. Neutral because every IaaS builds an image with *some* account
|
|
74
|
-
* on it, and load-bearing because {@link HostProvider.toSshTarget} without it
|
|
75
|
-
* produces a host that `ssh` tries to reach as the local username.
|
|
76
|
-
*/
|
|
77
|
-
defaultUser?: string;
|
|
78
|
-
}
|
|
79
|
-
/** Which provider instance backs an SSH host, carried into the servers list. */
|
|
80
|
-
export interface HostInstanceRef {
|
|
81
|
-
providerId: string;
|
|
82
|
-
/** The provider's display name, so the row can be labelled without a lookup. */
|
|
83
|
-
providerName: string;
|
|
84
|
-
instanceId: string;
|
|
85
|
-
state: HostInstanceState;
|
|
86
|
-
rawState: string;
|
|
87
|
-
region?: string;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* An SSH target adopted from a provider instance — a plain
|
|
91
|
-
* {@link SshServerDefinition}, which is the point: everything downstream
|
|
92
|
-
* (`probeSshServer`, `readRemoteHostMetrics`, the terminal route, the remote
|
|
93
|
-
* service runner) already takes one and needs no knowledge of providers.
|
|
94
|
-
*/
|
|
95
|
-
export interface HostSshTarget extends SshServerDefinition {
|
|
96
|
-
instance: HostInstanceRef;
|
|
97
|
-
}
|
|
98
|
-
/** The read-safe half. Nothing here starts, stops or destroys a machine. */
|
|
99
|
-
export interface HostProvider {
|
|
100
|
-
/** Signed-in account. Reuses the deploy contract's type — an account is an account. */
|
|
101
|
-
account(): Promise<ProviderAccount>;
|
|
102
|
-
listInstances(): Promise<HostInstance[]>;
|
|
103
|
-
getInstance(id: string): Promise<HostInstance>;
|
|
104
|
-
/**
|
|
105
|
-
* The instance as an SSH host, or null when there is nothing to connect to
|
|
106
|
-
* yet.
|
|
107
|
-
*
|
|
108
|
-
* Nullable because a machine that is still provisioning genuinely has no
|
|
109
|
-
* address, and the alternative — inventing a placeholder host — would put a
|
|
110
|
-
* row in the servers list that can only ever fail to connect. A *stopped*
|
|
111
|
-
* instance still returns a target: it keeps its address, and being able to
|
|
112
|
-
* see it in the list is how the user notices it is down.
|
|
113
|
-
*/
|
|
114
|
-
toSshTarget(instance: HostInstance): HostSshTarget | null;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* The write-capable half — dashboard-only, never an MCP tool.
|
|
118
|
-
*
|
|
119
|
-
* Split from {@link HostProvider} for the same reason `git-actions.ts` is split
|
|
120
|
-
* from `git-manager.ts`: halting a production database server is not something
|
|
121
|
-
* an agent holding read tools should be one call away from. §7 of the design
|
|
122
|
-
* plan sketched `run?()` on the read interface; writing it that way would have
|
|
123
|
-
* been the first crack in a boundary the rest of the codebase keeps.
|
|
124
|
-
*
|
|
125
|
-
* Named actions rather than `start()`/`stop()`/`reboot()` for the reason the
|
|
126
|
-
* deploy contract gives: "halt" is Vultr's word, "power_off" is DigitalOcean's,
|
|
127
|
-
* and the manifest is where a vendor's vocabulary belongs.
|
|
128
|
-
*/
|
|
129
|
-
export interface HostProviderActions {
|
|
130
|
-
run(action: string, instanceId: string): Promise<void>;
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* The declarative half — what a generic view needs to render a host provider
|
|
134
|
-
* without knowing which one it is.
|
|
135
|
-
*/
|
|
136
|
-
export interface HostProviderManifest {
|
|
137
|
-
id: string;
|
|
138
|
-
name: string;
|
|
139
|
-
kind: "host";
|
|
140
|
-
/**
|
|
141
|
-
* This provider's own words, per locale — the same field, the same meaning
|
|
142
|
-
* and the same enforcement as a deploy provider's.
|
|
143
|
-
*
|
|
144
|
-
* A host provider needs it at least as much: "halt" is Vultr's word,
|
|
145
|
-
* "power_off" is DigitalOcean's, and neither is a sentence a host catalogue
|
|
146
|
-
* could have been written to contain. No `scope.label` here — a host
|
|
147
|
-
* provider's instances are not grouped under anything the user picks between.
|
|
148
|
-
*/
|
|
149
|
-
strings: ProviderStrings;
|
|
150
|
-
/** Action names accepted by {@link HostProviderActions.run}. */
|
|
151
|
-
actions: string[];
|
|
152
|
-
/** The subset of `actions` that interrupts a running machine; the UI confirms these first. */
|
|
153
|
-
productionAffecting: string[];
|
|
154
|
-
/**
|
|
155
|
-
* The egress allowlist — every host this provider may reach. Identical in
|
|
156
|
-
* meaning and enforcement to a deploy provider's, and one of the few fields
|
|
157
|
-
* the two contracts share, because the daemon it runs inside is the same one.
|
|
158
|
-
*/
|
|
159
|
-
api: ProviderApiSpec;
|
|
160
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"host-provider.js","sourceRoot":"","sources":["../../../src/core/providers/host-provider.ts"],"names":[],"mappings":""}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
/** Refresh a little early so a call never starts with an about-to-expire token. */
|
|
2
|
-
export declare const TOKEN_REFRESH_SKEW_MS: number;
|
|
3
|
-
/**
|
|
4
|
-
* The vendor-specific half of a browser sign-in.
|
|
5
|
-
*
|
|
6
|
-
* Deliberately four plain values and no behaviour: this is the shape that has
|
|
7
|
-
* to survive being read out of a provider manifest rather than compiled in.
|
|
8
|
-
*/
|
|
9
|
-
export interface ProviderOAuthSpec {
|
|
10
|
-
/** Display name, used verbatim in every message the user may see. */
|
|
11
|
-
name: string;
|
|
12
|
-
/** Issuer whose `/.well-known/openid-configuration` is read. */
|
|
13
|
-
issuer: string;
|
|
14
|
-
/** Scopes requested at authorize time, space-separated. */
|
|
15
|
-
scope: string;
|
|
16
|
-
/** Path the loopback redirect points at, e.g. `/api/providers/vercel/oauth/callback`. */
|
|
17
|
-
callbackPath: string;
|
|
18
|
-
/** Name registered with the authorization server. */
|
|
19
|
-
clientName?: string;
|
|
20
|
-
}
|
|
21
|
-
export interface OAuthMetadata {
|
|
22
|
-
authorizationEndpoint: string;
|
|
23
|
-
tokenEndpoint: string;
|
|
24
|
-
registrationEndpoint?: string;
|
|
25
|
-
userinfoEndpoint?: string;
|
|
26
|
-
}
|
|
27
|
-
export interface OAuthTokens {
|
|
28
|
-
accessToken: string;
|
|
29
|
-
refreshToken?: string;
|
|
30
|
-
/** Epoch ms at which `accessToken` stops being accepted. */
|
|
31
|
-
expiresAt: number;
|
|
32
|
-
}
|
|
33
|
-
export interface PendingLogin {
|
|
34
|
-
state: string;
|
|
35
|
-
verifier: string;
|
|
36
|
-
clientId: string;
|
|
37
|
-
redirectUri: string;
|
|
38
|
-
authorizeUrl: string;
|
|
39
|
-
createdAt: number;
|
|
40
|
-
}
|
|
41
|
-
/** Injected in tests; defaults to the global `fetch`. */
|
|
42
|
-
export interface OAuthDeps {
|
|
43
|
-
fetchImpl?: typeof fetch;
|
|
44
|
-
now?: () => number;
|
|
45
|
-
}
|
|
46
|
-
export declare const clock: (deps: OAuthDeps | undefined) => number;
|
|
47
|
-
/**
|
|
48
|
-
* Exposed for tests, which must not inherit another case's cached discovery.
|
|
49
|
-
* With no argument every issuer is cleared.
|
|
50
|
-
*/
|
|
51
|
-
export declare function resetOAuthDiscoveryCache(issuer?: string): void;
|
|
52
|
-
/**
|
|
53
|
-
* The issuer's advertised endpoints. Discovered rather than hard-coded so a
|
|
54
|
-
* move of the token or registration endpoint doesn't silently break sign-in.
|
|
55
|
-
*/
|
|
56
|
-
export declare function discoverOAuth(spec: ProviderOAuthSpec, deps?: OAuthDeps): Promise<OAuthMetadata>;
|
|
57
|
-
/**
|
|
58
|
-
* Registers a client for `redirectUri` (RFC 7591).
|
|
59
|
-
*
|
|
60
|
-
* Called immediately before every sign-in rather than once at install time:
|
|
61
|
-
* the endpoint may hand back a shared client whose redirect list is replaced by
|
|
62
|
-
* whatever was registered last, so re-registering is what guarantees our own
|
|
63
|
-
* redirect is the one in force when we send the user to the consent screen.
|
|
64
|
-
*/
|
|
65
|
-
export declare function registerOAuthClient(spec: ProviderOAuthSpec, metadata: OAuthMetadata, redirectUri: string, deps?: OAuthDeps): Promise<string>;
|
|
66
|
-
/** Registers a client and builds the URL the user's browser must open. */
|
|
67
|
-
export declare function beginLogin(spec: ProviderOAuthSpec, redirectUri: string, deps?: OAuthDeps): Promise<PendingLogin>;
|
|
68
|
-
/** Exchanges the authorization code the callback received for tokens. */
|
|
69
|
-
export declare function completeLogin(spec: ProviderOAuthSpec, pending: PendingLogin, code: string, deps?: OAuthDeps): Promise<OAuthTokens>;
|
|
70
|
-
/**
|
|
71
|
-
* Trades a refresh token for a fresh access token. Treat the returned
|
|
72
|
-
* `refreshToken` as replacing the one passed in — providers rotate on use.
|
|
73
|
-
*/
|
|
74
|
-
export declare function refreshOAuthTokens(spec: ProviderOAuthSpec, clientId: string, refreshToken: string, deps?: OAuthDeps): Promise<OAuthTokens>;
|
|
75
|
-
/**
|
|
76
|
-
* The sign-ins awaiting their callback. Kept in memory, never on disk: the
|
|
77
|
-
* PKCE verifier is only meaningful for the minutes between the redirect and
|
|
78
|
-
* the callback, and a restart mid-login is better restarted than resumed.
|
|
79
|
-
*/
|
|
80
|
-
export declare class LoginSessions {
|
|
81
|
-
private readonly now;
|
|
82
|
-
private readonly pending;
|
|
83
|
-
constructor(now?: () => number);
|
|
84
|
-
remember(login: PendingLogin): void;
|
|
85
|
-
/** Returns and forgets the login for `state`; a code is only redeemable once. */
|
|
86
|
-
take(state: string): PendingLogin | undefined;
|
|
87
|
-
private sweep;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* The loopback callback URL for a request that arrived on `host`.
|
|
91
|
-
*
|
|
92
|
-
* Derived from the incoming Host header so the flow works on whatever port the
|
|
93
|
-
* daemon (or the Vite dev proxy) is actually serving, and rejected unless it is
|
|
94
|
-
* loopback — a redirect pointing anywhere else would hand the code to a host
|
|
95
|
-
* that is not this machine.
|
|
96
|
-
*/
|
|
97
|
-
export declare function loopbackCallbackUrl(spec: ProviderOAuthSpec, host: string | undefined): string;
|
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
import { createHash, randomBytes } from "node:crypto";
|
|
2
|
-
/**
|
|
3
|
-
* Browser sign-in for a deploy/host provider: OAuth 2.0 authorization code +
|
|
4
|
-
* PKCE against a loopback redirect (RFC 8252, "OAuth 2.0 for Native Apps").
|
|
5
|
-
*
|
|
6
|
-
* Every provider that offers a browser sign-in needs the same seven things —
|
|
7
|
-
* discovery, dynamic client registration, a PKCE challenge, the authorize URL,
|
|
8
|
-
* the code exchange, a rotating refresh, and somewhere to park the verifier
|
|
9
|
-
* between the redirect and the callback. None of that is vendor-specific. What
|
|
10
|
-
* *is* vendor-specific is four constants, which arrive as a
|
|
11
|
-
* {@link ProviderOAuthSpec}.
|
|
12
|
-
*
|
|
13
|
-
* Two behaviours this module is built around, both first met in Vercel's
|
|
14
|
-
* authorization server and both common enough to be the default:
|
|
15
|
-
*
|
|
16
|
-
* 1. `offline_access` (or the provider's equivalent) is **required**. Without
|
|
17
|
-
* it the grant comes back with no refresh token and dies after an hour,
|
|
18
|
-
* forcing the user to sign in again. Hence `scope` is not optional.
|
|
19
|
-
* 2. Refresh may **rotate**: a refresh can return a new refresh token and
|
|
20
|
-
* invalidate the previous one, so the caller must persist what comes back.
|
|
21
|
-
* Callers must treat the returned `refreshToken` as replacing the one they
|
|
22
|
-
* passed in, whether or not their provider rotates.
|
|
23
|
-
*/
|
|
24
|
-
const DISCOVERY_TTL_MS = 60 * 60 * 1000;
|
|
25
|
-
const PENDING_LOGIN_TTL_MS = 10 * 60 * 1000;
|
|
26
|
-
/** Refresh a little early so a call never starts with an about-to-expire token. */
|
|
27
|
-
export const TOKEN_REFRESH_SKEW_MS = 60 * 1000;
|
|
28
|
-
const DEFAULT_CLIENT_NAME = "NoMoreIDE";
|
|
29
|
-
const call = (deps) => deps?.fetchImpl ?? fetch;
|
|
30
|
-
export const clock = (deps) => (deps?.now ?? Date.now)();
|
|
31
|
-
/**
|
|
32
|
-
* Discovered metadata per issuer. Keyed rather than a single slot because two
|
|
33
|
-
* providers signed in at once would otherwise serve each other's endpoints.
|
|
34
|
-
*/
|
|
35
|
-
const cachedMetadata = new Map();
|
|
36
|
-
/**
|
|
37
|
-
* Exposed for tests, which must not inherit another case's cached discovery.
|
|
38
|
-
* With no argument every issuer is cleared.
|
|
39
|
-
*/
|
|
40
|
-
export function resetOAuthDiscoveryCache(issuer) {
|
|
41
|
-
if (issuer)
|
|
42
|
-
cachedMetadata.delete(issuer);
|
|
43
|
-
else
|
|
44
|
-
cachedMetadata.clear();
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* The issuer's advertised endpoints. Discovered rather than hard-coded so a
|
|
48
|
-
* move of the token or registration endpoint doesn't silently break sign-in.
|
|
49
|
-
*/
|
|
50
|
-
export async function discoverOAuth(spec, deps) {
|
|
51
|
-
const now = clock(deps);
|
|
52
|
-
const cached = cachedMetadata.get(spec.issuer);
|
|
53
|
-
if (cached && now - cached.fetchedAt < DISCOVERY_TTL_MS)
|
|
54
|
-
return cached.value;
|
|
55
|
-
const response = await call(deps)(`${spec.issuer}/.well-known/openid-configuration`, {
|
|
56
|
-
headers: { Accept: "application/json" },
|
|
57
|
-
});
|
|
58
|
-
if (!response.ok) {
|
|
59
|
-
throw new Error(`${spec.name} OAuth discovery failed (HTTP ${response.status}).`);
|
|
60
|
-
}
|
|
61
|
-
const body = (await response.json());
|
|
62
|
-
const authorizationEndpoint = stringField(body, "authorization_endpoint");
|
|
63
|
-
const tokenEndpoint = stringField(body, "token_endpoint");
|
|
64
|
-
if (!authorizationEndpoint || !tokenEndpoint) {
|
|
65
|
-
throw new Error(`${spec.name} OAuth discovery is missing its authorization or token endpoint.`);
|
|
66
|
-
}
|
|
67
|
-
const value = {
|
|
68
|
-
authorizationEndpoint,
|
|
69
|
-
tokenEndpoint,
|
|
70
|
-
registrationEndpoint: stringField(body, "registration_endpoint"),
|
|
71
|
-
userinfoEndpoint: stringField(body, "userinfo_endpoint"),
|
|
72
|
-
};
|
|
73
|
-
cachedMetadata.set(spec.issuer, { value, fetchedAt: now });
|
|
74
|
-
return value;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Registers a client for `redirectUri` (RFC 7591).
|
|
78
|
-
*
|
|
79
|
-
* Called immediately before every sign-in rather than once at install time:
|
|
80
|
-
* the endpoint may hand back a shared client whose redirect list is replaced by
|
|
81
|
-
* whatever was registered last, so re-registering is what guarantees our own
|
|
82
|
-
* redirect is the one in force when we send the user to the consent screen.
|
|
83
|
-
*/
|
|
84
|
-
export async function registerOAuthClient(spec, metadata, redirectUri, deps) {
|
|
85
|
-
if (!metadata.registrationEndpoint) {
|
|
86
|
-
throw new Error(`${spec.name} does not advertise a client registration endpoint.`);
|
|
87
|
-
}
|
|
88
|
-
const response = await call(deps)(metadata.registrationEndpoint, {
|
|
89
|
-
method: "POST",
|
|
90
|
-
headers: { "Content-Type": "application/json", Accept: "application/json" },
|
|
91
|
-
body: JSON.stringify({
|
|
92
|
-
client_name: spec.clientName ?? DEFAULT_CLIENT_NAME,
|
|
93
|
-
redirect_uris: [redirectUri],
|
|
94
|
-
grant_types: ["authorization_code", "refresh_token"],
|
|
95
|
-
response_types: ["code"],
|
|
96
|
-
token_endpoint_auth_method: "none",
|
|
97
|
-
application_type: "native",
|
|
98
|
-
}),
|
|
99
|
-
});
|
|
100
|
-
const body = (await response.json().catch(() => ({})));
|
|
101
|
-
if (!response.ok) {
|
|
102
|
-
throw new Error(oauthErrorMessage(body) ?? `Client registration failed (HTTP ${response.status}).`);
|
|
103
|
-
}
|
|
104
|
-
const clientId = stringField(body, "client_id");
|
|
105
|
-
if (!clientId)
|
|
106
|
-
throw new Error(`${spec.name} returned no client_id.`);
|
|
107
|
-
return clientId;
|
|
108
|
-
}
|
|
109
|
-
/** Registers a client and builds the URL the user's browser must open. */
|
|
110
|
-
export async function beginLogin(spec, redirectUri, deps) {
|
|
111
|
-
const metadata = await discoverOAuth(spec, deps);
|
|
112
|
-
const clientId = await registerOAuthClient(spec, metadata, redirectUri, deps);
|
|
113
|
-
const verifier = base64Url(randomBytes(32));
|
|
114
|
-
const state = base64Url(randomBytes(16));
|
|
115
|
-
const challenge = base64Url(createHash("sha256").update(verifier).digest());
|
|
116
|
-
const authorizeUrl = new URL(metadata.authorizationEndpoint);
|
|
117
|
-
authorizeUrl.searchParams.set("client_id", clientId);
|
|
118
|
-
authorizeUrl.searchParams.set("redirect_uri", redirectUri);
|
|
119
|
-
authorizeUrl.searchParams.set("response_type", "code");
|
|
120
|
-
authorizeUrl.searchParams.set("code_challenge", challenge);
|
|
121
|
-
authorizeUrl.searchParams.set("code_challenge_method", "S256");
|
|
122
|
-
authorizeUrl.searchParams.set("state", state);
|
|
123
|
-
authorizeUrl.searchParams.set("scope", spec.scope);
|
|
124
|
-
return {
|
|
125
|
-
state,
|
|
126
|
-
verifier,
|
|
127
|
-
clientId,
|
|
128
|
-
redirectUri,
|
|
129
|
-
authorizeUrl: authorizeUrl.toString(),
|
|
130
|
-
createdAt: clock(deps),
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
/** Exchanges the authorization code the callback received for tokens. */
|
|
134
|
-
export async function completeLogin(spec, pending, code, deps) {
|
|
135
|
-
return tokenRequest(spec, new URLSearchParams({
|
|
136
|
-
grant_type: "authorization_code",
|
|
137
|
-
code,
|
|
138
|
-
redirect_uri: pending.redirectUri,
|
|
139
|
-
client_id: pending.clientId,
|
|
140
|
-
code_verifier: pending.verifier,
|
|
141
|
-
}), deps);
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Trades a refresh token for a fresh access token. Treat the returned
|
|
145
|
-
* `refreshToken` as replacing the one passed in — providers rotate on use.
|
|
146
|
-
*/
|
|
147
|
-
export async function refreshOAuthTokens(spec, clientId, refreshToken, deps) {
|
|
148
|
-
return tokenRequest(spec, new URLSearchParams({
|
|
149
|
-
grant_type: "refresh_token",
|
|
150
|
-
refresh_token: refreshToken,
|
|
151
|
-
client_id: clientId,
|
|
152
|
-
}), deps);
|
|
153
|
-
}
|
|
154
|
-
async function tokenRequest(spec, body, deps) {
|
|
155
|
-
const metadata = await discoverOAuth(spec, deps);
|
|
156
|
-
const response = await call(deps)(metadata.tokenEndpoint, {
|
|
157
|
-
method: "POST",
|
|
158
|
-
headers: { "Content-Type": "application/x-www-form-urlencoded", Accept: "application/json" },
|
|
159
|
-
body,
|
|
160
|
-
});
|
|
161
|
-
const parsed = (await response.json().catch(() => ({})));
|
|
162
|
-
if (!response.ok) {
|
|
163
|
-
throw new Error(oauthErrorMessage(parsed) ?? `${spec.name} token request failed (HTTP ${response.status}).`);
|
|
164
|
-
}
|
|
165
|
-
const accessToken = stringField(parsed, "access_token");
|
|
166
|
-
if (!accessToken)
|
|
167
|
-
throw new Error(`${spec.name} returned no access token.`);
|
|
168
|
-
const expiresIn = typeof parsed.expires_in === "number" ? parsed.expires_in : 3600;
|
|
169
|
-
return {
|
|
170
|
-
accessToken,
|
|
171
|
-
refreshToken: stringField(parsed, "refresh_token"),
|
|
172
|
-
expiresAt: clock(deps) + expiresIn * 1000,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* The sign-ins awaiting their callback. Kept in memory, never on disk: the
|
|
177
|
-
* PKCE verifier is only meaningful for the minutes between the redirect and
|
|
178
|
-
* the callback, and a restart mid-login is better restarted than resumed.
|
|
179
|
-
*/
|
|
180
|
-
export class LoginSessions {
|
|
181
|
-
now;
|
|
182
|
-
pending = new Map();
|
|
183
|
-
constructor(now = Date.now) {
|
|
184
|
-
this.now = now;
|
|
185
|
-
}
|
|
186
|
-
remember(login) {
|
|
187
|
-
this.sweep();
|
|
188
|
-
this.pending.set(login.state, login);
|
|
189
|
-
}
|
|
190
|
-
/** Returns and forgets the login for `state`; a code is only redeemable once. */
|
|
191
|
-
take(state) {
|
|
192
|
-
this.sweep();
|
|
193
|
-
const login = this.pending.get(state);
|
|
194
|
-
if (login)
|
|
195
|
-
this.pending.delete(state);
|
|
196
|
-
return login;
|
|
197
|
-
}
|
|
198
|
-
sweep() {
|
|
199
|
-
const cutoff = this.now() - PENDING_LOGIN_TTL_MS;
|
|
200
|
-
for (const [state, login] of this.pending) {
|
|
201
|
-
if (login.createdAt < cutoff)
|
|
202
|
-
this.pending.delete(state);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* The loopback callback URL for a request that arrived on `host`.
|
|
208
|
-
*
|
|
209
|
-
* Derived from the incoming Host header so the flow works on whatever port the
|
|
210
|
-
* daemon (or the Vite dev proxy) is actually serving, and rejected unless it is
|
|
211
|
-
* loopback — a redirect pointing anywhere else would hand the code to a host
|
|
212
|
-
* that is not this machine.
|
|
213
|
-
*/
|
|
214
|
-
export function loopbackCallbackUrl(spec, host) {
|
|
215
|
-
const hostname = host?.trim().replace(/^\[|\]$/g, "").split(":")[0];
|
|
216
|
-
if (!host || !hostname || !isLoopbackHost(hostname)) {
|
|
217
|
-
throw new Error(`${spec.name} sign-in requires a loopback address (localhost or 127.0.0.1).`);
|
|
218
|
-
}
|
|
219
|
-
return `http://${host}${spec.callbackPath}`;
|
|
220
|
-
}
|
|
221
|
-
function isLoopbackHost(hostname) {
|
|
222
|
-
return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "::1";
|
|
223
|
-
}
|
|
224
|
-
function base64Url(buffer) {
|
|
225
|
-
return buffer.toString("base64url");
|
|
226
|
-
}
|
|
227
|
-
function stringField(body, field) {
|
|
228
|
-
const value = body[field];
|
|
229
|
-
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
230
|
-
}
|
|
231
|
-
function oauthErrorMessage(body) {
|
|
232
|
-
const description = stringField(body, "error_description");
|
|
233
|
-
const error = stringField(body, "error");
|
|
234
|
-
if (description && error)
|
|
235
|
-
return `${description} (${error})`;
|
|
236
|
-
return description ?? error;
|
|
237
|
-
}
|
|
238
|
-
//# sourceMappingURL=oauth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/core/providers/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import type { NoMoreIdeConfig } from "../types.js";
|
|
2
|
-
import type { DeployProviderHooks, ProviderScope } from "./deploy-provider.js";
|
|
3
|
-
/**
|
|
4
|
-
* Which provider project a repository deploys, and which scope to open on.
|
|
5
|
-
*
|
|
6
|
-
* Both algorithms below came from `vercel-context.ts` and neither is
|
|
7
|
-
* vendor-specific — what varies is only the two hooks in
|
|
8
|
-
* {@link DeployProviderHooks}. They are generic over the project and scope
|
|
9
|
-
* types so a caller holding a vendor-shaped client can use them before the
|
|
10
|
-
* `DeployProvider` adapter is wired through to the HTTP surface.
|
|
11
|
-
*/
|
|
12
|
-
export interface ResolveProjectOptions<P> {
|
|
13
|
-
providerId: string;
|
|
14
|
-
hooks: DeployProviderHooks;
|
|
15
|
-
config: NoMoreIdeConfig;
|
|
16
|
-
gitCwd: string;
|
|
17
|
-
/** Reads one project by id. Rejecting means "not this one", not a failure. */
|
|
18
|
-
getProject: (id: string) => Promise<P>;
|
|
19
|
-
/** Looks a project up by the URL the vendor keys imports by. */
|
|
20
|
-
findByRepoUrl: (repoUrl: string) => Promise<P | undefined>;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* The project this repository deploys, in order of confidence:
|
|
24
|
-
*
|
|
25
|
-
* 1. an explicit pin the user chose in the dashboard;
|
|
26
|
-
* 2. the vendor CLI's own link file — the same file the CLI trusts, so a linked
|
|
27
|
-
* repo needs no configuration here at all;
|
|
28
|
-
* 3. a lookup by the repo's git remote, which is how the provider itself keys
|
|
29
|
-
* an imported project.
|
|
30
|
-
*
|
|
31
|
-
* Returns undefined rather than guessing when none of those answer, since the
|
|
32
|
-
* wrong project would show deployments for unrelated code.
|
|
33
|
-
*/
|
|
34
|
-
export declare function resolveProviderProject<P>(options: ResolveProjectOptions<P>): Promise<P | undefined>;
|
|
35
|
-
/** The project id recorded by the vendor CLI's link command, when present. */
|
|
36
|
-
export declare function readLinkedProjectId(repoRoot: string, linkFile: {
|
|
37
|
-
path: string;
|
|
38
|
-
field: string;
|
|
39
|
-
}): Promise<string | undefined>;
|
|
40
|
-
/** The working directory provider operations run against — mirrors the GitHub seam. */
|
|
41
|
-
export declare function selectedProviderCwd(config: NoMoreIdeConfig, fallbackCwd: string): string;
|
|
42
|
-
export interface AdoptSoleScopeOptions<S extends Pick<ProviderScope, "id" | "slug">> {
|
|
43
|
-
/** A `cli` credential follows the vendor CLI's own scope; see below. */
|
|
44
|
-
source: "cli" | "stored" | "oauth";
|
|
45
|
-
listScopes: () => Promise<S[]>;
|
|
46
|
-
persist: (scope: {
|
|
47
|
-
scopeId: string;
|
|
48
|
-
scopeSlug: string;
|
|
49
|
-
}) => Promise<void>;
|
|
50
|
-
/**
|
|
51
|
-
* Whether the vendor's CLI selects a scope of its own that ours must not
|
|
52
|
-
* override. True by default, which is Vercel: `vercel switch` writes a
|
|
53
|
-
* current team, the credential resolver has already inherited it, and a scope
|
|
54
|
-
* written here would outrank it from then on — so a `cli` credential adopts
|
|
55
|
-
* nothing at all.
|
|
56
|
-
*
|
|
57
|
-
* False says the CLI has no such notion (Wrangler has no account switch; the
|
|
58
|
-
* account comes from the environment). Then the sole scope *is* adopted for a
|
|
59
|
-
* `cli` credential — a provider that needs a scope for every call would
|
|
60
|
-
* otherwise have no way to get one — but still never persisted, because a
|
|
61
|
-
* saved scope would outrank the environment variable that should win.
|
|
62
|
-
*/
|
|
63
|
-
cliSelectsScope?: boolean;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* The scope to use when the user has never chosen one.
|
|
67
|
-
*
|
|
68
|
-
* Vercel puts a personal account's projects under an implicit "<name>'s
|
|
69
|
-
* projects" team, not under the account itself, so an unscoped client lists
|
|
70
|
-
* nothing at all — which reads as "no projects" rather than "wrong scope". Any
|
|
71
|
-
* provider with an implicit default scope has this problem. A `cli` connection
|
|
72
|
-
* avoids it by inheriting the CLI's own scope; a browser sign-in or a pasted
|
|
73
|
-
* token has nothing to inherit, so the sole scope is adopted here and
|
|
74
|
-
* persisted, making this a one-time lookup.
|
|
75
|
-
*
|
|
76
|
-
* With several scopes there is no unambiguous answer, so none is chosen and the
|
|
77
|
-
* dashboard's scope switcher is left to ask. Failures are swallowed: an
|
|
78
|
-
* unscoped client still works, and the caller's own request should be what
|
|
79
|
-
* surfaces an auth problem.
|
|
80
|
-
*/
|
|
81
|
-
export declare function adoptSoleScope<S extends Pick<ProviderScope, "id" | "slug">>(options: AdoptSoleScopeOptions<S>): Promise<string | undefined>;
|