@chief-clancy/core 0.1.0 → 0.1.1
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/README.md +17 -14
- package/dist/board/azdo/azdo-board.d.ts.map +1 -1
- package/dist/board/azdo/azdo-board.js +1 -0
- package/dist/board/azdo/azdo-board.js.map +1 -1
- package/dist/board/github/api/api.d.ts.map +1 -1
- package/dist/board/github/api/api.js +5 -2
- package/dist/board/github/api/api.js.map +1 -1
- package/dist/board/github/github-board.d.ts.map +1 -1
- package/dist/board/github/github-board.js +2 -1
- package/dist/board/github/github-board.js.map +1 -1
- package/dist/board/github/relations/relations.js +2 -2
- package/dist/board/github/relations/relations.js.map +1 -1
- package/dist/board/jira/jira-board.d.ts.map +1 -1
- package/dist/board/jira/jira-board.js +1 -0
- package/dist/board/jira/jira-board.js.map +1 -1
- package/dist/board/linear/linear-board.d.ts.map +1 -1
- package/dist/board/linear/linear-board.js +1 -0
- package/dist/board/linear/linear-board.js.map +1 -1
- package/dist/board/notion/notion-board.d.ts.map +1 -1
- package/dist/board/notion/notion-board.js +2 -1
- package/dist/board/notion/notion-board.js.map +1 -1
- package/dist/board/shortcut/shortcut-board.d.ts.map +1 -1
- package/dist/board/shortcut/shortcut-board.js +1 -0
- package/dist/board/shortcut/shortcut-board.js.map +1 -1
- package/dist/index.d.ts +1 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -23
- package/dist/index.js.map +1 -1
- package/dist/shared/remote/remote.js.map +1 -1
- package/dist/types/board.d.ts +2 -0
- package/dist/types/board.d.ts.map +1 -1
- package/package.json +6 -2
- package/dist/dev/lifecycle/branch/branch.d.ts +0 -35
- package/dist/dev/lifecycle/branch/branch.d.ts.map +0 -1
- package/dist/dev/lifecycle/branch/branch.js +0 -48
- package/dist/dev/lifecycle/branch/branch.js.map +0 -1
- package/dist/dev/lifecycle/branch/index.d.ts +0 -2
- package/dist/dev/lifecycle/branch/index.d.ts.map +0 -1
- package/dist/dev/lifecycle/branch/index.js +0 -2
- package/dist/dev/lifecycle/branch/index.js.map +0 -1
- package/dist/dev/lifecycle/commit-type/commit-type.d.ts +0 -22
- package/dist/dev/lifecycle/commit-type/commit-type.d.ts.map +0 -1
- package/dist/dev/lifecycle/commit-type/commit-type.js +0 -50
- package/dist/dev/lifecycle/commit-type/commit-type.js.map +0 -1
- package/dist/dev/lifecycle/commit-type/index.d.ts +0 -2
- package/dist/dev/lifecycle/commit-type/index.d.ts.map +0 -1
- package/dist/dev/lifecycle/commit-type/index.js +0 -2
- package/dist/dev/lifecycle/commit-type/index.js.map +0 -1
- package/dist/dev/lifecycle/cost/cost.d.ts +0 -28
- package/dist/dev/lifecycle/cost/cost.d.ts.map +0 -1
- package/dist/dev/lifecycle/cost/cost.js +0 -36
- package/dist/dev/lifecycle/cost/cost.js.map +0 -1
- package/dist/dev/lifecycle/deliver-epic/deliver-epic.d.ts +0 -44
- package/dist/dev/lifecycle/deliver-epic/deliver-epic.d.ts.map +0 -1
- package/dist/dev/lifecycle/deliver-epic/deliver-epic.js +0 -75
- package/dist/dev/lifecycle/deliver-epic/deliver-epic.js.map +0 -1
- package/dist/dev/lifecycle/deliver-ticket/deliver-ticket.d.ts +0 -51
- package/dist/dev/lifecycle/deliver-ticket/deliver-ticket.d.ts.map +0 -1
- package/dist/dev/lifecycle/deliver-ticket/deliver-ticket.js +0 -132
- package/dist/dev/lifecycle/deliver-ticket/deliver-ticket.js.map +0 -1
- package/dist/dev/lifecycle/epic/epic.d.ts +0 -66
- package/dist/dev/lifecycle/epic/epic.d.ts.map +0 -1
- package/dist/dev/lifecycle/epic/epic.js +0 -91
- package/dist/dev/lifecycle/epic/epic.js.map +0 -1
- package/dist/dev/lifecycle/epic/index.d.ts +0 -2
- package/dist/dev/lifecycle/epic/index.d.ts.map +0 -1
- package/dist/dev/lifecycle/epic/index.js +0 -2
- package/dist/dev/lifecycle/epic/index.js.map +0 -1
- package/dist/dev/lifecycle/feasibility/feasibility.d.ts +0 -55
- package/dist/dev/lifecycle/feasibility/feasibility.d.ts.map +0 -1
- package/dist/dev/lifecycle/feasibility/feasibility.js +0 -75
- package/dist/dev/lifecycle/feasibility/feasibility.js.map +0 -1
- package/dist/dev/lifecycle/fetch-ticket/fetch-ticket.d.ts +0 -49
- package/dist/dev/lifecycle/fetch-ticket/fetch-ticket.d.ts.map +0 -1
- package/dist/dev/lifecycle/fetch-ticket/fetch-ticket.js +0 -81
- package/dist/dev/lifecycle/fetch-ticket/fetch-ticket.js.map +0 -1
- package/dist/dev/lifecycle/format/format.d.ts +0 -11
- package/dist/dev/lifecycle/format/format.d.ts.map +0 -1
- package/dist/dev/lifecycle/format/format.js +0 -23
- package/dist/dev/lifecycle/format/format.js.map +0 -1
- package/dist/dev/lifecycle/lock/index.d.ts +0 -3
- package/dist/dev/lifecycle/lock/index.d.ts.map +0 -1
- package/dist/dev/lifecycle/lock/index.js +0 -2
- package/dist/dev/lifecycle/lock/index.js.map +0 -1
- package/dist/dev/lifecycle/lock/lock.d.ts +0 -68
- package/dist/dev/lifecycle/lock/lock.d.ts.map +0 -1
- package/dist/dev/lifecycle/lock/lock.js +0 -125
- package/dist/dev/lifecycle/lock/lock.js.map +0 -1
- package/dist/dev/lifecycle/outcome/index.d.ts +0 -2
- package/dist/dev/lifecycle/outcome/index.d.ts.map +0 -1
- package/dist/dev/lifecycle/outcome/index.js +0 -2
- package/dist/dev/lifecycle/outcome/index.js.map +0 -1
- package/dist/dev/lifecycle/outcome/outcome.d.ts +0 -65
- package/dist/dev/lifecycle/outcome/outcome.d.ts.map +0 -1
- package/dist/dev/lifecycle/outcome/outcome.js +0 -61
- package/dist/dev/lifecycle/outcome/outcome.js.map +0 -1
- package/dist/dev/lifecycle/pr-creation/index.d.ts +0 -3
- package/dist/dev/lifecycle/pr-creation/index.d.ts.map +0 -1
- package/dist/dev/lifecycle/pr-creation/index.js +0 -2
- package/dist/dev/lifecycle/pr-creation/index.js.map +0 -1
- package/dist/dev/lifecycle/pr-creation/pr-creation.d.ts +0 -47
- package/dist/dev/lifecycle/pr-creation/pr-creation.d.ts.map +0 -1
- package/dist/dev/lifecycle/pr-creation/pr-creation.js +0 -143
- package/dist/dev/lifecycle/pr-creation/pr-creation.js.map +0 -1
- package/dist/dev/lifecycle/preflight/preflight.d.ts +0 -42
- package/dist/dev/lifecycle/preflight/preflight.d.ts.map +0 -1
- package/dist/dev/lifecycle/preflight/preflight.js +0 -101
- package/dist/dev/lifecycle/preflight/preflight.js.map +0 -1
- package/dist/dev/lifecycle/progress/index.d.ts +0 -3
- package/dist/dev/lifecycle/progress/index.d.ts.map +0 -1
- package/dist/dev/lifecycle/progress/index.js +0 -2
- package/dist/dev/lifecycle/progress/index.js.map +0 -1
- package/dist/dev/lifecycle/progress/progress.d.ts +0 -98
- package/dist/dev/lifecycle/progress/progress.d.ts.map +0 -1
- package/dist/dev/lifecycle/progress/progress.js +0 -212
- package/dist/dev/lifecycle/progress/progress.js.map +0 -1
- package/dist/dev/lifecycle/pull-request/azdo/azdo.d.ts +0 -86
- package/dist/dev/lifecycle/pull-request/azdo/azdo.d.ts.map +0 -1
- package/dist/dev/lifecycle/pull-request/azdo/azdo.js +0 -198
- package/dist/dev/lifecycle/pull-request/azdo/azdo.js.map +0 -1
- package/dist/dev/lifecycle/pull-request/azdo/index.d.ts +0 -2
- package/dist/dev/lifecycle/pull-request/azdo/index.d.ts.map +0 -1
- package/dist/dev/lifecycle/pull-request/azdo/index.js +0 -2
- package/dist/dev/lifecycle/pull-request/azdo/index.js.map +0 -1
- package/dist/dev/lifecycle/pull-request/bitbucket/cloud.d.ts +0 -85
- package/dist/dev/lifecycle/pull-request/bitbucket/cloud.d.ts.map +0 -1
- package/dist/dev/lifecycle/pull-request/bitbucket/cloud.js +0 -158
- package/dist/dev/lifecycle/pull-request/bitbucket/cloud.js.map +0 -1
- package/dist/dev/lifecycle/pull-request/bitbucket/index.d.ts +0 -3
- package/dist/dev/lifecycle/pull-request/bitbucket/index.d.ts.map +0 -1
- package/dist/dev/lifecycle/pull-request/bitbucket/index.js +0 -3
- package/dist/dev/lifecycle/pull-request/bitbucket/index.js.map +0 -1
- package/dist/dev/lifecycle/pull-request/bitbucket/server.d.ts +0 -85
- package/dist/dev/lifecycle/pull-request/bitbucket/server.d.ts.map +0 -1
- package/dist/dev/lifecycle/pull-request/bitbucket/server.js +0 -168
- package/dist/dev/lifecycle/pull-request/bitbucket/server.js.map +0 -1
- package/dist/dev/lifecycle/pull-request/github/github.d.ts +0 -107
- package/dist/dev/lifecycle/pull-request/github/github.d.ts.map +0 -1
- package/dist/dev/lifecycle/pull-request/github/github.js +0 -225
- package/dist/dev/lifecycle/pull-request/github/github.js.map +0 -1
- package/dist/dev/lifecycle/pull-request/github/index.d.ts +0 -2
- package/dist/dev/lifecycle/pull-request/github/index.d.ts.map +0 -1
- package/dist/dev/lifecycle/pull-request/github/index.js +0 -2
- package/dist/dev/lifecycle/pull-request/github/index.js.map +0 -1
- package/dist/dev/lifecycle/pull-request/gitlab/gitlab.d.ts +0 -103
- package/dist/dev/lifecycle/pull-request/gitlab/gitlab.d.ts.map +0 -1
- package/dist/dev/lifecycle/pull-request/gitlab/gitlab.js +0 -215
- package/dist/dev/lifecycle/pull-request/gitlab/gitlab.js.map +0 -1
- package/dist/dev/lifecycle/pull-request/gitlab/index.d.ts +0 -2
- package/dist/dev/lifecycle/pull-request/gitlab/index.d.ts.map +0 -1
- package/dist/dev/lifecycle/pull-request/gitlab/index.js +0 -2
- package/dist/dev/lifecycle/pull-request/gitlab/index.js.map +0 -1
- package/dist/dev/lifecycle/pull-request/post-pr/post-pr.d.ts +0 -44
- package/dist/dev/lifecycle/pull-request/post-pr/post-pr.d.ts.map +0 -1
- package/dist/dev/lifecycle/pull-request/post-pr/post-pr.js +0 -64
- package/dist/dev/lifecycle/pull-request/post-pr/post-pr.js.map +0 -1
- package/dist/dev/lifecycle/pull-request/pr-body/index.d.ts +0 -3
- package/dist/dev/lifecycle/pull-request/pr-body/index.d.ts.map +0 -1
- package/dist/dev/lifecycle/pull-request/pr-body/index.js +0 -2
- package/dist/dev/lifecycle/pull-request/pr-body/index.js.map +0 -1
- package/dist/dev/lifecycle/pull-request/pr-body/pr-body.d.ts +0 -65
- package/dist/dev/lifecycle/pull-request/pr-body/pr-body.d.ts.map +0 -1
- package/dist/dev/lifecycle/pull-request/pr-body/pr-body.js +0 -144
- package/dist/dev/lifecycle/pull-request/pr-body/pr-body.js.map +0 -1
- package/dist/dev/lifecycle/pull-request/rework-comment/rework-comment.d.ts +0 -30
- package/dist/dev/lifecycle/pull-request/rework-comment/rework-comment.d.ts.map +0 -1
- package/dist/dev/lifecycle/pull-request/rework-comment/rework-comment.js +0 -39
- package/dist/dev/lifecycle/pull-request/rework-comment/rework-comment.js.map +0 -1
- package/dist/dev/lifecycle/quality/quality.d.ts +0 -99
- package/dist/dev/lifecycle/quality/quality.d.ts.map +0 -1
- package/dist/dev/lifecycle/quality/quality.js +0 -213
- package/dist/dev/lifecycle/quality/quality.js.map +0 -1
- package/dist/dev/lifecycle/resume/resume.d.ts +0 -64
- package/dist/dev/lifecycle/resume/resume.d.ts.map +0 -1
- package/dist/dev/lifecycle/resume/resume.js +0 -171
- package/dist/dev/lifecycle/resume/resume.js.map +0 -1
- package/dist/dev/lifecycle/rework/rework-builders.d.ts +0 -20
- package/dist/dev/lifecycle/rework/rework-builders.d.ts.map +0 -1
- package/dist/dev/lifecycle/rework/rework-builders.js +0 -203
- package/dist/dev/lifecycle/rework/rework-builders.js.map +0 -1
- package/dist/dev/lifecycle/rework/rework-handlers.d.ts +0 -50
- package/dist/dev/lifecycle/rework/rework-handlers.d.ts.map +0 -1
- package/dist/dev/lifecycle/rework/rework-handlers.js +0 -41
- package/dist/dev/lifecycle/rework/rework-handlers.js.map +0 -1
- package/dist/dev/lifecycle/rework/rework.d.ts +0 -63
- package/dist/dev/lifecycle/rework/rework.d.ts.map +0 -1
- package/dist/dev/lifecycle/rework/rework.js +0 -141
- package/dist/dev/lifecycle/rework/rework.js.map +0 -1
- package/dist/dev/pipeline/context.d.ts +0 -105
- package/dist/dev/pipeline/context.d.ts.map +0 -1
- package/dist/dev/pipeline/context.js +0 -107
- package/dist/dev/pipeline/context.js.map +0 -1
- package/dist/dev/pipeline/index.d.ts +0 -6
- package/dist/dev/pipeline/index.d.ts.map +0 -1
- package/dist/dev/pipeline/index.js +0 -5
- package/dist/dev/pipeline/index.js.map +0 -1
- package/dist/dev/pipeline/phases/branch-setup/branch-setup.d.ts +0 -62
- package/dist/dev/pipeline/phases/branch-setup/branch-setup.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/branch-setup/branch-setup.js +0 -128
- package/dist/dev/pipeline/phases/branch-setup/branch-setup.js.map +0 -1
- package/dist/dev/pipeline/phases/branch-setup/index.d.ts +0 -3
- package/dist/dev/pipeline/phases/branch-setup/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/branch-setup/index.js +0 -2
- package/dist/dev/pipeline/phases/branch-setup/index.js.map +0 -1
- package/dist/dev/pipeline/phases/cleanup-phase/cleanup-phase.d.ts +0 -32
- package/dist/dev/pipeline/phases/cleanup-phase/cleanup-phase.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/cleanup-phase/cleanup-phase.js +0 -32
- package/dist/dev/pipeline/phases/cleanup-phase/cleanup-phase.js.map +0 -1
- package/dist/dev/pipeline/phases/cleanup-phase/index.d.ts +0 -3
- package/dist/dev/pipeline/phases/cleanup-phase/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/cleanup-phase/index.js +0 -2
- package/dist/dev/pipeline/phases/cleanup-phase/index.js.map +0 -1
- package/dist/dev/pipeline/phases/cost-phase/cost-phase.d.ts +0 -40
- package/dist/dev/pipeline/phases/cost-phase/cost-phase.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/cost-phase/cost-phase.js +0 -43
- package/dist/dev/pipeline/phases/cost-phase/cost-phase.js.map +0 -1
- package/dist/dev/pipeline/phases/cost-phase/index.d.ts +0 -3
- package/dist/dev/pipeline/phases/cost-phase/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/cost-phase/index.js +0 -2
- package/dist/dev/pipeline/phases/cost-phase/index.js.map +0 -1
- package/dist/dev/pipeline/phases/deliver-phase/deliver-phase.d.ts +0 -68
- package/dist/dev/pipeline/phases/deliver-phase/deliver-phase.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/deliver-phase/deliver-phase.js +0 -125
- package/dist/dev/pipeline/phases/deliver-phase/deliver-phase.js.map +0 -1
- package/dist/dev/pipeline/phases/deliver-phase/index.d.ts +0 -3
- package/dist/dev/pipeline/phases/deliver-phase/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/deliver-phase/index.js +0 -2
- package/dist/dev/pipeline/phases/deliver-phase/index.js.map +0 -1
- package/dist/dev/pipeline/phases/dry-run/dry-run.d.ts +0 -38
- package/dist/dev/pipeline/phases/dry-run/dry-run.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/dry-run/dry-run.js +0 -33
- package/dist/dev/pipeline/phases/dry-run/dry-run.js.map +0 -1
- package/dist/dev/pipeline/phases/dry-run/index.d.ts +0 -2
- package/dist/dev/pipeline/phases/dry-run/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/dry-run/index.js +0 -2
- package/dist/dev/pipeline/phases/dry-run/index.js.map +0 -1
- package/dist/dev/pipeline/phases/epic-completion/epic-completion.d.ts +0 -48
- package/dist/dev/pipeline/phases/epic-completion/epic-completion.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/epic-completion/epic-completion.js +0 -42
- package/dist/dev/pipeline/phases/epic-completion/epic-completion.js.map +0 -1
- package/dist/dev/pipeline/phases/epic-completion/index.d.ts +0 -3
- package/dist/dev/pipeline/phases/epic-completion/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/epic-completion/index.js +0 -2
- package/dist/dev/pipeline/phases/epic-completion/index.js.map +0 -1
- package/dist/dev/pipeline/phases/feasibility/feasibility.d.ts +0 -52
- package/dist/dev/pipeline/phases/feasibility/feasibility.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/feasibility/feasibility.js +0 -34
- package/dist/dev/pipeline/phases/feasibility/feasibility.js.map +0 -1
- package/dist/dev/pipeline/phases/feasibility/index.d.ts +0 -3
- package/dist/dev/pipeline/phases/feasibility/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/feasibility/index.js +0 -2
- package/dist/dev/pipeline/phases/feasibility/index.js.map +0 -1
- package/dist/dev/pipeline/phases/index.d.ts +0 -26
- package/dist/dev/pipeline/phases/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/index.js +0 -14
- package/dist/dev/pipeline/phases/index.js.map +0 -1
- package/dist/dev/pipeline/phases/lock-check/index.d.ts +0 -3
- package/dist/dev/pipeline/phases/lock-check/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/lock-check/index.js +0 -2
- package/dist/dev/pipeline/phases/lock-check/index.js.map +0 -1
- package/dist/dev/pipeline/phases/lock-check/lock-check.d.ts +0 -55
- package/dist/dev/pipeline/phases/lock-check/lock-check.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/lock-check/lock-check.js +0 -60
- package/dist/dev/pipeline/phases/lock-check/lock-check.js.map +0 -1
- package/dist/dev/pipeline/phases/pr-retry/index.d.ts +0 -3
- package/dist/dev/pipeline/phases/pr-retry/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/pr-retry/index.js +0 -2
- package/dist/dev/pipeline/phases/pr-retry/index.js.map +0 -1
- package/dist/dev/pipeline/phases/pr-retry/pr-retry.d.ts +0 -58
- package/dist/dev/pipeline/phases/pr-retry/pr-retry.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/pr-retry/pr-retry.js +0 -82
- package/dist/dev/pipeline/phases/pr-retry/pr-retry.js.map +0 -1
- package/dist/dev/pipeline/phases/preflight-phase/index.d.ts +0 -3
- package/dist/dev/pipeline/phases/preflight-phase/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/preflight-phase/index.js +0 -2
- package/dist/dev/pipeline/phases/preflight-phase/index.js.map +0 -1
- package/dist/dev/pipeline/phases/preflight-phase/preflight-phase.d.ts +0 -42
- package/dist/dev/pipeline/phases/preflight-phase/preflight-phase.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/preflight-phase/preflight-phase.js +0 -41
- package/dist/dev/pipeline/phases/preflight-phase/preflight-phase.js.map +0 -1
- package/dist/dev/pipeline/phases/rework-detection/index.d.ts +0 -3
- package/dist/dev/pipeline/phases/rework-detection/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/rework-detection/index.js +0 -2
- package/dist/dev/pipeline/phases/rework-detection/index.js.map +0 -1
- package/dist/dev/pipeline/phases/rework-detection/rework-detection.d.ts +0 -40
- package/dist/dev/pipeline/phases/rework-detection/rework-detection.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/rework-detection/rework-detection.js +0 -38
- package/dist/dev/pipeline/phases/rework-detection/rework-detection.js.map +0 -1
- package/dist/dev/pipeline/phases/ticket-fetch/index.d.ts +0 -3
- package/dist/dev/pipeline/phases/ticket-fetch/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/ticket-fetch/index.js +0 -2
- package/dist/dev/pipeline/phases/ticket-fetch/index.js.map +0 -1
- package/dist/dev/pipeline/phases/ticket-fetch/ticket-fetch.d.ts +0 -46
- package/dist/dev/pipeline/phases/ticket-fetch/ticket-fetch.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/ticket-fetch/ticket-fetch.js +0 -64
- package/dist/dev/pipeline/phases/ticket-fetch/ticket-fetch.js.map +0 -1
- package/dist/dev/pipeline/phases/transition/index.d.ts +0 -3
- package/dist/dev/pipeline/phases/transition/index.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/transition/index.js +0 -2
- package/dist/dev/pipeline/phases/transition/index.js.map +0 -1
- package/dist/dev/pipeline/phases/transition/transition.d.ts +0 -30
- package/dist/dev/pipeline/phases/transition/transition.d.ts.map +0 -1
- package/dist/dev/pipeline/phases/transition/transition.js +0 -27
- package/dist/dev/pipeline/phases/transition/transition.js.map +0 -1
- package/dist/dev/pipeline/run-pipeline.d.ts +0 -98
- package/dist/dev/pipeline/run-pipeline.d.ts.map +0 -1
- package/dist/dev/pipeline/run-pipeline.js +0 -106
- package/dist/dev/pipeline/run-pipeline.js.map +0 -1
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Epic branch management.
|
|
3
|
-
*
|
|
4
|
-
* Ensures epic branches exist, builds epic context for child PRs,
|
|
5
|
-
* and gathers child entries for the final epic PR.
|
|
6
|
-
*/
|
|
7
|
-
import type { ProgressEntry, ProgressFs } from '../../../dev/lifecycle/progress/index.js';
|
|
8
|
-
import type { EpicContext } from '../../../dev/lifecycle/pull-request/pr-body/index.js';
|
|
9
|
-
import type { ExecGit } from '../../../shared/git-ops/index.js';
|
|
10
|
-
/** Result of ensuring an epic branch. */
|
|
11
|
-
type EnsureEpicResult = {
|
|
12
|
-
readonly ok: boolean;
|
|
13
|
-
readonly error?: string;
|
|
14
|
-
};
|
|
15
|
-
/** Options for {@link ensureEpicBranch}. */
|
|
16
|
-
type EnsureEpicOpts = {
|
|
17
|
-
readonly exec: ExecGit;
|
|
18
|
-
readonly epicBranch: string;
|
|
19
|
-
readonly baseBranch: string;
|
|
20
|
-
};
|
|
21
|
-
/** Options for {@link buildEpicContext}. */
|
|
22
|
-
type BuildEpicContextOpts = {
|
|
23
|
-
readonly progressFs: ProgressFs;
|
|
24
|
-
readonly projectRoot: string;
|
|
25
|
-
readonly parent: string | undefined;
|
|
26
|
-
readonly targetBranch: string;
|
|
27
|
-
readonly ticketKey: string;
|
|
28
|
-
};
|
|
29
|
-
/** Options for {@link gatherChildEntries}. */
|
|
30
|
-
type GatherChildOpts = {
|
|
31
|
-
readonly progressFs: ProgressFs;
|
|
32
|
-
readonly projectRoot: string;
|
|
33
|
-
readonly epicKey: string;
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* Ensure the epic branch exists locally and on the remote.
|
|
37
|
-
*
|
|
38
|
-
* If it exists on the remote, fetches it locally. If it only exists
|
|
39
|
-
* locally (not remote), returns an error (safety guard for stale
|
|
40
|
-
* local branches). If it doesn't exist, creates from
|
|
41
|
-
* `origin/{baseBranch}` and pushes.
|
|
42
|
-
*
|
|
43
|
-
* @param opts - Options with DI dependencies.
|
|
44
|
-
* @returns Result indicating success or failure with error message.
|
|
45
|
-
*/
|
|
46
|
-
export declare function ensureEpicBranch(opts: EnsureEpicOpts): EnsureEpicResult;
|
|
47
|
-
/**
|
|
48
|
-
* Build epic context for child PRs targeting epic/milestone branches.
|
|
49
|
-
*
|
|
50
|
-
* Returns `undefined` if the target is not an epic branch or no parent.
|
|
51
|
-
*
|
|
52
|
-
* @param opts - Options with progress FS and branch info.
|
|
53
|
-
* @returns Epic context for PR body, or `undefined`.
|
|
54
|
-
*/
|
|
55
|
-
export declare function buildEpicContext(opts: BuildEpicContextOpts): EpicContext | undefined;
|
|
56
|
-
/**
|
|
57
|
-
* Gather child progress entries for an epic PR body.
|
|
58
|
-
*
|
|
59
|
-
* Collects entries with delivered statuses whose parent matches the epic key.
|
|
60
|
-
*
|
|
61
|
-
* @param opts - Options with progress FS and epic key.
|
|
62
|
-
* @returns Child entries for the epic PR body.
|
|
63
|
-
*/
|
|
64
|
-
export declare function gatherChildEntries(opts: GatherChildOpts): readonly ProgressEntry[];
|
|
65
|
-
export {};
|
|
66
|
-
//# sourceMappingURL=epic.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"epic.d.ts","sourceRoot":"","sources":["../../../../src/dev/lifecycle/epic/epic.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACX,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AACnF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAc3D,yCAAyC;AACzC,KAAK,gBAAgB,GAAG;IACtB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,4CAA4C;AAC5C,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,4CAA4C;AAC5C,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,8CAA8C;AAC9C,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAIF;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAqBvE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,oBAAoB,GACzB,WAAW,GAAG,SAAS,CAczB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,eAAe,GACpB,SAAS,aAAa,EAAE,CAM1B"}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { findEntriesWithStatus } from '../../../dev/lifecycle/progress/index.js';
|
|
2
|
-
import { isEpicBranch } from '../../../dev/lifecycle/pull-request/pr-body/index.js';
|
|
3
|
-
import { branchExists, fetchRemoteBranch, pushBranch, remoteBranchExists, } from '../../../shared/git-ops/index.js';
|
|
4
|
-
import { DELIVERED_STATUSES } from '../../../types/progress.js';
|
|
5
|
-
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
6
|
-
/**
|
|
7
|
-
* Ensure the epic branch exists locally and on the remote.
|
|
8
|
-
*
|
|
9
|
-
* If it exists on the remote, fetches it locally. If it only exists
|
|
10
|
-
* locally (not remote), returns an error (safety guard for stale
|
|
11
|
-
* local branches). If it doesn't exist, creates from
|
|
12
|
-
* `origin/{baseBranch}` and pushes.
|
|
13
|
-
*
|
|
14
|
-
* @param opts - Options with DI dependencies.
|
|
15
|
-
* @returns Result indicating success or failure with error message.
|
|
16
|
-
*/
|
|
17
|
-
export function ensureEpicBranch(opts) {
|
|
18
|
-
const { exec, epicBranch, baseBranch } = opts;
|
|
19
|
-
const existsOnRemote = remoteBranchExists(exec, epicBranch);
|
|
20
|
-
const existsLocally = branchExists(exec, epicBranch);
|
|
21
|
-
if (existsOnRemote) {
|
|
22
|
-
const fetched = fetchRemoteBranch(exec, epicBranch);
|
|
23
|
-
return fetched
|
|
24
|
-
? { ok: true }
|
|
25
|
-
: { ok: false, error: `Could not fetch ${epicBranch} from remote` };
|
|
26
|
-
}
|
|
27
|
-
if (existsLocally) {
|
|
28
|
-
return {
|
|
29
|
-
ok: false,
|
|
30
|
-
error: `${epicBranch} exists locally but not on remote — push manually: git push -u origin ${epicBranch}`,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
return createFreshEpic(exec, epicBranch, baseBranch);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Build epic context for child PRs targeting epic/milestone branches.
|
|
37
|
-
*
|
|
38
|
-
* Returns `undefined` if the target is not an epic branch or no parent.
|
|
39
|
-
*
|
|
40
|
-
* @param opts - Options with progress FS and branch info.
|
|
41
|
-
* @returns Epic context for PR body, or `undefined`.
|
|
42
|
-
*/
|
|
43
|
-
export function buildEpicContext(opts) {
|
|
44
|
-
const { progressFs, projectRoot, parent, targetBranch, ticketKey } = opts;
|
|
45
|
-
if (!parent || !isEpicBranch(targetBranch))
|
|
46
|
-
return undefined;
|
|
47
|
-
const siblingEntries = [...DELIVERED_STATUSES]
|
|
48
|
-
.flatMap((s) => findEntriesWithStatus(progressFs, projectRoot, s))
|
|
49
|
-
.filter((e) => e.parent === parent && e.key !== ticketKey);
|
|
50
|
-
return {
|
|
51
|
-
parentKey: parent,
|
|
52
|
-
siblingsDelivered: siblingEntries.length,
|
|
53
|
-
epicBranch: targetBranch,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Gather child progress entries for an epic PR body.
|
|
58
|
-
*
|
|
59
|
-
* Collects entries with delivered statuses whose parent matches the epic key.
|
|
60
|
-
*
|
|
61
|
-
* @param opts - Options with progress FS and epic key.
|
|
62
|
-
* @returns Child entries for the epic PR body.
|
|
63
|
-
*/
|
|
64
|
-
export function gatherChildEntries(opts) {
|
|
65
|
-
const { progressFs, projectRoot, epicKey } = opts;
|
|
66
|
-
return [...DELIVERED_STATUSES]
|
|
67
|
-
.flatMap((s) => findEntriesWithStatus(progressFs, projectRoot, s))
|
|
68
|
-
.filter((e) => e.parent === epicKey);
|
|
69
|
-
}
|
|
70
|
-
// ─── Internal helpers ────────────────────────────────────────────────────────
|
|
71
|
-
/** Create a fresh epic branch from remote base and push it. */
|
|
72
|
-
function createFreshEpic(exec, epicBranch, baseBranch) {
|
|
73
|
-
try {
|
|
74
|
-
exec(['fetch', 'origin', baseBranch]);
|
|
75
|
-
exec(['checkout', '-b', epicBranch, `origin/${baseBranch}`]);
|
|
76
|
-
const pushed = pushBranch(exec, epicBranch);
|
|
77
|
-
return pushed
|
|
78
|
-
? { ok: true }
|
|
79
|
-
: {
|
|
80
|
-
ok: false,
|
|
81
|
-
error: `Created ${epicBranch} locally but could not push`,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
catch (err) {
|
|
85
|
-
return {
|
|
86
|
-
ok: false,
|
|
87
|
-
error: `Could not create epic branch: ${err instanceof Error ? err.message : String(err)}`,
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=epic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"epic.js","sourceRoot":"","sources":["../../../../src/dev/lifecycle/epic/epic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/dev/lifecycle/epic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/dev/lifecycle/epic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lightweight feasibility check — evaluates whether a ticket can be
|
|
3
|
-
* implemented as pure code changes before creating branches or
|
|
4
|
-
* transitioning board status.
|
|
5
|
-
*
|
|
6
|
-
* The Claude invocation is dependency-injected for testability.
|
|
7
|
-
* Fails open: if Claude is unavailable or output is malformed the
|
|
8
|
-
* ticket is assumed feasible so work is never silently blocked.
|
|
9
|
-
*/
|
|
10
|
-
/** Ticket metadata needed for a feasibility check. */
|
|
11
|
-
type FeasibilityTicket = {
|
|
12
|
-
readonly key: string;
|
|
13
|
-
readonly title: string;
|
|
14
|
-
readonly description: string;
|
|
15
|
-
};
|
|
16
|
-
/** Result of a feasibility check. */
|
|
17
|
-
type FeasibilityResult = {
|
|
18
|
-
readonly feasible: boolean;
|
|
19
|
-
readonly reason?: string;
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* Build the feasibility evaluation prompt.
|
|
23
|
-
*
|
|
24
|
-
* @param ticket - The ticket to evaluate.
|
|
25
|
-
* @returns The prompt string for Claude.
|
|
26
|
-
*/
|
|
27
|
-
export declare function buildFeasibilityPrompt(ticket: FeasibilityTicket): string;
|
|
28
|
-
/**
|
|
29
|
-
* Parse raw Claude output into a feasibility result.
|
|
30
|
-
*
|
|
31
|
-
* Fails open — malformed or empty output is treated as feasible.
|
|
32
|
-
*
|
|
33
|
-
* @param stdout - The raw stdout from Claude.
|
|
34
|
-
* @returns The parsed feasibility result.
|
|
35
|
-
*/
|
|
36
|
-
export declare function parseFeasibilityResponse(stdout: string): FeasibilityResult;
|
|
37
|
-
/** Invoke Claude in print mode and return stdout + success flag. */
|
|
38
|
-
type InvokeClaude = (prompt: string, model?: string) => {
|
|
39
|
-
readonly stdout: string;
|
|
40
|
-
readonly ok: boolean;
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* Run a feasibility check for a ticket.
|
|
44
|
-
*
|
|
45
|
-
* Fails open — if Claude fails or returns malformed output, the
|
|
46
|
-
* ticket is assumed feasible to avoid blocking work.
|
|
47
|
-
*
|
|
48
|
-
* @param invoke - Injected Claude print-mode invocation.
|
|
49
|
-
* @param ticket - The ticket to evaluate.
|
|
50
|
-
* @param model - Optional model override (e.g. `'sonnet'`).
|
|
51
|
-
* @returns A result indicating feasibility and an optional reason.
|
|
52
|
-
*/
|
|
53
|
-
export declare function checkFeasibility(invoke: InvokeClaude, ticket: FeasibilityTicket, model?: string): FeasibilityResult;
|
|
54
|
-
export {};
|
|
55
|
-
//# sourceMappingURL=feasibility.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feasibility.d.ts","sourceRoot":"","sources":["../../../../src/dev/lifecycle/feasibility/feasibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sDAAsD;AACtD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,qCAAqC;AACrC,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAuBxE;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAU1E;AAED,oEAAoE;AACpE,KAAK,YAAY,GAAG,CAClB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,KACX;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,iBAAiB,EACzB,KAAK,CAAC,EAAE,MAAM,GACb,iBAAiB,CAOnB"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lightweight feasibility check — evaluates whether a ticket can be
|
|
3
|
-
* implemented as pure code changes before creating branches or
|
|
4
|
-
* transitioning board status.
|
|
5
|
-
*
|
|
6
|
-
* The Claude invocation is dependency-injected for testability.
|
|
7
|
-
* Fails open: if Claude is unavailable or output is malformed the
|
|
8
|
-
* ticket is assumed feasible so work is never silently blocked.
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Build the feasibility evaluation prompt.
|
|
12
|
-
*
|
|
13
|
-
* @param ticket - The ticket to evaluate.
|
|
14
|
-
* @returns The prompt string for Claude.
|
|
15
|
-
*/
|
|
16
|
-
export function buildFeasibilityPrompt(ticket) {
|
|
17
|
-
return `You are evaluating whether a ticket can be implemented as pure code changes in a repository.
|
|
18
|
-
|
|
19
|
-
Ticket: [${ticket.key}] ${ticket.title}
|
|
20
|
-
Description:
|
|
21
|
-
${ticket.description}
|
|
22
|
-
|
|
23
|
-
Can this ticket be completed entirely through code changes committed to a git repository?
|
|
24
|
-
|
|
25
|
-
Answer INFEASIBLE if the ticket requires ANY of:
|
|
26
|
-
- Manual testing or configuration in external tools or admin panels
|
|
27
|
-
- Access to external services, APIs, or platforms not available in the codebase
|
|
28
|
-
- Physical, hardware, or infrastructure changes
|
|
29
|
-
- Design assets that do not yet exist
|
|
30
|
-
- Deployment or infrastructure changes outside the repository
|
|
31
|
-
- Human judgment calls that require stakeholder input
|
|
32
|
-
|
|
33
|
-
Answer with exactly one line in this format:
|
|
34
|
-
FEASIBLE
|
|
35
|
-
or
|
|
36
|
-
INFEASIBLE: one-line reason
|
|
37
|
-
|
|
38
|
-
Do not include any other text.`;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Parse raw Claude output into a feasibility result.
|
|
42
|
-
*
|
|
43
|
-
* Fails open — malformed or empty output is treated as feasible.
|
|
44
|
-
*
|
|
45
|
-
* @param stdout - The raw stdout from Claude.
|
|
46
|
-
* @returns The parsed feasibility result.
|
|
47
|
-
*/
|
|
48
|
-
export function parseFeasibilityResponse(stdout) {
|
|
49
|
-
const lines = stdout.trim().split('\n');
|
|
50
|
-
const line = (lines.at(-1) ?? '').trim();
|
|
51
|
-
if (/^INFEASIBLE/i.test(line)) {
|
|
52
|
-
const reason = line.replace(/^INFEASIBLE:?\s*/i, '').trim() || undefined;
|
|
53
|
-
return { feasible: false, reason };
|
|
54
|
-
}
|
|
55
|
-
return { feasible: true };
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Run a feasibility check for a ticket.
|
|
59
|
-
*
|
|
60
|
-
* Fails open — if Claude fails or returns malformed output, the
|
|
61
|
-
* ticket is assumed feasible to avoid blocking work.
|
|
62
|
-
*
|
|
63
|
-
* @param invoke - Injected Claude print-mode invocation.
|
|
64
|
-
* @param ticket - The ticket to evaluate.
|
|
65
|
-
* @param model - Optional model override (e.g. `'sonnet'`).
|
|
66
|
-
* @returns A result indicating feasibility and an optional reason.
|
|
67
|
-
*/
|
|
68
|
-
export function checkFeasibility(invoke, ticket, model) {
|
|
69
|
-
const prompt = buildFeasibilityPrompt(ticket);
|
|
70
|
-
const { stdout, ok } = invoke(prompt, model);
|
|
71
|
-
if (!ok)
|
|
72
|
-
return { feasible: true };
|
|
73
|
-
return parseFeasibilityResponse(stdout);
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=feasibility.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feasibility.js","sourceRoot":"","sources":["../../../../src/dev/lifecycle/feasibility/feasibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAeH;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAyB;IAC9D,OAAO;;WAEE,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,KAAK;;EAEpC,MAAM,CAAC,WAAW;;;;;;;;;;;;;;;;;+BAiBW,CAAC;AAChC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEzC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;QACzE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAQD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAoB,EACpB,MAAyB,EACzB,KAAc;IAEd,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE7C,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAEnC,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ticket fetching orchestrator.
|
|
3
|
-
*
|
|
4
|
-
* Fetches the next available unblocked ticket from a board, filtering
|
|
5
|
-
* by pipeline labels and blocker status. All board interaction goes
|
|
6
|
-
* through the injected {@link Board} abstraction.
|
|
7
|
-
*/
|
|
8
|
-
import type { Board, FetchedTicket } from '../../../types/board.js';
|
|
9
|
-
/** Options for ticket fetching behaviour. */
|
|
10
|
-
type FetchTicketCallOpts = {
|
|
11
|
-
/** If `true`, excludes tickets with the `clancy:hitl` label. */
|
|
12
|
-
readonly isAfk?: boolean;
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Resolve the implementation queue label.
|
|
16
|
-
*
|
|
17
|
-
* Uses `CLANCY_LABEL_BUILD` if set, falls back to `CLANCY_LABEL` for
|
|
18
|
-
* backward compatibility.
|
|
19
|
-
*
|
|
20
|
-
* @param env - Environment variables record.
|
|
21
|
-
* @returns The resolved label, or `undefined` if neither env var is set.
|
|
22
|
-
*/
|
|
23
|
-
export declare function resolveBuildLabel(env: Record<string, string | undefined>): string | undefined;
|
|
24
|
-
/**
|
|
25
|
-
* Resolve the plan queue label.
|
|
26
|
-
*
|
|
27
|
-
* Used as an exclusion filter — tickets with this label are still in the
|
|
28
|
-
* planning queue and should not be picked up for implementation.
|
|
29
|
-
*
|
|
30
|
-
* @param env - Environment variables record.
|
|
31
|
-
* @returns The resolved label, or `undefined` if neither env var is set.
|
|
32
|
-
*/
|
|
33
|
-
export declare function resolvePlanLabel(env: Record<string, string | undefined>): string | undefined;
|
|
34
|
-
/**
|
|
35
|
-
* Fetch the next available unblocked ticket from the board.
|
|
36
|
-
*
|
|
37
|
-
* Fetches candidate tickets via the Board abstraction and returns the first
|
|
38
|
-
* one that is not blocked and not still in the planning queue.
|
|
39
|
-
*
|
|
40
|
-
* In AFK mode (`CLANCY_AFK_MODE=1` or `opts.isAfk`), tickets with the
|
|
41
|
-
* `clancy:hitl` label are excluded from the candidate pool.
|
|
42
|
-
*
|
|
43
|
-
* @param board - The board abstraction to fetch tickets from.
|
|
44
|
-
* @param opts - Optional call options (AFK mode override).
|
|
45
|
-
* @returns The first unblocked ticket, or `undefined` if none available.
|
|
46
|
-
*/
|
|
47
|
-
export declare function fetchTicket(board: Board, opts?: FetchTicketCallOpts): Promise<FetchedTicket | undefined>;
|
|
48
|
-
export {};
|
|
49
|
-
//# sourceMappingURL=fetch-ticket.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-ticket.d.ts","sourceRoot":"","sources":["../../../../src/dev/lifecycle/fetch-ticket/fetch-ticket.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAI/D,6CAA6C;AAC7C,KAAK,mBAAmB,GAAG;IACzB,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAIF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACtC,MAAM,GAAG,SAAS,CAEpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACtC,MAAM,GAAG,SAAS,CAEpB;AAoDD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,EACZ,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAQpC"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
// ─── Label resolvers ─────────────────────────────────────────────────────────
|
|
2
|
-
/**
|
|
3
|
-
* Resolve the implementation queue label.
|
|
4
|
-
*
|
|
5
|
-
* Uses `CLANCY_LABEL_BUILD` if set, falls back to `CLANCY_LABEL` for
|
|
6
|
-
* backward compatibility.
|
|
7
|
-
*
|
|
8
|
-
* @param env - Environment variables record.
|
|
9
|
-
* @returns The resolved label, or `undefined` if neither env var is set.
|
|
10
|
-
*/
|
|
11
|
-
export function resolveBuildLabel(env) {
|
|
12
|
-
return env.CLANCY_LABEL_BUILD || env.CLANCY_LABEL || undefined;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Resolve the plan queue label.
|
|
16
|
-
*
|
|
17
|
-
* Used as an exclusion filter — tickets with this label are still in the
|
|
18
|
-
* planning queue and should not be picked up for implementation.
|
|
19
|
-
*
|
|
20
|
-
* @param env - Environment variables record.
|
|
21
|
-
* @returns The resolved label, or `undefined` if neither env var is set.
|
|
22
|
-
*/
|
|
23
|
-
export function resolvePlanLabel(env) {
|
|
24
|
-
return env.CLANCY_LABEL_PLAN || env.CLANCY_PLAN_LABEL || undefined;
|
|
25
|
-
}
|
|
26
|
-
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
27
|
-
/** Whether the current run is in AFK mode (exclude hitl tickets). */
|
|
28
|
-
function isAfkMode(env, opts) {
|
|
29
|
-
return opts?.isAfk ?? env.CLANCY_AFK_MODE === '1';
|
|
30
|
-
}
|
|
31
|
-
/** Format a selection log line. */
|
|
32
|
-
function selectedMsg(ticket) {
|
|
33
|
-
const status = ticket.status ? ` (status: ${ticket.status})` : '';
|
|
34
|
-
return `Selected ${ticket.key}${status}`;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Walk candidates sequentially, returning the first unblocked ticket
|
|
38
|
-
* that does not have the plan label.
|
|
39
|
-
*
|
|
40
|
-
* Recursive — safe because candidate lists are small (board queries
|
|
41
|
-
* return at most ~50 tickets in practice).
|
|
42
|
-
*/
|
|
43
|
-
async function firstUnblocked(board, candidates, planLabel) {
|
|
44
|
-
if (candidates.length === 0)
|
|
45
|
-
return undefined;
|
|
46
|
-
const [candidate, ...rest] = candidates;
|
|
47
|
-
if (planLabel && candidate.labels?.includes(planLabel)) {
|
|
48
|
-
console.log(`Skipping ${candidate.key} — still has plan label`);
|
|
49
|
-
return firstUnblocked(board, rest, planLabel);
|
|
50
|
-
}
|
|
51
|
-
const blocked = await board.fetchBlockerStatus(candidate);
|
|
52
|
-
if (!blocked) {
|
|
53
|
-
console.log(selectedMsg(candidate));
|
|
54
|
-
return candidate;
|
|
55
|
-
}
|
|
56
|
-
console.log(`Skipping ${candidate.key} — blocked`);
|
|
57
|
-
return firstUnblocked(board, rest, planLabel);
|
|
58
|
-
}
|
|
59
|
-
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
60
|
-
/**
|
|
61
|
-
* Fetch the next available unblocked ticket from the board.
|
|
62
|
-
*
|
|
63
|
-
* Fetches candidate tickets via the Board abstraction and returns the first
|
|
64
|
-
* one that is not blocked and not still in the planning queue.
|
|
65
|
-
*
|
|
66
|
-
* In AFK mode (`CLANCY_AFK_MODE=1` or `opts.isAfk`), tickets with the
|
|
67
|
-
* `clancy:hitl` label are excluded from the candidate pool.
|
|
68
|
-
*
|
|
69
|
-
* @param board - The board abstraction to fetch tickets from.
|
|
70
|
-
* @param opts - Optional call options (AFK mode override).
|
|
71
|
-
* @returns The first unblocked ticket, or `undefined` if none available.
|
|
72
|
-
*/
|
|
73
|
-
export async function fetchTicket(board, opts) {
|
|
74
|
-
const env = board.sharedEnv();
|
|
75
|
-
const excludeHitl = isAfkMode(env, opts);
|
|
76
|
-
const buildLabel = resolveBuildLabel(env);
|
|
77
|
-
const planLabel = resolvePlanLabel(env);
|
|
78
|
-
const candidates = await board.fetchTickets({ excludeHitl, buildLabel });
|
|
79
|
-
return firstUnblocked(board, candidates, planLabel);
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=fetch-ticket.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-ticket.js","sourceRoot":"","sources":["../../../../src/dev/lifecycle/fetch-ticket/fetch-ticket.ts"],"names":[],"mappings":"AAiBA,gFAAgF;AAEhF;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAuC;IAEvC,OAAO,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC,YAAY,IAAI,SAAS,CAAC;AACjE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAuC;IAEvC,OAAO,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,iBAAiB,IAAI,SAAS,CAAC;AACrE,CAAC;AAED,gFAAgF;AAEhF,qEAAqE;AACrE,SAAS,SAAS,CAChB,GAAuC,EACvC,IAA0B;IAE1B,OAAO,IAAI,EAAE,KAAK,IAAI,GAAG,CAAC,eAAe,KAAK,GAAG,CAAC;AACpD,CAAC;AAED,mCAAmC;AACnC,SAAS,WAAW,CAAC,MAAqB;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,OAAO,YAAY,MAAM,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,cAAc,CAC3B,KAAY,EACZ,UAAoC,EACpC,SAA6B;IAE7B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE9C,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC;IAExC,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,CAAC,GAAG,yBAAyB,CAAC,CAAC;QAChE,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE1D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,CAAC,GAAG,YAAY,CAAC,CAAC;IACnD,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,gFAAgF;AAEhF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAY,EACZ,IAA0B;IAE1B,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;IAEzE,OAAO,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared formatting utilities.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Format a duration in milliseconds to a human-readable string.
|
|
6
|
-
*
|
|
7
|
-
* @param ms - Duration in milliseconds.
|
|
8
|
-
* @returns Formatted string like `30s`, `1m 30s`, or `5m`.
|
|
9
|
-
*/
|
|
10
|
-
export declare function formatDuration(ms: number): string;
|
|
11
|
-
//# sourceMappingURL=format.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../../src/dev/lifecycle/format/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAejD"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared formatting utilities.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Format a duration in milliseconds to a human-readable string.
|
|
6
|
-
*
|
|
7
|
-
* @param ms - Duration in milliseconds.
|
|
8
|
-
* @returns Formatted string like `30s`, `1m 30s`, or `5m`.
|
|
9
|
-
*/
|
|
10
|
-
export function formatDuration(ms) {
|
|
11
|
-
const secs = Math.max(0, Math.floor(ms / 1000));
|
|
12
|
-
if (secs < 60)
|
|
13
|
-
return `${secs}s`;
|
|
14
|
-
const mins = Math.floor(secs / 60);
|
|
15
|
-
const remSecs = secs % 60;
|
|
16
|
-
if (mins < 60) {
|
|
17
|
-
return remSecs > 0 ? `${mins}m ${remSecs}s` : `${mins}m`;
|
|
18
|
-
}
|
|
19
|
-
const hours = Math.floor(mins / 60);
|
|
20
|
-
const remMins = mins % 60;
|
|
21
|
-
return remMins > 0 ? `${hours}h ${remMins}m` : `${hours}h`;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=format.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../../src/dev/lifecycle/format/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,GAAG,CAAC;IAEjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;IAE1B,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;QACd,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;IAE1B,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;AAC7D,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/dev/lifecycle/lock/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,SAAS,GACV,MAAM,WAAW,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/dev/lifecycle/lock/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,SAAS,GACV,MAAM,WAAW,CAAC"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod/mini';
|
|
2
|
-
/** Injected filesystem operations for lock file I/O. */
|
|
3
|
-
export type LockFs = {
|
|
4
|
-
/** Read a file as UTF-8, throwing if missing. */
|
|
5
|
-
readonly readFile: (path: string) => string;
|
|
6
|
-
/** Write UTF-8 content to a file (creates if missing, overwrites if exists). */
|
|
7
|
-
readonly writeFile: (path: string, content: string) => void;
|
|
8
|
-
/** Delete a file, throwing if missing. */
|
|
9
|
-
readonly deleteFile: (path: string) => void;
|
|
10
|
-
/** Create directory recursively. */
|
|
11
|
-
readonly mkdir: (path: string) => void;
|
|
12
|
-
};
|
|
13
|
-
declare const lockDataSchema: z.ZodMiniObject<{
|
|
14
|
-
pid: z.ZodMiniNumber<number>;
|
|
15
|
-
ticketKey: z.ZodMiniString<string>;
|
|
16
|
-
ticketTitle: z.ZodMiniString<string>;
|
|
17
|
-
ticketBranch: z.ZodMiniString<string>;
|
|
18
|
-
targetBranch: z.ZodMiniString<string>;
|
|
19
|
-
parentKey: z.ZodMiniString<string>;
|
|
20
|
-
description: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
21
|
-
startedAt: z.ZodMiniString<string>;
|
|
22
|
-
}, z.core.$strip>;
|
|
23
|
-
/** Lock file data — PID, ticket context, and ISO timestamp. */
|
|
24
|
-
export type LockData = z.infer<typeof lockDataSchema>;
|
|
25
|
-
/**
|
|
26
|
-
* Write lock data to `.clancy/lock.json`.
|
|
27
|
-
*
|
|
28
|
-
* @param fs - Injected filesystem operations.
|
|
29
|
-
* @param projectRoot - The root directory of the project.
|
|
30
|
-
* @param data - Lock data to persist.
|
|
31
|
-
* @returns Nothing. Creates the `.clancy` directory if needed.
|
|
32
|
-
*/
|
|
33
|
-
export declare function writeLock(fs: LockFs, projectRoot: string, data: LockData): void;
|
|
34
|
-
/**
|
|
35
|
-
* Read lock data from `.clancy/lock.json`.
|
|
36
|
-
*
|
|
37
|
-
* @param fs - Injected filesystem operations.
|
|
38
|
-
* @param projectRoot - The root directory of the project.
|
|
39
|
-
* @returns Parsed lock data, or `undefined` if missing/corrupt/invalid.
|
|
40
|
-
*/
|
|
41
|
-
export declare function readLock(fs: LockFs, projectRoot: string): LockData | undefined;
|
|
42
|
-
/**
|
|
43
|
-
* Delete `.clancy/lock.json`. No-op if the file does not exist.
|
|
44
|
-
*
|
|
45
|
-
* @param fs - Injected filesystem operations.
|
|
46
|
-
* @param projectRoot - The root directory of the project.
|
|
47
|
-
* @returns Nothing.
|
|
48
|
-
*/
|
|
49
|
-
export declare function deleteLock(fs: LockFs, projectRoot: string): void;
|
|
50
|
-
/**
|
|
51
|
-
* Delete `.clancy/verify-attempt.txt`. No-op if the file does not exist.
|
|
52
|
-
*
|
|
53
|
-
* @param fs - Injected filesystem operations.
|
|
54
|
-
* @param projectRoot - The root directory of the project.
|
|
55
|
-
* @returns Nothing.
|
|
56
|
-
*/
|
|
57
|
-
export declare function deleteVerifyAttempt(fs: LockFs, projectRoot: string): void;
|
|
58
|
-
/**
|
|
59
|
-
* Determine whether a lock is stale (safe to reclaim).
|
|
60
|
-
*
|
|
61
|
-
* A lock is stale when its owning PID is dead, when its age exceeds 24 hours
|
|
62
|
-
* (guards against PID reuse), or when its timestamp is invalid.
|
|
63
|
-
*
|
|
64
|
-
* @returns `true` if the lock should be treated as abandoned.
|
|
65
|
-
*/
|
|
66
|
-
export declare function isLockStale(lock: LockData): boolean;
|
|
67
|
-
export {};
|
|
68
|
-
//# sourceMappingURL=lock.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../../src/dev/lifecycle/lock/lock.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAI7B,wDAAwD;AACxD,MAAM,MAAM,MAAM,GAAG;IACnB,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,gFAAgF;IAChF,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,QAAA,MAAM,cAAc;;;;;;;;;iBASlB,CAAC;AAEH,+DAA+D;AAC/D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAUtD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,QAAQ,GACb,IAAI,CAGN;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,GAClB,QAAQ,GAAG,SAAS,CAQtB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAQhE;AAuBD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAQzE;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAMnD"}
|