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,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* id -> the ids that gate it, restricted to ids that actually exist.
|
|
3
|
+
*
|
|
4
|
+
* `depends_on` is the only gating edge: it says the work cannot start until
|
|
5
|
+
* something else is finished, and `nextTasks` withholds the issue while it is
|
|
6
|
+
* open. `relates_to` implies nothing and is deliberately absent — a loop of
|
|
7
|
+
* associations is not a stall.
|
|
8
|
+
*/
|
|
9
|
+
function adjacency(issues) {
|
|
10
|
+
const known = new Set(issues.map((issue) => issue.id));
|
|
11
|
+
const graph = new Map();
|
|
12
|
+
for (const issue of issues) {
|
|
13
|
+
graph.set(issue.id, issue.depends_on.filter((target) => known.has(target) && target !== issue.id));
|
|
14
|
+
}
|
|
15
|
+
return graph;
|
|
16
|
+
}
|
|
17
|
+
/** Rotate so the smallest id comes first, giving one stable key per cycle. */
|
|
18
|
+
function canonicalKey(cycle) {
|
|
19
|
+
let pivot = 0;
|
|
20
|
+
for (let index = 1; index < cycle.length; index += 1) {
|
|
21
|
+
if (cycle[index] < cycle[pivot])
|
|
22
|
+
pivot = index;
|
|
23
|
+
}
|
|
24
|
+
return [...cycle.slice(pivot), ...cycle.slice(0, pivot)].join('>');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Every distinct cycle in a gating graph, each reported once. Members are
|
|
28
|
+
* listed in traversal order and do not repeat the entry point.
|
|
29
|
+
*
|
|
30
|
+
* Takes the graph rather than building one, because `check` runs it over the
|
|
31
|
+
* *inherited* edges (a story waits on what its feature waits on) while `link`
|
|
32
|
+
* runs it over the written ones. Same algorithm, two graphs, one implementation.
|
|
33
|
+
*/
|
|
34
|
+
export function findCyclesIn(graph, order) {
|
|
35
|
+
const state = new Map();
|
|
36
|
+
const stack = [];
|
|
37
|
+
const cycles = new Map();
|
|
38
|
+
const visit = (node) => {
|
|
39
|
+
state.set(node, 'open');
|
|
40
|
+
stack.push(node);
|
|
41
|
+
for (const next of graph.get(node) ?? []) {
|
|
42
|
+
const seen = state.get(next);
|
|
43
|
+
if (seen === 'open') {
|
|
44
|
+
const start = stack.indexOf(next);
|
|
45
|
+
if (start >= 0) {
|
|
46
|
+
const cycle = stack.slice(start);
|
|
47
|
+
const key = canonicalKey(cycle);
|
|
48
|
+
if (!cycles.has(key))
|
|
49
|
+
cycles.set(key, cycle);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else if (seen === undefined) {
|
|
53
|
+
visit(next);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
stack.pop();
|
|
57
|
+
state.set(node, 'done');
|
|
58
|
+
};
|
|
59
|
+
for (const id of order) {
|
|
60
|
+
if (!state.has(id))
|
|
61
|
+
visit(id);
|
|
62
|
+
}
|
|
63
|
+
return [...cycles.values()];
|
|
64
|
+
}
|
|
65
|
+
/** Every distinct cycle in the edges as written, for `link` and for tests. */
|
|
66
|
+
export function findDependencyCycles(issues) {
|
|
67
|
+
return findCyclesIn(adjacency(issues), issues.map((issue) => issue.id));
|
|
68
|
+
}
|
|
69
|
+
function findPath(graph, from, to) {
|
|
70
|
+
const previous = new Map();
|
|
71
|
+
const queue = [from];
|
|
72
|
+
const seen = new Set([from]);
|
|
73
|
+
while (queue.length) {
|
|
74
|
+
const node = queue.shift();
|
|
75
|
+
if (node === to) {
|
|
76
|
+
const path = [node];
|
|
77
|
+
let cursor = node;
|
|
78
|
+
while (previous.has(cursor)) {
|
|
79
|
+
cursor = previous.get(cursor);
|
|
80
|
+
path.unshift(cursor);
|
|
81
|
+
}
|
|
82
|
+
return path;
|
|
83
|
+
}
|
|
84
|
+
for (const next of graph.get(node) ?? []) {
|
|
85
|
+
if (seen.has(next))
|
|
86
|
+
continue;
|
|
87
|
+
seen.add(next);
|
|
88
|
+
previous.set(next, node);
|
|
89
|
+
queue.push(next);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The cycle that adding a gating edge from `from` to `to` would create, or null
|
|
96
|
+
* if it is safe. Lets `lpm link` reject a bad edge instead of writing it and
|
|
97
|
+
* having `lpm check` complain afterwards.
|
|
98
|
+
*
|
|
99
|
+
* Works against typed engine documents with a BFS through an adjacency graph.
|
|
100
|
+
* `src/shared/plans/reading.ts` carries the DTO-shaped copy, which works
|
|
101
|
+
* against the flat `BoardView` record with a recursive DFS. Both ask the same
|
|
102
|
+
* question; they differ in data shape and algorithm, which is why they stay
|
|
103
|
+
* duplicated. When one changes, the other must follow.
|
|
104
|
+
*/
|
|
105
|
+
export function wouldCycle(issues, from, to) {
|
|
106
|
+
if (from === to)
|
|
107
|
+
return [from];
|
|
108
|
+
const path = findPath(adjacency(issues), to, from);
|
|
109
|
+
return path ? [from, ...path.slice(0, -1)] : null;
|
|
110
|
+
}
|
|
111
|
+
export function formatCycle(cycle) {
|
|
112
|
+
return [...cycle, cycle[0]].join(' -> ');
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../../src/core/model/links.ts"],"names":[],"mappings":"AAWA;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,MAAwB;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,GAAG,CACP,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,CAAC,CAC9E,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,SAAS,YAAY,CAAC,KAAe;IACnC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,KAAK,CAAC,KAAK,CAAE,GAAG,KAAK,CAAC,KAAK,CAAE;YAAE,KAAK,GAAG,KAAK,CAAC;IACnD,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAA4B,EAAE,KAAe;IACxE,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE3C,MAAM,KAAK,GAAG,CAAC,IAAY,EAAQ,EAAE;QACnC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;oBACf,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACjC,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;oBAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QACD,KAAK,CAAC,GAAG,EAAE,CAAC;QACZ,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB,CAAC,MAAwB;IAC3D,OAAO,YAAY,CACjB,SAAS,CAAC,MAAM,CAAC,EACjB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAA4B,EAAE,IAAY,EAAE,EAAU;IACtE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7B,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC5B,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,MAAwB,EAAE,IAAY,EAAE,EAAU;IAC3E,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,OAAO,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A developer's profile: who they are, and which part of the board is theirs.
|
|
3
|
+
*
|
|
4
|
+
* A profile is not board truth. It lives in a file outside `.lpm` that one
|
|
5
|
+
* person is handed, and it answers a question the board deliberately does not:
|
|
6
|
+
* of everything on it, what should be *offered* to this person. Nothing in
|
|
7
|
+
* `board/` or `validation/` may read one — a board that validated differently
|
|
8
|
+
* depending on who was looking would not be one board.
|
|
9
|
+
*
|
|
10
|
+
* Every field is optional and an absent field means "no opinion", which is why
|
|
11
|
+
* `under?: string[]` rather than `under: string[]`: a declared-but-empty list
|
|
12
|
+
* ("scope me to these zero epics") is a different claim from an absent one.
|
|
13
|
+
*/
|
|
14
|
+
export interface ProfileScope {
|
|
15
|
+
/** Only work at or below these documents. */
|
|
16
|
+
under?: string[];
|
|
17
|
+
/** Never these documents, nor anything below them. Wins over `under`. */
|
|
18
|
+
exclude?: string[];
|
|
19
|
+
/** Only issues of these types. */
|
|
20
|
+
types?: string[];
|
|
21
|
+
/** Only work scheduled in these periods, or in a period below one of them. */
|
|
22
|
+
periods?: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface Profile {
|
|
25
|
+
/** The roster entry this developer acts as: an id or a name. */
|
|
26
|
+
user: string | null;
|
|
27
|
+
scope: ProfileScope;
|
|
28
|
+
}
|
|
29
|
+
export declare function emptyProfile(): Profile;
|
|
30
|
+
/** True when a scope declares nothing, so the whole board is in it. */
|
|
31
|
+
export declare function isEmptyScope(scope: ProfileScope): boolean;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function emptyProfile() {
|
|
2
|
+
return { user: null, scope: {} };
|
|
3
|
+
}
|
|
4
|
+
/** True when a scope declares nothing, so the whole board is in it. */
|
|
5
|
+
export function isEmptyScope(scope) {
|
|
6
|
+
return !scope.under && !scope.exclude && !scope.types && !scope.periods;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/core/model/profile.ts"],"names":[],"mappings":"AA8BA,MAAM,UAAU,YAAY;IAC1B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACnC,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,YAAY,CAAC,KAAmB;IAC9C,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
import type { ParamDefs } from '../../shared/template-params.js';
|
|
2
|
+
export { DERIVED_FLAG, isDerivedFlag } from '../../shared/flag-rollup.js';
|
|
3
|
+
export type { ParamDef, ParamDefs } from '../../shared/template-params.js';
|
|
4
|
+
/** Attribute value kinds a board config may declare. Deliberately small. */
|
|
5
|
+
export declare const ATTRIBUTE_TYPES: readonly ["string", "text", "int", "float", "bool", "date", "enum", "array"];
|
|
6
|
+
export type AttributeType = (typeof ATTRIBUTE_TYPES)[number];
|
|
7
|
+
export interface AttributeDef {
|
|
8
|
+
type: AttributeType;
|
|
9
|
+
description?: string;
|
|
10
|
+
required?: boolean;
|
|
11
|
+
default?: unknown;
|
|
12
|
+
/** Allowed values, required for (and only for) `enum`. */
|
|
13
|
+
values?: string[];
|
|
14
|
+
}
|
|
15
|
+
/** Shared shape of an issue type, a period type and a resource type. */
|
|
16
|
+
export interface TypeDef {
|
|
17
|
+
label: string;
|
|
18
|
+
attributes: Record<string, AttributeDef>;
|
|
19
|
+
/** Markdown scaffolding written into new documents of this type. */
|
|
20
|
+
body: string;
|
|
21
|
+
/**
|
|
22
|
+
* Resource types only: documents of this type are a pool ("a jr. developer"),
|
|
23
|
+
* not a named person. Whether a resource is generic is a property of its type,
|
|
24
|
+
* so no document has to declare it.
|
|
25
|
+
*/
|
|
26
|
+
generic?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Issue types only: work of this type is taken whole. It is offered by the
|
|
29
|
+
* queue even when it has children, and nothing nested inside it is offered
|
|
30
|
+
* separately -- the children are its checklist, not somebody else's ticket.
|
|
31
|
+
* Absent means the old rule: only issues with no children are work.
|
|
32
|
+
*/
|
|
33
|
+
atomic?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface StatusDef {
|
|
36
|
+
id: string;
|
|
37
|
+
label: string;
|
|
38
|
+
/** Marks a column as an end state (e.g. Done). */
|
|
39
|
+
terminal?: boolean;
|
|
40
|
+
/** Marks a column as work in progress, for `lpm task current` / `start`. */
|
|
41
|
+
active?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/** Which way a remote syncs. `both` runs the two planners in turn. */
|
|
44
|
+
export type RemoteDirection = 'both' | 'push' | 'pull';
|
|
45
|
+
/**
|
|
46
|
+
* What to do when one side deletes a document the other side still mirrors.
|
|
47
|
+
* The single policy reads in both directions, with the value set the two
|
|
48
|
+
* directions need between them:
|
|
49
|
+
*
|
|
50
|
+
* - **Pull side** (the remote twin is confirmed gone — LP-365): `unlink`
|
|
51
|
+
* decouples the local document (a tombstone, so the next sync never
|
|
52
|
+
* re-files it); `close` moves it to the board's terminal status and
|
|
53
|
+
* decouples it; `delete` removes it through the ordinary `remove`
|
|
54
|
+
* operation; `restore` re-files it upstream under a new remote id and
|
|
55
|
+
* re-links; `manual` moves neither side and reports the document as
|
|
56
|
+
* conflicted for a human to settle.
|
|
57
|
+
*
|
|
58
|
+
* - **Push side** (the local document is deleted, or leaves the remote's
|
|
59
|
+
* `scope:` — LP-351): `unlink` (the default) leaves the remote twin alone
|
|
60
|
+
* and drops the link; `close` closes the twin and posts a comment saying
|
|
61
|
+
* why; `delete` deletes the twin, only where the platform allows and only
|
|
62
|
+
* with confirmation every run — it is never satisfied by a remembered
|
|
63
|
+
* consent. `restore` and `manual` have no push-side meaning and fall back
|
|
64
|
+
* to `unlink`, so a value meant for the pull side can never delete or close
|
|
65
|
+
* upstream by surprise.
|
|
66
|
+
*/
|
|
67
|
+
export type RemoteOnDelete = 'unlink' | 'close' | 'delete' | 'restore' | 'manual';
|
|
68
|
+
/** How a field both sides edited is resolved. */
|
|
69
|
+
export type RemoteConflictPolicy = 'manual' | 'local' | 'remote';
|
|
70
|
+
/**
|
|
71
|
+
* Which side wins a field both sides edited, declared as a per-field override
|
|
72
|
+
* (`fields: { status: { owner: remote } }`). A field with an owner never
|
|
73
|
+
* conflicts — the owner simply wins. `manual` is deliberately not one of
|
|
74
|
+
* these: an owner names a winner, and `manual` is the *absence* of one, which
|
|
75
|
+
* the remote's default `conflict` policy already expresses.
|
|
76
|
+
*/
|
|
77
|
+
export type RemoteFieldOwner = 'local' | 'remote';
|
|
78
|
+
/**
|
|
79
|
+
* Where fields the remote cannot hold natively are encoded: a managed block
|
|
80
|
+
* in the issue body (the default), or a managed comment when the body is not
|
|
81
|
+
* writable. Core validates the spelling; `src/remote` acts on it.
|
|
82
|
+
*/
|
|
83
|
+
export type RemoteEncoding = 'block' | 'comment';
|
|
84
|
+
/**
|
|
85
|
+
* How user comments sync (LP-316). `push` (the default) sends new local
|
|
86
|
+
* comments upstream and never pulls remote ones down; `both` does that and
|
|
87
|
+
* also appends remote comments to `_comments.md` on pull. Comment sync is a
|
|
88
|
+
* side channel — comments are not board state — so it follows the remote's
|
|
89
|
+
* `direction` (a `pull` remote never pushes comments, a `push` remote never
|
|
90
|
+
* pulls them) and the mode only widens what a direction already allows.
|
|
91
|
+
*/
|
|
92
|
+
export type RemoteCommentsMode = 'push' | 'both';
|
|
93
|
+
/**
|
|
94
|
+
* One declared remote, as core stores it after validating the *frame*.
|
|
95
|
+
*
|
|
96
|
+
* Core knows a remote has a name, a provider, a scope, a direction and two
|
|
97
|
+
* policies — it never knows what a provider is. `connection` and `mapping` are
|
|
98
|
+
* opaque records here; the provider's own schema validates their contents when
|
|
99
|
+
* the remote is opened (`src/remote/remotes.ts`), exactly as `storage/views.ts`
|
|
100
|
+
* owns the contents of a view file while core owns the file itself.
|
|
101
|
+
*/
|
|
102
|
+
export interface RemoteConfig {
|
|
103
|
+
/** Provider name, resolved to an implementation when the remote is opened. */
|
|
104
|
+
provider: string;
|
|
105
|
+
/** Issue id at the root of the mirrored subtree; absent means the whole board. */
|
|
106
|
+
scope?: string;
|
|
107
|
+
/** Which direction the sync runs. Defaults to `both`. */
|
|
108
|
+
direction: RemoteDirection;
|
|
109
|
+
/** What to do when the remote twin disappears. */
|
|
110
|
+
on_delete: RemoteOnDelete;
|
|
111
|
+
/** How a field both sides edited is resolved. */
|
|
112
|
+
conflict: RemoteConflictPolicy;
|
|
113
|
+
/**
|
|
114
|
+
* The bulk guard (LP-364): a run where more than this fraction of linked
|
|
115
|
+
* twins is missing at once is treated as unreachable rather than as a wave
|
|
116
|
+
* of deletions. Absent means the default (0.5) applies; `1` disables the
|
|
117
|
+
* guard, since a fraction can never exceed 1.
|
|
118
|
+
*/
|
|
119
|
+
bulk_guard?: number;
|
|
120
|
+
/**
|
|
121
|
+
* The write threshold (LP-350): a push whose plan creates or closes more
|
|
122
|
+
* than this many issues stops and requires `--yes`. Absent means the
|
|
123
|
+
* default (25) applies.
|
|
124
|
+
*/
|
|
125
|
+
write_threshold?: number;
|
|
126
|
+
/**
|
|
127
|
+
* Per-field conflict overrides, keyed by board field name (a canonical
|
|
128
|
+
* field such as `status` or `depends_on`, or a declared attribute name):
|
|
129
|
+
* the field always takes the named owner and never conflicts.
|
|
130
|
+
* Defaults to `{}` — every field follows `conflict`.
|
|
131
|
+
*/
|
|
132
|
+
fields: Record<string, RemoteFieldOwner>;
|
|
133
|
+
/**
|
|
134
|
+
* Where degraded fields are encoded: a managed block in the body, or a
|
|
135
|
+
* managed comment. Defaults to `block`; `comment` is the spelling of
|
|
136
|
+
* "the body is not writable" (LP-278).
|
|
137
|
+
*/
|
|
138
|
+
encoding: RemoteEncoding;
|
|
139
|
+
/** How user comments sync: `push` (default) or `both` (LP-316). */
|
|
140
|
+
comments: RemoteCommentsMode;
|
|
141
|
+
/** Provider-specific connection settings. Opaque to core; the provider validates it. */
|
|
142
|
+
connection: Record<string, unknown>;
|
|
143
|
+
/** Provider-specific vocabulary mapping. Opaque to core; the provider validates it. */
|
|
144
|
+
mapping: Record<string, unknown>;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* The one type the template registry adds to the issue vocabulary: a container
|
|
148
|
+
* that stands in for a level instead of templatizing it.
|
|
149
|
+
*
|
|
150
|
+
* A template of a feature has to sit at the feature's depth, so something has to
|
|
151
|
+
* occupy the epic's level above it — that is a folder. It is never instantiated
|
|
152
|
+
* and it holds nothing but other folders and the roots of templates.
|
|
153
|
+
*
|
|
154
|
+
* The name is reserved across every namespace (`config/schema.ts` refuses it),
|
|
155
|
+
* because the registry reuses the issue types by name and a board declaring its
|
|
156
|
+
* own `folder` would make "which folder?" unanswerable.
|
|
157
|
+
*/
|
|
158
|
+
export declare const TEMPLATE_FOLDER_TYPE = "folder";
|
|
159
|
+
/** The definition the registry uses for its one own type. */
|
|
160
|
+
export declare const TEMPLATE_FOLDER_DEF: TypeDef;
|
|
161
|
+
export interface BoardConfig {
|
|
162
|
+
version: number;
|
|
163
|
+
key_prefix: string;
|
|
164
|
+
default_status: string;
|
|
165
|
+
statuses: StatusDef[];
|
|
166
|
+
issue_types: Record<string, TypeDef>;
|
|
167
|
+
/**
|
|
168
|
+
* Normalized issue hierarchy. Index is folder depth; each level lists the
|
|
169
|
+
* type names allowed at that depth. Level 0 types live at the board root.
|
|
170
|
+
*/
|
|
171
|
+
hierarchy: string[][];
|
|
172
|
+
/** Prefix for period ids. Distinct from `key_prefix`. */
|
|
173
|
+
period_prefix: string;
|
|
174
|
+
/** Period types. Empty when the board does not use a time hierarchy. */
|
|
175
|
+
period_types: Record<string, TypeDef>;
|
|
176
|
+
/** Normalized period hierarchy, same shape as `hierarchy`. */
|
|
177
|
+
period_hierarchy: string[][];
|
|
178
|
+
/** Prefix for resource ids. Distinct from the other two prefixes. */
|
|
179
|
+
resource_prefix: string;
|
|
180
|
+
/** Resource types. Empty when the board does not use a team roster. */
|
|
181
|
+
resource_types: Record<string, TypeDef>;
|
|
182
|
+
/** Normalized resource hierarchy, same shape as `hierarchy`. */
|
|
183
|
+
resource_hierarchy: string[][];
|
|
184
|
+
/**
|
|
185
|
+
* Prefix for template ids. Distinct from the other prefixes.
|
|
186
|
+
*
|
|
187
|
+
* The registry has no `template_types` or `template_hierarchy` beside this,
|
|
188
|
+
* and never will: a template *is* an issue of one of the board's own types,
|
|
189
|
+
* so the namespace is derived from `issue_types` and `hierarchy` rather than
|
|
190
|
+
* declared a second time. @see templateTypes / templateHierarchy
|
|
191
|
+
*/
|
|
192
|
+
template_prefix: string;
|
|
193
|
+
/** Prefix for squad ids. Distinct from the other three prefixes. */
|
|
194
|
+
squad_prefix: string;
|
|
195
|
+
/** Squad types. Empty when the board does not use squads. */
|
|
196
|
+
squad_types: Record<string, TypeDef>;
|
|
197
|
+
/** Normalized squad hierarchy, same shape as `hierarchy`. */
|
|
198
|
+
squad_hierarchy: string[][];
|
|
199
|
+
/**
|
|
200
|
+
* Name of the enum issue attribute that ranks work, most important value
|
|
201
|
+
* first. Empty when the board declares none.
|
|
202
|
+
*/
|
|
203
|
+
priority_attribute: string;
|
|
204
|
+
/** Name of the numeric issue attribute that measures effort. Empty when unset. */
|
|
205
|
+
effort_attribute: string;
|
|
206
|
+
/**
|
|
207
|
+
* The remotes this board mirrors to, keyed by remote name. Empty when the
|
|
208
|
+
* board declares none. Core stores the frame of each entry and never acts on
|
|
209
|
+
* it; `src/remote` opens a remote and validates its provider-specific parts.
|
|
210
|
+
*/
|
|
211
|
+
remotes: Record<string, RemoteConfig>;
|
|
212
|
+
/**
|
|
213
|
+
* Remotes that are declared but turned off, keyed by name — the same blocks
|
|
214
|
+
* `remotes` holds, moved aside. Nothing opens, pushes, pulls or reports on
|
|
215
|
+
* one; it exists so a mirror can be turned off (to share the board through
|
|
216
|
+
* git instead) and on again without being configured from scratch. Its link
|
|
217
|
+
* store and credentials under `.lpm/remotes/<name>/` are left exactly as they
|
|
218
|
+
* were. Read it with `remotesOffNames`; `operations/remotes-off.ts` moves a
|
|
219
|
+
* block between the two.
|
|
220
|
+
*/
|
|
221
|
+
remotes_off: Record<string, RemoteConfig>;
|
|
222
|
+
/**
|
|
223
|
+
* How this board is shared through its own git repository, or null when it
|
|
224
|
+
* is not. Read it with `gitSyncOf`; `src/core/gitsync` is what acts on it.
|
|
225
|
+
* Exclusive with `remotes`: a board syncs through git or mirrors onto
|
|
226
|
+
* trackers, never both.
|
|
227
|
+
*/
|
|
228
|
+
git_sync: GitSyncConfig | null;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* The board's git remote: which remote of the `.lpm` repository it pushes to,
|
|
232
|
+
* and which branch there. The URL is not here — git keeps it in `.lpm/.git`,
|
|
233
|
+
* per clone, which is where a teammate's clone already has it.
|
|
234
|
+
*/
|
|
235
|
+
export interface GitSyncConfig {
|
|
236
|
+
/** The git remote name inside `.lpm` (`origin`). */
|
|
237
|
+
remote: string;
|
|
238
|
+
/** The branch on that remote the board lives on (`main`, `_lpm_board_remote`). */
|
|
239
|
+
branch: string;
|
|
240
|
+
}
|
|
241
|
+
export declare function hasPeriods(config: BoardConfig): boolean;
|
|
242
|
+
export declare function hasResources(config: BoardConfig): boolean;
|
|
243
|
+
export declare function hasSquads(config: BoardConfig): boolean;
|
|
244
|
+
/**
|
|
245
|
+
* Frontmatter keys owned by light-plan. Custom attributes may not use these.
|
|
246
|
+
* Fields backed by frontmatter keep the snake_case spelling of the key;
|
|
247
|
+
* fields derived at load time (dir, parentId, depth) are camelCase.
|
|
248
|
+
*/
|
|
249
|
+
export declare const ISSUE_RESERVED_FIELDS: readonly ["id", "type", "title", "status", "assignee", "period", "flag", "depends_on", "relates_to", "related_files", "created", "updated", "author"];
|
|
250
|
+
export declare const PERIOD_RESERVED_FIELDS: readonly ["id", "type", "title", "starts", "ends", "active", "squad", "created", "updated", "author"];
|
|
251
|
+
export declare const RESOURCE_RESERVED_FIELDS: readonly ["id", "type", "title", "capacity", "covers", "created", "updated", "author"];
|
|
252
|
+
export declare const TEMPLATE_RESERVED_FIELDS: readonly ["id", "type", "title", "description", "params", "depends_on", "relates_to", "related_files", "created", "updated", "author"];
|
|
253
|
+
export declare const SQUAD_RESERVED_FIELDS: readonly ["id", "type", "title", "members", "created", "updated", "author"];
|
|
254
|
+
/**
|
|
255
|
+
* Why an issue somebody is working on has stopped.
|
|
256
|
+
*
|
|
257
|
+
* A flag is not a status: the work stays where it is, in whatever column the
|
|
258
|
+
* board calls "in progress", and the flag says it is not moving. That is
|
|
259
|
+
* deliberate — a board that had to invent a "blocked" column would lose the
|
|
260
|
+
* distinction between "nobody has started this" and "somebody started it and
|
|
261
|
+
* hit a wall", and only the second one needs anyone's attention today.
|
|
262
|
+
*/
|
|
263
|
+
export declare const FLAG_REASONS: readonly ["blocked", "paused", "help"];
|
|
264
|
+
export type FlagReason = (typeof FLAG_REASONS)[number];
|
|
265
|
+
/**
|
|
266
|
+
* A reason a *person* may raise. `DERIVED_FLAG` is deliberately not one: it is
|
|
267
|
+
* the roll-up's word for "something inside this has stopped", and letting
|
|
268
|
+
* somebody type it would make a container's own flag indistinguishable from one
|
|
269
|
+
* the roll-up may clear. `flagIssue` refuses it for that reason.
|
|
270
|
+
*/
|
|
271
|
+
export declare function isFlagReason(value: string): value is FlagReason;
|
|
272
|
+
/**
|
|
273
|
+
* A value that may legitimately sit in a document's `flag` field — the reasons
|
|
274
|
+
* a person may raise, plus the one the roll-up writes.
|
|
275
|
+
*
|
|
276
|
+
* A different question from `isFlagReason`, and `check` asks this one: `--fix`
|
|
277
|
+
* writes `DERIVED_FLAG` onto containers, so validating against the raiseable
|
|
278
|
+
* reasons alone would make the repair produce a board that fails the check that
|
|
279
|
+
* asked for it.
|
|
280
|
+
*/
|
|
281
|
+
export declare function isValidFlag(value: string): boolean;
|
|
282
|
+
/**
|
|
283
|
+
* The label a flag is shown with, falling back to whatever the file says — a
|
|
284
|
+
* value this version does not know is still printed rather than swallowed.
|
|
285
|
+
*
|
|
286
|
+
* `src/shared/model.ts` carries the same list and the same function for the
|
|
287
|
+
* browser, which imports nothing from core by design. They must agree, or the
|
|
288
|
+
* canvas and `lpm flag list` will call the same flag two different things.
|
|
289
|
+
*/
|
|
290
|
+
export declare function flagLabel(flag: string): string;
|
|
291
|
+
export type NodeKind = 'issue' | 'period' | 'resource' | 'squad' | 'template';
|
|
292
|
+
export declare function reservedFieldsFor(kind: NodeKind): readonly string[];
|
|
293
|
+
/** Everything an issue and a period have in common. */
|
|
294
|
+
export interface BaseNode {
|
|
295
|
+
kind: NodeKind;
|
|
296
|
+
id: string;
|
|
297
|
+
type: string;
|
|
298
|
+
title: string;
|
|
299
|
+
created?: string;
|
|
300
|
+
updated?: string;
|
|
301
|
+
author?: string;
|
|
302
|
+
/** Config-declared custom attributes, plus any extra frontmatter keys found. */
|
|
303
|
+
attributes: Record<string, unknown>;
|
|
304
|
+
body: string;
|
|
305
|
+
/** Absolute path to the document's folder. */
|
|
306
|
+
dir: string;
|
|
307
|
+
/** Absolute path to the document's markdown file. */
|
|
308
|
+
file: string;
|
|
309
|
+
parentId: string | null;
|
|
310
|
+
/** Folder depth below the collection root; 0 for top-level documents. */
|
|
311
|
+
depth: number;
|
|
312
|
+
}
|
|
313
|
+
export interface Issue extends BaseNode {
|
|
314
|
+
kind: 'issue';
|
|
315
|
+
status: string;
|
|
316
|
+
/** Id of the resource this issue is assigned to — a person or a pool. */
|
|
317
|
+
assignee: string | null;
|
|
318
|
+
/** Id of the period this issue is scheduled in, at any level. */
|
|
319
|
+
period: string | null;
|
|
320
|
+
/**
|
|
321
|
+
* Why this issue has stalled, or `null` when it has not — one of
|
|
322
|
+
* `FLAG_REASONS`. Raised by whoever is doing the work and cleared by whoever
|
|
323
|
+
* is running the plan, always with a comment saying why (`flagIssue` writes
|
|
324
|
+
* both, so no front end can raise a flag nobody can act on).
|
|
325
|
+
*
|
|
326
|
+
* Anything unrecognized is kept rather than dropped, so a flag written by a
|
|
327
|
+
* newer version of light-plan still shouts; `check` is what reports it.
|
|
328
|
+
*/
|
|
329
|
+
flag: string | null;
|
|
330
|
+
/** Ids this issue is blocked by. The inverse is derived, never stored. */
|
|
331
|
+
depends_on: string[];
|
|
332
|
+
/** Ids this issue is associated with, without implying an ordering. */
|
|
333
|
+
relates_to: string[];
|
|
334
|
+
/**
|
|
335
|
+
* Files this issue is about: the requirement it was written from, the source
|
|
336
|
+
* that has to change, the fixture that proves it. Free text rather than ids,
|
|
337
|
+
* because the things worth pointing at live outside the board — a path
|
|
338
|
+
* relative to the project root, optionally with a line range
|
|
339
|
+
* (`docs/prd.md#L10-L42`).
|
|
340
|
+
*
|
|
341
|
+
* Deliberately not checked against the filesystem. An issue may name a file
|
|
342
|
+
* that does not exist yet — that is frequently the whole point of it — and a
|
|
343
|
+
* board that failed CI because somebody renamed a module would teach people
|
|
344
|
+
* to stop filling this in.
|
|
345
|
+
*/
|
|
346
|
+
related_files: string[];
|
|
347
|
+
}
|
|
348
|
+
export interface Period extends BaseNode {
|
|
349
|
+
kind: 'period';
|
|
350
|
+
/** Inclusive start date, YYYY-MM-DD. */
|
|
351
|
+
starts?: string;
|
|
352
|
+
/** Inclusive end date, YYYY-MM-DD. */
|
|
353
|
+
ends?: string;
|
|
354
|
+
/**
|
|
355
|
+
* A switch held over the dates: `true` runs this period whatever the calendar
|
|
356
|
+
* says, `false` parks it. **Absent is the normal case** and means the dates
|
|
357
|
+
* decide, which is why this is optional rather than defaulted — a board that
|
|
358
|
+
* has never touched a switch behaves exactly as it always did.
|
|
359
|
+
*
|
|
360
|
+
* It exists because not every team plans by date. Turning a sprint off is how
|
|
361
|
+
* a reader says "not this one, work on that one instead" without inventing
|
|
362
|
+
* dates they do not believe in, and `periodStance` is the only place that
|
|
363
|
+
* reads it.
|
|
364
|
+
*/
|
|
365
|
+
active?: boolean;
|
|
366
|
+
/** Id of the squad that owns this period, or null. */
|
|
367
|
+
squad: string | null;
|
|
368
|
+
}
|
|
369
|
+
export interface Resource extends BaseNode {
|
|
370
|
+
kind: 'resource';
|
|
371
|
+
/**
|
|
372
|
+
* Full-time equivalents this resource supplies: 1 for a full-time person,
|
|
373
|
+
* 0.5 part-time, 3 for a pool of three. Defaults to 1 when absent.
|
|
374
|
+
*/
|
|
375
|
+
capacity: number;
|
|
376
|
+
/** Generic resources this one can be drawn from. The inverse is derived. */
|
|
377
|
+
covers: string[];
|
|
378
|
+
}
|
|
379
|
+
export interface Squad extends BaseNode {
|
|
380
|
+
kind: 'squad';
|
|
381
|
+
/** Resource ids that belong to this squad. The inverse is derived. */
|
|
382
|
+
members: string[];
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* A reusable piece of plan, kept in the registry (`.lpm/registry/`) and copied
|
|
386
|
+
* into the board on request.
|
|
387
|
+
*
|
|
388
|
+
* A template is written exactly like the issue it produces — it carries one of
|
|
389
|
+
* the board's own issue types, sits at that type's depth, and nests the same way
|
|
390
|
+
* — minus everything about *this* piece of work: no status, no assignee, no
|
|
391
|
+
* period, no flag. What it adds is a `description` (so the registry reads as a
|
|
392
|
+
* catalogue rather than a folder listing) and, on a root, the `params` whoever
|
|
393
|
+
* instantiates it has to answer.
|
|
394
|
+
*/
|
|
395
|
+
export interface Template extends BaseNode {
|
|
396
|
+
kind: 'template';
|
|
397
|
+
/** What this template is for, one or two lines. Shown in the registry. */
|
|
398
|
+
description: string;
|
|
399
|
+
/**
|
|
400
|
+
* What this template asks for, keyed by name. Declared only on a **root** —
|
|
401
|
+
* a template whose parent is a folder or nothing — because the root is the
|
|
402
|
+
* only thing anybody instantiates, and its children take the same answers.
|
|
403
|
+
* Empty on everything else.
|
|
404
|
+
*/
|
|
405
|
+
params: ParamDefs;
|
|
406
|
+
/** Template ids this one depends on. Repointed at the copies on instantiation. */
|
|
407
|
+
depends_on: string[];
|
|
408
|
+
/** Template ids this one is associated with, without implying an ordering. */
|
|
409
|
+
relates_to: string[];
|
|
410
|
+
/** Files the issues produced from this template should point at. */
|
|
411
|
+
related_files: string[];
|
|
412
|
+
}
|
|
413
|
+
export type AnyNode = Issue | Period | Resource | Squad | Template;
|
|
414
|
+
export interface IssueNode extends Issue {
|
|
415
|
+
children: IssueNode[];
|
|
416
|
+
}
|
|
417
|
+
export interface PeriodNode extends Period {
|
|
418
|
+
children: PeriodNode[];
|
|
419
|
+
}
|
|
420
|
+
export interface ResourceNode extends Resource {
|
|
421
|
+
children: ResourceNode[];
|
|
422
|
+
}
|
|
423
|
+
export interface SquadNode extends Squad {
|
|
424
|
+
children: SquadNode[];
|
|
425
|
+
}
|
|
426
|
+
export interface TemplateNode extends Template {
|
|
427
|
+
children: TemplateNode[];
|
|
428
|
+
}
|
|
429
|
+
/** True for the registry's own container type, which is never instantiated. */
|
|
430
|
+
export declare function isFolderTemplate(node: {
|
|
431
|
+
type: string;
|
|
432
|
+
}): boolean;
|
|
433
|
+
export type ProblemLevel = 'error' | 'warn';
|
|
434
|
+
export interface Problem {
|
|
435
|
+
level: ProblemLevel;
|
|
436
|
+
/** Path relative to the board root, for display. */
|
|
437
|
+
path: string;
|
|
438
|
+
message: string;
|
|
439
|
+
/** True when `check --fix` can repair this automatically. */
|
|
440
|
+
fixable?: boolean;
|
|
441
|
+
}
|