devchain-cli 0.25.0 → 0.26.1
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 +1 -1
- package/dist/build-info.json +2 -2
- package/dist/cli.js +34 -76
- package/dist/drizzle/0094_agent_worktree_lanes.sql +20 -0
- package/dist/drizzle/meta/0094_snapshot.json +7810 -0
- package/dist/drizzle/meta/_journal.json +7 -0
- package/dist/host-cli-pins.json +1 -1
- package/dist/host-install/devchain-host-bootstrap.tgz +0 -0
- package/dist/host-install/pins.json +2 -1
- package/dist/lib/git-owner.js +30 -205
- package/dist/lib/git-shim.js +417 -0
- package/dist/lib/git-supervisor.js +289 -0
- package/dist/lib/host-api-key.js +75 -19
- package/dist/lib/local-api.js +4 -2
- package/dist/lib/local-app-process.js +77 -0
- package/dist/node_modules/@devchain/shared/index.d.ts +1 -0
- package/dist/node_modules/@devchain/shared/index.d.ts.map +1 -1
- package/dist/node_modules/@devchain/shared/index.js +1 -0
- package/dist/node_modules/@devchain/shared/index.js.map +1 -1
- package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.d.ts +510 -5
- package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.d.ts.map +1 -1
- package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.js +55 -0
- package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.js.map +1 -1
- package/dist/node_modules/@devchain/shared/schemas/index.d.ts +1 -0
- package/dist/node_modules/@devchain/shared/schemas/index.d.ts.map +1 -1
- package/dist/node_modules/@devchain/shared/schemas/index.js +1 -0
- package/dist/node_modules/@devchain/shared/schemas/index.js.map +1 -1
- package/dist/node_modules/@devchain/shared/schemas/provider-clis.js +1 -1
- package/dist/node_modules/@devchain/shared/schemas/provider-clis.js.map +1 -1
- package/dist/node_modules/@devchain/shared/schemas/provider-usage.d.ts +350 -0
- package/dist/node_modules/@devchain/shared/schemas/provider-usage.d.ts.map +1 -0
- package/dist/node_modules/@devchain/shared/schemas/provider-usage.js +71 -0
- package/dist/node_modules/@devchain/shared/schemas/provider-usage.js.map +1 -0
- package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
- package/dist/server/app.module.js +4 -0
- package/dist/server/app.module.js.map +1 -1
- package/dist/server/common/config/env.config.d.ts +3 -0
- package/dist/server/common/config/env.config.js +1 -0
- package/dist/server/common/config/env.config.js.map +1 -1
- package/dist/server/common/config/host-image.json +3 -3
- package/dist/server/common/config/vm-destroy-fence.d.ts +18 -0
- package/dist/server/common/config/vm-destroy-fence.js +38 -0
- package/dist/server/common/config/vm-destroy-fence.js.map +1 -0
- package/dist/server/common/errors/error-types.d.ts +3 -0
- package/dist/server/common/errors/error-types.js +10 -1
- package/dist/server/common/errors/error-types.js.map +1 -1
- package/dist/server/common/git-shim-paths.d.ts +5 -0
- package/dist/server/common/git-shim-paths.js +25 -0
- package/dist/server/common/git-shim-paths.js.map +1 -0
- package/dist/server/common/test/fake-bootstrap.server.d.ts +5 -0
- package/dist/server/common/test/fake-bootstrap.server.js +12 -3
- package/dist/server/common/test/fake-bootstrap.server.js.map +1 -1
- package/dist/server/common/test/shared-vm.stub.d.ts +2 -0
- package/dist/server/common/test/shared-vm.stub.js +13 -0
- package/dist/server/common/test/shared-vm.stub.js.map +1 -0
- package/dist/server/main.js +2 -0
- package/dist/server/main.js.map +1 -1
- package/dist/server/modules/cloud-tunnel/cloud-tunnel.module.js +2 -0
- package/dist/server/modules/cloud-tunnel/cloud-tunnel.module.js.map +1 -1
- package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.d.ts +5 -1
- package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.js +11 -2
- package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.js.map +1 -1
- package/dist/server/modules/cloud-tunnel/services/mobile-rpc-contract.generated.d.ts +506 -1
- package/dist/server/modules/cloud-tunnel/services/mobile-rpc-contract.generated.js +56 -1
- package/dist/server/modules/cloud-tunnel/services/mobile-rpc-contract.generated.js.map +1 -1
- package/dist/server/modules/cloud-tunnel/services/mobile-rpc-workspace-access.service.d.ts +1 -0
- package/dist/server/modules/cloud-tunnel/services/mobile-rpc-workspace-access.service.js +1 -0
- package/dist/server/modules/cloud-tunnel/services/mobile-rpc-workspace-access.service.js.map +1 -1
- package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.js +1 -0
- package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.js.map +1 -1
- package/dist/server/modules/events/catalog/broadcast-registry.js +8 -0
- package/dist/server/modules/events/catalog/broadcast-registry.js.map +1 -1
- package/dist/server/modules/events/catalog/index.d.ts +18 -11
- package/dist/server/modules/events/catalog/index.js +3 -0
- package/dist/server/modules/events/catalog/index.js.map +1 -1
- package/dist/server/modules/events/catalog/provider-usage.updated.d.ts +12 -0
- package/dist/server/modules/events/catalog/provider-usage.updated.js +13 -0
- package/dist/server/modules/events/catalog/provider-usage.updated.js.map +1 -0
- package/dist/server/modules/events/catalog/review.comment.created.d.ts +2 -2
- package/dist/server/modules/events/catalog/review.created.d.ts +8 -8
- package/dist/server/modules/file-sync/file-sync.dto.d.ts +18 -0
- package/dist/server/modules/file-sync/file-sync.dto.js +12 -2
- package/dist/server/modules/file-sync/file-sync.dto.js.map +1 -1
- package/dist/server/modules/file-sync/file-sync.module.js +17 -2
- package/dist/server/modules/file-sync/file-sync.module.js.map +1 -1
- package/dist/server/modules/file-sync/file-sync.service.d.ts +4 -0
- package/dist/server/modules/file-sync/file-sync.service.js +35 -0
- package/dist/server/modules/file-sync/file-sync.service.js.map +1 -1
- package/dist/server/modules/file-sync/git-guard.dto.d.ts +0 -21
- package/dist/server/modules/file-sync/git-guard.dto.js +1 -7
- package/dist/server/modules/file-sync/git-guard.dto.js.map +1 -1
- package/dist/server/modules/file-sync/home-git-guard.service.d.ts +3 -0
- package/dist/server/modules/file-sync/home-git-guard.service.js +128 -22
- package/dist/server/modules/file-sync/home-git-guard.service.js.map +1 -1
- package/dist/server/modules/file-sync/host-git-guard.controller.d.ts +3 -1
- package/dist/server/modules/file-sync/host-git-guard.controller.js +11 -5
- package/dist/server/modules/file-sync/host-git-guard.controller.js.map +1 -1
- package/dist/server/modules/file-sync/host-sync.controller.d.ts +11 -7
- package/dist/server/modules/file-sync/host-sync.controller.js +53 -20
- package/dist/server/modules/file-sync/host-sync.controller.js.map +1 -1
- package/dist/server/modules/file-sync/syncthing-launcher.d.ts +1 -0
- package/dist/server/modules/file-sync/syncthing-launcher.js +2 -1
- package/dist/server/modules/file-sync/syncthing-launcher.js.map +1 -1
- package/dist/server/modules/file-sync/testing/fake-file-sync.service.d.ts +2 -1
- package/dist/server/modules/file-sync/testing/fake-file-sync.service.js +6 -0
- package/dist/server/modules/file-sync/testing/fake-file-sync.service.js.map +1 -1
- package/dist/server/modules/git/dtos/git.dto.d.ts +4 -4
- package/dist/server/modules/mcp/dtos/mcp.dto.d.ts +95 -1
- package/dist/server/modules/mcp/dtos/mcp.dto.js +45 -2
- package/dist/server/modules/mcp/dtos/mcp.dto.js.map +1 -1
- package/dist/server/modules/mcp/mcp-full.module.js +2 -0
- package/dist/server/modules/mcp/mcp-full.module.js.map +1 -1
- package/dist/server/modules/mcp/services/handlers/epic-context.d.ts +2 -2
- package/dist/server/modules/mcp/services/handlers/epic-tools.js +16 -0
- package/dist/server/modules/mcp/services/handlers/epic-tools.js.map +1 -1
- package/dist/server/modules/mcp/services/handlers/teams-tools.d.ts +1 -0
- package/dist/server/modules/mcp/services/handlers/teams-tools.js +51 -0
- package/dist/server/modules/mcp/services/handlers/teams-tools.js.map +1 -1
- package/dist/server/modules/mcp/services/handlers/worktree-context.d.ts +6 -0
- package/dist/server/modules/mcp/services/handlers/worktree-context.js +3 -0
- package/dist/server/modules/mcp/services/handlers/worktree-context.js.map +1 -0
- package/dist/server/modules/mcp/services/handlers/worktree-tools.d.ts +7 -0
- package/dist/server/modules/mcp/services/handlers/worktree-tools.js +77 -0
- package/dist/server/modules/mcp/services/handlers/worktree-tools.js.map +1 -0
- package/dist/server/modules/mcp/services/mcp-tool-binding.registry.d.ts +2 -1
- package/dist/server/modules/mcp/services/mcp-tool-binding.registry.js +6 -2
- package/dist/server/modules/mcp/services/mcp-tool-binding.registry.js.map +1 -1
- package/dist/server/modules/mcp/tool-descriptors/binding-types.d.ts +4 -2
- package/dist/server/modules/mcp/tool-descriptors/binding-types.js.map +1 -1
- package/dist/server/modules/mcp/tool-descriptors/epic.metadata.js +2 -2
- package/dist/server/modules/mcp/tool-descriptors/epic.metadata.js.map +1 -1
- package/dist/server/modules/mcp/tool-descriptors/index.js +2 -0
- package/dist/server/modules/mcp/tool-descriptors/index.js.map +1 -1
- package/dist/server/modules/mcp/tool-descriptors/runtime-bindings.js +2 -0
- package/dist/server/modules/mcp/tool-descriptors/runtime-bindings.js.map +1 -1
- package/dist/server/modules/mcp/tool-descriptors/team.bindings.js +1 -0
- package/dist/server/modules/mcp/tool-descriptors/team.bindings.js.map +1 -1
- package/dist/server/modules/mcp/tool-descriptors/team.metadata.js +33 -0
- package/dist/server/modules/mcp/tool-descriptors/team.metadata.js.map +1 -1
- package/dist/server/modules/mcp/tool-descriptors/worktree.bindings.d.ts +1 -0
- package/dist/server/modules/mcp/tool-descriptors/worktree.bindings.js +20 -0
- package/dist/server/modules/mcp/tool-descriptors/worktree.bindings.js.map +1 -0
- package/dist/server/modules/mcp/tool-descriptors/worktree.metadata.d.ts +2 -0
- package/dist/server/modules/mcp/tool-descriptors/worktree.metadata.js +105 -0
- package/dist/server/modules/mcp/tool-descriptors/worktree.metadata.js.map +1 -0
- package/dist/server/modules/provider-auth/opencode-credential-family.v2.d.ts +4 -0
- package/dist/server/modules/provider-auth/opencode-credential-family.v2.js +41 -0
- package/dist/server/modules/provider-auth/opencode-credential-family.v2.js.map +1 -0
- package/dist/server/modules/provider-auth/opencode-credentials.d.ts +25 -0
- package/dist/server/modules/provider-auth/opencode-credentials.js +102 -0
- package/dist/server/modules/provider-auth/opencode-credentials.js.map +1 -0
- package/dist/server/modules/provider-auth/opencode-pc-logins.service.d.ts +11 -0
- package/dist/server/modules/provider-auth/opencode-pc-logins.service.js +62 -0
- package/dist/server/modules/provider-auth/opencode-pc-logins.service.js.map +1 -0
- package/dist/server/modules/provider-auth/opencode-pc-logins.v1.d.ts +1 -0
- package/dist/server/modules/provider-auth/opencode-pc-logins.v1.js +25 -0
- package/dist/server/modules/provider-auth/opencode-pc-logins.v1.js.map +1 -0
- package/dist/server/modules/provider-auth/opencode-pc-logins.v2.d.ts +3 -0
- package/dist/server/modules/provider-auth/opencode-pc-logins.v2.js +25 -0
- package/dist/server/modules/provider-auth/opencode-pc-logins.v2.js.map +1 -0
- package/dist/server/modules/provider-auth/provider-auth-adapters.d.ts +4 -1
- package/dist/server/modules/provider-auth/provider-auth-adapters.js +65 -33
- package/dist/server/modules/provider-auth/provider-auth-adapters.js.map +1 -1
- package/dist/server/modules/provider-auth/provider-auth-generator.service.d.ts +3 -1
- package/dist/server/modules/provider-auth/provider-auth-generator.service.js +12 -6
- package/dist/server/modules/provider-auth/provider-auth-generator.service.js.map +1 -1
- package/dist/server/modules/provider-auth/provider-auth-vault.service.d.ts +3 -2
- package/dist/server/modules/provider-auth/provider-auth-vault.service.js +8 -25
- package/dist/server/modules/provider-auth/provider-auth-vault.service.js.map +1 -1
- package/dist/server/modules/provider-auth/provider-auth-watcher.service.d.ts +5 -1
- package/dist/server/modules/provider-auth/provider-auth-watcher.service.js +32 -1
- package/dist/server/modules/provider-auth/provider-auth-watcher.service.js.map +1 -1
- package/dist/server/modules/provider-auth/provider-auth.module.js +4 -0
- package/dist/server/modules/provider-auth/provider-auth.module.js.map +1 -1
- package/dist/server/modules/provider-usage/checkers/agy.checker.d.ts +15 -0
- package/dist/server/modules/provider-usage/checkers/agy.checker.js +129 -0
- package/dist/server/modules/provider-usage/checkers/agy.checker.js.map +1 -0
- package/dist/server/modules/provider-usage/checkers/checker-helpers.d.ts +4 -0
- package/dist/server/modules/provider-usage/checkers/checker-helpers.js +12 -0
- package/dist/server/modules/provider-usage/checkers/checker-helpers.js.map +1 -0
- package/dist/server/modules/provider-usage/checkers/claude-login.checker.d.ts +10 -0
- package/dist/server/modules/provider-usage/checkers/claude-login.checker.js +92 -0
- package/dist/server/modules/provider-usage/checkers/claude-login.checker.js.map +1 -0
- package/dist/server/modules/provider-usage/checkers/claude-token.checker.d.ts +5 -0
- package/dist/server/modules/provider-usage/checkers/claude-token.checker.js +80 -0
- package/dist/server/modules/provider-usage/checkers/claude-token.checker.js.map +1 -0
- package/dist/server/modules/provider-usage/checkers/claude-usage-parser.d.ts +12 -0
- package/dist/server/modules/provider-usage/checkers/claude-usage-parser.js +113 -0
- package/dist/server/modules/provider-usage/checkers/claude-usage-parser.js.map +1 -0
- package/dist/server/modules/provider-usage/checkers/codex.checker.d.ts +7 -0
- package/dist/server/modules/provider-usage/checkers/codex.checker.js +159 -0
- package/dist/server/modules/provider-usage/checkers/codex.checker.js.map +1 -0
- package/dist/server/modules/provider-usage/checkers/private-cwd.d.ts +1 -0
- package/dist/server/modules/provider-usage/checkers/private-cwd.js +8 -0
- package/dist/server/modules/provider-usage/checkers/private-cwd.js.map +1 -0
- package/dist/server/modules/provider-usage/controllers/provider-usage.controller.d.ts +7 -0
- package/dist/server/modules/provider-usage/controllers/provider-usage.controller.js +51 -0
- package/dist/server/modules/provider-usage/controllers/provider-usage.controller.js.map +1 -0
- package/dist/server/modules/provider-usage/provider-usage.module.d.ts +2 -0
- package/dist/server/modules/provider-usage/provider-usage.module.js +58 -0
- package/dist/server/modules/provider-usage/provider-usage.module.js.map +1 -0
- package/dist/server/modules/provider-usage/provider-usage.types.d.ts +26 -0
- package/dist/server/modules/provider-usage/provider-usage.types.js +5 -0
- package/dist/server/modules/provider-usage/provider-usage.types.js.map +1 -0
- package/dist/server/modules/provider-usage/services/provider-usage-accounts.d.ts +5 -0
- package/dist/server/modules/provider-usage/services/provider-usage-accounts.js +94 -0
- package/dist/server/modules/provider-usage/services/provider-usage-accounts.js.map +1 -0
- package/dist/server/modules/provider-usage/services/provider-usage-accounts.service.d.ts +23 -0
- package/dist/server/modules/provider-usage/services/provider-usage-accounts.service.js +81 -0
- package/dist/server/modules/provider-usage/services/provider-usage-accounts.service.js.map +1 -0
- package/dist/server/modules/provider-usage/services/provider-usage.service.d.ts +37 -0
- package/dist/server/modules/provider-usage/services/provider-usage.service.js +262 -0
- package/dist/server/modules/provider-usage/services/provider-usage.service.js.map +1 -0
- package/dist/server/modules/providers/adapters/capabilities/index.d.ts +2 -2
- package/dist/server/modules/providers/adapters/capabilities/index.js +2 -1
- package/dist/server/modules/providers/adapters/capabilities/index.js.map +1 -1
- package/dist/server/modules/providers/adapters/capabilities/provider-plugin.capability.d.ts +16 -2
- package/dist/server/modules/providers/adapters/capabilities/session-command.capability.d.ts +5 -0
- package/dist/server/modules/providers/adapters/capabilities/session-command.capability.js +3 -0
- package/dist/server/modules/providers/adapters/capabilities/session-command.capability.js.map +1 -0
- package/dist/server/modules/providers/adapters/capabilities/type-guards.d.ts +4 -1
- package/dist/server/modules/providers/adapters/capabilities/type-guards.js +5 -3
- package/dist/server/modules/providers/adapters/capabilities/type-guards.js.map +1 -1
- package/dist/server/modules/providers/adapters/claude.adapter.d.ts +6 -3
- package/dist/server/modules/providers/adapters/claude.adapter.js +7 -2
- package/dist/server/modules/providers/adapters/claude.adapter.js.map +1 -1
- package/dist/server/modules/providers/adapters/codex.adapter.d.ts +6 -6
- package/dist/server/modules/providers/adapters/codex.adapter.js +47 -41
- package/dist/server/modules/providers/adapters/codex.adapter.js.map +1 -1
- package/dist/server/modules/providers/adapters/opencode-cli-version.d.ts +13 -0
- package/dist/server/modules/providers/adapters/opencode-cli-version.js +24 -0
- package/dist/server/modules/providers/adapters/opencode-cli-version.js.map +1 -0
- package/dist/server/modules/providers/adapters/opencode-config-content.d.ts +1 -0
- package/dist/server/modules/providers/adapters/opencode-config-content.js +43 -0
- package/dist/server/modules/providers/adapters/opencode-config-content.js.map +1 -0
- package/dist/server/modules/providers/adapters/opencode-launch.v1.d.ts +4 -0
- package/dist/server/modules/providers/adapters/opencode-launch.v1.js +10 -0
- package/dist/server/modules/providers/adapters/opencode-launch.v1.js.map +1 -0
- package/dist/server/modules/providers/adapters/opencode-launch.v2.d.ts +2 -0
- package/dist/server/modules/providers/adapters/opencode-launch.v2.js +18 -0
- package/dist/server/modules/providers/adapters/opencode-launch.v2.js.map +1 -0
- package/dist/server/modules/providers/adapters/opencode.adapter.d.ts +3 -4
- package/dist/server/modules/providers/adapters/opencode.adapter.js +11 -42
- package/dist/server/modules/providers/adapters/opencode.adapter.js.map +1 -1
- package/dist/server/modules/providers/adapters/plugin-catalog.utils.d.ts +3 -0
- package/dist/server/modules/providers/adapters/plugin-catalog.utils.js +10 -0
- package/dist/server/modules/providers/adapters/plugin-catalog.utils.js.map +1 -1
- package/dist/server/modules/providers/adapters/provider-adapter.interface.d.ts +9 -3
- package/dist/server/modules/providers/adapters/provider-cli-policy.d.ts +3 -0
- package/dist/server/modules/providers/adapters/provider-cli-policy.js +8 -0
- package/dist/server/modules/providers/adapters/provider-cli-policy.js.map +1 -1
- package/dist/server/modules/providers/controllers/provider-models.controller.d.ts +3 -1
- package/dist/server/modules/providers/controllers/provider-models.controller.js +18 -3
- package/dist/server/modules/providers/controllers/provider-models.controller.js.map +1 -1
- package/dist/server/modules/providers/providers.module.js +5 -0
- package/dist/server/modules/providers/providers.module.js.map +1 -1
- package/dist/server/modules/providers/services/codex-app-server.client.d.ts +11 -0
- package/dist/server/modules/providers/services/codex-app-server.client.js +129 -0
- package/dist/server/modules/providers/services/codex-app-server.client.js.map +1 -0
- package/dist/server/modules/providers/services/provider-cli-version-probe.module.d.ts +2 -0
- package/dist/server/modules/providers/services/provider-cli-version-probe.module.js +23 -0
- package/dist/server/modules/providers/services/provider-cli-version-probe.module.js.map +1 -0
- package/dist/server/modules/providers/services/provider-cli-version-probe.service.d.ts +8 -0
- package/dist/server/modules/providers/services/provider-cli-version-probe.service.js +65 -0
- package/dist/server/modules/providers/services/provider-cli-version-probe.service.js.map +1 -0
- package/dist/server/modules/providers/services/provider-plugins.service.d.ts +5 -1
- package/dist/server/modules/providers/services/provider-plugins.service.js +43 -16
- package/dist/server/modules/providers/services/provider-plugins.service.js.map +1 -1
- package/dist/server/modules/providers/utils/codex-config.d.ts +9 -0
- package/dist/server/modules/providers/utils/codex-config.js +34 -16
- package/dist/server/modules/providers/utils/codex-config.js.map +1 -1
- package/dist/server/modules/providers/utils/private-cwd.d.ts +1 -0
- package/dist/server/modules/providers/utils/private-cwd.js +12 -0
- package/dist/server/modules/providers/utils/private-cwd.js.map +1 -0
- package/dist/server/modules/remotes/contract/host-routes.d.ts +2180 -35
- package/dist/server/modules/remotes/contract/host-routes.js +168 -16
- package/dist/server/modules/remotes/contract/host-routes.js.map +1 -1
- package/dist/server/modules/remotes/controllers/home-shared-vm-notices.controller.d.ts +10 -0
- package/dist/server/modules/remotes/controllers/home-shared-vm-notices.controller.js +59 -0
- package/dist/server/modules/remotes/controllers/home-shared-vm-notices.controller.js.map +1 -0
- package/dist/server/modules/remotes/controllers/remotes.controller.js +1 -0
- package/dist/server/modules/remotes/controllers/remotes.controller.js.map +1 -1
- package/dist/server/modules/remotes/dtos/remote-notices.dto.d.ts +4 -0
- package/dist/server/modules/remotes/dtos/remote-notices.dto.js +3 -0
- package/dist/server/modules/remotes/dtos/remote-notices.dto.js.map +1 -0
- package/dist/server/modules/remotes/dtos/remote.dto.d.ts +2 -0
- package/dist/server/modules/remotes/dtos/remote.dto.js.map +1 -1
- package/dist/server/modules/remotes/dtos/shared-vm.dto.d.ts +488 -0
- package/dist/server/modules/remotes/dtos/shared-vm.dto.js +60 -0
- package/dist/server/modules/remotes/dtos/shared-vm.dto.js.map +1 -0
- package/dist/server/modules/remotes/git-coordinator/git-checkpoint.d.ts +5 -0
- package/dist/server/modules/remotes/git-coordinator/git-checkpoint.js +95 -0
- package/dist/server/modules/remotes/git-coordinator/git-checkpoint.js.map +1 -0
- package/dist/server/modules/remotes/git-coordinator/git-coordinator-index.service.d.ts +18 -0
- package/dist/server/modules/remotes/git-coordinator/git-coordinator-index.service.js +192 -0
- package/dist/server/modules/remotes/git-coordinator/git-coordinator-index.service.js.map +1 -0
- package/dist/server/modules/remotes/git-coordinator/git-coordinator.dto.d.ts +519 -0
- package/dist/server/modules/remotes/git-coordinator/git-coordinator.dto.js +104 -0
- package/dist/server/modules/remotes/git-coordinator/git-coordinator.dto.js.map +1 -0
- package/dist/server/modules/remotes/git-coordinator/git-coordinator.service.d.ts +66 -0
- package/dist/server/modules/remotes/git-coordinator/git-coordinator.service.js +555 -0
- package/dist/server/modules/remotes/git-coordinator/git-coordinator.service.js.map +1 -0
- package/dist/server/modules/remotes/git-coordinator/git-coordinator.store.d.ts +11 -0
- package/dist/server/modules/remotes/git-coordinator/git-coordinator.store.js +69 -0
- package/dist/server/modules/remotes/git-coordinator/git-coordinator.store.js.map +1 -0
- package/dist/server/modules/remotes/git-coordinator/git-process-identity.d.ts +3 -0
- package/dist/server/modules/remotes/git-coordinator/git-process-identity.js +71 -0
- package/dist/server/modules/remotes/git-coordinator/git-process-identity.js.map +1 -0
- package/dist/server/modules/remotes/git-coordinator/host-git-coordinator.controller.d.ts +19 -0
- package/dist/server/modules/remotes/git-coordinator/host-git-coordinator.controller.js +181 -0
- package/dist/server/modules/remotes/git-coordinator/host-git-coordinator.controller.js.map +1 -0
- package/dist/server/modules/remotes/git-coordinator/loopback.d.ts +2 -0
- package/dist/server/modules/remotes/git-coordinator/loopback.js +10 -0
- package/dist/server/modules/remotes/git-coordinator/loopback.js.map +1 -0
- package/dist/server/modules/remotes/git-coordinator/vm-git-coordinator.controller.d.ts +9 -0
- package/dist/server/modules/remotes/git-coordinator/vm-git-coordinator.controller.js +66 -0
- package/dist/server/modules/remotes/git-coordinator/vm-git-coordinator.controller.js.map +1 -0
- package/dist/server/modules/remotes/git-owner.store.d.ts +102 -1
- package/dist/server/modules/remotes/git-owner.store.js +37 -11
- package/dist/server/modules/remotes/git-owner.store.js.map +1 -1
- package/dist/server/modules/remotes/git-shim/git-shim-registry.service.d.ts +30 -0
- package/dist/server/modules/remotes/git-shim/git-shim-registry.service.js +175 -0
- package/dist/server/modules/remotes/git-shim/git-shim-registry.service.js.map +1 -0
- package/dist/server/modules/remotes/git-writes/change-barrier.d.ts +16 -0
- package/dist/server/modules/remotes/git-writes/change-barrier.js +40 -0
- package/dist/server/modules/remotes/git-writes/change-barrier.js.map +1 -0
- package/dist/server/modules/remotes/git-writes/home-git-handover.service.d.ts +42 -0
- package/dist/server/modules/remotes/git-writes/home-git-handover.service.js +349 -0
- package/dist/server/modules/remotes/git-writes/home-git-handover.service.js.map +1 -0
- package/dist/server/modules/remotes/git-writes/home-git-transitions.d.ts +16 -0
- package/dist/server/modules/remotes/git-writes/home-git-transitions.js +12 -0
- package/dist/server/modules/remotes/git-writes/home-git-transitions.js.map +1 -0
- package/dist/server/modules/remotes/git-writes/home-git-write.controller.d.ts +10 -0
- package/dist/server/modules/remotes/git-writes/home-git-write.controller.js +74 -0
- package/dist/server/modules/remotes/git-writes/home-git-write.controller.js.map +1 -0
- package/dist/server/modules/remotes/git-writes/home-git-write.service.d.ts +72 -0
- package/dist/server/modules/remotes/git-writes/home-git-write.service.js +481 -0
- package/dist/server/modules/remotes/git-writes/home-git-write.service.js.map +1 -0
- package/dist/server/modules/remotes/git-writes/home-git-write.store.d.ts +39 -0
- package/dist/server/modules/remotes/git-writes/home-git-write.store.js +78 -0
- package/dist/server/modules/remotes/git-writes/home-git-write.store.js.map +1 -0
- package/dist/server/modules/remotes/host/host-helper.dto.d.ts +4 -0
- package/dist/server/modules/remotes/host/host-helper.dto.js +14 -1
- package/dist/server/modules/remotes/host/host-helper.dto.js.map +1 -1
- package/dist/server/modules/remotes/host/host-helper.service.d.ts +5 -1
- package/dist/server/modules/remotes/host/host-helper.service.js +9 -3
- package/dist/server/modules/remotes/host/host-helper.service.js.map +1 -1
- package/dist/server/modules/remotes/host/host-opencode-credentials.v2.d.ts +7 -0
- package/dist/server/modules/remotes/host/host-opencode-credentials.v2.js +46 -0
- package/dist/server/modules/remotes/host/host-opencode-credentials.v2.js.map +1 -0
- package/dist/server/modules/remotes/host/host-provider-auth.service.d.ts +11 -2
- package/dist/server/modules/remotes/host/host-provider-auth.service.js +92 -14
- package/dist/server/modules/remotes/host/host-provider-auth.service.js.map +1 -1
- package/dist/server/modules/remotes/host/host-provider-usage-revision.d.ts +2 -0
- package/dist/server/modules/remotes/host/host-provider-usage-revision.js +11 -0
- package/dist/server/modules/remotes/host/host-provider-usage-revision.js.map +1 -0
- package/dist/server/modules/remotes/host/host-provider-usage-settings.controller.d.ts +11 -0
- package/dist/server/modules/remotes/host/host-provider-usage-settings.controller.js +62 -0
- package/dist/server/modules/remotes/host/host-provider-usage-settings.controller.js.map +1 -0
- package/dist/server/modules/remotes/host/host-provider-usage-settings.service.d.ts +9 -0
- package/dist/server/modules/remotes/host/host-provider-usage-settings.service.js +35 -0
- package/dist/server/modules/remotes/host/host-provider-usage-settings.service.js.map +1 -0
- package/dist/server/modules/remotes/host/host-shared-vm.controller.d.ts +24 -0
- package/dist/server/modules/remotes/host/host-shared-vm.controller.js +183 -0
- package/dist/server/modules/remotes/host/host-shared-vm.controller.js.map +1 -0
- package/dist/server/modules/remotes/host/host-shared-vm.service.d.ts +28 -0
- package/dist/server/modules/remotes/host/host-shared-vm.service.js +159 -0
- package/dist/server/modules/remotes/host/host-shared-vm.service.js.map +1 -0
- package/dist/server/modules/remotes/host/host-shared-vm.store.d.ts +18 -0
- package/dist/server/modules/remotes/host/host-shared-vm.store.js +105 -0
- package/dist/server/modules/remotes/host/host-shared-vm.store.js.map +1 -0
- package/dist/server/modules/remotes/host/host-update.controller.js +3 -3
- package/dist/server/modules/remotes/host/host-update.controller.js.map +1 -1
- package/dist/server/modules/remotes/host/host.service.d.ts +3 -1
- package/dist/server/modules/remotes/host/host.service.js +9 -2
- package/dist/server/modules/remotes/host/host.service.js.map +1 -1
- package/dist/server/modules/remotes/host/shared-vm.contract.d.ts +184 -0
- package/dist/server/modules/remotes/host/shared-vm.contract.js +44 -0
- package/dist/server/modules/remotes/host/shared-vm.contract.js.map +1 -0
- package/dist/server/modules/remotes/host-install/host-install-block.d.ts +2 -0
- package/dist/server/modules/remotes/host-install/host-install-block.js +3 -2
- package/dist/server/modules/remotes/host-install/host-install-block.js.map +1 -1
- package/dist/server/modules/remotes/host-install/host-install.service.d.ts +2 -0
- package/dist/server/modules/remotes/host-install/host-install.service.js +10 -0
- package/dist/server/modules/remotes/host-install/host-install.service.js.map +1 -1
- package/dist/server/modules/remotes/host-install/host-join-block.d.ts +16 -0
- package/dist/server/modules/remotes/host-install/host-join-block.js +122 -0
- package/dist/server/modules/remotes/host-install/host-join-block.js.map +1 -0
- package/dist/server/modules/remotes/host-install/ssh-runner.d.ts +1 -0
- package/dist/server/modules/remotes/host-install/ssh-runner.js +2 -2
- package/dist/server/modules/remotes/host-install/ssh-runner.js.map +1 -1
- package/dist/server/modules/remotes/operations/attach.operation.d.ts +9 -2
- package/dist/server/modules/remotes/operations/attach.operation.js +38 -11
- package/dist/server/modules/remotes/operations/attach.operation.js.map +1 -1
- package/dist/server/modules/remotes/operations/claim.operation.d.ts +4 -0
- package/dist/server/modules/remotes/operations/claim.operation.js +15 -0
- package/dist/server/modules/remotes/operations/claim.operation.js.map +1 -1
- package/dist/server/modules/remotes/operations/claude-user-instructions.d.ts +2 -0
- package/dist/server/modules/remotes/operations/claude-user-instructions.js +23 -0
- package/dist/server/modules/remotes/operations/claude-user-instructions.js.map +1 -0
- package/dist/server/modules/remotes/operations/destroy-vm.operation.d.ts +4 -2
- package/dist/server/modules/remotes/operations/destroy-vm.operation.js +43 -23
- package/dist/server/modules/remotes/operations/destroy-vm.operation.js.map +1 -1
- package/dist/server/modules/remotes/operations/detach.operation.d.ts +12 -1
- package/dist/server/modules/remotes/operations/detach.operation.js +106 -29
- package/dist/server/modules/remotes/operations/detach.operation.js.map +1 -1
- package/dist/server/modules/remotes/operations/disconnect-all.operation.d.ts +50 -0
- package/dist/server/modules/remotes/operations/disconnect-all.operation.js +222 -0
- package/dist/server/modules/remotes/operations/disconnect-all.operation.js.map +1 -0
- package/dist/server/modules/remotes/operations/file-sync-handoff.d.ts +3 -1
- package/dist/server/modules/remotes/operations/file-sync-handoff.js +69 -68
- package/dist/server/modules/remotes/operations/file-sync-handoff.js.map +1 -1
- package/dist/server/modules/remotes/operations/git-owner.dto.d.ts +10 -44
- package/dist/server/modules/remotes/operations/git-owner.dto.js +1 -12
- package/dist/server/modules/remotes/operations/git-owner.dto.js.map +1 -1
- package/dist/server/modules/remotes/operations/guarded-vm-destroy.d.ts +2 -0
- package/dist/server/modules/remotes/operations/guarded-vm-destroy.js +14 -0
- package/dist/server/modules/remotes/operations/guarded-vm-destroy.js.map +1 -1
- package/dist/server/modules/remotes/operations/install-host.operation.d.ts +21 -1
- package/dist/server/modules/remotes/operations/install-host.operation.js +285 -27
- package/dist/server/modules/remotes/operations/install-host.operation.js.map +1 -1
- package/dist/server/modules/remotes/operations/remote-host.client.d.ts +51 -12
- package/dist/server/modules/remotes/operations/remote-host.client.js +129 -23
- package/dist/server/modules/remotes/operations/remote-host.client.js.map +1 -1
- package/dist/server/modules/remotes/operations/remote-operation.dto.d.ts +161 -0
- package/dist/server/modules/remotes/operations/remote-operation.dto.js +12 -1
- package/dist/server/modules/remotes/operations/remote-operation.dto.js.map +1 -1
- package/dist/server/modules/remotes/operations/remote-operation.runner.d.ts +4 -2
- package/dist/server/modules/remotes/operations/remote-operation.runner.js +53 -9
- package/dist/server/modules/remotes/operations/remote-operation.runner.js.map +1 -1
- package/dist/server/modules/remotes/operations/remote-operation.types.d.ts +6 -3
- package/dist/server/modules/remotes/operations/remote-operation.types.js +10 -1
- package/dist/server/modules/remotes/operations/remote-operation.types.js.map +1 -1
- package/dist/server/modules/remotes/operations/remote-operations.controller.d.ts +2 -3
- package/dist/server/modules/remotes/operations/remote-operations.controller.js +20 -25
- package/dist/server/modules/remotes/operations/remote-operations.controller.js.map +1 -1
- package/dist/server/modules/remotes/operations/remote-operations.service.d.ts +11 -9
- package/dist/server/modules/remotes/operations/remote-operations.service.js +123 -118
- package/dist/server/modules/remotes/operations/remote-operations.service.js.map +1 -1
- package/dist/server/modules/remotes/operations/remote-worktree-guard.d.ts +16 -0
- package/dist/server/modules/remotes/operations/remote-worktree-guard.js +100 -0
- package/dist/server/modules/remotes/operations/remote-worktree-guard.js.map +1 -0
- package/dist/server/modules/remotes/operations/reset-vm.operation.d.ts +15 -2
- package/dist/server/modules/remotes/operations/reset-vm.operation.js +115 -15
- package/dist/server/modules/remotes/operations/reset-vm.operation.js.map +1 -1
- package/dist/server/modules/remotes/operations/update-host.operation.d.ts +2 -0
- package/dist/server/modules/remotes/operations/update-host.operation.js +11 -5
- package/dist/server/modules/remotes/operations/update-host.operation.js.map +1 -1
- package/dist/server/modules/remotes/operations/vm-operations.controller.d.ts +5 -1
- package/dist/server/modules/remotes/operations/vm-operations.controller.js +36 -2
- package/dist/server/modules/remotes/operations/vm-operations.controller.js.map +1 -1
- package/dist/server/modules/remotes/operations/vm-operations.dto.d.ts +150 -0
- package/dist/server/modules/remotes/operations/vm-operations.dto.js +9 -1
- package/dist/server/modules/remotes/operations/vm-operations.dto.js.map +1 -1
- package/dist/server/modules/remotes/operations/vm-operations.service.d.ts +3 -1
- package/dist/server/modules/remotes/operations/vm-operations.service.js +38 -15
- package/dist/server/modules/remotes/operations/vm-operations.service.js.map +1 -1
- package/dist/server/modules/remotes/ports/remote-health.port.d.ts +2 -0
- package/dist/server/modules/remotes/ports/remote-health.port.js.map +1 -1
- package/dist/server/modules/remotes/remotes.module.js +47 -2
- package/dist/server/modules/remotes/remotes.module.js.map +1 -1
- package/dist/server/modules/remotes/services/home-shared-vm-notices.service.d.ts +18 -0
- package/dist/server/modules/remotes/services/home-shared-vm-notices.service.js +81 -0
- package/dist/server/modules/remotes/services/home-shared-vm-notices.service.js.map +1 -0
- package/dist/server/modules/remotes/services/remote-forced-detach.service.d.ts +11 -0
- package/dist/server/modules/remotes/services/remote-forced-detach.service.js +69 -0
- package/dist/server/modules/remotes/services/remote-forced-detach.service.js.map +1 -0
- package/dist/server/modules/remotes/services/remote-forced-detach.store.d.ts +23 -0
- package/dist/server/modules/remotes/services/remote-forced-detach.store.js +73 -0
- package/dist/server/modules/remotes/services/remote-forced-detach.store.js.map +1 -0
- package/dist/server/modules/remotes/services/remote-health.service.d.ts +7 -1
- package/dist/server/modules/remotes/services/remote-health.service.js +41 -4
- package/dist/server/modules/remotes/services/remote-health.service.js.map +1 -1
- package/dist/server/modules/remotes/services/remote-provider-usage-settings.service.d.ts +13 -0
- package/dist/server/modules/remotes/services/remote-provider-usage-settings.service.js +57 -0
- package/dist/server/modules/remotes/services/remote-provider-usage-settings.service.js.map +1 -0
- package/dist/server/modules/remotes/services/remote-shared-vm.service.d.ts +37 -0
- package/dist/server/modules/remotes/services/remote-shared-vm.service.js +184 -0
- package/dist/server/modules/remotes/services/remote-shared-vm.service.js.map +1 -0
- package/dist/server/modules/remotes/services/remote-shared-vm.store.d.ts +11 -0
- package/dist/server/modules/remotes/services/remote-shared-vm.store.js +75 -0
- package/dist/server/modules/remotes/services/remote-shared-vm.store.js.map +1 -0
- package/dist/server/modules/remotes/sync/remote-file-sync.service.d.ts +5 -1
- package/dist/server/modules/remotes/sync/remote-file-sync.service.js +95 -41
- package/dist/server/modules/remotes/sync/remote-file-sync.service.js.map +1 -1
- package/dist/server/modules/remotes/time/project-time-settler.dto.d.ts +2 -2
- package/dist/server/modules/remotes/transport/host-transport.d.ts +2 -0
- package/dist/server/modules/remotes/transport/host-transport.js +7 -0
- package/dist/server/modules/remotes/transport/host-transport.js.map +1 -1
- package/dist/server/modules/reviews/dtos/review.dto.d.ts +2 -2
- package/dist/server/modules/runtime-context-capture/codex-plugin-profile-materializer.service.d.ts +5 -1
- package/dist/server/modules/runtime-context-capture/codex-plugin-profile-materializer.service.js +25 -5
- package/dist/server/modules/runtime-context-capture/codex-plugin-profile-materializer.service.js.map +1 -1
- package/dist/server/modules/session-reader/__fixtures__/opencode-fixture-db.d.ts +6 -4
- package/dist/server/modules/session-reader/__fixtures__/opencode-fixture-db.js +17 -20
- package/dist/server/modules/session-reader/__fixtures__/opencode-fixture-db.js.map +1 -1
- package/dist/server/modules/session-reader/__fixtures__/opencode-v2-fixture-db.d.ts +61 -0
- package/dist/server/modules/session-reader/__fixtures__/opencode-v2-fixture-db.js +250 -0
- package/dist/server/modules/session-reader/__fixtures__/opencode-v2-fixture-db.js.map +1 -0
- package/dist/server/modules/session-reader/adapters/codex-session-reader.adapter.d.ts +1 -0
- package/dist/server/modules/session-reader/adapters/codex-session-reader.adapter.js +1 -0
- package/dist/server/modules/session-reader/adapters/codex-session-reader.adapter.js.map +1 -1
- package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.d.ts +3 -1
- package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.js +34 -13
- package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.js.map +1 -1
- package/dist/server/modules/session-reader/adapters/session-reader-adapter.interface.d.ts +1 -0
- package/dist/server/modules/session-reader/data/pricing.json +302 -61
- package/dist/server/modules/session-reader/readers/opencode-sqlite.db.d.ts +73 -0
- package/dist/server/modules/session-reader/readers/opencode-sqlite.db.js +176 -0
- package/dist/server/modules/session-reader/readers/opencode-sqlite.db.js.map +1 -0
- package/dist/server/modules/session-reader/readers/opencode-sqlite.v1.reader.d.ts +45 -0
- package/dist/server/modules/session-reader/readers/{opencode-sqlite.reader.js → opencode-sqlite.v1.reader.js} +171 -164
- package/dist/server/modules/session-reader/readers/opencode-sqlite.v1.reader.js.map +1 -0
- package/dist/server/modules/session-reader/readers/opencode-sqlite.v2.reader.d.ts +15 -0
- package/dist/server/modules/session-reader/readers/opencode-sqlite.v2.reader.js +474 -0
- package/dist/server/modules/session-reader/readers/opencode-sqlite.v2.reader.js.map +1 -0
- package/dist/server/modules/session-reader/services/pricing.interface.d.ts +1 -0
- package/dist/server/modules/session-reader/services/pricing.interface.js.map +1 -1
- package/dist/server/modules/session-reader/services/pricing.service.d.ts +1 -0
- package/dist/server/modules/session-reader/services/pricing.service.js +3 -0
- package/dist/server/modules/session-reader/services/pricing.service.js.map +1 -1
- package/dist/server/modules/session-reader/services/session-reader.service.js +6 -1
- package/dist/server/modules/session-reader/services/session-reader.service.js.map +1 -1
- package/dist/server/modules/sessions/services/message-enqueue.service.d.ts +3 -0
- package/dist/server/modules/sessions/services/message-enqueue.service.js +1 -0
- package/dist/server/modules/sessions/services/message-enqueue.service.js.map +1 -1
- package/dist/server/modules/sessions/services/message-pool.types.d.ts +6 -0
- package/dist/server/modules/sessions/services/message-pool.types.js +6 -1
- package/dist/server/modules/sessions/services/message-pool.types.js.map +1 -1
- package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.d.ts +2 -0
- package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.js +18 -1
- package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.js.map +1 -1
- package/dist/server/modules/sessions/services/provider-runtime-preparation/launch-script.d.ts +5 -0
- package/dist/server/modules/sessions/services/provider-runtime-preparation/launch-script.js +37 -0
- package/dist/server/modules/sessions/services/provider-runtime-preparation/launch-script.js.map +1 -0
- package/dist/server/modules/sessions/services/provider-runtime-preparation/provider-runtime-preparation.service.d.ts +8 -1
- package/dist/server/modules/sessions/services/provider-runtime-preparation/provider-runtime-preparation.service.js +50 -2
- package/dist/server/modules/sessions/services/provider-runtime-preparation/provider-runtime-preparation.service.js.map +1 -1
- package/dist/server/modules/sessions/services/provider-runtime-preparation/provider-runtime-preparation.types.d.ts +1 -0
- package/dist/server/modules/sessions/services/session-lifecycle-facade.service.d.ts +7 -2
- package/dist/server/modules/sessions/services/session-lifecycle-facade.service.js +4 -4
- package/dist/server/modules/sessions/services/session-lifecycle-facade.service.js.map +1 -1
- package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.d.ts +2 -0
- package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js +2 -0
- package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js.map +1 -1
- package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js +6 -7
- package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js.map +1 -1
- package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js +1 -2
- package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js.map +1 -1
- package/dist/server/modules/sessions/services/sessions-message-pool.service.d.ts +1 -0
- package/dist/server/modules/sessions/services/sessions-message-pool.service.js +30 -0
- package/dist/server/modules/sessions/services/sessions-message-pool.service.js.map +1 -1
- package/dist/server/modules/sessions/sessions.module.js +15 -0
- package/dist/server/modules/sessions/sessions.module.js.map +1 -1
- package/dist/server/modules/settings/dtos/settings.dto.d.ts +33 -0
- package/dist/server/modules/settings/dtos/settings.dto.js +2 -0
- package/dist/server/modules/settings/dtos/settings.dto.js.map +1 -1
- package/dist/server/modules/settings/local/delegates/core-settings.delegate.d.ts +3 -0
- package/dist/server/modules/settings/local/delegates/core-settings.delegate.js +35 -0
- package/dist/server/modules/settings/local/delegates/core-settings.delegate.js.map +1 -1
- package/dist/server/modules/settings/local/delegates/provider-cli-settings.delegate.js +6 -1
- package/dist/server/modules/settings/local/delegates/provider-cli-settings.delegate.js.map +1 -1
- package/dist/server/modules/settings/services/settings.service.d.ts +2 -1
- package/dist/server/modules/settings/services/settings.service.js +3 -0
- package/dist/server/modules/settings/services/settings.service.js.map +1 -1
- package/dist/server/modules/storage/db/schema.d.ts +235 -0
- package/dist/server/modules/storage/db/schema.js +22 -1
- package/dist/server/modules/storage/db/schema.js.map +1 -1
- package/dist/server/modules/storage/interfaces/storage.interface.d.ts +10 -2
- package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
- package/dist/server/modules/storage/local/delegates/project-replica.delegate.js +7 -0
- package/dist/server/modules/storage/local/delegates/project-replica.delegate.js.map +1 -1
- package/dist/server/modules/storage/local/delegates/worktree.delegate.d.ts +14 -0
- package/dist/server/modules/storage/local/delegates/worktree.delegate.js +89 -0
- package/dist/server/modules/storage/local/delegates/worktree.delegate.js.map +1 -0
- package/dist/server/modules/storage/local/helpers/host-abandoned-projects.d.ts +5 -0
- package/dist/server/modules/storage/local/helpers/host-abandoned-projects.js +39 -0
- package/dist/server/modules/storage/local/helpers/host-abandoned-projects.js.map +1 -0
- package/dist/server/modules/storage/local/local-storage.service.js +2 -0
- package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
- package/dist/server/modules/storage/local/storage-routes.d.ts +26 -0
- package/dist/server/modules/storage/local/storage-routes.js +9 -0
- package/dist/server/modules/storage/local/storage-routes.js.map +1 -1
- package/dist/server/modules/storage/models/domain.models.d.ts +20 -1
- package/dist/server/modules/storage/models/domain.models.js +1 -0
- package/dist/server/modules/storage/models/domain.models.js.map +1 -1
- package/dist/server/modules/storage/write-gate/storage-write-scope.d.ts +1 -0
- package/dist/server/modules/storage/write-gate/storage-write-scope.js +1 -0
- package/dist/server/modules/storage/write-gate/storage-write-scope.js.map +1 -1
- package/dist/server/modules/teams/services/teams.service.d.ts +46 -6
- package/dist/server/modules/teams/services/teams.service.js +129 -8
- package/dist/server/modules/teams/services/teams.service.js.map +1 -1
- package/dist/server/modules/teams/teams.module.js +14 -1
- package/dist/server/modules/teams/teams.module.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-io/delivery.d.ts +2 -2
- package/dist/server/modules/terminal/services/terminal-io/delivery.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.d.ts +1 -1
- package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.js +6 -1
- package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.js.map +1 -1
- package/dist/server/modules/vm-providers/proxmox-vm.provider.d.ts +1 -0
- package/dist/server/modules/vm-providers/proxmox-vm.provider.js +17 -0
- package/dist/server/modules/vm-providers/proxmox-vm.provider.js.map +1 -1
- package/dist/server/modules/worktrees/git-output.d.ts +5 -0
- package/dist/server/modules/worktrees/git-output.js +53 -0
- package/dist/server/modules/worktrees/git-output.js.map +1 -0
- package/dist/server/modules/worktrees/host-worktrees.controller.d.ts +10 -0
- package/dist/server/modules/worktrees/host-worktrees.controller.js +59 -0
- package/dist/server/modules/worktrees/host-worktrees.controller.js.map +1 -0
- package/dist/server/modules/worktrees/host-worktrees.dto.d.ts +40 -0
- package/dist/server/modules/worktrees/host-worktrees.dto.js +9 -0
- package/dist/server/modules/worktrees/host-worktrees.dto.js.map +1 -0
- package/dist/server/modules/worktrees/project-git-mutex.d.ts +5 -0
- package/dist/server/modules/worktrees/project-git-mutex.js +38 -0
- package/dist/server/modules/worktrees/project-git-mutex.js.map +1 -0
- package/dist/server/modules/worktrees/worktree-admission.service.d.ts +15 -0
- package/dist/server/modules/worktrees/worktree-admission.service.js +87 -0
- package/dist/server/modules/worktrees/worktree-admission.service.js.map +1 -0
- package/dist/server/modules/worktrees/worktree-git-runner.d.ts +12 -0
- package/dist/server/modules/worktrees/worktree-git-runner.js +57 -0
- package/dist/server/modules/worktrees/worktree-git-runner.js.map +1 -0
- package/dist/server/modules/worktrees/worktrees.errors.d.ts +5 -0
- package/dist/server/modules/worktrees/worktrees.errors.js +11 -0
- package/dist/server/modules/worktrees/worktrees.errors.js.map +1 -0
- package/dist/server/modules/worktrees/worktrees.module.d.ts +2 -0
- package/dist/server/modules/worktrees/worktrees.module.js +37 -0
- package/dist/server/modules/worktrees/worktrees.module.js.map +1 -0
- package/dist/server/modules/worktrees/worktrees.service.d.ts +50 -0
- package/dist/server/modules/worktrees/worktrees.service.js +586 -0
- package/dist/server/modules/worktrees/worktrees.service.js.map +1 -0
- package/dist/server/modules/worktrees/worktrees.types.d.ts +58 -0
- package/dist/server/modules/worktrees/worktrees.types.js +3 -0
- package/dist/server/modules/worktrees/worktrees.types.js.map +1 -0
- package/dist/server/templates/teams-dev.json +6 -6
- package/dist/server/tsconfig.build.tsbuildinfo +1 -1
- package/dist/server/ui/assets/{ExternalRichEditor-CB-LjWox.js → ExternalRichEditor-NpBNzn_X.js} +1 -1
- package/dist/server/ui/assets/{ReviewDetailPage-CpMMjYet.js → ReviewDetailPage-DxVCE1zh.js} +1 -1
- package/dist/server/ui/assets/{ReviewsPage-Cw17_agp.js → ReviewsPage-Bx6jkULr.js} +1 -1
- package/dist/server/ui/assets/index-BZjQEWOy.css +32 -0
- package/dist/server/ui/assets/{index-DmRXRpSy.js → index-CLPZxkZt.js} +263 -263
- package/dist/server/ui/assets/{useReviewSubscription-wd5iHNQy.js → useReviewSubscription-BLuFzXjh.js} +1 -1
- package/dist/server/ui/index.html +2 -2
- package/dist/templates/teams-dev.json +6 -6
- package/npm-shrinkwrap.json +6189 -0
- package/package.json +22 -22
- package/dist/server/modules/file-sync/host-git-index.controller.d.ts +0 -10
- package/dist/server/modules/file-sync/host-git-index.controller.js +0 -67
- package/dist/server/modules/file-sync/host-git-index.controller.js.map +0 -1
- package/dist/server/modules/remotes/operations/git-owner.operation.d.ts +0 -35
- package/dist/server/modules/remotes/operations/git-owner.operation.js +0 -216
- package/dist/server/modules/remotes/operations/git-owner.operation.js.map +0 -1
- package/dist/server/modules/session-reader/readers/opencode-sqlite.reader.d.ts +0 -73
- package/dist/server/modules/session-reader/readers/opencode-sqlite.reader.js.map +0 -1
- package/dist/server/ui/assets/index-BwuNu70G.css +0 -32
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { FastifyRequest } from 'fastify';
|
|
2
|
+
import { HostApiKeyService } from './host-api-key.service';
|
|
3
|
+
import { HostHelperService } from './host-helper.service';
|
|
4
|
+
import { HostSharedVmService } from './host-shared-vm.service';
|
|
5
|
+
import { HostSharedVmStore } from './host-shared-vm.store';
|
|
6
|
+
export declare class HostSharedVmController {
|
|
7
|
+
private readonly shared;
|
|
8
|
+
private readonly store;
|
|
9
|
+
private readonly keys;
|
|
10
|
+
private readonly helper;
|
|
11
|
+
constructor(shared: HostSharedVmService, store: HostSharedVmStore, keys: HostApiKeyService, helper: HostHelperService);
|
|
12
|
+
count(request: FastifyRequest): ReturnType<HostSharedVmStore['readOccupancy']>;
|
|
13
|
+
receive(request: FastifyRequest, body: unknown): Promise<void>;
|
|
14
|
+
roster(request: FastifyRequest): ReturnType<HostSharedVmService['roster']>;
|
|
15
|
+
notify(request: FastifyRequest, body: unknown): ReturnType<HostSharedVmService['notify']>;
|
|
16
|
+
notices(request: FastifyRequest): {
|
|
17
|
+
notices: ReturnType<HostSharedVmStore['notices']>;
|
|
18
|
+
};
|
|
19
|
+
dismiss(request: FastifyRequest, body: unknown): Promise<void>;
|
|
20
|
+
abandon(request: FastifyRequest, body: unknown): Promise<void>;
|
|
21
|
+
fence(request: FastifyRequest, body: unknown): ReturnType<HostHelperService['destroyFence']>;
|
|
22
|
+
private key;
|
|
23
|
+
private loopback;
|
|
24
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.HostSharedVmController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const integration_admission_1 = require("../../../common/config/integration-admission");
|
|
19
|
+
const error_types_1 = require("../../../common/errors/error-types");
|
|
20
|
+
const host_api_key_service_1 = require("./host-api-key.service");
|
|
21
|
+
const host_helper_service_1 = require("./host-helper.service");
|
|
22
|
+
const host_shared_vm_service_1 = require("./host-shared-vm.service");
|
|
23
|
+
const host_shared_vm_store_1 = require("./host-shared-vm.store");
|
|
24
|
+
const shared_vm_contract_1 = require("./shared-vm.contract");
|
|
25
|
+
let HostSharedVmController = class HostSharedVmController {
|
|
26
|
+
shared;
|
|
27
|
+
store;
|
|
28
|
+
keys;
|
|
29
|
+
helper;
|
|
30
|
+
constructor(shared, store, keys, helper) {
|
|
31
|
+
this.shared = shared;
|
|
32
|
+
this.store = store;
|
|
33
|
+
this.keys = keys;
|
|
34
|
+
this.helper = helper;
|
|
35
|
+
}
|
|
36
|
+
count(request) {
|
|
37
|
+
this.loopback(request);
|
|
38
|
+
return this.store.readOccupancy();
|
|
39
|
+
}
|
|
40
|
+
async receive(request, body) {
|
|
41
|
+
this.loopback(request);
|
|
42
|
+
await this.store.receive(shared_vm_contract_1.SharedVmInboxSchema.parse(body));
|
|
43
|
+
}
|
|
44
|
+
roster(request) {
|
|
45
|
+
this.key(request);
|
|
46
|
+
return this.shared.roster();
|
|
47
|
+
}
|
|
48
|
+
notify(request, body) {
|
|
49
|
+
this.key(request);
|
|
50
|
+
return this.shared.notify(shared_vm_contract_1.SharedVmNotifySchema.parse(body));
|
|
51
|
+
}
|
|
52
|
+
notices(request) {
|
|
53
|
+
this.key(request);
|
|
54
|
+
return { notices: this.store.notices() };
|
|
55
|
+
}
|
|
56
|
+
async dismiss(request, body) {
|
|
57
|
+
this.key(request);
|
|
58
|
+
await this.store.dismiss(shared_vm_contract_1.SharedVmDismissSchema.parse(body).id);
|
|
59
|
+
}
|
|
60
|
+
async abandon(request, body) {
|
|
61
|
+
this.key(request);
|
|
62
|
+
await this.store.abandon(shared_vm_contract_1.SharedVmAbandonSchema.parse(body).projectId);
|
|
63
|
+
}
|
|
64
|
+
fence(request, body) {
|
|
65
|
+
this.key(request);
|
|
66
|
+
this.shared.assertOwner();
|
|
67
|
+
const { mode, operationId } = shared_vm_contract_1.SharedVmFenceRequestSchema.parse(body);
|
|
68
|
+
return this.helper.destroyFence(mode, operationId);
|
|
69
|
+
}
|
|
70
|
+
key(request) {
|
|
71
|
+
const refusal = this.keys.allows(request.raw, 'http', true);
|
|
72
|
+
if (refusal)
|
|
73
|
+
throw new error_types_1.AppError(refusal.message, refusal.code, refusal.statusCode);
|
|
74
|
+
this.helper.assertClaimedHost();
|
|
75
|
+
}
|
|
76
|
+
loopback(request) {
|
|
77
|
+
if (!(0, integration_admission_1.isLoopbackHost)(request.raw.socket.remoteAddress ?? '')) {
|
|
78
|
+
throw new error_types_1.ForbiddenError('This route accepts only loopback callers.', {
|
|
79
|
+
code: 'HOST_LOOPBACK_REQUIRED',
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
this.helper.assertClaimedHost();
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
exports.HostSharedVmController = HostSharedVmController;
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, common_1.Get)('connected-count'),
|
|
88
|
+
(0, swagger_1.ApiOperation)({ summary: 'Loopback-only connected-project count' }),
|
|
89
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Count of non-template, non-abandoned projects' }),
|
|
90
|
+
(0, swagger_1.ApiResponse)({
|
|
91
|
+
status: 503,
|
|
92
|
+
description: 'An admitted writer prevents a current occupancy snapshot',
|
|
93
|
+
}),
|
|
94
|
+
__param(0, (0, common_1.Req)()),
|
|
95
|
+
__metadata("design:type", Function),
|
|
96
|
+
__metadata("design:paramtypes", [Object]),
|
|
97
|
+
__metadata("design:returntype", void 0)
|
|
98
|
+
], HostSharedVmController.prototype, "count", null);
|
|
99
|
+
__decorate([
|
|
100
|
+
(0, common_1.Post)('inbox'),
|
|
101
|
+
(0, common_1.HttpCode)(204),
|
|
102
|
+
(0, swagger_1.ApiOperation)({ summary: 'Loopback-only notice delivery' }),
|
|
103
|
+
(0, swagger_1.ApiResponse)({ status: 204, description: 'Notice stored in this instance' }),
|
|
104
|
+
__param(0, (0, common_1.Req)()),
|
|
105
|
+
__param(1, (0, common_1.Body)()),
|
|
106
|
+
__metadata("design:type", Function),
|
|
107
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
108
|
+
__metadata("design:returntype", Promise)
|
|
109
|
+
], HostSharedVmController.prototype, "receive", null);
|
|
110
|
+
__decorate([
|
|
111
|
+
(0, common_1.Get)('roster'),
|
|
112
|
+
(0, swagger_1.ApiOperation)({ summary: 'Read every claimed instance and its occupancy' }),
|
|
113
|
+
(0, swagger_1.ApiResponse)({
|
|
114
|
+
status: 200,
|
|
115
|
+
description: 'Registry instances, with unknown for unavailable counts',
|
|
116
|
+
}),
|
|
117
|
+
__param(0, (0, common_1.Req)()),
|
|
118
|
+
__metadata("design:type", Function),
|
|
119
|
+
__metadata("design:paramtypes", [Object]),
|
|
120
|
+
__metadata("design:returntype", void 0)
|
|
121
|
+
], HostSharedVmController.prototype, "roster", null);
|
|
122
|
+
__decorate([
|
|
123
|
+
(0, common_1.Post)('notify'),
|
|
124
|
+
(0, common_1.HttpCode)(200),
|
|
125
|
+
(0, swagger_1.ApiOperation)({ summary: 'Notify every other VM user once' }),
|
|
126
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Per-user delivery results' }),
|
|
127
|
+
__param(0, (0, common_1.Req)()),
|
|
128
|
+
__param(1, (0, common_1.Body)()),
|
|
129
|
+
__metadata("design:type", Function),
|
|
130
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
131
|
+
__metadata("design:returntype", void 0)
|
|
132
|
+
], HostSharedVmController.prototype, "notify", null);
|
|
133
|
+
__decorate([
|
|
134
|
+
(0, common_1.Get)('notices'),
|
|
135
|
+
(0, swagger_1.ApiOperation)({ summary: 'Read this instance notice inbox' }),
|
|
136
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Notices awaiting dismissal' }),
|
|
137
|
+
__param(0, (0, common_1.Req)()),
|
|
138
|
+
__metadata("design:type", Function),
|
|
139
|
+
__metadata("design:paramtypes", [Object]),
|
|
140
|
+
__metadata("design:returntype", Object)
|
|
141
|
+
], HostSharedVmController.prototype, "notices", null);
|
|
142
|
+
__decorate([
|
|
143
|
+
(0, common_1.Post)('dismiss'),
|
|
144
|
+
(0, common_1.HttpCode)(204),
|
|
145
|
+
(0, swagger_1.ApiOperation)({ summary: 'Dismiss one notice' }),
|
|
146
|
+
(0, swagger_1.ApiResponse)({ status: 204, description: 'Notice dismissed, including already absent IDs' }),
|
|
147
|
+
__param(0, (0, common_1.Req)()),
|
|
148
|
+
__param(1, (0, common_1.Body)()),
|
|
149
|
+
__metadata("design:type", Function),
|
|
150
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
151
|
+
__metadata("design:returntype", Promise)
|
|
152
|
+
], HostSharedVmController.prototype, "dismiss", null);
|
|
153
|
+
__decorate([
|
|
154
|
+
(0, common_1.Post)('abandon'),
|
|
155
|
+
(0, common_1.HttpCode)(204),
|
|
156
|
+
(0, swagger_1.ApiOperation)({ summary: 'Exclude a forced-disconnected project from occupancy' }),
|
|
157
|
+
(0, swagger_1.ApiResponse)({ status: 204, description: 'Project excluded; its rows and files remain' }),
|
|
158
|
+
__param(0, (0, common_1.Req)()),
|
|
159
|
+
__param(1, (0, common_1.Body)()),
|
|
160
|
+
__metadata("design:type", Function),
|
|
161
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
162
|
+
__metadata("design:returntype", Promise)
|
|
163
|
+
], HostSharedVmController.prototype, "abandon", null);
|
|
164
|
+
__decorate([
|
|
165
|
+
(0, common_1.Post)('fence'),
|
|
166
|
+
(0, common_1.HttpCode)(200),
|
|
167
|
+
(0, swagger_1.ApiOperation)({ summary: 'Set or clear the owner destroy fence' }),
|
|
168
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'VM-wide fence, or null after clearing' }),
|
|
169
|
+
__param(0, (0, common_1.Req)()),
|
|
170
|
+
__param(1, (0, common_1.Body)()),
|
|
171
|
+
__metadata("design:type", Function),
|
|
172
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
173
|
+
__metadata("design:returntype", void 0)
|
|
174
|
+
], HostSharedVmController.prototype, "fence", null);
|
|
175
|
+
exports.HostSharedVmController = HostSharedVmController = __decorate([
|
|
176
|
+
(0, swagger_1.ApiTags)('host'),
|
|
177
|
+
(0, common_1.Controller)('api/host/shared-vm'),
|
|
178
|
+
__metadata("design:paramtypes", [host_shared_vm_service_1.HostSharedVmService,
|
|
179
|
+
host_shared_vm_store_1.HostSharedVmStore,
|
|
180
|
+
host_api_key_service_1.HostApiKeyService,
|
|
181
|
+
host_helper_service_1.HostHelperService])
|
|
182
|
+
], HostSharedVmController);
|
|
183
|
+
//# sourceMappingURL=host-shared-vm.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-shared-vm.controller.js","sourceRoot":"","sources":["../../../../src/modules/remotes/host/host-shared-vm.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { HostHelperService } from './host-helper.service';
|
|
3
|
+
import type { SharedVmNotify, SharedVmNotifyResult, SharedVmRoster } from './shared-vm.contract';
|
|
4
|
+
declare const ClaimSchema: z.ZodObject<{
|
|
5
|
+
userName: z.ZodString;
|
|
6
|
+
port: z.ZodNumber;
|
|
7
|
+
version: z.ZodOptional<z.ZodString>;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
port: number;
|
|
10
|
+
userName: string;
|
|
11
|
+
version?: string | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
port: number;
|
|
14
|
+
userName: string;
|
|
15
|
+
version?: string | undefined;
|
|
16
|
+
}>;
|
|
17
|
+
type Claim = z.infer<typeof ClaimSchema>;
|
|
18
|
+
export declare class HostSharedVmService {
|
|
19
|
+
private readonly helper;
|
|
20
|
+
constructor(helper: HostHelperService);
|
|
21
|
+
roster(): Promise<SharedVmRoster>;
|
|
22
|
+
notify(notice: SharedVmNotify): Promise<SharedVmNotifyResult>;
|
|
23
|
+
assertOwner(): Claim;
|
|
24
|
+
private registryDir;
|
|
25
|
+
private registry;
|
|
26
|
+
private readClaim;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.HostSharedVmService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const node_fs_1 = require("node:fs");
|
|
15
|
+
const node_path_1 = require("node:path");
|
|
16
|
+
const zod_1 = require("zod");
|
|
17
|
+
const env_config_1 = require("../../../common/config/env.config");
|
|
18
|
+
const vm_destroy_fence_1 = require("../../../common/config/vm-destroy-fence");
|
|
19
|
+
const error_types_1 = require("../../../common/errors/error-types");
|
|
20
|
+
const host_helper_service_1 = require("./host-helper.service");
|
|
21
|
+
const shared_vm_contract_1 = require("./shared-vm.contract");
|
|
22
|
+
const PEER_TIMEOUT_MS = 2000;
|
|
23
|
+
const ClaimSchema = zod_1.z.object({
|
|
24
|
+
userName: vm_destroy_fence_1.InstanceUserNameSchema,
|
|
25
|
+
port: zod_1.z.number().int().min(1024).max(65535),
|
|
26
|
+
version: zod_1.z.string().optional(),
|
|
27
|
+
});
|
|
28
|
+
let HostSharedVmService = class HostSharedVmService {
|
|
29
|
+
helper;
|
|
30
|
+
constructor(helper) {
|
|
31
|
+
this.helper = helper;
|
|
32
|
+
}
|
|
33
|
+
async roster() {
|
|
34
|
+
this.helper.assertClaimedHost();
|
|
35
|
+
const instances = await Promise.all(this.registry().map(async (claim) => {
|
|
36
|
+
let connectedCount = 'unknown';
|
|
37
|
+
let connectedProjectIds = 'unknown';
|
|
38
|
+
try {
|
|
39
|
+
const response = await fetch(`http://127.0.0.1:${claim.port}/api/host/shared-vm/connected-count`, {
|
|
40
|
+
signal: AbortSignal.timeout(PEER_TIMEOUT_MS),
|
|
41
|
+
redirect: 'error',
|
|
42
|
+
});
|
|
43
|
+
if (response.ok) {
|
|
44
|
+
const occupancy = shared_vm_contract_1.SharedVmCountSchema.parse(await response.json());
|
|
45
|
+
connectedCount = occupancy.connectedCount;
|
|
46
|
+
connectedProjectIds = occupancy.connectedProjectIds;
|
|
47
|
+
}
|
|
48
|
+
else
|
|
49
|
+
await response.body?.cancel();
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
user: claim.userName,
|
|
55
|
+
port: claim.port,
|
|
56
|
+
version: claim.version ?? null,
|
|
57
|
+
connectedCount,
|
|
58
|
+
connectedProjectIds,
|
|
59
|
+
};
|
|
60
|
+
}));
|
|
61
|
+
return { instances };
|
|
62
|
+
}
|
|
63
|
+
async notify(notice) {
|
|
64
|
+
const owner = this.assertOwner();
|
|
65
|
+
const body = JSON.stringify({
|
|
66
|
+
...notice,
|
|
67
|
+
fromUser: owner.userName,
|
|
68
|
+
at: new Date().toISOString(),
|
|
69
|
+
});
|
|
70
|
+
const results = await Promise.all(this.registry()
|
|
71
|
+
.filter((claim) => claim.userName !== owner.userName)
|
|
72
|
+
.map(async (claim) => {
|
|
73
|
+
let delivered = false;
|
|
74
|
+
try {
|
|
75
|
+
const response = await fetch(`http://127.0.0.1:${claim.port}/api/host/shared-vm/inbox`, {
|
|
76
|
+
method: 'POST',
|
|
77
|
+
headers: { 'content-type': 'application/json' },
|
|
78
|
+
body,
|
|
79
|
+
signal: AbortSignal.timeout(PEER_TIMEOUT_MS),
|
|
80
|
+
redirect: 'error',
|
|
81
|
+
});
|
|
82
|
+
delivered = response.ok;
|
|
83
|
+
await response.body?.cancel();
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
}
|
|
87
|
+
return { user: claim.userName, delivered };
|
|
88
|
+
}));
|
|
89
|
+
return { results };
|
|
90
|
+
}
|
|
91
|
+
assertOwner() {
|
|
92
|
+
this.helper.assertClaimedHost();
|
|
93
|
+
const ownDir = (0, node_path_1.resolve)((0, env_config_1.getEnvConfig)().DEVCHAIN_HOST_ETC_DIR);
|
|
94
|
+
const ownerDir = this.registryDir();
|
|
95
|
+
if (ownDir !== ownerDir) {
|
|
96
|
+
throw new error_types_1.ForbiddenError('Only the VM owner can set a destroy fence or notify other users.', {
|
|
97
|
+
code: 'VM_OWNER_REQUIRED',
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
const owner = this.readClaim((0, node_path_1.join)(ownerDir, 'claim.json'));
|
|
101
|
+
if (!owner)
|
|
102
|
+
throw new error_types_1.IOError('The VM owner claim is missing.');
|
|
103
|
+
return owner;
|
|
104
|
+
}
|
|
105
|
+
registryDir() {
|
|
106
|
+
const own = (0, node_path_1.resolve)((0, env_config_1.getEnvConfig)().DEVCHAIN_HOST_ETC_DIR);
|
|
107
|
+
return (0, node_path_1.basename)((0, node_path_1.dirname)(own)) === 'instances' ? (0, node_path_1.dirname)((0, node_path_1.dirname)(own)) : own;
|
|
108
|
+
}
|
|
109
|
+
registry() {
|
|
110
|
+
const root = this.registryDir();
|
|
111
|
+
const claims = [];
|
|
112
|
+
const owner = this.readClaim((0, node_path_1.join)(root, 'claim.json'));
|
|
113
|
+
if (owner)
|
|
114
|
+
claims.push(owner);
|
|
115
|
+
let entries;
|
|
116
|
+
try {
|
|
117
|
+
entries = (0, node_fs_1.readdirSync)((0, node_path_1.join)(root, 'instances'), { withFileTypes: true });
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
if (error.code === 'ENOENT')
|
|
121
|
+
return claims;
|
|
122
|
+
throw new error_types_1.IOError('Cannot read the VM instance registry.');
|
|
123
|
+
}
|
|
124
|
+
for (const entry of entries) {
|
|
125
|
+
if (!entry.isDirectory() || !vm_destroy_fence_1.InstanceUserNameSchema.safeParse(entry.name).success) {
|
|
126
|
+
throw new error_types_1.IOError('The VM instance registry is invalid.');
|
|
127
|
+
}
|
|
128
|
+
const claim = this.readClaim((0, node_path_1.join)(root, 'instances', entry.name, 'claim.json'));
|
|
129
|
+
if (claim && claim.userName !== entry.name)
|
|
130
|
+
throw new error_types_1.IOError('The VM instance claim does not match its user.');
|
|
131
|
+
if (claim)
|
|
132
|
+
claims.push(claim);
|
|
133
|
+
}
|
|
134
|
+
return claims;
|
|
135
|
+
}
|
|
136
|
+
readClaim(file) {
|
|
137
|
+
let raw;
|
|
138
|
+
try {
|
|
139
|
+
raw = (0, node_fs_1.readFileSync)(file, 'utf8');
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
if (error.code === 'ENOENT')
|
|
143
|
+
return null;
|
|
144
|
+
throw new error_types_1.IOError('Cannot read the VM instance claim.');
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
return ClaimSchema.parse(JSON.parse(raw));
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
throw new error_types_1.IOError('The VM instance claim is invalid.');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
exports.HostSharedVmService = HostSharedVmService;
|
|
155
|
+
exports.HostSharedVmService = HostSharedVmService = __decorate([
|
|
156
|
+
(0, common_1.Injectable)(),
|
|
157
|
+
__metadata("design:paramtypes", [host_helper_service_1.HostHelperService])
|
|
158
|
+
], HostSharedVmService);
|
|
159
|
+
//# sourceMappingURL=host-shared-vm.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-shared-vm.service.js","sourceRoot":"","sources":["../../../../src/modules/remotes/host/host-shared-vm.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
|
|
2
|
+
import type { SharedVmInbox, SharedVmNotice } from './shared-vm.contract';
|
|
3
|
+
export declare class HostSharedVmStore {
|
|
4
|
+
private readonly sqlite;
|
|
5
|
+
private readonly transactions;
|
|
6
|
+
constructor(db: BetterSQLite3Database);
|
|
7
|
+
connectedCount(): number;
|
|
8
|
+
readOccupancy(): Promise<ReturnType<HostSharedVmStore['occupancy']>>;
|
|
9
|
+
occupancy(): {
|
|
10
|
+
connectedCount: number;
|
|
11
|
+
connectedProjectIds: string[];
|
|
12
|
+
};
|
|
13
|
+
abandon(projectId: string): Promise<void>;
|
|
14
|
+
notices(): SharedVmNotice[];
|
|
15
|
+
receive(notice: SharedVmInbox): Promise<SharedVmNotice>;
|
|
16
|
+
dismiss(id: string): Promise<void>;
|
|
17
|
+
private writeNotices;
|
|
18
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.HostSharedVmStore = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const node_crypto_1 = require("node:crypto");
|
|
18
|
+
const zod_1 = require("zod");
|
|
19
|
+
const error_types_1 = require("../../../common/errors/error-types");
|
|
20
|
+
const db_provider_1 = require("../../storage/db/db.provider");
|
|
21
|
+
const sqlite_raw_1 = require("../../storage/db/sqlite-raw");
|
|
22
|
+
const transaction_runner_1 = require("../../storage/db/transaction-runner");
|
|
23
|
+
const host_abandoned_projects_1 = require("../../storage/local/helpers/host-abandoned-projects");
|
|
24
|
+
const shared_vm_contract_1 = require("./shared-vm.contract");
|
|
25
|
+
const NOTICES_KEY = 'host.noticeInbox';
|
|
26
|
+
const NoticesSchema = zod_1.z.array(shared_vm_contract_1.SharedVmNoticeSchema);
|
|
27
|
+
let HostSharedVmStore = class HostSharedVmStore {
|
|
28
|
+
sqlite;
|
|
29
|
+
transactions;
|
|
30
|
+
constructor(db) {
|
|
31
|
+
this.sqlite = (0, sqlite_raw_1.getRawSqliteClient)(db);
|
|
32
|
+
this.transactions = new transaction_runner_1.TransactionRunner(this.sqlite);
|
|
33
|
+
}
|
|
34
|
+
connectedCount() {
|
|
35
|
+
return this.occupancy().connectedCount;
|
|
36
|
+
}
|
|
37
|
+
async readOccupancy() {
|
|
38
|
+
try {
|
|
39
|
+
return await this.transactions.runImmediateQueued(() => this.occupancy());
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (error && typeof error === 'object' && 'code' in error && error.code === 'SQLITE_BUSY') {
|
|
43
|
+
throw new error_types_1.AppError('The VM occupancy snapshot is temporarily unavailable.', 'VM_OCCUPANCY_UNAVAILABLE', 503);
|
|
44
|
+
}
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
occupancy() {
|
|
49
|
+
const abandoned = new Set((0, host_abandoned_projects_1.readAbandonedProjects)(this.sqlite));
|
|
50
|
+
const projects = this.sqlite
|
|
51
|
+
.prepare('SELECT id FROM projects WHERE is_template = 0')
|
|
52
|
+
.all();
|
|
53
|
+
const connectedProjectIds = projects
|
|
54
|
+
.filter(({ id }) => !abandoned.has(id))
|
|
55
|
+
.map(({ id }) => id)
|
|
56
|
+
.sort();
|
|
57
|
+
return { connectedCount: connectedProjectIds.length, connectedProjectIds };
|
|
58
|
+
}
|
|
59
|
+
async abandon(projectId) {
|
|
60
|
+
await this.transactions.runImmediateQueued(() => {
|
|
61
|
+
(0, host_abandoned_projects_1.writeAbandonedProjects)(this.sqlite, [...(0, host_abandoned_projects_1.readAbandonedProjects)(this.sqlite), projectId]);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
notices() {
|
|
65
|
+
const row = this.sqlite.prepare('SELECT value FROM settings WHERE key = ?').get(NOTICES_KEY);
|
|
66
|
+
if (!row)
|
|
67
|
+
return [];
|
|
68
|
+
try {
|
|
69
|
+
return NoticesSchema.parse(JSON.parse(row.value));
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
throw new error_types_1.IOError('The host notice inbox is invalid.');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async receive(notice) {
|
|
76
|
+
return this.transactions.runImmediateQueued(() => {
|
|
77
|
+
const stored = shared_vm_contract_1.SharedVmNoticeSchema.parse({ ...notice, id: (0, node_crypto_1.randomUUID)() });
|
|
78
|
+
this.writeNotices([...this.notices(), stored]);
|
|
79
|
+
return stored;
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
async dismiss(id) {
|
|
83
|
+
await this.transactions.runImmediateQueued(() => {
|
|
84
|
+
const notices = this.notices();
|
|
85
|
+
const next = notices.filter((notice) => notice.id !== id);
|
|
86
|
+
if (next.length !== notices.length)
|
|
87
|
+
this.writeNotices(next);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
writeNotices(notices) {
|
|
91
|
+
const now = new Date().toISOString();
|
|
92
|
+
this.sqlite
|
|
93
|
+
.prepare(`INSERT INTO settings (id, key, value, created_at, updated_at)
|
|
94
|
+
VALUES (lower(hex(randomblob(16))), ?, ?, ?, ?)
|
|
95
|
+
ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at`)
|
|
96
|
+
.run(NOTICES_KEY, JSON.stringify(notices), now, now);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
exports.HostSharedVmStore = HostSharedVmStore;
|
|
100
|
+
exports.HostSharedVmStore = HostSharedVmStore = __decorate([
|
|
101
|
+
(0, common_1.Injectable)(),
|
|
102
|
+
__param(0, (0, common_1.Inject)(db_provider_1.DB_CONNECTION)),
|
|
103
|
+
__metadata("design:paramtypes", [Function])
|
|
104
|
+
], HostSharedVmStore);
|
|
105
|
+
//# sourceMappingURL=host-shared-vm.store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-shared-vm.store.js","sourceRoot":"","sources":["../../../../src/modules/remotes/host/host-shared-vm.store.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,9 +34,9 @@ let HostUpdateController = class HostUpdateController {
|
|
|
34
34
|
throw new error_types_1.ConflictError('This DevChain instance is not a host VM.', { code: 'NOT_A_HOST' });
|
|
35
35
|
}
|
|
36
36
|
async update(body) {
|
|
37
|
-
const { version } = host_routes_1.hostRoutes.requestHostUpdate.body.parse(body);
|
|
38
|
-
logger.info({ version }, 'POST /api/host/update');
|
|
39
|
-
await this.helper.requestUpdate(version);
|
|
37
|
+
const { version, npmRegistry } = host_routes_1.hostRoutes.requestHostUpdate.body.parse(body);
|
|
38
|
+
logger.info({ version, registry: npmRegistry !== undefined }, 'POST /api/host/update');
|
|
39
|
+
await this.helper.requestUpdate(version, npmRegistry);
|
|
40
40
|
return { version, state: 'pending' };
|
|
41
41
|
}
|
|
42
42
|
status() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-update.controller.js","sourceRoot":"","sources":["../../../../src/modules/remotes/host/host-update.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAuE;AACvE,6CAAqE;AACrE,6BAAwB;AACxB,oEAAmE;AACnE,2DAA8D;AAC9D,yDAAqD;AAErD,+DAAkF;AAElF,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,sBAAsB,CAAC,CAAC;AAEpD,MAAM,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAShF,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACF;IAA7B,YAA6B,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAK1D,KAAK;QACH,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,2BAAa,CAAC,6BAA6B,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,IAAI,2BAAa,CAAC,0CAA0C,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IAC9F,CAAC;IAOK,AAAN,KAAK,CAAC,MAAM,CAAS,IAAa;QAChC,MAAM,EAAE,OAAO,EAAE,GAAG,wBAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"host-update.controller.js","sourceRoot":"","sources":["../../../../src/modules/remotes/host/host-update.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { ProjectSessionsStopper } from '../services/project-sessions-stopper.ser
|
|
|
5
5
|
import { ProjectReplicaApplier } from '../replica/project-replica.applier';
|
|
6
6
|
import { ProjectReplicaBuilder } from '../replica/project-replica.builder';
|
|
7
7
|
import { ProjectFreezeService } from './project-freeze.service';
|
|
8
|
+
import { GitCoordinatorService } from '../git-coordinator/git-coordinator.service';
|
|
8
9
|
import { HostSkillSettingsService } from './host-skill-settings.service';
|
|
9
10
|
import type { HostChangesQuery } from './host.dto';
|
|
10
11
|
import { ProjectTimeSettler, type ProjectTimeSettlement } from '../time/project-time-settler.service';
|
|
@@ -18,7 +19,8 @@ export declare class HostService {
|
|
|
18
19
|
private readonly timeSettler;
|
|
19
20
|
private readonly skillSettings;
|
|
20
21
|
private readonly settings;
|
|
21
|
-
|
|
22
|
+
private readonly gitCoordinator;
|
|
23
|
+
constructor(builder: ProjectReplicaBuilder, applier: ProjectReplicaApplier, freeze: ProjectFreezeService, storage: ProjectHostStorage, sessionsStopper: ProjectSessionsStopper, timeSettler: ProjectTimeSettler, skillSettings: HostSkillSettingsService, settings: SettingsService, gitCoordinator: GitCoordinatorService);
|
|
22
24
|
importProject(body: unknown, options: {
|
|
23
25
|
resnapshot: boolean;
|
|
24
26
|
}): Promise<ProjectReplicaImportResult>;
|