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,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The jsonfile provider adapter — one folder, exposing the four-member
|
|
3
|
+
* `Provider` 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 jsonfile.
|
|
7
|
+
*/
|
|
8
|
+
import type { Capabilities } from '../../capabilities.js';
|
|
9
|
+
import type { Provider, RemoteRecord } from '../../provider.js';
|
|
10
|
+
/** The remote id a jsonfile record is keyed by: its per-file issue number. */
|
|
11
|
+
export declare function jsonfileRemoteIdOf(record: RemoteRecord): string;
|
|
12
|
+
/** The remote issue numbers a record waits on — its native `depends_on` edges. */
|
|
13
|
+
export declare function jsonfileDependsOnOf(record: RemoteRecord): string[];
|
|
14
|
+
/**
|
|
15
|
+
* The remote id of a record's parent, from the managed block (the file is a
|
|
16
|
+
* flat tracker — hierarchyDepth 0 — so the parent rides rung 4, never a native
|
|
17
|
+
* field).
|
|
18
|
+
*/
|
|
19
|
+
export declare function jsonfileParentIdOf(record: RemoteRecord): string | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* The jsonfile capability table. Every cell is a static fact — a JSON file has
|
|
22
|
+
* no plan tiers or rollouts to probe. This is the first provider whose `type`
|
|
23
|
+
* and `status` are both *native* fields (rung 1), and the only one whose
|
|
24
|
+
* `delete` hard-removes the issue.
|
|
25
|
+
*/
|
|
26
|
+
export declare const jsonfileCapabilities: Capabilities;
|
|
27
|
+
/**
|
|
28
|
+
* Where a jsonfile remote's tracker lives when nobody says otherwise:
|
|
29
|
+
* `.lpm/remotes/<name>/tracker.json`, beside that remote's own link store and
|
|
30
|
+
* caches. The path is relative to the board root — the connector resolves it
|
|
31
|
+
* from there, so a sync run from a subdirectory finds the same file.
|
|
32
|
+
*
|
|
33
|
+
* This is the one provider whose connection names something *light-plan* owns
|
|
34
|
+
* rather than somebody else's system, so it is the one provider that can pick
|
|
35
|
+
* for itself. `--file` still overrides it.
|
|
36
|
+
*/
|
|
37
|
+
export declare function jsonfileDefaultConnection(remoteName: string): Record<string, unknown>;
|
|
38
|
+
export declare const jsonfileProvider: Provider;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The jsonfile provider adapter — one folder, exposing the four-member
|
|
3
|
+
* `Provider` 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 jsonfile.
|
|
7
|
+
*/
|
|
8
|
+
import { parentRemoteIdFromBlock } from '../../hierarchy.js';
|
|
9
|
+
import { jsonfileConfigSchema } from './config.js';
|
|
10
|
+
import { jsonfileConnector } from './connector.js';
|
|
11
|
+
import { jsonfileTranslator } from './translator.js';
|
|
12
|
+
/** The remote id a jsonfile record is keyed by: its per-file issue number. */
|
|
13
|
+
export function jsonfileRemoteIdOf(record) {
|
|
14
|
+
const number = record.number;
|
|
15
|
+
if (typeof number === 'number')
|
|
16
|
+
return String(number);
|
|
17
|
+
if (typeof number === 'string' && number !== '')
|
|
18
|
+
return number;
|
|
19
|
+
return '';
|
|
20
|
+
}
|
|
21
|
+
/** The remote issue numbers a record waits on — its native `depends_on` edges. */
|
|
22
|
+
export function jsonfileDependsOnOf(record) {
|
|
23
|
+
const deps = record.depends_on;
|
|
24
|
+
if (!Array.isArray(deps))
|
|
25
|
+
return [];
|
|
26
|
+
return deps
|
|
27
|
+
.map((entry) => (typeof entry === 'number' ? String(entry) : typeof entry === 'string' ? entry : ''))
|
|
28
|
+
.filter((entry) => entry !== '');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The remote id of a record's parent, from the managed block (the file is a
|
|
32
|
+
* flat tracker — hierarchyDepth 0 — so the parent rides rung 4, never a native
|
|
33
|
+
* field).
|
|
34
|
+
*/
|
|
35
|
+
export function jsonfileParentIdOf(record) {
|
|
36
|
+
const body = record.body;
|
|
37
|
+
if (typeof body === 'string')
|
|
38
|
+
return parentRemoteIdFromBlock(body);
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The jsonfile capability table. Every cell is a static fact — a JSON file has
|
|
43
|
+
* no plan tiers or rollouts to probe. This is the first provider whose `type`
|
|
44
|
+
* and `status` are both *native* fields (rung 1), and the only one whose
|
|
45
|
+
* `delete` hard-removes the issue.
|
|
46
|
+
*/
|
|
47
|
+
export const jsonfileCapabilities = {
|
|
48
|
+
// Flat: no native parent field. Deeper nesting rides the managed block.
|
|
49
|
+
hierarchyDepth: 0,
|
|
50
|
+
// The `type` field is native.
|
|
51
|
+
nativeTypes: true,
|
|
52
|
+
// A named `status` field, exactly as Linear's workflow-state name is native.
|
|
53
|
+
status: { kind: 'states' },
|
|
54
|
+
// `depends_on` is a native edge list; no native `relates_to`.
|
|
55
|
+
edges: { dependsOn: true, relatesTo: false },
|
|
56
|
+
// No typed custom-field registry — attributes ride labels (rung 3).
|
|
57
|
+
customFields: null,
|
|
58
|
+
// Nothing is creatable through an API — the file is the whole API.
|
|
59
|
+
provisioning: { customFields: false, periods: false, labels: false },
|
|
60
|
+
// No native period container.
|
|
61
|
+
periods: { native: false, creatable: false },
|
|
62
|
+
// Comments carry ids, can be edited and deleted.
|
|
63
|
+
comments: { native: true, editable: true, deletable: true },
|
|
64
|
+
// `updated_at` filtering over a full read.
|
|
65
|
+
incrementalRead: { kind: 'since' },
|
|
66
|
+
// The file is ours: its type and status strings are whatever we write, so
|
|
67
|
+
// a scaffold names them after the board and leaves nothing to fill in.
|
|
68
|
+
vocabulary: 'open',
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Where a jsonfile remote's tracker lives when nobody says otherwise:
|
|
72
|
+
* `.lpm/remotes/<name>/tracker.json`, beside that remote's own link store and
|
|
73
|
+
* caches. The path is relative to the board root — the connector resolves it
|
|
74
|
+
* from there, so a sync run from a subdirectory finds the same file.
|
|
75
|
+
*
|
|
76
|
+
* This is the one provider whose connection names something *light-plan* owns
|
|
77
|
+
* rather than somebody else's system, so it is the one provider that can pick
|
|
78
|
+
* for itself. `--file` still overrides it.
|
|
79
|
+
*/
|
|
80
|
+
export function jsonfileDefaultConnection(remoteName) {
|
|
81
|
+
return { file: `.lpm/remotes/${remoteName}/tracker.json` };
|
|
82
|
+
}
|
|
83
|
+
export const jsonfileProvider = {
|
|
84
|
+
config: jsonfileConfigSchema,
|
|
85
|
+
capabilities: jsonfileCapabilities,
|
|
86
|
+
translator: jsonfileTranslator,
|
|
87
|
+
connector: jsonfileConnector,
|
|
88
|
+
defaultConnection: jsonfileDefaultConnection,
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/remote/providers/jsonfile/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC;IAC/D,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CAAC,MAAoB;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACpG,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAiB;IAChD,wEAAwE;IACxE,cAAc,EAAE,CAAC;IACjB,8BAA8B;IAC9B,WAAW,EAAE,IAAI;IACjB,6EAA6E;IAC7E,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,8DAA8D;IAC9D,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;IAC5C,oEAAoE;IACpE,YAAY,EAAE,IAAI;IAClB,mEAAmE;IACnE,YAAY,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;IACpE,8BAA8B;IAC9B,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;IAC5C,iDAAiD;IACjD,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;IAC3D,2CAA2C;IAC3C,eAAe,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;IAClC,0EAA0E;IAC1E,uEAAuE;IACvE,UAAU,EAAE,MAAM;CACnB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAC,UAAkB;IAC1D,OAAO,EAAE,IAAI,EAAE,gBAAgB,UAAU,eAAe,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,MAAM,EAAE,oBAAoB;IAC5B,YAAY,EAAE,oBAAoB;IAClC,UAAU,EAAE,kBAAkB;IAC9B,SAAS,EAAE,iBAAiB;IAC5B,iBAAiB,EAAE,yBAAyB;CAC7C,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The JSON-file tracker's storage — a single JSON document holding a flat list
|
|
3
|
+
* of issues, exactly what a "tracker" backed by a local file looks like.
|
|
4
|
+
*
|
|
5
|
+
* This is the *only* I/O surface the connector and the conformance test double
|
|
6
|
+
* share. It is deliberately tiny and deliberately boring: a file is the whole
|
|
7
|
+
* tracker, there is no schema to migrate beyond `version`, and a write is a
|
|
8
|
+
* whole-file rewrite (a demo tracker does not need a journal).
|
|
9
|
+
*/
|
|
10
|
+
/** One user comment, as the file holds it. */
|
|
11
|
+
export interface JsonComment {
|
|
12
|
+
id: number;
|
|
13
|
+
body: string;
|
|
14
|
+
author: string;
|
|
15
|
+
created_at: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* One issue, in the file's flat shape. Everything the board distinguishes has
|
|
19
|
+
* a *native* home here — `type` and `status` are real fields, `depends_on` a
|
|
20
|
+
* real edge list — which is the point of the provider: it exercises the
|
|
21
|
+
* degradation ladder's rung 1, which no shipped platform does.
|
|
22
|
+
*/
|
|
23
|
+
export interface JsonIssue {
|
|
24
|
+
/** The remote id, a per-file monotonic number. */
|
|
25
|
+
number: number;
|
|
26
|
+
title: string;
|
|
27
|
+
body: string;
|
|
28
|
+
/** Native status name, e.g. `Done` — the mapping's `statuses.*.remote`. */
|
|
29
|
+
status: string;
|
|
30
|
+
/** Native type name, e.g. `story` — the mapping's `types.*.type`. */
|
|
31
|
+
type: string;
|
|
32
|
+
/** Human and attribute labels; the sync reconciles its claimed ones only. */
|
|
33
|
+
labels: string[];
|
|
34
|
+
/** Native assignee account, or null when unassigned. */
|
|
35
|
+
assignee: string | null;
|
|
36
|
+
/** Native dependency edges — the remote issue numbers this one waits on. */
|
|
37
|
+
depends_on: number[];
|
|
38
|
+
comments: JsonComment[];
|
|
39
|
+
created_at: string;
|
|
40
|
+
updated_at: string;
|
|
41
|
+
}
|
|
42
|
+
/** The whole store: a version, the issues, and the next issue number. */
|
|
43
|
+
export interface JsonStore {
|
|
44
|
+
version: 1;
|
|
45
|
+
issues: JsonIssue[];
|
|
46
|
+
next_number: number;
|
|
47
|
+
}
|
|
48
|
+
/** The store before anything has been filed. */
|
|
49
|
+
export declare function emptyJsonStore(): JsonStore;
|
|
50
|
+
/**
|
|
51
|
+
* Read the store. A missing file is a valid empty store — the first sync
|
|
52
|
+
* creates it. A file that cannot be parsed is thrown, not repaired: a corrupt
|
|
53
|
+
* tracker should fail loudly, the same rule the link store applies.
|
|
54
|
+
*/
|
|
55
|
+
export declare function readJsonStore(file: string): JsonStore;
|
|
56
|
+
/** Write the store, creating the containing directory when it does not exist. */
|
|
57
|
+
export declare function writeJsonStore(file: string, store: JsonStore): void;
|
|
58
|
+
/** The next comment id, derived rather than stored so the file stays minimal. */
|
|
59
|
+
export declare function nextCommentId(store: JsonStore): number;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The JSON-file tracker's storage — a single JSON document holding a flat list
|
|
3
|
+
* of issues, exactly what a "tracker" backed by a local file looks like.
|
|
4
|
+
*
|
|
5
|
+
* This is the *only* I/O surface the connector and the conformance test double
|
|
6
|
+
* share. It is deliberately tiny and deliberately boring: a file is the whole
|
|
7
|
+
* tracker, there is no schema to migrate beyond `version`, and a write is a
|
|
8
|
+
* whole-file rewrite (a demo tracker does not need a journal).
|
|
9
|
+
*/
|
|
10
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
/** The store before anything has been filed. */
|
|
13
|
+
export function emptyJsonStore() {
|
|
14
|
+
return { version: 1, issues: [], next_number: 1 };
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Read the store. A missing file is a valid empty store — the first sync
|
|
18
|
+
* creates it. A file that cannot be parsed is thrown, not repaired: a corrupt
|
|
19
|
+
* tracker should fail loudly, the same rule the link store applies.
|
|
20
|
+
*/
|
|
21
|
+
export function readJsonStore(file) {
|
|
22
|
+
let raw;
|
|
23
|
+
try {
|
|
24
|
+
raw = readFileSync(file, 'utf8');
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (error.code === 'ENOENT')
|
|
28
|
+
return emptyJsonStore();
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
return JSON.parse(raw);
|
|
32
|
+
}
|
|
33
|
+
/** Write the store, creating the containing directory when it does not exist. */
|
|
34
|
+
export function writeJsonStore(file, store) {
|
|
35
|
+
mkdirSync(path.dirname(file), { recursive: true });
|
|
36
|
+
writeFileSync(file, `${JSON.stringify(store, null, 2)}\n`, 'utf8');
|
|
37
|
+
}
|
|
38
|
+
/** The next comment id, derived rather than stored so the file stays minimal. */
|
|
39
|
+
export function nextCommentId(store) {
|
|
40
|
+
let max = 0;
|
|
41
|
+
for (const issue of store.issues) {
|
|
42
|
+
for (const comment of issue.comments)
|
|
43
|
+
if (comment.id > max)
|
|
44
|
+
max = comment.id;
|
|
45
|
+
}
|
|
46
|
+
return max + 1;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/remote/providers/jsonfile/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,IAAI,MAAM,WAAW,CAAC;AA2C7B,gDAAgD;AAChD,MAAM,UAAU,cAAc;IAC5B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,cAAc,EAAE,CAAC;QAChF,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;AACtC,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAgB;IAC3D,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,aAAa,CAAC,KAAgB;IAC5C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ;YAAE,IAAI,OAAO,CAAC,EAAE,GAAG,GAAG;gBAAE,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC;IAC/E,CAAC;IACD,OAAO,GAAG,GAAG,CAAC,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The jsonfile provider's two-way vocabulary translation.
|
|
3
|
+
*
|
|
4
|
+
* The JSON-file tracker is the *minimum* a tracker can be, and it holds its
|
|
5
|
+
* vocabulary natively rather than on labels:
|
|
6
|
+
*
|
|
7
|
+
* - **type** is the native `type` field (rung 1), with an optional human
|
|
8
|
+
* label kept beside it (rung 3) so the sync's label claim still has an
|
|
9
|
+
* exact label to reconcile and a person reading the file sees the type;
|
|
10
|
+
* - **status** is the native `status` field (rung 1) — the mapping's
|
|
11
|
+
* `statuses.*.remote` value is the field value, exactly as Linear's
|
|
12
|
+
* workflow-state name is;
|
|
13
|
+
* - **attributes** ride label prefixes (rung 3), as GitHub's do — the file
|
|
14
|
+
* has no typed custom-field registry;
|
|
15
|
+
* - **`depends_on`** is the native `depends_on` array (rung 1), handled by
|
|
16
|
+
* the connector's `link` / `unlink` rather than here.
|
|
17
|
+
*
|
|
18
|
+
* Assignees and periods are deliberately not mapped in this slice: the file
|
|
19
|
+
* holds an arbitrary `assignee` string and no period container, so both ride
|
|
20
|
+
* the ladder (and the managed block for a degraded period level).
|
|
21
|
+
*
|
|
22
|
+
* Pure: no I/O. One translator serves every jsonfile remote; the mapping and
|
|
23
|
+
* the board's attribute definitions are passed per call.
|
|
24
|
+
*/
|
|
25
|
+
import { type LabelClaim } from '../../labels.js';
|
|
26
|
+
import type { AttributeDefs, BoardOp, DescribeResult, FieldsFromRecordResult, RemoteRecord, Translator } from '../../provider.js';
|
|
27
|
+
import type { JsonfileMapping } from './config.js';
|
|
28
|
+
/**
|
|
29
|
+
* The labels a mapping claims (LP-308): the exact type labels and status
|
|
30
|
+
* states, and the attribute prefixes. Derived from the mapping, never a
|
|
31
|
+
* convention.
|
|
32
|
+
*/
|
|
33
|
+
export declare function labelClaimFromJsonfileMapping(mapping: JsonfileMapping): LabelClaim;
|
|
34
|
+
/**
|
|
35
|
+
* Push: a board op becomes a jsonfile request description.
|
|
36
|
+
*
|
|
37
|
+
* A create/update carries `title`, `body`, the native `type`, the native
|
|
38
|
+
* status name in `state`, and the labels derived from the mapping (the type
|
|
39
|
+
* labels plus one `<prefix>:<value>` label per mapped attribute). An attribute
|
|
40
|
+
* value that will not coerce is omitted and reported in `problems`. A delete
|
|
41
|
+
* carries only its kind — the connector removes the issue from the file.
|
|
42
|
+
*/
|
|
43
|
+
export declare function describeRequest(op: BoardOp, mapping: Record<string, unknown>, attributes: AttributeDefs, _roster?: Map<any, any>, _periods?: Map<any, any>): DescribeResult;
|
|
44
|
+
/**
|
|
45
|
+
* Pull: a jsonfile issue record becomes board fields.
|
|
46
|
+
*
|
|
47
|
+
* `title` and `body` pass through (the managed block stripped, as everywhere);
|
|
48
|
+
* `type` is recovered when exactly one board type's native `remote` or labels
|
|
49
|
+
* match; `status` from the native `status` field; `attributes` from
|
|
50
|
+
* `<prefix>:<value>` labels. Ambiguity leaves the field absent — the pull
|
|
51
|
+
* planner breaks ties with the board's hierarchy.
|
|
52
|
+
*/
|
|
53
|
+
export declare function fieldsFromRecord(record: RemoteRecord, mapping: Record<string, unknown>, attributes: AttributeDefs, _roster?: Map<any, any>, _periods?: Map<any, any>): FieldsFromRecordResult;
|
|
54
|
+
export declare const jsonfileTranslator: Translator;
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The jsonfile provider's two-way vocabulary translation.
|
|
3
|
+
*
|
|
4
|
+
* The JSON-file tracker is the *minimum* a tracker can be, and it holds its
|
|
5
|
+
* vocabulary natively rather than on labels:
|
|
6
|
+
*
|
|
7
|
+
* - **type** is the native `type` field (rung 1), with an optional human
|
|
8
|
+
* label kept beside it (rung 3) so the sync's label claim still has an
|
|
9
|
+
* exact label to reconcile and a person reading the file sees the type;
|
|
10
|
+
* - **status** is the native `status` field (rung 1) — the mapping's
|
|
11
|
+
* `statuses.*.remote` value is the field value, exactly as Linear's
|
|
12
|
+
* workflow-state name is;
|
|
13
|
+
* - **attributes** ride label prefixes (rung 3), as GitHub's do — the file
|
|
14
|
+
* has no typed custom-field registry;
|
|
15
|
+
* - **`depends_on`** is the native `depends_on` array (rung 1), handled by
|
|
16
|
+
* the connector's `link` / `unlink` rather than here.
|
|
17
|
+
*
|
|
18
|
+
* Assignees and periods are deliberately not mapped in this slice: the file
|
|
19
|
+
* holds an arbitrary `assignee` string and no period container, so both ride
|
|
20
|
+
* the ladder (and the managed block for a degraded period level).
|
|
21
|
+
*
|
|
22
|
+
* Pure: no I/O. One translator serves every jsonfile remote; the mapping and
|
|
23
|
+
* the board's attribute definitions are passed per call.
|
|
24
|
+
*/
|
|
25
|
+
import { coerceFromRemote, coerceToRemote, } from '../../attributes.js';
|
|
26
|
+
import { labelClaim } from '../../labels.js';
|
|
27
|
+
import { parseManagedBlock } from '../../managed-block.js';
|
|
28
|
+
import { boardTypesMatching, mapStatusFromRemote, mapStatusToRemote, mapTypeToRemote, } from '../../mapping.js';
|
|
29
|
+
/** An issue's labels as plain strings, whatever the record's spelling. */
|
|
30
|
+
function labelsOf(record) {
|
|
31
|
+
const labels = record.labels;
|
|
32
|
+
if (!Array.isArray(labels))
|
|
33
|
+
return [];
|
|
34
|
+
return labels
|
|
35
|
+
.map((label) => {
|
|
36
|
+
if (typeof label === 'string')
|
|
37
|
+
return label;
|
|
38
|
+
if (label && typeof label === 'object') {
|
|
39
|
+
const name = label.name;
|
|
40
|
+
if (typeof name === 'string')
|
|
41
|
+
return name;
|
|
42
|
+
}
|
|
43
|
+
return '';
|
|
44
|
+
})
|
|
45
|
+
.filter((label) => label.length > 0);
|
|
46
|
+
}
|
|
47
|
+
/** The remote field a board attribute of this type lands on: labels only. */
|
|
48
|
+
function fieldFor(type) {
|
|
49
|
+
return type === 'array' ? { kind: 'labels' } : { kind: 'text' };
|
|
50
|
+
}
|
|
51
|
+
/** Skip a value that carries nothing to write. */
|
|
52
|
+
function isEmptyValue(value) {
|
|
53
|
+
return value === undefined || value === null || value === '';
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The labels a mapping claims (LP-308): the exact type labels and status
|
|
57
|
+
* states, and the attribute prefixes. Derived from the mapping, never a
|
|
58
|
+
* convention.
|
|
59
|
+
*/
|
|
60
|
+
export function labelClaimFromJsonfileMapping(mapping) {
|
|
61
|
+
const exact = [];
|
|
62
|
+
const prefixes = [];
|
|
63
|
+
// The type rides the native `type` field, not a label, so the claim covers
|
|
64
|
+
// only the statuses and the attribute prefixes.
|
|
65
|
+
for (const entry of Object.values(mapping.statuses ?? {})) {
|
|
66
|
+
exact.push(...entry.remote);
|
|
67
|
+
}
|
|
68
|
+
for (const prefix of Object.values(mapping.attributes ?? {})) {
|
|
69
|
+
if (prefix.length > 0)
|
|
70
|
+
prefixes.push(`${prefix}:`);
|
|
71
|
+
}
|
|
72
|
+
return labelClaim(exact, prefixes);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Push: a board op becomes a jsonfile request description.
|
|
76
|
+
*
|
|
77
|
+
* A create/update carries `title`, `body`, the native `type`, the native
|
|
78
|
+
* status name in `state`, and the labels derived from the mapping (the type
|
|
79
|
+
* labels plus one `<prefix>:<value>` label per mapped attribute). An attribute
|
|
80
|
+
* value that will not coerce is omitted and reported in `problems`. A delete
|
|
81
|
+
* carries only its kind — the connector removes the issue from the file.
|
|
82
|
+
*/
|
|
83
|
+
export function describeRequest(op, mapping, attributes, _roster = new Map(), _periods = new Map()) {
|
|
84
|
+
if (op.kind === 'delete') {
|
|
85
|
+
return { request: { kind: 'delete' }, problems: [], resourceGaps: [], periodGaps: [] };
|
|
86
|
+
}
|
|
87
|
+
const m = mapping;
|
|
88
|
+
const labels = [];
|
|
89
|
+
const problems = [];
|
|
90
|
+
let state;
|
|
91
|
+
// The file has a native `type` field, so the mapped value is written there
|
|
92
|
+
// and nowhere else — writing it as a label too would be the same fact twice.
|
|
93
|
+
const type = mapTypeToRemote(m.types ?? {}, op.fields.type);
|
|
94
|
+
const remoteStatus = mapStatusToRemote(m.statuses ?? {}, op.fields.status);
|
|
95
|
+
if (remoteStatus !== undefined)
|
|
96
|
+
state = remoteStatus;
|
|
97
|
+
for (const [attribute, prefix] of Object.entries(m.attributes ?? {})) {
|
|
98
|
+
const value = op.fields.attributes?.[attribute];
|
|
99
|
+
if (isEmptyValue(value))
|
|
100
|
+
continue;
|
|
101
|
+
const attributeType = attributes[attribute]?.type ?? 'string';
|
|
102
|
+
const field = fieldFor(attributeType);
|
|
103
|
+
const result = coerceToRemote(attributeType, value, field);
|
|
104
|
+
if (!result.ok) {
|
|
105
|
+
problems.push({ attribute, direction: 'push', reason: result.reason, options: result.options });
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (field.kind === 'labels') {
|
|
109
|
+
for (const item of result.value)
|
|
110
|
+
labels.push(`${prefix}:${item}`);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
labels.push(`${prefix}:${String(result.value)}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
request: {
|
|
118
|
+
kind: op.kind,
|
|
119
|
+
title: op.fields.title,
|
|
120
|
+
body: op.fields.body,
|
|
121
|
+
type,
|
|
122
|
+
labels,
|
|
123
|
+
labelClaim: labelClaimFromJsonfileMapping(m),
|
|
124
|
+
state,
|
|
125
|
+
},
|
|
126
|
+
problems,
|
|
127
|
+
resourceGaps: [],
|
|
128
|
+
periodGaps: [],
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Pull: a jsonfile issue record becomes board fields.
|
|
133
|
+
*
|
|
134
|
+
* `title` and `body` pass through (the managed block stripped, as everywhere);
|
|
135
|
+
* `type` is recovered when exactly one board type's native `remote` or labels
|
|
136
|
+
* match; `status` from the native `status` field; `attributes` from
|
|
137
|
+
* `<prefix>:<value>` labels. Ambiguity leaves the field absent — the pull
|
|
138
|
+
* planner breaks ties with the board's hierarchy.
|
|
139
|
+
*/
|
|
140
|
+
export function fieldsFromRecord(record, mapping, attributes, _roster = new Map(), _periods = new Map()) {
|
|
141
|
+
const m = mapping;
|
|
142
|
+
const labels = labelsOf(record);
|
|
143
|
+
const patch = {};
|
|
144
|
+
const problems = [];
|
|
145
|
+
const result = { patch, problems, unknownAccounts: [] };
|
|
146
|
+
if (typeof record.title === 'string')
|
|
147
|
+
patch.title = record.title;
|
|
148
|
+
// The managed block is the sync layer's own output, never the document's
|
|
149
|
+
// prose — stripped on the way back (LP-309, LP-314).
|
|
150
|
+
if (typeof record.body === 'string') {
|
|
151
|
+
const parsed = parseManagedBlock(record.body);
|
|
152
|
+
patch.body = parsed.found ? parsed.body : record.body;
|
|
153
|
+
}
|
|
154
|
+
// Type: every board type whose mapped values match the native `type` field.
|
|
155
|
+
const remoteType = typeof record.type === 'string' ? record.type : undefined;
|
|
156
|
+
const typeCandidates = boardTypesMatching(m.types ?? {}, { remoteType, labels });
|
|
157
|
+
if (typeCandidates.length === 1)
|
|
158
|
+
patch.type = typeCandidates[0];
|
|
159
|
+
// Status: the native status name resolved through the mapping.
|
|
160
|
+
if (typeof record.status === 'string' && record.status !== '') {
|
|
161
|
+
const resolution = mapStatusFromRemote(m.statuses ?? {}, [record.status]);
|
|
162
|
+
if (resolution.status !== undefined)
|
|
163
|
+
patch.status = resolution.status;
|
|
164
|
+
}
|
|
165
|
+
// Attributes: `<prefix>:<value>` labels, coerced back by prefix and type.
|
|
166
|
+
const recovered = {};
|
|
167
|
+
for (const [attribute, prefix] of Object.entries(m.attributes ?? {})) {
|
|
168
|
+
const attributeType = attributes[attribute]?.type ?? 'string';
|
|
169
|
+
const field = fieldFor(attributeType);
|
|
170
|
+
if (field.kind === 'labels') {
|
|
171
|
+
const items = labels
|
|
172
|
+
.filter((label) => label.startsWith(`${prefix}:`))
|
|
173
|
+
.map((label) => label.slice(prefix.length + 1))
|
|
174
|
+
.filter((item) => item.length > 0);
|
|
175
|
+
if (items.length > 0)
|
|
176
|
+
recovered[attribute] = items;
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
const marker = labels.find((label) => label.startsWith(`${prefix}:`));
|
|
180
|
+
if (marker === undefined)
|
|
181
|
+
continue;
|
|
182
|
+
const raw = marker.slice(prefix.length + 1);
|
|
183
|
+
const coerced = coerceFromRemote(attributeType, raw, { values: attributes[attribute]?.values });
|
|
184
|
+
if (coerced.ok) {
|
|
185
|
+
recovered[attribute] = coerced.value;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
problems.push({ attribute, direction: 'pull', reason: coerced.reason, options: coerced.options });
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (Object.keys(recovered).length > 0)
|
|
192
|
+
patch.attributes = recovered;
|
|
193
|
+
return result;
|
|
194
|
+
}
|
|
195
|
+
export const jsonfileTranslator = {
|
|
196
|
+
describeRequest,
|
|
197
|
+
fieldsFromRecord,
|
|
198
|
+
};
|
|
199
|
+
//# sourceMappingURL=translator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translator.js","sourceRoot":"","sources":["../../../../src/remote/providers/jsonfile/translator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Linear 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 Linear specifically, and is called
|
|
7
|
+
* when the remote is opened (LP-259), exactly as `storage/views.ts` owns the
|
|
8
|
+
* contents of a view file.
|
|
9
|
+
*
|
|
10
|
+
* Linear has native workflow states, native relations, native cycles and a
|
|
11
|
+
* native assignee — but **no issue types** and **no custom fields** (LP-267).
|
|
12
|
+
* So the mapping is a split: types ride labels (rung 3, exactly as GitHub),
|
|
13
|
+
* statuses name Linear workflow states, and every board attribute beyond the
|
|
14
|
+
* fixed fields rides labels or the managed block (rung 3/4). The fixed fields
|
|
15
|
+
* themselves — `estimate` (the effort attribute) and `priority` (0–4) — are
|
|
16
|
+
* LP-333's work; `effort` below names the effort attribute, and `priority`
|
|
17
|
+
* remains fixed to Linear's 0–4 scale (note 4 of the capability matrix).
|
|
18
|
+
*
|
|
19
|
+
* - `types` board type → `{ labels: [...] }` (Linear has no native type)
|
|
20
|
+
* - `statuses` board status id → the Linear workflow state name(s) plus
|
|
21
|
+
* which one a push writes and whether it is terminal
|
|
22
|
+
* - `effort` `{ attribute: <name> }` — which board attribute maps to
|
|
23
|
+
* Linear's native `estimate` (LP-333). The value is checked
|
|
24
|
+
* against the team's estimation scale at preflight, never
|
|
25
|
+
* silently rounded.
|
|
26
|
+
* - `attributes` board attribute name → the label prefix carrying its value
|
|
27
|
+
* - `accounts` `{ via: <attribute> }` — which resource attribute carries
|
|
28
|
+
* the Linear account (an email, a Linear user id or a name)
|
|
29
|
+
* - `periods` which period level maps to a Linear cycle — the carrier is
|
|
30
|
+
* fixed to `sprint`, the cycle's counterpart (LP-334)
|
|
31
|
+
*
|
|
32
|
+
* Everything in Linear is team-scoped, so the connection block names the team:
|
|
33
|
+
* `team` is the team key (or id), and every query carries it.
|
|
34
|
+
*/
|
|
35
|
+
import { z } from 'zod';
|
|
36
|
+
export declare const linearConfigSchema: z.ZodObject<{
|
|
37
|
+
connection: z.ZodObject<{
|
|
38
|
+
team: z.ZodString;
|
|
39
|
+
api_key: z.ZodOptional<z.ZodString>;
|
|
40
|
+
base_url: z.ZodOptional<z.ZodString>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
mapping: z.ZodObject<{
|
|
43
|
+
types: z.ZodPipe<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodObject<{
|
|
44
|
+
remote: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
45
|
+
type: z.ZodOptional<z.ZodString>;
|
|
46
|
+
labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
47
|
+
}, z.core.$strip>]>>>, z.ZodTransform<import("../../mapping.js").TypeMappings, Record<string, string | string[] | {
|
|
48
|
+
remote?: string | string[] | undefined;
|
|
49
|
+
type?: string | undefined;
|
|
50
|
+
labels?: string[] | undefined;
|
|
51
|
+
}>>>;
|
|
52
|
+
statuses: z.ZodPipe<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodObject<{
|
|
53
|
+
remote: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
|
|
54
|
+
push: z.ZodOptional<z.ZodString>;
|
|
55
|
+
closed: z.ZodOptional<z.ZodBoolean>;
|
|
56
|
+
}, z.core.$strip>]>>>, z.ZodTransform<import("../../mapping.js").StatusMappings, Record<string, string | string[] | {
|
|
57
|
+
remote: string | string[];
|
|
58
|
+
push?: string | undefined;
|
|
59
|
+
closed?: boolean | undefined;
|
|
60
|
+
}>>>;
|
|
61
|
+
effort: z.ZodOptional<z.ZodObject<{
|
|
62
|
+
attribute: z.ZodString;
|
|
63
|
+
}, z.core.$strip>>;
|
|
64
|
+
attributes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
65
|
+
accounts: z.ZodOptional<z.ZodObject<{
|
|
66
|
+
via: z.ZodString;
|
|
67
|
+
}, z.core.$strip>>;
|
|
68
|
+
periods: z.ZodOptional<z.ZodPipe<z.ZodObject<{
|
|
69
|
+
container: z.ZodString;
|
|
70
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
71
|
+
container: string;
|
|
72
|
+
carrier: "sprint";
|
|
73
|
+
}, {
|
|
74
|
+
container: string;
|
|
75
|
+
}>>>;
|
|
76
|
+
}, z.core.$strip>;
|
|
77
|
+
}, z.core.$strip>;
|
|
78
|
+
/** The validated shape of a Linear remote declaration. */
|
|
79
|
+
export type LinearConfig = z.infer<typeof linearConfigSchema>;
|
|
80
|
+
/** The `mapping` block, after validation. */
|
|
81
|
+
export type LinearMapping = LinearConfig['mapping'];
|
|
82
|
+
/** The `connection` block, after validation. */
|
|
83
|
+
export type LinearConnection = LinearConfig['connection'];
|