@proletariat/cli 0.3.72 → 0.3.74
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/action/create.js +1 -0
- package/dist/commands/action/create.js.map +1 -1
- package/dist/commands/action/delete.js +1 -1
- package/dist/commands/action/delete.js.map +1 -1
- package/dist/commands/action/run.js +1 -1
- package/dist/commands/action/run.js.map +1 -1
- package/dist/commands/action/show.js +1 -0
- package/dist/commands/action/show.js.map +1 -1
- package/dist/commands/action/update.js +1 -1
- package/dist/commands/action/update.js.map +1 -1
- package/dist/commands/agent/auth.js +4 -0
- package/dist/commands/agent/auth.js.map +1 -1
- package/dist/commands/agent/cleanup.js +1 -1
- package/dist/commands/agent/cleanup.js.map +1 -1
- package/dist/commands/agent/discover.js +1 -0
- package/dist/commands/agent/discover.js.map +1 -1
- package/dist/commands/agent/index.js +2 -0
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/rebuild.js +1 -1
- package/dist/commands/agent/rebuild.js.map +1 -1
- package/dist/commands/agent/remove.js +1 -1
- package/dist/commands/agent/remove.js.map +1 -1
- package/dist/commands/agent/restart.js +1 -1
- package/dist/commands/agent/restart.js.map +1 -1
- package/dist/commands/agent/visit.js +1 -1
- package/dist/commands/agent/visit.js.map +1 -1
- package/dist/commands/asana/connect.js +6 -5
- package/dist/commands/asana/connect.js.map +1 -1
- package/dist/commands/asana/import.js +4 -4
- package/dist/commands/asana/import.js.map +1 -1
- package/dist/commands/asana/sync.js +3 -3
- package/dist/commands/asana/sync.js.map +1 -1
- package/dist/commands/autocomplete/setup.js +2 -1
- package/dist/commands/autocomplete/setup.js.map +1 -1
- package/dist/commands/board/index.js +1 -0
- package/dist/commands/board/index.js.map +1 -1
- package/dist/commands/board/view.js +1 -1
- package/dist/commands/board/view.js.map +1 -1
- package/dist/commands/branch/create.js +1 -1
- package/dist/commands/branch/create.js.map +1 -1
- package/dist/commands/branch/validate.js +2 -0
- package/dist/commands/branch/validate.js.map +1 -1
- package/dist/commands/branch/where.js +1 -0
- package/dist/commands/branch/where.js.map +1 -1
- package/dist/commands/category/create.js +3 -0
- package/dist/commands/category/create.js.map +1 -1
- package/dist/commands/category/delete.js +3 -0
- package/dist/commands/category/delete.js.map +1 -1
- package/dist/commands/category/rename.js +6 -0
- package/dist/commands/category/rename.js.map +1 -1
- package/dist/commands/claude/index.js +5 -5
- package/dist/commands/claude/index.js.map +1 -1
- package/dist/commands/claude/open.js +5 -0
- package/dist/commands/claude/open.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 +6 -1
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/dashboard.js +1 -0
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/diet.js +1 -0
- package/dist/commands/diet.js.map +1 -1
- package/dist/commands/docker/clean.js +2 -0
- package/dist/commands/docker/clean.js.map +1 -1
- package/dist/commands/docker/index.js +1 -0
- package/dist/commands/docker/index.js.map +1 -1
- package/dist/commands/docker/logs.js +6 -0
- package/dist/commands/docker/logs.js.map +1 -1
- package/dist/commands/docker/prune.js +1 -0
- package/dist/commands/docker/prune.js.map +1 -1
- package/dist/commands/docker/restart.js +5 -0
- package/dist/commands/docker/restart.js.map +1 -1
- package/dist/commands/docker/start.js +4 -0
- package/dist/commands/docker/start.js.map +1 -1
- package/dist/commands/docker/stop.js +4 -0
- package/dist/commands/docker/stop.js.map +1 -1
- package/dist/commands/epic/activate.js +1 -1
- package/dist/commands/epic/activate.js.map +1 -1
- package/dist/commands/epic/archive.js +1 -1
- package/dist/commands/epic/archive.js.map +1 -1
- package/dist/commands/epic/create.js +4 -0
- package/dist/commands/epic/create.js.map +1 -1
- package/dist/commands/epic/delete.js +1 -1
- package/dist/commands/epic/delete.js.map +1 -1
- package/dist/commands/epic/move.js +1 -1
- package/dist/commands/epic/move.js.map +1 -1
- package/dist/commands/epic/progress.js +1 -0
- package/dist/commands/epic/progress.js.map +1 -1
- package/dist/commands/epic/project.js +1 -1
- package/dist/commands/epic/project.js.map +1 -1
- package/dist/commands/epic/reorder.js +1 -1
- package/dist/commands/epic/reorder.js.map +1 -1
- package/dist/commands/epic/spec.js +1 -1
- package/dist/commands/epic/spec.js.map +1 -1
- package/dist/commands/epic/ticket.js +1 -1
- package/dist/commands/epic/ticket.js.map +1 -1
- package/dist/commands/epic/view.js +1 -1
- package/dist/commands/epic/view.js.map +1 -1
- package/dist/commands/execution/config.js +7 -1
- package/dist/commands/execution/config.js.map +1 -1
- package/dist/commands/execution/list.js +1 -0
- package/dist/commands/execution/list.js.map +1 -1
- package/dist/commands/execution/logs.js +1 -0
- package/dist/commands/execution/logs.js.map +1 -1
- package/dist/commands/execution/stop.js +2 -0
- package/dist/commands/execution/stop.js.map +1 -1
- package/dist/commands/execution/view.js +3 -1
- package/dist/commands/execution/view.js.map +1 -1
- package/dist/commands/feedback/list.js +2 -0
- package/dist/commands/feedback/list.js.map +1 -1
- package/dist/commands/feedback/submit.js +2 -0
- package/dist/commands/feedback/submit.js.map +1 -1
- package/dist/commands/feedback/view.js +2 -0
- package/dist/commands/feedback/view.js.map +1 -1
- package/dist/commands/gh/login.js +1 -1
- package/dist/commands/gh/login.js.map +1 -1
- package/dist/commands/gh/token.js +1 -1
- package/dist/commands/gh/token.js.map +1 -1
- package/dist/commands/linear/auth.js +4 -4
- package/dist/commands/linear/auth.js.map +1 -1
- package/dist/commands/linear/connect.js +10 -5
- package/dist/commands/linear/connect.js.map +1 -1
- package/dist/commands/linear/import.js +4 -3
- package/dist/commands/linear/import.js.map +1 -1
- package/dist/commands/linear/sync.js +3 -3
- package/dist/commands/linear/sync.js.map +1 -1
- package/dist/commands/link/create.js +1 -1
- package/dist/commands/link/create.js.map +1 -1
- package/dist/commands/link/list.js +1 -1
- package/dist/commands/link/list.js.map +1 -1
- package/dist/commands/link/remove.js +1 -1
- package/dist/commands/link/remove.js.map +1 -1
- package/dist/commands/media/add.js +2 -1
- package/dist/commands/media/add.js.map +1 -1
- package/dist/commands/media/index.js +2 -0
- package/dist/commands/media/index.js.map +1 -1
- package/dist/commands/media/list.js +1 -0
- package/dist/commands/media/list.js.map +1 -1
- package/dist/commands/media/preprocess.js +1 -1
- package/dist/commands/media/preprocess.js.map +1 -1
- package/dist/commands/media/remove.js +2 -1
- package/dist/commands/media/remove.js.map +1 -1
- package/dist/commands/media/show.js +1 -1
- package/dist/commands/media/show.js.map +1 -1
- package/dist/commands/monday/connect.js +4 -4
- package/dist/commands/monday/connect.js.map +1 -1
- package/dist/commands/monday/sync.js +4 -4
- package/dist/commands/monday/sync.js.map +1 -1
- package/dist/commands/new.js +1 -0
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/orchestrator/start.js +2 -0
- package/dist/commands/orchestrator/start.js.map +1 -1
- package/dist/commands/phase/delete.js +1 -1
- package/dist/commands/phase/delete.js.map +1 -1
- package/dist/commands/phase/move.js +1 -1
- package/dist/commands/phase/move.js.map +1 -1
- package/dist/commands/phase/template/delete.js +1 -0
- package/dist/commands/phase/template/delete.js.map +1 -1
- package/dist/commands/phase/update.js +1 -1
- package/dist/commands/phase/update.js.map +1 -1
- package/dist/commands/pmo/init.js +2 -2
- package/dist/commands/pmo/init.js.map +1 -1
- package/dist/commands/pr/checks.js +1 -1
- package/dist/commands/pr/checks.js.map +1 -1
- package/dist/commands/pr/create.js +1 -1
- package/dist/commands/pr/create.js.map +1 -1
- package/dist/commands/pr/index.js +1 -1
- package/dist/commands/pr/index.js.map +1 -1
- package/dist/commands/pr/link.js +3 -3
- package/dist/commands/pr/link.js.map +1 -1
- package/dist/commands/pr/list.js +1 -1
- package/dist/commands/pr/list.js.map +1 -1
- package/dist/commands/pr/merge.js +1 -1
- package/dist/commands/pr/merge.js.map +1 -1
- package/dist/commands/pr/status.js +1 -1
- package/dist/commands/pr/status.js.map +1 -1
- package/dist/commands/priority/add.js +2 -2
- package/dist/commands/priority/add.js.map +1 -1
- package/dist/commands/priority/remove.js +2 -2
- package/dist/commands/priority/remove.js.map +1 -1
- package/dist/commands/priority/set.js +2 -2
- package/dist/commands/priority/set.js.map +1 -1
- package/dist/commands/project/archive.js +1 -1
- package/dist/commands/project/archive.js.map +1 -1
- package/dist/commands/project/create.js +4 -0
- package/dist/commands/project/create.js.map +1 -1
- package/dist/commands/project/delete.js +1 -1
- package/dist/commands/project/delete.js.map +1 -1
- package/dist/commands/project/spec.js +1 -1
- package/dist/commands/project/spec.js.map +1 -1
- package/dist/commands/project/unarchive.js +1 -1
- package/dist/commands/project/unarchive.js.map +1 -1
- package/dist/commands/project/update.js +1 -1
- package/dist/commands/project/update.js.map +1 -1
- package/dist/commands/project/view.js +1 -1
- package/dist/commands/project/view.js.map +1 -1
- package/dist/commands/pull.js +3 -0
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/qa/index.js +4 -4
- package/dist/commands/qa/index.js.map +1 -1
- package/dist/commands/repo/add.js +1 -1
- package/dist/commands/repo/add.js.map +1 -1
- package/dist/commands/repo/create.js +1 -1
- package/dist/commands/repo/create.js.map +1 -1
- package/dist/commands/repo/remove.js +2 -2
- package/dist/commands/repo/remove.js.map +1 -1
- package/dist/commands/repo/view.js +1 -1
- package/dist/commands/repo/view.js.map +1 -1
- package/dist/commands/roadmap/create.js +1 -0
- package/dist/commands/roadmap/create.js.map +1 -1
- package/dist/commands/self-update.d.ts +17 -0
- package/dist/commands/self-update.js +183 -0
- package/dist/commands/self-update.js.map +1 -0
- package/dist/commands/session/create.js +4 -0
- package/dist/commands/session/create.js.map +1 -1
- package/dist/commands/session/exec.js +4 -0
- package/dist/commands/session/exec.js.map +1 -1
- package/dist/commands/session/health.js +2 -0
- package/dist/commands/session/health.js.map +1 -1
- package/dist/commands/session/inspect.js +3 -0
- package/dist/commands/session/inspect.js.map +1 -1
- package/dist/commands/session/peek.js +1 -0
- package/dist/commands/session/peek.js.map +1 -1
- package/dist/commands/session/restart.js +4 -0
- package/dist/commands/session/restart.js.map +1 -1
- package/dist/commands/shortcut/connect.js +4 -4
- package/dist/commands/shortcut/connect.js.map +1 -1
- package/dist/commands/staff/remove.js +1 -1
- package/dist/commands/staff/remove.js.map +1 -1
- package/dist/commands/status/delete.js +2 -1
- package/dist/commands/status/delete.js.map +1 -1
- package/dist/commands/status/list.js +1 -0
- package/dist/commands/status/list.js.map +1 -1
- package/dist/commands/status/move.js +2 -1
- package/dist/commands/status/move.js.map +1 -1
- package/dist/commands/status/update.js +1 -1
- package/dist/commands/status/update.js.map +1 -1
- package/dist/commands/telemetry/disable.js +1 -0
- package/dist/commands/telemetry/disable.js.map +1 -1
- package/dist/commands/telemetry/enable.js +1 -0
- package/dist/commands/telemetry/enable.js.map +1 -1
- package/dist/commands/telemetry/index.js +1 -0
- package/dist/commands/telemetry/index.js.map +1 -1
- package/dist/commands/template/apply.js +2 -2
- package/dist/commands/template/apply.js.map +1 -1
- package/dist/commands/template/delete.js +1 -0
- package/dist/commands/template/delete.js.map +1 -1
- package/dist/commands/template/save.js +1 -0
- package/dist/commands/template/save.js.map +1 -1
- package/dist/commands/template/update.js +1 -0
- package/dist/commands/template/update.js.map +1 -1
- package/dist/commands/ticket/complete.js +1 -1
- package/dist/commands/ticket/complete.js.map +1 -1
- package/dist/commands/ticket/create.js +14 -4
- package/dist/commands/ticket/create.js.map +1 -1
- package/dist/commands/ticket/delete.js +23 -8
- package/dist/commands/ticket/delete.js.map +1 -1
- package/dist/commands/ticket/edit.js +2 -2
- package/dist/commands/ticket/edit.js.map +1 -1
- package/dist/commands/ticket/link/block.js +1 -1
- package/dist/commands/ticket/link/block.js.map +1 -1
- package/dist/commands/ticket/link/duplicates.js +1 -1
- package/dist/commands/ticket/link/duplicates.js.map +1 -1
- package/dist/commands/ticket/link/relates.js +1 -1
- package/dist/commands/ticket/link/relates.js.map +1 -1
- package/dist/commands/ticket/list.d.ts +0 -8
- package/dist/commands/ticket/list.js +15 -121
- package/dist/commands/ticket/list.js.map +1 -1
- package/dist/commands/ticket/move.js +34 -7
- package/dist/commands/ticket/move.js.map +1 -1
- package/dist/commands/ticket/resolve.js +2 -2
- package/dist/commands/ticket/resolve.js.map +1 -1
- package/dist/commands/ticket/status.js +1 -1
- package/dist/commands/ticket/status.js.map +1 -1
- package/dist/commands/ticket/template/delete.js +1 -0
- package/dist/commands/ticket/template/delete.js.map +1 -1
- package/dist/commands/ticket/template/save.js +1 -0
- package/dist/commands/ticket/template/save.js.map +1 -1
- package/dist/commands/ticket/update.js +1 -0
- package/dist/commands/ticket/update.js.map +1 -1
- package/dist/commands/ticket/view.js +1 -1
- package/dist/commands/ticket/view.js.map +1 -1
- package/dist/commands/tools/add.js +6 -0
- package/dist/commands/tools/add.js.map +1 -1
- package/dist/commands/tools/remove.js +3 -0
- package/dist/commands/tools/remove.js.map +1 -1
- package/dist/commands/trello/configure.js +5 -5
- package/dist/commands/trello/configure.js.map +1 -1
- package/dist/commands/trello/import.js +4 -4
- package/dist/commands/trello/import.js.map +1 -1
- package/dist/commands/trello/sync.js +3 -3
- package/dist/commands/trello/sync.js.map +1 -1
- package/dist/commands/version/bump.js +3 -0
- package/dist/commands/version/bump.js.map +1 -1
- package/dist/commands/work/complete.js +34 -1
- package/dist/commands/work/complete.js.map +1 -1
- package/dist/commands/work/hooks/add.js +7 -0
- package/dist/commands/work/hooks/add.js.map +1 -1
- package/dist/commands/work/hooks/list.js +2 -0
- package/dist/commands/work/hooks/list.js.map +1 -1
- package/dist/commands/work/hooks/remove.js +4 -0
- package/dist/commands/work/hooks/remove.js.map +1 -1
- package/dist/commands/work/hooks/toggle.js +4 -0
- package/dist/commands/work/hooks/toggle.js.map +1 -1
- package/dist/commands/work/ready.js +44 -5
- package/dist/commands/work/ready.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/review.js +3 -1
- package/dist/commands/work/review.js.map +1 -1
- package/dist/commands/work/revise.js +1 -1
- package/dist/commands/work/revise.js.map +1 -1
- package/dist/commands/work/source/set.js +3 -0
- package/dist/commands/work/source/set.js.map +1 -1
- package/dist/commands/work/source.js +1 -0
- package/dist/commands/work/source.js.map +1 -1
- package/dist/commands/work/spawn.js +2 -1
- package/dist/commands/work/spawn.js.map +1 -1
- package/dist/commands/work/start.js +71 -18
- package/dist/commands/work/start.js.map +1 -1
- package/dist/commands/work/watch.js +1 -1
- package/dist/commands/work/watch.js.map +1 -1
- package/dist/commands/workflow/delete.js +1 -1
- package/dist/commands/workflow/delete.js.map +1 -1
- package/dist/commands/workflow/setup.js +5 -0
- package/dist/commands/workflow/setup.js.map +1 -1
- package/dist/commands/workflow/switch.js +1 -1
- package/dist/commands/workflow/switch.js.map +1 -1
- package/dist/commands/workflow/view.js +1 -1
- package/dist/commands/workflow/view.js.map +1 -1
- package/dist/commands/workflow-rule/create.js +1 -0
- package/dist/commands/workflow-rule/create.js.map +1 -1
- package/dist/commands/workflow-rule/delete.js +1 -1
- package/dist/commands/workflow-rule/delete.js.map +1 -1
- package/dist/commands/workflow-rule/update.js +1 -1
- package/dist/commands/workflow-rule/update.js.map +1 -1
- package/dist/commands/workspace/add.js +5 -0
- package/dist/commands/workspace/add.js.map +1 -1
- package/dist/commands/workspace/remove.js +1 -1
- package/dist/commands/workspace/remove.js.map +1 -1
- package/dist/hooks/init.js +35 -7
- package/dist/hooks/init.js.map +1 -1
- package/dist/hooks/postrun.d.ts +6 -4
- package/dist/hooks/postrun.js +25 -18
- package/dist/hooks/postrun.js.map +1 -1
- package/dist/lib/execution/commit-validation.d.ts +58 -0
- package/dist/lib/execution/commit-validation.js +252 -0
- package/dist/lib/execution/commit-validation.js.map +1 -0
- package/dist/lib/execution/config.js +3 -0
- package/dist/lib/execution/config.js.map +1 -1
- package/dist/lib/execution/context.d.ts +1 -1
- package/dist/lib/execution/context.js +5 -3
- package/dist/lib/execution/context.js.map +1 -1
- package/dist/lib/execution/runners/devcontainer.js +29 -13
- package/dist/lib/execution/runners/devcontainer.js.map +1 -1
- package/dist/lib/execution/storage.d.ts +20 -3
- package/dist/lib/execution/storage.js +27 -6
- package/dist/lib/execution/storage.js.map +1 -1
- package/dist/lib/flags/resolver.js +3 -6
- package/dist/lib/flags/resolver.js.map +1 -1
- package/dist/lib/linear/client.d.ts +4 -0
- package/dist/lib/linear/client.js +12 -0
- package/dist/lib/linear/client.js.map +1 -1
- package/dist/lib/onboarding/wizard.js +3 -3
- package/dist/lib/onboarding/wizard.js.map +1 -1
- package/dist/lib/pmo/base-command.d.ts +21 -1
- package/dist/lib/pmo/base-command.js +28 -4
- package/dist/lib/pmo/base-command.js.map +1 -1
- package/dist/lib/prompt-command.js +1 -1
- package/dist/lib/prompt-command.js.map +1 -1
- package/dist/lib/prompt-json.d.ts +19 -11
- package/dist/lib/prompt-json.js +32 -17
- package/dist/lib/prompt-json.js.map +1 -1
- package/dist/lib/providers/index.d.ts +11 -0
- package/dist/lib/providers/index.js +11 -0
- package/dist/lib/providers/index.js.map +1 -0
- package/dist/lib/providers/linear-provider.d.ts +26 -0
- package/dist/lib/providers/linear-provider.js +339 -0
- package/dist/lib/providers/linear-provider.js.map +1 -0
- package/dist/lib/providers/pmo-provider.d.ts +20 -0
- package/dist/lib/providers/pmo-provider.js +83 -0
- package/dist/lib/providers/pmo-provider.js.map +1 -0
- package/dist/lib/providers/resolver.d.ts +44 -0
- package/dist/lib/providers/resolver.js +82 -0
- package/dist/lib/providers/resolver.js.map +1 -0
- package/dist/lib/providers/types.d.ts +136 -0
- package/dist/lib/providers/types.js +12 -0
- package/dist/lib/providers/types.js.map +1 -0
- package/dist/lib/update-check.d.ts +8 -2
- package/dist/lib/update-check.js +42 -2
- package/dist/lib/update-check.js.map +1 -1
- package/dist/lib/update-prompt.d.ts +3 -3
- package/dist/lib/update-prompt.js +39 -14
- package/dist/lib/update-prompt.js.map +1 -1
- package/dist/lib/work-lifecycle/index.d.ts +1 -0
- package/dist/lib/work-lifecycle/index.js +1 -0
- package/dist/lib/work-lifecycle/index.js.map +1 -1
- package/dist/lib/work-lifecycle/post-execution.d.ts +40 -9
- package/dist/lib/work-lifecycle/post-execution.js +61 -9
- package/dist/lib/work-lifecycle/post-execution.js.map +1 -1
- package/oclif.manifest.json +2726 -2675
- package/package.json +1 -1
package/dist/lib/prompt-json.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* - EXIT_ERROR (1): Command failed with an error
|
|
16
16
|
* - EXIT_NEEDS_INPUT (2): Command needs additional input (prompt required)
|
|
17
17
|
*/
|
|
18
|
+
import { Errors } from '@oclif/core';
|
|
18
19
|
/**
|
|
19
20
|
* Exit code for successful command completion
|
|
20
21
|
*/
|
|
@@ -231,11 +232,12 @@ export function createMetadata(command, flags) {
|
|
|
231
232
|
};
|
|
232
233
|
}
|
|
233
234
|
/**
|
|
234
|
-
* Output a prompt configuration as JSON and
|
|
235
|
+
* Output a prompt configuration as JSON and halt command execution
|
|
235
236
|
*
|
|
236
237
|
* Use this when a command would normally show an interactive prompt.
|
|
237
238
|
* Outputs the prompt config so agents can understand what input is needed,
|
|
238
|
-
* then
|
|
239
|
+
* then throws oclif ExitError to stop execution while still allowing
|
|
240
|
+
* postrun hooks to fire (unlike process.exit which bypasses them).
|
|
239
241
|
*
|
|
240
242
|
* @param config - Prompt configuration
|
|
241
243
|
* @param metadata - Command metadata
|
|
@@ -247,14 +249,15 @@ export function outputPromptAsJson(config, metadata) {
|
|
|
247
249
|
metadata,
|
|
248
250
|
};
|
|
249
251
|
console.log(JSON.stringify(output, null, 2));
|
|
250
|
-
process.
|
|
252
|
+
process.exitCode = EXIT_NEEDS_INPUT;
|
|
253
|
+
throw new Errors.ExitError(EXIT_NEEDS_INPUT);
|
|
251
254
|
}
|
|
252
255
|
/**
|
|
253
|
-
* Output success result as JSON and
|
|
256
|
+
* Output success result as JSON and halt command execution
|
|
254
257
|
*
|
|
255
258
|
* Use this when all required data was provided via flags
|
|
256
|
-
* and no prompt is needed.
|
|
257
|
-
*
|
|
259
|
+
* and no prompt is needed. Throws oclif ExitError to stop execution
|
|
260
|
+
* while still allowing postrun hooks to fire.
|
|
258
261
|
*
|
|
259
262
|
* @param result - Command-specific result data
|
|
260
263
|
* @param metadata - Command metadata
|
|
@@ -268,14 +271,16 @@ export function outputSuccessAsJson(result, metadata) {
|
|
|
268
271
|
metadata,
|
|
269
272
|
};
|
|
270
273
|
console.log(JSON.stringify(output, null, 2));
|
|
271
|
-
process.
|
|
274
|
+
process.exitCode = EXIT_SUCCESS;
|
|
275
|
+
throw new Errors.ExitError(EXIT_SUCCESS);
|
|
272
276
|
}
|
|
273
277
|
/**
|
|
274
|
-
* Output error as JSON and
|
|
278
|
+
* Output error as JSON and halt command execution
|
|
275
279
|
*
|
|
276
280
|
* Use this when an error occurs and --json flag is active.
|
|
277
|
-
* Provides structured error output for programmatic handling
|
|
278
|
-
*
|
|
281
|
+
* Provides structured error output for programmatic handling.
|
|
282
|
+
* Throws oclif ExitError to stop execution while still allowing
|
|
283
|
+
* postrun hooks to fire.
|
|
279
284
|
*
|
|
280
285
|
* @param code - Machine-readable error code (e.g., "NO_TICKETS_AVAILABLE")
|
|
281
286
|
* @param message - Human-readable error message
|
|
@@ -291,7 +296,8 @@ export function outputErrorAsJson(code, message, metadata) {
|
|
|
291
296
|
metadata,
|
|
292
297
|
};
|
|
293
298
|
console.log(JSON.stringify(output, null, 2));
|
|
294
|
-
process.
|
|
299
|
+
process.exitCode = EXIT_ERROR;
|
|
300
|
+
throw new Errors.ExitError(EXIT_ERROR);
|
|
295
301
|
}
|
|
296
302
|
/**
|
|
297
303
|
* Convert inquirer choices to PromptChoice format
|
|
@@ -370,10 +376,12 @@ export function buildFormPromptConfig(fields) {
|
|
|
370
376
|
};
|
|
371
377
|
}
|
|
372
378
|
/**
|
|
373
|
-
* Output a successful dry-run result as JSON and
|
|
379
|
+
* Output a successful dry-run result as JSON and halt command execution
|
|
374
380
|
*
|
|
375
381
|
* Use this when --dry-run is set and all validation passes.
|
|
376
382
|
* Shows what would be created without actually creating it.
|
|
383
|
+
* Throws oclif ExitError to stop execution while still allowing
|
|
384
|
+
* postrun hooks to fire.
|
|
377
385
|
*
|
|
378
386
|
* @param entityType - Type of entity that would be created (e.g., "ticket", "project")
|
|
379
387
|
* @param wouldCreate - Data about what would be created
|
|
@@ -390,13 +398,16 @@ export function outputDryRunSuccessAsJson(entityType, wouldCreate, metadata) {
|
|
|
390
398
|
metadata,
|
|
391
399
|
};
|
|
392
400
|
console.log(JSON.stringify(output, null, 2));
|
|
393
|
-
process.
|
|
401
|
+
process.exitCode = EXIT_SUCCESS;
|
|
402
|
+
throw new Errors.ExitError(EXIT_SUCCESS);
|
|
394
403
|
}
|
|
395
404
|
/**
|
|
396
|
-
* Output a dry-run validation failure as JSON and
|
|
405
|
+
* Output a dry-run validation failure as JSON and halt command execution
|
|
397
406
|
*
|
|
398
407
|
* Use this when --dry-run is set and validation fails.
|
|
399
408
|
* Shows the validation errors without attempting to create.
|
|
409
|
+
* Throws oclif ExitError to stop execution while still allowing
|
|
410
|
+
* postrun hooks to fire.
|
|
400
411
|
*
|
|
401
412
|
* @param errors - Array of validation errors
|
|
402
413
|
* @param metadata - Command metadata
|
|
@@ -409,13 +420,16 @@ export function outputDryRunErrorsAsJson(errors, metadata) {
|
|
|
409
420
|
metadata,
|
|
410
421
|
};
|
|
411
422
|
console.log(JSON.stringify(output, null, 2));
|
|
412
|
-
process.
|
|
423
|
+
process.exitCode = EXIT_ERROR;
|
|
424
|
+
throw new Errors.ExitError(EXIT_ERROR);
|
|
413
425
|
}
|
|
414
426
|
/**
|
|
415
|
-
* Output a confirmation needed response as JSON and
|
|
427
|
+
* Output a confirmation needed response as JSON and halt command execution
|
|
416
428
|
*
|
|
417
429
|
* Use this in non-TTY mode when all required flags are provided but --yes is not set.
|
|
418
430
|
* This allows agents to preview what will happen before confirming execution.
|
|
431
|
+
* Throws oclif ExitError to stop execution while still allowing
|
|
432
|
+
* postrun hooks to fire.
|
|
419
433
|
*
|
|
420
434
|
* @param plan - Details of what will happen if confirmed
|
|
421
435
|
* @param confirmCommand - The full command to run with --yes to execute
|
|
@@ -431,7 +445,8 @@ export function outputConfirmationNeededAsJson(plan, confirmCommand, message, me
|
|
|
431
445
|
metadata,
|
|
432
446
|
};
|
|
433
447
|
console.log(JSON.stringify(output, null, 2));
|
|
434
|
-
process.
|
|
448
|
+
process.exitCode = EXIT_NEEDS_INPUT;
|
|
449
|
+
throw new Errors.ExitError(EXIT_NEEDS_INPUT);
|
|
435
450
|
}
|
|
436
451
|
/**
|
|
437
452
|
* Output execution result as JSON (non-exiting version)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-json.js","sourceRoot":"","sources":["../../src/lib/prompt-json.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prompt-json.js","sourceRoot":"","sources":["../../src/lib/prompt-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ticket Providers — public API.
|
|
3
|
+
*
|
|
4
|
+
* Unified provider interface for all ticket operations across backends.
|
|
5
|
+
* provider.moveTicket(), .listTickets(), .createTicket(), .deleteTicket()
|
|
6
|
+
* — same interface whether Linear, Jira, or local PMO.
|
|
7
|
+
*/
|
|
8
|
+
export type { TicketProvider, TicketProviderName, ProviderResult, ProviderMoveResult, ProviderDeleteResult, ProviderListResult, ProviderCreateResult, ProviderGetResult, ProviderContext, ProviderStorage, } from './types.js';
|
|
9
|
+
export { PMOTicketProvider } from './pmo-provider.js';
|
|
10
|
+
export { LinearTicketProvider } from './linear-provider.js';
|
|
11
|
+
export { resolveTicketProvider, resolveProjectProvider } from './resolver.js';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ticket Providers — public API.
|
|
3
|
+
*
|
|
4
|
+
* Unified provider interface for all ticket operations across backends.
|
|
5
|
+
* provider.moveTicket(), .listTickets(), .createTicket(), .deleteTicket()
|
|
6
|
+
* — same interface whether Linear, Jira, or local PMO.
|
|
7
|
+
*/
|
|
8
|
+
export { PMOTicketProvider } from './pmo-provider.js';
|
|
9
|
+
export { LinearTicketProvider } from './linear-provider.js';
|
|
10
|
+
export { resolveTicketProvider, resolveProjectProvider } from './resolver.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Linear Ticket Provider
|
|
3
|
+
*
|
|
4
|
+
* Writes ticket operations directly to Linear via API,
|
|
5
|
+
* then updates local PMO to keep it in sync.
|
|
6
|
+
*
|
|
7
|
+
* Emits work:status_changed with source='linear' so the outbound sync
|
|
8
|
+
* handler skips Linear (avoiding double-write).
|
|
9
|
+
*/
|
|
10
|
+
import type Database from 'better-sqlite3';
|
|
11
|
+
import type { TicketFilter, CreateTicketInput } from '../pmo/types.js';
|
|
12
|
+
import type { TicketProvider, ProviderMoveResult, ProviderDeleteResult, ProviderListResult, ProviderCreateResult, ProviderGetResult, ProviderStorage } from './types.js';
|
|
13
|
+
export declare class LinearTicketProvider implements TicketProvider {
|
|
14
|
+
private db;
|
|
15
|
+
private storage;
|
|
16
|
+
private projectId;
|
|
17
|
+
private ticketStatusCategory;
|
|
18
|
+
readonly name: "linear";
|
|
19
|
+
constructor(db: Database.Database, storage: ProviderStorage, projectId: string, ticketStatusCategory: string | null);
|
|
20
|
+
private getApiKeyOrFail;
|
|
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
|
+
}
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Linear Ticket Provider
|
|
3
|
+
*
|
|
4
|
+
* Writes ticket operations directly to Linear via API,
|
|
5
|
+
* then updates local PMO to keep it in sync.
|
|
6
|
+
*
|
|
7
|
+
* Emits work:status_changed with source='linear' so the outbound sync
|
|
8
|
+
* handler skips Linear (avoiding double-write).
|
|
9
|
+
*/
|
|
10
|
+
import { LinearClient } from '../linear/client.js';
|
|
11
|
+
import { LinearMapper } from '../linear/mapper.js';
|
|
12
|
+
import { getLinearApiKey, loadLinearConfig } from '../linear/config.js';
|
|
13
|
+
import { findMatchingLinearState } from '../external-issues/outbound-sync.js';
|
|
14
|
+
import { listLinearIssues } from '../external-issues/linear.js';
|
|
15
|
+
import { PMO_PRIORITY_TO_LINEAR, LINEAR_PRIORITY_TO_PMO } from '../linear/types.js';
|
|
16
|
+
export class LinearTicketProvider {
|
|
17
|
+
db;
|
|
18
|
+
storage;
|
|
19
|
+
projectId;
|
|
20
|
+
ticketStatusCategory;
|
|
21
|
+
name = 'linear';
|
|
22
|
+
constructor(db, storage, projectId, ticketStatusCategory) {
|
|
23
|
+
this.db = db;
|
|
24
|
+
this.storage = storage;
|
|
25
|
+
this.projectId = projectId;
|
|
26
|
+
this.ticketStatusCategory = ticketStatusCategory;
|
|
27
|
+
}
|
|
28
|
+
getApiKeyOrFail() {
|
|
29
|
+
const apiKey = getLinearApiKey(this.db);
|
|
30
|
+
if (!apiKey)
|
|
31
|
+
throw new Error('Linear API key not configured');
|
|
32
|
+
return apiKey;
|
|
33
|
+
}
|
|
34
|
+
async moveTicket(ticketId, newState) {
|
|
35
|
+
// 1. Get Linear API key
|
|
36
|
+
const apiKey = getLinearApiKey(this.db);
|
|
37
|
+
if (!apiKey) {
|
|
38
|
+
return { success: false, provider: 'linear', error: 'Linear API key not configured' };
|
|
39
|
+
}
|
|
40
|
+
// 2. Look up Linear mapping for this PMO ticket
|
|
41
|
+
const mapper = new LinearMapper(this.db);
|
|
42
|
+
const mapping = mapper.getByTicketId(ticketId);
|
|
43
|
+
if (!mapping) {
|
|
44
|
+
return { success: false, provider: 'linear', error: `No Linear mapping for ticket ${ticketId}` };
|
|
45
|
+
}
|
|
46
|
+
// 3. Get Linear team's workflow states
|
|
47
|
+
const client = new LinearClient(apiKey);
|
|
48
|
+
let team;
|
|
49
|
+
try {
|
|
50
|
+
team = await client.getTeamByKey(mapping.linearTeamKey);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
return {
|
|
54
|
+
success: false,
|
|
55
|
+
provider: 'linear',
|
|
56
|
+
error: `Failed to get Linear team: ${error instanceof Error ? error.message : String(error)}`,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (!team) {
|
|
60
|
+
return { success: false, provider: 'linear', error: `Linear team not found: ${mapping.linearTeamKey}` };
|
|
61
|
+
}
|
|
62
|
+
let states;
|
|
63
|
+
try {
|
|
64
|
+
states = await client.listStates(team.id);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
provider: 'linear',
|
|
70
|
+
error: `Failed to list Linear states: ${error instanceof Error ? error.message : String(error)}`,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// 4. Find the matching Linear state for the target PMO state
|
|
74
|
+
// Map PMO status category to Linear state type for category matching
|
|
75
|
+
const categoryType = mapPMOStateToLinearType(newState);
|
|
76
|
+
const matchingState = findMatchingLinearState(states, newState, categoryType);
|
|
77
|
+
if (!matchingState) {
|
|
78
|
+
return {
|
|
79
|
+
success: false,
|
|
80
|
+
provider: 'linear',
|
|
81
|
+
error: `No matching Linear state for "${newState}" (category: ${categoryType})`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// 5. Update the issue state on Linear
|
|
85
|
+
try {
|
|
86
|
+
await client.updateIssueState(mapping.linearIssueId, matchingState.id);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
return {
|
|
90
|
+
success: false,
|
|
91
|
+
provider: 'linear',
|
|
92
|
+
error: `Failed to update Linear issue: ${error instanceof Error ? error.message : String(error)}`,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// 6. Also update local PMO to keep it in sync
|
|
96
|
+
try {
|
|
97
|
+
await this.storage.moveTicket(this.projectId, ticketId, newState);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Non-fatal: Linear is the source of truth, local PMO is best-effort
|
|
101
|
+
}
|
|
102
|
+
// 7. Post a comment about the status change
|
|
103
|
+
try {
|
|
104
|
+
await client.addComment(mapping.linearIssueId, `Status updated to **${newState}** (via prlt post-execution transition)`);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Non-fatal: comment is informational
|
|
108
|
+
}
|
|
109
|
+
// 8. Update sync timestamp
|
|
110
|
+
try {
|
|
111
|
+
mapper.updateSyncTimestamp(ticketId);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
// Non-fatal
|
|
115
|
+
}
|
|
116
|
+
return { success: true, provider: 'linear' };
|
|
117
|
+
}
|
|
118
|
+
async deleteTicket(ticketId) {
|
|
119
|
+
let apiKey;
|
|
120
|
+
try {
|
|
121
|
+
apiKey = this.getApiKeyOrFail();
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return { success: false, provider: 'linear', error: 'Linear API key not configured' };
|
|
125
|
+
}
|
|
126
|
+
// Look up Linear mapping
|
|
127
|
+
const mapper = new LinearMapper(this.db);
|
|
128
|
+
const mapping = mapper.getByTicketId(ticketId);
|
|
129
|
+
if (mapping) {
|
|
130
|
+
// Archive the issue in Linear
|
|
131
|
+
const client = new LinearClient(apiKey);
|
|
132
|
+
try {
|
|
133
|
+
await client.archiveIssue(mapping.linearIssueId);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
return {
|
|
137
|
+
success: false,
|
|
138
|
+
provider: 'linear',
|
|
139
|
+
error: `Failed to archive Linear issue: ${error instanceof Error ? error.message : String(error)}`,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
// Remove the mapping
|
|
143
|
+
try {
|
|
144
|
+
mapper.deleteMapping(ticketId);
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
// Non-fatal
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Also delete the local PMO mirror
|
|
151
|
+
try {
|
|
152
|
+
await this.storage.deleteTicket(ticketId);
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
// Non-fatal if Linear archive succeeded
|
|
156
|
+
}
|
|
157
|
+
return { success: true, provider: 'linear' };
|
|
158
|
+
}
|
|
159
|
+
async listTickets(projectId, filter) {
|
|
160
|
+
let apiKey;
|
|
161
|
+
try {
|
|
162
|
+
apiKey = this.getApiKeyOrFail();
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
return { success: false, provider: 'linear', tickets: [], error: 'Linear API key not configured' };
|
|
166
|
+
}
|
|
167
|
+
const linearConfig = loadLinearConfig(this.db);
|
|
168
|
+
const team = linearConfig?.defaultTeamKey || process.env.PRLT_LINEAR_TEAM;
|
|
169
|
+
try {
|
|
170
|
+
const envelopes = await listLinearIssues({ apiKey, team }, { limit: 50 });
|
|
171
|
+
let tickets = envelopes.map(envelope => ({
|
|
172
|
+
id: envelope.source.externalKey,
|
|
173
|
+
title: envelope.title,
|
|
174
|
+
description: envelope.description || undefined,
|
|
175
|
+
priority: envelope.priority || undefined,
|
|
176
|
+
category: envelope.category || undefined,
|
|
177
|
+
projectId: envelope.projectKey,
|
|
178
|
+
projectName: envelope.projectKey,
|
|
179
|
+
statusId: envelope.status,
|
|
180
|
+
statusName: envelope.status,
|
|
181
|
+
owner: envelope.assignee || undefined,
|
|
182
|
+
assignee: envelope.assignee || undefined,
|
|
183
|
+
subtasks: [],
|
|
184
|
+
labels: envelope.labels,
|
|
185
|
+
metadata: {
|
|
186
|
+
external_source: envelope.source.name,
|
|
187
|
+
external_key: envelope.source.externalKey,
|
|
188
|
+
external_id: envelope.source.externalId,
|
|
189
|
+
external_url: envelope.source.url,
|
|
190
|
+
},
|
|
191
|
+
createdAt: new Date(),
|
|
192
|
+
updatedAt: new Date(),
|
|
193
|
+
}));
|
|
194
|
+
// Apply client-side filters
|
|
195
|
+
if (filter?.priority) {
|
|
196
|
+
tickets = tickets.filter(t => t.priority === filter.priority);
|
|
197
|
+
}
|
|
198
|
+
if (filter?.column) {
|
|
199
|
+
tickets = tickets.filter(t => t.statusName === filter.column);
|
|
200
|
+
}
|
|
201
|
+
if (filter?.category) {
|
|
202
|
+
tickets = tickets.filter(t => t.category === filter.category);
|
|
203
|
+
}
|
|
204
|
+
if (filter?.search) {
|
|
205
|
+
const term = filter.search.toLowerCase();
|
|
206
|
+
tickets = tickets.filter(t => t.title.toLowerCase().includes(term) ||
|
|
207
|
+
(t.description || '').toLowerCase().includes(term));
|
|
208
|
+
}
|
|
209
|
+
if (filter?.label) {
|
|
210
|
+
const label = filter.label.toLowerCase();
|
|
211
|
+
tickets = tickets.filter(t => t.labels.some(l => l.toLowerCase() === label));
|
|
212
|
+
}
|
|
213
|
+
return { success: true, provider: 'linear', tickets };
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
return {
|
|
217
|
+
success: false,
|
|
218
|
+
provider: 'linear',
|
|
219
|
+
tickets: [],
|
|
220
|
+
error: error instanceof Error ? error.message : String(error),
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
async createTicket(projectId, input) {
|
|
225
|
+
let apiKey;
|
|
226
|
+
try {
|
|
227
|
+
apiKey = this.getApiKeyOrFail();
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
return { success: false, provider: 'linear', error: 'Linear API key not configured' };
|
|
231
|
+
}
|
|
232
|
+
const client = new LinearClient(apiKey);
|
|
233
|
+
const linearConfig = loadLinearConfig(this.db);
|
|
234
|
+
const teamKey = linearConfig?.defaultTeamKey || process.env.PRLT_LINEAR_TEAM;
|
|
235
|
+
if (!teamKey) {
|
|
236
|
+
return { success: false, provider: 'linear', error: 'Linear team key is required. Set PRLT_LINEAR_TEAM.' };
|
|
237
|
+
}
|
|
238
|
+
const team = await client.getTeamByKey(teamKey);
|
|
239
|
+
if (!team) {
|
|
240
|
+
return { success: false, provider: 'linear', error: `Linear team "${teamKey}" not found.` };
|
|
241
|
+
}
|
|
242
|
+
try {
|
|
243
|
+
// Map PMO priority to Linear priority number
|
|
244
|
+
const linearPriority = input.priority ? PMO_PRIORITY_TO_LINEAR[input.priority] : undefined;
|
|
245
|
+
// Create the issue in Linear
|
|
246
|
+
const issue = await client.createIssue({
|
|
247
|
+
teamId: team.id,
|
|
248
|
+
title: input.title,
|
|
249
|
+
description: input.description,
|
|
250
|
+
priority: linearPriority,
|
|
251
|
+
});
|
|
252
|
+
// Create local PMO mirror ticket
|
|
253
|
+
const mirrorDescription = [
|
|
254
|
+
input.description || '',
|
|
255
|
+
'',
|
|
256
|
+
'---',
|
|
257
|
+
`_Created in Linear: [${issue.identifier}](${issue.url})_`,
|
|
258
|
+
].join('\n').trim();
|
|
259
|
+
const mirrorPriority = input.priority || LINEAR_PRIORITY_TO_PMO[issue.priority] || undefined;
|
|
260
|
+
const pmoTicket = await this.storage.createTicket(projectId, {
|
|
261
|
+
...input,
|
|
262
|
+
title: issue.title,
|
|
263
|
+
description: mirrorDescription,
|
|
264
|
+
priority: mirrorPriority,
|
|
265
|
+
metadata: {
|
|
266
|
+
...input.metadata,
|
|
267
|
+
'external_source': 'linear',
|
|
268
|
+
'external_id': issue.id,
|
|
269
|
+
'external_key': issue.identifier,
|
|
270
|
+
'external_url': issue.url,
|
|
271
|
+
'linear.issue_id': issue.id,
|
|
272
|
+
'linear.identifier': issue.identifier,
|
|
273
|
+
'linear.url': issue.url,
|
|
274
|
+
'linear.team': issue.team.key,
|
|
275
|
+
'linear.state': issue.state.name,
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
// Create mapping record for sync operations
|
|
279
|
+
const mapper = new LinearMapper(this.db);
|
|
280
|
+
mapper.createMapping({
|
|
281
|
+
pmoTicketId: pmoTicket.id,
|
|
282
|
+
linearIssueId: issue.id,
|
|
283
|
+
linearIdentifier: issue.identifier,
|
|
284
|
+
linearTeamKey: issue.team.key,
|
|
285
|
+
linearUrl: issue.url,
|
|
286
|
+
syncDirection: 'outbound',
|
|
287
|
+
createdAt: new Date(),
|
|
288
|
+
});
|
|
289
|
+
return { success: true, provider: 'linear', ticket: pmoTicket };
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
return {
|
|
293
|
+
success: false,
|
|
294
|
+
provider: 'linear',
|
|
295
|
+
error: error instanceof Error ? error.message : String(error),
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
async getTicket(ticketId) {
|
|
300
|
+
// For getTicket, use local PMO since we maintain mirrors
|
|
301
|
+
// This avoids unnecessary API calls for reads
|
|
302
|
+
try {
|
|
303
|
+
const ticket = await this.storage.getTicket(ticketId);
|
|
304
|
+
return { success: true, provider: 'linear', ticket };
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
return {
|
|
308
|
+
success: false,
|
|
309
|
+
provider: 'linear',
|
|
310
|
+
error: error instanceof Error ? error.message : String(error),
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Map a PMO status name to the most likely Linear state type.
|
|
317
|
+
* Used as a fallback when exact name matching fails.
|
|
318
|
+
*/
|
|
319
|
+
function mapPMOStateToLinearType(stateName) {
|
|
320
|
+
const lower = stateName.toLowerCase();
|
|
321
|
+
if (lower.includes('review') || lower.includes('in progress') || lower.includes('started')) {
|
|
322
|
+
return 'started';
|
|
323
|
+
}
|
|
324
|
+
if (lower.includes('done') || lower.includes('complete') || lower.includes('merged')) {
|
|
325
|
+
return 'completed';
|
|
326
|
+
}
|
|
327
|
+
if (lower.includes('backlog')) {
|
|
328
|
+
return 'backlog';
|
|
329
|
+
}
|
|
330
|
+
if (lower.includes('cancel')) {
|
|
331
|
+
return 'canceled';
|
|
332
|
+
}
|
|
333
|
+
if (lower.includes('triage')) {
|
|
334
|
+
return 'triage';
|
|
335
|
+
}
|
|
336
|
+
// Default to started for unknown states (most post-execution transitions go forward)
|
|
337
|
+
return 'started';
|
|
338
|
+
}
|
|
339
|
+
//# sourceMappingURL=linear-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-provider.js","sourceRoot":"","sources":["../../../src/lib/providers/linear-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PMO Ticket Provider
|
|
3
|
+
*
|
|
4
|
+
* Default provider for users without external integrations.
|
|
5
|
+
* Wraps the existing PMO storage calls.
|
|
6
|
+
* Emits ticket:status_changed events via the storage layer.
|
|
7
|
+
*/
|
|
8
|
+
import type { TicketFilter, CreateTicketInput } from '../pmo/types.js';
|
|
9
|
+
import type { TicketProvider, ProviderMoveResult, ProviderDeleteResult, ProviderListResult, ProviderCreateResult, ProviderGetResult, ProviderStorage } from './types.js';
|
|
10
|
+
export declare class PMOTicketProvider implements TicketProvider {
|
|
11
|
+
private storage;
|
|
12
|
+
private projectId;
|
|
13
|
+
readonly name: "pmo";
|
|
14
|
+
constructor(storage: ProviderStorage, projectId: string);
|
|
15
|
+
moveTicket(ticketId: string, newState: string): Promise<ProviderMoveResult>;
|
|
16
|
+
deleteTicket(ticketId: string): Promise<ProviderDeleteResult>;
|
|
17
|
+
listTickets(projectId?: string, filter?: TicketFilter): Promise<ProviderListResult>;
|
|
18
|
+
createTicket(projectId: string, input: CreateTicketInput): Promise<ProviderCreateResult>;
|
|
19
|
+
getTicket(ticketId: string): Promise<ProviderGetResult>;
|
|
20
|
+
}
|