vibe-squire 2.3.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/README.md +8 -8
- package/dist/generated/prisma/internal/class.js +1 -1
- package/dist/generated/prisma/internal/class.js.map +1 -1
- package/dist/integrations/vibe-kanban/vibe-kanban-destination.module.js +10 -15
- package/dist/integrations/vibe-kanban/vibe-kanban-destination.module.js.map +1 -1
- package/dist/integrations/vibe-kanban/vk-board-adapter.service.d.ts +2 -2
- package/dist/integrations/vibe-kanban/vk-board-adapter.service.js +2 -2
- package/dist/integrations/vibe-kanban/vk-board-adapter.service.js.map +1 -1
- package/dist/integrations/vibe-kanban/{vk-mcp-integration.listener.d.ts → vk-board-integration.listener.d.ts} +3 -5
- package/dist/integrations/vibe-kanban/{vk-mcp-integration.listener.js → vk-board-integration.listener.js} +17 -22
- package/dist/integrations/vibe-kanban/vk-board-integration.listener.js.map +1 -0
- package/dist/integrations/vibe-kanban/vk-status.service.js +6 -6
- package/dist/integrations/vibe-kanban/vk-status.service.js.map +1 -1
- package/dist/integrations/vibe-kanban/vk-ui.controller.d.ts +2 -2
- package/dist/integrations/vibe-kanban/vk-ui.controller.js +2 -2
- package/dist/integrations/vibe-kanban/vk-ui.controller.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/ports/destination-status.port.d.ts +1 -1
- package/dist/ports/injection-tokens.d.ts +0 -1
- package/dist/ports/injection-tokens.js +1 -2
- package/dist/ports/injection-tokens.js.map +1 -1
- package/dist/reinit/reinit.controller.js +1 -1
- package/dist/reinit/reinit.controller.js.map +1 -1
- package/dist/settings/core-settings.schema.js +1 -1
- package/dist/settings/core-settings.schema.js.map +1 -1
- package/dist/setup/setup-evaluation.service.d.ts +1 -1
- package/dist/setup/setup-evaluation.service.js +2 -2
- package/dist/setup/setup-evaluation.service.js.map +1 -1
- package/dist/status/dto/status-snapshot.dto.d.ts +1 -1
- package/dist/status/dto/status-snapshot.dto.js +4 -4
- package/dist/status/dto/status-snapshot.dto.js.map +1 -1
- package/dist/status/status-snapshot.schema.d.ts +1 -1
- package/dist/status/status-snapshot.schema.js +1 -1
- package/dist/status/status-snapshot.schema.js.map +1 -1
- package/dist/sync/poll-cycle/run-poll-prerequisites.d.ts +1 -1
- package/dist/sync/poll-cycle/run-poll-prerequisites.js +3 -3
- package/dist/sync/poll-cycle/run-poll-prerequisites.js.map +1 -1
- package/dist/sync/poll-cycle/vk-board-network-error-heuristic.d.ts +1 -0
- package/dist/sync/poll-cycle/vk-board-network-error-heuristic.js +16 -0
- package/dist/sync/poll-cycle/vk-board-network-error-heuristic.js.map +1 -0
- package/dist/sync/run-poll-cycle.service.js +4 -4
- package/dist/sync/run-poll-cycle.service.js.map +1 -1
- package/dist/sync/sync.controller.js +1 -1
- package/dist/sync/sync.controller.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/ui/public/operator-dashboard.js +3 -3
- package/dist/ui/public/operator-mappings.js +1 -1
- package/dist/ui/ui-vibe-kanban-presenter.d.ts +3 -3
- package/dist/ui/ui-vibe-kanban-presenter.js +8 -8
- package/dist/ui/ui-vibe-kanban-presenter.js.map +1 -1
- package/dist/ui/ui.controller.js +1 -1
- package/dist/ui/ui.controller.js.map +1 -1
- package/dist/ui/views/dashboard.hbs +1 -1
- package/dist/ui/views/mappings.hbs +1 -1
- package/dist/ui/views/vibe-kanban.hbs +2 -2
- package/dist/vibe-kanban/read-vk-main-port.d.ts +1 -0
- package/dist/vibe-kanban/read-vk-main-port.js +32 -0
- package/dist/vibe-kanban/read-vk-main-port.js.map +1 -0
- package/dist/vibe-kanban/resolve-vk-backend-base-url.d.ts +1 -0
- package/dist/vibe-kanban/resolve-vk-backend-base-url.js +46 -0
- package/dist/vibe-kanban/resolve-vk-backend-base-url.js.map +1 -0
- package/dist/vibe-kanban/rest/vibe-kanban-api.client.d.ts +62 -0
- package/dist/vibe-kanban/rest/vibe-kanban-api.client.js +364 -0
- package/dist/vibe-kanban/rest/vibe-kanban-api.client.js.map +1 -0
- package/dist/vibe-kanban/rest/vk-api-envelope.schema.d.ts +7 -0
- package/dist/vibe-kanban/rest/vk-api-envelope.schema.js +10 -0
- package/dist/vibe-kanban/rest/vk-api-envelope.schema.js.map +1 -0
- package/dist/vibe-kanban/rest/vk-remote-api.schema.d.ts +91 -0
- package/dist/vibe-kanban/rest/vk-remote-api.schema.js +64 -0
- package/dist/vibe-kanban/rest/vk-remote-api.schema.js.map +1 -0
- package/dist/vibe-kanban/{vibe-kanban-mcp.service.d.ts → vibe-kanban-board.service.d.ts} +5 -9
- package/dist/vibe-kanban/vibe-kanban-board.service.js +134 -0
- package/dist/vibe-kanban/vibe-kanban-board.service.js.map +1 -0
- package/dist/vibe-kanban/vibe-kanban-context.controller.d.ts +2 -2
- package/dist/vibe-kanban/vibe-kanban-context.controller.js +12 -10
- package/dist/vibe-kanban/vibe-kanban-context.controller.js.map +1 -1
- package/dist/vibe-kanban/{vibe-kanban-mcp-configured.guard.d.ts → vibe-kanban-destination-configured.guard.d.ts} +1 -1
- package/dist/vibe-kanban/{vibe-kanban-mcp-configured.guard.js → vibe-kanban-destination-configured.guard.js} +9 -9
- package/dist/vibe-kanban/vibe-kanban-destination-configured.guard.js.map +1 -0
- package/dist/vibe-kanban/vibe-kanban-destination.d.ts +4 -0
- package/dist/vibe-kanban/vibe-kanban-destination.js +13 -0
- package/dist/vibe-kanban/vibe-kanban-destination.js.map +1 -0
- package/dist/vibe-kanban/{mcp-result/vk-mcp-tool-result.d.ts → vk-board-payload-normalize.d.ts} +1 -4
- package/dist/vibe-kanban/{mcp-result/vk-mcp-tool-result.js → vk-board-payload-normalize.js} +1 -48
- package/dist/vibe-kanban/{mcp-result/vk-mcp-tool-result.js.map → vk-board-payload-normalize.js.map} +1 -1
- package/dist/vibe-kanban/{mcp-result/vk-mcp-list-get-issue-response.schema.d.ts → vk-list-get-issue-response.schema.d.ts} +10 -10
- package/dist/vibe-kanban/{mcp-result/vk-mcp-list-get-issue-response.schema.js → vk-list-get-issue-response.schema.js} +14 -14
- package/dist/vibe-kanban/vk-list-get-issue-response.schema.js.map +1 -0
- package/dist/vibe-kanban/vk-port-file.schema.d.ts +6 -0
- package/dist/vibe-kanban/vk-port-file.schema.js +9 -0
- package/dist/vibe-kanban/vk-port-file.schema.js.map +1 -0
- package/package.json +3 -3
- package/prisma/schema.prisma +1 -1
- package/dist/integrations/vibe-kanban/vk-mcp-integration.listener.js.map +0 -1
- package/dist/ports/vk-mcp-stdio-session.port.d.ts +0 -5
- package/dist/ports/vk-mcp-stdio-session.port.js +0 -3
- package/dist/ports/vk-mcp-stdio-session.port.js.map +0 -1
- package/dist/sync/poll-cycle/mcp-network-error-heuristic.d.ts +0 -1
- package/dist/sync/poll-cycle/mcp-network-error-heuristic.js +0 -13
- package/dist/sync/poll-cycle/mcp-network-error-heuristic.js.map +0 -1
- package/dist/vibe-kanban/mcp-result/mcp-tool-result-text.d.ts +0 -3
- package/dist/vibe-kanban/mcp-result/mcp-tool-result-text.js +0 -26
- package/dist/vibe-kanban/mcp-result/mcp-tool-result-text.js.map +0 -1
- package/dist/vibe-kanban/mcp-result/vk-mcp-list-get-issue-response.schema.js.map +0 -1
- package/dist/vibe-kanban/transport/mcp-transport-config.d.ts +0 -5
- package/dist/vibe-kanban/transport/mcp-transport-config.js +0 -16
- package/dist/vibe-kanban/transport/mcp-transport-config.js.map +0 -1
- package/dist/vibe-kanban/transport/vk-mcp-stdio-session.service.d.ts +0 -20
- package/dist/vibe-kanban/transport/vk-mcp-stdio-session.service.js +0 -124
- package/dist/vibe-kanban/transport/vk-mcp-stdio-session.service.js.map +0 -1
- package/dist/vibe-kanban/transport/vk-stdio-command.schema.d.ts +0 -9
- package/dist/vibe-kanban/transport/vk-stdio-command.schema.js +0 -37
- package/dist/vibe-kanban/transport/vk-stdio-command.schema.js.map +0 -1
- package/dist/vibe-kanban/vibe-kanban-mcp-configured.guard.js.map +0 -1
- package/dist/vibe-kanban/vibe-kanban-mcp.service.js +0 -225
- package/dist/vibe-kanban/vibe-kanban-mcp.service.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# vibe-squire
|
|
2
2
|
|
|
3
|
-
Local background orchestrator that polls **GitHub** for PRs requesting your review and syncs them as issues into **[Vibe Kanban](https://vibekanban.com)** over
|
|
3
|
+
Local background orchestrator that polls **GitHub** for PRs requesting your review and syncs them as issues into **[Vibe Kanban](https://vibekanban.com)** over its **local HTTP API** (same backend the desktop app exposes).
|
|
4
4
|
|
|
5
5
|
Built with [NestJS](https://nestjs.com), [Prisma](https://www.prisma.io) + SQLite, and a hexagonal architecture that keeps source/destination adapters pluggable.
|
|
6
6
|
|
|
@@ -9,19 +9,19 @@ Built with [NestJS](https://nestjs.com), [Prisma](https://www.prisma.io) + SQLit
|
|
|
9
9
|
```mermaid
|
|
10
10
|
graph LR
|
|
11
11
|
GH["GitHub (PRs)"] -- "gh pr list<br/>review-requested:@me" --> VS["vibe-squire<br/>(localhost)"]
|
|
12
|
-
VS -- "
|
|
12
|
+
VS -- "local HTTP API<br/>create / update issue" --> VK["Vibe Kanban<br/>(board)"]
|
|
13
13
|
VS -- "state" --> DB["SQLite"]
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
1. **Scout** — polls GitHub via `gh pr list --search "review-requested:@me"` on a configurable interval.
|
|
17
|
-
2. **Dispatcher** — routes each PR to a Kanban project based on `owner/repo` mappings, deduplicates, and creates/updates issues via the Vibe Kanban
|
|
17
|
+
2. **Dispatcher** — routes each PR to a Kanban project based on `owner/repo` mappings, deduplicates, and creates/updates issues via the Vibe Kanban local API.
|
|
18
18
|
3. **Reconciliation** — when a PR leaves your review queue, the matching Kanban issue is closed automatically.
|
|
19
19
|
|
|
20
20
|
## Prerequisites
|
|
21
21
|
|
|
22
22
|
- **Node.js** >= 20 (LTS)
|
|
23
23
|
- **[`gh`](https://cli.github.com/)** — installed and authenticated (`gh auth login`)
|
|
24
|
-
- **[Vibe Kanban](https://vibekanban.com)** — the
|
|
24
|
+
- **[Vibe Kanban](https://vibekanban.com)** — run the desktop app on the same machine so the local HTTP API (and OAuth session) are available to vibe-squire
|
|
25
25
|
|
|
26
26
|
## Quick start
|
|
27
27
|
|
|
@@ -99,11 +99,11 @@ Server-rendered Handlebars templates served by the same Nest process — no sepa
|
|
|
99
99
|
| `GET` | `/api/status` | Aggregate health, setup, and scheduler snapshot |
|
|
100
100
|
| `GET` | `/api/status/stream` | SSE status stream (heartbeat + events) |
|
|
101
101
|
| `POST` | `/api/sync/run` | Trigger manual sync (cooldown + guards) |
|
|
102
|
-
| `POST` | `/api/reinit` | Soft reinit: re-probe `gh`, DB,
|
|
102
|
+
| `POST` | `/api/reinit` | Soft reinit: re-probe `gh`, DB, Vibe Kanban API; reset backoff |
|
|
103
103
|
| `CRUD` | `/api/settings` | Runtime settings |
|
|
104
104
|
| `CRUD` | `/api/mappings` | Repo → project mappings |
|
|
105
|
-
| `GET` | `/api/vibe-kanban/organizations` |
|
|
106
|
-
| `GET` | `/api/vibe-kanban/projects?organization_id=` |
|
|
105
|
+
| `GET` | `/api/vibe-kanban/organizations` | Proxies VK `GET /api/organizations` |
|
|
106
|
+
| `GET` | `/api/vibe-kanban/projects?organization_id=` | Proxies VK `GET /api/remote/projects` |
|
|
107
107
|
|
|
108
108
|
OpenAPI docs (when enabled): **http://127.0.0.1:3000/api/docs**
|
|
109
109
|
|
|
@@ -155,7 +155,7 @@ npm run start:dev # dev mode with watch (loads .env automatically)
|
|
|
155
155
|
### Testing
|
|
156
156
|
|
|
157
157
|
- **Unit tests** — `src/**/__tests__/**/*.spec.ts`. Pure logic, Zod schemas, helpers.
|
|
158
|
-
- **Integration tests** — `test/*.integration-spec.ts`. Real Prisma + SQLite, Nest module wiring, Supertest HTTP. External boundaries (GitHub `gh`, Vibe Kanban
|
|
158
|
+
- **Integration tests** — `test/*.integration-spec.ts`. Real Prisma + SQLite, Nest module wiring, Supertest HTTP. External boundaries (GitHub `gh`, Vibe Kanban HTTP client) are stubbed.
|
|
159
159
|
|
|
160
160
|
```bash
|
|
161
161
|
npm test && npm run test:integration
|
|
@@ -40,7 +40,7 @@ const config = {
|
|
|
40
40
|
"clientVersion": "7.6.0",
|
|
41
41
|
"engineVersion": "75cbdc1eb7150937890ad5465d861175c6624711",
|
|
42
42
|
"activeProvider": "sqlite",
|
|
43
|
-
"inlineSchema": "// https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n moduleFormat = \"cjs\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\n/// Key-value runtime settings (precedence: env > SQLite row > code default). Keys in `setting-keys.ts`.\nmodel Setting {\n key String @id\n value String\n updatedAt DateTime @updatedAt\n}\n\n/// GitHub `owner/repo` → Vibe Kanban repository UUID (for `start_workspace`).\nmodel RepoProjectMapping {\n id String @id @default(cuid())\n githubRepo String @unique\n vibeKanbanRepoId String\n label String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\n/// Per-scout scheduling / error surface (e.g. `github-pr-reviews`).\nmodel ScoutState {\n scoutId String @id\n lastPollAt DateTime?\n nextPollAt DateTime?\n lastError String?\n /// Increments on poll errors; resets on success/skip. Used for exponential backoff.\n failureStreak Int @default(0)\n /// Last successful GitHub PR scout run (surface unmapped skips in status).\n lastPollCandidatesCount Int?\n lastPollSkippedUnmapped Int?\n lastPollIssuesCreated Int?\n updatedAt DateTime @updatedAt\n}\n\n/// One GitHub PR scout / sync cycle (scheduled or manual) for operator activity UI.\nmodel PollRun {\n id String @id @default(cuid())\n startedAt DateTime @default(now())\n finishedAt DateTime?\n trigger String\n /// completed | aborted | failed\n phase String\n /// When aborted: setup_incomplete, gh_*,
|
|
43
|
+
"inlineSchema": "// https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n moduleFormat = \"cjs\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\n/// Key-value runtime settings (precedence: env > SQLite row > code default). Keys in `setting-keys.ts`.\nmodel Setting {\n key String @id\n value String\n updatedAt DateTime @updatedAt\n}\n\n/// GitHub `owner/repo` → Vibe Kanban repository UUID (for `start_workspace`).\nmodel RepoProjectMapping {\n id String @id @default(cuid())\n githubRepo String @unique\n vibeKanbanRepoId String\n label String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\n/// Per-scout scheduling / error surface (e.g. `github-pr-reviews`).\nmodel ScoutState {\n scoutId String @id\n lastPollAt DateTime?\n nextPollAt DateTime?\n lastError String?\n /// Increments on poll errors; resets on success/skip. Used for exponential backoff.\n failureStreak Int @default(0)\n /// Last successful GitHub PR scout run (surface unmapped skips in status).\n lastPollCandidatesCount Int?\n lastPollSkippedUnmapped Int?\n lastPollIssuesCreated Int?\n updatedAt DateTime @updatedAt\n}\n\n/// One GitHub PR scout / sync cycle (scheduled or manual) for operator activity UI.\nmodel PollRun {\n id String @id @default(cuid())\n startedAt DateTime @default(now())\n finishedAt DateTime?\n trigger String\n /// completed | aborted | failed\n phase String\n /// When aborted: setup_incomplete, gh_*, destination_probe, etc.\n abortReason String?\n errorMessage String?\n candidatesCount Int?\n issuesCreated Int?\n skippedUnmapped Int?\n skippedBot Int?\n skippedBoardLimit Int?\n skippedAlreadyTracked Int?\n skippedLinkedExisting Int?\n skippedTriage Int?\n skippedDeclined Int?\n items PollRunItem[]\n\n @@index([startedAt(sort: Desc)])\n}\n\n/// Per-PR outcome within a PollRun.\nmodel PollRunItem {\n id String @id @default(cuid())\n runId String\n run PollRun @relation(fields: [runId], references: [id], onDelete: Cascade)\n prUrl String\n githubRepo String\n prNumber Int\n prTitle String\n authorLogin String?\n /// created | already_tracked | linked_existing | skipped_unmapped | skipped_bot | skipped_board_limit | skipped_triage | skipped_declined\n decision String\n detail String?\n kanbanIssueId String?\n\n @@index([runId])\n}\n\n/// PRs the operator explicitly declined in triage mode (suppressed until PR leaves scout results).\nmodel DeclinedPullRequest {\n id String @id @default(cuid())\n prUrl String @unique\n declinedAt DateTime @default(now())\n}\n\n/// Tracks Kanban issues created for a GitHub PR (dedupe + reconciliation when PR leaves review queue).\nmodel SyncedPullRequest {\n id String @id @default(cuid())\n githubRepo String\n prNumber Int\n prUrl String @unique\n kanbanIssueId String\n kanbanProjectId String\n vibeKanbanWorkspaceId String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([githubRepo])\n @@index([kanbanProjectId])\n}\n",
|
|
44
44
|
"runtimeDataModel": {
|
|
45
45
|
"models": {},
|
|
46
46
|
"enums": {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class.js","sourceRoot":"","sources":["../../../../src/generated/prisma/internal/class.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqQA,oDAEC;AA1PD,uEAAwD;AAIxD,MAAM,MAAM,GAAkC;IAC5C,iBAAiB,EAAE,EAAE;IACrB,eAAe,EAAE,OAAO;IACxB,eAAe,EAAE,0CAA0C;IAC3D,gBAAgB,EAAE,QAAQ;IAC1B,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"class.js","sourceRoot":"","sources":["../../../../src/generated/prisma/internal/class.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqQA,oDAEC;AA1PD,uEAAwD;AAIxD,MAAM,MAAM,GAAkC;IAC5C,iBAAiB,EAAE,EAAE;IACrB,eAAe,EAAE,OAAO;IACxB,eAAe,EAAE,0CAA0C;IAC3D,gBAAgB,EAAE,QAAQ;IAC1B,cAAc,EAAE,8/GAA8/G;IAC9gH,kBAAkB,EAAE;QAClB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACZ;IACD,wBAAwB,EAAE;QACxB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;KACZ;CACF,CAAA;AAED,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,urIAAurI,CAAC,CAAA;AAC7tI,MAAM,CAAC,sBAAsB,GAAG;IAC9B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,w7IAAw7I,CAAC;IAC78I,KAAK,EAAE,qqdAAqqd;CAC7qd,CAAA;AAED,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IAClD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACnD,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,CAAC,YAAY,GAAG;IACpB,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,yDAAyD,CAAC;IAE/F,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,qEAAqE,CAAC,CAAA;QACpG,OAAO,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;IAED,UAAU,EAAE,6BAA6B;CAC1C,CAAA;AA8MD,SAAgB,oBAAoB;IAClC,OAAO,OAAO,CAAC,eAAe,CAAC,MAAM,CAAuC,CAAA;AAC9E,CAAC"}
|
|
@@ -13,13 +13,13 @@ const setup_module_1 = require("../../setup/setup.module");
|
|
|
13
13
|
const sync_run_state_module_1 = require("../../sync/sync-run-state.module");
|
|
14
14
|
const injection_tokens_1 = require("../../ports/injection-tokens");
|
|
15
15
|
const settings_group_tokens_1 = require("../../settings/settings-group.tokens");
|
|
16
|
-
const
|
|
16
|
+
const vibe_kanban_board_service_1 = require("../../vibe-kanban/vibe-kanban-board.service");
|
|
17
|
+
const vibe_kanban_api_client_1 = require("../../vibe-kanban/rest/vibe-kanban-api.client");
|
|
17
18
|
const vibe_kanban_context_controller_1 = require("../../vibe-kanban/vibe-kanban-context.controller");
|
|
18
|
-
const
|
|
19
|
-
const vk_mcp_stdio_session_service_1 = require("../../vibe-kanban/transport/vk-mcp-stdio-session.service");
|
|
19
|
+
const vibe_kanban_destination_configured_guard_1 = require("../../vibe-kanban/vibe-kanban-destination-configured.guard");
|
|
20
20
|
const vk_board_adapter_service_1 = require("./vk-board-adapter.service");
|
|
21
21
|
const vk_status_service_1 = require("./vk-status.service");
|
|
22
|
-
const
|
|
22
|
+
const vk_board_integration_listener_1 = require("./vk-board-integration.listener");
|
|
23
23
|
const vk_settings_service_1 = require("./vk-settings.service");
|
|
24
24
|
const vk_settings_group_service_1 = require("./vk-settings-group.service");
|
|
25
25
|
const vk_ui_controller_1 = require("./vk-ui.controller");
|
|
@@ -41,17 +41,17 @@ exports.VibeKanbanDestinationModule = VibeKanbanDestinationModule = __decorate([
|
|
|
41
41
|
imports: [setup_module_1.SetupModule, prisma_module_1.PrismaModule, sync_run_state_module_1.SyncRunStateModule],
|
|
42
42
|
controllers: [vibe_kanban_context_controller_1.VibeKanbanContextController, vk_ui_controller_1.VkUiController],
|
|
43
43
|
providers: [
|
|
44
|
-
|
|
44
|
+
vibe_kanban_destination_configured_guard_1.VibeKanbanDestinationConfiguredGuard,
|
|
45
45
|
vk_settings_group_service_1.VkSettingsGroup,
|
|
46
46
|
{
|
|
47
47
|
provide: settings_group_tokens_1.DESTINATION_SETTINGS_GROUP,
|
|
48
48
|
useExisting: vk_settings_group_service_1.VkSettingsGroup,
|
|
49
49
|
},
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
vibe_kanban_api_client_1.VibeKanbanApiClient,
|
|
51
|
+
vibe_kanban_board_service_1.VibeKanbanBoardService,
|
|
52
52
|
vk_board_adapter_service_1.VkBoardAdapterService,
|
|
53
53
|
vk_status_service_1.VkStatusService,
|
|
54
|
-
|
|
54
|
+
vk_board_integration_listener_1.VkBoardIntegrationListener,
|
|
55
55
|
vk_settings_service_1.VkSettings,
|
|
56
56
|
{
|
|
57
57
|
provide: injection_tokens_1.UI_NAV_ENTRIES,
|
|
@@ -63,10 +63,6 @@ exports.VibeKanbanDestinationModule = VibeKanbanDestinationModule = __decorate([
|
|
|
63
63
|
useValue: VK_NAV_BOARD,
|
|
64
64
|
multi: true,
|
|
65
65
|
},
|
|
66
|
-
{
|
|
67
|
-
provide: injection_tokens_1.VK_MCP_STDIO_SESSION_PORT,
|
|
68
|
-
useExisting: vk_mcp_stdio_session_service_1.VkMcpStdioSessionService,
|
|
69
|
-
},
|
|
70
66
|
{
|
|
71
67
|
provide: injection_tokens_1.DESTINATION_BOARD_PORT,
|
|
72
68
|
useExisting: vk_board_adapter_service_1.VkBoardAdapterService,
|
|
@@ -83,11 +79,10 @@ exports.VibeKanbanDestinationModule = VibeKanbanDestinationModule = __decorate([
|
|
|
83
79
|
exports: [
|
|
84
80
|
vk_settings_group_service_1.VkSettingsGroup,
|
|
85
81
|
settings_group_tokens_1.DESTINATION_SETTINGS_GROUP,
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
vibe_kanban_board_service_1.VibeKanbanBoardService,
|
|
83
|
+
vibe_kanban_api_client_1.VibeKanbanApiClient,
|
|
88
84
|
vk_board_adapter_service_1.VkBoardAdapterService,
|
|
89
85
|
vk_settings_service_1.VkSettings,
|
|
90
|
-
injection_tokens_1.VK_MCP_STDIO_SESSION_PORT,
|
|
91
86
|
injection_tokens_1.DESTINATION_BOARD_PORT,
|
|
92
87
|
injection_tokens_1.SYNC_DESTINATION_BOARD_PORT,
|
|
93
88
|
injection_tokens_1.DESTINATION_STATUS_PORT,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vibe-kanban-destination.module.js","sourceRoot":"","sources":["../../../src/integrations/vibe-kanban/vibe-kanban-destination.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAuD;AACvD,8DAA0D;AAC1D,2DAAuD;AACvD,4EAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"vibe-kanban-destination.module.js","sourceRoot":"","sources":["../../../src/integrations/vibe-kanban/vibe-kanban-destination.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAuD;AACvD,8DAA0D;AAC1D,2DAAuD;AACvD,4EAAsE;AACtE,mEAKsC;AAEtC,gFAAkF;AAClF,2FAAqF;AACrF,0FAAoF;AACpF,qGAA+F;AAC/F,yHAAkH;AAClH,yEAAmE;AACnE,2DAAsD;AACtD,mFAA6E;AAC7E,+DAAmD;AACnD,2EAA8D;AAC9D,yDAAoD;AAEpD,MAAM,eAAe,GAAe;IAClC,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,cAAc;CACrB,CAAC;AACF,MAAM,YAAY,GAAe;IAC/B,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,iBAAiB;CACxB,CAAC;AAsDK,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;CAAG,CAAA;AAA9B,kEAA2B;sCAA3B,2BAA2B;IApDvC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,0BAAW,EAAE,4BAAY,EAAE,0CAAkB,CAAC;QACxD,WAAW,EAAE,CAAC,4DAA2B,EAAE,iCAAc,CAAC;QAC1D,SAAS,EAAE;YACT,+EAAoC;YACpC,2CAAe;YACf;gBACE,OAAO,EAAE,kDAA0B;gBACnC,WAAW,EAAE,2CAAe;aAC7B;YACD,4CAAmB;YACnB,kDAAsB;YACtB,gDAAqB;YACrB,mCAAe;YACf,0DAA0B;YAC1B,gCAAU;YACV;gBACE,OAAO,EAAE,iCAAc;gBACvB,QAAQ,EAAE,eAAe;gBACzB,KAAK,EAAE,IAAI;aACA;YACb;gBACE,OAAO,EAAE,iCAAc;gBACvB,QAAQ,EAAE,YAAY;gBACtB,KAAK,EAAE,IAAI;aACA;YACb;gBACE,OAAO,EAAE,yCAAsB;gBAC/B,WAAW,EAAE,gDAAqB;aACnC;YACD;gBACE,OAAO,EAAE,8CAA2B;gBACpC,WAAW,EAAE,gDAAqB;aACnC;YACD;gBACE,OAAO,EAAE,0CAAuB;gBAChC,WAAW,EAAE,mCAAe;aAC7B;SACF;QACD,OAAO,EAAE;YACP,2CAAe;YACf,kDAA0B;YAC1B,kDAAsB;YACtB,4CAAmB;YACnB,gDAAqB;YACrB,gCAAU;YACV,yCAAsB;YACtB,8CAA2B;YAC3B,0CAAuB;YACvB,iCAAc;SACf;KACF,CAAC;GACW,2BAA2B,CAAG"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { VibeKanbanBoardService } from '../../vibe-kanban/vibe-kanban-board.service';
|
|
2
2
|
import type { BoardIssueRef, DestinationBoardPort, WorkspaceStartParams } from '../../ports/destination-board.port';
|
|
3
3
|
export declare class VkBoardAdapterService implements DestinationBoardPort {
|
|
4
4
|
private readonly vk;
|
|
5
|
-
constructor(vk:
|
|
5
|
+
constructor(vk: VibeKanbanBoardService);
|
|
6
6
|
probe(): Promise<void>;
|
|
7
7
|
countActiveIssues(boardId: string): Promise<number>;
|
|
8
8
|
listIssues(boardId: string, opts?: {
|
|
@@ -11,7 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.VkBoardAdapterService = void 0;
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
|
14
|
-
const
|
|
14
|
+
const vibe_kanban_board_service_1 = require("../../vibe-kanban/vibe-kanban-board.service");
|
|
15
15
|
function toBoardIssue(row) {
|
|
16
16
|
return {
|
|
17
17
|
id: row.id,
|
|
@@ -68,6 +68,6 @@ let VkBoardAdapterService = class VkBoardAdapterService {
|
|
|
68
68
|
exports.VkBoardAdapterService = VkBoardAdapterService;
|
|
69
69
|
exports.VkBoardAdapterService = VkBoardAdapterService = __decorate([
|
|
70
70
|
(0, common_1.Injectable)(),
|
|
71
|
-
__metadata("design:paramtypes", [
|
|
71
|
+
__metadata("design:paramtypes", [vibe_kanban_board_service_1.VibeKanbanBoardService])
|
|
72
72
|
], VkBoardAdapterService);
|
|
73
73
|
//# sourceMappingURL=vk-board-adapter.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vk-board-adapter.service.js","sourceRoot":"","sources":["../../../src/integrations/vibe-kanban/vk-board-adapter.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"vk-board-adapter.service.js","sourceRoot":"","sources":["../../../src/integrations/vibe-kanban/vk-board-adapter.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2FAAqF;AAOrF,SAAS,YAAY,CAAC,GAKrB;IACC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC;AACJ,CAAC;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACH;IAA7B,YAA6B,EAA0B;QAA1B,OAAE,GAAF,EAAE,CAAwB;IAAG,CAAC;IAE3D,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,iBAAiB,CAAC,OAAe;QAC/B,OAAO,IAAI,CAAC,EAAE,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,UAAU,CACR,OAAe,EACf,IAA2D;QAE3D,OAAO,IAAI,CAAC,EAAE;aACX,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;aACzB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,QAAQ,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1C,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,EAAE,GAAI,CAAsB,CAAC,EAAE,CAAC;YACtC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,YAAY,CAAC,CAAuC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,MAIX;QACC,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC;YACzB,SAAS,EAAE,MAAM,CAAC,OAAO;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CAAC,OAAe,EAAE,MAAc;QAC/C,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,cAAc,CAAC,MAA4B;QACzC,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,eAAe,CACb,WAAmB,EACnB,IAAmC;QAEnC,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;CACF,CAAA;AA3DY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;qCAEsB,kDAAsB;GAD5C,qBAAqB,CA2DjC"}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { OnApplicationBootstrap } from '@nestjs/common';
|
|
2
2
|
import { type AppEnv } from '../../config/app-env.token';
|
|
3
|
-
import {
|
|
4
|
-
import type { VkMcpStdioSessionPort } from '../../ports/vk-mcp-stdio-session.port';
|
|
3
|
+
import { VibeKanbanBoardService } from '../../vibe-kanban/vibe-kanban-board.service';
|
|
5
4
|
import { SyncRunStateService } from '../../sync/sync-run-state.service';
|
|
6
5
|
import { StatusEventsService } from '../../events/status-events.service';
|
|
7
|
-
export declare class
|
|
6
|
+
export declare class VkBoardIntegrationListener implements OnApplicationBootstrap {
|
|
8
7
|
private readonly appEnv;
|
|
9
|
-
private readonly stdioSession;
|
|
10
8
|
private readonly vk;
|
|
11
9
|
private readonly runState;
|
|
12
10
|
private readonly statusEvents;
|
|
13
11
|
private readonly logger;
|
|
14
|
-
constructor(appEnv: AppEnv,
|
|
12
|
+
constructor(appEnv: AppEnv, vk: VibeKanbanBoardService, runState: SyncRunStateService, statusEvents: StatusEventsService);
|
|
15
13
|
onApplicationBootstrap(): Promise<void>;
|
|
16
14
|
handleIntegrationSettingsChanged(): Promise<void>;
|
|
17
15
|
private reconcile;
|
|
@@ -11,29 +11,26 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
var
|
|
14
|
+
var VkBoardIntegrationListener_1;
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.
|
|
16
|
+
exports.VkBoardIntegrationListener = void 0;
|
|
17
17
|
const common_1 = require("@nestjs/common");
|
|
18
18
|
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
19
19
|
const app_env_token_1 = require("../../config/app-env.token");
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const mcp_transport_config_1 = require("../../vibe-kanban/transport/mcp-transport-config");
|
|
20
|
+
const vibe_kanban_board_service_1 = require("../../vibe-kanban/vibe-kanban-board.service");
|
|
21
|
+
const vibe_kanban_destination_1 = require("../../vibe-kanban/vibe-kanban-destination");
|
|
23
22
|
const sync_run_state_service_1 = require("../../sync/sync-run-state.service");
|
|
24
23
|
const status_events_service_1 = require("../../events/status-events.service");
|
|
25
24
|
const integration_settings_events_1 = require("../../events/integration-settings.events");
|
|
26
25
|
const VK_DESTINATION_ID = 'vibe_kanban';
|
|
27
|
-
let
|
|
26
|
+
let VkBoardIntegrationListener = VkBoardIntegrationListener_1 = class VkBoardIntegrationListener {
|
|
28
27
|
appEnv;
|
|
29
|
-
stdioSession;
|
|
30
28
|
vk;
|
|
31
29
|
runState;
|
|
32
30
|
statusEvents;
|
|
33
|
-
logger = new common_1.Logger(
|
|
34
|
-
constructor(appEnv,
|
|
31
|
+
logger = new common_1.Logger(VkBoardIntegrationListener_1.name);
|
|
32
|
+
constructor(appEnv, vk, runState, statusEvents) {
|
|
35
33
|
this.appEnv = appEnv;
|
|
36
|
-
this.stdioSession = stdioSession;
|
|
37
34
|
this.vk = vk;
|
|
38
35
|
this.runState = runState;
|
|
39
36
|
this.statusEvents = statusEvents;
|
|
@@ -45,15 +42,14 @@ let VkMcpIntegrationListener = VkMcpIntegrationListener_1 = class VkMcpIntegrati
|
|
|
45
42
|
await this.reconcile('event');
|
|
46
43
|
}
|
|
47
44
|
async reconcile(source) {
|
|
48
|
-
const vkDest = (0,
|
|
45
|
+
const vkDest = (0, vibe_kanban_destination_1.isVibeKanbanDestination)(this.appEnv.destinationType);
|
|
49
46
|
if (!vkDest) {
|
|
50
|
-
await this.stdioSession.shutdown();
|
|
51
47
|
this.runState.setDestinationHealth(VK_DESTINATION_ID, {
|
|
52
48
|
state: 'unknown',
|
|
53
49
|
});
|
|
54
50
|
this.statusEvents.emitChanged();
|
|
55
51
|
if (source === 'event') {
|
|
56
|
-
this.logger.debug('
|
|
52
|
+
this.logger.debug('Vibe Kanban destination inactive; health reset to unknown');
|
|
57
53
|
}
|
|
58
54
|
return;
|
|
59
55
|
}
|
|
@@ -63,7 +59,7 @@ let VkMcpIntegrationListener = VkMcpIntegrationListener_1 = class VkMcpIntegrati
|
|
|
63
59
|
state: 'ok',
|
|
64
60
|
lastOkAt: new Date().toISOString(),
|
|
65
61
|
});
|
|
66
|
-
this.logger.log(`Vibe Kanban
|
|
62
|
+
this.logger.log(`Vibe Kanban API probed OK (${source})`);
|
|
67
63
|
}
|
|
68
64
|
catch (e) {
|
|
69
65
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -81,24 +77,23 @@ let VkMcpIntegrationListener = VkMcpIntegrationListener_1 = class VkMcpIntegrati
|
|
|
81
77
|
message: msg,
|
|
82
78
|
});
|
|
83
79
|
}
|
|
84
|
-
this.logger.warn(`
|
|
80
|
+
this.logger.warn(`Vibe Kanban API probe failed (${source}): ${msg}`);
|
|
85
81
|
}
|
|
86
82
|
this.statusEvents.emitChanged();
|
|
87
83
|
}
|
|
88
84
|
};
|
|
89
|
-
exports.
|
|
85
|
+
exports.VkBoardIntegrationListener = VkBoardIntegrationListener;
|
|
90
86
|
__decorate([
|
|
91
87
|
(0, event_emitter_1.OnEvent)(integration_settings_events_1.INTEGRATION_SETTINGS_CHANGED),
|
|
92
88
|
__metadata("design:type", Function),
|
|
93
89
|
__metadata("design:paramtypes", []),
|
|
94
90
|
__metadata("design:returntype", Promise)
|
|
95
|
-
],
|
|
96
|
-
exports.
|
|
91
|
+
], VkBoardIntegrationListener.prototype, "handleIntegrationSettingsChanged", null);
|
|
92
|
+
exports.VkBoardIntegrationListener = VkBoardIntegrationListener = VkBoardIntegrationListener_1 = __decorate([
|
|
97
93
|
(0, common_1.Injectable)(),
|
|
98
94
|
__param(0, (0, common_1.Inject)(app_env_token_1.APP_ENV)),
|
|
99
|
-
|
|
100
|
-
__metadata("design:paramtypes", [Object, Object, vibe_kanban_mcp_service_1.VibeKanbanMcpService,
|
|
95
|
+
__metadata("design:paramtypes", [Object, vibe_kanban_board_service_1.VibeKanbanBoardService,
|
|
101
96
|
sync_run_state_service_1.SyncRunStateService,
|
|
102
97
|
status_events_service_1.StatusEventsService])
|
|
103
|
-
],
|
|
104
|
-
//# sourceMappingURL=vk-
|
|
98
|
+
], VkBoardIntegrationListener);
|
|
99
|
+
//# sourceMappingURL=vk-board-integration.listener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vk-board-integration.listener.js","sourceRoot":"","sources":["../../../src/integrations/vibe-kanban/vk-board-integration.listener.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ const common_1 = require("@nestjs/common");
|
|
|
17
17
|
const app_env_token_1 = require("../../config/app-env.token");
|
|
18
18
|
const prisma_service_1 = require("../../prisma/prisma.service");
|
|
19
19
|
const settings_service_1 = require("../../settings/settings.service");
|
|
20
|
-
const
|
|
20
|
+
const vibe_kanban_destination_1 = require("../../vibe-kanban/vibe-kanban-destination");
|
|
21
21
|
const sync_run_state_service_1 = require("../../sync/sync-run-state.service");
|
|
22
22
|
let VkStatusService = class VkStatusService {
|
|
23
23
|
prisma;
|
|
@@ -33,19 +33,19 @@ let VkStatusService = class VkStatusService {
|
|
|
33
33
|
}
|
|
34
34
|
async checkReadiness() {
|
|
35
35
|
const configuration = {
|
|
36
|
-
|
|
36
|
+
vibe_kanban_board_active: (0, vibe_kanban_destination_1.isVibeKanbanBoardDestination)(this.appEnv.destinationType),
|
|
37
37
|
};
|
|
38
|
-
if (!(0,
|
|
38
|
+
if (!(0, vibe_kanban_destination_1.isVibeKanbanDestination)(this.appEnv.destinationType)) {
|
|
39
39
|
return { state: 'ok', configuration };
|
|
40
40
|
}
|
|
41
41
|
const mappingCount = await this.prisma.repoProjectMapping.count();
|
|
42
42
|
const defaultProjectId = this.settings.getEffective('default_project_id');
|
|
43
43
|
const defaultOrganizationId = this.settings.getEffective('default_organization_id');
|
|
44
|
-
const
|
|
44
|
+
const vibeKanbanBoardActive = (0, vibe_kanban_destination_1.isVibeKanbanBoardDestination)(this.appEnv.destinationType);
|
|
45
45
|
const defaultBoardReady = defaultOrganizationId.trim().length > 0 &&
|
|
46
46
|
defaultProjectId.trim().length > 0;
|
|
47
47
|
const hasRouting = defaultBoardReady && mappingCount > 0;
|
|
48
|
-
const setupComplete = hasRouting &&
|
|
48
|
+
const setupComplete = hasRouting && vibeKanbanBoardActive;
|
|
49
49
|
const errors = [];
|
|
50
50
|
if (!defaultBoardReady) {
|
|
51
51
|
errors.push({
|
|
@@ -71,7 +71,7 @@ let VkStatusService = class VkStatusService {
|
|
|
71
71
|
...(errors.length > 0 ? { errors } : {}),
|
|
72
72
|
configuration,
|
|
73
73
|
setupMeta: {
|
|
74
|
-
|
|
74
|
+
vibeKanbanBoardActive,
|
|
75
75
|
hasRouting,
|
|
76
76
|
mappingCount,
|
|
77
77
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vk-status.service.js","sourceRoot":"","sources":["../../../src/integrations/vibe-kanban/vk-status.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8DAAkE;AAClE,gEAA4D;AAC5D,sEAAkE;AAClE,
|
|
1
|
+
{"version":3,"file":"vk-status.service.js","sourceRoot":"","sources":["../../../src/integrations/vibe-kanban/vk-status.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type AppEnv } from '../../config/app-env.token';
|
|
2
2
|
import type { Response } from 'express';
|
|
3
3
|
import { SettingsService } from '../../settings/settings.service';
|
|
4
|
-
import {
|
|
4
|
+
import { VibeKanbanBoardService } from '../../vibe-kanban/vibe-kanban-board.service';
|
|
5
5
|
import { SetupEvaluationService } from '../../setup/setup-evaluation.service';
|
|
6
6
|
import { UiNavService } from '../../ui/ui-nav.service';
|
|
7
7
|
export declare class VkUiController {
|
|
@@ -10,7 +10,7 @@ export declare class VkUiController {
|
|
|
10
10
|
private readonly setupEvaluation;
|
|
11
11
|
private readonly appEnv;
|
|
12
12
|
private readonly uiNav;
|
|
13
|
-
constructor(settings: SettingsService, vk:
|
|
13
|
+
constructor(settings: SettingsService, vk: VibeKanbanBoardService, setupEvaluation: SetupEvaluationService, appEnv: AppEnv, uiNav: UiNavService);
|
|
14
14
|
vibeKanbanPage(res: Response, saved?: string, err?: string): Promise<void>;
|
|
15
15
|
postVibeKanban(body: Record<string, string>, res: Response): Promise<void>;
|
|
16
16
|
}
|
|
@@ -16,7 +16,7 @@ exports.VkUiController = void 0;
|
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
|
17
17
|
const app_env_token_1 = require("../../config/app-env.token");
|
|
18
18
|
const settings_service_1 = require("../../settings/settings.service");
|
|
19
|
-
const
|
|
19
|
+
const vibe_kanban_board_service_1 = require("../../vibe-kanban/vibe-kanban-board.service");
|
|
20
20
|
const vk_settings_schema_1 = require("./vk-settings.schema");
|
|
21
21
|
const setup_evaluation_service_1 = require("../../setup/setup-evaluation.service");
|
|
22
22
|
const ui_presenter_1 = require("../../ui/ui-presenter");
|
|
@@ -94,7 +94,7 @@ exports.VkUiController = VkUiController = __decorate([
|
|
|
94
94
|
(0, common_1.Controller)('ui'),
|
|
95
95
|
__param(3, (0, common_1.Inject)(app_env_token_1.APP_ENV)),
|
|
96
96
|
__metadata("design:paramtypes", [settings_service_1.SettingsService,
|
|
97
|
-
|
|
97
|
+
vibe_kanban_board_service_1.VibeKanbanBoardService,
|
|
98
98
|
setup_evaluation_service_1.SetupEvaluationService, Object, ui_nav_service_1.UiNavService])
|
|
99
99
|
], VkUiController);
|
|
100
100
|
//# sourceMappingURL=vk-ui.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vk-ui.controller.js","sourceRoot":"","sources":["../../../src/integrations/vibe-kanban/vk-ui.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,8DAAkE;AAElE,sEAAkE;AAClE,
|
|
1
|
+
{"version":3,"file":"vk-ui.controller.js","sourceRoot":"","sources":["../../../src/integrations/vibe-kanban/vk-ui.controller.ts"],"names":[],"mappings":"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"}
|
package/dist/main.js
CHANGED
|
@@ -26,7 +26,7 @@ async function bootstrap() {
|
|
|
26
26
|
if (env.openapiEnabled) {
|
|
27
27
|
const swaggerConfig = new swagger_1.DocumentBuilder()
|
|
28
28
|
.setTitle('vibe-squire')
|
|
29
|
-
.setDescription('Local orchestrator: GitHub PR review queue → Vibe Kanban via
|
|
29
|
+
.setDescription('Local orchestrator: GitHub PR review queue → Vibe Kanban via local HTTP API.')
|
|
30
30
|
.setVersion('0.0.1')
|
|
31
31
|
.build();
|
|
32
32
|
const document = swagger_1.SwaggerModule.createDocument(app, swaggerConfig);
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,2CAAgD;AAChD,uCAA2C;AAE3C,6CAAiE;AACjE,6CAAqC;AACrC,6CAAyC;AACzC,mEAA8D;AAC9D,oDAAkD;AAClD,0EAGyC;AACzC,8DAAgE;AAEhE,KAAK,UAAU,SAAS;IACtB,IAAA,+CAAwB,GAAE,CAAC;IAC3B,IAAA,oCAAmB,EAAC,IAAA,4CAAqB,EAAC,OAAO,CAAC,GAAG,CAAC,YAAa,CAAC,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,IAAA,wBAAW,GAAE,CAAC;IAE1B,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAClC,sBAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EACtB;QACE,UAAU,EAAE,IAAI;KACjB,CACF,CAAC;IACF,IAAA,2CAAmB,EAAC,GAAG,CAAC,CAAC;IACzB,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACjC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAM,CAAC,CAAC,CAAC;IAC/B,GAAG,CAAC,cAAc,CAChB,IAAI,uBAAc,CAAC;QACjB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;KAChB,CAAC,CACH,CAAC;IAEF,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,aAAa,GAAG,IAAI,yBAAe,EAAE;aACxC,QAAQ,CAAC,aAAa,CAAC;aACvB,cAAc,CACb,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,2CAAgD;AAChD,uCAA2C;AAE3C,6CAAiE;AACjE,6CAAqC;AACrC,6CAAyC;AACzC,mEAA8D;AAC9D,oDAAkD;AAClD,0EAGyC;AACzC,8DAAgE;AAEhE,KAAK,UAAU,SAAS;IACtB,IAAA,+CAAwB,GAAE,CAAC;IAC3B,IAAA,oCAAmB,EAAC,IAAA,4CAAqB,EAAC,OAAO,CAAC,GAAG,CAAC,YAAa,CAAC,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,IAAA,wBAAW,GAAE,CAAC;IAE1B,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAClC,sBAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EACtB;QACE,UAAU,EAAE,IAAI;KACjB,CACF,CAAC;IACF,IAAA,2CAAmB,EAAC,GAAG,CAAC,CAAC;IACzB,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACjC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAM,CAAC,CAAC,CAAC;IAC/B,GAAG,CAAC,cAAc,CAChB,IAAI,uBAAc,CAAC;QACjB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;KAChB,CAAC,CACH,CAAC;IAEF,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,aAAa,GAAG,IAAI,yBAAe,EAAE;aACxC,QAAQ,CAAC,aAAa,CAAC;aACvB,cAAc,CACb,8EAA8E,CAC/E;aACA,UAAU,CAAC,OAAO,CAAC;aACnB,KAAK,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,uBAAa,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAClE,uBAAa,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,oBAAM,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,4BAA4B,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,KAAK,SAAS,EAAE,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export declare const GITHUB_PR_SCOUT_PORT: unique symbol;
|
|
2
2
|
export declare const SYNC_PR_SCOUT_PORT: unique symbol;
|
|
3
|
-
export declare const VK_MCP_STDIO_SESSION_PORT: unique symbol;
|
|
4
3
|
export declare const DESTINATION_BOARD_PORT: unique symbol;
|
|
5
4
|
export declare const SYNC_DESTINATION_BOARD_PORT: symbol;
|
|
6
5
|
export declare const SOURCE_STATUS_PORT: unique symbol;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UI_NAV_ENTRIES = exports.DESTINATION_STATUS_PORT = exports.SOURCE_STATUS_PORT = exports.SYNC_DESTINATION_BOARD_PORT = exports.DESTINATION_BOARD_PORT = exports.
|
|
3
|
+
exports.UI_NAV_ENTRIES = exports.DESTINATION_STATUS_PORT = exports.SOURCE_STATUS_PORT = exports.SYNC_DESTINATION_BOARD_PORT = exports.DESTINATION_BOARD_PORT = exports.SYNC_PR_SCOUT_PORT = exports.GITHUB_PR_SCOUT_PORT = void 0;
|
|
4
4
|
exports.GITHUB_PR_SCOUT_PORT = Symbol('GITHUB_PR_SCOUT_PORT');
|
|
5
5
|
exports.SYNC_PR_SCOUT_PORT = Symbol('SYNC_PR_SCOUT_PORT');
|
|
6
|
-
exports.VK_MCP_STDIO_SESSION_PORT = Symbol('VK_MCP_STDIO_SESSION_PORT');
|
|
7
6
|
exports.DESTINATION_BOARD_PORT = Symbol('DESTINATION_BOARD_PORT');
|
|
8
7
|
exports.SYNC_DESTINATION_BOARD_PORT = exports.DESTINATION_BOARD_PORT;
|
|
9
8
|
exports.SOURCE_STATUS_PORT = Symbol('SOURCE_STATUS_PORT');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injection-tokens.js","sourceRoot":"","sources":["../../src/ports/injection-tokens.ts"],"names":[],"mappings":";;;AACa,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEtD,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAElD,QAAA,
|
|
1
|
+
{"version":3,"file":"injection-tokens.js","sourceRoot":"","sources":["../../src/ports/injection-tokens.ts"],"names":[],"mappings":";;;AACa,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEtD,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAElD,QAAA,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAE1D,QAAA,2BAA2B,GAAG,8BAAsB,CAAC;AAErD,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAElD,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAE5D,QAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -26,7 +26,7 @@ exports.ReinitController = ReinitController;
|
|
|
26
26
|
__decorate([
|
|
27
27
|
(0, common_1.Post)(),
|
|
28
28
|
(0, swagger_1.ApiOperation)({
|
|
29
|
-
summary: 'Soft reinit — DB ping, gh check,
|
|
29
|
+
summary: 'Soft reinit — DB ping, gh check, Vibe Kanban probe, reset backoff',
|
|
30
30
|
}),
|
|
31
31
|
(0, swagger_1.ApiOkResponse)({
|
|
32
32
|
description: 'Health summary per subsystem',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reinit.controller.js","sourceRoot":"","sources":["../../src/reinit/reinit.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAkD;AAClD,6CAAuE;AACvE,qDAAiD;AAI1C,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACE;IAA7B,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"reinit.controller.js","sourceRoot":"","sources":["../../src/reinit/reinit.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAkD;AAClD,6CAAuE;AACvE,qDAAiD;AAI1C,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACE;IAA7B,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAUtD,GAAG;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;CACF,CAAA;AAdY,4CAAgB;AAW3B;IARC,IAAA,aAAI,GAAE;IACN,IAAA,sBAAY,EAAC;QACZ,OAAO,EACL,mEAAmE;KACtE,CAAC;IACD,IAAA,uBAAa,EAAC;QACb,WAAW,EAAE,8BAA8B;KAC5C,CAAC;;;;2CAGD;2BAbU,gBAAgB;IAF5B,IAAA,iBAAO,EAAC,QAAQ,CAAC;IACjB,IAAA,mBAAU,EAAC,YAAY,CAAC;qCAEc,8BAAa;GADvC,gBAAgB,CAc5B"}
|
|
@@ -45,7 +45,7 @@ function boolStorageField(defaultVal) {
|
|
|
45
45
|
exports.coreStorageSchema = zod_1.z
|
|
46
46
|
.object({
|
|
47
47
|
scheduled_sync_enabled: boolStorageField('true'),
|
|
48
|
-
auto_create_issues: boolStorageField('
|
|
48
|
+
auto_create_issues: boolStorageField('false'),
|
|
49
49
|
poll_interval_minutes: digitStringField(exports.MIN_POLL_INTERVAL_MINUTES, 99_999, 'poll_interval_minutes', '5'),
|
|
50
50
|
jitter_max_seconds: digitStringField(0, 99_999_999, 'jitter_max_seconds', '30'),
|
|
51
51
|
run_now_cooldown_seconds: digitStringField(0, 99_999_999, 'run_now_cooldown_seconds', '90'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-settings.schema.js","sourceRoot":"","sources":["../../src/settings/core-settings.schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAGX,QAAA,yBAAyB,GAAG,CAAC,CAAC;AAG9B,QAAA,sBAAsB,GAAG,GAAG,CAAC;AAE1C,SAAS,gBAAgB,CACvB,GAAW,EACX,GAAW,EACX,UAAkB,EAClB,UAAkB;IAElB,OAAO,OAAC;SACL,MAAM,EAAE;SACR,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACxB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG,UAAU,aAAa,GAAG,IAAI,GAAG,EAAE;aAChD,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YACvB,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG,UAAU,aAAa,GAAG,IAAI,GAAG,EAAE;aAChD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;SACD,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAGD,SAAS,gBAAgB,CAAC,UAA4B;IACpD,OAAO,OAAC;SACL,MAAM,EAAE;SACR,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACxB,MAAM,CAAC,GAAG,OAAC,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACf,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,mCAAmC;aAC7C,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;SACD,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAC,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/E,CAAC;AAKY,QAAA,iBAAiB,GAAG,OAAC;KAC/B,MAAM,CAAC;IACN,sBAAsB,EAAE,gBAAgB,CAAC,MAAM,CAAC;IAChD,kBAAkB,EAAE,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"core-settings.schema.js","sourceRoot":"","sources":["../../src/settings/core-settings.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ let SetupEvaluationService = class SetupEvaluationService {
|
|
|
33
33
|
async evaluate() {
|
|
34
34
|
const r = await this.destinationStatus.checkReadiness();
|
|
35
35
|
const meta = r.setupMeta ?? {
|
|
36
|
-
|
|
36
|
+
vibeKanbanBoardActive: true,
|
|
37
37
|
hasRouting: true,
|
|
38
38
|
mappingCount: 0,
|
|
39
39
|
};
|
|
@@ -49,7 +49,7 @@ let SetupEvaluationService = class SetupEvaluationService {
|
|
|
49
49
|
mappingCount: meta.mappingCount,
|
|
50
50
|
sourceType: this.appEnv.sourceType,
|
|
51
51
|
destinationType: this.appEnv.destinationType,
|
|
52
|
-
|
|
52
|
+
vibeKanbanBoardActive: meta.vibeKanbanBoardActive,
|
|
53
53
|
hasRouting: meta.hasRouting,
|
|
54
54
|
};
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-evaluation.service.js","sourceRoot":"","sources":["../../src/setup/setup-evaluation.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,2DAA+D;AAC/D,gEAAoE;AAGpE,iEAKqC;AAJnC,gIAAA,2BAA2B,OAAA;AAC3B,2HAAA,sBAAsB,OAAA;AAOxB,MAAM,oBAAoB,GAAgC;IACxD,uBAAuB,EAAE,yBAAyB;IAClD,WAAW,EAAE,aAAa;CAC3B,CAAC;AAcK,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAEG;IAEjB;IAHnB,YACoC,MAAc,EAE/B,iBAA4C;QAF3B,WAAM,GAAN,MAAM,CAAQ;QAE/B,sBAAiB,GAAjB,iBAAiB,CAA2B;IAC5D,CAAC;IAKJ,KAAK,CAAC,QAAQ;QACZ,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,IAAI;YAC1B,
|
|
1
|
+
{"version":3,"file":"setup-evaluation.service.js","sourceRoot":"","sources":["../../src/setup/setup-evaluation.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,2DAA+D;AAC/D,gEAAoE;AAGpE,iEAKqC;AAJnC,gIAAA,2BAA2B,OAAA;AAC3B,2HAAA,sBAAsB,OAAA;AAOxB,MAAM,oBAAoB,GAAgC;IACxD,uBAAuB,EAAE,yBAAyB;IAClD,WAAW,EAAE,aAAa;CAC3B,CAAC;AAcK,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAEG;IAEjB;IAHnB,YACoC,MAAc,EAE/B,iBAA4C;QAF3B,WAAM,GAAN,MAAM,CAAQ;QAE/B,sBAAiB,GAAjB,iBAAiB,CAA2B;IAC5D,CAAC;IAKJ,KAAK,CAAC,QAAQ;QACZ,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,IAAI;YAC1B,qBAAqB,EAAE,IAAI;YAC3B,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,CAAC;SAChB,CAAC;QACF,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,QAAQ,KAAK,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QACtC,MAAM,MAAM,GACV,SAAS,IAAI,oBAAoB,CAAC,SAAS,CAAC;YAC1C,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC;YACjC,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO;YACL,QAAQ;YACR,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;YAC5C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;CACF,CAAA;AAnCY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,uBAAO,CAAC,CAAA;IACf,WAAA,IAAA,eAAM,EAAC,0CAAuB,CAAC,CAAA;;GAHvB,sBAAsB,CAmClC"}
|
|
@@ -14,7 +14,7 @@ export declare class StatusSetupDto {
|
|
|
14
14
|
export declare class StatusConfigurationDto {
|
|
15
15
|
source_type: string;
|
|
16
16
|
destination_type: string;
|
|
17
|
-
|
|
17
|
+
vibe_kanban_board_active: boolean;
|
|
18
18
|
}
|
|
19
19
|
export declare class StatusManualSyncDto {
|
|
20
20
|
canRun: boolean;
|