@a5c-ai/git-a5c 1.0.13 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/args.d.ts +20 -0
  2. package/dist/args.d.ts.map +1 -1
  3. package/dist/args.js +47 -0
  4. package/dist/args.js.map +1 -1
  5. package/dist/commands/agent.d.ts.map +1 -1
  6. package/dist/commands/agent.js +8 -0
  7. package/dist/commands/agent.js.map +1 -1
  8. package/dist/commands/agentGenerateContext.d.ts +16 -0
  9. package/dist/commands/agentGenerateContext.d.ts.map +1 -0
  10. package/dist/commands/agentGenerateContext.js +965 -0
  11. package/dist/commands/agentGenerateContext.js.map +1 -0
  12. package/dist/commands/agentRun.d.ts +3 -0
  13. package/dist/commands/agentRun.d.ts.map +1 -0
  14. package/dist/commands/agentRun.js +226 -0
  15. package/dist/commands/agentRun.js.map +1 -0
  16. package/dist/commands/help.d.ts.map +1 -1
  17. package/dist/commands/help.js +12 -0
  18. package/dist/commands/help.js.map +1 -1
  19. package/dist/commands/hookExec.d.ts +3 -0
  20. package/dist/commands/hookExec.d.ts.map +1 -0
  21. package/dist/commands/hookExec.js +56 -0
  22. package/dist/commands/hookExec.js.map +1 -0
  23. package/dist/commands/hooks.d.ts.map +1 -1
  24. package/dist/commands/hooks.js +3 -1
  25. package/dist/commands/hooks.js.map +1 -1
  26. package/dist/commands/o.d.ts +3 -0
  27. package/dist/commands/o.d.ts.map +1 -0
  28. package/dist/commands/o.js +256 -0
  29. package/dist/commands/o.js.map +1 -0
  30. package/dist/commands/parse.d.ts +31 -0
  31. package/dist/commands/parse.d.ts.map +1 -0
  32. package/dist/commands/parse.js +389 -0
  33. package/dist/commands/parse.js.map +1 -0
  34. package/dist/commands/runOrchestration.d.ts +3 -0
  35. package/dist/commands/runOrchestration.d.ts.map +1 -0
  36. package/dist/commands/runOrchestration.js +282 -0
  37. package/dist/commands/runOrchestration.js.map +1 -0
  38. package/dist/orchestration/hookExecCore.d.ts +22 -0
  39. package/dist/orchestration/hookExecCore.d.ts.map +1 -0
  40. package/dist/orchestration/hookExecCore.js +380 -0
  41. package/dist/orchestration/hookExecCore.js.map +1 -0
  42. package/dist/orchestration/reconcileCore.d.ts +28 -0
  43. package/dist/orchestration/reconcileCore.d.ts.map +1 -0
  44. package/dist/orchestration/reconcileCore.js +188 -0
  45. package/dist/orchestration/reconcileCore.js.map +1 -0
  46. package/dist/orchestration/runEventWriter.d.ts +11 -0
  47. package/dist/orchestration/runEventWriter.d.ts.map +1 -0
  48. package/dist/orchestration/runEventWriter.js +44 -0
  49. package/dist/orchestration/runEventWriter.js.map +1 -0
  50. package/dist/orchestration/sweepCore.d.ts +11 -0
  51. package/dist/orchestration/sweepCore.d.ts.map +1 -0
  52. package/dist/orchestration/sweepCore.js +96 -0
  53. package/dist/orchestration/sweepCore.js.map +1 -0
  54. package/dist/run.d.ts.map +1 -1
  55. package/dist/run.js +8 -0
  56. package/dist/run.js.map +1 -1
  57. package/dist/util/agentFooter.d.ts +34 -0
  58. package/dist/util/agentFooter.d.ts.map +1 -0
  59. package/dist/util/agentFooter.js +15 -0
  60. package/dist/util/agentFooter.js.map +1 -0
  61. package/dist/util/githubContents.d.ts +15 -0
  62. package/dist/util/githubContents.d.ts.map +1 -0
  63. package/dist/util/githubContents.js +77 -0
  64. package/dist/util/githubContents.js.map +1 -0
  65. package/dist/util/redact.d.ts +24 -0
  66. package/dist/util/redact.d.ts.map +1 -0
  67. package/dist/util/redact.js +109 -0
  68. package/dist/util/redact.js.map +1 -0
  69. package/dist/util/uri.d.ts +12 -0
  70. package/dist/util/uri.d.ts.map +1 -0
  71. package/dist/util/uri.js +61 -0
  72. package/dist/util/uri.js.map +1 -0
  73. package/package.json +10 -5
