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,73 @@
|
|
|
1
|
+
import { upstreamWork } from '../blocking.js';
|
|
2
|
+
import { fail, update } from './breakdown.js';
|
|
3
|
+
import { blockingLookupOf } from './reading.js';
|
|
4
|
+
/**
|
|
5
|
+
* Work out the upstream schedule, reporting what was skipped as well as what
|
|
6
|
+
* was planned.
|
|
7
|
+
*
|
|
8
|
+
* Callers that only want the changes use `planScheduleUpstream`; the CLI and
|
|
9
|
+
* the MCP tool use this one, because "nothing happened" is an answer that needs
|
|
10
|
+
* to say why — three issues already had owners is a different board from no
|
|
11
|
+
* upstream work at all.
|
|
12
|
+
*/
|
|
13
|
+
export function scheduleUpstream(view, id, options = {}) {
|
|
14
|
+
const empty = { decisions: [], period: null, assignee: null };
|
|
15
|
+
const target = view.nodes[id];
|
|
16
|
+
if (!target)
|
|
17
|
+
return { ...empty, plan: fail(`No issue with id "${id}"`) };
|
|
18
|
+
if (target.kind !== 'issue') {
|
|
19
|
+
return {
|
|
20
|
+
...empty,
|
|
21
|
+
plan: fail(`${id} is a ${target.kind}; only issues have upstream work`),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const period = options.period === undefined ? target.period : options.period;
|
|
25
|
+
const assignee = options.assignee === undefined ? target.assignee : options.assignee;
|
|
26
|
+
if (period === null && assignee === null) {
|
|
27
|
+
return {
|
|
28
|
+
...empty,
|
|
29
|
+
plan: fail(`${id} is not scheduled and not assigned, so there is nothing to copy onto its upstream work`, [
|
|
30
|
+
'Schedule or assign it first, or pass a period and an assignee explicitly.',
|
|
31
|
+
]),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const lookup = blockingLookupOf(view);
|
|
35
|
+
const decisions = [];
|
|
36
|
+
const changes = [];
|
|
37
|
+
for (const entry of upstreamWork(id, lookup)) {
|
|
38
|
+
const issue = view.nodes[entry.id];
|
|
39
|
+
if (!issue || issue.kind !== 'issue')
|
|
40
|
+
continue;
|
|
41
|
+
const skipped = skipReason(issue, lookup.isWorkUnit(entry.id), period, assignee);
|
|
42
|
+
decisions.push({ ...entry, skipped });
|
|
43
|
+
if (skipped)
|
|
44
|
+
continue;
|
|
45
|
+
// Both fields travel in one patch: the two halves of "this is now yours,
|
|
46
|
+
// this sprint" must not be able to land separately.
|
|
47
|
+
const patch = {};
|
|
48
|
+
if (issue.period !== period)
|
|
49
|
+
patch.period = period;
|
|
50
|
+
if (issue.assignee !== assignee)
|
|
51
|
+
patch.assignee = assignee;
|
|
52
|
+
changes.push(update(view, entry.id, patch));
|
|
53
|
+
}
|
|
54
|
+
return { plan: { ok: true, changes, created: [] }, decisions, period, assignee };
|
|
55
|
+
}
|
|
56
|
+
function skipReason(issue, isUnit, period, assignee) {
|
|
57
|
+
if (issue.assignee !== null)
|
|
58
|
+
return 'assigned';
|
|
59
|
+
if (!isUnit)
|
|
60
|
+
return 'container';
|
|
61
|
+
if (issue.period === period && issue.assignee === assignee)
|
|
62
|
+
return 'unchanged';
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The changes alone, for a caller that just wants to queue them.
|
|
67
|
+
*
|
|
68
|
+
* @see scheduleUpstream for the decisions behind them.
|
|
69
|
+
*/
|
|
70
|
+
export function planScheduleUpstream(view, id, options = {}) {
|
|
71
|
+
return scheduleUpstream(view, id, options).plan;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=upstream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstream.js","sourceRoot":"","sources":["../../../src/shared/plans/upstream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAsDhD;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAe,EACf,EAAU,EACV,UAAmC,EAAE;IAErC,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC,EAAE,CAAC;IACzE,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO;YACL,GAAG,KAAK;YACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,MAAM,CAAC,IAAI,kCAAkC,CAAC;SACxE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7E,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACrF,IAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACzC,OAAO;YACL,GAAG,KAAK;YACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,wFAAwF,EAAE;gBACxG,2EAA2E;aAC5E,CAAC;SACH,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;YAAE,SAAS;QAE/C,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjF,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACtC,IAAI,OAAO;YAAE,SAAS;QAEtB,yEAAyE;QACzE,oDAAoD;QACpD,MAAM,KAAK,GAAyD,EAAE,CAAC;QACvE,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACnD,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACnF,CAAC;AAED,SAAS,UAAU,CACjB,KAAe,EACf,MAAe,EACf,MAAqB,EACrB,QAAuB;IAEvB,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI;QAAE,OAAO,UAAU,CAAC;IAC/C,IAAI,CAAC,MAAM;QAAE,OAAO,WAAW,CAAC;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC;IAC/E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAe,EACf,EAAU,EACV,UAAmC,EAAE;IAErC,OAAO,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wire shapes for the remote routes (`/api/remotes/*`), served by
|
|
3
|
+
* `src/server/routes/remotes.ts` (LP-344).
|
|
4
|
+
*
|
|
5
|
+
* Import-free, like the rest of this folder: the server maps the remote
|
|
6
|
+
* layer's results onto these shapes, and the web app consumes them, neither
|
|
7
|
+
* importing the other. Credentials never appear here — the server resolves
|
|
8
|
+
* them itself and nothing on either side of the wire carries one.
|
|
9
|
+
*/
|
|
10
|
+
/** The direction a sync run takes, as the server accepts and reports it. */
|
|
11
|
+
export type RemoteSyncDirection = 'push' | 'pull' | 'both';
|
|
12
|
+
/** One configured remote, as `GET /api/remotes` lists it. */
|
|
13
|
+
export interface RemoteSummaryDto {
|
|
14
|
+
name: string;
|
|
15
|
+
provider: string;
|
|
16
|
+
direction: RemoteSyncDirection;
|
|
17
|
+
/** The connection value that names where the issues live. */
|
|
18
|
+
target: string;
|
|
19
|
+
/** Most recent sync across links, or null when never synced. */
|
|
20
|
+
lastSync: string | null;
|
|
21
|
+
}
|
|
22
|
+
/** A push-side preflight problem, trimmed to what the panel shows. */
|
|
23
|
+
export interface RemotePreflightProblemDto {
|
|
24
|
+
level: 'error' | 'warn';
|
|
25
|
+
message: string;
|
|
26
|
+
}
|
|
27
|
+
/** One field's detail in a preview document: the two sides and what happens. */
|
|
28
|
+
export interface RemotePreviewFieldDto {
|
|
29
|
+
/** Display name (`title`, `status`, `attributes.story_points`, `depends_on`…). */
|
|
30
|
+
field: string;
|
|
31
|
+
/** The local (board) value; null means absent on the board. */
|
|
32
|
+
local: unknown;
|
|
33
|
+
/** The remote value — the base snapshot, or null when the remote has none. */
|
|
34
|
+
remote: unknown;
|
|
35
|
+
/** What the operation does to this field: `created`, `updated`, `closed`, … */
|
|
36
|
+
outcome: string;
|
|
37
|
+
}
|
|
38
|
+
/** One document's detail in a preview section. */
|
|
39
|
+
export interface RemotePreviewDocumentDto {
|
|
40
|
+
/** The local id the operation names. */
|
|
41
|
+
localId: string;
|
|
42
|
+
/** The document's title, when known. */
|
|
43
|
+
title?: string;
|
|
44
|
+
/** The remote id of the twin, when the operation names one. */
|
|
45
|
+
remoteId?: string;
|
|
46
|
+
kind: string;
|
|
47
|
+
fields: RemotePreviewFieldDto[];
|
|
48
|
+
}
|
|
49
|
+
/** One operation kind, grouped with its count and documents. */
|
|
50
|
+
export interface RemotePreviewSectionDto {
|
|
51
|
+
kind: string;
|
|
52
|
+
/** Human label for the kind (`create`, `transition`, `unlink locally`, …). */
|
|
53
|
+
label: string;
|
|
54
|
+
count: number;
|
|
55
|
+
documents: RemotePreviewDocumentDto[];
|
|
56
|
+
}
|
|
57
|
+
/** One rendered plan step of a preview: the direction, its plain-text diff, and
|
|
58
|
+
* the same plan grouped by operation kind, so the web preview can render the
|
|
59
|
+
* structure `lpm remote push --dry-run` produces rather than re-deriving it. */
|
|
60
|
+
export interface RemotePreviewRenderDto {
|
|
61
|
+
direction: 'pull' | 'push';
|
|
62
|
+
/** Total operations in this step. */
|
|
63
|
+
total: number;
|
|
64
|
+
/** One section per operation kind, in the renderer's fixed order. */
|
|
65
|
+
sections: RemotePreviewSectionDto[];
|
|
66
|
+
/** The plain-text form the CLI prints. */
|
|
67
|
+
text: string;
|
|
68
|
+
}
|
|
69
|
+
/** The preview of a sync: the rendered plan, nothing written to either side. */
|
|
70
|
+
export interface RemotePreviewDto {
|
|
71
|
+
remoteName: string;
|
|
72
|
+
direction: RemoteSyncDirection;
|
|
73
|
+
preflight: RemotePreflightProblemDto[];
|
|
74
|
+
/** True when the push was refused because the preflight found error problems. */
|
|
75
|
+
preflightBlocked: boolean;
|
|
76
|
+
/** Why the pull was skipped — the remote could not be reached. */
|
|
77
|
+
unreachable?: string;
|
|
78
|
+
/** The rendered plans, pull first (when pulled) then push. */
|
|
79
|
+
renders: RemotePreviewRenderDto[];
|
|
80
|
+
}
|
|
81
|
+
/** The body of `POST /api/remotes/:name/sync` and `/preview`. */
|
|
82
|
+
export interface RemoteSyncRequestDto {
|
|
83
|
+
direction?: RemoteSyncDirection;
|
|
84
|
+
/** Narrow the run to one subtree (`lpm remote push <id>`). */
|
|
85
|
+
scope?: string;
|
|
86
|
+
/**
|
|
87
|
+
* Act on exactly these documents and no others — the push side's
|
|
88
|
+
* *selection*, `lpm remote push LP-12` with no `--children`.
|
|
89
|
+
*
|
|
90
|
+
* It is not `scope` with one entry, and the difference is the one this
|
|
91
|
+
* layer keeps having to restate: `scope` names a subtree *root* and expands
|
|
92
|
+
* to everything under it, which is right for "push this feature and its
|
|
93
|
+
* stories" and wrong for "push this one document". Neither narrows what the
|
|
94
|
+
* remote *owns*, so the gone pass is untouched by either and a selective run
|
|
95
|
+
* can never decouple the rest of the board.
|
|
96
|
+
*/
|
|
97
|
+
only?: string[];
|
|
98
|
+
/**
|
|
99
|
+
* Pull exactly these twins, by **remote** id (`lpm remote pull PAY-31`).
|
|
100
|
+
*
|
|
101
|
+
* A targeted pull is `partial`: it fetches what it was asked for and says
|
|
102
|
+
* nothing whatever about what it did not look for, so no twin's absence is
|
|
103
|
+
* read as a deletion. That is also why it is the right shape for "pull this
|
|
104
|
+
* document" — narrowing a *scope* to one document would leave the bulk guard
|
|
105
|
+
* comparing one missing twin against one expected twin, which is always
|
|
106
|
+
* 100%.
|
|
107
|
+
*/
|
|
108
|
+
pullIds?: string[];
|
|
109
|
+
/** At most this many remote write ops on the push side (`--limit`). */
|
|
110
|
+
limit?: number;
|
|
111
|
+
/**
|
|
112
|
+
* Ask the remote only for what changed since the last pull (`--changed`).
|
|
113
|
+
* The default lists everything the remote holds, which is what refreshes
|
|
114
|
+
* every mirrored document and the only listing a deletion is detected from.
|
|
115
|
+
*/
|
|
116
|
+
changed?: boolean;
|
|
117
|
+
/** Re-probe capabilities instead of reading the cache (`--refresh`). */
|
|
118
|
+
refresh?: boolean;
|
|
119
|
+
/** Confirm the first write or an oversized plan (`--yes`, LP-350). */
|
|
120
|
+
yes?: boolean;
|
|
121
|
+
}
|
|
122
|
+
/** One push op that was refused or rejected, from the applied summary. */
|
|
123
|
+
export interface RemotePushOpDto {
|
|
124
|
+
kind: string;
|
|
125
|
+
localId: string;
|
|
126
|
+
error: string;
|
|
127
|
+
}
|
|
128
|
+
/** The applied push summary, from the `done` event. */
|
|
129
|
+
export interface RemotePushSummaryDto {
|
|
130
|
+
created: number;
|
|
131
|
+
updated: number;
|
|
132
|
+
skipped: number;
|
|
133
|
+
conflicted: number;
|
|
134
|
+
failed: number;
|
|
135
|
+
conflictedOps: RemotePushOpDto[];
|
|
136
|
+
failedOps: RemotePushOpDto[];
|
|
137
|
+
/** Present when the run stopped early — aborted, budget-exhausted, or `--limit`. */
|
|
138
|
+
stopped?: {
|
|
139
|
+
reason: string;
|
|
140
|
+
atOp: number;
|
|
141
|
+
detail: string;
|
|
142
|
+
deferred?: number;
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/** A push the consent gate refused (LP-350, LP-351) — nothing was written. */
|
|
146
|
+
export interface RemoteConsentRefusalDto {
|
|
147
|
+
reason: 'first_write' | 'threshold' | 'delete';
|
|
148
|
+
target: string;
|
|
149
|
+
creates: number;
|
|
150
|
+
closes: number;
|
|
151
|
+
deletes: number;
|
|
152
|
+
threshold: number;
|
|
153
|
+
}
|
|
154
|
+
/** The applied pull summary, from the `done` event. */
|
|
155
|
+
export interface RemotePullSummaryDto {
|
|
156
|
+
applied: number;
|
|
157
|
+
linked: number;
|
|
158
|
+
unlinked: number;
|
|
159
|
+
decoupled: number;
|
|
160
|
+
appendedComments: number;
|
|
161
|
+
/** One line per failed change, grouped like the CLI's push-failure summary. */
|
|
162
|
+
failures: string[];
|
|
163
|
+
}
|
|
164
|
+
/** A pull-side existence decision left for `resolve` (LP-365). */
|
|
165
|
+
export interface RemotePullConflictDto {
|
|
166
|
+
localId: string;
|
|
167
|
+
remoteId: string;
|
|
168
|
+
reason: string;
|
|
169
|
+
/** The linked child a delete would have orphaned, when that was the refusal. */
|
|
170
|
+
childId?: string;
|
|
171
|
+
}
|
|
172
|
+
/** A field-level conflict on a linked twin, left for `resolve` (LP-257). */
|
|
173
|
+
export interface RemotePullFieldConflictDto {
|
|
174
|
+
localId: string;
|
|
175
|
+
remoteId: string;
|
|
176
|
+
field: string;
|
|
177
|
+
local: unknown;
|
|
178
|
+
remote: unknown;
|
|
179
|
+
}
|
|
180
|
+
/** The conflicts a pull left for `resolve`, never applied silently. */
|
|
181
|
+
export interface RemotePullConflictsDto {
|
|
182
|
+
conflicts: RemotePullConflictDto[];
|
|
183
|
+
fieldConflicts: RemotePullFieldConflictDto[];
|
|
184
|
+
}
|
|
185
|
+
/** The final result of an applied sync, streamed as the `done` event. */
|
|
186
|
+
export interface RemoteSyncResultDto {
|
|
187
|
+
remoteName: string;
|
|
188
|
+
direction: RemoteSyncDirection;
|
|
189
|
+
preflight: RemotePreflightProblemDto[];
|
|
190
|
+
preflightBlocked: boolean;
|
|
191
|
+
unreachable?: string;
|
|
192
|
+
/** Present after a pull ran. */
|
|
193
|
+
pull?: RemotePullSummaryDto;
|
|
194
|
+
/** Present after a push ran. */
|
|
195
|
+
push?: RemotePushSummaryDto;
|
|
196
|
+
pullConflicts: RemotePullConflictsDto;
|
|
197
|
+
/** Present when the push was refused by the consent gate (LP-350). */
|
|
198
|
+
consentRefused?: RemoteConsentRefusalDto;
|
|
199
|
+
}
|
|
200
|
+
/** A streamed sync event. Every event carries a `type`. */
|
|
201
|
+
export type RemoteSyncEventDto = {
|
|
202
|
+
type: 'progress';
|
|
203
|
+
index: number;
|
|
204
|
+
total: number;
|
|
205
|
+
kind: string;
|
|
206
|
+
localId: string;
|
|
207
|
+
} | {
|
|
208
|
+
type: 'done';
|
|
209
|
+
result: RemoteSyncResultDto;
|
|
210
|
+
} | {
|
|
211
|
+
type: 'error';
|
|
212
|
+
error: string;
|
|
213
|
+
details?: string[];
|
|
214
|
+
};
|
|
215
|
+
/** Which side of a conflict wins. */
|
|
216
|
+
export type RemoteResolveOwner = 'local' | 'remote';
|
|
217
|
+
/** The body of `POST /api/remotes/:name/resolve`. */
|
|
218
|
+
export interface RemoteResolveRequestDto {
|
|
219
|
+
/** The document to settle. */
|
|
220
|
+
id: string;
|
|
221
|
+
/** Whole-document winner. */
|
|
222
|
+
default?: RemoteResolveOwner;
|
|
223
|
+
/** Per-field winners, most specific first. */
|
|
224
|
+
fields?: Record<string, RemoteResolveOwner>;
|
|
225
|
+
}
|
|
226
|
+
/** The recorded settlement, as the route returns it. */
|
|
227
|
+
export interface RemoteResolveResultDto {
|
|
228
|
+
remoteName: string;
|
|
229
|
+
localId: string;
|
|
230
|
+
default?: RemoteResolveOwner;
|
|
231
|
+
fields: Record<string, RemoteResolveOwner>;
|
|
232
|
+
}
|
|
233
|
+
/** One conflicted field, with both sides and the pending choice, for the panel. */
|
|
234
|
+
export interface RemoteConflictFieldDto {
|
|
235
|
+
/** Display name (`title`, `status`, `attributes.story_points`, …). */
|
|
236
|
+
field: string;
|
|
237
|
+
/** The local (board) value; null means absent on the board. */
|
|
238
|
+
local: unknown;
|
|
239
|
+
/** The remote value, translated back to board vocabulary. */
|
|
240
|
+
remote: unknown;
|
|
241
|
+
/** The pending per-field winner, when one was already recorded. */
|
|
242
|
+
chosen?: RemoteResolveOwner;
|
|
243
|
+
}
|
|
244
|
+
/** The conflict detail for one document, served to the side panel (LP-346). */
|
|
245
|
+
export interface RemoteConflictDto {
|
|
246
|
+
remoteName: string;
|
|
247
|
+
localId: string;
|
|
248
|
+
remoteId: string;
|
|
249
|
+
/** Human-readable key, e.g. `acme/payments#418`. */
|
|
250
|
+
remoteKey: string;
|
|
251
|
+
/** Full URL to the remote issue; empty when the link recorded none. */
|
|
252
|
+
remoteUrl: string;
|
|
253
|
+
/** The fields in conflict, each with both values and the pending choice. */
|
|
254
|
+
fields: RemoteConflictFieldDto[];
|
|
255
|
+
/** A pending whole-document winner, when one was recorded. */
|
|
256
|
+
default?: RemoteResolveOwner;
|
|
257
|
+
}
|
|
258
|
+
/** One non-secret connection key a provider asks for. */
|
|
259
|
+
export interface RemoteConnectionFieldDto {
|
|
260
|
+
name: string;
|
|
261
|
+
type: 'string' | 'boolean';
|
|
262
|
+
/** False for a key the provider defaults for itself. */
|
|
263
|
+
required: boolean;
|
|
264
|
+
/** A worked example, shown beside the field. */
|
|
265
|
+
example?: string;
|
|
266
|
+
}
|
|
267
|
+
/** One credential key — stored beside the board, never in config.yml. */
|
|
268
|
+
export interface RemoteCredentialFieldDto {
|
|
269
|
+
key: string;
|
|
270
|
+
/** The platform's conventional env var, which satisfies the key as well. */
|
|
271
|
+
env?: string;
|
|
272
|
+
/** True when the value may be shown while typed (an account email); otherwise masked. */
|
|
273
|
+
visible: boolean;
|
|
274
|
+
}
|
|
275
|
+
/** Everything a connect form needs to know about one provider. */
|
|
276
|
+
export interface RemoteProviderDto {
|
|
277
|
+
name: string;
|
|
278
|
+
connection: RemoteConnectionFieldDto[];
|
|
279
|
+
credentials: RemoteCredentialFieldDto[];
|
|
280
|
+
/** The page where this credential is created. */
|
|
281
|
+
credentialUrl?: string;
|
|
282
|
+
/** What to create, and with what access. */
|
|
283
|
+
credentialHint?: string;
|
|
284
|
+
/** Keys only part of a mapping needs, and what breaks without them. */
|
|
285
|
+
conditional: Array<{
|
|
286
|
+
key: string;
|
|
287
|
+
needs: string;
|
|
288
|
+
why: string;
|
|
289
|
+
}>;
|
|
290
|
+
}
|
|
291
|
+
/** Where one credential key's value comes from. Never the value itself. */
|
|
292
|
+
export interface RemoteCredentialStateDto {
|
|
293
|
+
key: string;
|
|
294
|
+
env?: string;
|
|
295
|
+
/** e.g. `.lpm/credentials.json` or `$JIRA_API_TOKEN`; absent when nothing holds a value. */
|
|
296
|
+
source?: string;
|
|
297
|
+
/** The `${VAR}` name config.yml points at, when it points at one. */
|
|
298
|
+
reference?: string;
|
|
299
|
+
}
|
|
300
|
+
/** `POST /api/remotes` — declare a remote and store its credential. */
|
|
301
|
+
export interface RemoteConnectRequestDto {
|
|
302
|
+
name: string;
|
|
303
|
+
provider: string;
|
|
304
|
+
/** Non-secret connection values; a blank is not given. */
|
|
305
|
+
connection?: Record<string, string | boolean>;
|
|
306
|
+
scope?: string;
|
|
307
|
+
/** Credential values; a blank is skipped. */
|
|
308
|
+
credentials?: Record<string, string>;
|
|
309
|
+
/** Replace a remote of the same name — its mapping is drafted again. */
|
|
310
|
+
force?: boolean;
|
|
311
|
+
}
|
|
312
|
+
export interface RemoteConnectResultDto {
|
|
313
|
+
name: string;
|
|
314
|
+
provider: string;
|
|
315
|
+
target: string;
|
|
316
|
+
replaced: boolean;
|
|
317
|
+
/** Decisions the drafted mapping could not make on its own. */
|
|
318
|
+
markers: Array<{
|
|
319
|
+
path: string;
|
|
320
|
+
question: string;
|
|
321
|
+
}>;
|
|
322
|
+
/** Credential keys stored by this call. */
|
|
323
|
+
stored: string[];
|
|
324
|
+
credentials: RemoteCredentialStateDto[];
|
|
325
|
+
}
|
|
326
|
+
/** `GET /api/remotes/:name/connection` — a declared remote as an edit form shows it. Holds no secret. */
|
|
327
|
+
export interface RemoteConnectionDto {
|
|
328
|
+
name: string;
|
|
329
|
+
provider: string;
|
|
330
|
+
scope: string | null;
|
|
331
|
+
/** Non-secret connection values only. */
|
|
332
|
+
connection: Record<string, string | boolean>;
|
|
333
|
+
credentials: RemoteCredentialStateDto[];
|
|
334
|
+
/** How many documents this remote already mirrors — a remote with twins is not re-pointed. */
|
|
335
|
+
linked: number;
|
|
336
|
+
}
|
|
337
|
+
/** `PUT /api/remotes/:name/connection`. A blank removes an optional key; `false` removes a switch. */
|
|
338
|
+
export interface RemoteConnectionUpdateDto {
|
|
339
|
+
connection: Record<string, string | boolean>;
|
|
340
|
+
}
|
|
341
|
+
/** `PUT /api/remotes/:name/credentials`. A blank keeps what is there. */
|
|
342
|
+
export interface RemoteCredentialsRequestDto {
|
|
343
|
+
credentials: Record<string, string>;
|
|
344
|
+
}
|
|
345
|
+
export interface RemoteCredentialsResultDto {
|
|
346
|
+
stored: string[];
|
|
347
|
+
credentials: RemoteCredentialStateDto[];
|
|
348
|
+
}
|
|
349
|
+
/** A value the remote offered for a connection key. */
|
|
350
|
+
export interface RemoteCandidateDto {
|
|
351
|
+
key: string;
|
|
352
|
+
value: string;
|
|
353
|
+
label: string;
|
|
354
|
+
}
|
|
355
|
+
/** A connection key the remote answered in several ways, or not at all. */
|
|
356
|
+
export interface RemoteConnectionQuestionDto {
|
|
357
|
+
key: string;
|
|
358
|
+
why: string;
|
|
359
|
+
candidates: RemoteCandidateDto[];
|
|
360
|
+
}
|
|
361
|
+
export interface RemoteReconcileEntryDto {
|
|
362
|
+
boardKey: string;
|
|
363
|
+
claimed: string;
|
|
364
|
+
resolved?: string;
|
|
365
|
+
verdict: 'ok' | 'renamed' | 'unresolved';
|
|
366
|
+
}
|
|
367
|
+
export interface RemoteReconcileBlockDto {
|
|
368
|
+
entries: RemoteReconcileEntryDto[];
|
|
369
|
+
/** The remote's own names — the options for an unresolved entry. */
|
|
370
|
+
candidates: string[];
|
|
371
|
+
}
|
|
372
|
+
/** `POST /api/remotes/:name/inspect` — what asking the remote about itself found and wrote. */
|
|
373
|
+
export interface RemoteInspectDto {
|
|
374
|
+
remoteName: string;
|
|
375
|
+
reachability?: {
|
|
376
|
+
reachable: boolean;
|
|
377
|
+
evidence: string;
|
|
378
|
+
};
|
|
379
|
+
/** The remote could not be reached; nothing after reachability was asked. */
|
|
380
|
+
stopped: boolean;
|
|
381
|
+
/** Keys the remote answered with exactly one value — written. */
|
|
382
|
+
found: RemoteCandidateDto[];
|
|
383
|
+
/** Keys the remote offered several values for — a person chooses. */
|
|
384
|
+
choices: RemoteConnectionQuestionDto[];
|
|
385
|
+
/** Keys nobody could answer. */
|
|
386
|
+
needed: RemoteConnectionQuestionDto[];
|
|
387
|
+
vocabulary?: {
|
|
388
|
+
types?: RemoteReconcileBlockDto;
|
|
389
|
+
statuses?: RemoteReconcileBlockDto;
|
|
390
|
+
};
|
|
391
|
+
/** True when the provider has no vocabulary to ask about (and the remote was reached). */
|
|
392
|
+
noVocabulary: boolean;
|
|
393
|
+
prerequisites?: {
|
|
394
|
+
labels: string[];
|
|
395
|
+
projectFields: number;
|
|
396
|
+
sprints: string[];
|
|
397
|
+
canListLabels: boolean;
|
|
398
|
+
};
|
|
399
|
+
/** config.yml lines this run changed. */
|
|
400
|
+
written: string[];
|
|
401
|
+
/** Nothing is left for a person to answer. */
|
|
402
|
+
ready: boolean;
|
|
403
|
+
}
|
|
404
|
+
/** `POST /api/remotes/:name/answers` — what a person chose. */
|
|
405
|
+
export interface RemoteInspectAnswersDto {
|
|
406
|
+
/** Discoverable connection keys only. */
|
|
407
|
+
connection?: Record<string, string>;
|
|
408
|
+
types?: Record<string, string>;
|
|
409
|
+
statuses?: Record<string, string>;
|
|
410
|
+
}
|
|
411
|
+
export interface RemoteInspectAnswersResultDto {
|
|
412
|
+
changed: string[];
|
|
413
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wire shapes for the remote routes (`/api/remotes/*`), served by
|
|
3
|
+
* `src/server/routes/remotes.ts` (LP-344).
|
|
4
|
+
*
|
|
5
|
+
* Import-free, like the rest of this folder: the server maps the remote
|
|
6
|
+
* layer's results onto these shapes, and the web app consumes them, neither
|
|
7
|
+
* importing the other. Credentials never appear here — the server resolves
|
|
8
|
+
* them itself and nothing on either side of the wire carries one.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=remote-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-api.js","sourceRoot":"","sources":["../../src/shared/remote-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The coverage report: what a remote mirrors, and what is missing *around* it.
|
|
3
|
+
*
|
|
4
|
+
* `remote-status.ts` answers "has anything drifted?" for the documents a
|
|
5
|
+
* remote already holds. This answers the question that comes before it — **is
|
|
6
|
+
* what the tracker holds a coherent piece of the plan?** Pushing one feature
|
|
7
|
+
* is an ordinary and supported thing to do (`docs/remote-sync.md` §7f: a plan
|
|
8
|
+
* is filed a piece at a time, and the shape heals), but nothing until now said
|
|
9
|
+
* what the piece was missing: its stories, the epic above it, the sprint it is
|
|
10
|
+
* scheduled into, the work it waits on.
|
|
11
|
+
*
|
|
12
|
+
* The unit is a **gap** — a document the remote does not hold that is related
|
|
13
|
+
* to one it does — and a gap always names *why* it matters, because the reason
|
|
14
|
+
* is what a person is deciding about. A missing container means the work is
|
|
15
|
+
* filed at the tracker's root; a missing sprint means the issues in it were
|
|
16
|
+
* filed unscheduled; a missing blocker means a dependency edge was dropped for
|
|
17
|
+
* want of a second end. Those consequences are not decoration: they are the
|
|
18
|
+
* difference between "63 documents are not pushed" — which is the status
|
|
19
|
+
* report's `unlinked` bucket and tells nobody anything — and "these four are
|
|
20
|
+
* why the tracker's copy of your plan is wrong".
|
|
21
|
+
*
|
|
22
|
+
* Pure data, no imports beyond this folder's own types: the report is computed
|
|
23
|
+
* by `src/remote/coverage.ts` (offline — the board and the link store are all
|
|
24
|
+
* it reads, so no tracker is called and nothing is written), served as JSON,
|
|
25
|
+
* and rendered by the web app. The relation table below travels with it so
|
|
26
|
+
* every reader says the same sentence about the same gap.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* How an unmirrored document relates to the mirror — the reason it is a gap.
|
|
30
|
+
*
|
|
31
|
+
* Read from the *gap's* point of view: `parent` means this document is the
|
|
32
|
+
* container of something mirrored, `child` that it sits inside something
|
|
33
|
+
* mirrored, `blocker` that mirrored work waits on it.
|
|
34
|
+
*/
|
|
35
|
+
export type CoverageRelation = 'parent' | 'child' | 'period' | 'blocker' | 'blocked';
|
|
36
|
+
/** Anchors are sampled rather than listed in full: one sprint can hold hundreds. */
|
|
37
|
+
export declare const COVERAGE_ANCHOR_LIMIT = 5;
|
|
38
|
+
/** One reason a document is a gap, with the mirrored documents behind it. */
|
|
39
|
+
export interface CoverageReason {
|
|
40
|
+
relation: CoverageRelation;
|
|
41
|
+
/** Mirrored documents this gap relates to — at most `COVERAGE_ANCHOR_LIMIT`. */
|
|
42
|
+
anchors: string[];
|
|
43
|
+
/** How many there are in all; `anchors` may be a sample of them. */
|
|
44
|
+
count: number;
|
|
45
|
+
}
|
|
46
|
+
/** One document the remote does not hold, and why that shows. */
|
|
47
|
+
export interface CoverageGap {
|
|
48
|
+
id: string;
|
|
49
|
+
kind: 'issue' | 'period';
|
|
50
|
+
type: string;
|
|
51
|
+
title: string;
|
|
52
|
+
/** Every reason this document is a gap, in the table's order. */
|
|
53
|
+
reasons: CoverageReason[];
|
|
54
|
+
}
|
|
55
|
+
/** The gap ids for one relation, so a reader can offer "select all of these". */
|
|
56
|
+
export interface CoverageGroup {
|
|
57
|
+
relation: CoverageRelation;
|
|
58
|
+
ids: string[];
|
|
59
|
+
}
|
|
60
|
+
/** What a remote mirrors, and what is missing around it. */
|
|
61
|
+
export interface RemoteCoverageReport {
|
|
62
|
+
remote: {
|
|
63
|
+
name: string;
|
|
64
|
+
provider: string;
|
|
65
|
+
/** The connection value that names where the issues live. */
|
|
66
|
+
target: string;
|
|
67
|
+
};
|
|
68
|
+
/** Documents this remote holds a twin of. */
|
|
69
|
+
mirrored: number;
|
|
70
|
+
/** Documents in this remote's scope it could hold — the denominator. */
|
|
71
|
+
total: number;
|
|
72
|
+
/** Unmirrored documents related to mirrored ones, worst first. */
|
|
73
|
+
gaps: CoverageGap[];
|
|
74
|
+
/** The same gaps by relation, in the table's order; empty groups are omitted. */
|
|
75
|
+
groups: CoverageGroup[];
|
|
76
|
+
/** Gaps deliberately decoupled — reported, never offered for pushing. */
|
|
77
|
+
decoupled: string[];
|
|
78
|
+
/** Gaps outside this remote's scope — it cannot file them, and says so. */
|
|
79
|
+
outOfScope: string[];
|
|
80
|
+
/**
|
|
81
|
+
* True when this remote files periods as documents of their own. When it is
|
|
82
|
+
* false a period has no twin to be missing: the schedule rides the managed
|
|
83
|
+
* block on the issue, so no `period` gap is ever reported.
|
|
84
|
+
*/
|
|
85
|
+
filesPeriods: boolean;
|
|
86
|
+
}
|
|
87
|
+
/** The heading and the consequence one relation is described by. */
|
|
88
|
+
export interface CoverageRelationInfo {
|
|
89
|
+
relation: CoverageRelation;
|
|
90
|
+
/** What these documents are, as a group heading. */
|
|
91
|
+
label: string;
|
|
92
|
+
/** What the tracker's copy of the plan is missing while they are unfiled. */
|
|
93
|
+
consequence: string;
|
|
94
|
+
/** The same thing about one document, for a per-document panel. */
|
|
95
|
+
short: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The relations, in the order a reader should be shown them: the ones that
|
|
99
|
+
* make the filed plan *wrong* first, the ones that make it *incomplete* after.
|
|
100
|
+
*
|
|
101
|
+
* A missing container is first because everything mirrored beneath it is filed
|
|
102
|
+
* at the tracker's root, which is the failure people report as "the stories
|
|
103
|
+
* are not under the features". `blocked` is last because it is the widest — on
|
|
104
|
+
* a board whose foundations are mirrored, a great deal of unstarted work waits
|
|
105
|
+
* on them, and that is ordinary rather than wrong.
|
|
106
|
+
*/
|
|
107
|
+
export declare const COVERAGE_RELATIONS: readonly CoverageRelationInfo[];
|
|
108
|
+
/** The table entry for one relation. */
|
|
109
|
+
export declare function coverageRelationInfo(relation: CoverageRelation): CoverageRelationInfo;
|
|
110
|
+
/**
|
|
111
|
+
* The gaps around one document — what the panel shows for the selected node.
|
|
112
|
+
*
|
|
113
|
+
* Read from the report rather than computed again, so the panel and the drawer
|
|
114
|
+
* cannot disagree about what is missing. A document with no gaps around it
|
|
115
|
+
* answers `[]`, which is also the answer for one the report knows nothing
|
|
116
|
+
* about.
|
|
117
|
+
*/
|
|
118
|
+
export declare function gapsAround(report: RemoteCoverageReport, id: string): CoverageGap[];
|
|
119
|
+
/** One line for a header or a notice: `12 of 74 mirrored · 9 missing`. */
|
|
120
|
+
export declare function summarizeCoverage(report: RemoteCoverageReport): string;
|