@chief-clancy/core 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 +50 -0
- package/dist/board/azdo/api/api.d.ts +95 -0
- package/dist/board/azdo/api/api.d.ts.map +1 -0
- package/dist/board/azdo/api/api.js +173 -0
- package/dist/board/azdo/api/api.js.map +1 -0
- package/dist/board/azdo/api/helpers.d.ts +89 -0
- package/dist/board/azdo/api/helpers.d.ts.map +1 -0
- package/dist/board/azdo/api/helpers.js +133 -0
- package/dist/board/azdo/api/helpers.js.map +1 -0
- package/dist/board/azdo/api/index.d.ts +5 -0
- package/dist/board/azdo/api/index.d.ts.map +1 -0
- package/dist/board/azdo/api/index.js +3 -0
- package/dist/board/azdo/api/index.js.map +1 -0
- package/dist/board/azdo/azdo-board.d.ts +12 -0
- package/dist/board/azdo/azdo-board.d.ts.map +1 -0
- package/dist/board/azdo/azdo-board.js +104 -0
- package/dist/board/azdo/azdo-board.js.map +1 -0
- package/dist/board/azdo/index.d.ts +3 -0
- package/dist/board/azdo/index.d.ts.map +1 -0
- package/dist/board/azdo/index.js +3 -0
- package/dist/board/azdo/index.js.map +1 -0
- package/dist/board/azdo/labels/index.d.ts +2 -0
- package/dist/board/azdo/labels/index.d.ts.map +1 -0
- package/dist/board/azdo/labels/index.js +2 -0
- package/dist/board/azdo/labels/index.js.map +1 -0
- package/dist/board/azdo/labels/labels.d.ts +27 -0
- package/dist/board/azdo/labels/labels.d.ts.map +1 -0
- package/dist/board/azdo/labels/labels.js +64 -0
- package/dist/board/azdo/labels/labels.js.map +1 -0
- package/dist/board/azdo/relations/index.d.ts +2 -0
- package/dist/board/azdo/relations/index.d.ts.map +1 -0
- package/dist/board/azdo/relations/index.js +2 -0
- package/dist/board/azdo/relations/index.js.map +1 -0
- package/dist/board/azdo/relations/relations.d.ts +37 -0
- package/dist/board/azdo/relations/relations.d.ts.map +1 -0
- package/dist/board/azdo/relations/relations.js +109 -0
- package/dist/board/azdo/relations/relations.js.map +1 -0
- package/dist/board/detect-board.d.ts +28 -0
- package/dist/board/detect-board.d.ts.map +1 -0
- package/dist/board/detect-board.js +80 -0
- package/dist/board/detect-board.js.map +1 -0
- package/dist/board/factory/factory.d.ts +18 -0
- package/dist/board/factory/factory.d.ts.map +1 -0
- package/dist/board/factory/factory.js +34 -0
- package/dist/board/factory/factory.js.map +1 -0
- package/dist/board/factory/index.d.ts +2 -0
- package/dist/board/factory/index.d.ts.map +1 -0
- package/dist/board/factory/index.js +2 -0
- package/dist/board/factory/index.js.map +1 -0
- package/dist/board/github/api/api.d.ts +86 -0
- package/dist/board/github/api/api.d.ts.map +1 -0
- package/dist/board/github/api/api.js +161 -0
- package/dist/board/github/api/api.js.map +1 -0
- package/dist/board/github/api/index.d.ts +3 -0
- package/dist/board/github/api/index.d.ts.map +1 -0
- package/dist/board/github/api/index.js +2 -0
- package/dist/board/github/api/index.js.map +1 -0
- package/dist/board/github/github-board.d.ts +19 -0
- package/dist/board/github/github-board.d.ts.map +1 -0
- package/dist/board/github/github-board.js +104 -0
- package/dist/board/github/github-board.js.map +1 -0
- package/dist/board/github/index.d.ts +3 -0
- package/dist/board/github/index.d.ts.map +1 -0
- package/dist/board/github/index.js +3 -0
- package/dist/board/github/index.js.map +1 -0
- package/dist/board/github/labels/index.d.ts +2 -0
- package/dist/board/github/labels/index.d.ts.map +1 -0
- package/dist/board/github/labels/index.js +2 -0
- package/dist/board/github/labels/index.js.map +1 -0
- package/dist/board/github/labels/labels.d.ts +42 -0
- package/dist/board/github/labels/labels.d.ts.map +1 -0
- package/dist/board/github/labels/labels.js +93 -0
- package/dist/board/github/labels/labels.js.map +1 -0
- package/dist/board/github/relations/index.d.ts +2 -0
- package/dist/board/github/relations/index.d.ts.map +1 -0
- package/dist/board/github/relations/index.js +2 -0
- package/dist/board/github/relations/index.js.map +1 -0
- package/dist/board/github/relations/relations.d.ts +54 -0
- package/dist/board/github/relations/relations.d.ts.map +1 -0
- package/dist/board/github/relations/relations.js +152 -0
- package/dist/board/github/relations/relations.js.map +1 -0
- package/dist/board/index.d.ts +2 -0
- package/dist/board/index.d.ts.map +1 -0
- package/dist/board/index.js +2 -0
- package/dist/board/index.js.map +1 -0
- package/dist/board/jira/api/api.d.ts +129 -0
- package/dist/board/jira/api/api.d.ts.map +1 -0
- package/dist/board/jira/api/api.js +207 -0
- package/dist/board/jira/api/api.js.map +1 -0
- package/dist/board/jira/api/index.d.ts +3 -0
- package/dist/board/jira/api/index.d.ts.map +1 -0
- package/dist/board/jira/api/index.js +2 -0
- package/dist/board/jira/api/index.js.map +1 -0
- package/dist/board/jira/index.d.ts +3 -0
- package/dist/board/jira/index.d.ts.map +1 -0
- package/dist/board/jira/index.js +3 -0
- package/dist/board/jira/index.js.map +1 -0
- package/dist/board/jira/jira-board.d.ts +12 -0
- package/dist/board/jira/jira-board.d.ts.map +1 -0
- package/dist/board/jira/jira-board.js +112 -0
- package/dist/board/jira/jira-board.js.map +1 -0
- package/dist/board/jira/labels/index.d.ts +2 -0
- package/dist/board/jira/labels/index.d.ts.map +1 -0
- package/dist/board/jira/labels/index.js +2 -0
- package/dist/board/jira/labels/index.js.map +1 -0
- package/dist/board/jira/labels/labels.d.ts +34 -0
- package/dist/board/jira/labels/labels.d.ts.map +1 -0
- package/dist/board/jira/labels/labels.js +69 -0
- package/dist/board/jira/labels/labels.js.map +1 -0
- package/dist/board/jira/relations/index.d.ts +2 -0
- package/dist/board/jira/relations/index.d.ts.map +1 -0
- package/dist/board/jira/relations/index.js +2 -0
- package/dist/board/jira/relations/index.js.map +1 -0
- package/dist/board/jira/relations/relations.d.ts +44 -0
- package/dist/board/jira/relations/relations.d.ts.map +1 -0
- package/dist/board/jira/relations/relations.js +111 -0
- package/dist/board/jira/relations/relations.js.map +1 -0
- package/dist/board/linear/api/api.d.ts +68 -0
- package/dist/board/linear/api/api.d.ts.map +1 -0
- package/dist/board/linear/api/api.js +179 -0
- package/dist/board/linear/api/api.js.map +1 -0
- package/dist/board/linear/api/index.d.ts +2 -0
- package/dist/board/linear/api/index.d.ts.map +1 -0
- package/dist/board/linear/api/index.js +2 -0
- package/dist/board/linear/api/index.js.map +1 -0
- package/dist/board/linear/index.d.ts +3 -0
- package/dist/board/linear/index.d.ts.map +1 -0
- package/dist/board/linear/index.js +3 -0
- package/dist/board/linear/index.js.map +1 -0
- package/dist/board/linear/labels/index.d.ts +2 -0
- package/dist/board/linear/labels/index.d.ts.map +1 -0
- package/dist/board/linear/labels/index.js +2 -0
- package/dist/board/linear/labels/index.js.map +1 -0
- package/dist/board/linear/labels/labels.d.ts +63 -0
- package/dist/board/linear/labels/labels.d.ts.map +1 -0
- package/dist/board/linear/labels/labels.js +204 -0
- package/dist/board/linear/labels/labels.js.map +1 -0
- package/dist/board/linear/linear-board.d.ts +18 -0
- package/dist/board/linear/linear-board.d.ts.map +1 -0
- package/dist/board/linear/linear-board.js +115 -0
- package/dist/board/linear/linear-board.js.map +1 -0
- package/dist/board/linear/relations/index.d.ts +2 -0
- package/dist/board/linear/relations/index.d.ts.map +1 -0
- package/dist/board/linear/relations/index.js +2 -0
- package/dist/board/linear/relations/index.js.map +1 -0
- package/dist/board/linear/relations/relations.d.ts +67 -0
- package/dist/board/linear/relations/relations.d.ts.map +1 -0
- package/dist/board/linear/relations/relations.js +195 -0
- package/dist/board/linear/relations/relations.js.map +1 -0
- package/dist/board/notion/api/api.d.ts +83 -0
- package/dist/board/notion/api/api.d.ts.map +1 -0
- package/dist/board/notion/api/api.js +124 -0
- package/dist/board/notion/api/api.js.map +1 -0
- package/dist/board/notion/api/helpers.d.ts +105 -0
- package/dist/board/notion/api/helpers.d.ts.map +1 -0
- package/dist/board/notion/api/helpers.js +175 -0
- package/dist/board/notion/api/helpers.js.map +1 -0
- package/dist/board/notion/api/index.d.ts +4 -0
- package/dist/board/notion/api/index.d.ts.map +1 -0
- package/dist/board/notion/api/index.js +3 -0
- package/dist/board/notion/api/index.js.map +1 -0
- package/dist/board/notion/index.d.ts +3 -0
- package/dist/board/notion/index.d.ts.map +1 -0
- package/dist/board/notion/index.js +3 -0
- package/dist/board/notion/index.js.map +1 -0
- package/dist/board/notion/labels/index.d.ts +2 -0
- package/dist/board/notion/labels/index.d.ts.map +1 -0
- package/dist/board/notion/labels/index.js +2 -0
- package/dist/board/notion/labels/index.js.map +1 -0
- package/dist/board/notion/labels/labels.d.ts +30 -0
- package/dist/board/notion/labels/labels.d.ts.map +1 -0
- package/dist/board/notion/labels/labels.js +56 -0
- package/dist/board/notion/labels/labels.js.map +1 -0
- package/dist/board/notion/notion-board.d.ts +12 -0
- package/dist/board/notion/notion-board.d.ts.map +1 -0
- package/dist/board/notion/notion-board.js +156 -0
- package/dist/board/notion/notion-board.js.map +1 -0
- package/dist/board/notion/relations/index.d.ts +2 -0
- package/dist/board/notion/relations/index.d.ts.map +1 -0
- package/dist/board/notion/relations/index.js +2 -0
- package/dist/board/notion/relations/index.js.map +1 -0
- package/dist/board/notion/relations/relations.d.ts +43 -0
- package/dist/board/notion/relations/relations.d.ts.map +1 -0
- package/dist/board/notion/relations/relations.js +127 -0
- package/dist/board/notion/relations/relations.js.map +1 -0
- package/dist/board/shortcut/api/api.d.ts +110 -0
- package/dist/board/shortcut/api/api.d.ts.map +1 -0
- package/dist/board/shortcut/api/api.js +227 -0
- package/dist/board/shortcut/api/api.js.map +1 -0
- package/dist/board/shortcut/api/index.d.ts +2 -0
- package/dist/board/shortcut/api/index.d.ts.map +1 -0
- package/dist/board/shortcut/api/index.js +2 -0
- package/dist/board/shortcut/api/index.js.map +1 -0
- package/dist/board/shortcut/index.d.ts +3 -0
- package/dist/board/shortcut/index.d.ts.map +1 -0
- package/dist/board/shortcut/index.js +3 -0
- package/dist/board/shortcut/index.js.map +1 -0
- package/dist/board/shortcut/labels/index.d.ts +2 -0
- package/dist/board/shortcut/labels/index.d.ts.map +1 -0
- package/dist/board/shortcut/labels/index.js +2 -0
- package/dist/board/shortcut/labels/index.js.map +1 -0
- package/dist/board/shortcut/labels/labels.d.ts +95 -0
- package/dist/board/shortcut/labels/labels.d.ts.map +1 -0
- package/dist/board/shortcut/labels/labels.js +154 -0
- package/dist/board/shortcut/labels/labels.js.map +1 -0
- package/dist/board/shortcut/relations/index.d.ts +2 -0
- package/dist/board/shortcut/relations/index.d.ts.map +1 -0
- package/dist/board/shortcut/relations/index.js +2 -0
- package/dist/board/shortcut/relations/index.js.map +1 -0
- package/dist/board/shortcut/relations/relations.d.ts +44 -0
- package/dist/board/shortcut/relations/relations.d.ts.map +1 -0
- package/dist/board/shortcut/relations/relations.js +118 -0
- package/dist/board/shortcut/relations/relations.js.map +1 -0
- package/dist/board/shortcut/shortcut-board.d.ts +18 -0
- package/dist/board/shortcut/shortcut-board.d.ts.map +1 -0
- package/dist/board/shortcut/shortcut-board.js +143 -0
- package/dist/board/shortcut/shortcut-board.js.map +1 -0
- package/dist/dev/lifecycle/branch/branch.d.ts +35 -0
- package/dist/dev/lifecycle/branch/branch.d.ts.map +1 -0
- package/dist/dev/lifecycle/branch/branch.js +48 -0
- package/dist/dev/lifecycle/branch/branch.js.map +1 -0
- package/dist/dev/lifecycle/branch/index.d.ts +2 -0
- package/dist/dev/lifecycle/branch/index.d.ts.map +1 -0
- package/dist/dev/lifecycle/branch/index.js +2 -0
- package/dist/dev/lifecycle/branch/index.js.map +1 -0
- package/dist/dev/lifecycle/commit-type/commit-type.d.ts +22 -0
- package/dist/dev/lifecycle/commit-type/commit-type.d.ts.map +1 -0
- package/dist/dev/lifecycle/commit-type/commit-type.js +50 -0
- package/dist/dev/lifecycle/commit-type/commit-type.js.map +1 -0
- package/dist/dev/lifecycle/commit-type/index.d.ts +2 -0
- package/dist/dev/lifecycle/commit-type/index.d.ts.map +1 -0
- package/dist/dev/lifecycle/commit-type/index.js +2 -0
- package/dist/dev/lifecycle/commit-type/index.js.map +1 -0
- package/dist/dev/lifecycle/cost/cost.d.ts +28 -0
- package/dist/dev/lifecycle/cost/cost.d.ts.map +1 -0
- package/dist/dev/lifecycle/cost/cost.js +36 -0
- package/dist/dev/lifecycle/cost/cost.js.map +1 -0
- package/dist/dev/lifecycle/deliver-epic/deliver-epic.d.ts +44 -0
- package/dist/dev/lifecycle/deliver-epic/deliver-epic.d.ts.map +1 -0
- package/dist/dev/lifecycle/deliver-epic/deliver-epic.js +75 -0
- package/dist/dev/lifecycle/deliver-epic/deliver-epic.js.map +1 -0
- package/dist/dev/lifecycle/deliver-ticket/deliver-ticket.d.ts +51 -0
- package/dist/dev/lifecycle/deliver-ticket/deliver-ticket.d.ts.map +1 -0
- package/dist/dev/lifecycle/deliver-ticket/deliver-ticket.js +132 -0
- package/dist/dev/lifecycle/deliver-ticket/deliver-ticket.js.map +1 -0
- package/dist/dev/lifecycle/epic/epic.d.ts +66 -0
- package/dist/dev/lifecycle/epic/epic.d.ts.map +1 -0
- package/dist/dev/lifecycle/epic/epic.js +91 -0
- package/dist/dev/lifecycle/epic/epic.js.map +1 -0
- package/dist/dev/lifecycle/epic/index.d.ts +2 -0
- package/dist/dev/lifecycle/epic/index.d.ts.map +1 -0
- package/dist/dev/lifecycle/epic/index.js +2 -0
- package/dist/dev/lifecycle/epic/index.js.map +1 -0
- package/dist/dev/lifecycle/feasibility/feasibility.d.ts +55 -0
- package/dist/dev/lifecycle/feasibility/feasibility.d.ts.map +1 -0
- package/dist/dev/lifecycle/feasibility/feasibility.js +75 -0
- package/dist/dev/lifecycle/feasibility/feasibility.js.map +1 -0
- package/dist/dev/lifecycle/fetch-ticket/fetch-ticket.d.ts +49 -0
- package/dist/dev/lifecycle/fetch-ticket/fetch-ticket.d.ts.map +1 -0
- package/dist/dev/lifecycle/fetch-ticket/fetch-ticket.js +81 -0
- package/dist/dev/lifecycle/fetch-ticket/fetch-ticket.js.map +1 -0
- package/dist/dev/lifecycle/format/format.d.ts +11 -0
- package/dist/dev/lifecycle/format/format.d.ts.map +1 -0
- package/dist/dev/lifecycle/format/format.js +23 -0
- package/dist/dev/lifecycle/format/format.js.map +1 -0
- package/dist/dev/lifecycle/lock/index.d.ts +3 -0
- package/dist/dev/lifecycle/lock/index.d.ts.map +1 -0
- package/dist/dev/lifecycle/lock/index.js +2 -0
- package/dist/dev/lifecycle/lock/index.js.map +1 -0
- package/dist/dev/lifecycle/lock/lock.d.ts +68 -0
- package/dist/dev/lifecycle/lock/lock.d.ts.map +1 -0
- package/dist/dev/lifecycle/lock/lock.js +125 -0
- package/dist/dev/lifecycle/lock/lock.js.map +1 -0
- package/dist/dev/lifecycle/outcome/index.d.ts +2 -0
- package/dist/dev/lifecycle/outcome/index.d.ts.map +1 -0
- package/dist/dev/lifecycle/outcome/index.js +2 -0
- package/dist/dev/lifecycle/outcome/index.js.map +1 -0
- package/dist/dev/lifecycle/outcome/outcome.d.ts +65 -0
- package/dist/dev/lifecycle/outcome/outcome.d.ts.map +1 -0
- package/dist/dev/lifecycle/outcome/outcome.js +61 -0
- package/dist/dev/lifecycle/outcome/outcome.js.map +1 -0
- package/dist/dev/lifecycle/pr-creation/index.d.ts +3 -0
- package/dist/dev/lifecycle/pr-creation/index.d.ts.map +1 -0
- package/dist/dev/lifecycle/pr-creation/index.js +2 -0
- package/dist/dev/lifecycle/pr-creation/index.js.map +1 -0
- package/dist/dev/lifecycle/pr-creation/pr-creation.d.ts +47 -0
- package/dist/dev/lifecycle/pr-creation/pr-creation.d.ts.map +1 -0
- package/dist/dev/lifecycle/pr-creation/pr-creation.js +143 -0
- package/dist/dev/lifecycle/pr-creation/pr-creation.js.map +1 -0
- package/dist/dev/lifecycle/preflight/preflight.d.ts +42 -0
- package/dist/dev/lifecycle/preflight/preflight.d.ts.map +1 -0
- package/dist/dev/lifecycle/preflight/preflight.js +101 -0
- package/dist/dev/lifecycle/preflight/preflight.js.map +1 -0
- package/dist/dev/lifecycle/progress/index.d.ts +3 -0
- package/dist/dev/lifecycle/progress/index.d.ts.map +1 -0
- package/dist/dev/lifecycle/progress/index.js +2 -0
- package/dist/dev/lifecycle/progress/index.js.map +1 -0
- package/dist/dev/lifecycle/progress/progress.d.ts +98 -0
- package/dist/dev/lifecycle/progress/progress.d.ts.map +1 -0
- package/dist/dev/lifecycle/progress/progress.js +212 -0
- package/dist/dev/lifecycle/progress/progress.js.map +1 -0
- package/dist/dev/lifecycle/pull-request/azdo/azdo.d.ts +86 -0
- package/dist/dev/lifecycle/pull-request/azdo/azdo.d.ts.map +1 -0
- package/dist/dev/lifecycle/pull-request/azdo/azdo.js +198 -0
- package/dist/dev/lifecycle/pull-request/azdo/azdo.js.map +1 -0
- package/dist/dev/lifecycle/pull-request/azdo/index.d.ts +2 -0
- package/dist/dev/lifecycle/pull-request/azdo/index.d.ts.map +1 -0
- package/dist/dev/lifecycle/pull-request/azdo/index.js +2 -0
- package/dist/dev/lifecycle/pull-request/azdo/index.js.map +1 -0
- package/dist/dev/lifecycle/pull-request/bitbucket/cloud.d.ts +85 -0
- package/dist/dev/lifecycle/pull-request/bitbucket/cloud.d.ts.map +1 -0
- package/dist/dev/lifecycle/pull-request/bitbucket/cloud.js +158 -0
- package/dist/dev/lifecycle/pull-request/bitbucket/cloud.js.map +1 -0
- package/dist/dev/lifecycle/pull-request/bitbucket/index.d.ts +3 -0
- package/dist/dev/lifecycle/pull-request/bitbucket/index.d.ts.map +1 -0
- package/dist/dev/lifecycle/pull-request/bitbucket/index.js +3 -0
- package/dist/dev/lifecycle/pull-request/bitbucket/index.js.map +1 -0
- package/dist/dev/lifecycle/pull-request/bitbucket/server.d.ts +85 -0
- package/dist/dev/lifecycle/pull-request/bitbucket/server.d.ts.map +1 -0
- package/dist/dev/lifecycle/pull-request/bitbucket/server.js +168 -0
- package/dist/dev/lifecycle/pull-request/bitbucket/server.js.map +1 -0
- package/dist/dev/lifecycle/pull-request/github/github.d.ts +107 -0
- package/dist/dev/lifecycle/pull-request/github/github.d.ts.map +1 -0
- package/dist/dev/lifecycle/pull-request/github/github.js +225 -0
- package/dist/dev/lifecycle/pull-request/github/github.js.map +1 -0
- package/dist/dev/lifecycle/pull-request/github/index.d.ts +2 -0
- package/dist/dev/lifecycle/pull-request/github/index.d.ts.map +1 -0
- package/dist/dev/lifecycle/pull-request/github/index.js +2 -0
- package/dist/dev/lifecycle/pull-request/github/index.js.map +1 -0
- package/dist/dev/lifecycle/pull-request/gitlab/gitlab.d.ts +103 -0
- package/dist/dev/lifecycle/pull-request/gitlab/gitlab.d.ts.map +1 -0
- package/dist/dev/lifecycle/pull-request/gitlab/gitlab.js +215 -0
- package/dist/dev/lifecycle/pull-request/gitlab/gitlab.js.map +1 -0
- package/dist/dev/lifecycle/pull-request/gitlab/index.d.ts +2 -0
- package/dist/dev/lifecycle/pull-request/gitlab/index.d.ts.map +1 -0
- package/dist/dev/lifecycle/pull-request/gitlab/index.js +2 -0
- package/dist/dev/lifecycle/pull-request/gitlab/index.js.map +1 -0
- package/dist/dev/lifecycle/pull-request/post-pr/post-pr.d.ts +44 -0
- package/dist/dev/lifecycle/pull-request/post-pr/post-pr.d.ts.map +1 -0
- package/dist/dev/lifecycle/pull-request/post-pr/post-pr.js +64 -0
- package/dist/dev/lifecycle/pull-request/post-pr/post-pr.js.map +1 -0
- package/dist/dev/lifecycle/pull-request/pr-body/index.d.ts +3 -0
- package/dist/dev/lifecycle/pull-request/pr-body/index.d.ts.map +1 -0
- package/dist/dev/lifecycle/pull-request/pr-body/index.js +2 -0
- package/dist/dev/lifecycle/pull-request/pr-body/index.js.map +1 -0
- package/dist/dev/lifecycle/pull-request/pr-body/pr-body.d.ts +65 -0
- package/dist/dev/lifecycle/pull-request/pr-body/pr-body.d.ts.map +1 -0
- package/dist/dev/lifecycle/pull-request/pr-body/pr-body.js +144 -0
- package/dist/dev/lifecycle/pull-request/pr-body/pr-body.js.map +1 -0
- package/dist/dev/lifecycle/pull-request/rework-comment/rework-comment.d.ts +30 -0
- package/dist/dev/lifecycle/pull-request/rework-comment/rework-comment.d.ts.map +1 -0
- package/dist/dev/lifecycle/pull-request/rework-comment/rework-comment.js +39 -0
- package/dist/dev/lifecycle/pull-request/rework-comment/rework-comment.js.map +1 -0
- package/dist/dev/lifecycle/quality/quality.d.ts +99 -0
- package/dist/dev/lifecycle/quality/quality.d.ts.map +1 -0
- package/dist/dev/lifecycle/quality/quality.js +213 -0
- package/dist/dev/lifecycle/quality/quality.js.map +1 -0
- package/dist/dev/lifecycle/resume/resume.d.ts +64 -0
- package/dist/dev/lifecycle/resume/resume.d.ts.map +1 -0
- package/dist/dev/lifecycle/resume/resume.js +171 -0
- package/dist/dev/lifecycle/resume/resume.js.map +1 -0
- package/dist/dev/lifecycle/rework/rework-builders.d.ts +20 -0
- package/dist/dev/lifecycle/rework/rework-builders.d.ts.map +1 -0
- package/dist/dev/lifecycle/rework/rework-builders.js +203 -0
- package/dist/dev/lifecycle/rework/rework-builders.js.map +1 -0
- package/dist/dev/lifecycle/rework/rework-handlers.d.ts +50 -0
- package/dist/dev/lifecycle/rework/rework-handlers.d.ts.map +1 -0
- package/dist/dev/lifecycle/rework/rework-handlers.js +41 -0
- package/dist/dev/lifecycle/rework/rework-handlers.js.map +1 -0
- package/dist/dev/lifecycle/rework/rework.d.ts +63 -0
- package/dist/dev/lifecycle/rework/rework.d.ts.map +1 -0
- package/dist/dev/lifecycle/rework/rework.js +141 -0
- package/dist/dev/lifecycle/rework/rework.js.map +1 -0
- package/dist/dev/pipeline/context.d.ts +105 -0
- package/dist/dev/pipeline/context.d.ts.map +1 -0
- package/dist/dev/pipeline/context.js +107 -0
- package/dist/dev/pipeline/context.js.map +1 -0
- package/dist/dev/pipeline/index.d.ts +6 -0
- package/dist/dev/pipeline/index.d.ts.map +1 -0
- package/dist/dev/pipeline/index.js +5 -0
- package/dist/dev/pipeline/index.js.map +1 -0
- package/dist/dev/pipeline/phases/branch-setup/branch-setup.d.ts +62 -0
- package/dist/dev/pipeline/phases/branch-setup/branch-setup.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/branch-setup/branch-setup.js +128 -0
- package/dist/dev/pipeline/phases/branch-setup/branch-setup.js.map +1 -0
- package/dist/dev/pipeline/phases/branch-setup/index.d.ts +3 -0
- package/dist/dev/pipeline/phases/branch-setup/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/branch-setup/index.js +2 -0
- package/dist/dev/pipeline/phases/branch-setup/index.js.map +1 -0
- package/dist/dev/pipeline/phases/cleanup-phase/cleanup-phase.d.ts +32 -0
- package/dist/dev/pipeline/phases/cleanup-phase/cleanup-phase.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/cleanup-phase/cleanup-phase.js +32 -0
- package/dist/dev/pipeline/phases/cleanup-phase/cleanup-phase.js.map +1 -0
- package/dist/dev/pipeline/phases/cleanup-phase/index.d.ts +3 -0
- package/dist/dev/pipeline/phases/cleanup-phase/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/cleanup-phase/index.js +2 -0
- package/dist/dev/pipeline/phases/cleanup-phase/index.js.map +1 -0
- package/dist/dev/pipeline/phases/cost-phase/cost-phase.d.ts +40 -0
- package/dist/dev/pipeline/phases/cost-phase/cost-phase.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/cost-phase/cost-phase.js +43 -0
- package/dist/dev/pipeline/phases/cost-phase/cost-phase.js.map +1 -0
- package/dist/dev/pipeline/phases/cost-phase/index.d.ts +3 -0
- package/dist/dev/pipeline/phases/cost-phase/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/cost-phase/index.js +2 -0
- package/dist/dev/pipeline/phases/cost-phase/index.js.map +1 -0
- package/dist/dev/pipeline/phases/deliver-phase/deliver-phase.d.ts +68 -0
- package/dist/dev/pipeline/phases/deliver-phase/deliver-phase.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/deliver-phase/deliver-phase.js +125 -0
- package/dist/dev/pipeline/phases/deliver-phase/deliver-phase.js.map +1 -0
- package/dist/dev/pipeline/phases/deliver-phase/index.d.ts +3 -0
- package/dist/dev/pipeline/phases/deliver-phase/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/deliver-phase/index.js +2 -0
- package/dist/dev/pipeline/phases/deliver-phase/index.js.map +1 -0
- package/dist/dev/pipeline/phases/dry-run/dry-run.d.ts +38 -0
- package/dist/dev/pipeline/phases/dry-run/dry-run.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/dry-run/dry-run.js +33 -0
- package/dist/dev/pipeline/phases/dry-run/dry-run.js.map +1 -0
- package/dist/dev/pipeline/phases/dry-run/index.d.ts +2 -0
- package/dist/dev/pipeline/phases/dry-run/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/dry-run/index.js +2 -0
- package/dist/dev/pipeline/phases/dry-run/index.js.map +1 -0
- package/dist/dev/pipeline/phases/epic-completion/epic-completion.d.ts +48 -0
- package/dist/dev/pipeline/phases/epic-completion/epic-completion.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/epic-completion/epic-completion.js +42 -0
- package/dist/dev/pipeline/phases/epic-completion/epic-completion.js.map +1 -0
- package/dist/dev/pipeline/phases/epic-completion/index.d.ts +3 -0
- package/dist/dev/pipeline/phases/epic-completion/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/epic-completion/index.js +2 -0
- package/dist/dev/pipeline/phases/epic-completion/index.js.map +1 -0
- package/dist/dev/pipeline/phases/feasibility/feasibility.d.ts +52 -0
- package/dist/dev/pipeline/phases/feasibility/feasibility.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/feasibility/feasibility.js +34 -0
- package/dist/dev/pipeline/phases/feasibility/feasibility.js.map +1 -0
- package/dist/dev/pipeline/phases/feasibility/index.d.ts +3 -0
- package/dist/dev/pipeline/phases/feasibility/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/feasibility/index.js +2 -0
- package/dist/dev/pipeline/phases/feasibility/index.js.map +1 -0
- package/dist/dev/pipeline/phases/index.d.ts +26 -0
- package/dist/dev/pipeline/phases/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/index.js +14 -0
- package/dist/dev/pipeline/phases/index.js.map +1 -0
- package/dist/dev/pipeline/phases/lock-check/index.d.ts +3 -0
- package/dist/dev/pipeline/phases/lock-check/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/lock-check/index.js +2 -0
- package/dist/dev/pipeline/phases/lock-check/index.js.map +1 -0
- package/dist/dev/pipeline/phases/lock-check/lock-check.d.ts +55 -0
- package/dist/dev/pipeline/phases/lock-check/lock-check.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/lock-check/lock-check.js +60 -0
- package/dist/dev/pipeline/phases/lock-check/lock-check.js.map +1 -0
- package/dist/dev/pipeline/phases/pr-retry/index.d.ts +3 -0
- package/dist/dev/pipeline/phases/pr-retry/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/pr-retry/index.js +2 -0
- package/dist/dev/pipeline/phases/pr-retry/index.js.map +1 -0
- package/dist/dev/pipeline/phases/pr-retry/pr-retry.d.ts +58 -0
- package/dist/dev/pipeline/phases/pr-retry/pr-retry.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/pr-retry/pr-retry.js +82 -0
- package/dist/dev/pipeline/phases/pr-retry/pr-retry.js.map +1 -0
- package/dist/dev/pipeline/phases/preflight-phase/index.d.ts +3 -0
- package/dist/dev/pipeline/phases/preflight-phase/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/preflight-phase/index.js +2 -0
- package/dist/dev/pipeline/phases/preflight-phase/index.js.map +1 -0
- package/dist/dev/pipeline/phases/preflight-phase/preflight-phase.d.ts +42 -0
- package/dist/dev/pipeline/phases/preflight-phase/preflight-phase.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/preflight-phase/preflight-phase.js +41 -0
- package/dist/dev/pipeline/phases/preflight-phase/preflight-phase.js.map +1 -0
- package/dist/dev/pipeline/phases/rework-detection/index.d.ts +3 -0
- package/dist/dev/pipeline/phases/rework-detection/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/rework-detection/index.js +2 -0
- package/dist/dev/pipeline/phases/rework-detection/index.js.map +1 -0
- package/dist/dev/pipeline/phases/rework-detection/rework-detection.d.ts +40 -0
- package/dist/dev/pipeline/phases/rework-detection/rework-detection.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/rework-detection/rework-detection.js +38 -0
- package/dist/dev/pipeline/phases/rework-detection/rework-detection.js.map +1 -0
- package/dist/dev/pipeline/phases/ticket-fetch/index.d.ts +3 -0
- package/dist/dev/pipeline/phases/ticket-fetch/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/ticket-fetch/index.js +2 -0
- package/dist/dev/pipeline/phases/ticket-fetch/index.js.map +1 -0
- package/dist/dev/pipeline/phases/ticket-fetch/ticket-fetch.d.ts +46 -0
- package/dist/dev/pipeline/phases/ticket-fetch/ticket-fetch.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/ticket-fetch/ticket-fetch.js +64 -0
- package/dist/dev/pipeline/phases/ticket-fetch/ticket-fetch.js.map +1 -0
- package/dist/dev/pipeline/phases/transition/index.d.ts +3 -0
- package/dist/dev/pipeline/phases/transition/index.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/transition/index.js +2 -0
- package/dist/dev/pipeline/phases/transition/index.js.map +1 -0
- package/dist/dev/pipeline/phases/transition/transition.d.ts +30 -0
- package/dist/dev/pipeline/phases/transition/transition.d.ts.map +1 -0
- package/dist/dev/pipeline/phases/transition/transition.js +27 -0
- package/dist/dev/pipeline/phases/transition/transition.js.map +1 -0
- package/dist/dev/pipeline/run-pipeline.d.ts +98 -0
- package/dist/dev/pipeline/run-pipeline.d.ts.map +1 -0
- package/dist/dev/pipeline/run-pipeline.js +106 -0
- package/dist/dev/pipeline/run-pipeline.js.map +1 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/azdo/azdo-pr.d.ts +58 -0
- package/dist/schemas/azdo/azdo-pr.d.ts.map +1 -0
- package/dist/schemas/azdo/azdo-pr.js +48 -0
- package/dist/schemas/azdo/azdo-pr.js.map +1 -0
- package/dist/schemas/azdo/azdo.d.ts +88 -0
- package/dist/schemas/azdo/azdo.d.ts.map +1 -0
- package/dist/schemas/azdo/azdo.js +60 -0
- package/dist/schemas/azdo/azdo.js.map +1 -0
- package/dist/schemas/bitbucket/bitbucket.d.ts +112 -0
- package/dist/schemas/bitbucket/bitbucket.d.ts.map +1 -0
- package/dist/schemas/bitbucket/bitbucket.js +73 -0
- package/dist/schemas/bitbucket/bitbucket.js.map +1 -0
- package/dist/schemas/env/env.d.ts +336 -0
- package/dist/schemas/env/env.d.ts.map +1 -0
- package/dist/schemas/env/env.js +94 -0
- package/dist/schemas/env/env.js.map +1 -0
- package/dist/schemas/github/github.d.ts +128 -0
- package/dist/schemas/github/github.d.ts.map +1 -0
- package/dist/schemas/github/github.js +65 -0
- package/dist/schemas/github/github.js.map +1 -0
- package/dist/schemas/gitlab/gitlab.d.ts +72 -0
- package/dist/schemas/gitlab/gitlab.d.ts.map +1 -0
- package/dist/schemas/gitlab/gitlab.js +38 -0
- package/dist/schemas/gitlab/gitlab.js.map +1 -0
- package/dist/schemas/index.d.ts +15 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +8 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/jira/jira.d.ts +79 -0
- package/dist/schemas/jira/jira.d.ts.map +1 -0
- package/dist/schemas/jira/jira.js +69 -0
- package/dist/schemas/jira/jira.js.map +1 -0
- package/dist/schemas/linear/linear.d.ts +178 -0
- package/dist/schemas/linear/linear.d.ts.map +1 -0
- package/dist/schemas/linear/linear.js +136 -0
- package/dist/schemas/linear/linear.js.map +1 -0
- package/dist/schemas/notion/notion.d.ts +131 -0
- package/dist/schemas/notion/notion.d.ts.map +1 -0
- package/dist/schemas/notion/notion.js +102 -0
- package/dist/schemas/notion/notion.js.map +1 -0
- package/dist/schemas/shortcut/shortcut.d.ts +149 -0
- package/dist/schemas/shortcut/shortcut.d.ts.map +1 -0
- package/dist/schemas/shortcut/shortcut.js +68 -0
- package/dist/schemas/shortcut/shortcut.js.map +1 -0
- package/dist/shared/cache/cache.d.ts +14 -0
- package/dist/shared/cache/cache.d.ts.map +1 -0
- package/dist/shared/cache/cache.js +25 -0
- package/dist/shared/cache/cache.js.map +1 -0
- package/dist/shared/cache/index.d.ts +2 -0
- package/dist/shared/cache/index.d.ts.map +1 -0
- package/dist/shared/cache/index.js +2 -0
- package/dist/shared/cache/index.js.map +1 -0
- package/dist/shared/env-parser/env-parser.d.ts +42 -0
- package/dist/shared/env-parser/env-parser.d.ts.map +1 -0
- package/dist/shared/env-parser/env-parser.js +97 -0
- package/dist/shared/env-parser/env-parser.js.map +1 -0
- package/dist/shared/env-parser/index.d.ts +3 -0
- package/dist/shared/env-parser/index.d.ts.map +1 -0
- package/dist/shared/env-parser/index.js +2 -0
- package/dist/shared/env-parser/index.js.map +1 -0
- package/dist/shared/git-ops/git-ops.d.ts +127 -0
- package/dist/shared/git-ops/git-ops.d.ts.map +1 -0
- package/dist/shared/git-ops/git-ops.js +225 -0
- package/dist/shared/git-ops/git-ops.js.map +1 -0
- package/dist/shared/git-ops/index.d.ts +3 -0
- package/dist/shared/git-ops/index.d.ts.map +1 -0
- package/dist/shared/git-ops/index.js +2 -0
- package/dist/shared/git-ops/index.js.map +1 -0
- package/dist/shared/git-token/git-token.d.ts +18 -0
- package/dist/shared/git-token/git-token.d.ts.map +1 -0
- package/dist/shared/git-token/git-token.js +28 -0
- package/dist/shared/git-token/git-token.js.map +1 -0
- package/dist/shared/git-token/index.d.ts +2 -0
- package/dist/shared/git-token/index.d.ts.map +1 -0
- package/dist/shared/git-token/index.js +2 -0
- package/dist/shared/git-token/index.js.map +1 -0
- package/dist/shared/http/fetch-and-parse/fetch-and-parse.d.ts +32 -0
- package/dist/shared/http/fetch-and-parse/fetch-and-parse.d.ts.map +1 -0
- package/dist/shared/http/fetch-and-parse/fetch-and-parse.js +53 -0
- package/dist/shared/http/fetch-and-parse/fetch-and-parse.js.map +1 -0
- package/dist/shared/http/fetch-and-parse/index.d.ts +3 -0
- package/dist/shared/http/fetch-and-parse/index.d.ts.map +1 -0
- package/dist/shared/http/fetch-and-parse/index.js +2 -0
- package/dist/shared/http/fetch-and-parse/index.js.map +1 -0
- package/dist/shared/http/index.d.ts +7 -0
- package/dist/shared/http/index.d.ts.map +1 -0
- package/dist/shared/http/index.js +4 -0
- package/dist/shared/http/index.js.map +1 -0
- package/dist/shared/http/ping-endpoint/index.d.ts +3 -0
- package/dist/shared/http/ping-endpoint/index.d.ts.map +1 -0
- package/dist/shared/http/ping-endpoint/index.js +2 -0
- package/dist/shared/http/ping-endpoint/index.js.map +1 -0
- package/dist/shared/http/ping-endpoint/ping-endpoint.d.ts +29 -0
- package/dist/shared/http/ping-endpoint/ping-endpoint.d.ts.map +1 -0
- package/dist/shared/http/ping-endpoint/ping-endpoint.js +31 -0
- package/dist/shared/http/ping-endpoint/ping-endpoint.js.map +1 -0
- package/dist/shared/http/retry-fetch/index.d.ts +3 -0
- package/dist/shared/http/retry-fetch/index.d.ts.map +1 -0
- package/dist/shared/http/retry-fetch/index.js +2 -0
- package/dist/shared/http/retry-fetch/index.js.map +1 -0
- package/dist/shared/http/retry-fetch/retry-fetch.d.ts +33 -0
- package/dist/shared/http/retry-fetch/retry-fetch.d.ts.map +1 -0
- package/dist/shared/http/retry-fetch/retry-fetch.js +94 -0
- package/dist/shared/http/retry-fetch/retry-fetch.js.map +1 -0
- package/dist/shared/label-helpers/index.d.ts +3 -0
- package/dist/shared/label-helpers/index.d.ts.map +1 -0
- package/dist/shared/label-helpers/index.js +2 -0
- package/dist/shared/label-helpers/index.js.map +1 -0
- package/dist/shared/label-helpers/label-helpers.d.ts +41 -0
- package/dist/shared/label-helpers/label-helpers.d.ts.map +1 -0
- package/dist/shared/label-helpers/label-helpers.js +51 -0
- package/dist/shared/label-helpers/label-helpers.js.map +1 -0
- package/dist/shared/remote/index.d.ts +2 -0
- package/dist/shared/remote/index.d.ts.map +1 -0
- package/dist/shared/remote/index.js +2 -0
- package/dist/shared/remote/index.js.map +1 -0
- package/dist/shared/remote/remote.d.ts +39 -0
- package/dist/shared/remote/remote.d.ts.map +1 -0
- package/dist/shared/remote/remote.js +180 -0
- package/dist/shared/remote/remote.js.map +1 -0
- package/dist/types/board.d.ts +62 -0
- package/dist/types/board.d.ts.map +1 -0
- package/dist/types/board.js +5 -0
- package/dist/types/board.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/progress.d.ts +21 -0
- package/dist/types/progress.d.ts.map +1 -0
- package/dist/types/progress.js +34 -0
- package/dist/types/progress.js.map +1 -0
- package/dist/types/remote.d.ts +77 -0
- package/dist/types/remote.d.ts.map +1 -0
- package/dist/types/remote.js +5 -0
- package/dist/types/remote.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { Fetcher } from '../../../shared/http/index.js';
|
|
2
|
+
import type { PingResult } from '../../../types/index.js';
|
|
3
|
+
/** Default GitHub API base URL. */
|
|
4
|
+
export declare const GITHUB_API = "https://api.github.com";
|
|
5
|
+
/**
|
|
6
|
+
* Build standard GitHub API request headers.
|
|
7
|
+
*
|
|
8
|
+
* @param token - GitHub personal access token.
|
|
9
|
+
* @returns Headers object for GitHub REST API requests.
|
|
10
|
+
*/
|
|
11
|
+
export declare function githubHeaders(token: string): Record<string, string>;
|
|
12
|
+
/**
|
|
13
|
+
* Validate that a repo string matches `owner/repo` format.
|
|
14
|
+
*
|
|
15
|
+
* @param repo - The repository string to validate.
|
|
16
|
+
* @returns `true` if valid.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isValidRepo(repo: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Ping the GitHub API to verify connectivity and credentials.
|
|
21
|
+
*
|
|
22
|
+
* @param token - GitHub personal access token.
|
|
23
|
+
* @param repo - Repository in `owner/repo` format.
|
|
24
|
+
* @param fetcher - Optional custom fetch function for DI in tests.
|
|
25
|
+
* @returns Ping result with `ok` and optional `error`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function pingGitHub(token: string, repo: string, fetcher?: Fetcher): Promise<PingResult>;
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the authenticated GitHub username from the token.
|
|
30
|
+
*
|
|
31
|
+
* Uses `GET /user` and caches the result via the provided cache.
|
|
32
|
+
* Falls back to `@me` if the API call fails.
|
|
33
|
+
*
|
|
34
|
+
* @param token - GitHub personal access token.
|
|
35
|
+
* @param cache - Cache instance to store the resolved username.
|
|
36
|
+
* @returns The GitHub username, or `@me` as a fallback.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveUsername(token: string, cache: {
|
|
39
|
+
get(): string | undefined;
|
|
40
|
+
store(v: string): void;
|
|
41
|
+
}, fetcher?: Fetcher): Promise<string>;
|
|
42
|
+
/** GitHub issue with optional milestone and labels. */
|
|
43
|
+
export type GitHubTicket = {
|
|
44
|
+
readonly key: string;
|
|
45
|
+
readonly title: string;
|
|
46
|
+
readonly description: string;
|
|
47
|
+
readonly provider: 'github';
|
|
48
|
+
readonly milestone?: string;
|
|
49
|
+
readonly labels?: readonly string[];
|
|
50
|
+
};
|
|
51
|
+
/** Options for {@link fetchIssues}. */
|
|
52
|
+
type FetchIssuesOpts = {
|
|
53
|
+
readonly token: string;
|
|
54
|
+
readonly repo: string;
|
|
55
|
+
readonly label?: string;
|
|
56
|
+
readonly username?: string;
|
|
57
|
+
readonly excludeHitl?: boolean;
|
|
58
|
+
readonly limit?: number;
|
|
59
|
+
readonly fetcher?: Fetcher;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Fetch candidate issues from GitHub Issues.
|
|
63
|
+
*
|
|
64
|
+
* Requests extra results to account for PR pollution (the Issues
|
|
65
|
+
* endpoint returns PRs too), then filters to real issues only.
|
|
66
|
+
*
|
|
67
|
+
* @param opts - Token, repo, and optional filters.
|
|
68
|
+
* @returns Array of fetched tickets (may be empty).
|
|
69
|
+
*/
|
|
70
|
+
export declare function fetchIssues(opts: FetchIssuesOpts): Promise<readonly GitHubTicket[]>;
|
|
71
|
+
/** Options for {@link closeIssue}. */
|
|
72
|
+
type CloseIssueOpts = {
|
|
73
|
+
readonly token: string;
|
|
74
|
+
readonly repo: string;
|
|
75
|
+
readonly issueNumber: number;
|
|
76
|
+
readonly fetcher?: Fetcher;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Close a GitHub issue.
|
|
80
|
+
*
|
|
81
|
+
* @param opts - Token, repo, and issue number.
|
|
82
|
+
* @returns `true` if the issue was closed successfully.
|
|
83
|
+
*/
|
|
84
|
+
export declare function closeIssue(opts: CloseIssueOpts): Promise<boolean>;
|
|
85
|
+
export {};
|
|
86
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/board/github/api/api.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMrD,mCAAmC;AACnC,eAAO,MAAM,UAAU,2BAA2B,CAAC;AAQnD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMnE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,UAAU,CAAC,CAgBrB;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IAAE,GAAG,IAAI,MAAM,GAAG,SAAS,CAAC;IAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC5D,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED,uDAAuD;AACvD,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,CAAC;AAgBF,uCAAuC;AACvC,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAoClC;AAED,sCAAsC;AACtC,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBvE"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { githubIssuesResponseSchema } from '../../../schemas/index.js';
|
|
2
|
+
import { fetchAndParse, pingEndpoint } from '../../../shared/http/index.js';
|
|
3
|
+
import { z } from 'zod/mini';
|
|
4
|
+
/** Default GitHub API base URL. */
|
|
5
|
+
export const GITHUB_API = 'https://api.github.com';
|
|
6
|
+
/** Pattern for validating `owner/repo` format. */
|
|
7
|
+
const SAFE_REPO_PATTERN = /^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/;
|
|
8
|
+
/** Schema for the `GET /user` response. */
|
|
9
|
+
const githubUserSchema = z.object({ login: z.string() });
|
|
10
|
+
/**
|
|
11
|
+
* Build standard GitHub API request headers.
|
|
12
|
+
*
|
|
13
|
+
* @param token - GitHub personal access token.
|
|
14
|
+
* @returns Headers object for GitHub REST API requests.
|
|
15
|
+
*/
|
|
16
|
+
export function githubHeaders(token) {
|
|
17
|
+
return {
|
|
18
|
+
Authorization: `Bearer ${token}`,
|
|
19
|
+
Accept: 'application/vnd.github+json',
|
|
20
|
+
'X-GitHub-Api-Version': '2022-11-28',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Validate that a repo string matches `owner/repo` format.
|
|
25
|
+
*
|
|
26
|
+
* @param repo - The repository string to validate.
|
|
27
|
+
* @returns `true` if valid.
|
|
28
|
+
*/
|
|
29
|
+
export function isValidRepo(repo) {
|
|
30
|
+
return SAFE_REPO_PATTERN.test(repo);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Ping the GitHub API to verify connectivity and credentials.
|
|
34
|
+
*
|
|
35
|
+
* @param token - GitHub personal access token.
|
|
36
|
+
* @param repo - Repository in `owner/repo` format.
|
|
37
|
+
* @param fetcher - Optional custom fetch function for DI in tests.
|
|
38
|
+
* @returns Ping result with `ok` and optional `error`.
|
|
39
|
+
*/
|
|
40
|
+
export async function pingGitHub(token, repo, fetcher) {
|
|
41
|
+
if (!isValidRepo(repo)) {
|
|
42
|
+
return { ok: false, error: '✗ GITHUB_REPO format is invalid' };
|
|
43
|
+
}
|
|
44
|
+
return pingEndpoint({
|
|
45
|
+
url: `${GITHUB_API}/repos/${repo}`,
|
|
46
|
+
headers: githubHeaders(token),
|
|
47
|
+
statusErrors: {
|
|
48
|
+
401: '✗ GitHub auth failed — check GITHUB_TOKEN',
|
|
49
|
+
403: '✗ GitHub permission denied',
|
|
50
|
+
404: `✗ GitHub repo "${repo}" not found`,
|
|
51
|
+
},
|
|
52
|
+
networkError: '✗ Could not reach GitHub — check network',
|
|
53
|
+
fetcher,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Resolve the authenticated GitHub username from the token.
|
|
58
|
+
*
|
|
59
|
+
* Uses `GET /user` and caches the result via the provided cache.
|
|
60
|
+
* Falls back to `@me` if the API call fails.
|
|
61
|
+
*
|
|
62
|
+
* @param token - GitHub personal access token.
|
|
63
|
+
* @param cache - Cache instance to store the resolved username.
|
|
64
|
+
* @returns The GitHub username, or `@me` as a fallback.
|
|
65
|
+
*/
|
|
66
|
+
export async function resolveUsername(token, cache, fetcher) {
|
|
67
|
+
const cached = cache.get();
|
|
68
|
+
if (cached)
|
|
69
|
+
return cached;
|
|
70
|
+
const doFetch = fetcher ?? fetch;
|
|
71
|
+
try {
|
|
72
|
+
const response = await doFetch(`${GITHUB_API}/user`, {
|
|
73
|
+
headers: githubHeaders(token),
|
|
74
|
+
});
|
|
75
|
+
if (response.ok) {
|
|
76
|
+
const json = await response.json();
|
|
77
|
+
const parsed = githubUserSchema.safeParse(json);
|
|
78
|
+
if (parsed.success) {
|
|
79
|
+
cache.store(parsed.data.login);
|
|
80
|
+
return parsed.data.login;
|
|
81
|
+
}
|
|
82
|
+
console.warn('⚠ Unexpected GitHub /user response — falling back to @me');
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.warn(`⚠ GitHub /user returned HTTP ${response.status} — falling back to @me`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
console.warn(`⚠ GitHub /user request failed: ${err instanceof Error ? err.message : String(err)} — falling back to @me`);
|
|
90
|
+
}
|
|
91
|
+
cache.store('@me');
|
|
92
|
+
return '@me';
|
|
93
|
+
}
|
|
94
|
+
/** Map a raw GitHub issue to a {@link GitHubTicket}. */
|
|
95
|
+
function toGitHubTicket(issue) {
|
|
96
|
+
return {
|
|
97
|
+
key: `#${issue.number}`,
|
|
98
|
+
title: issue.title,
|
|
99
|
+
description: issue.body ?? '',
|
|
100
|
+
provider: 'github',
|
|
101
|
+
milestone: issue.milestone?.title,
|
|
102
|
+
labels: issue.labels
|
|
103
|
+
?.map((l) => l.name)
|
|
104
|
+
.filter((n) => Boolean(n)),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Fetch candidate issues from GitHub Issues.
|
|
109
|
+
*
|
|
110
|
+
* Requests extra results to account for PR pollution (the Issues
|
|
111
|
+
* endpoint returns PRs too), then filters to real issues only.
|
|
112
|
+
*
|
|
113
|
+
* @param opts - Token, repo, and optional filters.
|
|
114
|
+
* @returns Array of fetched tickets (may be empty).
|
|
115
|
+
*/
|
|
116
|
+
export async function fetchIssues(opts) {
|
|
117
|
+
const { token, repo, label, username, excludeHitl, limit = 5, fetcher, } = opts;
|
|
118
|
+
if (!isValidRepo(repo))
|
|
119
|
+
return [];
|
|
120
|
+
const params = new URLSearchParams({
|
|
121
|
+
state: 'open',
|
|
122
|
+
assignee: username ?? '@me',
|
|
123
|
+
per_page: '10',
|
|
124
|
+
...(label ? { labels: label } : {}),
|
|
125
|
+
});
|
|
126
|
+
const data = await fetchAndParse(`${GITHUB_API}/repos/${repo}/issues?${params}`, { headers: githubHeaders(token) }, { schema: githubIssuesResponseSchema, label: 'GitHub Issues API', fetcher });
|
|
127
|
+
if (!data)
|
|
128
|
+
return [];
|
|
129
|
+
const withoutPrs = data.filter((item) => !item.pull_request);
|
|
130
|
+
const filtered = excludeHitl
|
|
131
|
+
? withoutPrs.filter((issue) => !issue.labels?.some((l) => l.name === 'clancy:hitl'))
|
|
132
|
+
: withoutPrs;
|
|
133
|
+
return filtered.slice(0, limit).map(toGitHubTicket);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Close a GitHub issue.
|
|
137
|
+
*
|
|
138
|
+
* @param opts - Token, repo, and issue number.
|
|
139
|
+
* @returns `true` if the issue was closed successfully.
|
|
140
|
+
*/
|
|
141
|
+
export async function closeIssue(opts) {
|
|
142
|
+
const { token, repo, issueNumber, fetcher } = opts;
|
|
143
|
+
if (!isValidRepo(repo))
|
|
144
|
+
return false;
|
|
145
|
+
const doFetch = fetcher ?? fetch;
|
|
146
|
+
try {
|
|
147
|
+
const response = await doFetch(`${GITHUB_API}/repos/${repo}/issues/${issueNumber}`, {
|
|
148
|
+
method: 'PATCH',
|
|
149
|
+
headers: {
|
|
150
|
+
...githubHeaders(token),
|
|
151
|
+
'Content-Type': 'application/json',
|
|
152
|
+
},
|
|
153
|
+
body: JSON.stringify({ state: 'closed' }),
|
|
154
|
+
});
|
|
155
|
+
return response.ok;
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/board/github/api/api.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B,mCAAmC;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAEnD,kDAAkD;AAClD,MAAM,iBAAiB,GAAG,oCAAoC,CAAC;AAE/D,2CAA2C;AAC3C,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO;QACL,aAAa,EAAE,UAAU,KAAK,EAAE;QAChC,MAAM,EAAE,6BAA6B;QACrC,sBAAsB,EAAE,YAAY;KACrC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,IAAY,EACZ,OAAiB;IAEjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC;IACjE,CAAC;IAED,OAAO,YAAY,CAAC;QAClB,GAAG,EAAE,GAAG,UAAU,UAAU,IAAI,EAAE;QAClC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC;QAC7B,YAAY,EAAE;YACZ,GAAG,EAAE,2CAA2C;YAChD,GAAG,EAAE,4BAA4B;YACjC,GAAG,EAAE,kBAAkB,IAAI,aAAa;SACzC;QACD,YAAY,EAAE,0CAA0C;QACxD,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAa,EACb,KAA4D,EAC5D,OAAiB;IAEjB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,UAAU,OAAO,EAAE;YACnD,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAEhD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,gCAAgC,QAAQ,CAAC,MAAM,wBAAwB,CACxE,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAC3G,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC;AACf,CAAC;AAYD,wDAAwD;AACxD,SAAS,cAAc,CAAC,KAAkB;IACxC,OAAO;QACL,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;QAC7B,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK;QACjC,MAAM,EAAE,KAAK,CAAC,MAAM;YAClB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACnB,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KAC1C,CAAC;AACJ,CAAC;AAaD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAqB;IAErB,MAAM,EACJ,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,WAAW,EACX,KAAK,GAAG,CAAC,EACT,OAAO,GACR,GAAG,IAAI,CAAC;IACT,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,QAAQ,IAAI,KAAK;QAC3B,QAAQ,EAAE,IAAI;QACd,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,aAAa,CAC9B,GAAG,UAAU,UAAU,IAAI,WAAW,MAAM,EAAE,EAC9C,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,EACjC,EAAE,MAAM,EAAE,0BAA0B,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAC5E,CAAC;IAEF,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,WAAW;QAC1B,CAAC,CAAC,UAAU,CAAC,MAAM,CACf,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAChE;QACH,CAAC,CAAC,UAAU,CAAC;IAEf,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACtD,CAAC;AAUD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAoB;IACnD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAErC,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,GAAG,UAAU,UAAU,IAAI,WAAW,WAAW,EAAE,EACnD;YACE,MAAM,EAAE,OAAO;YACf,OAAO,EAAE;gBACP,GAAG,aAAa,CAAC,KAAK,CAAC;gBACvB,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;SAC1C,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/board/github/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/board/github/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,GAChB,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { GitHubEnv } from '../../schemas/index.js';
|
|
2
|
+
import type { Fetcher } from '../../shared/http/index.js';
|
|
3
|
+
import type { Board } from '../../types/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Extract a parent issue reference from a GitHub issue description.
|
|
6
|
+
*
|
|
7
|
+
* @param description - The issue body text.
|
|
8
|
+
* @returns The `#N` string if found, or `undefined`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseEpicRef(description: string): string | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Create a Board implementation for GitHub Issues.
|
|
13
|
+
*
|
|
14
|
+
* @param env - The validated GitHub environment variables.
|
|
15
|
+
* @param fetcher - Optional custom fetch function for DI in tests.
|
|
16
|
+
* @returns A Board object that delegates to GitHub API functions.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createGitHubBoard(env: GitHubEnv, fetcher?: Fetcher): Board;
|
|
19
|
+
//# sourceMappingURL=github-board.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-board.d.ts","sourceRoot":"","sources":["../../../src/board/github/github-board.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAkC,MAAM,oBAAoB,CAAC;AAgBhF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE;AAoDD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,CA0D1E"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Cached } from '../../shared/cache/index.js';
|
|
2
|
+
import { fetchIssues, isValidRepo, pingGitHub, resolveUsername, } from './api/index.js';
|
|
3
|
+
import { addLabel, ensureLabel, removeLabel } from './labels/index.js';
|
|
4
|
+
import { fetchBlockerStatus, fetchChildrenStatus } from './relations/index.js';
|
|
5
|
+
/** Pattern matching `Epic: #N` or `Parent: #N` in issue descriptions. */
|
|
6
|
+
const EPIC_REF_PATTERN = /^(?:Epic|Parent): (#\d+)/m;
|
|
7
|
+
/**
|
|
8
|
+
* Extract a parent issue reference from a GitHub issue description.
|
|
9
|
+
*
|
|
10
|
+
* @param description - The issue body text.
|
|
11
|
+
* @returns The `#N` string if found, or `undefined`.
|
|
12
|
+
*/
|
|
13
|
+
export function parseEpicRef(description) {
|
|
14
|
+
return description.match(EPIC_REF_PATTERN)?.[1];
|
|
15
|
+
}
|
|
16
|
+
/** Parse an issue number from a `#N` key string. */
|
|
17
|
+
function parseIssueNumber(key) {
|
|
18
|
+
const num = parseInt(key.replace('#', ''), 10);
|
|
19
|
+
return Number.isNaN(num) ? undefined : num;
|
|
20
|
+
}
|
|
21
|
+
/** Map a GitHubTicket to the normalised FetchedTicket shape. */
|
|
22
|
+
function toFetchedTicket(ticket) {
|
|
23
|
+
return {
|
|
24
|
+
key: ticket.key,
|
|
25
|
+
title: ticket.title,
|
|
26
|
+
description: ticket.description,
|
|
27
|
+
parentInfo: ticket.milestone ?? parseEpicRef(ticket.description) ?? 'none',
|
|
28
|
+
blockers: 'None',
|
|
29
|
+
issueId: ticket.key,
|
|
30
|
+
labels: ticket.labels ?? [],
|
|
31
|
+
status: 'open',
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/** Fetch and normalise GitHub issues into FetchedTickets. */
|
|
35
|
+
async function fetchGitHubTickets(ctx, opts) {
|
|
36
|
+
const username = await resolveUsername(ctx.token, ctx.usernameCache, ctx.fetcher);
|
|
37
|
+
const tickets = await fetchIssues({
|
|
38
|
+
token: ctx.token,
|
|
39
|
+
repo: ctx.repo,
|
|
40
|
+
label: opts.buildLabel ?? ctx.defaultLabel,
|
|
41
|
+
username,
|
|
42
|
+
excludeHitl: opts.excludeHitl,
|
|
43
|
+
fetcher: ctx.fetcher,
|
|
44
|
+
});
|
|
45
|
+
return tickets.map(toFetchedTicket);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create a Board implementation for GitHub Issues.
|
|
49
|
+
*
|
|
50
|
+
* @param env - The validated GitHub environment variables.
|
|
51
|
+
* @param fetcher - Optional custom fetch function for DI in tests.
|
|
52
|
+
* @returns A Board object that delegates to GitHub API functions.
|
|
53
|
+
*/
|
|
54
|
+
export function createGitHubBoard(env, fetcher) {
|
|
55
|
+
const ctx = {
|
|
56
|
+
token: env.GITHUB_TOKEN,
|
|
57
|
+
repo: env.GITHUB_REPO,
|
|
58
|
+
defaultLabel: env.CLANCY_LABEL,
|
|
59
|
+
usernameCache: new Cached(),
|
|
60
|
+
fetcher,
|
|
61
|
+
};
|
|
62
|
+
const doFetch = (opts) => fetchGitHubTickets(ctx, opts);
|
|
63
|
+
return {
|
|
64
|
+
ping: () => pingGitHub(ctx.token, ctx.repo, ctx.fetcher),
|
|
65
|
+
validateInputs: () => isValidRepo(ctx.repo)
|
|
66
|
+
? undefined
|
|
67
|
+
: '✗ GITHUB_REPO format is invalid — expected owner/repo',
|
|
68
|
+
fetchTicket: async (opts) => (await doFetch(opts))[0],
|
|
69
|
+
fetchTickets: doFetch,
|
|
70
|
+
async fetchBlockerStatus(ticket) {
|
|
71
|
+
const n = parseIssueNumber(ticket.key);
|
|
72
|
+
const conn = { token: ctx.token, repo: ctx.repo, fetcher: ctx.fetcher };
|
|
73
|
+
return n
|
|
74
|
+
? fetchBlockerStatus({
|
|
75
|
+
...conn,
|
|
76
|
+
issueNumber: n,
|
|
77
|
+
body: ticket.description,
|
|
78
|
+
})
|
|
79
|
+
: false;
|
|
80
|
+
},
|
|
81
|
+
async fetchChildrenStatus(parentKey, _parentId, currentTicketKey) {
|
|
82
|
+
const n = parseIssueNumber(parentKey);
|
|
83
|
+
const conn = { token: ctx.token, repo: ctx.repo, fetcher: ctx.fetcher };
|
|
84
|
+
return n
|
|
85
|
+
? fetchChildrenStatus({ ...conn, parentNumber: n, currentTicketKey })
|
|
86
|
+
: undefined;
|
|
87
|
+
},
|
|
88
|
+
transitionTicket: async () => false,
|
|
89
|
+
ensureLabel: (label) => ensureLabel(ctx, label),
|
|
90
|
+
async addLabel(issueKey, label) {
|
|
91
|
+
await ensureLabel(ctx, label);
|
|
92
|
+
const n = parseIssueNumber(issueKey);
|
|
93
|
+
if (n)
|
|
94
|
+
await addLabel(ctx, n, label);
|
|
95
|
+
},
|
|
96
|
+
async removeLabel(issueKey, label) {
|
|
97
|
+
const n = parseIssueNumber(issueKey);
|
|
98
|
+
if (n)
|
|
99
|
+
await removeLabel(ctx, n, label);
|
|
100
|
+
},
|
|
101
|
+
sharedEnv: () => env,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=github-board.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-board.js","sourceRoot":"","sources":["../../../src/board/github/github-board.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/board/github/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/board/github/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/board/github/labels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/board/github/labels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Issues label operations.
|
|
3
|
+
*
|
|
4
|
+
* GitHub has direct label API endpoints (unlike boards that need
|
|
5
|
+
* read-modify-write via modifyLabelList). All operations are
|
|
6
|
+
* best-effort — they log warnings but never throw.
|
|
7
|
+
*/
|
|
8
|
+
import type { Fetcher } from '../../../shared/http/index.js';
|
|
9
|
+
/** Context for GitHub label operations. */
|
|
10
|
+
type GitHubLabelContext = {
|
|
11
|
+
readonly token: string;
|
|
12
|
+
readonly repo: string;
|
|
13
|
+
readonly fetcher?: Fetcher;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Ensure a label exists on the repository. Creates it if missing.
|
|
17
|
+
*
|
|
18
|
+
* @param ctx - Token and repo context.
|
|
19
|
+
* @param label - The label name to ensure.
|
|
20
|
+
* @returns Resolves when complete (best-effort — never throws).
|
|
21
|
+
*/
|
|
22
|
+
export declare function ensureLabel(ctx: GitHubLabelContext, label: string): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Add a label to a GitHub issue.
|
|
25
|
+
*
|
|
26
|
+
* @param ctx - Token and repo context.
|
|
27
|
+
* @param issueNumber - The issue number.
|
|
28
|
+
* @param label - The label name to add.
|
|
29
|
+
* @returns Resolves when complete (best-effort — never throws).
|
|
30
|
+
*/
|
|
31
|
+
export declare function addLabel(ctx: GitHubLabelContext, issueNumber: number, label: string): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Remove a label from a GitHub issue.
|
|
34
|
+
*
|
|
35
|
+
* @param ctx - Token and repo context.
|
|
36
|
+
* @param issueNumber - The issue number.
|
|
37
|
+
* @param label - The label name to remove.
|
|
38
|
+
* @returns Resolves when complete (best-effort — never throws).
|
|
39
|
+
*/
|
|
40
|
+
export declare function removeLabel(ctx: GitHubLabelContext, issueNumber: number, label: string): Promise<void>;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../../../src/board/github/labels/labels.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAIxD,2CAA2C;AAC3C,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAOF;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAiBf;AAqBD;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { GITHUB_API, githubHeaders } from '../api/index.js';
|
|
2
|
+
/** Format a caught error value into a warning message. */
|
|
3
|
+
function formatError(err) {
|
|
4
|
+
return err instanceof Error ? err.message : String(err);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Ensure a label exists on the repository. Creates it if missing.
|
|
8
|
+
*
|
|
9
|
+
* @param ctx - Token and repo context.
|
|
10
|
+
* @param label - The label name to ensure.
|
|
11
|
+
* @returns Resolves when complete (best-effort — never throws).
|
|
12
|
+
*/
|
|
13
|
+
export async function ensureLabel(ctx, label) {
|
|
14
|
+
try {
|
|
15
|
+
const headers = githubHeaders(ctx.token);
|
|
16
|
+
const doFetch = ctx.fetcher ?? fetch;
|
|
17
|
+
const url = `${GITHUB_API}/repos/${ctx.repo}/labels/${encodeURIComponent(label)}`;
|
|
18
|
+
const res = await doFetch(url, { headers });
|
|
19
|
+
if (res.ok)
|
|
20
|
+
return;
|
|
21
|
+
if (res.status === 404) {
|
|
22
|
+
await createLabel(ctx, label, headers);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
console.warn(`⚠ ensureLabel GET returned HTTP ${res.status}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
console.warn(`⚠ ensureLabel failed: ${formatError(err)}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** Create a new label on the repository. */
|
|
33
|
+
async function createLabel(ctx, label, headers) {
|
|
34
|
+
const doFetch = ctx.fetcher ?? fetch;
|
|
35
|
+
const res = await doFetch(`${GITHUB_API}/repos/${ctx.repo}/labels`, {
|
|
36
|
+
method: 'POST',
|
|
37
|
+
headers: { ...headers, 'Content-Type': 'application/json' },
|
|
38
|
+
body: JSON.stringify({ name: label, color: '0075ca' }),
|
|
39
|
+
});
|
|
40
|
+
// 422 = label already exists (race condition)
|
|
41
|
+
if (!res.ok && res.status !== 422) {
|
|
42
|
+
console.warn(`⚠ ensureLabel create returned HTTP ${res.status}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Add a label to a GitHub issue.
|
|
47
|
+
*
|
|
48
|
+
* @param ctx - Token and repo context.
|
|
49
|
+
* @param issueNumber - The issue number.
|
|
50
|
+
* @param label - The label name to add.
|
|
51
|
+
* @returns Resolves when complete (best-effort — never throws).
|
|
52
|
+
*/
|
|
53
|
+
export async function addLabel(ctx, issueNumber, label) {
|
|
54
|
+
try {
|
|
55
|
+
const headers = githubHeaders(ctx.token);
|
|
56
|
+
const doFetch = ctx.fetcher ?? fetch;
|
|
57
|
+
const res = await doFetch(`${GITHUB_API}/repos/${ctx.repo}/issues/${issueNumber}/labels`, {
|
|
58
|
+
method: 'POST',
|
|
59
|
+
headers: { ...headers, 'Content-Type': 'application/json' },
|
|
60
|
+
body: JSON.stringify({ labels: [label] }),
|
|
61
|
+
});
|
|
62
|
+
if (!res.ok) {
|
|
63
|
+
console.warn(`⚠ addLabel returned HTTP ${res.status}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
console.warn(`⚠ addLabel failed: ${formatError(err)}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Remove a label from a GitHub issue.
|
|
72
|
+
*
|
|
73
|
+
* @param ctx - Token and repo context.
|
|
74
|
+
* @param issueNumber - The issue number.
|
|
75
|
+
* @param label - The label name to remove.
|
|
76
|
+
* @returns Resolves when complete (best-effort — never throws).
|
|
77
|
+
*/
|
|
78
|
+
export async function removeLabel(ctx, issueNumber, label) {
|
|
79
|
+
try {
|
|
80
|
+
const headers = githubHeaders(ctx.token);
|
|
81
|
+
const doFetch = ctx.fetcher ?? fetch;
|
|
82
|
+
const url = `${GITHUB_API}/repos/${ctx.repo}/issues/${issueNumber}/labels/${encodeURIComponent(label)}`;
|
|
83
|
+
const res = await doFetch(url, { method: 'DELETE', headers });
|
|
84
|
+
// 404 = label not on the issue, ignore
|
|
85
|
+
if (!res.ok && res.status !== 404) {
|
|
86
|
+
console.warn(`⚠ removeLabel returned HTTP ${res.status}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
console.warn(`⚠ removeLabel failed: ${formatError(err)}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../../../src/board/github/labels/labels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/board/github/relations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/board/github/relations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|