@revisium/orchestrator 0.1.0-alpha.9 → 0.2.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +210 -146
- package/control-plane/bootstrap.config.json +43 -1
- package/control-plane/default-playbook/catalog/pipelines.json +1157 -10
- package/control-plane/default-playbook/catalog/roles.json +54 -0
- package/control-plane/default-playbook/package.json +1 -1
- package/control-plane/default-playbook/prompts/developer.md +1 -0
- package/control-plane/default-playbook/prompts/triager.md +3 -0
- package/dist/api/graphql-api/graphql-ws/pubsub.module.js +0 -1
- package/dist/api/graphql-api/graphql-ws/pubsub.module.js.map +1 -1
- package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js +0 -1
- package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js.map +1 -1
- package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js +0 -1
- package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js.map +1 -1
- package/dist/api/graphql-api/graphql-ws/subscription-mappers.js +3 -0
- package/dist/api/graphql-api/graphql-ws/subscription-mappers.js.map +1 -1
- package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js +6 -0
- package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js.map +1 -1
- package/dist/api/graphql-api/pr/model/pr-readiness.model.js +26 -0
- package/dist/api/graphql-api/pr/model/pr-readiness.model.js.map +1 -1
- package/dist/api/graphql-api/runs/inputs/create-run.input.js +6 -0
- package/dist/api/graphql-api/runs/inputs/create-run.input.js.map +1 -1
- package/dist/api/graphql-api/runs/model/run.model.js +6 -0
- package/dist/api/graphql-api/runs/model/run.model.js.map +1 -1
- package/dist/api/graphql-api/share/model/issue-ref.model.js +53 -0
- package/dist/api/graphql-api/share/model/issue-ref.model.js.map +1 -0
- package/dist/cli/commands/doctor-report.js +0 -18
- package/dist/cli/commands/doctor-report.js.map +1 -1
- package/dist/cli/commands/lifecycle.js +3 -71
- package/dist/cli/commands/lifecycle.js.map +1 -1
- package/dist/cli/commands/mcp.js +0 -14
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/process-tree.js +4 -26
- package/dist/cli/commands/process-tree.js.map +1 -1
- package/dist/cli/commands/revisium-helpers.js +0 -6
- package/dist/cli/commands/revisium-helpers.js.map +1 -1
- package/dist/cli/commands/rogue-reaper.js +0 -34
- package/dist/cli/commands/rogue-reaper.js.map +1 -1
- package/dist/cli/index.js +0 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/program.js +0 -5
- package/dist/cli/program.js.map +1 -1
- package/dist/config.js +0 -25
- package/dist/config.js.map +1 -1
- package/dist/control-plane/bootstrap.js +12 -27
- package/dist/control-plane/bootstrap.js.map +1 -1
- package/dist/control-plane/change-notifications.js +0 -1
- package/dist/control-plane/change-notifications.js.map +1 -1
- package/dist/control-plane/client-transport.js +1 -12
- package/dist/control-plane/client-transport.js.map +1 -1
- package/dist/control-plane/default-playbook-policy.js +593 -0
- package/dist/control-plane/default-playbook-policy.js.map +1 -0
- package/dist/control-plane/definitions.js +8 -17
- package/dist/control-plane/definitions.js.map +1 -1
- package/dist/control-plane/inbox.js +2 -120
- package/dist/control-plane/inbox.js.map +1 -1
- package/dist/control-plane/resolve-cwd.js +0 -61
- package/dist/control-plane/resolve-cwd.js.map +1 -1
- package/dist/control-plane/schema-migration.js +0 -9
- package/dist/control-plane/schema-migration.js.map +1 -1
- package/dist/control-plane/seed-default-playbook.js +50 -46
- package/dist/control-plane/seed-default-playbook.js.map +1 -1
- package/dist/control-plane/steps.js +0 -15
- package/dist/control-plane/steps.js.map +1 -1
- package/dist/e2e/kit/agents.js +15 -21
- package/dist/e2e/kit/agents.js.map +1 -1
- package/dist/e2e/kit/assertions.js +12 -8
- package/dist/e2e/kit/assertions.js.map +1 -1
- package/dist/e2e/kit/fake-integrator.js +11 -2
- package/dist/e2e/kit/fake-integrator.js.map +1 -1
- package/dist/e2e/kit/git-target-repo.js +1 -1
- package/dist/engine/dbos.service.js +12 -179
- package/dist/engine/dbos.service.js.map +1 -1
- package/dist/engine/ensure-postgres.js +0 -48
- package/dist/engine/ensure-postgres.js.map +1 -1
- package/dist/features/pr/queries/impl/get-pr-readiness.query.js.map +1 -1
- package/dist/features/runs/commands/impl/create-run.command.js.map +1 -1
- package/dist/features/runs/queries/handlers/runs-query.handlers.js +1 -0
- package/dist/features/runs/queries/handlers/runs-query.handlers.js.map +1 -1
- package/dist/host/daemon.js +2 -21
- package/dist/host/daemon.js.map +1 -1
- package/dist/host/dbos-identity.js +0 -31
- package/dist/host/dbos-identity.js.map +1 -1
- package/dist/host/ensure-host.js +1 -37
- package/dist/host/ensure-host.js.map +1 -1
- package/dist/host/ensure-revisium.js +1 -135
- package/dist/host/ensure-revisium.js.map +1 -1
- package/dist/host/host-runtime.js +0 -28
- package/dist/host/host-runtime.js.map +1 -1
- package/dist/host/host.lifecycle.js +0 -27
- package/dist/host/host.lifecycle.js.map +1 -1
- package/dist/host/queue-ownership.js +0 -42
- package/dist/host/queue-ownership.js.map +1 -1
- package/dist/host/queue-poller-census.js +1 -28
- package/dist/host/queue-poller-census.js.map +1 -1
- package/dist/http/graphql-host.module.js +0 -3
- package/dist/http/graphql-host.module.js.map +1 -1
- package/dist/mcp/mcp-capabilities.js +23 -5
- package/dist/mcp/mcp-capabilities.js.map +1 -1
- package/dist/mcp/mcp-facade.service.js +335 -22
- package/dist/mcp/mcp-facade.service.js.map +1 -1
- package/dist/mcp/mcp-http.service.js +0 -18
- package/dist/mcp/mcp-http.service.js.map +1 -1
- package/dist/mcp/mcp-tools.js +41 -36
- package/dist/mcp/mcp-tools.js.map +1 -1
- package/dist/observability/activity-signal.js +103 -0
- package/dist/observability/activity-signal.js.map +1 -0
- package/dist/observability/agent-activity-reporter.js +0 -4
- package/dist/observability/agent-activity-reporter.js.map +1 -1
- package/dist/observability/index.js +1 -0
- package/dist/observability/index.js.map +1 -1
- package/dist/pipeline/await-human.js +0 -40
- package/dist/pipeline/await-human.js.map +1 -1
- package/dist/pipeline/data-driven-task.workflow.js +563 -251
- package/dist/pipeline/data-driven-task.workflow.js.map +1 -1
- package/dist/pipeline/data-driven-template.js +0 -25
- package/dist/pipeline/data-driven-template.js.map +1 -1
- package/dist/pipeline/pipeline.module.js +0 -12
- package/dist/pipeline/pipeline.module.js.map +1 -1
- package/dist/pipeline/pipeline.service.js +194 -189
- package/dist/pipeline/pipeline.service.js.map +1 -1
- package/dist/pipeline/route-contract.js +4 -3
- package/dist/pipeline/route-contract.js.map +1 -1
- package/dist/pipeline-core/index.js +1 -13
- package/dist/pipeline-core/index.js.map +1 -1
- package/dist/pipeline-core/interpret.js +21 -94
- package/dist/pipeline-core/interpret.js.map +1 -1
- package/dist/pipeline-core/kit/assertions.js +0 -19
- package/dist/pipeline-core/kit/assertions.js.map +1 -1
- package/dist/pipeline-core/kit/builders.js +1 -21
- package/dist/pipeline-core/kit/builders.js.map +1 -1
- package/dist/pipeline-core/kit/drive.js +1 -31
- package/dist/pipeline-core/kit/drive.js.map +1 -1
- package/dist/pipeline-core/kit/fixtures.js +78 -101
- package/dist/pipeline-core/kit/fixtures.js.map +1 -1
- package/dist/pipeline-core/kit/index.js +0 -8
- package/dist/pipeline-core/kit/index.js.map +1 -1
- package/dist/pipeline-core/types.js +13 -52
- package/dist/pipeline-core/types.js.map +1 -1
- package/dist/pipeline-core/validate-capability.js +0 -3
- package/dist/pipeline-core/validate-capability.js.map +1 -1
- package/dist/pipeline-core/validate-conflicts.js +0 -9
- package/dist/pipeline-core/validate-conflicts.js.map +1 -1
- package/dist/pipeline-core/validate-dataflow.js +0 -17
- package/dist/pipeline-core/validate-dataflow.js.map +1 -1
- package/dist/pipeline-core/validate-diff.js +3 -36
- package/dist/pipeline-core/validate-diff.js.map +1 -1
- package/dist/pipeline-core/validate-edges.js +0 -6
- package/dist/pipeline-core/validate-edges.js.map +1 -1
- package/dist/pipeline-core/validate-graph.js +0 -11
- package/dist/pipeline-core/validate-graph.js.map +1 -1
- package/dist/pipeline-core/validate-loops.js +37 -44
- package/dist/pipeline-core/validate-loops.js.map +1 -1
- package/dist/pipeline-core/validate-parallel.js +9 -15
- package/dist/pipeline-core/validate-parallel.js.map +1 -1
- package/dist/pipeline-core/validate-sink.js +0 -7
- package/dist/pipeline-core/validate-sink.js.map +1 -1
- package/dist/pipeline-core/validate-topology.js +1 -20
- package/dist/pipeline-core/validate-topology.js.map +1 -1
- package/dist/pipeline-core/validate-verdict.js +52 -7
- package/dist/pipeline-core/validate-verdict.js.map +1 -1
- package/dist/pipeline-core/validate.js +5 -29
- package/dist/pipeline-core/validate.js.map +1 -1
- package/dist/playbook/catalog-loader.js +8 -3
- package/dist/playbook/catalog-loader.js.map +1 -1
- package/dist/playbook/import-mapper.js +4 -5
- package/dist/playbook/import-mapper.js.map +1 -1
- package/dist/poller/pr-readiness-core.js +226 -29
- package/dist/poller/pr-readiness-core.js.map +1 -1
- package/dist/revisium/inbox.service.js +0 -24
- package/dist/revisium/inbox.service.js.map +1 -1
- package/dist/revisium/playbooks.service.js +15 -2
- package/dist/revisium/playbooks.service.js.map +1 -1
- package/dist/revisium/revisium.module.js +0 -12
- package/dist/revisium/revisium.module.js.map +1 -1
- package/dist/revisium/roles.service.js +0 -6
- package/dist/revisium/roles.service.js.map +1 -1
- package/dist/revisium/run.service.js +2 -75
- package/dist/revisium/run.service.js.map +1 -1
- package/dist/revisium/tokens.js +0 -4
- package/dist/revisium/tokens.js.map +1 -1
- package/dist/run/append-event.js +6 -37
- package/dist/run/append-event.js.map +1 -1
- package/dist/run/block-run.js.map +1 -1
- package/dist/run/cancel-run.js +0 -33
- package/dist/run/cancel-run.js.map +1 -1
- package/dist/run/complete-run.js.map +1 -1
- package/dist/run/create-run.js +5 -8
- package/dist/run/create-run.js.map +1 -1
- package/dist/run/fail-run.js +0 -3
- package/dist/run/fail-run.js.map +1 -1
- package/dist/run/inspect-run.js +10 -29
- package/dist/run/inspect-run.js.map +1 -1
- package/dist/run/issue-ref.js +88 -0
- package/dist/run/issue-ref.js.map +1 -0
- package/dist/run/run-outputs.js +0 -19
- package/dist/run/run-outputs.js.map +1 -1
- package/dist/run/terminal-run-status.js +0 -12
- package/dist/run/terminal-run-status.js.map +1 -1
- package/dist/runners/claude-code.service.js +2 -13
- package/dist/runners/claude-code.service.js.map +1 -1
- package/dist/runners/codex.service.js +2 -11
- package/dist/runners/codex.service.js.map +1 -1
- package/dist/runners/gh-identity.js +0 -52
- package/dist/runners/gh-identity.js.map +1 -1
- package/dist/runners/integrator-branch-naming.js +16 -19
- package/dist/runners/integrator-branch-naming.js.map +1 -1
- package/dist/runners/integrator-git.js +0 -25
- package/dist/runners/integrator-git.js.map +1 -1
- package/dist/runners/integrator-remote.js +0 -2
- package/dist/runners/integrator-remote.js.map +1 -1
- package/dist/runners/integrator-types.js +0 -7
- package/dist/runners/integrator-types.js.map +1 -1
- package/dist/runners/integrator.js +231 -230
- package/dist/runners/integrator.js.map +1 -1
- package/dist/runners/runner.module.js +0 -6
- package/dist/runners/runner.module.js.map +1 -1
- package/dist/runners/tokens.js +0 -4
- package/dist/runners/tokens.js.map +1 -1
- package/dist/runners/worktree.service.js +3 -19
- package/dist/runners/worktree.service.js.map +1 -1
- package/dist/task-control-plane/pr-readiness.service.js +15 -13
- package/dist/task-control-plane/pr-readiness.service.js.map +1 -1
- package/dist/task-control-plane/run-watch.service.js +170 -63
- package/dist/task-control-plane/run-watch.service.js.map +1 -1
- package/dist/task-control-plane/task-control-plane-api.service.js +285 -40
- package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
- package/dist/worker/artifact-store.js +21 -3
- package/dist/worker/artifact-store.js.map +1 -1
- package/dist/worker/build-context.js +10 -10
- package/dist/worker/build-context.js.map +1 -1
- package/dist/worker/claude-code-runner.js +76 -48
- package/dist/worker/claude-code-runner.js.map +1 -1
- package/dist/worker/codex-runner.js +128 -35
- package/dist/worker/codex-runner.js.map +1 -1
- package/dist/worker/git-worktree-manager.js +20 -67
- package/dist/worker/git-worktree-manager.js.map +1 -1
- package/dist/worker/process-executor.js +144 -27
- package/dist/worker/process-executor.js.map +1 -1
- package/dist/worker/result-envelope.js +33 -49
- package/dist/worker/result-envelope.js.map +1 -1
- package/dist/worker/runner-common.js +29 -0
- package/dist/worker/runner-common.js.map +1 -1
- package/dist/worker/runner-dispatch.js +0 -3
- package/dist/worker/runner-dispatch.js.map +1 -1
- package/dist/worker/runner.js +16 -1
- package/dist/worker/runner.js.map +1 -1
- package/dist/worker/stub-runner.js +0 -7
- package/dist/worker/stub-runner.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,43 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* gh-identity.ts — pin the gh CLI to an explicit, NON-SECRET account name (0008 #1).
|
|
3
|
-
*
|
|
4
|
-
* Proven failure (2026-06-10 live dogfood): the integrator shelled `gh pr create` using the
|
|
5
|
-
* AMBIENT active gh account. On a multi-account machine the active account flips
|
|
6
|
-
* (anton62k push:false ↔ revisium-io push:true), so PR creation failed and the workflow
|
|
7
|
-
* went silently to DBOS ERROR. The fix: resolve a non-secret identity NAME (default
|
|
8
|
-
* `revisium-io`) → host-resolve its token (env/keyring) → spawn gh with `GH_TOKEN` pinned.
|
|
9
|
-
* `GH_TOKEN` takes precedence over gh's active account, so the flip can no longer break us.
|
|
10
|
-
*
|
|
11
|
-
* SECRET BOUNDARY: only the non-secret account NAME is config (env `REVO_GH_ACCOUNT`).
|
|
12
|
-
* The token is resolved host-side at call time and lives only in the spawned gh process env —
|
|
13
|
-
* NEVER persisted to Revisium, never logged. Least-privilege: only the integrator builds a
|
|
14
|
-
* pinned execGh; the LLM runners get no git/gh creds.
|
|
15
|
-
*
|
|
16
|
-
* DBOS-SEALED: zero @dbos-inc imports.
|
|
17
|
-
*/
|
|
18
1
|
import { execFileSync } from 'node:child_process';
|
|
19
|
-
/** Default non-secret gh account identity (push:true/admin on the org repos). */
|
|
20
2
|
export const DEFAULT_GH_ACCOUNT = 'revisium-io';
|
|
21
3
|
const defaultExecFile = (file, args, opts) => execFileSync(file, args, opts);
|
|
22
|
-
/**
|
|
23
|
-
* Resolve the NON-SECRET gh account name from config/env. Never a token.
|
|
24
|
-
* Falls back to DEFAULT_GH_ACCOUNT when unset/blank.
|
|
25
|
-
*/
|
|
26
4
|
export function resolveGhAccount(env = process.env) {
|
|
27
5
|
const raw = env['REVO_GH_ACCOUNT'];
|
|
28
6
|
const account = typeof raw === 'string' ? raw.trim() : '';
|
|
29
7
|
return account.length > 0 ? account : DEFAULT_GH_ACCOUNT;
|
|
30
8
|
}
|
|
31
|
-
/** Per-account env override key, e.g. account "revisium-io" → "GH_TOKEN_REVISIUM_IO". */
|
|
32
9
|
export function ghTokenEnvKey(account) {
|
|
33
10
|
return `GH_TOKEN_${account.toUpperCase().replace(/[^A-Z0-9]+/g, '_')}`;
|
|
34
11
|
}
|
|
35
|
-
/**
|
|
36
|
-
* Host-resolve the gh token for a non-secret account name (never stored in Revisium):
|
|
37
|
-
* 1. explicit env override GH_TOKEN_<ACCOUNT> (CI / headless) — takes precedence.
|
|
38
|
-
* 2. the gh keyring entry for that specific account (`gh auth token --user <account>`).
|
|
39
|
-
* Returns undefined when no token can be resolved (caller falls back to ambient gh).
|
|
40
|
-
*/
|
|
41
12
|
export function resolveGhToken(account, deps) {
|
|
42
13
|
const env = deps?.env ?? process.env;
|
|
43
14
|
const execFile = deps?.execFile ?? defaultExecFile;
|
|
@@ -52,16 +23,9 @@ export function resolveGhToken(account, deps) {
|
|
|
52
23
|
return out.length > 0 ? out : undefined;
|
|
53
24
|
}
|
|
54
25
|
catch {
|
|
55
|
-
// gh missing / account not in keyring — fall back to ambient gh (returns undefined).
|
|
56
26
|
return undefined;
|
|
57
27
|
}
|
|
58
28
|
}
|
|
59
|
-
/**
|
|
60
|
-
* Build an ExecGhFn that PINS the gh account by setting GH_TOKEN on the spawned gh process.
|
|
61
|
-
* When `token` is undefined the gh call is left on the ambient account (degraded — logged once
|
|
62
|
-
* by the caller). The OS-level timeout + maxBuffer mirror defaultExecGh (a hung/runaway gh is
|
|
63
|
-
* killed; the synchronous spawn blocks the event loop so no JS timer could otherwise fire).
|
|
64
|
-
*/
|
|
65
29
|
export function makeExecGh(opts) {
|
|
66
30
|
const execFile = opts?.execFile ?? defaultExecFile;
|
|
67
31
|
const baseEnv = opts?.env ?? process.env;
|
|
@@ -70,17 +34,6 @@ export function makeExecGh(opts) {
|
|
|
70
34
|
const env = opts?.token ? { ...baseEnv, GH_TOKEN: opts.token } : baseEnv;
|
|
71
35
|
return (args) => execFile('gh', args, { encoding: 'utf8', timeout, maxBuffer, env });
|
|
72
36
|
}
|
|
73
|
-
/**
|
|
74
|
-
* Resolve the pinned gh identity into a ready-to-use ExecGhFn, or FAIL LOUD (0008 #1 hardening).
|
|
75
|
-
*
|
|
76
|
-
* The 2026-06-12 dogfood proved the original silent fallback was wrong: when the pinned token
|
|
77
|
-
* could not be resolved (e.g. a detached/headless host where `gh auth token --user` can't reach
|
|
78
|
-
* the macOS keychain), the integrator fell back to the AMBIENT gh account and opened a PR as the
|
|
79
|
-
* wrong user — re-introducing the exact bug #1 exists to prevent. We now REFUSE to fall back:
|
|
80
|
-
* an unresolved pinned identity returns needsHuman so the integrator blocks for a human instead
|
|
81
|
-
* of opening a PR as the wrong account. The keyring-free fix is to set GH_TOKEN_<ACCOUNT> in the
|
|
82
|
-
* host env (works headless), which resolveGhToken checks first.
|
|
83
|
-
*/
|
|
84
37
|
export function resolvePinnedGh(deps) {
|
|
85
38
|
const env = deps?.env ?? process.env;
|
|
86
39
|
const account = resolveGhAccount(env);
|
|
@@ -97,11 +50,6 @@ export function resolvePinnedGh(deps) {
|
|
|
97
50
|
return { execGh: makeExecGh({ token, env, execFile: deps?.execFile }) };
|
|
98
51
|
}
|
|
99
52
|
const TOKEN_PATTERN = /\b(?:gh[opsru]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,})\b/g;
|
|
100
|
-
/**
|
|
101
|
-
* Mask GitHub token shapes in a free-text string (gho_/ghp_/ghs_/ghr_/ghu_ + github_pat_).
|
|
102
|
-
* redactSecrets (inbox.ts) only masks secret-shaped object KEYS; an error/lesson string that
|
|
103
|
-
* happens to echo a token needs this string-level pass before it is persisted to Revisium.
|
|
104
|
-
*/
|
|
105
53
|
export function redactTokens(text) {
|
|
106
54
|
return text.replace(TOKEN_PATTERN, '[REDACTED]');
|
|
107
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gh-identity.js","sourceRoot":"","sources":["../../src/runners/gh-identity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gh-identity.js","sourceRoot":"","sources":["../../src/runners/gh-identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* integrator-branch-naming — deterministic feature-branch naming from a task.
|
|
3
|
-
*
|
|
4
|
-
* `branchName` is the contract between the worktree manager and the integrator (plan 0017): the
|
|
5
|
-
* worktree is created already checked out on the SAME branch the integrator commits/pushes on, so the
|
|
6
|
-
* two must derive an identical name from (taskId, title). Lifted from integrator.ts.
|
|
7
|
-
*/
|
|
8
1
|
const SLUG_MAX = 40;
|
|
9
2
|
function slugify(text) {
|
|
10
3
|
return text
|
|
@@ -14,25 +7,29 @@ function slugify(text) {
|
|
|
14
7
|
.filter((seg) => seg.length > 0)
|
|
15
8
|
.join('-')
|
|
16
9
|
.slice(0, SLUG_MAX)
|
|
17
|
-
.replace(/-+$/, '');
|
|
10
|
+
.replace(/-+$/, '');
|
|
18
11
|
}
|
|
19
|
-
// The unique tail of a machine taskId is the segment after the LAST '_'
|
|
20
|
-
// (`task_<stamp>_<titleSlug>_<idSuffix>` → `<idSuffix>`). Falls back to a sanitized
|
|
21
|
-
// whole id when there is no usable trailing segment, so the branch stays unique + a valid ref.
|
|
22
12
|
function shortId(taskId) {
|
|
23
|
-
const tail = taskId.slice(taskId.lastIndexOf('_') + 1);
|
|
13
|
+
const tail = taskId.slice(taskId.lastIndexOf('_') + 1);
|
|
24
14
|
return slugify(tail) || slugify(taskId) || 'task';
|
|
25
15
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
16
|
+
function issueBoundSlug(title, issueRef) {
|
|
17
|
+
const issueSlug = `issue-${issueRef.number}`;
|
|
18
|
+
const titleSlug = slugify(title);
|
|
19
|
+
if (!titleSlug)
|
|
20
|
+
return issueSlug;
|
|
21
|
+
const titleMax = Math.max(0, SLUG_MAX - issueSlug.length - 1);
|
|
22
|
+
const titlePart = titleSlug.slice(0, titleMax).replace(/-+$/, '');
|
|
23
|
+
return titlePart ? `${issueSlug}-${titlePart}` : issueSlug;
|
|
24
|
+
}
|
|
25
|
+
export function branchName(taskId, title, issueRef) {
|
|
29
26
|
const id = shortId(taskId);
|
|
30
27
|
const slug = slugify(title);
|
|
31
|
-
|
|
28
|
+
if (issueRef) {
|
|
29
|
+
return `feat/${id}-${issueBoundSlug(title, issueRef)}`;
|
|
30
|
+
}
|
|
31
|
+
return slug ? `feat/${id}-${slug}` : `feat/${id}`;
|
|
32
32
|
}
|
|
33
|
-
/** The `feat/<shortId>-` prefix shared by every branch `branchName(taskId, *)` can produce.
|
|
34
|
-
* Use this in emulators/assertions to scope gh-call lookups to a specific task without knowing
|
|
35
|
-
* the title. */
|
|
36
33
|
export function taskBranchPrefix(taskId) {
|
|
37
34
|
return `feat/${shortId(taskId)}-`;
|
|
38
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrator-branch-naming.js","sourceRoot":"","sources":["../../src/runners/integrator-branch-naming.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrator-branch-naming.js","sourceRoot":"","sources":["../../src/runners/integrator-branch-naming.ts"],"names":[],"mappings":"AAOA,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/B,IAAI,CAAC,GAAG,CAAC;SACT,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;SAClB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,OAAO,CAAC,MAAc;IAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;AACpD,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,QAAkB;IACvD,MAAM,SAAS,GAAG,SAAS,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClE,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,KAAa,EAAE,QAAmB;IAC3E,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,EAAE,IAAI,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;AACpD,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,QAAQ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AACpC,CAAC"}
|
|
@@ -1,25 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* integrator-git — git-binary resolution + the pure git primitives the integrator needs
|
|
3
|
-
* (branch existence, ahead-count). Lifted from integrator.ts. `resolveExecutable` is also imported by
|
|
4
|
-
* the worktree manager, so integrator.ts re-exports it to keep that import path stable.
|
|
5
|
-
*/
|
|
6
1
|
import { existsSync, statSync } from 'node:fs';
|
|
7
2
|
import { join, delimiter } from 'node:path';
|
|
8
|
-
/**
|
|
9
|
-
* Resolve a bare executable name to its first absolute path on PATH.
|
|
10
|
-
* Uses only node:fs + node:path — no child_process, no spawning.
|
|
11
|
-
*
|
|
12
|
-
* @param name - bare executable name, e.g. "git"
|
|
13
|
-
* @param pathEnv - override for PATH (defaults to process.env.PATH); injectable for tests
|
|
14
|
-
* @returns absolute path to the executable
|
|
15
|
-
* @throws Error if not found on PATH
|
|
16
|
-
*/
|
|
17
3
|
export function resolveExecutable(name, pathEnv = process.env['PATH'] ?? '') {
|
|
18
4
|
if (!pathEnv) {
|
|
19
5
|
throw new Error(`cannot resolve executable "${name}" on PATH: PATH is empty or unset`);
|
|
20
6
|
}
|
|
21
7
|
const dirs = pathEnv.split(delimiter);
|
|
22
|
-
// On win32 also check common executable extensions; on posix the plain name suffices.
|
|
23
8
|
const candidates = process.platform === 'win32'
|
|
24
9
|
? [name, `${name}.exe`, `${name}.cmd`, `${name}.bat`]
|
|
25
10
|
: [name];
|
|
@@ -34,13 +19,11 @@ export function resolveExecutable(name, pathEnv = process.env['PATH'] ?? '') {
|
|
|
34
19
|
}
|
|
35
20
|
}
|
|
36
21
|
catch {
|
|
37
|
-
// dir may be unreadable — skip silently
|
|
38
22
|
}
|
|
39
23
|
}
|
|
40
24
|
}
|
|
41
25
|
throw new Error(`cannot resolve executable "${name}" on PATH`);
|
|
42
26
|
}
|
|
43
|
-
// Lazily resolved once per process — avoids resolving on module load (safe for tests).
|
|
44
27
|
let _gitAbsPath;
|
|
45
28
|
export function gitAbsPath() {
|
|
46
29
|
if (_gitAbsPath === undefined) {
|
|
@@ -48,7 +31,6 @@ export function gitAbsPath() {
|
|
|
48
31
|
}
|
|
49
32
|
return _gitAbsPath;
|
|
50
33
|
}
|
|
51
|
-
/** Branch existence check — returns true if the branch exists locally. */
|
|
52
34
|
export function branchExists(execGit, cwd, branch) {
|
|
53
35
|
try {
|
|
54
36
|
execGit(['rev-parse', '--verify', branch], cwd);
|
|
@@ -58,11 +40,6 @@ export function branchExists(execGit, cwd, branch) {
|
|
|
58
40
|
return false;
|
|
59
41
|
}
|
|
60
42
|
}
|
|
61
|
-
/**
|
|
62
|
-
* Count commits on branch ahead of origin/<base>.
|
|
63
|
-
* Returns 0 only for expected "no upstream / unknown revision / ambiguous argument" errors
|
|
64
|
-
* (these mean the branch is not ahead). Rethrows other errors so DBOS can retry transient failures.
|
|
65
|
-
*/
|
|
66
43
|
export function countAhead(execGit, cwd, branch, base) {
|
|
67
44
|
try {
|
|
68
45
|
const raw = execGit(['rev-list', '--count', `origin/${base}..${branch}`], cwd).trim();
|
|
@@ -70,14 +47,12 @@ export function countAhead(execGit, cwd, branch, base) {
|
|
|
70
47
|
}
|
|
71
48
|
catch (err) {
|
|
72
49
|
const msg = err instanceof Error ? err.message : String(err);
|
|
73
|
-
// Expected: branch or upstream not yet known to git (not a transient failure).
|
|
74
50
|
if (msg.includes('unknown revision') ||
|
|
75
51
|
msg.includes('ambiguous argument') ||
|
|
76
52
|
msg.includes('no upstream') ||
|
|
77
53
|
msg.includes('does not have any commits yet')) {
|
|
78
54
|
return 0;
|
|
79
55
|
}
|
|
80
|
-
// Transient failure (network, lock, etc.) — rethrow so DBOS retries.
|
|
81
56
|
throw err;
|
|
82
57
|
}
|
|
83
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrator-git.js","sourceRoot":"","sources":["../../src/runners/integrator-git.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrator-git.js","sourceRoot":"","sources":["../../src/runners/integrator-git.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAU5C,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;IACjF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,mCAAmC,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEtC,MAAM,UAAU,GACd,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC;QACrD,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEb,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAClC,IAAI,CAAC;gBACH,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;oBAChD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,WAAW,CAAC,CAAC;AACjE,CAAC;AAED,IAAI,WAA+B,CAAC;AACpC,MAAM,UAAU,UAAU;IACxB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAGD,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,GAAW,EAAE,MAAc;IACvE,IAAI,CAAC;QACH,OAAO,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAKD,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,GAAW,EAAE,MAAc,EAAE,IAAY;IACnF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,IAAI,KAAK,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACtF,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,IACE,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAChC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAClC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC3B,GAAG,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAC7C,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// Owner and repo: GitHub-safe chars only ([A-Za-z0-9._-]); trailing .git stripped; no trailing paths.
|
|
2
|
-
// Non-greedy repo segment (+?) allows the (?:\.git)? suffix to back-trim a trailing ".git".
|
|
3
1
|
const GITHUB_SSH_RE = /^git@github\.com:([A-Za-z0-9._-]+\/[A-Za-z0-9._-]+?)(?:\.git)?$/;
|
|
4
2
|
const GITHUB_HTTPS_RE = /^https?:\/\/github\.com\/([A-Za-z0-9._-]+\/[A-Za-z0-9._-]+?)(?:\.git)?$/;
|
|
5
3
|
export function parseOwnerRepo(remoteUrl) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrator-remote.js","sourceRoot":"","sources":["../../src/runners/integrator-remote.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrator-remote.js","sourceRoot":"","sources":["../../src/runners/integrator-remote.ts"],"names":[],"mappings":"AAIA,MAAM,aAAa,GAAG,iEAAiE,CAAC;AACxF,MAAM,eAAe,GAAG,yEAAyE,CAAC;AAElG,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,GAAW;IAEX,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,MAAM,EACJ,wGAAwG;SAC3G,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,8EAA8E,SAAS,GAAG;SACnG,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -1,9 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* integrator-types — the foundational shapes every integrator module shares.
|
|
3
|
-
*
|
|
4
|
-
* Lifted out of integrator.ts so the extracted git / remote helpers can take these by type without
|
|
5
|
-
* importing back into the orchestrator (which would form a cycle). integrator.ts re-exports them, so
|
|
6
|
-
* the public import path ('./integrator.js') — used by the test kit and fake-integrator — is unchanged.
|
|
7
|
-
*/
|
|
8
1
|
export {};
|
|
9
2
|
//# sourceMappingURL=integrator-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrator-types.js","sourceRoot":"","sources":["../../src/runners/integrator-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrator-types.js","sourceRoot":"","sources":["../../src/runners/integrator-types.ts"],"names":[],"mappings":""}
|