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,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Jira provider adapter — one folder, exposing the four-member `Provider`
|
|
3
|
+
* shape the registry holds.
|
|
4
|
+
*
|
|
5
|
+
* Adding a provider is exactly this folder plus one line in
|
|
6
|
+
* `src/remote/registry.ts`. Nothing in core or the planners names Jira.
|
|
7
|
+
*/
|
|
8
|
+
import { jiraConfigSchema } from './config.js';
|
|
9
|
+
import { jiraConnector } from './connector.js';
|
|
10
|
+
import { jiraTranslator } from './translator.js';
|
|
11
|
+
import { jiraVocabulary } from './vocabulary.js';
|
|
12
|
+
export { jiraDependsOnOf, jiraRelatesToOf } from './links.js';
|
|
13
|
+
export { jiraParentIdOf, jiraNativeParentIdOf } from './hierarchy.js';
|
|
14
|
+
/**
|
|
15
|
+
* The remote id a Jira record is keyed by: its numeric issue `id`, the same id
|
|
16
|
+
* the connector writes into a `ConnectorResult.remoteId`. The human-facing
|
|
17
|
+
* `key` (`PAY-418`) is never used as a key — it is carried as `remoteKey`.
|
|
18
|
+
*/
|
|
19
|
+
export function jiraRemoteIdOf(record) {
|
|
20
|
+
const id = record['id'];
|
|
21
|
+
if (typeof id === 'string' && id !== '')
|
|
22
|
+
return id;
|
|
23
|
+
if (typeof id === 'number')
|
|
24
|
+
return String(id);
|
|
25
|
+
return '';
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Jira Cloud's capability table (LP-274), from the LP-267 audit
|
|
29
|
+
* (`docs/remote-capabilities.md`). Static cells are facts of the platform;
|
|
30
|
+
* probed cells vary by plan or permission and are answered by
|
|
31
|
+
* `jiraConnector(...).probe(name)` once per remote.
|
|
32
|
+
*
|
|
33
|
+
* Jira is the *most* capable platform of the three researched: native types,
|
|
34
|
+
* transition-mediated statuses, native blocking/relates edges, rich custom
|
|
35
|
+
* fields, sprints and full-featured comments.
|
|
36
|
+
*/
|
|
37
|
+
export const jiraCapabilities = {
|
|
38
|
+
// Epic → Story → Sub-task is the *classic* ceiling, but levels above Epic
|
|
39
|
+
// are a paid Premium feature and the ceiling is per-project configuration —
|
|
40
|
+
// so the depth is detected against the project's actual type scheme, never
|
|
41
|
+
// assumed (LP-324). The connector answers the `hierarchy` probe once per
|
|
42
|
+
// remote.
|
|
43
|
+
hierarchyDepth: { probe: 'hierarchy' },
|
|
44
|
+
// Jira's hierarchy is defined from the bottom up — `Subtask` < standard <
|
|
45
|
+
// `Epic` — and only a standard issue may sit under an Epic. So the native
|
|
46
|
+
// chain is spent on the *deepest* board levels: the work items nest under
|
|
47
|
+
// their container, and everything above rides the managed block. Anchored at
|
|
48
|
+
// the root instead, every native edge lands where Jira refuses it (a board
|
|
49
|
+
// with three levels above its stories maps them all onto `Epic`, and an Epic
|
|
50
|
+
// may not sit under an Epic) while the one relationship Jira would hold is
|
|
51
|
+
// the one that degrades — which is how a filed board came out flat.
|
|
52
|
+
hierarchyAnchor: 'leaf',
|
|
53
|
+
// Issue types are native and per-project.
|
|
54
|
+
nativeTypes: true,
|
|
55
|
+
// Status is a workflow: a change is a transition, and the target may be
|
|
56
|
+
// unreachable from where the issue stands.
|
|
57
|
+
status: { kind: 'transitions' },
|
|
58
|
+
// `blocks` / `is blocked by` and `relates to` are native issue links.
|
|
59
|
+
edges: { dependsOn: true, relatesTo: true },
|
|
60
|
+
// Custom fields exist extensively; the value types available are a live fact
|
|
61
|
+
// (LP-324 discovers and caches names → ids against the instance).
|
|
62
|
+
customFields: { probe: 'custom_fields' },
|
|
63
|
+
// Custom fields and sprints are creatable; labels are free-form (applied,
|
|
64
|
+
// never pre-created).
|
|
65
|
+
provisioning: { customFields: true, periods: true, labels: false },
|
|
66
|
+
// Sprints are native period containers, creatable through the Agile API.
|
|
67
|
+
periods: { native: true, creatable: true },
|
|
68
|
+
// Comments carry ids, can be edited and deleted.
|
|
69
|
+
comments: { native: true, editable: true, deletable: true },
|
|
70
|
+
// Cursor-paginated search (`nextPageToken`) paired with a `updated >=` JQL
|
|
71
|
+
// filter — the offset-paginated endpoint is deprecated and never used.
|
|
72
|
+
incrementalRead: { kind: 'cursor' },
|
|
73
|
+
// Issue types and workflow statuses are the project's own vocabulary.
|
|
74
|
+
vocabulary: 'fixed',
|
|
75
|
+
};
|
|
76
|
+
export const jiraProvider = {
|
|
77
|
+
config: jiraConfigSchema,
|
|
78
|
+
capabilities: jiraCapabilities,
|
|
79
|
+
translator: jiraTranslator,
|
|
80
|
+
connector: jiraConnector,
|
|
81
|
+
conditionalConnection: [
|
|
82
|
+
{
|
|
83
|
+
key: 'board',
|
|
84
|
+
needs: 'periods',
|
|
85
|
+
why: 'a Jira sprint belongs to an Agile board, not a project. ' +
|
|
86
|
+
'Run `lpm remote setup jira` to find it, or set it by hand: the id is the number in the ' +
|
|
87
|
+
'board URL (…/jira/software/c/projects/PAY/boards/12).',
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
credentials: {
|
|
91
|
+
secrets: { email: 'JIRA_EMAIL', token: 'JIRA_API_TOKEN' },
|
|
92
|
+
visible: ['email'],
|
|
93
|
+
url: 'https://id.atlassian.com/manage-profile/security/api-tokens',
|
|
94
|
+
hint: 'An Atlassian API token, plus the email of the account that owns it. What the token may ' +
|
|
95
|
+
'do is decided by the project permissions that account has (Browse / Create / Edit / ' +
|
|
96
|
+
'Transition Issues at a minimum) — see docs/remote-jira.md for the list to send an admin.',
|
|
97
|
+
},
|
|
98
|
+
standardVocabulary: jiraVocabulary,
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/remote/providers/jira/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtE;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACnD,IAAI,OAAO,EAAE,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,yEAAyE;IACzE,UAAU;IACV,cAAc,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;IACtC,0EAA0E;IAC1E,0EAA0E;IAC1E,0EAA0E;IAC1E,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,2EAA2E;IAC3E,oEAAoE;IACpE,eAAe,EAAE,MAAM;IACvB,0CAA0C;IAC1C,WAAW,EAAE,IAAI;IACjB,wEAAwE;IACxE,2CAA2C;IAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;IAC/B,sEAAsE;IACtE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;IAC3C,6EAA6E;IAC7E,kEAAkE;IAClE,YAAY,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;IACxC,0EAA0E;IAC1E,sBAAsB;IACtB,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IAClE,yEAAyE;IACzE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;IAC1C,iDAAiD;IACjD,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;IAC3D,2EAA2E;IAC3E,uEAAuE;IACvE,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnC,sEAAsE;IACtE,UAAU,EAAE,OAAO;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAa;IACpC,MAAM,EAAE,gBAAgB;IACxB,YAAY,EAAE,gBAAgB;IAC9B,UAAU,EAAE,cAAc;IAC1B,SAAS,EAAE,aAAa;IACxB,qBAAqB,EAAE;QACrB;YACE,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,SAAS;YAChB,GAAG,EACD,0DAA0D;gBAC1D,yFAAyF;gBACzF,uDAAuD;SAC1D;KACF;IACD,WAAW,EAAE;QACX,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE;QACzD,OAAO,EAAE,CAAC,OAAO,CAAC;QAClB,GAAG,EAAE,6DAA6D;QAClE,IAAI,EACF,yFAAyF;YACzF,sFAAsF;YACtF,0FAA0F;KAC7F;IACD,kBAAkB,EAAE,cAAc;CACnC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jira's native issue-link read seams (LP-325): `depends_on` and `relates_to`
|
|
3
|
+
* recovered from the `issuelinks` field a Jira record carries.
|
|
4
|
+
*
|
|
5
|
+
* **An issue's `issuelinks` entry names only the *other* end.** This is the
|
|
6
|
+
* thing to get right, and it was got wrong: an entry carries `inwardIssue`
|
|
7
|
+
* *or* `outwardIssue`, never both, and the key says what the other issue is
|
|
8
|
+
* relative to this one. So there is no "is this end me?" test to make — the
|
|
9
|
+
* record is always the end that is missing — and code that compared the
|
|
10
|
+
* record against both endpoints matched nothing at all, which is why every
|
|
11
|
+
* dependency read back from a live Jira came out empty.
|
|
12
|
+
*
|
|
13
|
+
* What the keys mean, measured against Jira Cloud rather than read off the
|
|
14
|
+
* field names (they invite the opposite reading):
|
|
15
|
+
*
|
|
16
|
+
* - `depends_on` → the `Blocks` link type. An entry carrying
|
|
17
|
+
* `inwardIssue: Y` reads "this issue **is blocked by** Y", so Y is a
|
|
18
|
+
* dependency of the record. An entry carrying `outwardIssue: Y` reads
|
|
19
|
+
* "this issue **blocks** Y" — the same edge seen from the other side, and
|
|
20
|
+
* nothing this record waits on.
|
|
21
|
+
* - `relates_to` → the `Relates` link type, symmetric. Either key holds the
|
|
22
|
+
* other side, and both mean the same thing.
|
|
23
|
+
*
|
|
24
|
+
* The returned values are **remote ids** (the numeric issue id the link store
|
|
25
|
+
* keys by), resolved by the pull planner exactly like a native sub-issue
|
|
26
|
+
* parent — through the link store, or through the pending-create map when the
|
|
27
|
+
* other endpoint is pulled in the same run.
|
|
28
|
+
*
|
|
29
|
+
* Pure: no I/O.
|
|
30
|
+
*/
|
|
31
|
+
import type { RemoteRecord } from '../../provider.js';
|
|
32
|
+
/**
|
|
33
|
+
* The remote ids of the issues `record` waits on: the outward ("blocks") issue
|
|
34
|
+
* of every `Blocks` link the record is inward ("is blocked by") of.
|
|
35
|
+
*/
|
|
36
|
+
export declare function jiraDependsOnOf(record: RemoteRecord): string[];
|
|
37
|
+
/**
|
|
38
|
+
* The remote ids of the issues `record` relates to: the other side of every
|
|
39
|
+
* `Relates` link, whichever orientation the record sits on.
|
|
40
|
+
*/
|
|
41
|
+
export declare function jiraRelatesToOf(record: RemoteRecord): string[];
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jira's native issue-link read seams (LP-325): `depends_on` and `relates_to`
|
|
3
|
+
* recovered from the `issuelinks` field a Jira record carries.
|
|
4
|
+
*
|
|
5
|
+
* **An issue's `issuelinks` entry names only the *other* end.** This is the
|
|
6
|
+
* thing to get right, and it was got wrong: an entry carries `inwardIssue`
|
|
7
|
+
* *or* `outwardIssue`, never both, and the key says what the other issue is
|
|
8
|
+
* relative to this one. So there is no "is this end me?" test to make — the
|
|
9
|
+
* record is always the end that is missing — and code that compared the
|
|
10
|
+
* record against both endpoints matched nothing at all, which is why every
|
|
11
|
+
* dependency read back from a live Jira came out empty.
|
|
12
|
+
*
|
|
13
|
+
* What the keys mean, measured against Jira Cloud rather than read off the
|
|
14
|
+
* field names (they invite the opposite reading):
|
|
15
|
+
*
|
|
16
|
+
* - `depends_on` → the `Blocks` link type. An entry carrying
|
|
17
|
+
* `inwardIssue: Y` reads "this issue **is blocked by** Y", so Y is a
|
|
18
|
+
* dependency of the record. An entry carrying `outwardIssue: Y` reads
|
|
19
|
+
* "this issue **blocks** Y" — the same edge seen from the other side, and
|
|
20
|
+
* nothing this record waits on.
|
|
21
|
+
* - `relates_to` → the `Relates` link type, symmetric. Either key holds the
|
|
22
|
+
* other side, and both mean the same thing.
|
|
23
|
+
*
|
|
24
|
+
* The returned values are **remote ids** (the numeric issue id the link store
|
|
25
|
+
* keys by), resolved by the pull planner exactly like a native sub-issue
|
|
26
|
+
* parent — through the link store, or through the pending-create map when the
|
|
27
|
+
* other endpoint is pulled in the same run.
|
|
28
|
+
*
|
|
29
|
+
* Pure: no I/O.
|
|
30
|
+
*/
|
|
31
|
+
/** The `issuelinks` entries a record carries, or an empty list. */
|
|
32
|
+
function issueLinksOf(record) {
|
|
33
|
+
const fields = record['fields'];
|
|
34
|
+
if (!fields || typeof fields !== 'object' || Array.isArray(fields))
|
|
35
|
+
return [];
|
|
36
|
+
const links = fields['issuelinks'];
|
|
37
|
+
if (!Array.isArray(links))
|
|
38
|
+
return [];
|
|
39
|
+
return links.filter((link) => link !== null && typeof link === 'object');
|
|
40
|
+
}
|
|
41
|
+
/** The name of a link's type (`Blocks`, `Relates`), or ''. */
|
|
42
|
+
function typeNameOf(link) {
|
|
43
|
+
const type = link['type'];
|
|
44
|
+
if (!type || typeof type !== 'object')
|
|
45
|
+
return '';
|
|
46
|
+
const name = type['name'];
|
|
47
|
+
return typeof name === 'string' ? name : '';
|
|
48
|
+
}
|
|
49
|
+
/** An endpoint's id and key, each empty when absent. */
|
|
50
|
+
function endpointOf(value) {
|
|
51
|
+
if (!value || typeof value !== 'object')
|
|
52
|
+
return { id: '', key: '' };
|
|
53
|
+
const record = value;
|
|
54
|
+
const id = record['id'];
|
|
55
|
+
const key = record['key'];
|
|
56
|
+
return {
|
|
57
|
+
id: typeof id === 'string' ? id : typeof id === 'number' ? String(id) : '',
|
|
58
|
+
key: typeof key === 'string' ? key : '',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/** A remote id from an endpoint, preferring the numeric id the link store keys by. */
|
|
62
|
+
function remoteIdOf(endpoint) {
|
|
63
|
+
return endpoint.id !== '' ? endpoint.id : endpoint.key;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The remote ids of the issues `record` waits on: the outward ("blocks") issue
|
|
67
|
+
* of every `Blocks` link the record is inward ("is blocked by") of.
|
|
68
|
+
*/
|
|
69
|
+
export function jiraDependsOnOf(record) {
|
|
70
|
+
const ids = [];
|
|
71
|
+
for (const link of issueLinksOf(record)) {
|
|
72
|
+
if (typeNameOf(link) !== 'Blocks')
|
|
73
|
+
continue;
|
|
74
|
+
// `inwardIssue` present = "this issue is blocked by that one", which is
|
|
75
|
+
// exactly a dependency. An `outwardIssue` entry is the reverse edge and
|
|
76
|
+
// belongs to the other issue's list, not this one's.
|
|
77
|
+
if (link['inwardIssue'] === undefined)
|
|
78
|
+
continue;
|
|
79
|
+
const id = remoteIdOf(endpointOf(link['inwardIssue']));
|
|
80
|
+
if (id !== '')
|
|
81
|
+
ids.push(id);
|
|
82
|
+
}
|
|
83
|
+
return [...new Set(ids)].sort();
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The remote ids of the issues `record` relates to: the other side of every
|
|
87
|
+
* `Relates` link, whichever orientation the record sits on.
|
|
88
|
+
*/
|
|
89
|
+
export function jiraRelatesToOf(record) {
|
|
90
|
+
const ids = [];
|
|
91
|
+
for (const link of issueLinksOf(record)) {
|
|
92
|
+
if (typeNameOf(link) !== 'Relates')
|
|
93
|
+
continue;
|
|
94
|
+
// Symmetric, so whichever key holds the other end is the target.
|
|
95
|
+
const other = link['inwardIssue'] !== undefined ? link['inwardIssue'] : link['outwardIssue'];
|
|
96
|
+
const id = remoteIdOf(endpointOf(other));
|
|
97
|
+
if (id !== '')
|
|
98
|
+
ids.push(id);
|
|
99
|
+
}
|
|
100
|
+
return [...new Set(ids)].sort();
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../../../src/remote/providers/jira/links.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jira sprints (LP-328) — the period container, pure half.
|
|
3
|
+
*
|
|
4
|
+
* Jira's native period container is a **sprint**, and sprints belong to an
|
|
5
|
+
* *Agile board*, not a project — so reading and writing them goes through the
|
|
6
|
+
* Agile API (`/rest/agile/1.0/…`), a separate base path from the v3 issue API.
|
|
7
|
+
* This module is the pure part: the sprint model, the page parser, the name
|
|
8
|
+
* lookup and the two facts that gate a write (a closed sprint refuses work, a
|
|
9
|
+
* missing sprint is a provision request rather than a silent no-op).
|
|
10
|
+
*
|
|
11
|
+
* The network half lives in `connector.ts` (`sprints()`, `createSprint`, the
|
|
12
|
+
* sprint field read/write on create/update/get/list). The translator's period
|
|
13
|
+
* push/pull uses `PeriodContainer` / `mapPeriodFromRemote` from
|
|
14
|
+
* `../../periods.ts` exactly as GitHub's milestone carrier does — the sprint
|
|
15
|
+
* carrier is a third `PeriodCarrier`, and the join is by sprint *name*.
|
|
16
|
+
*/
|
|
17
|
+
import type { JiraField } from './fields.js';
|
|
18
|
+
/** One sprint as the Agile API returns it (`GET /board/{boardId}/sprint`). */
|
|
19
|
+
export interface JiraSprint {
|
|
20
|
+
/** The sprint's numeric id, e.g. `37`. */
|
|
21
|
+
id: string;
|
|
22
|
+
/** The sprint name, e.g. "Sprint 1" — what a period title matches. */
|
|
23
|
+
name: string;
|
|
24
|
+
/** The sprint state: `future`, `active` or `closed`. */
|
|
25
|
+
state: string;
|
|
26
|
+
/** `startDate`, `YYYY-MM-DD`, when the sprint carries one. */
|
|
27
|
+
starts?: string;
|
|
28
|
+
/** `endDate`, `YYYY-MM-DD`, when the sprint carries one. */
|
|
29
|
+
ends?: string;
|
|
30
|
+
/** `completeDate`, an ISO timestamp, when the sprint was closed. */
|
|
31
|
+
completeDate?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The custom-field *type key* that identifies Jira's built-in sprint field.
|
|
35
|
+
* The field's per-instance id (`customfield_10020`) is discovered from the
|
|
36
|
+
* instance's field list, never hard-coded — exactly as `mapping.attributes`
|
|
37
|
+
* resolves names to ids (LP-327).
|
|
38
|
+
*/
|
|
39
|
+
export declare const SPRINT_FIELD_TYPE = "com.pyxis.greenhopper.jira:gh-sprint";
|
|
40
|
+
/**
|
|
41
|
+
* Parse one Agile API sprint page (`{ values: [...], isLast, startAt }`) into
|
|
42
|
+
* `JiraSprint`s. The board sprint endpoint returns sprints in every state —
|
|
43
|
+
* future, active and closed — which is what lets a push tell a closed sprint
|
|
44
|
+
* from a future one before moving work into it. Dates arrive as strings from
|
|
45
|
+
* the wire but as `Date`s after jira.js validates them, so both spellings are
|
|
46
|
+
* read.
|
|
47
|
+
*/
|
|
48
|
+
export declare function parseSprints(raw: unknown): JiraSprint[];
|
|
49
|
+
/** True when the sprint is `closed` — the one state work must never move into. */
|
|
50
|
+
export declare function isClosedSprint(sprint: JiraSprint): boolean;
|
|
51
|
+
/** The sprint whose name matches, or `undefined` when the board has none. */
|
|
52
|
+
export declare function sprintByName(sprints: readonly JiraSprint[], name: string): JiraSprint | undefined;
|
|
53
|
+
/** The desired sprints that have no match among the board's existing sprints,
|
|
54
|
+
* in board order — what a push creates before it files. Idempotent by
|
|
55
|
+
* construction: re-running against an updated sprint list creates nothing. */
|
|
56
|
+
export declare function missingSprints(desired: readonly {
|
|
57
|
+
name: string;
|
|
58
|
+
starts?: string;
|
|
59
|
+
ends?: string;
|
|
60
|
+
}[], existing: readonly JiraSprint[]): Array<{
|
|
61
|
+
name: string;
|
|
62
|
+
starts?: string;
|
|
63
|
+
ends?: string;
|
|
64
|
+
}>;
|
|
65
|
+
/** The sprint custom field's per-instance id, or `undefined` when the instance
|
|
66
|
+
* has no sprint field (which is itself the honest answer for "sprints are not
|
|
67
|
+
* enabled here"). */
|
|
68
|
+
export declare function sprintFieldIdOf(fields: readonly Pick<JiraField, 'id' | 'customType'>[]): string | undefined;
|
|
69
|
+
/** The sprint operations the live Jira connector exposes, for `lpm remote
|
|
70
|
+
* provision` and the translator's push/pull. Absent on a fake that does not
|
|
71
|
+
* model sprints. */
|
|
72
|
+
export interface JiraSprintConnector {
|
|
73
|
+
readonly name: string;
|
|
74
|
+
/** Every sprint on the configured Agile board, in every state. */
|
|
75
|
+
listSprints?(signal?: AbortSignal): Promise<JiraSprint[]>;
|
|
76
|
+
/** Create a future sprint on the configured Agile board, returning its id. */
|
|
77
|
+
createSprint?(name: string, starts?: string, ends?: string, signal?: AbortSignal): Promise<{
|
|
78
|
+
id: string;
|
|
79
|
+
}>;
|
|
80
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jira sprints (LP-328) — the period container, pure half.
|
|
3
|
+
*
|
|
4
|
+
* Jira's native period container is a **sprint**, and sprints belong to an
|
|
5
|
+
* *Agile board*, not a project — so reading and writing them goes through the
|
|
6
|
+
* Agile API (`/rest/agile/1.0/…`), a separate base path from the v3 issue API.
|
|
7
|
+
* This module is the pure part: the sprint model, the page parser, the name
|
|
8
|
+
* lookup and the two facts that gate a write (a closed sprint refuses work, a
|
|
9
|
+
* missing sprint is a provision request rather than a silent no-op).
|
|
10
|
+
*
|
|
11
|
+
* The network half lives in `connector.ts` (`sprints()`, `createSprint`, the
|
|
12
|
+
* sprint field read/write on create/update/get/list). The translator's period
|
|
13
|
+
* push/pull uses `PeriodContainer` / `mapPeriodFromRemote` from
|
|
14
|
+
* `../../periods.ts` exactly as GitHub's milestone carrier does — the sprint
|
|
15
|
+
* carrier is a third `PeriodCarrier`, and the join is by sprint *name*.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* The custom-field *type key* that identifies Jira's built-in sprint field.
|
|
19
|
+
* The field's per-instance id (`customfield_10020`) is discovered from the
|
|
20
|
+
* instance's field list, never hard-coded — exactly as `mapping.attributes`
|
|
21
|
+
* resolves names to ids (LP-327).
|
|
22
|
+
*/
|
|
23
|
+
export const SPRINT_FIELD_TYPE = 'com.pyxis.greenhopper.jira:gh-sprint';
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Parsing
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
/** A sprint date as `YYYY-MM-DD`, from a string or a Date the client coerced. */
|
|
28
|
+
function dateOnly(value) {
|
|
29
|
+
if (typeof value === 'string')
|
|
30
|
+
return value;
|
|
31
|
+
if (value instanceof Date && !Number.isNaN(value.getTime())) {
|
|
32
|
+
return value.toISOString().slice(0, 10);
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
/** A sprint timestamp as an ISO string, from a string or a Date the client coerced. */
|
|
37
|
+
function timestampOf(value) {
|
|
38
|
+
if (typeof value === 'string')
|
|
39
|
+
return value;
|
|
40
|
+
if (value instanceof Date && !Number.isNaN(value.getTime()))
|
|
41
|
+
return value.toISOString();
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Parse one Agile API sprint page (`{ values: [...], isLast, startAt }`) into
|
|
46
|
+
* `JiraSprint`s. The board sprint endpoint returns sprints in every state —
|
|
47
|
+
* future, active and closed — which is what lets a push tell a closed sprint
|
|
48
|
+
* from a future one before moving work into it. Dates arrive as strings from
|
|
49
|
+
* the wire but as `Date`s after jira.js validates them, so both spellings are
|
|
50
|
+
* read.
|
|
51
|
+
*/
|
|
52
|
+
export function parseSprints(raw) {
|
|
53
|
+
if (raw === null || typeof raw !== 'object')
|
|
54
|
+
return [];
|
|
55
|
+
const record = raw;
|
|
56
|
+
const values = record['values'];
|
|
57
|
+
if (!Array.isArray(values))
|
|
58
|
+
return [];
|
|
59
|
+
const out = [];
|
|
60
|
+
for (const entry of values) {
|
|
61
|
+
if (entry === null || typeof entry !== 'object')
|
|
62
|
+
continue;
|
|
63
|
+
const sprint = entry;
|
|
64
|
+
const id = sprint['id'];
|
|
65
|
+
const name = sprint['name'];
|
|
66
|
+
if ((typeof id !== 'string' && typeof id !== 'number') || typeof name !== 'string')
|
|
67
|
+
continue;
|
|
68
|
+
const state = sprint['state'];
|
|
69
|
+
out.push({
|
|
70
|
+
id: String(id),
|
|
71
|
+
name,
|
|
72
|
+
state: typeof state === 'string' ? state : '',
|
|
73
|
+
...(dateOnly(sprint['startDate']) !== undefined ? { starts: dateOnly(sprint['startDate']) } : {}),
|
|
74
|
+
...(dateOnly(sprint['endDate']) !== undefined ? { ends: dateOnly(sprint['endDate']) } : {}),
|
|
75
|
+
...(timestampOf(sprint['completeDate']) !== undefined
|
|
76
|
+
? { completeDate: timestampOf(sprint['completeDate']) }
|
|
77
|
+
: {}),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
// ---------------------------------------------------------------------------
|
|
83
|
+
// The two facts a write needs
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
/** True when the sprint is `closed` — the one state work must never move into. */
|
|
86
|
+
export function isClosedSprint(sprint) {
|
|
87
|
+
return sprint.state.trim().toLowerCase() === 'closed';
|
|
88
|
+
}
|
|
89
|
+
/** The sprint whose name matches, or `undefined` when the board has none. */
|
|
90
|
+
export function sprintByName(sprints, name) {
|
|
91
|
+
return sprints.find((sprint) => sprint.name === name);
|
|
92
|
+
}
|
|
93
|
+
/** The desired sprints that have no match among the board's existing sprints,
|
|
94
|
+
* in board order — what a push creates before it files. Idempotent by
|
|
95
|
+
* construction: re-running against an updated sprint list creates nothing. */
|
|
96
|
+
export function missingSprints(desired, existing) {
|
|
97
|
+
const names = new Set(existing.map((sprint) => sprint.name));
|
|
98
|
+
return desired.filter((entry) => !names.has(entry.name));
|
|
99
|
+
}
|
|
100
|
+
/** The sprint custom field's per-instance id, or `undefined` when the instance
|
|
101
|
+
* has no sprint field (which is itself the honest answer for "sprints are not
|
|
102
|
+
* enabled here"). */
|
|
103
|
+
export function sprintFieldIdOf(fields) {
|
|
104
|
+
const field = fields.find((entry) => entry.customType === SPRINT_FIELD_TYPE);
|
|
105
|
+
return field?.id;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=sprints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprints.js","sourceRoot":"","sources":["../../../../src/remote/providers/jira/sprints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jira's two-way vocabulary translation.
|
|
3
|
+
*
|
|
4
|
+
* Jira Cloud has *native* issue types, workflow statuses and custom fields, so
|
|
5
|
+
* the mapping names them rather than encoding them onto labels (the GitHub
|
|
6
|
+
* approach). This translator is the Jira-specific bridge, using the remote's
|
|
7
|
+
* `mapping` block:
|
|
8
|
+
*
|
|
9
|
+
* push: a `BoardOp` plus the mapping becomes a `RemoteRequest` carrying
|
|
10
|
+
* `type` (issuetype name), `state` (workflow status name, transition-
|
|
11
|
+
* mediated), `title`, `body`, `assignee` and `parent` key;
|
|
12
|
+
* pull: a Jira issue record plus the mapping becomes a `BoardFieldsPatch`,
|
|
13
|
+
* recovering `type` from `fields.issuetype.name` and `status` from
|
|
14
|
+
* `fields.status.name` when the mapping names them unambiguously.
|
|
15
|
+
*
|
|
16
|
+
* Pure: no I/O. One translator serves every Jira remote. Where a value cannot
|
|
17
|
+
* be mapped back unambiguously, the field is left absent rather than guessed —
|
|
18
|
+
* the pull planner breaks ties with the board's hierarchy (LP-268).
|
|
19
|
+
*
|
|
20
|
+
* Two things are deliberately deferred rather than half-encoded here:
|
|
21
|
+
* **custom fields** (LP-324) — `mapping.attributes` names a field id, but
|
|
22
|
+
* `RemoteRequest` has no field to carry it, so attributes are deferred until
|
|
23
|
+
* that wire shape exists. **Sprints** (LP-328) are carried natively: the
|
|
24
|
+
* period resolves to a `PeriodContainer` on push and the connector writes the
|
|
25
|
+
* sprint field, and on pull the connector's `record.sprint` enrichment resolves
|
|
26
|
+
* back to a period by name.
|
|
27
|
+
*/
|
|
28
|
+
import type { AttributeDefs } from '../../provider.js';
|
|
29
|
+
import type { BoardOp, DescribeResult, FieldsFromRecordResult, RemoteRecord, Translator } from '../../provider.js';
|
|
30
|
+
import { type Roster } from '../../accounts.js';
|
|
31
|
+
import { type PeriodIndex } from '../../periods.js';
|
|
32
|
+
/**
|
|
33
|
+
* Recover the local markdown body from a Jira `description` field.
|
|
34
|
+
*
|
|
35
|
+
* Jira Cloud returns `description` as an ADF document (an object) — never a
|
|
36
|
+
* markdown string — so this is where ADF → markdown happens. It also accepts
|
|
37
|
+
* the defensive spellings: a client that stringified the ADF, and a plain
|
|
38
|
+
* string left by an older write, both degrade gracefully rather than dropping
|
|
39
|
+
* the prose.
|
|
40
|
+
*/
|
|
41
|
+
export declare function bodyFromDescription(description: unknown): string | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Push: a board op becomes a Jira request description.
|
|
44
|
+
*
|
|
45
|
+
* `type` is the mapped issuetype name; `state` the mapped workflow status name
|
|
46
|
+
* (a push writes it as a transition, resolved by the connector). A create/update
|
|
47
|
+
* also carries `title`, `body` and the resolved assignee account id. A delete
|
|
48
|
+
* carries only its kind — Jira deletes hard.
|
|
49
|
+
*/
|
|
50
|
+
export declare function describeRequest(op: BoardOp, mapping: Record<string, unknown>, _attributes: AttributeDefs, roster?: Roster, periods?: PeriodIndex): DescribeResult;
|
|
51
|
+
/**
|
|
52
|
+
* Pull: a Jira issue record becomes board fields.
|
|
53
|
+
*
|
|
54
|
+
* `title` ← `fields.summary`; `body` ← `fields.description` (a string here —
|
|
55
|
+
* Jira Cloud returns ADF, and LP-322 is where the ADF → markdown conversion
|
|
56
|
+
* lands); `type` ← `fields.issuetype.name` matched against the mapping's
|
|
57
|
+
* native type names; `status` ← `fields.status.name`; `assignee` ← the account
|
|
58
|
+
* id matched against the roster.
|
|
59
|
+
*/
|
|
60
|
+
export declare function fieldsFromRecord(record: RemoteRecord, mapping: Record<string, unknown>, _attributes: AttributeDefs, roster?: Roster, periods?: PeriodIndex): FieldsFromRecordResult;
|
|
61
|
+
export declare const jiraTranslator: Translator;
|