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,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The write-confirmation gate (LP-350) — the pure decision a push must pause
|
|
3
|
+
* for, shared by every front end so the CLI, the web panel and an agent cannot
|
|
4
|
+
* disagree about whether a plan needs consent.
|
|
5
|
+
*
|
|
6
|
+
* Two pauses, one memory:
|
|
7
|
+
*
|
|
8
|
+
* - **First write.** The very first time a remote is written to, a person
|
|
9
|
+
* must confirm the target and the counts. The consent is recorded once
|
|
10
|
+
* (`links.ts`'s `consentedAt`) and never asked again.
|
|
11
|
+
* - **Oversized plan.** A push whose plan creates or closes more than the
|
|
12
|
+
* configured threshold (default 25) stops and requires `--yes`, because a
|
|
13
|
+
* scope typo that makes half the board look deleted would otherwise close
|
|
14
|
+
* half a backlog — bulk-close is as dangerous as bulk-create.
|
|
15
|
+
*
|
|
16
|
+
* This file only *decides*. The prompting (interactive) and the refusal (a
|
|
17
|
+
* non-interactive run with no `--yes`) live in the caller — `runSync` enforces
|
|
18
|
+
* the decision through its `confirm` / `yes` options, and the CLI supplies the
|
|
19
|
+
* prompt. Nothing here touches a terminal, a file or a request.
|
|
20
|
+
*/
|
|
21
|
+
import type { PushPlan } from './plan.js';
|
|
22
|
+
import type { OpenedRemote } from './remotes.js';
|
|
23
|
+
/** The default write threshold: more creates+closes than this needs `--yes`. */
|
|
24
|
+
export declare const DEFAULT_WRITE_THRESHOLD = 25;
|
|
25
|
+
/** The write-shaped counts a plan implies, for the confirmation and the report. */
|
|
26
|
+
export interface PushWriteCounts {
|
|
27
|
+
/** New twins the plan files: `create` plus `restore` (a re-file is a create). */
|
|
28
|
+
creates: number;
|
|
29
|
+
/** Existing twins the plan closes (a terminal status reached, or `on_delete: close`). */
|
|
30
|
+
closes: number;
|
|
31
|
+
/** Existing twins the plan deletes (`on_delete: delete`). */
|
|
32
|
+
deletes: number;
|
|
33
|
+
/** Every remote write of any kind — the number `--limit` budgets against. */
|
|
34
|
+
writes: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Count the write-shaped operations in a push plan. `creates` and `closes`
|
|
38
|
+
* feed the threshold gate; `deletes` feeds both the threshold gate (a bulk
|
|
39
|
+
* deletion is a bulk write) and the every-run delete gate; `writes` feeds the
|
|
40
|
+
* first-write gate (any write at all) and the report.
|
|
41
|
+
*/
|
|
42
|
+
export declare function countPushWrites(plan: PushPlan): PushWriteCounts;
|
|
43
|
+
/** The configured threshold for a remote, or the default when it says nothing. */
|
|
44
|
+
export declare function writeThresholdOf(remote: OpenedRemote): number;
|
|
45
|
+
/** Why a push plan needs consent before it may run. */
|
|
46
|
+
export type ConsentReason = 'first_write' | 'threshold' | 'delete';
|
|
47
|
+
/** The decision: does this plan need a pause, and if so why. */
|
|
48
|
+
export interface ConsentGate {
|
|
49
|
+
/** True when the push may not run without consent. */
|
|
50
|
+
requiresConsent: boolean;
|
|
51
|
+
/** Why, when `requiresConsent`. */
|
|
52
|
+
reason?: ConsentReason;
|
|
53
|
+
/** The counts the gate decided on, for the message. */
|
|
54
|
+
counts: PushWriteCounts;
|
|
55
|
+
/** The threshold in force (used when `reason` is `threshold`). */
|
|
56
|
+
threshold: number;
|
|
57
|
+
}
|
|
58
|
+
/** What a confirmation prompt shows: the target, the reason, and the counts. */
|
|
59
|
+
export interface ConsentRequest {
|
|
60
|
+
remoteName: string;
|
|
61
|
+
/** The human-readable target (`owner/repo`, `PROJ @ host`, `team`). */
|
|
62
|
+
target: string;
|
|
63
|
+
reason: ConsentReason;
|
|
64
|
+
counts: PushWriteCounts;
|
|
65
|
+
threshold: number;
|
|
66
|
+
}
|
|
67
|
+
/** A refusal recorded on the result: the push was stopped, nothing written. */
|
|
68
|
+
export interface ConsentRefusal {
|
|
69
|
+
reason: ConsentReason;
|
|
70
|
+
target: string;
|
|
71
|
+
counts: PushWriteCounts;
|
|
72
|
+
threshold: number;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Decide whether a push needs consent.
|
|
76
|
+
*
|
|
77
|
+
* A plan with no remote writes never asks — there is nothing to confirm. An
|
|
78
|
+
* oversized plan (creates + closes + deletes above the threshold) outranks the
|
|
79
|
+
* rest, because `--yes` satisfies it and it is the strictest of the gates.
|
|
80
|
+
* A plan that deletes a twin (`on_delete: delete`) is the next: it must be
|
|
81
|
+
* confirmed **every run**, and the gate is never satisfied by a remembered
|
|
82
|
+
* first-write consent (LP-351). Otherwise the gate asks once, on the first
|
|
83
|
+
* write, until consent is recorded.
|
|
84
|
+
*/
|
|
85
|
+
export declare function consentGate(params: {
|
|
86
|
+
remote: OpenedRemote;
|
|
87
|
+
/** Whether first-write consent has already been recorded for this remote. */
|
|
88
|
+
consented: boolean;
|
|
89
|
+
plan: PushPlan;
|
|
90
|
+
}): ConsentGate;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The write-confirmation gate (LP-350) — the pure decision a push must pause
|
|
3
|
+
* for, shared by every front end so the CLI, the web panel and an agent cannot
|
|
4
|
+
* disagree about whether a plan needs consent.
|
|
5
|
+
*
|
|
6
|
+
* Two pauses, one memory:
|
|
7
|
+
*
|
|
8
|
+
* - **First write.** The very first time a remote is written to, a person
|
|
9
|
+
* must confirm the target and the counts. The consent is recorded once
|
|
10
|
+
* (`links.ts`'s `consentedAt`) and never asked again.
|
|
11
|
+
* - **Oversized plan.** A push whose plan creates or closes more than the
|
|
12
|
+
* configured threshold (default 25) stops and requires `--yes`, because a
|
|
13
|
+
* scope typo that makes half the board look deleted would otherwise close
|
|
14
|
+
* half a backlog — bulk-close is as dangerous as bulk-create.
|
|
15
|
+
*
|
|
16
|
+
* This file only *decides*. The prompting (interactive) and the refusal (a
|
|
17
|
+
* non-interactive run with no `--yes`) live in the caller — `runSync` enforces
|
|
18
|
+
* the decision through its `confirm` / `yes` options, and the CLI supplies the
|
|
19
|
+
* prompt. Nothing here touches a terminal, a file or a request.
|
|
20
|
+
*/
|
|
21
|
+
import { isRemoteWrite } from './execute.js';
|
|
22
|
+
/** The default write threshold: more creates+closes than this needs `--yes`. */
|
|
23
|
+
export const DEFAULT_WRITE_THRESHOLD = 25;
|
|
24
|
+
/** Whether an op files a new twin, for the create half of the threshold count. */
|
|
25
|
+
function isCreateLike(op) {
|
|
26
|
+
return op.kind === 'create' || op.kind === 'restore';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Count the write-shaped operations in a push plan. `creates` and `closes`
|
|
30
|
+
* feed the threshold gate; `deletes` feeds both the threshold gate (a bulk
|
|
31
|
+
* deletion is a bulk write) and the every-run delete gate; `writes` feeds the
|
|
32
|
+
* first-write gate (any write at all) and the report.
|
|
33
|
+
*/
|
|
34
|
+
export function countPushWrites(plan) {
|
|
35
|
+
let creates = 0;
|
|
36
|
+
let closes = 0;
|
|
37
|
+
let deletes = 0;
|
|
38
|
+
let writes = 0;
|
|
39
|
+
for (const op of plan.ops) {
|
|
40
|
+
if (isCreateLike(op))
|
|
41
|
+
creates += 1;
|
|
42
|
+
else if (op.kind === 'close')
|
|
43
|
+
closes += 1;
|
|
44
|
+
else if (op.kind === 'delete')
|
|
45
|
+
deletes += 1;
|
|
46
|
+
if (isRemoteWrite(op))
|
|
47
|
+
writes += 1;
|
|
48
|
+
}
|
|
49
|
+
return { creates, closes, deletes, writes };
|
|
50
|
+
}
|
|
51
|
+
/** The configured threshold for a remote, or the default when it says nothing. */
|
|
52
|
+
export function writeThresholdOf(remote) {
|
|
53
|
+
return remote.write_threshold ?? DEFAULT_WRITE_THRESHOLD;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Decide whether a push needs consent.
|
|
57
|
+
*
|
|
58
|
+
* A plan with no remote writes never asks — there is nothing to confirm. An
|
|
59
|
+
* oversized plan (creates + closes + deletes above the threshold) outranks the
|
|
60
|
+
* rest, because `--yes` satisfies it and it is the strictest of the gates.
|
|
61
|
+
* A plan that deletes a twin (`on_delete: delete`) is the next: it must be
|
|
62
|
+
* confirmed **every run**, and the gate is never satisfied by a remembered
|
|
63
|
+
* first-write consent (LP-351). Otherwise the gate asks once, on the first
|
|
64
|
+
* write, until consent is recorded.
|
|
65
|
+
*/
|
|
66
|
+
export function consentGate(params) {
|
|
67
|
+
const counts = countPushWrites(params.plan);
|
|
68
|
+
const threshold = writeThresholdOf(params.remote);
|
|
69
|
+
if (counts.writes === 0) {
|
|
70
|
+
return { requiresConsent: false, counts, threshold };
|
|
71
|
+
}
|
|
72
|
+
if (counts.creates + counts.closes + counts.deletes > threshold) {
|
|
73
|
+
return { requiresConsent: true, reason: 'threshold', counts, threshold };
|
|
74
|
+
}
|
|
75
|
+
if (counts.deletes > 0) {
|
|
76
|
+
return { requiresConsent: true, reason: 'delete', counts, threshold };
|
|
77
|
+
}
|
|
78
|
+
if (!params.consented) {
|
|
79
|
+
return { requiresConsent: true, reason: 'first_write', counts, threshold };
|
|
80
|
+
}
|
|
81
|
+
return { requiresConsent: false, counts, threshold };
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/remote/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,gFAAgF;AAChF,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAc1C,kFAAkF;AAClF,SAAS,YAAY,CAAC,EAAY;IAChC,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,YAAY,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC;aAC9B,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM,IAAI,CAAC,CAAC;aACrC,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,CAAC;QAC5C,IAAI,aAAa,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC9C,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,gBAAgB,CAAC,MAAoB;IACnD,OAAO,MAAM,CAAC,eAAe,IAAI,uBAAuB,CAAC;AAC3D,CAAC;AAmCD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,MAK3B;IACC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAElD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACvD,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC;QAChE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC3E,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7E,CAAC;IACD,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hierarchy encoding — how a board's issue tree survives a flat or shallow
|
|
3
|
+
* tracker (LP-309).
|
|
4
|
+
*
|
|
5
|
+
* Two encodings, one board:
|
|
6
|
+
*
|
|
7
|
+
* - `sub-issues` — the remote's native parent edge (GitHub's sub-issues),
|
|
8
|
+
* for the levels the account supports (one native parent level on GitHub);
|
|
9
|
+
* - `labels` — the type label plus the parent id in the managed block,
|
|
10
|
+
* everywhere the native edge is not available.
|
|
11
|
+
*
|
|
12
|
+
* Which encoding a remote gets is decided per remote, at runtime, from the
|
|
13
|
+
* *resolved* capability table (`hierarchyDepth`) and an optional forced choice
|
|
14
|
+
* (`--hierarchy sub-issues|labels`). The module is pure: capabilities +
|
|
15
|
+
* hierarchy + option in, an encoding out — never an API version constant.
|
|
16
|
+
*
|
|
17
|
+
* The parent axis is the only thing this module owns. The *type* axis is the
|
|
18
|
+
* mapping's business (`mapping.ts`): a `lpm:epic` label is written and read by
|
|
19
|
+
* the translator whatever the encoding, and this module's `labels` kind means
|
|
20
|
+
* only "the parent rides the managed block, not a native edge".
|
|
21
|
+
*
|
|
22
|
+
* LP-493 adds the switch detection this module was missing: `HierarchyRecord`
|
|
23
|
+
* is the two fields a remote records after a successful sync, and
|
|
24
|
+
* `carrierChanged` answers "would this depth ride a different carrier under
|
|
25
|
+
* the newly resolved encoding?" — the signal `planPush` turns into a
|
|
26
|
+
* `reparent` op rather than a stale carrier left behind.
|
|
27
|
+
*/
|
|
28
|
+
import type { ResolvedCapabilities } from './capabilities.js';
|
|
29
|
+
import { type DegradedLevel } from './mapping.js';
|
|
30
|
+
/** The two spellings of the hierarchy decision. */
|
|
31
|
+
export type HierarchyEncoding = 'sub-issues' | 'labels';
|
|
32
|
+
/**
|
|
33
|
+
* Which end of the board a remote's native parent chain is spent on.
|
|
34
|
+
*
|
|
35
|
+
* `root` gives the native edge to the *shallowest* levels: a programme's epics
|
|
36
|
+
* nest natively and the work below degrades. That is right for a tracker whose
|
|
37
|
+
* parent edge is type-blind — GitHub's sub-issues hold any issue under any
|
|
38
|
+
* issue, so the only question is how deep it goes. It is the default and the
|
|
39
|
+
* historical behaviour.
|
|
40
|
+
*
|
|
41
|
+
* `leaf` gives it to the *deepest*: the work items nest under their container
|
|
42
|
+
* and everything above degrades. That is right for a tracker whose hierarchy is
|
|
43
|
+
* defined from the bottom up — Jira's is (`Subtask` < standard < `Epic`), and
|
|
44
|
+
* only a standard issue may sit under an Epic. Spending the chain at the root
|
|
45
|
+
* there puts it exactly where Jira refuses it: a board with three levels above
|
|
46
|
+
* its stories maps them all onto `Epic`, `Epic` may not sit under `Epic`, so
|
|
47
|
+
* every native edge is rejected — while the one relationship Jira *would* hold,
|
|
48
|
+
* the work item under its container, rides the block and the tracker shows a
|
|
49
|
+
* flat list.
|
|
50
|
+
*/
|
|
51
|
+
export type HierarchyAnchor = 'root' | 'leaf';
|
|
52
|
+
/** The field name the degraded parent's remote id rides under in the block. */
|
|
53
|
+
export declare const PARENT_FIELD = "parent";
|
|
54
|
+
/**
|
|
55
|
+
* One remote's resolved hierarchy encoding: which kind it is, how many levels
|
|
56
|
+
* nest natively (root = level 1), and which levels' parent therefore rides the
|
|
57
|
+
* managed block.
|
|
58
|
+
*/
|
|
59
|
+
export interface ResolvedHierarchy {
|
|
60
|
+
kind: HierarchyEncoding;
|
|
61
|
+
/** Levels that nest natively, counting the root: 1 for labels, `hierarchyDepth + 1` for sub-issues. */
|
|
62
|
+
nativeDepth: number;
|
|
63
|
+
/** Which end of the board the native chain is spent on. */
|
|
64
|
+
anchor: HierarchyAnchor;
|
|
65
|
+
/** Shallowest depth whose parent edge is native (a root document has none). */
|
|
66
|
+
nativeFrom: number;
|
|
67
|
+
/** Deepest depth whose parent edge is native. */
|
|
68
|
+
nativeTo: number;
|
|
69
|
+
/** Levels whose parent is carried in the block. */
|
|
70
|
+
degraded: DegradedLevel[];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The hierarchy encoding a remote last used (LP-493): the two fields that
|
|
74
|
+
* decide which carrier a parent rides. Recorded beside the links after a
|
|
75
|
+
* successful sync, so the next sync can detect a switch — a plan gaining the
|
|
76
|
+
* sub-issue API, or a forced `--hierarchy` — and migrate each twin in place
|
|
77
|
+
* rather than leaving a stale carrier behind. `degraded` is derived, never
|
|
78
|
+
* stored.
|
|
79
|
+
*/
|
|
80
|
+
export interface HierarchyRecord {
|
|
81
|
+
kind: HierarchyEncoding;
|
|
82
|
+
nativeDepth: number;
|
|
83
|
+
/**
|
|
84
|
+
* The anchor the last sync used. Absent on a record written before anchors
|
|
85
|
+
* existed, which reads as `root` — the behaviour those twins were filed
|
|
86
|
+
* under — so nothing migrates until the resolved anchor genuinely differs.
|
|
87
|
+
*/
|
|
88
|
+
anchor?: HierarchyAnchor;
|
|
89
|
+
}
|
|
90
|
+
/** The `HierarchyRecord` a resolved encoding records. */
|
|
91
|
+
export declare function recordOf(resolved: ResolvedHierarchy): HierarchyRecord;
|
|
92
|
+
/**
|
|
93
|
+
* True when a document at `depth` (ancestor count, root = 0) would ride a
|
|
94
|
+
* different parent carrier under `resolved` than it did under `recorded`.
|
|
95
|
+
* Absent `recorded` (the first sync, or a store predating LP-493) or absent
|
|
96
|
+
* `resolved` answers false — there is nothing known to migrate.
|
|
97
|
+
*/
|
|
98
|
+
export declare function carrierChanged(recorded: HierarchyRecord | undefined, resolved: ResolvedHierarchy | undefined, depth: number): boolean;
|
|
99
|
+
/** The forced-choice option `--hierarchy` maps onto. */
|
|
100
|
+
export interface HierarchyOptions {
|
|
101
|
+
/** Force one encoding, overriding capability detection. */
|
|
102
|
+
force?: HierarchyEncoding;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Resolve the hierarchy encoding for one remote.
|
|
106
|
+
*
|
|
107
|
+
* With no forced choice the capability decides: a remote that holds at least
|
|
108
|
+
* one native parent level is `sub-issues`, a flat one `labels`. `force`
|
|
109
|
+
* overrides that — a user who wants the same behaviour across accounts pins it
|
|
110
|
+
* (`labels` on a secondary account without sub-issues, or `sub-issues` on an
|
|
111
|
+
* account where the probe would otherwise read "flat").
|
|
112
|
+
*/
|
|
113
|
+
export declare function resolveHierarchyEncoding(capabilities: Pick<ResolvedCapabilities, 'hierarchyDepth' | 'hierarchyAnchor'>, hierarchy: string[][], options?: HierarchyOptions): ResolvedHierarchy;
|
|
114
|
+
/**
|
|
115
|
+
* True when a document at `depth` (ancestor count, root = 0) files under a
|
|
116
|
+
* native parent edge. A document at depth 0 has no parent at all; the native
|
|
117
|
+
* edge covers depths 1 .. `nativeDepth - 1` — exactly one level of sub-issues
|
|
118
|
+
* (nativeDepth 2) leaves depth 2 and below to the block.
|
|
119
|
+
*/
|
|
120
|
+
export declare function parentIsNative(depth: number, resolved: ResolvedHierarchy): boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Build the managed-block entry carrying the degraded parent's **remote** id.
|
|
123
|
+
*
|
|
124
|
+
* The value is the remote id, not the local one, deliberately: the block must
|
|
125
|
+
* round-trip across boards. A fresh checkout pulling this remote has never
|
|
126
|
+
* seen the local id, but it resolves the remote id through the link store
|
|
127
|
+
* exactly as it resolves a native sub-issue parent. It is a `text` entry
|
|
128
|
+
* rather than an `id` link so the cell stays a plain token either way.
|
|
129
|
+
*/
|
|
130
|
+
export declare function parentBlockEntry(parentRemoteId: string): {
|
|
131
|
+
name: string;
|
|
132
|
+
kind: 'text';
|
|
133
|
+
value: string;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Read the degraded parent's remote id back out of a remote body. Returns
|
|
137
|
+
* `undefined` when the body carries no managed block, when the block carries
|
|
138
|
+
* no `parent` row, or when a human left the cell empty — the caller then
|
|
139
|
+
* treats the issue as filed at the remote root.
|
|
140
|
+
*/
|
|
141
|
+
export declare function parentRemoteIdFromBlock(body: string): string | undefined;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hierarchy encoding — how a board's issue tree survives a flat or shallow
|
|
3
|
+
* tracker (LP-309).
|
|
4
|
+
*
|
|
5
|
+
* Two encodings, one board:
|
|
6
|
+
*
|
|
7
|
+
* - `sub-issues` — the remote's native parent edge (GitHub's sub-issues),
|
|
8
|
+
* for the levels the account supports (one native parent level on GitHub);
|
|
9
|
+
* - `labels` — the type label plus the parent id in the managed block,
|
|
10
|
+
* everywhere the native edge is not available.
|
|
11
|
+
*
|
|
12
|
+
* Which encoding a remote gets is decided per remote, at runtime, from the
|
|
13
|
+
* *resolved* capability table (`hierarchyDepth`) and an optional forced choice
|
|
14
|
+
* (`--hierarchy sub-issues|labels`). The module is pure: capabilities +
|
|
15
|
+
* hierarchy + option in, an encoding out — never an API version constant.
|
|
16
|
+
*
|
|
17
|
+
* The parent axis is the only thing this module owns. The *type* axis is the
|
|
18
|
+
* mapping's business (`mapping.ts`): a `lpm:epic` label is written and read by
|
|
19
|
+
* the translator whatever the encoding, and this module's `labels` kind means
|
|
20
|
+
* only "the parent rides the managed block, not a native edge".
|
|
21
|
+
*
|
|
22
|
+
* LP-493 adds the switch detection this module was missing: `HierarchyRecord`
|
|
23
|
+
* is the two fields a remote records after a successful sync, and
|
|
24
|
+
* `carrierChanged` answers "would this depth ride a different carrier under
|
|
25
|
+
* the newly resolved encoding?" — the signal `planPush` turns into a
|
|
26
|
+
* `reparent` op rather than a stale carrier left behind.
|
|
27
|
+
*/
|
|
28
|
+
import { parseManagedBlock, parseManagedId } from './managed-block.js';
|
|
29
|
+
/** The field name the degraded parent's remote id rides under in the block. */
|
|
30
|
+
export const PARENT_FIELD = 'parent';
|
|
31
|
+
/** The `HierarchyRecord` a resolved encoding records. */
|
|
32
|
+
export function recordOf(resolved) {
|
|
33
|
+
return { kind: resolved.kind, nativeDepth: resolved.nativeDepth, anchor: resolved.anchor };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* True when a document at `depth` (ancestor count, root = 0) would ride a
|
|
37
|
+
* different parent carrier under `resolved` than it did under `recorded`.
|
|
38
|
+
* Absent `recorded` (the first sync, or a store predating LP-493) or absent
|
|
39
|
+
* `resolved` answers false — there is nothing known to migrate.
|
|
40
|
+
*/
|
|
41
|
+
export function carrierChanged(recorded, resolved, depth) {
|
|
42
|
+
if (recorded === undefined || resolved === undefined)
|
|
43
|
+
return false;
|
|
44
|
+
// The recorded shape carries a count and (since anchors) an end; rebuilding
|
|
45
|
+
// the span it implied is what lets a *changed anchor* migrate each twin in
|
|
46
|
+
// place rather than leaving half the board parented the old way.
|
|
47
|
+
const wasAnchor = recorded.anchor ?? 'root';
|
|
48
|
+
const deepest = Math.max(resolved.nativeFrom - 1, 0) + (resolved.nativeTo - resolved.nativeFrom) + 1;
|
|
49
|
+
const span = Math.max(recorded.nativeDepth - 1, 0);
|
|
50
|
+
const was = wasAnchor === 'leaf'
|
|
51
|
+
? { nativeFrom: Math.max(1, deepest - span + 1), nativeTo: deepest }
|
|
52
|
+
: { nativeFrom: 1, nativeTo: span };
|
|
53
|
+
const wasNative = depth >= was.nativeFrom && depth <= was.nativeTo;
|
|
54
|
+
return wasNative !== parentIsNative(depth, resolved);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Resolve the hierarchy encoding for one remote.
|
|
58
|
+
*
|
|
59
|
+
* With no forced choice the capability decides: a remote that holds at least
|
|
60
|
+
* one native parent level is `sub-issues`, a flat one `labels`. `force`
|
|
61
|
+
* overrides that — a user who wants the same behaviour across accounts pins it
|
|
62
|
+
* (`labels` on a secondary account without sub-issues, or `sub-issues` on an
|
|
63
|
+
* account where the probe would otherwise read "flat").
|
|
64
|
+
*/
|
|
65
|
+
export function resolveHierarchyEncoding(capabilities, hierarchy, options = {}) {
|
|
66
|
+
const depth = capabilities.hierarchyDepth;
|
|
67
|
+
const kind = options.force ?? (depth >= 1 ? 'sub-issues' : 'labels');
|
|
68
|
+
// `labels` never nests. `sub-issues` nests to the capability's depth; a
|
|
69
|
+
// forced `sub-issues` over a probe that read "flat" assumes one native
|
|
70
|
+
// level — the caller is asserting the account has the API.
|
|
71
|
+
const nativeDepth = kind === 'labels' ? 1 : depth >= 1 ? depth + 1 : 2;
|
|
72
|
+
const anchor = capabilities.hierarchyAnchor ?? 'root';
|
|
73
|
+
// Which depths' *parent edge* is native. Root-anchored, the chain starts at
|
|
74
|
+
// the first level below the root; leaf-anchored, it ends at the deepest level
|
|
75
|
+
// the board has, so the work items are what nest.
|
|
76
|
+
const deepest = Math.max(hierarchy.length - 1, 0);
|
|
77
|
+
const span = Math.max(nativeDepth - 1, 0);
|
|
78
|
+
const nativeFrom = anchor === 'leaf' ? Math.max(1, deepest - span + 1) : 1;
|
|
79
|
+
const nativeTo = anchor === 'leaf' ? deepest : span;
|
|
80
|
+
const degraded = [];
|
|
81
|
+
for (let level = 1; level < hierarchy.length; level += 1) {
|
|
82
|
+
if (level >= nativeFrom && level <= nativeTo)
|
|
83
|
+
continue;
|
|
84
|
+
const types = hierarchy[level] ?? [];
|
|
85
|
+
if (types.length > 0)
|
|
86
|
+
degraded.push({ depth: level, types: [...types] });
|
|
87
|
+
}
|
|
88
|
+
return { kind, nativeDepth, anchor, nativeFrom, nativeTo, degraded };
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* True when a document at `depth` (ancestor count, root = 0) files under a
|
|
92
|
+
* native parent edge. A document at depth 0 has no parent at all; the native
|
|
93
|
+
* edge covers depths 1 .. `nativeDepth - 1` — exactly one level of sub-issues
|
|
94
|
+
* (nativeDepth 2) leaves depth 2 and below to the block.
|
|
95
|
+
*/
|
|
96
|
+
export function parentIsNative(depth, resolved) {
|
|
97
|
+
return depth >= resolved.nativeFrom && depth <= resolved.nativeTo;
|
|
98
|
+
}
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
// The block carrier (the `labels` encoding's parent)
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
/**
|
|
103
|
+
* Build the managed-block entry carrying the degraded parent's **remote** id.
|
|
104
|
+
*
|
|
105
|
+
* The value is the remote id, not the local one, deliberately: the block must
|
|
106
|
+
* round-trip across boards. A fresh checkout pulling this remote has never
|
|
107
|
+
* seen the local id, but it resolves the remote id through the link store
|
|
108
|
+
* exactly as it resolves a native sub-issue parent. It is a `text` entry
|
|
109
|
+
* rather than an `id` link so the cell stays a plain token either way.
|
|
110
|
+
*/
|
|
111
|
+
export function parentBlockEntry(parentRemoteId) {
|
|
112
|
+
return { name: PARENT_FIELD, kind: 'text', value: parentRemoteId };
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Read the degraded parent's remote id back out of a remote body. Returns
|
|
116
|
+
* `undefined` when the body carries no managed block, when the block carries
|
|
117
|
+
* no `parent` row, or when a human left the cell empty — the caller then
|
|
118
|
+
* treats the issue as filed at the remote root.
|
|
119
|
+
*/
|
|
120
|
+
export function parentRemoteIdFromBlock(body) {
|
|
121
|
+
const parsed = parseManagedBlock(body);
|
|
122
|
+
if (!parsed.found)
|
|
123
|
+
return undefined;
|
|
124
|
+
const cell = parsed.fields[PARENT_FIELD];
|
|
125
|
+
if (cell === undefined || cell === '')
|
|
126
|
+
return undefined;
|
|
127
|
+
return parseManagedId(cell);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=hierarchy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/remote/hierarchy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AA8BvE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AAwCrC,yDAAyD;AACzD,MAAM,UAAU,QAAQ,CAAC,QAA2B;IAClD,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC7F,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAqC,EACrC,QAAuC,EACvC,KAAa;IAEb,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACnE,4EAA4E;IAC5E,2EAA2E;IAC3E,iEAAiE;IACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACrG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,GAAG,GACP,SAAS,KAAK,MAAM;QAClB,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE;QACpE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,KAAK,IAAI,GAAG,CAAC,UAAU,IAAI,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC;IACnE,OAAO,SAAS,KAAK,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC;AAQD;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,YAA8E,EAC9E,SAAqB,EACrB,UAA4B,EAAE;IAE9B,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,CAAC;IAC1C,MAAM,IAAI,GAAsB,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxF,wEAAwE;IACxE,uEAAuE;IACvE,2DAA2D;IAC3D,MAAM,WAAW,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAoB,YAAY,CAAC,eAAe,IAAI,MAAM,CAAC;IAEvE,4EAA4E;IAC5E,8EAA8E;IAC9E,kDAAkD;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAEpD,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,IAAI,QAAQ;YAAE,SAAS;QACvD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,QAA2B;IACvE,OAAO,KAAK,IAAI,QAAQ,CAAC,UAAU,IAAI,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC;AACpE,CAAC;AAED,8EAA8E;AAC9E,qDAAqD;AACrD,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,cAAsB;IAKrD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACxD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remote sync layer.
|
|
3
|
+
*
|
|
4
|
+
* Knows how to mirror an `.lpm` board onto an external tracker and back. Sits
|
|
5
|
+
* above the engine, beside `src/sync`: it may import `src/core`, `src/shared`
|
|
6
|
+
* and `src/sync`, and nothing in `src/core` may import it.
|
|
7
|
+
*
|
|
8
|
+
* The *reasoning* behind the choices this folder makes — why the link store
|
|
9
|
+
* rather than a frontmatter field, why the base snapshot, the degradation
|
|
10
|
+
* ladder, pull-as-push, and the two-connector split — is the design record,
|
|
11
|
+
* `docs/remote-sync.md`. This comment and that document are the two things
|
|
12
|
+
* that keep a provider from growing reshaping logic.
|
|
13
|
+
*
|
|
14
|
+
* links.ts the correspondence store — which document is which remote issue
|
|
15
|
+
* managed-block.ts the rung-4 codec: write fields into the body idempotently
|
|
16
|
+
* and parse them back out (LP-276, LP-277)
|
|
17
|
+
* managed-comment.ts the rung-5 codec: the same block as a comment when the
|
|
18
|
+
* body is not writable (LP-278)
|
|
19
|
+
* remotes.ts declared remotes from config (LP-252)
|
|
20
|
+
* scope.ts which subtree a remote mirrors, and nothing else (LP-261)
|
|
21
|
+
* shape.ts hierarchy/type divergence report — reparent, retype, scope
|
|
22
|
+
* exit — reported, never silently applied (LP-368)
|
|
23
|
+
* lifecycle.ts the state of each correspondence (LP-361)
|
|
24
|
+
* adopt.ts adopt an existing remote issue into a document, and read
|
|
25
|
+
* the managed-block pairing a re-cloned board offers (LP-367)
|
|
26
|
+
* mapping.ts board vocabulary ↔ remote vocabulary (LP-362)
|
|
27
|
+
* attributes.ts attribute coercion, both directions (LP-270)
|
|
28
|
+
* accounts.ts resource ↔ account mapping, pools to a label (LP-271)
|
|
29
|
+
* periods.ts period ↔ container mapping (LP-272, LP-313)
|
|
30
|
+
* capabilities.ts what a provider can hold as data, plus probed cells (LP-274)
|
|
31
|
+
* ladder.ts the degradation ladder as a report: the rung each construct
|
|
32
|
+
* lands on, and why (LP-275)
|
|
33
|
+
* labels.ts label reconciliation: the claimed set, the push merge, and
|
|
34
|
+
* what `provision` creates (LP-308)
|
|
35
|
+
* ledger.ts which remote owns which document, derived from every link
|
|
36
|
+
* store — the one-remote-per-document rule. A push reports a
|
|
37
|
+
* document another remote holds (`skipped: owned_elsewhere`);
|
|
38
|
+
* an explicit link is refused.
|
|
39
|
+
* provider.ts the four-member shape every provider adapter conforms to
|
|
40
|
+
* transport/ the Connector contract that knows nothing about boards —
|
|
41
|
+
* REST, GraphQL and `gh` connectors (LP-293), plus the
|
|
42
|
+
* reliability decorators that slow a sync down instead of
|
|
43
|
+
* falling over: retry/backoff and the request budget
|
|
44
|
+
* (LP-297). Imported directly, never re-exported here: its
|
|
45
|
+
* `Connector` and `RemoteRequest` are transport vocabulary
|
|
46
|
+
* and would collide with the board-vocabulary ones in
|
|
47
|
+
* `provider.ts`.
|
|
48
|
+
* transport-error.ts the seam that wraps a transport `RemoteError` into a
|
|
49
|
+
* `BoardError` (LP-294).
|
|
50
|
+
* registry.ts provider name → implementation (LP-260)
|
|
51
|
+
* connection-catalogue.ts what connecting to each provider asks for —
|
|
52
|
+
* fields, credential keys, conditional keys — derived from
|
|
53
|
+
* the providers, for every front end that asks
|
|
54
|
+
* connection.ts connect, store a credential, change a connection — the
|
|
55
|
+
* refusals every caller without a terminal must share
|
|
56
|
+
* inspect.ts ask a remote about itself: reachability, discovery,
|
|
57
|
+
* vocabulary and prerequisites, as a report
|
|
58
|
+
* check.ts remote config as a check pass, composed by `lpm check` (LP-262)
|
|
59
|
+
* preflight.ts every unmappable value, collected before a push writes (LP-273)
|
|
60
|
+
* prerequisites.ts what the remote must already have for a push to land —
|
|
61
|
+
* labels, sprints, Project fields — created by the push itself
|
|
62
|
+
* plan.ts planPush / planPull — pure functions, no I/O (LP-280, LP-281)
|
|
63
|
+
* merge.ts the field-by-field three-way merge (LP-284)
|
|
64
|
+
* policy.ts conflict resolution by policy, per remote and per field (LP-286)
|
|
65
|
+
* resolutions.ts the pending decisions `lpm remote resolve` records (LP-287)
|
|
66
|
+
* audit.ts the sync audit log — one JSONL line per applied sync (LP-352)
|
|
67
|
+
* conflicts.ts the merge across a document: policy and resolutions applied (LP-287)
|
|
68
|
+
* render.ts a plan as a diff, for --dry-run and the web preview (LP-282)
|
|
69
|
+
* redact.ts the one place a secret value becomes `***` (LP-296)
|
|
70
|
+
* fixtures.ts record real traffic to fixtures, scrubbed, and replay it
|
|
71
|
+
* offline (LP-301)
|
|
72
|
+
* pull.ts the pull applier — applyChanges + link bookkeeping (LP-281)
|
|
73
|
+
* execute.ts push-side applier (LP-490)
|
|
74
|
+
* guard.ts the write-confirmation gate — first write, threshold, and the
|
|
75
|
+
* every-run delete gate (LP-350, LP-351)
|
|
76
|
+
* sync.ts the sync session — one remote, planned then rendered or
|
|
77
|
+
* applied, for `lpm remote push|pull|sync` (LP-341)
|
|
78
|
+
* scaffold.ts the mapping scaffold — draft a `mapping:` block from board
|
|
79
|
+
* config × capability descriptor (LP-369)
|
|
80
|
+
* fingerprint.ts mapping fingerprint — detect a mapping change before it
|
|
81
|
+
* manufactures phantom conflicts (LP-370)
|
|
82
|
+
* rebase.ts re-base a board onto a changed mapping as an explicit
|
|
83
|
+
* operation (LP-371)
|
|
84
|
+
*
|
|
85
|
+
* ## The check layering, decided
|
|
86
|
+
*
|
|
87
|
+
* Core's `validation/check.ts` may not import this folder, so `checkBoard`
|
|
88
|
+
* knows nothing about remotes — not even a dangling `scope`. All remote checks
|
|
89
|
+
* live in `check.ts` and are composed by the CLI (`lpm check` calls
|
|
90
|
+
* `checkBoard` then `checkRemoteConfiguration`). Keep it that way: a remote check added to core is the same layering
|
|
91
|
+
* mistake this boundary exists to prevent.
|
|
92
|
+
*/
|
|
93
|
+
export * from './accounts.js';
|
|
94
|
+
export * from './adopt.js';
|
|
95
|
+
export * from './audit.js';
|
|
96
|
+
export * from './attributes.js';
|
|
97
|
+
export * from './capabilities.js';
|
|
98
|
+
export * from './check.js';
|
|
99
|
+
export * from './comments.js';
|
|
100
|
+
export * from './config-file.js';
|
|
101
|
+
export * from './conflicts.js';
|
|
102
|
+
export * from './coverage.js';
|
|
103
|
+
export * from './credentials.js';
|
|
104
|
+
export * from './execute.js';
|
|
105
|
+
export * from './fingerprint.js';
|
|
106
|
+
export * from './fixtures.js';
|
|
107
|
+
export * from './guard.js';
|
|
108
|
+
export * from './hierarchy.js';
|
|
109
|
+
export * from './ladder.js';
|
|
110
|
+
export * from './labels.js';
|
|
111
|
+
export * from './connection-catalogue.js';
|
|
112
|
+
export * from './connection.js';
|
|
113
|
+
export * from './inspect.js';
|
|
114
|
+
export * from './ledger.js';
|
|
115
|
+
export * from './lifecycle.js';
|
|
116
|
+
export * from './links.js';
|
|
117
|
+
export * from './managed-block.js';
|
|
118
|
+
export * from './managed-comment.js';
|
|
119
|
+
export * from './mapping.js';
|
|
120
|
+
export * from './merge.js';
|
|
121
|
+
export * from './periods.js';
|
|
122
|
+
export * from './plan.js';
|
|
123
|
+
export * from './policy.js';
|
|
124
|
+
export * from './preflight.js';
|
|
125
|
+
export * from './prerequisites.js';
|
|
126
|
+
export * from './provider.js';
|
|
127
|
+
export * from './provision.js';
|
|
128
|
+
export * from './pull.js';
|
|
129
|
+
export * from './rebase.js';
|
|
130
|
+
export * from './readiness.js';
|
|
131
|
+
export * from './reconcile.js';
|
|
132
|
+
export * from './redact.js';
|
|
133
|
+
export * from './registry.js';
|
|
134
|
+
export * from './remotes.js';
|
|
135
|
+
export * from './render.js';
|
|
136
|
+
export * from './report.js';
|
|
137
|
+
export * from './resolutions.js';
|
|
138
|
+
export * from './scaffold.js';
|
|
139
|
+
export * from './scope.js';
|
|
140
|
+
export * from './selection.js';
|
|
141
|
+
export * from './shape.js';
|
|
142
|
+
export * from './status.js';
|
|
143
|
+
export * from './vocabulary.js';
|
|
144
|
+
export * from './sync.js';
|
|
145
|
+
export * from './transport-error.js';
|