@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,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* github.sync_labels action - creates/updates GitHub labels from configuration.
|
|
3
|
+
*/
|
|
4
|
+
import { BaseAction } from '../base-action.js';
|
|
5
|
+
import { isNamespacedAction } from '../../types/action.js';
|
|
6
|
+
import { createGitHubClient } from './client/index.js';
|
|
7
|
+
import { WORKFLOW_LABELS } from './label-definitions.js';
|
|
8
|
+
/**
|
|
9
|
+
* github.sync_labels action handler
|
|
10
|
+
*/
|
|
11
|
+
export class SyncLabelsAction extends BaseAction {
|
|
12
|
+
type = 'github.sync_labels';
|
|
13
|
+
canHandle(step) {
|
|
14
|
+
const uses = step.uses ?? step.action;
|
|
15
|
+
if (!uses)
|
|
16
|
+
return false;
|
|
17
|
+
return uses === 'github.sync_labels' ||
|
|
18
|
+
(isNamespacedAction(uses) && uses === this.type);
|
|
19
|
+
}
|
|
20
|
+
async executeInternal(step, context) {
|
|
21
|
+
// Get inputs
|
|
22
|
+
const dryRun = this.getInput(step, context, 'dry_run', true);
|
|
23
|
+
context.logger.info(`Syncing labels (dry_run: ${dryRun})`);
|
|
24
|
+
try {
|
|
25
|
+
// Get GitHub client
|
|
26
|
+
const client = createGitHubClient(context.workdir);
|
|
27
|
+
// Get repo info
|
|
28
|
+
const repoInfo = await client.getRepoInfo();
|
|
29
|
+
// Get existing labels
|
|
30
|
+
const existingLabels = await client.listLabels(repoInfo.owner, repoInfo.repo);
|
|
31
|
+
const existingMap = new Map(existingLabels.map(l => [l.name, l]));
|
|
32
|
+
const results = [];
|
|
33
|
+
const created = [];
|
|
34
|
+
const updated = [];
|
|
35
|
+
const unchanged = [];
|
|
36
|
+
// Process each configured label
|
|
37
|
+
for (const labelConfig of WORKFLOW_LABELS) {
|
|
38
|
+
const existing = existingMap.get(labelConfig.name);
|
|
39
|
+
if (!existing) {
|
|
40
|
+
// Create new label
|
|
41
|
+
if (!dryRun) {
|
|
42
|
+
await client.createLabel(repoInfo.owner, repoInfo.repo, labelConfig.name, labelConfig.color, labelConfig.description);
|
|
43
|
+
}
|
|
44
|
+
created.push(labelConfig.name);
|
|
45
|
+
results.push({ name: labelConfig.name, action: 'created' });
|
|
46
|
+
context.logger.info(`${dryRun ? '[DRY RUN] Would create' : 'Created'}: ${labelConfig.name}`);
|
|
47
|
+
}
|
|
48
|
+
else if (existing.color !== labelConfig.color ||
|
|
49
|
+
existing.description !== labelConfig.description) {
|
|
50
|
+
// Update existing label
|
|
51
|
+
if (!dryRun) {
|
|
52
|
+
await client.updateLabel(repoInfo.owner, repoInfo.repo, labelConfig.name, {
|
|
53
|
+
color: labelConfig.color,
|
|
54
|
+
description: labelConfig.description,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
updated.push(labelConfig.name);
|
|
58
|
+
results.push({ name: labelConfig.name, action: 'updated' });
|
|
59
|
+
context.logger.info(`${dryRun ? '[DRY RUN] Would update' : 'Updated'}: ${labelConfig.name}`);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// No change needed
|
|
63
|
+
unchanged.push(labelConfig.name);
|
|
64
|
+
results.push({ name: labelConfig.name, action: 'unchanged' });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
context.logger.info(`Sync complete: ${created.length} created, ${updated.length} updated, ${unchanged.length} unchanged`);
|
|
68
|
+
const output = {
|
|
69
|
+
created,
|
|
70
|
+
updated,
|
|
71
|
+
unchanged,
|
|
72
|
+
results,
|
|
73
|
+
};
|
|
74
|
+
return this.successResult(output);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
return this.failureResult(error instanceof Error ? error.message : String(error));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=sync-labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-labels.js","sourceRoot":"","sources":["../../../src/actions/github/sync-labels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* github.update_pr action - updates PR description with phase status.
|
|
3
|
+
*/
|
|
4
|
+
import { BaseAction } from '../base-action.js';
|
|
5
|
+
import type { ActionContext, ActionResult, ActionIdentifier, StepDefinition } from '../../types/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* github.update_pr action handler
|
|
8
|
+
*/
|
|
9
|
+
export declare class UpdatePRAction 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=update-pr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-pr.d.ts","sourceRoot":"","sources":["../../../src/actions/github/update-pr.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,cAAe,SAAQ,UAAU;IAC5C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAsB;IAErD,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;CAkD3C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* github.update_pr action - updates PR description with phase status.
|
|
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.update_pr action handler
|
|
9
|
+
*/
|
|
10
|
+
export class UpdatePRAction extends BaseAction {
|
|
11
|
+
type = 'github.update_pr';
|
|
12
|
+
canHandle(step) {
|
|
13
|
+
const uses = step.uses ?? step.action;
|
|
14
|
+
if (!uses)
|
|
15
|
+
return false;
|
|
16
|
+
return uses === 'github.update_pr' ||
|
|
17
|
+
(isNamespacedAction(uses) && uses === this.type);
|
|
18
|
+
}
|
|
19
|
+
async executeInternal(step, context) {
|
|
20
|
+
// Get inputs
|
|
21
|
+
const issueNumber = this.getInput(step, context, 'issue_number');
|
|
22
|
+
const prNumberInput = this.getInput(step, context, 'pr_number');
|
|
23
|
+
const title = this.getInput(step, context, 'title');
|
|
24
|
+
const body = this.getInput(step, context, 'body');
|
|
25
|
+
context.logger.info('Updating PR');
|
|
26
|
+
try {
|
|
27
|
+
// Get GitHub client
|
|
28
|
+
const client = createGitHubClient(context.workdir);
|
|
29
|
+
// Get repo info and current branch
|
|
30
|
+
const repoInfo = await client.getRepoInfo();
|
|
31
|
+
const currentBranch = await client.getCurrentBranch();
|
|
32
|
+
// Find PR number if not provided
|
|
33
|
+
let prNumber = prNumberInput;
|
|
34
|
+
if (!prNumber) {
|
|
35
|
+
const pr = await client.findPRForBranch(repoInfo.owner, repoInfo.repo, currentBranch);
|
|
36
|
+
if (!pr) {
|
|
37
|
+
return this.failureResult('No PR found for current branch');
|
|
38
|
+
}
|
|
39
|
+
prNumber = pr.number;
|
|
40
|
+
}
|
|
41
|
+
// Update PR
|
|
42
|
+
const updates = {};
|
|
43
|
+
if (title)
|
|
44
|
+
updates.title = title;
|
|
45
|
+
if (body)
|
|
46
|
+
updates.body = body;
|
|
47
|
+
if (Object.keys(updates).length > 0) {
|
|
48
|
+
await client.updatePullRequest(repoInfo.owner, repoInfo.repo, prNumber, updates);
|
|
49
|
+
context.logger.info(`Updated PR #${prNumber}`);
|
|
50
|
+
}
|
|
51
|
+
const output = {
|
|
52
|
+
pr_number: prNumber,
|
|
53
|
+
pr_url: `https://github.com/${repoInfo.owner}/${repoInfo.repo}/pull/${prNumber}`,
|
|
54
|
+
updated: Object.keys(updates).length > 0,
|
|
55
|
+
};
|
|
56
|
+
return this.successResult(output);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return this.failureResult(error instanceof Error ? error.message : String(error));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=update-pr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-pr.js","sourceRoot":"","sources":["../../../src/actions/github/update-pr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Action handler registry and factory.
|
|
3
|
+
* Provides centralized registration and lookup of action handlers.
|
|
4
|
+
* Supports both single handler registration and namespace-based registration.
|
|
5
|
+
*/
|
|
6
|
+
import type { ActionHandler, ActionType, ActionIdentifier, ActionNamespace, StepDefinition } from '../types/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Register an action handler
|
|
9
|
+
* @param handler The action handler to register
|
|
10
|
+
*/
|
|
11
|
+
export declare function registerActionHandler(handler: ActionHandler): void;
|
|
12
|
+
/**
|
|
13
|
+
* Register a namespace of action handlers
|
|
14
|
+
* @param namespace The namespace definition with handlers
|
|
15
|
+
*/
|
|
16
|
+
export declare function registerNamespace(namespace: ActionNamespace): void;
|
|
17
|
+
/**
|
|
18
|
+
* Unregister an action handler
|
|
19
|
+
* @param type The action type to unregister
|
|
20
|
+
*/
|
|
21
|
+
export declare function unregisterActionHandler(type: ActionIdentifier): void;
|
|
22
|
+
/**
|
|
23
|
+
* Unregister an entire namespace
|
|
24
|
+
* @param namespace The namespace to unregister
|
|
25
|
+
*/
|
|
26
|
+
export declare function unregisterNamespace(namespace: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Get an action handler for a workflow step
|
|
29
|
+
* @param step The workflow step to get a handler for
|
|
30
|
+
* @returns The action handler, or undefined if not found
|
|
31
|
+
*/
|
|
32
|
+
export declare function getActionHandler(step: StepDefinition): ActionHandler | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Get an action handler by type
|
|
35
|
+
* @param type The action type or identifier
|
|
36
|
+
* @returns The action handler, or undefined if not found
|
|
37
|
+
*/
|
|
38
|
+
export declare function getActionHandlerByType(type: ActionIdentifier): ActionHandler | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Get an action handler by namespace and name
|
|
41
|
+
* @param namespace The namespace (e.g., 'github')
|
|
42
|
+
* @param name The action name (e.g., 'preflight')
|
|
43
|
+
* @returns The action handler, or undefined if not found
|
|
44
|
+
*/
|
|
45
|
+
export declare function getActionHandlerByNamespace(namespace: string, name: string): ActionHandler | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Check if a handler is registered for a given action type
|
|
48
|
+
* @param type The action type to check
|
|
49
|
+
* @returns true if a handler is registered
|
|
50
|
+
*/
|
|
51
|
+
export declare function hasActionHandler(type: ActionIdentifier): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Check if a namespace is registered
|
|
54
|
+
* @param namespace The namespace to check
|
|
55
|
+
* @returns true if the namespace is registered
|
|
56
|
+
*/
|
|
57
|
+
export declare function hasNamespace(namespace: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Get all registered action types
|
|
60
|
+
* @returns Array of registered action types/identifiers
|
|
61
|
+
*/
|
|
62
|
+
export declare function getRegisteredActionTypes(): ActionIdentifier[];
|
|
63
|
+
/**
|
|
64
|
+
* Get all registered namespaces
|
|
65
|
+
* @returns Array of registered namespace names
|
|
66
|
+
*/
|
|
67
|
+
export declare function getRegisteredNamespaces(): string[];
|
|
68
|
+
/**
|
|
69
|
+
* Get a namespace definition
|
|
70
|
+
* @param namespace The namespace name
|
|
71
|
+
* @returns The namespace definition, or undefined
|
|
72
|
+
*/
|
|
73
|
+
export declare function getNamespace(namespace: string): ActionNamespace | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* Get all handlers in a namespace
|
|
76
|
+
* @param namespace The namespace name
|
|
77
|
+
* @returns Array of handlers in the namespace
|
|
78
|
+
*/
|
|
79
|
+
export declare function getNamespaceHandlers(namespace: string): ActionHandler[];
|
|
80
|
+
/**
|
|
81
|
+
* Clear all registered handlers (useful for testing)
|
|
82
|
+
*/
|
|
83
|
+
export declare function clearActionRegistry(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Get the action type for a workflow step
|
|
86
|
+
* @param step The workflow step
|
|
87
|
+
* @returns The detected action type
|
|
88
|
+
*/
|
|
89
|
+
export declare function getActionType(step: StepDefinition): ActionType;
|
|
90
|
+
/**
|
|
91
|
+
* Register all built-in action handlers
|
|
92
|
+
*/
|
|
93
|
+
export declare function registerBuiltinActions(): void;
|
|
94
|
+
export { BaseAction } from './base-action.js';
|
|
95
|
+
export { WorkspacePrepareAction } from './builtin/workspace-prepare.js';
|
|
96
|
+
export { AgentInvokeAction } from './builtin/agent-invoke.js';
|
|
97
|
+
export { VerificationCheckAction } from './builtin/verification-check.js';
|
|
98
|
+
export { PrCreateAction } from './builtin/pr-create.js';
|
|
99
|
+
export { ShellAction } from './builtin/shell.js';
|
|
100
|
+
export { HumancyReviewAction, type HumanDecisionHandler } from './builtin/humancy-review.js';
|
|
101
|
+
export { HumancyApiDecisionHandler, type HumancyApiHandlerConfig } from './builtin/humancy-api-handler.js';
|
|
102
|
+
export { CorrelationTimeoutError } from '../errors/correlation-timeout.js';
|
|
103
|
+
export { SpecKitAction } from './builtin/speckit/index.js';
|
|
104
|
+
export * from './builtin/speckit/types.js';
|
|
105
|
+
export { checkCLI, checkAllCLIs, executeCommand, executeShellCommand, parseJSONSafe, extractJSON, type CommandOptions, type CommandResult, type CLIStatus, } from './cli-utils.js';
|
|
106
|
+
export { githubNamespace, githubActionHandlers } from './github/index.js';
|
|
107
|
+
export { workflowNamespace, workflowActionHandlers } from './workflow/index.js';
|
|
108
|
+
export { epicNamespace, epicActionHandlers } from './epic/index.js';
|
|
109
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAatH;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAmBlE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAsBlE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAWpE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAS3D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,GAAG,SAAS,CAahF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,GAAG,aAAa,GAAG,SAAS,CAExF;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEtG;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,gBAAgB,EAAE,CAE7D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CAEvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU,CAE9D;AAgBD;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAc7C;AAGD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,KAAK,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3G,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,SAAS,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { parseActionType, parseNamespacedAction } from '../types/action.js';
|
|
2
|
+
/**
|
|
3
|
+
* Registry of action handlers by type (supports both flat and namespaced)
|
|
4
|
+
*/
|
|
5
|
+
const actionRegistry = new Map();
|
|
6
|
+
/**
|
|
7
|
+
* Registry of namespaces for organization
|
|
8
|
+
*/
|
|
9
|
+
const namespaceRegistry = new Map();
|
|
10
|
+
/**
|
|
11
|
+
* Register an action handler
|
|
12
|
+
* @param handler The action handler to register
|
|
13
|
+
*/
|
|
14
|
+
export function registerActionHandler(handler) {
|
|
15
|
+
if (actionRegistry.has(handler.type)) {
|
|
16
|
+
console.warn(`Overwriting existing handler for action type: ${handler.type}`);
|
|
17
|
+
}
|
|
18
|
+
actionRegistry.set(handler.type, handler);
|
|
19
|
+
// Also register in namespace if it's a namespaced action
|
|
20
|
+
const parsed = parseNamespacedAction(handler.type);
|
|
21
|
+
if (parsed) {
|
|
22
|
+
let ns = namespaceRegistry.get(parsed.namespace);
|
|
23
|
+
if (!ns) {
|
|
24
|
+
ns = { namespace: parsed.namespace, handlers: [] };
|
|
25
|
+
namespaceRegistry.set(parsed.namespace, ns);
|
|
26
|
+
}
|
|
27
|
+
// Add if not already present
|
|
28
|
+
if (!ns.handlers.some(h => h.type === handler.type)) {
|
|
29
|
+
ns.handlers.push(handler);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Register a namespace of action handlers
|
|
35
|
+
* @param namespace The namespace definition with handlers
|
|
36
|
+
*/
|
|
37
|
+
export function registerNamespace(namespace) {
|
|
38
|
+
// Store the namespace
|
|
39
|
+
const existing = namespaceRegistry.get(namespace.namespace);
|
|
40
|
+
if (existing) {
|
|
41
|
+
// Merge handlers
|
|
42
|
+
for (const handler of namespace.handlers) {
|
|
43
|
+
if (!existing.handlers.some(h => h.type === handler.type)) {
|
|
44
|
+
existing.handlers.push(handler);
|
|
45
|
+
}
|
|
46
|
+
// Also register individually
|
|
47
|
+
actionRegistry.set(handler.type, handler);
|
|
48
|
+
}
|
|
49
|
+
if (namespace.description && !existing.description) {
|
|
50
|
+
existing.description = namespace.description;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
namespaceRegistry.set(namespace.namespace, namespace);
|
|
55
|
+
// Register all handlers individually as well
|
|
56
|
+
for (const handler of namespace.handlers) {
|
|
57
|
+
actionRegistry.set(handler.type, handler);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Unregister an action handler
|
|
63
|
+
* @param type The action type to unregister
|
|
64
|
+
*/
|
|
65
|
+
export function unregisterActionHandler(type) {
|
|
66
|
+
actionRegistry.delete(type);
|
|
67
|
+
// Also remove from namespace
|
|
68
|
+
const parsed = parseNamespacedAction(type);
|
|
69
|
+
if (parsed) {
|
|
70
|
+
const ns = namespaceRegistry.get(parsed.namespace);
|
|
71
|
+
if (ns) {
|
|
72
|
+
ns.handlers = ns.handlers.filter(h => h.type !== type);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Unregister an entire namespace
|
|
78
|
+
* @param namespace The namespace to unregister
|
|
79
|
+
*/
|
|
80
|
+
export function unregisterNamespace(namespace) {
|
|
81
|
+
const ns = namespaceRegistry.get(namespace);
|
|
82
|
+
if (ns) {
|
|
83
|
+
// Remove all handlers in the namespace
|
|
84
|
+
for (const handler of ns.handlers) {
|
|
85
|
+
actionRegistry.delete(handler.type);
|
|
86
|
+
}
|
|
87
|
+
namespaceRegistry.delete(namespace);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get an action handler for a workflow step
|
|
92
|
+
* @param step The workflow step to get a handler for
|
|
93
|
+
* @returns The action handler, or undefined if not found
|
|
94
|
+
*/
|
|
95
|
+
export function getActionHandler(step) {
|
|
96
|
+
const actionType = parseActionType(step);
|
|
97
|
+
// First, check if any registered handler can handle this specific step
|
|
98
|
+
// This allows handlers to have more specific canHandle logic
|
|
99
|
+
for (const handler of actionRegistry.values()) {
|
|
100
|
+
if (handler.canHandle(step)) {
|
|
101
|
+
return handler;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Fall back to type-based lookup
|
|
105
|
+
return actionRegistry.get(actionType);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get an action handler by type
|
|
109
|
+
* @param type The action type or identifier
|
|
110
|
+
* @returns The action handler, or undefined if not found
|
|
111
|
+
*/
|
|
112
|
+
export function getActionHandlerByType(type) {
|
|
113
|
+
return actionRegistry.get(type);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get an action handler by namespace and name
|
|
117
|
+
* @param namespace The namespace (e.g., 'github')
|
|
118
|
+
* @param name The action name (e.g., 'preflight')
|
|
119
|
+
* @returns The action handler, or undefined if not found
|
|
120
|
+
*/
|
|
121
|
+
export function getActionHandlerByNamespace(namespace, name) {
|
|
122
|
+
return actionRegistry.get(`${namespace}.${name}`);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Check if a handler is registered for a given action type
|
|
126
|
+
* @param type The action type to check
|
|
127
|
+
* @returns true if a handler is registered
|
|
128
|
+
*/
|
|
129
|
+
export function hasActionHandler(type) {
|
|
130
|
+
return actionRegistry.has(type);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Check if a namespace is registered
|
|
134
|
+
* @param namespace The namespace to check
|
|
135
|
+
* @returns true if the namespace is registered
|
|
136
|
+
*/
|
|
137
|
+
export function hasNamespace(namespace) {
|
|
138
|
+
return namespaceRegistry.has(namespace);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get all registered action types
|
|
142
|
+
* @returns Array of registered action types/identifiers
|
|
143
|
+
*/
|
|
144
|
+
export function getRegisteredActionTypes() {
|
|
145
|
+
return Array.from(actionRegistry.keys());
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get all registered namespaces
|
|
149
|
+
* @returns Array of registered namespace names
|
|
150
|
+
*/
|
|
151
|
+
export function getRegisteredNamespaces() {
|
|
152
|
+
return Array.from(namespaceRegistry.keys());
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Get a namespace definition
|
|
156
|
+
* @param namespace The namespace name
|
|
157
|
+
* @returns The namespace definition, or undefined
|
|
158
|
+
*/
|
|
159
|
+
export function getNamespace(namespace) {
|
|
160
|
+
return namespaceRegistry.get(namespace);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get all handlers in a namespace
|
|
164
|
+
* @param namespace The namespace name
|
|
165
|
+
* @returns Array of handlers in the namespace
|
|
166
|
+
*/
|
|
167
|
+
export function getNamespaceHandlers(namespace) {
|
|
168
|
+
return namespaceRegistry.get(namespace)?.handlers ?? [];
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Clear all registered handlers (useful for testing)
|
|
172
|
+
*/
|
|
173
|
+
export function clearActionRegistry() {
|
|
174
|
+
actionRegistry.clear();
|
|
175
|
+
namespaceRegistry.clear();
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Get the action type for a workflow step
|
|
179
|
+
* @param step The workflow step
|
|
180
|
+
* @returns The detected action type
|
|
181
|
+
*/
|
|
182
|
+
export function getActionType(step) {
|
|
183
|
+
return parseActionType(step);
|
|
184
|
+
}
|
|
185
|
+
// Action handlers
|
|
186
|
+
import { WorkspacePrepareAction } from './builtin/workspace-prepare.js';
|
|
187
|
+
import { AgentInvokeAction } from './builtin/agent-invoke.js';
|
|
188
|
+
import { VerificationCheckAction } from './builtin/verification-check.js';
|
|
189
|
+
import { PrCreateAction } from './builtin/pr-create.js';
|
|
190
|
+
import { ShellAction } from './builtin/shell.js';
|
|
191
|
+
import { HumancyReviewAction } from './builtin/humancy-review.js';
|
|
192
|
+
import { SpecKitAction } from './builtin/speckit/index.js';
|
|
193
|
+
// Namespace imports
|
|
194
|
+
import { githubNamespace } from './github/index.js';
|
|
195
|
+
import { workflowNamespace } from './workflow/index.js';
|
|
196
|
+
import { epicNamespace } from './epic/index.js';
|
|
197
|
+
/**
|
|
198
|
+
* Register all built-in action handlers
|
|
199
|
+
*/
|
|
200
|
+
export function registerBuiltinActions() {
|
|
201
|
+
// Register legacy/built-in handlers
|
|
202
|
+
registerActionHandler(new WorkspacePrepareAction());
|
|
203
|
+
registerActionHandler(new AgentInvokeAction());
|
|
204
|
+
registerActionHandler(new VerificationCheckAction());
|
|
205
|
+
registerActionHandler(new PrCreateAction());
|
|
206
|
+
registerActionHandler(new ShellAction());
|
|
207
|
+
registerActionHandler(new HumancyReviewAction());
|
|
208
|
+
registerActionHandler(new SpecKitAction());
|
|
209
|
+
// Register namespaced action handlers
|
|
210
|
+
registerNamespace(githubNamespace);
|
|
211
|
+
registerNamespace(workflowNamespace);
|
|
212
|
+
registerNamespace(epicNamespace);
|
|
213
|
+
}
|
|
214
|
+
// Re-export base action
|
|
215
|
+
export { BaseAction } from './base-action.js';
|
|
216
|
+
// Re-export action classes
|
|
217
|
+
export { WorkspacePrepareAction } from './builtin/workspace-prepare.js';
|
|
218
|
+
export { AgentInvokeAction } from './builtin/agent-invoke.js';
|
|
219
|
+
export { VerificationCheckAction } from './builtin/verification-check.js';
|
|
220
|
+
export { PrCreateAction } from './builtin/pr-create.js';
|
|
221
|
+
export { ShellAction } from './builtin/shell.js';
|
|
222
|
+
export { HumancyReviewAction } from './builtin/humancy-review.js';
|
|
223
|
+
export { HumancyApiDecisionHandler } from './builtin/humancy-api-handler.js';
|
|
224
|
+
export { CorrelationTimeoutError } from '../errors/correlation-timeout.js';
|
|
225
|
+
export { SpecKitAction } from './builtin/speckit/index.js';
|
|
226
|
+
export * from './builtin/speckit/types.js';
|
|
227
|
+
// Re-export CLI utilities
|
|
228
|
+
export { checkCLI, checkAllCLIs, executeCommand, executeShellCommand, parseJSONSafe, extractJSON, } from './cli-utils.js';
|
|
229
|
+
// Re-export namespaces
|
|
230
|
+
export { githubNamespace, githubActionHandlers } from './github/index.js';
|
|
231
|
+
export { workflowNamespace, workflowActionHandlers } from './workflow/index.js';
|
|
232
|
+
export { epicNamespace, epicActionHandlers } from './epic/index.js';
|
|
233
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* workflow.check_gate action - checks review gate status.
|
|
3
|
+
* Determines if a workflow can proceed past a review gate.
|
|
4
|
+
*/
|
|
5
|
+
import { BaseAction } from '../base-action.js';
|
|
6
|
+
import type { ActionContext, ActionResult, ActionIdentifier, StepDefinition } from '../../types/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* workflow.check_gate action handler
|
|
9
|
+
*/
|
|
10
|
+
export declare class CheckGateAction 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=check-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-gate.d.ts","sourceRoot":"","sources":["../../../src/actions/workflow/check-gate.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,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAyB;IAExD,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;CAkE3C"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* workflow.check_gate action - checks review gate status.
|
|
3
|
+
* Determines if a workflow can proceed past a review gate.
|
|
4
|
+
*/
|
|
5
|
+
import { BaseAction } from '../base-action.js';
|
|
6
|
+
import { isNamespacedAction } from '../../types/action.js';
|
|
7
|
+
import { createGitHubClient } from '../github/client/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* workflow.check_gate action handler
|
|
10
|
+
*/
|
|
11
|
+
export class CheckGateAction extends BaseAction {
|
|
12
|
+
type = 'workflow.check_gate';
|
|
13
|
+
canHandle(step) {
|
|
14
|
+
const uses = step.uses ?? step.action;
|
|
15
|
+
if (!uses)
|
|
16
|
+
return false;
|
|
17
|
+
return uses === 'workflow.check_gate' ||
|
|
18
|
+
(isNamespacedAction(uses) && uses === this.type);
|
|
19
|
+
}
|
|
20
|
+
async executeInternal(step, context) {
|
|
21
|
+
// Get inputs
|
|
22
|
+
const issueNumber = this.getRequiredInput(step, context, 'issue_number');
|
|
23
|
+
const phase = this.getRequiredInput(step, context, 'phase');
|
|
24
|
+
context.logger.info(`Checking gate ${phase} for issue #${issueNumber}`);
|
|
25
|
+
try {
|
|
26
|
+
// Get GitHub client
|
|
27
|
+
const client = createGitHubClient(context.workdir);
|
|
28
|
+
// Get repo info
|
|
29
|
+
const repoInfo = await client.getRepoInfo();
|
|
30
|
+
// Get issue labels
|
|
31
|
+
const issue = await client.getIssue(repoInfo.owner, repoInfo.repo, issueNumber);
|
|
32
|
+
const labels = issue.labels.map(l => l.name);
|
|
33
|
+
// Check for gate-related labels
|
|
34
|
+
const needsLabel = `needs:${phase}`;
|
|
35
|
+
const waitingLabel = `waiting-for:${phase}`;
|
|
36
|
+
const completedLabel = `completed:${phase}`;
|
|
37
|
+
const hasNeeds = labels.includes(needsLabel);
|
|
38
|
+
const hasWaiting = labels.includes(waitingLabel);
|
|
39
|
+
const hasCompleted = labels.includes(completedLabel);
|
|
40
|
+
// Determine gate status
|
|
41
|
+
let canProceed = true;
|
|
42
|
+
let gateActive = false;
|
|
43
|
+
let waitingFor;
|
|
44
|
+
let completed;
|
|
45
|
+
let blockedReason;
|
|
46
|
+
if (hasNeeds || hasWaiting) {
|
|
47
|
+
gateActive = true;
|
|
48
|
+
if (!hasCompleted) {
|
|
49
|
+
canProceed = false;
|
|
50
|
+
waitingFor = phase;
|
|
51
|
+
blockedReason = `Waiting for ${phase} approval`;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
completed = phase;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (hasCompleted) {
|
|
58
|
+
completed = phase;
|
|
59
|
+
}
|
|
60
|
+
const output = {
|
|
61
|
+
can_proceed: canProceed,
|
|
62
|
+
gate_active: gateActive,
|
|
63
|
+
waiting_for: waitingFor,
|
|
64
|
+
completed,
|
|
65
|
+
blocked_reason: blockedReason,
|
|
66
|
+
};
|
|
67
|
+
context.logger.info(`Gate check result: can_proceed=${canProceed}`);
|
|
68
|
+
return this.successResult(output);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
return this.failureResult(error instanceof Error ? error.message : String(error));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=check-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-gate.js","sourceRoot":"","sources":["../../../src/actions/workflow/check-gate.ts"],"names":[],"mappings":"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"}
|