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,83 +0,0 @@
|
|
|
1
|
-
export declare const CONTEXT_KINDS: readonly ["note", "project", "service", "file", "incident", "session"];
|
|
2
|
-
export type ContextKind = (typeof CONTEXT_KINDS)[number];
|
|
3
|
-
export interface ContextRef {
|
|
4
|
-
kind: ContextKind;
|
|
5
|
-
id: string;
|
|
6
|
-
}
|
|
7
|
-
export interface ContextLink {
|
|
8
|
-
target: string;
|
|
9
|
-
label?: string;
|
|
10
|
-
embed: boolean;
|
|
11
|
-
}
|
|
12
|
-
export interface ContextItem {
|
|
13
|
-
ref: ContextRef;
|
|
14
|
-
title: string;
|
|
15
|
-
kind: ContextKind;
|
|
16
|
-
excerpt?: string;
|
|
17
|
-
projectPath?: string;
|
|
18
|
-
path?: string;
|
|
19
|
-
updatedAt?: string;
|
|
20
|
-
tags: string[];
|
|
21
|
-
aliases: string[];
|
|
22
|
-
pinned: boolean;
|
|
23
|
-
editable: boolean;
|
|
24
|
-
}
|
|
25
|
-
export interface ContextNote extends ContextItem {
|
|
26
|
-
kind: "note";
|
|
27
|
-
body: string;
|
|
28
|
-
revision: string;
|
|
29
|
-
links: ContextLink[];
|
|
30
|
-
projectPaths: string[];
|
|
31
|
-
frontmatter: Record<string, unknown>;
|
|
32
|
-
}
|
|
33
|
-
export interface ContextGraphNode {
|
|
34
|
-
ref: ContextRef;
|
|
35
|
-
title: string;
|
|
36
|
-
kind: ContextKind;
|
|
37
|
-
pinned: boolean;
|
|
38
|
-
unresolved?: boolean;
|
|
39
|
-
}
|
|
40
|
-
export interface ContextGraphEdge {
|
|
41
|
-
from: ContextRef;
|
|
42
|
-
to: ContextRef;
|
|
43
|
-
type: "wiki" | "belongs-to" | "mentions" | "depends-on";
|
|
44
|
-
}
|
|
45
|
-
export interface ContextGraph {
|
|
46
|
-
nodes: ContextGraphNode[];
|
|
47
|
-
edges: ContextGraphEdge[];
|
|
48
|
-
truncated: boolean;
|
|
49
|
-
}
|
|
50
|
-
export interface ContextAttachment {
|
|
51
|
-
refs: ContextRef[];
|
|
52
|
-
includePinned: boolean;
|
|
53
|
-
}
|
|
54
|
-
export interface ContextPreview {
|
|
55
|
-
context: string;
|
|
56
|
-
estimatedTokens: number;
|
|
57
|
-
resolved: ContextItem[];
|
|
58
|
-
missing: ContextRef[];
|
|
59
|
-
warnings: string[];
|
|
60
|
-
}
|
|
61
|
-
export interface ContextLibrarySnapshot {
|
|
62
|
-
vaultPath: string;
|
|
63
|
-
items: ContextItem[];
|
|
64
|
-
pinned: ContextRef[];
|
|
65
|
-
diagnostics: string[];
|
|
66
|
-
truncated: boolean;
|
|
67
|
-
}
|
|
68
|
-
export interface CreateContextNoteInput {
|
|
69
|
-
title: string;
|
|
70
|
-
body?: string;
|
|
71
|
-
projectPaths?: string[];
|
|
72
|
-
tags?: string[];
|
|
73
|
-
aliases?: string[];
|
|
74
|
-
sourceKey?: string;
|
|
75
|
-
}
|
|
76
|
-
export interface UpdateContextNoteInput {
|
|
77
|
-
title: string;
|
|
78
|
-
body: string;
|
|
79
|
-
projectPaths: string[];
|
|
80
|
-
tags: string[];
|
|
81
|
-
aliases: string[];
|
|
82
|
-
revision: string;
|
|
83
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-types.js","sourceRoot":"","sources":["../../src/core/context-types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM;IACN,SAAS;IACT,SAAS;IACT,MAAM;IACN,UAAU;IACV,SAAS;CACD,CAAC"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import type { ErrorIncident } from "./error-inbox.js";
|
|
2
|
-
import type { NoMoreIdeStatus } from "./process-manager.js";
|
|
3
|
-
import type { PortHolder } from "./port-utils.js";
|
|
4
|
-
import type { TerminalSessionInfo } from "./terminal-manager.js";
|
|
5
|
-
import type { LogEntry, NoMoreIdeConfig, ServiceStatus, TimelineEvent } from "./types.js";
|
|
6
|
-
import { type DaemonLifecycleOptions, type EnsureDaemonResult } from "./daemon-lifecycle.js";
|
|
7
|
-
/** Non-2xx daemon response that isn't a port conflict. */
|
|
8
|
-
export declare class DaemonRequestError extends Error {
|
|
9
|
-
readonly httpStatus: number;
|
|
10
|
-
constructor(message: string, httpStatus: number);
|
|
11
|
-
}
|
|
12
|
-
/** Mirrors the daemon's serialized PortConflictError (HTTP 409 + conflict body). */
|
|
13
|
-
export declare class DaemonPortConflictError extends Error {
|
|
14
|
-
readonly port: number;
|
|
15
|
-
readonly holder: PortHolder | null;
|
|
16
|
-
readonly code = "PORT_IN_USE";
|
|
17
|
-
constructor(message: string, port: number, holder: PortHolder | null);
|
|
18
|
-
}
|
|
19
|
-
/** What `/api/errors/:id/prompt` answers with. */
|
|
20
|
-
export interface ErrorPromptPayload {
|
|
21
|
-
incident: ErrorIncident;
|
|
22
|
-
file?: string;
|
|
23
|
-
prompt: string;
|
|
24
|
-
}
|
|
25
|
-
export interface StartOptions {
|
|
26
|
-
killHolder?: boolean;
|
|
27
|
-
}
|
|
28
|
-
/** Subset of the `/api/dashboard` payload the clients consume. */
|
|
29
|
-
export interface DaemonDashboard {
|
|
30
|
-
ok: boolean;
|
|
31
|
-
config: NoMoreIdeConfig;
|
|
32
|
-
runtime: NoMoreIdeStatus;
|
|
33
|
-
health: unknown;
|
|
34
|
-
timeline: TimelineEvent[];
|
|
35
|
-
}
|
|
36
|
-
export interface DaemonClientOptions {
|
|
37
|
-
fetch?: typeof fetch;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Typed fetch client for the daemon's existing HTTP API. Thin by design:
|
|
41
|
-
* every method maps 1:1 onto a route the web UI already uses.
|
|
42
|
-
*/
|
|
43
|
-
export declare class DaemonClient {
|
|
44
|
-
readonly url: string;
|
|
45
|
-
private readonly fetchFn;
|
|
46
|
-
constructor(url: string, options?: DaemonClientOptions);
|
|
47
|
-
status(): Promise<NoMoreIdeStatus>;
|
|
48
|
-
dashboard(): Promise<DaemonDashboard>;
|
|
49
|
-
logs(name: string, lines?: number): Promise<LogEntry[]>;
|
|
50
|
-
timeline(limit?: number): Promise<TimelineEvent[]>;
|
|
51
|
-
/** Deduped incidents the daemon's inbox is holding, most recently active first. */
|
|
52
|
-
listErrors(limit?: number): Promise<ErrorIncident[]>;
|
|
53
|
-
/**
|
|
54
|
-
* The debugging prompt for one incident, or null when the daemon holds no
|
|
55
|
-
* such incident. A 404 here is an answer, not a transport failure.
|
|
56
|
-
*/
|
|
57
|
-
errorPrompt(id: number): Promise<ErrorPromptPayload | null>;
|
|
58
|
-
startService(name: string, options?: StartOptions): Promise<ServiceStatus>;
|
|
59
|
-
stopService(name: string): Promise<ServiceStatus>;
|
|
60
|
-
restartService(name: string, options?: StartOptions): Promise<ServiceStatus>;
|
|
61
|
-
startBundle(name: string): Promise<ServiceStatus[]>;
|
|
62
|
-
stopBundle(name: string): Promise<ServiceStatus[]>;
|
|
63
|
-
restartBundle(name: string): Promise<ServiceStatus[]>;
|
|
64
|
-
/** Asks the daemon to stop every service and exit. */
|
|
65
|
-
shutdown(): Promise<void>;
|
|
66
|
-
listTerminalSessions(): Promise<TerminalSessionInfo[]>;
|
|
67
|
-
openTerminal(id: string): Promise<TerminalSessionInfo>;
|
|
68
|
-
reclaimTerminal(id: string): Promise<TerminalSessionInfo>;
|
|
69
|
-
private serviceAction;
|
|
70
|
-
private bundleAction;
|
|
71
|
-
private request;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Lazy daemon handle shared by MCP/CLI/TUI: every `client()` call re-runs
|
|
75
|
-
* `ensureDaemon` (one local health round-trip on the happy path), so a daemon
|
|
76
|
-
* that died mid-session is respawned instead of surfacing connection errors.
|
|
77
|
-
*/
|
|
78
|
-
export interface DaemonConnection {
|
|
79
|
-
ensure(): Promise<EnsureDaemonResult>;
|
|
80
|
-
client(): Promise<DaemonClient>;
|
|
81
|
-
/** A client for an already-running daemon, or null — never spawns one. */
|
|
82
|
-
existing(): Promise<DaemonClient | null>;
|
|
83
|
-
}
|
|
84
|
-
export declare function createDaemonConnection(options?: DaemonLifecycleOptions): DaemonConnection;
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { defaultDaemonStatePath, ensureDaemon, probeDaemon, readDaemonState, resolveDaemonPort, } from "./daemon-lifecycle.js";
|
|
2
|
-
/** Non-2xx daemon response that isn't a port conflict. */
|
|
3
|
-
export class DaemonRequestError extends Error {
|
|
4
|
-
httpStatus;
|
|
5
|
-
constructor(message, httpStatus) {
|
|
6
|
-
super(message);
|
|
7
|
-
this.httpStatus = httpStatus;
|
|
8
|
-
this.name = "DaemonRequestError";
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
/** Mirrors the daemon's serialized PortConflictError (HTTP 409 + conflict body). */
|
|
12
|
-
export class DaemonPortConflictError extends Error {
|
|
13
|
-
port;
|
|
14
|
-
holder;
|
|
15
|
-
code = "PORT_IN_USE";
|
|
16
|
-
constructor(message, port, holder) {
|
|
17
|
-
super(message);
|
|
18
|
-
this.port = port;
|
|
19
|
-
this.holder = holder;
|
|
20
|
-
this.name = "DaemonPortConflictError";
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Typed fetch client for the daemon's existing HTTP API. Thin by design:
|
|
25
|
-
* every method maps 1:1 onto a route the web UI already uses.
|
|
26
|
-
*/
|
|
27
|
-
export class DaemonClient {
|
|
28
|
-
url;
|
|
29
|
-
fetchFn;
|
|
30
|
-
constructor(url, options = {}) {
|
|
31
|
-
this.url = url;
|
|
32
|
-
this.fetchFn = options.fetch ?? fetch;
|
|
33
|
-
}
|
|
34
|
-
async status() {
|
|
35
|
-
const body = await this.request("GET", "/api/status");
|
|
36
|
-
return body.status;
|
|
37
|
-
}
|
|
38
|
-
async dashboard() {
|
|
39
|
-
return await this.request("GET", "/api/dashboard");
|
|
40
|
-
}
|
|
41
|
-
async logs(name, lines = 200) {
|
|
42
|
-
const body = await this.request("GET", `/api/services/${encodeURIComponent(name)}/logs?lines=${lines}`);
|
|
43
|
-
return body.logs;
|
|
44
|
-
}
|
|
45
|
-
async timeline(limit = 120) {
|
|
46
|
-
const body = await this.request("GET", `/api/timeline?limit=${limit}`);
|
|
47
|
-
return body.timeline;
|
|
48
|
-
}
|
|
49
|
-
/** Deduped incidents the daemon's inbox is holding, most recently active first. */
|
|
50
|
-
async listErrors(limit = 100) {
|
|
51
|
-
const body = await this.request("GET", `/api/errors?limit=${limit}`);
|
|
52
|
-
return body.incidents;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* The debugging prompt for one incident, or null when the daemon holds no
|
|
56
|
-
* such incident. A 404 here is an answer, not a transport failure.
|
|
57
|
-
*/
|
|
58
|
-
async errorPrompt(id) {
|
|
59
|
-
try {
|
|
60
|
-
return await this.request("GET", `/api/errors/${encodeURIComponent(String(id))}/prompt`);
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
if (error instanceof DaemonRequestError && error.httpStatus === 404) {
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
throw error;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
async startService(name, options = {}) {
|
|
70
|
-
return await this.serviceAction(name, "start", options);
|
|
71
|
-
}
|
|
72
|
-
async stopService(name) {
|
|
73
|
-
return await this.serviceAction(name, "stop");
|
|
74
|
-
}
|
|
75
|
-
async restartService(name, options = {}) {
|
|
76
|
-
return await this.serviceAction(name, "restart", options);
|
|
77
|
-
}
|
|
78
|
-
async startBundle(name) {
|
|
79
|
-
return await this.bundleAction(name, "start");
|
|
80
|
-
}
|
|
81
|
-
async stopBundle(name) {
|
|
82
|
-
return await this.bundleAction(name, "stop");
|
|
83
|
-
}
|
|
84
|
-
async restartBundle(name) {
|
|
85
|
-
return await this.bundleAction(name, "restart");
|
|
86
|
-
}
|
|
87
|
-
/** Asks the daemon to stop every service and exit. */
|
|
88
|
-
async shutdown() {
|
|
89
|
-
await this.request("POST", "/api/daemon/shutdown");
|
|
90
|
-
}
|
|
91
|
-
async listTerminalSessions() {
|
|
92
|
-
const body = await this.request("GET", "/api/terminal/sessions");
|
|
93
|
-
return body.sessions;
|
|
94
|
-
}
|
|
95
|
-
async openTerminal(id) {
|
|
96
|
-
const body = await this.request("POST", `/api/terminal/sessions/${encodeURIComponent(id)}/open-system-terminal`, undefined, { "x-nomoreide-terminal-control": "1" });
|
|
97
|
-
return body.session;
|
|
98
|
-
}
|
|
99
|
-
async reclaimTerminal(id) {
|
|
100
|
-
const body = await this.request("POST", `/api/terminal/sessions/${encodeURIComponent(id)}/reclaim-dock`, undefined, { "x-nomoreide-terminal-control": "1" });
|
|
101
|
-
return body.session;
|
|
102
|
-
}
|
|
103
|
-
async serviceAction(name, action, options = {}) {
|
|
104
|
-
const form = new URLSearchParams();
|
|
105
|
-
if (options.killHolder)
|
|
106
|
-
form.set("strategy", "killHolder");
|
|
107
|
-
const body = await this.request("POST", `/api/services/${encodeURIComponent(name)}/${action}`, form);
|
|
108
|
-
return body.status;
|
|
109
|
-
}
|
|
110
|
-
async bundleAction(name, action) {
|
|
111
|
-
const body = await this.request("POST", `/api/bundles/${encodeURIComponent(name)}/${action}`);
|
|
112
|
-
return body.statuses;
|
|
113
|
-
}
|
|
114
|
-
async request(method, path, form, headers) {
|
|
115
|
-
const response = await this.fetchFn(new URL(path, this.url), {
|
|
116
|
-
method,
|
|
117
|
-
...(form
|
|
118
|
-
? {
|
|
119
|
-
body: form.toString(),
|
|
120
|
-
headers: {
|
|
121
|
-
"content-type": "application/x-www-form-urlencoded",
|
|
122
|
-
...headers,
|
|
123
|
-
},
|
|
124
|
-
}
|
|
125
|
-
: headers ? { headers } : {}),
|
|
126
|
-
});
|
|
127
|
-
const body = (await response.json().catch(() => ({})));
|
|
128
|
-
if (!response.ok || body.ok === false) {
|
|
129
|
-
const message = body.error ?? `Daemon request failed (${response.status})`;
|
|
130
|
-
if (body.conflict?.code === "PORT_IN_USE") {
|
|
131
|
-
throw new DaemonPortConflictError(message, body.conflict.port ?? 0, body.conflict.holder ?? null);
|
|
132
|
-
}
|
|
133
|
-
throw new DaemonRequestError(message, response.status);
|
|
134
|
-
}
|
|
135
|
-
return body;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
export function createDaemonConnection(options = {}) {
|
|
139
|
-
return {
|
|
140
|
-
ensure: () => ensureDaemon(options),
|
|
141
|
-
async client() {
|
|
142
|
-
const ensured = await ensureDaemon(options);
|
|
143
|
-
return new DaemonClient(ensured.url, { fetch: options.fetch });
|
|
144
|
-
},
|
|
145
|
-
async existing() {
|
|
146
|
-
const state = await readDaemonState(options.statePath ?? defaultDaemonStatePath());
|
|
147
|
-
const url = state?.url ??
|
|
148
|
-
`http://127.0.0.1:${options.port ?? resolveDaemonPort(options.env)}`;
|
|
149
|
-
const probe = await probeDaemon(url, options.fetch);
|
|
150
|
-
if (probe.kind !== "nomoreide")
|
|
151
|
-
return null;
|
|
152
|
-
return new DaemonClient(url, { fetch: options.fetch });
|
|
153
|
-
},
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
//# sourceMappingURL=daemon-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-client.js","sourceRoot":"","sources":["../../src/core/daemon-client.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,iBAAiB,GAGlB,MAAM,uBAAuB,CAAC;AAE/B,0DAA0D;AAC1D,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGhC;IAFX,YACE,OAAe,EACN,UAAkB;QAE3B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFN,eAAU,GAAV,UAAU,CAAQ;QAG3B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,oFAAoF;AACpF,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAKrC;IACA;IALF,IAAI,GAAG,aAAa,CAAC;IAE9B,YACE,OAAe,EACN,IAAY,EACZ,MAAyB;QAElC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAmB;QAGlC,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AA0BD;;;GAGG;AACH,MAAM,OAAO,YAAY;IAIZ;IAHM,OAAO,CAAe;IAEvC,YACW,GAAW,EACpB,UAA+B,EAAE;QADxB,QAAG,GAAH,GAAG,CAAQ;QAGpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,KAAK,EACL,aAAa,CACd,CAAC;QACF,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,MAAM,IAAI,CAAC,OAAO,CAAkB,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,KAAK,GAAG,GAAG;QAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,KAAK,EACL,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,eAAe,KAAK,EAAE,CAChE,CAAC;QACF,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG;QACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,KAAK,EACL,uBAAuB,KAAK,EAAE,CAC/B,CAAC;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG;QAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,KAAK,EACL,qBAAqB,KAAK,EAAE,CAC7B,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,EAAU;QAC1B,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,OAAO,CACvB,KAAK,EACL,eAAe,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CACvD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,kBAAkB,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBACpE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,UAAwB,EAAE;QACzD,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,UAAwB,EAAE;QAC3D,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,OAAO,CAAkB,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,KAAK,EACL,wBAAwB,CACzB,CAAC;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,MAAM,EACN,0BAA0B,kBAAkB,CAAC,EAAE,CAAC,uBAAuB,EACvE,SAAS,EACT,EAAE,8BAA8B,EAAE,GAAG,EAAE,CACxC,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU;QAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,MAAM,EACN,0BAA0B,kBAAkB,CAAC,EAAE,CAAC,eAAe,EAC/D,SAAS,EACT,EAAE,8BAA8B,EAAE,GAAG,EAAE,CACxC,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,IAAY,EACZ,MAAoC,EACpC,UAAwB,EAAE;QAE1B,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,UAAU;YAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,MAAM,EACN,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,EACrD,IAAI,CACL,CAAC;QACF,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,IAAY,EACZ,MAAoC;QAEpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,MAAM,EACN,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CACrD,CAAC;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,MAAsB,EACtB,IAAY,EACZ,IAAsB,EACtB,OAAgC;QAEhC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;YAC3D,MAAM;YACN,GAAG,CAAC,IAAI;gBACN,CAAC,CAAC;oBACE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;oBACrB,OAAO,EAAE;wBACP,cAAc,EAAE,mCAAmC;wBACnD,GAAG,OAAO;qBACX;iBACF;gBACH,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAIpD,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,0BAA0B,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC3E,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC1C,MAAM,IAAI,uBAAuB,CAC/B,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,EACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAC7B,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAcD,MAAM,UAAU,sBAAsB,CACpC,UAAkC,EAAE;IAEpC,OAAO;QACL,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC;QACnC,KAAK,CAAC,MAAM;YACV,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAC5C,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,MAAM,KAAK,GAAG,MAAM,eAAe,CACjC,OAAO,CAAC,SAAS,IAAI,sBAAsB,EAAE,CAC9C,CAAC;YACF,MAAM,GAAG,GACP,KAAK,EAAE,GAAG;gBACV,oBAAoB,OAAO,CAAC,IAAI,IAAI,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO,IAAI,CAAC;YAC5C,OAAO,IAAI,YAAY,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Discovery/spawn of the single machine-global NoMoreIDE daemon (the web
|
|
3
|
-
* server started detached via `nomoreide daemon`). Every session — MCP, CLI,
|
|
4
|
-
* TUI, `nomoreide web` — calls {@link ensureDaemon} and talks HTTP to the
|
|
5
|
-
* winner instead of owning its own ProcessManager, so spawned services
|
|
6
|
-
* survive session exits and are visible everywhere.
|
|
7
|
-
*/
|
|
8
|
-
export interface DaemonState {
|
|
9
|
-
pid: number;
|
|
10
|
-
url: string;
|
|
11
|
-
port: number;
|
|
12
|
-
version?: string;
|
|
13
|
-
startedAt: string;
|
|
14
|
-
}
|
|
15
|
-
/** Shape `/api/health` answers with (daemon adds version + pid). */
|
|
16
|
-
export interface DaemonHealth {
|
|
17
|
-
version?: string;
|
|
18
|
-
pid?: number;
|
|
19
|
-
}
|
|
20
|
-
export interface EnsureDaemonResult {
|
|
21
|
-
status: "already_running" | "adopted" | "started";
|
|
22
|
-
url: string;
|
|
23
|
-
port: number;
|
|
24
|
-
/** Daemon pid — 0 when the daemon predates health `pid` reporting. */
|
|
25
|
-
pid: number;
|
|
26
|
-
/** Set when the daemon runs a different nomoreide version than this client. */
|
|
27
|
-
versionWarning?: string;
|
|
28
|
-
}
|
|
29
|
-
export interface DaemonLifecycleOptions {
|
|
30
|
-
/** Defaults to `~/.nomoreide/daemon.json`. */
|
|
31
|
-
statePath?: string;
|
|
32
|
-
/** Defaults to `NOMOREIDE_DAEMON_PORT` or 4317. */
|
|
33
|
-
port?: number;
|
|
34
|
-
env?: NodeJS.ProcessEnv;
|
|
35
|
-
fetch?: typeof fetch;
|
|
36
|
-
/** Injectable for tests; defaults to detaching `node <entry> daemon`. */
|
|
37
|
-
spawnDaemon?: (entryPath: string, port: number) => void;
|
|
38
|
-
/** Compiled CLI entry (`dist/index.js`); resolved from this module by default. */
|
|
39
|
-
entryPath?: string;
|
|
40
|
-
pollTimeoutMs?: number;
|
|
41
|
-
pollIntervalMs?: number;
|
|
42
|
-
/** Pid-liveness probe, injectable for tests. */
|
|
43
|
-
isPidAlive?: (pid: number) => boolean;
|
|
44
|
-
}
|
|
45
|
-
export declare function defaultDaemonStatePath(): string;
|
|
46
|
-
export declare function resolveDaemonPort(env?: NodeJS.ProcessEnv): number;
|
|
47
|
-
export declare function ensureDaemon(options?: DaemonLifecycleOptions): Promise<EnsureDaemonResult>;
|
|
48
|
-
export declare function readDaemonState(statePath: string): Promise<DaemonState | null>;
|
|
49
|
-
type DaemonProbe = {
|
|
50
|
-
kind: "nomoreide";
|
|
51
|
-
health: DaemonHealth;
|
|
52
|
-
} | {
|
|
53
|
-
kind: "foreign";
|
|
54
|
-
} | {
|
|
55
|
-
kind: "down";
|
|
56
|
-
};
|
|
57
|
-
/** `nomoreide` when `/api/health` answers with our shape, `foreign` when something else holds the port. */
|
|
58
|
-
export declare function probeDaemon(url: string, fetchFn?: typeof fetch): Promise<DaemonProbe>;
|
|
59
|
-
export {};
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
3
|
-
import { readFile, rm } from "node:fs/promises";
|
|
4
|
-
import { homedir } from "node:os";
|
|
5
|
-
import { join } from "node:path";
|
|
6
|
-
import { fileURLToPath } from "node:url";
|
|
7
|
-
import { appVersion } from "./app-version.js";
|
|
8
|
-
import { isPidAlive } from "./service-registry.js";
|
|
9
|
-
export function defaultDaemonStatePath() {
|
|
10
|
-
return join(homedir(), ".nomoreide", "daemon.json");
|
|
11
|
-
}
|
|
12
|
-
export function resolveDaemonPort(env = process.env) {
|
|
13
|
-
const fromEnv = Number(env.NOMOREIDE_DAEMON_PORT);
|
|
14
|
-
return Number.isInteger(fromEnv) && fromEnv > 0 ? fromEnv : 4317;
|
|
15
|
-
}
|
|
16
|
-
export async function ensureDaemon(options = {}) {
|
|
17
|
-
const statePath = options.statePath ?? defaultDaemonStatePath();
|
|
18
|
-
const port = options.port ?? resolveDaemonPort(options.env);
|
|
19
|
-
const fetchFn = options.fetch ?? fetch;
|
|
20
|
-
const pidAlive = options.isPidAlive ?? isPidAlive;
|
|
21
|
-
const url = `http://127.0.0.1:${port}`;
|
|
22
|
-
const state = await readDaemonState(statePath);
|
|
23
|
-
if (state && pidAlive(state.pid)) {
|
|
24
|
-
const probe = await probeDaemon(state.url, fetchFn);
|
|
25
|
-
if (probe.kind === "nomoreide") {
|
|
26
|
-
return {
|
|
27
|
-
status: "already_running",
|
|
28
|
-
url: state.url,
|
|
29
|
-
port: state.port,
|
|
30
|
-
pid: probe.health.pid ?? state.pid,
|
|
31
|
-
versionWarning: versionWarning(probe.health),
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
if (state) {
|
|
36
|
-
await rm(statePath, { force: true });
|
|
37
|
-
}
|
|
38
|
-
const probe = await probeDaemon(url, fetchFn);
|
|
39
|
-
if (probe.kind === "nomoreide") {
|
|
40
|
-
return {
|
|
41
|
-
status: "adopted",
|
|
42
|
-
url,
|
|
43
|
-
port,
|
|
44
|
-
pid: probe.health.pid ?? 0,
|
|
45
|
-
versionWarning: versionWarning(probe.health),
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
if (probe.kind === "foreign") {
|
|
49
|
-
throw new Error(foreignPortMessage(port));
|
|
50
|
-
}
|
|
51
|
-
const spawnFn = options.spawnDaemon ?? spawnDetachedDaemon;
|
|
52
|
-
spawnFn(resolveEntryPath(options.entryPath), port);
|
|
53
|
-
const timeoutMs = options.pollTimeoutMs ?? 10_000;
|
|
54
|
-
const intervalMs = options.pollIntervalMs ?? 250;
|
|
55
|
-
const deadline = Date.now() + timeoutMs;
|
|
56
|
-
// If two sessions raced, the loser's daemon exits on the port conflict and
|
|
57
|
-
// this poll simply adopts whichever daemon won the bind.
|
|
58
|
-
while (Date.now() < deadline) {
|
|
59
|
-
const attempt = await probeDaemon(url, fetchFn);
|
|
60
|
-
if (attempt.kind === "nomoreide") {
|
|
61
|
-
return {
|
|
62
|
-
status: "started",
|
|
63
|
-
url,
|
|
64
|
-
port,
|
|
65
|
-
pid: attempt.health.pid ?? 0,
|
|
66
|
-
versionWarning: versionWarning(attempt.health),
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
if (attempt.kind === "foreign") {
|
|
70
|
-
throw new Error(foreignPortMessage(port));
|
|
71
|
-
}
|
|
72
|
-
await sleep(intervalMs);
|
|
73
|
-
}
|
|
74
|
-
throw new Error(`NoMoreIDE daemon did not become healthy on port ${port} within ${timeoutMs}ms. ` +
|
|
75
|
-
`Check \`nomoreide daemon\` output or pick another port via NOMOREIDE_DAEMON_PORT.`);
|
|
76
|
-
}
|
|
77
|
-
export async function readDaemonState(statePath) {
|
|
78
|
-
try {
|
|
79
|
-
const parsed = JSON.parse(await readFile(statePath, "utf8"));
|
|
80
|
-
if (typeof parsed.pid !== "number" ||
|
|
81
|
-
typeof parsed.url !== "string" ||
|
|
82
|
-
typeof parsed.port !== "number") {
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
return parsed;
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/** `nomoreide` when `/api/health` answers with our shape, `foreign` when something else holds the port. */
|
|
92
|
-
export async function probeDaemon(url, fetchFn = fetch) {
|
|
93
|
-
let response;
|
|
94
|
-
try {
|
|
95
|
-
response = await fetchFn(new URL("/api/health", url));
|
|
96
|
-
}
|
|
97
|
-
catch {
|
|
98
|
-
return { kind: "down" };
|
|
99
|
-
}
|
|
100
|
-
try {
|
|
101
|
-
const body = (await response.json());
|
|
102
|
-
if (!response.ok || body.ok !== true || body.app !== "nomoreide") {
|
|
103
|
-
return { kind: "foreign" };
|
|
104
|
-
}
|
|
105
|
-
return {
|
|
106
|
-
kind: "nomoreide",
|
|
107
|
-
health: {
|
|
108
|
-
version: typeof body.version === "string" ? body.version : undefined,
|
|
109
|
-
pid: typeof body.pid === "number" ? body.pid : undefined,
|
|
110
|
-
},
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
catch {
|
|
114
|
-
return { kind: "foreign" };
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
function versionWarning(health) {
|
|
118
|
-
const clientVersion = appVersion();
|
|
119
|
-
if (!health.version || health.version === clientVersion)
|
|
120
|
-
return undefined;
|
|
121
|
-
// Never auto-kill on skew — the daemon owns running services.
|
|
122
|
-
return (`NoMoreIDE daemon is v${health.version} but this client is v${clientVersion}. ` +
|
|
123
|
-
`Run \`nomoreide daemon restart\` to update it (this stops the services it manages).`);
|
|
124
|
-
}
|
|
125
|
-
function foreignPortMessage(port) {
|
|
126
|
-
return (`Port ${port} is held by a process that is not a NoMoreIDE daemon. ` +
|
|
127
|
-
`Stop it or set NOMOREIDE_DAEMON_PORT to use a different port.`);
|
|
128
|
-
}
|
|
129
|
-
function resolveEntryPath(override) {
|
|
130
|
-
const entryPath = override ?? fileURLToPath(new URL("../index.js", import.meta.url));
|
|
131
|
-
if (!existsSync(entryPath)) {
|
|
132
|
-
throw new Error(`Cannot find the nomoreide entry point at ${entryPath} to spawn the daemon ` +
|
|
133
|
-
`(running from source? build first or run \`nomoreide daemon\` yourself).`);
|
|
134
|
-
}
|
|
135
|
-
return entryPath;
|
|
136
|
-
}
|
|
137
|
-
function spawnDetachedDaemon(entryPath, port) {
|
|
138
|
-
const child = spawn(process.execPath, [entryPath, "daemon", `--port=${port}`], {
|
|
139
|
-
detached: true,
|
|
140
|
-
stdio: "ignore",
|
|
141
|
-
});
|
|
142
|
-
child.unref();
|
|
143
|
-
}
|
|
144
|
-
function sleep(ms) {
|
|
145
|
-
return new Promise((resolveSleep) => setTimeout(resolveSleep, ms));
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=daemon-lifecycle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-lifecycle.js","sourceRoot":"","sources":["../../src/core/daemon-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import type { ColumnInfo, TableRef } from "./driver.js";
|
|
2
|
-
export type DatabaseObjectKind = "table" | "view" | "materializedView" | "function" | "procedure" | "sequence";
|
|
3
|
-
export interface DatabaseCapabilities {
|
|
4
|
-
objectKinds: DatabaseObjectKind[];
|
|
5
|
-
tableDetails: Array<"columns" | "indexes" | "constraints" | "triggers">;
|
|
6
|
-
}
|
|
7
|
-
export interface DatabaseSchema {
|
|
8
|
-
name: string;
|
|
9
|
-
}
|
|
10
|
-
export interface DatabaseObject {
|
|
11
|
-
/** Opaque server-issued key; callers must never construct or parse it. */
|
|
12
|
-
key: string;
|
|
13
|
-
schema: string;
|
|
14
|
-
name: string;
|
|
15
|
-
kind: DatabaseObjectKind;
|
|
16
|
-
qualifiedName: string;
|
|
17
|
-
/** Engine-native identity included only to disambiguate live catalog entries. */
|
|
18
|
-
nativeId?: string;
|
|
19
|
-
}
|
|
20
|
-
export interface DatabaseIndex {
|
|
21
|
-
name: string;
|
|
22
|
-
definition: string;
|
|
23
|
-
unique: boolean;
|
|
24
|
-
}
|
|
25
|
-
export interface DatabaseConstraint {
|
|
26
|
-
name: string;
|
|
27
|
-
type: string;
|
|
28
|
-
definition: string;
|
|
29
|
-
}
|
|
30
|
-
export interface DatabaseTrigger {
|
|
31
|
-
name: string;
|
|
32
|
-
definition: string;
|
|
33
|
-
}
|
|
34
|
-
export interface DatabaseObjectDetails {
|
|
35
|
-
object: DatabaseObject;
|
|
36
|
-
columns: ColumnInfo[];
|
|
37
|
-
indexes: DatabaseIndex[];
|
|
38
|
-
constraints: DatabaseConstraint[];
|
|
39
|
-
triggers: DatabaseTrigger[];
|
|
40
|
-
/** Function/view/trigger definition, capped before it leaves the core. */
|
|
41
|
-
definition?: string;
|
|
42
|
-
/** Executable DDL that recreates this object, capped before it leaves the core. */
|
|
43
|
-
createScript?: string;
|
|
44
|
-
}
|
|
45
|
-
interface ObjectIdentity {
|
|
46
|
-
schema: string;
|
|
47
|
-
name: string;
|
|
48
|
-
kind: DatabaseObjectKind;
|
|
49
|
-
nativeId?: string;
|
|
50
|
-
}
|
|
51
|
-
export declare function objectKey(identity: ObjectIdentity): string;
|
|
52
|
-
export declare function objectFromIdentity(identity: ObjectIdentity): DatabaseObject;
|
|
53
|
-
/** Resolve an opaque key only by equality against a freshly-read live catalog. */
|
|
54
|
-
export declare function resolveCatalogObject(objects: DatabaseObject[], key: string): DatabaseObject;
|
|
55
|
-
export declare function tableRefForObject(object: DatabaseObject): TableRef;
|
|
56
|
-
export declare function capDefinition(value: string | null | undefined): string | undefined;
|
|
57
|
-
export {};
|
package/dist/core/db/catalog.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
const DEFINITION_LIMIT = 64 * 1024;
|
|
2
|
-
export function objectKey(identity) {
|
|
3
|
-
return Buffer.from(JSON.stringify(identity), "utf8").toString("base64url");
|
|
4
|
-
}
|
|
5
|
-
export function objectFromIdentity(identity) {
|
|
6
|
-
return {
|
|
7
|
-
...identity,
|
|
8
|
-
key: objectKey(identity),
|
|
9
|
-
qualifiedName: identity.schema === "main"
|
|
10
|
-
? identity.name
|
|
11
|
-
: `${identity.schema}.${identity.name}`,
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
/** Resolve an opaque key only by equality against a freshly-read live catalog. */
|
|
15
|
-
export function resolveCatalogObject(objects, key) {
|
|
16
|
-
const object = objects.find((candidate) => candidate.key === key);
|
|
17
|
-
if (!object)
|
|
18
|
-
throw new Error("Database object was not found in the live catalog.");
|
|
19
|
-
return object;
|
|
20
|
-
}
|
|
21
|
-
export function tableRefForObject(object) {
|
|
22
|
-
if (object.kind !== "table" && object.kind !== "view" && object.kind !== "materializedView") {
|
|
23
|
-
throw new Error(`Database object "${object.qualifiedName}" cannot be sampled.`);
|
|
24
|
-
}
|
|
25
|
-
return {
|
|
26
|
-
schema: object.schema,
|
|
27
|
-
name: object.name,
|
|
28
|
-
qualifiedName: object.qualifiedName,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
export function capDefinition(value) {
|
|
32
|
-
if (!value)
|
|
33
|
-
return undefined;
|
|
34
|
-
return value.length <= DEFINITION_LIMIT
|
|
35
|
-
? value
|
|
36
|
-
: `${value.slice(0, DEFINITION_LIMIT)}\n-- Definition truncated by NoMoreIDE.`;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=catalog.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/core/db/catalog.ts"],"names":[],"mappings":"AAkEA,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,MAAM,UAAU,SAAS,CAAC,QAAwB;IAChD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAwB;IACzD,OAAO;QACL,GAAG,QAAQ;QACX,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC;QACxB,aAAa,EACX,QAAQ,CAAC,MAAM,KAAK,MAAM;YACxB,CAAC,CAAC,QAAQ,CAAC,IAAI;YACf,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE;KAC5C,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAClC,OAAyB,EACzB,GAAW;IAEX,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACnF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC5F,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,CAAC,aAAa,sBAAsB,CAAC,CAAC;IAClF,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAgC;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,KAAK,CAAC,MAAM,IAAI,gBAAgB;QACrC,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,yCAAyC,CAAC;AACnF,CAAC"}
|