@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
|
@@ -4,9 +4,9 @@ export default class WorkSourceSet extends PMOCommand {
|
|
|
4
4
|
static strict: boolean;
|
|
5
5
|
static examples: string[];
|
|
6
6
|
static flags: {
|
|
7
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
8
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
9
|
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
-
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
};
|
|
11
11
|
execute(): Promise<void>;
|
|
12
12
|
}
|
|
@@ -3,9 +3,9 @@ export default class WorkSource extends PMOCommand {
|
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static flags: {
|
|
6
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
6
7
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
8
|
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
-
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
9
|
};
|
|
10
10
|
execute(): Promise<void>;
|
|
11
11
|
}
|
|
@@ -41,9 +41,9 @@ export default class WorkSpawn extends PMOCommand {
|
|
|
41
41
|
'jira-jql': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
42
42
|
'jira-limit': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
43
43
|
'shortcut-limit': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
44
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
44
45
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
45
46
|
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
46
|
-
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
47
47
|
};
|
|
48
48
|
private findLinkedJiraTicket;
|
|
49
49
|
private findOrCreateJiraTicket;
|
|
@@ -43,9 +43,9 @@ export default class WorkStart extends PMOCommand {
|
|
|
43
43
|
'allow-network': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
44
44
|
repo: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
45
45
|
'max-parallel': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
46
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
46
47
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
47
48
|
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
48
|
-
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
49
49
|
};
|
|
50
50
|
private findLinkedTicketByEnvelope;
|
|
51
51
|
private createOrUpdateLinkedTicket;
|
|
@@ -3,9 +3,9 @@ export default class WorkStatus extends PMOCommand {
|
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static flags: {
|
|
6
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
6
7
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
8
|
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
-
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
9
|
};
|
|
10
10
|
protected getPMOOptions(): {
|
|
11
11
|
promptIfMultiple: boolean;
|
|
@@ -7,8 +7,8 @@ export default class WorkStop extends PMOCommand {
|
|
|
7
7
|
};
|
|
8
8
|
static flags: {
|
|
9
9
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
-
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
10
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
12
|
};
|
|
13
13
|
execute(): Promise<void>;
|
|
14
14
|
}
|
|
@@ -12,9 +12,9 @@ export default class WorkWatch extends PMOCommand {
|
|
|
12
12
|
mode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
13
|
'skip-permissions': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
14
|
'create-pr': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
16
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
17
|
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
17
|
-
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
18
|
};
|
|
19
19
|
private isRunning;
|
|
20
20
|
private knownTickets;
|
package/dist/hooks/init.js
CHANGED
|
@@ -23,7 +23,7 @@ const hook = async function ({ id, argv, config }) {
|
|
|
23
23
|
// Initialize Sentry as early as possible for crash reporting
|
|
24
24
|
await initSentry(config.version);
|
|
25
25
|
// Commands that work without an HQ still run native module checks.
|
|
26
|
-
const hqOptionalCommands = ['init', 'new', 'commit', 'claude', '
|
|
26
|
+
const hqOptionalCommands = ['init', 'new', 'commit', 'claude', 'telemetry'];
|
|
27
27
|
const isHqOptionalCommand = !!id && hqOptionalCommands.some(cmd => id === cmd || id.startsWith(cmd + ':'));
|
|
28
28
|
// Skip when running under oclif tooling (manifest, readme generation)
|
|
29
29
|
// These run commands to scan metadata and should not trigger the init flow
|
package/dist/hooks/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/hooks/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAA;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAE3E;;;;;;;;;;;;GAYG;AACH,MAAM,IAAI,GAAiB,KAAK,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7D,6DAA6D;IAC7D,MAAM,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAEhC,mEAAmE;IACnE,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/hooks/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAA;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAE3E;;;;;;;;;;;;GAYG;AACH,MAAM,IAAI,GAAiB,KAAK,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7D,6DAA6D;IAC7D,MAAM,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAEhC,mEAAmE;IACnE,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;IAC3E,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;IAE1G,sEAAsE;IACtE,2EAA2E;IAC3E,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACxE,OAAM;IACR,CAAC;IAED,2DAA2D;IAC3D,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC1D,OAAM;IACR,CAAC;IAED,kEAAkE;IAClE,kEAAkE;IAClE,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,OAAM;IACR,CAAC;IAED,yEAAyE;IACzE,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,GAAG,EAAE,CAAC;QAChD,OAAM;IACR,CAAC;IAED,qFAAqF;IACrF,uEAAuE;IACvE,uDAAuD;IACvD,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC9D,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACjE,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,OAAM;IACR,CAAC;IAED,kEAAkE;IAClE,iDAAiD;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAC9B;IAAC,UAAsC,CAAC,oBAAoB,GAAG,YAAY,CAC3E;IAAC,UAAsC,CAAC,iBAAiB,GAAG,EAAE,CAAA;IAC/D,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAE7B,wEAAwE;IACxE,oBAAoB,EAAE,CAAA;IAEtB,uEAAuE;IACvE,4EAA4E;IAC5E,0DAA0D;IAC1D,yEAAyE;IACzE,gCAAgC;IAChC,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAA;QAC1B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,uDAAuD;YACvD,IAAK,UAAsC,CAAC,wBAAwB;gBAAE,OACrE;YAAC,UAAsC,CAAC,wBAAwB,GAAG,IAAI,CAAA;YAExE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAA;YAC5C,MAAM,SAAS,GAAG,OAAO;iBACtB,MAAM,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;iBAC5C,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;YAE/C,eAAe,CAAC;gBACd,OAAO,EAAE,EAAE;gBACX,UAAU;gBACV,OAAO,EAAE,IAAI,KAAK,CAAC;gBACnB,KAAK,EAAE,SAAS;aACjB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,2BAA2B,CAAC,EAAE,CAAC,EAAE,CAAC;QACpC,MAAM,kCAAkC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAA;IAC1E,CAAC;IAED,uEAAuE;IACvE,uFAAuF;IACvF,8EAA8E;IAC9E,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACtD,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAA;QACzD,sBAAsB,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACjE,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YAC5B,4EAA4E;YAC5E,OAAM;QACR,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IAED,uEAAuE;IACvE,2DAA2D;IAC3D,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QACzB,uDAAuD;QACvD,IAAI,CAAC,EAAE,IAAI,eAAe,EAAE,EAAE,CAAC;YAC7B,oEAAoE;YACpE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAC3C,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;YAC1B,MAAM,iBAAiB,EAAE,CAAA;YACzB,OAAM;QACR,CAAC;QACD,OAAM;IACR,CAAC;IAED,mDAAmD;IACnD,IAAI,CAAC,mBAAmB,IAAI,eAAe,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAA;QAE5F,oEAAoE;QACpE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;QAC3C,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;QAE1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,IAAI,CAAC,CAAC,CAAA;QACpF,MAAM,iBAAiB,EAAE,CAAA;QACzB,OAAM;IACR,CAAC;AACH,CAAC,CAAA;AAED,SAAS,2BAA2B,CAAC,EAAW;IAC9C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,CAAC,CACN,EAAE,KAAK,MAAM;QACb,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QACtB,EAAE,KAAK,SAAS;QAChB,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QACzB,EAAE,KAAK,cAAc;QACrB,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAC/B,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe;IACtB,yDAAyD;IACzD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAA;IAC9B,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,KAAK,CAAA;IACd,CAAC;IAED,6DAA6D;IAC7D,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAA;IACzC,IAAI,aAAa,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,eAAe,IAAI,CAAA"}
|
package/dist/lib/asana/config.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { loadProviderSources, resolveApiKey } from '../work-source/provider-sources.js';
|
|
2
2
|
import { SettingsStore } from '../database/settings-store.js';
|
|
3
|
+
import { getCredential, setCredential, deleteCredential, hasCredential } from '../database/credential-store.js';
|
|
3
4
|
const ASANA_CONFIG_KEYS = {
|
|
4
5
|
accessToken: 'asana.access_token',
|
|
5
6
|
workspaceGid: 'asana.workspace_gid',
|
|
@@ -8,13 +9,13 @@ const ASANA_CONFIG_KEYS = {
|
|
|
8
9
|
projectName: 'asana.project_name',
|
|
9
10
|
};
|
|
10
11
|
export function isAsanaConfigured(db) {
|
|
11
|
-
return
|
|
12
|
+
return hasCredential(db, ASANA_CONFIG_KEYS.accessToken);
|
|
12
13
|
}
|
|
13
14
|
export function loadAsanaConfig(db) {
|
|
14
|
-
const
|
|
15
|
-
const accessToken = settings.get(ASANA_CONFIG_KEYS.accessToken);
|
|
15
|
+
const accessToken = getCredential(db, ASANA_CONFIG_KEYS.accessToken);
|
|
16
16
|
if (!accessToken)
|
|
17
17
|
return null;
|
|
18
|
+
const settings = new SettingsStore(db);
|
|
18
19
|
return {
|
|
19
20
|
accessToken,
|
|
20
21
|
workspaceGid: settings.get(ASANA_CONFIG_KEYS.workspaceGid) ?? undefined,
|
|
@@ -24,7 +25,7 @@ export function loadAsanaConfig(db) {
|
|
|
24
25
|
};
|
|
25
26
|
}
|
|
26
27
|
export function saveAsanaAccessToken(db, accessToken) {
|
|
27
|
-
|
|
28
|
+
setCredential(db, ASANA_CONFIG_KEYS.accessToken, accessToken);
|
|
28
29
|
}
|
|
29
30
|
export function saveAsanaWorkspace(db, workspaceGid, workspaceName) {
|
|
30
31
|
const settings = new SettingsStore(db);
|
|
@@ -39,7 +40,12 @@ export function saveAsanaProject(db, projectGid, projectName) {
|
|
|
39
40
|
export function clearAsanaConfig(db) {
|
|
40
41
|
const settings = new SettingsStore(db);
|
|
41
42
|
for (const key of Object.values(ASANA_CONFIG_KEYS)) {
|
|
42
|
-
|
|
43
|
+
if (key === ASANA_CONFIG_KEYS.accessToken) {
|
|
44
|
+
deleteCredential(db, key);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
settings.delete(key);
|
|
48
|
+
}
|
|
43
49
|
}
|
|
44
50
|
}
|
|
45
51
|
export function getAsanaAccessToken(db) {
|
|
@@ -61,7 +67,7 @@ export function getAsanaAccessToken(db) {
|
|
|
61
67
|
const envToken = process.env.PRLT_ASANA_ACCESS_TOKEN || process.env.ASANA_ACCESS_TOKEN;
|
|
62
68
|
if (envToken)
|
|
63
69
|
return envToken;
|
|
64
|
-
// 3. Legacy: stored workspace setting
|
|
65
|
-
return
|
|
70
|
+
// 3. Legacy: stored workspace setting (now in credentials.db)
|
|
71
|
+
return getCredential(db, ASANA_CONFIG_KEYS.accessToken);
|
|
66
72
|
}
|
|
67
73
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/asana/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/asana/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClickUp API Client
|
|
3
|
+
*
|
|
4
|
+
* REST wrapper for ClickUp API v2 access.
|
|
5
|
+
* Provides typed access to tasks, lists, spaces, and statuses for the PMO integration.
|
|
6
|
+
*/
|
|
7
|
+
import type { ClickUpTask, ClickUpSpace, ClickUpList, ClickUpStatus } from './types.js';
|
|
8
|
+
export declare class ClickUpClient {
|
|
9
|
+
private apiKey;
|
|
10
|
+
constructor(apiKey: string);
|
|
11
|
+
private request;
|
|
12
|
+
/**
|
|
13
|
+
* Verify the API key is valid and return the authenticated user info.
|
|
14
|
+
*/
|
|
15
|
+
verify(): Promise<{
|
|
16
|
+
userName: string;
|
|
17
|
+
email: string;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
* List teams (workspaces) accessible to the authenticated user.
|
|
21
|
+
*/
|
|
22
|
+
listTeams(): Promise<Array<{
|
|
23
|
+
id: string;
|
|
24
|
+
name: string;
|
|
25
|
+
}>>;
|
|
26
|
+
/**
|
|
27
|
+
* Get a task by ID.
|
|
28
|
+
*/
|
|
29
|
+
getTask(taskId: string): Promise<ClickUpTask>;
|
|
30
|
+
/**
|
|
31
|
+
* Update a task's status.
|
|
32
|
+
*/
|
|
33
|
+
updateTaskStatus(taskId: string, status: string): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Update a task's fields (name, description, priority, assignees).
|
|
36
|
+
*/
|
|
37
|
+
updateTask(taskId: string, input: {
|
|
38
|
+
name?: string;
|
|
39
|
+
description?: string;
|
|
40
|
+
priority?: number | null;
|
|
41
|
+
status?: string;
|
|
42
|
+
}): Promise<ClickUpTask>;
|
|
43
|
+
/**
|
|
44
|
+
* Add a comment to a task.
|
|
45
|
+
*/
|
|
46
|
+
addComment(taskId: string, commentText: string): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Create a new task in a list.
|
|
49
|
+
*/
|
|
50
|
+
createTask(listId: string, input: {
|
|
51
|
+
name: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
priority?: number | null;
|
|
54
|
+
status?: string;
|
|
55
|
+
tags?: string[];
|
|
56
|
+
}): Promise<ClickUpTask>;
|
|
57
|
+
/**
|
|
58
|
+
* List tasks in a list with optional filters.
|
|
59
|
+
*/
|
|
60
|
+
listTasks(listId: string, options?: {
|
|
61
|
+
statuses?: string[];
|
|
62
|
+
assignees?: string[];
|
|
63
|
+
page?: number;
|
|
64
|
+
}): Promise<ClickUpTask[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Get statuses for a list.
|
|
67
|
+
*/
|
|
68
|
+
getListStatuses(listId: string): Promise<ClickUpStatus[]>;
|
|
69
|
+
/**
|
|
70
|
+
* Get a list by ID.
|
|
71
|
+
*/
|
|
72
|
+
getList(listId: string): Promise<ClickUpList>;
|
|
73
|
+
/**
|
|
74
|
+
* Get spaces for a team/workspace.
|
|
75
|
+
*/
|
|
76
|
+
listSpaces(teamId: string): Promise<ClickUpSpace[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Delete (trash) a task.
|
|
79
|
+
*/
|
|
80
|
+
deleteTask(taskId: string): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Assign a user to a task by adding them to the assignees list.
|
|
83
|
+
*/
|
|
84
|
+
addAssignee(taskId: string, assigneeId: number): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Find a workspace member by email.
|
|
87
|
+
*/
|
|
88
|
+
findMemberByEmail(teamId: string, email: string): Promise<{
|
|
89
|
+
id: number;
|
|
90
|
+
username: string;
|
|
91
|
+
} | null>;
|
|
92
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClickUp API Client
|
|
3
|
+
*
|
|
4
|
+
* REST wrapper for ClickUp API v2 access.
|
|
5
|
+
* Provides typed access to tasks, lists, spaces, and statuses for the PMO integration.
|
|
6
|
+
*/
|
|
7
|
+
const CLICKUP_API_URL = 'https://api.clickup.com/api/v2';
|
|
8
|
+
export class ClickUpClient {
|
|
9
|
+
apiKey;
|
|
10
|
+
constructor(apiKey) {
|
|
11
|
+
this.apiKey = apiKey;
|
|
12
|
+
}
|
|
13
|
+
async request(method, path, body) {
|
|
14
|
+
const url = `${CLICKUP_API_URL}${path}`;
|
|
15
|
+
const options = {
|
|
16
|
+
method,
|
|
17
|
+
headers: {
|
|
18
|
+
'Content-Type': 'application/json',
|
|
19
|
+
Authorization: this.apiKey,
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
if (body !== undefined) {
|
|
23
|
+
options.body = JSON.stringify(body);
|
|
24
|
+
}
|
|
25
|
+
const response = await fetch(url, options);
|
|
26
|
+
if (!response.ok) {
|
|
27
|
+
const text = await response.text().catch(() => '');
|
|
28
|
+
throw new Error(`ClickUp API ${method} ${path} failed with status ${response.status}: ${text}`);
|
|
29
|
+
}
|
|
30
|
+
return (await response.json());
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Verify the API key is valid and return the authenticated user info.
|
|
34
|
+
*/
|
|
35
|
+
async verify() {
|
|
36
|
+
const data = await this.request('GET', '/user');
|
|
37
|
+
return {
|
|
38
|
+
userName: data.user.username,
|
|
39
|
+
email: data.user.email,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* List teams (workspaces) accessible to the authenticated user.
|
|
44
|
+
*/
|
|
45
|
+
async listTeams() {
|
|
46
|
+
const data = await this.request('GET', '/team');
|
|
47
|
+
return data.teams;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get a task by ID.
|
|
51
|
+
*/
|
|
52
|
+
async getTask(taskId) {
|
|
53
|
+
return this.request('GET', `/task/${taskId}?include_subtasks=true`);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Update a task's status.
|
|
57
|
+
*/
|
|
58
|
+
async updateTaskStatus(taskId, status) {
|
|
59
|
+
await this.request('PUT', `/task/${taskId}`, { status });
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Update a task's fields (name, description, priority, assignees).
|
|
63
|
+
*/
|
|
64
|
+
async updateTask(taskId, input) {
|
|
65
|
+
return this.request('PUT', `/task/${taskId}`, input);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Add a comment to a task.
|
|
69
|
+
*/
|
|
70
|
+
async addComment(taskId, commentText) {
|
|
71
|
+
await this.request('POST', `/task/${taskId}/comment`, {
|
|
72
|
+
comment_text: commentText,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Create a new task in a list.
|
|
77
|
+
*/
|
|
78
|
+
async createTask(listId, input) {
|
|
79
|
+
return this.request('POST', `/list/${listId}/task`, input);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* List tasks in a list with optional filters.
|
|
83
|
+
*/
|
|
84
|
+
async listTasks(listId, options) {
|
|
85
|
+
const params = new URLSearchParams();
|
|
86
|
+
if (options?.statuses) {
|
|
87
|
+
for (const s of options.statuses) {
|
|
88
|
+
params.append('statuses[]', s);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (options?.assignees) {
|
|
92
|
+
for (const a of options.assignees) {
|
|
93
|
+
params.append('assignees[]', a);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (options?.page !== undefined) {
|
|
97
|
+
params.set('page', String(options.page));
|
|
98
|
+
}
|
|
99
|
+
const qs = params.toString();
|
|
100
|
+
const path = `/list/${listId}/task${qs ? `?${qs}` : ''}`;
|
|
101
|
+
const data = await this.request('GET', path);
|
|
102
|
+
return data.tasks;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get statuses for a list.
|
|
106
|
+
*/
|
|
107
|
+
async getListStatuses(listId) {
|
|
108
|
+
const data = await this.request('GET', `/list/${listId}`);
|
|
109
|
+
return data.statuses;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get a list by ID.
|
|
113
|
+
*/
|
|
114
|
+
async getList(listId) {
|
|
115
|
+
return this.request('GET', `/list/${listId}`);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get spaces for a team/workspace.
|
|
119
|
+
*/
|
|
120
|
+
async listSpaces(teamId) {
|
|
121
|
+
const data = await this.request('GET', `/team/${teamId}/space?archived=false`);
|
|
122
|
+
return data.spaces;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Delete (trash) a task.
|
|
126
|
+
*/
|
|
127
|
+
async deleteTask(taskId) {
|
|
128
|
+
await this.request('DELETE', `/task/${taskId}`);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Assign a user to a task by adding them to the assignees list.
|
|
132
|
+
*/
|
|
133
|
+
async addAssignee(taskId, assigneeId) {
|
|
134
|
+
// ClickUp uses a separate endpoint for managing assignees
|
|
135
|
+
await this.request('POST', `/task/${taskId}`, {
|
|
136
|
+
assignees: { add: [assigneeId] },
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Find a workspace member by email.
|
|
141
|
+
*/
|
|
142
|
+
async findMemberByEmail(teamId, email) {
|
|
143
|
+
// ClickUp doesn't have a direct user-by-email endpoint.
|
|
144
|
+
// We list team members and filter.
|
|
145
|
+
const data = await this.request('GET', `/team/${teamId}`);
|
|
146
|
+
const member = data.members?.find((m) => m.user.email.toLowerCase() === email.toLowerCase());
|
|
147
|
+
return member ? { id: member.user.id, username: member.user.username } : null;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/clickup/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClickUp Configuration Storage
|
|
3
|
+
*
|
|
4
|
+
* Stores ClickUp credentials and preferences in the workspace_settings table.
|
|
5
|
+
*/
|
|
6
|
+
import type Database from 'better-sqlite3';
|
|
7
|
+
import type { ClickUpConfig } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Check if ClickUp is configured (API key is stored).
|
|
10
|
+
*/
|
|
11
|
+
export declare function isClickUpConfigured(db: Database.Database): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Load ClickUp configuration from the database.
|
|
14
|
+
* Returns null if not configured.
|
|
15
|
+
*/
|
|
16
|
+
export declare function loadClickUpConfig(db: Database.Database): ClickUpConfig | null;
|
|
17
|
+
/**
|
|
18
|
+
* Save ClickUp API key to the database.
|
|
19
|
+
*/
|
|
20
|
+
export declare function saveClickUpApiKey(db: Database.Database, apiKey: string): void;
|
|
21
|
+
/**
|
|
22
|
+
* Save the default list for ClickUp operations.
|
|
23
|
+
*/
|
|
24
|
+
export declare function saveClickUpDefaultList(db: Database.Database, listId: string, listName: string): void;
|
|
25
|
+
/**
|
|
26
|
+
* Save the workspace name.
|
|
27
|
+
*/
|
|
28
|
+
export declare function saveClickUpWorkspace(db: Database.Database, name: string): void;
|
|
29
|
+
/**
|
|
30
|
+
* Clear all ClickUp configuration from the database.
|
|
31
|
+
*/
|
|
32
|
+
export declare function clearClickUpConfig(db: Database.Database): void;
|
|
33
|
+
/**
|
|
34
|
+
* Get the ClickUp API key using the provider-sources resolution chain.
|
|
35
|
+
*
|
|
36
|
+
* Resolution order:
|
|
37
|
+
* 1. If a ClickUp provider source is configured, resolve its apiKeyRef
|
|
38
|
+
* 2. Legacy fallback: PRLT_CLICKUP_API_KEY or CLICKUP_API_KEY environment variables
|
|
39
|
+
* 3. Legacy fallback: workspace_settings key 'clickup.api_key'
|
|
40
|
+
*/
|
|
41
|
+
export declare function getClickUpApiKey(db: Database.Database): string | null;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClickUp Configuration Storage
|
|
3
|
+
*
|
|
4
|
+
* Stores ClickUp credentials and preferences in the workspace_settings table.
|
|
5
|
+
*/
|
|
6
|
+
import { loadProviderSources, resolveApiKey } from '../work-source/provider-sources.js';
|
|
7
|
+
import { SettingsStore } from '../database/settings-store.js';
|
|
8
|
+
import { getCredential, setCredential, deleteCredential, hasCredential } from '../database/credential-store.js';
|
|
9
|
+
const CLICKUP_CONFIG_KEYS = {
|
|
10
|
+
apiKey: 'clickup.api_key',
|
|
11
|
+
defaultListId: 'clickup.default_list_id',
|
|
12
|
+
defaultListName: 'clickup.default_list_name',
|
|
13
|
+
workspaceName: 'clickup.workspace_name',
|
|
14
|
+
};
|
|
15
|
+
// =============================================================================
|
|
16
|
+
// Public API
|
|
17
|
+
// =============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Check if ClickUp is configured (API key is stored).
|
|
20
|
+
*/
|
|
21
|
+
export function isClickUpConfigured(db) {
|
|
22
|
+
return hasCredential(db, CLICKUP_CONFIG_KEYS.apiKey);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Load ClickUp configuration from the database.
|
|
26
|
+
* Returns null if not configured.
|
|
27
|
+
*/
|
|
28
|
+
export function loadClickUpConfig(db) {
|
|
29
|
+
const apiKey = getCredential(db, CLICKUP_CONFIG_KEYS.apiKey);
|
|
30
|
+
if (!apiKey)
|
|
31
|
+
return null;
|
|
32
|
+
const settings = new SettingsStore(db);
|
|
33
|
+
return {
|
|
34
|
+
apiKey,
|
|
35
|
+
defaultListId: settings.get(CLICKUP_CONFIG_KEYS.defaultListId) ?? undefined,
|
|
36
|
+
defaultListName: settings.get(CLICKUP_CONFIG_KEYS.defaultListName) ?? undefined,
|
|
37
|
+
workspaceName: settings.get(CLICKUP_CONFIG_KEYS.workspaceName) ?? undefined,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Save ClickUp API key to the database.
|
|
42
|
+
*/
|
|
43
|
+
export function saveClickUpApiKey(db, apiKey) {
|
|
44
|
+
setCredential(db, CLICKUP_CONFIG_KEYS.apiKey, apiKey);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Save the default list for ClickUp operations.
|
|
48
|
+
*/
|
|
49
|
+
export function saveClickUpDefaultList(db, listId, listName) {
|
|
50
|
+
const settings = new SettingsStore(db);
|
|
51
|
+
settings.set(CLICKUP_CONFIG_KEYS.defaultListId, listId);
|
|
52
|
+
settings.set(CLICKUP_CONFIG_KEYS.defaultListName, listName);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Save the workspace name.
|
|
56
|
+
*/
|
|
57
|
+
export function saveClickUpWorkspace(db, name) {
|
|
58
|
+
new SettingsStore(db).set(CLICKUP_CONFIG_KEYS.workspaceName, name);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Clear all ClickUp configuration from the database.
|
|
62
|
+
*/
|
|
63
|
+
export function clearClickUpConfig(db) {
|
|
64
|
+
const settings = new SettingsStore(db);
|
|
65
|
+
for (const key of Object.values(CLICKUP_CONFIG_KEYS)) {
|
|
66
|
+
if (key === CLICKUP_CONFIG_KEYS.apiKey) {
|
|
67
|
+
deleteCredential(db, key);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
settings.delete(key);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get the ClickUp API key using the provider-sources resolution chain.
|
|
76
|
+
*
|
|
77
|
+
* Resolution order:
|
|
78
|
+
* 1. If a ClickUp provider source is configured, resolve its apiKeyRef
|
|
79
|
+
* 2. Legacy fallback: PRLT_CLICKUP_API_KEY or CLICKUP_API_KEY environment variables
|
|
80
|
+
* 3. Legacy fallback: workspace_settings key 'clickup.api_key'
|
|
81
|
+
*/
|
|
82
|
+
export function getClickUpApiKey(db) {
|
|
83
|
+
// 1. Try provider sources (supports custom apiKeyRef per source)
|
|
84
|
+
try {
|
|
85
|
+
const sources = loadProviderSources(db);
|
|
86
|
+
for (const source of sources) {
|
|
87
|
+
if (source.provider === 'clickup') {
|
|
88
|
+
const key = resolveApiKey(db, source);
|
|
89
|
+
if (key)
|
|
90
|
+
return key;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Provider sources table may not exist in older databases
|
|
96
|
+
}
|
|
97
|
+
// 2. Legacy: environment variables
|
|
98
|
+
const envKey = process.env.PRLT_CLICKUP_API_KEY || process.env.CLICKUP_API_KEY;
|
|
99
|
+
if (envKey)
|
|
100
|
+
return envKey;
|
|
101
|
+
// 3. Legacy: stored workspace setting (now in credentials.db)
|
|
102
|
+
return getCredential(db, CLICKUP_CONFIG_KEYS.apiKey);
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/clickup/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ClickUpClient } from './client.js';
|
|
2
|
+
export { isClickUpConfigured, loadClickUpConfig, saveClickUpApiKey, saveClickUpDefaultList, saveClickUpWorkspace, clearClickUpConfig, getClickUpApiKey, } from './config.js';
|
|
3
|
+
export type { ClickUpConfig, ClickUpTask, ClickUpStatus, ClickUpSpace, ClickUpList, } from './types.js';
|
|
4
|
+
export { CLICKUP_PRIORITY_TO_PMO, PMO_PRIORITY_TO_CLICKUP, CLICKUP_STATUS_TYPE_TO_PMO_CATEGORY, } from './types.js';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ClickUpClient } from './client.js';
|
|
2
|
+
export { isClickUpConfigured, loadClickUpConfig, saveClickUpApiKey, saveClickUpDefaultList, saveClickUpWorkspace, clearClickUpConfig, getClickUpApiKey, } from './config.js';
|
|
3
|
+
export { CLICKUP_PRIORITY_TO_PMO, PMO_PRIORITY_TO_CLICKUP, CLICKUP_STATUS_TYPE_TO_PMO_CATEGORY, } from './types.js';
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/clickup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAA;AAQpB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,mCAAmC,GACpC,MAAM,YAAY,CAAA"}
|