byterover-cli 2.5.2 → 3.0.0
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/.env.production +8 -0
- package/LICENSE +44 -0
- package/README.md +240 -14
- package/bin/dev.js +8 -1
- package/bin/run.js +8 -1
- package/dist/agent/core/domain/knowledge/conflict-detector.d.ts +38 -0
- package/dist/agent/core/domain/knowledge/conflict-detector.js +71 -0
- package/dist/agent/core/domain/knowledge/conflict-resolver.d.ts +17 -0
- package/dist/agent/core/domain/knowledge/conflict-resolver.js +118 -0
- package/dist/agent/core/domain/knowledge/utils.d.ts +4 -0
- package/dist/agent/core/domain/knowledge/utils.js +6 -0
- package/dist/agent/core/interfaces/i-curate-service.d.ts +6 -0
- package/dist/agent/infra/tools/implementations/curate-tool.d.ts +67 -34
- package/dist/agent/infra/tools/implementations/curate-tool.js +294 -47
- package/dist/agent/resources/prompts/system-prompt.yml +15 -8
- package/dist/agent/resources/tools/code_exec.txt +3 -0
- package/dist/agent/resources/tools/curate.txt +12 -3
- package/dist/oclif/commands/connectors/install.d.ts +2 -1
- package/dist/oclif/commands/connectors/install.js +38 -3
- package/dist/oclif/commands/curate/index.d.ts +18 -0
- package/dist/oclif/commands/curate/index.js +78 -1
- package/dist/oclif/commands/init.d.ts +12 -0
- package/dist/oclif/commands/init.js +75 -0
- package/dist/oclif/commands/locations.js +1 -1
- package/dist/oclif/commands/providers/connect.d.ts +31 -1
- package/dist/oclif/commands/providers/connect.js +307 -27
- package/dist/oclif/commands/pull.d.ts +1 -0
- package/dist/oclif/commands/pull.js +7 -0
- package/dist/oclif/commands/push.d.ts +1 -0
- package/dist/oclif/commands/push.js +8 -0
- package/dist/oclif/commands/review/approve.d.ts +17 -0
- package/dist/oclif/commands/review/approve.js +37 -0
- package/dist/oclif/commands/review/base-review-decision.d.ts +18 -0
- package/dist/oclif/commands/review/base-review-decision.js +71 -0
- package/dist/oclif/commands/review/pending.d.ts +13 -0
- package/dist/oclif/commands/review/pending.js +94 -0
- package/dist/oclif/commands/review/reject.d.ts +17 -0
- package/dist/oclif/commands/review/reject.js +38 -0
- package/dist/oclif/commands/space/list.d.ts +2 -2
- package/dist/oclif/commands/space/list.js +13 -35
- package/dist/oclif/commands/space/switch.d.ts +2 -7
- package/dist/oclif/commands/space/switch.js +13 -56
- package/dist/oclif/commands/status.d.ts +1 -0
- package/dist/oclif/commands/status.js +11 -1
- package/dist/oclif/commands/vc/add.d.ts +7 -0
- package/dist/oclif/commands/vc/add.js +29 -0
- package/dist/oclif/commands/vc/branch.d.ts +15 -0
- package/dist/oclif/commands/vc/branch.js +70 -0
- package/dist/oclif/commands/vc/checkout.d.ts +14 -0
- package/dist/oclif/commands/vc/checkout.js +47 -0
- package/dist/oclif/commands/vc/clone.d.ts +9 -0
- package/dist/oclif/commands/vc/clone.js +61 -0
- package/dist/oclif/commands/vc/commit.d.ts +10 -0
- package/dist/oclif/commands/vc/commit.js +32 -0
- package/dist/oclif/commands/vc/config.d.ts +10 -0
- package/dist/oclif/commands/vc/config.js +30 -0
- package/dist/oclif/commands/vc/fetch.d.ts +10 -0
- package/dist/oclif/commands/vc/fetch.js +42 -0
- package/dist/oclif/commands/vc/index.d.ts +6 -0
- package/dist/oclif/commands/vc/index.js +8 -0
- package/dist/oclif/commands/vc/init.d.ts +6 -0
- package/dist/oclif/commands/vc/init.js +25 -0
- package/dist/oclif/commands/vc/log.d.ts +13 -0
- package/dist/oclif/commands/vc/log.js +48 -0
- package/dist/oclif/commands/vc/merge.d.ts +19 -0
- package/dist/oclif/commands/vc/merge.js +130 -0
- package/dist/oclif/commands/vc/pull.d.ts +13 -0
- package/dist/oclif/commands/vc/pull.js +60 -0
- package/dist/oclif/commands/vc/push.d.ts +13 -0
- package/dist/oclif/commands/vc/push.js +60 -0
- package/dist/oclif/commands/vc/remote/add.d.ts +10 -0
- package/dist/oclif/commands/vc/remote/add.js +30 -0
- package/dist/oclif/commands/vc/remote/index.d.ts +6 -0
- package/dist/oclif/commands/vc/remote/index.js +16 -0
- package/dist/oclif/commands/vc/remote/set-url.d.ts +10 -0
- package/dist/oclif/commands/vc/remote/set-url.js +30 -0
- package/dist/oclif/commands/vc/reset.d.ts +13 -0
- package/dist/oclif/commands/vc/reset.js +62 -0
- package/dist/oclif/commands/vc/status.d.ts +8 -0
- package/dist/oclif/commands/vc/status.js +106 -0
- package/dist/oclif/hooks/init/validate-brv-config.d.ts +26 -0
- package/dist/oclif/hooks/init/validate-brv-config.js +62 -0
- package/dist/oclif/lib/daemon-client.d.ts +2 -0
- package/dist/oclif/lib/daemon-client.js +36 -10
- package/dist/oclif/lib/prompt-utils.d.ts +43 -0
- package/dist/oclif/lib/prompt-utils.js +84 -0
- package/dist/oclif/lib/spinner.d.ts +8 -0
- package/dist/oclif/lib/spinner.js +23 -0
- package/dist/oclif/lib/task-client.d.ts +5 -0
- package/dist/oclif/lib/task-client.js +15 -2
- package/dist/server/config/environment.d.ts +2 -19
- package/dist/server/config/environment.js +31 -38
- package/dist/server/constants.d.ts +3 -9
- package/dist/server/constants.js +9 -12
- package/dist/server/core/domain/entities/auth-token.d.ts +2 -0
- package/dist/server/core/domain/entities/auth-token.js +7 -1
- package/dist/server/core/domain/entities/curate-log-entry.d.ts +11 -0
- package/dist/server/core/domain/entities/space.d.ts +4 -0
- package/dist/server/core/domain/entities/space.js +8 -0
- package/dist/server/core/domain/entities/team.d.ts +2 -0
- package/dist/server/core/domain/entities/team.js +4 -0
- package/dist/server/core/domain/errors/auth-error.d.ts +0 -6
- package/dist/server/core/domain/errors/auth-error.js +0 -12
- package/dist/server/core/domain/errors/git-error.d.ts +6 -0
- package/dist/server/core/domain/errors/git-error.js +12 -0
- package/dist/server/core/domain/errors/task-error.d.ts +4 -3
- package/dist/server/core/domain/errors/task-error.js +8 -8
- package/dist/server/core/domain/errors/transport-error.d.ts +0 -31
- package/dist/server/core/domain/errors/transport-error.js +0 -50
- package/dist/server/core/domain/errors/vc-error.d.ts +5 -0
- package/dist/server/core/domain/errors/vc-error.js +8 -0
- package/dist/server/core/domain/knowledge/markdown-writer.d.ts +4 -1
- package/dist/server/core/domain/knowledge/markdown-writer.js +37 -7
- package/dist/server/core/domain/transport/schemas.d.ts +6 -6
- package/dist/server/core/interfaces/context-tree/i-context-tree-service.d.ts +11 -0
- package/dist/server/core/interfaces/process/i-task-lifecycle-hook.d.ts +6 -0
- package/dist/server/core/interfaces/services/i-git-service.d.ts +234 -0
- package/dist/server/core/interfaces/storage/i-curate-log-store.d.ts +5 -0
- package/dist/server/core/interfaces/storage/i-review-backup-store.d.ts +19 -0
- package/dist/server/core/interfaces/vc/i-vc-git-config-store.d.ts +8 -0
- package/dist/server/infra/config/auto-init.d.ts +0 -2
- package/dist/server/infra/config/auto-init.js +0 -1
- package/dist/server/infra/connectors/rules/rules-connector-config.d.ts +0 -4
- package/dist/server/infra/context-tree/file-context-tree-service.d.ts +2 -0
- package/dist/server/infra/context-tree/file-context-tree-service.js +13 -0
- package/dist/server/infra/daemon/brv-server.js +23 -3
- package/dist/server/infra/git/cogit-url.d.ts +17 -0
- package/dist/server/infra/git/cogit-url.js +39 -0
- package/dist/server/infra/git/git-http-wrapper.d.ts +20 -0
- package/dist/server/infra/git/git-http-wrapper.js +334 -0
- package/dist/server/infra/git/isomorphic-git-service.d.ts +78 -0
- package/dist/server/infra/git/isomorphic-git-service.js +983 -0
- package/dist/server/infra/http/models-dev-client.d.ts +0 -4
- package/dist/server/infra/http/models-dev-client.js +0 -6
- package/dist/server/infra/http/openrouter-api-client.d.ts +0 -8
- package/dist/server/infra/http/openrouter-api-client.js +0 -13
- package/dist/server/infra/http/provider-model-fetcher-registry.d.ts +0 -5
- package/dist/server/infra/http/provider-model-fetcher-registry.js +0 -7
- package/dist/server/infra/http/review-api-handler.d.ts +13 -0
- package/dist/server/infra/http/review-api-handler.js +286 -0
- package/dist/server/infra/http/review-ui.d.ts +7 -0
- package/dist/server/infra/http/review-ui.js +606 -0
- package/dist/server/infra/mcp/tools/brv-curate-tool.d.ts +2 -2
- package/dist/server/infra/process/curate-log-handler.d.ts +18 -2
- package/dist/server/infra/process/curate-log-handler.js +50 -13
- package/dist/server/infra/process/feature-handlers.js +41 -1
- package/dist/server/infra/process/task-router.js +16 -0
- package/dist/server/infra/provider/env-provider-detector.d.ts +0 -20
- package/dist/server/infra/provider/env-provider-detector.js +0 -27
- package/dist/server/infra/space/http-space-service.js +2 -0
- package/dist/server/infra/storage/file-curate-log-store.d.ts +10 -0
- package/dist/server/infra/storage/file-curate-log-store.js +35 -0
- package/dist/server/infra/storage/file-provider-config-store.d.ts +0 -4
- package/dist/server/infra/storage/file-provider-config-store.js +0 -6
- package/dist/server/infra/storage/file-review-backup-store.d.ts +29 -0
- package/dist/server/infra/storage/file-review-backup-store.js +121 -0
- package/dist/server/infra/transport/handlers/auth-handler.js +9 -5
- package/dist/server/infra/transport/handlers/handler-types.d.ts +9 -0
- package/dist/server/infra/transport/handlers/handler-types.js +11 -0
- package/dist/server/infra/transport/handlers/index.d.ts +4 -0
- package/dist/server/infra/transport/handlers/index.js +2 -0
- package/dist/server/infra/transport/handlers/init-handler.d.ts +1 -0
- package/dist/server/infra/transport/handlers/init-handler.js +13 -1
- package/dist/server/infra/transport/handlers/pull-handler.d.ts +3 -0
- package/dist/server/infra/transport/handlers/pull-handler.js +5 -1
- package/dist/server/infra/transport/handlers/push-handler.d.ts +20 -0
- package/dist/server/infra/transport/handlers/push-handler.js +116 -14
- package/dist/server/infra/transport/handlers/reset-handler.d.ts +11 -0
- package/dist/server/infra/transport/handlers/reset-handler.js +37 -1
- package/dist/server/infra/transport/handlers/review-handler.d.ts +35 -0
- package/dist/server/infra/transport/handlers/review-handler.js +162 -0
- package/dist/server/infra/transport/handlers/space-handler.d.ts +3 -0
- package/dist/server/infra/transport/handlers/space-handler.js +4 -1
- package/dist/server/infra/transport/handlers/status-handler.d.ts +5 -0
- package/dist/server/infra/transport/handlers/status-handler.js +51 -16
- package/dist/server/infra/transport/handlers/vc-handler.d.ts +100 -0
- package/dist/server/infra/transport/handlers/vc-handler.js +1050 -0
- package/dist/server/infra/transport/socket-io-transport-server.d.ts +7 -0
- package/dist/server/infra/transport/socket-io-transport-server.js +12 -1
- package/dist/server/infra/transport/transport-connector.d.ts +1 -1
- package/dist/server/infra/transport/transport-connector.js +2 -1
- package/dist/server/infra/vc/file-vc-git-config-store.d.ts +11 -0
- package/dist/server/infra/vc/file-vc-git-config-store.js +43 -0
- package/dist/server/templates/skill/SKILL.md +167 -33
- package/dist/server/utils/curate-result-parser.d.ts +64 -0
- package/dist/server/utils/curate-result-parser.js +8 -0
- package/dist/server/utils/file-content-reader.d.ts +2 -1
- package/dist/server/utils/file-helpers.d.ts +0 -24
- package/dist/server/utils/file-helpers.js +0 -81
- package/dist/server/utils/gitignore.d.ts +9 -0
- package/dist/server/utils/gitignore.js +47 -0
- package/dist/server/utils/process-logger.d.ts +0 -13
- package/dist/server/utils/process-logger.js +1 -78
- package/dist/shared/transport/events/index.d.ts +6 -0
- package/dist/shared/transport/events/index.js +3 -0
- package/dist/shared/transport/events/init-events.d.ts +8 -0
- package/dist/shared/transport/events/init-events.js +1 -0
- package/dist/shared/transport/events/push-events.d.ts +6 -0
- package/dist/shared/transport/events/review-events.d.ts +41 -0
- package/dist/shared/transport/events/review-events.js +5 -0
- package/dist/shared/transport/events/vc-events.d.ts +257 -0
- package/dist/shared/transport/events/vc-events.js +67 -0
- package/dist/shared/transport/types/dto.d.ts +6 -1
- package/dist/tui/app/pages/init-project-page.d.ts +9 -0
- package/dist/tui/app/pages/init-project-page.js +54 -0
- package/dist/tui/app/pages/protected-routes.js +14 -6
- package/dist/tui/components/index.d.ts +0 -2
- package/dist/tui/components/index.js +0 -1
- package/dist/tui/features/activity/hooks/use-activity-logs.js +7 -1
- package/dist/tui/features/commands/definitions/index.js +3 -0
- package/dist/tui/features/commands/definitions/space-list.js +9 -18
- package/dist/tui/features/commands/definitions/space-switch.js +10 -6
- package/dist/tui/features/commands/definitions/vc-add.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-add.js +15 -0
- package/dist/tui/features/commands/definitions/vc-branch.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-branch.js +33 -0
- package/dist/tui/features/commands/definitions/vc-checkout.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-checkout.js +32 -0
- package/dist/tui/features/commands/definitions/vc-clone.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-clone.js +18 -0
- package/dist/tui/features/commands/definitions/vc-commit.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-commit.js +32 -0
- package/dist/tui/features/commands/definitions/vc-config.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-config.js +40 -0
- package/dist/tui/features/commands/definitions/vc-fetch.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-fetch.js +37 -0
- package/dist/tui/features/commands/definitions/vc-init.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-init.js +11 -0
- package/dist/tui/features/commands/definitions/vc-log.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-log.js +25 -0
- package/dist/tui/features/commands/definitions/vc-merge.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-merge.js +48 -0
- package/dist/tui/features/commands/definitions/vc-pull.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-pull.js +42 -0
- package/dist/tui/features/commands/definitions/vc-push.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-push.js +38 -0
- package/dist/tui/features/commands/definitions/vc-remote.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-remote.js +57 -0
- package/dist/tui/features/commands/definitions/vc-reset.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-reset.js +35 -0
- package/dist/tui/features/commands/definitions/vc-status.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc-status.js +11 -0
- package/dist/tui/features/commands/definitions/vc.d.ts +2 -0
- package/dist/tui/features/commands/definitions/vc.js +36 -0
- package/dist/tui/features/commands/hooks/use-slash-command-processor.js +5 -5
- package/dist/tui/features/log/api/execute-log.d.ts +8 -0
- package/dist/tui/features/log/api/execute-log.js +13 -0
- package/dist/tui/features/log/components/log-flow.d.ts +14 -0
- package/dist/tui/features/log/components/log-flow.js +29 -0
- package/dist/tui/features/log/utils/format-log.d.ts +3 -0
- package/dist/tui/features/log/utils/format-log.js +42 -0
- package/dist/tui/features/onboarding/hooks/use-app-view-mode.d.ts +9 -5
- package/dist/tui/features/onboarding/hooks/use-app-view-mode.js +12 -5
- package/dist/tui/features/push/components/push-flow.js +9 -2
- package/dist/tui/features/reset/components/reset-flow.js +2 -1
- package/dist/tui/features/status/components/status-view.js +2 -1
- package/dist/tui/features/status/utils/format-status.js +9 -0
- package/dist/tui/features/tasks/hooks/use-task-subscriptions.js +11 -0
- package/dist/tui/features/tasks/stores/tasks-store.d.ts +10 -0
- package/dist/tui/features/tasks/stores/tasks-store.js +16 -0
- package/dist/tui/features/vc/add/api/execute-vc-add.d.ts +8 -0
- package/dist/tui/features/vc/add/api/execute-vc-add.js +13 -0
- package/dist/tui/features/vc/add/components/vc-add-flow.d.ts +7 -0
- package/dist/tui/features/vc/add/components/vc-add-flow.js +35 -0
- package/dist/tui/features/vc/branch/api/execute-vc-branch.d.ts +8 -0
- package/dist/tui/features/vc/branch/api/execute-vc-branch.js +13 -0
- package/dist/tui/features/vc/branch/components/vc-branch-flow.d.ts +8 -0
- package/dist/tui/features/vc/branch/components/vc-branch-flow.js +53 -0
- package/dist/tui/features/vc/branch/utils/format-branch.d.ts +4 -0
- package/dist/tui/features/vc/branch/utils/format-branch.js +12 -0
- package/dist/tui/features/vc/checkout/api/execute-vc-checkout.d.ts +8 -0
- package/dist/tui/features/vc/checkout/api/execute-vc-checkout.js +13 -0
- package/dist/tui/features/vc/checkout/components/vc-checkout-flow.d.ts +8 -0
- package/dist/tui/features/vc/checkout/components/vc-checkout-flow.js +33 -0
- package/dist/tui/features/vc/clone/api/execute-vc-clone.d.ts +8 -0
- package/dist/tui/features/vc/clone/api/execute-vc-clone.js +13 -0
- package/dist/tui/features/vc/clone/components/vc-clone-flow.d.ts +7 -0
- package/dist/tui/features/vc/clone/components/vc-clone-flow.js +79 -0
- package/dist/tui/features/vc/commit/api/execute-vc-commit.d.ts +8 -0
- package/dist/tui/features/vc/commit/api/execute-vc-commit.js +13 -0
- package/dist/tui/features/vc/commit/components/vc-commit-flow.d.ts +7 -0
- package/dist/tui/features/vc/commit/components/vc-commit-flow.js +29 -0
- package/dist/tui/features/vc/config/api/execute-vc-config.d.ts +8 -0
- package/dist/tui/features/vc/config/api/execute-vc-config.js +13 -0
- package/dist/tui/features/vc/config/components/vc-config-flow.d.ts +9 -0
- package/dist/tui/features/vc/config/components/vc-config-flow.js +30 -0
- package/dist/tui/features/vc/fetch/api/execute-vc-fetch.d.ts +8 -0
- package/dist/tui/features/vc/fetch/api/execute-vc-fetch.js +13 -0
- package/dist/tui/features/vc/fetch/components/vc-fetch-flow.d.ts +8 -0
- package/dist/tui/features/vc/fetch/components/vc-fetch-flow.js +75 -0
- package/dist/tui/features/vc/init/api/execute-vc-init.d.ts +8 -0
- package/dist/tui/features/vc/init/api/execute-vc-init.js +13 -0
- package/dist/tui/features/vc/init/components/vc-init-flow.d.ts +10 -0
- package/dist/tui/features/vc/init/components/vc-init-flow.js +37 -0
- package/dist/tui/features/vc/merge/api/execute-vc-merge.d.ts +8 -0
- package/dist/tui/features/vc/merge/api/execute-vc-merge.js +13 -0
- package/dist/tui/features/vc/merge/components/vc-merge-flow.d.ts +11 -0
- package/dist/tui/features/vc/merge/components/vc-merge-flow.js +72 -0
- package/dist/tui/features/vc/pull/api/execute-vc-pull.d.ts +8 -0
- package/dist/tui/features/vc/pull/api/execute-vc-pull.js +13 -0
- package/dist/tui/features/vc/pull/components/vc-pull-flow.d.ts +9 -0
- package/dist/tui/features/vc/pull/components/vc-pull-flow.js +83 -0
- package/dist/tui/features/vc/push/api/execute-vc-push.d.ts +8 -0
- package/dist/tui/features/vc/push/api/execute-vc-push.js +13 -0
- package/dist/tui/features/vc/push/components/vc-push-flow.d.ts +8 -0
- package/dist/tui/features/vc/push/components/vc-push-flow.js +83 -0
- package/dist/tui/features/vc/remote/api/execute-vc-remote.d.ts +8 -0
- package/dist/tui/features/vc/remote/api/execute-vc-remote.js +13 -0
- package/dist/tui/features/vc/remote/components/vc-remote-flow.d.ts +9 -0
- package/dist/tui/features/vc/remote/components/vc-remote-flow.js +42 -0
- package/dist/tui/features/vc/reset/api/execute-vc-reset.d.ts +8 -0
- package/dist/tui/features/vc/reset/api/execute-vc-reset.js +13 -0
- package/dist/tui/features/vc/reset/components/vc-reset-flow.d.ts +10 -0
- package/dist/tui/features/vc/reset/components/vc-reset-flow.js +63 -0
- package/dist/tui/features/vc/status/api/execute-vc-status.d.ts +8 -0
- package/dist/tui/features/vc/status/api/execute-vc-status.js +13 -0
- package/dist/tui/features/vc/status/components/vc-status-flow.d.ts +10 -0
- package/dist/tui/features/vc/status/components/vc-status-flow.js +133 -0
- package/dist/tui/lib/environment.d.ts +8 -0
- package/dist/tui/lib/environment.js +8 -0
- package/dist/tui/utils/error-messages.d.ts +5 -1
- package/dist/tui/utils/error-messages.js +32 -3
- package/node_modules/@campfirein/brv-transport-client/LICENSE +95 -0
- package/node_modules/@campfirein/brv-transport-client/README.md +3 -4
- package/node_modules/@campfirein/brv-transport-client/package.json +2 -2
- package/oclif.manifest.json +985 -65
- package/package.json +13 -5
- package/dist/oclif/hooks/prerun/validate-brv-config-version.d.ts +0 -33
- package/dist/oclif/hooks/prerun/validate-brv-config-version.js +0 -86
- package/dist/server/core/domain/entities/bullet.d.ts +0 -51
- package/dist/server/core/domain/entities/bullet.js +0 -94
- package/dist/server/core/domain/entities/memory.d.ts +0 -55
- package/dist/server/core/domain/entities/memory.js +0 -90
- package/dist/server/core/domain/entities/playbook.d.ts +0 -80
- package/dist/server/core/domain/entities/playbook.js +0 -214
- package/dist/server/core/domain/entities/presigned-url.d.ts +0 -9
- package/dist/server/core/domain/entities/presigned-url.js +0 -18
- package/dist/server/core/domain/entities/presigned-urls-response.d.ts +0 -10
- package/dist/server/core/domain/entities/presigned-urls-response.js +0 -18
- package/dist/server/core/domain/entities/retrieve-result.d.ts +0 -35
- package/dist/server/core/domain/entities/retrieve-result.js +0 -35
- package/dist/server/core/domain/errors/headless-prompt-error.d.ts +0 -11
- package/dist/server/core/domain/errors/headless-prompt-error.js +0 -18
- package/dist/server/core/interfaces/services/i-legacy-rule-detector.d.ts +0 -56
- package/dist/server/core/interfaces/services/i-memory-retrieval-service.d.ts +0 -39
- package/dist/server/core/interfaces/services/i-memory-storage-service.d.ts +0 -53
- package/dist/server/core/interfaces/services/i-terminal.d.ts +0 -146
- package/dist/server/core/interfaces/services/i-terminal.js +0 -1
- package/dist/server/core/interfaces/services/i-workspace-detector-service.d.ts +0 -8
- package/dist/server/core/interfaces/services/i-workspace-detector-service.js +0 -1
- package/dist/server/core/interfaces/storage/i-onboarding-preference-store.d.ts +0 -20
- package/dist/server/core/interfaces/storage/i-onboarding-preference-store.js +0 -1
- package/dist/server/infra/connectors/rules/legacy-rule-detector.d.ts +0 -21
- package/dist/server/infra/connectors/rules/legacy-rule-detector.js +0 -106
- package/dist/server/infra/memory/http-memory-retrieval-service.d.ts +0 -18
- package/dist/server/infra/memory/http-memory-retrieval-service.js +0 -64
- package/dist/server/infra/memory/http-memory-storage-service.d.ts +0 -18
- package/dist/server/infra/memory/http-memory-storage-service.js +0 -72
- package/dist/server/infra/memory/memory-to-playbook-mapper.d.ts +0 -33
- package/dist/server/infra/memory/memory-to-playbook-mapper.js +0 -51
- package/dist/server/infra/storage/file-onboarding-preference-store.d.ts +0 -10
- package/dist/server/infra/storage/file-onboarding-preference-store.js +0 -45
- package/dist/server/infra/terminal/headless-terminal.d.ts +0 -91
- package/dist/server/infra/terminal/headless-terminal.js +0 -211
- package/dist/server/infra/workspace/workspace-detector-service.d.ts +0 -57
- package/dist/server/infra/workspace/workspace-detector-service.js +0 -165
- package/dist/server/utils/crash-log.d.ts +0 -14
- package/dist/server/utils/crash-log.js +0 -19
- package/dist/server/utils/emoji-helpers.d.ts +0 -38
- package/dist/server/utils/emoji-helpers.js +0 -42
- package/dist/server/utils/error-handler.d.ts +0 -51
- package/dist/server/utils/error-handler.js +0 -169
- package/dist/server/utils/oclif-error-helpers.d.ts +0 -40
- package/dist/server/utils/oclif-error-helpers.js +0 -46
- package/dist/server/utils/tool-display-formatter.d.ts +0 -53
- package/dist/server/utils/tool-display-formatter.js +0 -257
- package/dist/tui/components/init.d.ts +0 -33
- package/dist/tui/components/init.js +0 -234
- package/dist/tui/features/space/api/get-spaces.d.ts +0 -16
- package/dist/tui/features/space/api/get-spaces.js +0 -17
- package/dist/tui/features/space/api/switch-space.d.ts +0 -11
- package/dist/tui/features/space/api/switch-space.js +0 -24
- package/dist/tui/features/space/components/space-list-view.d.ts +0 -12
- package/dist/tui/features/space/components/space-list-view.js +0 -56
- package/dist/tui/features/space/components/space-switch-flow.d.ts +0 -13
- package/dist/tui/features/space/components/space-switch-flow.js +0 -97
- /package/dist/server/core/interfaces/services/{i-legacy-rule-detector.js → i-git-service.js} +0 -0
- /package/dist/server/core/interfaces/{services/i-memory-retrieval-service.js → storage/i-review-backup-store.js} +0 -0
- /package/dist/server/core/interfaces/{services/i-memory-storage-service.js → vc/i-vc-git-config-store.js} +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { VcMergeAction } from '../../../../../shared/transport/events/vc-events.js';
|
|
3
|
+
import type { CustomDialogCallbacks } from '../../../../types/commands.js';
|
|
4
|
+
type VcMergeFlowProps = CustomDialogCallbacks & {
|
|
5
|
+
action: VcMergeAction;
|
|
6
|
+
allowUnrelatedHistories?: boolean;
|
|
7
|
+
branch?: string;
|
|
8
|
+
message?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function VcMergeFlow({ action, allowUnrelatedHistories, branch, message, onCancel, onComplete }: VcMergeFlowProps): React.ReactNode;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Text, useInput } from 'ink';
|
|
3
|
+
import Spinner from 'ink-spinner';
|
|
4
|
+
import React, { useEffect } from 'react';
|
|
5
|
+
import { formatTransportError } from '../../../../utils/error-messages.js';
|
|
6
|
+
import { useExecuteVcMerge } from '../api/execute-vc-merge.js';
|
|
7
|
+
export function VcMergeFlow({ action, allowUnrelatedHistories, branch, message, onCancel, onComplete }) {
|
|
8
|
+
const mergeMutation = useExecuteVcMerge();
|
|
9
|
+
useInput((_, key) => {
|
|
10
|
+
if (key.escape && !mergeMutation.isPending) {
|
|
11
|
+
onCancel();
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
const fired = React.useRef(false);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (fired.current)
|
|
17
|
+
return;
|
|
18
|
+
fired.current = true;
|
|
19
|
+
const request = { action, allowUnrelatedHistories, branch, message };
|
|
20
|
+
// For TUI --continue without message: send first to get defaultMessage, then commit with it
|
|
21
|
+
if (action === 'continue' && !message) {
|
|
22
|
+
mergeMutation.mutate(request, {
|
|
23
|
+
onError(error) {
|
|
24
|
+
onComplete(`Failed to continue merge: ${formatTransportError(error)}`);
|
|
25
|
+
},
|
|
26
|
+
onSuccess(result) {
|
|
27
|
+
// Got defaultMessage — now commit with it silently (TUI can't spawn editor)
|
|
28
|
+
const commitMessage = result.defaultMessage ?? 'Merge commit';
|
|
29
|
+
mergeMutation.mutate({ action: 'continue', message: commitMessage }, {
|
|
30
|
+
onError(error) {
|
|
31
|
+
onComplete(`Failed to continue merge: ${formatTransportError(error)}`);
|
|
32
|
+
},
|
|
33
|
+
onSuccess() {
|
|
34
|
+
onComplete('Merge commit created.');
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
mergeMutation.mutate(request, {
|
|
42
|
+
onError(error) {
|
|
43
|
+
onComplete(`Failed to ${action} merge: ${formatTransportError(error)}`);
|
|
44
|
+
},
|
|
45
|
+
onSuccess(result) {
|
|
46
|
+
if (result.action === 'abort') {
|
|
47
|
+
onComplete('Merge aborted.');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (result.action === 'continue') {
|
|
51
|
+
onComplete('Merge commit created.');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
// action: 'merge'
|
|
55
|
+
if (result.alreadyUpToDate) {
|
|
56
|
+
onComplete('Already up to date.');
|
|
57
|
+
}
|
|
58
|
+
else if (result.conflicts && result.conflicts.length > 0) {
|
|
59
|
+
const conflictLines = result.conflicts
|
|
60
|
+
.map((c) => `CONFLICT (${c.type}): ${c.path}`)
|
|
61
|
+
.join('\n');
|
|
62
|
+
onComplete(`${conflictLines}\nAutomatic merge failed; fix conflicts and then commit the result.`);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
onComplete(`Merged branch '${branch}'.`);
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}, []);
|
|
70
|
+
const statusText = action === 'abort' ? 'Aborting merge...' : action === 'continue' ? 'Continuing merge...' : `Merging ${branch}...`;
|
|
71
|
+
return (_jsxs(Text, { children: [_jsx(Spinner, { type: "dots" }), " ", statusText] }));
|
|
72
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MutationConfig } from '../../../../lib/react-query.js';
|
|
2
|
+
import { type IVcPullRequest, type IVcPullResponse } from '../../../../../shared/transport/events/vc-events.js';
|
|
3
|
+
export declare const executeVcPull: (request?: IVcPullRequest) => Promise<IVcPullResponse>;
|
|
4
|
+
type UseExecuteVcPullOptions = {
|
|
5
|
+
mutationConfig?: MutationConfig<typeof executeVcPull>;
|
|
6
|
+
};
|
|
7
|
+
export declare const useExecuteVcPull: ({ mutationConfig }?: UseExecuteVcPullOptions) => import("@tanstack/react-query").UseMutationResult<IVcPullResponse, Error, IVcPullRequest | undefined, unknown>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useMutation } from '@tanstack/react-query';
|
|
2
|
+
import { VcEvents } from '../../../../../shared/transport/events/vc-events.js';
|
|
3
|
+
import { useTransportStore } from '../../../../stores/transport-store.js';
|
|
4
|
+
export const executeVcPull = (request) => {
|
|
5
|
+
const { apiClient } = useTransportStore.getState();
|
|
6
|
+
if (!apiClient)
|
|
7
|
+
return Promise.reject(new Error('Not connected'));
|
|
8
|
+
return apiClient.request(VcEvents.PULL, request);
|
|
9
|
+
};
|
|
10
|
+
export const useExecuteVcPull = ({ mutationConfig } = {}) => useMutation({
|
|
11
|
+
...mutationConfig,
|
|
12
|
+
mutationFn: executeVcPull,
|
|
13
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { CustomDialogCallbacks } from '../../../../types/commands.js';
|
|
3
|
+
type VcPullFlowProps = CustomDialogCallbacks & {
|
|
4
|
+
allowUnrelatedHistories?: boolean;
|
|
5
|
+
branch?: string;
|
|
6
|
+
remote?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function VcPullFlow({ allowUnrelatedHistories, branch, onCancel, onComplete, remote }: VcPullFlowProps): React.ReactNode;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text, useInput } from 'ink';
|
|
3
|
+
import Spinner from 'ink-spinner';
|
|
4
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
5
|
+
import { VcErrorCode } from '../../../../../shared/transport/events/vc-events.js';
|
|
6
|
+
import { InlineInput } from '../../../../components/inline-prompts/inline-input.js';
|
|
7
|
+
import { useTheme } from '../../../../hooks/index.js';
|
|
8
|
+
import { getWebAppUrl } from '../../../../lib/environment.js';
|
|
9
|
+
import { formatTransportError, getTransportErrorCode } from '../../../../utils/error-messages.js';
|
|
10
|
+
import { useExecuteVcRemote } from '../../remote/api/execute-vc-remote.js';
|
|
11
|
+
import { useExecuteVcPull } from '../api/execute-vc-pull.js';
|
|
12
|
+
function validateRemoteUrl(value) {
|
|
13
|
+
if (!value)
|
|
14
|
+
return 'URL is required';
|
|
15
|
+
try {
|
|
16
|
+
const parsed = new URL(value);
|
|
17
|
+
if (parsed.protocol !== 'https:') {
|
|
18
|
+
return 'URL must start with https://';
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return 'Invalid URL';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export function VcPullFlow({ allowUnrelatedHistories, branch, onCancel, onComplete, remote }) {
|
|
27
|
+
const { theme: { colors }, } = useTheme();
|
|
28
|
+
const [step, setStep] = useState('pulling');
|
|
29
|
+
const pullMutation = useExecuteVcPull();
|
|
30
|
+
const remoteMutation = useExecuteVcRemote();
|
|
31
|
+
useInput((_, key) => {
|
|
32
|
+
if (key.escape && !pullMutation.isPending && !remoteMutation.isPending) {
|
|
33
|
+
onCancel();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
const executePull = useCallback(() => {
|
|
37
|
+
pullMutation.mutate({ allowUnrelatedHistories, branch, remote }, {
|
|
38
|
+
onError(error) {
|
|
39
|
+
if (getTransportErrorCode(error) === VcErrorCode.NO_REMOTE) {
|
|
40
|
+
setStep('configuring_remote');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
onComplete(`Failed to pull: ${formatTransportError(error)}`);
|
|
44
|
+
},
|
|
45
|
+
onSuccess(result) {
|
|
46
|
+
if (result.conflicts && result.conflicts.length > 0) {
|
|
47
|
+
const conflictLines = result.conflicts
|
|
48
|
+
.map((c) => `CONFLICT (${c.type}): ${c.path}`)
|
|
49
|
+
.join('\n');
|
|
50
|
+
onComplete(`${conflictLines}\nAutomatic merge failed; fix conflicts and then commit the result.`);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
onComplete(result.alreadyUpToDate ? 'Already up to date.' : `Pulled from origin/${result.branch}.`);
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
}, [allowUnrelatedHistories, branch, onComplete, pullMutation, remote]);
|
|
58
|
+
const fired = useRef(false);
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (fired.current)
|
|
61
|
+
return;
|
|
62
|
+
fired.current = true;
|
|
63
|
+
executePull();
|
|
64
|
+
}, []);
|
|
65
|
+
const handleUrlSubmit = useCallback((url) => {
|
|
66
|
+
remoteMutation.mutate({ subcommand: 'add', url }, {
|
|
67
|
+
onError(error) {
|
|
68
|
+
onComplete(`Failed to add remote: ${formatTransportError(error)}`);
|
|
69
|
+
},
|
|
70
|
+
onSuccess() {
|
|
71
|
+
setStep('pulling');
|
|
72
|
+
executePull();
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
}, [executePull, onComplete, remoteMutation]);
|
|
76
|
+
if (step === 'configuring_remote') {
|
|
77
|
+
if (remoteMutation.isPending) {
|
|
78
|
+
return (_jsxs(Text, { children: [_jsx(Spinner, { type: "dots" }), " Adding remote..."] }));
|
|
79
|
+
}
|
|
80
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.warning, children: "No remote configured." }), _jsx(Text, {}), _jsx(Text, { children: "To connect to cloud:" }), _jsxs(Text, { children: [" Go to ", _jsx(Text, { bold: true, children: getWebAppUrl() }), " \u2192 create or open a Space"] }), _jsx(Text, { children: " and copy the remote URL." })] }), _jsx(InlineInput, { message: "Paste your remote URL:", onSubmit: handleUrlSubmit, validate: validateRemoteUrl })] }));
|
|
81
|
+
}
|
|
82
|
+
return (_jsxs(Text, { children: [_jsx(Spinner, { type: "dots" }), " Pulling..."] }));
|
|
83
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MutationConfig } from '../../../../lib/react-query.js';
|
|
2
|
+
import { type IVcPushRequest, type IVcPushResponse } from '../../../../../shared/transport/events/vc-events.js';
|
|
3
|
+
export declare const executeVcPush: (request: IVcPushRequest) => Promise<IVcPushResponse>;
|
|
4
|
+
type UseExecuteVcPushOptions = {
|
|
5
|
+
mutationConfig?: MutationConfig<typeof executeVcPush>;
|
|
6
|
+
};
|
|
7
|
+
export declare const useExecuteVcPush: ({ mutationConfig }?: UseExecuteVcPushOptions) => import("@tanstack/react-query").UseMutationResult<IVcPushResponse, Error, IVcPushRequest, unknown>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useMutation } from '@tanstack/react-query';
|
|
2
|
+
import { VcEvents, } from '../../../../../shared/transport/events/vc-events.js';
|
|
3
|
+
import { useTransportStore } from '../../../../stores/transport-store.js';
|
|
4
|
+
export const executeVcPush = (request) => {
|
|
5
|
+
const { apiClient } = useTransportStore.getState();
|
|
6
|
+
if (!apiClient)
|
|
7
|
+
return Promise.reject(new Error('Not connected'));
|
|
8
|
+
return apiClient.request(VcEvents.PUSH, request);
|
|
9
|
+
};
|
|
10
|
+
export const useExecuteVcPush = ({ mutationConfig } = {}) => useMutation({
|
|
11
|
+
...mutationConfig,
|
|
12
|
+
mutationFn: executeVcPush,
|
|
13
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { CustomDialogCallbacks } from '../../../../types/commands.js';
|
|
3
|
+
type VcPushFlowProps = CustomDialogCallbacks & {
|
|
4
|
+
branch?: string;
|
|
5
|
+
setUpstream?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function VcPushFlow({ branch, onCancel, onComplete, setUpstream }: VcPushFlowProps): React.ReactNode;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text, useInput } from 'ink';
|
|
3
|
+
import Spinner from 'ink-spinner';
|
|
4
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
5
|
+
import { VcErrorCode } from '../../../../../shared/transport/events/vc-events.js';
|
|
6
|
+
import { InlineInput } from '../../../../components/inline-prompts/inline-input.js';
|
|
7
|
+
import { useTheme } from '../../../../hooks/index.js';
|
|
8
|
+
import { getWebAppUrl } from '../../../../lib/environment.js';
|
|
9
|
+
import { formatTransportError, getTransportErrorCode } from '../../../../utils/error-messages.js';
|
|
10
|
+
import { useExecuteVcRemote } from '../../remote/api/execute-vc-remote.js';
|
|
11
|
+
import { useExecuteVcPush } from '../api/execute-vc-push.js';
|
|
12
|
+
function validateRemoteUrl(value) {
|
|
13
|
+
if (!value)
|
|
14
|
+
return 'URL is required';
|
|
15
|
+
try {
|
|
16
|
+
const parsed = new URL(value);
|
|
17
|
+
if (parsed.protocol !== 'https:') {
|
|
18
|
+
return 'URL must start with https://';
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return 'Invalid URL';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export function VcPushFlow({ branch, onCancel, onComplete, setUpstream }) {
|
|
27
|
+
const { theme: { colors }, } = useTheme();
|
|
28
|
+
const [step, setStep] = useState('pushing');
|
|
29
|
+
const pushMutation = useExecuteVcPush();
|
|
30
|
+
const remoteMutation = useExecuteVcRemote();
|
|
31
|
+
useInput((_, key) => {
|
|
32
|
+
if (key.escape && !pushMutation.isPending && !remoteMutation.isPending) {
|
|
33
|
+
onCancel();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
const executePush = useCallback((overrideSetUpstream) => {
|
|
37
|
+
pushMutation.mutate({ branch, setUpstream: overrideSetUpstream ?? setUpstream }, {
|
|
38
|
+
onError(error) {
|
|
39
|
+
if (getTransportErrorCode(error) === VcErrorCode.NO_REMOTE) {
|
|
40
|
+
setStep('configuring_remote');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
onComplete(`Failed to push: ${formatTransportError(error)}`);
|
|
44
|
+
},
|
|
45
|
+
onSuccess(result) {
|
|
46
|
+
if (result.alreadyUpToDate) {
|
|
47
|
+
onComplete('Everything up-to-date.');
|
|
48
|
+
}
|
|
49
|
+
else if (result.upstreamSet) {
|
|
50
|
+
onComplete(`Pushed to origin/${result.branch} and set upstream.`);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
onComplete(`Pushed to origin/${result.branch}.`);
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
}, [branch, onComplete, pushMutation, setUpstream]);
|
|
58
|
+
const fired = useRef(false);
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (fired.current)
|
|
61
|
+
return;
|
|
62
|
+
fired.current = true;
|
|
63
|
+
executePush();
|
|
64
|
+
}, []);
|
|
65
|
+
const handleUrlSubmit = useCallback((url) => {
|
|
66
|
+
remoteMutation.mutate({ subcommand: 'add', url }, {
|
|
67
|
+
onError(error) {
|
|
68
|
+
onComplete(`Failed to add remote: ${formatTransportError(error)}`);
|
|
69
|
+
},
|
|
70
|
+
onSuccess() {
|
|
71
|
+
setStep('pushing');
|
|
72
|
+
executePush(true);
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
}, [executePush, onComplete, remoteMutation]);
|
|
76
|
+
if (step === 'configuring_remote') {
|
|
77
|
+
if (remoteMutation.isPending) {
|
|
78
|
+
return (_jsxs(Text, { children: [_jsx(Spinner, { type: "dots" }), " Adding remote..."] }));
|
|
79
|
+
}
|
|
80
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.warning, children: "No remote configured." }), _jsx(Text, {}), _jsx(Text, { children: "To connect to cloud:" }), _jsxs(Text, { children: [" Go to ", _jsx(Text, { bold: true, children: getWebAppUrl() }), " \u2192 create or open a Space"] }), _jsx(Text, { children: " and copy the remote URL." })] }), _jsx(InlineInput, { message: "Paste your remote URL:", onSubmit: handleUrlSubmit, validate: validateRemoteUrl })] }));
|
|
81
|
+
}
|
|
82
|
+
return (_jsxs(Text, { children: [_jsx(Spinner, { type: "dots" }), " ", branch ? `Pushing to origin/${branch}...` : 'Pushing...'] }));
|
|
83
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MutationConfig } from '../../../../lib/react-query.js';
|
|
2
|
+
import { type IVcRemoteRequest, type IVcRemoteResponse } from '../../../../../shared/transport/events/vc-events.js';
|
|
3
|
+
export declare const executeVcRemote: (request: IVcRemoteRequest) => Promise<IVcRemoteResponse>;
|
|
4
|
+
type UseExecuteVcRemoteOptions = {
|
|
5
|
+
mutationConfig?: MutationConfig<typeof executeVcRemote>;
|
|
6
|
+
};
|
|
7
|
+
export declare const useExecuteVcRemote: ({ mutationConfig }?: UseExecuteVcRemoteOptions) => import("@tanstack/react-query").UseMutationResult<IVcRemoteResponse, Error, IVcRemoteRequest, unknown>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useMutation } from '@tanstack/react-query';
|
|
2
|
+
import { VcEvents, } from '../../../../../shared/transport/events/vc-events.js';
|
|
3
|
+
import { useTransportStore } from '../../../../stores/transport-store.js';
|
|
4
|
+
export const executeVcRemote = (request) => {
|
|
5
|
+
const { apiClient } = useTransportStore.getState();
|
|
6
|
+
if (!apiClient)
|
|
7
|
+
return Promise.reject(new Error('Not connected'));
|
|
8
|
+
return apiClient.request(VcEvents.REMOTE, request);
|
|
9
|
+
};
|
|
10
|
+
export const useExecuteVcRemote = ({ mutationConfig } = {}) => useMutation({
|
|
11
|
+
...mutationConfig,
|
|
12
|
+
mutationFn: executeVcRemote,
|
|
13
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { VcRemoteSubcommand } from '../../../../../shared/transport/events/vc-events.js';
|
|
3
|
+
import type { CustomDialogCallbacks } from '../../../../types/commands.js';
|
|
4
|
+
type VcRemoteFlowProps = CustomDialogCallbacks & {
|
|
5
|
+
subcommand: VcRemoteSubcommand;
|
|
6
|
+
url?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function VcRemoteFlow({ onCancel, onComplete, subcommand, url }: VcRemoteFlowProps): React.ReactNode;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Text, useInput } from 'ink';
|
|
3
|
+
import Spinner from 'ink-spinner';
|
|
4
|
+
import React, { useEffect } from 'react';
|
|
5
|
+
import { formatTransportError } from '../../../../utils/error-messages.js';
|
|
6
|
+
import { useExecuteVcRemote } from '../api/execute-vc-remote.js';
|
|
7
|
+
const LABELS = {
|
|
8
|
+
add: 'Adding remote...',
|
|
9
|
+
'set-url': 'Updating remote...',
|
|
10
|
+
show: 'Fetching remote...',
|
|
11
|
+
};
|
|
12
|
+
export function VcRemoteFlow({ onCancel, onComplete, subcommand, url }) {
|
|
13
|
+
const remoteMutation = useExecuteVcRemote();
|
|
14
|
+
useInput((_, key) => {
|
|
15
|
+
if (key.escape && !remoteMutation.isPending) {
|
|
16
|
+
onCancel();
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const fired = React.useRef(false);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (fired.current)
|
|
22
|
+
return;
|
|
23
|
+
fired.current = true;
|
|
24
|
+
remoteMutation.mutate({ subcommand, url }, {
|
|
25
|
+
onError(error) {
|
|
26
|
+
onComplete(`Failed: ${formatTransportError(error)}`);
|
|
27
|
+
},
|
|
28
|
+
onSuccess(result) {
|
|
29
|
+
if (result.action === 'show') {
|
|
30
|
+
onComplete(result.url ? `origin: ${result.url}` : 'No remote configured.');
|
|
31
|
+
}
|
|
32
|
+
else if (result.action === 'add') {
|
|
33
|
+
onComplete(`Remote 'origin' set to ${result.url}.`);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
onComplete(`Remote 'origin' updated to ${result.url}.`);
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
}, []);
|
|
41
|
+
return (_jsxs(Text, { children: [_jsx(Spinner, { type: "dots" }), " ", LABELS[subcommand]] }));
|
|
42
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MutationConfig } from '../../../../lib/react-query.js';
|
|
2
|
+
import { type IVcResetRequest, type IVcResetResponse } from '../../../../../shared/transport/events/vc-events.js';
|
|
3
|
+
export declare const executeVcReset: (request: IVcResetRequest) => Promise<IVcResetResponse>;
|
|
4
|
+
type UseExecuteVcResetOptions = {
|
|
5
|
+
mutationConfig?: MutationConfig<typeof executeVcReset>;
|
|
6
|
+
};
|
|
7
|
+
export declare const useExecuteVcReset: ({ mutationConfig }?: UseExecuteVcResetOptions) => import("@tanstack/react-query").UseMutationResult<IVcResetResponse, Error, IVcResetRequest, unknown>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useMutation } from '@tanstack/react-query';
|
|
2
|
+
import { VcEvents } from '../../../../../shared/transport/events/vc-events.js';
|
|
3
|
+
import { useTransportStore } from '../../../../stores/transport-store.js';
|
|
4
|
+
export const executeVcReset = (request) => {
|
|
5
|
+
const { apiClient } = useTransportStore.getState();
|
|
6
|
+
if (!apiClient)
|
|
7
|
+
return Promise.reject(new Error('Not connected'));
|
|
8
|
+
return apiClient.request(VcEvents.RESET, request);
|
|
9
|
+
};
|
|
10
|
+
export const useExecuteVcReset = ({ mutationConfig } = {}) => useMutation({
|
|
11
|
+
...mutationConfig,
|
|
12
|
+
mutationFn: executeVcReset,
|
|
13
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { VcResetMode } from '../../../../../shared/transport/events/vc-events.js';
|
|
3
|
+
import type { CustomDialogCallbacks } from '../../../../types/commands.js';
|
|
4
|
+
type VcResetFlowProps = CustomDialogCallbacks & {
|
|
5
|
+
filePaths?: string[];
|
|
6
|
+
mode?: VcResetMode;
|
|
7
|
+
ref?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function VcResetFlow({ filePaths, mode, onCancel, onComplete, ref }: VcResetFlowProps): React.ReactNode;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Text, useInput } from 'ink';
|
|
3
|
+
import Spinner from 'ink-spinner';
|
|
4
|
+
import { useEffect, useState } from 'react';
|
|
5
|
+
import { InlineConfirm } from '../../../../components/inline-prompts/inline-confirm.js';
|
|
6
|
+
import { formatTransportError } from '../../../../utils/error-messages.js';
|
|
7
|
+
import { useExecuteVcReset } from '../api/execute-vc-reset.js';
|
|
8
|
+
export function VcResetFlow({ filePaths, mode, onCancel, onComplete, ref }) {
|
|
9
|
+
const needsConfirm = mode === 'hard';
|
|
10
|
+
const [step, setStep] = useState(needsConfirm ? 'confirm' : 'executing');
|
|
11
|
+
const resetMutation = useExecuteVcReset();
|
|
12
|
+
useInput((_, key) => {
|
|
13
|
+
if (key.escape && !resetMutation.isPending) {
|
|
14
|
+
onCancel();
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (step !== 'executing')
|
|
19
|
+
return;
|
|
20
|
+
const request = filePaths
|
|
21
|
+
? { filePaths }
|
|
22
|
+
: { mode: mode ?? 'mixed', ref };
|
|
23
|
+
resetMutation.mutate(request, {
|
|
24
|
+
onError(error) {
|
|
25
|
+
onComplete(`Failed to reset: ${formatTransportError(error)}`);
|
|
26
|
+
},
|
|
27
|
+
onSuccess(result) {
|
|
28
|
+
if (result.filesUnstaged === undefined) {
|
|
29
|
+
if (result.headSha) {
|
|
30
|
+
onComplete(`HEAD is now at ${result.headSha.slice(0, 7)}`);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
onComplete(''); // Empty repo — silent no-op, matches git
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else if (result.filesUnstaged === 0) {
|
|
37
|
+
onComplete('Nothing to unstage.');
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
onComplete(`Unstaged ${result.filesUnstaged} file(s).`);
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
}, [step]);
|
|
45
|
+
if (step === 'confirm') {
|
|
46
|
+
return (_jsx(InlineConfirm, { default: false, message: `This will discard all changes and reset to ${ref ?? 'HEAD'}. Continue`, onConfirm: (confirmed) => {
|
|
47
|
+
if (confirmed) {
|
|
48
|
+
setStep('executing');
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
onComplete('Reset cancelled.');
|
|
52
|
+
}
|
|
53
|
+
} }));
|
|
54
|
+
}
|
|
55
|
+
const label = filePaths
|
|
56
|
+
? `Unstaging ${filePaths.join(' ')}...`
|
|
57
|
+
: mode === 'soft'
|
|
58
|
+
? `Soft resetting to ${ref ?? 'HEAD'}...`
|
|
59
|
+
: mode === 'hard'
|
|
60
|
+
? `Hard resetting to ${ref ?? 'HEAD'}...`
|
|
61
|
+
: 'Unstaging all files...';
|
|
62
|
+
return (_jsxs(Text, { children: [_jsx(Spinner, { type: "dots" }), " ", label] }));
|
|
63
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MutationConfig } from '../../../../lib/react-query.js';
|
|
2
|
+
import { type IVcStatusResponse } from '../../../../../shared/transport/events/vc-events.js';
|
|
3
|
+
export declare const executeVcStatus: () => Promise<IVcStatusResponse>;
|
|
4
|
+
type UseExecuteVcStatusOptions = {
|
|
5
|
+
mutationConfig?: MutationConfig<typeof executeVcStatus>;
|
|
6
|
+
};
|
|
7
|
+
export declare const useExecuteVcStatus: ({ mutationConfig }?: UseExecuteVcStatusOptions) => import("@tanstack/react-query").UseMutationResult<IVcStatusResponse, Error, undefined, unknown>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useMutation } from '@tanstack/react-query';
|
|
2
|
+
import { VcEvents } from '../../../../../shared/transport/events/vc-events.js';
|
|
3
|
+
import { useTransportStore } from '../../../../stores/transport-store.js';
|
|
4
|
+
export const executeVcStatus = () => {
|
|
5
|
+
const { apiClient } = useTransportStore.getState();
|
|
6
|
+
if (!apiClient)
|
|
7
|
+
return Promise.reject(new Error('Not connected'));
|
|
8
|
+
return apiClient.request(VcEvents.STATUS, {});
|
|
9
|
+
};
|
|
10
|
+
export const useExecuteVcStatus = ({ mutationConfig } = {}) => useMutation({
|
|
11
|
+
...mutationConfig,
|
|
12
|
+
mutationFn: executeVcStatus,
|
|
13
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VcStatusFlow Component
|
|
3
|
+
*
|
|
4
|
+
* Shows git status of the context tree via VcHandler.
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import type { CustomDialogCallbacks } from '../../../../types/commands.js';
|
|
8
|
+
type VcStatusFlowProps = CustomDialogCallbacks;
|
|
9
|
+
export declare function VcStatusFlow({ onCancel, onComplete }: VcStatusFlowProps): React.ReactNode;
|
|
10
|
+
export {};
|