@@ -0,0 +1,282 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { UlidGenerator, applyTemplatePatch, deriveRunState, loadSnapshot, parseTemplate, stageFiles } from "@a5c-ai/sdk";
4
+ import { execPlans } from "../orchestration/hookExecCore.js";
5
+ import { getRunContext, reconcileOrchestration } from "../orchestration/reconcileCore.js";
6
+ import { sweepStaleExecutions } from "../orchestration/sweepCore.js";
7
+ import { writeRunEvent } from "../orchestration/runEventWriter.js";
8
+ import { git } from "../git.js";
9
+ export async function handleRunOrchestration(args) {
10
+ if (args.positionals[0] !== "run")
11
+ return;
12
+ const sub = args.positionals[1];
13
+ if (sub !== "reconcile" &&
14
+ sub !== "tick" &&
15
+ sub !== "dispatch" &&
16
+ sub !== "playbook" &&
17
+ sub !== "sweep" &&
18
+ sub !== "resume" &&
19
+ sub !== "complete-step") {
20
+ args.io.writeLine(args.io.err, "usage: git a5c run dispatch|playbook|reconcile|tick|sweep|resume|complete-step");
21
+ return 2;
22
+ }
23
+ async function dispatchRun(opts) {
24
+ const playbook = opts.playbook;
25
+ if (!playbook) {
26
+ args.io.writeLine(args.io.err, "usage: git a5c run dispatch --playbook <path>@<version> [--run-id <id>] [--overrides-file <path>]");
27
+ return;
28
+ }
29
+ const at = playbook.lastIndexOf("@");
30
+ const playbookPath = at >= 0 ? playbook.slice(0, at) : playbook;
31
+ const playbookVersion = at >= 0 ? playbook.slice(at + 1) : "v1";
32
+ const runId = opts.runId ?? `run_${new UlidGenerator({ nowMs: args.nowMs }).generate()}`;
33
+ let templatePatch;
34
+ if (opts.overridesFile) {
35
+ const txt = await fs.readFile(path.join(args.repoRoot, opts.overridesFile), "utf8");
36
+ const obj = JSON.parse(txt);
37
+ templatePatch = obj?.template_patch ?? obj;
38
+ }
39
+ const commitOid = await args.repo.git.revParse(args.treeish);
40
+ const playbookText = (await args.repo.git.readBlob(commitOid, playbookPath)).toString("utf8");
41
+ const template = parseTemplate(playbookText, playbookPath);
42
+ const firstStep = [...template.steps].sort((a, b) => a.step_id - b.step_id)[0];
43
+ if (!firstStep) {
44
+ args.io.writeLine(args.io.err, "playbook has no steps");
45
+ return;
46
+ }
47
+ const written = [];
48
+ written.push(await writeRunEvent({
49
+ repoRoot: args.repoRoot,
50
+ runId,
51
+ kind: "run.dispatched",
52
+ stepId: 0,
53
+ attempt: 0,
54
+ actor: "runner:cli",
55
+ nowMs: args.nowMs,
56
+ payload: { playbook: { path: playbookPath, version: playbookVersion }, ...(templatePatch ? { template_patch: templatePatch } : {}) }
57
+ }));
58
+ written.push(await writeRunEvent({
59
+ repoRoot: args.repoRoot,
60
+ runId,
61
+ kind: "run.step.scheduled",
62
+ stepId: firstStep.step_id,
63
+ attempt: 1,
64
+ actor: "runner:cli",
65
+ nowMs: args.nowMs,
66
+ payload: {}
67
+ }));
68
+ await stageFiles(args.repoRoot, written.map((p) => path.relative(args.repoRoot, p)));
69
+ await git(["-c", "user.name=a5c", "-c", "user.email=a5c@example.invalid", "commit", "--no-gpg-sign", "-m", `a5c: dispatch ${runId}`], args.repoRoot);
70
+ return runId;
71
+ }
72
+ if (sub === "dispatch") {
73
+ const runId = await dispatchRun({ playbook: args.flags.playbook ?? "", runId: args.flags.runId, overridesFile: args.flags.overridesFile });
74
+ if (!runId)
75
+ return 2;
76
+ args.io.writeLine(args.io.out, runId);
77
+ return 0;
78
+ }
79
+ if (sub === "playbook") {
80
+ const runId = await dispatchRun({ playbook: args.flags.playbook ?? "", runId: args.flags.runId, overridesFile: args.flags.overridesFile });
81
+ if (!runId)
82
+ return 2;
83
+ const maxIterations = Number.isFinite(args.flags.maxIterations) ? args.flags.maxIterations : 50;
84
+ let snap = await loadSnapshot({ git: args.repo.git, treeish: args.treeish, inboxRefs: args.flags.inboxRefs });
85
+ let lastEnvelope;
86
+ let iterations = 0;
87
+ const collectRunIds = (root, snapshot) => {
88
+ const out = new Set([root]);
89
+ let changed = true;
90
+ while (changed) {
91
+ changed = false;
92
+ for (const ev of snapshot.collabEvents ?? []) {
93
+ if (ev?.kind !== "run.dep.spawned")
94
+ continue;
95
+ const p = ev.event?.payload ?? {};
96
+ const parent = p.run_id;
97
+ const dep = p.dep_run_id;
98
+ if (typeof parent === "string" && typeof dep === "string" && out.has(parent) && !out.has(dep)) {
99
+ out.add(dep);
100
+ changed = true;
101
+ }
102
+ }
103
+ }
104
+ return [...out];
105
+ };
106
+ const deriveStatus = async (root, snapshot) => {
107
+ const ids = collectRunIds(root, snapshot);
108
+ const results = [];
109
+ for (const id of ids) {
110
+ const ctx = await getRunContext({ repoRoot: args.repoRoot, snap: snapshot, runId: id });
111
+ if (!ctx) {
112
+ results.push({ run_id: id, status: "UNKNOWN" });
113
+ continue;
114
+ }
115
+ const commitOid = await args.repo.git.revParse(args.treeish);
116
+ const playbookText = (await args.repo.git.readBlob(commitOid, ctx.playbookPath)).toString("utf8");
117
+ const template = parseTemplate(playbookText, ctx.playbookPath);
118
+ const state = deriveRunState({ runId: id, template: ctx.templatePatch ? applyTemplatePatch(template, ctx.templatePatch) : template, events: ctx.events });
119
+ results.push({ run_id: id, status: state.status, playbook: ctx.playbookPath });
120
+ }
121
+ const rootState = results.find((r) => r.run_id === root);
122
+ return { status: rootState?.status ?? "UNKNOWN", runs: results };
123
+ };
124
+ let finalStatus = { status: "UNKNOWN", runs: [] };
125
+ for (let i = 0; i < maxIterations; i++) {
126
+ iterations = i + 1;
127
+ const runIds = collectRunIds(runId, snap);
128
+ const allPlans = [];
129
+ for (const id of runIds) {
130
+ const env = await reconcileOrchestration({
131
+ repoRoot: args.repoRoot,
132
+ treeish: args.treeish,
133
+ repoGit: args.repo.git,
134
+ snap,
135
+ nowMs: args.nowMs,
136
+ runId: id,
137
+ maxTransitions: 1,
138
+ emitNonExecEvents: true,
139
+ actor: "runner:playbook",
140
+ agentProfileOverride: args.flags.agentProfile
141
+ });
142
+ lastEnvelope = env;
143
+ allPlans.push(...(env.plans ?? []));
144
+ }
145
+ const execOnly = allPlans.filter((p) => p.kind === "EXECUTE_STEP");
146
+ if (execOnly.length > 0) {
147
+ await execPlans({ repoRoot: args.repoRoot, plans: execOnly, nowMs: args.nowMs, actor: "hookexec-playbook" });
148
+ snap = await loadSnapshot({ git: args.repo.git, treeish: args.treeish, inboxRefs: args.flags.inboxRefs });
149
+ continue;
150
+ }
151
+ finalStatus = await deriveStatus(runId, snap);
152
+ const st = finalStatus.status;
153
+ if (st === "DONE" || st === "CANCELLED" || st === "WAIT_HUMAN" || st === "WAIT_DEPS")
154
+ break;
155
+ // No executable work found, treat as a no-op.
156
+ break;
157
+ }
158
+ if (finalStatus.runs.length === 0)
159
+ finalStatus = await deriveStatus(runId, snap);
160
+ const status = finalStatus.status === "DONE" ||
161
+ finalStatus.status === "CANCELLED" ||
162
+ finalStatus.status === "WAIT_HUMAN" ||
163
+ finalStatus.status === "WAIT_DEPS"
164
+ ? finalStatus.status
165
+ : "UNKNOWN";
166
+ if (args.flags.json) {
167
+ args.io.writeLine(args.io.out, JSON.stringify({
168
+ schema: "a5cforge/v1",
169
+ kind: "run.playbook.result",
170
+ run_id: runId,
171
+ status,
172
+ iterations,
173
+ runs: finalStatus.runs.map((r) => ({ run_id: r.run_id, status: r.status, playbook: r.playbook })),
174
+ ...(lastEnvelope ? { last_plans: lastEnvelope } : {})
175
+ }, null, 2));
176
+ }
177
+ else {
178
+ args.io.writeLine(args.io.out, runId);
179
+ args.io.writeLine(args.io.out, `status: ${status}`);
180
+ }
181
+ if (status === "DONE")
182
+ return 0;
183
+ if (status === "WAIT_DEPS")
184
+ return 30;
185
+ if (status === "WAIT_HUMAN")
186
+ return 20;
187
+ return 1;
188
+ }
189
+ if (sub === "sweep") {
190
+ const max = Number.isFinite(args.flags.max) ? args.flags.max : 50;
191
+ const res = await sweepStaleExecutions({ repoRoot: args.repoRoot, snap: args.snap, nowMs: args.nowMs, max, actor: "sweeper:cli" });
192
+ args.io.writeLine(args.io.out, `swept: ${res.emitted}`);
193
+ return 0;
194
+ }
195
+ if (sub === "resume" || sub === "complete-step") {
196
+ const runId = args.flags.runId;
197
+ if (!runId) {
198
+ args.io.writeLine(args.io.err, `usage: git a5c run ${sub} --run-id <id>`);
199
+ return 2;
200
+ }
201
+ const ctx = await getRunContext({ repoRoot: args.repoRoot, snap: args.snap, runId });
202
+ if (!ctx) {
203
+ args.io.writeLine(args.io.err, `unknown run: ${runId}`);
204
+ return 2;
205
+ }
206
+ const playbookText = await fs.readFile(path.join(args.repoRoot, ctx.playbookPath), "utf8");
207
+ const template = parseTemplate(playbookText, ctx.playbookPath);
208
+ const state = deriveRunState({ runId, template: ctx.templatePatch ? applyTemplatePatch(template, ctx.templatePatch) : template, events: ctx.events });
209
+ if (state.status !== "WAIT_HUMAN" || !state.waiting) {
210
+ args.io.writeLine(args.io.err, "run is not waiting for human");
211
+ return 2;
212
+ }
213
+ const written = [];
214
+ const message = args.flags.message;
215
+ if (sub === "complete-step") {
216
+ written.push(await writeRunEvent({
217
+ repoRoot: args.repoRoot,
218
+ runId,
219
+ kind: "run.human.completed_step",
220
+ stepId: state.current.step_id,
221
+ attempt: state.current.attempt,
222
+ actor: "human:cli",
223
+ nowMs: args.nowMs,
224
+ payload: message ? { message } : {}
225
+ }));
226
+ }
227
+ written.push(await writeRunEvent({
228
+ repoRoot: args.repoRoot,
229
+ runId,
230
+ kind: "run.human.resumed",
231
+ stepId: state.current.step_id,
232
+ attempt: state.current.attempt,
233
+ actor: "human:cli",
234
+ nowMs: args.nowMs,
235
+ payload: message ? { message } : {}
236
+ }));
237
+ await stageFiles(args.repoRoot, written.map((p) => path.relative(args.repoRoot, p)));
238
+ await git(["-c", "user.name=a5c", "-c", "user.email=a5c@example.invalid", "commit", "--no-gpg-sign", "-m", `a5c: ${sub} ${runId}`], args.repoRoot);
239
+ args.io.writeLine(args.io.out, "ok");
240
+ return 0;
241
+ }
242
+ // Reconcile once (for `reconcile`) or looped (for `tick`).
243
+ const loopMax = sub === "tick" ? (args.flags.maxTransitions ?? 1) : 1;
244
+ let snap = args.snap;
245
+ let outObj;
246
+ for (let i = 0; i < loopMax; i++) {
247
+ outObj = await reconcileOrchestration({
248
+ repoRoot: args.repoRoot,
249
+ treeish: args.treeish,
250
+ repoGit: args.repo.git,
251
+ snap,
252
+ nowMs: args.nowMs,
253
+ runId: args.flags.runId,
254
+ maxTransitions: sub === "tick" ? 1 : args.flags.maxTransitions,
255
+ emitNonExecEvents: !args.flags.dryRun
256
+ });
257
+ if (sub !== "tick")
258
+ break;
259
+ if (args.flags.dryRun)
260
+ break;
261
+ const execOnly = outObj.plans.filter((p) => p.kind === "EXECUTE_STEP");
262
+ if (execOnly.length === 0) {
263
+ // If reconcile produced no executable work, treat as no-op success.
264
+ break;
265
+ }
266
+ await execPlans({ repoRoot: args.repoRoot, plans: execOnly, nowMs: args.nowMs, actor: "hookexec-tick" });
267
+ snap = await loadSnapshot({ git: args.repo.git, treeish: args.treeish, inboxRefs: args.flags.inboxRefs });
268
+ }
269
+ // In dry-run mode for tick, we only want to output the last reconcile result.
270
+ // If any planned transition is blocked on deps, signal this via exit code 30.
271
+ const blockedOnDeps = Array.isArray(outObj?.plans) && outObj.plans.some((p) => p.kind === "WAIT_DEPS");
272
+ if (args.flags.json) {
273
+ args.io.writeLine(args.io.out, JSON.stringify(outObj, null, 2));
274
+ }
275
+ else {
276
+ args.io.writeLine(args.io.out, `plans: ${outObj.plans.length}`);
277
+ for (const p of outObj.plans)
278
+ args.io.writeLine(args.io.out, `- ${p.run_id}: ${p.kind}`);
279
+ }
280
+ return blockedOnDeps ? 30 : 0;
281
+ }
282
+ //# sourceMappingURL=runOrchestration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runOrchestration.js","sourceRoot":"","sources":["../../src/commands/runOrchestration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export type ExecutePlanEntry = {
2
+ run_id: string;
3
+ kind: string;
4
+ step_id?: number;
5
+ attempt?: number;
6
+ step_type?: string;
7
+ hook?: string;
8
+ hook_input?: any;
9
+ events_to_emit_before?: Array<{
10
+ kind: string;
11
+ payload: Record<string, unknown>;
12
+ }>;
13
+ events_expected_after?: string[];
14
+ };
15
+ export declare function execPlans(opts: {
16
+ repoRoot: string;
17
+ plans: ExecutePlanEntry[];
18
+ nowMs: () => number;
19
+ actor?: string;
20
+ heartbeatMs?: number;
21
+ }): Promise<void>;
22
+ //# sourceMappingURL=hookExecCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hookExecCore.d.ts","sourceRoot":"","sources":["../../src/orchestration/hookExecCore.ts"],"names":[],"mappings":"AAqEA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,qBAAqB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAClF,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC,CAAC;AAsEF,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyShB"}