@opensoftware/foreman 0.2.0 → 0.3.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.
@@ -1,4 +1,4 @@
1
- // A run of the factory's workflow for one work item, without I/O (ADR 0067): its ID, its first view, the next step,
1
+ // A run of the factory's workflow for one work item, without I/O (ADR 0067, ADR 0070): its ID, its first view, the next step,
2
2
  // how each fact changes the view, and the events it publishes. The workflow asks for each step and applies each fact
3
3
  // through local activities, so this code runs in the worker's own thread, not in Temporal's sandbox.
4
4
  import { createHash } from "node:crypto";
@@ -25,6 +25,8 @@ export function nextStep(view, definition, checkPollMs) {
25
25
  const index = view.stages.findIndex((stage) => stage.state !== "succeeded");
26
26
  const stage = view.stages[index];
27
27
  const plan = definition.stages[index];
28
+ if (stage.state === "blocked" && stage.takenOverAt)
29
+ return { kind: "await-hand-back", index };
28
30
  if (stage.state === "blocked" && stage.gateId)
29
31
  return { kind: "await-gate", index, gateId: stage.gateId };
30
32
  // Checks come before the gate: nobody is asked to approve a change whose checks fail.
@@ -48,15 +50,19 @@ export function apply(view, fact, at) {
48
50
  return next;
49
51
  }
50
52
  case "stage-ended": {
51
- const state = stageStateOf(fact.stopReason);
52
53
  const stage = next.stages[fact.index];
53
- Object.assign(stage, { state, endedAt: at }, fact.sessionId ? { sessionId: fact.sessionId } : {});
54
+ if (fact.sessionId)
55
+ stage.sessionId = fact.sessionId;
54
56
  if (fact.pullRequest)
55
57
  next.pullRequest = fact.pullRequest;
56
- if (state !== "succeeded")
57
- return end(state === "cancelled" ? "cancelled" : "failed");
58
- return fact.index === next.stages.length - 1 ? end("complete") : next;
58
+ if (fact.takenOver) {
59
+ Object.assign(stage, { state: "blocked", takenOverAt: at });
60
+ return { ...next, state: "blocked", folder: fact.takenOver.folder };
61
+ }
62
+ return stageEnded(next, fact.index, stageStateOf(fact.stopReason), at);
59
63
  }
64
+ case "handed-back":
65
+ return stageEnded({ ...next, state: "running" }, fact.index, "succeeded", at);
60
66
  case "cancelled":
61
67
  case "error": {
62
68
  const stopped = fact.kind === "cancelled" ? "cancelled" : "failed";
@@ -67,6 +73,13 @@ export function apply(view, fact, at) {
67
73
  }
68
74
  }
69
75
  }
