@proletariat/cli 0.3.94 → 0.3.96
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/dist/commands/agent/cleanup.d.ts +3 -4
- package/dist/commands/agent/cleanup.js +5 -4
- package/dist/commands/agent/cleanup.js.map +1 -1
- package/dist/commands/agent/gc.d.ts +3 -4
- package/dist/commands/agent/gc.js +5 -4
- package/dist/commands/agent/gc.js.map +1 -1
- package/dist/commands/agent/index.d.ts +3 -4
- package/dist/commands/agent/index.js +5 -4
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/list.d.ts +3 -4
- package/dist/commands/agent/list.js +5 -4
- package/dist/commands/agent/list.js.map +1 -1
- package/dist/commands/agent/remove.d.ts +3 -4
- package/dist/commands/agent/remove.js +5 -4
- package/dist/commands/agent/remove.js.map +1 -1
- package/dist/commands/agent/staff/index.d.ts +3 -4
- package/dist/commands/agent/staff/index.js +5 -4
- package/dist/commands/agent/staff/index.js.map +1 -1
- package/dist/commands/agent/staff/remove.d.ts +3 -4
- package/dist/commands/agent/staff/remove.js +5 -4
- package/dist/commands/agent/staff/remove.js.map +1 -1
- package/dist/commands/agent/status.d.ts +3 -4
- package/dist/commands/agent/status.js +5 -4
- package/dist/commands/agent/status.js.map +1 -1
- package/dist/commands/agent/visit.d.ts +3 -4
- package/dist/commands/agent/visit.js +5 -4
- package/dist/commands/agent/visit.js.map +1 -1
- package/dist/commands/branch/create.js +1 -12
- package/dist/commands/branch/create.js.map +1 -1
- package/dist/commands/branch/list.d.ts +3 -4
- package/dist/commands/branch/list.js +5 -4
- package/dist/commands/branch/list.js.map +1 -1
- package/dist/commands/branch/validate.d.ts +3 -4
- package/dist/commands/branch/validate.js +6 -5
- package/dist/commands/branch/validate.js.map +1 -1
- package/dist/commands/branch/where.d.ts +3 -4
- package/dist/commands/branch/where.js +5 -4
- package/dist/commands/branch/where.js.map +1 -1
- package/dist/commands/commit.js +1 -1
- package/dist/commands/commit.js.map +1 -1
- package/dist/commands/config/index.js +1 -1
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/db/backup.d.ts +16 -0
- package/dist/commands/db/backup.js +125 -0
- package/dist/commands/db/backup.js.map +1 -0
- package/dist/commands/db/repair.js +167 -45
- package/dist/commands/db/repair.js.map +1 -1
- package/dist/commands/execution/config.d.ts +3 -4
- package/dist/commands/execution/config.js +5 -4
- package/dist/commands/execution/config.js.map +1 -1
- package/dist/commands/execution/index.d.ts +3 -4
- package/dist/commands/execution/index.js +5 -4
- package/dist/commands/execution/index.js.map +1 -1
- package/dist/commands/execution/list.d.ts +3 -4
- package/dist/commands/execution/list.js +5 -4
- package/dist/commands/execution/list.js.map +1 -1
- package/dist/commands/execution/logs.d.ts +3 -4
- package/dist/commands/execution/logs.js +5 -4
- package/dist/commands/execution/logs.js.map +1 -1
- package/dist/commands/execution/stop.d.ts +3 -4
- package/dist/commands/execution/stop.js +5 -4
- package/dist/commands/execution/stop.js.map +1 -1
- package/dist/commands/execution/view.d.ts +3 -4
- package/dist/commands/execution/view.js +5 -4
- package/dist/commands/execution/view.js.map +1 -1
- package/dist/commands/gc.d.ts +13 -0
- package/dist/commands/gc.js +178 -0
- package/dist/commands/gc.js.map +1 -0
- package/dist/commands/hook/export.d.ts +3 -4
- package/dist/commands/hook/export.js +5 -4
- package/dist/commands/hook/export.js.map +1 -1
- package/dist/commands/hook/fire.d.ts +3 -4
- package/dist/commands/hook/fire.js +5 -4
- package/dist/commands/hook/fire.js.map +1 -1
- package/dist/commands/hook/list.d.ts +3 -4
- package/dist/commands/hook/list.js +5 -4
- package/dist/commands/hook/list.js.map +1 -1
- package/dist/commands/hook/preset.d.ts +3 -4
- package/dist/commands/hook/preset.js +5 -4
- package/dist/commands/hook/preset.js.map +1 -1
- package/dist/commands/orchestrate/index.d.ts +3 -4
- package/dist/commands/orchestrate/index.js +5 -4
- package/dist/commands/orchestrate/index.js.map +1 -1
- package/dist/commands/orchestrator/index.d.ts +3 -4
- package/dist/commands/orchestrator/index.js +5 -4
- package/dist/commands/orchestrator/index.js.map +1 -1
- package/dist/commands/pr/checks.d.ts +3 -4
- package/dist/commands/pr/checks.js +5 -4
- package/dist/commands/pr/checks.js.map +1 -1
- package/dist/commands/pr/merge.js +1 -1
- package/dist/commands/pr/merge.js.map +1 -1
- package/dist/commands/repo/add.d.ts +3 -4
- package/dist/commands/repo/add.js +5 -4
- package/dist/commands/repo/add.js.map +1 -1
- package/dist/commands/repo/create.d.ts +3 -4
- package/dist/commands/repo/create.js +5 -4
- package/dist/commands/repo/create.js.map +1 -1
- package/dist/commands/repo/fix-remotes.d.ts +3 -4
- package/dist/commands/repo/fix-remotes.js +5 -4
- package/dist/commands/repo/fix-remotes.js.map +1 -1
- package/dist/commands/repo/index.d.ts +3 -4
- package/dist/commands/repo/index.js +5 -4
- package/dist/commands/repo/index.js.map +1 -1
- package/dist/commands/repo/list.d.ts +3 -4
- package/dist/commands/repo/list.js +5 -4
- package/dist/commands/repo/list.js.map +1 -1
- package/dist/commands/session/attach.d.ts +3 -3
- package/dist/commands/session/attach.js +37 -79
- package/dist/commands/session/attach.js.map +1 -1
- package/dist/commands/session/cleanup.d.ts +3 -4
- package/dist/commands/session/cleanup.js +5 -4
- package/dist/commands/session/cleanup.js.map +1 -1
- package/dist/commands/session/create.d.ts +3 -4
- package/dist/commands/session/create.js +5 -4
- package/dist/commands/session/create.js.map +1 -1
- package/dist/commands/session/exec.d.ts +3 -4
- package/dist/commands/session/exec.js +6 -5
- package/dist/commands/session/exec.js.map +1 -1
- package/dist/commands/session/health.js +19 -1
- package/dist/commands/session/health.js.map +1 -1
- package/dist/commands/session/index.d.ts +3 -4
- package/dist/commands/session/index.js +9 -4
- package/dist/commands/session/index.js.map +1 -1
- package/dist/commands/session/inspect.d.ts +3 -4
- package/dist/commands/session/inspect.js +6 -5
- package/dist/commands/session/inspect.js.map +1 -1
- package/dist/commands/session/list.d.ts +4 -4
- package/dist/commands/session/list.js +129 -82
- package/dist/commands/session/list.js.map +1 -1
- package/dist/commands/session/peek.js +1 -1
- package/dist/commands/session/peek.js.map +1 -1
- package/dist/commands/session/poke.js +1 -1
- package/dist/commands/session/poke.js.map +1 -1
- package/dist/commands/session/prune.d.ts +3 -4
- package/dist/commands/session/prune.js +55 -15
- package/dist/commands/session/prune.js.map +1 -1
- package/dist/commands/session/report.d.ts +25 -5
- package/dist/commands/session/report.js +201 -5
- package/dist/commands/session/report.js.map +1 -1
- package/dist/commands/session/restart.d.ts +3 -4
- package/dist/commands/session/restart.js +6 -5
- package/dist/commands/session/restart.js.map +1 -1
- package/dist/commands/session/watch.d.ts +17 -0
- package/dist/commands/session/watch.js +139 -0
- package/dist/commands/session/watch.js.map +1 -0
- package/dist/commands/{action → sync}/index.d.ts +2 -6
- package/dist/commands/sync/index.js +68 -0
- package/dist/commands/sync/index.js.map +1 -0
- package/dist/commands/sync/pause.d.ts +10 -0
- package/dist/commands/sync/pause.js +35 -0
- package/dist/commands/sync/pause.js.map +1 -0
- package/dist/commands/sync/queue.d.ts +10 -0
- package/dist/commands/sync/queue.js +106 -0
- package/dist/commands/sync/queue.js.map +1 -0
- package/dist/commands/sync/resume.d.ts +10 -0
- package/dist/commands/sync/resume.js +34 -0
- package/dist/commands/sync/resume.js.map +1 -0
- package/dist/commands/sync/start.d.ts +11 -0
- package/dist/commands/sync/start.js +73 -0
- package/dist/commands/sync/start.js.map +1 -0
- package/dist/commands/sync/status.d.ts +10 -0
- package/dist/commands/sync/status.js +40 -0
- package/dist/commands/sync/status.js.map +1 -0
- package/dist/commands/sync/stop.d.ts +10 -0
- package/dist/commands/sync/stop.js +39 -0
- package/dist/commands/sync/stop.js.map +1 -0
- package/dist/commands/ticket/create.js +1 -1
- package/dist/commands/ticket/create.js.map +1 -1
- package/dist/commands/ticket/edit.js +1 -1
- package/dist/commands/ticket/edit.js.map +1 -1
- package/dist/commands/ticket/index.d.ts +3 -4
- package/dist/commands/ticket/index.js +5 -4
- package/dist/commands/ticket/index.js.map +1 -1
- package/dist/commands/ticket/list.js +1 -1
- package/dist/commands/ticket/list.js.map +1 -1
- package/dist/commands/ticket/update.js +1 -1
- package/dist/commands/ticket/update.js.map +1 -1
- package/dist/commands/web.d.ts +20 -0
- package/dist/commands/web.js +82 -0
- package/dist/commands/web.js.map +1 -0
- package/dist/commands/work/complete.js +1 -1
- package/dist/commands/work/complete.js.map +1 -1
- package/dist/commands/work/hooks/add.d.ts +3 -4
- package/dist/commands/work/hooks/add.js +5 -4
- package/dist/commands/work/hooks/add.js.map +1 -1
- package/dist/commands/work/hooks/list.d.ts +3 -4
- package/dist/commands/work/hooks/list.js +5 -4
- package/dist/commands/work/hooks/list.js.map +1 -1
- package/dist/commands/work/hooks/toggle.d.ts +3 -4
- package/dist/commands/work/hooks/toggle.js +5 -4
- package/dist/commands/work/hooks/toggle.js.map +1 -1
- package/dist/commands/work/peek.d.ts +3 -4
- package/dist/commands/work/peek.js +5 -4
- package/dist/commands/work/peek.js.map +1 -1
- package/dist/commands/work/propose.d.ts +23 -0
- package/dist/commands/work/propose.js +57 -0
- package/dist/commands/work/propose.js.map +1 -0
- package/dist/commands/work/ready.js +3 -3
- package/dist/commands/work/ready.js.map +1 -1
- package/dist/commands/work/rebase.d.ts +1 -1
- package/dist/commands/work/rebase.js +52 -49
- package/dist/commands/work/rebase.js.map +1 -1
- package/dist/commands/work/resolve.js +1 -1
- package/dist/commands/work/resolve.js.map +1 -1
- package/dist/commands/work/ship.d.ts +6 -0
- package/dist/commands/work/ship.js +218 -49
- package/dist/commands/work/ship.js.map +1 -1
- package/dist/commands/work/start.js +16 -90
- package/dist/commands/work/start.js.map +1 -1
- package/dist/commands/work/stop.d.ts +3 -4
- package/dist/commands/work/stop.js +5 -4
- package/dist/commands/work/stop.js.map +1 -1
- package/dist/hooks/init.js +11 -1
- package/dist/hooks/init.js.map +1 -1
- package/dist/lib/branch/index.d.ts +6 -5
- package/dist/lib/branch/index.js +8 -13
- package/dist/lib/branch/index.js.map +1 -1
- package/dist/lib/dashboard/data.js +1 -1
- package/dist/lib/dashboard/data.js.map +1 -1
- package/dist/lib/dashboard/html.d.ts +2 -1
- package/dist/lib/dashboard/html.js +150 -522
- package/dist/lib/dashboard/html.js.map +1 -1
- package/dist/lib/database/db-safety.d.ts +70 -9
- package/dist/lib/database/db-safety.js +395 -43
- package/dist/lib/database/db-safety.js.map +1 -1
- package/dist/lib/database/index.d.ts +1 -1
- package/dist/lib/database/index.js +1 -1
- package/dist/lib/database/index.js.map +1 -1
- package/dist/lib/database/migrations/0017_drop_agent_work_fk.d.ts +13 -0
- package/dist/lib/database/migrations/0017_drop_agent_work_fk.js +85 -0
- package/dist/lib/database/migrations/0017_drop_agent_work_fk.js.map +1 -0
- package/dist/lib/database/migrations/0018_create_ticket_refs.d.ts +11 -0
- package/dist/lib/database/migrations/0018_create_ticket_refs.js +40 -0
- package/dist/lib/database/migrations/0018_create_ticket_refs.js.map +1 -0
- package/dist/lib/database/migrations/index.js +4 -0
- package/dist/lib/database/migrations/index.js.map +1 -1
- package/dist/lib/database/workspace.js +3 -1
- package/dist/lib/database/workspace.js.map +1 -1
- package/dist/lib/execution/devcontainer.js +1 -1
- package/dist/lib/execution/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/docker-management.d.ts +9 -0
- package/dist/lib/execution/runners/docker-management.js +14 -3
- package/dist/lib/execution/runners/docker-management.js.map +1 -1
- package/dist/lib/execution/runners/docker.js +8 -0
- package/dist/lib/execution/runners/docker.js.map +1 -1
- package/dist/lib/execution/runners/prompt-builder.js +24 -9
- package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
- package/dist/lib/execution/runners/shared.d.ts +1 -1
- package/dist/lib/execution/runners/shared.js +1 -1
- package/dist/lib/execution/runners/shared.js.map +1 -1
- package/dist/lib/execution/session-utils.d.ts +16 -0
- package/dist/lib/execution/session-utils.js +42 -0
- package/dist/lib/execution/session-utils.js.map +1 -1
- package/dist/lib/execution/spawner.js +4 -5
- package/dist/lib/execution/spawner.js.map +1 -1
- package/dist/lib/execution/storage.d.ts +29 -1
- package/dist/lib/execution/storage.js +79 -1
- package/dist/lib/execution/storage.js.map +1 -1
- package/dist/lib/execution/types.d.ts +17 -6
- package/dist/lib/execution/types.js +10 -7
- package/dist/lib/execution/types.js.map +1 -1
- package/dist/lib/external-issues/utils.d.ts +25 -0
- package/dist/lib/external-issues/utils.js +32 -0
- package/dist/lib/external-issues/utils.js.map +1 -0
- package/dist/lib/gc/index.d.ts +126 -0
- package/dist/lib/gc/index.js +410 -0
- package/dist/lib/gc/index.js.map +1 -0
- package/dist/lib/machine-config.d.ts +8 -0
- package/dist/lib/machine-config.js +37 -0
- package/dist/lib/machine-config.js.map +1 -1
- package/dist/lib/mcp/tools/action.js +1 -1
- package/dist/lib/mcp/tools/action.js.map +1 -1
- package/dist/lib/mcp/tools/ticket.js +1 -1
- package/dist/lib/mcp/tools/ticket.js.map +1 -1
- package/dist/lib/orchestrate/actions.js +30 -0
- package/dist/lib/orchestrate/actions.js.map +1 -1
- package/dist/lib/orchestrate/poller.d.ts +1 -1
- package/dist/lib/orchestrate/poller.js +4 -4
- package/dist/lib/orchestrate/poller.js.map +1 -1
- package/dist/lib/orchestrate/presets.js +2 -1
- package/dist/lib/orchestrate/presets.js.map +1 -1
- package/dist/lib/orchestrate/types.d.ts +1 -1
- package/dist/lib/orchestrate/types.js +1 -0
- package/dist/lib/orchestrate/types.js.map +1 -1
- package/dist/lib/pmo/index.js +1 -1
- package/dist/lib/pmo/index.js.map +1 -1
- package/dist/lib/pmo/markdown.js +1 -1
- package/dist/lib/pmo/markdown.js.map +1 -1
- package/dist/lib/pmo/schema.d.ts +3 -1
- package/dist/lib/pmo/schema.js +26 -2
- package/dist/lib/pmo/schema.js.map +1 -1
- package/dist/lib/pmo/storage/actions.js +1 -1
- package/dist/lib/pmo/storage/actions.js.map +1 -1
- package/dist/lib/pmo/storage/base.js +42 -18
- package/dist/lib/pmo/storage/base.js.map +1 -1
- package/dist/lib/pmo/storage/projects.js +2 -1
- package/dist/lib/pmo/storage/projects.js.map +1 -1
- package/dist/lib/pmo/storage/statuses.js +1 -1
- package/dist/lib/pmo/storage/statuses.js.map +1 -1
- package/dist/lib/pmo/storage/subtasks.js +1 -1
- package/dist/lib/pmo/storage/subtasks.js.map +1 -1
- package/dist/lib/pmo/storage/templates.js +1 -1
- package/dist/lib/pmo/storage/templates.js.map +1 -1
- package/dist/lib/pmo/storage/tickets.js +2 -1
- package/dist/lib/pmo/storage/tickets.js.map +1 -1
- package/dist/lib/pmo/storage/workflow-rules.js +1 -1
- package/dist/lib/pmo/storage/workflow-rules.js.map +1 -1
- package/dist/lib/pmo/utils.d.ts +6 -189
- package/dist/lib/pmo/utils.js +6 -306
- package/dist/lib/pmo/utils.js.map +1 -1
- package/dist/lib/providers/index.d.ts +1 -0
- package/dist/lib/providers/index.js +1 -0
- package/dist/lib/providers/index.js.map +1 -1
- package/dist/lib/providers/resolver.js +16 -0
- package/dist/lib/providers/resolver.js.map +1 -1
- package/dist/lib/providers/trello-provider.d.ts +28 -0
- package/dist/lib/providers/trello-provider.js +381 -0
- package/dist/lib/providers/trello-provider.js.map +1 -0
- package/dist/lib/session/heartbeat.d.ts +45 -0
- package/dist/lib/session/heartbeat.js +150 -0
- package/dist/lib/session/heartbeat.js.map +1 -0
- package/dist/lib/session/index.d.ts +7 -0
- package/dist/lib/session/index.js +8 -0
- package/dist/lib/session/index.js.map +1 -0
- package/dist/lib/session/watcher.d.ts +79 -0
- package/dist/lib/session/watcher.js +142 -0
- package/dist/lib/session/watcher.js.map +1 -0
- package/dist/lib/shipping/auto-merge.d.ts +57 -0
- package/dist/lib/shipping/auto-merge.js +311 -0
- package/dist/lib/shipping/auto-merge.js.map +1 -0
- package/dist/lib/shipping/github.d.ts +68 -0
- package/dist/lib/shipping/github.js +217 -0
- package/dist/lib/shipping/github.js.map +1 -0
- package/dist/lib/shipping/index.d.ts +13 -0
- package/dist/lib/shipping/index.js +11 -0
- package/dist/lib/shipping/index.js.map +1 -0
- package/dist/lib/shipping/rebase.d.ts +35 -0
- package/dist/lib/shipping/rebase.js +107 -0
- package/dist/lib/shipping/rebase.js.map +1 -0
- package/dist/lib/shipping/types.d.ts +181 -0
- package/dist/lib/shipping/types.js +9 -0
- package/dist/lib/shipping/types.js.map +1 -0
- package/dist/lib/sync/daemon-process.d.ts +9 -0
- package/dist/lib/sync/daemon-process.js +184 -0
- package/dist/lib/sync/daemon-process.js.map +1 -0
- package/dist/lib/sync/daemon.d.ts +39 -0
- package/dist/lib/sync/daemon.js +91 -0
- package/dist/lib/sync/daemon.js.map +1 -0
- package/dist/lib/sync/engine.d.ts +38 -0
- package/dist/lib/sync/engine.js +145 -0
- package/dist/lib/sync/engine.js.map +1 -0
- package/dist/lib/sync/merge-queue.d.ts +116 -0
- package/dist/lib/sync/merge-queue.js +321 -0
- package/dist/lib/sync/merge-queue.js.map +1 -0
- package/dist/lib/sync/reconciler.d.ts +44 -0
- package/dist/lib/sync/reconciler.js +88 -0
- package/dist/lib/sync/reconciler.js.map +1 -0
- package/dist/lib/trello/client.d.ts +1 -0
- package/dist/lib/trello/client.js +6 -0
- package/dist/lib/trello/client.js.map +1 -1
- package/dist/lib/utils/text.d.ts +44 -0
- package/dist/lib/utils/text.js +72 -0
- package/dist/lib/utils/text.js.map +1 -0
- package/dist/lib/work-lifecycle/post-execution.js +1 -1
- package/dist/lib/work-lifecycle/post-execution.js.map +1 -1
- package/dist/lib/work-lifecycle/settings.d.ts +138 -0
- package/dist/lib/work-lifecycle/settings.js +213 -0
- package/dist/lib/work-lifecycle/settings.js.map +1 -0
- package/oclif.manifest.json +2549 -2901
- package/package.json +8 -8
- package/dist/commands/action/create.d.ts +0 -26
- package/dist/commands/action/create.js +0 -245
- package/dist/commands/action/create.js.map +0 -1
- package/dist/commands/action/delete.d.ts +0 -18
- package/dist/commands/action/delete.js +0 -78
- package/dist/commands/action/delete.js.map +0 -1
- package/dist/commands/action/index.js +0 -103
- package/dist/commands/action/index.js.map +0 -1
- package/dist/commands/action/list.d.ts +0 -15
- package/dist/commands/action/list.js +0 -90
- package/dist/commands/action/list.js.map +0 -1
- package/dist/commands/action/run.d.ts +0 -20
- package/dist/commands/action/run.js +0 -188
- package/dist/commands/action/run.js.map +0 -1
- package/dist/commands/action/show.d.ts +0 -17
- package/dist/commands/action/show.js +0 -78
- package/dist/commands/action/show.js.map +0 -1
- package/dist/commands/action/update.d.ts +0 -27
- package/dist/commands/action/update.js +0 -288
- package/dist/commands/action/update.js.map +0 -1
package/dist/lib/pmo/utils.js
CHANGED
|
@@ -1,37 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* PMO
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return text
|
|
9
|
-
.toLowerCase()
|
|
10
|
-
.trim()
|
|
11
|
-
.replace(/[^\w\s-]/g, '') // Remove non-word chars (except spaces and hyphens)
|
|
12
|
-
.replace(/[\s_]+/g, '-') // Replace spaces and underscores with hyphens
|
|
13
|
-
.replace(/-+/g, '-') // Replace multiple hyphens with single hyphen
|
|
14
|
-
.replace(/^-+|-+$/g, '') // Remove leading/trailing hyphens
|
|
15
|
-
.substring(0, 100); // Limit length
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Format a date as ISO string (date only)
|
|
19
|
-
*/
|
|
20
|
-
export function formatDate(date) {
|
|
21
|
-
return date.toISOString().split('T')[0];
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Format a date as ISO timestamp
|
|
25
|
-
*/
|
|
26
|
-
export function formatTimestamp(date) {
|
|
27
|
-
return date.toISOString();
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Parse an ISO date string
|
|
2
|
+
* PMO-internal utility functions.
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities have been relocated:
|
|
5
|
+
* - Text/general: lib/utils/text.ts
|
|
6
|
+
* - Work column/priority/review gate settings: lib/work-lifecycle/settings.ts
|
|
7
|
+
* - External issue metadata: lib/external-issues/utils.ts
|
|
31
8
|
*/
|
|
32
|
-
export function parseDate(str) {
|
|
33
|
-
return new Date(str);
|
|
34
|
-
}
|
|
35
9
|
/**
|
|
36
10
|
* Entity type prefixes for ID generation
|
|
37
11
|
*/
|
|
@@ -89,278 +63,4 @@ export function generateEntityId(db, entityType) {
|
|
|
89
63
|
const numStr = nextNum.toString().padStart(3, '0');
|
|
90
64
|
return `${typePrefix}-${numStr}`;
|
|
91
65
|
}
|
|
92
|
-
/**
|
|
93
|
-
* Parse an entity ID into its components.
|
|
94
|
-
*
|
|
95
|
-
* Format: TKT-001 → { entityType: 'TKT', number: 1 }
|
|
96
|
-
*
|
|
97
|
-
* @param id - Entity ID to parse
|
|
98
|
-
* @returns Parsed components, or null if invalid format
|
|
99
|
-
*/
|
|
100
|
-
export function parseEntityId(id) {
|
|
101
|
-
if (!id)
|
|
102
|
-
return null;
|
|
103
|
-
const match = id.match(/^([A-Z]+)-(\d+)$/);
|
|
104
|
-
if (match) {
|
|
105
|
-
return {
|
|
106
|
-
entityType: match[1],
|
|
107
|
-
number: parseInt(match[2], 10),
|
|
108
|
-
raw: id,
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Deep clone an object
|
|
115
|
-
*/
|
|
116
|
-
export function deepClone(obj) {
|
|
117
|
-
return JSON.parse(JSON.stringify(obj));
|
|
118
|
-
}
|
|
119
|
-
// =============================================================================
|
|
120
|
-
// Work Column Settings
|
|
121
|
-
// =============================================================================
|
|
122
|
-
/**
|
|
123
|
-
* Default column names for work commands (Linear-style workflow)
|
|
124
|
-
*
|
|
125
|
-
* Linear-style: Backlog → Planned → In Progress → Review → Done
|
|
126
|
-
* - planned: Move tickets here when scheduled/assigned
|
|
127
|
-
* - in_progress: Move tickets here when work starts
|
|
128
|
-
* - review: Move tickets here when work is ready for review
|
|
129
|
-
* - done: Move tickets here when work is complete (reviewed/merged)
|
|
130
|
-
*/
|
|
131
|
-
export const DEFAULT_WORK_COLUMNS = {
|
|
132
|
-
planned: 'Planned',
|
|
133
|
-
in_progress: 'In Progress',
|
|
134
|
-
review: 'Review',
|
|
135
|
-
done: 'Done',
|
|
136
|
-
};
|
|
137
|
-
/**
|
|
138
|
-
* Get a work column setting from pmo_settings with fallback to default.
|
|
139
|
-
* Column matching is case-insensitive.
|
|
140
|
-
*
|
|
141
|
-
* Settings keys:
|
|
142
|
-
* - column_in_progress: Column to move tickets to when work starts
|
|
143
|
-
* - column_review: Column to move tickets to when work is ready for review
|
|
144
|
-
* - column_done: Column to move tickets to when work is complete
|
|
145
|
-
*
|
|
146
|
-
* @param db - Database instance
|
|
147
|
-
* @param columnType - Type of column (in_progress, review, done)
|
|
148
|
-
* @returns The configured column name, or the default if not set
|
|
149
|
-
*/
|
|
150
|
-
export function getWorkColumnSetting(db, columnType) {
|
|
151
|
-
const settingKey = `column_${columnType}`;
|
|
152
|
-
const row = db.prepare(`SELECT value FROM pmo_settings WHERE key = ?`).get(settingKey);
|
|
153
|
-
return row?.value || DEFAULT_WORK_COLUMNS[columnType];
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Set a work column setting in pmo_settings.
|
|
157
|
-
*
|
|
158
|
-
* @param db - Database instance
|
|
159
|
-
* @param columnType - Type of column (in_progress, review, done)
|
|
160
|
-
* @param columnName - Name of the column to use
|
|
161
|
-
*/
|
|
162
|
-
export function setWorkColumnSetting(db, columnType, columnName) {
|
|
163
|
-
const settingKey = `column_${columnType}`;
|
|
164
|
-
db.prepare(`
|
|
165
|
-
INSERT INTO pmo_settings (key, value) VALUES (?, ?)
|
|
166
|
-
ON CONFLICT(key) DO UPDATE SET value = ?
|
|
167
|
-
`).run(settingKey, columnName, columnName);
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Find a column by configured name (case-insensitive match).
|
|
171
|
-
* Returns the actual column name from the board if found, null otherwise.
|
|
172
|
-
*
|
|
173
|
-
* @param columnNames - Array of column names from the board
|
|
174
|
-
* @param targetColumn - The column name to find (from settings or default)
|
|
175
|
-
* @returns The matching column name, or null if not found
|
|
176
|
-
*/
|
|
177
|
-
export function findColumnByName(columnNames, targetColumn) {
|
|
178
|
-
const targetLower = targetColumn.toLowerCase();
|
|
179
|
-
// First try exact match (case-insensitive)
|
|
180
|
-
const exactMatch = columnNames.find(col => col.toLowerCase() === targetLower);
|
|
181
|
-
if (exactMatch)
|
|
182
|
-
return exactMatch;
|
|
183
|
-
// Then try partial match (contains)
|
|
184
|
-
const partialMatch = columnNames.find(col => col.toLowerCase().includes(targetLower) ||
|
|
185
|
-
targetLower.includes(col.toLowerCase()));
|
|
186
|
-
return partialMatch || null;
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Check if two arrays have the same elements (order-independent)
|
|
190
|
-
*/
|
|
191
|
-
export function arraysEqual(a, b) {
|
|
192
|
-
if (a.length !== b.length)
|
|
193
|
-
return false;
|
|
194
|
-
const sortedA = [...a].sort();
|
|
195
|
-
const sortedB = [...b].sort();
|
|
196
|
-
return sortedA.every((val, idx) => val === sortedB[idx]);
|
|
197
|
-
}
|
|
198
|
-
// =============================================================================
|
|
199
|
-
// Workspace Priority Settings
|
|
200
|
-
// =============================================================================
|
|
201
|
-
/**
|
|
202
|
-
* Default priority scale (backwards compatible with hardcoded P0-P3).
|
|
203
|
-
*/
|
|
204
|
-
export const DEFAULT_PRIORITIES = ['P0', 'P1', 'P2', 'P3'];
|
|
205
|
-
/**
|
|
206
|
-
* Settings key for storing workspace priorities.
|
|
207
|
-
*/
|
|
208
|
-
const PRIORITIES_SETTING_KEY = 'priorities';
|
|
209
|
-
/**
|
|
210
|
-
* Get the workspace priority scale from pmo_settings.
|
|
211
|
-
* Returns the user-defined priority scale, or DEFAULT_PRIORITIES if not set.
|
|
212
|
-
*
|
|
213
|
-
* Priority values are ordered strings - position in array determines sort order.
|
|
214
|
-
* Index 0 is highest priority.
|
|
215
|
-
*
|
|
216
|
-
* @param db - Database instance
|
|
217
|
-
* @returns Array of priority strings ordered from highest to lowest
|
|
218
|
-
*/
|
|
219
|
-
export function getWorkspacePriorities(db) {
|
|
220
|
-
const row = db.prepare(`SELECT value FROM pmo_settings WHERE key = ?`).get(PRIORITIES_SETTING_KEY);
|
|
221
|
-
if (!row)
|
|
222
|
-
return [...DEFAULT_PRIORITIES];
|
|
223
|
-
try {
|
|
224
|
-
const parsed = JSON.parse(row.value);
|
|
225
|
-
if (Array.isArray(parsed) && parsed.length > 0 && parsed.every((p) => typeof p === 'string')) {
|
|
226
|
-
return parsed;
|
|
227
|
-
}
|
|
228
|
-
return [...DEFAULT_PRIORITIES];
|
|
229
|
-
}
|
|
230
|
-
catch {
|
|
231
|
-
return [...DEFAULT_PRIORITIES];
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Set the workspace priority scale in pmo_settings.
|
|
236
|
-
*
|
|
237
|
-
* @param db - Database instance
|
|
238
|
-
* @param priorities - Array of priority strings ordered from highest to lowest
|
|
239
|
-
*/
|
|
240
|
-
export function setWorkspacePriorities(db, priorities) {
|
|
241
|
-
const value = JSON.stringify(priorities);
|
|
242
|
-
db.prepare(`
|
|
243
|
-
INSERT INTO pmo_settings (key, value) VALUES (?, ?)
|
|
244
|
-
ON CONFLICT(key) DO UPDATE SET value = ?
|
|
245
|
-
`).run(PRIORITIES_SETTING_KEY, value, value);
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Check if a value is a valid priority for the workspace.
|
|
249
|
-
*
|
|
250
|
-
* @param db - Database instance
|
|
251
|
-
* @param value - Value to check
|
|
252
|
-
* @returns true if the value is in the workspace priority scale
|
|
253
|
-
*/
|
|
254
|
-
export function isValidWorkspacePriority(db, value) {
|
|
255
|
-
const priorities = getWorkspacePriorities(db);
|
|
256
|
-
return priorities.includes(value);
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Get the sort index for a priority value.
|
|
260
|
-
* Returns the position in the priority array (0 = highest priority).
|
|
261
|
-
* Returns Infinity for unknown priorities (sorts last).
|
|
262
|
-
*
|
|
263
|
-
* @param db - Database instance
|
|
264
|
-
* @param value - Priority value
|
|
265
|
-
* @returns Sort index (lower = higher priority)
|
|
266
|
-
*/
|
|
267
|
-
export function getPrioritySortIndex(db, value) {
|
|
268
|
-
if (!value)
|
|
269
|
-
return Infinity;
|
|
270
|
-
const priorities = getWorkspacePriorities(db);
|
|
271
|
-
const index = priorities.indexOf(value);
|
|
272
|
-
return index !== -1 ? index : Infinity;
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Valid review gate modes.
|
|
276
|
-
*/
|
|
277
|
-
export const REVIEW_GATE_MODES = ['required', 'auto', 'post'];
|
|
278
|
-
/**
|
|
279
|
-
* Default review gate mode for workspace.
|
|
280
|
-
*/
|
|
281
|
-
export const DEFAULT_REVIEW_GATE = 'required';
|
|
282
|
-
/**
|
|
283
|
-
* Settings key for workspace-level review gate default.
|
|
284
|
-
*/
|
|
285
|
-
const REVIEW_GATE_SETTING_KEY = 'review_gate';
|
|
286
|
-
/**
|
|
287
|
-
* Get the workspace review gate default from pmo_settings.
|
|
288
|
-
* Returns the configured mode, or 'required' if not set.
|
|
289
|
-
*
|
|
290
|
-
* @param db - Database instance
|
|
291
|
-
* @returns The configured review gate mode
|
|
292
|
-
*/
|
|
293
|
-
export function getReviewGateSetting(db) {
|
|
294
|
-
const row = db.prepare(`SELECT value FROM pmo_settings WHERE key = ?`).get(REVIEW_GATE_SETTING_KEY);
|
|
295
|
-
const value = row?.value;
|
|
296
|
-
if (value === 'required' || value === 'auto' || value === 'post') {
|
|
297
|
-
return value;
|
|
298
|
-
}
|
|
299
|
-
return DEFAULT_REVIEW_GATE;
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* Set the workspace review gate default in pmo_settings.
|
|
303
|
-
*
|
|
304
|
-
* @param db - Database instance
|
|
305
|
-
* @param mode - Review gate mode to set
|
|
306
|
-
*/
|
|
307
|
-
export function setReviewGateSetting(db, mode) {
|
|
308
|
-
db.prepare(`
|
|
309
|
-
INSERT INTO pmo_settings (key, value) VALUES (?, ?)
|
|
310
|
-
ON CONFLICT(key) DO UPDATE SET value = ?
|
|
311
|
-
`).run(REVIEW_GATE_SETTING_KEY, mode, mode);
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* Check if a value is a valid review gate mode.
|
|
315
|
-
*/
|
|
316
|
-
export function isValidReviewGateMode(value) {
|
|
317
|
-
return REVIEW_GATE_MODES.includes(value);
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* Resolve the effective review gate mode given the hierarchy of overrides.
|
|
321
|
-
* Most specific wins: per-spawn > per-action > workspace default.
|
|
322
|
-
*
|
|
323
|
-
* @param spawnOverride - Value from --review-gate flag on `prlt work start`
|
|
324
|
-
* @param actionOverride - Value from the action's review_gate column
|
|
325
|
-
* @param db - Database instance for workspace default lookup
|
|
326
|
-
* @returns The resolved review gate mode
|
|
327
|
-
*/
|
|
328
|
-
export function resolveReviewGate(spawnOverride, actionOverride, db) {
|
|
329
|
-
if (spawnOverride)
|
|
330
|
-
return spawnOverride;
|
|
331
|
-
if (actionOverride)
|
|
332
|
-
return actionOverride;
|
|
333
|
-
return getReviewGateSetting(db);
|
|
334
|
-
}
|
|
335
|
-
// =============================================================================
|
|
336
|
-
// External Metadata Helpers
|
|
337
|
-
// =============================================================================
|
|
338
|
-
/**
|
|
339
|
-
* Extract external issue metadata from a ticket's metadata field.
|
|
340
|
-
* Returns the external source, key (e.g. PRLT-1065), id, and url.
|
|
341
|
-
*/
|
|
342
|
-
export function getTicketExternalMetadata(ticket) {
|
|
343
|
-
const metadata = (typeof ticket === 'object'
|
|
344
|
-
&& ticket !== null
|
|
345
|
-
&& 'metadata' in ticket
|
|
346
|
-
&& typeof ticket.metadata === 'object'
|
|
347
|
-
&& ticket.metadata !== null
|
|
348
|
-
? ticket.metadata
|
|
349
|
-
: {});
|
|
350
|
-
return {
|
|
351
|
-
source: typeof metadata.external_source === 'string' ? metadata.external_source : undefined,
|
|
352
|
-
key: typeof metadata.external_key === 'string' ? metadata.external_key : undefined,
|
|
353
|
-
id: typeof metadata.external_id === 'string' ? metadata.external_id : undefined,
|
|
354
|
-
url: typeof metadata.external_url === 'string' ? metadata.external_url : undefined,
|
|
355
|
-
};
|
|
356
|
-
}
|
|
357
|
-
/**
|
|
358
|
-
* Resolve the display/branch ticket ID. When a ticket was imported from an
|
|
359
|
-
* external provider (e.g. Linear), the external key (PRLT-xxx) is preferred
|
|
360
|
-
* over the internal PMO ID (TKT-xxx).
|
|
361
|
-
*/
|
|
362
|
-
export function resolveExternalTicketId(ticket) {
|
|
363
|
-
const external = getTicketExternalMetadata(ticket);
|
|
364
|
-
return external.key || ticket.id;
|
|
365
|
-
}
|
|
366
66
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/pmo/utils.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/pmo/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,MAAM;CACP,CAAC;AAIX;;GAEG;AACH,MAAM,aAAa,GAAG;IACpB,MAAM,EAAE,aAAa;IACrB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,cAAc;CACf,CAAC;AAYX;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAC9B,EAAgB,EAChB,UAAsB;IAEtB,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,QAAQ,UAAU,KAAK,CAAC;IAE3C,qDAAqD;IACrD,mDAAmD;IACnD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,yBAAyB;IAClE,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAC1B,8BAA8B,SAAS,GAAG,CAAC,kCAAkC,SAAS,EAAE,CACzF,CAAC,GAAG,EAA4C,CAAC;IAClD,MAAM,aAAa,GAAG,SAAS,EAAE,OAAO,IAAI,CAAC,CAAC;IAE9C,sBAAsB;IACtB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,8CAA8C,CAC/C,CAAC,GAAG,CAAC,UAAU,CAAkC,CAAC;IAEnD,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhD,0DAA0D;IAC1D,IAAI,OAAO,IAAI,aAAa,EAAE,CAAC;QAC7B,OAAO,GAAG,aAAa,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,iBAAiB;IACjB,EAAE,CAAC,OAAO,CAAC;;;GAGV,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAE7D,iDAAiD;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEnD,OAAO,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
export type { TicketProvider, TicketProviderName, ProviderResult, ProviderMoveResult, ProviderDeleteResult, ProviderListResult, ProviderCreateResult, ProviderGetResult, ProviderUpdateResult, ProviderAssignResult, ProviderContext, ProviderStorage, } from './types.js';
|
|
9
9
|
export { PMOTicketProvider } from './pmo-provider.js';
|
|
10
10
|
export { LinearTicketProvider } from './linear-provider.js';
|
|
11
|
+
export { TrelloTicketProvider } from './trello-provider.js';
|
|
11
12
|
export { EventEmittingProvider, type StatusResolver } from './event-emitting-provider.js';
|
|
12
13
|
export { ProviderStatusMappingStore, type StatusMapping } from './status-mapping.js';
|
|
13
14
|
export { ProviderTriggerStore, TriggerHandler, initTriggerHandler, stopTriggerHandler, TRIGGER_EVENTS, type TriggerEvent, type TriggerConfig, } from './trigger-config.js';
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { PMOTicketProvider } from './pmo-provider.js';
|
|
9
9
|
export { LinearTicketProvider } from './linear-provider.js';
|
|
10
|
+
export { TrelloTicketProvider } from './trello-provider.js';
|
|
10
11
|
export { EventEmittingProvider } from './event-emitting-provider.js';
|
|
11
12
|
export { ProviderStatusMappingStore } from './status-mapping.js';
|
|
12
13
|
export { ProviderTriggerStore, TriggerHandler, initTriggerHandler, stopTriggerHandler, TRIGGER_EVENTS, } from './trigger-config.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAuB,MAAM,8BAA8B,CAAA;AACzF,OAAO,EAAE,0BAA0B,EAAsB,MAAM,qBAAqB,CAAA;AACpF,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GAGf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC7E,OAAO,EACL,IAAI,EACJ,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GAKpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAuB,MAAM,8BAA8B,CAAA;AACzF,OAAO,EAAE,0BAA0B,EAAsB,MAAM,qBAAqB,CAAA;AACpF,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GAGf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC7E,OAAO,EACL,IAAI,EACJ,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GAKpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,oBAAoB,CAAA"}
|
|
@@ -20,9 +20,12 @@
|
|
|
20
20
|
import { isLinearConfigured } from '../linear/config.js';
|
|
21
21
|
import { isClickUpConfigured } from '../clickup/config.js';
|
|
22
22
|
import { LinearMapper } from '../linear/mapper.js';
|
|
23
|
+
import { isTrelloConfigured } from '../trello/config.js';
|
|
24
|
+
import { TrelloMapper } from '../trello/mapper.js';
|
|
23
25
|
import { PMOTicketProvider } from './pmo-provider.js';
|
|
24
26
|
import { LinearTicketProvider } from './linear-provider.js';
|
|
25
27
|
import { ClickUpTicketProvider } from './clickup-provider.js';
|
|
28
|
+
import { TrelloTicketProvider } from './trello-provider.js';
|
|
26
29
|
import { EventEmittingProvider } from './event-emitting-provider.js';
|
|
27
30
|
/**
|
|
28
31
|
* Create a StatusResolver backed by the database.
|
|
@@ -124,6 +127,15 @@ export function resolveTicketProvider(ticketId, projectId, db, storage, metadata
|
|
|
124
127
|
const inner = new ClickUpTicketProvider(db, storage, projectId);
|
|
125
128
|
return wrapWithEvents(inner, db, storage, projectId);
|
|
126
129
|
}
|
|
130
|
+
// Check Trello
|
|
131
|
+
if (externalSource === 'trello' && isTrelloConfigured(db)) {
|
|
132
|
+
const mapper = new TrelloMapper(db);
|
|
133
|
+
const mapping = mapper.getByTicketId(ticketId);
|
|
134
|
+
if (mapping) {
|
|
135
|
+
const inner = new TrelloTicketProvider(db, storage, projectId, null);
|
|
136
|
+
return wrapWithEvents(inner, db, storage, projectId);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
127
139
|
// Default: local PMO
|
|
128
140
|
const inner = new PMOTicketProvider(storage, projectId);
|
|
129
141
|
return wrapWithEvents(inner, db, storage, projectId);
|
|
@@ -156,6 +168,10 @@ export function resolveProjectProvider(db, storage, projectId, source) {
|
|
|
156
168
|
const inner = new ClickUpTicketProvider(db, storage, projectId);
|
|
157
169
|
return wrapWithEvents(inner, db, storage, projectId);
|
|
158
170
|
}
|
|
171
|
+
if (source === 'trello') {
|
|
172
|
+
const inner = new TrelloTicketProvider(db, storage, projectId, null);
|
|
173
|
+
return wrapWithEvents(inner, db, storage, projectId);
|
|
174
|
+
}
|
|
159
175
|
// auto: use Linear when it's configured in the workspace
|
|
160
176
|
try {
|
|
161
177
|
if (isLinearConfigured(db)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/lib/providers/resolver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/lib/providers/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trello Ticket Provider
|
|
3
|
+
*
|
|
4
|
+
* Writes ticket operations directly to Trello via API,
|
|
5
|
+
* then updates local PMO to keep it in sync.
|
|
6
|
+
*
|
|
7
|
+
* Follows the same pattern as LinearTicketProvider:
|
|
8
|
+
* Trello is the source of truth, PMO is best-effort mirror.
|
|
9
|
+
*/
|
|
10
|
+
import type Database from 'better-sqlite3';
|
|
11
|
+
import type { TicketFilter, CreateTicketInput, UpdateTicketInput } from '../pmo/types.js';
|
|
12
|
+
import type { TicketProvider, ProviderMoveResult, ProviderDeleteResult, ProviderListResult, ProviderCreateResult, ProviderGetResult, ProviderUpdateResult, ProviderAssignResult, ProviderStorage } from './types.js';
|
|
13
|
+
export declare class TrelloTicketProvider implements TicketProvider {
|
|
14
|
+
private db;
|
|
15
|
+
private storage;
|
|
16
|
+
private projectId;
|
|
17
|
+
private ticketStatusCategory;
|
|
18
|
+
readonly name: "trello";
|
|
19
|
+
constructor(db: Database.Database, storage: ProviderStorage, projectId: string, ticketStatusCategory: string | null);
|
|
20
|
+
private getCredentialsOrFail;
|
|
21
|
+
moveTicket(ticketId: string, newState: string): Promise<ProviderMoveResult>;
|
|
22
|
+
deleteTicket(ticketId: string): Promise<ProviderDeleteResult>;
|
|
23
|
+
listTickets(projectId?: string, filter?: TicketFilter): Promise<ProviderListResult>;
|
|
24
|
+
createTicket(projectId: string, input: CreateTicketInput): Promise<ProviderCreateResult>;
|
|
25
|
+
getTicket(ticketId: string): Promise<ProviderGetResult>;
|
|
26
|
+
updateTicket(ticketId: string, input: UpdateTicketInput): Promise<ProviderUpdateResult>;
|
|
27
|
+
assignTicket(ticketId: string, assignee: string): Promise<ProviderAssignResult>;
|
|
28
|
+
}
|