@volter/supercode-orchestrator 0.5.82 → 0.5.84

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/board/cli.mjs CHANGED
@@ -127,7 +127,7 @@ And:
127
127
  notify-subscribe <id> --address sc:<machine>:<harness>:<id> [--role creator|worker|dependency]
128
128
  notify-subscribe <dependency> --for-card <your-arc>: subscribe only your arc's session to dependency notices.
129
129
  notify-unsubscribe <dependency> --for-card <your-arc>: remove that arc's subscription only.
130
- Any verb … --at sc:<machine>:board:<home>: sent as mail to a board kept on another machine.
130
+ Any verb … --at sc:<machine>:board:<home>: applied on that board through this machine's board door, as this session; its answer and exit code are the board's.
131
131
  <event> <id>... [reason] [--<field> value]: any other event the board's workflow declares, its flags the event's fields.
132
132
  start <id> release a --no-start hold and start through the declared workflow
133
133
  create ... --adopt <session> hold dispatch until that live session is attached
package/board/client.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  // written here; only a run-on-the-machine verb (and help) loads the board, to run as its own act.
3
3
  import { WorkspaceContexts } from '@volter/teams/context';
4
4
  import { supercodeHome } from '@volter/teams/home';
5
- import { askBoardOwner, BOARD_OPERATION_VERBS, boardHome, callerFacts } from '@volter/teams/board-owner';
5
+ import { askBoardOwner, BOARD_OPERATION_VERBS, boardHome, callerFacts, unansweredText } from '@volter/teams/board-owner';
6
6
  import { mkdirSync, readFileSync } from 'node:fs';
7
7
  import { join } from 'node:path';
8
8
  import { homeOf, parse } from './args.mjs';
@@ -67,6 +67,8 @@ async function sendToOwner(root, argv, args) {
67
67
  const board = args.board ?? process.env.HERMES_KANBAN_BOARD ?? null;
68
68
  const facts = { ...callerFacts(), SUPERCODE_CONTEXT: process.env.SUPERCODE_CONTEXT || new WorkspaceContexts(supercodeHome()).read().current || 'local' };
69
69
  const answer = await askBoardOwner(root, { argv: withoutHome(argv), board, caller: null, session: sid ? { id: sid, harness } : null, facts, cwd: process.cwd(), stdin });
70
+ // the owner took the verb and the call ended with no answer: its outcome is unknown, never a plain failure
71
+ if (answer.unanswered === true) { process.stderr.write(`supercode workflow: ${unansweredText(answer, `\`${withoutHome(argv).join(' ')}\``)}`); return 1; }
70
72
  if (answer.stdout) process.stdout.write(answer.stdout);
71
73
  if (answer.stderr) process.stderr.write(answer.stderr);
72
74
  return answer.code ?? 1;
package/kanban-worker.mjs CHANGED
@@ -18,7 +18,7 @@ import { KANBAN_ENV, untrustedServerVerdict, hermesApproval, hermesInstall, memo
18
18
  import { pinnedSkills, taskProtocol } from './board/worker-prompt.mjs';
19
19
  import { mountOrchestratorMcp } from './mcp/mount.mjs';
20
20
  import { normalizeWorkerEvent, widensSandbox } from './loop.mjs';
21
- import { askBoardOwner, callerFacts } from '@volter/teams/board-owner';
21
+ import { askBoardOwner, callerFacts, unansweredText } from '@volter/teams/board-owner';
22
22
  import { permissionResponse } from './reducer.mjs';
23
23
  import { boardGuardArguments } from '@volter/teams/board-process-guard';
24
24
 
@@ -156,6 +156,7 @@ async function recordSession(root, task, harness, sessionId) {
156
156
  board: task.HERMES_KANBAN_BOARD || null, caller: null, session: null, cwd: process.cwd(), stdin: null,
157
157
  facts: { ...callerFacts(), SUPERCODE_CONTEXT: process.env.SUPERCODE_CONTEXT || 'local' },
158
158
  });
159
+ if (answer.unanswered === true) throw new Error(unansweredText(answer, `the run's session record (run-session ${task.HERMES_KANBAN_RUN_ID})`).trim());
159
160
  if (answer.code) throw new Error((answer.stderr || 'the board owner did not record it').trim());
160
161
  }
161
162
 
package/mcp/server.mjs CHANGED
@@ -22,7 +22,7 @@ import { connect } from 'node:net';
22
22
  import { join } from 'node:path';
23
23
  import { KANBAN_TOOLS, PROTOCOL_VERSION, SERVER_NAME, TOOLS } from './tools.mjs';
24
24
  import { KANBAN_ENV } from '../hermes-cli.mjs';
25
- import { askBoardOwner, callerFacts } from '@volter/teams/board-owner';
25
+ import { askBoardOwner, callerFacts, unansweredText } from '@volter/teams/board-owner';
26
26
 
27
27
  /** Env var naming the socket, when the loop wants one off the root's default. */
28
28
  export const SOCKET_ENV = 'SUPERCODE_ORCHESTRATOR_SOCK';
@@ -66,6 +66,7 @@ async function kanbanCall(binding, name, args) {
66
66
  board: binding.kanban?.HERMES_KANBAN_BOARD ?? null, caller: null, session: null, cwd: binding.root, stdin: null,
67
67
  facts: { ...callerFacts(), SUPERCODE_CONTEXT: process.env.SUPERCODE_CONTEXT || 'local' },
68
68
  });
69
+ if (answer.unanswered === true) return { ok: false, error: unansweredText(answer, `the board tool ${name}`).trim() };
69
70
  if (answer.code) return { ok: false, error: (answer.stderr || 'the board owner did not answer').trim() };
70
71
  return { ok: true, result: { ran: name, verbatim: answer.stdout } };
71
72
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volter/supercode-orchestrator",
3
- "version": "0.5.82",
3
+ "version": "0.5.84",
4
4
  "type": "module",
5
5
  "description": "The orchestrator runtime over the Volter Harness ontology: one typed operational model whose folder is its serialization, read and written through the harness orchestration doors (docs/ORCHESTRATOR-IR.md)",
6
6
  "exports": {
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@volter/supercode-harness-sdk": "^0.3.60",
28
- "@volter/teams": "0.2.30",
28
+ "@volter/teams": "0.2.31",
29
29
  "@volter/ztrack": "^2.4.23",
30
30
  "yaml": "^2.9.0"
31
31
  },