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,45 @@
|
|
|
1
|
+
# The light-plan hcm bundle — which assets it carries, and where each lands.
|
|
2
|
+
#
|
|
3
|
+
# `lpm hcm init` renders every file in this folder into an hcm bundle and
|
|
4
|
+
# registers them all with `hcm registry add`. A bundle is never a second copy
|
|
5
|
+
# of the agents and skills: it is rendered from `assets/` each time, the way
|
|
6
|
+
# `lpm agent` renders a harness layout, so edit the asset and run the command
|
|
7
|
+
# again. See docs/hcm.md.
|
|
8
|
+
#
|
|
9
|
+
# Written by the code, not here, because they are not choices:
|
|
10
|
+
# version the package's own version, so the two cannot drift
|
|
11
|
+
# author, homepage from package.json
|
|
12
|
+
# mcp/<mcp>.json how to start `lpm mcp` on this machine
|
|
13
|
+
# context/<context>.md the pointer block `lpm agent` writes for Copilot,
|
|
14
|
+
# listing what every flavor installs
|
|
15
|
+
|
|
16
|
+
name: light-plan
|
|
17
|
+
description: >-
|
|
18
|
+
Plan and work a light-plan board (.lpm): the lpm skills, the planner and
|
|
19
|
+
developer agents, and the light-plan MCP server. Needs the lpm CLI.
|
|
20
|
+
tags: [light-plan, lpm, planning, issue-tracker, mcp]
|
|
21
|
+
|
|
22
|
+
# The roles `lpm agent --type` installs, under hcm's name for the same idea.
|
|
23
|
+
# `hcm install light-plan --flavor developer` is `lpm agent --type developer`.
|
|
24
|
+
flavors:
|
|
25
|
+
developer: >-
|
|
26
|
+
Pick work up off the board, implement it and leave a reviewable trail.
|
|
27
|
+
pm: >-
|
|
28
|
+
Write epics, features and stories, sequence them and set the board up.
|
|
29
|
+
|
|
30
|
+
context: 10-light-plan
|
|
31
|
+
mcp: light-plan
|
|
32
|
+
|
|
33
|
+
files:
|
|
34
|
+
- from: agents/*.md
|
|
35
|
+
to: "{root}/subagents/{basename}"
|
|
36
|
+
frontmatter:
|
|
37
|
+
description: "{description}"
|
|
38
|
+
tools: "{tools}"
|
|
39
|
+
flavors: "{roles}"
|
|
40
|
+
|
|
41
|
+
- from: skills/*.md
|
|
42
|
+
to: "{root}/skills/{name}/SKILL.md"
|
|
43
|
+
frontmatter:
|
|
44
|
+
description: "{description}"
|
|
45
|
+
flavors: "{roles}"
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lpm-board-health
|
|
3
|
+
description: Diagnose and repair a light-plan board, and publish it. Load this for `lpm check` / `check_board` failures, `lpm check --fix`, adopting hand-made or half-written folders, dependency cycles, duplicate or missing ids, "nobody is being offered work", pools nobody covers, work that vanished from a queue, merge conflicts in `.lpm`, or exporting the board as a static site with `lpm export`.
|
|
4
|
+
roles:
|
|
5
|
+
- developer
|
|
6
|
+
- pm
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Keeping a light-plan board healthy
|
|
10
|
+
|
|
11
|
+
Load the `lpm` skill first for the tool map.
|
|
12
|
+
|
|
13
|
+
## `lpm check` is the gate
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
lpm check # read-only; exits 1 while errors remain
|
|
17
|
+
lpm check --fix # repairs exactly what it marks fixable
|
|
18
|
+
lpm check --strict # also exits non-zero on warnings
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
check_board # the same report as JSON, with error/warning counts
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The exit code is the contract: `lpm check` drops straight into CI or a
|
|
26
|
+
pre-commit hook. **`fixable: true` is also a contract** — exactly the problems
|
|
27
|
+
`check` marks fixable are what `--fix` repairs, and anything ambiguous is
|
|
28
|
+
reported and left alone.
|
|
29
|
+
|
|
30
|
+
| `--fix` repairs | It refuses to guess at |
|
|
31
|
+
| --- | --- |
|
|
32
|
+
| missing `id`, `type`, `title`, `status`, `capacity`, `created`, `author` | a duplicate id |
|
|
33
|
+
| attributes a type declares but a document lacks | an unresolvable or ambiguous type |
|
|
34
|
+
| folder names that are not the document's id | an attribute value of the wrong type |
|
|
35
|
+
| duplicated entries in link and coverage lists | a missing period date |
|
|
36
|
+
| an id counter that drifted from what is on disk | an assignee who is not on the roster |
|
|
37
|
+
| a stale or missing `.lpm/INDEX.md` | |
|
|
38
|
+
| a container whose status is out of step with the work inside it | |
|
|
39
|
+
|
|
40
|
+
Run `lpm check` before you commit, after any hand-edit, and after every merge.
|
|
41
|
+
|
|
42
|
+
## Loading is deliberately forgiving
|
|
43
|
+
|
|
44
|
+
You can create a folder and an `_issue.md` by hand — even one containing nothing
|
|
45
|
+
but a `# heading` — and `lpm check --fix` will adopt it: allocate an id from the
|
|
46
|
+
right counter, infer the type from its depth when that level has only one type,
|
|
47
|
+
take the title from the heading or the folder name, set the default status,
|
|
48
|
+
default a resource's capacity to 1, fill in `created` (from the file's first
|
|
49
|
+
commit, falling back to its mtime) and `author` (from `git config`), add the
|
|
50
|
+
attributes its type declares, rename the folder to the id, and rewrite
|
|
51
|
+
`INDEX.md`.
|
|
52
|
+
|
|
53
|
+
This is the **repair path**, not a workflow. Prefer `lpm new` / `create_document`,
|
|
54
|
+
which validate up front.
|
|
55
|
+
|
|
56
|
+
Two things worth knowing about what loading tolerates:
|
|
57
|
+
|
|
58
|
+
- A document with no id gets an `#unassigned:<dir>` placeholder until `--fix`
|
|
59
|
+
allocates one.
|
|
60
|
+
- Frontmatter keys the config does not declare are **preserved, never dropped** —
|
|
61
|
+
they are reported as extras, not deleted.
|
|
62
|
+
- `related_files` is **never checked against the filesystem**. An entry naming a
|
|
63
|
+
file that does not exist is not a problem to fix; `check` only reports a
|
|
64
|
+
duplicate, and `--fix` dedupes it.
|
|
65
|
+
- A `flag` value that is not `blocked`, `paused` or `help` is an error and is
|
|
66
|
+
**kept, not dropped** — a flag nobody recognises still means somebody wanted
|
|
67
|
+
attention. Fix it by hand, or clear it with `lpm flag clear`.
|
|
68
|
+
|
|
69
|
+
## "Nobody is being offered work"
|
|
70
|
+
|
|
71
|
+
The most common board problem, and it is almost never a bug. Work off this list
|
|
72
|
+
in order:
|
|
73
|
+
|
|
74
|
+
1. **Is it a work unit?** Containers are never offered — an issue with children
|
|
75
|
+
never reaches anyone, however it is assigned, *unless* its type is declared
|
|
76
|
+
`atomic` in the config, which makes it a unit that is taken whole. Anything
|
|
77
|
+
nested inside such a unit is never offered either.
|
|
78
|
+
`list_documents { workUnitsOnly: true }` is the list that actually reaches
|
|
79
|
+
people.
|
|
80
|
+
2. **Is its status terminal or already active?** Active work is not re-offered;
|
|
81
|
+
that is what stops two people taking it.
|
|
82
|
+
3. **Is it assigned to anyone?** Unassigned work reaches people only via
|
|
83
|
+
`includeUnassigned` / `--unassigned`. Check `team_load`'s `unassigned` row.
|
|
84
|
+
4. **Is it in a pool nobody covers?** `team_load` reports these as `uncovered`.
|
|
85
|
+
Fix with `lpm link <person> --covers <pool>`.
|
|
86
|
+
5. **Is something unfinished blocking it?** `get_document { id }` → `blockedBy`.
|
|
87
|
+
`lpm task next` prints the blocked queue when nothing is ready.
|
|
88
|
+
6. **Does the person have an identity?** `lpm me`; `board_overview` →
|
|
89
|
+
`currentUser`. A null user routes nothing.
|
|
90
|
+
7. **Is a profile narrowing the queue?** `lpm profile` shows the scope in force
|
|
91
|
+
and `offers N issues of M`. `board_overview` returns `scope` and
|
|
92
|
+
`scopeWarnings`.
|
|
93
|
+
|
|
94
|
+
Simulate rather than assume:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
next_tasks { assignee: "RS-1" } # exactly what that person will be offered
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### The other half of the question: work that *is* moving and has stopped
|
|
101
|
+
|
|
102
|
+
`next_tasks` answers "what could start". It does not answer "what started and
|
|
103
|
+
went nowhere", and a team can look busy while three people are all waiting on
|
|
104
|
+
somebody. That is what flags are for:
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
flagged_issues # everything stopped, board-wide, unfiltered
|
|
108
|
+
```
|
|
109
|
+
```bash
|
|
110
|
+
lpm flag list
|
|
111
|
+
lpm comment <id> --list # the reason; a flag always carries one
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Flagged issues keep their in-progress status and their assignee — they are held,
|
|
115
|
+
not free — and are drawn in red on the canvas, including a count on any node they
|
|
116
|
+
are folded inside. `flagged_issues` is deliberately **not** scoped by a profile:
|
|
117
|
+
a flag is addressed to whoever runs the plan, and hiding one because it sat
|
|
118
|
+
outside the reader's slice would defeat it.
|
|
119
|
+
|
|
120
|
+
Clearing is a deliberate act by whoever answered it
|
|
121
|
+
(`lpm flag clear <id> --comment "..."`), and `lpm check` warns about a flag left
|
|
122
|
+
on a finished issue. Finishing an issue clears its flag automatically, so that
|
|
123
|
+
warning means somebody edited a file by hand.
|
|
124
|
+
|
|
125
|
+
## Scope surprises
|
|
126
|
+
|
|
127
|
+
If a profile is involved:
|
|
128
|
+
|
|
129
|
+
- **A stale `under` fails closed.** `under: [LP-404]` on a board without LP-404
|
|
130
|
+
offers *nothing*, and warns. That is deliberate — silently widening to the whole
|
|
131
|
+
board is the failure nobody would notice.
|
|
132
|
+
- **Unknown keys are errors.** `excludes:` is refused rather than ignored.
|
|
133
|
+
- **A profile that does not parse is reported and skipped**, and the board is
|
|
134
|
+
unscoped. `lpm profile` exits 1 in that state; over MCP it shows in
|
|
135
|
+
`scopeWarnings`.
|
|
136
|
+
- Scope never hides work already in flight — `task current` and `current_tasks`
|
|
137
|
+
ignore it.
|
|
138
|
+
|
|
139
|
+
Full reference: `docs/profiles.md`.
|
|
140
|
+
|
|
141
|
+
## Dependency cycles
|
|
142
|
+
|
|
143
|
+
`link_issues` and `lpm link` refuse a dependency that would close a cycle, so
|
|
144
|
+
cycles arrive only by hand-editing or by a merge. `lpm check` catches them and
|
|
145
|
+
will not auto-fix them — breaking a cycle is a judgement about which edge is
|
|
146
|
+
wrong.
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
lpm check # names the cycle
|
|
150
|
+
lpm link LP-42 --depends-on LP-40 --remove # drop the edge that should not exist
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Only forward edges are stored (`depends_on`, `covers`); the inverses are derived
|
|
154
|
+
at load. Never try to edit an inverse — there is nothing to edit.
|
|
155
|
+
|
|
156
|
+
## Merge conflicts
|
|
157
|
+
|
|
158
|
+
`.lpm` is its own git repository nested in the project. Conflicts are ordinary
|
|
159
|
+
markdown conflicts in a document or its `_comments.md`. Resolve them by hand, then:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
lpm check --fix # resyncs id counters, dedupes link lists, rolls statuses up
|
|
163
|
+
lpm check # confirm nothing is left
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
A merge that takes one side of a status is the usual way a container ends up
|
|
167
|
+
disagreeing with the work inside it — a feature back in `backlog` with every
|
|
168
|
+
story done, or closed over a story somebody reopened. `check` reports each one
|
|
169
|
+
and `--fix` rolls it up; nothing else has to be edited by hand.
|
|
170
|
+
|
|
171
|
+
**Ids are never reused**: `allocateIds` skips any id already present on disk, so a
|
|
172
|
+
counter mangled by a merge cannot produce a duplicate — `--fix` just resyncs it.
|
|
173
|
+
|
|
174
|
+
## Deleting safely
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
delete_document { id: "LP-20", dryRun: true } # list what would go
|
|
178
|
+
delete_document { id: "LP-20", recursive: true }
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
lpm rm LP-20 --dry-run
|
|
183
|
+
lpm rm LP-20 -r
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Deleting requires `recursive` when the document has children, because that is
|
|
187
|
+
rarely what a typo means. Everything that referenced the deleted subtree is
|
|
188
|
+
rewritten, so the board is left valid — the reply's `rewritten` / `detached` list
|
|
189
|
+
tells you what was touched.
|
|
190
|
+
|
|
191
|
+
## Looking at it
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
lpm ui # local editor at 127.0.0.1:4571
|
|
195
|
+
lpm ui --port 0 # pick a free port
|
|
196
|
+
lpm ui --no-open # do not launch a browser
|
|
197
|
+
lpm ui --api-only # serve the API only (pair with `npm run dev:web`)
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
The server is local-only and edits this checkout's `.lpm`. **Editing is queued**:
|
|
201
|
+
actions update a working copy and a pending list, and nothing is written until
|
|
202
|
+
Push. A push is **partial, not atomic** — what lands, lands; failures stay
|
|
203
|
+
pending and are shown. If a push half-fails, fix the reported cause and push
|
|
204
|
+
again; earlier changes are already on disk.
|
|
205
|
+
|
|
206
|
+
## Publishing
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
lpm export # refresh .lpm/board.json
|
|
210
|
+
lpm export --site docs # a full static site in docs/, ready for Pages
|
|
211
|
+
lpm export --site docs --workflow # ...and an Actions workflow that keeps it current
|
|
212
|
+
lpm export --pretty # readable diffs, bigger file
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
`--site docs` writes `docs/index.html`, its assets, `docs/board.json` and a
|
|
216
|
+
`.nojekyll`; commit it and point **Settings → Pages → Source: `/docs`**.
|
|
217
|
+
`--workflow` instead writes `.github/workflows/lpm-board.yml` and wants **Source:
|
|
218
|
+
GitHub Actions**.
|
|
219
|
+
|
|
220
|
+
Two things to keep straight:
|
|
221
|
+
|
|
222
|
+
- **An export is the board as committed.** A view's queued-but-unpushed changes
|
|
223
|
+
are somebody's draft and never travel; publishing them would assert something
|
|
224
|
+
untrue.
|
|
225
|
+
- **`board.json` is generated**, so it goes stale like any build output. Let the
|
|
226
|
+
workflow rebuild it, or re-run `lpm export` before committing.
|
|
227
|
+
|
|
228
|
+
The published viewer is read-only by construction and renders bodies as plain
|
|
229
|
+
text, never as markup — it will happily read a board from a URL a stranger
|
|
230
|
+
supplied.
|
|
231
|
+
|
|
232
|
+
## Routine maintenance
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
lpm check --strict # errors and warnings
|
|
236
|
+
lpm team # uncovered pools, unowned work, load vs capacity
|
|
237
|
+
lpm task next --unassigned # is anything ready that nobody owns?
|
|
238
|
+
lpm export # refresh the published file
|
|
239
|
+
cd .lpm && git add -A && git commit -m "..." && git push
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
A board that passes `check --strict`, has no `uncovered` pools and offers each
|
|
243
|
+
person at least one thing tomorrow is healthy. Everything else is planning.
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lpm-board-setup
|
|
3
|
+
description: Create and configure a light-plan board, and set up the people and agents who will work it. Load this for `lpm init`, editing `.lpm/config.yml` (types, hierarchy, statuses, attributes, priority/effort), adding sprints or increments, building the team roster and pools, writing developer profiles for scoped routing, wiring the MCP server into an agent host with `lpm mcp setup`, or questions about the git strategy for `.lpm`.
|
|
4
|
+
roles:
|
|
5
|
+
- pm
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Setting up a light-plan board
|
|
9
|
+
|
|
10
|
+
Load the `lpm` skill first for the tool map and the hard rules.
|
|
11
|
+
|
|
12
|
+
## Creating the board
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
lpm init # scrum template, prefix from the folder name
|
|
16
|
+
lpm init --template kanban --prefix ACME
|
|
17
|
+
lpm init --template blank # types you define yourself
|
|
18
|
+
lpm init --template ./our-config.yml # your own config as the starting point
|
|
19
|
+
lpm init --no-git # skip the nested git repo
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Three built-ins ship: **scrum** (program > epic > feature > story/bug/test/review/
|
|
23
|
+
research > sub-task, with sprints and increments and a roster), **kanban**
|
|
24
|
+
(flatter), **blank** (minimal). `lpm init` validates the config before writing
|
|
25
|
+
anything.
|
|
26
|
+
|
|
27
|
+
**`.lpm` becomes its own git repository** nested inside the project and added to
|
|
28
|
+
the surrounding repo's `.gitignore` — deliberately not a submodule. The board has
|
|
29
|
+
its own history and can have its own remote, so plan changes and code changes stay
|
|
30
|
+
separate:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cd .lpm && git remote add origin git@github.com:acme/plan.git && git push -u origin main
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Commit the board like anything else. Conflicts are ordinary markdown conflicts.
|
|
37
|
+
|
|
38
|
+
## `.lpm/config.yml`
|
|
39
|
+
|
|
40
|
+
This one file is the board's whole vocabulary. `lpm check` validates it and the
|
|
41
|
+
board against it.
|
|
42
|
+
|
|
43
|
+
```yaml
|
|
44
|
+
version: 1
|
|
45
|
+
key_prefix: LP # issue ids: LP-1, LP-2, …
|
|
46
|
+
|
|
47
|
+
statuses: # in board order
|
|
48
|
+
- id: backlog
|
|
49
|
+
label: Backlog
|
|
50
|
+
- id: in_progress
|
|
51
|
+
label: In Progress
|
|
52
|
+
active: true # `task start` moves here; `task current` lists these
|
|
53
|
+
- id: done
|
|
54
|
+
label: Done
|
|
55
|
+
terminal: true # `task done` moves here, and a parent moves here
|
|
56
|
+
# when everything inside it has: a container's
|
|
57
|
+
# status is derived from its contents
|
|
58
|
+
|
|
59
|
+
default_status: backlog
|
|
60
|
+
|
|
61
|
+
priority_attribute: priority # must be an enum, most important value first
|
|
62
|
+
effort_attribute: story_points # must be an int or a float
|
|
63
|
+
|
|
64
|
+
hierarchy: # folder depth IS this list
|
|
65
|
+
- program
|
|
66
|
+
- epic
|
|
67
|
+
- feature
|
|
68
|
+
- [user_story, bug, test, research] # same line = same level
|
|
69
|
+
- sub_task
|
|
70
|
+
|
|
71
|
+
issue_types:
|
|
72
|
+
user_story:
|
|
73
|
+
label: User Story
|
|
74
|
+
attributes:
|
|
75
|
+
priority:
|
|
76
|
+
type: enum
|
|
77
|
+
values: [critical, high, medium, low]
|
|
78
|
+
story_points:
|
|
79
|
+
type: int
|
|
80
|
+
body: |
|
|
81
|
+
## Context
|
|
82
|
+
|
|
83
|
+
## Acceptance Criteria
|
|
84
|
+
|
|
85
|
+
- [ ]
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### The rules that bite
|
|
89
|
+
|
|
90
|
+
- **`hierarchy` is the only parenting truth.** A type's index in the list *is*
|
|
91
|
+
the folder depth it must sit at. Creating a `user_story` under an `epic` is
|
|
92
|
+
rejected. Types on the same line share a level.
|
|
93
|
+
- **Every declared type must appear in the hierarchy, and vice versa.** A type
|
|
94
|
+
declared but not placed is a config error.
|
|
95
|
+
- **Type names are unique across all three namespaces**, because `lpm new <type>`
|
|
96
|
+
resolves the collection from the type name alone.
|
|
97
|
+
- **Prefixes must differ** (`key_prefix`, `period_prefix`, `resource_prefix`) so
|
|
98
|
+
ids never collide.
|
|
99
|
+
- **`priority_attribute` and `effort_attribute` are the only user-defined
|
|
100
|
+
attributes the engine reads.** Both optional; both validated at parse time.
|
|
101
|
+
Priority ranks `task next`; effort feeds `lpm team` and `split --split-effort`.
|
|
102
|
+
- **A type's `body` is its template.** Creating a document without a body
|
|
103
|
+
pre-populates it — this is how you make every story on the board read alike.
|
|
104
|
+
- Attribute types: `string`, `text`, `int`, `float`, `bool`, `date`, `enum`,
|
|
105
|
+
`array`. Any may add `required: true` and `default:`. An `enum` needs `values`.
|
|
106
|
+
- **Reserved field names cannot be attributes** (`id`, `type`, `title`, `status`,
|
|
107
|
+
`assignee`, `period`, `flag`, `depends_on`, `relates_to`, `related_files`,
|
|
108
|
+
`created`, `updated`, `author`, and the period/resource
|
|
109
|
+
equivalents). The config refuses the shadow. In particular you do not need an
|
|
110
|
+
attribute for "which files is this about" (`related_files`) or for "is this
|
|
111
|
+
stuck" (`flag`) — both are built in.
|
|
112
|
+
|
|
113
|
+
After any config edit:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
lpm check # and `--fix` for anything it marks fixable
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Context templates: what a developer is told
|
|
120
|
+
|
|
121
|
+
`lpm instructions <id>` / `get_instructions { id }` prints the **working brief**
|
|
122
|
+
for an issue — the titles and bodies of its whole ancestry, then the issue, its
|
|
123
|
+
breakdown, its blockers, the research it rests on and its work log. It is the
|
|
124
|
+
call a developer or an agent makes before writing any code, so the layout is a
|
|
125
|
+
board-level decision, like the statuses.
|
|
126
|
+
|
|
127
|
+
Layouts live in `.lpm/templates/context/<issue type>.md`, with `default.md`
|
|
128
|
+
behind them and a built-in layout behind that. `lpm init` writes starters for the
|
|
129
|
+
types the chosen config declares; on an existing board:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
lpm instructions --init # write the starters (never overwrites)
|
|
133
|
+
lpm instructions --init --force # replace them with the shipped ones
|
|
134
|
+
lpm instructions --list # which layout each type resolves to
|
|
135
|
+
lpm instructions LP-42 # see what a developer will actually be handed
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
They are [Eta](https://eta.js.org) templates — EJS syntax, ordinary JavaScript
|
|
139
|
+
between the tags:
|
|
140
|
+
|
|
141
|
+
```markdown
|
|
142
|
+
# <%= issue.id %> — <%= issue.title %>
|
|
143
|
+
|
|
144
|
+
<% if (epic) { %>
|
|
145
|
+
## Epic: <%= epic.title %>
|
|
146
|
+
|
|
147
|
+
<%= heading(epic.body, 3) %>
|
|
148
|
+
|
|
149
|
+
<% } %>
|
|
150
|
+
## The story
|
|
151
|
+
|
|
152
|
+
<%= heading(issue.body, 3) %>
|
|
153
|
+
|
|
154
|
+
<% for (const task of children) { %>
|
|
155
|
+
- <%= task.id %> <%= task.title %> — <%= task.status_label %>
|
|
156
|
+
<% } %>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Every issue type the board declares is available by name (`epic`, `feature`, …)
|
|
160
|
+
and resolves to the **nearest ancestor of that type**, so one template can say
|
|
161
|
+
"this story's epic". `heading(n)` re-levels a body so it nests under the heading
|
|
162
|
+
above it. `lpm instructions --help` lists every value and helper.
|
|
163
|
+
|
|
164
|
+
Four things to keep true when editing them:
|
|
165
|
+
|
|
166
|
+
- **The issue is `issue`, never `this`.** `this` inside a template is the engine,
|
|
167
|
+
not the document — and writing it is refused.
|
|
168
|
+
- **Guard anything optional.** `.length` for lists (an empty array is truthy in
|
|
169
|
+
JavaScript), the bare name for a document that may be absent. A board where
|
|
170
|
+
some stories have no epic still has to produce a brief.
|
|
171
|
+
- **Templates are not board truth.** They live under `.lpm/templates`, `lpm check`
|
|
172
|
+
does not know they exist, and no template can make a board invalid. A broken
|
|
173
|
+
one is a rendering error on one command, not a broken board.
|
|
174
|
+
- **They are, however, code.** See below.
|
|
175
|
+
|
|
176
|
+
### Context templates are executable — say so when you set a board up
|
|
177
|
+
|
|
178
|
+
Eta compiles a template into a JavaScript function and runs it. A `.lpm` folder
|
|
179
|
+
arrives over `git pull` from whoever wrote it, so **rendering somebody else's
|
|
180
|
+
board can run somebody else's JavaScript, as the person at the keyboard.**
|
|
181
|
+
|
|
182
|
+
light-plan reads every template before compiling it and refuses the known
|
|
183
|
+
escapes — `process`, `require`, `this`, `import()`, a property reached by a
|
|
184
|
+
computed key, Eta's file-reading `include`. Run the check over a whole board:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
lpm instructions --audit # exits 1 on a finding, so it belongs in CI
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
When you set up a board, or bring in one you did not write, tell the humans:
|
|
191
|
+
this refuses the known escapes, it **cannot make an untrusted template safe**,
|
|
192
|
+
and a `.lpm/templates/context/` from a stranger deserves the same reading as a
|
|
193
|
+
`postinstall` script. `--unsafe` overrides the refusal and is for a template you
|
|
194
|
+
wrote and meant; the MCP tool has no equivalent, so an agent can never opt out.
|
|
195
|
+
|
|
196
|
+
## The timeline (optional)
|
|
197
|
+
|
|
198
|
+
Periods answer "when". The namespace is all-or-nothing — declare
|
|
199
|
+
`period_prefix`, `period_types` and `period_hierarchy`, or none of them and
|
|
200
|
+
`timeline/` never exists.
|
|
201
|
+
|
|
202
|
+
```yaml
|
|
203
|
+
period_prefix: TL
|
|
204
|
+
period_hierarchy: [increment, sprint]
|
|
205
|
+
period_types:
|
|
206
|
+
increment: { label: Product Increment }
|
|
207
|
+
sprint: { label: Sprint }
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
lpm new increment -t "PI-1" --starts 2026-08-03 --ends 2026-10-24
|
|
212
|
+
lpm new sprint -t "Sprint 12" -p TL-1 --starts 2026-08-17 --ends 2026-08-28
|
|
213
|
+
lpm move LP-42 --period TL-8
|
|
214
|
+
lpm move LP-42 --period none
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Dates are `YYYY-MM-DD` and both are required on a period. Nothing in light-plan
|
|
218
|
+
ever works a date out for you: it learns dates only from period documents, and it
|
|
219
|
+
never levels or schedules on your behalf. A period containing today is "now", and
|
|
220
|
+
when periods nest only the innermost running one counts.
|
|
221
|
+
|
|
222
|
+
## The roster (optional)
|
|
223
|
+
|
|
224
|
+
Same all-or-nothing rule. Two kinds of resource, and the distinction is
|
|
225
|
+
load-bearing:
|
|
226
|
+
|
|
227
|
+
```yaml
|
|
228
|
+
resource_prefix: RS
|
|
229
|
+
resource_hierarchy: [person, role]
|
|
230
|
+
resource_types:
|
|
231
|
+
person: { label: Person }
|
|
232
|
+
role: { label: Role, generic: true } # a pool, not a human
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
`generic: true` belongs to the **type**, never to a document, and only resource
|
|
236
|
+
types may set it.
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
lpm new person -t "Alice Smith" --set email=alice@example.com
|
|
240
|
+
lpm new role -t "Web developer" --capacity 3 # a pool of three
|
|
241
|
+
lpm link RS-1 --covers RS-4 # Alice can take web-pool work
|
|
242
|
+
lpm team # who is carrying what
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
- **A named person** is one human's queue.
|
|
246
|
+
- **A generic pool** is a role. Work parked there is offered to everyone covering
|
|
247
|
+
it, and the first to ask gets it.
|
|
248
|
+
- **Coverage is one hop and does not chain.** A pool covering a pool buys nothing.
|
|
249
|
+
- **A pool nobody covers is a dead end** — `lpm team` flags it, and work in it can
|
|
250
|
+
never be picked up.
|
|
251
|
+
|
|
252
|
+
Capacity is full-time equivalents: `1` a person, `0.5` part-time, `3` a pool of
|
|
253
|
+
three. `lpm team` reports demand against it and **never levels it** — the
|
|
254
|
+
judgement stays yours.
|
|
255
|
+
|
|
256
|
+
## Setting up a developer
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
lpm me "Alice Smith" # per checkout, stored in .lpm/local.json (git-ignored)
|
|
260
|
+
LPM_USER=RS-2 lpm task next # override for one command
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
For a distributed team, give each developer a **profile** — one YAML file naming
|
|
264
|
+
who they are and which part of the board they are offered:
|
|
265
|
+
|
|
266
|
+
```yaml
|
|
267
|
+
# profiles/alice.yml
|
|
268
|
+
user: Alice Smith
|
|
269
|
+
scope:
|
|
270
|
+
under: [LP-2] # only work at or below these documents
|
|
271
|
+
exclude: [LP-9] # never these, nor anything below them
|
|
272
|
+
types: [user_story, bug]
|
|
273
|
+
periods: [TL-8] # or a period below one of these
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
lpm profile --init ./profiles/alice.yml --user "Alice Smith" # write a starter
|
|
278
|
+
lpm profile ./profiles/alice.yml # adopt one
|
|
279
|
+
lpm profile # what is in force
|
|
280
|
+
lpm profile --clear
|
|
281
|
+
LPM_PROFILE=./profiles/bob.yml lpm task next # one shell
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Every scope key narrows; combining them is an AND; `exclude` beats `under`; a
|
|
285
|
+
period folds its child periods in. Unknown keys are an error, and a stale `under`
|
|
286
|
+
offers nothing rather than silently widening.
|
|
287
|
+
|
|
288
|
+
**Scope decides what is offered, never what is reachable.** It filters `task
|
|
289
|
+
next`, bare `task start`, `next_tasks` and `list_documents` — not `get_document`,
|
|
290
|
+
`lpm open`, `lpm set` or work already in flight. It is routing, not access
|
|
291
|
+
control. Full reference: `docs/profiles.md`.
|
|
292
|
+
|
|
293
|
+
## Setting up an agent
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
lpm mcp setup # -> <board>/.mcp.json
|
|
297
|
+
lpm mcp setup --user "Planner Bot"
|
|
298
|
+
lpm mcp setup --profile ./profiles/frontend-agent.yml --name frontend
|
|
299
|
+
lpm mcp setup --file ~/.cursor/mcp.json # merge into an existing config
|
|
300
|
+
lpm mcp setup --read-only --name light-plan-ro
|
|
301
|
+
lpm mcp setup --print # just show it
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
`--file` merges in place, matching the key the file already uses (`servers` for
|
|
305
|
+
VS Code, `mcpServers` for everyone else) and leaving the rest untouched. Without
|
|
306
|
+
it a new file is written and an existing one is never clobbered without `--force`.
|
|
307
|
+
Add one entry per agent with `--name`.
|
|
308
|
+
|
|
309
|
+
`--user` and `--profile` are **per session and never written to
|
|
310
|
+
`.lpm/local.json`**, so a dozen agents can share one checkout without overwriting
|
|
311
|
+
each other's identity or scope. `--read-only` registers only the tools that do
|
|
312
|
+
not write.
|
|
313
|
+
|
|
314
|
+
A profile can carry the identity too, so one file per agent is the whole setup:
|
|
315
|
+
|
|
316
|
+
```yaml
|
|
317
|
+
user: Frontend Bot
|
|
318
|
+
scope:
|
|
319
|
+
under: [LP-2]
|
|
320
|
+
types: [user_story, bug]
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
The MCP SDK is an *optional* dependency — installed by default, but if the
|
|
324
|
+
project was installed with `--no-optional`, `lpm mcp` says what to install.
|
|
325
|
+
|
|
326
|
+
## End-to-end: a new board for a team of four
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
lpm init --template scrum --prefix ACME
|
|
330
|
+
|
|
331
|
+
# people and a pool
|
|
332
|
+
lpm new person -t "Alice Smith"
|
|
333
|
+
lpm new person -t "Bob Jones"
|
|
334
|
+
lpm new role -t "Web developer" --capacity 2
|
|
335
|
+
lpm link RS-1 --covers RS-3
|
|
336
|
+
lpm link RS-2 --covers RS-3
|
|
337
|
+
|
|
338
|
+
# the calendar
|
|
339
|
+
lpm new increment -t "PI-1" --starts 2026-08-03 --ends 2026-10-24
|
|
340
|
+
lpm new sprint -t "Sprint 1" -p TL-1 --starts 2026-08-03 --ends 2026-08-14
|
|
341
|
+
|
|
342
|
+
# check it holds together before anyone plans against it
|
|
343
|
+
lpm check
|
|
344
|
+
lpm team
|
|
345
|
+
|
|
346
|
+
# route each developer, and each agent
|
|
347
|
+
lpm profile --init ./profiles/alice.yml --user "Alice Smith"
|
|
348
|
+
lpm mcp setup --name planner --user "Planner Bot" --file .mcp.json
|
|
349
|
+
|
|
350
|
+
# commit the board's own repo
|
|
351
|
+
cd .lpm && git add -A && git commit -m "Board scaffold: roster, PI-1, Sprint 1"
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
Then load `lpm-planning` to populate it.
|