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
|
+
import { rmSync } from 'node:fs';
|
|
2
|
+
import { nodesOf, subtreeOf } from '../board/query.js';
|
|
3
|
+
import { nowIso } from '../storage/document.js';
|
|
4
|
+
import { displayPath } from '../storage/paths.js';
|
|
5
|
+
import { writeBoardIndex } from './board-index.js';
|
|
6
|
+
import { boardWrite, requireUnchanged, writeDocument } from './shared.js';
|
|
7
|
+
/** Drop every removed id from a stored list, or return null when nothing changed. */
|
|
8
|
+
function without(list, removed) {
|
|
9
|
+
const kept = list.filter((id) => !removed.has(id));
|
|
10
|
+
return kept.length === list.length ? null : kept;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Delete a document and everything nested under it.
|
|
14
|
+
*
|
|
15
|
+
* Deleting is not just an `rm`: only forward edges are stored, so any document
|
|
16
|
+
* that pointed *at* the deleted subtree has to be rewritten, otherwise the board
|
|
17
|
+
* is left with dangling references for `check` to complain about.
|
|
18
|
+
*/
|
|
19
|
+
export function removeNode(board, target) {
|
|
20
|
+
return boardWrite(board, `delete ${target.id}`, () => removeUnderLock(board, target));
|
|
21
|
+
}
|
|
22
|
+
function removeUnderLock(board, target) {
|
|
23
|
+
// Deleting is irreversible and rewrites every document that pointed into the
|
|
24
|
+
// subtree, so it is the one operation where a stale handle costs the most.
|
|
25
|
+
requireUnchanged(board, target);
|
|
26
|
+
const doomed = subtreeOf(nodesOf(board, target.kind), target);
|
|
27
|
+
const removed = new Set(doomed.map((node) => node.id));
|
|
28
|
+
const removedDirs = new Set(doomed.map((node) => node.dir));
|
|
29
|
+
rmSync(target.dir, { recursive: true, force: true });
|
|
30
|
+
const detached = [];
|
|
31
|
+
const rewrite = (node, mutate) => {
|
|
32
|
+
if (removedDirs.has(node.dir))
|
|
33
|
+
return;
|
|
34
|
+
const draft = { ...node };
|
|
35
|
+
if (!mutate(draft))
|
|
36
|
+
return;
|
|
37
|
+
draft.updated = nowIso();
|
|
38
|
+
writeDocument(board, draft);
|
|
39
|
+
detached.push(draft.id);
|
|
40
|
+
};
|
|
41
|
+
for (const issue of board.issues) {
|
|
42
|
+
rewrite(issue, (draft) => {
|
|
43
|
+
if (draft.kind !== 'issue')
|
|
44
|
+
return false;
|
|
45
|
+
let changed = false;
|
|
46
|
+
const dependsOn = without(draft.depends_on, removed);
|
|
47
|
+
if (dependsOn) {
|
|
48
|
+
draft.depends_on = dependsOn;
|
|
49
|
+
changed = true;
|
|
50
|
+
}
|
|
51
|
+
const relatesTo = without(draft.relates_to, removed);
|
|
52
|
+
if (relatesTo) {
|
|
53
|
+
draft.relates_to = relatesTo;
|
|
54
|
+
changed = true;
|
|
55
|
+
}
|
|
56
|
+
if (draft.assignee && removed.has(draft.assignee)) {
|
|
57
|
+
draft.assignee = null;
|
|
58
|
+
changed = true;
|
|
59
|
+
}
|
|
60
|
+
if (draft.period && removed.has(draft.period)) {
|
|
61
|
+
draft.period = null;
|
|
62
|
+
changed = true;
|
|
63
|
+
}
|
|
64
|
+
return changed;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
for (const resource of board.resources) {
|
|
68
|
+
rewrite(resource, (draft) => {
|
|
69
|
+
if (draft.kind !== 'resource')
|
|
70
|
+
return false;
|
|
71
|
+
const covers = without(draft.covers, removed);
|
|
72
|
+
if (!covers)
|
|
73
|
+
return false;
|
|
74
|
+
draft.covers = covers;
|
|
75
|
+
return true;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
for (const squad of board.squads) {
|
|
79
|
+
rewrite(squad, (draft) => {
|
|
80
|
+
if (draft.kind !== 'squad')
|
|
81
|
+
return false;
|
|
82
|
+
const members = without(draft.members, removed);
|
|
83
|
+
if (!members)
|
|
84
|
+
return false;
|
|
85
|
+
draft.members = members;
|
|
86
|
+
return true;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
for (const template of board.templates) {
|
|
90
|
+
rewrite(template, (draft) => {
|
|
91
|
+
if (draft.kind !== 'template')
|
|
92
|
+
return false;
|
|
93
|
+
let changed = false;
|
|
94
|
+
const dependsOn = without(draft.depends_on, removed);
|
|
95
|
+
if (dependsOn) {
|
|
96
|
+
draft.depends_on = dependsOn;
|
|
97
|
+
changed = true;
|
|
98
|
+
}
|
|
99
|
+
const relatesTo = without(draft.relates_to, removed);
|
|
100
|
+
if (relatesTo) {
|
|
101
|
+
draft.relates_to = relatesTo;
|
|
102
|
+
changed = true;
|
|
103
|
+
}
|
|
104
|
+
return changed;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
writeBoardIndex(board, { node: target, removed: true });
|
|
108
|
+
return {
|
|
109
|
+
removed: doomed.map((node) => node.id),
|
|
110
|
+
path: displayPath(board.paths, target.dir),
|
|
111
|
+
detached,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/core/operations/remove.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { LoadedBoard } from '../board/load.js';
|
|
2
|
+
import type { AnyNode } from '../model/types.js';
|
|
3
|
+
export interface RetypeInput {
|
|
4
|
+
type: string;
|
|
5
|
+
/**
|
|
6
|
+
* Where the retyped document should sit. Omit to keep the current parent —
|
|
7
|
+
* which only works when the new type lives at the same depth as the old one.
|
|
8
|
+
* Passing it lets one call do "demote this feature into a story under that
|
|
9
|
+
* other feature", which is what dragging a node onto a node means.
|
|
10
|
+
*/
|
|
11
|
+
parentId?: string | null;
|
|
12
|
+
}
|
|
13
|
+
export interface RetypeResult {
|
|
14
|
+
node: AnyNode;
|
|
15
|
+
movedTo?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Change a document's type, and optionally its parent at the same time.
|
|
19
|
+
*
|
|
20
|
+
* Attributes are remapped rather than reset: values whose names the new type
|
|
21
|
+
* also declares are kept, attributes only the new type declares are seeded with
|
|
22
|
+
* their initial value, and keys neither type declares stay untouched — `load`
|
|
23
|
+
* preserves those extras and `check` is what reports them.
|
|
24
|
+
*/
|
|
25
|
+
export declare function retypeNode(board: LoadedBoard, target: AnyNode, input: RetypeInput): RetypeResult;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { allowedDepths } from '../config/lookup.js';
|
|
2
|
+
import { requirePlacement } from '../board/registry.js';
|
|
3
|
+
import { BoardError } from '../errors.js';
|
|
4
|
+
import { initialValueFor } from '../model/attributes.js';
|
|
5
|
+
import { nowIso } from '../storage/document.js';
|
|
6
|
+
import { writeBoardIndex } from './board-index.js';
|
|
7
|
+
import { boardWrite, relocateFolder, requireSubtreeFits, requireUnchanged, resolveNewParent, typeDefOf, writeDocument, } from './shared.js';
|
|
8
|
+
/**
|
|
9
|
+
* Change a document's type, and optionally its parent at the same time.
|
|
10
|
+
*
|
|
11
|
+
* Attributes are remapped rather than reset: values whose names the new type
|
|
12
|
+
* also declares are kept, attributes only the new type declares are seeded with
|
|
13
|
+
* their initial value, and keys neither type declares stay untouched — `load`
|
|
14
|
+
* preserves those extras and `check` is what reports them.
|
|
15
|
+
*/
|
|
16
|
+
export function retypeNode(board, target, input) {
|
|
17
|
+
return boardWrite(board, `retype ${target.id}`, () => retypeUnderLock(board, target, input));
|
|
18
|
+
}
|
|
19
|
+
function retypeUnderLock(board, target, input) {
|
|
20
|
+
requireUnchanged(board, target);
|
|
21
|
+
const newDef = typeDefOf(board, target.kind, input.type);
|
|
22
|
+
const oldDef = target.type ? typeDefOf(board, target.kind, target.type) : null;
|
|
23
|
+
const parent = input.parentId === undefined
|
|
24
|
+
? undefined
|
|
25
|
+
: resolveNewParent(board, target, input.parentId);
|
|
26
|
+
const newDepth = parent === undefined ? target.depth : parent ? parent.depth + 1 : 0;
|
|
27
|
+
// A list, not a number: the registry's `folder` stands in for any level, so
|
|
28
|
+
// "where does this type belong?" can have more than one answer.
|
|
29
|
+
const depths = allowedDepths(board.config, target.kind, input.type);
|
|
30
|
+
if (!depths.includes(newDepth)) {
|
|
31
|
+
throw new BoardError(`"${input.type}" cannot sit at level ${newDepth}`, [
|
|
32
|
+
depths.length
|
|
33
|
+
? `"${input.type}" belongs at level ${depths.join(' or ')}`
|
|
34
|
+
: `"${input.type}" is not in the ${target.kind} hierarchy`,
|
|
35
|
+
]);
|
|
36
|
+
}
|
|
37
|
+
if (target.kind === 'template') {
|
|
38
|
+
const holder = parent === undefined
|
|
39
|
+
? (target.parentId ? board.templatesById.get(target.parentId) ?? null : null)
|
|
40
|
+
: parent;
|
|
41
|
+
requirePlacement(input.type, holder);
|
|
42
|
+
}
|
|
43
|
+
requireSubtreeFits(board, target, newDepth, input.type);
|
|
44
|
+
const attributes = {};
|
|
45
|
+
for (const [name, def] of Object.entries(newDef.attributes)) {
|
|
46
|
+
attributes[name] = name in target.attributes ? target.attributes[name] : initialValueFor(def);
|
|
47
|
+
}
|
|
48
|
+
for (const [name, value] of Object.entries(target.attributes)) {
|
|
49
|
+
if (!newDef.attributes[name] && !oldDef?.attributes[name])
|
|
50
|
+
attributes[name] = value;
|
|
51
|
+
}
|
|
52
|
+
const node = { ...target, type: input.type, attributes };
|
|
53
|
+
const movedTo = parent === undefined ? undefined : relocateFolder(board, node, parent);
|
|
54
|
+
node.updated = nowIso();
|
|
55
|
+
writeDocument(board, node);
|
|
56
|
+
writeBoardIndex(board, { node, ...(movedTo ? { from: target.dir } : {}) });
|
|
57
|
+
return { node, movedTo };
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=retype.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retype.js","sourceRoot":"","sources":["../../../src/core/operations/retype.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACL,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,aAAa,GACd,MAAM,aAAa,CAAC;AAkBrB;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,KAAkB,EAAE,MAAe,EAAE,KAAkB;IAChF,OAAO,UAAU,CAAC,KAAK,EAAE,UAAU,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,eAAe,CAAC,KAAkB,EAAE,MAAe,EAAE,KAAkB;IAC9E,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE/E,MAAM,MAAM,GACV,KAAK,CAAC,QAAQ,KAAK,SAAS;QAC1B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAErF,4EAA4E;IAC5E,gEAAgE;IAChE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,yBAAyB,QAAQ,EAAE,EAAE;YACtE,MAAM,CAAC,MAAM;gBACX,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,sBAAsB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC3D,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,mBAAmB,MAAM,CAAC,IAAI,YAAY;SAC7D,CAAC,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS;YACjC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7E,CAAC,CAAC,MAAM,CAAC;QACX,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAExD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAChG,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACtF,CAAC;IAED,MAAM,IAAI,GAAY,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAEvF,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3B,eAAe,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { LoadedBoard } from '../board/load.js';
|
|
2
|
+
import type { IssueFlagRollup } from '../board/flag-rollup.js';
|
|
3
|
+
import type { IssueRollup } from '../board/rollup.js';
|
|
4
|
+
import type { Issue } from '../model/types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Writing the status a container derives from the work inside it.
|
|
7
|
+
*
|
|
8
|
+
* Nobody drags a feature through the columns — the stories under it are what
|
|
9
|
+
* get worked — so closing the last one closes the feature, and reopening one
|
|
10
|
+
* reopens it. Doing that here, in an operation, is what makes it true of the
|
|
11
|
+
* CLI, the MCP server and the web app at once instead of three times over, and
|
|
12
|
+
* `lpm check --fix` repairs a board where it never happened (hand-edited
|
|
13
|
+
* frontmatter, a merge, a board written before this existed).
|
|
14
|
+
*
|
|
15
|
+
* Every roll-up leaves a line in the parent's activity section. A status
|
|
16
|
+
* nobody typed has to say where it came from, or the first person to notice it
|
|
17
|
+
* has no way to tell an automatic change from somebody else's edit.
|
|
18
|
+
*
|
|
19
|
+
* @see src/shared/rollup.ts for the rule, and `board/rollup.ts` for the reading.
|
|
20
|
+
*/
|
|
21
|
+
export interface AppliedRollup extends IssueRollup {
|
|
22
|
+
/** The flag closing the parent took off, when there was one. */
|
|
23
|
+
flagCleared?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Write each roll-up to disk, in the order given, and report what landed.
|
|
27
|
+
*
|
|
28
|
+
* Clears a flag on a parent that has just been closed, exactly as `moveNode`
|
|
29
|
+
* does for the issue somebody finished by hand: a red box on something nobody
|
|
30
|
+
* is working on is noise on the canvas forever.
|
|
31
|
+
*/
|
|
32
|
+
export declare function writeRollups(board: LoadedBoard, rollups: IssueRollup[]): AppliedRollup[];
|
|
33
|
+
/**
|
|
34
|
+
* Carry an issue's new status up through the containers above it and write what
|
|
35
|
+
* changes, nearest first.
|
|
36
|
+
*
|
|
37
|
+
* `status` is the one the issue now holds: core operations write straight to
|
|
38
|
+
* disk, so the board handle still shows the status it had a moment ago.
|
|
39
|
+
*/
|
|
40
|
+
export declare function propagateStatus(board: LoadedBoard, issue: Issue, status: string): AppliedRollup[];
|
|
41
|
+
/**
|
|
42
|
+
* Writing the flag a container derives from the stopped work inside it.
|
|
43
|
+
*
|
|
44
|
+
* The same shape as the status roll-up above and for the same reason: whoever
|
|
45
|
+
* runs the plan reads the board from the top, and a story flagged four levels
|
|
46
|
+
* down was invisible from there. A container gains `DERIVED_FLAG` while
|
|
47
|
+
* anything inside it is flagged and loses it when the last one is cleared.
|
|
48
|
+
*
|
|
49
|
+
* It never touches a flag somebody raised — `rolledUpFlag` writes and clears
|
|
50
|
+
* one value and one value only — so a feature paused by hand keeps saying that.
|
|
51
|
+
*
|
|
52
|
+
* @see src/shared/flag-rollup.ts for the rule.
|
|
53
|
+
*/
|
|
54
|
+
export interface AppliedFlagRollup extends IssueFlagRollup {
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Write each flag roll-up to disk, in the order given, and report what landed.
|
|
58
|
+
*
|
|
59
|
+
* Every one leaves a line in the container's activity section, exactly as a
|
|
60
|
+
* status roll-up does: a flag nobody typed has to say where it came from, or
|
|
61
|
+
* the first person to see the red box has no way to tell it from somebody's.
|
|
62
|
+
* No comment is written — `_comments.md` is where a person explains a stall,
|
|
63
|
+
* and filling it with one derived entry per ancestor per flag would bury the
|
|
64
|
+
* explanation the flag exists to carry.
|
|
65
|
+
*/
|
|
66
|
+
export declare function writeFlagRollups(board: LoadedBoard, rollups: IssueFlagRollup[], seed?: Map<string, string | null>): AppliedFlagRollup[];
|
|
67
|
+
/**
|
|
68
|
+
* Carry a flag change up through the containers above it and write what changes.
|
|
69
|
+
*
|
|
70
|
+
* `flags` names every id whose flag has just been written — the issue itself,
|
|
71
|
+
* plus any ancestor a status roll-up took a flag off in the same call. The
|
|
72
|
+
* board handle is stale by then, which is what the overlay is for.
|
|
73
|
+
*/
|
|
74
|
+
export declare function propagateFlag(board: LoadedBoard, from: Issue, flags: Map<string, string | null>): AppliedFlagRollup[];
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { flagRollupsFor } from '../board/flag-rollup.js';
|
|
2
|
+
import { rollupsFor } from '../board/rollup.js';
|
|
3
|
+
import { isTerminalStatus } from '../config/lookup.js';
|
|
4
|
+
import { flagLabel } from '../model/types.js';
|
|
5
|
+
import { appendActivityEntry } from '../storage/activity.js';
|
|
6
|
+
import { nowIso } from '../storage/document.js';
|
|
7
|
+
import { gitIdentity } from '../storage/git.js';
|
|
8
|
+
import { setFlag, writeDocument } from './shared.js';
|
|
9
|
+
function note(rollup, board) {
|
|
10
|
+
const closing = isTerminalStatus(board.config, rollup.to);
|
|
11
|
+
return {
|
|
12
|
+
heading: `status rolled up: ${rollup.from} → ${rollup.to}`,
|
|
13
|
+
text: closing
|
|
14
|
+
? 'Every issue inside it is finished.'
|
|
15
|
+
: 'There is open work inside it again.',
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Write each roll-up to disk, in the order given, and report what landed.
|
|
20
|
+
*
|
|
21
|
+
* Clears a flag on a parent that has just been closed, exactly as `moveNode`
|
|
22
|
+
* does for the issue somebody finished by hand: a red box on something nobody
|
|
23
|
+
* is working on is noise on the canvas forever.
|
|
24
|
+
*/
|
|
25
|
+
export function writeRollups(board, rollups) {
|
|
26
|
+
if (!rollups.length)
|
|
27
|
+
return [];
|
|
28
|
+
let identity = null;
|
|
29
|
+
const author = () => (identity ??= gitIdentity(board.paths.lpmDir) || 'unknown');
|
|
30
|
+
const applied = [];
|
|
31
|
+
for (const rollup of rollups) {
|
|
32
|
+
const at = nowIso();
|
|
33
|
+
const { heading, text } = note(rollup, board);
|
|
34
|
+
const issue = {
|
|
35
|
+
...rollup.issue,
|
|
36
|
+
status: rollup.to,
|
|
37
|
+
updated: at,
|
|
38
|
+
body: appendActivityEntry(rollup.issue.body, { at, author: author(), heading, text }),
|
|
39
|
+
};
|
|
40
|
+
let flagCleared;
|
|
41
|
+
if (issue.flag && isTerminalStatus(board.config, rollup.to)) {
|
|
42
|
+
flagCleared = issue.flag;
|
|
43
|
+
setFlag(issue, null, { at, author: author(), heading: 'flag cleared — work finished' });
|
|
44
|
+
}
|
|
45
|
+
writeDocument(board, issue);
|
|
46
|
+
applied.push({ issue, from: rollup.from, to: rollup.to, flagCleared });
|
|
47
|
+
}
|
|
48
|
+
return applied;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Carry an issue's new status up through the containers above it and write what
|
|
52
|
+
* changes, nearest first.
|
|
53
|
+
*
|
|
54
|
+
* `status` is the one the issue now holds: core operations write straight to
|
|
55
|
+
* disk, so the board handle still shows the status it had a moment ago.
|
|
56
|
+
*/
|
|
57
|
+
export function propagateStatus(board, issue, status) {
|
|
58
|
+
return writeRollups(board, rollupsFor(board, issue, status));
|
|
59
|
+
}
|
|
60
|
+
function flagNote(rollup, board, flags) {
|
|
61
|
+
if (!rollup.to) {
|
|
62
|
+
return {
|
|
63
|
+
heading: 'flag cleared — nothing inside is stopped any more',
|
|
64
|
+
text: '',
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// Through the overlay, because the write that caused this roll-up has already
|
|
68
|
+
// landed on disk and the board handle has not seen it — naming the issue that
|
|
69
|
+
// stopped is the whole value of the note.
|
|
70
|
+
const flagOf = (id) => flags.has(id) ? flags.get(id) : (board.byId.get(id)?.flag ?? null);
|
|
71
|
+
const stopped = board.issues
|
|
72
|
+
.filter((issue) => issue.parentId === rollup.issue.id && flagOf(issue.id))
|
|
73
|
+
.map((issue) => issue.id);
|
|
74
|
+
return {
|
|
75
|
+
heading: `flagged: ${flagLabel(rollup.to)}`,
|
|
76
|
+
text: stopped.length
|
|
77
|
+
? `Work inside this has stopped — see ${stopped.join(', ')}.`
|
|
78
|
+
: 'Work inside this has stopped.',
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Write each flag roll-up to disk, in the order given, and report what landed.
|
|
83
|
+
*
|
|
84
|
+
* Every one leaves a line in the container's activity section, exactly as a
|
|
85
|
+
* status roll-up does: a flag nobody typed has to say where it came from, or
|
|
86
|
+
* the first person to see the red box has no way to tell it from somebody's.
|
|
87
|
+
* No comment is written — `_comments.md` is where a person explains a stall,
|
|
88
|
+
* and filling it with one derived entry per ancestor per flag would bury the
|
|
89
|
+
* explanation the flag exists to carry.
|
|
90
|
+
*/
|
|
91
|
+
export function writeFlagRollups(board, rollups, seed = new Map()) {
|
|
92
|
+
if (!rollups.length)
|
|
93
|
+
return [];
|
|
94
|
+
let identity = null;
|
|
95
|
+
const author = () => (identity ??= gitIdentity(board.paths.lpmDir) || 'unknown');
|
|
96
|
+
const applied = [];
|
|
97
|
+
// Grows as the walk writes, so a note further up names the container below it
|
|
98
|
+
// that this call has only just marked.
|
|
99
|
+
const flags = new Map(seed);
|
|
100
|
+
for (const rollup of rollups) {
|
|
101
|
+
const at = nowIso();
|
|
102
|
+
const { heading, text } = flagNote(rollup, board, flags);
|
|
103
|
+
const issue = { ...rollup.issue, updated: at };
|
|
104
|
+
setFlag(issue, rollup.to, { at, author: author(), heading, text });
|
|
105
|
+
writeDocument(board, issue);
|
|
106
|
+
flags.set(issue.id, rollup.to);
|
|
107
|
+
applied.push({ issue, from: rollup.from, to: rollup.to });
|
|
108
|
+
}
|
|
109
|
+
return applied;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Carry a flag change up through the containers above it and write what changes.
|
|
113
|
+
*
|
|
114
|
+
* `flags` names every id whose flag has just been written — the issue itself,
|
|
115
|
+
* plus any ancestor a status roll-up took a flag off in the same call. The
|
|
116
|
+
* board handle is stale by then, which is what the overlay is for.
|
|
117
|
+
*/
|
|
118
|
+
export function propagateFlag(board, from, flags) {
|
|
119
|
+
return writeFlagRollups(board, flagRollupsFor(board, from.id, flags), flags);
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=rollup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollup.js","sourceRoot":"","sources":["../../../src/core/operations/rollup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import type { LoadedBoard } from '../board/load.js';
|
|
2
|
+
import type { AnyNode, BaseNode, Issue, NodeKind, Period, Resource, TypeDef } from '../model/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Guards and builders shared by create/move/link. Internal to this folder:
|
|
5
|
+
* the public surface is the operations themselves.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Run an operation as the board's only writer.
|
|
9
|
+
*
|
|
10
|
+
* Every exported operation wraps its body in this, so a board on a shared
|
|
11
|
+
* checkout serializes its writers instead of interleaving them. It nests, so an
|
|
12
|
+
* operation built out of other operations — `flagIssue` writing a document and
|
|
13
|
+
* then a comment, `claimIssue` delegating to `moveNode` — takes the lock once.
|
|
14
|
+
*
|
|
15
|
+
* `what` is what to tell whoever is waiting; name the document when there is
|
|
16
|
+
* one. @see src/core/storage/lock.ts
|
|
17
|
+
*/
|
|
18
|
+
export declare function boardWrite<T>(board: LoadedBoard, what: string, run: () => T): T;
|
|
19
|
+
/**
|
|
20
|
+
* Refuse to write over a change this handle never saw.
|
|
21
|
+
*
|
|
22
|
+
* The lock stops two writers overlapping; it cannot help a writer that read the
|
|
23
|
+
* board *before* taking it. That is every operation: a caller loads a board,
|
|
24
|
+
* decides what to do, and only then calls in — and on a shared checkout the
|
|
25
|
+
* document may have been rewritten in between. Comparing the file against the
|
|
26
|
+
* stamp the load recorded is what turns "the last write wins" into "the second
|
|
27
|
+
* writer is told".
|
|
28
|
+
*
|
|
29
|
+
* Called before an operation mutates anything, so a refusal leaves nothing
|
|
30
|
+
* half-done. A document with no stamp is one this handle never read — a
|
|
31
|
+
* document being created — and is not a conflict.
|
|
32
|
+
*/
|
|
33
|
+
export declare function requireUnchanged(board: LoadedBoard, node: BaseNode): void;
|
|
34
|
+
/**
|
|
35
|
+
* Write a document and record what was written, so this handle knows it.
|
|
36
|
+
*
|
|
37
|
+
* The stamp update is what lets one operation write the same document twice —
|
|
38
|
+
* a status roll-up and a flag roll-up can meet on the same container — without
|
|
39
|
+
* the second write mistaking its own predecessor for somebody else's edit.
|
|
40
|
+
*/
|
|
41
|
+
export declare function writeDocument(board: LoadedBoard, node: AnyNode): void;
|
|
42
|
+
/**
|
|
43
|
+
* Change an issue's flag and record the change in its body, in one call. The
|
|
44
|
+
* only way to move a flag, and the reason is that the two must not come apart.
|
|
45
|
+
*
|
|
46
|
+
* A flag is the one field on a board that says *work has stopped now*, and it
|
|
47
|
+
* is set and cleared as often by the engine as by a person: a container gains
|
|
48
|
+
* one because a story four levels down was flagged, an issue loses one because
|
|
49
|
+
* somebody finished it, `check --fix` repairs a container that drifted. None of
|
|
50
|
+
* those writes a comment — `_comments.md` is where a *person* explains a stall,
|
|
51
|
+
* and one derived entry per ancestor per flag would bury the explanation the
|
|
52
|
+
* flag exists to carry. So the activity section is the record, and it has to be
|
|
53
|
+
* written for every flag change including the ones nobody typed. Otherwise the
|
|
54
|
+
* common case is a red box in `_issue.md`, or a red box that quietly went away,
|
|
55
|
+
* with nothing in the file or in the board's git history saying when or why.
|
|
56
|
+
*
|
|
57
|
+
* Four callers, and there must never be a fifth that skips this:
|
|
58
|
+
* `flagIssue`/`clearFlag` (somebody said so), `moveNode` (finishing the work
|
|
59
|
+
* answered the flag), and both roll-ups in `rollup.ts` (the containers above
|
|
60
|
+
* it). `test/flags.test.ts` greps this package for a bare assignment to
|
|
61
|
+
* `flag` and fails if one appears anywhere but here.
|
|
62
|
+
*/
|
|
63
|
+
export declare function setFlag(issue: Issue, flag: string | null, entry: {
|
|
64
|
+
at: string;
|
|
65
|
+
author: string;
|
|
66
|
+
heading: string;
|
|
67
|
+
text?: string;
|
|
68
|
+
}): void;
|
|
69
|
+
export declare function typeDefOf(board: LoadedBoard, kind: NodeKind, type: string): TypeDef;
|
|
70
|
+
export declare function requireStatus(board: LoadedBoard, status: string): void;
|
|
71
|
+
export declare function requirePeriod(board: LoadedBoard, periodId: string): Period;
|
|
72
|
+
export declare function requireResource(board: LoadedBoard, idOrName: string): Resource;
|
|
73
|
+
/** A pool anyone can be drawn from, as opposed to a named person. */
|
|
74
|
+
export declare function requireGenericResource(board: LoadedBoard, idOrName: string): Resource;
|
|
75
|
+
export declare function requireCapacity(capacity: number): void;
|
|
76
|
+
/** Validate the targets of a `covers` list, normalizing ids and dropping duplicates. */
|
|
77
|
+
export declare function resolveCoverTargets(board: LoadedBoard, ids: string[]): string[];
|
|
78
|
+
export declare function requireDates(starts: string, ends: string): void;
|
|
79
|
+
/**
|
|
80
|
+
* Resolve the parent for a new document and check it sits at a depth its type
|
|
81
|
+
* is allowed at.
|
|
82
|
+
*
|
|
83
|
+
* Depths are a list rather than one number because of the registry's `folder`,
|
|
84
|
+
* which stands in for whichever level nobody templatized and so is legal at all
|
|
85
|
+
* of them. Every declared type appears at exactly one level, so for issues,
|
|
86
|
+
* periods, resources and squads the list has one entry and this reads as it
|
|
87
|
+
* always did. @see allowedDepths
|
|
88
|
+
*/
|
|
89
|
+
export declare function resolveParentFor(board: LoadedBoard, kind: NodeKind, type: string, parentId: string | undefined): BaseNode | null;
|
|
90
|
+
/**
|
|
91
|
+
* Seed a document's attributes and validate the ones the caller supplied.
|
|
92
|
+
*
|
|
93
|
+
* `allowPlaceholders` is for the registry: a template's attributes are declared
|
|
94
|
+
* by the issue type it will produce, so a placeholder waiting for a parameter
|
|
95
|
+
* sits in a field of the wrong type until it is filled in. @see holdsPlaceholder
|
|
96
|
+
*/
|
|
97
|
+
export declare function buildAttributes(typeDef: TypeDef, type: string, given: Record<string, unknown> | undefined, allowPlaceholders?: boolean): Record<string, unknown>;
|
|
98
|
+
export declare function allocateFor(board: LoadedBoard, kind: NodeKind): string;
|
|
99
|
+
export declare function prepareFolder(board: LoadedBoard, parentDir: string, id: string): string;
|
|
100
|
+
/**
|
|
101
|
+
* Resolve the node a document is being moved under, rejecting the two moves
|
|
102
|
+
* that would corrupt the tree: onto itself, and onto one of its descendants.
|
|
103
|
+
*/
|
|
104
|
+
export declare function resolveNewParent(board: LoadedBoard, node: BaseNode, parentId: string | null): BaseNode | null;
|
|
105
|
+
/**
|
|
106
|
+
* Check that a document and everything below it still sit at a depth their
|
|
107
|
+
* types are allowed at. `overrideType` stands in for the target's own type when
|
|
108
|
+
* the caller is about to change it.
|
|
109
|
+
*/
|
|
110
|
+
export declare function requireSubtreeFits(board: LoadedBoard, target: BaseNode, newDepth: number, overrideType?: string): void;
|
|
111
|
+
/**
|
|
112
|
+
* Move a document's folder under `parent` (or to the collection root), keeping
|
|
113
|
+
* `dir`, `file`, `depth` and `parentId` on the passed node in step. Returns the
|
|
114
|
+
* new board-relative path, or nothing when the folder was already in place.
|
|
115
|
+
*/
|
|
116
|
+
export declare function relocateFolder(board: LoadedBoard, node: AnyNode, parent: BaseNode | null): string | undefined;
|
|
117
|
+
/**
|
|
118
|
+
* Tidy a `related_files` list: trim, drop blanks, drop duplicates, keep order.
|
|
119
|
+
*
|
|
120
|
+
* Nothing here touches the filesystem or rewrites a path. A reference may name
|
|
121
|
+
* a file that does not exist yet, may carry a line range (`#L10-L42`), and is
|
|
122
|
+
* read by people and agents in whatever checkout they have — so normalizing it
|
|
123
|
+
* to an absolute path would break the one job it has.
|
|
124
|
+
*/
|
|
125
|
+
export declare function normalizeFileRefs(refs: string[]): string[];
|
|
126
|
+
/** Validate a list of link targets, normalizing ids and dropping duplicates. */
|
|
127
|
+
export declare function resolveLinkTargets(board: LoadedBoard, ids: string[]): string[];
|
|
128
|
+
/**
|
|
129
|
+
* The same, inside the registry. A template's dependencies name other templates
|
|
130
|
+
* — they become dependencies between the issues an instantiation produces — so
|
|
131
|
+
* an edge out of the registry into the board is refused rather than copied.
|
|
132
|
+
*/
|
|
133
|
+
export declare function resolveTemplateLinkTargets(board: LoadedBoard, ids: string[]): string[];
|