@generacy-ai/workflow-engine 0.0.0-preview-20260304013206
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 +191 -0
- package/README.md +265 -0
- package/dist/actions/base-action.d.ts +63 -0
- package/dist/actions/base-action.d.ts.map +1 -0
- package/dist/actions/base-action.js +130 -0
- package/dist/actions/base-action.js.map +1 -0
- package/dist/actions/builtin/agent-invoke.d.ts +16 -0
- package/dist/actions/builtin/agent-invoke.d.ts.map +1 -0
- package/dist/actions/builtin/agent-invoke.js +108 -0
- package/dist/actions/builtin/agent-invoke.js.map +1 -0
- package/dist/actions/builtin/humancy-api-handler.d.ts +191 -0
- package/dist/actions/builtin/humancy-api-handler.d.ts.map +1 -0
- package/dist/actions/builtin/humancy-api-handler.js +521 -0
- package/dist/actions/builtin/humancy-api-handler.js.map +1 -0
- package/dist/actions/builtin/humancy-review.d.ts +83 -0
- package/dist/actions/builtin/humancy-review.d.ts.map +1 -0
- package/dist/actions/builtin/humancy-review.js +250 -0
- package/dist/actions/builtin/humancy-review.js.map +1 -0
- package/dist/actions/builtin/pr-create.d.ts +16 -0
- package/dist/actions/builtin/pr-create.d.ts.map +1 -0
- package/dist/actions/builtin/pr-create.js +110 -0
- package/dist/actions/builtin/pr-create.js.map +1 -0
- package/dist/actions/builtin/shell.d.ts +16 -0
- package/dist/actions/builtin/shell.d.ts.map +1 -0
- package/dist/actions/builtin/shell.js +80 -0
- package/dist/actions/builtin/shell.js.map +1 -0
- package/dist/actions/builtin/speckit/index.d.ts +47 -0
- package/dist/actions/builtin/speckit/index.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/index.js +347 -0
- package/dist/actions/builtin/speckit/index.js.map +1 -0
- package/dist/actions/builtin/speckit/lib/feature.d.ts +17 -0
- package/dist/actions/builtin/speckit/lib/feature.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/lib/feature.js +430 -0
- package/dist/actions/builtin/speckit/lib/feature.js.map +1 -0
- package/dist/actions/builtin/speckit/lib/fs.d.ts +62 -0
- package/dist/actions/builtin/speckit/lib/fs.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/lib/fs.js +181 -0
- package/dist/actions/builtin/speckit/lib/fs.js.map +1 -0
- package/dist/actions/builtin/speckit/lib/paths.d.ts +7 -0
- package/dist/actions/builtin/speckit/lib/paths.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/lib/paths.js +161 -0
- package/dist/actions/builtin/speckit/lib/paths.js.map +1 -0
- package/dist/actions/builtin/speckit/lib/prereqs.d.ts +8 -0
- package/dist/actions/builtin/speckit/lib/prereqs.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/lib/prereqs.js +194 -0
- package/dist/actions/builtin/speckit/lib/prereqs.js.map +1 -0
- package/dist/actions/builtin/speckit/lib/stream-batcher.d.ts +14 -0
- package/dist/actions/builtin/speckit/lib/stream-batcher.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/lib/stream-batcher.js +31 -0
- package/dist/actions/builtin/speckit/lib/stream-batcher.js.map +1 -0
- package/dist/actions/builtin/speckit/lib/templates.d.ts +15 -0
- package/dist/actions/builtin/speckit/lib/templates.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/lib/templates.js +176 -0
- package/dist/actions/builtin/speckit/lib/templates.js.map +1 -0
- package/dist/actions/builtin/speckit/operations/check-prereqs.d.ts +11 -0
- package/dist/actions/builtin/speckit/operations/check-prereqs.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/operations/check-prereqs.js +22 -0
- package/dist/actions/builtin/speckit/operations/check-prereqs.js.map +1 -0
- package/dist/actions/builtin/speckit/operations/clarify.d.ts +7 -0
- package/dist/actions/builtin/speckit/operations/clarify.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/operations/clarify.js +302 -0
- package/dist/actions/builtin/speckit/operations/clarify.js.map +1 -0
- package/dist/actions/builtin/speckit/operations/copy-template.d.ts +11 -0
- package/dist/actions/builtin/speckit/operations/copy-template.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/operations/copy-template.js +23 -0
- package/dist/actions/builtin/speckit/operations/copy-template.js.map +1 -0
- package/dist/actions/builtin/speckit/operations/create-feature.d.ts +11 -0
- package/dist/actions/builtin/speckit/operations/create-feature.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/operations/create-feature.js +25 -0
- package/dist/actions/builtin/speckit/operations/create-feature.js.map +1 -0
- package/dist/actions/builtin/speckit/operations/get-paths.d.ts +11 -0
- package/dist/actions/builtin/speckit/operations/get-paths.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/operations/get-paths.js +17 -0
- package/dist/actions/builtin/speckit/operations/get-paths.js.map +1 -0
- package/dist/actions/builtin/speckit/operations/implement.d.ts +7 -0
- package/dist/actions/builtin/speckit/operations/implement.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/operations/implement.js +246 -0
- package/dist/actions/builtin/speckit/operations/implement.js.map +1 -0
- package/dist/actions/builtin/speckit/operations/plan.d.ts +7 -0
- package/dist/actions/builtin/speckit/operations/plan.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/operations/plan.js +253 -0
- package/dist/actions/builtin/speckit/operations/plan.js.map +1 -0
- package/dist/actions/builtin/speckit/operations/specify.d.ts +7 -0
- package/dist/actions/builtin/speckit/operations/specify.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/operations/specify.js +178 -0
- package/dist/actions/builtin/speckit/operations/specify.js.map +1 -0
- package/dist/actions/builtin/speckit/operations/tasks-to-issues.d.ts +42 -0
- package/dist/actions/builtin/speckit/operations/tasks-to-issues.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/operations/tasks-to-issues.js +386 -0
- package/dist/actions/builtin/speckit/operations/tasks-to-issues.js.map +1 -0
- package/dist/actions/builtin/speckit/operations/tasks.d.ts +7 -0
- package/dist/actions/builtin/speckit/operations/tasks.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/operations/tasks.js +234 -0
- package/dist/actions/builtin/speckit/operations/tasks.js.map +1 -0
- package/dist/actions/builtin/speckit/types.d.ts +268 -0
- package/dist/actions/builtin/speckit/types.d.ts.map +1 -0
- package/dist/actions/builtin/speckit/types.js +11 -0
- package/dist/actions/builtin/speckit/types.js.map +1 -0
- package/dist/actions/builtin/verification-check.d.ts +16 -0
- package/dist/actions/builtin/verification-check.d.ts.map +1 -0
- package/dist/actions/builtin/verification-check.js +99 -0
- package/dist/actions/builtin/verification-check.js.map +1 -0
- package/dist/actions/builtin/workspace-prepare.d.ts +16 -0
- package/dist/actions/builtin/workspace-prepare.d.ts.map +1 -0
- package/dist/actions/builtin/workspace-prepare.js +108 -0
- package/dist/actions/builtin/workspace-prepare.js.map +1 -0
- package/dist/actions/cli-utils.d.ts +76 -0
- package/dist/actions/cli-utils.d.ts.map +1 -0
- package/dist/actions/cli-utils.js +278 -0
- package/dist/actions/cli-utils.js.map +1 -0
- package/dist/actions/epic/check-completion.d.ts +14 -0
- package/dist/actions/epic/check-completion.d.ts.map +1 -0
- package/dist/actions/epic/check-completion.js +57 -0
- package/dist/actions/epic/check-completion.js.map +1 -0
- package/dist/actions/epic/close.d.ts +18 -0
- package/dist/actions/epic/close.d.ts.map +1 -0
- package/dist/actions/epic/close.js +76 -0
- package/dist/actions/epic/close.js.map +1 -0
- package/dist/actions/epic/create-pr.d.ts +22 -0
- package/dist/actions/epic/create-pr.d.ts.map +1 -0
- package/dist/actions/epic/create-pr.js +140 -0
- package/dist/actions/epic/create-pr.js.map +1 -0
- package/dist/actions/epic/dispatch-children.d.ts +16 -0
- package/dist/actions/epic/dispatch-children.d.ts.map +1 -0
- package/dist/actions/epic/dispatch-children.js +95 -0
- package/dist/actions/epic/dispatch-children.js.map +1 -0
- package/dist/actions/epic/find-children.d.ts +16 -0
- package/dist/actions/epic/find-children.d.ts.map +1 -0
- package/dist/actions/epic/find-children.js +92 -0
- package/dist/actions/epic/find-children.js.map +1 -0
- package/dist/actions/epic/index.d.ts +20 -0
- package/dist/actions/epic/index.d.ts.map +1 -0
- package/dist/actions/epic/index.js +35 -0
- package/dist/actions/epic/index.js.map +1 -0
- package/dist/actions/epic/post-tasks-summary.d.ts +18 -0
- package/dist/actions/epic/post-tasks-summary.d.ts.map +1 -0
- package/dist/actions/epic/post-tasks-summary.js +123 -0
- package/dist/actions/epic/post-tasks-summary.js.map +1 -0
- package/dist/actions/epic/update-status.d.ts +22 -0
- package/dist/actions/epic/update-status.d.ts.map +1 -0
- package/dist/actions/epic/update-status.js +105 -0
- package/dist/actions/epic/update-status.js.map +1 -0
- package/dist/actions/github/add-comment.d.ts +14 -0
- package/dist/actions/github/add-comment.d.ts.map +1 -0
- package/dist/actions/github/add-comment.js +44 -0
- package/dist/actions/github/add-comment.js.map +1 -0
- package/dist/actions/github/client/gh-cli.d.ts +68 -0
- package/dist/actions/github/client/gh-cli.d.ts.map +1 -0
- package/dist/actions/github/client/gh-cli.js +781 -0
- package/dist/actions/github/client/gh-cli.js.map +1 -0
- package/dist/actions/github/client/index.d.ts +12 -0
- package/dist/actions/github/client/index.d.ts.map +1 -0
- package/dist/actions/github/client/index.js +10 -0
- package/dist/actions/github/client/index.js.map +1 -0
- package/dist/actions/github/client/interface.d.ts +270 -0
- package/dist/actions/github/client/interface.d.ts.map +1 -0
- package/dist/actions/github/client/interface.js +2 -0
- package/dist/actions/github/client/interface.js.map +1 -0
- package/dist/actions/github/commit-and-push.d.ts +19 -0
- package/dist/actions/github/commit-and-push.d.ts.map +1 -0
- package/dist/actions/github/commit-and-push.js +86 -0
- package/dist/actions/github/commit-and-push.js.map +1 -0
- package/dist/actions/github/create-draft-pr.d.ts +18 -0
- package/dist/actions/github/create-draft-pr.d.ts.map +1 -0
- package/dist/actions/github/create-draft-pr.js +76 -0
- package/dist/actions/github/create-draft-pr.js.map +1 -0
- package/dist/actions/github/get-context.d.ts +23 -0
- package/dist/actions/github/get-context.d.ts.map +1 -0
- package/dist/actions/github/get-context.js +109 -0
- package/dist/actions/github/get-context.js.map +1 -0
- package/dist/actions/github/index.d.ts +32 -0
- package/dist/actions/github/index.d.ts.map +1 -0
- package/dist/actions/github/index.js +67 -0
- package/dist/actions/github/index.js.map +1 -0
- package/dist/actions/github/label-definitions.d.ts +19 -0
- package/dist/actions/github/label-definitions.d.ts.map +1 -0
- package/dist/actions/github/label-definitions.js +71 -0
- package/dist/actions/github/label-definitions.js.map +1 -0
- package/dist/actions/github/mark-pr-ready.d.ts +14 -0
- package/dist/actions/github/mark-pr-ready.d.ts.map +1 -0
- package/dist/actions/github/mark-pr-ready.js +43 -0
- package/dist/actions/github/mark-pr-ready.js.map +1 -0
- package/dist/actions/github/merge-from-base.d.ts +15 -0
- package/dist/actions/github/merge-from-base.d.ts.map +1 -0
- package/dist/actions/github/merge-from-base.js +120 -0
- package/dist/actions/github/merge-from-base.js.map +1 -0
- package/dist/actions/github/preflight.d.ts +36 -0
- package/dist/actions/github/preflight.d.ts.map +1 -0
- package/dist/actions/github/preflight.js +292 -0
- package/dist/actions/github/preflight.js.map +1 -0
- package/dist/actions/github/read-pr-feedback.d.ts +14 -0
- package/dist/actions/github/read-pr-feedback.d.ts.map +1 -0
- package/dist/actions/github/read-pr-feedback.js +53 -0
- package/dist/actions/github/read-pr-feedback.js.map +1 -0
- package/dist/actions/github/respond-pr-feedback.d.ts +14 -0
- package/dist/actions/github/respond-pr-feedback.d.ts.map +1 -0
- package/dist/actions/github/respond-pr-feedback.js +58 -0
- package/dist/actions/github/respond-pr-feedback.js.map +1 -0
- package/dist/actions/github/review-changes.d.ts +19 -0
- package/dist/actions/github/review-changes.d.ts.map +1 -0
- package/dist/actions/github/review-changes.js +95 -0
- package/dist/actions/github/review-changes.js.map +1 -0
- package/dist/actions/github/sync-labels.d.ts +14 -0
- package/dist/actions/github/sync-labels.d.ts.map +1 -0
- package/dist/actions/github/sync-labels.js +81 -0
- package/dist/actions/github/sync-labels.js.map +1 -0
- package/dist/actions/github/update-pr.d.ts +14 -0
- package/dist/actions/github/update-pr.d.ts.map +1 -0
- package/dist/actions/github/update-pr.js +63 -0
- package/dist/actions/github/update-pr.js.map +1 -0
- package/dist/actions/index.d.ts +109 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +233 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/workflow/check-gate.d.ts +15 -0
- package/dist/actions/workflow/check-gate.d.ts.map +1 -0
- package/dist/actions/workflow/check-gate.js +75 -0
- package/dist/actions/workflow/check-gate.js.map +1 -0
- package/dist/actions/workflow/index.d.ts +21 -0
- package/dist/actions/workflow/index.d.ts.map +1 -0
- package/dist/actions/workflow/index.js +31 -0
- package/dist/actions/workflow/index.js.map +1 -0
- package/dist/actions/workflow/update-phase.d.ts +15 -0
- package/dist/actions/workflow/update-phase.d.ts.map +1 -0
- package/dist/actions/workflow/update-phase.js +143 -0
- package/dist/actions/workflow/update-phase.js.map +1 -0
- package/dist/actions/workflow/update-stage.d.ts +19 -0
- package/dist/actions/workflow/update-stage.d.ts.map +1 -0
- package/dist/actions/workflow/update-stage.js +137 -0
- package/dist/actions/workflow/update-stage.js.map +1 -0
- package/dist/errors/base-workflow-not-found.d.ts +10 -0
- package/dist/errors/base-workflow-not-found.d.ts.map +1 -0
- package/dist/errors/base-workflow-not-found.js +18 -0
- package/dist/errors/base-workflow-not-found.js.map +1 -0
- package/dist/errors/circular-extends.d.ts +9 -0
- package/dist/errors/circular-extends.d.ts.map +1 -0
- package/dist/errors/circular-extends.js +13 -0
- package/dist/errors/circular-extends.js.map +1 -0
- package/dist/errors/correlation-timeout.d.ts +9 -0
- package/dist/errors/correlation-timeout.d.ts.map +1 -0
- package/dist/errors/correlation-timeout.js +13 -0
- package/dist/errors/correlation-timeout.js.map +1 -0
- package/dist/errors/workflow-override.d.ts +9 -0
- package/dist/errors/workflow-override.d.ts.map +1 -0
- package/dist/errors/workflow-override.js +12 -0
- package/dist/errors/workflow-override.js.map +1 -0
- package/dist/executor/events.d.ts +55 -0
- package/dist/executor/events.d.ts.map +1 -0
- package/dist/executor/events.js +72 -0
- package/dist/executor/events.js.map +1 -0
- package/dist/executor/gate-handler.d.ts +55 -0
- package/dist/executor/gate-handler.d.ts.map +1 -0
- package/dist/executor/gate-handler.js +139 -0
- package/dist/executor/gate-handler.js.map +1 -0
- package/dist/executor/index.d.ts +140 -0
- package/dist/executor/index.d.ts.map +1 -0
- package/dist/executor/index.js +681 -0
- package/dist/executor/index.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/interpolation/context.d.ts +117 -0
- package/dist/interpolation/context.d.ts.map +1 -0
- package/dist/interpolation/context.js +256 -0
- package/dist/interpolation/context.js.map +1 -0
- package/dist/interpolation/index.d.ts +76 -0
- package/dist/interpolation/index.d.ts.map +1 -0
- package/dist/interpolation/index.js +264 -0
- package/dist/interpolation/index.js.map +1 -0
- package/dist/loader/extends.d.ts +48 -0
- package/dist/loader/extends.d.ts.map +1 -0
- package/dist/loader/extends.js +140 -0
- package/dist/loader/extends.js.map +1 -0
- package/dist/loader/index.d.ts +50 -0
- package/dist/loader/index.d.ts.map +1 -0
- package/dist/loader/index.js +190 -0
- package/dist/loader/index.js.map +1 -0
- package/dist/loader/schema.d.ts +506 -0
- package/dist/loader/schema.d.ts.map +1 -0
- package/dist/loader/schema.js +63 -0
- package/dist/loader/schema.js.map +1 -0
- package/dist/loader/validator.d.ts +33 -0
- package/dist/loader/validator.d.ts.map +1 -0
- package/dist/loader/validator.js +135 -0
- package/dist/loader/validator.js.map +1 -0
- package/dist/registry/index.d.ts +42 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +77 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/retry/index.d.ts +37 -0
- package/dist/retry/index.d.ts.map +1 -0
- package/dist/retry/index.js +225 -0
- package/dist/retry/index.js.map +1 -0
- package/dist/retry/strategies.d.ts +74 -0
- package/dist/retry/strategies.d.ts.map +1 -0
- package/dist/retry/strategies.js +136 -0
- package/dist/retry/strategies.js.map +1 -0
- package/dist/store/filesystem-store.d.ts +52 -0
- package/dist/store/filesystem-store.d.ts.map +1 -0
- package/dist/store/filesystem-store.js +230 -0
- package/dist/store/filesystem-store.js.map +1 -0
- package/dist/store/index.d.ts +7 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +6 -0
- package/dist/store/index.js.map +1 -0
- package/dist/types/action.d.ts +358 -0
- package/dist/types/action.d.ts.map +1 -0
- package/dist/types/action.js +96 -0
- package/dist/types/action.js.map +1 -0
- package/dist/types/events.d.ts +25 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +6 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/execution.d.ts +145 -0
- package/dist/types/execution.d.ts.map +1 -0
- package/dist/types/execution.js +2 -0
- package/dist/types/execution.js.map +1 -0
- package/dist/types/gate.d.ts +98 -0
- package/dist/types/gate.d.ts.map +1 -0
- package/dist/types/gate.js +41 -0
- package/dist/types/gate.js.map +1 -0
- package/dist/types/github.d.ts +706 -0
- package/dist/types/github.d.ts.map +1 -0
- package/dist/types/github.js +6 -0
- package/dist/types/github.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/logger.d.ts +60 -0
- package/dist/types/logger.d.ts.map +1 -0
- package/dist/types/logger.js +66 -0
- package/dist/types/logger.js.map +1 -0
- package/dist/types/retry.d.ts +36 -0
- package/dist/types/retry.d.ts.map +1 -0
- package/dist/types/retry.js +6 -0
- package/dist/types/retry.js.map +1 -0
- package/dist/types/store.d.ts +88 -0
- package/dist/types/store.d.ts.map +1 -0
- package/dist/types/store.js +6 -0
- package/dist/types/store.js.map +1 -0
- package/dist/types/workflow.d.ts +105 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +6 -0
- package/dist/types/workflow.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* github.get_context action - retrieves spec artifacts for context.
|
|
3
|
+
* Loads spec.md, plan.md, tasks.md and determines current phase.
|
|
4
|
+
*/
|
|
5
|
+
import { BaseAction } from '../base-action.js';
|
|
6
|
+
import { isNamespacedAction } from '../../types/action.js';
|
|
7
|
+
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
/**
|
|
10
|
+
* Determine current phase from tasks.md content
|
|
11
|
+
*/
|
|
12
|
+
function determinePhaseFromTasks(tasks) {
|
|
13
|
+
// Check if all tasks are complete
|
|
14
|
+
const incompleteTasks = tasks.match(/- \[ \]/g);
|
|
15
|
+
const completeTasks = tasks.match(/- \[x\]/gi);
|
|
16
|
+
if (!incompleteTasks || incompleteTasks.length === 0) {
|
|
17
|
+
return 'validate'; // All done
|
|
18
|
+
}
|
|
19
|
+
if (!completeTasks || completeTasks.length === 0) {
|
|
20
|
+
return 'implement'; // Starting implementation
|
|
21
|
+
}
|
|
22
|
+
return 'implement'; // In progress
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* github.get_context action handler
|
|
26
|
+
*/
|
|
27
|
+
export class GetContextAction extends BaseAction {
|
|
28
|
+
type = 'github.get_context';
|
|
29
|
+
canHandle(step) {
|
|
30
|
+
const uses = step.uses ?? step.action;
|
|
31
|
+
if (!uses)
|
|
32
|
+
return false;
|
|
33
|
+
return uses === 'github.get_context' ||
|
|
34
|
+
(isNamespacedAction(uses) && uses === this.type);
|
|
35
|
+
}
|
|
36
|
+
async executeInternal(step, context) {
|
|
37
|
+
// Get inputs
|
|
38
|
+
const issueNumber = this.getRequiredInput(step, context, 'issue_number');
|
|
39
|
+
const parentEpicNumber = this.getInput(step, context, 'parent_epic_number');
|
|
40
|
+
const issueBody = this.getInput(step, context, 'issue_body');
|
|
41
|
+
context.logger.info(`Getting context for issue #${issueNumber}`);
|
|
42
|
+
try {
|
|
43
|
+
// Find feature directory
|
|
44
|
+
const specsDir = join(context.workdir, 'specs');
|
|
45
|
+
const featureDir = this.findFeatureDir(specsDir, issueNumber);
|
|
46
|
+
if (!featureDir) {
|
|
47
|
+
return this.failureResult(`No spec directory found for issue #${issueNumber}`);
|
|
48
|
+
}
|
|
49
|
+
const featurePath = join(specsDir, featureDir);
|
|
50
|
+
// Read artifacts
|
|
51
|
+
const spec = this.readArtifact(featurePath, 'spec.md');
|
|
52
|
+
const plan = this.readArtifact(featurePath, 'plan.md');
|
|
53
|
+
const tasks = this.readArtifact(featurePath, 'tasks.md');
|
|
54
|
+
// Determine phase
|
|
55
|
+
let phase = 'specify';
|
|
56
|
+
if (spec && !plan)
|
|
57
|
+
phase = 'plan';
|
|
58
|
+
else if (plan && !tasks)
|
|
59
|
+
phase = 'tasks';
|
|
60
|
+
else if (tasks)
|
|
61
|
+
phase = determinePhaseFromTasks(tasks);
|
|
62
|
+
// Build output
|
|
63
|
+
const output = {
|
|
64
|
+
spec,
|
|
65
|
+
plan,
|
|
66
|
+
tasks,
|
|
67
|
+
phase,
|
|
68
|
+
feature_dir: featurePath,
|
|
69
|
+
};
|
|
70
|
+
// If this is an epic child, load parent context
|
|
71
|
+
if (parentEpicNumber) {
|
|
72
|
+
const parentDir = this.findFeatureDir(specsDir, parentEpicNumber);
|
|
73
|
+
if (parentDir) {
|
|
74
|
+
const parentPath = join(specsDir, parentDir);
|
|
75
|
+
output.epic_context = {
|
|
76
|
+
parent_spec: this.readArtifact(parentPath, 'spec.md'),
|
|
77
|
+
parent_plan: this.readArtifact(parentPath, 'plan.md'),
|
|
78
|
+
parent_tasks: this.readArtifact(parentPath, 'tasks.md'),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return this.successResult(output);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
return this.failureResult(error instanceof Error ? error.message : String(error));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Find the feature directory for an issue number
|
|
90
|
+
*/
|
|
91
|
+
findFeatureDir(specsDir, issueNumber) {
|
|
92
|
+
if (!existsSync(specsDir)) {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
const dirs = readdirSync(specsDir);
|
|
96
|
+
return dirs.find(d => d.startsWith(`${issueNumber}-`));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Read an artifact file, returning undefined if it doesn't exist
|
|
100
|
+
*/
|
|
101
|
+
readArtifact(featurePath, filename) {
|
|
102
|
+
const filepath = join(featurePath, filename);
|
|
103
|
+
if (!existsSync(filepath)) {
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
return readFileSync(filepath, 'utf-8');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=get-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-context.js","sourceRoot":"","sources":["../../../src/actions/github/get-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAU/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,SAAS,uBAAuB,CAAC,KAAa;IAC5C,kCAAkC;IAClC,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAE/C,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,UAAU,CAAC,CAAC,WAAW;IAChC,CAAC;IAED,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,WAAW,CAAC,CAAC,0BAA0B;IAChD,CAAC;IAED,OAAO,WAAW,CAAC,CAAC,cAAc;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IACrC,IAAI,GAAqB,oBAAoB,CAAC;IAEvD,SAAS,CAAC,IAAoB;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,IAAI,KAAK,oBAAoB;YAC7B,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAES,KAAK,CAAC,eAAe,CAC7B,IAAoB,EACpB,OAAsB;QAEtB,aAAa;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAS,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACjF,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAS,IAAI,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACpF,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAS,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAErE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,WAAW,EAAE,CAAC,CAAC;QAEjE,IAAI,CAAC;YACH,yBAAyB;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAE9D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,aAAa,CAAC,sCAAsC,WAAW,EAAE,CAAC,CAAC;YACjF,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAE/C,iBAAiB;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAEzD,kBAAkB;YAClB,IAAI,KAAK,GAAc,SAAS,CAAC;YACjC,IAAI,IAAI,IAAI,CAAC,IAAI;gBAAE,KAAK,GAAG,MAAM,CAAC;iBAC7B,IAAI,IAAI,IAAI,CAAC,KAAK;gBAAE,KAAK,GAAG,OAAO,CAAC;iBACpC,IAAI,KAAK;gBAAE,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;YAEvD,eAAe;YACf,MAAM,MAAM,GAAqB;gBAC/B,IAAI;gBACJ,IAAI;gBACJ,KAAK;gBACL,KAAK;gBACL,WAAW,EAAE,WAAW;aACzB,CAAC;YAEF,gDAAgD;YAChD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAClE,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAC7C,MAAM,CAAC,YAAY,GAAG;wBACpB,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC;wBACrD,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC;wBACrD,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC;qBACxD,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,aAAa,CACvB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,QAAgB,EAAE,WAAmB;QAC1D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,WAAmB,EAAE,QAAgB;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub action namespace registration.
|
|
3
|
+
* Exports all github.* actions and provides namespace registration.
|
|
4
|
+
*/
|
|
5
|
+
import type { ActionNamespace, ActionHandler } from '../../types/index.js';
|
|
6
|
+
export { PreflightAction } from './preflight.js';
|
|
7
|
+
export { GetContextAction } from './get-context.js';
|
|
8
|
+
export { ReviewChangesAction } from './review-changes.js';
|
|
9
|
+
export { CommitAndPushAction } from './commit-and-push.js';
|
|
10
|
+
export { MergeFromBaseAction } from './merge-from-base.js';
|
|
11
|
+
export { CreateDraftPRAction } from './create-draft-pr.js';
|
|
12
|
+
export { MarkPRReadyAction } from './mark-pr-ready.js';
|
|
13
|
+
export { UpdatePRAction } from './update-pr.js';
|
|
14
|
+
export { ReadPRFeedbackAction } from './read-pr-feedback.js';
|
|
15
|
+
export { RespondPRFeedbackAction } from './respond-pr-feedback.js';
|
|
16
|
+
export { AddCommentAction } from './add-comment.js';
|
|
17
|
+
export { SyncLabelsAction } from './sync-labels.js';
|
|
18
|
+
export * from './client/index.js';
|
|
19
|
+
export { parseGitHubIssueUrl } from './preflight.js';
|
|
20
|
+
/**
|
|
21
|
+
* All GitHub action handlers
|
|
22
|
+
*/
|
|
23
|
+
export declare const githubActionHandlers: ActionHandler[];
|
|
24
|
+
/**
|
|
25
|
+
* GitHub action namespace definition
|
|
26
|
+
*/
|
|
27
|
+
export declare const githubNamespace: ActionNamespace;
|
|
28
|
+
/**
|
|
29
|
+
* Get all GitHub action handlers
|
|
30
|
+
*/
|
|
31
|
+
export declare function getGitHubActionHandlers(): ActionHandler[];
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/actions/github/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAqB3E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,EAgB/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,eAI7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,aAAa,EAAE,CAEzD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Core GitHub actions
|
|
2
|
+
import { PreflightAction } from './preflight.js';
|
|
3
|
+
import { GetContextAction } from './get-context.js';
|
|
4
|
+
import { ReviewChangesAction } from './review-changes.js';
|
|
5
|
+
import { CommitAndPushAction } from './commit-and-push.js';
|
|
6
|
+
import { MergeFromBaseAction } from './merge-from-base.js';
|
|
7
|
+
// PR management actions
|
|
8
|
+
import { CreateDraftPRAction } from './create-draft-pr.js';
|
|
9
|
+
import { MarkPRReadyAction } from './mark-pr-ready.js';
|
|
10
|
+
import { UpdatePRAction } from './update-pr.js';
|
|
11
|
+
import { ReadPRFeedbackAction } from './read-pr-feedback.js';
|
|
12
|
+
import { RespondPRFeedbackAction } from './respond-pr-feedback.js';
|
|
13
|
+
import { AddCommentAction } from './add-comment.js';
|
|
14
|
+
// Infrastructure actions
|
|
15
|
+
import { SyncLabelsAction } from './sync-labels.js';
|
|
16
|
+
// Re-export action classes
|
|
17
|
+
export { PreflightAction } from './preflight.js';
|
|
18
|
+
export { GetContextAction } from './get-context.js';
|
|
19
|
+
export { ReviewChangesAction } from './review-changes.js';
|
|
20
|
+
export { CommitAndPushAction } from './commit-and-push.js';
|
|
21
|
+
export { MergeFromBaseAction } from './merge-from-base.js';
|
|
22
|
+
export { CreateDraftPRAction } from './create-draft-pr.js';
|
|
23
|
+
export { MarkPRReadyAction } from './mark-pr-ready.js';
|
|
24
|
+
export { UpdatePRAction } from './update-pr.js';
|
|
25
|
+
export { ReadPRFeedbackAction } from './read-pr-feedback.js';
|
|
26
|
+
export { RespondPRFeedbackAction } from './respond-pr-feedback.js';
|
|
27
|
+
export { AddCommentAction } from './add-comment.js';
|
|
28
|
+
export { SyncLabelsAction } from './sync-labels.js';
|
|
29
|
+
// Re-export client
|
|
30
|
+
export * from './client/index.js';
|
|
31
|
+
// Re-export URL parser utility
|
|
32
|
+
export { parseGitHubIssueUrl } from './preflight.js';
|
|
33
|
+
/**
|
|
34
|
+
* All GitHub action handlers
|
|
35
|
+
*/
|
|
36
|
+
export const githubActionHandlers = [
|
|
37
|
+
// Core actions
|
|
38
|
+
new PreflightAction(),
|
|
39
|
+
new GetContextAction(),
|
|
40
|
+
new ReviewChangesAction(),
|
|
41
|
+
new CommitAndPushAction(),
|
|
42
|
+
new MergeFromBaseAction(),
|
|
43
|
+
// PR management actions
|
|
44
|
+
new CreateDraftPRAction(),
|
|
45
|
+
new MarkPRReadyAction(),
|
|
46
|
+
new UpdatePRAction(),
|
|
47
|
+
new ReadPRFeedbackAction(),
|
|
48
|
+
new RespondPRFeedbackAction(),
|
|
49
|
+
new AddCommentAction(),
|
|
50
|
+
// Infrastructure actions
|
|
51
|
+
new SyncLabelsAction(),
|
|
52
|
+
];
|
|
53
|
+
/**
|
|
54
|
+
* GitHub action namespace definition
|
|
55
|
+
*/
|
|
56
|
+
export const githubNamespace = {
|
|
57
|
+
namespace: 'github',
|
|
58
|
+
description: 'GitHub API and git operations for workflow automation',
|
|
59
|
+
handlers: githubActionHandlers,
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Get all GitHub action handlers
|
|
63
|
+
*/
|
|
64
|
+
export function getGitHubActionHandlers() {
|
|
65
|
+
return [...githubActionHandlers];
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/actions/github/index.ts"],"names":[],"mappings":"AAMA,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAwB;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,yBAAyB;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,2BAA2B;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,mBAAmB;AACnB,cAAc,mBAAmB,CAAC;AAElC,+BAA+B;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoB;IACnD,eAAe;IACf,IAAI,eAAe,EAAE;IACrB,IAAI,gBAAgB,EAAE;IACtB,IAAI,mBAAmB,EAAE;IACzB,IAAI,mBAAmB,EAAE;IACzB,IAAI,mBAAmB,EAAE;IACzB,wBAAwB;IACxB,IAAI,mBAAmB,EAAE;IACzB,IAAI,iBAAiB,EAAE;IACvB,IAAI,cAAc,EAAE;IACpB,IAAI,oBAAoB,EAAE;IAC1B,IAAI,uBAAuB,EAAE;IAC7B,IAAI,gBAAgB,EAAE;IACtB,yBAAyB;IACzB,IAAI,gBAAgB,EAAE;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,SAAS,EAAE,QAAQ;IACnB,WAAW,EAAE,uDAAuD;IACpE,QAAQ,EAAE,oBAAoB;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,CAAC,GAAG,oBAAoB,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared label definitions for workflow management.
|
|
3
|
+
*
|
|
4
|
+
* These labels are used by sync-labels action and can be imported
|
|
5
|
+
* by other modules that need to reference the canonical label set.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Label definition with required fields for workflow labels.
|
|
9
|
+
*/
|
|
10
|
+
export interface LabelDefinition {
|
|
11
|
+
name: string;
|
|
12
|
+
color: string;
|
|
13
|
+
description: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Canonical set of workflow labels managed by the label sync utility.
|
|
17
|
+
*/
|
|
18
|
+
export declare const WORKFLOW_LABELS: LabelDefinition[];
|
|
19
|
+
//# sourceMappingURL=label-definitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label-definitions.d.ts","sourceRoot":"","sources":["../../../src/actions/github/label-definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,eAAe,EAoE5C,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared label definitions for workflow management.
|
|
3
|
+
*
|
|
4
|
+
* These labels are used by sync-labels action and can be imported
|
|
5
|
+
* by other modules that need to reference the canonical label set.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Canonical set of workflow labels managed by the label sync utility.
|
|
9
|
+
*/
|
|
10
|
+
export const WORKFLOW_LABELS = [
|
|
11
|
+
// Phase labels
|
|
12
|
+
{ name: 'phase:specify', color: '0052CC', description: 'Specification phase' },
|
|
13
|
+
{ name: 'phase:clarify', color: '0052CC', description: 'Clarification phase' },
|
|
14
|
+
{ name: 'phase:plan', color: '0052CC', description: 'Planning phase' },
|
|
15
|
+
{ name: 'phase:tasks', color: '0052CC', description: 'Task generation phase' },
|
|
16
|
+
{ name: 'phase:implement', color: '0052CC', description: 'Implementation phase' },
|
|
17
|
+
{ name: 'phase:validate', color: '0052CC', description: 'Validation phase' },
|
|
18
|
+
// Waiting-for labels (review gates)
|
|
19
|
+
{ name: 'waiting-for:spec-review', color: 'FBCA04', description: 'Waiting for spec review' },
|
|
20
|
+
{ name: 'waiting-for:clarification', color: 'FBCA04', description: 'Waiting for clarification answers' },
|
|
21
|
+
{ name: 'waiting-for:clarification-review', color: 'FBCA04', description: 'Waiting for clarification review' },
|
|
22
|
+
{ name: 'waiting-for:plan-review', color: 'FBCA04', description: 'Waiting for plan review' },
|
|
23
|
+
{ name: 'waiting-for:tasks-review', color: 'FBCA04', description: 'Waiting for tasks review' },
|
|
24
|
+
{ name: 'waiting-for:implementation-review', color: 'FBCA04', description: 'Waiting for implementation review' },
|
|
25
|
+
{ name: 'waiting-for:manual-validation', color: 'FBCA04', description: 'Waiting for manual validation' },
|
|
26
|
+
{ name: 'waiting-for:pr-feedback', color: 'FBCA04', description: 'Waiting to address PR feedback' },
|
|
27
|
+
{ name: 'waiting-for:address-pr-feedback', color: 'FBCA04', description: 'Agent is addressing PR review feedback' },
|
|
28
|
+
{ name: 'waiting-for:children-complete', color: 'FBCA04', description: 'Waiting for child issues to complete' },
|
|
29
|
+
{ name: 'waiting-for:epic-approval', color: 'FBCA04', description: 'Epic rollup PR awaiting approval' },
|
|
30
|
+
{ name: 'waiting-for:dependencies', color: 'FBCA04', description: 'Waiting for blocking issues' },
|
|
31
|
+
// Completed labels
|
|
32
|
+
{ name: 'completed:spec-review', color: '0E8A16', description: 'Spec review completed' },
|
|
33
|
+
{ name: 'completed:clarification', color: '0E8A16', description: 'Clarification completed' },
|
|
34
|
+
{ name: 'completed:clarification-review', color: '0E8A16', description: 'Clarification review completed' },
|
|
35
|
+
{ name: 'completed:plan-review', color: '0E8A16', description: 'Plan review completed' },
|
|
36
|
+
{ name: 'completed:tasks-review', color: '0E8A16', description: 'Tasks review completed' },
|
|
37
|
+
{ name: 'completed:implementation-review', color: '0E8A16', description: 'Implementation review completed' },
|
|
38
|
+
{ name: 'completed:manual-validation', color: '0E8A16', description: 'Manual validation completed' },
|
|
39
|
+
{ name: 'completed:setup', color: '0E8A16', description: 'Setup phase completed' },
|
|
40
|
+
{ name: 'completed:specify', color: '0E8A16', description: 'Specification phase completed' },
|
|
41
|
+
{ name: 'completed:clarify', color: '0E8A16', description: 'Clarification phase completed' },
|
|
42
|
+
{ name: 'completed:plan', color: '0E8A16', description: 'Planning phase completed' },
|
|
43
|
+
{ name: 'completed:tasks', color: '0E8A16', description: 'Task generation completed' },
|
|
44
|
+
{ name: 'completed:implement', color: '0E8A16', description: 'Implementation completed' },
|
|
45
|
+
{ name: 'completed:validate', color: '0E8A16', description: 'Validation completed' },
|
|
46
|
+
{ name: 'completed:children-complete', color: '0E8A16', description: 'All epic children completed' },
|
|
47
|
+
{ name: 'completed:epic-approval', color: '0E8A16', description: 'Epic rollup PR approved and merged' },
|
|
48
|
+
// Issue type labels
|
|
49
|
+
{ name: 'type:feature', color: '1D76DB', description: 'Feature request' },
|
|
50
|
+
{ name: 'type:bug', color: 'D73A4A', description: 'Bug report' },
|
|
51
|
+
{ name: 'type:epic', color: '5319E7', description: 'Epic issue with children' },
|
|
52
|
+
// Agent labels
|
|
53
|
+
{ name: 'agent:dispatched', color: 'C5DEF5', description: 'Dispatched to agent queue' },
|
|
54
|
+
{ name: 'agent:in-progress', color: '0366D6', description: 'Agent is actively working' },
|
|
55
|
+
{ name: 'agent:paused', color: 'F9D0C4', description: 'Agent work is paused' },
|
|
56
|
+
{ name: 'agent:error', color: 'D73A4A', description: 'Agent encountered an error' },
|
|
57
|
+
// Needs labels
|
|
58
|
+
{ name: 'needs:epic-approval', color: 'D93F0B', description: 'Epic PR needs approval' },
|
|
59
|
+
{ name: 'needs:human-review', color: 'D93F0B', description: 'Requires human review' },
|
|
60
|
+
// Process trigger labels
|
|
61
|
+
{ name: 'process:speckit-feature', color: 'D876E3', description: 'Speckit feature process trigger' },
|
|
62
|
+
{ name: 'process:speckit-bugfix', color: 'D876E3', description: 'Speckit bugfix process trigger' },
|
|
63
|
+
{ name: 'process:speckit-epic', color: 'D876E3', description: 'Speckit epic process trigger' },
|
|
64
|
+
// Workflow identity labels (persist for issue lifetime)
|
|
65
|
+
{ name: 'workflow:speckit-feature', color: '6F42C1', description: 'Speckit feature workflow' },
|
|
66
|
+
{ name: 'workflow:speckit-bugfix', color: '6F42C1', description: 'Speckit bugfix workflow' },
|
|
67
|
+
{ name: 'workflow:speckit-epic', color: '6F42C1', description: 'Speckit epic workflow' },
|
|
68
|
+
// Relationship labels
|
|
69
|
+
{ name: 'epic-child', color: 'bfd4f2', description: 'Child issue of an epic' },
|
|
70
|
+
];
|
|
71
|
+
//# sourceMappingURL=label-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label-definitions.js","sourceRoot":"","sources":["../../../src/actions/github/label-definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* github.mark_pr_ready action - converts a draft PR to ready for review.
|
|
3
|
+
*/
|
|
4
|
+
import { BaseAction } from '../base-action.js';
|
|
5
|
+
import type { ActionContext, ActionResult, ActionIdentifier, StepDefinition } from '../../types/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* github.mark_pr_ready action handler
|
|
8
|
+
*/
|
|
9
|
+
export declare class MarkPRReadyAction extends BaseAction {
|
|
10
|
+
readonly type: ActionIdentifier;
|
|
11
|
+
canHandle(step: StepDefinition): boolean;
|
|
12
|
+
protected executeInternal(step: StepDefinition, context: ActionContext): Promise<Omit<ActionResult, 'duration'>>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=mark-pr-ready.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark-pr-ready.d.ts","sourceRoot":"","sources":["../../../src/actions/github/mark-pr-ready.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,cAAc,EAGf,MAAM,sBAAsB,CAAC;AAK9B;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAA0B;IAEzD,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;cAOxB,eAAe,CAC7B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;CA+B3C"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* github.mark_pr_ready action - converts a draft PR to ready for review.
|
|
3
|
+
*/
|
|
4
|
+
import { BaseAction } from '../base-action.js';
|
|
5
|
+
import { isNamespacedAction } from '../../types/action.js';
|
|
6
|
+
import { createGitHubClient } from './client/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* github.mark_pr_ready action handler
|
|
9
|
+
*/
|
|
10
|
+
export class MarkPRReadyAction extends BaseAction {
|
|
11
|
+
type = 'github.mark_pr_ready';
|
|
12
|
+
canHandle(step) {
|
|
13
|
+
const uses = step.uses ?? step.action;
|
|
14
|
+
if (!uses)
|
|
15
|
+
return false;
|
|
16
|
+
return uses === 'github.mark_pr_ready' ||
|
|
17
|
+
(isNamespacedAction(uses) && uses === this.type);
|
|
18
|
+
}
|
|
19
|
+
async executeInternal(step, context) {
|
|
20
|
+
// Get inputs
|
|
21
|
+
const prNumber = this.getRequiredInput(step, context, 'pr_number');
|
|
22
|
+
context.logger.info(`Marking PR #${prNumber} as ready for review`);
|
|
23
|
+
try {
|
|
24
|
+
// Get GitHub client
|
|
25
|
+
const client = createGitHubClient(context.workdir);
|
|
26
|
+
// Get repo info
|
|
27
|
+
const repoInfo = await client.getRepoInfo();
|
|
28
|
+
// Mark PR as ready
|
|
29
|
+
await client.markPRReady(repoInfo.owner, repoInfo.repo, prNumber);
|
|
30
|
+
context.logger.info(`PR #${prNumber} is now ready for review`);
|
|
31
|
+
const output = {
|
|
32
|
+
success: true,
|
|
33
|
+
pr_number: prNumber,
|
|
34
|
+
pr_url: `https://github.com/${repoInfo.owner}/${repoInfo.repo}/pull/${prNumber}`,
|
|
35
|
+
};
|
|
36
|
+
return this.successResult(output);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
return this.failureResult(error instanceof Error ? error.message : String(error));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=mark-pr-ready.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark-pr-ready.js","sourceRoot":"","sources":["../../../src/actions/github/mark-pr-ready.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAS/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IACtC,IAAI,GAAqB,sBAAsB,CAAC;IAEzD,SAAS,CAAC,IAAoB;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,IAAI,KAAK,sBAAsB;YAC/B,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAES,KAAK,CAAC,eAAe,CAC7B,IAAoB,EACpB,OAAsB;QAEtB,aAAa;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAS,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAE3E,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,QAAQ,sBAAsB,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,oBAAoB;YACpB,MAAM,MAAM,GAAiB,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAEjE,gBAAgB;YAChB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;YAE5C,mBAAmB;YACnB,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAElE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,QAAQ,0BAA0B,CAAC,CAAC;YAE/D,MAAM,MAAM,GAAsB;gBAChC,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,QAAQ;gBACnB,MAAM,EAAE,sBAAsB,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,SAAS,QAAQ,EAAE;aACjF,CAAC;YAEF,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,aAAa,CACvB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* github.merge_from_base action - merges from base branch with conflict detection.
|
|
3
|
+
* Fetches latest changes and merges, reporting any conflicts.
|
|
4
|
+
*/
|
|
5
|
+
import { BaseAction } from '../base-action.js';
|
|
6
|
+
import type { ActionContext, ActionResult, ActionIdentifier, StepDefinition } from '../../types/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* github.merge_from_base action handler
|
|
9
|
+
*/
|
|
10
|
+
export declare class MergeFromBaseAction extends BaseAction {
|
|
11
|
+
readonly type: ActionIdentifier;
|
|
12
|
+
canHandle(step: StepDefinition): boolean;
|
|
13
|
+
protected executeInternal(step: StepDefinition, context: ActionContext): Promise<Omit<ActionResult, 'duration'>>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=merge-from-base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-from-base.d.ts","sourceRoot":"","sources":["../../../src/actions/github/merge-from-base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,cAAc,EAIf,MAAM,sBAAsB,CAAC;AAK9B;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IACjD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAA4B;IAE3D,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;cAOxB,eAAe,CAC7B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;CAwH3C"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* github.merge_from_base action - merges from base branch with conflict detection.
|
|
3
|
+
* Fetches latest changes and merges, reporting any conflicts.
|
|
4
|
+
*/
|
|
5
|
+
import { BaseAction } from '../base-action.js';
|
|
6
|
+
import { isNamespacedAction } from '../../types/action.js';
|
|
7
|
+
import { createGitHubClient } from './client/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* github.merge_from_base action handler
|
|
10
|
+
*/
|
|
11
|
+
export class MergeFromBaseAction extends BaseAction {
|
|
12
|
+
type = 'github.merge_from_base';
|
|
13
|
+
canHandle(step) {
|
|
14
|
+
const uses = step.uses ?? step.action;
|
|
15
|
+
if (!uses)
|
|
16
|
+
return false;
|
|
17
|
+
return uses === 'github.merge_from_base' ||
|
|
18
|
+
(isNamespacedAction(uses) && uses === this.type);
|
|
19
|
+
}
|
|
20
|
+
async executeInternal(step, context) {
|
|
21
|
+
// Get inputs
|
|
22
|
+
const abortOnConflict = this.getInput(step, context, 'abort_on_conflict', false);
|
|
23
|
+
const autoResolve = this.getInput(step, context, 'auto_resolve', true);
|
|
24
|
+
const parentEpicNumber = this.getInput(step, context, 'parent_epic_number');
|
|
25
|
+
context.logger.info('Merging from base branch');
|
|
26
|
+
try {
|
|
27
|
+
// Get GitHub client
|
|
28
|
+
const client = createGitHubClient(context.workdir);
|
|
29
|
+
// Check for uncommitted changes first
|
|
30
|
+
const status = await client.getStatus();
|
|
31
|
+
let stashCreated = false;
|
|
32
|
+
if (status.has_changes) {
|
|
33
|
+
// Stash changes before merge
|
|
34
|
+
stashCreated = await client.stash('autodev: pre-merge stash');
|
|
35
|
+
context.logger.info('Stashed uncommitted changes');
|
|
36
|
+
}
|
|
37
|
+
// Fetch latest from remote
|
|
38
|
+
await client.fetch('origin', true);
|
|
39
|
+
// Determine base branch
|
|
40
|
+
let baseBranch;
|
|
41
|
+
let mergedFromEpic = false;
|
|
42
|
+
if (parentEpicNumber) {
|
|
43
|
+
// Try to find epic branch
|
|
44
|
+
const epicBranch = `${parentEpicNumber}-`;
|
|
45
|
+
const currentBranch = await client.getCurrentBranch();
|
|
46
|
+
// Epic branches would be like: epic/123-feature or 123-feature
|
|
47
|
+
baseBranch = `origin/${epicBranch}`;
|
|
48
|
+
// Check if exists, otherwise fall back to default
|
|
49
|
+
const exists = await client.branchExists(epicBranch, true);
|
|
50
|
+
if (!exists) {
|
|
51
|
+
baseBranch = `origin/${await client.getDefaultBranch()}`;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
mergedFromEpic = true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// Use default branch
|
|
59
|
+
const defaultBranch = await client.getDefaultBranch();
|
|
60
|
+
baseBranch = `origin/${defaultBranch}`;
|
|
61
|
+
}
|
|
62
|
+
context.logger.info(`Merging from ${baseBranch}`);
|
|
63
|
+
// Perform merge
|
|
64
|
+
const mergeResult = await client.merge(baseBranch);
|
|
65
|
+
// Handle conflicts
|
|
66
|
+
let conflictsRemaining = [];
|
|
67
|
+
const conflictsResolved = 0;
|
|
68
|
+
if (!mergeResult.success && mergeResult.conflicts.length > 0) {
|
|
69
|
+
if (abortOnConflict) {
|
|
70
|
+
// Abort merge and restore stash
|
|
71
|
+
await client.mergeAbort();
|
|
72
|
+
if (stashCreated) {
|
|
73
|
+
await client.stashPop();
|
|
74
|
+
}
|
|
75
|
+
return this.failureResult(`Merge conflict detected in ${mergeResult.conflicts.length} file(s). Aborted.`, {
|
|
76
|
+
output: {
|
|
77
|
+
success: false,
|
|
78
|
+
base_branch: baseBranch,
|
|
79
|
+
merged_from_epic: mergedFromEpic,
|
|
80
|
+
commits_merged: 0,
|
|
81
|
+
already_up_to_date: false,
|
|
82
|
+
conflicts_resolved: 0,
|
|
83
|
+
conflicts_remaining: mergeResult.conflicts,
|
|
84
|
+
stash_created: stashCreated,
|
|
85
|
+
summary: `Merge aborted due to ${mergeResult.conflicts.length} conflict(s)`,
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
// Return conflicts for agent resolution
|
|
90
|
+
conflictsRemaining = mergeResult.conflicts;
|
|
91
|
+
}
|
|
92
|
+
// Restore stash if created
|
|
93
|
+
if (stashCreated) {
|
|
94
|
+
const stashResult = await client.stashPop();
|
|
95
|
+
if (!stashResult.success && stashResult.conflicts) {
|
|
96
|
+
context.logger.warn('Stash pop resulted in conflicts');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const output = {
|
|
100
|
+
success: mergeResult.success || conflictsRemaining.length === 0,
|
|
101
|
+
base_branch: baseBranch.replace('origin/', ''),
|
|
102
|
+
merged_from_epic: mergedFromEpic,
|
|
103
|
+
commits_merged: mergeResult.commits_merged,
|
|
104
|
+
already_up_to_date: mergeResult.already_up_to_date,
|
|
105
|
+
conflicts_resolved: conflictsResolved,
|
|
106
|
+
conflicts_remaining: conflictsRemaining,
|
|
107
|
+
stash_created: stashCreated,
|
|
108
|
+
summary: mergeResult.summary,
|
|
109
|
+
};
|
|
110
|
+
if (conflictsRemaining.length > 0) {
|
|
111
|
+
return this.failureResult(`Merge completed with ${conflictsRemaining.length} conflict(s) requiring resolution`, { output });
|
|
112
|
+
}
|
|
113
|
+
return this.successResult(output);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
return this.failureResult(error instanceof Error ? error.message : String(error));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=merge-from-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-from-base.js","sourceRoot":"","sources":["../../../src/actions/github/merge-from-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* github.preflight action - validates environment before workflow execution.
|
|
3
|
+
* Parses issue URL, detects branch state, analyzes labels, and checks prerequisites.
|
|
4
|
+
*/
|
|
5
|
+
import { BaseAction } from '../base-action.js';
|
|
6
|
+
import type { ActionContext, ActionResult, ActionIdentifier, StepDefinition, ParsedIssueUrl } from '../../types/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Parse a GitHub issue URL into owner, repo, and number
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseGitHubIssueUrl(url: string): ParsedIssueUrl;
|
|
11
|
+
/**
|
|
12
|
+
* github.preflight action handler
|
|
13
|
+
*/
|
|
14
|
+
export declare class PreflightAction extends BaseAction {
|
|
15
|
+
readonly type: ActionIdentifier;
|
|
16
|
+
private client;
|
|
17
|
+
canHandle(step: StepDefinition): boolean;
|
|
18
|
+
protected executeInternal(step: StepDefinition, context: ActionContext): Promise<Omit<ActionResult, 'duration'>>;
|
|
19
|
+
/**
|
|
20
|
+
* Generate expected branch name from issue number and title
|
|
21
|
+
*/
|
|
22
|
+
private generateExpectedBranch;
|
|
23
|
+
/**
|
|
24
|
+
* Check speckit artifact status
|
|
25
|
+
*/
|
|
26
|
+
private checkSpeckitStatus;
|
|
27
|
+
/**
|
|
28
|
+
* Detect epic context from issue body and labels
|
|
29
|
+
*/
|
|
30
|
+
private detectEpicContext;
|
|
31
|
+
/**
|
|
32
|
+
* Find existing branches for an issue number
|
|
33
|
+
*/
|
|
34
|
+
private findExistingBranches;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../../src/actions/github/preflight.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,cAAc,EAOd,cAAc,EAGf,MAAM,sBAAsB,CAAC;AAO9B;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAU/D;AA8GD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAsB;IAErD,OAAO,CAAC,MAAM,CAA2B;IAEzC,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;cAOxB,eAAe,CAC7B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAsG1C;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;OAEG;YACW,kBAAkB;IAwBhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;YACW,oBAAoB;CAsBnC"}
|