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,327 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The contract a deploy platform implements — Vercel today, Cloudflare and
|
|
3
|
-
* Netlify next.
|
|
4
|
-
*
|
|
5
|
-
* Every method here already existed on `VercelManager` with the same arguments;
|
|
6
|
-
* this is a rename plus four deliberate neutralizations, each of which is a
|
|
7
|
-
* place the abstraction would otherwise leak on provider #2:
|
|
8
|
-
*
|
|
9
|
-
* 1. **Build settings are a list, not fields.** `VercelProject` hard-codes
|
|
10
|
-
* seven; Cloudflare's set differs and an IaaS provider has none.
|
|
11
|
-
* 2. **Deployment state carries `rawState`.** The vendor's own word survives
|
|
12
|
-
* normalization, so the first provider whose states don't map cleanly does
|
|
13
|
-
* not force a contract change.
|
|
14
|
-
* 3. **Build and runtime log lines are one type.** They answer different
|
|
15
|
-
* questions but have the same shape, and a provider may serve only one.
|
|
16
|
-
* 4. **Writes are a named action list, not fixed methods.** See
|
|
17
|
-
* {@link DeployProviderActions}.
|
|
18
|
-
*
|
|
19
|
-
* The read-safe / write-capable split from `git-manager`/`git-actions` and
|
|
20
|
-
* `db-peek`/`db-write` is preserved exactly: {@link DeployProvider} contains
|
|
21
|
-
* nothing that changes what is deployed, and {@link DeployProviderActions} is a
|
|
22
|
-
* separate object resolved separately and never exposed as an MCP tool.
|
|
23
|
-
*/
|
|
24
|
-
import type { ProviderApiSpec } from "./egress.js";
|
|
25
|
-
import type { ProviderStrings } from "./strings.js";
|
|
26
|
-
/** Signed-in account. ← `VercelViewer` */
|
|
27
|
-
export interface ProviderAccount {
|
|
28
|
-
id: string;
|
|
29
|
-
username: string;
|
|
30
|
-
name?: string | null;
|
|
31
|
-
email?: string | null;
|
|
32
|
-
avatar?: string | null;
|
|
33
|
-
}
|
|
34
|
-
/** A team / org / account within the provider. ← `VercelTeam` */
|
|
35
|
-
export interface ProviderScope {
|
|
36
|
-
id: string;
|
|
37
|
-
slug: string;
|
|
38
|
-
name: string | null;
|
|
39
|
-
}
|
|
40
|
-
/** A project's Git connection, when it was imported from a repository. */
|
|
41
|
-
export interface ProviderProjectLink {
|
|
42
|
-
type: string;
|
|
43
|
-
org?: string;
|
|
44
|
-
repo?: string;
|
|
45
|
-
productionBranch?: string;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* One build setting.
|
|
49
|
-
*
|
|
50
|
-
* `value: null` means "not overridden" — the provider is using the framework's
|
|
51
|
-
* own default — which is a meaningful state and distinct from the setting being
|
|
52
|
-
* *absent from the array*, which means "not read". Vercel's list endpoint omits
|
|
53
|
-
* settings that its single-project endpoint fills in, and the settings panel
|
|
54
|
-
* relies on telling those two apart.
|
|
55
|
-
*/
|
|
56
|
-
export interface ProviderSetting {
|
|
57
|
-
key: string;
|
|
58
|
-
label: string;
|
|
59
|
-
value: string | null;
|
|
60
|
-
}
|
|
61
|
-
/** ← `VercelProject` */
|
|
62
|
-
export interface ProviderProject {
|
|
63
|
-
id: string;
|
|
64
|
-
name: string;
|
|
65
|
-
framework?: string | null;
|
|
66
|
-
updatedAt?: number;
|
|
67
|
-
link?: ProviderProjectLink;
|
|
68
|
-
settings: ProviderSetting[];
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Normalized deployment state, chosen to be the intersection that drives an
|
|
72
|
-
* icon and a filter. Anything finer belongs in `rawState`.
|
|
73
|
-
*/
|
|
74
|
-
export type ProviderDeploymentState = "queued" | "building" | "ready" | "error" | "canceled" | "blocked" | "deleted";
|
|
75
|
-
/** ← `VercelDeployment` */
|
|
76
|
-
export interface ProviderDeployment {
|
|
77
|
-
id: string;
|
|
78
|
-
name: string;
|
|
79
|
-
/**
|
|
80
|
-
* The deployment's hostname, **without a scheme** — consumers prefix
|
|
81
|
-
* `https://`. Vercel returns it this way; Cloudflare returns a full URL and
|
|
82
|
-
* its adapter strips the scheme.
|
|
83
|
-
*/
|
|
84
|
-
url: string | null;
|
|
85
|
-
/** Drives the icon and the filter. */
|
|
86
|
-
state: ProviderDeploymentState;
|
|
87
|
-
/** The vendor's own word for the state, shown in the UI detail. */
|
|
88
|
-
rawState: string;
|
|
89
|
-
/** `production` / `staging`; null is a preview deployment. */
|
|
90
|
-
target: string | null;
|
|
91
|
-
createdAt: number;
|
|
92
|
-
readyAt?: number;
|
|
93
|
-
/** True while this deployment serves the project's production alias. */
|
|
94
|
-
isCurrentProduction?: boolean;
|
|
95
|
-
creator?: {
|
|
96
|
-
username?: string;
|
|
97
|
-
email?: string;
|
|
98
|
-
};
|
|
99
|
-
meta: {
|
|
100
|
-
branch?: string;
|
|
101
|
-
sha?: string;
|
|
102
|
-
commitMessage?: string;
|
|
103
|
-
commitAuthor?: string;
|
|
104
|
-
};
|
|
105
|
-
inspectorUrl?: string;
|
|
106
|
-
}
|
|
107
|
-
export interface ProviderDeploymentDetail extends ProviderDeployment {
|
|
108
|
-
aliases: string[];
|
|
109
|
-
buildingAt?: number;
|
|
110
|
-
errorMessage?: string;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* A line of build or runtime output. ← `VercelBuildLogLine` + `VercelRuntimeLogLine`
|
|
114
|
-
*
|
|
115
|
-
* Merged because the two differ only in what `level` holds and whether a
|
|
116
|
-
* request is attached, and a provider may serve one without the other.
|
|
117
|
-
*/
|
|
118
|
-
export interface ProviderLogLine {
|
|
119
|
-
id: string;
|
|
120
|
-
createdAt: number;
|
|
121
|
-
kind: "build" | "runtime";
|
|
122
|
-
/** `stdout` / `stderr` / `command` for build lines; `error` / `warning` / `info` for runtime. */
|
|
123
|
-
level: string;
|
|
124
|
-
text: string;
|
|
125
|
-
source?: string;
|
|
126
|
-
/** Runtime lines only — which request produced this line. */
|
|
127
|
-
request?: {
|
|
128
|
-
method?: string;
|
|
129
|
-
path?: string;
|
|
130
|
-
statusCode?: number;
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* A project environment variable, with its value deliberately absent.
|
|
135
|
-
*
|
|
136
|
-
* Listing answers "is this key set, and where" — the question a failed deploy
|
|
137
|
-
* actually raises. The value is a separate, explicitly-requested read (see
|
|
138
|
-
* {@link DeployProvider.getEnvValue}), so merely opening the tab never puts a
|
|
139
|
-
* secret on the wire. ← `VercelEnvVar`
|
|
140
|
-
*/
|
|
141
|
-
export interface ProviderEnvVar {
|
|
142
|
-
id: string;
|
|
143
|
-
key: string;
|
|
144
|
-
/** `production` / `preview` / `development`. ← Vercel's `target` */
|
|
145
|
-
environments: string[];
|
|
146
|
-
/** `encrypted` / `plain` / `system` / `secret`. */
|
|
147
|
-
type: string;
|
|
148
|
-
/** Set when the variable is scoped to one preview branch. */
|
|
149
|
-
gitBranch?: string | null;
|
|
150
|
-
comment?: string | null;
|
|
151
|
-
createdAt?: number;
|
|
152
|
-
updatedAt?: number;
|
|
153
|
-
}
|
|
154
|
-
export interface ProviderDomainVerification {
|
|
155
|
-
type: string;
|
|
156
|
-
domain: string;
|
|
157
|
-
value: string;
|
|
158
|
-
reason?: string;
|
|
159
|
-
}
|
|
160
|
-
/** ← `VercelDomain` */
|
|
161
|
-
export interface ProviderDomain {
|
|
162
|
-
name: string;
|
|
163
|
-
apexName?: string;
|
|
164
|
-
verified: boolean;
|
|
165
|
-
/** Set when the domain is a redirect rather than a served alias. */
|
|
166
|
-
redirect?: string | null;
|
|
167
|
-
gitBranch?: string | null;
|
|
168
|
-
createdAt?: number;
|
|
169
|
-
updatedAt?: number;
|
|
170
|
-
/** Outstanding DNS records the user must add, when unverified. */
|
|
171
|
-
verification: ProviderDomainVerification[];
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Optional reads. Declared in the manifest's `capabilities` so the generic view
|
|
175
|
-
* can hide a tab rather than render one that errors.
|
|
176
|
-
*/
|
|
177
|
-
export type DeployCapability = "projects" | "deployments" | "buildLogs" | "runtimeLogs" | "env" | "domains";
|
|
178
|
-
/** The read-safe half. Nothing here changes what is deployed. */
|
|
179
|
-
export interface DeployProvider {
|
|
180
|
-
account(): Promise<ProviderAccount>;
|
|
181
|
-
listScopes(): Promise<ProviderScope[]>;
|
|
182
|
-
listProjects(opts?: {
|
|
183
|
-
search?: string;
|
|
184
|
-
repoUrl?: string;
|
|
185
|
-
limit?: number;
|
|
186
|
-
}): Promise<ProviderProject[]>;
|
|
187
|
-
getProject(id: string): Promise<ProviderProject>;
|
|
188
|
-
listDeployments(opts: {
|
|
189
|
-
projectId: string;
|
|
190
|
-
target?: "production" | "preview";
|
|
191
|
-
limit?: number;
|
|
192
|
-
}): Promise<ProviderDeployment[]>;
|
|
193
|
-
getDeployment(id: string): Promise<ProviderDeploymentDetail>;
|
|
194
|
-
buildLogs(id: string, limit?: number): Promise<ProviderLogLine[]>;
|
|
195
|
-
/** Returns [] when the account's plan lacks them, rather than throwing. */
|
|
196
|
-
runtimeLogs?(id: string, limit?: number): Promise<ProviderLogLine[]>;
|
|
197
|
-
/** Values deliberately absent — see {@link ProviderEnvVar}. */
|
|
198
|
-
listEnv?(projectId: string): Promise<ProviderEnvVar[]>;
|
|
199
|
-
/** The one door for reading a secret. */
|
|
200
|
-
getEnvValue?(projectId: string, envId: string): Promise<string>;
|
|
201
|
-
listDomains?(projectId: string): Promise<ProviderDomain[]>;
|
|
202
|
-
}
|
|
203
|
-
export interface DeployActionInput {
|
|
204
|
-
deploymentId: string;
|
|
205
|
-
/** Required by actions that address the project rather than the deployment. */
|
|
206
|
-
projectId?: string;
|
|
207
|
-
/**
|
|
208
|
-
* The deployment's own name and environment, read before the call and passed
|
|
209
|
-
* through by actions that recreate it. Vercel's redeploy needs both, or a
|
|
210
|
-
* production retry silently comes back as a preview.
|
|
211
|
-
*/
|
|
212
|
-
name?: string;
|
|
213
|
-
target?: string | null;
|
|
214
|
-
/** Recorded by providers that accept a reason (Vercel's rollback). */
|
|
215
|
-
description?: string;
|
|
216
|
-
}
|
|
217
|
-
export interface DeployActionResult {
|
|
218
|
-
/** Set when the action created a new deployment, as `redeploy` does. */
|
|
219
|
-
deployment?: {
|
|
220
|
-
id: string;
|
|
221
|
-
url: string | null;
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* The write-capable half — dashboard-only, never an MCP tool.
|
|
226
|
-
*
|
|
227
|
-
* **Why `run(action, …)` rather than `redeploy()`/`cancel()`/`promote()`/
|
|
228
|
-
* `rollback()`:** promote-vs-rollback is Vercel-specific vocabulary (Vercel
|
|
229
|
-
* records a rollback, with its reason, on a different endpoint from a forward
|
|
230
|
-
* promotion). Cloudflare has "retry" and "rollback" but no "promote"; Netlify
|
|
231
|
-
* has "publish". Fixing four method names into the contract would bake in one
|
|
232
|
-
* vendor's words. The names a provider actually offers, and which of them
|
|
233
|
-
* change what production serves, are declared in its manifest instead.
|
|
234
|
-
*/
|
|
235
|
-
export interface DeployProviderActions {
|
|
236
|
-
run(action: string, input: DeployActionInput): Promise<DeployActionResult>;
|
|
237
|
-
createEnv?(projectId: string, input: {
|
|
238
|
-
key: string;
|
|
239
|
-
value: string;
|
|
240
|
-
environments: string[];
|
|
241
|
-
type?: "encrypted" | "plain";
|
|
242
|
-
}): Promise<ProviderEnvVar>;
|
|
243
|
-
updateEnv?(projectId: string, envId: string, input: {
|
|
244
|
-
value?: string;
|
|
245
|
-
environments?: string[];
|
|
246
|
-
}): Promise<ProviderEnvVar>;
|
|
247
|
-
deleteEnv?(projectId: string, envId: string): Promise<void>;
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* The vendor-specific inputs to project resolution — the only two things in
|
|
251
|
-
* that three-tier ladder that are not generic.
|
|
252
|
-
*/
|
|
253
|
-
export interface DeployProviderHooks {
|
|
254
|
-
/** Normalizes a git remote into the URL the vendor keys projects by. */
|
|
255
|
-
repoUrl(remoteUrl: string): string | null;
|
|
256
|
-
/**
|
|
257
|
-
* The file the vendor's CLI writes on `link`. Vercel:
|
|
258
|
-
* `{ path: ".vercel/project.json", field: "projectId" }`. Providers without
|
|
259
|
-
* one simply skip that tier.
|
|
260
|
-
*/
|
|
261
|
-
linkFile?: {
|
|
262
|
-
path: string;
|
|
263
|
-
field: string;
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* The declarative half of a provider — everything a generic view needs in
|
|
268
|
-
* order to render it without knowing which provider it is.
|
|
269
|
-
*
|
|
270
|
-
* Plain data because this is what a provider manifest carries. `strings` and
|
|
271
|
-
* `auth` join it when the registry lands; today it holds what already exists.
|
|
272
|
-
*/
|
|
273
|
-
export interface DeployProviderManifest {
|
|
274
|
-
id: string;
|
|
275
|
-
name: string;
|
|
276
|
-
kind: "deploy";
|
|
277
|
-
/**
|
|
278
|
-
* This provider's own words, per locale — its action labels, their toasts and
|
|
279
|
-
* confirmations, and what it calls a scope (`scope.label`: "Team" for Vercel,
|
|
280
|
-
* "Account" for Cloudflare).
|
|
281
|
-
*
|
|
282
|
-
* Here rather than in the host's `i18n/en.ts` because the provider, not the
|
|
283
|
-
* host, determines which keys exist: `actions` is a free list of vendor
|
|
284
|
-
* vocabulary, so the host cannot hold a catalogue entry for a word it has
|
|
285
|
-
* never seen. See `providers/strings.ts`.
|
|
286
|
-
*/
|
|
287
|
-
strings: ProviderStrings;
|
|
288
|
-
/**
|
|
289
|
-
* How this provider can be connected.
|
|
290
|
-
*
|
|
291
|
-
* The generic setup screen cannot otherwise know whether to offer "sign in
|
|
292
|
-
* with browser": Vercel has all three sources, while Cloudflare has no
|
|
293
|
-
* registration endpoint for `providers/oauth.ts` to mint a client against, so
|
|
294
|
-
* offering it there is a button that can only fail. This is a fact about each
|
|
295
|
-
* provider's *current* wiring rather than a permanent one — see
|
|
296
|
-
* `cloudflare-auth.ts` — which is exactly why it is declared per provider
|
|
297
|
-
* instead of inferred. Kept in step with the `ProviderAuthSpec` by
|
|
298
|
-
* `test/provider-routes.test.ts`.
|
|
299
|
-
*/
|
|
300
|
-
authSources: ("cli" | "stored" | "oauth")[];
|
|
301
|
-
capabilities: DeployCapability[];
|
|
302
|
-
/**
|
|
303
|
-
* Whether a scope must be chosen before anything can be read at all.
|
|
304
|
-
*
|
|
305
|
-
* Cloudflare addresses every Pages URL as `/accounts/<id>/…`, so without an
|
|
306
|
-
* account id there is no request to make; Vercel's personal scope is a real
|
|
307
|
-
* resting state, so "no scope" is normal there. The switcher needs the
|
|
308
|
-
* difference because a scope list can come back empty for a perfectly good
|
|
309
|
-
* token — enumerating Cloudflare accounts needs `Account Settings: Read`,
|
|
310
|
-
* which a Pages token has no reason to carry — and the two providers want
|
|
311
|
-
* opposite things in that case: Vercel, nothing; Cloudflare, a way to enter
|
|
312
|
-
* the id by hand rather than a dead end.
|
|
313
|
-
*/
|
|
314
|
-
requiresScope?: boolean;
|
|
315
|
-
/** Action names accepted by {@link DeployProviderActions.run}. */
|
|
316
|
-
actions: string[];
|
|
317
|
-
/** The subset of `actions` that changes what production serves; the UI confirms these first. */
|
|
318
|
-
productionAffecting: string[];
|
|
319
|
-
/**
|
|
320
|
-
* The egress allowlist — every host this provider may reach.
|
|
321
|
-
*
|
|
322
|
-
* Enforced, not documented: the provider's registry entry mints its client
|
|
323
|
-
* with `createProviderFetch(manifest)`, and a request to any other host throws
|
|
324
|
-
* before it is sent. See `providers/egress.ts`.
|
|
325
|
-
*/
|
|
326
|
-
api: ProviderApiSpec;
|
|
327
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The contract a deploy platform implements — Vercel today, Cloudflare and
|
|
3
|
-
* Netlify next.
|
|
4
|
-
*
|
|
5
|
-
* Every method here already existed on `VercelManager` with the same arguments;
|
|
6
|
-
* this is a rename plus four deliberate neutralizations, each of which is a
|
|
7
|
-
* place the abstraction would otherwise leak on provider #2:
|
|
8
|
-
*
|
|
9
|
-
* 1. **Build settings are a list, not fields.** `VercelProject` hard-codes
|
|
10
|
-
* seven; Cloudflare's set differs and an IaaS provider has none.
|
|
11
|
-
* 2. **Deployment state carries `rawState`.** The vendor's own word survives
|
|
12
|
-
* normalization, so the first provider whose states don't map cleanly does
|
|
13
|
-
* not force a contract change.
|
|
14
|
-
* 3. **Build and runtime log lines are one type.** They answer different
|
|
15
|
-
* questions but have the same shape, and a provider may serve only one.
|
|
16
|
-
* 4. **Writes are a named action list, not fixed methods.** See
|
|
17
|
-
* {@link DeployProviderActions}.
|
|
18
|
-
*
|
|
19
|
-
* The read-safe / write-capable split from `git-manager`/`git-actions` and
|
|
20
|
-
* `db-peek`/`db-write` is preserved exactly: {@link DeployProvider} contains
|
|
21
|
-
* nothing that changes what is deployed, and {@link DeployProviderActions} is a
|
|
22
|
-
* separate object resolved separately and never exposed as an MCP tool.
|
|
23
|
-
*/
|
|
24
|
-
export {};
|
|
25
|
-
//# sourceMappingURL=deploy-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-provider.js","sourceRoot":"","sources":["../../../src/core/providers/deploy-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The provider egress boundary — a `fetch` scoped to a provider's declared
|
|
3
|
-
* `api.hosts`.
|
|
4
|
-
*
|
|
5
|
-
* §6 of `docs/plans/2026-08-13-provider-registry-design.md` calls `api.hosts`
|
|
6
|
-
* "the security boundary", and §11 records that the boundary existed only in
|
|
7
|
-
* prose: all three managers called global `fetch` directly. This is the module
|
|
8
|
-
* that makes it real, and it is gate item 3 of the freeze decision.
|
|
9
|
-
*
|
|
10
|
-
* **Why it matters even while every provider is in-tree.** A provider
|
|
11
|
-
* necessarily receives credentials and runs inside the daemon — the same
|
|
12
|
-
* process holding GitHub tokens, `db-write.ts` access and process-spawn
|
|
13
|
-
* ability. In-tree the code is reviewed and the egress auditable, so this buys
|
|
14
|
-
* documentation rather than protection. The moment a provider is *downloaded*,
|
|
15
|
-
* it is the entire barrier. Landing it now means the three in-tree providers
|
|
16
|
-
* prove the shape before anything third-party depends on it.
|
|
17
|
-
*
|
|
18
|
-
* **The hole it closes today.** All three `xRequest` helpers accept an absolute
|
|
19
|
-
* URL (`path.startsWith("http")`) and skip the base URL entirely. That escape
|
|
20
|
-
* exists for pagination cursors, and it is exactly what provider code would use
|
|
21
|
-
* to send an `Authorization`-bearing request anywhere it liked. The allowlist is
|
|
22
|
-
* checked against the *final* URL, so the escape no longer escapes.
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* The egress allowlist a provider manifest declares.
|
|
26
|
-
*
|
|
27
|
-
* Hosts are matched **exactly** — no wildcards, deliberately. Every vendor here
|
|
28
|
-
* has a customer-controlled subdomain space (`*.vercel.app`, `*.pages.dev`), so
|
|
29
|
-
* a pattern like `*.vercel.com` reads as a convenience while quietly admitting
|
|
30
|
-
* hosts the vendor does not control. A provider that genuinely needs a second
|
|
31
|
-
* host lists the second host.
|
|
32
|
-
*/
|
|
33
|
-
export interface ProviderApiSpec {
|
|
34
|
-
/** Bare hostnames, no scheme and no path: `["api.vercel.com"]`. */
|
|
35
|
-
hosts: string[];
|
|
36
|
-
}
|
|
37
|
-
/** A `fetch` that can only reach one provider's declared hosts. */
|
|
38
|
-
export type ProviderFetch = (url: string | URL, init?: RequestInit) => Promise<Response>;
|
|
39
|
-
/**
|
|
40
|
-
* A refused request. Distinct from every `*ApiError` because nothing was sent —
|
|
41
|
-
* there is no status and no vendor to blame, only a provider asking for
|
|
42
|
-
* something its manifest does not declare.
|
|
43
|
-
*/
|
|
44
|
-
export declare class ProviderEgressError extends Error {
|
|
45
|
-
readonly providerId: string;
|
|
46
|
-
readonly url: string;
|
|
47
|
-
constructor(message: string, providerId: string, url: string);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* A `fetch` for one provider, refusing anything its manifest does not declare.
|
|
51
|
-
*
|
|
52
|
-
* Takes the manifest rather than a bare host list so the id in an error message
|
|
53
|
-
* and the allowlist it was checked against cannot drift apart.
|
|
54
|
-
*/
|
|
55
|
-
export declare function createProviderFetch(manifest: {
|
|
56
|
-
id: string;
|
|
57
|
-
api: ProviderApiSpec;
|
|
58
|
-
}, base?: ProviderFetch): ProviderFetch;
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The provider egress boundary — a `fetch` scoped to a provider's declared
|
|
3
|
-
* `api.hosts`.
|
|
4
|
-
*
|
|
5
|
-
* §6 of `docs/plans/2026-08-13-provider-registry-design.md` calls `api.hosts`
|
|
6
|
-
* "the security boundary", and §11 records that the boundary existed only in
|
|
7
|
-
* prose: all three managers called global `fetch` directly. This is the module
|
|
8
|
-
* that makes it real, and it is gate item 3 of the freeze decision.
|
|
9
|
-
*
|
|
10
|
-
* **Why it matters even while every provider is in-tree.** A provider
|
|
11
|
-
* necessarily receives credentials and runs inside the daemon — the same
|
|
12
|
-
* process holding GitHub tokens, `db-write.ts` access and process-spawn
|
|
13
|
-
* ability. In-tree the code is reviewed and the egress auditable, so this buys
|
|
14
|
-
* documentation rather than protection. The moment a provider is *downloaded*,
|
|
15
|
-
* it is the entire barrier. Landing it now means the three in-tree providers
|
|
16
|
-
* prove the shape before anything third-party depends on it.
|
|
17
|
-
*
|
|
18
|
-
* **The hole it closes today.** All three `xRequest` helpers accept an absolute
|
|
19
|
-
* URL (`path.startsWith("http")`) and skip the base URL entirely. That escape
|
|
20
|
-
* exists for pagination cursors, and it is exactly what provider code would use
|
|
21
|
-
* to send an `Authorization`-bearing request anywhere it liked. The allowlist is
|
|
22
|
-
* checked against the *final* URL, so the escape no longer escapes.
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* A refused request. Distinct from every `*ApiError` because nothing was sent —
|
|
26
|
-
* there is no status and no vendor to blame, only a provider asking for
|
|
27
|
-
* something its manifest does not declare.
|
|
28
|
-
*/
|
|
29
|
-
export class ProviderEgressError extends Error {
|
|
30
|
-
providerId;
|
|
31
|
-
url;
|
|
32
|
-
constructor(message, providerId, url) {
|
|
33
|
-
super(message);
|
|
34
|
-
this.providerId = providerId;
|
|
35
|
-
this.url = url;
|
|
36
|
-
this.name = "ProviderEgressError";
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* A redirect chain is followed by hand so that every hop is checked.
|
|
41
|
-
*
|
|
42
|
-
* The default `redirect: "follow"` would let an allowlisted host bounce a
|
|
43
|
-
* credential-bearing request to an unlisted one, and open redirects on vendor
|
|
44
|
-
* APIs are common enough that this is not a theoretical concern. Each hop goes
|
|
45
|
-
* back through the allowlist; the cap stops a redirect loop from hanging a
|
|
46
|
-
* dashboard request.
|
|
47
|
-
*/
|
|
48
|
-
const MAX_REDIRECTS = 5;
|
|
49
|
-
/** Read at call time, not at module load, so a test's `vi.stubGlobal` still wins. */
|
|
50
|
-
const globalFetch = (url, init) => fetch(url, init);
|
|
51
|
-
/**
|
|
52
|
-
* A `fetch` for one provider, refusing anything its manifest does not declare.
|
|
53
|
-
*
|
|
54
|
-
* Takes the manifest rather than a bare host list so the id in an error message
|
|
55
|
-
* and the allowlist it was checked against cannot drift apart.
|
|
56
|
-
*/
|
|
57
|
-
export function createProviderFetch(manifest, base = globalFetch) {
|
|
58
|
-
const { id } = manifest;
|
|
59
|
-
const allowed = new Set(manifest.api.hosts.map((host) => host.trim().toLowerCase()));
|
|
60
|
-
const send = async (input, init, hop) => {
|
|
61
|
-
const url = assertAllowed(id, allowed, input);
|
|
62
|
-
// `manual` so a 3xx comes back as a response to inspect rather than being
|
|
63
|
-
// followed past the allowlist.
|
|
64
|
-
const response = await base(url, { ...init, redirect: "manual" });
|
|
65
|
-
const location = redirectTarget(response);
|
|
66
|
-
if (!location)
|
|
67
|
-
return response;
|
|
68
|
-
if (hop >= MAX_REDIRECTS) {
|
|
69
|
-
throw new ProviderEgressError(`Provider "${id}" was redirected more than ${MAX_REDIRECTS} times from ${url.href}.`, id, url.href);
|
|
70
|
-
}
|
|
71
|
-
return send(new URL(location, url), afterRedirect(init, response.status), hop + 1);
|
|
72
|
-
};
|
|
73
|
-
return (input, init) => send(input, init, 0);
|
|
74
|
-
}
|
|
75
|
-
/** The URL a response redirects to, or null when it is not a redirect. */
|
|
76
|
-
function redirectTarget(response) {
|
|
77
|
-
if (response.status < 300 || response.status > 399)
|
|
78
|
-
return null;
|
|
79
|
-
return response.headers.get("location");
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* How a request changes across a redirect, per the Fetch standard: 303 always
|
|
83
|
-
* becomes a GET, 301/302 turn a POST into one, and 307/308 preserve both method
|
|
84
|
-
* and body.
|
|
85
|
-
*/
|
|
86
|
-
function afterRedirect(init, status) {
|
|
87
|
-
const method = (init?.method ?? "GET").toUpperCase();
|
|
88
|
-
const downgrades = status === 303 || ((status === 301 || status === 302) && method === "POST");
|
|
89
|
-
if (!downgrades)
|
|
90
|
-
return init;
|
|
91
|
-
const { body: _body, ...rest } = init ?? {};
|
|
92
|
-
return { ...rest, method: "GET" };
|
|
93
|
-
}
|
|
94
|
-
/** Hosts that cannot leave the machine, and so need no transport encryption. */
|
|
95
|
-
function isLoopback(hostname) {
|
|
96
|
-
return hostname === "127.0.0.1" || hostname === "localhost" || hostname === "[::1]" || hostname === "::1";
|
|
97
|
-
}
|
|
98
|
-
/** The check itself. Throws before anything is sent, so a refused call leaks nothing. */
|
|
99
|
-
function assertAllowed(providerId, allowed, input) {
|
|
100
|
-
let url;
|
|
101
|
-
try {
|
|
102
|
-
url = input instanceof URL ? input : new URL(String(input));
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
throw new ProviderEgressError(`Provider "${providerId}" asked for a URL that is not absolute: ${String(input)}`, providerId, String(input));
|
|
106
|
-
}
|
|
107
|
-
// Every provider API is HTTPS, and the schemes this rules out are the
|
|
108
|
-
// interesting ones: `file:` reads the disk, `data:` smuggles a payload past a
|
|
109
|
-
// host check, and `http:` puts a token on the wire in clear text.
|
|
110
|
-
//
|
|
111
|
-
// The one exception is a loopback host, which is only ever reachable because
|
|
112
|
-
// `providerApiBase()` accepted an override naming one — and a request that
|
|
113
|
-
// never leaves the loopback interface is not on a wire to be read. Narrowing
|
|
114
|
-
// it to loopback is what keeps this from becoming a general `http:` opening.
|
|
115
|
-
if (url.protocol !== "https:" && !(url.protocol === "http:" && isLoopback(url.hostname))) {
|
|
116
|
-
throw new ProviderEgressError(`Provider "${providerId}" may only use https, not ${url.protocol.replace(":", "")}: ${url.href}`, providerId, url.href);
|
|
117
|
-
}
|
|
118
|
-
if (!allowed.has(url.hostname.toLowerCase())) {
|
|
119
|
-
throw new ProviderEgressError(`Provider "${providerId}" is not allowed to reach ${url.hostname}. ` +
|
|
120
|
-
`Its manifest declares: ${[...allowed].join(", ") || "no hosts"}.`, providerId, url.href);
|
|
121
|
-
}
|
|
122
|
-
return url;
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=egress.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"egress.js","sourceRoot":"","sources":["../../../src/core/providers/egress.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { ConfigStore } from "../config-store.js";
|
|
2
|
-
import type { HostSshTarget } from "./host-provider.js";
|
|
3
|
-
/**
|
|
4
|
-
* Every connected host provider's instances, as SSH targets.
|
|
5
|
-
*
|
|
6
|
-
* This is the bridge §7 of the design plan was written for: the servers list
|
|
7
|
-
* the user already has gains a row per provider instance, and everything
|
|
8
|
-
* downstream — `probeSshServer`, `readRemoteHostMetrics`, the terminal route,
|
|
9
|
-
* the remote service runner — keeps working against a plain
|
|
10
|
-
* `SshServerDefinition` without knowing a provider exists.
|
|
11
|
-
*
|
|
12
|
-
* **Never throws.** A provider that is not connected, whose token has expired,
|
|
13
|
-
* or whose API is down contributes nothing; the user's hand-registered and
|
|
14
|
-
* `~/.ssh/config` hosts must still list. A provider outage is not a reason for
|
|
15
|
-
* the servers page to go blank, and there is nowhere in that page's shape to
|
|
16
|
-
* report one.
|
|
17
|
-
*/
|
|
18
|
-
export declare function hostProviderSshTargets(configStore: ConfigStore): Promise<HostSshTarget[]>;
|
|
19
|
-
/** Drops the cache so the next read reflects a change we just made. */
|
|
20
|
-
export declare function invalidateHostSshTargets(): void;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { hostProviders } from "./registry.js";
|
|
2
|
-
/**
|
|
3
|
-
* Every connected host provider's instances, as SSH targets.
|
|
4
|
-
*
|
|
5
|
-
* This is the bridge §7 of the design plan was written for: the servers list
|
|
6
|
-
* the user already has gains a row per provider instance, and everything
|
|
7
|
-
* downstream — `probeSshServer`, `readRemoteHostMetrics`, the terminal route,
|
|
8
|
-
* the remote service runner — keeps working against a plain
|
|
9
|
-
* `SshServerDefinition` without knowing a provider exists.
|
|
10
|
-
*
|
|
11
|
-
* **Never throws.** A provider that is not connected, whose token has expired,
|
|
12
|
-
* or whose API is down contributes nothing; the user's hand-registered and
|
|
13
|
-
* `~/.ssh/config` hosts must still list. A provider outage is not a reason for
|
|
14
|
-
* the servers page to go blank, and there is nowhere in that page's shape to
|
|
15
|
-
* report one.
|
|
16
|
-
*/
|
|
17
|
-
export async function hostProviderSshTargets(configStore) {
|
|
18
|
-
const cached = readCache();
|
|
19
|
-
if (cached)
|
|
20
|
-
return cached;
|
|
21
|
-
const perProvider = await Promise.all(hostProviders.map(async (provider) => {
|
|
22
|
-
try {
|
|
23
|
-
const { provider: client } = await provider.context(configStore);
|
|
24
|
-
const instances = await client.listInstances();
|
|
25
|
-
return instances
|
|
26
|
-
.map((instance) => client.toSshTarget(instance))
|
|
27
|
-
.filter((target) => target !== null);
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
return [];
|
|
31
|
-
}
|
|
32
|
-
}));
|
|
33
|
-
const targets = perProvider.flat();
|
|
34
|
-
cache = { at: Date.now(), targets };
|
|
35
|
-
return targets;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* How long a provider's instance list is reused.
|
|
39
|
-
*
|
|
40
|
-
* The servers view reloads on an interval *and* on every window focus, and each
|
|
41
|
-
* reload would otherwise be one API call per connected provider. Instances do
|
|
42
|
-
* not change on a human timescale, so a short window trades staleness nobody
|
|
43
|
-
* notices for not being rate-limited by the vendor. Power actions clear it
|
|
44
|
-
* explicitly, which is the one case where the delay would be visible.
|
|
45
|
-
*/
|
|
46
|
-
const CACHE_TTL_MS = 30_000;
|
|
47
|
-
let cache = null;
|
|
48
|
-
function readCache() {
|
|
49
|
-
if (!cache || Date.now() - cache.at >= CACHE_TTL_MS)
|
|
50
|
-
return null;
|
|
51
|
-
return cache.targets;
|
|
52
|
-
}
|
|
53
|
-
/** Drops the cache so the next read reflects a change we just made. */
|
|
54
|
-
export function invalidateHostSshTargets() {
|
|
55
|
-
cache = null;
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=host-bridge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"host-bridge.js","sourceRoot":"","sources":["../../../src/core/providers/host-bridge.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAwB;IAExB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACjE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;YAC/C,OAAO,SAAS;iBACb,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;iBAC/C,MAAM,CAAC,CAAC,MAAM,EAA2B,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IACnC,KAAK,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC;IACpC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,YAAY,GAAG,MAAM,CAAC;AAE5B,IAAI,KAAK,GAAoD,IAAI,CAAC;AAElE,SAAS,SAAS;IAChB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,YAAY;QAAE,OAAO,IAAI,CAAC;IACjE,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,wBAAwB;IACtC,KAAK,GAAG,IAAI,CAAC;AACf,CAAC"}
|