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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extensions-routes.js","sourceRoot":"","sources":["../../../src/web/routes/extensions-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAc,MAAM,cAAc,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAY;IACvC,KAAK,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrD,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC;CACH,CAAC"}
|
|
@@ -1,598 +0,0 @@
|
|
|
1
|
-
import { resolve, sep } from "node:path";
|
|
2
|
-
import { gitToplevel } from "../../core/config-store.js";
|
|
3
|
-
import { GitActions } from "../../core/git-actions.js";
|
|
4
|
-
import { resolveGitIdentityState, resolvePushCredential } from "../../core/git-identity.js";
|
|
5
|
-
import { GitManager } from "../../core/git-manager.js";
|
|
6
|
-
import { GitWorktreeManager } from "../../core/git-worktrees.js";
|
|
7
|
-
import { createRepository } from "../../core/repo-create.js";
|
|
8
|
-
import { cloneRepository } from "../../core/repo-onboard.js";
|
|
9
|
-
import { publicConfig } from "../../core/public-config.js";
|
|
10
|
-
import { getSelectedGitRepository, readGitDiff, selectedGitCwd } from "../dashboard.js";
|
|
11
|
-
import { readForm, readJson, requiredFormValue, sendJson, sendText } from "../http-utils.js";
|
|
12
|
-
import { errorMessage, patternRoute, route } from "./context.js";
|
|
13
|
-
/**
|
|
14
|
-
* How many repos the board shows before the user has curated it. Kept below the
|
|
15
|
-
* UI's 5-column cap so the "Add" tile stays visible and nothing is stranded.
|
|
16
|
-
*/
|
|
17
|
-
const DEFAULT_BOARD_COLUMNS = 4;
|
|
18
|
-
/**
|
|
19
|
-
* Resolve the working directory for a write op. When `repoName` is given — the
|
|
20
|
-
* multi-repo board scopes stage/unstage/commit/push to a named column — look it
|
|
21
|
-
* up by name; otherwise fall back to the currently selected repository. Returns
|
|
22
|
-
* an `error` string when a named repo can't be found so callers can 404.
|
|
23
|
-
*/
|
|
24
|
-
async function resolveRepoCwd(configStore, repoName, fallbackCwd) {
|
|
25
|
-
const config = await configStore.load();
|
|
26
|
-
if (!repoName) {
|
|
27
|
-
return {
|
|
28
|
-
cwd: await selectedGitCwd(configStore, fallbackCwd),
|
|
29
|
-
repository: getSelectedGitRepository(config),
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
const target = config.gitRepositories.find((repository) => repository.name === repoName);
|
|
33
|
-
if (!target)
|
|
34
|
-
return { error: `Unknown repository: ${repoName}` };
|
|
35
|
-
return { cwd: target.activeWorktreePath ?? target.path, repository: target };
|
|
36
|
-
}
|
|
37
|
-
/** Read-safe Git operations plus repository registration/selection. */
|
|
38
|
-
export const gitRoutes = [
|
|
39
|
-
route("GET", "/api/git/diff", async ({ response, url, configStore, cwd }) => {
|
|
40
|
-
const config = await configStore.load();
|
|
41
|
-
// `repo` scopes the diff to a named repository (used by the multi-repo
|
|
42
|
-
// board); without it we fall back to the currently selected repository.
|
|
43
|
-
const repoName = url.searchParams.get("repo")?.trim();
|
|
44
|
-
const targetRepository = repoName
|
|
45
|
-
? config.gitRepositories.find((repository) => repository.name === repoName)
|
|
46
|
-
: getSelectedGitRepository(config);
|
|
47
|
-
if (repoName && !targetRepository) {
|
|
48
|
-
sendJson(response, { ok: false, error: `Unknown repository: ${repoName}` }, 404);
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
const gitCwd = targetRepository?.activeWorktreePath ??
|
|
52
|
-
targetRepository?.path ??
|
|
53
|
-
cwd;
|
|
54
|
-
const selectedFile = url.searchParams.get("file")?.trim();
|
|
55
|
-
if (!selectedFile) {
|
|
56
|
-
sendJson(response, { ok: false, error: "file is required" }, 400);
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
const git = new GitManager(gitCwd);
|
|
60
|
-
const status = await git.status();
|
|
61
|
-
const selectedStatus = status.files.find((file) => file.path === selectedFile);
|
|
62
|
-
const diff = selectedStatus
|
|
63
|
-
? await git.fileDiff(selectedStatus)
|
|
64
|
-
: await readGitDiff(gitCwd, selectedFile);
|
|
65
|
-
if (diff === undefined) {
|
|
66
|
-
sendJson(response, { ok: false, error: "No changes or file not found." }, 404);
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
sendText(response, diff);
|
|
70
|
-
}),
|
|
71
|
-
route("GET", "/api/git/status", async ({ response, configStore, cwd }) => {
|
|
72
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
73
|
-
try {
|
|
74
|
-
const status = await new GitManager(gitCwd).status();
|
|
75
|
-
sendJson(response, { ok: true, status });
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
79
|
-
}
|
|
80
|
-
}),
|
|
81
|
-
route("GET", "/api/git/overview", async ({ response, configStore }) => {
|
|
82
|
-
// Fan out `git status` across every registered repository so the board can
|
|
83
|
-
// show changed files per repo side by side. One broken repo surfaces as a
|
|
84
|
-
// per-column error instead of failing the whole response.
|
|
85
|
-
const config = await configStore.load();
|
|
86
|
-
const repos = await Promise.all(config.gitRepositories.map(async (repository) => {
|
|
87
|
-
try {
|
|
88
|
-
const worktreePath = repository.activeWorktreePath ?? repository.path;
|
|
89
|
-
const status = await new GitManager(worktreePath).status();
|
|
90
|
-
return {
|
|
91
|
-
name: repository.name,
|
|
92
|
-
path: worktreePath,
|
|
93
|
-
branch: status.branch,
|
|
94
|
-
ahead: status.ahead,
|
|
95
|
-
behind: status.behind,
|
|
96
|
-
files: status.files,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
return {
|
|
101
|
-
name: repository.name,
|
|
102
|
-
path: repository.path,
|
|
103
|
-
branch: "",
|
|
104
|
-
ahead: 0,
|
|
105
|
-
behind: 0,
|
|
106
|
-
files: [],
|
|
107
|
-
error: errorMessage(error),
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
}));
|
|
111
|
-
// Effective board: the user's pinned order, or every repo when never
|
|
112
|
-
// curated. Stale names (repo since removed) are dropped.
|
|
113
|
-
const registered = new Set(config.gitRepositories.map((repo) => repo.name));
|
|
114
|
-
const board = (config.gitBoardRepositories ??
|
|
115
|
-
config.gitRepositories.map((repo) => repo.name).slice(0, DEFAULT_BOARD_COLUMNS)).filter((name) => registered.has(name));
|
|
116
|
-
sendJson(response, { ok: true, repos, board });
|
|
117
|
-
}),
|
|
118
|
-
route("PUT", "/api/git/board", async ({ request, response, configStore }) => {
|
|
119
|
-
const body = await readJson(request);
|
|
120
|
-
const names = Array.isArray(body.names)
|
|
121
|
-
? body.names.filter((name) => typeof name === "string")
|
|
122
|
-
: null;
|
|
123
|
-
if (!names) {
|
|
124
|
-
sendJson(response, { ok: false, error: "names array is required" }, 400);
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
const config = await configStore.setGitBoardRepositories(names);
|
|
128
|
-
sendJson(response, { ok: true, board: config.gitBoardRepositories ?? [] });
|
|
129
|
-
}),
|
|
130
|
-
route("GET", "/api/git/files", async ({ response, configStore, cwd }) => {
|
|
131
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
132
|
-
try {
|
|
133
|
-
const files = await new GitManager(gitCwd).listTrackedFiles();
|
|
134
|
-
sendJson(response, { ok: true, files });
|
|
135
|
-
}
|
|
136
|
-
catch (error) {
|
|
137
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
138
|
-
}
|
|
139
|
-
}),
|
|
140
|
-
route("GET", "/api/git/file-sizes", async ({ response, configStore, cwd }) => {
|
|
141
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
142
|
-
try {
|
|
143
|
-
const files = await new GitManager(gitCwd).rankFilesBySize();
|
|
144
|
-
sendJson(response, { ok: true, files });
|
|
145
|
-
}
|
|
146
|
-
catch (error) {
|
|
147
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
148
|
-
}
|
|
149
|
-
}),
|
|
150
|
-
route("GET", "/api/git/file", async ({ response, url, configStore, cwd }) => {
|
|
151
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
152
|
-
const path = url.searchParams.get("path")?.trim();
|
|
153
|
-
if (!path) {
|
|
154
|
-
sendJson(response, { ok: false, error: "path is required" }, 400);
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
try {
|
|
158
|
-
const file = await new GitManager(gitCwd).readTrackedFile(path);
|
|
159
|
-
sendJson(response, { ok: true, ...file });
|
|
160
|
-
}
|
|
161
|
-
catch (error) {
|
|
162
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 404);
|
|
163
|
-
}
|
|
164
|
-
}),
|
|
165
|
-
route("PUT", "/api/git/file", async ({ request, response, configStore, cwd }) => {
|
|
166
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
167
|
-
const body = await readJson(request);
|
|
168
|
-
const path = typeof body.path === "string" ? body.path.trim() : "";
|
|
169
|
-
const content = typeof body.content === "string" ? body.content : null;
|
|
170
|
-
if (!path) {
|
|
171
|
-
sendJson(response, { ok: false, error: "path is required" }, 400);
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
if (content === null) {
|
|
175
|
-
sendJson(response, { ok: false, error: "content is required" }, 400);
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
try {
|
|
179
|
-
await new GitManager(gitCwd).writeTrackedFile(path, content);
|
|
180
|
-
sendJson(response, { ok: true });
|
|
181
|
-
}
|
|
182
|
-
catch (error) {
|
|
183
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
184
|
-
}
|
|
185
|
-
}),
|
|
186
|
-
route("GET", "/api/git/commit", async ({ response, url, configStore, cwd }) => {
|
|
187
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
188
|
-
const hash = url.searchParams.get("hash")?.trim();
|
|
189
|
-
const file = url.searchParams.get("file")?.trim() || undefined;
|
|
190
|
-
if (!hash) {
|
|
191
|
-
sendJson(response, { ok: false, error: "hash is required" }, 400);
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
try {
|
|
195
|
-
const diff = await new GitManager(gitCwd).commitDiff(hash, file);
|
|
196
|
-
sendText(response, diff);
|
|
197
|
-
}
|
|
198
|
-
catch (error) {
|
|
199
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
200
|
-
}
|
|
201
|
-
}),
|
|
202
|
-
route("GET", "/api/git/commit/files", async ({ response, url, configStore, cwd }) => {
|
|
203
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
204
|
-
const hash = url.searchParams.get("hash")?.trim();
|
|
205
|
-
if (!hash) {
|
|
206
|
-
sendJson(response, { ok: false, error: "hash is required" }, 400);
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
try {
|
|
210
|
-
const files = await new GitManager(gitCwd).commitFiles(hash);
|
|
211
|
-
sendJson(response, { ok: true, files });
|
|
212
|
-
}
|
|
213
|
-
catch (error) {
|
|
214
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
215
|
-
}
|
|
216
|
-
}),
|
|
217
|
-
route("GET", "/api/git/graph", async ({ response, url, configStore, cwd }) => {
|
|
218
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
219
|
-
const limitParam = url.searchParams.get("limit")?.trim();
|
|
220
|
-
const parsedLimit = limitParam ? Number(limitParam) : 200;
|
|
221
|
-
const limit = Number.isFinite(parsedLimit) && parsedLimit > 0
|
|
222
|
-
? Math.min(Math.floor(parsedLimit), 2000)
|
|
223
|
-
: 200;
|
|
224
|
-
const commits = await new GitManager(gitCwd).graph(limit);
|
|
225
|
-
sendJson(response, { ok: true, commits });
|
|
226
|
-
}),
|
|
227
|
-
route("POST", "/api/git/fetch", async ({ response, configStore, cwd }) => {
|
|
228
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
229
|
-
const output = await new GitManager(gitCwd).fetch();
|
|
230
|
-
sendJson(response, { ok: true, output });
|
|
231
|
-
}),
|
|
232
|
-
/**
|
|
233
|
-
* Who a commit made here would be authored by, and whether that differs from
|
|
234
|
-
* the machine's configured git identity. The account switcher governs the
|
|
235
|
-
* GitHub API surface too, so a mismatch here is what the UI warns about.
|
|
236
|
-
*/
|
|
237
|
-
route("GET", "/api/git/identity", async ({ response, url, configStore, cwd }) => {
|
|
238
|
-
const resolved = await resolveRepoCwd(configStore, url.searchParams.get("repo")?.trim(), cwd);
|
|
239
|
-
if ("error" in resolved) {
|
|
240
|
-
sendJson(response, { ok: false, error: resolved.error }, 404);
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
|
-
const identity = await resolveGitIdentityState(configStore, resolved.repository, resolved.cwd);
|
|
244
|
-
sendJson(response, { ok: true, ...identity });
|
|
245
|
-
}),
|
|
246
|
-
route("POST", "/api/git/commit", async ({ request, response, configStore, cwd }) => {
|
|
247
|
-
try {
|
|
248
|
-
const form = await readForm(request);
|
|
249
|
-
const resolved = await resolveRepoCwd(configStore, form.get("repo")?.trim(), cwd);
|
|
250
|
-
if ("error" in resolved) {
|
|
251
|
-
sendJson(response, { ok: false, error: resolved.error }, 404);
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
// Honour the GitHub account selected for this repository, so the commit's
|
|
255
|
-
// author matches the account that will open the pull request. Falls back
|
|
256
|
-
// to the machine's git identity when no account is selected.
|
|
257
|
-
const identity = await resolveGitIdentityState(configStore, resolved.repository, resolved.cwd);
|
|
258
|
-
const output = await new GitManager(resolved.cwd).commit(requiredFormValue(form, "message"), { identity: identity.selected ?? undefined });
|
|
259
|
-
sendJson(response, { ok: true, output, author: identity.selected });
|
|
260
|
-
}
|
|
261
|
-
catch (error) {
|
|
262
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
263
|
-
}
|
|
264
|
-
}),
|
|
265
|
-
route("POST", "/api/git/stage", async ({ request, response, configStore, cwd }) => {
|
|
266
|
-
try {
|
|
267
|
-
const body = await readJson(request);
|
|
268
|
-
const repo = typeof body.repo === "string" ? body.repo.trim() : undefined;
|
|
269
|
-
const resolved = await resolveRepoCwd(configStore, repo, cwd);
|
|
270
|
-
if ("error" in resolved) {
|
|
271
|
-
sendJson(response, { ok: false, error: resolved.error }, 404);
|
|
272
|
-
return;
|
|
273
|
-
}
|
|
274
|
-
const paths = Array.isArray(body.paths) ? body.paths.filter((p) => typeof p === "string") : [];
|
|
275
|
-
const output = await new GitManager(resolved.cwd).stage(paths);
|
|
276
|
-
sendJson(response, { ok: true, output });
|
|
277
|
-
}
|
|
278
|
-
catch (error) {
|
|
279
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
280
|
-
}
|
|
281
|
-
}),
|
|
282
|
-
route("POST", "/api/git/unstage", async ({ request, response, configStore, cwd }) => {
|
|
283
|
-
try {
|
|
284
|
-
const body = await readJson(request);
|
|
285
|
-
const repo = typeof body.repo === "string" ? body.repo.trim() : undefined;
|
|
286
|
-
const resolved = await resolveRepoCwd(configStore, repo, cwd);
|
|
287
|
-
if ("error" in resolved) {
|
|
288
|
-
sendJson(response, { ok: false, error: resolved.error }, 404);
|
|
289
|
-
return;
|
|
290
|
-
}
|
|
291
|
-
const paths = Array.isArray(body.paths) ? body.paths.filter((p) => typeof p === "string") : [];
|
|
292
|
-
const output = await new GitManager(resolved.cwd).unstage(paths);
|
|
293
|
-
sendJson(response, { ok: true, output });
|
|
294
|
-
}
|
|
295
|
-
catch (error) {
|
|
296
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
297
|
-
}
|
|
298
|
-
}),
|
|
299
|
-
// Write op (reaches the remote) — lives in the guarded GitActions module, not
|
|
300
|
-
// the read-safe GitManager. The UI confirms before calling this.
|
|
301
|
-
route("POST", "/api/git/push", async ({ request, response, configStore, cwd }) => {
|
|
302
|
-
try {
|
|
303
|
-
const form = await readForm(request);
|
|
304
|
-
const resolved = await resolveRepoCwd(configStore, form.get("repo")?.trim(), cwd);
|
|
305
|
-
if ("error" in resolved) {
|
|
306
|
-
sendJson(response, { ok: false, error: resolved.error }, 404);
|
|
307
|
-
return;
|
|
308
|
-
}
|
|
309
|
-
const remote = form.get("remote")?.trim() || undefined;
|
|
310
|
-
// Push as the account selected for this repository rather than whichever
|
|
311
|
-
// one the machine's credential helper happens to answer with. Null for
|
|
312
|
-
// SSH remotes and unselected repos — those keep the existing behaviour.
|
|
313
|
-
const remoteUrl = await new GitManager(resolved.cwd).remoteUrl(remote ?? "origin");
|
|
314
|
-
const credential = await resolvePushCredential(configStore, resolved.repository, remoteUrl);
|
|
315
|
-
const result = await new GitActions(resolved.cwd).push({
|
|
316
|
-
remote,
|
|
317
|
-
credential: credential ? { token: credential.token, username: credential.login } : undefined,
|
|
318
|
-
});
|
|
319
|
-
sendJson(response, { ok: true, ...result, pushedAs: credential?.login });
|
|
320
|
-
}
|
|
321
|
-
catch (error) {
|
|
322
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
323
|
-
}
|
|
324
|
-
}),
|
|
325
|
-
route("POST", "/api/git/pull", async ({ request, response, configStore, cwd }) => {
|
|
326
|
-
try {
|
|
327
|
-
const form = await readForm(request);
|
|
328
|
-
const resolved = await resolveRepoCwd(configStore, form.get("repo")?.trim(), cwd);
|
|
329
|
-
if ("error" in resolved) {
|
|
330
|
-
sendJson(response, { ok: false, error: resolved.error }, 404);
|
|
331
|
-
return;
|
|
332
|
-
}
|
|
333
|
-
const output = await new GitActions(resolved.cwd).pull();
|
|
334
|
-
sendJson(response, { ok: true, output });
|
|
335
|
-
}
|
|
336
|
-
catch (error) {
|
|
337
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
338
|
-
}
|
|
339
|
-
}),
|
|
340
|
-
route("POST", "/api/git/merge", async ({ request, response, configStore, cwd }) => {
|
|
341
|
-
try {
|
|
342
|
-
const form = await readForm(request);
|
|
343
|
-
const resolved = await resolveRepoCwd(configStore, form.get("repo")?.trim(), cwd);
|
|
344
|
-
if ("error" in resolved) {
|
|
345
|
-
sendJson(response, { ok: false, error: resolved.error }, 404);
|
|
346
|
-
return;
|
|
347
|
-
}
|
|
348
|
-
const output = await new GitActions(resolved.cwd).merge(requiredFormValue(form, "branch"));
|
|
349
|
-
sendJson(response, { ok: true, output });
|
|
350
|
-
}
|
|
351
|
-
catch (error) {
|
|
352
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
353
|
-
}
|
|
354
|
-
}),
|
|
355
|
-
route("POST", "/api/git/rebase", async ({ request, response, configStore, cwd }) => {
|
|
356
|
-
try {
|
|
357
|
-
const form = await readForm(request);
|
|
358
|
-
const resolved = await resolveRepoCwd(configStore, form.get("repo")?.trim(), cwd);
|
|
359
|
-
if ("error" in resolved) {
|
|
360
|
-
sendJson(response, { ok: false, error: resolved.error }, 404);
|
|
361
|
-
return;
|
|
362
|
-
}
|
|
363
|
-
const output = await new GitActions(resolved.cwd).rebase(requiredFormValue(form, "branch"));
|
|
364
|
-
sendJson(response, { ok: true, output });
|
|
365
|
-
}
|
|
366
|
-
catch (error) {
|
|
367
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
368
|
-
}
|
|
369
|
-
}),
|
|
370
|
-
route("POST", "/api/git/default-branch/pull", async ({ response, configStore, cwd }) => {
|
|
371
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
372
|
-
try {
|
|
373
|
-
const result = await new GitActions(gitCwd).checkoutDefaultAndPull();
|
|
374
|
-
sendJson(response, { ok: true, ...result });
|
|
375
|
-
}
|
|
376
|
-
catch (error) {
|
|
377
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
378
|
-
}
|
|
379
|
-
}),
|
|
380
|
-
route("GET", "/api/git/worktrees", async ({ response, configStore }) => {
|
|
381
|
-
const config = await configStore.load();
|
|
382
|
-
const repository = getSelectedGitRepository(config);
|
|
383
|
-
if (!repository) {
|
|
384
|
-
sendJson(response, { ok: false, error: "No Git project is selected." }, 404);
|
|
385
|
-
return;
|
|
386
|
-
}
|
|
387
|
-
const worktrees = await new GitWorktreeManager(repository.path).list();
|
|
388
|
-
const configuredActive = repository.activeWorktreePath ?? repository.path;
|
|
389
|
-
const activePath = worktrees.some((worktree) => resolve(worktree.path) === resolve(configuredActive))
|
|
390
|
-
? configuredActive
|
|
391
|
-
: repository.path;
|
|
392
|
-
sendJson(response, {
|
|
393
|
-
ok: true,
|
|
394
|
-
activePath,
|
|
395
|
-
worktrees,
|
|
396
|
-
});
|
|
397
|
-
}),
|
|
398
|
-
route("POST", "/api/git/worktrees", async ({ request, response, configStore }) => {
|
|
399
|
-
const body = await readJson(request);
|
|
400
|
-
const config = await configStore.load();
|
|
401
|
-
const repository = getSelectedGitRepository(config);
|
|
402
|
-
if (!repository) {
|
|
403
|
-
sendJson(response, { ok: false, error: "No Git project is selected." }, 404);
|
|
404
|
-
return;
|
|
405
|
-
}
|
|
406
|
-
try {
|
|
407
|
-
const worktree = await new GitWorktreeManager(repository.path).create({
|
|
408
|
-
branch: typeof body.branch === "string" ? body.branch : "",
|
|
409
|
-
createBranch: body.createBranch === true,
|
|
410
|
-
baseRef: typeof body.baseRef === "string" ? body.baseRef : undefined,
|
|
411
|
-
projectName: repository.name,
|
|
412
|
-
});
|
|
413
|
-
await configStore.selectGitWorktree(repository.name, worktree.path);
|
|
414
|
-
sendJson(response, { ok: true, worktree }, 201);
|
|
415
|
-
}
|
|
416
|
-
catch (error) {
|
|
417
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 422);
|
|
418
|
-
}
|
|
419
|
-
}),
|
|
420
|
-
route("PUT", "/api/git/worktrees/active", async ({ request, response, configStore }) => {
|
|
421
|
-
const body = await readJson(request);
|
|
422
|
-
const path = typeof body.path === "string" ? body.path : "";
|
|
423
|
-
const config = await configStore.load();
|
|
424
|
-
const repository = getSelectedGitRepository(config);
|
|
425
|
-
if (!repository) {
|
|
426
|
-
sendJson(response, { ok: false, error: "No Git project is selected." }, 404);
|
|
427
|
-
return;
|
|
428
|
-
}
|
|
429
|
-
try {
|
|
430
|
-
await configStore.selectGitWorktree(repository.name, path);
|
|
431
|
-
sendJson(response, { ok: true, activePath: path });
|
|
432
|
-
}
|
|
433
|
-
catch (error) {
|
|
434
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 422);
|
|
435
|
-
}
|
|
436
|
-
}),
|
|
437
|
-
route("DELETE", "/api/git/worktrees", async ({ request, response, configStore, manager, terminalManager }) => {
|
|
438
|
-
const body = await readJson(request);
|
|
439
|
-
const path = typeof body.path === "string" ? body.path : "";
|
|
440
|
-
const config = await configStore.load();
|
|
441
|
-
const repository = getSelectedGitRepository(config);
|
|
442
|
-
if (!repository) {
|
|
443
|
-
sendJson(response, { ok: false, error: "No Git project is selected." }, 404);
|
|
444
|
-
return;
|
|
445
|
-
}
|
|
446
|
-
const activePath = repository.activeWorktreePath ?? repository.path;
|
|
447
|
-
if (resolve(activePath) === resolve(path)) {
|
|
448
|
-
sendJson(response, { ok: false, error: "Switch to another worktree before removing this one." }, 409);
|
|
449
|
-
return;
|
|
450
|
-
}
|
|
451
|
-
const activeTerminal = terminalManager
|
|
452
|
-
.list()
|
|
453
|
-
.find((session) => pathContains(path, session.cwd));
|
|
454
|
-
if (activeTerminal) {
|
|
455
|
-
sendJson(response, { ok: false, error: "Close terminals using this worktree before removing it." }, 409);
|
|
456
|
-
return;
|
|
457
|
-
}
|
|
458
|
-
const runtime = manager.status().services;
|
|
459
|
-
const activeService = config.services.find((service) => service.cwd &&
|
|
460
|
-
pathContains(path, service.cwd) &&
|
|
461
|
-
runtime[service.name]?.state === "running");
|
|
462
|
-
if (activeService) {
|
|
463
|
-
sendJson(response, {
|
|
464
|
-
ok: false,
|
|
465
|
-
error: `Stop service "${activeService.name}" before removing this worktree.`,
|
|
466
|
-
}, 409);
|
|
467
|
-
return;
|
|
468
|
-
}
|
|
469
|
-
try {
|
|
470
|
-
await new GitWorktreeManager(repository.path).remove(path);
|
|
471
|
-
sendJson(response, { ok: true });
|
|
472
|
-
}
|
|
473
|
-
catch (error) {
|
|
474
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 422);
|
|
475
|
-
}
|
|
476
|
-
}),
|
|
477
|
-
route("POST", "/api/git/worktrees/prune", async ({ response, configStore }) => {
|
|
478
|
-
const config = await configStore.load();
|
|
479
|
-
const repository = getSelectedGitRepository(config);
|
|
480
|
-
if (!repository) {
|
|
481
|
-
sendJson(response, { ok: false, error: "No Git project is selected." }, 404);
|
|
482
|
-
return;
|
|
483
|
-
}
|
|
484
|
-
await new GitWorktreeManager(repository.path).prune();
|
|
485
|
-
sendJson(response, { ok: true });
|
|
486
|
-
}),
|
|
487
|
-
route("GET", "/api/git/branches", async ({ response, configStore, cwd }) => {
|
|
488
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
489
|
-
const branches = await new GitManager(gitCwd).branches();
|
|
490
|
-
sendJson(response, { ok: true, branches });
|
|
491
|
-
}),
|
|
492
|
-
route("POST", "/api/git/branches", async ({ request, response, configStore, cwd }) => {
|
|
493
|
-
const form = await readForm(request);
|
|
494
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
495
|
-
const output = await new GitManager(gitCwd).createBranch(requiredFormValue(form, "name"), form.get("startPoint")?.trim() || undefined);
|
|
496
|
-
sendJson(response, { ok: true, output });
|
|
497
|
-
}),
|
|
498
|
-
route("POST", "/api/git/branches/delete", async ({ request, response, configStore, cwd }) => {
|
|
499
|
-
try {
|
|
500
|
-
const form = await readForm(request);
|
|
501
|
-
const resolved = await resolveRepoCwd(configStore, form.get("repo")?.trim(), cwd);
|
|
502
|
-
if ("error" in resolved) {
|
|
503
|
-
sendJson(response, { ok: false, error: resolved.error }, 404);
|
|
504
|
-
return;
|
|
505
|
-
}
|
|
506
|
-
const output = await new GitManager(resolved.cwd).deleteBranch(requiredFormValue(form, "name"));
|
|
507
|
-
sendJson(response, { ok: true, output });
|
|
508
|
-
}
|
|
509
|
-
catch (error) {
|
|
510
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 400);
|
|
511
|
-
}
|
|
512
|
-
}),
|
|
513
|
-
route("POST", "/api/git/branches/switch", async ({ request, response, configStore, cwd }) => {
|
|
514
|
-
const form = await readForm(request);
|
|
515
|
-
const gitCwd = await selectedGitCwd(configStore, cwd);
|
|
516
|
-
const output = await new GitManager(gitCwd).switchBranch(requiredFormValue(form, "name"));
|
|
517
|
-
sendJson(response, { ok: true, output });
|
|
518
|
-
}),
|
|
519
|
-
route("POST", "/api/git/repositories", async ({ request, response, configStore }) => {
|
|
520
|
-
const form = await readForm(request);
|
|
521
|
-
const config = await configStore.registerGitRepository({
|
|
522
|
-
name: requiredFormValue(form, "name"),
|
|
523
|
-
path: requiredFormValue(form, "path"),
|
|
524
|
-
});
|
|
525
|
-
sendJson(response, { ok: true, config: publicConfig(config) });
|
|
526
|
-
}),
|
|
527
|
-
// Clone a remote repo (HTTPS or SSH) into the managed repos dir, then register
|
|
528
|
-
// it as a Git project. Cloning lives in the guarded `repo-onboard` core module
|
|
529
|
-
// so GitManager stays read-safe; SSH uses the host's ssh-agent/keys/config.
|
|
530
|
-
route("POST", "/api/git/clone", async ({ request, response, configStore }) => {
|
|
531
|
-
const form = await readForm(request);
|
|
532
|
-
const url = requiredFormValue(form, "url");
|
|
533
|
-
try {
|
|
534
|
-
const config = await configStore.load();
|
|
535
|
-
const githubToken = configStore.getGithubToken(config);
|
|
536
|
-
const { name, clonePath } = await cloneRepository(url, undefined, githubToken);
|
|
537
|
-
await configStore.registerGitRepository({ name, path: clonePath });
|
|
538
|
-
sendJson(response, { ok: true, name, path: clonePath });
|
|
539
|
-
}
|
|
540
|
-
catch (error) {
|
|
541
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 422);
|
|
542
|
-
}
|
|
543
|
-
}),
|
|
544
|
-
// Adopt the repo a path already sits in — used by the "this service has no
|
|
545
|
-
// project" affordance. Resolves to the worktree root first so a service that
|
|
546
|
-
// runs from `repo/frontend` registers `repo`, not the subdirectory.
|
|
547
|
-
route("POST", "/api/git/adopt", async ({ request, response, configStore }) => {
|
|
548
|
-
const form = await readForm(request);
|
|
549
|
-
const from = requiredFormValue(form, "path");
|
|
550
|
-
const root = await gitToplevel(from);
|
|
551
|
-
if (!root) {
|
|
552
|
-
sendJson(response, { ok: false, error: `Not inside a Git repository: ${from}` }, 422);
|
|
553
|
-
return;
|
|
554
|
-
}
|
|
555
|
-
try {
|
|
556
|
-
const name = root.split("/").filter(Boolean).pop() ?? root;
|
|
557
|
-
await configStore.registerGitRepository({ name, path: root });
|
|
558
|
-
sendJson(response, { ok: true, name, path: root });
|
|
559
|
-
}
|
|
560
|
-
catch (error) {
|
|
561
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 422);
|
|
562
|
-
}
|
|
563
|
-
}),
|
|
564
|
-
// Create a brand-new project: mkdir + `git init` + register. Lives in the
|
|
565
|
-
// guarded `repo-create` core module for the same reason cloning does.
|
|
566
|
-
route("POST", "/api/git/create", async ({ request, response, configStore }) => {
|
|
567
|
-
const form = await readForm(request);
|
|
568
|
-
try {
|
|
569
|
-
const parent = form.get("parentPath")?.trim();
|
|
570
|
-
const { name, path } = await createRepository(requiredFormValue(form, "name"), parent || undefined);
|
|
571
|
-
await configStore.registerGitRepository({ name, path });
|
|
572
|
-
sendJson(response, { ok: true, name, path });
|
|
573
|
-
}
|
|
574
|
-
catch (error) {
|
|
575
|
-
sendJson(response, { ok: false, error: errorMessage(error) }, 422);
|
|
576
|
-
}
|
|
577
|
-
}),
|
|
578
|
-
patternRoute(/^\/api\/git\/repositories\/([^/]+)$/, ["name"], async ({ request, response, configStore, params }) => {
|
|
579
|
-
if (request.method !== "DELETE") {
|
|
580
|
-
sendJson(response, { ok: false, error: "Method not allowed" }, 405);
|
|
581
|
-
return;
|
|
582
|
-
}
|
|
583
|
-
const config = await configStore.removeGitRepository(decodeURIComponent(params.name));
|
|
584
|
-
sendJson(response, { ok: true, config: publicConfig(config) });
|
|
585
|
-
}),
|
|
586
|
-
route("POST", "/api/git/select", async ({ request, response, configStore }) => {
|
|
587
|
-
const form = await readForm(request);
|
|
588
|
-
const config = await configStore.selectGitRepository(requiredFormValue(form, "name"));
|
|
589
|
-
sendJson(response, { ok: true, config: publicConfig(config) });
|
|
590
|
-
}),
|
|
591
|
-
];
|
|
592
|
-
function pathContains(root, candidate) {
|
|
593
|
-
const normalizedRoot = resolve(root);
|
|
594
|
-
const normalizedCandidate = resolve(candidate);
|
|
595
|
-
return (normalizedCandidate === normalizedRoot ||
|
|
596
|
-
normalizedCandidate.startsWith(`${normalizedRoot}${sep}`));
|
|
597
|
-
}
|
|
598
|
-
//# sourceMappingURL=git-routes.js.map
|