@proletariat/cli 0.3.93 → 0.3.94
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.d.ts +1 -1
- package/dist/commands/action/delete.d.ts +1 -1
- package/dist/commands/action/index.d.ts +1 -1
- package/dist/commands/action/list.d.ts +1 -1
- package/dist/commands/action/run.d.ts +1 -1
- package/dist/commands/action/show.d.ts +1 -1
- package/dist/commands/action/update.d.ts +1 -1
- package/dist/commands/agent/cleanup.d.ts +1 -1
- package/dist/commands/agent/gc.d.ts +1 -1
- package/dist/commands/agent/index.d.ts +1 -1
- package/dist/commands/agent/list.d.ts +1 -1
- package/dist/commands/agent/login.d.ts +1 -1
- package/dist/commands/agent/rebuild.d.ts +1 -1
- package/dist/commands/agent/remove.d.ts +1 -1
- package/dist/commands/agent/restart.d.ts +1 -1
- package/dist/commands/agent/shell.d.ts +1 -1
- package/dist/commands/agent/staff/index.d.ts +1 -1
- package/dist/commands/agent/staff/remove.d.ts +1 -1
- package/dist/commands/agent/status.d.ts +1 -1
- package/dist/commands/agent/visit.d.ts +1 -1
- package/dist/commands/asana/import.d.ts +1 -1
- package/dist/commands/branch/create.d.ts +1 -1
- package/dist/commands/branch/index.d.ts +1 -1
- package/dist/commands/branch/list.d.ts +1 -1
- package/dist/commands/branch/validate.d.ts +1 -1
- package/dist/commands/branch/where.d.ts +1 -1
- package/dist/commands/config/index.js +2 -2
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/diet.d.ts +1 -1
- package/dist/commands/docker/index.js +2 -0
- package/dist/commands/docker/index.js.map +1 -1
- package/dist/commands/docker/rebuild-cache.d.ts +12 -0
- package/dist/commands/docker/rebuild-cache.js +144 -0
- package/dist/commands/docker/rebuild-cache.js.map +1 -0
- package/dist/commands/execution/config.d.ts +1 -1
- package/dist/commands/execution/index.d.ts +1 -1
- package/dist/commands/execution/list.d.ts +1 -1
- package/dist/commands/execution/logs.d.ts +1 -1
- package/dist/commands/execution/stop.d.ts +1 -1
- package/dist/commands/execution/view.d.ts +1 -1
- package/dist/commands/hook/export.d.ts +1 -1
- package/dist/commands/hook/fire.d.ts +1 -1
- package/dist/commands/hook/index.d.ts +1 -1
- package/dist/commands/hook/list.d.ts +1 -1
- package/dist/commands/hook/preset.d.ts +1 -1
- package/dist/commands/linear/auth.d.ts +1 -1
- package/dist/commands/linear/connect.d.ts +1 -1
- package/dist/commands/linear/import.d.ts +1 -1
- package/dist/commands/linear/status.d.ts +1 -1
- package/dist/commands/linear/sync.d.ts +1 -1
- package/dist/commands/mcp-server.d.ts +8 -2
- package/dist/commands/mcp-server.js +15 -28
- package/dist/commands/mcp-server.js.map +1 -1
- package/dist/commands/monday/connect.d.ts +1 -1
- package/dist/commands/monday/sync.d.ts +1 -1
- package/dist/commands/orchestrate/index.d.ts +1 -1
- package/dist/commands/orchestrator/index.d.ts +1 -1
- package/dist/commands/orchestrator/start.d.ts +3 -3
- package/dist/commands/orchestrator/start.js +38 -40
- package/dist/commands/orchestrator/start.js.map +1 -1
- package/dist/commands/pr/checks.d.ts +1 -1
- package/dist/commands/pr/close.d.ts +1 -1
- package/dist/commands/pr/create.d.ts +1 -1
- package/dist/commands/pr/index.d.ts +1 -1
- package/dist/commands/pr/link.d.ts +1 -1
- package/dist/commands/pr/list.d.ts +1 -1
- package/dist/commands/pr/merge.d.ts +1 -1
- package/dist/commands/pr/status.d.ts +1 -1
- package/dist/commands/pull.d.ts +1 -1
- package/dist/commands/repo/add.d.ts +1 -1
- package/dist/commands/repo/create.d.ts +1 -1
- package/dist/commands/repo/fix-remotes.d.ts +1 -1
- package/dist/commands/repo/index.d.ts +1 -1
- package/dist/commands/repo/list.d.ts +1 -1
- package/dist/commands/repo/remove.d.ts +1 -1
- package/dist/commands/repo/view.d.ts +1 -1
- package/dist/commands/session/attach.d.ts +1 -1
- package/dist/commands/session/cleanup.d.ts +1 -1
- package/dist/commands/session/create.d.ts +1 -1
- package/dist/commands/session/exec.d.ts +1 -1
- package/dist/commands/session/health.d.ts +1 -1
- package/dist/commands/session/index.d.ts +1 -1
- package/dist/commands/session/inspect.d.ts +1 -1
- package/dist/commands/session/list.d.ts +1 -1
- package/dist/commands/session/peek.d.ts +1 -1
- package/dist/commands/session/prune.d.ts +1 -1
- package/dist/commands/session/report.d.ts +1 -1
- package/dist/commands/session/restart.d.ts +1 -1
- package/dist/commands/shortcut/connect.d.ts +1 -1
- package/dist/commands/support/logs.d.ts +1 -1
- package/dist/commands/ticket/create.d.ts +1 -1
- package/dist/commands/ticket/delete.d.ts +1 -1
- package/dist/commands/ticket/edit.d.ts +1 -1
- package/dist/commands/ticket/index.d.ts +1 -1
- package/dist/commands/ticket/index.js +6 -36
- package/dist/commands/ticket/index.js.map +1 -1
- package/dist/commands/ticket/list.d.ts +1 -1
- package/dist/commands/ticket/move.d.ts +1 -1
- package/dist/commands/ticket/show.d.ts +8 -7
- package/dist/commands/ticket/show.js +101 -8
- package/dist/commands/ticket/show.js.map +1 -1
- package/dist/commands/ticket/update.d.ts +1 -1
- package/dist/commands/trello/configure.d.ts +1 -1
- package/dist/commands/trello/import.d.ts +1 -1
- package/dist/commands/trello/sync.d.ts +1 -1
- package/dist/commands/work/asana.d.ts +1 -1
- package/dist/commands/work/complete.d.ts +1 -1
- package/dist/commands/work/groom.d.ts +1 -1
- package/dist/commands/work/hooks/add.d.ts +1 -1
- package/dist/commands/work/hooks/index.d.ts +1 -1
- package/dist/commands/work/hooks/list.d.ts +1 -1
- package/dist/commands/work/hooks/remove.d.ts +1 -1
- package/dist/commands/work/hooks/toggle.d.ts +1 -1
- package/dist/commands/work/implement.d.ts +1 -1
- package/dist/commands/work/index.d.ts +1 -1
- package/dist/commands/work/jira.d.ts +1 -1
- package/dist/commands/work/linear.d.ts +1 -1
- package/dist/commands/work/peek.d.ts +1 -1
- package/dist/commands/work/ready.d.ts +1 -1
- package/dist/commands/work/rebase.d.ts +1 -1
- package/dist/commands/work/resolve.d.ts +1 -1
- package/dist/commands/work/review.d.ts +1 -1
- package/dist/commands/work/ship.d.ts +1 -1
- package/dist/commands/work/shortcut.d.ts +1 -1
- package/dist/commands/work/source/set.d.ts +1 -1
- package/dist/commands/work/source.d.ts +1 -1
- package/dist/commands/work/spawn.d.ts +1 -1
- package/dist/commands/work/start.d.ts +1 -1
- package/dist/commands/work/status.d.ts +1 -1
- package/dist/commands/work/stop.d.ts +1 -1
- package/dist/commands/work/watch.d.ts +1 -1
- package/dist/hooks/init.js +1 -1
- package/dist/hooks/init.js.map +1 -1
- package/dist/lib/asana/config.js +13 -7
- package/dist/lib/asana/config.js.map +1 -1
- package/dist/lib/clickup/client.d.ts +92 -0
- package/dist/lib/clickup/client.js +150 -0
- package/dist/lib/clickup/client.js.map +1 -0
- package/dist/lib/clickup/config.d.ts +41 -0
- package/dist/lib/clickup/config.js +104 -0
- package/dist/lib/clickup/config.js.map +1 -0
- package/dist/lib/clickup/index.d.ts +4 -0
- package/dist/lib/clickup/index.js +4 -0
- package/dist/lib/clickup/index.js.map +1 -0
- package/dist/lib/clickup/types.d.ts +104 -0
- package/dist/lib/clickup/types.js +34 -0
- package/dist/lib/clickup/types.js.map +1 -0
- package/dist/lib/database/credential-store.d.ts +64 -0
- package/dist/lib/database/credential-store.js +306 -0
- package/dist/lib/database/credential-store.js.map +1 -0
- package/dist/lib/database/index.d.ts +1 -0
- package/dist/lib/database/index.js +2 -0
- package/dist/lib/database/index.js.map +1 -1
- package/dist/lib/database/pmo-bootstrap.d.ts +7 -0
- package/dist/lib/database/pmo-bootstrap.js +45 -20
- package/dist/lib/database/pmo-bootstrap.js.map +1 -1
- package/dist/lib/database/workspace.js +4 -0
- package/dist/lib/database/workspace.js.map +1 -1
- package/dist/lib/execution/devcontainer.js +51 -0
- package/dist/lib/execution/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/docker-management.d.ts +23 -0
- package/dist/lib/execution/runners/docker-management.js +99 -7
- package/dist/lib/execution/runners/docker-management.js.map +1 -1
- package/dist/lib/execution/session-utils.d.ts +4 -0
- package/dist/lib/execution/session-utils.js +34 -24
- package/dist/lib/execution/session-utils.js.map +1 -1
- package/dist/lib/execution/types.js +1 -1
- package/dist/lib/external-issues/types.d.ts +3 -3
- package/dist/lib/external-issues/types.js +1 -1
- package/dist/lib/external-issues/types.js.map +1 -1
- package/dist/lib/jira/config.js +10 -4
- package/dist/lib/jira/config.js.map +1 -1
- package/dist/lib/linear/config.js +13 -8
- package/dist/lib/linear/config.js.map +1 -1
- package/dist/lib/mcp/generator.d.ts +26 -0
- package/dist/lib/mcp/generator.js +219 -0
- package/dist/lib/mcp/generator.js.map +1 -0
- package/dist/lib/mcp/index.d.ts +1 -0
- package/dist/lib/mcp/index.js +1 -0
- package/dist/lib/mcp/index.js.map +1 -1
- package/dist/lib/mcp/tools/index.d.ts +0 -11
- package/dist/lib/mcp/tools/index.js +0 -11
- package/dist/lib/mcp/tools/index.js.map +1 -1
- package/dist/lib/mcp/tools/overrides/index.d.ts +23 -0
- package/dist/lib/mcp/tools/overrides/index.js +30 -0
- package/dist/lib/mcp/tools/overrides/index.js.map +1 -0
- package/dist/lib/mcp/tools/overrides/tmux.d.ts +11 -0
- package/dist/lib/mcp/tools/overrides/tmux.js +184 -0
- package/dist/lib/mcp/tools/overrides/tmux.js.map +1 -0
- package/dist/lib/mcp/tools/overrides/work-start.d.ts +12 -0
- package/dist/lib/mcp/tools/overrides/work-start.js +108 -0
- package/dist/lib/mcp/tools/overrides/work-start.js.map +1 -0
- package/dist/lib/mcp/tools/ticket.js +10 -48
- package/dist/lib/mcp/tools/ticket.js.map +1 -1
- package/dist/lib/monday/config.js +11 -5
- package/dist/lib/monday/config.js.map +1 -1
- package/dist/lib/pmo/base-command.d.ts +20 -152
- package/dist/lib/pmo/base-command.js +32 -198
- package/dist/lib/pmo/base-command.js.map +1 -1
- package/dist/lib/pmo/index.d.ts +1 -0
- package/dist/lib/pmo/index.js +3 -0
- package/dist/lib/pmo/index.js.map +1 -1
- package/dist/lib/pmo/storage/base.d.ts +0 -18
- package/dist/lib/pmo/storage/base.js +0 -231
- package/dist/lib/pmo/storage/base.js.map +1 -1
- package/dist/lib/pmo/storage/index.d.ts +1 -76
- package/dist/lib/pmo/storage/index.js +1 -215
- package/dist/lib/pmo/storage/index.js.map +1 -1
- package/dist/lib/pmo/storage/tickets.d.ts +2 -2
- package/dist/lib/pmo/storage/tickets.js +4 -34
- package/dist/lib/pmo/storage/tickets.js.map +1 -1
- package/dist/lib/pmo/types.d.ts +0 -37
- package/dist/lib/providers/clickup-provider.d.ts +28 -0
- package/dist/lib/providers/clickup-provider.js +353 -0
- package/dist/lib/providers/clickup-provider.js.map +1 -0
- package/dist/lib/providers/resolver.d.ts +1 -1
- package/dist/lib/providers/resolver.js +16 -5
- package/dist/lib/providers/resolver.js.map +1 -1
- package/dist/lib/providers/types.d.ts +1 -1
- package/dist/lib/runners/claude-code-runner.js +13 -4
- package/dist/lib/runners/claude-code-runner.js.map +1 -1
- package/dist/lib/runtime-command.d.ts +219 -0
- package/dist/lib/runtime-command.js +320 -0
- package/dist/lib/runtime-command.js.map +1 -0
- package/dist/lib/shortcut/config.js +13 -7
- package/dist/lib/shortcut/config.js.map +1 -1
- package/dist/lib/trello/config.js +17 -12
- package/dist/lib/trello/config.js.map +1 -1
- package/dist/lib/work-lifecycle/events.d.ts +1 -1
- package/dist/lib/work-source/config.d.ts +1 -1
- package/dist/lib/work-source/config.js +11 -1
- package/dist/lib/work-source/config.js.map +1 -1
- package/dist/lib/work-source/provider-sources.js +6 -1
- package/dist/lib/work-source/provider-sources.js.map +1 -1
- package/oclif.manifest.json +3015 -4827
- package/package.json +1 -1
- package/dist/commands/board/index.d.ts +0 -21
- package/dist/commands/board/index.js +0 -263
- package/dist/commands/board/index.js.map +0 -1
- package/dist/commands/board/view.d.ts +0 -15
- package/dist/commands/board/view.js +0 -137
- package/dist/commands/board/view.js.map +0 -1
- package/dist/commands/board/watch.d.ts +0 -15
- package/dist/commands/board/watch.js +0 -59
- package/dist/commands/board/watch.js.map +0 -1
- package/dist/commands/dashboard/index.d.ts +0 -14
- package/dist/commands/dashboard/index.js +0 -117
- package/dist/commands/dashboard/index.js.map +0 -1
- package/dist/commands/dashboard.d.ts +0 -38
- package/dist/commands/dashboard.js +0 -353
- package/dist/commands/dashboard.js.map +0 -1
- package/dist/commands/pmo/init.d.ts +0 -28
- package/dist/commands/pmo/init.js +0 -410
- package/dist/commands/pmo/init.js.map +0 -1
- package/dist/commands/project/archive.d.ts +0 -18
- package/dist/commands/project/archive.js +0 -79
- package/dist/commands/project/archive.js.map +0 -1
- package/dist/commands/project/create.d.ts +0 -24
- package/dist/commands/project/create.js +0 -191
- package/dist/commands/project/create.js.map +0 -1
- package/dist/commands/project/delete.d.ts +0 -18
- package/dist/commands/project/delete.js +0 -115
- package/dist/commands/project/delete.js.map +0 -1
- package/dist/commands/project/index.d.ts +0 -14
- package/dist/commands/project/index.js +0 -60
- package/dist/commands/project/index.js.map +0 -1
- package/dist/commands/project/list.d.ts +0 -16
- package/dist/commands/project/list.js +0 -115
- package/dist/commands/project/list.js.map +0 -1
- package/dist/commands/project/spec.d.ts +0 -19
- package/dist/commands/project/spec.js +0 -218
- package/dist/commands/project/spec.js.map +0 -1
- package/dist/commands/project/unarchive.d.ts +0 -17
- package/dist/commands/project/unarchive.js +0 -55
- package/dist/commands/project/unarchive.js.map +0 -1
- package/dist/commands/project/update.d.ts +0 -19
- package/dist/commands/project/update.js +0 -161
- package/dist/commands/project/update.js.map +0 -1
- package/dist/commands/project/view.d.ts +0 -17
- package/dist/commands/project/view.js +0 -107
- package/dist/commands/project/view.js.map +0 -1
- package/dist/commands/ticket/bulk.d.ts +0 -14
- package/dist/commands/ticket/bulk.js +0 -141
- package/dist/commands/ticket/bulk.js.map +0 -1
- package/dist/commands/ticket/cancel.d.ts +0 -17
- package/dist/commands/ticket/cancel.js +0 -206
- package/dist/commands/ticket/cancel.js.map +0 -1
- package/dist/commands/ticket/category.d.ts +0 -15
- package/dist/commands/ticket/category.js +0 -64
- package/dist/commands/ticket/category.js.map +0 -1
- package/dist/commands/ticket/complete.d.ts +0 -17
- package/dist/commands/ticket/complete.js +0 -193
- package/dist/commands/ticket/complete.js.map +0 -1
- package/dist/commands/ticket/epic.d.ts +0 -21
- package/dist/commands/ticket/epic.js +0 -306
- package/dist/commands/ticket/epic.js.map +0 -1
- package/dist/commands/ticket/link/block.d.ts +0 -15
- package/dist/commands/ticket/link/block.js +0 -96
- package/dist/commands/ticket/link/block.js.map +0 -1
- package/dist/commands/ticket/link/duplicates.d.ts +0 -15
- package/dist/commands/ticket/link/duplicates.js +0 -96
- package/dist/commands/ticket/link/duplicates.js.map +0 -1
- package/dist/commands/ticket/link/index.d.ts +0 -14
- package/dist/commands/ticket/link/index.js +0 -99
- package/dist/commands/ticket/link/index.js.map +0 -1
- package/dist/commands/ticket/link/relates.d.ts +0 -15
- package/dist/commands/ticket/link/relates.js +0 -96
- package/dist/commands/ticket/link/relates.js.map +0 -1
- package/dist/commands/ticket/project.d.ts +0 -19
- package/dist/commands/ticket/project.js +0 -257
- package/dist/commands/ticket/project.js.map +0 -1
- package/dist/commands/ticket/reassign.d.ts +0 -20
- package/dist/commands/ticket/reassign.js +0 -340
- package/dist/commands/ticket/reassign.js.map +0 -1
- package/dist/commands/ticket/resolve.d.ts +0 -68
- package/dist/commands/ticket/resolve.js +0 -306
- package/dist/commands/ticket/resolve.js.map +0 -1
- package/dist/commands/ticket/spec.d.ts +0 -19
- package/dist/commands/ticket/spec.js +0 -260
- package/dist/commands/ticket/spec.js.map +0 -1
- package/dist/commands/ticket/status.d.ts +0 -14
- package/dist/commands/ticket/status.js +0 -84
- package/dist/commands/ticket/status.js.map +0 -1
- package/dist/commands/ticket/view.d.ts +0 -14
- package/dist/commands/ticket/view.js +0 -113
- package/dist/commands/ticket/view.js.map +0 -1
- package/dist/lib/mcp/tools/board.d.ts +0 -6
- package/dist/lib/mcp/tools/board.js +0 -190
- package/dist/lib/mcp/tools/board.js.map +0 -1
- package/dist/lib/mcp/tools/category.d.ts +0 -6
- package/dist/lib/mcp/tools/category.js +0 -85
- package/dist/lib/mcp/tools/category.js.map +0 -1
- package/dist/lib/mcp/tools/epic.d.ts +0 -6
- package/dist/lib/mcp/tools/epic.js +0 -184
- package/dist/lib/mcp/tools/epic.js.map +0 -1
- package/dist/lib/mcp/tools/label.d.ts +0 -6
- package/dist/lib/mcp/tools/label.js +0 -339
- package/dist/lib/mcp/tools/label.js.map +0 -1
- package/dist/lib/mcp/tools/phase.d.ts +0 -6
- package/dist/lib/mcp/tools/phase.js +0 -132
- package/dist/lib/mcp/tools/phase.js.map +0 -1
- package/dist/lib/mcp/tools/project.d.ts +0 -6
- package/dist/lib/mcp/tools/project.js +0 -197
- package/dist/lib/mcp/tools/project.js.map +0 -1
- package/dist/lib/mcp/tools/roadmap.d.ts +0 -6
- package/dist/lib/mcp/tools/roadmap.js +0 -124
- package/dist/lib/mcp/tools/roadmap.js.map +0 -1
- package/dist/lib/mcp/tools/status.d.ts +0 -6
- package/dist/lib/mcp/tools/status.js +0 -110
- package/dist/lib/mcp/tools/status.js.map +0 -1
- package/dist/lib/mcp/tools/template.d.ts +0 -6
- package/dist/lib/mcp/tools/template.js +0 -108
- package/dist/lib/mcp/tools/template.js.map +0 -1
- package/dist/lib/mcp/tools/view.d.ts +0 -6
- package/dist/lib/mcp/tools/view.js +0 -77
- package/dist/lib/mcp/tools/view.js.map +0 -1
- package/dist/lib/mcp/tools/workflow.d.ts +0 -6
- package/dist/lib/mcp/tools/workflow.js +0 -96
- package/dist/lib/mcp/tools/workflow.js.map +0 -1
- package/dist/lib/pmo/storage/categories.d.ts +0 -50
- package/dist/lib/pmo/storage/categories.js +0 -206
- package/dist/lib/pmo/storage/categories.js.map +0 -1
- package/dist/lib/pmo/storage/labels.d.ts +0 -55
- package/dist/lib/pmo/storage/labels.js +0 -347
- package/dist/lib/pmo/storage/labels.js.map +0 -1
- package/dist/lib/pmo/storage/phases.d.ts +0 -65
- package/dist/lib/pmo/storage/phases.js +0 -393
- package/dist/lib/pmo/storage/phases.js.map +0 -1
- package/dist/lib/pmo/storage/roadmaps.d.ts +0 -64
- package/dist/lib/pmo/storage/roadmaps.js +0 -373
- package/dist/lib/pmo/storage/roadmaps.js.map +0 -1
- package/dist/lib/pmo/storage/views.d.ts +0 -57
- package/dist/lib/pmo/storage/views.js +0 -456
- package/dist/lib/pmo/storage/views.js.map +0 -1
|
@@ -1,410 +0,0 @@
|
|
|
1
|
-
import { Flags } from '@oclif/core';
|
|
2
|
-
import * as fs from 'node:fs';
|
|
3
|
-
import * as path from 'node:path';
|
|
4
|
-
import { execSync } from 'node:child_process';
|
|
5
|
-
import chalk from 'chalk';
|
|
6
|
-
import { PromptCommand } from '../../lib/prompt-command.js';
|
|
7
|
-
import { checkPMOExists, getPMOSetting, dropPMOTables } from '../../lib/database/index.js';
|
|
8
|
-
import { SQLiteStorage, getColumnsForTemplate, createPMO, promptForPMOLocation, promptForBoardTemplate, promptForBoardName, promptForCustomColumns, determinePMOPath, getPickerTemplates, machineOutputFlags, } from '../../lib/pmo/index.js';
|
|
9
|
-
import { styles } from '../../lib/styles.js';
|
|
10
|
-
import { isGHInstalled, isGHAuthenticated, getGHUsername, isGHTokenInEnv } from '../../lib/pr/index.js';
|
|
11
|
-
import { shouldOutputJson, outputPromptAsJson, createMetadata, buildPromptConfig, } from '../../lib/prompt-json.js';
|
|
12
|
-
// Build template options dynamically from shared definitions (picker templates + custom)
|
|
13
|
-
const PICKER_TEMPLATE_IDS = [...getPickerTemplates().map(t => t.id), 'custom'];
|
|
14
|
-
export default class PMOInit extends PromptCommand {
|
|
15
|
-
static description = 'Initialize PMO (Project Management Org) in current directory or HQ';
|
|
16
|
-
static examples = [
|
|
17
|
-
'<%= config.bin %> <%= command.id %>',
|
|
18
|
-
'<%= config.bin %> <%= command.id %> --location repo:proletariat --template 5-tool',
|
|
19
|
-
'<%= config.bin %> <%= command.id %> --location separate --template linear',
|
|
20
|
-
];
|
|
21
|
-
static flags = {
|
|
22
|
-
location: Flags.string({
|
|
23
|
-
char: 'l',
|
|
24
|
-
description: 'PMO location (separate or repo:name)',
|
|
25
|
-
}),
|
|
26
|
-
template: Flags.string({
|
|
27
|
-
char: 't',
|
|
28
|
-
description: 'Board template',
|
|
29
|
-
options: PICKER_TEMPLATE_IDS,
|
|
30
|
-
}),
|
|
31
|
-
name: Flags.string({
|
|
32
|
-
char: 'n',
|
|
33
|
-
description: 'Board name',
|
|
34
|
-
}),
|
|
35
|
-
...machineOutputFlags,
|
|
36
|
-
action: Flags.string({
|
|
37
|
-
description: 'Action for existing PMO (cancel or reinitialize)',
|
|
38
|
-
options: ['cancel', 'reinitialize'],
|
|
39
|
-
hidden: true,
|
|
40
|
-
}),
|
|
41
|
-
confirmation: Flags.string({
|
|
42
|
-
description: 'Confirmation text for destructive operations',
|
|
43
|
-
hidden: true,
|
|
44
|
-
}),
|
|
45
|
-
};
|
|
46
|
-
async run() {
|
|
47
|
-
const { flags } = await this.parse(PMOInit);
|
|
48
|
-
// Check if JSON output mode is active
|
|
49
|
-
const jsonMode = shouldOutputJson(flags);
|
|
50
|
-
// Check if PMO already exists
|
|
51
|
-
const hqRoot = this.findHQRoot();
|
|
52
|
-
let existingPMO = false;
|
|
53
|
-
let projectCount = 0;
|
|
54
|
-
let ticketCount = 0;
|
|
55
|
-
if (hqRoot) {
|
|
56
|
-
const dbPath = path.join(hqRoot, '.proletariat', 'workspace.db');
|
|
57
|
-
if (fs.existsSync(dbPath)) {
|
|
58
|
-
try {
|
|
59
|
-
const pmoStatus = checkPMOExists(dbPath);
|
|
60
|
-
existingPMO = pmoStatus.exists;
|
|
61
|
-
projectCount = pmoStatus.projectCount;
|
|
62
|
-
ticketCount = pmoStatus.ticketCount;
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
// Log error for debugging
|
|
66
|
-
console.error('PMO check error:', error);
|
|
67
|
-
// Ignore errors - database might not be initialized yet
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
// If PMO exists, prompt for reinitialize
|
|
72
|
-
if (existingPMO) {
|
|
73
|
-
const shouldReinitialize = await this.promptReinitialize(hqRoot, projectCount, ticketCount, jsonMode, flags);
|
|
74
|
-
if (shouldReinitialize === null) {
|
|
75
|
-
// JSON mode returned early
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
if (!shouldReinitialize) {
|
|
79
|
-
this.log(chalk.yellow('\nCancelled. Existing PMO preserved.'));
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
// Delete existing PMO
|
|
83
|
-
await this.deletePMO(hqRoot);
|
|
84
|
-
}
|
|
85
|
-
this.log(chalk.blue('🎯 Initializing PMO...\n'));
|
|
86
|
-
this.log(chalk.gray(' Creates board.md and specs/ for project planning'));
|
|
87
|
-
this.log(chalk.gray(' (Data stored in SQLite, synced to markdown files)\n'));
|
|
88
|
-
// Get PMO location using shared prompt (or from flag)
|
|
89
|
-
let location;
|
|
90
|
-
if (flags.location) {
|
|
91
|
-
location = flags.location;
|
|
92
|
-
}
|
|
93
|
-
else if (jsonMode) {
|
|
94
|
-
location = 'separate';
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
location = await promptForPMOLocation(hqRoot);
|
|
98
|
-
}
|
|
99
|
-
// Get board template using shared prompt (or from flag)
|
|
100
|
-
// If DB exists, query it for templates (source of truth)
|
|
101
|
-
let template;
|
|
102
|
-
if (flags.template) {
|
|
103
|
-
template = flags.template;
|
|
104
|
-
}
|
|
105
|
-
else if (jsonMode) {
|
|
106
|
-
template = 'kanban';
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
let storage;
|
|
110
|
-
if (hqRoot) {
|
|
111
|
-
const dbPath = path.join(hqRoot, '.proletariat', 'workspace.db');
|
|
112
|
-
if (fs.existsSync(dbPath)) {
|
|
113
|
-
try {
|
|
114
|
-
storage = new SQLiteStorage(dbPath);
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
// Ignore - will fall back to builtin templates
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
template = await promptForBoardTemplate(storage);
|
|
122
|
-
if (storage) {
|
|
123
|
-
await storage.close();
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// Get columns for template
|
|
127
|
-
let columns = getColumnsForTemplate(template);
|
|
128
|
-
if (template === 'custom' && !jsonMode) {
|
|
129
|
-
columns = await promptForCustomColumns();
|
|
130
|
-
}
|
|
131
|
-
else if (template === 'custom' && jsonMode) {
|
|
132
|
-
// Custom column prompts not supported in JSON mode — use default columns
|
|
133
|
-
this.log(JSON.stringify({ warning: 'Custom columns not supported in JSON mode, using default columns. Use a named template (e.g. --template kanban) for predictable results.' }));
|
|
134
|
-
}
|
|
135
|
-
// Get board name using shared prompt (or from flag)
|
|
136
|
-
// Default to {hqname}-kanban pattern
|
|
137
|
-
const hqName = hqRoot ? path.basename(hqRoot).replace(/-hq$/, '') : undefined;
|
|
138
|
-
const defaultBoardName = hqName ? `${hqName}-kanban` : 'Project Board';
|
|
139
|
-
let boardName;
|
|
140
|
-
if (flags.name) {
|
|
141
|
-
boardName = flags.name;
|
|
142
|
-
}
|
|
143
|
-
else if (jsonMode) {
|
|
144
|
-
boardName = defaultBoardName;
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
boardName = await promptForBoardName(defaultBoardName);
|
|
148
|
-
}
|
|
149
|
-
// For standalone PMO (no HQ), we need to create mini-HQ structure first
|
|
150
|
-
const isStandalone = !hqRoot;
|
|
151
|
-
let effectiveHqPath;
|
|
152
|
-
if (isStandalone) {
|
|
153
|
-
// Create mini-HQ structure
|
|
154
|
-
effectiveHqPath = path.join(process.cwd(), '.pmo');
|
|
155
|
-
await this.createStandaloneHQ(effectiveHqPath);
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
effectiveHqPath = hqRoot;
|
|
159
|
-
}
|
|
160
|
-
// Use shared createPMO function
|
|
161
|
-
await createPMO({
|
|
162
|
-
hqPath: effectiveHqPath,
|
|
163
|
-
location,
|
|
164
|
-
boardTemplate: template,
|
|
165
|
-
boardName,
|
|
166
|
-
columns,
|
|
167
|
-
storageType: 'sqlite',
|
|
168
|
-
});
|
|
169
|
-
// Initialize git for separate PMO (recommended for syncing across machines)
|
|
170
|
-
if (location === 'separate' && !isStandalone) {
|
|
171
|
-
const pmoPath = determinePMOPath(effectiveHqPath, location);
|
|
172
|
-
await this.initGitForPMO(pmoPath);
|
|
173
|
-
}
|
|
174
|
-
this.log(chalk.green('\n✅ PMO initialized successfully!'));
|
|
175
|
-
// Check GitHub CLI setup for PR workflow
|
|
176
|
-
this.checkGitHubCLI();
|
|
177
|
-
this.logNextSteps();
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Create standalone mini-HQ structure for PMO outside of an HQ
|
|
181
|
-
*/
|
|
182
|
-
async createStandaloneHQ(hqPath) {
|
|
183
|
-
const proletariatPath = path.join(hqPath, '.proletariat');
|
|
184
|
-
fs.mkdirSync(proletariatPath, { recursive: true });
|
|
185
|
-
// Create minimal config
|
|
186
|
-
const config = {
|
|
187
|
-
type: 'hq',
|
|
188
|
-
name: 'PMO',
|
|
189
|
-
created: new Date().toISOString(),
|
|
190
|
-
version: '2.0.0',
|
|
191
|
-
};
|
|
192
|
-
fs.writeFileSync(path.join(proletariatPath, 'config.json'), JSON.stringify(config, null, 2));
|
|
193
|
-
// Create workspace.db using SQLiteStorage (which creates tables)
|
|
194
|
-
const dbPath = path.join(proletariatPath, 'workspace.db');
|
|
195
|
-
const storage = new SQLiteStorage(dbPath);
|
|
196
|
-
await storage.close();
|
|
197
|
-
this.log(chalk.green(' ✓ Standalone PMO structure created'));
|
|
198
|
-
}
|
|
199
|
-
findHQRoot() {
|
|
200
|
-
// Support PRLT_HQ_PATH override (for devcontainers and tests)
|
|
201
|
-
const hqPathEnv = process.env.PRLT_HQ_PATH;
|
|
202
|
-
const allowEnvHqPath = process.env.DEVCONTAINER === 'true' || process.env.PRLT_TEST_ENV === 'true';
|
|
203
|
-
if (hqPathEnv && allowEnvHqPath) {
|
|
204
|
-
const configPath = path.join(hqPathEnv, '.proletariat', 'config.json');
|
|
205
|
-
if (fs.existsSync(configPath)) {
|
|
206
|
-
try {
|
|
207
|
-
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
208
|
-
if (config.type === 'hq') {
|
|
209
|
-
return hqPathEnv;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
catch {
|
|
213
|
-
// Fall through to directory walk
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
let currentDir = process.cwd();
|
|
218
|
-
while (currentDir !== '/') {
|
|
219
|
-
const configPath = path.join(currentDir, '.proletariat', 'config.json');
|
|
220
|
-
if (fs.existsSync(configPath)) {
|
|
221
|
-
try {
|
|
222
|
-
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
223
|
-
if (config.type === 'hq') {
|
|
224
|
-
return currentDir;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
catch {
|
|
228
|
-
// Ignore parse errors
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
currentDir = path.dirname(currentDir);
|
|
232
|
-
}
|
|
233
|
-
return null;
|
|
234
|
-
}
|
|
235
|
-
async promptReinitialize(hqRoot, projectCount, ticketCount, jsonMode = false, flags = {}) {
|
|
236
|
-
// Find PMO location from database
|
|
237
|
-
const dbPath = path.join(hqRoot, '.proletariat', 'workspace.db');
|
|
238
|
-
let pmoPath = path.join(hqRoot, 'pmo'); // Default fallback
|
|
239
|
-
const savedPmoPath = getPMOSetting(dbPath, 'pmo_path');
|
|
240
|
-
if (savedPmoPath) {
|
|
241
|
-
pmoPath = savedPmoPath;
|
|
242
|
-
}
|
|
243
|
-
// Define choices once, use for both JSON and interactive modes
|
|
244
|
-
const actionChoices = [
|
|
245
|
-
{
|
|
246
|
-
name: 'Cancel (keep existing PMO)',
|
|
247
|
-
value: 'cancel',
|
|
248
|
-
command: 'prlt pmo init --action cancel --json',
|
|
249
|
-
},
|
|
250
|
-
{
|
|
251
|
-
name: 'Reinitialize (DELETES all data)',
|
|
252
|
-
value: 'reinitialize',
|
|
253
|
-
command: 'prlt pmo init --action reinitialize --json',
|
|
254
|
-
},
|
|
255
|
-
];
|
|
256
|
-
const message = `PMO already exists at ${pmoPath} (${projectCount} projects, ${ticketCount} tickets). What would you like to do?`;
|
|
257
|
-
// Determine action: from flag, JSON mode, or interactive prompt
|
|
258
|
-
let action;
|
|
259
|
-
if (flags.action) {
|
|
260
|
-
action = flags.action;
|
|
261
|
-
}
|
|
262
|
-
else if (jsonMode) {
|
|
263
|
-
outputPromptAsJson(buildPromptConfig('list', 'action', message, actionChoices), createMetadata('pmo init', flags));
|
|
264
|
-
return null;
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
this.log(chalk.yellow('\n⚠️ PMO already exists'));
|
|
268
|
-
this.log(chalk.gray(` Location: ${pmoPath}`));
|
|
269
|
-
this.log(chalk.gray(` Projects: ${projectCount}`));
|
|
270
|
-
this.log(chalk.gray(` Tickets: ${ticketCount}\n`));
|
|
271
|
-
const result = await this.prompt([{
|
|
272
|
-
type: 'list',
|
|
273
|
-
name: 'action',
|
|
274
|
-
message: 'What would you like to do?',
|
|
275
|
-
choices: actionChoices,
|
|
276
|
-
default: 'cancel',
|
|
277
|
-
}], null);
|
|
278
|
-
action = result.action;
|
|
279
|
-
}
|
|
280
|
-
if (action === 'cancel') {
|
|
281
|
-
return false;
|
|
282
|
-
}
|
|
283
|
-
// Determine confirmation: from flag, JSON mode, or interactive prompt
|
|
284
|
-
let confirmation;
|
|
285
|
-
if (flags.confirmation) {
|
|
286
|
-
confirmation = flags.confirmation;
|
|
287
|
-
}
|
|
288
|
-
else if (jsonMode) {
|
|
289
|
-
outputPromptAsJson({
|
|
290
|
-
type: 'input',
|
|
291
|
-
name: 'confirmation',
|
|
292
|
-
message: 'Type "delete pmo" to confirm:',
|
|
293
|
-
context: {
|
|
294
|
-
hint: 'Pass --confirmation "delete pmo" to confirm reinitialize',
|
|
295
|
-
example: 'prlt pmo init --action reinitialize --confirmation "delete pmo" --location separate --template kanban --name "my-board" --json',
|
|
296
|
-
},
|
|
297
|
-
}, createMetadata('pmo init', flags));
|
|
298
|
-
return null;
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
// Show warning and require typed confirmation
|
|
302
|
-
this.log(chalk.red('\n⚠️ WARNING: This will permanently delete:'));
|
|
303
|
-
this.log(chalk.red(' • All tickets and boards'));
|
|
304
|
-
this.log(chalk.red(' • All specs and documentation'));
|
|
305
|
-
this.log(chalk.red(' • Database tables (pmo_*)\n'));
|
|
306
|
-
const result = await this.prompt([{
|
|
307
|
-
type: 'input',
|
|
308
|
-
name: 'confirmation',
|
|
309
|
-
message: 'Type "delete pmo" to confirm:',
|
|
310
|
-
}], null);
|
|
311
|
-
confirmation = result.confirmation;
|
|
312
|
-
}
|
|
313
|
-
if (confirmation !== 'delete pmo') {
|
|
314
|
-
this.log(chalk.yellow('\nCancelled. Confirmation text did not match.'));
|
|
315
|
-
return false;
|
|
316
|
-
}
|
|
317
|
-
return true;
|
|
318
|
-
}
|
|
319
|
-
async deletePMO(hqRoot) {
|
|
320
|
-
this.log(chalk.blue('\n🗑️ Deleting existing PMO...\n'));
|
|
321
|
-
// Delete database tables and get PMO path before dropping settings
|
|
322
|
-
const dbPath = path.join(hqRoot, '.proletariat', 'workspace.db');
|
|
323
|
-
let pmoPath = path.join(hqRoot, 'pmo'); // Default fallback
|
|
324
|
-
if (fs.existsSync(dbPath)) {
|
|
325
|
-
// Get PMO path from database before deleting
|
|
326
|
-
const savedPmoPath = getPMOSetting(dbPath, 'pmo_path');
|
|
327
|
-
if (savedPmoPath) {
|
|
328
|
-
pmoPath = savedPmoPath;
|
|
329
|
-
}
|
|
330
|
-
// Drop all pmo_* tables
|
|
331
|
-
const tables = ['pmo_ticket_specs', 'pmo_ticket_metadata', 'pmo_subtasks', 'pmo_tickets',
|
|
332
|
-
'pmo_columns', 'pmo_specs', 'pmo_epics', 'pmo_projects',
|
|
333
|
-
'pmo_initiatives', 'pmo_ticket_assignments', 'pmo_cache_metadata', 'pmo_settings'];
|
|
334
|
-
dropPMOTables(dbPath, tables);
|
|
335
|
-
this.log(chalk.green(' ✓ Dropped database tables'));
|
|
336
|
-
}
|
|
337
|
-
// Delete pmo/ directory (using path from database or default)
|
|
338
|
-
if (fs.existsSync(pmoPath)) {
|
|
339
|
-
fs.rmSync(pmoPath, { recursive: true, force: true });
|
|
340
|
-
this.log(chalk.green(' ✓ Removed pmo/ directory\n'));
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
async initGitForPMO(pmoPath) {
|
|
344
|
-
try {
|
|
345
|
-
// Create .gitignore
|
|
346
|
-
const gitignore = `# Proletariat PMO
|
|
347
|
-
.DS_Store
|
|
348
|
-
*.swp
|
|
349
|
-
*.swo
|
|
350
|
-
*~
|
|
351
|
-
.vscode/
|
|
352
|
-
.idea/
|
|
353
|
-
`;
|
|
354
|
-
fs.writeFileSync(path.join(pmoPath, '.gitignore'), gitignore);
|
|
355
|
-
// Initialize git repo
|
|
356
|
-
execSync('git init', { cwd: pmoPath, stdio: 'pipe' });
|
|
357
|
-
execSync('git add .', { cwd: pmoPath, stdio: 'pipe' });
|
|
358
|
-
execSync('git commit -m "Initialize PMO\n\nCreated with Proletariat CLI"', { cwd: pmoPath, stdio: 'pipe' });
|
|
359
|
-
this.log(chalk.green(' ✓ Git repository initialized'));
|
|
360
|
-
this.log(styles.muted(' Add remote: cd pmo && git remote add origin <url>'));
|
|
361
|
-
}
|
|
362
|
-
catch {
|
|
363
|
-
this.log(chalk.yellow(' ⚠ Git initialization failed (continuing without git)'));
|
|
364
|
-
this.log(styles.muted(' You can initialize git manually: cd pmo && git init'));
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
logNextSteps() {
|
|
368
|
-
this.log(styles.muted('\nNext steps:'));
|
|
369
|
-
this.log(styles.muted(' 1. Create your first ticket: prlt ticket create'));
|
|
370
|
-
this.log(styles.muted(' 2. Create a spec: prlt spec create'));
|
|
371
|
-
this.log(styles.muted(' 3. Open pmo/ in Obsidian for visual kanban'));
|
|
372
|
-
}
|
|
373
|
-
/**
|
|
374
|
-
* Check GitHub CLI setup and provide guidance for PR workflow
|
|
375
|
-
*/
|
|
376
|
-
checkGitHubCLI() {
|
|
377
|
-
this.log(styles.muted('\nChecking GitHub CLI for PR workflow...'));
|
|
378
|
-
// Check if gh is installed
|
|
379
|
-
if (!isGHInstalled()) {
|
|
380
|
-
this.log(chalk.yellow(' ⚠ gh CLI not installed'));
|
|
381
|
-
this.log(styles.muted(' Install: brew install gh'));
|
|
382
|
-
this.log(styles.muted(' PR creation will be skipped without gh\n'));
|
|
383
|
-
return;
|
|
384
|
-
}
|
|
385
|
-
this.log(chalk.green(' ✓ gh CLI installed'));
|
|
386
|
-
// Check if gh is authenticated
|
|
387
|
-
if (!isGHAuthenticated()) {
|
|
388
|
-
this.log(chalk.yellow(' ⚠ gh CLI not authenticated'));
|
|
389
|
-
this.log(styles.muted(' Run: gh auth login'));
|
|
390
|
-
this.log(styles.muted(' PR creation will be skipped without auth\n'));
|
|
391
|
-
return;
|
|
392
|
-
}
|
|
393
|
-
const username = getGHUsername();
|
|
394
|
-
this.log(chalk.green(` ✓ gh authenticated${username ? ` as ${username}` : ''}`));
|
|
395
|
-
// Check if GH_TOKEN is available for devcontainers
|
|
396
|
-
if (isGHTokenInEnv()) {
|
|
397
|
-
this.log(chalk.green(' ✓ GH_TOKEN available for devcontainers'));
|
|
398
|
-
}
|
|
399
|
-
else {
|
|
400
|
-
this.log(chalk.yellow(' ⚠ GH_TOKEN not set (needed for PR creation in devcontainers)'));
|
|
401
|
-
this.log(styles.muted(''));
|
|
402
|
-
this.log(styles.muted(' To enable PR creation from devcontainers, add to your shell profile:'));
|
|
403
|
-
this.log(styles.muted(''));
|
|
404
|
-
this.log(chalk.cyan(" echo 'export GH_TOKEN=$(gh auth token 2>/dev/null)' >> ~/.zshrc"));
|
|
405
|
-
this.log(styles.muted(''));
|
|
406
|
-
this.log(styles.muted(' Then restart your terminal or run: source ~/.zshrc'));
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/pmo/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
-
export default class ProjectArchive extends PMOCommand {
|
|
3
|
-
static description: string;
|
|
4
|
-
static examples: string[];
|
|
5
|
-
static args: {
|
|
6
|
-
id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
-
};
|
|
8
|
-
static flags: {
|
|
9
|
-
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
-
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
-
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
-
};
|
|
14
|
-
protected getPMOOptions(): {
|
|
15
|
-
promptIfMultiple: boolean;
|
|
16
|
-
};
|
|
17
|
-
execute(): Promise<void>;
|
|
18
|
-
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { Args, Flags } from '@oclif/core';
|
|
2
|
-
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
3
|
-
import { styles } from '../../lib/styles.js';
|
|
4
|
-
import { shouldOutputJson, outputErrorAsJson, outputSuccessAsJson, createMetadata, } from '../../lib/prompt-json.js';
|
|
5
|
-
export default class ProjectArchive extends PMOCommand {
|
|
6
|
-
static description = 'Archive a project (hide from default views)';
|
|
7
|
-
static examples = [
|
|
8
|
-
'<%= config.bin %> <%= command.id %> old-project',
|
|
9
|
-
'<%= config.bin %> <%= command.id %> old-project --force',
|
|
10
|
-
];
|
|
11
|
-
static args = {
|
|
12
|
-
id: Args.string({
|
|
13
|
-
description: 'Project ID',
|
|
14
|
-
required: true,
|
|
15
|
-
}),
|
|
16
|
-
};
|
|
17
|
-
static flags = {
|
|
18
|
-
...pmoBaseFlags,
|
|
19
|
-
force: Flags.boolean({
|
|
20
|
-
char: 'f',
|
|
21
|
-
description: 'Skip confirmation',
|
|
22
|
-
default: false,
|
|
23
|
-
}),
|
|
24
|
-
};
|
|
25
|
-
getPMOOptions() {
|
|
26
|
-
return { promptIfMultiple: false };
|
|
27
|
-
}
|
|
28
|
-
async execute() {
|
|
29
|
-
const { args, flags } = await this.parse(ProjectArchive);
|
|
30
|
-
// Check if JSON output mode is active
|
|
31
|
-
const jsonMode = shouldOutputJson(flags);
|
|
32
|
-
// Helper to handle errors in JSON mode
|
|
33
|
-
const handleError = (code, message) => {
|
|
34
|
-
if (jsonMode) {
|
|
35
|
-
outputErrorAsJson(code, message, createMetadata('project archive', flags));
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
this.error(message);
|
|
39
|
-
};
|
|
40
|
-
const project = await this.storage.getProject(args.id);
|
|
41
|
-
if (!project) {
|
|
42
|
-
return handleError('PROJECT_NOT_FOUND', `Project "${args.id}" not found.`);
|
|
43
|
-
}
|
|
44
|
-
if (project.isArchived) {
|
|
45
|
-
if (jsonMode) {
|
|
46
|
-
outputSuccessAsJson({ projectId: project.id, projectName: project.name, alreadyArchived: true }, createMetadata('project archive', flags));
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
this.log(styles.muted(`Project "${project.name}" is already archived.`));
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
// Agent mode config for prompts
|
|
53
|
-
const agentConfig = jsonMode ? { flags, commandName: 'project archive' } : null;
|
|
54
|
-
if (!flags.force) {
|
|
55
|
-
const { confirm } = await this.prompt([{
|
|
56
|
-
type: 'list',
|
|
57
|
-
name: 'confirm',
|
|
58
|
-
message: `Archive project "${project.name}"? It will be hidden from default views.`,
|
|
59
|
-
choices: [
|
|
60
|
-
{ name: 'No', value: false, command: '' },
|
|
61
|
-
{ name: 'Yes', value: true, command: `prlt project archive ${args.id} --force --json` },
|
|
62
|
-
],
|
|
63
|
-
}], agentConfig);
|
|
64
|
-
if (!confirm) {
|
|
65
|
-
this.log(styles.muted('Cancelled.'));
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
await this.storage.archiveProject(args.id);
|
|
70
|
-
if (jsonMode) {
|
|
71
|
-
outputSuccessAsJson({ projectId: project.id, projectName: project.name, archived: true }, createMetadata('project archive', flags));
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
this.log(styles.success(`\nArchived project "${project.name}"`));
|
|
75
|
-
this.log(styles.muted('View archived projects: prlt project list --archived'));
|
|
76
|
-
this.log(styles.muted('Unarchive: prlt project unarchive ' + args.id));
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=archive.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/commands/project/archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,UAAU;IACpD,MAAM,CAAC,WAAW,GAAG,6CAA6C,CAAC;IAEnE,MAAM,CAAC,QAAQ,GAAG;QAChB,iDAAiD;QACjD,yDAAyD;KAC1D,CAAC;IAEF,MAAM,CAAC,IAAI,GAAG;QACZ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACd,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,YAAY;QACf,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,mBAAmB;YAChC,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEQ,aAAa;QACrB,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEzD,sCAAsC;QACtC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEzC,uCAAuC;QACvC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,OAAe,EAAQ,EAAE;YAC1D,IAAI,QAAQ,EAAE,CAAC;gBACb,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3E,OAAM;YACR,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,mBAAmB,EAAE,YAAY,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,QAAQ,EAAE,CAAC;gBACb,mBAAmB,CACjB,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,EAC3E,cAAc,CAAC,iBAAiB,EAAE,KAAK,CAAC,CACzC,CAAC;gBACF,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,OAAO,CAAC,IAAI,wBAAwB,CAAC,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAED,gCAAgC;QAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAuB,CAAC;oBAC3D,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,oBAAoB,OAAO,CAAC,IAAI,0CAA0C;oBACnF,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;wBACzC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,wBAAwB,IAAI,CAAC,EAAE,iBAAiB,EAAE;qBACxF;iBACF,CAAC,EAAE,WAAW,CAAC,CAAC;YAEjB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;gBACrC,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE3C,IAAI,QAAQ,EAAE,CAAC;YACb,mBAAmB,CACjB,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EACpE,cAAc,CAAC,iBAAiB,EAAE,KAAK,CAAC,CACzC,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
2
|
-
export default class ProjectCreate extends PMOCommand {
|
|
3
|
-
static description: string;
|
|
4
|
-
static examples: string[];
|
|
5
|
-
static args: {
|
|
6
|
-
name: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
7
|
-
};
|
|
8
|
-
static flags: {
|
|
9
|
-
name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
-
id: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
-
description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
-
template: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
-
interactive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
-
'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
-
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
17
|
-
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
-
};
|
|
19
|
-
protected getPMOOptions(): {
|
|
20
|
-
promptIfMultiple: boolean;
|
|
21
|
-
};
|
|
22
|
-
execute(): Promise<void>;
|
|
23
|
-
private promptProjectData;
|
|
24
|
-
}
|