76
+ /** The view after the stage at `index` ended in `state`: a stage that did not succeed ends the run. */
77
+ function stageEnded(next, index, state, at) {
78
+ Object.assign(next.stages[index], { state, endedAt: at });
79
+ if (state !== "succeeded")
80
+ return { ...next, state: state === "cancelled" ? "cancelled" : "failed", endedAt: at };
81
+ return index === next.stages.length - 1 ? { ...next, state: "complete", endedAt: at } : next;
82
+ }
70
83
  function gate(next, fact, end) {
71
84
  const stage = next.stages[fact.index];
72
85
  stage.gateId = fact.gateId;
@@ -131,10 +144,10 @@ export function promptOf(agentPrompt, workItem, pullRequest) {
131
144
  /** The signal in a request's body, or the problem with it as "<JSON Pointer>: <what is wrong>". */
132
145
  export function signalOf(body) {
133
146
  const { type, message } = (typeof body === "object" && body !== null ? body : {});
134
- if (type === "cancel")
147
+ if (type === "cancel" || type === "take-over" || type === "hand-back")
135
148
  return { type };
136
149
  if (type !== "steer")
137
- return `/type: must be "steer" or "cancel"`;
150
+ return `/type: must be "steer", "cancel", "take-over" or "hand-back"`;
138
151
  if (typeof message !== "string" || message === "")
139
152
  return "/message: a steering message needs the text";
140
153
  return { type, message };
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/domain/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/domain/run.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  // The activities of a run (ADR 0067). `next` and `apply` are local activities around the domain, so a run's logic runs
2
- // in the worker's thread; the others reach outside: the sandbox, the harness, the forge, gatekeeper and NATS.
2
+ // in the worker's thread; the others reach outside: the sandbox, the harness, the forge, gatekeeper and NATS. Each
3
+ // stage's agent gets the factory's inference gateway with the run's key (ADR 0070).
3
4
  import { mkdirSync } from "node:fs";
4
5
  import { join } from "node:path";
5
6
  import { Context } from "@temporalio/activity";
@@ -11,21 +12,51 @@ import { apply, checksOf, gateSummaryOf, lastPullRequestIn, nextStep, promptOf,
11
12
  /** The command line of an adapter by its name, as program and arguments. */
12
13
  const commandLine = (lines, name, otherwise) => (lines[name] ?? otherwise).split(" ");
13
14
  export function activities(deps) {
14
- /** The turn's stop reason; meanwhile it sends the run's new steering messages and reports that the stage lives. */
15
- async function untilDone(turn, runId, steered) {
15
+ /** Each run's key of the gateway, made once per run while this worker lives; never in Temporal's history. */
16
+ const keys = new Map();
17
+ const keyOf = (gateway, runId, budget) => {
18
+ const key = keys.get(runId) ?? gateway.key(runId, budget);
19
+ keys.set(runId, key);
20
+ return key;
21
+ };
22
+ /** The variables of the gateway that every harness adapter finds its own in (ADR 0070); none without a gateway. */
23
+ async function gatewayEnv(view, definition, model) {
24
+ const { gateway } = deps;
25
+ if (!gateway)
26
+ return {};
27
+ const key = await keyOf(gateway, view.runId, definition.inference?.budget);
28
+ return {
29
+ OPENAI_BASE_URL: gateway.url,
30
+ OPENAI_API_KEY: key,
31
+ OPENAI_MODEL: model,
32
+ ANTHROPIC_BASE_URL: gateway.url.replace(/\/v1\/?$/, ""),
33
+ ANTHROPIC_API_KEY: key,
34
+ ANTHROPIC_MODEL: model,
35
+ };
36
+ }
37
+ /**
38
+ * The turn's stop reason, and whether a person took the stage over; meanwhile it sends the run's new steering
39
+ * messages, ends the turn when a person takes the stage at `index` over, and reports that the stage lives.
40
+ */
41
+ async function untilDone(turn, runId, index, steered) {
16
42
  const context = Context.current();
17
43
  context.cancellationSignal.addEventListener("abort", () => turn.cancel());
18
44
  let sent = steered;
45
+ let takenOver = false;
19
46
  const watch = setInterval(() => {
20
47
  context.heartbeat();
21
- deps.steering(runId).then((messages) => {
22
- for (const message of messages.slice(sent))
48
+ deps.control(runId).then(({ steering, takeOver }) => {
49
+ for (const message of steering.slice(sent))
23
50
  turn.steer(message);
24
- sent = Math.max(sent, messages.length);
51
+ sent = Math.max(sent, steering.length);
52
+ if (takeOver === index && !takenOver) {
53
+ takenOver = true;
54
+ turn.cancel();
55
+ }
25
56
  }, () => undefined);
26
57
  }, deps.pollMs);
27
58
  try {
28
- return await turn.done;
59
+ return { stopReason: await turn.done, takenOver };
29
60
  }
30
61
  finally {
31
62
  clearInterval(watch);
@@ -85,8 +116,9 @@ export function activities(deps) {
85
116
  .join(",");
86
117
  const harness = commandLine(deps.harnesses, plan.harness, `npx -y @opensoftware/harness-${plan.harness} run`);
87
118
  const adapter = definition.sandboxAdapter;
119
+ const model = await gatewayEnv(view, definition, plan.model);
88
120
  const sandbox = plan.sandbox
89
- ? await createSandbox(commandLine(deps.sandboxes, adapter, `npx -y @opensoftware/sandbox-${adapter}`), { ...plan.sandbox, env: { OTEL_RESOURCE_ATTRIBUTES: resource } }, cwd, view.runId, deps.env)
121
+ ? await createSandbox(commandLine(deps.sandboxes, adapter, `npx -y @opensoftware/sandbox-${adapter}`), { ...plan.sandbox, env: { OTEL_RESOURCE_ATTRIBUTES: resource, ...model } }, cwd, view.runId, deps.env)
90
122
  : undefined;
91
123
  try {
92
124
  const prompt = promptOf(plan.prompt, view.workItem, view.pullRequest);
@@ -100,10 +132,11 @@ export function activities(deps) {
100
132
  ...deps.env,
101
133
  OSF_DATA: join(deps.data, "harness", plan.harness),
102
134
  OTEL_RESOURCE_ATTRIBUTES: resource,
135
+ ...model,
103
136
  },
104
137
  prompt,
105
138
  });
106
- const stopReason = await untilDone(turn, view.runId, steered);
139
+ const { stopReason, takenOver } = await untilDone(turn, view.runId, index, steered);
107
140
  await sandbox?.copyOut();
108
141
  const pullRequest = lastPullRequestIn(turn.transcript());
109
142
  return {
@@ -112,6 +145,7 @@ export function activities(deps) {
112
145
  stopReason,
113
146
  sessionId: turn.sessionId,
114
147
  ...(pullRequest ? { pullRequest } : {}),
148
+ ...(takenOver ? { takenOver: { folder: cwd } } : {}),
115
149
  };
116
150
  }
117
151
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"activities.js","sourceRoot":"","sources":["../../src/workflows/activities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activities.js","sourceRoot":"","sources":["../../src/workflows/activities.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,12 @@
4
4
  // switch and coverage never reach; every mutant here would count as not run (ADR 0067).
5
5
  import { ActivityCancellationType, CancellationScope, condition, defineQuery, defineSignal, isCancellation, proxyActivities, proxyLocalActivities, setHandler, sleep, } from "@temporalio/workflow";
6
6
  export const viewQuery = defineQuery("view");
7
- export const steeringQuery = defineQuery("steering");
7
+ export const controlQuery = defineQuery("control");
8
8
  export const steerSignal = defineSignal("steer");
9
9
  export const gateSignal = defineSignal("gate");
10
+ /** A person takes over the stage at this index (ADR 0070). */
11
+ export const takeOverSignal = defineSignal("take-over");
12
+ export const handBackSignal = defineSignal("hand-back");
10
13
  const local = proxyLocalActivities({ startToCloseTimeout: "1 minute" });
11
14
  const remote = proxyActivities({
12
15
  startToCloseTimeout: "1 day",
@@ -18,10 +21,18 @@ export async function factoryRun({ view, definition }) {
18
21
  let run = view;
19
22
  const steering = [];
20
23
  const decisions = [];
24
+ let takeOver;
25
+ let handedBack = false;
21
26
  setHandler(viewQuery, () => run);
22
- setHandler(steeringQuery, () => steering);
27
+ setHandler(controlQuery, () => ({ steering, ...(takeOver === undefined ? {} : { takeOver }) }));
23
28
  setHandler(steerSignal, (message) => void steering.push(message));
24
29
  setHandler(gateSignal, (decision) => void decisions.push(decision));
30
+ setHandler(takeOverSignal, (index) => {
31
+ takeOver = index;
32
+ });
33
+ setHandler(handBackSignal, () => {
34
+ handedBack = true;
35
+ });
25
36
  const settle = async (fact) => {
26
37
  run = await CancellationScope.nonCancellable(() => local.apply(run, fact));
27
38
  };
@@ -43,6 +54,11 @@ export async function factoryRun({ view, definition }) {
43
54
  const decision = decisions.find((candidate) => candidate.gateId === gateId);
44
55
  run = await local.apply(run, { kind: "gate", index, ...decision });
45
56
  }
57
+ else if (step.kind === "await-hand-back") {
58
+ await condition(() => handedBack);
59
+ [handedBack, takeOver] = [false, undefined];
60
+ run = await local.apply(run, { kind: "handed-back", index });
61
+ }
46
62
  else {
47
63
  run = await local.apply(run, { kind: "stage-started", index });
48
64
  await settle(await remote.runStage(run, definition, index, steering.length));
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/workflows/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/workflows/run.ts"],"names":[],"mappings":"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"}