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 @@
|
|
|
1
|
+
{"version":3,"file":"periods.js","sourceRoot":"","sources":["../../src/remote/periods.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,671 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The push and pull planners — pure functions from a board to a plan.
|
|
3
|
+
*
|
|
4
|
+
* planPush(board, links, remote) → PushPlan (LP-280, this file)
|
|
5
|
+
* planPull(board, links, remote, options) → PullPlan (LP-281, this file)
|
|
6
|
+
*
|
|
7
|
+
* Both take a `BoardView` DTO rather than a `LoadedBoard`, so neither needs a
|
|
8
|
+
* filesystem handle and the plan is a plain data structure a dry-run can render
|
|
9
|
+
* and an executor can walk. Neither touches the disk or the network: the push
|
|
10
|
+
* plan is handed to the executor (`LP-490`), the pull plan to `applyChanges`
|
|
11
|
+
* from `src/sync`.
|
|
12
|
+
*
|
|
13
|
+
* ## Why a push plan exists at all
|
|
14
|
+
*
|
|
15
|
+
* A push is a list of *remote operations*, not a batch write. The remote is a
|
|
16
|
+
* separate system with its own ids, its own workflow and its own idea of a
|
|
17
|
+
* parent, so the plan has to say, in order:
|
|
18
|
+
*
|
|
19
|
+
* 1. what to create, parents before children (a parent must exist before its
|
|
20
|
+
* children are filed under it);
|
|
21
|
+
* 2. what to update / transition / close, for documents that already have a
|
|
22
|
+
* twin;
|
|
23
|
+
* 3. what to link and unlink, after every endpoint exists.
|
|
24
|
+
*
|
|
25
|
+
* Two rules make the order load-bearing. A `create` op carries no remote id —
|
|
26
|
+
* it is referenced by a **placeholder** (`new:1`) until the executor resolves
|
|
27
|
+
* it against the response — and an edge (`link` / `unlink`) is emitted only
|
|
28
|
+
* once both endpoints exist, so a document created in this same push can be an
|
|
29
|
+
* endpoint. That is the held-back-link trick `src/sync/patch.ts` uses for
|
|
30
|
+
* `depends_on`, expressed here as a rule about op order rather than a deferred
|
|
31
|
+
* patch: every edge is placed after every create and update, and it references
|
|
32
|
+
* its endpoints through a `RemoteRef` that is either a recorded twin or a
|
|
33
|
+
* placeholder.
|
|
34
|
+
*
|
|
35
|
+
* ## What this file deliberately does not do
|
|
36
|
+
*
|
|
37
|
+
* - **Conflict detection on the push side** (both sides edited a field) is
|
|
38
|
+
* `LP-257`'s; `planPush` diffs a document against its base and pushes what
|
|
39
|
+
* changed locally — it never consults the remote side for a pushed field.
|
|
40
|
+
* The pull planner *does* detect a both-sides edit: a field both sides
|
|
41
|
+
* changed is reported in `PullPlan.fieldConflicts` rather than written.
|
|
42
|
+
* - **Existence and shape** (the twin was deleted, moved or converted) is
|
|
43
|
+
* `LP-361`'s; `remote.issues` is part of the input so that story and the pull
|
|
44
|
+
* planner can read it, but this planner does not yet act on it.
|
|
45
|
+
* - **The mapping** is the translator's job at execution time. The planner
|
|
46
|
+
* decides *what* changed against the base snapshot and *in what order* it is
|
|
47
|
+
* pushed; it never turns a board status into a remote state.
|
|
48
|
+
* - **`relates_to`** is a non-gating edge: it is linked / unlinked natively
|
|
49
|
+
* only where the provider declares a native relate edge (Jira, LP-325), and
|
|
50
|
+
* rides the managed block everywhere else (LP-314).
|
|
51
|
+
*/
|
|
52
|
+
import type { RemoteDirection, RemoteOnDelete } from '../core/model/types.js';
|
|
53
|
+
import type { RemoteCommentsMode } from '../core/model/types.js';
|
|
54
|
+
import type { Change } from '../shared/changes.js';
|
|
55
|
+
import type { BoardView } from '../shared/plans/reading.js';
|
|
56
|
+
import type { ResolvedHierarchy } from './hierarchy.js';
|
|
57
|
+
import type { LinkStore } from './links.js';
|
|
58
|
+
import type { ManagedBlockEntry, ManagedBlockLinks } from './managed-block.js';
|
|
59
|
+
import { type LocalComment } from './comments.js';
|
|
60
|
+
import type { BoardFields, BoardFieldsPatch, LinkKind, RemoteComment, RemoteRecord } from './provider.js';
|
|
61
|
+
/**
|
|
62
|
+
* The remote as a planner sees it: how it is declared to sync, plus the
|
|
63
|
+
* remote-side issue state the executor captured before planning.
|
|
64
|
+
*
|
|
65
|
+
* `direction` and `scope` come from the remote's declaration; `issues` is the
|
|
66
|
+
* live listing (remote id → raw record). The push planner reads the first two
|
|
67
|
+
* and leaves `issues` to the pull planner and the lifecycle/conflict stories;
|
|
68
|
+
* it is carried here so one snapshot serves both directions.
|
|
69
|
+
*/
|
|
70
|
+
export interface RemoteSnapshot {
|
|
71
|
+
/** The remote's declared direction; a pull-only remote plans nothing. */
|
|
72
|
+
direction: RemoteDirection;
|
|
73
|
+
/** The scope root id; absent means the whole board is in scope. */
|
|
74
|
+
scope?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Act on only these documents this run (`lpm remote push LP-12`), leaving
|
|
77
|
+
* every other document exactly as it stands.
|
|
78
|
+
*
|
|
79
|
+
* **Selection is not scope, and the difference is load-bearing.** Scope says
|
|
80
|
+
* which documents this remote *owns*, so a linked document outside it has
|
|
81
|
+
* left the mirror and the `on_delete` policy applies — a decouple, a close,
|
|
82
|
+
* a delete. Selection says which documents this run is *about*. Narrowing
|
|
83
|
+
* the scope to say "just push this one" would tell the planner that every
|
|
84
|
+
* other twin on the board had gone away, and a selective push would file one
|
|
85
|
+
* story and decouple the other two hundred. So `only` filters what is
|
|
86
|
+
* created, updated, reparented, edged and commented, and the gone pass never
|
|
87
|
+
* consults it. Absent means the whole scope.
|
|
88
|
+
*
|
|
89
|
+
* Reference resolution (`refOf`) does not consult it either: a selected
|
|
90
|
+
* child whose parent is already linked still names that parent, which is
|
|
91
|
+
* what lets a plan be filed a piece at a time and still come out the right
|
|
92
|
+
* shape.
|
|
93
|
+
*/
|
|
94
|
+
only?: ReadonlySet<string>;
|
|
95
|
+
/**
|
|
96
|
+
* Documents another remote already mirrors (`src/remote/ledger.ts`), local
|
|
97
|
+
* id → the key they hold there. A document is mirrored by one remote at a
|
|
98
|
+
* time, so these are never created a second time: they are reported in
|
|
99
|
+
* `skipped` with the reason `owned_elsewhere`, the same channel a
|
|
100
|
+
* deliberately decoupled document is reported through.
|
|
101
|
+
*/
|
|
102
|
+
ownedElsewhere?: ReadonlyMap<string, string>;
|
|
103
|
+
/** Remote issues keyed by remote id, as the provider returned them. */
|
|
104
|
+
issues: ReadonlyMap<string, RemoteRecord>;
|
|
105
|
+
/**
|
|
106
|
+
* The listing is **not exhaustive** — it is one issue somebody named
|
|
107
|
+
* (`lpm remote pull PAY-31`), not everything the remote holds. The pull
|
|
108
|
+
* planner then never infers a deletion from absence: a twin missing from a
|
|
109
|
+
* partial listing was not looked for, and answering that with the
|
|
110
|
+
* `on_delete` policy would close or delete the rest of the board's twins on
|
|
111
|
+
* every targeted pull.
|
|
112
|
+
*/
|
|
113
|
+
partial?: boolean;
|
|
114
|
+
/** What to do when a linked twin is absent from `issues`. Defaults to `unlink`. */
|
|
115
|
+
onDelete?: RemoteOnDelete;
|
|
116
|
+
/**
|
|
117
|
+
* Set by the caller (LP-364) when the remote could not be seen this run —
|
|
118
|
+
* the reachability probe failed, or the bulk guard tripped. The pull
|
|
119
|
+
* planner then plans **nothing**, so an expired credential can never become
|
|
120
|
+
* a wave of deletions. The caller derives it from
|
|
121
|
+
* `resolveLifecycle(...).runUnreachable`.
|
|
122
|
+
*/
|
|
123
|
+
unreachable?: boolean;
|
|
124
|
+
/**
|
|
125
|
+
* The resolved hierarchy encoding (LP-309), computed by the caller from the
|
|
126
|
+
* resolved capability table (`resolveHierarchyEncoding`). Absent means the
|
|
127
|
+
* planners fall back to the pre-encoding behaviour: every parent is carried
|
|
128
|
+
* natively. Present, a document whose parent is beyond the native depth has
|
|
129
|
+
* its parent carried in the managed block instead (`blockParent`).
|
|
130
|
+
*/
|
|
131
|
+
hierarchy?: ResolvedHierarchy;
|
|
132
|
+
/**
|
|
133
|
+
* Which dependency edge kinds the remote holds natively (LP-314, LP-325).
|
|
134
|
+
* Absent defaults to "native `depends_on`, no native `relates_to`" — the
|
|
135
|
+
* pre-edge-carrier behaviour, so a snapshot that does not know its
|
|
136
|
+
* capabilities still plans `link` / `unlink` ops. A provider with no native
|
|
137
|
+
* blocking edge carries `depends_on` in the managed block instead (an
|
|
138
|
+
* `edges` op); `relates_to` rides the block unless `relatesTo` is true, in
|
|
139
|
+
* which case it is linked and unlinked natively.
|
|
140
|
+
*/
|
|
141
|
+
edges?: {
|
|
142
|
+
dependsOn: boolean;
|
|
143
|
+
relatesTo: boolean;
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* How user comments sync (LP-316): `push` (the default) or `both`. The push
|
|
147
|
+
* planner posts unsynced local comments whenever it runs; the pull planner
|
|
148
|
+
* appends remote comments only when this is `both`. Absent means `push`.
|
|
149
|
+
*/
|
|
150
|
+
commentsMode?: RemoteCommentsMode;
|
|
151
|
+
/**
|
|
152
|
+
* Remote comments per remote issue id, fetched by the caller before planning
|
|
153
|
+
* (LP-316). The pull planner reads this map and emits append ops for every
|
|
154
|
+
* comment not already recorded in the link store. Absent means no comments
|
|
155
|
+
* were fetched, which is the caller's way of saying comment pull is
|
|
156
|
+
* unavailable this run.
|
|
157
|
+
*/
|
|
158
|
+
remoteComments?: ReadonlyMap<string, readonly RemoteComment[]>;
|
|
159
|
+
/**
|
|
160
|
+
* A board body as it will read after a round trip through the remote's own
|
|
161
|
+
* body format (`Translator.normalizeBody`), for a provider whose bodies are
|
|
162
|
+
* not markdown.
|
|
163
|
+
*
|
|
164
|
+
* The base records the body the remote echoed back, so the comparison is
|
|
165
|
+
* only honest if the board's body is put through the same conversion first.
|
|
166
|
+
* Jira's ADF has no source line breaks, so without this every hard-wrapped
|
|
167
|
+
* document is permanently ahead and each push rewrites the lot. Absent for a
|
|
168
|
+
* provider whose bodies are markdown already, where the round trip is the
|
|
169
|
+
* identity.
|
|
170
|
+
*/
|
|
171
|
+
normalizeBody?: (markdown: string) => string;
|
|
172
|
+
}
|
|
173
|
+
/** A document that already has a twin on the remote. */
|
|
174
|
+
export interface LinkedRef {
|
|
175
|
+
kind: 'linked';
|
|
176
|
+
localId: string;
|
|
177
|
+
remoteId: string;
|
|
178
|
+
}
|
|
179
|
+
/** A document this same plan creates, referenced by its placeholder. */
|
|
180
|
+
export interface CreatedRef {
|
|
181
|
+
kind: 'created';
|
|
182
|
+
localId: string;
|
|
183
|
+
/** The `create` op's placeholder, resolved by the executor when it lands. */
|
|
184
|
+
placeholder: string;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* A remote issue an op points at. Either a twin that already exists, or a
|
|
188
|
+
* document the plan creates — which has no remote id yet, so it is referenced
|
|
189
|
+
* by its placeholder until execution resolves it.
|
|
190
|
+
*/
|
|
191
|
+
export type RemoteRef = LinkedRef | CreatedRef;
|
|
192
|
+
/** File a new remote issue for a local document with no twin. */
|
|
193
|
+
export interface RemoteCreateOp {
|
|
194
|
+
kind: 'create';
|
|
195
|
+
/** Placeholder the executor resolves to a remote id when this create lands. */
|
|
196
|
+
placeholder: string;
|
|
197
|
+
localId: string;
|
|
198
|
+
/** The issue's fields in board vocabulary (the translator's input). */
|
|
199
|
+
fields: BoardFields;
|
|
200
|
+
/** The created issue's native parent, when it is in scope; absent = remote root. */
|
|
201
|
+
parent?: RemoteRef;
|
|
202
|
+
/** The created issue's degraded parent (LP-309): carried in the managed block, never a native edge. */
|
|
203
|
+
blockParent?: RemoteRef;
|
|
204
|
+
}
|
|
205
|
+
/** Change non-status fields of an existing twin. */
|
|
206
|
+
export interface RemoteUpdateOp {
|
|
207
|
+
kind: 'update';
|
|
208
|
+
localId: string;
|
|
209
|
+
ref: LinkedRef;
|
|
210
|
+
/** Only the fields that changed since the base snapshot. */
|
|
211
|
+
fields: Partial<BoardFields>;
|
|
212
|
+
/**
|
|
213
|
+
* The degraded parent (LP-314): carried in the managed block when the
|
|
214
|
+
* document nests beyond the native depth. The executor re-applies it
|
|
215
|
+
* whenever it rewrites the body, so a prose edit never strips the block.
|
|
216
|
+
*/
|
|
217
|
+
blockParent?: RemoteRef;
|
|
218
|
+
}
|
|
219
|
+
/** Move an existing twin to a non-terminal status. */
|
|
220
|
+
export interface RemoteTransitionOp {
|
|
221
|
+
kind: 'transition';
|
|
222
|
+
localId: string;
|
|
223
|
+
ref: LinkedRef;
|
|
224
|
+
/** The new board status id; the translator maps it to a remote state. */
|
|
225
|
+
status: string;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Move an existing twin's parent, in place (LP-493). Covers both a local
|
|
229
|
+
* reparent (`lpm move` on a linked document) and a hierarchy-encoding switch,
|
|
230
|
+
* which moves the *same* parent between the two carriers. Exactly one of
|
|
231
|
+
* `parent` / `blockParent` is set while the new parent sits within / beyond
|
|
232
|
+
* the native depth; both are absent when the document moves to the root. The
|
|
233
|
+
* twin keeps its remote id — it is never re-created.
|
|
234
|
+
*/
|
|
235
|
+
export interface RemoteReparentOp {
|
|
236
|
+
kind: 'reparent';
|
|
237
|
+
localId: string;
|
|
238
|
+
ref: LinkedRef;
|
|
239
|
+
/** The twin's native parent (the sub-issues edge), within the native depth. */
|
|
240
|
+
parent?: RemoteRef;
|
|
241
|
+
/** The twin's degraded parent (the block's `parent` row), beyond it. */
|
|
242
|
+
blockParent?: RemoteRef;
|
|
243
|
+
}
|
|
244
|
+
/** Close an existing twin (a terminal status reached). */
|
|
245
|
+
export interface RemoteCloseOp {
|
|
246
|
+
kind: 'close';
|
|
247
|
+
localId: string;
|
|
248
|
+
ref: LinkedRef;
|
|
249
|
+
/**
|
|
250
|
+
* A comment to post on the twin before closing, explaining why (the
|
|
251
|
+
* push-side `on_delete: close` policy). Only ever set when the close is a
|
|
252
|
+
* policy close for a document that went away — never for a terminal status
|
|
253
|
+
* the board reached on its own, which needs no explanation.
|
|
254
|
+
*/
|
|
255
|
+
note?: string;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Delete an existing twin (`on_delete: delete`, LP-351).
|
|
259
|
+
*
|
|
260
|
+
* The connector decides what delete means on its platform — Jira and Linear
|
|
261
|
+
* hard-delete (or trash), GitHub cannot hard-delete and closes instead, which
|
|
262
|
+
* its adapter documents. The op carries only the twin to remove; the executor
|
|
263
|
+
* drops the link (or decouples, when the local document still exists) after
|
|
264
|
+
* the delete lands, so a failed delete leaves the link in place and the next
|
|
265
|
+
* sync retries it.
|
|
266
|
+
*/
|
|
267
|
+
export interface RemoteDeleteOp {
|
|
268
|
+
kind: 'delete';
|
|
269
|
+
localId: string;
|
|
270
|
+
ref: LinkedRef;
|
|
271
|
+
}
|
|
272
|
+
/** Add an edge between two in-scope issues. */
|
|
273
|
+
export interface RemoteLinkOp {
|
|
274
|
+
kind: 'link';
|
|
275
|
+
/**
|
|
276
|
+
* The edge kind: `depends` (the gating `depends_on` edge, the default) or
|
|
277
|
+
* `relates` (the non-gating `relates_to` edge, LP-325). For `depends`,
|
|
278
|
+
* `dependent` waits on `dependency`; for `relates` the two are
|
|
279
|
+
* interchangeable.
|
|
280
|
+
*/
|
|
281
|
+
linkKind: LinkKind;
|
|
282
|
+
/** The issue that waits (or, for relates, the local side of the edge). */
|
|
283
|
+
dependent: RemoteRef;
|
|
284
|
+
/** The issue it waits on (or, for relates, the other side of the edge). */
|
|
285
|
+
dependency: RemoteRef;
|
|
286
|
+
}
|
|
287
|
+
/** Remove an edge that no longer exists locally. */
|
|
288
|
+
export interface RemoteUnlinkOp {
|
|
289
|
+
kind: 'unlink';
|
|
290
|
+
/** The edge kind, exactly as `RemoteLinkOp.linkKind`. */
|
|
291
|
+
linkKind: LinkKind;
|
|
292
|
+
dependent: LinkedRef;
|
|
293
|
+
dependency: LinkedRef;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Write the dependency / relate edges into the managed block of a twin whose
|
|
297
|
+
* remote holds no native edge (LP-314).
|
|
298
|
+
*
|
|
299
|
+
* The block is authoritative: the op carries the **complete** current set of
|
|
300
|
+
* edges, not a diff, so the executor rewrites the block idempotently. A
|
|
301
|
+
* dependency referenced by a create that did not land is simply omitted (the
|
|
302
|
+
* executor cannot resolve its remote id), and the next push re-plans it — a
|
|
303
|
+
* reference is never written as a dangling local id (AC #2).
|
|
304
|
+
*/
|
|
305
|
+
export interface RemoteEdgesOp {
|
|
306
|
+
kind: 'edges';
|
|
307
|
+
localId: string;
|
|
308
|
+
/** The twin carrying the block — an existing twin, or the create this same push files. */
|
|
309
|
+
ref: RemoteRef;
|
|
310
|
+
/** The degraded parent (block carrier), when the document nests beyond the native depth. */
|
|
311
|
+
parent?: RemoteRef;
|
|
312
|
+
/** The issues this document waits on, resolved to remote ids by the executor. */
|
|
313
|
+
dependsOn: RemoteRef[];
|
|
314
|
+
/** The issues this document is related to, resolved to remote ids by the executor. */
|
|
315
|
+
relatesTo: RemoteRef[];
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Post a local work-log comment upstream (LP-316). Carries the comment's
|
|
319
|
+
* 1-based index so the executor can record `commentIds[index] = remote id`
|
|
320
|
+
* once it lands — which is what makes re-posting impossible. `body` is the
|
|
321
|
+
* rendered comment (`renderCommentForRemote`), already naming the local author
|
|
322
|
+
* for a platform that cannot set the comment author itself.
|
|
323
|
+
*/
|
|
324
|
+
export interface RemoteCommentOp {
|
|
325
|
+
kind: 'comment';
|
|
326
|
+
/** The twin the comment hangs off — an existing twin, or the create this same push files. */
|
|
327
|
+
ref: RemoteRef;
|
|
328
|
+
/** 1-based index of the local comment in `_comments.md`. */
|
|
329
|
+
index: number;
|
|
330
|
+
/** The local author, for the report. */
|
|
331
|
+
author: string;
|
|
332
|
+
/** The rendered comment body posted upstream. */
|
|
333
|
+
body: string;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Write (or update) the managed comment holding a twin's degraded fields.
|
|
337
|
+
*
|
|
338
|
+
* The op carries the *entries* rather than a rendered body, so the executor
|
|
339
|
+
* renders them through the codec (byte-stable, sorted) and can tell "nothing
|
|
340
|
+
* to write" from "something to write" — the former removes the comment. The
|
|
341
|
+
* executor derives the id links from the link store; `links` is the pure
|
|
342
|
+
* override a test or a dry-run supplies when there is no store to read.
|
|
343
|
+
*/
|
|
344
|
+
export interface RemoteManagedCommentOp {
|
|
345
|
+
kind: 'managedComment';
|
|
346
|
+
localId: string;
|
|
347
|
+
ref: LinkedRef;
|
|
348
|
+
/** The degraded fields the comment carries, as block entries. */
|
|
349
|
+
entries: readonly ManagedBlockEntry[];
|
|
350
|
+
/** Local id → remote URL, for rendering id cells as clickable links. */
|
|
351
|
+
links?: ManagedBlockLinks;
|
|
352
|
+
}
|
|
353
|
+
/** Detach a local document from its twin without touching the remote. */
|
|
354
|
+
export interface RemoteUnlinkLocalOp {
|
|
355
|
+
kind: 'unlinkLocal';
|
|
356
|
+
localId: string;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Decouple a local document from its twin, recording a tombstone so no later
|
|
360
|
+
* sync re-files it (LP-366). Unlike `unlinkLocal`, which just drops the link,
|
|
361
|
+
* a decouple *remembers*: the last known remote key, the reason, and when it
|
|
362
|
+
* happened. The remote twin is left alone — decoupling never deletes or closes
|
|
363
|
+
* anything upstream.
|
|
364
|
+
*/
|
|
365
|
+
export interface RemoteDecoupleOp {
|
|
366
|
+
kind: 'decouple';
|
|
367
|
+
localId: string;
|
|
368
|
+
/** Why the link was dropped: `manual` (a human) or `out_of_scope`. */
|
|
369
|
+
reason: string;
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Re-file a vanished twin upstream (`on_delete: restore`, LP-365).
|
|
373
|
+
*
|
|
374
|
+
* A restore is a push of a document that already has history: the remote issue
|
|
375
|
+
* was deleted, so this re-creates it from local state under a **new** remote id
|
|
376
|
+
* and the link is repointed at that id, the base snapshot rewritten from the
|
|
377
|
+
* response. It is deliberately not a `create` — a `create` says "this
|
|
378
|
+
* document has no twin", a restore says "the twin is gone and we are filing a
|
|
379
|
+
* replacement", and the report must say so rather than imply a true undelete.
|
|
380
|
+
*/
|
|
381
|
+
export interface RemoteRestoreOp {
|
|
382
|
+
kind: 'restore';
|
|
383
|
+
/** Placeholder the executor resolves to the new remote id when this lands. */
|
|
384
|
+
placeholder: string;
|
|
385
|
+
localId: string;
|
|
386
|
+
/** The remote id that vanished — carried for the report, not the request. */
|
|
387
|
+
oldRemoteId: string;
|
|
388
|
+
/** The issue's fields in board vocabulary (the translator's input). */
|
|
389
|
+
fields: BoardFields;
|
|
390
|
+
/** The re-filed issue's native parent, when it is in scope; absent = remote root. */
|
|
391
|
+
parent?: RemoteRef;
|
|
392
|
+
/** The re-filed issue's degraded parent (LP-309): carried in the managed block. */
|
|
393
|
+
blockParent?: RemoteRef;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* The push plan. Mirrors `Change` (`create` / `update` / `delete` there;
|
|
397
|
+
* `create` / `update` / `transition` / `link` / `unlink` / `comment` / `close`
|
|
398
|
+
* / `unlinkLocal` here). Providers implement the operations; they never see a
|
|
399
|
+
* `LoadedBoard`.
|
|
400
|
+
*/
|
|
401
|
+
export type RemoteOp = RemoteCreateOp | RemoteUpdateOp | RemoteTransitionOp | RemoteReparentOp | RemoteCloseOp | RemoteDeleteOp | RemoteLinkOp | RemoteUnlinkOp | RemoteEdgesOp | RemoteCommentOp | RemoteManagedCommentOp | RemoteUnlinkLocalOp | RemoteDecoupleOp | RemoteRestoreOp;
|
|
402
|
+
/**
|
|
403
|
+
* A document a push deliberately left out, with why. A decoupled document is
|
|
404
|
+
* skipped — never created — and the reason names the tombstone's own reason
|
|
405
|
+
* plus the last known remote key, so the operator can tell "deliberately
|
|
406
|
+
* dropped" from "never pushed".
|
|
407
|
+
*/
|
|
408
|
+
export interface PushSkip {
|
|
409
|
+
localId: string;
|
|
410
|
+
/** The tombstone's reason: `manual`, `out_of_scope`, or a policy reason. */
|
|
411
|
+
reason: string;
|
|
412
|
+
/** The last known remote key, kept by the tombstone; empty when none. */
|
|
413
|
+
remoteKey: string;
|
|
414
|
+
}
|
|
415
|
+
/** A push, planned: the operations to run, plus what was deliberately left out. */
|
|
416
|
+
export interface PushPlan {
|
|
417
|
+
ops: RemoteOp[];
|
|
418
|
+
skipped: PushSkip[];
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* One correspondence effect a pull performs on the link store, *alongside* the
|
|
422
|
+
* `Change[]` that lands on the board.
|
|
423
|
+
*
|
|
424
|
+
* The pull plan is two lists on purpose. `Change` is the board-document
|
|
425
|
+
* protocol (`create` / `update` / `delete`) and it has no word for a link
|
|
426
|
+
* store entry, which is the remote layer's own state — so the correspondence
|
|
427
|
+
* moves are carried here and applied by `applyPull` as the changes land.
|
|
428
|
+
*/
|
|
429
|
+
export type PullLinkOp =
|
|
430
|
+
/** After a `create` lands, record its twin (real id → remote id). */
|
|
431
|
+
{
|
|
432
|
+
kind: 'record';
|
|
433
|
+
tempId: string;
|
|
434
|
+
remoteId: string;
|
|
435
|
+
}
|
|
436
|
+
/** The twin is gone upstream; drop the correspondence for this local id. */
|
|
437
|
+
| {
|
|
438
|
+
kind: 'unlink';
|
|
439
|
+
localId: string;
|
|
440
|
+
}
|
|
441
|
+
/** Drop the link and record a tombstone, so the next push never re-files it. */
|
|
442
|
+
| {
|
|
443
|
+
kind: 'decouple';
|
|
444
|
+
localId: string;
|
|
445
|
+
reason: string;
|
|
446
|
+
};
|
|
447
|
+
/**
|
|
448
|
+
* A pull-side existence decision left for a human (LP-365). Neither side has
|
|
449
|
+
* moved: `on_delete: manual` leaves a vanished twin unresolved, and a
|
|
450
|
+
* `delete` that would orphan a linked child is refused. The sync reports each
|
|
451
|
+
* one and exits non-zero; `lpm remote resolve` (LP-287) settles it.
|
|
452
|
+
*/
|
|
453
|
+
export interface PullConflict {
|
|
454
|
+
localId: string;
|
|
455
|
+
/** The remote id that vanished. */
|
|
456
|
+
remoteId: string;
|
|
457
|
+
/** Why neither side moved — the policy, or the child a delete would orphan. */
|
|
458
|
+
reason: string;
|
|
459
|
+
/** The linked child a delete would have orphaned, when that was the refusal. */
|
|
460
|
+
childId?: string;
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Append one remote comment to a document's `_comments.md` (LP-316). Carried
|
|
464
|
+
* separately from `Change[]` because a comment is not board state and is
|
|
465
|
+
* written straight through, exactly the way the web app writes one. `targetId`
|
|
466
|
+
* is the local document — its temporary id when the issue is also new in this
|
|
467
|
+
* pull, its real id otherwise — so `applyPull` resolves it the same way it
|
|
468
|
+
* resolves a `record` link op.
|
|
469
|
+
*/
|
|
470
|
+
export interface PullCommentOp {
|
|
471
|
+
kind: 'append';
|
|
472
|
+
/** Temp id (new create) or real local id (twin) of the target document. */
|
|
473
|
+
targetId: string;
|
|
474
|
+
/** The remote comment id, recorded so the next pull never appends it twice. */
|
|
475
|
+
remoteId: string;
|
|
476
|
+
/** The remote author's name, written into the `_comments.md` heading. */
|
|
477
|
+
author: string;
|
|
478
|
+
/** The remote timestamp, written into the `_comments.md` heading. */
|
|
479
|
+
at: string;
|
|
480
|
+
/** The comment body text. */
|
|
481
|
+
body: string;
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* A field-level conflict on a linked twin still present on both sides (LP-257
|
|
485
|
+
* AC #2). Both sides edited the same field since the base snapshot, so
|
|
486
|
+
* neither value is derived from the other: the field is left untouched on both
|
|
487
|
+
* sides and reported — a question, not an operation, exactly like an
|
|
488
|
+
* existence conflict.
|
|
489
|
+
*/
|
|
490
|
+
export interface PullFieldConflict {
|
|
491
|
+
localId: string;
|
|
492
|
+
remoteId: string;
|
|
493
|
+
/** The board field that diverged: `title`, `body`, `status`, `assignee`, `period`, or an attribute name. */
|
|
494
|
+
field: string;
|
|
495
|
+
/** The local (board) value. Body is the raw text. */
|
|
496
|
+
local: unknown;
|
|
497
|
+
/** The remote value, translated back to board vocabulary. Body is the raw text. */
|
|
498
|
+
remote: unknown;
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* A reference a managed block carried that the pull could not resolve to a
|
|
502
|
+
* local document (LP-314). Reported, never silently dropped: a cross-repo
|
|
503
|
+
* reference is out of scope, an unknown token is a human edit or a mangled
|
|
504
|
+
* row.
|
|
505
|
+
*/
|
|
506
|
+
export interface PullEdgeWarning {
|
|
507
|
+
/** The remote id of the record whose block carried the reference. */
|
|
508
|
+
remoteId: string;
|
|
509
|
+
/** `depends_on` or `relates_to` — the row the reference came from. */
|
|
510
|
+
field: 'depends_on' | 'relates_to';
|
|
511
|
+
/** The raw reference: `owner/repo#12`, a bare local id, or free text. */
|
|
512
|
+
reference: string;
|
|
513
|
+
/** `cross_repo` (out of scope), `unknown` (unresolvable) or `cycle` (refused). */
|
|
514
|
+
kind: 'cross_repo' | 'unknown' | 'cycle';
|
|
515
|
+
/** The cycle the edge would close, named member → member → member (kind: `cycle` only). */
|
|
516
|
+
cycle?: string;
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* The edge references a record's managed block carries (LP-314), split by
|
|
520
|
+
* resolvability. Same-repo references come back as bare remote ids and are
|
|
521
|
+
* resolved through the link store exactly like a native edge; cross-repo and
|
|
522
|
+
* unknown references are reported by the planner rather than resolved.
|
|
523
|
+
*/
|
|
524
|
+
export interface BlockEdges {
|
|
525
|
+
dependsOn: string[];
|
|
526
|
+
relatesTo: string[];
|
|
527
|
+
/** Cross-repo references (`owner/repo#12`) — out of scope, never resolved. */
|
|
528
|
+
crossRepo: Array<{
|
|
529
|
+
field: 'depends_on' | 'relates_to';
|
|
530
|
+
reference: string;
|
|
531
|
+
}>;
|
|
532
|
+
/** References that are neither a `#ref` nor a cross-repo reference. */
|
|
533
|
+
unknown: Array<{
|
|
534
|
+
field: 'depends_on' | 'relates_to';
|
|
535
|
+
reference: string;
|
|
536
|
+
}>;
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* A pull, planned: the board-document changes to apply, plus the link-store
|
|
540
|
+
* effects that travel with them.
|
|
541
|
+
*
|
|
542
|
+
* `changes` is a plain `Change[]` from `src/shared/changes.ts`, handed to
|
|
543
|
+
* `applyChanges` from `src/sync` — the one applier every front end shares. A
|
|
544
|
+
* create carries a temporary id from a fresh counter (never one derived from a
|
|
545
|
+
* view's pending list), and its parent is referenced by the same temporary id
|
|
546
|
+
* when the parent is also new, which is exactly what `applyChanges`'s
|
|
547
|
+
* hold-back-and-replay handles: the reference decides the order, not the plan.
|
|
548
|
+
*
|
|
549
|
+
* `restore` carries the push-side operations for `on_delete: restore` — a pull
|
|
550
|
+
* discovers the deletion, but the remedy is a re-file upstream, so the plan
|
|
551
|
+
* holds `RemoteOp[]` rather than `Change[]`. `conflicts` carries the documents
|
|
552
|
+
* a policy left for a human. Both are absent when empty, so an up-to-date pull
|
|
553
|
+
* is still exactly `{ changes: [], links: [] }`.
|
|
554
|
+
*/
|
|
555
|
+
export interface PullPlan {
|
|
556
|
+
changes: Change[];
|
|
557
|
+
links: PullLinkOp[];
|
|
558
|
+
/** Remote comments to append to `_comments.md`, absent when there are none. */
|
|
559
|
+
comments?: PullCommentOp[];
|
|
560
|
+
restore?: RemoteRestoreOp[];
|
|
561
|
+
conflicts?: PullConflict[];
|
|
562
|
+
/** Field conflicts on twins still present on both sides, absent when empty. */
|
|
563
|
+
fieldConflicts?: PullFieldConflict[];
|
|
564
|
+
/** Edge references a managed block carried that could not be resolved, absent when empty. */
|
|
565
|
+
edgeWarnings?: PullEdgeWarning[];
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* The translation seams `planPull` needs, which are pure by construction so the
|
|
569
|
+
* planner stays browser-compatible and free of the disk and the network.
|
|
570
|
+
*
|
|
571
|
+
* `toPatch` turns one remote record into the board fields a `create` writes; it
|
|
572
|
+
* receives the issue's hierarchy depth so the type can be resolved exactly as
|
|
573
|
+
* `mapTypeFromRemote` wants it. It is a callback rather than a `Translator`
|
|
574
|
+
* plus mapping so the planner never learns a provider's vocabulary. When it
|
|
575
|
+
* returns no `type`, the create falls back to the deepest declared issue type
|
|
576
|
+
* (LP-315) — a triaged remote issue with no mapped label still becomes a
|
|
577
|
+
* document rather than a failure when it is applied.
|
|
578
|
+
*
|
|
579
|
+
* `parentIdOf` reads the remote id of a record's parent, for providers that
|
|
580
|
+
* hold a native hierarchy. Omit it for a flat remote (GitHub) and the pull
|
|
581
|
+
* files every issue at the top level.
|
|
582
|
+
*
|
|
583
|
+
* `dependsOnOf` reads the remote ids a record waits on, for providers that
|
|
584
|
+
* hold dependency edges. Each id is resolved to the local document it names —
|
|
585
|
+
* the dependency's temporary id when it is also new in this pull, its twin
|
|
586
|
+
* otherwise — exactly as `parentIdOf` is. A dependency naming a remote id
|
|
587
|
+
* with neither a twin nor a pending create is dropped, because there is no
|
|
588
|
+
* local document for the edge to point at. Omit it for a remote with no
|
|
589
|
+
* edges and every create is filed with no `depends_on`.
|
|
590
|
+
*
|
|
591
|
+
* `relatesToOf` reads the remote ids a record relates to, for providers that
|
|
592
|
+
* hold a native relate edge (LP-325). Resolved exactly as `dependsOnOf`'s
|
|
593
|
+
* are, and written onto `patch.relatesTo`.
|
|
594
|
+
*
|
|
595
|
+
* `blockEdgesOf` reads the dependency / relate references a record's managed
|
|
596
|
+
* block carries (LP-314), for providers with no native edge. Same-repo
|
|
597
|
+
* references are returned as bare remote ids and resolved exactly as
|
|
598
|
+
* `dependsOnOf`'s are; cross-repo and unknown references are reported in
|
|
599
|
+
* `PullPlan.edgeWarnings` rather than resolved. Omit it for a remote that
|
|
600
|
+
* never writes a managed block.
|
|
601
|
+
*/
|
|
602
|
+
export interface PullOptions {
|
|
603
|
+
toPatch: (record: RemoteRecord, depth: number) => BoardFieldsPatch;
|
|
604
|
+
/**
|
|
605
|
+
* Where a remote issue with no parent of its own lands on the board.
|
|
606
|
+
*
|
|
607
|
+
* A tracker's issues are a flat list; a board's are a tree with rules about
|
|
608
|
+
* what may sit at which level, so an issue pulled in on its own has nowhere
|
|
609
|
+
* to go and the create is refused ("user_story needs a parent issue"). This
|
|
610
|
+
* is the caller's answer to that — `lpm remote pull PAY-31 --parent LP-3` —
|
|
611
|
+
* and it applies only where nothing else does: an issue whose remote parent
|
|
612
|
+
* is already mirrored is filed under that twin, whatever this says.
|
|
613
|
+
*/
|
|
614
|
+
underParent?: string;
|
|
615
|
+
parentIdOf?: (record: RemoteRecord) => string | undefined;
|
|
616
|
+
dependsOnOf?: (record: RemoteRecord) => string[];
|
|
617
|
+
relatesToOf?: (record: RemoteRecord) => string[];
|
|
618
|
+
blockEdgesOf?: (record: RemoteRecord) => BlockEdges;
|
|
619
|
+
}
|
|
620
|
+
/**
|
|
621
|
+
* Plan a push: the remote operations needed to bring the remote's in-scope
|
|
622
|
+
* issues onto the board's current state, ordered so every reference resolves.
|
|
623
|
+
*
|
|
624
|
+
* Returns an empty `{ ops: [], skipped: [] }` when nothing changed, when the
|
|
625
|
+
* remote is pull-only, or when the scope holds no documents. The order inside
|
|
626
|
+
* a non-empty plan is:
|
|
627
|
+
*
|
|
628
|
+
* 1. `create` ops, parents before children (by depth);
|
|
629
|
+
* 2. `update` / `transition` / `close` ops for changed twins;
|
|
630
|
+
* 3. `link` / `unlink` ops, after every endpoint exists;
|
|
631
|
+
* 4. the `on_delete` resolution for linked twins whose local document went
|
|
632
|
+
* away (deleted, or left the scope subtree): `unlink` / `close` / `delete`.
|
|
633
|
+
*
|
|
634
|
+
* In-scope documents carrying a tombstone are never created; they are
|
|
635
|
+
* reported in `skipped` rather than silently omitted (LP-366).
|
|
636
|
+
*
|
|
637
|
+
* A `create` carries no remote id: it is referenced by a `new:` placeholder,
|
|
638
|
+
* which the executor resolves against each create's response before it reaches
|
|
639
|
+
* any op that points at it.
|
|
640
|
+
*/
|
|
641
|
+
export declare function planPush(board: BoardView, links: LinkStore, remote: RemoteSnapshot, localComments?: ReadonlyMap<string, readonly LocalComment[]>): PushPlan;
|
|
642
|
+
/**
|
|
643
|
+
* Plan a pull: the `Change[]` needed to bring the board's in-scope issues into
|
|
644
|
+
* agreement with the remote listing, plus the link-store effects that travel
|
|
645
|
+
* with it.
|
|
646
|
+
*
|
|
647
|
+
* The pull is an *existence* reconciliation, plus a field diff. A remote
|
|
648
|
+
* issue with no twin is planned as a `create` — carrying its hierarchy parent
|
|
649
|
+
* and its dependency edges, both referenced by temporary ids when the other
|
|
650
|
+
* endpoint is also new in this pull, so the existing hold-back-and-replay
|
|
651
|
+
* wires them. A linked twin absent from the listing is resolved by the
|
|
652
|
+
* remote's `on_delete` policy (`unlink`, `close`, `delete`, `restore` or
|
|
653
|
+
* `manual`), one document at a time (LP-365). A linked twin still present on
|
|
654
|
+
* both sides is merged field by field against its base snapshot (LP-284): a
|
|
655
|
+
* field the remote alone changed becomes an `update` pulling the remote value
|
|
656
|
+
* onto the board, a field both sides changed is reported in `fieldConflicts`
|
|
657
|
+
* and left untouched on both sides (LP-257 AC #2), and a field the board alone
|
|
658
|
+
* changed is left for the push planner to carry upstream.
|
|
659
|
+
*
|
|
660
|
+
* The plan is applied by `applyChanges` from `src/sync` — the same applier the
|
|
661
|
+
* web app and the CLI push a view through — so the pull inherits partial
|
|
662
|
+
* application, temporary-id remapping and the hold-back-and-replay of a create
|
|
663
|
+
* whose parent is created later in the same push. (Naming note: `PushSession`
|
|
664
|
+
* inside `src/sync` is named for pushing a *view* onto the board, which is the
|
|
665
|
+
* same direction a remote **pull** moves — remote → board.)
|
|
666
|
+
*
|
|
667
|
+
* Returns an empty plan for a `direction: push` remote (it never pulls), for a
|
|
668
|
+
* scope that names no documents, and when the listing agrees with the link
|
|
669
|
+
* store. Pure: no disk, no network.
|
|
670
|
+
*/
|
|
671
|
+
export declare function planPull(board: BoardView, links: LinkStore, remote: RemoteSnapshot, options: PullOptions): PullPlan;
|