@proletariat/cli 0.2.0 → 0.3.1
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/README.md +561 -251
- package/bin/dev.cmd +3 -0
- package/bin/dev.js +5 -0
- package/bin/run.cmd +3 -0
- package/bin/run.js +23 -0
- package/dist/commands/action/create.d.ts +21 -0
- package/dist/commands/action/create.js +126 -0
- package/dist/commands/action/delete.d.ts +17 -0
- package/dist/commands/action/delete.js +78 -0
- package/dist/commands/action/index.d.ts +15 -0
- package/dist/commands/action/index.js +107 -0
- package/dist/commands/action/list.d.ts +14 -0
- package/dist/commands/action/list.js +89 -0
- package/dist/commands/action/run.d.ts +19 -0
- package/dist/commands/action/run.js +179 -0
- package/dist/commands/action/show.d.ts +15 -0
- package/dist/commands/action/show.js +47 -0
- package/dist/commands/action/update.d.ts +22 -0
- package/dist/commands/action/update.js +168 -0
- package/dist/commands/agent/index.d.ts +13 -0
- package/dist/commands/agent/index.js +131 -0
- package/dist/commands/agent/list.d.ts +7 -0
- package/dist/commands/agent/list.js +126 -0
- package/dist/commands/agent/login.d.ts +16 -0
- package/dist/commands/agent/login.js +146 -0
- package/dist/commands/agent/rebuild.d.ts +18 -0
- package/dist/commands/agent/rebuild.js +133 -0
- package/dist/commands/agent/restart.d.ts +17 -0
- package/dist/commands/agent/restart.js +116 -0
- package/dist/commands/agent/shell.d.ts +23 -0
- package/dist/commands/agent/shell.js +378 -0
- package/dist/commands/agent/staff/add.d.ts +15 -0
- package/dist/commands/agent/staff/add.js +281 -0
- package/dist/commands/agent/staff/index.d.ts +14 -0
- package/dist/commands/agent/staff/index.js +90 -0
- package/dist/commands/agent/staff/list.d.ts +7 -0
- package/dist/commands/agent/staff/list.js +90 -0
- package/dist/commands/agent/staff/remove.d.ts +16 -0
- package/dist/commands/agent/staff/remove.js +137 -0
- package/dist/commands/agent/status.d.ts +17 -0
- package/dist/commands/agent/status.js +139 -0
- package/dist/commands/agent/temp/cleanup.d.ts +23 -0
- package/dist/commands/agent/temp/cleanup.js +388 -0
- package/dist/commands/agent/temp/index.d.ts +14 -0
- package/dist/commands/agent/temp/index.js +82 -0
- package/dist/commands/agent/temp/list.d.ts +7 -0
- package/dist/commands/agent/temp/list.js +108 -0
- package/dist/commands/agent/themes/add-names.d.ts +10 -0
- package/dist/commands/agent/themes/add-names.js +67 -0
- package/dist/commands/agent/themes/create.d.ts +13 -0
- package/dist/commands/agent/themes/create.js +66 -0
- package/dist/commands/agent/themes/index.d.ts +9 -0
- package/dist/commands/agent/themes/index.js +194 -0
- package/dist/commands/agent/themes/list.d.ts +6 -0
- package/dist/commands/agent/themes/list.js +41 -0
- package/dist/commands/agent/themes/set.d.ts +12 -0
- package/dist/commands/agent/themes/set.js +77 -0
- package/dist/commands/agent/visit.d.ts +16 -0
- package/dist/commands/agent/visit.js +88 -0
- package/dist/commands/autocomplete/setup.d.ts +14 -0
- package/dist/commands/autocomplete/setup.js +154 -0
- package/dist/commands/board/index.d.ts +17 -0
- package/dist/commands/board/index.js +255 -0
- package/dist/commands/board/watch.d.ts +13 -0
- package/dist/commands/board/watch.js +52 -0
- package/dist/commands/branch/create.d.ts +50 -0
- package/dist/commands/branch/create.js +624 -0
- package/dist/commands/branch/index.d.ts +13 -0
- package/dist/commands/branch/index.js +50 -0
- package/dist/commands/branch/list.d.ts +17 -0
- package/dist/commands/branch/list.js +120 -0
- package/dist/commands/branch/validate.d.ts +15 -0
- package/dist/commands/branch/validate.js +73 -0
- package/dist/commands/commit.d.ts +71 -0
- package/dist/commands/commit.js +499 -0
- package/dist/commands/docker/clean.d.ts +13 -0
- package/dist/commands/docker/clean.js +224 -0
- package/dist/commands/docker/index.d.ts +19 -0
- package/dist/commands/docker/index.js +274 -0
- package/dist/commands/docker/list.d.ts +16 -0
- package/dist/commands/docker/list.js +200 -0
- package/dist/commands/docker/logs.d.ts +14 -0
- package/dist/commands/docker/logs.js +118 -0
- package/dist/commands/docker/prune.d.ts +14 -0
- package/dist/commands/docker/prune.js +211 -0
- package/dist/commands/docker/restart.d.ts +14 -0
- package/dist/commands/docker/restart.js +129 -0
- package/dist/commands/docker/shell.d.ts +14 -0
- package/dist/commands/docker/shell.js +103 -0
- package/dist/commands/docker/start.d.ts +12 -0
- package/dist/commands/docker/start.js +92 -0
- package/dist/commands/docker/status.d.ts +7 -0
- package/dist/commands/docker/status.js +40 -0
- package/dist/commands/docker/stop.d.ts +14 -0
- package/dist/commands/docker/stop.js +134 -0
- package/dist/commands/docker/sync.d.ts +15 -0
- package/dist/commands/docker/sync.js +112 -0
- package/dist/commands/epic/activate.d.ts +13 -0
- package/dist/commands/epic/activate.js +118 -0
- package/dist/commands/epic/archive.d.ts +14 -0
- package/dist/commands/epic/archive.js +132 -0
- package/dist/commands/epic/create.d.ts +15 -0
- package/dist/commands/epic/create.js +137 -0
- package/dist/commands/epic/index.d.ts +13 -0
- package/dist/commands/epic/index.js +88 -0
- package/dist/commands/epic/link/block.d.ts +14 -0
- package/dist/commands/epic/link/block.js +79 -0
- package/dist/commands/epic/link/duplicates.d.ts +14 -0
- package/dist/commands/epic/link/duplicates.js +66 -0
- package/dist/commands/epic/link/index.d.ts +19 -0
- package/dist/commands/epic/link/index.js +242 -0
- package/dist/commands/epic/link/relates.d.ts +14 -0
- package/dist/commands/epic/link/relates.js +66 -0
- package/dist/commands/epic/link/remove.d.ts +16 -0
- package/dist/commands/epic/link/remove.js +89 -0
- package/dist/commands/epic/list.d.ts +11 -0
- package/dist/commands/epic/list.js +87 -0
- package/dist/commands/epic/move.d.ts +15 -0
- package/dist/commands/epic/move.js +184 -0
- package/dist/commands/epic/progress.d.ts +16 -0
- package/dist/commands/epic/progress.js +166 -0
- package/dist/commands/epic/project.d.ts +15 -0
- package/dist/commands/epic/project.js +219 -0
- package/dist/commands/epic/reorder.d.ts +21 -0
- package/dist/commands/epic/reorder.js +160 -0
- package/dist/commands/epic/spec.d.ts +15 -0
- package/dist/commands/epic/spec.js +191 -0
- package/dist/commands/epic/ticket.d.ts +18 -0
- package/dist/commands/epic/ticket.js +291 -0
- package/dist/commands/epic/view.d.ts +13 -0
- package/dist/commands/epic/view.js +117 -0
- package/dist/commands/execution/index.d.ts +13 -0
- package/dist/commands/execution/index.js +70 -0
- package/dist/commands/execution/list.d.ts +15 -0
- package/dist/commands/execution/list.js +144 -0
- package/dist/commands/execution/logs.d.ts +18 -0
- package/dist/commands/execution/logs.js +161 -0
- package/dist/commands/execution/stop.d.ts +22 -0
- package/dist/commands/execution/stop.js +248 -0
- package/dist/commands/gh/index.d.ts +9 -0
- package/dist/commands/gh/index.js +53 -0
- package/dist/commands/gh/login.d.ts +6 -0
- package/dist/commands/gh/login.js +57 -0
- package/dist/commands/gh/status.d.ts +6 -0
- package/dist/commands/gh/status.js +48 -0
- package/dist/commands/gh/token.d.ts +6 -0
- package/dist/commands/gh/token.js +59 -0
- package/dist/commands/init.d.ts +26 -0
- package/dist/commands/init.js +200 -0
- package/dist/commands/phase/create.d.ts +22 -0
- package/dist/commands/phase/create.js +123 -0
- package/dist/commands/phase/delete.d.ts +17 -0
- package/dist/commands/phase/delete.js +73 -0
- package/dist/commands/phase/list.d.ts +12 -0
- package/dist/commands/phase/list.js +76 -0
- package/dist/commands/phase/move.d.ts +17 -0
- package/dist/commands/phase/move.js +115 -0
- package/dist/commands/phase/template/apply.d.ts +17 -0
- package/dist/commands/phase/template/apply.js +106 -0
- package/dist/commands/phase/template/create.d.ts +16 -0
- package/dist/commands/phase/template/create.js +58 -0
- package/dist/commands/phase/template/delete.d.ts +17 -0
- package/dist/commands/phase/template/delete.js +98 -0
- package/dist/commands/phase/template/index.d.ts +15 -0
- package/dist/commands/phase/template/index.js +128 -0
- package/dist/commands/phase/template/list.d.ts +16 -0
- package/dist/commands/phase/template/list.js +95 -0
- package/dist/commands/phase/template/update.d.ts +17 -0
- package/dist/commands/phase/template/update.js +89 -0
- package/dist/commands/phase/update.d.ts +23 -0
- package/dist/commands/phase/update.js +174 -0
- package/dist/commands/pmo/init.d.ts +25 -0
- package/dist/commands/pmo/init.js +341 -0
- package/dist/commands/pr/create.d.ts +17 -0
- package/dist/commands/pr/create.js +242 -0
- package/dist/commands/pr/index.d.ts +9 -0
- package/dist/commands/pr/index.js +68 -0
- package/dist/commands/pr/link.d.ts +14 -0
- package/dist/commands/pr/link.js +212 -0
- package/dist/commands/pr/status.d.ts +12 -0
- package/dist/commands/pr/status.js +161 -0
- package/dist/commands/project/archive.d.ts +17 -0
- package/dist/commands/project/archive.js +83 -0
- package/dist/commands/project/create.d.ts +22 -0
- package/dist/commands/project/create.js +143 -0
- package/dist/commands/project/delete.d.ts +17 -0
- package/dist/commands/project/delete.js +128 -0
- package/dist/commands/project/index.d.ts +13 -0
- package/dist/commands/project/index.js +64 -0
- package/dist/commands/project/list.d.ts +14 -0
- package/dist/commands/project/list.js +96 -0
- package/dist/commands/project/spec.d.ts +18 -0
- package/dist/commands/project/spec.js +216 -0
- package/dist/commands/project/unarchive.d.ts +15 -0
- package/dist/commands/project/unarchive.js +35 -0
- package/dist/commands/project/view.d.ts +16 -0
- package/dist/commands/project/view.js +94 -0
- package/dist/commands/repo/add.d.ts +21 -0
- package/dist/commands/repo/add.js +118 -0
- package/dist/commands/repo/index.d.ts +13 -0
- package/dist/commands/repo/index.js +114 -0
- package/dist/commands/repo/list.d.ts +13 -0
- package/dist/commands/repo/list.js +96 -0
- package/dist/commands/repo/remove.d.ts +23 -0
- package/dist/commands/repo/remove.js +217 -0
- package/dist/commands/repo/view.d.ts +15 -0
- package/dist/commands/repo/view.js +99 -0
- package/dist/commands/session/attach.d.ts +40 -0
- package/dist/commands/session/attach.js +307 -0
- package/dist/commands/session/index.d.ts +13 -0
- package/dist/commands/session/index.js +64 -0
- package/dist/commands/session/list.d.ts +21 -0
- package/dist/commands/session/list.js +181 -0
- package/dist/commands/spec/create.d.ts +19 -0
- package/dist/commands/spec/create.js +130 -0
- package/dist/commands/spec/index.d.ts +13 -0
- package/dist/commands/spec/index.js +68 -0
- package/dist/commands/spec/link/depends.d.ts +14 -0
- package/dist/commands/spec/link/depends.js +64 -0
- package/dist/commands/spec/link/duplicates.d.ts +14 -0
- package/dist/commands/spec/link/duplicates.js +63 -0
- package/dist/commands/spec/link/index.d.ts +19 -0
- package/dist/commands/spec/link/index.js +200 -0
- package/dist/commands/spec/link/relates.d.ts +14 -0
- package/dist/commands/spec/link/relates.js +63 -0
- package/dist/commands/spec/link/remove.d.ts +16 -0
- package/dist/commands/spec/link/remove.js +94 -0
- package/dist/commands/spec/list.d.ts +12 -0
- package/dist/commands/spec/list.js +75 -0
- package/dist/commands/spec/plan.d.ts +15 -0
- package/dist/commands/spec/plan.js +108 -0
- package/dist/commands/spec/ticket.d.ts +18 -0
- package/dist/commands/spec/ticket.js +160 -0
- package/dist/commands/spec/view.d.ts +15 -0
- package/dist/commands/spec/view.js +163 -0
- package/dist/commands/status/create.d.ts +21 -0
- package/dist/commands/status/create.js +140 -0
- package/dist/commands/status/delete.d.ts +13 -0
- package/dist/commands/status/delete.js +77 -0
- package/dist/commands/status/index.d.ts +14 -0
- package/dist/commands/status/index.js +91 -0
- package/dist/commands/status/list.d.ts +12 -0
- package/dist/commands/status/list.js +93 -0
- package/dist/commands/status/move.d.ts +14 -0
- package/dist/commands/status/move.js +120 -0
- package/dist/commands/status/update.d.ts +20 -0
- package/dist/commands/status/update.js +180 -0
- package/dist/commands/template/delete.d.ts +15 -0
- package/dist/commands/template/delete.js +142 -0
- package/dist/commands/template/index.d.ts +10 -0
- package/dist/commands/template/index.js +64 -0
- package/dist/commands/template/list.d.ts +18 -0
- package/dist/commands/template/list.js +157 -0
- package/dist/commands/template/phase/apply.d.ts +14 -0
- package/dist/commands/template/phase/apply.js +41 -0
- package/dist/commands/template/phase/create.d.ts +12 -0
- package/dist/commands/template/phase/create.js +29 -0
- package/dist/commands/template/phase/delete.d.ts +13 -0
- package/dist/commands/template/phase/delete.js +34 -0
- package/dist/commands/template/phase/index.d.ts +10 -0
- package/dist/commands/template/phase/index.js +62 -0
- package/dist/commands/template/phase/list.d.ts +11 -0
- package/dist/commands/template/phase/list.js +34 -0
- package/dist/commands/template/phase/update.d.ts +13 -0
- package/dist/commands/template/phase/update.js +35 -0
- package/dist/commands/template/ticket/apply.d.ts +17 -0
- package/dist/commands/template/ticket/apply.js +58 -0
- package/dist/commands/template/ticket/delete.d.ts +13 -0
- package/dist/commands/template/ticket/delete.js +34 -0
- package/dist/commands/template/ticket/index.d.ts +10 -0
- package/dist/commands/template/ticket/index.js +62 -0
- package/dist/commands/template/ticket/list.d.ts +11 -0
- package/dist/commands/template/ticket/list.js +34 -0
- package/dist/commands/template/ticket/save.d.ts +13 -0
- package/dist/commands/template/ticket/save.js +35 -0
- package/dist/commands/ticket/bulk.d.ts +13 -0
- package/dist/commands/ticket/bulk.js +145 -0
- package/dist/commands/ticket/complete.d.ts +16 -0
- package/dist/commands/ticket/complete.js +170 -0
- package/dist/commands/ticket/create.d.ts +22 -0
- package/dist/commands/ticket/create.js +390 -0
- package/dist/commands/ticket/delete.d.ts +16 -0
- package/dist/commands/ticket/delete.js +178 -0
- package/dist/commands/ticket/edit.d.ts +27 -0
- package/dist/commands/ticket/edit.js +322 -0
- package/dist/commands/ticket/epic.d.ts +20 -0
- package/dist/commands/ticket/epic.js +333 -0
- package/dist/commands/ticket/index.d.ts +13 -0
- package/dist/commands/ticket/index.js +103 -0
- package/dist/commands/ticket/link/block.d.ts +14 -0
- package/dist/commands/ticket/link/block.js +94 -0
- package/dist/commands/ticket/link/duplicates.d.ts +14 -0
- package/dist/commands/ticket/link/duplicates.js +93 -0
- package/dist/commands/ticket/link/index.d.ts +19 -0
- package/dist/commands/ticket/link/index.js +239 -0
- package/dist/commands/ticket/link/relates.d.ts +14 -0
- package/dist/commands/ticket/link/relates.js +93 -0
- package/dist/commands/ticket/link/remove.d.ts +16 -0
- package/dist/commands/ticket/link/remove.js +128 -0
- package/dist/commands/ticket/list.d.ts +24 -0
- package/dist/commands/ticket/list.js +431 -0
- package/dist/commands/ticket/move.d.ts +18 -0
- package/dist/commands/ticket/move.js +212 -0
- package/dist/commands/ticket/project.d.ts +18 -0
- package/dist/commands/ticket/project.js +254 -0
- package/dist/commands/ticket/reassign.d.ts +19 -0
- package/dist/commands/ticket/reassign.js +279 -0
- package/dist/commands/ticket/spec.d.ts +18 -0
- package/dist/commands/ticket/spec.js +259 -0
- package/dist/commands/ticket/status.d.ts +13 -0
- package/dist/commands/ticket/status.js +87 -0
- package/dist/commands/ticket/template/apply.d.ts +25 -0
- package/dist/commands/ticket/template/apply.js +249 -0
- package/dist/commands/ticket/template/create.d.ts +19 -0
- package/dist/commands/ticket/template/create.js +210 -0
- package/dist/commands/ticket/template/delete.d.ts +17 -0
- package/dist/commands/ticket/template/delete.js +92 -0
- package/dist/commands/ticket/template/index.d.ts +15 -0
- package/dist/commands/ticket/template/index.js +118 -0
- package/dist/commands/ticket/template/list.d.ts +16 -0
- package/dist/commands/ticket/template/list.js +110 -0
- package/dist/commands/ticket/template/save.d.ts +14 -0
- package/dist/commands/ticket/template/save.js +110 -0
- package/dist/commands/ticket/update.d.ts +18 -0
- package/dist/commands/ticket/update.js +325 -0
- package/dist/commands/ticket/view.d.ts +13 -0
- package/dist/commands/ticket/view.js +80 -0
- package/dist/commands/whoami.d.ts +9 -0
- package/dist/commands/whoami.js +103 -0
- package/dist/commands/work/complete.d.ts +13 -0
- package/dist/commands/work/complete.js +121 -0
- package/dist/commands/work/index.d.ts +13 -0
- package/dist/commands/work/index.js +70 -0
- package/dist/commands/work/ready.d.ts +24 -0
- package/dist/commands/work/ready.js +290 -0
- package/dist/commands/work/revise.d.ts +19 -0
- package/dist/commands/work/revise.js +377 -0
- package/dist/commands/work/spawn-all.d.ts +17 -0
- package/dist/commands/work/spawn-all.js +58 -0
- package/dist/commands/work/spawn.d.ts +29 -0
- package/dist/commands/work/spawn.js +728 -0
- package/dist/commands/work/start.d.ts +39 -0
- package/dist/commands/work/start.js +1393 -0
- package/dist/commands/work/watch.d.ts +31 -0
- package/dist/commands/work/watch.js +359 -0
- package/dist/commands/workflow/create.d.ts +18 -0
- package/dist/commands/workflow/create.js +119 -0
- package/dist/commands/workflow/delete.d.ts +17 -0
- package/dist/commands/workflow/delete.js +119 -0
- package/dist/commands/workflow/index.d.ts +15 -0
- package/dist/commands/workflow/index.js +75 -0
- package/dist/commands/workflow/list.d.ts +15 -0
- package/dist/commands/workflow/list.js +75 -0
- package/dist/commands/workflow/switch.d.ts +13 -0
- package/dist/commands/workflow/switch.js +117 -0
- package/dist/commands/workflow/view.d.ts +16 -0
- package/dist/commands/workflow/view.js +114 -0
- package/dist/commands/workspace/add.d.ts +12 -0
- package/dist/commands/workspace/add.js +74 -0
- package/dist/commands/workspace/list.d.ts +9 -0
- package/dist/commands/workspace/list.js +153 -0
- package/dist/commands/workspace/remove.d.ts +13 -0
- package/dist/commands/workspace/remove.js +98 -0
- package/dist/commands/workspace/use.d.ts +12 -0
- package/dist/commands/workspace/use.js +111 -0
- package/dist/hooks/init.d.ts +11 -0
- package/dist/hooks/init.js +57 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/lib/agents/commands.d.ts +189 -0
- package/dist/lib/agents/commands.js +893 -0
- package/dist/lib/agents/index.d.ts +54 -0
- package/dist/lib/agents/index.js +382 -0
- package/dist/lib/branch/index.d.ts +120 -0
- package/dist/lib/branch/index.js +334 -0
- package/dist/lib/colors.d.ts +94 -0
- package/dist/lib/colors.js +68 -0
- package/dist/lib/commands/docker-command.d.ts +21 -0
- package/dist/lib/commands/docker-command.js +27 -0
- package/dist/lib/database/index.d.ts +176 -0
- package/dist/lib/database/index.js +581 -0
- package/dist/lib/docker/resolve.d.ts +38 -0
- package/dist/lib/docker/resolve.js +175 -0
- package/dist/lib/execution/config.d.ts +150 -0
- package/dist/lib/execution/config.js +541 -0
- package/dist/lib/execution/devcontainer.d.ts +85 -0
- package/dist/lib/execution/devcontainer.js +594 -0
- package/dist/lib/execution/index.d.ts +10 -0
- package/dist/lib/execution/index.js +10 -0
- package/dist/lib/execution/runners.d.ts +53 -0
- package/dist/lib/execution/runners.js +1182 -0
- package/dist/lib/execution/spawner.d.ts +85 -0
- package/dist/lib/execution/spawner.js +548 -0
- package/dist/lib/execution/storage.d.ts +159 -0
- package/dist/lib/execution/storage.js +425 -0
- package/dist/lib/execution/types.d.ts +145 -0
- package/dist/lib/execution/types.js +157 -0
- package/dist/lib/init/index.d.ts +75 -0
- package/dist/lib/init/index.js +355 -0
- package/dist/lib/machine-config.d.ts +170 -0
- package/dist/lib/machine-config.js +386 -0
- package/dist/lib/pmo/base-command.d.ts +195 -0
- package/dist/lib/pmo/base-command.js +319 -0
- package/dist/lib/pmo/create-spec-folders.d.ts +43 -0
- package/dist/lib/pmo/create-spec-folders.js +64 -0
- package/dist/lib/pmo/epic-files.d.ts +56 -0
- package/dist/lib/pmo/epic-files.js +195 -0
- package/dist/lib/pmo/find-pmo.d.ts +14 -0
- package/dist/lib/pmo/find-pmo.js +172 -0
- package/dist/lib/pmo/index.d.ts +109 -0
- package/dist/lib/pmo/index.js +501 -0
- package/dist/lib/pmo/markdown.d.ts +31 -0
- package/dist/lib/pmo/markdown.js +245 -0
- package/dist/lib/pmo/pmo-context.d.ts +27 -0
- package/dist/lib/pmo/pmo-context.js +44 -0
- package/dist/lib/pmo/schema.d.ts +82 -0
- package/dist/lib/pmo/schema.js +531 -0
- package/dist/lib/pmo/spec-parser.d.ts +25 -0
- package/dist/lib/pmo/spec-parser.js +205 -0
- package/dist/lib/pmo/spec-types.d.ts +43 -0
- package/dist/lib/pmo/spec-types.js +7 -0
- package/dist/lib/pmo/storage/actions.d.ts +34 -0
- package/dist/lib/pmo/storage/actions.js +177 -0
- package/dist/lib/pmo/storage/base.d.ts +47 -0
- package/dist/lib/pmo/storage/base.js +858 -0
- package/dist/lib/pmo/storage/dependencies.d.ts +61 -0
- package/dist/lib/pmo/storage/dependencies.js +267 -0
- package/dist/lib/pmo/storage/epics.d.ts +46 -0
- package/dist/lib/pmo/storage/epics.js +243 -0
- package/dist/lib/pmo/storage/helpers.d.ts +33 -0
- package/dist/lib/pmo/storage/helpers.js +148 -0
- package/dist/lib/pmo/storage/index.d.ts +186 -0
- package/dist/lib/pmo/storage/index.js +689 -0
- package/dist/lib/pmo/storage/phases.d.ts +65 -0
- package/dist/lib/pmo/storage/phases.js +392 -0
- package/dist/lib/pmo/storage/projects.d.ts +79 -0
- package/dist/lib/pmo/storage/projects.js +303 -0
- package/dist/lib/pmo/storage/specs.d.ts +77 -0
- package/dist/lib/pmo/storage/specs.js +389 -0
- package/dist/lib/pmo/storage/statuses.d.ts +63 -0
- package/dist/lib/pmo/storage/statuses.js +404 -0
- package/dist/lib/pmo/storage/subtasks.d.ts +37 -0
- package/dist/lib/pmo/storage/subtasks.js +184 -0
- package/dist/lib/pmo/storage/templates.d.ts +40 -0
- package/dist/lib/pmo/storage/templates.js +210 -0
- package/dist/lib/pmo/storage/tickets.d.ts +57 -0
- package/dist/lib/pmo/storage/tickets.js +453 -0
- package/dist/lib/pmo/storage/types.d.ts +200 -0
- package/dist/lib/pmo/storage/types.js +5 -0
- package/dist/lib/pmo/storage/views.d.ts +44 -0
- package/dist/lib/pmo/storage/views.js +355 -0
- package/dist/lib/pmo/storage-sqlite.d.ts +7 -0
- package/dist/lib/pmo/storage-sqlite.js +7 -0
- package/dist/lib/pmo/sync-manager.d.ts +92 -0
- package/dist/lib/pmo/sync-manager.js +229 -0
- package/dist/lib/pmo/types.d.ts +710 -0
- package/dist/lib/pmo/types.js +108 -0
- package/dist/lib/pmo/utils.d.ts +122 -0
- package/dist/lib/pmo/utils.js +174 -0
- package/dist/lib/pmo/watcher.d.ts +43 -0
- package/dist/lib/pmo/watcher.js +208 -0
- package/dist/lib/pr/index.d.ts +150 -0
- package/dist/lib/pr/index.js +483 -0
- package/dist/lib/prompt-json.d.ts +231 -0
- package/dist/lib/prompt-json.js +213 -0
- package/dist/lib/repos/index.d.ts +81 -0
- package/dist/lib/repos/index.js +679 -0
- package/dist/lib/styles.d.ts +98 -0
- package/dist/lib/styles.js +195 -0
- package/dist/lib/themes.d.ts +128 -0
- package/dist/lib/themes.js +301 -0
- package/dist/lib/ui/BoardUI.d.ts +21 -0
- package/dist/lib/ui/BoardUI.js +85 -0
- package/dist/lib/ui/ClaimTicketUI.d.ts +17 -0
- package/dist/lib/ui/ClaimTicketUI.js +64 -0
- package/dist/lib/ui/CreateTicketUI.d.ts +13 -0
- package/dist/lib/ui/CreateTicketUI.js +101 -0
- package/dist/lib/workspace.d.ts +66 -0
- package/dist/lib/workspace.js +204 -0
- package/oclif.manifest.json +10593 -0
- package/package.json +103 -56
- package/LICENSE +0 -21
- package/dist/bin/prlt.d.ts +0 -11
- package/dist/bin/prlt.d.ts.map +0 -1
- package/dist/bin/prlt.js +0 -144
- package/dist/bin/prlt.js.map +0 -1
- package/dist/lib/config/index.d.ts +0 -14
- package/dist/lib/config/index.d.ts.map +0 -1
- package/dist/lib/config/index.js +0 -142
- package/dist/lib/config/index.js.map +0 -1
- package/dist/lib/config/upgrade.d.ts +0 -2
- package/dist/lib/config/upgrade.d.ts.map +0 -1
- package/dist/lib/config/upgrade.js +0 -248
- package/dist/lib/config/upgrade.js.map +0 -1
- package/dist/lib/themes/index.d.ts +0 -8
- package/dist/lib/themes/index.d.ts.map +0 -1
- package/dist/lib/themes/index.js +0 -80
- package/dist/lib/themes/index.js.map +0 -1
- package/dist/lib/utils/helpers.d.ts +0 -4
- package/dist/lib/utils/helpers.d.ts.map +0 -1
- package/dist/lib/utils/helpers.js +0 -39
- package/dist/lib/utils/helpers.js.map +0 -1
- package/dist/lib/utils/logger.d.ts +0 -4
- package/dist/lib/utils/logger.d.ts.map +0 -1
- package/dist/lib/utils/logger.js +0 -28
- package/dist/lib/utils/logger.js.map +0 -1
- package/dist/lib/workspace/index.d.ts +0 -13
- package/dist/lib/workspace/index.d.ts.map +0 -1
- package/dist/lib/workspace/index.js +0 -116
- package/dist/lib/workspace/index.js.map +0 -1
- package/dist/lib/worktree/index.d.ts +0 -7
- package/dist/lib/worktree/index.d.ts.map +0 -1
- package/dist/lib/worktree/index.js +0 -362
- package/dist/lib/worktree/index.js.map +0 -1
- package/dist/lib/worktree/migrate.d.ts +0 -2
- package/dist/lib/worktree/migrate.d.ts.map +0 -1
- package/dist/lib/worktree/migrate.js +0 -214
- package/dist/lib/worktree/migrate.js.map +0 -1
- package/dist/lib/worktree/repair.d.ts +0 -3
- package/dist/lib/worktree/repair.d.ts.map +0 -1
- package/dist/lib/worktree/repair.js +0 -320
- package/dist/lib/worktree/repair.js.map +0 -1
- package/dist/types/index.d.ts +0 -57
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
|
@@ -0,0 +1,531 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PMO Schema - Single Source of Truth
|
|
3
|
+
*
|
|
4
|
+
* All PMO table definitions live here. Both database/index.ts and
|
|
5
|
+
* storage-sqlite.ts import from this file to ensure schema consistency.
|
|
6
|
+
*/
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// Table Names (all PMO tables use pmo_ prefix in workspace.db)
|
|
9
|
+
// =============================================================================
|
|
10
|
+
export const PMO_TABLES = {
|
|
11
|
+
projects: 'pmo_projects',
|
|
12
|
+
initiatives: 'pmo_initiatives',
|
|
13
|
+
tickets: 'pmo_tickets',
|
|
14
|
+
board_views: 'pmo_board_views', // Saved board view configurations
|
|
15
|
+
subtasks: 'pmo_subtasks',
|
|
16
|
+
ticket_metadata: 'pmo_ticket_metadata',
|
|
17
|
+
ticket_dependencies: 'pmo_ticket_dependencies',
|
|
18
|
+
ticket_affected_paths: 'pmo_ticket_affected_paths',
|
|
19
|
+
ticket_acceptance_criteria: 'pmo_ticket_acceptance_criteria',
|
|
20
|
+
specs: 'pmo_specs',
|
|
21
|
+
spec_dependencies: 'pmo_spec_dependencies',
|
|
22
|
+
ticket_specs: 'pmo_ticket_specs',
|
|
23
|
+
ticket_assignments: 'pmo_ticket_assignments',
|
|
24
|
+
epics: 'pmo_epics',
|
|
25
|
+
epic_dependencies: 'pmo_epic_dependencies',
|
|
26
|
+
project_specs: 'pmo_project_specs', // Many-to-many: projects ↔ specs (specs are global)
|
|
27
|
+
cache_metadata: 'pmo_cache_metadata',
|
|
28
|
+
settings: 'pmo_settings',
|
|
29
|
+
agent_work: 'agent_work',
|
|
30
|
+
containers: 'containers', // Docker containers per agent
|
|
31
|
+
// Workflow tables (consolidated - workflows are the single source of truth for board columns)
|
|
32
|
+
workflows: 'pmo_workflows', // Shared workflow definitions
|
|
33
|
+
workflow_statuses: 'pmo_workflow_statuses', // Statuses belonging to workflows (= board columns)
|
|
34
|
+
// templates: 'pmo_templates', // REMOVED: workflows are now used directly
|
|
35
|
+
phases: 'pmo_phases', // Project lifecycle phases (workspace-scoped)
|
|
36
|
+
phase_templates: 'pmo_phase_templates', // Phase configuration templates
|
|
37
|
+
actions: 'pmo_actions', // Work actions (reusable agent prompts)
|
|
38
|
+
ticket_templates: 'pmo_ticket_templates', // Ticket templates for quick creation
|
|
39
|
+
// Legacy tables (deprecated, kept for migration)
|
|
40
|
+
columns: 'pmo_columns', // DEPRECATED: use workflow_statuses
|
|
41
|
+
board_tickets: 'pmo_board_tickets', // DEPRECATED: tickets now use status_id directly
|
|
42
|
+
statuses: 'pmo_statuses', // DEPRECATED: use workflow_statuses
|
|
43
|
+
};
|
|
44
|
+
// =============================================================================
|
|
45
|
+
// Individual Table Schemas
|
|
46
|
+
// =============================================================================
|
|
47
|
+
export const PMO_TABLE_SCHEMAS = {
|
|
48
|
+
projects: `
|
|
49
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.projects} (
|
|
50
|
+
id TEXT PRIMARY KEY,
|
|
51
|
+
name TEXT NOT NULL,
|
|
52
|
+
template TEXT,
|
|
53
|
+
description TEXT,
|
|
54
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
55
|
+
phase_id TEXT,
|
|
56
|
+
workflow_id TEXT,
|
|
57
|
+
is_archived INTEGER NOT NULL DEFAULT 0,
|
|
58
|
+
target_date TIMESTAMP,
|
|
59
|
+
initiative_id TEXT,
|
|
60
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
61
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
62
|
+
FOREIGN KEY (phase_id) REFERENCES ${PMO_TABLES.phases}(id) ON DELETE SET NULL,
|
|
63
|
+
FOREIGN KEY (workflow_id) REFERENCES ${PMO_TABLES.workflows}(id) ON DELETE SET NULL
|
|
64
|
+
)`,
|
|
65
|
+
initiatives: `
|
|
66
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.initiatives} (
|
|
67
|
+
id TEXT PRIMARY KEY,
|
|
68
|
+
name TEXT NOT NULL,
|
|
69
|
+
objective TEXT,
|
|
70
|
+
key_results TEXT,
|
|
71
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
72
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
73
|
+
)`,
|
|
74
|
+
// Shared workflow definitions - projects reference these via workflow_id
|
|
75
|
+
workflows: `
|
|
76
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.workflows} (
|
|
77
|
+
id TEXT PRIMARY KEY,
|
|
78
|
+
name TEXT NOT NULL UNIQUE,
|
|
79
|
+
description TEXT,
|
|
80
|
+
is_builtin INTEGER NOT NULL DEFAULT 0,
|
|
81
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
82
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
83
|
+
)`,
|
|
84
|
+
// Statuses belonging to workflows - these ARE the board columns
|
|
85
|
+
// Each status has a category (backlog, unstarted, started, completed, canceled)
|
|
86
|
+
workflow_statuses: `
|
|
87
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.workflow_statuses} (
|
|
88
|
+
id TEXT PRIMARY KEY,
|
|
89
|
+
workflow_id TEXT NOT NULL,
|
|
90
|
+
name TEXT NOT NULL,
|
|
91
|
+
category TEXT NOT NULL,
|
|
92
|
+
position INTEGER NOT NULL DEFAULT 0,
|
|
93
|
+
color TEXT,
|
|
94
|
+
description TEXT,
|
|
95
|
+
is_default INTEGER NOT NULL DEFAULT 0,
|
|
96
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
97
|
+
FOREIGN KEY (workflow_id) REFERENCES ${PMO_TABLES.workflows}(id) ON DELETE CASCADE,
|
|
98
|
+
UNIQUE(workflow_id, name)
|
|
99
|
+
)`,
|
|
100
|
+
// DEPRECATED: Legacy columns table - use workflow_statuses instead
|
|
101
|
+
columns: `
|
|
102
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.columns} (
|
|
103
|
+
id TEXT NOT NULL,
|
|
104
|
+
project_id TEXT NOT NULL DEFAULT 'default',
|
|
105
|
+
name TEXT NOT NULL,
|
|
106
|
+
position INTEGER NOT NULL,
|
|
107
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
108
|
+
PRIMARY KEY (project_id, id)
|
|
109
|
+
)`,
|
|
110
|
+
tickets: `
|
|
111
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.tickets} (
|
|
112
|
+
id TEXT PRIMARY KEY,
|
|
113
|
+
project_id TEXT NOT NULL DEFAULT 'default',
|
|
114
|
+
title TEXT NOT NULL,
|
|
115
|
+
description TEXT,
|
|
116
|
+
priority TEXT,
|
|
117
|
+
category TEXT,
|
|
118
|
+
status TEXT NOT NULL DEFAULT 'backlog',
|
|
119
|
+
status_id TEXT,
|
|
120
|
+
owner TEXT,
|
|
121
|
+
assignee TEXT,
|
|
122
|
+
branch TEXT,
|
|
123
|
+
spec_id TEXT,
|
|
124
|
+
epic_id TEXT,
|
|
125
|
+
labels TEXT NOT NULL DEFAULT '[]',
|
|
126
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
127
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
128
|
+
last_synced_from_spec TIMESTAMP,
|
|
129
|
+
last_synced_from_board TIMESTAMP,
|
|
130
|
+
FOREIGN KEY (project_id) REFERENCES ${PMO_TABLES.projects}(id) ON DELETE CASCADE,
|
|
131
|
+
FOREIGN KEY (spec_id) REFERENCES ${PMO_TABLES.specs}(id) ON DELETE SET NULL,
|
|
132
|
+
FOREIGN KEY (epic_id) REFERENCES ${PMO_TABLES.epics}(id) ON DELETE SET NULL,
|
|
133
|
+
FOREIGN KEY (status_id) REFERENCES ${PMO_TABLES.workflow_statuses}(id) ON DELETE SET NULL
|
|
134
|
+
)`,
|
|
135
|
+
// DEPRECATED: Legacy board_tickets table - tickets now use status_id directly
|
|
136
|
+
board_tickets: `
|
|
137
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.board_tickets} (
|
|
138
|
+
project_id TEXT NOT NULL,
|
|
139
|
+
ticket_id TEXT NOT NULL,
|
|
140
|
+
column_id TEXT NOT NULL,
|
|
141
|
+
position INTEGER NOT NULL,
|
|
142
|
+
PRIMARY KEY (project_id, ticket_id),
|
|
143
|
+
FOREIGN KEY (project_id) REFERENCES ${PMO_TABLES.projects}(id) ON DELETE CASCADE,
|
|
144
|
+
FOREIGN KEY (ticket_id) REFERENCES ${PMO_TABLES.tickets}(id) ON DELETE CASCADE,
|
|
145
|
+
FOREIGN KEY (project_id, column_id) REFERENCES ${PMO_TABLES.columns}(project_id, id) ON DELETE CASCADE
|
|
146
|
+
)`,
|
|
147
|
+
// Board views - saved filter/display configurations for projects
|
|
148
|
+
board_views: `
|
|
149
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.board_views} (
|
|
150
|
+
id TEXT PRIMARY KEY,
|
|
151
|
+
project_id TEXT NOT NULL,
|
|
152
|
+
name TEXT NOT NULL,
|
|
153
|
+
description TEXT,
|
|
154
|
+
is_default INTEGER NOT NULL DEFAULT 0,
|
|
155
|
+
filters TEXT NOT NULL DEFAULT '{}',
|
|
156
|
+
group_by TEXT,
|
|
157
|
+
sort_by TEXT,
|
|
158
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
159
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
160
|
+
FOREIGN KEY (project_id) REFERENCES ${PMO_TABLES.projects}(id) ON DELETE CASCADE,
|
|
161
|
+
UNIQUE(project_id, name)
|
|
162
|
+
)`,
|
|
163
|
+
subtasks: `
|
|
164
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.subtasks} (
|
|
165
|
+
id TEXT NOT NULL,
|
|
166
|
+
ticket_id TEXT NOT NULL REFERENCES ${PMO_TABLES.tickets}(id) ON DELETE CASCADE,
|
|
167
|
+
title TEXT NOT NULL,
|
|
168
|
+
done INTEGER DEFAULT 0,
|
|
169
|
+
position INTEGER NOT NULL,
|
|
170
|
+
PRIMARY KEY (ticket_id, id)
|
|
171
|
+
)`,
|
|
172
|
+
ticket_metadata: `
|
|
173
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.ticket_metadata} (
|
|
174
|
+
ticket_id TEXT NOT NULL REFERENCES ${PMO_TABLES.tickets}(id) ON DELETE CASCADE,
|
|
175
|
+
key TEXT NOT NULL,
|
|
176
|
+
value TEXT,
|
|
177
|
+
PRIMARY KEY (ticket_id, key)
|
|
178
|
+
)`,
|
|
179
|
+
// Ticket-to-ticket dependencies (blocks, relates_to, duplicates)
|
|
180
|
+
ticket_dependencies: `
|
|
181
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.ticket_dependencies} (
|
|
182
|
+
ticket_id TEXT NOT NULL REFERENCES ${PMO_TABLES.tickets}(id) ON DELETE RESTRICT,
|
|
183
|
+
depends_on_ticket_id TEXT NOT NULL REFERENCES ${PMO_TABLES.tickets}(id) ON DELETE RESTRICT,
|
|
184
|
+
dependency_type TEXT NOT NULL DEFAULT 'blocks' CHECK (dependency_type IN ('blocks', 'relates_to', 'duplicates')),
|
|
185
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
186
|
+
PRIMARY KEY (ticket_id, depends_on_ticket_id, dependency_type),
|
|
187
|
+
CHECK (ticket_id != depends_on_ticket_id)
|
|
188
|
+
)`,
|
|
189
|
+
// Agent execution support: file/path scope hints
|
|
190
|
+
ticket_affected_paths: `
|
|
191
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.ticket_affected_paths} (
|
|
192
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
193
|
+
ticket_id TEXT NOT NULL REFERENCES ${PMO_TABLES.tickets}(id) ON DELETE CASCADE,
|
|
194
|
+
path_pattern TEXT NOT NULL,
|
|
195
|
+
path_type TEXT NOT NULL DEFAULT 'file',
|
|
196
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
197
|
+
)`,
|
|
198
|
+
// Agent execution support: structured acceptance criteria
|
|
199
|
+
ticket_acceptance_criteria: `
|
|
200
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.ticket_acceptance_criteria} (
|
|
201
|
+
id TEXT NOT NULL,
|
|
202
|
+
ticket_id TEXT NOT NULL REFERENCES ${PMO_TABLES.tickets}(id) ON DELETE CASCADE,
|
|
203
|
+
criterion TEXT NOT NULL,
|
|
204
|
+
verifiable INTEGER DEFAULT 1,
|
|
205
|
+
verified INTEGER DEFAULT 0,
|
|
206
|
+
verified_at TIMESTAMP,
|
|
207
|
+
verified_by TEXT,
|
|
208
|
+
position INTEGER NOT NULL DEFAULT 0,
|
|
209
|
+
PRIMARY KEY (ticket_id, id)
|
|
210
|
+
)`,
|
|
211
|
+
specs: `
|
|
212
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.specs} (
|
|
213
|
+
id TEXT PRIMARY KEY,
|
|
214
|
+
title TEXT NOT NULL,
|
|
215
|
+
status TEXT DEFAULT 'draft',
|
|
216
|
+
type TEXT,
|
|
217
|
+
tags TEXT,
|
|
218
|
+
depends_on TEXT,
|
|
219
|
+
problem TEXT,
|
|
220
|
+
solution TEXT,
|
|
221
|
+
decisions TEXT,
|
|
222
|
+
not_now TEXT,
|
|
223
|
+
ui_ux TEXT,
|
|
224
|
+
acceptance_criteria TEXT,
|
|
225
|
+
open_questions TEXT,
|
|
226
|
+
requirements_functional TEXT,
|
|
227
|
+
requirements_technical TEXT,
|
|
228
|
+
context TEXT,
|
|
229
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
230
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
231
|
+
)`,
|
|
232
|
+
// Spec-to-spec dependencies (depends_on, relates_to, duplicates)
|
|
233
|
+
spec_dependencies: `
|
|
234
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.spec_dependencies} (
|
|
235
|
+
spec_id TEXT NOT NULL REFERENCES ${PMO_TABLES.specs}(id) ON DELETE RESTRICT,
|
|
236
|
+
depends_on_spec_id TEXT NOT NULL REFERENCES ${PMO_TABLES.specs}(id) ON DELETE RESTRICT,
|
|
237
|
+
dependency_type TEXT NOT NULL DEFAULT 'depends_on' CHECK (dependency_type IN ('depends_on', 'relates_to', 'duplicates')),
|
|
238
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
239
|
+
PRIMARY KEY (spec_id, depends_on_spec_id, dependency_type),
|
|
240
|
+
CHECK (spec_id != depends_on_spec_id)
|
|
241
|
+
)`,
|
|
242
|
+
ticket_specs: `
|
|
243
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.ticket_specs} (
|
|
244
|
+
ticket_id TEXT NOT NULL REFERENCES ${PMO_TABLES.tickets}(id) ON DELETE CASCADE,
|
|
245
|
+
spec_id TEXT NOT NULL REFERENCES ${PMO_TABLES.specs}(id) ON DELETE CASCADE,
|
|
246
|
+
PRIMARY KEY (ticket_id, spec_id)
|
|
247
|
+
)`,
|
|
248
|
+
ticket_assignments: `
|
|
249
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.ticket_assignments} (
|
|
250
|
+
ticket_id TEXT NOT NULL REFERENCES ${PMO_TABLES.tickets}(id) ON DELETE CASCADE,
|
|
251
|
+
agent_name TEXT NOT NULL,
|
|
252
|
+
assigned_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
253
|
+
PRIMARY KEY (ticket_id, agent_name)
|
|
254
|
+
)`,
|
|
255
|
+
epics: `
|
|
256
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.epics} (
|
|
257
|
+
id TEXT PRIMARY KEY,
|
|
258
|
+
project_id TEXT NOT NULL,
|
|
259
|
+
title TEXT NOT NULL,
|
|
260
|
+
description TEXT,
|
|
261
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
262
|
+
position INTEGER NOT NULL DEFAULT 0,
|
|
263
|
+
file_path TEXT,
|
|
264
|
+
spec_id TEXT,
|
|
265
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
266
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
267
|
+
FOREIGN KEY (project_id) REFERENCES ${PMO_TABLES.projects}(id) ON DELETE CASCADE,
|
|
268
|
+
FOREIGN KEY (spec_id) REFERENCES ${PMO_TABLES.specs}(id) ON DELETE SET NULL
|
|
269
|
+
)`,
|
|
270
|
+
// Epic-to-epic dependencies (blocks, relates_to, duplicates)
|
|
271
|
+
epic_dependencies: `
|
|
272
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.epic_dependencies} (
|
|
273
|
+
epic_id TEXT NOT NULL REFERENCES ${PMO_TABLES.epics}(id) ON DELETE RESTRICT,
|
|
274
|
+
depends_on_epic_id TEXT NOT NULL REFERENCES ${PMO_TABLES.epics}(id) ON DELETE RESTRICT,
|
|
275
|
+
dependency_type TEXT NOT NULL DEFAULT 'blocks' CHECK (dependency_type IN ('blocks', 'relates_to', 'duplicates')),
|
|
276
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
277
|
+
PRIMARY KEY (epic_id, depends_on_epic_id, dependency_type),
|
|
278
|
+
CHECK (epic_id != depends_on_epic_id)
|
|
279
|
+
)`,
|
|
280
|
+
// Project-to-spec associations (many-to-many, specs are global living documents)
|
|
281
|
+
project_specs: `
|
|
282
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.project_specs} (
|
|
283
|
+
project_id TEXT NOT NULL REFERENCES ${PMO_TABLES.projects}(id) ON DELETE CASCADE,
|
|
284
|
+
spec_id TEXT NOT NULL REFERENCES ${PMO_TABLES.specs}(id) ON DELETE CASCADE,
|
|
285
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
286
|
+
PRIMARY KEY (project_id, spec_id)
|
|
287
|
+
)`,
|
|
288
|
+
cache_metadata: `
|
|
289
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.cache_metadata} (
|
|
290
|
+
key TEXT PRIMARY KEY,
|
|
291
|
+
value TEXT NOT NULL
|
|
292
|
+
)`,
|
|
293
|
+
settings: `
|
|
294
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.settings} (
|
|
295
|
+
key TEXT PRIMARY KEY,
|
|
296
|
+
value TEXT NOT NULL
|
|
297
|
+
)`,
|
|
298
|
+
agent_work: `
|
|
299
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.agent_work} (
|
|
300
|
+
id TEXT PRIMARY KEY,
|
|
301
|
+
ticket_id TEXT NOT NULL,
|
|
302
|
+
agent_name TEXT NOT NULL,
|
|
303
|
+
executor TEXT NOT NULL,
|
|
304
|
+
environment TEXT NOT NULL DEFAULT 'host',
|
|
305
|
+
display_mode TEXT NOT NULL DEFAULT 'terminal',
|
|
306
|
+
sandboxed INTEGER NOT NULL DEFAULT 0,
|
|
307
|
+
status TEXT NOT NULL DEFAULT 'starting',
|
|
308
|
+
branch TEXT,
|
|
309
|
+
pid TEXT,
|
|
310
|
+
container_id TEXT,
|
|
311
|
+
session_id TEXT,
|
|
312
|
+
host TEXT,
|
|
313
|
+
log_path TEXT,
|
|
314
|
+
started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
315
|
+
completed_at TIMESTAMP,
|
|
316
|
+
exit_code INTEGER,
|
|
317
|
+
FOREIGN KEY (ticket_id) REFERENCES ${PMO_TABLES.tickets}(id) ON DELETE CASCADE
|
|
318
|
+
)`,
|
|
319
|
+
// Docker containers (per-agent, reused across executions)
|
|
320
|
+
containers: `
|
|
321
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.containers} (
|
|
322
|
+
id TEXT PRIMARY KEY,
|
|
323
|
+
agent_name TEXT NOT NULL,
|
|
324
|
+
docker_id TEXT NOT NULL,
|
|
325
|
+
docker_name TEXT,
|
|
326
|
+
image TEXT,
|
|
327
|
+
status TEXT NOT NULL DEFAULT 'unknown',
|
|
328
|
+
current_execution_id TEXT,
|
|
329
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
330
|
+
last_seen_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
331
|
+
FOREIGN KEY (agent_name) REFERENCES agents(name) ON DELETE CASCADE,
|
|
332
|
+
FOREIGN KEY (current_execution_id) REFERENCES ${PMO_TABLES.agent_work}(id) ON DELETE SET NULL
|
|
333
|
+
)`,
|
|
334
|
+
// DEPRECATED: Legacy per-project statuses - use workflow_statuses instead
|
|
335
|
+
// Kept for migration from old schema
|
|
336
|
+
statuses: `
|
|
337
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.statuses} (
|
|
338
|
+
id TEXT PRIMARY KEY,
|
|
339
|
+
project_id TEXT NOT NULL,
|
|
340
|
+
name TEXT NOT NULL,
|
|
341
|
+
category TEXT NOT NULL,
|
|
342
|
+
position INTEGER NOT NULL DEFAULT 0,
|
|
343
|
+
color TEXT,
|
|
344
|
+
description TEXT,
|
|
345
|
+
is_default INTEGER NOT NULL DEFAULT 0,
|
|
346
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
347
|
+
FOREIGN KEY (project_id) REFERENCES ${PMO_TABLES.projects}(id) ON DELETE CASCADE,
|
|
348
|
+
UNIQUE(project_id, name)
|
|
349
|
+
)`,
|
|
350
|
+
// REMOVED: pmo_templates - workflows are now used directly (no separate template concept)
|
|
351
|
+
// Project lifecycle phases (workspace-scoped, not per-project)
|
|
352
|
+
phases: `
|
|
353
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.phases} (
|
|
354
|
+
id TEXT PRIMARY KEY,
|
|
355
|
+
name TEXT NOT NULL UNIQUE,
|
|
356
|
+
category TEXT NOT NULL,
|
|
357
|
+
position INTEGER NOT NULL DEFAULT 0,
|
|
358
|
+
color TEXT,
|
|
359
|
+
description TEXT,
|
|
360
|
+
is_default INTEGER NOT NULL DEFAULT 0,
|
|
361
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
362
|
+
)`,
|
|
363
|
+
// Phase templates (preset phase configurations)
|
|
364
|
+
phase_templates: `
|
|
365
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.phase_templates} (
|
|
366
|
+
id TEXT PRIMARY KEY,
|
|
367
|
+
name TEXT NOT NULL UNIQUE,
|
|
368
|
+
description TEXT,
|
|
369
|
+
is_builtin INTEGER NOT NULL DEFAULT 0,
|
|
370
|
+
phases TEXT NOT NULL,
|
|
371
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
372
|
+
)`,
|
|
373
|
+
actions: `
|
|
374
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.actions} (
|
|
375
|
+
id TEXT PRIMARY KEY,
|
|
376
|
+
name TEXT NOT NULL UNIQUE,
|
|
377
|
+
description TEXT,
|
|
378
|
+
prompt TEXT NOT NULL,
|
|
379
|
+
end_prompt TEXT,
|
|
380
|
+
suggested_for_categories TEXT,
|
|
381
|
+
default_move_to_category TEXT,
|
|
382
|
+
modifies_code INTEGER NOT NULL DEFAULT 1,
|
|
383
|
+
is_builtin INTEGER NOT NULL DEFAULT 0,
|
|
384
|
+
position INTEGER NOT NULL DEFAULT 0,
|
|
385
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
386
|
+
)`,
|
|
387
|
+
// Ticket templates for quick ticket creation
|
|
388
|
+
ticket_templates: `
|
|
389
|
+
CREATE TABLE IF NOT EXISTS ${PMO_TABLES.ticket_templates} (
|
|
390
|
+
id TEXT PRIMARY KEY,
|
|
391
|
+
name TEXT NOT NULL UNIQUE,
|
|
392
|
+
description TEXT,
|
|
393
|
+
is_builtin INTEGER NOT NULL DEFAULT 0,
|
|
394
|
+
title_pattern TEXT,
|
|
395
|
+
description_template TEXT,
|
|
396
|
+
default_priority TEXT,
|
|
397
|
+
default_category TEXT,
|
|
398
|
+
default_status_id TEXT,
|
|
399
|
+
default_assignee TEXT,
|
|
400
|
+
default_owner TEXT,
|
|
401
|
+
default_labels TEXT NOT NULL DEFAULT '[]',
|
|
402
|
+
suggested_subtasks TEXT NOT NULL DEFAULT '[]',
|
|
403
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
404
|
+
)`,
|
|
405
|
+
};
|
|
406
|
+
// =============================================================================
|
|
407
|
+
// Indexes
|
|
408
|
+
// =============================================================================
|
|
409
|
+
export const PMO_INDEXES = `
|
|
410
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_tickets_project ON ${PMO_TABLES.tickets}(project_id);
|
|
411
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_tickets_status ON ${PMO_TABLES.tickets}(status);
|
|
412
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_tickets_owner ON ${PMO_TABLES.tickets}(owner);
|
|
413
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_tickets_assignee ON ${PMO_TABLES.tickets}(assignee);
|
|
414
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_tickets_spec ON ${PMO_TABLES.tickets}(spec_id);
|
|
415
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_tickets_epic ON ${PMO_TABLES.tickets}(epic_id);
|
|
416
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_tickets_priority ON ${PMO_TABLES.tickets}(priority);
|
|
417
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_tickets_category ON ${PMO_TABLES.tickets}(category);
|
|
418
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_tickets_status_id ON ${PMO_TABLES.tickets}(status_id);
|
|
419
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_subtasks_ticket ON ${PMO_TABLES.subtasks}(ticket_id);
|
|
420
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_ticket_specs_spec ON ${PMO_TABLES.ticket_specs}(spec_id);
|
|
421
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_assignments_agent ON ${PMO_TABLES.ticket_assignments}(agent_name);
|
|
422
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_epics_project ON ${PMO_TABLES.epics}(project_id);
|
|
423
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_epics_spec ON ${PMO_TABLES.epics}(spec_id);
|
|
424
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_epics_position ON ${PMO_TABLES.epics}(project_id, position);
|
|
425
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_projects_initiative ON ${PMO_TABLES.projects}(initiative_id);
|
|
426
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_projects_status ON ${PMO_TABLES.projects}(status);
|
|
427
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_projects_phase ON ${PMO_TABLES.projects}(phase_id);
|
|
428
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_projects_workflow ON ${PMO_TABLES.projects}(workflow_id);
|
|
429
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_projects_archived ON ${PMO_TABLES.projects}(is_archived);
|
|
430
|
+
CREATE INDEX IF NOT EXISTS idx_agent_work_agent ON ${PMO_TABLES.agent_work}(agent_name);
|
|
431
|
+
CREATE INDEX IF NOT EXISTS idx_agent_work_status ON ${PMO_TABLES.agent_work}(status);
|
|
432
|
+
CREATE INDEX IF NOT EXISTS idx_agent_work_ticket ON ${PMO_TABLES.agent_work}(ticket_id);
|
|
433
|
+
CREATE INDEX IF NOT EXISTS idx_containers_agent ON ${PMO_TABLES.containers}(agent_name);
|
|
434
|
+
CREATE INDEX IF NOT EXISTS idx_containers_docker_id ON ${PMO_TABLES.containers}(docker_id);
|
|
435
|
+
CREATE INDEX IF NOT EXISTS idx_containers_status ON ${PMO_TABLES.containers}(status);
|
|
436
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_specs_status ON ${PMO_TABLES.specs}(status);
|
|
437
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_specs_type ON ${PMO_TABLES.specs}(type);
|
|
438
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_spec_deps_depends_on ON ${PMO_TABLES.spec_dependencies}(depends_on_spec_id);
|
|
439
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_ticket_deps_depends_on ON ${PMO_TABLES.ticket_dependencies}(depends_on_ticket_id);
|
|
440
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_epic_deps_depends_on ON ${PMO_TABLES.epic_dependencies}(depends_on_epic_id);
|
|
441
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_project_specs_spec ON ${PMO_TABLES.project_specs}(spec_id);
|
|
442
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_project_specs_project ON ${PMO_TABLES.project_specs}(project_id);
|
|
443
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_ticket_paths_ticket ON ${PMO_TABLES.ticket_affected_paths}(ticket_id);
|
|
444
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_ticket_criteria_ticket ON ${PMO_TABLES.ticket_acceptance_criteria}(ticket_id);
|
|
445
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_phases_category ON ${PMO_TABLES.phases}(category);
|
|
446
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_phases_position ON ${PMO_TABLES.phases}(category, position);
|
|
447
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_board_views_project ON ${PMO_TABLES.board_views}(project_id);
|
|
448
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_board_views_default ON ${PMO_TABLES.board_views}(project_id, is_default);
|
|
449
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_ticket_templates_builtin ON ${PMO_TABLES.ticket_templates}(is_builtin);
|
|
450
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_workflow_statuses_workflow ON ${PMO_TABLES.workflow_statuses}(workflow_id);
|
|
451
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_workflow_statuses_category ON ${PMO_TABLES.workflow_statuses}(workflow_id, category);
|
|
452
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_workflow_statuses_position ON ${PMO_TABLES.workflow_statuses}(workflow_id, position);
|
|
453
|
+
CREATE INDEX IF NOT EXISTS idx_pmo_workflows_builtin ON ${PMO_TABLES.workflows}(is_builtin);
|
|
454
|
+
`;
|
|
455
|
+
// =============================================================================
|
|
456
|
+
// Combined Schema
|
|
457
|
+
// =============================================================================
|
|
458
|
+
/**
|
|
459
|
+
* All PMO table creation statements combined.
|
|
460
|
+
* Order matters due to foreign key dependencies.
|
|
461
|
+
*/
|
|
462
|
+
export const PMO_SCHEMA_SQL = [
|
|
463
|
+
PMO_TABLE_SCHEMAS.phases, // Project phases (before projects for FK)
|
|
464
|
+
PMO_TABLE_SCHEMAS.phase_templates, // Phase templates (for preset phase configurations)
|
|
465
|
+
PMO_TABLE_SCHEMAS.workflows, // Shared workflows (before projects for FK)
|
|
466
|
+
PMO_TABLE_SCHEMAS.workflow_statuses, // Workflow statuses (= board columns)
|
|
467
|
+
PMO_TABLE_SCHEMAS.projects,
|
|
468
|
+
PMO_TABLE_SCHEMAS.initiatives,
|
|
469
|
+
// PMO_TABLE_SCHEMAS.templates, // REMOVED: workflows are now used directly
|
|
470
|
+
PMO_TABLE_SCHEMAS.specs, // Must be before tickets (FK reference)
|
|
471
|
+
PMO_TABLE_SCHEMAS.spec_dependencies, // Spec-to-spec dependencies
|
|
472
|
+
PMO_TABLE_SCHEMAS.epics, // Must be before tickets (FK reference)
|
|
473
|
+
PMO_TABLE_SCHEMAS.epic_dependencies, // Epic-to-epic dependencies
|
|
474
|
+
PMO_TABLE_SCHEMAS.project_specs, // Many-to-many project ↔ spec associations
|
|
475
|
+
PMO_TABLE_SCHEMAS.tickets,
|
|
476
|
+
PMO_TABLE_SCHEMAS.board_views, // Saved board view configurations
|
|
477
|
+
PMO_TABLE_SCHEMAS.subtasks,
|
|
478
|
+
PMO_TABLE_SCHEMAS.ticket_metadata,
|
|
479
|
+
PMO_TABLE_SCHEMAS.ticket_dependencies, // Ticket-to-ticket dependencies
|
|
480
|
+
PMO_TABLE_SCHEMAS.ticket_affected_paths, // Agent execution: scope hints
|
|
481
|
+
PMO_TABLE_SCHEMAS.ticket_acceptance_criteria, // Agent execution: structured criteria
|
|
482
|
+
PMO_TABLE_SCHEMAS.ticket_specs,
|
|
483
|
+
PMO_TABLE_SCHEMAS.ticket_assignments,
|
|
484
|
+
PMO_TABLE_SCHEMAS.cache_metadata,
|
|
485
|
+
PMO_TABLE_SCHEMAS.settings,
|
|
486
|
+
PMO_TABLE_SCHEMAS.agent_work, // Execution tracking
|
|
487
|
+
PMO_TABLE_SCHEMAS.containers, // Docker containers per agent
|
|
488
|
+
PMO_TABLE_SCHEMAS.actions, // Work actions (reusable agent prompts)
|
|
489
|
+
PMO_TABLE_SCHEMAS.ticket_templates, // Ticket templates for quick creation
|
|
490
|
+
// Legacy tables (kept for migration, will be dropped after data migrated)
|
|
491
|
+
PMO_TABLE_SCHEMAS.columns, // DEPRECATED
|
|
492
|
+
PMO_TABLE_SCHEMAS.board_tickets, // DEPRECATED
|
|
493
|
+
PMO_TABLE_SCHEMAS.statuses, // DEPRECATED
|
|
494
|
+
PMO_INDEXES,
|
|
495
|
+
].join(';\n');
|
|
496
|
+
// =============================================================================
|
|
497
|
+
// Expected Columns (for validation)
|
|
498
|
+
// =============================================================================
|
|
499
|
+
export const EXPECTED_TICKET_COLUMNS = [
|
|
500
|
+
'id',
|
|
501
|
+
'project_id',
|
|
502
|
+
'title',
|
|
503
|
+
'description',
|
|
504
|
+
'priority',
|
|
505
|
+
'category',
|
|
506
|
+
'status',
|
|
507
|
+
'status_id',
|
|
508
|
+
'owner',
|
|
509
|
+
'assignee',
|
|
510
|
+
'branch',
|
|
511
|
+
'spec_id',
|
|
512
|
+
'epic_id',
|
|
513
|
+
'labels',
|
|
514
|
+
'created_at',
|
|
515
|
+
'updated_at',
|
|
516
|
+
'last_synced_from_spec',
|
|
517
|
+
'last_synced_from_board',
|
|
518
|
+
];
|
|
519
|
+
/**
|
|
520
|
+
* Validate that pmo_tickets table has all expected columns.
|
|
521
|
+
* Throws if columns are missing (indicates schema mismatch).
|
|
522
|
+
*/
|
|
523
|
+
export function validateTicketSchema(db) {
|
|
524
|
+
const columns = db.pragma(`table_info(${PMO_TABLES.tickets})`);
|
|
525
|
+
const actualColumns = new Set(columns.map((c) => c.name));
|
|
526
|
+
const missing = EXPECTED_TICKET_COLUMNS.filter((c) => !actualColumns.has(c));
|
|
527
|
+
if (missing.length > 0) {
|
|
528
|
+
throw new Error(`Schema mismatch: pmo_tickets is missing columns: ${missing.join(', ')}. ` +
|
|
529
|
+
`Database may need migration or recreation.`);
|
|
530
|
+
}
|
|
531
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec Parser
|
|
3
|
+
*
|
|
4
|
+
* Parses markdown spec files into structured data.
|
|
5
|
+
* Uses the new simplified spec format with frontmatter.
|
|
6
|
+
*/
|
|
7
|
+
import { ParsedSpec } from './spec-types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Parse a spec markdown file into structured data
|
|
10
|
+
*/
|
|
11
|
+
export declare function parseSpecFile(filePath: string): ParsedSpec;
|
|
12
|
+
/**
|
|
13
|
+
* Parse spec content string into structured data
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseSpecContent(content: string, filePath?: string): ParsedSpec;
|
|
16
|
+
/**
|
|
17
|
+
* Validate a parsed spec for completeness
|
|
18
|
+
*/
|
|
19
|
+
export declare function validateSpec(spec: ParsedSpec): string[];
|
|
20
|
+
/**
|
|
21
|
+
* Convert a parsed spec back to markdown format
|
|
22
|
+
*/
|
|
23
|
+
export declare function specToMarkdown(spec: ParsedSpec, options?: {
|
|
24
|
+
includeFrontmatter?: boolean;
|
|
25
|
+
}): string;
|