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,24 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="NoMoreIDE">
|
|
2
|
-
<path
|
|
3
|
-
d="M5 17C5 13.69 7.69 11 11 11H25L31 17H53C56.31 17 59 19.69 59 23V53C59 56.31 56.31 59 53 59H11C7.69 59 5 56.31 5 53V17Z"
|
|
4
|
-
fill="#ffffff"
|
|
5
|
-
stroke="#111111"
|
|
6
|
-
stroke-linejoin="round"
|
|
7
|
-
stroke-width="5"
|
|
8
|
-
/>
|
|
9
|
-
<path
|
|
10
|
-
d="M22 31L30 39L22 47"
|
|
11
|
-
fill="none"
|
|
12
|
-
stroke="#111111"
|
|
13
|
-
stroke-linecap="round"
|
|
14
|
-
stroke-linejoin="round"
|
|
15
|
-
stroke-width="4.5"
|
|
16
|
-
/>
|
|
17
|
-
<path
|
|
18
|
-
d="M36 47H48"
|
|
19
|
-
fill="none"
|
|
20
|
-
stroke="#111111"
|
|
21
|
-
stroke-linecap="round"
|
|
22
|
-
stroke-width="4.5"
|
|
23
|
-
/>
|
|
24
|
-
</svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as H,n as R,r as o,j as e,a as U,S as _,I as $,A as p,m as P,f as E,k,E as G,d as L,C as O,h as Q,t as V}from"./index-DAJvBqn9.js";const h=50;function W({processes:r,refresh:n,totalMemoryBytes:m}){const i=H(),{error:M,success:I}=R(),[x,z]=o.useState(""),[a,A]=o.useState("cpu"),[l,b]=o.useState("desc"),[c,g]=o.useState(null),[F,j]=o.useState(!1),[D,N]=o.useState(h),S=o.useMemo(()=>{const t=x.trim().toLocaleLowerCase();return r.filter(s=>t?[String(s.pid),s.user,s.command,s.managedService??""].some(d=>d.toLocaleLowerCase().includes(t)):!0).sort((s,d)=>{const w=a==="name"?u(s).localeCompare(u(d)):a==="energy"?T(s,m)-T(d,m):a==="memory"?s.rssMb-d.rssMb:s.cpuPercent-d.cpuPercent;return l==="asc"?w:-w})},[r,x,a,l,m]),v=S.slice(0,D),C=Math.max(0,S.length-v.length);o.useEffect(()=>{N(h)},[x]);const y=t=>{if(t===a){b(s=>s==="asc"?"desc":"asc");return}A(t),b(t==="name"?"asc":"desc")},q=async()=>{if(c){j(!0);try{await V(c.pid,c.command),I(i("activity.system.terminated",{pid:String(c.pid)})),g(null),await n()}catch(t){M(i("activity.system.terminateError",{error:t instanceof Error?t.message:String(t)}))}finally{j(!1)}}};return e.jsxs("section",{"aria-labelledby":"activity-system-heading",children:[e.jsxs("div",{className:"mb-3 flex flex-wrap items-end justify-between gap-3",children:[e.jsxs("div",{children:[e.jsxs("h3",{className:"flex items-center gap-2 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground",id:"activity-system-heading",children:[e.jsx(U,{"aria-hidden":"true",className:"size-3.5"}),i("activity.system.title")]}),e.jsx("p",{className:"mt-1 text-[11px] text-muted-foreground",children:i("activity.system.description",{count:String(r.length)})})]}),e.jsx("div",{className:"flex flex-1 flex-wrap items-center justify-end gap-2",children:e.jsxs("label",{className:"relative min-w-44 max-w-64 flex-1 sm:flex-none",htmlFor:"activity-process-search",children:[e.jsx("span",{className:"sr-only",children:i("activity.system.search")}),e.jsx(_,{"aria-hidden":"true",className:"pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground"}),e.jsx($,{className:"h-7 pl-7 text-[11px]",id:"activity-process-search",onChange:t=>z(t.target.value),placeholder:i("activity.system.search"),value:x})]})})]}),e.jsxs("div",{className:"overflow-x-auto border-y border-border/70",children:[e.jsxs("table",{className:"w-full min-w-[840px] text-left text-xs",children:[e.jsx("thead",{className:"border-b border-border/60 text-[9px] uppercase tracking-[0.14em] text-muted-foreground",children:e.jsxs("tr",{children:[e.jsx(p,{active:a==="name",ariaLabel:i("activity.sortColumn",{column:i("activity.system.process")}),direction:l,onClick:()=>y("name"),children:i("activity.system.process")}),e.jsx("th",{className:"px-2 py-2 font-semibold",children:i("activity.system.owner")}),e.jsx(p,{active:a==="cpu",align:"right",ariaLabel:i("activity.sortColumn",{column:"CPU"}),direction:l,onClick:()=>y("cpu"),children:"CPU"}),e.jsx(p,{active:a==="memory",align:"right",ariaLabel:i("activity.sortColumn",{column:i("activity.memory")}),direction:l,onClick:()=>y("memory"),children:i("activity.memory")}),e.jsx(p,{active:a==="energy",align:"right",ariaLabel:i("activity.sortColumn",{column:i("activity.energy.title")}),direction:l,onClick:()=>y("energy"),children:i("activity.energy.title")}),e.jsx("th",{className:"px-2 py-2 font-semibold",children:i("activity.system.source")}),e.jsx("th",{className:"w-12 px-2 py-2"})]})}),e.jsx("tbody",{children:v.map(t=>e.jsxs("tr",{className:"border-b border-border/50 transition-colors hover:bg-muted/20 last:border-b-0",children:[e.jsxs("td",{className:"max-w-[420px] px-2 py-2",children:[e.jsx("div",{className:"truncate font-medium",title:t.command,children:u(t)}),e.jsx("div",{className:"mt-0.5 truncate font-mono text-[9px] text-muted-foreground",title:t.command,children:t.command})]}),e.jsxs("td",{className:"px-2 py-2 font-mono text-[10px] text-muted-foreground",children:[t.user," · ",t.pid]}),e.jsxs("td",{className:E("px-2 py-2 text-right font-mono font-semibold tabular-nums",k(t.cpuPercent)),"data-pressure":P(t.cpuPercent),children:[t.cpuPercent.toFixed(1),"%"]}),e.jsx("td",{className:E("px-2 py-2 text-right font-mono font-semibold tabular-nums",k(f(t.rssMb,m))),"data-pressure":P(f(t.rssMb,m)),children:Z(t.rssMb)}),e.jsx("td",{className:"px-2 py-2 text-right",children:e.jsx(G,{cpuPercent:t.cpuPercent,memoryPercent:f(t.rssMb,m)})}),e.jsx("td",{className:"px-2 py-2 text-[10px] text-muted-foreground",children:t.managedService?i("activity.system.managed",{service:t.managedService}):i("activity.system.external")}),e.jsx("td",{className:"px-2 py-2 text-right",children:e.jsx("button",{"aria-label":i("activity.system.terminateAria",{name:u(t),pid:String(t.pid)}),className:"inline-flex size-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive disabled:cursor-not-allowed disabled:opacity-30",disabled:!t.canTerminate,onClick:()=>g(t),title:t.canTerminate?i("activity.system.terminate"):J(t,i),type:"button",children:e.jsx(L,{"aria-hidden":"true",className:"size-3"})})})]},t.pid))})]}),v.length===0?e.jsx("div",{className:"px-3 py-8 text-center text-sm text-muted-foreground",children:i("activity.system.empty")}):null,C>0?e.jsx("div",{className:"flex items-center justify-center border-t border-border/60 px-3 py-2",children:e.jsx("button",{className:"rounded px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",onClick:()=>N(t=>t+h),type:"button",children:i("activity.system.loadMore",{count:String(Math.min(h,C))})})}):null]}),c?e.jsx(O,{cancelLabel:i("common.cancel"),confirmLabel:i("activity.system.terminate"),icon:e.jsx(L,{}),loading:F,message:e.jsxs("span",{children:[i("activity.system.confirmMessage",{pid:String(c.pid)}),e.jsx("code",{className:"mt-2 block max-h-20 overflow-auto rounded border border-border bg-background p-2 font-mono text-[10px] text-foreground",children:c.command})]}),onCancel:()=>g(null),onConfirm:()=>{q()},title:i("activity.system.confirmTitle",{name:u(c)}),tone:"danger"}):null]})}function u(r){const n=r.command.trim().split(/\s+/,1)[0]??r.command;return n.split("/").at(-1)||n}function Z(r){return r>=1024?`${(r/1024).toFixed(1)} GB`:`${r.toFixed(1)} MB`}function f(r,n){return n<=0?null:r*1024*1024*100/n}function T(r,n){return Q(r.cpuPercent,f(r.rssMb,n)).score}function J(r,n){return r.protection==="managed"?n("activity.system.protectedManaged"):r.protection==="permission"?n("activity.system.protectedPermission"):r.protection==="this-app"?n("activity.system.protectedSelf"):n("activity.system.protectedSystem")}export{W as SystemProcessTable};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{SERIALIZE_TO_IPC_FN as a,Resource as O,invoke as i}from"./core-DhEqZVGG.js";import{listen as S,once as k,emit as L,emitTo as A,TauriEvent as o}from"./event-BK_86lmQ.js";class D{constructor(...e){this.type="Logical",e.length===1?"Logical"in e[0]?(this.width=e[0].Logical.width,this.height=e[0].Logical.height):(this.width=e[0].width,this.height=e[0].height):(this.width=e[0],this.height=e[1])}toPhysical(e){return new h(this.width*e,this.height*e)}[a](){return{width:this.width,height:this.height}}toJSON(){return this[a]()}}class h{constructor(...e){this.type="Physical",e.length===1?"Physical"in e[0]?(this.width=e[0].Physical.width,this.height=e[0].Physical.height):(this.width=e[0].width,this.height=e[0].height):(this.width=e[0],this.height=e[1])}toLogical(e){return new D(this.width/e,this.height/e)}[a](){return{width:this.width,height:this.height}}toJSON(){return this[a]()}}class c{constructor(e){this.size=e}toLogical(e){return this.size instanceof D?this.size:this.size.toLogical(e)}toPhysical(e){return this.size instanceof h?this.size:this.size.toPhysical(e)}[a](){return{[`${this.size.type}`]:{width:this.size.width,height:this.size.height}}}toJSON(){return this[a]()}}class W{constructor(...e){this.type="Logical",e.length===1?"Logical"in e[0]?(this.x=e[0].Logical.x,this.y=e[0].Logical.y):(this.x=e[0].x,this.y=e[0].y):(this.x=e[0],this.y=e[1])}toPhysical(e){return new u(this.x*e,this.y*e)}[a](){return{x:this.x,y:this.y}}toJSON(){return this[a]()}}class u{constructor(...e){this.type="Physical",e.length===1?"Physical"in e[0]?(this.x=e[0].Physical.x,this.y=e[0].Physical.y):(this.x=e[0].x,this.y=e[0].y):(this.x=e[0],this.y=e[1])}toLogical(e){return new W(this.x/e,this.y/e)}[a](){return{x:this.x,y:this.y}}toJSON(){return this[a]()}}class d{constructor(e){this.position=e}toLogical(e){return this.position instanceof W?this.position:this.position.toLogical(e)}toPhysical(e){return this.position instanceof u?this.position:this.position.toPhysical(e)}[a](){return{[`${this.position.type}`]:{x:this.position.x,y:this.position.y}}}toJSON(){return this[a]()}}class w extends O{constructor(e){super(e)}static async new(e,t,l){return i("plugin:image|new",{rgba:b(e),width:t,height:l}).then(r=>new w(r))}static async fromBytes(e){return i("plugin:image|from_bytes",{bytes:b(e)}).then(t=>new w(t))}static async fromPath(e){return i("plugin:image|from_path",{path:e}).then(t=>new w(t))}async rgba(){return i("plugin:image|rgba",{rid:this.rid}).then(e=>new Uint8Array(e))}async size(){return i("plugin:image|size",{rid:this.rid})}}function b(n){return n==null?null:typeof n=="string"?n:n instanceof w?n.rid:n}var _;(function(n){n[n.Critical=1]="Critical",n[n.Informational=2]="Informational"})(_||(_={}));class I{constructor(e){this._preventDefault=!1,this.event=e.event,this.id=e.id}preventDefault(){this._preventDefault=!0}isPreventDefault(){return this._preventDefault}}var m;(function(n){n.None="none",n.Normal="normal",n.Indeterminate="indeterminate",n.Paused="paused",n.Error="error"})(m||(m={}));function T(){return new P(window.__TAURI_INTERNALS__.metadata.currentWindow.label,{skip:!0})}async function p(){return i("plugin:window|get_all_windows").then(n=>n.map(e=>new P(e,{skip:!0})))}const g=["tauri://created","tauri://error"];class P{constructor(e,t={}){var l;this.label=e,this.listeners=Object.create(null),t?.skip||i("plugin:window|create",{options:{...t,parent:typeof t.parent=="string"?t.parent:(l=t.parent)===null||l===void 0?void 0:l.label,label:e}}).then(async()=>this.emit("tauri://created")).catch(async r=>this.emit("tauri://error",r))}static async getByLabel(e){var t;return(t=(await p()).find(l=>l.label===e))!==null&&t!==void 0?t:null}static getCurrent(){return T()}static async getAll(){return p()}static async getFocusedWindow(){for(const e of await p())if(await e.isFocused())return e;return null}async listen(e,t){return this._handleTauriEvent(e,t)?()=>{const l=this.listeners[e];l.splice(l.indexOf(t),1)}:S(e,t,{target:{kind:"Window",label:this.label}})}async once(e,t){return this._handleTauriEvent(e,t)?()=>{const l=this.listeners[e];l.splice(l.indexOf(t),1)}:k(e,t,{target:{kind:"Window",label:this.label}})}async emit(e,t){if(g.includes(e)){for(const l of this.listeners[e]||[])l({event:e,id:-1,payload:t});return}return L(e,t)}async emitTo(e,t,l){if(g.includes(t)){for(const r of this.listeners[t]||[])r({event:t,id:-1,payload:l});return}return A(e,t,l)}_handleTauriEvent(e,t){return g.includes(e)?(e in this.listeners?this.listeners[e].push(t):this.listeners[e]=[t],!0):!1}async scaleFactor(){return i("plugin:window|scale_factor",{label:this.label})}async innerPosition(){return i("plugin:window|inner_position",{label:this.label}).then(e=>new u(e))}async outerPosition(){return i("plugin:window|outer_position",{label:this.label}).then(e=>new u(e))}async innerSize(){return i("plugin:window|inner_size",{label:this.label}).then(e=>new h(e))}async outerSize(){return i("plugin:window|outer_size",{label:this.label}).then(e=>new h(e))}async isFullscreen(){return i("plugin:window|is_fullscreen",{label:this.label})}async isMinimized(){return i("plugin:window|is_minimized",{label:this.label})}async isMaximized(){return i("plugin:window|is_maximized",{label:this.label})}async isFocused(){return i("plugin:window|is_focused",{label:this.label})}async isDecorated(){return i("plugin:window|is_decorated",{label:this.label})}async isResizable(){return i("plugin:window|is_resizable",{label:this.label})}async isMaximizable(){return i("plugin:window|is_maximizable",{label:this.label})}async isMinimizable(){return i("plugin:window|is_minimizable",{label:this.label})}async isClosable(){return i("plugin:window|is_closable",{label:this.label})}async isVisible(){return i("plugin:window|is_visible",{label:this.label})}async title(){return i("plugin:window|title",{label:this.label})}async theme(){return i("plugin:window|theme",{label:this.label})}async isAlwaysOnTop(){return i("plugin:window|is_always_on_top",{label:this.label})}async activityName(){return i("plugin:window|activity_name",{label:this.label})}async sceneIdentifier(){return i("plugin:window|scene_identifier",{label:this.label})}async center(){return i("plugin:window|center",{label:this.label})}async requestUserAttention(e){let t=null;return e&&(e===_.Critical?t={type:"Critical"}:t={type:"Informational"}),i("plugin:window|request_user_attention",{label:this.label,value:t})}async setResizable(e){return i("plugin:window|set_resizable",{label:this.label,value:e})}async setEnabled(e){return i("plugin:window|set_enabled",{label:this.label,value:e})}async isEnabled(){return i("plugin:window|is_enabled",{label:this.label})}async setMaximizable(e){return i("plugin:window|set_maximizable",{label:this.label,value:e})}async setMinimizable(e){return i("plugin:window|set_minimizable",{label:this.label,value:e})}async setClosable(e){return i("plugin:window|set_closable",{label:this.label,value:e})}async setTitle(e){return i("plugin:window|set_title",{label:this.label,value:e})}async maximize(){return i("plugin:window|maximize",{label:this.label})}async unmaximize(){return i("plugin:window|unmaximize",{label:this.label})}async toggleMaximize(){return i("plugin:window|toggle_maximize",{label:this.label})}async minimize(){return i("plugin:window|minimize",{label:this.label})}async unminimize(){return i("plugin:window|unminimize",{label:this.label})}async show(){return i("plugin:window|show",{label:this.label})}async hide(){return i("plugin:window|hide",{label:this.label})}async close(){return i("plugin:window|close",{label:this.label})}async destroy(){return i("plugin:window|destroy",{label:this.label})}async setDecorations(e){return i("plugin:window|set_decorations",{label:this.label,value:e})}async setShadow(e){return i("plugin:window|set_shadow",{label:this.label,value:e})}async setEffects(e){return i("plugin:window|set_effects",{label:this.label,value:e})}async clearEffects(){return i("plugin:window|set_effects",{label:this.label,value:null})}async setAlwaysOnTop(e){return i("plugin:window|set_always_on_top",{label:this.label,value:e})}async setAlwaysOnBottom(e){return i("plugin:window|set_always_on_bottom",{label:this.label,value:e})}async setContentProtected(e){return i("plugin:window|set_content_protected",{label:this.label,value:e})}async setSize(e){return i("plugin:window|set_size",{label:this.label,value:e instanceof c?e:new c(e)})}async setMinSize(e){return i("plugin:window|set_min_size",{label:this.label,value:e instanceof c?e:e?new c(e):null})}async setMaxSize(e){return i("plugin:window|set_max_size",{label:this.label,value:e instanceof c?e:e?new c(e):null})}async setSizeConstraints(e){function t(l){return l?{Logical:l}:null}return i("plugin:window|set_size_constraints",{label:this.label,value:{minWidth:t(e?.minWidth),minHeight:t(e?.minHeight),maxWidth:t(e?.maxWidth),maxHeight:t(e?.maxHeight)}})}async setPosition(e){return i("plugin:window|set_position",{label:this.label,value:e instanceof d?e:new d(e)})}async setFullscreen(e){return i("plugin:window|set_fullscreen",{label:this.label,value:e})}async setSimpleFullscreen(e){return i("plugin:window|set_simple_fullscreen",{label:this.label,value:e})}async setFocus(){return i("plugin:window|set_focus",{label:this.label})}async setFocusable(e){return i("plugin:window|set_focusable",{label:this.label,value:e})}async setIcon(e){return i("plugin:window|set_icon",{label:this.label,value:b(e)})}async setSkipTaskbar(e){return i("plugin:window|set_skip_taskbar",{label:this.label,value:e})}async setCursorGrab(e){return i("plugin:window|set_cursor_grab",{label:this.label,value:e})}async setCursorVisible(e){return i("plugin:window|set_cursor_visible",{label:this.label,value:e})}async setCursorIcon(e){return i("plugin:window|set_cursor_icon",{label:this.label,value:e})}async setBackgroundColor(e){return i("plugin:window|set_background_color",{color:e})}async setCursorPosition(e){return i("plugin:window|set_cursor_position",{label:this.label,value:e instanceof d?e:new d(e)})}async setIgnoreCursorEvents(e){return i("plugin:window|set_ignore_cursor_events",{label:this.label,value:e})}async startDragging(){return i("plugin:window|start_dragging",{label:this.label})}async startResizeDragging(e){return i("plugin:window|start_resize_dragging",{label:this.label,value:e})}async setBadgeCount(e){return i("plugin:window|set_badge_count",{label:this.label,value:e})}async setBadgeLabel(e){return i("plugin:window|set_badge_label",{label:this.label,value:e})}async setOverlayIcon(e){return i("plugin:window|set_overlay_icon",{label:this.label,value:e?b(e):void 0})}async setProgressBar(e){return i("plugin:window|set_progress_bar",{label:this.label,value:e})}async setVisibleOnAllWorkspaces(e){return i("plugin:window|set_visible_on_all_workspaces",{label:this.label,value:e})}async setTitleBarStyle(e){return i("plugin:window|set_title_bar_style",{label:this.label,value:e})}async setTheme(e){return i("plugin:window|set_theme",{label:this.label,value:e})}async onResized(e){return this.listen(o.WINDOW_RESIZED,t=>{t.payload=new h(t.payload),e(t)})}async onMoved(e){return this.listen(o.WINDOW_MOVED,t=>{t.payload=new u(t.payload),e(t)})}async onCloseRequested(e){return this.listen(o.WINDOW_CLOSE_REQUESTED,async t=>{const l=new I(t);await e(l),l.isPreventDefault()||await this.destroy()})}async onDragDropEvent(e){const t=await this.listen(o.DRAG_ENTER,s=>{e({...s,payload:{type:"enter",paths:s.payload.paths,position:new u(s.payload.position)}})}),l=await this.listen(o.DRAG_OVER,s=>{e({...s,payload:{type:"over",position:new u(s.payload.position)}})}),r=await this.listen(o.DRAG_DROP,s=>{e({...s,payload:{type:"drop",paths:s.payload.paths,position:new u(s.payload.position)}})}),C=await this.listen(o.DRAG_LEAVE,s=>{e({...s,payload:{type:"leave"}})});return()=>{t(),r(),l(),C()}}async onFocusChanged(e){const t=await this.listen(o.WINDOW_FOCUS,r=>{e({...r,payload:!0})}),l=await this.listen(o.WINDOW_BLUR,r=>{e({...r,payload:!1})});return()=>{t(),l()}}async onScaleChanged(e){return this.listen(o.WINDOW_SCALE_FACTOR_CHANGED,e)}async onThemeChanged(e){return this.listen(o.WINDOW_THEME_CHANGED,e)}}var v;(function(n){n.Disabled="disabled",n.Throttle="throttle",n.Suspend="suspend"})(v||(v={}));var z;(function(n){n.Default="default",n.FluentOverlay="fluentOverlay"})(z||(z={}));var f;(function(n){n.AppearanceBased="appearanceBased",n.Light="light",n.Dark="dark",n.MediumLight="mediumLight",n.UltraDark="ultraDark",n.Titlebar="titlebar",n.Selection="selection",n.Menu="menu",n.Popover="popover",n.Sidebar="sidebar",n.HeaderView="headerView",n.Sheet="sheet",n.WindowBackground="windowBackground",n.HudWindow="hudWindow",n.FullScreenUI="fullScreenUI",n.Tooltip="tooltip",n.ContentBackground="contentBackground",n.UnderWindowBackground="underWindowBackground",n.UnderPageBackground="underPageBackground",n.Mica="mica",n.Blur="blur",n.Acrylic="acrylic",n.Tabbed="tabbed",n.TabbedDark="tabbedDark",n.TabbedLight="tabbedLight"})(f||(f={}));var x;(function(n){n.FollowsWindowActiveState="followsWindowActiveState",n.Active="active",n.Inactive="inactive"})(x||(x={}));function y(n){return n===null?null:{name:n.name,scaleFactor:n.scaleFactor,position:new u(n.position),size:new h(n.size),workArea:{position:new u(n.workArea.position),size:new h(n.workArea.size)}}}async function M(){return i("plugin:window|current_monitor").then(y)}async function B(){return i("plugin:window|primary_monitor").then(y)}async function F(n,e){return i("plugin:window|monitor_from_point",{x:n,y:e}).then(y)}async function E(){return i("plugin:window|available_monitors").then(n=>n.map(y))}async function H(){return i("plugin:window|cursor_position").then(n=>new u(n))}export{I as CloseRequestedEvent,f as Effect,x as EffectState,W as LogicalPosition,D as LogicalSize,u as PhysicalPosition,h as PhysicalSize,m as ProgressBarStatus,_ as UserAttentionType,P as Window,E as availableMonitors,M as currentMonitor,H as cursorPosition,p as getAllWindows,T as getCurrentWindow,F as monitorFromPoint,B as primaryMonitor};
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en" class="dark" style="color-scheme: dark">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<link rel="icon" type="image/svg+xml" href="/assets/nomoreide-favicon-Ds7Tgj9p.svg" />
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<title>NoMoreIDE</title>
|
|
8
|
-
<script>
|
|
9
|
-
(() => {
|
|
10
|
-
let theme = "system";
|
|
11
|
-
let density = "comfortable";
|
|
12
|
-
let codeFontSize = 12;
|
|
13
|
-
let reducedMotion = window.matchMedia?.("(prefers-reduced-motion: reduce)").matches ?? false;
|
|
14
|
-
try {
|
|
15
|
-
const raw = window.localStorage.getItem("nomoreide:ui-preferences");
|
|
16
|
-
const stored = raw ? JSON.parse(raw) : null;
|
|
17
|
-
if (stored?.version === 1 || stored?.version === 2) {
|
|
18
|
-
if (["light", "dark", "system"].includes(stored.theme)) theme = stored.theme;
|
|
19
|
-
if (["comfortable", "compact"].includes(stored.density)) density = stored.density;
|
|
20
|
-
if (Number.isInteger(stored.codeFontSize) && stored.codeFontSize >= 10 && stored.codeFontSize <= 18) codeFontSize = stored.codeFontSize;
|
|
21
|
-
if (typeof stored.reducedMotion === "boolean") reducedMotion = stored.reducedMotion;
|
|
22
|
-
} else {
|
|
23
|
-
const legacyTheme = window.localStorage.getItem("nomoreide-theme-choice");
|
|
24
|
-
if (["light", "dark", "system"].includes(legacyTheme)) theme = legacyTheme;
|
|
25
|
-
}
|
|
26
|
-
} catch {}
|
|
27
|
-
const resolvedTheme = theme === "system"
|
|
28
|
-
? (window.matchMedia?.("(prefers-color-scheme: dark)").matches ? "dark" : "light")
|
|
29
|
-
: theme;
|
|
30
|
-
const root = document.documentElement;
|
|
31
|
-
root.classList.toggle("dark", resolvedTheme === "dark");
|
|
32
|
-
root.style.colorScheme = resolvedTheme;
|
|
33
|
-
root.dataset.density = density;
|
|
34
|
-
root.dataset.reducedMotion = String(reducedMotion);
|
|
35
|
-
root.style.setProperty("--code-font-size", `${codeFontSize}px`);
|
|
36
|
-
})();
|
|
37
|
-
</script>
|
|
38
|
-
<script type="module" crossorigin src="/assets/index-DAJvBqn9.js"></script>
|
|
39
|
-
<link rel="stylesheet" crossorigin href="/assets/index-CSo__8A6.css">
|
|
40
|
-
</head>
|
|
41
|
-
<body>
|
|
42
|
-
<div id="root"></div>
|
|
43
|
-
</body>
|
|
44
|
-
</html>
|
package/dist/web/dashboard.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { type ConfigStore } from "../core/config-store.js";
|
|
2
|
-
import { type GitStatus } from "../core/git-manager.js";
|
|
3
|
-
import type { LogStore } from "../core/log-store.js";
|
|
4
|
-
import { type HostPortStatus } from "../core/port-utils.js";
|
|
5
|
-
import type { ProcessManager } from "../core/process-manager.js";
|
|
6
|
-
import type { TimelineStore } from "../core/timeline-store.js";
|
|
7
|
-
import type { LogEntry, ServiceHealth, TimelineEvent } from "../core/types.js";
|
|
8
|
-
export declare function buildDashboardPayload(options: {
|
|
9
|
-
configStore: ConfigStore;
|
|
10
|
-
cwd: string;
|
|
11
|
-
logStore: LogStore;
|
|
12
|
-
manager: ProcessManager;
|
|
13
|
-
timelineStore: TimelineStore;
|
|
14
|
-
}): Promise<{
|
|
15
|
-
ok: boolean;
|
|
16
|
-
cwd: string;
|
|
17
|
-
config: import("../core/public-config.js").PublicNoMoreIdeConfig;
|
|
18
|
-
runtime: import("../core/process-manager.js").NoMoreIdeStatus;
|
|
19
|
-
ports: PortOverview[];
|
|
20
|
-
health: Record<string, ServiceHealth>;
|
|
21
|
-
timeline: TimelineEvent[];
|
|
22
|
-
logs: LogEntry[];
|
|
23
|
-
git: {
|
|
24
|
-
cwd: string;
|
|
25
|
-
selectedRepository: import("../core/types.js").GitRepositoryDefinition;
|
|
26
|
-
status: GitStatus | null;
|
|
27
|
-
branches: import("../core/git-manager.js").GitBranch[];
|
|
28
|
-
error: string | undefined;
|
|
29
|
-
};
|
|
30
|
-
}>;
|
|
31
|
-
interface PortOverview {
|
|
32
|
-
port: number;
|
|
33
|
-
available: boolean;
|
|
34
|
-
hosts: HostPortStatus[];
|
|
35
|
-
state: "available" | "managed" | "occupied";
|
|
36
|
-
services: string[];
|
|
37
|
-
urls: string[];
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Every service's tail, in one chronological list.
|
|
41
|
-
*
|
|
42
|
-
* This field used to carry a single service — `config.services[0]`, which is
|
|
43
|
-
* registration order and therefore arbitrary. It meant the Logs panel could
|
|
44
|
-
* only ever show one service, and *which* one came down to a race: two services
|
|
45
|
-
* started 200ms apart, and the later one hid the other completely.
|
|
46
|
-
*
|
|
47
|
-
* Carrying all of them lets the panel offer a tab per service and lets the
|
|
48
|
-
* agent context quote whichever service is being asked about, without either
|
|
49
|
-
* needing a request of its own. Consumers that want one service filter by
|
|
50
|
-
* `entry.service` — `project-scope.ts` already did.
|
|
51
|
-
*
|
|
52
|
-
* Timestamps are compared as strings because `LogStore` writes them all with
|
|
53
|
-
* `toISOString()` — same width, same UTC offset, so lexical order is
|
|
54
|
-
* chronological order. The sort is stable, so a service's own lines keep their
|
|
55
|
-
* relative order even when a burst shares a millisecond.
|
|
56
|
-
*/
|
|
57
|
-
export declare function mergeServiceLogs(serviceLogs: Map<string, LogEntry[]>): LogEntry[];
|
|
58
|
-
export declare function getSelectedGitRepository(config: Awaited<ReturnType<ConfigStore["load"]>>): import("../core/types.js").GitRepositoryDefinition;
|
|
59
|
-
export declare function readGitDiff(cwd: string, path: string): Promise<string | undefined>;
|
|
60
|
-
export declare function selectedGitCwd(configStore: ConfigStore, fallbackCwd: string): Promise<string>;
|
|
61
|
-
export {};
|
package/dist/web/dashboard.js
DELETED
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
import { basename } from "node:path";
|
|
2
|
-
import { isGitWorktree } from "../core/config-store.js";
|
|
3
|
-
import { GitManager } from "../core/git-manager.js";
|
|
4
|
-
import { getPortBindingStatus, } from "../core/port-utils.js";
|
|
5
|
-
import { publicConfig } from "../core/public-config.js";
|
|
6
|
-
import { computeServiceHealth } from "../core/service-health.js";
|
|
7
|
-
/** How much of each service's tail health reasons over. */
|
|
8
|
-
const LOG_TAIL = 80;
|
|
9
|
-
/**
|
|
10
|
-
* How much of each service's tail rides along in the payload.
|
|
11
|
-
*
|
|
12
|
-
* Shorter than what health reads, because this one is multiplied by every
|
|
13
|
-
* service that has ever logged and goes over the wire on every poll. Forty
|
|
14
|
-
* lines is more than the Logs panel shows and more than the agent context
|
|
15
|
-
* quotes, so nothing downstream is short of material.
|
|
16
|
-
*/
|
|
17
|
-
const PAYLOAD_TAIL = 40;
|
|
18
|
-
export async function buildDashboardPayload(options) {
|
|
19
|
-
let config = await options.configStore.load();
|
|
20
|
-
let selectedGitRepository = getSelectedGitRepository(config);
|
|
21
|
-
// If the user has no Git projects registered yet, auto-adopt the process cwd
|
|
22
|
-
// when it's a real Git worktree. If it isn't, leave the repo unselected so the
|
|
23
|
-
// UI can show its empty state (matching the Database tab) instead of pointing
|
|
24
|
-
// at a non-repo folder.
|
|
25
|
-
if (!selectedGitRepository && config.gitRepositories.length === 0) {
|
|
26
|
-
if (await isGitWorktree(options.cwd)) {
|
|
27
|
-
try {
|
|
28
|
-
config = await options.configStore.registerGitRepository({
|
|
29
|
-
name: basename(options.cwd) || "repo",
|
|
30
|
-
path: options.cwd,
|
|
31
|
-
});
|
|
32
|
-
selectedGitRepository = getSelectedGitRepository(config);
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
35
|
-
// Fall through — empty state will be shown.
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
const gitCwd = selectedGitRepository
|
|
40
|
-
? await selectedGitCwd(options.configStore, selectedGitRepository.path)
|
|
41
|
-
: "";
|
|
42
|
-
const runtime = await options.manager.statusWithResources();
|
|
43
|
-
const [gitStatus, branches, ports] = await Promise.all([
|
|
44
|
-
gitCwd ? readGitStatus(gitCwd) : Promise.resolve(undefined),
|
|
45
|
-
gitCwd ? readGitBranches(gitCwd) : Promise.resolve(undefined),
|
|
46
|
-
buildPortOverview(config, runtime.services),
|
|
47
|
-
]);
|
|
48
|
-
const timeline = options.timelineStore.read(120);
|
|
49
|
-
const serviceLogs = readServiceLogs(config, options.logStore);
|
|
50
|
-
const health = buildHealthOverview({
|
|
51
|
-
config,
|
|
52
|
-
ports,
|
|
53
|
-
runtimeServices: runtime.services,
|
|
54
|
-
serviceLogs,
|
|
55
|
-
timeline,
|
|
56
|
-
});
|
|
57
|
-
return {
|
|
58
|
-
ok: true,
|
|
59
|
-
cwd: options.cwd,
|
|
60
|
-
config: publicConfig(config),
|
|
61
|
-
runtime,
|
|
62
|
-
ports,
|
|
63
|
-
health,
|
|
64
|
-
timeline,
|
|
65
|
-
logs: mergeServiceLogs(serviceLogs),
|
|
66
|
-
git: {
|
|
67
|
-
cwd: gitCwd,
|
|
68
|
-
selectedRepository: selectedGitRepository ?? null,
|
|
69
|
-
status: gitStatus ?? null,
|
|
70
|
-
branches: branches ?? [],
|
|
71
|
-
error: !gitCwd
|
|
72
|
-
? undefined
|
|
73
|
-
: gitStatus
|
|
74
|
-
? undefined
|
|
75
|
-
: `Not a Git repository: ${gitCwd}`,
|
|
76
|
-
},
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Every registered service's tail, read once.
|
|
81
|
-
*
|
|
82
|
-
* Health wants it per service and the Output panel wants the liveliest one, so
|
|
83
|
-
* reading the ring buffer twice would only be a way for the two to disagree
|
|
84
|
-
* about the same in-memory array.
|
|
85
|
-
*/
|
|
86
|
-
function readServiceLogs(config, logStore) {
|
|
87
|
-
return new Map(config.services.map((service) => [service.name, logStore.read(service.name, LOG_TAIL)]));
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Every service's tail, in one chronological list.
|
|
91
|
-
*
|
|
92
|
-
* This field used to carry a single service — `config.services[0]`, which is
|
|
93
|
-
* registration order and therefore arbitrary. It meant the Logs panel could
|
|
94
|
-
* only ever show one service, and *which* one came down to a race: two services
|
|
95
|
-
* started 200ms apart, and the later one hid the other completely.
|
|
96
|
-
*
|
|
97
|
-
* Carrying all of them lets the panel offer a tab per service and lets the
|
|
98
|
-
* agent context quote whichever service is being asked about, without either
|
|
99
|
-
* needing a request of its own. Consumers that want one service filter by
|
|
100
|
-
* `entry.service` — `project-scope.ts` already did.
|
|
101
|
-
*
|
|
102
|
-
* Timestamps are compared as strings because `LogStore` writes them all with
|
|
103
|
-
* `toISOString()` — same width, same UTC offset, so lexical order is
|
|
104
|
-
* chronological order. The sort is stable, so a service's own lines keep their
|
|
105
|
-
* relative order even when a burst shares a millisecond.
|
|
106
|
-
*/
|
|
107
|
-
export function mergeServiceLogs(serviceLogs) {
|
|
108
|
-
return [...serviceLogs.values()]
|
|
109
|
-
.flatMap((lines) => lines.slice(-PAYLOAD_TAIL))
|
|
110
|
-
.sort((a, b) => (a.timestamp < b.timestamp ? -1 : a.timestamp > b.timestamp ? 1 : 0));
|
|
111
|
-
}
|
|
112
|
-
function buildHealthOverview(options) {
|
|
113
|
-
return Object.fromEntries(options.config.services.map((service) => [
|
|
114
|
-
service.name,
|
|
115
|
-
computeServiceHealth({
|
|
116
|
-
service,
|
|
117
|
-
status: options.runtimeServices[service.name],
|
|
118
|
-
ports: options.ports.filter((port) => port.services.includes(service.name)),
|
|
119
|
-
logs: options.serviceLogs.get(service.name) ?? [],
|
|
120
|
-
timeline: options.timeline.filter((event) => event.service === service.name),
|
|
121
|
-
}),
|
|
122
|
-
]));
|
|
123
|
-
}
|
|
124
|
-
async function buildPortOverview(config, runtimeServices) {
|
|
125
|
-
const ports = new Map();
|
|
126
|
-
for (const service of config.services) {
|
|
127
|
-
if (service.port) {
|
|
128
|
-
const entry = getPortEntry(ports, service.port);
|
|
129
|
-
entry.services.add(service.name);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
for (const status of Object.values(runtimeServices)) {
|
|
133
|
-
if (!status.url)
|
|
134
|
-
continue;
|
|
135
|
-
const port = portFromUrl(status.url);
|
|
136
|
-
if (!port)
|
|
137
|
-
continue;
|
|
138
|
-
const entry = getPortEntry(ports, port);
|
|
139
|
-
entry.services.add(status.name);
|
|
140
|
-
entry.urls.add(status.url);
|
|
141
|
-
}
|
|
142
|
-
return Promise.all([...ports.entries()]
|
|
143
|
-
.sort(([left], [right]) => left - right)
|
|
144
|
-
.map(async ([port, entry]) => {
|
|
145
|
-
const binding = await getPortBindingStatus(port);
|
|
146
|
-
const managed = [...entry.services].some((serviceName) => {
|
|
147
|
-
const status = runtimeServices[serviceName];
|
|
148
|
-
const urlPort = portFromUrl(status?.url);
|
|
149
|
-
return (status?.state === "running" &&
|
|
150
|
-
(urlPort === port ||
|
|
151
|
-
(urlPort === undefined &&
|
|
152
|
-
config.services.some((service) => service.name === serviceName && service.port === port))));
|
|
153
|
-
});
|
|
154
|
-
return {
|
|
155
|
-
port,
|
|
156
|
-
available: binding.available,
|
|
157
|
-
hosts: binding.hosts,
|
|
158
|
-
state: managed ? "managed" : binding.available ? "available" : "occupied",
|
|
159
|
-
services: [...entry.services].sort(),
|
|
160
|
-
urls: [...entry.urls].sort(),
|
|
161
|
-
};
|
|
162
|
-
}));
|
|
163
|
-
}
|
|
164
|
-
function getPortEntry(ports, port) {
|
|
165
|
-
let entry = ports.get(port);
|
|
166
|
-
if (!entry) {
|
|
167
|
-
entry = { services: new Set(), urls: new Set() };
|
|
168
|
-
ports.set(port, entry);
|
|
169
|
-
}
|
|
170
|
-
return entry;
|
|
171
|
-
}
|
|
172
|
-
function portFromUrl(url) {
|
|
173
|
-
if (!url)
|
|
174
|
-
return undefined;
|
|
175
|
-
try {
|
|
176
|
-
const parsed = new URL(url);
|
|
177
|
-
return parsed.port ? Number(parsed.port) : undefined;
|
|
178
|
-
}
|
|
179
|
-
catch {
|
|
180
|
-
return undefined;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
export function getSelectedGitRepository(config) {
|
|
184
|
-
return (config.gitRepositories.find((repository) => repository.name === config.selectedGitRepository) ?? config.gitRepositories[0]);
|
|
185
|
-
}
|
|
186
|
-
async function readGitStatus(cwd) {
|
|
187
|
-
try {
|
|
188
|
-
return await new GitManager(cwd).status();
|
|
189
|
-
}
|
|
190
|
-
catch {
|
|
191
|
-
return undefined;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
async function readGitBranches(cwd) {
|
|
195
|
-
try {
|
|
196
|
-
return await new GitManager(cwd).branches();
|
|
197
|
-
}
|
|
198
|
-
catch {
|
|
199
|
-
return undefined;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
export async function readGitDiff(cwd, path) {
|
|
203
|
-
try {
|
|
204
|
-
return await new GitManager(cwd).diff(path);
|
|
205
|
-
}
|
|
206
|
-
catch {
|
|
207
|
-
return undefined;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
export async function selectedGitCwd(configStore, fallbackCwd) {
|
|
211
|
-
const config = await configStore.load();
|
|
212
|
-
const repository = getSelectedGitRepository(config);
|
|
213
|
-
if (!repository)
|
|
214
|
-
return fallbackCwd;
|
|
215
|
-
if (repository.activeWorktreePath &&
|
|
216
|
-
await isGitWorktree(repository.activeWorktreePath)) {
|
|
217
|
-
return repository.activeWorktreePath;
|
|
218
|
-
}
|
|
219
|
-
return repository.path;
|
|
220
|
-
}
|
|
221
|
-
//# sourceMappingURL=dashboard.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/web/dashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Virtual "This PC" root shown above the drive letters on Windows. `dirname`
|
|
3
|
-
* treats a drive root (`C:\`) as its own parent, so without this sentinel the
|
|
4
|
-
* picker dead-ends on whichever drive it started on and can never reach `D:\`
|
|
5
|
-
* etc. We surface this as the parent of any drive root and, when asked to list
|
|
6
|
-
* it, enumerate the available drives instead of hitting the filesystem.
|
|
7
|
-
*/
|
|
8
|
-
export declare const WINDOWS_DRIVES_ROOT = "This PC";
|
|
9
|
-
/**
|
|
10
|
-
* List the contents of a directory for in-app browsing. Folders only by
|
|
11
|
-
* default (the service cwd / repo pickers); pass `includeFiles` for the agent
|
|
12
|
-
* dock's file picker, which needs to attach individual files too.
|
|
13
|
-
*/
|
|
14
|
-
export declare function listDirectories(path: string, { includeFiles }?: {
|
|
15
|
-
includeFiles?: boolean;
|
|
16
|
-
}): Promise<{
|
|
17
|
-
ok: boolean;
|
|
18
|
-
path: string;
|
|
19
|
-
parent: string;
|
|
20
|
-
entries: {
|
|
21
|
-
name: string;
|
|
22
|
-
path: string;
|
|
23
|
-
isDir: boolean;
|
|
24
|
-
}[];
|
|
25
|
-
}>;
|
|
26
|
-
/** Parent of a path, or the drives root on Windows when at a drive root. */
|
|
27
|
-
export declare function parentOf(resolvedPath: string): string;
|
package/dist/web/directories.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { access, readdir } from "node:fs/promises";
|
|
2
|
-
import { posix, win32 } from "node:path";
|
|
3
|
-
const ignoredDirectoryNames = new Set([".git", "node_modules"]);
|
|
4
|
-
// Evaluated per-call (not cached) so tests can exercise the Windows path.
|
|
5
|
-
const isWindows = () => process.platform === "win32";
|
|
6
|
-
// Resolve paths with the platform's own rules. On real Windows `node:path`
|
|
7
|
-
// already maps to `win32`; selecting it explicitly means a `win32`-stubbed
|
|
8
|
-
// test runs genuine Windows path semantics on any host (POSIX `dirname("C:\\")`
|
|
9
|
-
// is `"."`, whereas `win32.dirname("C:\\")` is `"C:\\"` — the whole bug).
|
|
10
|
-
const pathLib = () => (isWindows() ? win32 : posix);
|
|
11
|
-
/**
|
|
12
|
-
* Virtual "This PC" root shown above the drive letters on Windows. `dirname`
|
|
13
|
-
* treats a drive root (`C:\`) as its own parent, so without this sentinel the
|
|
14
|
-
* picker dead-ends on whichever drive it started on and can never reach `D:\`
|
|
15
|
-
* etc. We surface this as the parent of any drive root and, when asked to list
|
|
16
|
-
* it, enumerate the available drives instead of hitting the filesystem.
|
|
17
|
-
*/
|
|
18
|
-
export const WINDOWS_DRIVES_ROOT = "This PC";
|
|
19
|
-
/**
|
|
20
|
-
* List the contents of a directory for in-app browsing. Folders only by
|
|
21
|
-
* default (the service cwd / repo pickers); pass `includeFiles` for the agent
|
|
22
|
-
* dock's file picker, which needs to attach individual files too.
|
|
23
|
-
*/
|
|
24
|
-
export async function listDirectories(path, { includeFiles = false } = {}) {
|
|
25
|
-
if (isWindows() && path === WINDOWS_DRIVES_ROOT) {
|
|
26
|
-
return listWindowsDrives();
|
|
27
|
-
}
|
|
28
|
-
const resolvedPath = pathLib().resolve(path);
|
|
29
|
-
const dirents = await readdir(resolvedPath, { withFileTypes: true });
|
|
30
|
-
const entries = dirents
|
|
31
|
-
.filter((entry) => entry.isDirectory()
|
|
32
|
-
? !ignoredDirectoryNames.has(entry.name)
|
|
33
|
-
: includeFiles && entry.isFile())
|
|
34
|
-
.map((entry) => ({
|
|
35
|
-
name: entry.name,
|
|
36
|
-
path: pathLib().resolve(resolvedPath, entry.name),
|
|
37
|
-
isDir: entry.isDirectory(),
|
|
38
|
-
}))
|
|
39
|
-
// Folders first, then files, each alphabetical.
|
|
40
|
-
.sort((left, right) => left.isDir === right.isDir
|
|
41
|
-
? left.name.localeCompare(right.name)
|
|
42
|
-
: left.isDir
|
|
43
|
-
? -1
|
|
44
|
-
: 1);
|
|
45
|
-
return {
|
|
46
|
-
ok: true,
|
|
47
|
-
path: resolvedPath,
|
|
48
|
-
parent: parentOf(resolvedPath),
|
|
49
|
-
entries,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
/** Parent of a path, or the drives root on Windows when at a drive root. */
|
|
53
|
-
export function parentOf(resolvedPath) {
|
|
54
|
-
const parent = pathLib().dirname(resolvedPath);
|
|
55
|
-
if (isWindows() && parent === resolvedPath)
|
|
56
|
-
return WINDOWS_DRIVES_ROOT;
|
|
57
|
-
return parent;
|
|
58
|
-
}
|
|
59
|
-
/** Enumerate available Windows drive letters as a "This PC" listing. */
|
|
60
|
-
async function listWindowsDrives() {
|
|
61
|
-
// Skip A:/B: to avoid the legacy "no floppy disk" prompt; C:–Z: covers every
|
|
62
|
-
// realistic fixed/removable/network drive.
|
|
63
|
-
const letters = Array.from({ length: 24 }, (_, i) => String.fromCharCode(67 + i));
|
|
64
|
-
const drives = await Promise.all(letters.map(async (letter) => {
|
|
65
|
-
const root = `${letter}:\\`;
|
|
66
|
-
try {
|
|
67
|
-
await access(root);
|
|
68
|
-
return { name: `${letter}:`, path: root, isDir: true };
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
}));
|
|
74
|
-
return {
|
|
75
|
-
ok: true,
|
|
76
|
-
path: WINDOWS_DRIVES_ROOT,
|
|
77
|
-
parent: WINDOWS_DRIVES_ROOT,
|
|
78
|
-
entries: drives.filter((drive) => drive !== null),
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=directories.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"directories.js","sourceRoot":"","sources":["../../src/web/directories.ts"],"names":[],"mappings":"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"}
|
package/dist/web/http-utils.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
-
export declare function sendHtml(response: ServerResponse, html: string, status?: number): void;
|
|
3
|
-
export declare function sendText(response: ServerResponse, text: string, status?: number): void;
|
|
4
|
-
export declare function sendHead(response: ServerResponse, contentType: string, status?: number): void;
|
|
5
|
-
export declare function sendJson(response: ServerResponse, data: unknown, status?: number): void;
|
|
6
|
-
export declare function readForm(request: IncomingMessage): Promise<URLSearchParams>;
|
|
7
|
-
/** Read a JSON request body, returning `{}` for an empty or invalid payload. */
|
|
8
|
-
export declare function readJson(request: IncomingMessage, maxBytes?: number): Promise<Record<string, unknown>>;
|
|
9
|
-
export declare class RequestBodyTooLargeError extends Error {
|
|
10
|
-
constructor();
|
|
11
|
-
}
|
|
12
|
-
export declare function requiredFormValue(form: URLSearchParams, key: string): string;
|
|
13
|
-
export declare function optionalFormValue(form: URLSearchParams, key: string): string | undefined;
|
package/dist/web/http-utils.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
export function sendHtml(response, html, status = 200) {
|
|
2
|
-
response.writeHead(status, {
|
|
3
|
-
"content-type": "text/html; charset=utf-8",
|
|
4
|
-
});
|
|
5
|
-
response.end(html);
|
|
6
|
-
}
|
|
7
|
-
export function sendText(response, text, status = 200) {
|
|
8
|
-
response.writeHead(status, {
|
|
9
|
-
"content-type": "text/plain; charset=utf-8",
|
|
10
|
-
});
|
|
11
|
-
response.end(text);
|
|
12
|
-
}
|
|
13
|
-
export function sendHead(response, contentType, status = 200) {
|
|
14
|
-
response.writeHead(status, {
|
|
15
|
-
"content-type": contentType,
|
|
16
|
-
});
|
|
17
|
-
response.end();
|
|
18
|
-
}
|
|
19
|
-
export function sendJson(response, data, status = 200) {
|
|
20
|
-
response.writeHead(status, {
|
|
21
|
-
"content-type": "application/json; charset=utf-8",
|
|
22
|
-
});
|
|
23
|
-
response.end(JSON.stringify(data));
|
|
24
|
-
}
|
|
25
|
-
export async function readForm(request) {
|
|
26
|
-
const chunks = [];
|
|
27
|
-
for await (const chunk of request) {
|
|
28
|
-
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
29
|
-
}
|
|
30
|
-
return new URLSearchParams(Buffer.concat(chunks).toString("utf8"));
|
|
31
|
-
}
|
|
32
|
-
/** Read a JSON request body, returning `{}` for an empty or invalid payload. */
|
|
33
|
-
export async function readJson(request, maxBytes = Number.POSITIVE_INFINITY) {
|
|
34
|
-
const chunks = [];
|
|
35
|
-
let bytes = 0;
|
|
36
|
-
for await (const chunk of request) {
|
|
37
|
-
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
38
|
-
bytes += buffer.length;
|
|
39
|
-
if (bytes > maxBytes)
|
|
40
|
-
throw new RequestBodyTooLargeError();
|
|
41
|
-
chunks.push(buffer);
|
|
42
|
-
}
|
|
43
|
-
const raw = Buffer.concat(chunks).toString("utf8").trim();
|
|
44
|
-
if (!raw)
|
|
45
|
-
return {};
|
|
46
|
-
try {
|
|
47
|
-
const parsed = JSON.parse(raw);
|
|
48
|
-
return parsed && typeof parsed === "object"
|
|
49
|
-
? parsed
|
|
50
|
-
: {};
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
return {};
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
export class RequestBodyTooLargeError extends Error {
|
|
57
|
-
constructor() {
|
|
58
|
-
super("Request body is too large.");
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
export function requiredFormValue(form, key) {
|
|
62
|
-
const value = form.get(key)?.trim();
|
|
63
|
-
if (!value) {
|
|
64
|
-
throw new Error(`${key} is required`);
|
|
65
|
-
}
|
|
66
|
-
return value;
|
|
67
|
-
}
|
|
68
|
-
export function optionalFormValue(form, key) {
|
|
69
|
-
const value = form.get(key)?.trim();
|
|
70
|
-
return value || undefined;
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=http-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-utils.js","sourceRoot":"","sources":["../../src/web/http-utils.ts"],"names":[],"mappings":"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"}
|