light-plan 0.0.0-stage → 0.1.0
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/LICENSE +21 -0
- package/README.md +3181 -2
- package/assets/README.md +111 -0
- package/assets/agents/lpm-developer.md +468 -0
- package/assets/agents/lpm-planner.md +532 -0
- package/assets/harnesses/claude.yml +43 -0
- package/assets/harnesses/copilot.yml +54 -0
- package/assets/harnesses/reasonix.yml +49 -0
- package/assets/hcm/light-plan.yml +45 -0
- package/assets/skills/lpm-board-health.md +243 -0
- package/assets/skills/lpm-board-setup.md +354 -0
- package/assets/skills/lpm-delivery.md +344 -0
- package/assets/skills/lpm-planning.md +411 -0
- package/assets/skills/lpm-templates.md +144 -0
- package/assets/skills/lpm.md +267 -0
- package/dist/cli/agent-view.d.ts +27 -0
- package/dist/cli/agent-view.js +247 -0
- package/dist/cli/agent-view.js.map +1 -0
- package/dist/cli/commands/agent/assets.d.ts +64 -0
- package/dist/cli/commands/agent/assets.js +106 -0
- package/dist/cli/commands/agent/assets.js.map +1 -0
- package/dist/cli/commands/agent/glob.d.ts +25 -0
- package/dist/cli/commands/agent/glob.js +82 -0
- package/dist/cli/commands/agent/glob.js.map +1 -0
- package/dist/cli/commands/agent/index.d.ts +11 -0
- package/dist/cli/commands/agent/index.js +284 -0
- package/dist/cli/commands/agent/index.js.map +1 -0
- package/dist/cli/commands/agent/install.d.ts +59 -0
- package/dist/cli/commands/agent/install.js +131 -0
- package/dist/cli/commands/agent/install.js.map +1 -0
- package/dist/cli/commands/agent/mapping.d.ts +175 -0
- package/dist/cli/commands/agent/mapping.js +256 -0
- package/dist/cli/commands/agent/mapping.js.map +1 -0
- package/dist/cli/commands/check.d.ts +2 -0
- package/dist/cli/commands/check.js +81 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/comment.d.ts +2 -0
- package/dist/cli/commands/comment.js +104 -0
- package/dist/cli/commands/comment.js.map +1 -0
- package/dist/cli/commands/convert.d.ts +2 -0
- package/dist/cli/commands/convert.js +115 -0
- package/dist/cli/commands/convert.js.map +1 -0
- package/dist/cli/commands/copy.d.ts +2 -0
- package/dist/cli/commands/copy.js +69 -0
- package/dist/cli/commands/copy.js.map +1 -0
- package/dist/cli/commands/export.d.ts +11 -0
- package/dist/cli/commands/export.js +226 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/flag.d.ts +2 -0
- package/dist/cli/commands/flag.js +172 -0
- package/dist/cli/commands/flag.js.map +1 -0
- package/dist/cli/commands/git.d.ts +11 -0
- package/dist/cli/commands/git.js +357 -0
- package/dist/cli/commands/git.js.map +1 -0
- package/dist/cli/commands/hcm/bundle.d.ts +60 -0
- package/dist/cli/commands/hcm/bundle.js +166 -0
- package/dist/cli/commands/hcm/bundle.js.map +1 -0
- package/dist/cli/commands/hcm/index.d.ts +11 -0
- package/dist/cli/commands/hcm/index.js +162 -0
- package/dist/cli/commands/hcm/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.js +81 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/insert.d.ts +2 -0
- package/dist/cli/commands/insert.js +70 -0
- package/dist/cli/commands/insert.js.map +1 -0
- package/dist/cli/commands/instructions.d.ts +7 -0
- package/dist/cli/commands/instructions.js +256 -0
- package/dist/cli/commands/instructions.js.map +1 -0
- package/dist/cli/commands/link.d.ts +2 -0
- package/dist/cli/commands/link.js +121 -0
- package/dist/cli/commands/link.js.map +1 -0
- package/dist/cli/commands/mcp/config.d.ts +71 -0
- package/dist/cli/commands/mcp/config.js +119 -0
- package/dist/cli/commands/mcp/config.js.map +1 -0
- package/dist/cli/commands/mcp/index.d.ts +9 -0
- package/dist/cli/commands/mcp/index.js +92 -0
- package/dist/cli/commands/mcp/index.js.map +1 -0
- package/dist/cli/commands/mcp/serve.d.ts +1 -0
- package/dist/cli/commands/mcp/serve.js +76 -0
- package/dist/cli/commands/mcp/serve.js.map +1 -0
- package/dist/cli/commands/mcp/setup.d.ts +1 -0
- package/dist/cli/commands/mcp/setup.js +83 -0
- package/dist/cli/commands/mcp/setup.js.map +1 -0
- package/dist/cli/commands/me.d.ts +2 -0
- package/dist/cli/commands/me.js +85 -0
- package/dist/cli/commands/me.js.map +1 -0
- package/dist/cli/commands/move.d.ts +2 -0
- package/dist/cli/commands/move.js +81 -0
- package/dist/cli/commands/move.js.map +1 -0
- package/dist/cli/commands/new.d.ts +2 -0
- package/dist/cli/commands/new.js +222 -0
- package/dist/cli/commands/new.js.map +1 -0
- package/dist/cli/commands/open.d.ts +2 -0
- package/dist/cli/commands/open.js +43 -0
- package/dist/cli/commands/open.js.map +1 -0
- package/dist/cli/commands/period.d.ts +10 -0
- package/dist/cli/commands/period.js +165 -0
- package/dist/cli/commands/period.js.map +1 -0
- package/dist/cli/commands/profile.d.ts +2 -0
- package/dist/cli/commands/profile.js +133 -0
- package/dist/cli/commands/profile.js.map +1 -0
- package/dist/cli/commands/queue.d.ts +2 -0
- package/dist/cli/commands/queue.js +582 -0
- package/dist/cli/commands/queue.js.map +1 -0
- package/dist/cli/commands/remote.d.ts +10 -0
- package/dist/cli/commands/remote.js +3142 -0
- package/dist/cli/commands/remote.js.map +1 -0
- package/dist/cli/commands/rm.d.ts +2 -0
- package/dist/cli/commands/rm.js +63 -0
- package/dist/cli/commands/rm.js.map +1 -0
- package/dist/cli/commands/set.d.ts +2 -0
- package/dist/cli/commands/set.js +139 -0
- package/dist/cli/commands/set.js.map +1 -0
- package/dist/cli/commands/split.d.ts +2 -0
- package/dist/cli/commands/split.js +90 -0
- package/dist/cli/commands/split.js.map +1 -0
- package/dist/cli/commands/task.d.ts +2 -0
- package/dist/cli/commands/task.js +298 -0
- package/dist/cli/commands/task.js.map +1 -0
- package/dist/cli/commands/team.d.ts +2 -0
- package/dist/cli/commands/team.js +114 -0
- package/dist/cli/commands/team.js.map +1 -0
- package/dist/cli/commands/template.d.ts +2 -0
- package/dist/cli/commands/template.js +338 -0
- package/dist/cli/commands/template.js.map +1 -0
- package/dist/cli/commands/ui.d.ts +2 -0
- package/dist/cli/commands/ui.js +98 -0
- package/dist/cli/commands/ui.js.map +1 -0
- package/dist/cli/commands/upstream.d.ts +2 -0
- package/dist/cli/commands/upstream.js +218 -0
- package/dist/cli/commands/upstream.js.map +1 -0
- package/dist/cli/context.d.ts +24 -0
- package/dist/cli/context.js +52 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +208 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/live.d.ts +71 -0
- package/dist/cli/live.js +182 -0
- package/dist/cli/live.js.map +1 -0
- package/dist/cli/plan.d.ts +28 -0
- package/dist/cli/plan.js +76 -0
- package/dist/cli/plan.js.map +1 -0
- package/dist/cli/prompt.d.ts +60 -0
- package/dist/cli/prompt.js +185 -0
- package/dist/cli/prompt.js.map +1 -0
- package/dist/cli/ui.d.ts +65 -0
- package/dist/cli/ui.js +79 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/core/board/dependency-rollup.d.ts +54 -0
- package/dist/core/board/dependency-rollup.js +72 -0
- package/dist/core/board/dependency-rollup.js.map +1 -0
- package/dist/core/board/flag-rollup.d.ts +33 -0
- package/dist/core/board/flag-rollup.js +56 -0
- package/dist/core/board/flag-rollup.js.map +1 -0
- package/dist/core/board/index.d.ts +21 -0
- package/dist/core/board/index.js +22 -0
- package/dist/core/board/index.js.map +1 -0
- package/dist/core/board/load/cache.d.ts +52 -0
- package/dist/core/board/load/cache.js +105 -0
- package/dist/core/board/load/cache.js.map +1 -0
- package/dist/core/board/load/fields.d.ts +33 -0
- package/dist/core/board/load/fields.js +154 -0
- package/dist/core/board/load/fields.js.map +1 -0
- package/dist/core/board/load/scan.d.ts +39 -0
- package/dist/core/board/load/scan.js +88 -0
- package/dist/core/board/load/scan.js.map +1 -0
- package/dist/core/board/load/tree.d.ts +10 -0
- package/dist/core/board/load/tree.js +114 -0
- package/dist/core/board/load/tree.js.map +1 -0
- package/dist/core/board/load.d.ts +69 -0
- package/dist/core/board/load.js +204 -0
- package/dist/core/board/load.js.map +1 -0
- package/dist/core/board/query.d.ts +126 -0
- package/dist/core/board/query.js +291 -0
- package/dist/core/board/query.js.map +1 -0
- package/dist/core/board/registry.d.ts +51 -0
- package/dist/core/board/registry.js +98 -0
- package/dist/core/board/registry.js.map +1 -0
- package/dist/core/board/remote-scopes.d.ts +71 -0
- package/dist/core/board/remote-scopes.js +103 -0
- package/dist/core/board/remote-scopes.js.map +1 -0
- package/dist/core/board/rollup.d.ts +32 -0
- package/dist/core/board/rollup.js +67 -0
- package/dist/core/board/rollup.js.map +1 -0
- package/dist/core/board/scope.d.ts +81 -0
- package/dist/core/board/scope.js +134 -0
- package/dist/core/board/scope.js.map +1 -0
- package/dist/core/board/simulate.d.ts +138 -0
- package/dist/core/board/simulate.js +141 -0
- package/dist/core/board/simulate.js.map +1 -0
- package/dist/core/board/tasks/index.d.ts +25 -0
- package/dist/core/board/tasks/index.js +26 -0
- package/dist/core/board/tasks/index.js.map +1 -0
- package/dist/core/board/tasks/ranking.d.ts +155 -0
- package/dist/core/board/tasks/ranking.js +374 -0
- package/dist/core/board/tasks/ranking.js.map +1 -0
- package/dist/core/board/tasks/roster.d.ts +42 -0
- package/dist/core/board/tasks/roster.js +82 -0
- package/dist/core/board/tasks/roster.js.map +1 -0
- package/dist/core/board/tasks.d.ts +1 -0
- package/dist/core/board/tasks.js +2 -0
- package/dist/core/board/tasks.js.map +1 -0
- package/dist/core/config/index.d.ts +9 -0
- package/dist/core/config/index.js +10 -0
- package/dist/core/config/index.js.map +1 -0
- package/dist/core/config/lookup.d.ts +114 -0
- package/dist/core/config/lookup.js +221 -0
- package/dist/core/config/lookup.js.map +1 -0
- package/dist/core/config/remote-blocks.d.ts +17 -0
- package/dist/core/config/remote-blocks.js +47 -0
- package/dist/core/config/remote-blocks.js.map +1 -0
- package/dist/core/config/schema.d.ts +10 -0
- package/dist/core/config/schema.js +451 -0
- package/dist/core/config/schema.js.map +1 -0
- package/dist/core/errors.d.ts +23 -0
- package/dist/core/errors.js +31 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/gitsync/hosts.d.ts +40 -0
- package/dist/core/gitsync/hosts.js +115 -0
- package/dist/core/gitsync/hosts.js.map +1 -0
- package/dist/core/gitsync/index.d.ts +25 -0
- package/dist/core/gitsync/index.js +25 -0
- package/dist/core/gitsync/index.js.map +1 -0
- package/dist/core/gitsync/integrate.d.ts +72 -0
- package/dist/core/gitsync/integrate.js +115 -0
- package/dist/core/gitsync/integrate.js.map +1 -0
- package/dist/core/gitsync/repo.d.ts +61 -0
- package/dist/core/gitsync/repo.js +213 -0
- package/dist/core/gitsync/repo.js.map +1 -0
- package/dist/core/gitsync/run.d.ts +58 -0
- package/dist/core/gitsync/run.js +102 -0
- package/dist/core/gitsync/run.js.map +1 -0
- package/dist/core/gitsync/status.d.ts +59 -0
- package/dist/core/gitsync/status.js +81 -0
- package/dist/core/gitsync/status.js.map +1 -0
- package/dist/core/gitsync/sync.d.ts +111 -0
- package/dist/core/gitsync/sync.js +275 -0
- package/dist/core/gitsync/sync.js.map +1 -0
- package/dist/core/index.d.ts +31 -0
- package/dist/core/index.js +32 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/instructions/analyze.d.ts +70 -0
- package/dist/core/instructions/analyze.js +275 -0
- package/dist/core/instructions/analyze.js.map +1 -0
- package/dist/core/instructions/builtin.d.ts +21 -0
- package/dist/core/instructions/builtin.js +133 -0
- package/dist/core/instructions/builtin.js.map +1 -0
- package/dist/core/instructions/context.d.ts +155 -0
- package/dist/core/instructions/context.js +209 -0
- package/dist/core/instructions/context.js.map +1 -0
- package/dist/core/instructions/index.d.ts +29 -0
- package/dist/core/instructions/index.js +30 -0
- package/dist/core/instructions/index.js.map +1 -0
- package/dist/core/instructions/instructions.d.ts +90 -0
- package/dist/core/instructions/instructions.js +179 -0
- package/dist/core/instructions/instructions.js.map +1 -0
- package/dist/core/instructions/template.d.ts +108 -0
- package/dist/core/instructions/template.js +252 -0
- package/dist/core/instructions/template.js.map +1 -0
- package/dist/core/model/attributes.d.ts +16 -0
- package/dist/core/model/attributes.js +119 -0
- package/dist/core/model/attributes.js.map +1 -0
- package/dist/core/model/index.d.ts +10 -0
- package/dist/core/model/index.js +11 -0
- package/dist/core/model/index.js.map +1 -0
- package/dist/core/model/links.d.ts +34 -0
- package/dist/core/model/links.js +114 -0
- package/dist/core/model/links.js.map +1 -0
- package/dist/core/model/profile.d.ts +31 -0
- package/dist/core/model/profile.js +8 -0
- package/dist/core/model/profile.js.map +1 -0
- package/dist/core/model/types.d.ts +441 -0
- package/dist/core/model/types.js +167 -0
- package/dist/core/model/types.js.map +1 -0
- package/dist/core/model/zod.d.ts +6 -0
- package/dist/core/model/zod.js +11 -0
- package/dist/core/model/zod.js.map +1 -0
- package/dist/core/operations/board-index.d.ts +45 -0
- package/dist/core/operations/board-index.js +147 -0
- package/dist/core/operations/board-index.js.map +1 -0
- package/dist/core/operations/claim.d.ts +69 -0
- package/dist/core/operations/claim.js +115 -0
- package/dist/core/operations/claim.js.map +1 -0
- package/dist/core/operations/comment.d.ts +30 -0
- package/dist/core/operations/comment.js +46 -0
- package/dist/core/operations/comment.js.map +1 -0
- package/dist/core/operations/create.d.ts +82 -0
- package/dist/core/operations/create.js +306 -0
- package/dist/core/operations/create.js.map +1 -0
- package/dist/core/operations/flag.d.ts +58 -0
- package/dist/core/operations/flag.js +95 -0
- package/dist/core/operations/flag.js.map +1 -0
- package/dist/core/operations/git-sync.d.ts +148 -0
- package/dist/core/operations/git-sync.js +341 -0
- package/dist/core/operations/git-sync.js.map +1 -0
- package/dist/core/operations/index.d.ts +44 -0
- package/dist/core/operations/index.js +45 -0
- package/dist/core/operations/index.js.map +1 -0
- package/dist/core/operations/init.d.ts +25 -0
- package/dist/core/operations/init.js +122 -0
- package/dist/core/operations/init.js.map +1 -0
- package/dist/core/operations/link.d.ts +40 -0
- package/dist/core/operations/link.js +131 -0
- package/dist/core/operations/link.js.map +1 -0
- package/dist/core/operations/move.d.ts +43 -0
- package/dist/core/operations/move.js +103 -0
- package/dist/core/operations/move.js.map +1 -0
- package/dist/core/operations/profile.d.ts +23 -0
- package/dist/core/operations/profile.js +26 -0
- package/dist/core/operations/profile.js.map +1 -0
- package/dist/core/operations/remotes-off.d.ts +12 -0
- package/dist/core/operations/remotes-off.js +67 -0
- package/dist/core/operations/remotes-off.js.map +1 -0
- package/dist/core/operations/remove.d.ts +18 -0
- package/dist/core/operations/remove.js +114 -0
- package/dist/core/operations/remove.js.map +1 -0
- package/dist/core/operations/retype.d.ts +25 -0
- package/dist/core/operations/retype.js +59 -0
- package/dist/core/operations/retype.js.map +1 -0
- package/dist/core/operations/rollup.d.ts +74 -0
- package/dist/core/operations/rollup.js +121 -0
- package/dist/core/operations/rollup.js.map +1 -0
- package/dist/core/operations/shared.d.ts +133 -0
- package/dist/core/operations/shared.js +383 -0
- package/dist/core/operations/shared.js.map +1 -0
- package/dist/core/operations/update.d.ts +43 -0
- package/dist/core/operations/update.js +161 -0
- package/dist/core/operations/update.js.map +1 -0
- package/dist/core/operations/user.d.ts +27 -0
- package/dist/core/operations/user.js +68 -0
- package/dist/core/operations/user.js.map +1 -0
- package/dist/core/profile/current.d.ts +35 -0
- package/dist/core/profile/current.js +31 -0
- package/dist/core/profile/current.js.map +1 -0
- package/dist/core/profile/index.d.ts +14 -0
- package/dist/core/profile/index.js +15 -0
- package/dist/core/profile/index.js.map +1 -0
- package/dist/core/profile/schema.d.ts +9 -0
- package/dist/core/profile/schema.js +100 -0
- package/dist/core/profile/schema.js.map +1 -0
- package/dist/core/storage/activity.d.ts +78 -0
- package/dist/core/storage/activity.js +131 -0
- package/dist/core/storage/activity.js.map +1 -0
- package/dist/core/storage/atomic.d.ts +34 -0
- package/dist/core/storage/atomic.js +117 -0
- package/dist/core/storage/atomic.js.map +1 -0
- package/dist/core/storage/comments.d.ts +39 -0
- package/dist/core/storage/comments.js +88 -0
- package/dist/core/storage/comments.js.map +1 -0
- package/dist/core/storage/document.d.ts +16 -0
- package/dist/core/storage/document.js +98 -0
- package/dist/core/storage/document.js.map +1 -0
- package/dist/core/storage/frontmatter.d.ts +16 -0
- package/dist/core/storage/frontmatter.js +33 -0
- package/dist/core/storage/frontmatter.js.map +1 -0
- package/dist/core/storage/git.d.ts +8 -0
- package/dist/core/storage/git.js +48 -0
- package/dist/core/storage/git.js.map +1 -0
- package/dist/core/storage/index.d.ts +27 -0
- package/dist/core/storage/index.js +28 -0
- package/dist/core/storage/index.js.map +1 -0
- package/dist/core/storage/local.d.ts +57 -0
- package/dist/core/storage/local.js +133 -0
- package/dist/core/storage/local.js.map +1 -0
- package/dist/core/storage/lock.d.ts +85 -0
- package/dist/core/storage/lock.js +364 -0
- package/dist/core/storage/lock.js.map +1 -0
- package/dist/core/storage/paths.d.ts +125 -0
- package/dist/core/storage/paths.js +202 -0
- package/dist/core/storage/paths.js.map +1 -0
- package/dist/core/storage/state.d.ts +32 -0
- package/dist/core/storage/state.js +71 -0
- package/dist/core/storage/state.js.map +1 -0
- package/dist/core/storage/templates.d.ts +29 -0
- package/dist/core/storage/templates.js +62 -0
- package/dist/core/storage/templates.js.map +1 -0
- package/dist/core/storage/views.d.ts +18 -0
- package/dist/core/storage/views.js +62 -0
- package/dist/core/storage/views.js.map +1 -0
- package/dist/core/validation/check.d.ts +4 -0
- package/dist/core/validation/check.js +22 -0
- package/dist/core/validation/check.js.map +1 -0
- package/dist/core/validation/checks/collection.d.ts +4 -0
- package/dist/core/validation/checks/collection.js +152 -0
- package/dist/core/validation/checks/collection.js.map +1 -0
- package/dist/core/validation/checks/counters.d.ts +3 -0
- package/dist/core/validation/checks/counters.js +23 -0
- package/dist/core/validation/checks/counters.js.map +1 -0
- package/dist/core/validation/checks/dependencies.d.ts +3 -0
- package/dist/core/validation/checks/dependencies.js +58 -0
- package/dist/core/validation/checks/dependencies.js.map +1 -0
- package/dist/core/validation/checks/gitignore.d.ts +10 -0
- package/dist/core/validation/checks/gitignore.js +22 -0
- package/dist/core/validation/checks/gitignore.js.map +1 -0
- package/dist/core/validation/checks/index-file.d.ts +8 -0
- package/dist/core/validation/checks/index-file.js +26 -0
- package/dist/core/validation/checks/index-file.js.map +1 -0
- package/dist/core/validation/checks/index.d.ts +20 -0
- package/dist/core/validation/checks/index.js +21 -0
- package/dist/core/validation/checks/index.js.map +1 -0
- package/dist/core/validation/checks/issues.d.ts +3 -0
- package/dist/core/validation/checks/issues.js +152 -0
- package/dist/core/validation/checks/issues.js.map +1 -0
- package/dist/core/validation/checks/periods.d.ts +3 -0
- package/dist/core/validation/checks/periods.js +89 -0
- package/dist/core/validation/checks/periods.js.map +1 -0
- package/dist/core/validation/checks/remotes.d.ts +20 -0
- package/dist/core/validation/checks/remotes.js +42 -0
- package/dist/core/validation/checks/remotes.js.map +1 -0
- package/dist/core/validation/checks/resources.d.ts +3 -0
- package/dist/core/validation/checks/resources.js +77 -0
- package/dist/core/validation/checks/resources.js.map +1 -0
- package/dist/core/validation/checks/rollup.d.ts +27 -0
- package/dist/core/validation/checks/rollup.js +53 -0
- package/dist/core/validation/checks/rollup.js.map +1 -0
- package/dist/core/validation/checks/squads.d.ts +3 -0
- package/dist/core/validation/checks/squads.js +42 -0
- package/dist/core/validation/checks/squads.js.map +1 -0
- package/dist/core/validation/checks/templates.d.ts +14 -0
- package/dist/core/validation/checks/templates.js +119 -0
- package/dist/core/validation/checks/templates.js.map +1 -0
- package/dist/core/validation/fix.d.ts +7 -0
- package/dist/core/validation/fix.js +273 -0
- package/dist/core/validation/fix.js.map +1 -0
- package/dist/core/validation/index.d.ts +7 -0
- package/dist/core/validation/index.js +8 -0
- package/dist/core/validation/index.js.map +1 -0
- package/dist/core/validation/shared.d.ts +47 -0
- package/dist/core/validation/shared.js +66 -0
- package/dist/core/validation/shared.js.map +1 -0
- package/dist/mcp/context.d.ts +70 -0
- package/dist/mcp/context.js +110 -0
- package/dist/mcp/context.js.map +1 -0
- package/dist/mcp/index.d.ts +49 -0
- package/dist/mcp/index.js +90 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/reply.d.ts +28 -0
- package/dist/mcp/reply.js +34 -0
- package/dist/mcp/reply.js.map +1 -0
- package/dist/mcp/tools/plan/create.d.ts +3 -0
- package/dist/mcp/tools/plan/create.js +128 -0
- package/dist/mcp/tools/plan/create.js.map +1 -0
- package/dist/mcp/tools/plan/delete.d.ts +3 -0
- package/dist/mcp/tools/plan/delete.js +35 -0
- package/dist/mcp/tools/plan/delete.js.map +1 -0
- package/dist/mcp/tools/plan/graph.d.ts +3 -0
- package/dist/mcp/tools/plan/graph.js +53 -0
- package/dist/mcp/tools/plan/graph.js.map +1 -0
- package/dist/mcp/tools/plan/index.d.ts +15 -0
- package/dist/mcp/tools/plan/index.js +16 -0
- package/dist/mcp/tools/plan/index.js.map +1 -0
- package/dist/mcp/tools/plan/link.d.ts +3 -0
- package/dist/mcp/tools/plan/link.js +46 -0
- package/dist/mcp/tools/plan/link.js.map +1 -0
- package/dist/mcp/tools/plan/registrar.d.ts +10 -0
- package/dist/mcp/tools/plan/registrar.js +24 -0
- package/dist/mcp/tools/plan/registrar.js.map +1 -0
- package/dist/mcp/tools/plan/reshape.d.ts +3 -0
- package/dist/mcp/tools/plan/reshape.js +95 -0
- package/dist/mcp/tools/plan/reshape.js.map +1 -0
- package/dist/mcp/tools/plan/timeline.d.ts +3 -0
- package/dist/mcp/tools/plan/timeline.js +68 -0
- package/dist/mcp/tools/plan/timeline.js.map +1 -0
- package/dist/mcp/tools/plan/upstream.d.ts +14 -0
- package/dist/mcp/tools/plan/upstream.js +69 -0
- package/dist/mcp/tools/plan/upstream.js.map +1 -0
- package/dist/mcp/tools/plan.d.ts +1 -0
- package/dist/mcp/tools/plan.js +2 -0
- package/dist/mcp/tools/plan.js.map +1 -0
- package/dist/mcp/tools/read.d.ts +3 -0
- package/dist/mcp/tools/read.js +339 -0
- package/dist/mcp/tools/read.js.map +1 -0
- package/dist/mcp/tools/remote.d.ts +3 -0
- package/dist/mcp/tools/remote.js +254 -0
- package/dist/mcp/tools/remote.js.map +1 -0
- package/dist/mcp/tools/templates.d.ts +12 -0
- package/dist/mcp/tools/templates.js +165 -0
- package/dist/mcp/tools/templates.js.map +1 -0
- package/dist/mcp/tools/work.d.ts +16 -0
- package/dist/mcp/tools/work.js +359 -0
- package/dist/mcp/tools/work.js.map +1 -0
- package/dist/remote/accounts.d.ts +158 -0
- package/dist/remote/accounts.js +207 -0
- package/dist/remote/accounts.js.map +1 -0
- package/dist/remote/adopt.d.ts +139 -0
- package/dist/remote/adopt.js +181 -0
- package/dist/remote/adopt.js.map +1 -0
- package/dist/remote/anchor.d.ts +35 -0
- package/dist/remote/anchor.js +53 -0
- package/dist/remote/anchor.js.map +1 -0
- package/dist/remote/attributes.d.ts +103 -0
- package/dist/remote/attributes.js +245 -0
- package/dist/remote/attributes.js.map +1 -0
- package/dist/remote/audit.d.ts +112 -0
- package/dist/remote/audit.js +215 -0
- package/dist/remote/audit.js.map +1 -0
- package/dist/remote/capabilities.d.ts +267 -0
- package/dist/remote/capabilities.js +225 -0
- package/dist/remote/capabilities.js.map +1 -0
- package/dist/remote/check.d.ts +49 -0
- package/dist/remote/check.js +356 -0
- package/dist/remote/check.js.map +1 -0
- package/dist/remote/comments.d.ts +86 -0
- package/dist/remote/comments.js +87 -0
- package/dist/remote/comments.js.map +1 -0
- package/dist/remote/config-file.d.ts +237 -0
- package/dist/remote/config-file.js +640 -0
- package/dist/remote/config-file.js.map +1 -0
- package/dist/remote/conflicts.d.ts +110 -0
- package/dist/remote/conflicts.js +188 -0
- package/dist/remote/conflicts.js.map +1 -0
- package/dist/remote/connection-catalogue.d.ts +65 -0
- package/dist/remote/connection-catalogue.js +66 -0
- package/dist/remote/connection-catalogue.js.map +1 -0
- package/dist/remote/connection.d.ts +84 -0
- package/dist/remote/connection.js +229 -0
- package/dist/remote/connection.js.map +1 -0
- package/dist/remote/coverage.d.ts +65 -0
- package/dist/remote/coverage.js +244 -0
- package/dist/remote/coverage.js.map +1 -0
- package/dist/remote/credentials.d.ts +95 -0
- package/dist/remote/credentials.js +210 -0
- package/dist/remote/credentials.js.map +1 -0
- package/dist/remote/execute.d.ts +178 -0
- package/dist/remote/execute.js +1245 -0
- package/dist/remote/execute.js.map +1 -0
- package/dist/remote/fingerprint.d.ts +172 -0
- package/dist/remote/fingerprint.js +337 -0
- package/dist/remote/fingerprint.js.map +1 -0
- package/dist/remote/fixtures.d.ts +176 -0
- package/dist/remote/fixtures.js +432 -0
- package/dist/remote/fixtures.js.map +1 -0
- package/dist/remote/guard.d.ts +90 -0
- package/dist/remote/guard.js +83 -0
- package/dist/remote/guard.js.map +1 -0
- package/dist/remote/hierarchy.d.ts +141 -0
- package/dist/remote/hierarchy.js +129 -0
- package/dist/remote/hierarchy.js.map +1 -0
- package/dist/remote/index.d.ts +145 -0
- package/dist/remote/index.js +146 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/remote/inspect.d.ts +103 -0
- package/dist/remote/inspect.js +152 -0
- package/dist/remote/inspect.js.map +1 -0
- package/dist/remote/labels.d.ts +75 -0
- package/dist/remote/labels.js +137 -0
- package/dist/remote/labels.js.map +1 -0
- package/dist/remote/ladder.d.ts +145 -0
- package/dist/remote/ladder.js +387 -0
- package/dist/remote/ladder.js.map +1 -0
- package/dist/remote/ledger.d.ts +97 -0
- package/dist/remote/ledger.js +148 -0
- package/dist/remote/ledger.js.map +1 -0
- package/dist/remote/lifecycle.d.ts +175 -0
- package/dist/remote/lifecycle.js +274 -0
- package/dist/remote/lifecycle.js.map +1 -0
- package/dist/remote/links.d.ts +411 -0
- package/dist/remote/links.js +748 -0
- package/dist/remote/links.js.map +1 -0
- package/dist/remote/managed-block.d.ts +182 -0
- package/dist/remote/managed-block.js +406 -0
- package/dist/remote/managed-block.js.map +1 -0
- package/dist/remote/managed-comment.d.ts +104 -0
- package/dist/remote/managed-comment.js +92 -0
- package/dist/remote/managed-comment.js.map +1 -0
- package/dist/remote/mapping.d.ts +282 -0
- package/dist/remote/mapping.js +336 -0
- package/dist/remote/mapping.js.map +1 -0
- package/dist/remote/merge.d.ts +172 -0
- package/dist/remote/merge.js +221 -0
- package/dist/remote/merge.js.map +1 -0
- package/dist/remote/periods.d.ts +209 -0
- package/dist/remote/periods.js +224 -0
- package/dist/remote/periods.js.map +1 -0
- package/dist/remote/plan.d.ts +671 -0
- package/dist/remote/plan.js +1210 -0
- package/dist/remote/plan.js.map +1 -0
- package/dist/remote/policy.d.ts +67 -0
- package/dist/remote/policy.js +67 -0
- package/dist/remote/policy.js.map +1 -0
- package/dist/remote/preflight.d.ts +112 -0
- package/dist/remote/preflight.js +342 -0
- package/dist/remote/preflight.js.map +1 -0
- package/dist/remote/prerequisites.d.ts +113 -0
- package/dist/remote/prerequisites.js +161 -0
- package/dist/remote/prerequisites.js.map +1 -0
- package/dist/remote/provider.d.ts +802 -0
- package/dist/remote/provider.js +27 -0
- package/dist/remote/provider.js.map +1 -0
- package/dist/remote/providers/github/config.d.ts +84 -0
- package/dist/remote/providers/github/config.js +161 -0
- package/dist/remote/providers/github/config.js.map +1 -0
- package/dist/remote/providers/github/connector.d.ts +33 -0
- package/dist/remote/providers/github/connector.js +774 -0
- package/dist/remote/providers/github/connector.js.map +1 -0
- package/dist/remote/providers/github/edges.d.ts +29 -0
- package/dist/remote/providers/github/edges.js +56 -0
- package/dist/remote/providers/github/edges.js.map +1 -0
- package/dist/remote/providers/github/hierarchy.d.ts +21 -0
- package/dist/remote/providers/github/hierarchy.js +46 -0
- package/dist/remote/providers/github/hierarchy.js.map +1 -0
- package/dist/remote/providers/github/index.d.ts +26 -0
- package/dist/remote/providers/github/index.js +69 -0
- package/dist/remote/providers/github/index.js.map +1 -0
- package/dist/remote/providers/github/project-iteration.d.ts +71 -0
- package/dist/remote/providers/github/project-iteration.js +203 -0
- package/dist/remote/providers/github/project-iteration.js.map +1 -0
- package/dist/remote/providers/github/project-provision.d.ts +130 -0
- package/dist/remote/providers/github/project-provision.js +247 -0
- package/dist/remote/providers/github/project-provision.js.map +1 -0
- package/dist/remote/providers/github/project-status.d.ts +115 -0
- package/dist/remote/providers/github/project-status.js +317 -0
- package/dist/remote/providers/github/project-status.js.map +1 -0
- package/dist/remote/providers/github/projects.d.ts +181 -0
- package/dist/remote/providers/github/projects.js +481 -0
- package/dist/remote/providers/github/projects.js.map +1 -0
- package/dist/remote/providers/github/translator.d.ts +103 -0
- package/dist/remote/providers/github/translator.js +400 -0
- package/dist/remote/providers/github/translator.js.map +1 -0
- package/dist/remote/providers/jira/config.d.ts +96 -0
- package/dist/remote/providers/jira/config.js +200 -0
- package/dist/remote/providers/jira/config.js.map +1 -0
- package/dist/remote/providers/jira/connector.d.ts +42 -0
- package/dist/remote/providers/jira/connector.js +1688 -0
- package/dist/remote/providers/jira/connector.js.map +1 -0
- package/dist/remote/providers/jira/fields.d.ts +292 -0
- package/dist/remote/providers/jira/fields.js +463 -0
- package/dist/remote/providers/jira/fields.js.map +1 -0
- package/dist/remote/providers/jira/hierarchy.d.ts +28 -0
- package/dist/remote/providers/jira/hierarchy.js +60 -0
- package/dist/remote/providers/jira/hierarchy.js.map +1 -0
- package/dist/remote/providers/jira/index.d.ts +29 -0
- package/dist/remote/providers/jira/index.js +100 -0
- package/dist/remote/providers/jira/index.js.map +1 -0
- package/dist/remote/providers/jira/links.d.ts +41 -0
- package/dist/remote/providers/jira/links.js +102 -0
- package/dist/remote/providers/jira/links.js.map +1 -0
- package/dist/remote/providers/jira/sprints.d.ts +80 -0
- package/dist/remote/providers/jira/sprints.js +107 -0
- package/dist/remote/providers/jira/sprints.js.map +1 -0
- package/dist/remote/providers/jira/translator.d.ts +61 -0
- package/dist/remote/providers/jira/translator.js +382 -0
- package/dist/remote/providers/jira/translator.js.map +1 -0
- package/dist/remote/providers/jira/types.d.ts +112 -0
- package/dist/remote/providers/jira/types.js +160 -0
- package/dist/remote/providers/jira/types.js.map +1 -0
- package/dist/remote/providers/jira/vocabulary.d.ts +55 -0
- package/dist/remote/providers/jira/vocabulary.js +91 -0
- package/dist/remote/providers/jira/vocabulary.js.map +1 -0
- package/dist/remote/providers/jsonfile/config.d.ts +61 -0
- package/dist/remote/providers/jsonfile/config.js +83 -0
- package/dist/remote/providers/jsonfile/config.js.map +1 -0
- package/dist/remote/providers/jsonfile/connector.d.ts +34 -0
- package/dist/remote/providers/jsonfile/connector.js +251 -0
- package/dist/remote/providers/jsonfile/connector.js.map +1 -0
- package/dist/remote/providers/jsonfile/index.d.ts +38 -0
- package/dist/remote/providers/jsonfile/index.js +90 -0
- package/dist/remote/providers/jsonfile/index.js.map +1 -0
- package/dist/remote/providers/jsonfile/store.d.ts +59 -0
- package/dist/remote/providers/jsonfile/store.js +48 -0
- package/dist/remote/providers/jsonfile/store.js.map +1 -0
- package/dist/remote/providers/jsonfile/translator.d.ts +54 -0
- package/dist/remote/providers/jsonfile/translator.js +199 -0
- package/dist/remote/providers/jsonfile/translator.js.map +1 -0
- package/dist/remote/providers/linear/config.d.ts +83 -0
- package/dist/remote/providers/linear/config.js +140 -0
- package/dist/remote/providers/linear/config.js.map +1 -0
- package/dist/remote/providers/linear/connector.d.ts +36 -0
- package/dist/remote/providers/linear/connector.js +438 -0
- package/dist/remote/providers/linear/connector.js.map +1 -0
- package/dist/remote/providers/linear/estimate.d.ts +63 -0
- package/dist/remote/providers/linear/estimate.js +112 -0
- package/dist/remote/providers/linear/estimate.js.map +1 -0
- package/dist/remote/providers/linear/index.d.ts +31 -0
- package/dist/remote/providers/linear/index.js +75 -0
- package/dist/remote/providers/linear/index.js.map +1 -0
- package/dist/remote/providers/linear/labels.d.ts +51 -0
- package/dist/remote/providers/linear/labels.js +129 -0
- package/dist/remote/providers/linear/labels.js.map +1 -0
- package/dist/remote/providers/linear/states.d.ts +97 -0
- package/dist/remote/providers/linear/states.js +124 -0
- package/dist/remote/providers/linear/states.js.map +1 -0
- package/dist/remote/providers/linear/translator.d.ts +48 -0
- package/dist/remote/providers/linear/translator.js +343 -0
- package/dist/remote/providers/linear/translator.js.map +1 -0
- package/dist/remote/providers/linear/vocabulary.d.ts +27 -0
- package/dist/remote/providers/linear/vocabulary.js +42 -0
- package/dist/remote/providers/linear/vocabulary.js.map +1 -0
- package/dist/remote/provision.d.ts +45 -0
- package/dist/remote/provision.js +81 -0
- package/dist/remote/provision.js.map +1 -0
- package/dist/remote/pull.d.ts +52 -0
- package/dist/remote/pull.js +116 -0
- package/dist/remote/pull.js.map +1 -0
- package/dist/remote/readiness.d.ts +67 -0
- package/dist/remote/readiness.js +336 -0
- package/dist/remote/readiness.js.map +1 -0
- package/dist/remote/rebase.d.ts +157 -0
- package/dist/remote/rebase.js +255 -0
- package/dist/remote/rebase.js.map +1 -0
- package/dist/remote/reconcile.d.ts +115 -0
- package/dist/remote/reconcile.js +140 -0
- package/dist/remote/reconcile.js.map +1 -0
- package/dist/remote/redact.d.ts +70 -0
- package/dist/remote/redact.js +132 -0
- package/dist/remote/redact.js.map +1 -0
- package/dist/remote/registry.d.ts +32 -0
- package/dist/remote/registry.js +54 -0
- package/dist/remote/registry.js.map +1 -0
- package/dist/remote/remotes.d.ts +94 -0
- package/dist/remote/remotes.js +182 -0
- package/dist/remote/remotes.js.map +1 -0
- package/dist/remote/render.d.ts +147 -0
- package/dist/remote/render.js +683 -0
- package/dist/remote/render.js.map +1 -0
- package/dist/remote/report.d.ts +63 -0
- package/dist/remote/report.js +345 -0
- package/dist/remote/report.js.map +1 -0
- package/dist/remote/resolutions.d.ts +115 -0
- package/dist/remote/resolutions.js +217 -0
- package/dist/remote/resolutions.js.map +1 -0
- package/dist/remote/scaffold.d.ts +134 -0
- package/dist/remote/scaffold.js +370 -0
- package/dist/remote/scaffold.js.map +1 -0
- package/dist/remote/scope.d.ts +57 -0
- package/dist/remote/scope.js +91 -0
- package/dist/remote/scope.js.map +1 -0
- package/dist/remote/selection.d.ts +38 -0
- package/dist/remote/selection.js +50 -0
- package/dist/remote/selection.js.map +1 -0
- package/dist/remote/shape.d.ts +141 -0
- package/dist/remote/shape.js +220 -0
- package/dist/remote/shape.js.map +1 -0
- package/dist/remote/status.d.ts +104 -0
- package/dist/remote/status.js +238 -0
- package/dist/remote/status.js.map +1 -0
- package/dist/remote/sync.d.ts +182 -0
- package/dist/remote/sync.js +523 -0
- package/dist/remote/sync.js.map +1 -0
- package/dist/remote/transport/budget.d.ts +48 -0
- package/dist/remote/transport/budget.js +68 -0
- package/dist/remote/transport/budget.js.map +1 -0
- package/dist/remote/transport/connector.d.ts +115 -0
- package/dist/remote/transport/connector.js +21 -0
- package/dist/remote/transport/connector.js.map +1 -0
- package/dist/remote/transport/error.d.ts +88 -0
- package/dist/remote/transport/error.js +196 -0
- package/dist/remote/transport/error.js.map +1 -0
- package/dist/remote/transport/gh.d.ts +20 -0
- package/dist/remote/transport/gh.js +41 -0
- package/dist/remote/transport/gh.js.map +1 -0
- package/dist/remote/transport/graphql.d.ts +25 -0
- package/dist/remote/transport/graphql.js +81 -0
- package/dist/remote/transport/graphql.js.map +1 -0
- package/dist/remote/transport/http.d.ts +47 -0
- package/dist/remote/transport/http.js +195 -0
- package/dist/remote/transport/http.js.map +1 -0
- package/dist/remote/transport/index.d.ts +18 -0
- package/dist/remote/transport/index.js +19 -0
- package/dist/remote/transport/index.js.map +1 -0
- package/dist/remote/transport/process.d.ts +39 -0
- package/dist/remote/transport/process.js +121 -0
- package/dist/remote/transport/process.js.map +1 -0
- package/dist/remote/transport/rest.d.ts +22 -0
- package/dist/remote/transport/rest.js +57 -0
- package/dist/remote/transport/rest.js.map +1 -0
- package/dist/remote/transport/retry.d.ts +91 -0
- package/dist/remote/transport/retry.js +138 -0
- package/dist/remote/transport/retry.js.map +1 -0
- package/dist/remote/transport-error.d.ts +19 -0
- package/dist/remote/transport-error.js +22 -0
- package/dist/remote/transport-error.js.map +1 -0
- package/dist/remote/vocabulary.d.ts +126 -0
- package/dist/remote/vocabulary.js +57 -0
- package/dist/remote/vocabulary.js.map +1 -0
- package/dist/runner/config.d.ts +7 -0
- package/dist/runner/config.js +61 -0
- package/dist/runner/config.js.map +1 -0
- package/dist/runner/git.d.ts +19 -0
- package/dist/runner/git.js +26 -0
- package/dist/runner/git.js.map +1 -0
- package/dist/runner/index.d.ts +20 -0
- package/dist/runner/index.js +21 -0
- package/dist/runner/index.js.map +1 -0
- package/dist/runner/loop.d.ts +46 -0
- package/dist/runner/loop.js +243 -0
- package/dist/runner/loop.js.map +1 -0
- package/dist/runner/pi.d.ts +39 -0
- package/dist/runner/pi.js +276 -0
- package/dist/runner/pi.js.map +1 -0
- package/dist/runner/shell.d.ts +44 -0
- package/dist/runner/shell.js +174 -0
- package/dist/runner/shell.js.map +1 -0
- package/dist/runner/stats.d.ts +19 -0
- package/dist/runner/stats.js +58 -0
- package/dist/runner/stats.js.map +1 -0
- package/dist/runner/types.d.ts +218 -0
- package/dist/runner/types.js +37 -0
- package/dist/runner/types.js.map +1 -0
- package/dist/server/git.d.ts +8 -0
- package/dist/server/git.js +50 -0
- package/dist/server/git.js.map +1 -0
- package/dist/server/http/respond.d.ts +13 -0
- package/dist/server/http/respond.js +59 -0
- package/dist/server/http/respond.js.map +1 -0
- package/dist/server/http/router.d.ts +27 -0
- package/dist/server/http/router.js +48 -0
- package/dist/server/http/router.js.map +1 -0
- package/dist/server/http/static.d.ts +14 -0
- package/dist/server/http/static.js +55 -0
- package/dist/server/http/static.js.map +1 -0
- package/dist/server/index.d.ts +58 -0
- package/dist/server/index.js +124 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/routes/board.d.ts +8 -0
- package/dist/server/routes/board.js +19 -0
- package/dist/server/routes/board.js.map +1 -0
- package/dist/server/routes/comments.d.ts +13 -0
- package/dist/server/routes/comments.js +36 -0
- package/dist/server/routes/comments.js.map +1 -0
- package/dist/server/routes/flags.d.ts +16 -0
- package/dist/server/routes/flags.js +37 -0
- package/dist/server/routes/flags.js.map +1 -0
- package/dist/server/routes/git.d.ts +13 -0
- package/dist/server/routes/git.js +84 -0
- package/dist/server/routes/git.js.map +1 -0
- package/dist/server/routes/remotes.d.ts +36 -0
- package/dist/server/routes/remotes.js +749 -0
- package/dist/server/routes/remotes.js.map +1 -0
- package/dist/server/routes/views.d.ts +10 -0
- package/dist/server/routes/views.js +63 -0
- package/dist/server/routes/views.js.map +1 -0
- package/dist/server/views/schema.d.ts +2 -0
- package/dist/server/views/schema.js +121 -0
- package/dist/server/views/schema.js.map +1 -0
- package/dist/server/views/store.d.ts +17 -0
- package/dist/server/views/store.js +67 -0
- package/dist/server/views/store.js.map +1 -0
- package/dist/shared/adf.d.ts +83 -0
- package/dist/shared/adf.js +795 -0
- package/dist/shared/adf.js.map +1 -0
- package/dist/shared/blocking.d.ts +130 -0
- package/dist/shared/blocking.js +179 -0
- package/dist/shared/blocking.js.map +1 -0
- package/dist/shared/changes.d.ts +100 -0
- package/dist/shared/changes.js +112 -0
- package/dist/shared/changes.js.map +1 -0
- package/dist/shared/cohesion.d.ts +75 -0
- package/dist/shared/cohesion.js +132 -0
- package/dist/shared/cohesion.js.map +1 -0
- package/dist/shared/dependency-rollup.d.ts +91 -0
- package/dist/shared/dependency-rollup.js +132 -0
- package/dist/shared/dependency-rollup.js.map +1 -0
- package/dist/shared/errors.d.ts +23 -0
- package/dist/shared/errors.js +24 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/flag-rollup.d.ts +88 -0
- package/dist/shared/flag-rollup.js +119 -0
- package/dist/shared/flag-rollup.js.map +1 -0
- package/dist/shared/git-sync.d.ts +90 -0
- package/dist/shared/git-sync.js +9 -0
- package/dist/shared/git-sync.js.map +1 -0
- package/dist/shared/index.d.ts +40 -0
- package/dist/shared/index.js +41 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/model.d.ts +218 -0
- package/dist/shared/model.js +95 -0
- package/dist/shared/model.js.map +1 -0
- package/dist/shared/period-query.d.ts +21 -0
- package/dist/shared/period-query.js +26 -0
- package/dist/shared/period-query.js.map +1 -0
- package/dist/shared/period-stance.d.ts +45 -0
- package/dist/shared/period-stance.js +50 -0
- package/dist/shared/period-stance.js.map +1 -0
- package/dist/shared/plans/breakdown.d.ts +66 -0
- package/dist/shared/plans/breakdown.js +186 -0
- package/dist/shared/plans/breakdown.js.map +1 -0
- package/dist/shared/plans/index.d.ts +21 -0
- package/dist/shared/plans/index.js +22 -0
- package/dist/shared/plans/index.js.map +1 -0
- package/dist/shared/plans/instantiate.d.ts +61 -0
- package/dist/shared/plans/instantiate.js +184 -0
- package/dist/shared/plans/instantiate.js.map +1 -0
- package/dist/shared/plans/reading.d.ts +79 -0
- package/dist/shared/plans/reading.js +149 -0
- package/dist/shared/plans/reading.js.map +1 -0
- package/dist/shared/plans/reparent.d.ts +54 -0
- package/dist/shared/plans/reparent.js +217 -0
- package/dist/shared/plans/reparent.js.map +1 -0
- package/dist/shared/plans/timeline.d.ts +93 -0
- package/dist/shared/plans/timeline.js +224 -0
- package/dist/shared/plans/timeline.js.map +1 -0
- package/dist/shared/plans/upstream.d.ts +67 -0
- package/dist/shared/plans/upstream.js +73 -0
- package/dist/shared/plans/upstream.js.map +1 -0
- package/dist/shared/remote-api.d.ts +413 -0
- package/dist/shared/remote-api.js +11 -0
- package/dist/shared/remote-api.js.map +1 -0
- package/dist/shared/remote-coverage.d.ts +120 -0
- package/dist/shared/remote-coverage.js +98 -0
- package/dist/shared/remote-coverage.js.map +1 -0
- package/dist/shared/remote-readiness.d.ts +162 -0
- package/dist/shared/remote-readiness.js +49 -0
- package/dist/shared/remote-readiness.js.map +1 -0
- package/dist/shared/remote-status.d.ts +268 -0
- package/dist/shared/remote-status.js +79 -0
- package/dist/shared/remote-status.js.map +1 -0
- package/dist/shared/rollup.d.ts +90 -0
- package/dist/shared/rollup.js +119 -0
- package/dist/shared/rollup.js.map +1 -0
- package/dist/shared/static.d.ts +65 -0
- package/dist/shared/static.js +107 -0
- package/dist/shared/static.js.map +1 -0
- package/dist/shared/template-params.d.ts +80 -0
- package/dist/shared/template-params.js +141 -0
- package/dist/shared/template-params.js.map +1 -0
- package/dist/shared/view.d.ts +105 -0
- package/dist/shared/view.js +44 -0
- package/dist/shared/view.js.map +1 -0
- package/dist/shared/work-unit.d.ts +34 -0
- package/dist/shared/work-unit.js +47 -0
- package/dist/shared/work-unit.js.map +1 -0
- package/dist/sync/apply.d.ts +21 -0
- package/dist/sync/apply.js +149 -0
- package/dist/sync/apply.js.map +1 -0
- package/dist/sync/dto.d.ts +9 -0
- package/dist/sync/dto.js +162 -0
- package/dist/sync/dto.js.map +1 -0
- package/dist/sync/index.d.ts +24 -0
- package/dist/sync/index.js +25 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/patch.d.ts +13 -0
- package/dist/sync/patch.js +212 -0
- package/dist/sync/patch.js.map +1 -0
- package/dist/sync/session.d.ts +31 -0
- package/dist/sync/session.js +55 -0
- package/dist/sync/session.js.map +1 -0
- package/dist/sync/static.d.ts +11 -0
- package/dist/sync/static.js +33 -0
- package/dist/sync/static.js.map +1 -0
- package/package.json +95 -4
- package/templates/blank.yml +71 -0
- package/templates/context/bug.md +107 -0
- package/templates/context/default.md +119 -0
- package/templates/context/epic.md +81 -0
- package/templates/context/feature.md +91 -0
- package/templates/context/research.md +87 -0
- package/templates/context/review.md +81 -0
- package/templates/context/story.md +94 -0
- package/templates/context/sub_task.md +108 -0
- package/templates/context/task.md +86 -0
- package/templates/context/test.md +73 -0
- package/templates/context/user_story.md +147 -0
- package/templates/kanban.yml +226 -0
- package/templates/scrum.yml +567 -0
- package/web/dist/assets/index-D0j8OnHq.js +35 -0
- package/web/dist/assets/index-DFL7v8aP.css +1 -0
- package/web/dist/index.html +13 -0
- package/web/dist-viewer/assets/index-Bcns6OuC.css +1 -0
- package/web/dist-viewer/assets/index-vVXzeiFo.js +7 -0
- package/web/dist-viewer/index.html +14 -0
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import YAML from 'yaml';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { validateAttributeValue } from '../model/attributes.js';
|
|
5
|
+
import { ATTRIBUTE_TYPES, TEMPLATE_FOLDER_TYPE, reservedFieldsFor } from '../model/types.js';
|
|
6
|
+
const IDENT_RE = /^[a-z][a-z0-9_]*$/;
|
|
7
|
+
/** The one remote name a tracker may not take: `lpm remote git` is the board's own git remote. */
|
|
8
|
+
export const RESERVED_REMOTE_NAME = 'git';
|
|
9
|
+
const PREFIX_RE = /^[A-Z][A-Z0-9]{0,9}$/;
|
|
10
|
+
const PREFIX_MESSAGE = 'must be 1-10 uppercase letters or digits, starting with a letter';
|
|
11
|
+
/**
|
|
12
|
+
* The id prefix registry templates take when a board says nothing.
|
|
13
|
+
*
|
|
14
|
+
* Every other namespace is opt-in and so has no default; the registry is always
|
|
15
|
+
* there, because it is written in the board's own issue types. A board whose
|
|
16
|
+
* `key_prefix` really is `TPL` sets `template_prefix` instead — the collision
|
|
17
|
+
* check below says so rather than letting two namespaces mint the same id.
|
|
18
|
+
*/
|
|
19
|
+
const DEFAULT_TEMPLATE_PREFIX = 'TPL';
|
|
20
|
+
const attributeDefSchema = z.object({
|
|
21
|
+
type: z.enum(ATTRIBUTE_TYPES),
|
|
22
|
+
description: z.string().optional(),
|
|
23
|
+
required: z.boolean().optional(),
|
|
24
|
+
default: z.unknown().optional(),
|
|
25
|
+
values: z.array(z.string()).min(1).optional(),
|
|
26
|
+
});
|
|
27
|
+
const typeSchema = z.object({
|
|
28
|
+
label: z.string().min(1),
|
|
29
|
+
attributes: z.record(z.string(), attributeDefSchema).default({}),
|
|
30
|
+
body: z.string().default(''),
|
|
31
|
+
generic: z.boolean().optional(),
|
|
32
|
+
atomic: z.boolean().optional(),
|
|
33
|
+
});
|
|
34
|
+
const statusSchema = z.object({
|
|
35
|
+
id: z.string().regex(IDENT_RE, 'must be lower_snake_case'),
|
|
36
|
+
label: z.string().min(1),
|
|
37
|
+
terminal: z.boolean().optional(),
|
|
38
|
+
active: z.boolean().optional(),
|
|
39
|
+
});
|
|
40
|
+
const hierarchySchema = z.array(z.union([z.string(), z.array(z.string()).min(1)])).min(1);
|
|
41
|
+
const typeMapSchema = z.record(z.string().regex(IDENT_RE, 'must be lower_snake_case'), typeSchema);
|
|
42
|
+
/**
|
|
43
|
+
* A per-field conflict override: the field always takes this owner and never
|
|
44
|
+
* conflicts. `owner: local` means the board wins, `owner: remote` the remote.
|
|
45
|
+
*/
|
|
46
|
+
const fieldOwnerSchema = z.object({
|
|
47
|
+
owner: z.enum(['local', 'remote']),
|
|
48
|
+
});
|
|
49
|
+
/**
|
|
50
|
+
* The frame of one remote. Core validates this much and nothing more:
|
|
51
|
+
* `connection` and `mapping` are opaque records whose contents are the
|
|
52
|
+
* provider's to validate, not core's — core must never know what a provider is.
|
|
53
|
+
*
|
|
54
|
+
* `fields` is the one policy block core *can* read the contents of: it names
|
|
55
|
+
* board fields (canonical fields and attribute names), which are core's
|
|
56
|
+
* vocabulary, not a provider's. The `{ owner }` spelling is flattened to the
|
|
57
|
+
* owner value, so a caller reads `fields.status` and gets `'remote'`.
|
|
58
|
+
*/
|
|
59
|
+
const remoteSchema = z.object({
|
|
60
|
+
provider: z.string().min(1),
|
|
61
|
+
scope: z.string().optional(),
|
|
62
|
+
direction: z.enum(['both', 'push', 'pull']).default('both'),
|
|
63
|
+
on_delete: z.enum(['unlink', 'close', 'delete', 'restore', 'manual']).default('unlink'),
|
|
64
|
+
conflict: z.enum(['manual', 'local', 'remote']),
|
|
65
|
+
/**
|
|
66
|
+
* The bulk guard (LP-364): a run where more than this fraction of linked
|
|
67
|
+
* twins is missing at once is treated as unreachable rather than as a wave
|
|
68
|
+
* of deletions, because infrastructure failures arrive all at once and real
|
|
69
|
+
* deletions arrive a few at a time. `1` disables the guard (a fraction can
|
|
70
|
+
* never exceed 1); absent means the resolver's default of 0.5 applies.
|
|
71
|
+
*/
|
|
72
|
+
bulk_guard: z.number().min(0).max(1).optional(),
|
|
73
|
+
/**
|
|
74
|
+
* The write threshold (LP-350): a push whose plan creates or closes more
|
|
75
|
+
* than this many issues stops and requires `--yes`, so a misconfigured scope
|
|
76
|
+
* cannot turn into a wave of duplicate or closed tickets. Absent means the
|
|
77
|
+
* default of 25 applies.
|
|
78
|
+
*/
|
|
79
|
+
write_threshold: z.number().int().positive().optional(),
|
|
80
|
+
fields: z
|
|
81
|
+
.record(z.string(), fieldOwnerSchema)
|
|
82
|
+
.transform((entries) => Object.fromEntries(Object.entries(entries).map(([field, entry]) => [field, entry.owner])))
|
|
83
|
+
.default({}),
|
|
84
|
+
encoding: z.enum(['block', 'comment']).default('block'),
|
|
85
|
+
comments: z.enum(['push', 'both']).default('push'),
|
|
86
|
+
connection: z.record(z.string(), z.unknown()).default({}),
|
|
87
|
+
mapping: z.record(z.string(), z.unknown()).default({}),
|
|
88
|
+
});
|
|
89
|
+
/**
|
|
90
|
+
* A git remote or branch name, conservatively: the characters every host
|
|
91
|
+
* accepts, nothing a shell or a refspec would read as syntax, and no leading
|
|
92
|
+
* dash (which git would take for an option).
|
|
93
|
+
*/
|
|
94
|
+
const GIT_NAME_RE = /^(?!-)[A-Za-z0-9._/-]+$/;
|
|
95
|
+
const GIT_NAME_MESSAGE = 'must be a plain git name (letters, digits, ".", "_", "-", "/")';
|
|
96
|
+
const rawConfigSchema = z.object({
|
|
97
|
+
version: z.number().int().positive().default(1),
|
|
98
|
+
key_prefix: z.string().regex(PREFIX_RE, PREFIX_MESSAGE),
|
|
99
|
+
statuses: z.array(statusSchema).min(1),
|
|
100
|
+
default_status: z.string().optional(),
|
|
101
|
+
issue_types: typeMapSchema,
|
|
102
|
+
hierarchy: hierarchySchema,
|
|
103
|
+
period_prefix: z.string().regex(PREFIX_RE, PREFIX_MESSAGE).optional(),
|
|
104
|
+
period_types: typeMapSchema.optional(),
|
|
105
|
+
period_hierarchy: hierarchySchema.optional(),
|
|
106
|
+
resource_prefix: z.string().regex(PREFIX_RE, PREFIX_MESSAGE).optional(),
|
|
107
|
+
resource_types: typeMapSchema.optional(),
|
|
108
|
+
resource_hierarchy: hierarchySchema.optional(),
|
|
109
|
+
squad_prefix: z.string().regex(PREFIX_RE, PREFIX_MESSAGE).optional(),
|
|
110
|
+
squad_types: typeMapSchema.optional(),
|
|
111
|
+
squad_hierarchy: hierarchySchema.optional(),
|
|
112
|
+
// The registry has no types or hierarchy of its own: a template *is* an issue
|
|
113
|
+
// of one of the board's own types, so both are derived from `issue_types` and
|
|
114
|
+
// `hierarchy`. Only the id prefix has to be said out loud.
|
|
115
|
+
template_prefix: z.string().regex(PREFIX_RE, PREFIX_MESSAGE).optional(),
|
|
116
|
+
priority_attribute: z.string().regex(IDENT_RE, 'must be lower_snake_case').optional(),
|
|
117
|
+
effort_attribute: z.string().regex(IDENT_RE, 'must be lower_snake_case').optional(),
|
|
118
|
+
remotes: z.record(z.string(), remoteSchema).default({}),
|
|
119
|
+
// Remotes turned off, kept whole so they can be turned on again — see
|
|
120
|
+
// `operations/remotes-off.ts`. Validated as strictly as an active one, so a
|
|
121
|
+
// block that was valid when it was turned off is valid when it comes back.
|
|
122
|
+
remotes_off: z.record(z.string(), remoteSchema).default({}),
|
|
123
|
+
// Sharing the board itself through its git repository. Present means on.
|
|
124
|
+
git_sync: z
|
|
125
|
+
.object({
|
|
126
|
+
remote: z.string().regex(GIT_NAME_RE, GIT_NAME_MESSAGE).default('origin'),
|
|
127
|
+
branch: z.string().regex(GIT_NAME_RE, GIT_NAME_MESSAGE).default('main'),
|
|
128
|
+
})
|
|
129
|
+
.strict()
|
|
130
|
+
.optional(),
|
|
131
|
+
});
|
|
132
|
+
import { formatZodIssues } from '../model/zod.js';
|
|
133
|
+
function normalizeHierarchy(levels) {
|
|
134
|
+
return levels.map((level) => (typeof level === 'string' ? [level] : level));
|
|
135
|
+
}
|
|
136
|
+
/** The config keys that describe one namespace, keyed by the kind they govern. */
|
|
137
|
+
const NAMESPACE_KEYS = {
|
|
138
|
+
issue: { types: 'issue_types', hierarchy: 'hierarchy', prefix: 'key_prefix' },
|
|
139
|
+
period: { types: 'period_types', hierarchy: 'period_hierarchy', prefix: 'period_prefix' },
|
|
140
|
+
resource: { types: 'resource_types', hierarchy: 'resource_hierarchy', prefix: 'resource_prefix' },
|
|
141
|
+
squad: { types: 'squad_types', hierarchy: 'squad_hierarchy', prefix: 'squad_prefix' },
|
|
142
|
+
};
|
|
143
|
+
/** Hierarchy <-> type-map consistency, shared by all three namespaces. */
|
|
144
|
+
function checkNamespace(types, hierarchy, kind, errors) {
|
|
145
|
+
const { types: typesKey, hierarchy: label } = NAMESPACE_KEYS[kind];
|
|
146
|
+
const declared = Object.keys(types);
|
|
147
|
+
const seen = new Map();
|
|
148
|
+
hierarchy.forEach((level, depth) => {
|
|
149
|
+
for (const name of level) {
|
|
150
|
+
if (seen.has(name)) {
|
|
151
|
+
errors.push(`${label}: "${name}" appears at level ${seen.get(name)} and level ${depth}; each type belongs to exactly one level`);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
seen.set(name, depth);
|
|
155
|
+
}
|
|
156
|
+
if (!declared.includes(name)) {
|
|
157
|
+
errors.push(`${label}: "${name}" is not defined under ${typesKey}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
for (const name of declared) {
|
|
162
|
+
if (!seen.has(name)) {
|
|
163
|
+
errors.push(`${typesKey}.${name}: declared but missing from ${label}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function checkAttributes(path, types, kind, errors) {
|
|
168
|
+
const reserved = reservedFieldsFor(kind);
|
|
169
|
+
for (const [typeName, typeDef] of Object.entries(types)) {
|
|
170
|
+
for (const [attrName, attrDef] of Object.entries(typeDef.attributes)) {
|
|
171
|
+
const where = `${path}.${typeName}.attributes.${attrName}`;
|
|
172
|
+
if (reserved.includes(attrName)) {
|
|
173
|
+
errors.push(`${where}: "${attrName}" is a reserved field name`);
|
|
174
|
+
}
|
|
175
|
+
if (!IDENT_RE.test(attrName)) {
|
|
176
|
+
errors.push(`${where}: attribute names must be lower_snake_case`);
|
|
177
|
+
}
|
|
178
|
+
if (attrDef.type === 'enum' && !attrDef.values) {
|
|
179
|
+
errors.push(`${where}: enum attributes need a "values" list`);
|
|
180
|
+
}
|
|
181
|
+
if (attrDef.type !== 'enum' && attrDef.values) {
|
|
182
|
+
errors.push(`${where}: "values" is only valid for enum attributes`);
|
|
183
|
+
}
|
|
184
|
+
if (attrDef.default !== undefined) {
|
|
185
|
+
const problem = validateAttributeValue(attrDef, attrDef.default);
|
|
186
|
+
if (problem)
|
|
187
|
+
errors.push(`${where}.default: ${problem}`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Periods and resources are opt-in: a board declares the whole namespace or
|
|
194
|
+
* none of it. Returns true when this one is in use.
|
|
195
|
+
*/
|
|
196
|
+
function checkOptionalNamespace(kind, raw, hierarchy, errors) {
|
|
197
|
+
const keys = NAMESPACE_KEYS[kind];
|
|
198
|
+
const types = raw[keys.types];
|
|
199
|
+
const rawHierarchy = raw[keys.hierarchy];
|
|
200
|
+
if (!types && !rawHierarchy)
|
|
201
|
+
return false;
|
|
202
|
+
if (!types)
|
|
203
|
+
errors.push(`${keys.types}: required when ${keys.hierarchy} is set`);
|
|
204
|
+
if (!rawHierarchy)
|
|
205
|
+
errors.push(`${keys.hierarchy}: required when ${keys.types} is set`);
|
|
206
|
+
if (!raw[keys.prefix]) {
|
|
207
|
+
errors.push(`${keys.prefix}: required when the board declares ${kind} types`);
|
|
208
|
+
}
|
|
209
|
+
if (types && rawHierarchy) {
|
|
210
|
+
checkNamespace(types, hierarchy, kind, errors);
|
|
211
|
+
checkAttributes(keys.types, types, kind, errors);
|
|
212
|
+
}
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* A type flag that means something in exactly one namespace. `generic` describes
|
|
217
|
+
* a pool of people and means nothing outside the roster; `atomic` describes a
|
|
218
|
+
* unit of work and means nothing outside the issue tree. Declaring one where
|
|
219
|
+
* nothing will ever read it is a typo, not a harmless extra key.
|
|
220
|
+
*/
|
|
221
|
+
function checkTypeFlag(flag, owner, kind, types, errors) {
|
|
222
|
+
const key = NAMESPACE_KEYS[kind].types;
|
|
223
|
+
for (const [name, def] of Object.entries(types)) {
|
|
224
|
+
if (def[flag] !== undefined) {
|
|
225
|
+
errors.push(`${key}.${name}.${flag}: only ${owner} types can be ${flag}`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* `priority_attribute` / `effort_attribute` name an issue attribute the engine
|
|
231
|
+
* reads (to rank work and to add up load), so the named attribute has to exist
|
|
232
|
+
* and have a usable type wherever it is declared.
|
|
233
|
+
*/
|
|
234
|
+
function checkIssueAttributeRef(key, name, types, allowed, errors) {
|
|
235
|
+
if (!name)
|
|
236
|
+
return;
|
|
237
|
+
const declaring = Object.entries(types).filter(([, def]) => def.attributes[name]);
|
|
238
|
+
if (!declaring.length) {
|
|
239
|
+
errors.push(`${key}: "${name}" is not an attribute of any issue type`);
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
for (const [typeName, def] of declaring) {
|
|
243
|
+
const attribute = def.attributes[name];
|
|
244
|
+
if (!allowed.includes(attribute.type)) {
|
|
245
|
+
errors.push(`${key}: issue_types.${typeName}.attributes.${name} is "${attribute.type}"; expected ${allowed.join(' or ')}`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Remote names follow IDENT_RE, and no two remotes may both claim the same
|
|
251
|
+
* documents. Core cannot see the board tree from the config alone, so it
|
|
252
|
+
* rejects every overlap it *can* see: an absent scope means the whole board,
|
|
253
|
+
* which contains every other scope, and two equal scopes are the same subtree.
|
|
254
|
+
* Two different, both-present scopes are left alone — whether one sits inside
|
|
255
|
+
* the other is answered against the board tree (by `lpm check`), not here.
|
|
256
|
+
*/
|
|
257
|
+
function checkRemotes(raw, errors) {
|
|
258
|
+
for (const [key, block] of [
|
|
259
|
+
['remotes', raw.remotes],
|
|
260
|
+
['remotes_off', raw.remotes_off],
|
|
261
|
+
]) {
|
|
262
|
+
for (const name of Object.keys(block)) {
|
|
263
|
+
if (!IDENT_RE.test(name)) {
|
|
264
|
+
errors.push(`${key}.${name}: remote names must be lower_snake_case`);
|
|
265
|
+
}
|
|
266
|
+
if (name === RESERVED_REMOTE_NAME) {
|
|
267
|
+
errors.push(`${key}.${name}: "${name}" is reserved — \`lpm remote git\` is the board's own git remote`);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
// One name, one remote: the two blocks share `.lpm/remotes/<name>/`, so a
|
|
272
|
+
// name in both would be two declarations writing one link store.
|
|
273
|
+
for (const name of Object.keys(raw.remotes_off)) {
|
|
274
|
+
if (raw.remotes[name]) {
|
|
275
|
+
errors.push(`remotes.${name}: also declared under remotes_off — a turned-off remote comes back with ` +
|
|
276
|
+
`\`lpm remote on ${name}\`, not by declaring it again`);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
// A board is shared through git *or* mirrored onto trackers. Git replicates
|
|
280
|
+
// the whole folder — every tracker's link store with it — so "one remote per
|
|
281
|
+
// document" can only be decided for the board as a whole.
|
|
282
|
+
if (raw.git_sync && Object.keys(raw.remotes).length > 0) {
|
|
283
|
+
errors.push(`git_sync and remotes: a board syncs through git or mirrors onto trackers, not both ` +
|
|
284
|
+
`(declared: ${Object.keys(raw.remotes).sort().join(', ')}). ` +
|
|
285
|
+
'Turn the trackers off with `lpm remote off <name>` (kept, and `lpm remote on <name>` brings ' +
|
|
286
|
+
'one back), or turn git sync off with `lpm git off`.');
|
|
287
|
+
}
|
|
288
|
+
const names = Object.keys(raw.remotes);
|
|
289
|
+
for (let i = 0; i < names.length; i += 1) {
|
|
290
|
+
for (let j = i + 1; j < names.length; j += 1) {
|
|
291
|
+
const a = raw.remotes[names[i]].scope;
|
|
292
|
+
const b = raw.remotes[names[j]].scope;
|
|
293
|
+
if (a === b || a === undefined || b === undefined) {
|
|
294
|
+
// Say *why*, because the commonest way to hit this is the reasonable
|
|
295
|
+
// wish to mirror one board onto two trackers: both declarations claim
|
|
296
|
+
// the whole board, and "overlapping scopes" reads as a typo rather than
|
|
297
|
+
// as the rule it is. Name the fix in the same line.
|
|
298
|
+
const whole = a === undefined || b === undefined;
|
|
299
|
+
errors.push(`remotes: "${names[i]}" and "${names[j]}" have overlapping scopes` +
|
|
300
|
+
(whole
|
|
301
|
+
? ' — both mirror the whole board. Give each a different `scope:` (a document id), because two remotes may never mirror the same work.'
|
|
302
|
+
: ` — both mirror ${a}. Two remotes may never mirror the same work.`));
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
/** Cross-field rules zod cannot express on its own. */
|
|
308
|
+
function checkSemantics(raw, hierarchies) {
|
|
309
|
+
const errors = [];
|
|
310
|
+
checkNamespace(raw.issue_types, hierarchies.issue, 'issue', errors);
|
|
311
|
+
checkAttributes('issue_types', raw.issue_types, 'issue', errors);
|
|
312
|
+
checkTypeFlag('generic', 'resource', 'issue', raw.issue_types, errors);
|
|
313
|
+
const statusIdList = raw.statuses.map((status) => status.id);
|
|
314
|
+
const duplicateStatus = statusIdList.find((id, index) => statusIdList.indexOf(id) !== index);
|
|
315
|
+
if (duplicateStatus)
|
|
316
|
+
errors.push(`statuses: duplicate status id "${duplicateStatus}"`);
|
|
317
|
+
if (raw.default_status && !statusIdList.includes(raw.default_status)) {
|
|
318
|
+
errors.push(`default_status: "${raw.default_status}" is not one of [${statusIdList.join(', ')}]`);
|
|
319
|
+
}
|
|
320
|
+
for (const status of raw.statuses) {
|
|
321
|
+
if (status.terminal && status.active) {
|
|
322
|
+
errors.push(`statuses.${status.id}: a status cannot be both terminal and active`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
checkIssueAttributeRef('priority_attribute', raw.priority_attribute, raw.issue_types, ['enum'], errors);
|
|
326
|
+
checkIssueAttributeRef('effort_attribute', raw.effort_attribute, raw.issue_types, ['int', 'float'], errors);
|
|
327
|
+
const usesPeriods = checkOptionalNamespace('period', raw, hierarchies.period, errors);
|
|
328
|
+
if (usesPeriods) {
|
|
329
|
+
checkTypeFlag('generic', 'resource', 'period', raw.period_types ?? {}, errors);
|
|
330
|
+
checkTypeFlag('atomic', 'issue', 'period', raw.period_types ?? {}, errors);
|
|
331
|
+
}
|
|
332
|
+
const usesResources = checkOptionalNamespace('resource', raw, hierarchies.resource, errors);
|
|
333
|
+
if (usesResources) {
|
|
334
|
+
checkTypeFlag('atomic', 'issue', 'resource', raw.resource_types ?? {}, errors);
|
|
335
|
+
}
|
|
336
|
+
const usesSquads = checkOptionalNamespace('squad', raw, hierarchies.squad, errors);
|
|
337
|
+
if (usesSquads) {
|
|
338
|
+
checkTypeFlag('generic', 'resource', 'squad', raw.squad_types ?? {}, errors);
|
|
339
|
+
checkTypeFlag('atomic', 'issue', 'squad', raw.squad_types ?? {}, errors);
|
|
340
|
+
}
|
|
341
|
+
// Ids from different namespaces must never collide...
|
|
342
|
+
const prefixes = [['key_prefix', raw.key_prefix]];
|
|
343
|
+
if (usesPeriods && raw.period_prefix)
|
|
344
|
+
prefixes.push(['period_prefix', raw.period_prefix]);
|
|
345
|
+
if (usesResources && raw.resource_prefix)
|
|
346
|
+
prefixes.push(['resource_prefix', raw.resource_prefix]);
|
|
347
|
+
if (usesSquads && raw.squad_prefix)
|
|
348
|
+
prefixes.push(['squad_prefix', raw.squad_prefix]);
|
|
349
|
+
// The registry is never opt-in — every board has one, because its types are
|
|
350
|
+
// the board's own — so its prefix is always in the collision check.
|
|
351
|
+
prefixes.push(['template_prefix', raw.template_prefix ?? DEFAULT_TEMPLATE_PREFIX]);
|
|
352
|
+
for (let index = 1; index < prefixes.length; index += 1) {
|
|
353
|
+
const [key, value] = prefixes[index];
|
|
354
|
+
const clash = prefixes.slice(0, index).find(([, other]) => other === value);
|
|
355
|
+
if (clash) {
|
|
356
|
+
errors.push(`${key}: "${value}" must differ from ${clash[0]} so ids never collide`);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// ...and `lpm new <type>` resolves the namespace from the type name, so a
|
|
360
|
+
// name may not mean two different things either.
|
|
361
|
+
const namespaces = [
|
|
362
|
+
['issue', raw.issue_types],
|
|
363
|
+
];
|
|
364
|
+
if (usesPeriods)
|
|
365
|
+
namespaces.push(['period', raw.period_types ?? {}]);
|
|
366
|
+
if (usesResources)
|
|
367
|
+
namespaces.push(['resource', raw.resource_types ?? {}]);
|
|
368
|
+
if (usesSquads)
|
|
369
|
+
namespaces.push(['squad', raw.squad_types ?? {}]);
|
|
370
|
+
const owner = new Map();
|
|
371
|
+
for (const [kind, types] of namespaces) {
|
|
372
|
+
for (const name of Object.keys(types)) {
|
|
373
|
+
// The registry reuses the issue types by name and adds exactly one of its
|
|
374
|
+
// own, so a board that also called something `folder` would make "which
|
|
375
|
+
// folder?" unanswerable. @see TEMPLATE_FOLDER_TYPE
|
|
376
|
+
if (name === TEMPLATE_FOLDER_TYPE) {
|
|
377
|
+
errors.push(`${NAMESPACE_KEYS[kind].types}.${name}: "${name}" is reserved for the template registry`);
|
|
378
|
+
continue;
|
|
379
|
+
}
|
|
380
|
+
const previous = owner.get(name);
|
|
381
|
+
if (previous) {
|
|
382
|
+
const article = previous === 'issue' ? 'an' : 'a';
|
|
383
|
+
errors.push(`${NAMESPACE_KEYS[kind].types}.${name}: "${name}" is also ${article} ${previous} type; type names must be unique across namespaces`);
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
owner.set(name, kind);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
checkRemotes(raw, errors);
|
|
391
|
+
return errors;
|
|
392
|
+
}
|
|
393
|
+
export function parseConfigText(text) {
|
|
394
|
+
let doc;
|
|
395
|
+
try {
|
|
396
|
+
doc = YAML.parse(text);
|
|
397
|
+
}
|
|
398
|
+
catch (error) {
|
|
399
|
+
return { config: null, errors: [`invalid YAML: ${error.message}`] };
|
|
400
|
+
}
|
|
401
|
+
const parsed = rawConfigSchema.safeParse(doc);
|
|
402
|
+
if (!parsed.success)
|
|
403
|
+
return { config: null, errors: formatZodIssues(parsed.error) };
|
|
404
|
+
const raw = parsed.data;
|
|
405
|
+
const hierarchies = {
|
|
406
|
+
issue: normalizeHierarchy(raw.hierarchy),
|
|
407
|
+
period: normalizeHierarchy(raw.period_hierarchy ?? []),
|
|
408
|
+
resource: normalizeHierarchy(raw.resource_hierarchy ?? []),
|
|
409
|
+
squad: normalizeHierarchy(raw.squad_hierarchy ?? []),
|
|
410
|
+
};
|
|
411
|
+
const errors = checkSemantics(raw, hierarchies);
|
|
412
|
+
if (errors.length)
|
|
413
|
+
return { config: null, errors };
|
|
414
|
+
return {
|
|
415
|
+
config: {
|
|
416
|
+
version: raw.version,
|
|
417
|
+
key_prefix: raw.key_prefix,
|
|
418
|
+
default_status: raw.default_status ?? raw.statuses[0].id,
|
|
419
|
+
statuses: raw.statuses,
|
|
420
|
+
issue_types: raw.issue_types,
|
|
421
|
+
hierarchy: hierarchies.issue,
|
|
422
|
+
period_prefix: raw.period_prefix ?? '',
|
|
423
|
+
period_types: raw.period_types ?? {},
|
|
424
|
+
period_hierarchy: hierarchies.period,
|
|
425
|
+
resource_prefix: raw.resource_prefix ?? '',
|
|
426
|
+
resource_types: raw.resource_types ?? {},
|
|
427
|
+
resource_hierarchy: hierarchies.resource,
|
|
428
|
+
squad_prefix: raw.squad_prefix ?? '',
|
|
429
|
+
squad_types: raw.squad_types ?? {},
|
|
430
|
+
squad_hierarchy: hierarchies.squad,
|
|
431
|
+
template_prefix: raw.template_prefix ?? DEFAULT_TEMPLATE_PREFIX,
|
|
432
|
+
priority_attribute: raw.priority_attribute ?? '',
|
|
433
|
+
effort_attribute: raw.effort_attribute ?? '',
|
|
434
|
+
remotes: raw.remotes,
|
|
435
|
+
remotes_off: raw.remotes_off,
|
|
436
|
+
git_sync: raw.git_sync ?? null,
|
|
437
|
+
},
|
|
438
|
+
errors: [],
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
export function loadConfig(paths) {
|
|
442
|
+
let text;
|
|
443
|
+
try {
|
|
444
|
+
text = readFileSync(paths.configPath, 'utf8');
|
|
445
|
+
}
|
|
446
|
+
catch (error) {
|
|
447
|
+
return { config: null, errors: [`cannot read config: ${error.message}`] };
|
|
448
|
+
}
|
|
449
|
+
return parseConfigText(text);
|
|
450
|
+
}
|
|
451
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/core/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** An error the CLI can print verbatim: a headline plus optional detail lines. */
|
|
2
|
+
export declare class BoardError extends Error {
|
|
3
|
+
readonly details: string[];
|
|
4
|
+
constructor(message: string, details?: string[]);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Somebody else got there first.
|
|
8
|
+
*
|
|
9
|
+
* A `BoardError` in every respect — it prints the same way and carries the same
|
|
10
|
+
* hints — but distinguishable, because the remedy is different in kind. A
|
|
11
|
+
* request that is wrong stays wrong however often it is repeated; a request that
|
|
12
|
+
* lost a race is answered by reading the board again and asking a fresh
|
|
13
|
+
* question, which is something a queue runner can do for itself. `lpm queue
|
|
14
|
+
* agent` picks the next task instead of stopping on one of these, and nothing
|
|
15
|
+
* else may act on the distinction by matching on the message.
|
|
16
|
+
*
|
|
17
|
+
* The two things that raise one: a document that changed underneath the handle
|
|
18
|
+
* it was read into (`requireUnchanged`), and an issue somebody claimed while
|
|
19
|
+
* this process was deciding to claim it (`claimIssue`).
|
|
20
|
+
*/
|
|
21
|
+
export declare class ConflictError extends BoardError {
|
|
22
|
+
constructor(message: string, details?: string[]);
|
|
23
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** An error the CLI can print verbatim: a headline plus optional detail lines. */
|
|
2
|
+
export class BoardError extends Error {
|
|
3
|
+
details;
|
|
4
|
+
constructor(message, details = []) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.name = 'BoardError';
|
|
7
|
+
this.details = details;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Somebody else got there first.
|
|
12
|
+
*
|
|
13
|
+
* A `BoardError` in every respect — it prints the same way and carries the same
|
|
14
|
+
* hints — but distinguishable, because the remedy is different in kind. A
|
|
15
|
+
* request that is wrong stays wrong however often it is repeated; a request that
|
|
16
|
+
* lost a race is answered by reading the board again and asking a fresh
|
|
17
|
+
* question, which is something a queue runner can do for itself. `lpm queue
|
|
18
|
+
* agent` picks the next task instead of stopping on one of these, and nothing
|
|
19
|
+
* else may act on the distinction by matching on the message.
|
|
20
|
+
*
|
|
21
|
+
* The two things that raise one: a document that changed underneath the handle
|
|
22
|
+
* it was read into (`requireUnchanged`), and an issue somebody claimed while
|
|
23
|
+
* this process was deciding to claim it (`claimIssue`).
|
|
24
|
+
*/
|
|
25
|
+
export class ConflictError extends BoardError {
|
|
26
|
+
constructor(message, details = []) {
|
|
27
|
+
super(message, details);
|
|
28
|
+
this.name = 'ConflictError';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,OAAO,CAAW;IAE3B,YAAY,OAAe,EAAE,UAAoB,EAAE;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,aAAc,SAAQ,UAAU;IAC3C,YAAY,OAAe,EAAE,UAAoB,EAAE;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The git hosts setup knows how to talk somebody through.
|
|
3
|
+
*
|
|
4
|
+
* Knowing a host is *help*, never a requirement: any URL git can push to works,
|
|
5
|
+
* and an unrecognised one is "a git server". What a host entry adds is what a
|
|
6
|
+
* person setting this up for the first time actually needs — what a URL to
|
|
7
|
+
* that host looks like, where an empty repository is created, and how git will
|
|
8
|
+
* find the credential — because the commonest way setup fails is a URL pasted
|
|
9
|
+
* from the wrong page, or a token git was never told about.
|
|
10
|
+
*
|
|
11
|
+
* light-plan stores no git credential. It runs git, and git asks its own
|
|
12
|
+
* credential helper (Git Credential Manager, the macOS keychain, an SSH key) —
|
|
13
|
+
* the same thing that answers when the person pushes their code. That is why
|
|
14
|
+
* every hint below points at git's configuration rather than at a light-plan
|
|
15
|
+
* command.
|
|
16
|
+
*
|
|
17
|
+
* Data only; the CLI prints it and the web serves it.
|
|
18
|
+
*/
|
|
19
|
+
export type GitHostId = 'github' | 'gitlab' | 'bitbucket' | 'azure' | 'other';
|
|
20
|
+
export interface GitHost {
|
|
21
|
+
id: GitHostId;
|
|
22
|
+
label: string;
|
|
23
|
+
/** URL shapes, with placeholders in angle brackets. */
|
|
24
|
+
examples: string[];
|
|
25
|
+
/** Where to make the (empty) repository the board will live in. */
|
|
26
|
+
create: string;
|
|
27
|
+
/** How git authenticates to it. */
|
|
28
|
+
credentials: string;
|
|
29
|
+
}
|
|
30
|
+
export declare const GIT_HOSTS: readonly GitHost[];
|
|
31
|
+
/** Which host a URL belongs to; `other` for anything unrecognised. */
|
|
32
|
+
export declare function recognizeHost(url: string): GitHost;
|
|
33
|
+
/**
|
|
34
|
+
* Why a string cannot be a git URL, or null when git may as well try it. Loose
|
|
35
|
+
* on purpose — git is the judge — but a leading dash would be read as an
|
|
36
|
+
* option, and an empty string is a form somebody has not filled in.
|
|
37
|
+
*/
|
|
38
|
+
export declare function urlProblem(url: string): string | null;
|
|
39
|
+
/** Two URLs naming the same repository, ignoring a trailing `.git`, a slash and case. */
|
|
40
|
+
export declare function sameRepositoryUrl(a: string, b: string): boolean;
|