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":"types.js","sourceRoot":"","sources":["../../../../src/remote/providers/jira/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jira's conventional vocabulary — what a board word is called on a Jira
|
|
3
|
+
* project nobody has looked at yet.
|
|
4
|
+
*
|
|
5
|
+
* Jira's issue types and workflow statuses are the project's own, so they can
|
|
6
|
+
* only be *known* by asking (`lpm remote setup`, and the push preflight, which
|
|
7
|
+
* validates the mapping against the live type scheme). What they conventionally
|
|
8
|
+
* *are* is not a mystery: a Jira Scrum project — team-managed or company-managed
|
|
9
|
+
* — ships Epic / Story / Task / Bug / Sub-task and a To Do → In Progress → Done
|
|
10
|
+
* workflow. That convention is what this file states.
|
|
11
|
+
*
|
|
12
|
+
* ## Types: a name Jira itself uses, then the level's role
|
|
13
|
+
*
|
|
14
|
+
* A board word Jira has its own word for is answered by the table, at whatever
|
|
15
|
+
* depth it sits: a board's `bug` is Jira's Bug under a story or at the top.
|
|
16
|
+
* Everything else is answered by what the *level* is for, which the board has
|
|
17
|
+
* already written down as `atomic`:
|
|
18
|
+
*
|
|
19
|
+
* - a level **inside** an atomic one is a checklist item inside one job, which
|
|
20
|
+
* is precisely Jira's `Sub-task` (hierarchy level −1);
|
|
21
|
+
* - the **work level** itself — atomic, or the deepest level on a board that
|
|
22
|
+
* declared none — is Jira's `Task` (level 0). `Task` rather than `Story`,
|
|
23
|
+
* because Story is the word for work that *is* a story and the table already
|
|
24
|
+
* answers that; Task is Jira's generic work item and is present in every
|
|
25
|
+
* default scheme, Kanban projects included;
|
|
26
|
+
* - **everything above** the work level is Jira's `Epic` (level 1).
|
|
27
|
+
*
|
|
28
|
+
* Depth alone could not do this. On `epic › feature › story` the deepest level
|
|
29
|
+
* is the work; on `… › user_story › sub_task` it is a checklist. `atomic` is
|
|
30
|
+
* where the board says which.
|
|
31
|
+
*
|
|
32
|
+
* Several board levels collapse onto `Epic` on a board deeper than Jira's three,
|
|
33
|
+
* which is correct rather than lossy: the extra levels ride the managed block
|
|
34
|
+
* (rung 4) whatever they are called, and a *pull* still separates two board
|
|
35
|
+
* types that map to one remote name when they sit at different depths
|
|
36
|
+
* (`resolveBoardType` narrows by depth). What does not separate is two types at
|
|
37
|
+
* the *same* depth — `test` and `review` both becoming Task — and `lpm check`
|
|
38
|
+
* reports that pair rather than leaving it to be found on a pull.
|
|
39
|
+
*
|
|
40
|
+
* ## Statuses: the two flags the engine itself reads
|
|
41
|
+
*
|
|
42
|
+
* `terminal` is the board's own definition of finished and `active` its
|
|
43
|
+
* definition of in flight, so those are the two a convention may lean on. A
|
|
44
|
+
* board's five columns are not five Jira statuses — Jira's default workflow has
|
|
45
|
+
* three — so `Backlog` and `Ready` both become `To Do`. That collapse is a
|
|
46
|
+
* property of Jira's default workflow rather than of this table, and `lpm check`
|
|
47
|
+
* names the pair, because a pull cannot tell two board statuses apart when they
|
|
48
|
+
* share one remote state.
|
|
49
|
+
*/
|
|
50
|
+
import type { BoardStatusRole, BoardTypeRole, StandardVocabulary } from '../../vocabulary.js';
|
|
51
|
+
/** The conventional Jira issue type for one board type. */
|
|
52
|
+
export declare function jiraTypeFor(role: BoardTypeRole): string;
|
|
53
|
+
/** The conventional Jira workflow status for one board status. */
|
|
54
|
+
export declare function jiraStatusFor(role: BoardStatusRole): string;
|
|
55
|
+
export declare const jiraVocabulary: StandardVocabulary;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jira's conventional vocabulary — what a board word is called on a Jira
|
|
3
|
+
* project nobody has looked at yet.
|
|
4
|
+
*
|
|
5
|
+
* Jira's issue types and workflow statuses are the project's own, so they can
|
|
6
|
+
* only be *known* by asking (`lpm remote setup`, and the push preflight, which
|
|
7
|
+
* validates the mapping against the live type scheme). What they conventionally
|
|
8
|
+
* *are* is not a mystery: a Jira Scrum project — team-managed or company-managed
|
|
9
|
+
* — ships Epic / Story / Task / Bug / Sub-task and a To Do → In Progress → Done
|
|
10
|
+
* workflow. That convention is what this file states.
|
|
11
|
+
*
|
|
12
|
+
* ## Types: a name Jira itself uses, then the level's role
|
|
13
|
+
*
|
|
14
|
+
* A board word Jira has its own word for is answered by the table, at whatever
|
|
15
|
+
* depth it sits: a board's `bug` is Jira's Bug under a story or at the top.
|
|
16
|
+
* Everything else is answered by what the *level* is for, which the board has
|
|
17
|
+
* already written down as `atomic`:
|
|
18
|
+
*
|
|
19
|
+
* - a level **inside** an atomic one is a checklist item inside one job, which
|
|
20
|
+
* is precisely Jira's `Sub-task` (hierarchy level −1);
|
|
21
|
+
* - the **work level** itself — atomic, or the deepest level on a board that
|
|
22
|
+
* declared none — is Jira's `Task` (level 0). `Task` rather than `Story`,
|
|
23
|
+
* because Story is the word for work that *is* a story and the table already
|
|
24
|
+
* answers that; Task is Jira's generic work item and is present in every
|
|
25
|
+
* default scheme, Kanban projects included;
|
|
26
|
+
* - **everything above** the work level is Jira's `Epic` (level 1).
|
|
27
|
+
*
|
|
28
|
+
* Depth alone could not do this. On `epic › feature › story` the deepest level
|
|
29
|
+
* is the work; on `… › user_story › sub_task` it is a checklist. `atomic` is
|
|
30
|
+
* where the board says which.
|
|
31
|
+
*
|
|
32
|
+
* Several board levels collapse onto `Epic` on a board deeper than Jira's three,
|
|
33
|
+
* which is correct rather than lossy: the extra levels ride the managed block
|
|
34
|
+
* (rung 4) whatever they are called, and a *pull* still separates two board
|
|
35
|
+
* types that map to one remote name when they sit at different depths
|
|
36
|
+
* (`resolveBoardType` narrows by depth). What does not separate is two types at
|
|
37
|
+
* the *same* depth — `test` and `review` both becoming Task — and `lpm check`
|
|
38
|
+
* reports that pair rather than leaving it to be found on a pull.
|
|
39
|
+
*
|
|
40
|
+
* ## Statuses: the two flags the engine itself reads
|
|
41
|
+
*
|
|
42
|
+
* `terminal` is the board's own definition of finished and `active` its
|
|
43
|
+
* definition of in flight, so those are the two a convention may lean on. A
|
|
44
|
+
* board's five columns are not five Jira statuses — Jira's default workflow has
|
|
45
|
+
* three — so `Backlog` and `Ready` both become `To Do`. That collapse is a
|
|
46
|
+
* property of Jira's default workflow rather than of this table, and `lpm check`
|
|
47
|
+
* names the pair, because a pull cannot tell two board statuses apart when they
|
|
48
|
+
* share one remote state.
|
|
49
|
+
*/
|
|
50
|
+
import { synonymFor } from '../../vocabulary.js';
|
|
51
|
+
/**
|
|
52
|
+
* Jira's own issue-type names, keyed by the normalized board word that means
|
|
53
|
+
* them. Deliberately only the words Jira has a *distinct* type for: `task` and
|
|
54
|
+
* `chore` are absent so the level's role decides, which is what turns a Kanban
|
|
55
|
+
* board's `task` under an atomic `story` into a real Jira Sub-task rather than a
|
|
56
|
+
* second top-level Task with its parent in the managed block.
|
|
57
|
+
*/
|
|
58
|
+
const TYPE_SYNONYMS = {
|
|
59
|
+
epic: 'Epic',
|
|
60
|
+
story: 'Story',
|
|
61
|
+
userstory: 'Story',
|
|
62
|
+
bug: 'Bug',
|
|
63
|
+
defect: 'Bug',
|
|
64
|
+
subtask: 'Sub-task',
|
|
65
|
+
subitem: 'Sub-task',
|
|
66
|
+
};
|
|
67
|
+
/** The conventional Jira issue type for one board type. */
|
|
68
|
+
export function jiraTypeFor(role) {
|
|
69
|
+
const synonym = synonymFor(TYPE_SYNONYMS, role.name);
|
|
70
|
+
if (synonym !== undefined)
|
|
71
|
+
return synonym;
|
|
72
|
+
if (role.insideUnit)
|
|
73
|
+
return 'Sub-task';
|
|
74
|
+
if (role.atomic || role.leaf)
|
|
75
|
+
return 'Task';
|
|
76
|
+
return 'Epic';
|
|
77
|
+
}
|
|
78
|
+
/** The conventional Jira workflow status for one board status. */
|
|
79
|
+
export function jiraStatusFor(role) {
|
|
80
|
+
if (role.terminal)
|
|
81
|
+
return 'Done';
|
|
82
|
+
if (role.active)
|
|
83
|
+
return 'In Progress';
|
|
84
|
+
return 'To Do';
|
|
85
|
+
}
|
|
86
|
+
export const jiraVocabulary = {
|
|
87
|
+
typeFor: jiraTypeFor,
|
|
88
|
+
statusFor: jiraStatusFor,
|
|
89
|
+
describe: "Jira's default Scrum vocabulary (Epic / Story / Task / Bug / Sub-task, To Do → In Progress → Done)",
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=vocabulary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../../../../src/remote/providers/jira/vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,aAAa,GAAqC;IACtD,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,OAAO;IAClB,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,UAAU;CACpB,CAAC;AAEF,2DAA2D;AAC3D,MAAM,UAAU,WAAW,CAAC,IAAmB;IAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC1C,IAAI,IAAI,CAAC,UAAU;QAAE,OAAO,UAAU,CAAC;IACvC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,aAAa,CAAC,IAAqB;IACjD,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;IACjC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,aAAa,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,OAAO,EAAE,WAAW;IACpB,SAAS,EAAE,aAAa;IACxB,QAAQ,EACN,oGAAoG;CACvG,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The jsonfile provider's own slice of a remote declaration.
|
|
3
|
+
*
|
|
4
|
+
* Core validates the frame — that a remote has a `provider`, a scope, a
|
|
5
|
+
* direction and two policies. This schema validates the contents of the
|
|
6
|
+
* `connection` and `mapping` blocks for the JSON-file tracker specifically,
|
|
7
|
+
* and is called when the remote is opened (LP-259), exactly as the GitHub /
|
|
8
|
+
* Linear / Jira schemas are.
|
|
9
|
+
*
|
|
10
|
+
* The JSON-file tracker has a native `type` field, a native `status` field and
|
|
11
|
+
* a native `depends_on` edge list — it is the minimum a tracker can be. So the
|
|
12
|
+
* mapping is the short one:
|
|
13
|
+
*
|
|
14
|
+
* - `types` board type → `{ type: <name> }` (the native type field),
|
|
15
|
+
* plus optional `labels` — a human-readable type label, kept
|
|
16
|
+
* alongside the native field so the sync's label claim still
|
|
17
|
+
* has an exact label to reconcile (and a person reading the
|
|
18
|
+
* file sees the type without knowing the vocabulary).
|
|
19
|
+
* - `statuses` board status id → the native status name(s) plus whether the
|
|
20
|
+
* status is terminal (`closed`). The status name *is* the
|
|
21
|
+
* field value, exactly as Linear's workflow-state name is.
|
|
22
|
+
* - `attributes` board attribute name → the label prefix carrying its value
|
|
23
|
+
* (rung 3) — the file has no typed custom-field registry.
|
|
24
|
+
*
|
|
25
|
+
* There is no `accounts` and no `periods` mapping: the file tracker holds an
|
|
26
|
+
* arbitrary `assignee` string (which the account mapping could later resolve)
|
|
27
|
+
* and no native period container, so both ride the ladder, not this schema.
|
|
28
|
+
*/
|
|
29
|
+
import { z } from 'zod';
|
|
30
|
+
export declare const jsonfileConfigSchema: z.ZodObject<{
|
|
31
|
+
connection: z.ZodObject<{
|
|
32
|
+
file: z.ZodString;
|
|
33
|
+
}, z.core.$strip>;
|
|
34
|
+
mapping: z.ZodObject<{
|
|
35
|
+
types: z.ZodPipe<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodObject<{
|
|
36
|
+
remote: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
37
|
+
type: z.ZodOptional<z.ZodString>;
|
|
38
|
+
labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
39
|
+
}, z.core.$strip>]>>>, z.ZodTransform<import("../../mapping.js").TypeMappings, Record<string, string | string[] | {
|
|
40
|
+
remote?: string | string[] | undefined;
|
|
41
|
+
type?: string | undefined;
|
|
42
|
+
labels?: string[] | undefined;
|
|
43
|
+
}>>>;
|
|
44
|
+
statuses: z.ZodPipe<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodObject<{
|
|
45
|
+
remote: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
|
|
46
|
+
push: z.ZodOptional<z.ZodString>;
|
|
47
|
+
closed: z.ZodOptional<z.ZodBoolean>;
|
|
48
|
+
}, z.core.$strip>]>>>, z.ZodTransform<import("../../mapping.js").StatusMappings, Record<string, string | string[] | {
|
|
49
|
+
remote: string | string[];
|
|
50
|
+
push?: string | undefined;
|
|
51
|
+
closed?: boolean | undefined;
|
|
52
|
+
}>>>;
|
|
53
|
+
attributes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
54
|
+
}, z.core.$strip>;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
/** The validated shape of a jsonfile remote declaration. */
|
|
57
|
+
export type JsonfileConfig = z.infer<typeof jsonfileConfigSchema>;
|
|
58
|
+
/** The `mapping` block, after validation. */
|
|
59
|
+
export type JsonfileMapping = JsonfileConfig['mapping'];
|
|
60
|
+
/** The `connection` block, after validation. */
|
|
61
|
+
export type JsonfileConnection = JsonfileConfig['connection'];
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The jsonfile provider's own slice of a remote declaration.
|
|
3
|
+
*
|
|
4
|
+
* Core validates the frame — that a remote has a `provider`, a scope, a
|
|
5
|
+
* direction and two policies. This schema validates the contents of the
|
|
6
|
+
* `connection` and `mapping` blocks for the JSON-file tracker specifically,
|
|
7
|
+
* and is called when the remote is opened (LP-259), exactly as the GitHub /
|
|
8
|
+
* Linear / Jira schemas are.
|
|
9
|
+
*
|
|
10
|
+
* The JSON-file tracker has a native `type` field, a native `status` field and
|
|
11
|
+
* a native `depends_on` edge list — it is the minimum a tracker can be. So the
|
|
12
|
+
* mapping is the short one:
|
|
13
|
+
*
|
|
14
|
+
* - `types` board type → `{ type: <name> }` (the native type field),
|
|
15
|
+
* plus optional `labels` — a human-readable type label, kept
|
|
16
|
+
* alongside the native field so the sync's label claim still
|
|
17
|
+
* has an exact label to reconcile (and a person reading the
|
|
18
|
+
* file sees the type without knowing the vocabulary).
|
|
19
|
+
* - `statuses` board status id → the native status name(s) plus whether the
|
|
20
|
+
* status is terminal (`closed`). The status name *is* the
|
|
21
|
+
* field value, exactly as Linear's workflow-state name is.
|
|
22
|
+
* - `attributes` board attribute name → the label prefix carrying its value
|
|
23
|
+
* (rung 3) — the file has no typed custom-field registry.
|
|
24
|
+
*
|
|
25
|
+
* There is no `accounts` and no `periods` mapping: the file tracker holds an
|
|
26
|
+
* arbitrary `assignee` string (which the account mapping could later resolve)
|
|
27
|
+
* and no native period container, so both ride the ladder, not this schema.
|
|
28
|
+
*/
|
|
29
|
+
import { z } from 'zod';
|
|
30
|
+
import { normalizeStatusMappings, normalizeTypeMappings } from '../../mapping.js';
|
|
31
|
+
/**
|
|
32
|
+
* One `mapping.types` value: the remote name this board type becomes, as a
|
|
33
|
+
* bare string (`user_story: Story`) or the object form
|
|
34
|
+
* (`user_story: { remote: Story }`). One name, not a list — a board type and
|
|
35
|
+
* a remote type are one-to-one, unlike a status, where several remote states
|
|
36
|
+
* can mean one board status.
|
|
37
|
+
*
|
|
38
|
+
* The superseded spellings (`type`, `labels`, and a list) are still accepted
|
|
39
|
+
* and folded to the single name by `normalizeTypeMappings`, so a board written
|
|
40
|
+
* against an older shape keeps working.
|
|
41
|
+
*/
|
|
42
|
+
const typeEntrySchema = z.union([
|
|
43
|
+
z.string().min(1),
|
|
44
|
+
z.array(z.string().min(1)).min(1),
|
|
45
|
+
z.object({
|
|
46
|
+
remote: z.union([z.string().min(1), z.array(z.string().min(1)).min(1)]).optional(),
|
|
47
|
+
type: z.string().min(1).optional(),
|
|
48
|
+
labels: z.array(z.string().min(1)).min(1).optional(),
|
|
49
|
+
}),
|
|
50
|
+
]);
|
|
51
|
+
/** One `mapping.statuses` value — the same three spellings the other providers accept. */
|
|
52
|
+
const statusEntrySchema = z.union([
|
|
53
|
+
z.string().min(1),
|
|
54
|
+
z.array(z.string().min(1)).min(1),
|
|
55
|
+
z.object({
|
|
56
|
+
remote: z.union([z.string().min(1), z.array(z.string().min(1)).min(1)]),
|
|
57
|
+
push: z.string().min(1).optional(),
|
|
58
|
+
closed: z.boolean().optional(),
|
|
59
|
+
}),
|
|
60
|
+
]);
|
|
61
|
+
export const jsonfileConfigSchema = z.object({
|
|
62
|
+
connection: z.object({
|
|
63
|
+
/**
|
|
64
|
+
* The path to the JSON file that is the tracker. A missing file is an
|
|
65
|
+
* empty tracker; the first sync creates it.
|
|
66
|
+
*/
|
|
67
|
+
file: z
|
|
68
|
+
.string({ error: 'connection.file is required' })
|
|
69
|
+
.min(1, 'connection.file is required'),
|
|
70
|
+
}),
|
|
71
|
+
mapping: z.object({
|
|
72
|
+
types: z
|
|
73
|
+
.record(z.string(), typeEntrySchema)
|
|
74
|
+
.default({})
|
|
75
|
+
.transform((entries) => normalizeTypeMappings(entries)),
|
|
76
|
+
statuses: z
|
|
77
|
+
.record(z.string(), statusEntrySchema)
|
|
78
|
+
.default({})
|
|
79
|
+
.transform((entries) => normalizeStatusMappings(entries)),
|
|
80
|
+
attributes: z.record(z.string(), z.string()).default({}),
|
|
81
|
+
}),
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/remote/providers/jsonfile/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The jsonfile connector — a live connection to one local JSON file, driven by
|
|
3
|
+
* the executor (LP-490).
|
|
4
|
+
*
|
|
5
|
+
* This is the one connector in the codebase that does **no network I/O**: the
|
|
6
|
+
* file is the whole tracker. That is what makes the provider a genuinely
|
|
7
|
+
* useful test/demo target — no token, no account, no server to run — and it is
|
|
8
|
+
* also the proof that the provider contract is not HTTP-shaped: the executor
|
|
9
|
+
* drives it through `create` / `update` / `delete` / `link` / `comment`, and
|
|
10
|
+
* this file answers them with `node:fs`.
|
|
11
|
+
*
|
|
12
|
+
* Because the file can hard-delete, `delete` removes the issue rather than
|
|
13
|
+
* closing it (the one thing GitHub cannot do, and the one capability this
|
|
14
|
+
* provider advertises over it). A `link` / `unlink` adds / removes a native
|
|
15
|
+
* `depends_on` edge. Everything is a whole-file read-modify-write, which is
|
|
16
|
+
* fine for a demo tracker and deliberately not made concurrent.
|
|
17
|
+
*/
|
|
18
|
+
import type { Connector, ConnectorContext } from '../../provider.js';
|
|
19
|
+
/**
|
|
20
|
+
* Build a jsonfile connector from a validated connection block.
|
|
21
|
+
*
|
|
22
|
+
* `file` is required (the schema enforces it); there is no token and no
|
|
23
|
+
* `base_url`. The file is read on every call and rewritten on every write, so
|
|
24
|
+
* two processes pointed at the same file would race — the board lock does not
|
|
25
|
+
* cover the file, and a demo tracker does not need it to.
|
|
26
|
+
*
|
|
27
|
+
* A **relative** `file` is resolved against the board root, not the process's
|
|
28
|
+
* working directory. The default path `lpm remote add` writes is relative and
|
|
29
|
+
* lives under `.lpm/` — resolving it from the cwd would make `lpm remote push`
|
|
30
|
+
* find the tracker from the repository root and miss it from every
|
|
31
|
+
* subdirectory, which is the kind of "works on my machine" a path nobody typed
|
|
32
|
+
* must not have. An absolute `file` is used exactly as written.
|
|
33
|
+
*/
|
|
34
|
+
export declare function jsonfileConnector(connection: Record<string, unknown>, _mapping?: Record<string, unknown>, context?: ConnectorContext): Connector;
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The jsonfile connector — a live connection to one local JSON file, driven by
|
|
3
|
+
* the executor (LP-490).
|
|
4
|
+
*
|
|
5
|
+
* This is the one connector in the codebase that does **no network I/O**: the
|
|
6
|
+
* file is the whole tracker. That is what makes the provider a genuinely
|
|
7
|
+
* useful test/demo target — no token, no account, no server to run — and it is
|
|
8
|
+
* also the proof that the provider contract is not HTTP-shaped: the executor
|
|
9
|
+
* drives it through `create` / `update` / `delete` / `link` / `comment`, and
|
|
10
|
+
* this file answers them with `node:fs`.
|
|
11
|
+
*
|
|
12
|
+
* Because the file can hard-delete, `delete` removes the issue rather than
|
|
13
|
+
* closing it (the one thing GitHub cannot do, and the one capability this
|
|
14
|
+
* provider advertises over it). A `link` / `unlink` adds / removes a native
|
|
15
|
+
* `depends_on` edge. Everything is a whole-file read-modify-write, which is
|
|
16
|
+
* fine for a demo tracker and deliberately not made concurrent.
|
|
17
|
+
*/
|
|
18
|
+
import path from 'node:path';
|
|
19
|
+
import { BoardError } from '../../../core/errors.js';
|
|
20
|
+
import { reconcileLabels } from '../../labels.js';
|
|
21
|
+
import { nextCommentId, readJsonStore, writeJsonStore, } from './store.js';
|
|
22
|
+
/** A stored issue as a wire record — the shape `get` / `list` return. */
|
|
23
|
+
function recordOf(issue) {
|
|
24
|
+
return {
|
|
25
|
+
number: issue.number,
|
|
26
|
+
title: issue.title,
|
|
27
|
+
body: issue.body,
|
|
28
|
+
status: issue.status,
|
|
29
|
+
type: issue.type,
|
|
30
|
+
labels: issue.labels,
|
|
31
|
+
assignee: issue.assignee,
|
|
32
|
+
depends_on: issue.depends_on,
|
|
33
|
+
comments: issue.comments,
|
|
34
|
+
created_at: issue.created_at,
|
|
35
|
+
updated_at: issue.updated_at,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** A stored issue → `ConnectorResult`, with the post-write record (LP-288). */
|
|
39
|
+
function resultOf(issue, file) {
|
|
40
|
+
return {
|
|
41
|
+
remoteId: String(issue.number),
|
|
42
|
+
remoteKey: `#${issue.number}`,
|
|
43
|
+
remoteUrl: `file://${file}#${issue.number}`,
|
|
44
|
+
remoteRev: issue.updated_at,
|
|
45
|
+
record: recordOf(issue),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Build a jsonfile connector from a validated connection block.
|
|
50
|
+
*
|
|
51
|
+
* `file` is required (the schema enforces it); there is no token and no
|
|
52
|
+
* `base_url`. The file is read on every call and rewritten on every write, so
|
|
53
|
+
* two processes pointed at the same file would race — the board lock does not
|
|
54
|
+
* cover the file, and a demo tracker does not need it to.
|
|
55
|
+
*
|
|
56
|
+
* A **relative** `file` is resolved against the board root, not the process's
|
|
57
|
+
* working directory. The default path `lpm remote add` writes is relative and
|
|
58
|
+
* lives under `.lpm/` — resolving it from the cwd would make `lpm remote push`
|
|
59
|
+
* find the tracker from the repository root and miss it from every
|
|
60
|
+
* subdirectory, which is the kind of "works on my machine" a path nobody typed
|
|
61
|
+
* must not have. An absolute `file` is used exactly as written.
|
|
62
|
+
*/
|
|
63
|
+
export function jsonfileConnector(connection, _mapping = {}, context) {
|
|
64
|
+
const conn = connection;
|
|
65
|
+
const root = context?.paths?.root;
|
|
66
|
+
const file = root !== undefined && !path.isAbsolute(conn.file) ? path.join(root, conn.file) : conn.file;
|
|
67
|
+
const load = () => readJsonStore(file);
|
|
68
|
+
const save = (store) => writeJsonStore(file, store);
|
|
69
|
+
const now = () => new Date().toISOString();
|
|
70
|
+
const requireIssue = (store, remoteId) => {
|
|
71
|
+
const issue = store.issues.find((entry) => entry.number === Number(remoteId));
|
|
72
|
+
if (!issue) {
|
|
73
|
+
throw new BoardError(`jsonfile: issue #${remoteId} not found in ${file}`, [
|
|
74
|
+
'The issue may have been deleted from the file by hand, or the file replaced.',
|
|
75
|
+
]);
|
|
76
|
+
}
|
|
77
|
+
return issue;
|
|
78
|
+
};
|
|
79
|
+
/** A no-op result for an idempotent edge/comment write that found nothing. */
|
|
80
|
+
const emptyResult = (remoteId) => ({
|
|
81
|
+
remoteId,
|
|
82
|
+
remoteKey: `#${remoteId}`,
|
|
83
|
+
remoteUrl: '',
|
|
84
|
+
remoteRev: '',
|
|
85
|
+
});
|
|
86
|
+
return {
|
|
87
|
+
name: 'jsonfile',
|
|
88
|
+
async create(request, _signal) {
|
|
89
|
+
const store = load();
|
|
90
|
+
const issue = {
|
|
91
|
+
number: store.next_number,
|
|
92
|
+
title: request.title ?? '',
|
|
93
|
+
body: typeof request.body === 'string' ? request.body : '',
|
|
94
|
+
status: typeof request.state === 'string' ? request.state : '',
|
|
95
|
+
type: typeof request.type === 'string' ? request.type : '',
|
|
96
|
+
labels: request.labels ?? [],
|
|
97
|
+
assignee: request.assignee ?? null,
|
|
98
|
+
depends_on: [],
|
|
99
|
+
comments: [],
|
|
100
|
+
created_at: now(),
|
|
101
|
+
updated_at: now(),
|
|
102
|
+
};
|
|
103
|
+
store.next_number += 1;
|
|
104
|
+
store.issues.push(issue);
|
|
105
|
+
save(store);
|
|
106
|
+
return resultOf(issue, file);
|
|
107
|
+
},
|
|
108
|
+
async update(remoteId, request, _signal) {
|
|
109
|
+
const store = load();
|
|
110
|
+
const issue = requireIssue(store, remoteId);
|
|
111
|
+
if (request.title !== undefined)
|
|
112
|
+
issue.title = request.title;
|
|
113
|
+
if (typeof request.body === 'string')
|
|
114
|
+
issue.body = request.body;
|
|
115
|
+
if (typeof request.state === 'string')
|
|
116
|
+
issue.status = request.state;
|
|
117
|
+
if (typeof request.type === 'string')
|
|
118
|
+
issue.type = request.type;
|
|
119
|
+
if (request.assignee !== undefined)
|
|
120
|
+
issue.assignee = request.assignee;
|
|
121
|
+
if (request.labels !== undefined) {
|
|
122
|
+
// Reconcile against the claim (LP-308): only the sync's own labels are
|
|
123
|
+
// added or removed, so a human's triage labels survive.
|
|
124
|
+
issue.labels =
|
|
125
|
+
request.labelClaim !== undefined
|
|
126
|
+
? reconcileLabels(issue.labels, request.labels, request.labelClaim)
|
|
127
|
+
: request.labels;
|
|
128
|
+
}
|
|
129
|
+
issue.updated_at = now();
|
|
130
|
+
save(store);
|
|
131
|
+
return resultOf(issue, file);
|
|
132
|
+
},
|
|
133
|
+
async delete(remoteId, _signal) {
|
|
134
|
+
const store = load();
|
|
135
|
+
const before = store.issues.length;
|
|
136
|
+
store.issues = store.issues.filter((entry) => entry.number !== Number(remoteId));
|
|
137
|
+
if (store.issues.length === before)
|
|
138
|
+
return emptyResult(remoteId); // already gone — idempotent
|
|
139
|
+
save(store);
|
|
140
|
+
return emptyResult(remoteId);
|
|
141
|
+
},
|
|
142
|
+
async get(remoteId) {
|
|
143
|
+
const store = load();
|
|
144
|
+
const issue = store.issues.find((entry) => entry.number === Number(remoteId));
|
|
145
|
+
return issue ? recordOf(issue) : null;
|
|
146
|
+
},
|
|
147
|
+
async resolve(key) {
|
|
148
|
+
const remoteId = key.startsWith('#') ? key.slice(1) : key;
|
|
149
|
+
const record = await this.get(remoteId);
|
|
150
|
+
if (record === null)
|
|
151
|
+
return null;
|
|
152
|
+
const issue = record;
|
|
153
|
+
return resultOf(issue, file);
|
|
154
|
+
},
|
|
155
|
+
describe(record) {
|
|
156
|
+
const number = record['number'];
|
|
157
|
+
const id = typeof number === 'number' || typeof number === 'string' ? String(number) : '';
|
|
158
|
+
return { remoteKey: `#${id}`, remoteUrl: `file://${file}#${id}` };
|
|
159
|
+
},
|
|
160
|
+
async list(opts) {
|
|
161
|
+
const store = load();
|
|
162
|
+
let issues = [...store.issues].sort((a, b) => a.number - b.number);
|
|
163
|
+
if (opts?.cursor) {
|
|
164
|
+
issues = issues.filter((entry) => entry.updated_at >= opts.cursor);
|
|
165
|
+
}
|
|
166
|
+
const records = issues.map(recordOf);
|
|
167
|
+
// A file is read in one go, so the listing is a single page.
|
|
168
|
+
opts?.onPage?.({ page: 1, records: records.length });
|
|
169
|
+
let cursor = null;
|
|
170
|
+
for (const record of records) {
|
|
171
|
+
if (typeof record['updated_at'] === 'string') {
|
|
172
|
+
const updated = record['updated_at'];
|
|
173
|
+
if (cursor === null || updated > cursor)
|
|
174
|
+
cursor = updated;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return { records, cursor };
|
|
178
|
+
},
|
|
179
|
+
async link(dependentRemoteId, dependencyRemoteId, _signal, kind) {
|
|
180
|
+
if (kind === 'relates')
|
|
181
|
+
return emptyResult(dependentRemoteId); // no native relate edge
|
|
182
|
+
const store = load();
|
|
183
|
+
const issue = requireIssue(store, dependentRemoteId);
|
|
184
|
+
const dependency = Number(dependencyRemoteId);
|
|
185
|
+
if (!issue.depends_on.includes(dependency))
|
|
186
|
+
issue.depends_on.push(dependency);
|
|
187
|
+
issue.updated_at = now();
|
|
188
|
+
save(store);
|
|
189
|
+
return resultOf(issue, file);
|
|
190
|
+
},
|
|
191
|
+
async unlink(dependentRemoteId, dependencyRemoteId, _signal, kind) {
|
|
192
|
+
if (kind === 'relates')
|
|
193
|
+
return emptyResult(dependentRemoteId);
|
|
194
|
+
const store = load();
|
|
195
|
+
const issue = requireIssue(store, dependentRemoteId);
|
|
196
|
+
issue.depends_on = issue.depends_on.filter((entry) => entry !== Number(dependencyRemoteId));
|
|
197
|
+
issue.updated_at = now();
|
|
198
|
+
save(store);
|
|
199
|
+
return resultOf(issue, file);
|
|
200
|
+
},
|
|
201
|
+
async comment(remoteId, body, _signal) {
|
|
202
|
+
const store = load();
|
|
203
|
+
const issue = requireIssue(store, remoteId);
|
|
204
|
+
const comment = { id: nextCommentId(store), body, author: '', created_at: now() };
|
|
205
|
+
issue.comments.push(comment);
|
|
206
|
+
issue.updated_at = now();
|
|
207
|
+
save(store);
|
|
208
|
+
return {
|
|
209
|
+
remoteId,
|
|
210
|
+
remoteKey: `#${remoteId}`,
|
|
211
|
+
remoteUrl: '',
|
|
212
|
+
remoteRev: issue.updated_at,
|
|
213
|
+
commentId: String(comment.id),
|
|
214
|
+
};
|
|
215
|
+
},
|
|
216
|
+
async listComments(remoteId, _signal) {
|
|
217
|
+
const store = load();
|
|
218
|
+
const issue = store.issues.find((entry) => entry.number === Number(remoteId));
|
|
219
|
+
return (issue?.comments ?? []).map((comment) => ({
|
|
220
|
+
id: String(comment.id),
|
|
221
|
+
author: comment.author,
|
|
222
|
+
createdAt: comment.created_at,
|
|
223
|
+
body: comment.body,
|
|
224
|
+
}));
|
|
225
|
+
},
|
|
226
|
+
async editComment(remoteId, commentId, body, _signal) {
|
|
227
|
+
const store = load();
|
|
228
|
+
const issue = requireIssue(store, remoteId);
|
|
229
|
+
const comment = issue.comments.find((entry) => entry.id === Number(commentId));
|
|
230
|
+
if (comment)
|
|
231
|
+
comment.body = body;
|
|
232
|
+
issue.updated_at = now();
|
|
233
|
+
save(store);
|
|
234
|
+
return { remoteId, remoteKey: `#${remoteId}`, remoteUrl: '', remoteRev: issue.updated_at, commentId };
|
|
235
|
+
},
|
|
236
|
+
async deleteComment(remoteId, commentId, _signal) {
|
|
237
|
+
const store = load();
|
|
238
|
+
const issue = requireIssue(store, remoteId);
|
|
239
|
+
issue.comments = issue.comments.filter((entry) => entry.id !== Number(commentId));
|
|
240
|
+
issue.updated_at = now();
|
|
241
|
+
save(store);
|
|
242
|
+
return { remoteId, remoteKey: `#${remoteId}`, remoteUrl: '', remoteRev: issue.updated_at, commentId };
|
|
243
|
+
},
|
|
244
|
+
async reachable() {
|
|
245
|
+
// The file is the whole remote: it exists, or the remote is empty — both
|
|
246
|
+
// are reachable. A directory that cannot be created would fail on write.
|
|
247
|
+
return { reachable: true, evidence: `file ${file}` };
|
|
248
|
+
},
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../../../../src/remote/providers/jsonfile/connector.ts"],"names":[],"mappings":"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"}
|