nomoreide 0.1.103 → 0.3.0
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 +72 -20
- package/bin/nomoreide.js +82 -0
- package/package.json +24 -90
- 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 -354
- 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 -256
- package/dist/core/cloudflare-manager.js +0 -409
- 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 -343
- 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 -70
- package/dist/core/daemon-client.js +0 -136
- 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 -223
- package/dist/core/github-manager.js +0 -285
- 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/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 -115
- 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 -266
- package/dist/core/vercel-manager.js +0 -389
- 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 -51
- 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 -271
- 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 -105
- package/dist/core/vultr-manager.js +0 -159
- 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 -224
- 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 -56
- 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 -125
- package/dist/mcp/tools/docs.js.map +0 -1
- package/dist/mcp/tools/errors.d.ts +0 -5
- package/dist/mcp/tools/errors.js +0 -40
- 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 -208
- 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 -20
- package/dist/mcp/tools/index.js +0 -60
- 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 -11
- package/dist/mcp/tools/services.js +0 -200
- 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-B2_SPkzS.js +0 -30
- package/dist/web/client/assets/context-graph-DVrWyUaG.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-DIspyq1R.js +0 -352
- package/dist/web/client/assets/index-DT9Uq0bE.css +0 -1
- package/dist/web/client/assets/nomoreide-favicon-Ds7Tgj9p.svg +0 -24
- package/dist/web/client/assets/system-process-table-CWZIisGo.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 -361
- 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 -3
- package/dist/web/static-assets.js +0 -64
- 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,159 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Read-safe Vultr API v2 client — the observable half of the integration.
|
|
3
|
-
*
|
|
4
|
-
* Like `git-manager.ts` and `cloudflare-manager.ts`, this module deliberately
|
|
5
|
-
* contains no operation that changes a machine. Start / halt / reboot live in
|
|
6
|
-
* `vultr-actions.ts`, and destructive operations (delete, reinstall, restore)
|
|
7
|
-
* are not implemented at all — the same line `GitManager` draws around
|
|
8
|
-
* `reset --hard`.
|
|
9
|
-
*
|
|
10
|
-
* Every field and path below comes from Vultr's official Go SDK
|
|
11
|
-
* (`github.com/vultr/govultr`), which is generated against the same API the
|
|
12
|
-
* docs describe.
|
|
13
|
-
*/
|
|
14
|
-
export class VultrApiError extends Error {
|
|
15
|
-
status;
|
|
16
|
-
path;
|
|
17
|
-
constructor(message, status, path) {
|
|
18
|
-
super(message);
|
|
19
|
-
this.status = status;
|
|
20
|
-
this.path = path;
|
|
21
|
-
this.name = "VultrApiError";
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
/** Vultr caps `per_page` at 500; one page covers any realistic account. */
|
|
25
|
-
const PER_PAGE = 500;
|
|
26
|
-
/** A hard stop on cursor following, so a pathological account cannot hang a request. */
|
|
27
|
-
const MAX_PAGES = 10;
|
|
28
|
-
export class VultrManager {
|
|
29
|
-
token;
|
|
30
|
-
baseUrl;
|
|
31
|
-
fetchImpl;
|
|
32
|
-
constructor(token, baseUrl = "https://api.vultr.com/v2",
|
|
33
|
-
/** The provider's scoped `fetch`; global `fetch` when built outside the registry. */
|
|
34
|
-
fetchImpl) {
|
|
35
|
-
this.token = token;
|
|
36
|
-
this.baseUrl = baseUrl;
|
|
37
|
-
this.fetchImpl = fetchImpl;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* The account this API key belongs to.
|
|
41
|
-
*
|
|
42
|
-
* Vultr gives an account no id — the email is what identifies one — so that
|
|
43
|
-
* is what the neutral `ProviderAccount.id` carries.
|
|
44
|
-
*/
|
|
45
|
-
async account() {
|
|
46
|
-
const { account } = await this.request("/account");
|
|
47
|
-
return {
|
|
48
|
-
name: account.name ?? "",
|
|
49
|
-
email: account.email ?? "",
|
|
50
|
-
acls: account.acls ?? [],
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Every instance on the account, following Vultr's cursor pagination.
|
|
55
|
-
*
|
|
56
|
-
* The whole list rather than a page: the caller is building an SSH server
|
|
57
|
-
* list, and a partial one would silently hide machines.
|
|
58
|
-
*/
|
|
59
|
-
async listInstances(opts = {}) {
|
|
60
|
-
const instances = [];
|
|
61
|
-
let cursor;
|
|
62
|
-
for (let page = 0; page < MAX_PAGES; page += 1) {
|
|
63
|
-
const query = new URLSearchParams({ per_page: String(PER_PAGE) });
|
|
64
|
-
if (opts.label)
|
|
65
|
-
query.set("label", opts.label);
|
|
66
|
-
if (opts.tag)
|
|
67
|
-
query.set("tag", opts.tag);
|
|
68
|
-
if (opts.region)
|
|
69
|
-
query.set("region", opts.region);
|
|
70
|
-
if (cursor)
|
|
71
|
-
query.set("cursor", cursor);
|
|
72
|
-
const body = await this.request(`/instances?${query.toString()}`);
|
|
73
|
-
instances.push(...(body.instances ?? []).map(normalizeInstance));
|
|
74
|
-
cursor = body.meta?.links?.next || undefined;
|
|
75
|
-
if (!cursor)
|
|
76
|
-
break;
|
|
77
|
-
}
|
|
78
|
-
return instances;
|
|
79
|
-
}
|
|
80
|
-
async getInstance(id) {
|
|
81
|
-
const { instance } = await this.request(`/instances/${encodeURIComponent(id)}`);
|
|
82
|
-
return normalizeInstance(instance);
|
|
83
|
-
}
|
|
84
|
-
request(path, opts) {
|
|
85
|
-
return vultrRequest({ token: this.token, baseUrl: this.baseUrl, fetch: this.fetchImpl }, path, opts);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* The one place a Vultr API call is made. Shared with `vultr-actions.ts` so
|
|
90
|
-
* auth and error shaping stay identical across the read and write halves — the
|
|
91
|
-
* read/write boundary is which module exposes an operation, not which one can
|
|
92
|
-
* reach the network.
|
|
93
|
-
*/
|
|
94
|
-
export async function vultrRequest(auth, path, opts) {
|
|
95
|
-
const url = path.startsWith("http") ? path : `${auth.baseUrl ?? "https://api.vultr.com/v2"}${path}`;
|
|
96
|
-
const headers = {
|
|
97
|
-
Authorization: `Bearer ${auth.token}`,
|
|
98
|
-
Accept: "application/json",
|
|
99
|
-
};
|
|
100
|
-
const init = { method: opts?.method ?? "GET", headers };
|
|
101
|
-
if (opts?.body !== undefined) {
|
|
102
|
-
headers["Content-Type"] = "application/json";
|
|
103
|
-
init.body = JSON.stringify(opts.body);
|
|
104
|
-
}
|
|
105
|
-
const response = await (auth.fetch ?? fetch)(url, init);
|
|
106
|
-
// Power actions answer 204 with no body, so the body is only read when there
|
|
107
|
-
// is one to read.
|
|
108
|
-
const text = await response.text().catch(() => "");
|
|
109
|
-
if (!response.ok) {
|
|
110
|
-
const failure = safeParse(text);
|
|
111
|
-
throw new VultrApiError(failure?.error || `Vultr returned ${response.status} for ${path}`, response.status, path);
|
|
112
|
-
}
|
|
113
|
-
return (safeParse(text) ?? {});
|
|
114
|
-
}
|
|
115
|
-
function safeParse(text) {
|
|
116
|
-
if (!text.trim())
|
|
117
|
-
return undefined;
|
|
118
|
-
try {
|
|
119
|
-
return JSON.parse(text);
|
|
120
|
-
}
|
|
121
|
-
catch {
|
|
122
|
-
return undefined;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Vultr writes "no address" as the empty string rather than omitting the field,
|
|
127
|
-
* and `0.0.0.0` while an instance is still being built. Both mean the same
|
|
128
|
-
* thing to a caller trying to reach the machine.
|
|
129
|
-
*/
|
|
130
|
-
function address(value) {
|
|
131
|
-
const trimmed = value?.trim();
|
|
132
|
-
if (!trimmed || trimmed === "0.0.0.0" || trimmed === "::")
|
|
133
|
-
return undefined;
|
|
134
|
-
return trimmed;
|
|
135
|
-
}
|
|
136
|
-
function normalizeInstance(instance) {
|
|
137
|
-
const createdAt = Date.parse(instance.date_created ?? "");
|
|
138
|
-
return {
|
|
139
|
-
id: instance.id,
|
|
140
|
-
label: instance.label ?? "",
|
|
141
|
-
hostname: instance.hostname ?? "",
|
|
142
|
-
status: instance.status ?? "pending",
|
|
143
|
-
powerStatus: instance.power_status ?? "",
|
|
144
|
-
serverStatus: instance.server_status ?? "",
|
|
145
|
-
mainIp: address(instance.main_ip),
|
|
146
|
-
v6MainIp: address(instance.v6_main_ip),
|
|
147
|
-
internalIp: address(instance.internal_ip),
|
|
148
|
-
region: instance.region ?? "",
|
|
149
|
-
plan: instance.plan ?? "",
|
|
150
|
-
os: instance.os ?? "",
|
|
151
|
-
vcpuCount: instance.vcpu_count ?? 0,
|
|
152
|
-
ramMb: instance.ram ?? 0,
|
|
153
|
-
diskGb: instance.disk ?? 0,
|
|
154
|
-
tags: instance.tags ?? [],
|
|
155
|
-
createdAt: Number.isNaN(createdAt) ? undefined : createdAt,
|
|
156
|
-
userScheme: instance.user_scheme ?? "root",
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
//# sourceMappingURL=vultr-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vultr-manager.js","sourceRoot":"","sources":["../../src/core/vultr-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import type { HostInstance, HostInstanceState, HostProvider, HostProviderActions, HostProviderManifest, HostSshTarget } from "./providers/host-provider.js";
|
|
2
|
-
import { type VultrActions } from "./vultr-actions.js";
|
|
3
|
-
import type { VultrInstance, VultrManager } from "./vultr-manager.js";
|
|
4
|
-
/**
|
|
5
|
-
* Vultr as `HostProvider` implementation #1 — the provider that tests whether
|
|
6
|
-
* the *second* contract was shaped by the problem or by the first one.
|
|
7
|
-
*
|
|
8
|
-
* A pure adapter, like `vercel-provider.ts` and `cloudflare-provider.ts`: every
|
|
9
|
-
* method delegates to `VultrManager` or `VultrActions` and only reshapes the
|
|
10
|
-
* result.
|
|
11
|
-
*
|
|
12
|
-
* What writing it surfaced:
|
|
13
|
-
*
|
|
14
|
-
* 1. **A host provider is not repo-scoped.** `DeployProvider` needs a working
|
|
15
|
-
* directory to answer anything, because a deployment belongs to the project
|
|
16
|
-
* a repository is linked to. An instance belongs to an account. So there is
|
|
17
|
-
* no project-resolution ladder here, no link file, no `repoUrl` hook — the
|
|
18
|
-
* whole of `providers/project-resolution.ts` is simply not part of this
|
|
19
|
-
* contract, which is why the split into two contracts was right.
|
|
20
|
-
* 2. **`toSshTarget` needs the machine's login, not just its address.** Hence
|
|
21
|
-
* `HostInstance.defaultUser`: Vultr builds an instance with either `root` or
|
|
22
|
-
* an unprivileged `linuxuser`, and a target that omits it is one `ssh` tries
|
|
23
|
-
* as the *local* username, which fails for every Vultr instance.
|
|
24
|
-
* 3. **The shared credential layer carried over untouched.** Vultr reuses
|
|
25
|
-
* `providers/credentials.ts` exactly, despite being neither a deploy
|
|
26
|
-
* platform nor an OAuth one — the first evidence that layer generalized
|
|
27
|
-
* beyond the contract it was extracted from.
|
|
28
|
-
*/
|
|
29
|
-
export declare const VULTR_MANIFEST: HostProviderManifest;
|
|
30
|
-
/**
|
|
31
|
-
* Vultr's three-field state onto the five neutral ones.
|
|
32
|
-
*
|
|
33
|
-
* Vultr describes a machine with `status` (the subscription's lifecycle),
|
|
34
|
-
* `power_status` (whether the VM is switched on) and `server_status` (how far
|
|
35
|
-
* the OS install has got). Only their combination says whether the machine can
|
|
36
|
-
* be reached: an `active` instance that is `running` is still unreachable while
|
|
37
|
-
* `server_status` is `installingbooting`.
|
|
38
|
-
*
|
|
39
|
-
* `suspended` has no neutral equivalent — it is Vultr locking the machine, and
|
|
40
|
-
* the user has to go and deal with it — so it maps to `error` and survives
|
|
41
|
-
* verbatim in `rawState`, the same pressure valve `skipped` used on Cloudflare.
|
|
42
|
-
*/
|
|
43
|
-
export declare function toInstanceState(instance: VultrInstance): HostInstanceState;
|
|
44
|
-
/**
|
|
45
|
-
* The word Vultr's own dashboard shows, so `rawState` reads as something the
|
|
46
|
-
* user recognizes rather than as a field dump: the lifecycle status while the
|
|
47
|
-
* instance is not yet `active`, then the install stage, then the power state.
|
|
48
|
-
*/
|
|
49
|
-
export declare function toRawState(instance: VultrInstance): string;
|
|
50
|
-
/**
|
|
51
|
-
* Vultr's `user_scheme` onto the account name actually present on the machine.
|
|
52
|
-
* `limited` provisions a sudo-capable `linuxuser` instead of enabling `root`.
|
|
53
|
-
*/
|
|
54
|
-
export declare function toDefaultUser(instance: VultrInstance): string;
|
|
55
|
-
export declare function toHostInstance(instance: VultrInstance): HostInstance;
|
|
56
|
-
/**
|
|
57
|
-
* The instance as an SSH host — the payoff this contract exists for.
|
|
58
|
-
*
|
|
59
|
-
* Exported and pure so the mapping is testable on its own, and shared by the
|
|
60
|
-
* provider below.
|
|
61
|
-
*/
|
|
62
|
-
export declare function toVultrSshTarget(instance: HostInstance): HostSshTarget | null;
|
|
63
|
-
/** The read-safe half, over an already-authenticated `VultrManager`. */
|
|
64
|
-
export declare function createVultrHostProvider(manager: VultrManager): HostProvider;
|
|
65
|
-
/**
|
|
66
|
-
* The write-capable half. Kept a separate factory, resolved separately, and
|
|
67
|
-
* never handed to an MCP tool — the same boundary `VultrActions` has.
|
|
68
|
-
*/
|
|
69
|
-
export declare function createVultrHostActions(actions: VultrActions): HostProviderActions;
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
import { PRODUCTION_AFFECTING_ACTIONS, VULTR_ACTIONS, } from "./vultr-actions.js";
|
|
2
|
-
import { VULTR_PROVIDER_ID } from "./vultr-auth.js";
|
|
3
|
-
/**
|
|
4
|
-
* Vultr as `HostProvider` implementation #1 — the provider that tests whether
|
|
5
|
-
* the *second* contract was shaped by the problem or by the first one.
|
|
6
|
-
*
|
|
7
|
-
* A pure adapter, like `vercel-provider.ts` and `cloudflare-provider.ts`: every
|
|
8
|
-
* method delegates to `VultrManager` or `VultrActions` and only reshapes the
|
|
9
|
-
* result.
|
|
10
|
-
*
|
|
11
|
-
* What writing it surfaced:
|
|
12
|
-
*
|
|
13
|
-
* 1. **A host provider is not repo-scoped.** `DeployProvider` needs a working
|
|
14
|
-
* directory to answer anything, because a deployment belongs to the project
|
|
15
|
-
* a repository is linked to. An instance belongs to an account. So there is
|
|
16
|
-
* no project-resolution ladder here, no link file, no `repoUrl` hook — the
|
|
17
|
-
* whole of `providers/project-resolution.ts` is simply not part of this
|
|
18
|
-
* contract, which is why the split into two contracts was right.
|
|
19
|
-
* 2. **`toSshTarget` needs the machine's login, not just its address.** Hence
|
|
20
|
-
* `HostInstance.defaultUser`: Vultr builds an instance with either `root` or
|
|
21
|
-
* an unprivileged `linuxuser`, and a target that omits it is one `ssh` tries
|
|
22
|
-
* as the *local* username, which fails for every Vultr instance.
|
|
23
|
-
* 3. **The shared credential layer carried over untouched.** Vultr reuses
|
|
24
|
-
* `providers/credentials.ts` exactly, despite being neither a deploy
|
|
25
|
-
* platform nor an OAuth one — the first evidence that layer generalized
|
|
26
|
-
* beyond the contract it was extracted from.
|
|
27
|
-
*/
|
|
28
|
-
export const VULTR_MANIFEST = {
|
|
29
|
-
id: VULTR_PROVIDER_ID,
|
|
30
|
-
name: "Vultr",
|
|
31
|
-
kind: "host",
|
|
32
|
-
// Three action names that share not one word with either deploy provider,
|
|
33
|
-
// which is the clearest evidence for why these strings belong to the plugin:
|
|
34
|
-
// no host catalogue written for Vercel could ever have contained "halt".
|
|
35
|
-
// No `scope.label` — a host provider has no scopes.
|
|
36
|
-
strings: {
|
|
37
|
-
en: {
|
|
38
|
-
"action.start": "Start",
|
|
39
|
-
"action.start.done": "Instance starting.",
|
|
40
|
-
"action.halt": "Stop",
|
|
41
|
-
"action.halt.done": "Instance stopping.",
|
|
42
|
-
"action.halt.confirmTitle": "Stop this instance?",
|
|
43
|
-
"action.halt.confirm": "The machine powers off immediately. Anything running on it stops.",
|
|
44
|
-
"action.reboot": "Reboot",
|
|
45
|
-
"action.reboot.done": "Instance rebooting.",
|
|
46
|
-
"action.reboot.confirmTitle": "Reboot this instance?",
|
|
47
|
-
"action.reboot.confirm": "The machine restarts immediately. Anything running on it stops.",
|
|
48
|
-
},
|
|
49
|
-
zh: {
|
|
50
|
-
"action.start": "启动",
|
|
51
|
-
"action.start.done": "实例正在启动。",
|
|
52
|
-
"action.halt": "停止",
|
|
53
|
-
"action.halt.done": "实例正在停止。",
|
|
54
|
-
"action.halt.confirmTitle": "停止该实例?",
|
|
55
|
-
"action.halt.confirm": "机器将立即关机,其上运行的一切都会停止。",
|
|
56
|
-
"action.reboot": "重启",
|
|
57
|
-
"action.reboot.done": "实例正在重启。",
|
|
58
|
-
"action.reboot.confirmTitle": "重启该实例?",
|
|
59
|
-
"action.reboot.confirm": "机器将立即重启,其上运行的一切都会停止。",
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
actions: [...VULTR_ACTIONS],
|
|
63
|
-
productionAffecting: [...PRODUCTION_AFFECTING_ACTIONS],
|
|
64
|
-
// The API only. An adopted instance is reached over SSH by `ssh-servers.ts`,
|
|
65
|
-
// which is the host's own transport and never goes through this fetch — so no
|
|
66
|
-
// instance address belongs here.
|
|
67
|
-
api: { hosts: ["api.vultr.com"] },
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* Vultr's three-field state onto the five neutral ones.
|
|
71
|
-
*
|
|
72
|
-
* Vultr describes a machine with `status` (the subscription's lifecycle),
|
|
73
|
-
* `power_status` (whether the VM is switched on) and `server_status` (how far
|
|
74
|
-
* the OS install has got). Only their combination says whether the machine can
|
|
75
|
-
* be reached: an `active` instance that is `running` is still unreachable while
|
|
76
|
-
* `server_status` is `installingbooting`.
|
|
77
|
-
*
|
|
78
|
-
* `suspended` has no neutral equivalent — it is Vultr locking the machine, and
|
|
79
|
-
* the user has to go and deal with it — so it maps to `error` and survives
|
|
80
|
-
* verbatim in `rawState`, the same pressure valve `skipped` used on Cloudflare.
|
|
81
|
-
*/
|
|
82
|
-
export function toInstanceState(instance) {
|
|
83
|
-
switch (instance.status) {
|
|
84
|
-
case "pending":
|
|
85
|
-
case "resizing":
|
|
86
|
-
return "provisioning";
|
|
87
|
-
case "suspended":
|
|
88
|
-
return "error";
|
|
89
|
-
case "active":
|
|
90
|
-
break;
|
|
91
|
-
default:
|
|
92
|
-
return "unknown";
|
|
93
|
-
}
|
|
94
|
-
if (instance.serverStatus === "installingbooting")
|
|
95
|
-
return "provisioning";
|
|
96
|
-
if (instance.serverStatus === "locked")
|
|
97
|
-
return "provisioning";
|
|
98
|
-
if (instance.powerStatus === "running")
|
|
99
|
-
return "running";
|
|
100
|
-
if (instance.powerStatus === "stopped")
|
|
101
|
-
return "stopped";
|
|
102
|
-
return "unknown";
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* The word Vultr's own dashboard shows, so `rawState` reads as something the
|
|
106
|
-
* user recognizes rather than as a field dump: the lifecycle status while the
|
|
107
|
-
* instance is not yet `active`, then the install stage, then the power state.
|
|
108
|
-
*/
|
|
109
|
-
export function toRawState(instance) {
|
|
110
|
-
if (instance.status !== "active")
|
|
111
|
-
return instance.status;
|
|
112
|
-
if (instance.serverStatus === "installingbooting")
|
|
113
|
-
return "installing";
|
|
114
|
-
if (instance.serverStatus === "locked")
|
|
115
|
-
return "locked";
|
|
116
|
-
return instance.powerStatus || "unknown";
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Vultr's `user_scheme` onto the account name actually present on the machine.
|
|
120
|
-
* `limited` provisions a sudo-capable `linuxuser` instead of enabling `root`.
|
|
121
|
-
*/
|
|
122
|
-
export function toDefaultUser(instance) {
|
|
123
|
-
return instance.userScheme === "limited" ? "linuxuser" : "root";
|
|
124
|
-
}
|
|
125
|
-
export function toHostInstance(instance) {
|
|
126
|
-
return {
|
|
127
|
-
id: instance.id,
|
|
128
|
-
// A Vultr instance may be created with no label at all, in which case its
|
|
129
|
-
// hostname is the only human-readable thing about it.
|
|
130
|
-
label: instance.label || instance.hostname || instance.id,
|
|
131
|
-
state: toInstanceState(instance),
|
|
132
|
-
rawState: toRawState(instance),
|
|
133
|
-
ipv4: instance.mainIp,
|
|
134
|
-
ipv6: instance.v6MainIp,
|
|
135
|
-
hostname: instance.hostname || undefined,
|
|
136
|
-
region: instance.region || undefined,
|
|
137
|
-
plan: instance.plan || undefined,
|
|
138
|
-
os: instance.os || undefined,
|
|
139
|
-
specs: {
|
|
140
|
-
vcpus: instance.vcpuCount || undefined,
|
|
141
|
-
memoryMb: instance.ramMb || undefined,
|
|
142
|
-
diskGb: instance.diskGb || undefined,
|
|
143
|
-
},
|
|
144
|
-
tags: instance.tags,
|
|
145
|
-
createdAt: instance.createdAt,
|
|
146
|
-
defaultUser: toDefaultUser(instance),
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* The instance as an SSH host — the payoff this contract exists for.
|
|
151
|
-
*
|
|
152
|
-
* Exported and pure so the mapping is testable on its own, and shared by the
|
|
153
|
-
* provider below.
|
|
154
|
-
*/
|
|
155
|
-
export function toVultrSshTarget(instance) {
|
|
156
|
-
// IPv4 first: a v6-only target only works from a v6-capable client, and an
|
|
157
|
-
// instance without either address is still being built.
|
|
158
|
-
const address = instance.ipv4 ?? instance.ipv6;
|
|
159
|
-
if (!address)
|
|
160
|
-
return null;
|
|
161
|
-
return {
|
|
162
|
-
host: instance.defaultUser ? `${instance.defaultUser}@${address}` : address,
|
|
163
|
-
name: instance.label,
|
|
164
|
-
// `environment` is deliberately left unset. Vultr tags are free-form and
|
|
165
|
-
// mean whatever the account owner decided, so inferring "Production" from
|
|
166
|
-
// one would eventually put that label on the wrong machine. A user-saved
|
|
167
|
-
// value wins in the merge anyway, so this is a blank the user can fill.
|
|
168
|
-
instance: {
|
|
169
|
-
providerId: VULTR_PROVIDER_ID,
|
|
170
|
-
providerName: VULTR_MANIFEST.name,
|
|
171
|
-
instanceId: instance.id,
|
|
172
|
-
state: instance.state,
|
|
173
|
-
rawState: instance.rawState,
|
|
174
|
-
region: instance.region,
|
|
175
|
-
},
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
/** The read-safe half, over an already-authenticated `VultrManager`. */
|
|
179
|
-
export function createVultrHostProvider(manager) {
|
|
180
|
-
return {
|
|
181
|
-
async account() {
|
|
182
|
-
const account = await manager.account();
|
|
183
|
-
return {
|
|
184
|
-
// Vultr gives an account no id of its own; the email is what identifies
|
|
185
|
-
// one, and is what its dashboard shows.
|
|
186
|
-
id: account.email,
|
|
187
|
-
username: account.email,
|
|
188
|
-
name: account.name || null,
|
|
189
|
-
email: account.email || null,
|
|
190
|
-
};
|
|
191
|
-
},
|
|
192
|
-
async listInstances() {
|
|
193
|
-
return (await manager.listInstances()).map(toHostInstance);
|
|
194
|
-
},
|
|
195
|
-
async getInstance(id) {
|
|
196
|
-
return toHostInstance(await manager.getInstance(id));
|
|
197
|
-
},
|
|
198
|
-
toSshTarget: toVultrSshTarget,
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* The write-capable half. Kept a separate factory, resolved separately, and
|
|
203
|
-
* never handed to an MCP tool — the same boundary `VultrActions` has.
|
|
204
|
-
*/
|
|
205
|
-
export function createVultrHostActions(actions) {
|
|
206
|
-
return {
|
|
207
|
-
async run(action, instanceId) {
|
|
208
|
-
switch (action) {
|
|
209
|
-
case "start":
|
|
210
|
-
await actions.start(instanceId);
|
|
211
|
-
return;
|
|
212
|
-
case "halt":
|
|
213
|
-
await actions.halt(instanceId);
|
|
214
|
-
return;
|
|
215
|
-
case "reboot":
|
|
216
|
-
await actions.reboot(instanceId);
|
|
217
|
-
return;
|
|
218
|
-
default:
|
|
219
|
-
throw new Error(`Vultr does not support the action "${action}".`);
|
|
220
|
-
}
|
|
221
|
-
},
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
//# sourceMappingURL=vultr-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vultr-provider.js","sourceRoot":"","sources":["../../src/core/vultr-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import type { ConfigStore } from "./config-store.js";
|
|
3
|
-
import type { ErrorInbox } from "./error-inbox.js";
|
|
4
|
-
import type { TimelineStore } from "./timeline-store.js";
|
|
5
|
-
/**
|
|
6
|
-
* Event-driven workflow triggers (IDEAS #16). Workflows are user-run today; a
|
|
7
|
-
* trigger binds an app-detected event to a workflow so it fires automatically.
|
|
8
|
-
*
|
|
9
|
-
* The workflow runner lives client-side (agent steps run through the dock), so a
|
|
10
|
-
* trigger can't run a workflow on the server. Instead a fired trigger enqueues a
|
|
11
|
-
* **pending run** here; the open dashboard drains the queue and drives the
|
|
12
|
-
* existing client runner. Pending runs survive until a browser claims them, so
|
|
13
|
-
* an event detected while no tab is open isn't lost.
|
|
14
|
-
*
|
|
15
|
-
* Event sources:
|
|
16
|
-
* - `error-incident` — {@link ErrorInbox} surfaces a new/repeated incident (push).
|
|
17
|
-
* - `service-crash` — {@link TimelineStore} records a `service.lifecycle`
|
|
18
|
-
* event with `severity: "error"` (non-zero exit not initiated by the user) (push).
|
|
19
|
-
* - `ci-failure` — the only **polled** source: an optional `ciSource`
|
|
20
|
-
* reports the current branch's failing CI on an interval. It fires at most
|
|
21
|
-
* once per commit sha (a failing run isn't re-enqueued every poll).
|
|
22
|
-
*/
|
|
23
|
-
export declare const triggerEventSchema: z.ZodEnum<["error-incident", "service-crash", "ci-failure"]>;
|
|
24
|
-
export type TriggerEvent = z.infer<typeof triggerEventSchema>;
|
|
25
|
-
/**
|
|
26
|
-
* A non-null result means the current branch's CI is failing on `sha`. The
|
|
27
|
-
* source returns `null` whenever CI is green, still running, or GitHub is
|
|
28
|
-
* unavailable (no token / remote) — i.e. "nothing to fire".
|
|
29
|
-
*/
|
|
30
|
-
export interface CiFailureSnapshot {
|
|
31
|
-
sha: string;
|
|
32
|
-
branch: string;
|
|
33
|
-
/** Names of the checks / workflow runs that failed. */
|
|
34
|
-
failingChecks: string[];
|
|
35
|
-
}
|
|
36
|
-
export declare const workflowTriggerSchema: z.ZodObject<{
|
|
37
|
-
id: z.ZodString;
|
|
38
|
-
/** The workflow (built-in or user-saved) to run when this fires. */
|
|
39
|
-
workflowId: z.ZodString;
|
|
40
|
-
event: z.ZodEnum<["error-incident", "service-crash", "ci-failure"]>;
|
|
41
|
-
/** Disabled triggers stay configured but never fire. */
|
|
42
|
-
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
43
|
-
/**
|
|
44
|
-
* Optional case-insensitive substring matched against the event's service
|
|
45
|
-
* name (and, for incidents, the incident title). Empty/absent = match all.
|
|
46
|
-
*/
|
|
47
|
-
filter: z.ZodOptional<z.ZodString>;
|
|
48
|
-
/**
|
|
49
|
-
* When true the dashboard starts the run automatically; otherwise the pending
|
|
50
|
-
* run is surfaced for the user to start with one click.
|
|
51
|
-
*/
|
|
52
|
-
autoRun: z.ZodDefault<z.ZodBoolean>;
|
|
53
|
-
}, "strip", z.ZodTypeAny, {
|
|
54
|
-
id: string;
|
|
55
|
-
workflowId: string;
|
|
56
|
-
event: "error-incident" | "service-crash" | "ci-failure";
|
|
57
|
-
enabled: boolean;
|
|
58
|
-
autoRun: boolean;
|
|
59
|
-
filter?: string | undefined;
|
|
60
|
-
}, {
|
|
61
|
-
id: string;
|
|
62
|
-
workflowId: string;
|
|
63
|
-
event: "error-incident" | "service-crash" | "ci-failure";
|
|
64
|
-
filter?: string | undefined;
|
|
65
|
-
enabled?: boolean | undefined;
|
|
66
|
-
autoRun?: boolean | undefined;
|
|
67
|
-
}>;
|
|
68
|
-
export type WorkflowTrigger = z.infer<typeof workflowTriggerSchema>;
|
|
69
|
-
export interface PendingRun {
|
|
70
|
-
id: string;
|
|
71
|
-
triggerId: string;
|
|
72
|
-
workflowId: string;
|
|
73
|
-
event: TriggerEvent;
|
|
74
|
-
/** Human-readable reason this fired, shown in the dashboard. */
|
|
75
|
-
summary: string;
|
|
76
|
-
/** `triggerId:cause` dedupe key, collapsing a burst into one pending run. */
|
|
77
|
-
signature: string;
|
|
78
|
-
autoRun: boolean;
|
|
79
|
-
createdAt: string;
|
|
80
|
-
}
|
|
81
|
-
type PendingListener = (pending: PendingRun) => void;
|
|
82
|
-
interface WorkflowTriggerManagerOptions {
|
|
83
|
-
configStore: ConfigStore;
|
|
84
|
-
errorInbox: ErrorInbox;
|
|
85
|
-
timelineStore: TimelineStore;
|
|
86
|
-
/**
|
|
87
|
-
* Polled CI source for `ci-failure` triggers. Omit to disable the source
|
|
88
|
-
* (e.g. tests that don't exercise CI, or when GitHub is never configured).
|
|
89
|
-
*/
|
|
90
|
-
ciSource?: () => Promise<CiFailureSnapshot | null>;
|
|
91
|
-
/**
|
|
92
|
-
* How often {@link ciSource} is polled. `0` disables the internal timer —
|
|
93
|
-
* tests drive {@link WorkflowTriggerManager.pollCiOnce} by hand instead.
|
|
94
|
-
*/
|
|
95
|
-
ciPollIntervalMs?: number;
|
|
96
|
-
/** Max pending runs kept; older ones drop off the front. */
|
|
97
|
-
capacity?: number;
|
|
98
|
-
/** A repeat of the same signature within this window is ignored. */
|
|
99
|
-
dedupeWindowMs?: number;
|
|
100
|
-
/** Injectable clock for tests. */
|
|
101
|
-
now?: () => number;
|
|
102
|
-
}
|
|
103
|
-
export declare class WorkflowTriggerManager {
|
|
104
|
-
private readonly configStore;
|
|
105
|
-
private readonly errorInbox;
|
|
106
|
-
private readonly timelineStore;
|
|
107
|
-
private readonly ciSource?;
|
|
108
|
-
private readonly ciPollIntervalMs;
|
|
109
|
-
private readonly capacity;
|
|
110
|
-
private readonly dedupeWindowMs;
|
|
111
|
-
private readonly now;
|
|
112
|
-
private readonly pending;
|
|
113
|
-
private readonly lastFiredAt;
|
|
114
|
-
private readonly listeners;
|
|
115
|
-
private readonly unsubscribers;
|
|
116
|
-
private ciTimer?;
|
|
117
|
-
private started;
|
|
118
|
-
constructor(options: WorkflowTriggerManagerOptions);
|
|
119
|
-
/** Subscribe to the live event sources. Idempotent. */
|
|
120
|
-
start(): void;
|
|
121
|
-
stop(): void;
|
|
122
|
-
subscribe(listener: PendingListener): () => void;
|
|
123
|
-
/** Pending runs, newest first. */
|
|
124
|
-
listPending(): PendingRun[];
|
|
125
|
-
/** Drop a pending run once the dashboard has started (or dismissed) it. */
|
|
126
|
-
ackPending(id: string): boolean;
|
|
127
|
-
private onIncident;
|
|
128
|
-
private onTimelineEvent;
|
|
129
|
-
/**
|
|
130
|
-
* Poll the CI source once and enqueue a run per matching `ci-failure`
|
|
131
|
-
* trigger. Public so tests can drive it without timers; a no-op when no CI
|
|
132
|
-
* source is wired or no `ci-failure` trigger is enabled (skips the network
|
|
133
|
-
* call entirely in that case).
|
|
134
|
-
*/
|
|
135
|
-
pollCiOnce(): Promise<void>;
|
|
136
|
-
private triggersFor;
|
|
137
|
-
private enqueue;
|
|
138
|
-
}
|
|
139
|
-
export {};
|