@openclaw-cloud/agent-controller 3.0.0-beta.21 → 3.0.0-beta.22

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.
@@ -18,14 +18,18 @@ export interface MockBoardWorkerHandle {
18
18
  * create the CardProcessing, dispatch the prompt and block the CP in
19
19
  * `waiting_for_mcp_response`; the mock never receives that prompt, it
20
20
  * just has to submit after the CP exists.
21
- * 3. `POST /api/agent/board/cards/{cardId}/submit` — retried on any
22
- * non-2xx, because a submit landing before the CP is blocked gets a
23
- * 404 (`no active card_processing`) or 400 (`not waiting for a
24
- * response`) from the backend.
21
+ * 3. `POST /api/agent/board/cards/{cardId}/submit` — retried, because a
22
+ * submit landing before the CP is blocked gets a 404 (`no active
23
+ * card_processing`) or 400 (`not waiting for a response`). How long we
24
+ * retry depends on which: see the budget constants above.
25
25
  * 4. Straight back to take-task, so a burst of waiting cards drains
26
26
  * back-to-back instead of one per poll interval.
27
27
  *
28
28
  * Nothing in here may throw out of the loop: a mock agent that dies on a
29
- * transient backend blip is worse than one that logs and polls again.
29
+ * transient backend blip is worse than one that logs and polls again. Every
30
+ * exit from `submit()` falls back into the polling loop — only `stop()` ends
31
+ * it. A card we could not submit is left claimed, which blocks further work
32
+ * until the orchestrator releases it, so `submit()` returning is always
33
+ * logged.
30
34
  */
31
35
  export declare function startMockBoardWorker(opts: MockBoardWorkerOptions): MockBoardWorkerHandle;
@@ -2,8 +2,30 @@ import { config } from './config.js';
2
2
  import { toErrorMessage } from './utils/response.js';
3
3
  /** Backoff between submit retries while the orchestrator blocks the CardProcessing. */
4
4
  const SUBMIT_RETRY_DELAY_MS = 2_000;
5
- /** Total time a single card's submit may spend retrying before we drop it. */
6
- const SUBMIT_RETRY_BUDGET_MS = 60_000;
5
+ /**
6
+ * Budget for HTTP 400 `Card processing is not waiting for a response` — the CP
7
+ * exists and is ours, it just has not reached the `agent_mcp_task` step yet.
8
+ *
9
+ * Long on purpose. Abandoning the card does NOT release it: `claimCard` has a
10
+ * universal one-card-per-agent guard, so while this card is still assigned to
11
+ * us every later take-task is refused and answered 204. The only thing that
12
+ * frees us is the orchestrator reconciler reaping the stalled CP at
13
+ * `cp.stallTimeoutMs` (default 30 min), which fails the CP and unassigns the
14
+ * card. Giving up before that bought nothing and made the agent look idle for
15
+ * up to half an hour — that is the 2026-08-30 local-stack wedge.
16
+ */
17
+ const SUBMIT_NOT_READY_BUDGET_MS = 31 * 60_000;
18
+ /**
19
+ * Budget for HTTP 404 `no active card_processing` — no CP is active on the
20
+ * card. Short, because this reads two ways and both want a quick exit:
21
+ * either the orchestrator has not created the CP yet (a seconds-wide window
22
+ * right after the claim), or it has already been reaped — and a reap also
23
+ * unassigns the card, so we are free to claim again and should be polling,
24
+ * not retrying.
25
+ */
26
+ const SUBMIT_NO_CP_BUDGET_MS = 60_000;
27
+ /** Log attempt 1, then every Nth — a half-hour wait is not 900 log lines. */
28
+ const SUBMIT_LOG_EVERY = 15;
7
29
  /**
8
30
  * Board worker for the `mock` provider — the piece that makes a mock agent
9
31
  * process board cards end to end so the platform can be developed locally
@@ -17,15 +39,19 @@ const SUBMIT_RETRY_BUDGET_MS = 60_000;
17
39
  * create the CardProcessing, dispatch the prompt and block the CP in
18
40
  * `waiting_for_mcp_response`; the mock never receives that prompt, it
19
41
  * just has to submit after the CP exists.
20
- * 3. `POST /api/agent/board/cards/{cardId}/submit` — retried on any
21
- * non-2xx, because a submit landing before the CP is blocked gets a
22
- * 404 (`no active card_processing`) or 400 (`not waiting for a
23
- * response`) from the backend.
42
+ * 3. `POST /api/agent/board/cards/{cardId}/submit` — retried, because a
43
+ * submit landing before the CP is blocked gets a 404 (`no active
44
+ * card_processing`) or 400 (`not waiting for a response`). How long we
45
+ * retry depends on which: see the budget constants above.
24
46
  * 4. Straight back to take-task, so a burst of waiting cards drains
25
47
  * back-to-back instead of one per poll interval.
26
48
  *
27
49
  * Nothing in here may throw out of the loop: a mock agent that dies on a
28
- * transient backend blip is worse than one that logs and polls again.
50
+ * transient backend blip is worse than one that logs and polls again. Every
51
+ * exit from `submit()` falls back into the polling loop — only `stop()` ends
52
+ * it. A card we could not submit is left claimed, which blocks further work
53
+ * until the orchestrator releases it, so `submit()` returning is always
54
+ * logged.
29
55
  */
30
56
  export function startMockBoardWorker(opts) {
31
57
  const { api } = opts;
@@ -71,8 +97,14 @@ export function startMockBoardWorker(opts) {
71
97
  }
72
98
  }
73
99
  async function submit(cardId) {
74
- const deadline = Date.now() + SUBMIT_RETRY_BUDGET_MS;
75
- while (!stopped) {
100
+ const start = Date.now();
101
+ // Which budget applies depends on the LAST failure: 404 means no CP is
102
+ // active on the card, so the short budget takes over immediately — that is
103
+ // what turns a reap into a prompt return to polling even after we have
104
+ // already waited many minutes on 400s.
105
+ let budgetMs = SUBMIT_NOT_READY_BUDGET_MS;
106
+ for (let attempt = 1; !stopped; attempt++) {
107
+ const loud = attempt === 1 || attempt % SUBMIT_LOG_EVERY === 0;
76
108
  try {
77
109
  const res = await api.post(`/api/agent/board/cards/${cardId}/submit`, {
78
110
  text: config.mockTaskText,
@@ -83,13 +115,27 @@ export function startMockBoardWorker(opts) {
83
115
  return;
84
116
  }
85
117
  const body = await res.text().catch(() => '');
86
- console.warn(`[mock-board] submit ${cardId} failed: HTTP ${res.status} ${body.slice(0, 200)}`);
118
+ // 403 `Card is not claimed by this agent` is terminal: the card was
119
+ // reaped and re-paired, so it is no longer ours to submit and no
120
+ // amount of retrying changes that. Go back to polling at once.
121
+ if (res.status === 403) {
122
+ console.warn(`[mock-board] card ${cardId} no longer ours (HTTP 403) — resuming polling`);
123
+ return;
124
+ }
125
+ budgetMs = res.status === 404 ? SUBMIT_NO_CP_BUDGET_MS : SUBMIT_NOT_READY_BUDGET_MS;
126
+ if (loud) {
127
+ console.warn(`[mock-board] submit ${cardId} not ready (attempt ${attempt}, HTTP ${res.status}) ${body.slice(0, 200)}`);
128
+ }
87
129
  }
88
130
  catch (err) {
89
- console.warn(`[mock-board] submit ${cardId} error: ${toErrorMessage(err)}`);
131
+ if (loud) {
132
+ console.warn(`[mock-board] submit ${cardId} error (attempt ${attempt}): ${toErrorMessage(err)}`);
133
+ }
90
134
  }
91
- if (Date.now() >= deadline) {
92
- console.warn(`[mock-board] giving up on card ${cardId} after ${SUBMIT_RETRY_BUDGET_MS}ms`);
135
+ if (Date.now() - start >= budgetMs) {
136
+ console.warn(`[mock-board] giving up on card ${cardId} after ${Math.round((Date.now() - start) / 1000)}s; ` +
137
+ 'it stays claimed by this agent until the orchestrator reconciler reaps the ' +
138
+ 'stalled card_processing, so take-task keeps answering 204 until then. Resuming polling.');
93
139
  return;
94
140
  }
95
141
  await sleep(SUBMIT_RETRY_DELAY_MS);
@@ -1 +1 @@
1
- {"version":3,"file":"mock-board-worker.js","sourceRoot":"","sources":["../src/mock-board-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock-board-worker.js","sourceRoot":"","sources":["../src/mock-board-worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,uFAAuF;AACvF,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC;;;;;;;;;;;GAWG;AACH,MAAM,0BAA0B,GAAG,EAAE,GAAG,MAAM,CAAC;AAC/C;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG,MAAM,CAAC;AACtC,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAU5B;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAA4B;IAC/D,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACrB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,2EAA2E;IAC3E,IAAI,IAAI,GAAwB,IAAI,CAAC;IAErC,SAAS,KAAK,CAAC,EAAU;QACvB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,IAAI,OAAO;gBAAE,OAAO,OAAO,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,GAAG,IAAI,CAAC;gBACZ,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,EAAE,CAAC,CAAC;YACP,IAAI,GAAG,GAAG,EAAE;gBACV,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,GAAG,IAAI,CAAC;gBACZ,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,KAAK,UAAU,QAAQ;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC;YAC7D,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,uCAAuC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwB,CAAC;YACvD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;gBACrE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,iCAAiC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,MAAc;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,uEAAuE;QACvE,2EAA2E;QAC3E,uEAAuE;QACvE,uCAAuC;QACvC,IAAI,QAAQ,GAAG,0BAA0B,CAAC;QAE1C,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,OAAO,GAAG,gBAAgB,KAAK,CAAC,CAAC;YAC/D,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,MAAM,SAAS,EAAE;oBACpE,IAAI,EAAE,MAAM,CAAC,YAAY;oBACzB,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;gBACH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;oBACX,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,YAAY,CAAC,CAAC;oBACrD,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC9C,oEAAoE;gBACpE,iEAAiE;gBACjE,+DAA+D;gBAC/D,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACvB,OAAO,CAAC,IAAI,CAAC,qBAAqB,MAAM,+CAA+C,CAAC,CAAC;oBACzF,OAAO;gBACT,CAAC;gBACD,QAAQ,GAAG,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,0BAA0B,CAAC;gBACpF,IAAI,IAAI,EAAE,CAAC;oBACT,OAAO,CAAC,IAAI,CACV,uBAAuB,MAAM,uBAAuB,OAAO,UAAU,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACzG,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,IAAI,EAAE,CAAC;oBACT,OAAO,CAAC,IAAI,CACV,uBAAuB,MAAM,mBAAmB,OAAO,MAAM,cAAc,CAAC,GAAG,CAAC,EAAE,CACnF,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,QAAQ,EAAE,CAAC;gBACnC,OAAO,CAAC,IAAI,CACV,kCAAkC,MAAM,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK;oBAC5F,6EAA6E;oBAC7E,yFAAyF,CAC5F,CAAC;gBACF,OAAO;YACT,CAAC;YACD,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,KAAK,UAAU,IAAI;QACjB,OAAO,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;YAChC,IAAI,OAAO;gBAAE,OAAO;YACpB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBACpC,SAAS;YACX,CAAC;YACD,MAAM,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YACpC,IAAI,OAAO;gBAAE,OAAO;YACpB,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,MAAM,CAAC,eAAe,KAAK,CAAC,CAAC;IAC9E,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,kEAAkE;QAClE,OAAO,CAAC,KAAK,CAAC,8BAA8B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI;YACF,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,EAAE,EAAE,CAAC;QACX,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw-cloud/agent-controller",
3
- "version": "3.0.0-beta.21",
3
+ "version": "3.0.0-beta.22",
4
4
  "packageManager": "pnpm@11.5.2",
5
5
  "type": "module",
6
6
  "engines": {