@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
|
@@ -0,0 +1,83 @@
|
|
|
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
|
+
export class PMOTicketProvider {
|
|
9
|
+
storage;
|
|
10
|
+
projectId;
|
|
11
|
+
name = 'pmo';
|
|
12
|
+
constructor(storage, projectId) {
|
|
13
|
+
this.storage = storage;
|
|
14
|
+
this.projectId = projectId;
|
|
15
|
+
}
|
|
16
|
+
async moveTicket(ticketId, newState) {
|
|
17
|
+
try {
|
|
18
|
+
await this.storage.moveTicket(this.projectId, ticketId, newState);
|
|
19
|
+
return { success: true, provider: 'pmo' };
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
return {
|
|
23
|
+
success: false,
|
|
24
|
+
provider: 'pmo',
|
|
25
|
+
error: error instanceof Error ? error.message : String(error),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async deleteTicket(ticketId) {
|
|
30
|
+
try {
|
|
31
|
+
await this.storage.deleteTicket(ticketId);
|
|
32
|
+
return { success: true, provider: 'pmo' };
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
return {
|
|
36
|
+
success: false,
|
|
37
|
+
provider: 'pmo',
|
|
38
|
+
error: error instanceof Error ? error.message : String(error),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async listTickets(projectId, filter) {
|
|
43
|
+
try {
|
|
44
|
+
const tickets = await this.storage.listTickets(projectId, filter);
|
|
45
|
+
return { success: true, provider: 'pmo', tickets };
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return {
|
|
49
|
+
success: false,
|
|
50
|
+
provider: 'pmo',
|
|
51
|
+
tickets: [],
|
|
52
|
+
error: error instanceof Error ? error.message : String(error),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async createTicket(projectId, input) {
|
|
57
|
+
try {
|
|
58
|
+
const ticket = await this.storage.createTicket(projectId, input);
|
|
59
|
+
return { success: true, provider: 'pmo', ticket };
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
return {
|
|
63
|
+
success: false,
|
|
64
|
+
provider: 'pmo',
|
|
65
|
+
error: error instanceof Error ? error.message : String(error),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async getTicket(ticketId) {
|
|
70
|
+
try {
|
|
71
|
+
const ticket = await this.storage.getTicket(ticketId);
|
|
72
|
+
return { success: true, provider: 'pmo', ticket };
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
return {
|
|
76
|
+
success: false,
|
|
77
|
+
provider: 'pmo',
|
|
78
|
+
error: error instanceof Error ? error.message : String(error),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=pmo-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pmo-provider.js","sourceRoot":"","sources":["../../../src/lib/providers/pmo-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ticket Provider Resolver
|
|
3
|
+
*
|
|
4
|
+
* Determines which provider should handle ticket operations based on the
|
|
5
|
+
* ticket's external source metadata or workspace configuration.
|
|
6
|
+
*
|
|
7
|
+
* Two resolution modes:
|
|
8
|
+
* 1. Ticket-level: resolveTicketProvider() — for operations on a specific ticket
|
|
9
|
+
* (move, delete). Uses the ticket's metadata to find the source of truth.
|
|
10
|
+
*
|
|
11
|
+
* 2. Project-level: resolveProjectProvider() — for operations that aren't
|
|
12
|
+
* ticket-specific (list, create). Uses workspace config to determine
|
|
13
|
+
* the active provider.
|
|
14
|
+
*/
|
|
15
|
+
import type Database from 'better-sqlite3';
|
|
16
|
+
import type { TicketProvider, ProviderStorage } from './types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Resolve the correct provider for a given ticket.
|
|
19
|
+
*
|
|
20
|
+
* Uses the ticket's metadata to determine the source of truth:
|
|
21
|
+
* - external_source = 'linear' + configured + inbound/bidirectional → Linear
|
|
22
|
+
* - Otherwise → PMO
|
|
23
|
+
*
|
|
24
|
+
* @param ticketId - The PMO ticket ID
|
|
25
|
+
* @param projectId - The PMO project ID
|
|
26
|
+
* @param db - Database handle for config/mapping lookups
|
|
27
|
+
* @param storage - Storage for fallback and local sync
|
|
28
|
+
* @param metadata - Ticket metadata (contains external_source, etc.)
|
|
29
|
+
* @returns The appropriate TicketProvider for this ticket
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveTicketProvider(ticketId: string, projectId: string, db: Database.Database, storage: ProviderStorage, metadata?: Record<string, string> | null): TicketProvider;
|
|
32
|
+
/**
|
|
33
|
+
* Resolve the correct provider for project-level operations (list, create).
|
|
34
|
+
*
|
|
35
|
+
* Unlike resolveTicketProvider, this doesn't require a specific ticket.
|
|
36
|
+
* It checks workspace configuration to determine the active provider.
|
|
37
|
+
*
|
|
38
|
+
* @param db - Database handle for config lookups
|
|
39
|
+
* @param storage - Storage instance
|
|
40
|
+
* @param projectId - The PMO project ID
|
|
41
|
+
* @param source - Optional source hint ('pmo', 'linear', or 'auto')
|
|
42
|
+
* @returns The appropriate TicketProvider
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolveProjectProvider(db: Database.Database, storage: ProviderStorage, projectId: string, source?: string): TicketProvider;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ticket Provider Resolver
|
|
3
|
+
*
|
|
4
|
+
* Determines which provider should handle ticket operations based on the
|
|
5
|
+
* ticket's external source metadata or workspace configuration.
|
|
6
|
+
*
|
|
7
|
+
* Two resolution modes:
|
|
8
|
+
* 1. Ticket-level: resolveTicketProvider() — for operations on a specific ticket
|
|
9
|
+
* (move, delete). Uses the ticket's metadata to find the source of truth.
|
|
10
|
+
*
|
|
11
|
+
* 2. Project-level: resolveProjectProvider() — for operations that aren't
|
|
12
|
+
* ticket-specific (list, create). Uses workspace config to determine
|
|
13
|
+
* the active provider.
|
|
14
|
+
*/
|
|
15
|
+
import { isLinearConfigured } from '../linear/config.js';
|
|
16
|
+
import { LinearMapper } from '../linear/mapper.js';
|
|
17
|
+
import { PMOTicketProvider } from './pmo-provider.js';
|
|
18
|
+
import { LinearTicketProvider } from './linear-provider.js';
|
|
19
|
+
/**
|
|
20
|
+
* Resolve the correct provider for a given ticket.
|
|
21
|
+
*
|
|
22
|
+
* Uses the ticket's metadata to determine the source of truth:
|
|
23
|
+
* - external_source = 'linear' + configured + inbound/bidirectional → Linear
|
|
24
|
+
* - Otherwise → PMO
|
|
25
|
+
*
|
|
26
|
+
* @param ticketId - The PMO ticket ID
|
|
27
|
+
* @param projectId - The PMO project ID
|
|
28
|
+
* @param db - Database handle for config/mapping lookups
|
|
29
|
+
* @param storage - Storage for fallback and local sync
|
|
30
|
+
* @param metadata - Ticket metadata (contains external_source, etc.)
|
|
31
|
+
* @returns The appropriate TicketProvider for this ticket
|
|
32
|
+
*/
|
|
33
|
+
export function resolveTicketProvider(ticketId, projectId, db, storage, metadata) {
|
|
34
|
+
const externalSource = metadata?.external_source;
|
|
35
|
+
// Check Linear
|
|
36
|
+
if (externalSource === 'linear' && isLinearConfigured(db)) {
|
|
37
|
+
const mapper = new LinearMapper(db);
|
|
38
|
+
const mapping = mapper.getByTicketId(ticketId);
|
|
39
|
+
if (mapping) {
|
|
40
|
+
// Only use Linear provider when Linear is the source of truth:
|
|
41
|
+
// - 'inbound' = ticket was imported from Linear → Linear is source of truth
|
|
42
|
+
// - 'bidirectional' = both directions synced → write to Linear directly
|
|
43
|
+
// - 'outbound' = ticket was created in PMO and pushed to Linear → PMO is source of truth
|
|
44
|
+
if (mapping.syncDirection !== 'outbound') {
|
|
45
|
+
return new LinearTicketProvider(db, storage, projectId, null);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Default: local PMO
|
|
50
|
+
return new PMOTicketProvider(storage, projectId);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolve the correct provider for project-level operations (list, create).
|
|
54
|
+
*
|
|
55
|
+
* Unlike resolveTicketProvider, this doesn't require a specific ticket.
|
|
56
|
+
* It checks workspace configuration to determine the active provider.
|
|
57
|
+
*
|
|
58
|
+
* @param db - Database handle for config lookups
|
|
59
|
+
* @param storage - Storage instance
|
|
60
|
+
* @param projectId - The PMO project ID
|
|
61
|
+
* @param source - Optional source hint ('pmo', 'linear', or 'auto')
|
|
62
|
+
* @returns The appropriate TicketProvider
|
|
63
|
+
*/
|
|
64
|
+
export function resolveProjectProvider(db, storage, projectId, source) {
|
|
65
|
+
if (source === 'pmo') {
|
|
66
|
+
return new PMOTicketProvider(storage, projectId);
|
|
67
|
+
}
|
|
68
|
+
if (source === 'linear') {
|
|
69
|
+
return new LinearTicketProvider(db, storage, projectId, null);
|
|
70
|
+
}
|
|
71
|
+
// auto: use Linear when it's configured in the workspace
|
|
72
|
+
try {
|
|
73
|
+
if (isLinearConfigured(db)) {
|
|
74
|
+
return new LinearTicketProvider(db, storage, projectId, null);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// workspace_settings table may not exist in older/test databases
|
|
79
|
+
}
|
|
80
|
+
return new PMOTicketProvider(storage, projectId);
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/lib/providers/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE3D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,SAAiB,EACjB,EAAqB,EACrB,OAAwB,EACxB,QAAwC;IAExC,MAAM,cAAc,GAAG,QAAQ,EAAE,eAAe,CAAA;IAEhD,eAAe;IACf,IAAI,cAAc,KAAK,QAAQ,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAA;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAE9C,IAAI,OAAO,EAAE,CAAC;YACZ,+DAA+D;YAC/D,4EAA4E;YAC5E,wEAAwE;YACxE,yFAAyF;YACzF,IAAI,OAAO,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;gBACzC,OAAO,IAAI,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AAClD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CACpC,EAAqB,EACrB,OAAwB,EACxB,SAAiB,EACjB,MAAe;IAEf,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;IAC/D,CAAC;IAED,yDAAyD;IACzD,IAAI,CAAC;QACH,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;IAED,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AAClD,CAAC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ticket Provider Interface
|
|
3
|
+
*
|
|
4
|
+
* Unified interface for all ticket operations across providers.
|
|
5
|
+
* Whether the ticket lives in local PMO, Linear, Jira, or another system,
|
|
6
|
+
* the same provider interface routes to the right backend.
|
|
7
|
+
*
|
|
8
|
+
* The local PMO is just the default provider for users without integrations,
|
|
9
|
+
* not a cache layer.
|
|
10
|
+
*/
|
|
11
|
+
import type { StateCategory, Ticket, TicketFilter, CreateTicketInput } from '../pmo/types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Supported provider names for ticket operations.
|
|
14
|
+
*/
|
|
15
|
+
export type TicketProviderName = 'pmo' | 'linear' | 'jira' | 'asana' | 'shortcut' | 'trello';
|
|
16
|
+
/**
|
|
17
|
+
* Generic result of a provider operation.
|
|
18
|
+
*/
|
|
19
|
+
export interface ProviderResult {
|
|
20
|
+
/** Whether the operation succeeded */
|
|
21
|
+
success: boolean;
|
|
22
|
+
/** The provider that handled the operation */
|
|
23
|
+
provider: TicketProviderName;
|
|
24
|
+
/** Error message if the operation failed */
|
|
25
|
+
error?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Result of a provider moveTicket operation.
|
|
29
|
+
*/
|
|
30
|
+
export interface ProviderMoveResult extends ProviderResult {
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Result of a provider deleteTicket operation.
|
|
34
|
+
*/
|
|
35
|
+
export interface ProviderDeleteResult extends ProviderResult {
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Result of a provider listTickets operation.
|
|
39
|
+
*/
|
|
40
|
+
export interface ProviderListResult extends ProviderResult {
|
|
41
|
+
/** Tickets returned by the provider */
|
|
42
|
+
tickets: Ticket[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Result of a provider createTicket operation.
|
|
46
|
+
*/
|
|
47
|
+
export interface ProviderCreateResult extends ProviderResult {
|
|
48
|
+
/** The created ticket */
|
|
49
|
+
ticket?: Ticket;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Result of a provider getTicket operation.
|
|
53
|
+
*/
|
|
54
|
+
export interface ProviderGetResult extends ProviderResult {
|
|
55
|
+
/** The retrieved ticket */
|
|
56
|
+
ticket?: Ticket | null;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Ticket provider interface — same contract for all backends.
|
|
60
|
+
*
|
|
61
|
+
* Implementations:
|
|
62
|
+
* - PMOTicketProvider: writes to local SQLite (emits ticket:status_changed)
|
|
63
|
+
* - LinearTicketProvider: calls Linear API, then updates local PMO
|
|
64
|
+
*/
|
|
65
|
+
export interface TicketProvider {
|
|
66
|
+
/** Which provider this is */
|
|
67
|
+
readonly name: TicketProviderName;
|
|
68
|
+
/**
|
|
69
|
+
* Move a ticket to a new state.
|
|
70
|
+
*
|
|
71
|
+
* @param ticketId - The PMO ticket ID (e.g., "TKT-142")
|
|
72
|
+
* @param newState - The target state name (e.g., "Review")
|
|
73
|
+
* @returns Result of the move operation
|
|
74
|
+
*/
|
|
75
|
+
moveTicket(ticketId: string, newState: string): Promise<ProviderMoveResult>;
|
|
76
|
+
/**
|
|
77
|
+
* Delete a ticket.
|
|
78
|
+
*
|
|
79
|
+
* @param ticketId - The PMO ticket ID (e.g., "TKT-142")
|
|
80
|
+
* @returns Result of the delete operation
|
|
81
|
+
*/
|
|
82
|
+
deleteTicket(ticketId: string): Promise<ProviderDeleteResult>;
|
|
83
|
+
/**
|
|
84
|
+
* List tickets, optionally filtered.
|
|
85
|
+
*
|
|
86
|
+
* @param projectId - Optional project scope
|
|
87
|
+
* @param filter - Optional filters (column, priority, search, etc.)
|
|
88
|
+
* @returns Result with tickets array
|
|
89
|
+
*/
|
|
90
|
+
listTickets(projectId?: string, filter?: TicketFilter): Promise<ProviderListResult>;
|
|
91
|
+
/**
|
|
92
|
+
* Create a ticket.
|
|
93
|
+
*
|
|
94
|
+
* @param projectId - The project to create the ticket in
|
|
95
|
+
* @param input - Ticket creation input
|
|
96
|
+
* @returns Result with the created ticket
|
|
97
|
+
*/
|
|
98
|
+
createTicket(projectId: string, input: CreateTicketInput): Promise<ProviderCreateResult>;
|
|
99
|
+
/**
|
|
100
|
+
* Get a single ticket by ID.
|
|
101
|
+
*
|
|
102
|
+
* @param ticketId - The ticket ID
|
|
103
|
+
* @returns Result with the ticket (or null if not found)
|
|
104
|
+
*/
|
|
105
|
+
getTicket(ticketId: string): Promise<ProviderGetResult>;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Context needed to resolve and create a ticket provider.
|
|
109
|
+
*/
|
|
110
|
+
export interface ProviderContext {
|
|
111
|
+
/** Ticket's external source (from metadata), e.g., 'linear' */
|
|
112
|
+
externalSource?: string | null;
|
|
113
|
+
/** Ticket's external ID in the source system */
|
|
114
|
+
externalId?: string | null;
|
|
115
|
+
/** Ticket's project ID in the PMO */
|
|
116
|
+
projectId?: string | null;
|
|
117
|
+
/** Ticket's current status category */
|
|
118
|
+
statusCategory?: StateCategory | null;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Storage interface required by providers.
|
|
122
|
+
* SQLiteStorage satisfies this interface.
|
|
123
|
+
*/
|
|
124
|
+
export interface ProviderStorage {
|
|
125
|
+
getTicket: (id: string) => Promise<Ticket | null>;
|
|
126
|
+
getProjectBoard: (projectId: string) => Promise<{
|
|
127
|
+
columns: Array<{
|
|
128
|
+
name: string;
|
|
129
|
+
}>;
|
|
130
|
+
} | null>;
|
|
131
|
+
moveTicket: (projectId: string, ticketId: string, columnName: string, position?: number) => Promise<Ticket>;
|
|
132
|
+
deleteTicket: (id: string) => Promise<void>;
|
|
133
|
+
listTickets: (projectId: string | undefined, filter?: TicketFilter) => Promise<Ticket[]>;
|
|
134
|
+
createTicket: (projectId: string, input: CreateTicketInput) => Promise<Ticket>;
|
|
135
|
+
getDatabase: () => import('better-sqlite3').Database;
|
|
136
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ticket Provider Interface
|
|
3
|
+
*
|
|
4
|
+
* Unified interface for all ticket operations across providers.
|
|
5
|
+
* Whether the ticket lives in local PMO, Linear, Jira, or another system,
|
|
6
|
+
* the same provider interface routes to the right backend.
|
|
7
|
+
*
|
|
8
|
+
* The local PMO is just the default provider for users without integrations,
|
|
9
|
+
* not a cache layer.
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -18,7 +18,7 @@ export interface VersionCheckCache {
|
|
|
18
18
|
last_checked_at: string | null;
|
|
19
19
|
dismissed_version: string | null;
|
|
20
20
|
}
|
|
21
|
-
export type PackageManager = 'brew' | 'npm';
|
|
21
|
+
export type PackageManager = 'brew' | 'npm' | 'standalone';
|
|
22
22
|
export declare function readCache(): VersionCheckCache;
|
|
23
23
|
export declare function writeCache(cache: VersionCheckCache): void;
|
|
24
24
|
/**
|
|
@@ -30,13 +30,19 @@ export declare function shouldCheck(cache: VersionCheckCache): boolean;
|
|
|
30
30
|
*
|
|
31
31
|
* Priority:
|
|
32
32
|
* 1. PRLT_MANAGED_BY env var (explicit override)
|
|
33
|
-
* 2.
|
|
33
|
+
* 2. Standalone install metadata file (~/.local/lib/proletariat/.install-metadata.json)
|
|
34
|
+
* 3. Binary path heuristic (Homebrew prefixes → brew, ~/.local/bin → standalone, otherwise npm)
|
|
34
35
|
*/
|
|
35
36
|
export declare function detectPackageManager(): PackageManager;
|
|
36
37
|
/**
|
|
37
38
|
* Get the update command string for the detected package manager.
|
|
38
39
|
*/
|
|
39
40
|
export declare function getUpdateCommand(pm: PackageManager): string;
|
|
41
|
+
/**
|
|
42
|
+
* Get the standalone install directory from metadata or default.
|
|
43
|
+
* Returns null if not a standalone install.
|
|
44
|
+
*/
|
|
45
|
+
export declare function getStandaloneInstallDir(): string | null;
|
|
40
46
|
/**
|
|
41
47
|
* Resolve the local filesystem path for the Homebrew tap.
|
|
42
48
|
* Returns null if the tap directory doesn't exist.
|
package/dist/lib/update-check.js
CHANGED
|
@@ -103,7 +103,8 @@ export function shouldCheck(cache) {
|
|
|
103
103
|
*
|
|
104
104
|
* Priority:
|
|
105
105
|
* 1. PRLT_MANAGED_BY env var (explicit override)
|
|
106
|
-
* 2.
|
|
106
|
+
* 2. Standalone install metadata file (~/.local/lib/proletariat/.install-metadata.json)
|
|
107
|
+
* 3. Binary path heuristic (Homebrew prefixes → brew, ~/.local/bin → standalone, otherwise npm)
|
|
107
108
|
*/
|
|
108
109
|
export function detectPackageManager() {
|
|
109
110
|
// 1. Env var override
|
|
@@ -112,6 +113,8 @@ export function detectPackageManager() {
|
|
|
112
113
|
return 'brew';
|
|
113
114
|
if (envOverride === 'npm')
|
|
114
115
|
return 'npm';
|
|
116
|
+
if (envOverride === 'standalone')
|
|
117
|
+
return 'standalone';
|
|
115
118
|
// 2. Binary path heuristic
|
|
116
119
|
try {
|
|
117
120
|
const binPath = execSync('which prlt', {
|
|
@@ -122,9 +125,22 @@ export function detectPackageManager() {
|
|
|
122
125
|
if (binPath.startsWith('/opt/homebrew/') || binPath.startsWith('/usr/local/')) {
|
|
123
126
|
return 'brew';
|
|
124
127
|
}
|
|
128
|
+
// Standalone installer uses ~/.local/bin or custom PRLT_INSTALL_DIR
|
|
129
|
+
const homeDir = process.env.HOME || '';
|
|
130
|
+
if (homeDir && binPath.startsWith(path.join(homeDir, '.local'))) {
|
|
131
|
+
return 'standalone';
|
|
132
|
+
}
|
|
125
133
|
}
|
|
126
134
|
catch {
|
|
127
|
-
// which failed — fall through
|
|
135
|
+
// which failed — fall through
|
|
136
|
+
}
|
|
137
|
+
// 3. Check for standalone install metadata file
|
|
138
|
+
const homeDir = process.env.HOME || '';
|
|
139
|
+
if (homeDir) {
|
|
140
|
+
const metadataPath = path.join(homeDir, '.local', 'lib', 'proletariat', '.install-metadata.json');
|
|
141
|
+
if (fs.existsSync(metadataPath)) {
|
|
142
|
+
return 'standalone';
|
|
143
|
+
}
|
|
128
144
|
}
|
|
129
145
|
return 'npm';
|
|
130
146
|
}
|
|
@@ -135,8 +151,32 @@ export function getUpdateCommand(pm) {
|
|
|
135
151
|
if (pm === 'brew') {
|
|
136
152
|
return 'brew upgrade chrismcdermut/proletariat/prlt';
|
|
137
153
|
}
|
|
154
|
+
if (pm === 'standalone') {
|
|
155
|
+
return 'prlt self-update';
|
|
156
|
+
}
|
|
138
157
|
return 'npm install -g @proletariat/cli';
|
|
139
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Get the standalone install directory from metadata or default.
|
|
161
|
+
* Returns null if not a standalone install.
|
|
162
|
+
*/
|
|
163
|
+
export function getStandaloneInstallDir() {
|
|
164
|
+
const homeDir = process.env.HOME || '';
|
|
165
|
+
if (!homeDir)
|
|
166
|
+
return null;
|
|
167
|
+
const metadataPath = path.join(homeDir, '.local', 'lib', 'proletariat', '.install-metadata.json');
|
|
168
|
+
try {
|
|
169
|
+
if (fs.existsSync(metadataPath)) {
|
|
170
|
+
const content = fs.readFileSync(metadataPath, 'utf-8');
|
|
171
|
+
const metadata = JSON.parse(content);
|
|
172
|
+
return metadata.install_dir ?? path.join(homeDir, '.local');
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// ignore
|
|
177
|
+
}
|
|
178
|
+
return path.join(homeDir, '.local');
|
|
179
|
+
}
|
|
140
180
|
// ---------------------------------------------------------------------------
|
|
141
181
|
// Stale Homebrew tap detection
|
|
142
182
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,8 +48,8 @@ export declare function showUpdatePrompt(info: UpdateInfo): Promise<UpdateAction
|
|
|
48
48
|
* 3. If an update is available, show interactive prompt
|
|
49
49
|
* 4. Handle the user's choice
|
|
50
50
|
*
|
|
51
|
-
* Returns
|
|
52
|
-
*
|
|
51
|
+
* Returns 'continue' if the command should proceed, or 'stop' if the
|
|
52
|
+
* init hook should halt (e.g., after an update attempt).
|
|
53
53
|
*/
|
|
54
|
-
export declare function handleUpdatePrompt(info: UpdateInfo): Promise<
|
|
54
|
+
export declare function handleUpdatePrompt(info: UpdateInfo): Promise<'continue' | 'stop'>;
|
|
55
55
|
export {};
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* `check_for_update_on_startup` machine-level setting is disabled.
|
|
12
12
|
*/
|
|
13
13
|
import { execSync } from 'node:child_process';
|
|
14
|
-
import { dismissVersion, getStaleTapCommands } from './update-check.js';
|
|
14
|
+
import { dismissVersion, getStaleTapCommands, getStandaloneInstallDir } from './update-check.js';
|
|
15
15
|
// ---------------------------------------------------------------------------
|
|
16
16
|
// Environment guards
|
|
17
17
|
// ---------------------------------------------------------------------------
|
|
@@ -129,31 +129,53 @@ export async function showUpdatePrompt(info) {
|
|
|
129
129
|
// Action handlers
|
|
130
130
|
// ---------------------------------------------------------------------------
|
|
131
131
|
/**
|
|
132
|
-
*
|
|
132
|
+
* Get the shell command to run for a standalone self-update.
|
|
133
|
+
* Downloads and pipes the installer script, passing the target version.
|
|
134
|
+
*/
|
|
135
|
+
function getStandaloneUpdateCommand(version) {
|
|
136
|
+
const installDir = getStandaloneInstallDir();
|
|
137
|
+
const parts = ['curl -fsSL https://raw.githubusercontent.com/chrismcdermut/proletariat/main/scripts/install.sh | bash'];
|
|
138
|
+
const args = [];
|
|
139
|
+
if (version)
|
|
140
|
+
args.push(`--version ${version}`);
|
|
141
|
+
if (installDir)
|
|
142
|
+
args.push(`--prefix ${installDir}`);
|
|
143
|
+
if (args.length > 0) {
|
|
144
|
+
parts[0] += ` -s -- ${args.join(' ')}`;
|
|
145
|
+
}
|
|
146
|
+
return parts[0];
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Execute the update command, then signal the caller to stop.
|
|
133
150
|
* Runs synchronously so the user sees output in real time.
|
|
151
|
+
* Returns 'updated' on success or 'failed' on failure, so the
|
|
152
|
+
* init hook can exit cleanly through oclif lifecycle.
|
|
134
153
|
*/
|
|
135
154
|
async function executeUpdate(info) {
|
|
155
|
+
const command = info.packageManager === 'standalone'
|
|
156
|
+
? getStandaloneUpdateCommand(info.latestVersion)
|
|
157
|
+
: info.updateCommand;
|
|
136
158
|
console.log('');
|
|
137
|
-
console.log(`Running: ${
|
|
159
|
+
console.log(`Running: ${command}`);
|
|
138
160
|
console.log('');
|
|
139
161
|
try {
|
|
140
|
-
execSync(
|
|
162
|
+
execSync(command, {
|
|
141
163
|
stdio: 'inherit',
|
|
142
164
|
timeout: 120_000, // 2 minute timeout
|
|
143
165
|
});
|
|
144
166
|
console.log('');
|
|
145
167
|
console.log('Update complete! Run your command again to use the new version.');
|
|
146
|
-
|
|
168
|
+
return 'updated';
|
|
147
169
|
}
|
|
148
170
|
catch {
|
|
149
171
|
console.error('');
|
|
150
172
|
console.error('Update failed. You can try running the command manually:');
|
|
151
|
-
console.error(` ${
|
|
173
|
+
console.error(` ${command}`);
|
|
152
174
|
// If brew upgrade failed and the tap is stale, show remediation
|
|
153
175
|
if (info.packageManager === 'brew' && info.staleTap?.isStale) {
|
|
154
176
|
await printStaleTapGuidance();
|
|
155
177
|
}
|
|
156
|
-
|
|
178
|
+
return 'failed';
|
|
157
179
|
}
|
|
158
180
|
}
|
|
159
181
|
// ---------------------------------------------------------------------------
|
|
@@ -166,23 +188,25 @@ async function executeUpdate(info) {
|
|
|
166
188
|
* 3. If an update is available, show interactive prompt
|
|
167
189
|
* 4. Handle the user's choice
|
|
168
190
|
*
|
|
169
|
-
* Returns
|
|
170
|
-
*
|
|
191
|
+
* Returns 'continue' if the command should proceed, or 'stop' if the
|
|
192
|
+
* init hook should halt (e.g., after an update attempt).
|
|
171
193
|
*/
|
|
172
194
|
export async function handleUpdatePrompt(info) {
|
|
173
195
|
if (shouldSuppressPrompt())
|
|
174
|
-
return;
|
|
196
|
+
return 'continue';
|
|
175
197
|
// Show stale tap guidance when detected (even if no version update is cached)
|
|
176
198
|
if (info.staleTap?.isStale) {
|
|
177
199
|
await printStaleTapGuidance();
|
|
178
200
|
}
|
|
179
201
|
if (!info.updateAvailable)
|
|
180
|
-
return;
|
|
202
|
+
return 'continue';
|
|
181
203
|
const action = await showUpdatePrompt(info);
|
|
182
204
|
switch (action) {
|
|
183
|
-
case 'update':
|
|
184
|
-
await executeUpdate(info);
|
|
185
|
-
|
|
205
|
+
case 'update': {
|
|
206
|
+
const result = await executeUpdate(info);
|
|
207
|
+
process.exitCode = result === 'updated' ? 0 : 1;
|
|
208
|
+
return 'stop';
|
|
209
|
+
}
|
|
186
210
|
case 'skip':
|
|
187
211
|
// Session-only dismiss — do nothing, just continue
|
|
188
212
|
break;
|
|
@@ -192,5 +216,6 @@ export async function handleUpdatePrompt(info) {
|
|
|
192
216
|
}
|
|
193
217
|
break;
|
|
194
218
|
}
|
|
219
|
+
return 'continue';
|
|
195
220
|
}
|
|
196
221
|
//# sourceMappingURL=update-prompt.js.map
|