@cat-factory/worker 0.33.4 → 0.33.6

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/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAK3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACrC,mFAAmF;IACnF,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,gFAAgF;IAChF,aAAa,CAAC,EAAE,qBAAqB,CAAA;CACtC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,CA2CtE"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAK3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACrC,mFAAmF;IACnF,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,gFAAgF;IAChF,aAAa,CAAC,EAAE,qBAAqB,CAAA;CACtC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,CA6CtE"}
package/dist/app.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { mountAuthGate, registerCoreControllers } from '@cat-factory/server';
2
2
  import { Hono } from 'hono';
3
3
  import { cors } from 'hono/cors';
4
- import { resolveCorsOrigin } from './infrastructure/config/cors';
4
+ import { CORS_ALLOWED_HEADERS, resolveCorsOrigin } from './infrastructure/config/cors';
5
5
  import { buildContainer } from './infrastructure/container';
6
6
  import { handleError } from './infrastructure/http/errorHandler';
7
7
  /**
@@ -24,9 +24,11 @@ export function createApp(options = {}) {
24
24
  // bearer header (not cookies), so credentials mode stays off.
25
25
  app.use('*', cors({
26
26
  origin: (origin, c) => resolveCorsOrigin(origin, c.env.CORS_ALLOWED_ORIGINS),
27
- // X-Personal-Password carries the ambient personal-subscription unlock password
28
- // (individual-usage vendors); it must be allow-listed or the browser drops it.
29
- allowHeaders: ['Content-Type', 'Authorization', 'X-Personal-Password'],
27
+ // The shared allow-list (kept in @cat-factory/server so both facades match): the
28
+ // SPA sends X-Personal-Password (personal-subscription unlock) and X-Connection-Id
29
+ // (real-time self-echo suppression) on its calls, so each must be allow-listed or
30
+ // the browser drops the whole request with "CORS Missing Allow Header".
31
+ allowHeaders: [...CORS_ALLOWED_HEADERS],
30
32
  }));
31
33
  app.use('*', async (c, next) => {
32
34
  c.set('container', buildContainer(c.env, options.overrides, {
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAE5E,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAYhE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,OAAO,GAAqB,EAAE;IACtD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,6EAA6E;IAC7E,yEAAyE;IACzE,yEAAyE;IACzE,gFAAgF;IAChF,8DAA8D;IAC9D,GAAG,CAAC,GAAG,CACL,GAAG,EACH,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC5E,gFAAgF;QAChF,+EAA+E;QAC/E,YAAY,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,qBAAqB,CAAC;KACvE,CAAC,CACH,CAAA;IACD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QAC7B,CAAC,CAAC,GAAG,CACH,WAAW,EACX,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE;YACvC,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;YACxD,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CACH,CAAA;QACD,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAEnD,iFAAiF;IACjF,mFAAmF;IACnF,aAAa,CAAC,GAAG,CAAC,CAAA;IAElB,mFAAmF;IACnF,mFAAmF;IACnF,8EAA8E;IAC9E,gCAAgC;IAChC,uBAAuB,CAAC,GAAG,CAAC,CAAA;IAE5B,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAExB,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAE5E,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAYhE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,OAAO,GAAqB,EAAE;IACtD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,6EAA6E;IAC7E,yEAAyE;IACzE,yEAAyE;IACzE,gFAAgF;IAChF,8DAA8D;IAC9D,GAAG,CAAC,GAAG,CACL,GAAG,EACH,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC5E,iFAAiF;QACjF,mFAAmF;QACnF,kFAAkF;QAClF,wEAAwE;QACxE,YAAY,EAAE,CAAC,GAAG,oBAAoB,CAAC;KACxC,CAAC,CACH,CAAA;IACD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QAC7B,CAAC,CAAC,GAAG,CACH,WAAW,EACX,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE;YACvC,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;YACxD,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CACH,CAAA;QACD,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAEnD,iFAAiF;IACjF,mFAAmF;IACnF,aAAa,CAAC,GAAG,CAAC,CAAA;IAElB,mFAAmF;IACnF,mFAAmF;IACnF,8EAA8E;IAC9E,gCAAgC;IAChC,uBAAuB,CAAC,GAAG,CAAC,CAAA;IAE5B,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAExB,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1,2 +1,2 @@
1
- export { parseAllowedOrigins, resolveCorsOrigin } from '@cat-factory/server';
1
+ export { CORS_ALLOWED_HEADERS, parseAllowedOrigins, resolveCorsOrigin } from '@cat-factory/server';
2
2
  //# sourceMappingURL=cors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/cors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/cors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -1,3 +1,3 @@
1
1
  // Moved to the shared @cat-factory/server package; re-exported for existing imports.
2
- export { parseAllowedOrigins, resolveCorsOrigin } from '@cat-factory/server';
2
+ export { CORS_ALLOWED_HEADERS, parseAllowedOrigins, resolveCorsOrigin } from '@cat-factory/server';
3
3
  //# sourceMappingURL=cors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../src/infrastructure/config/cors.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../src/infrastructure/config/cors.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceEventsHub.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/durable-objects/WorkspaceEventsHub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAEjC;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,SAAQ,aAAa,CAAC,GAAG,CAAC;IACxD,YAAY,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG,EAK5C;IAEc,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CA4BxD;IAIc,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE/C;IAEc,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxF;IAEc,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7C;CACF"}
1
+ {"version":3,"file":"WorkspaceEventsHub.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/durable-objects/WorkspaceEventsHub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAEjC;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,SAAQ,aAAa,CAAC,GAAG,CAAC;IACxD,YAAY,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG,EAK5C;IAEc,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAqCxD;IAIc,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE/C;IAEc,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxF;IAEc,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7C;CACF"}
@@ -18,10 +18,16 @@ export class WorkspaceEventsHub extends DurableObject {
18
18
  }
19
19
  async fetch(request) {
20
20
  const url = new URL(request.url);
21
- // Internal broadcast: fan a pre-serialised JSON event out to every socket.
21
+ // Internal broadcast: fan a pre-serialised JSON event out to every socket. When the
22
+ // publish names an origin connection (`X-Origin-Cid`), skip the socket that carried that
23
+ // `?cid=` — the connection that caused the change already has the authoritative REST
24
+ // result, so echoing it back would only make it refresh off (and fight) its own move.
22
25
  if (request.method === 'POST' && url.pathname === '/publish') {
23
26
  const body = await request.text();
27
+ const originCid = request.headers.get('X-Origin-Cid');
24
28
  for (const ws of this.ctx.getWebSockets()) {
29
+ if (originCid && ws.deserializeAttachment() === originCid)
30
+ continue;
25
31
  try {
26
32
  ws.send(body);
27
33
  }
@@ -39,6 +45,11 @@ export class WorkspaceEventsHub extends DurableObject {
39
45
  const server = pair[1];
40
46
  // NOT server.accept() — that pins the DO in memory and disables hibernation.
41
47
  this.ctx.acceptWebSocket(server);
48
+ // Remember this connection's id (survives hibernation via the attachment) so a later
49
+ // /publish can skip echoing a board mutation back to the connection that caused it.
50
+ const cid = url.searchParams.get('cid');
51
+ if (cid)
52
+ server.serializeAttachment(cid);
42
53
  return new Response(null, { status: 101, webSocket: client });
43
54
  }
44
55
  return new Response('expected a websocket upgrade or POST /publish', { status: 400 });
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceEventsHub.js","sourceRoot":"","sources":["../../../src/infrastructure/durable-objects/WorkspaceEventsHub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGlD;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAmB,SAAQ,aAAkB;IACxD,YAAY,GAAuB,EAAE,GAAQ;QAC3C,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACf,+EAA+E;QAC/E,mFAAmF;QACnF,GAAG,CAAC,wBAAwB,CAAC,IAAI,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAChF,CAAC;IAEQ,KAAK,CAAC,KAAK,CAAC,OAAgB;QACnC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAEhC,2EAA2E;QAC3E,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;YACjC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;gBAC1C,IAAI,CAAC;oBACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACf,CAAC;gBAAC,MAAM,CAAC;oBACP,2DAA2D;gBAC7D,CAAC;YACH,CAAC;YACD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,8EAA8E;QAC9E,mEAAmE;QACnE,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,CAAC;YAC9F,MAAM,IAAI,GAAG,IAAI,aAAa,EAAE,CAAA;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACtB,6EAA6E;YAC7E,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;YAChC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;QAC/D,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,+CAA+C,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IACvF,CAAC;IAED,6EAA6E;IAEpE,KAAK,CAAC,gBAAgB;QAC7B,mFAAmF;IACrF,CAAC;IAEQ,KAAK,CAAC,cAAc,CAAC,EAAa,EAAE,IAAY,EAAE,MAAc;QACvE,IAAI,CAAC;YACH,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,cAAc;QAC3B,2EAA2E;IAC7E,CAAC;CACF"}
1
+ {"version":3,"file":"WorkspaceEventsHub.js","sourceRoot":"","sources":["../../../src/infrastructure/durable-objects/WorkspaceEventsHub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGlD;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAmB,SAAQ,aAAkB;IACxD,YAAY,GAAuB,EAAE,GAAQ;QAC3C,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACf,+EAA+E;QAC/E,mFAAmF;QACnF,GAAG,CAAC,wBAAwB,CAAC,IAAI,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAChF,CAAC;IAEQ,KAAK,CAAC,KAAK,CAAC,OAAgB;QACnC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAEhC,oFAAoF;QACpF,yFAAyF;QACzF,qFAAqF;QACrF,sFAAsF;QACtF,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;YACjC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;YACrD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;gBAC1C,IAAI,SAAS,IAAI,EAAE,CAAC,qBAAqB,EAAE,KAAK,SAAS;oBAAE,SAAQ;gBACnE,IAAI,CAAC;oBACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACf,CAAC;gBAAC,MAAM,CAAC;oBACP,2DAA2D;gBAC7D,CAAC;YACH,CAAC;YACD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,8EAA8E;QAC9E,mEAAmE;QACnE,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,CAAC;YAC9F,MAAM,IAAI,GAAG,IAAI,aAAa,EAAE,CAAA;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACtB,6EAA6E;YAC7E,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;YAChC,qFAAqF;YACrF,oFAAoF;YACpF,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACvC,IAAI,GAAG;gBAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;YACxC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;QAC/D,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,+CAA+C,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IACvF,CAAC;IAED,6EAA6E;IAEpE,KAAK,CAAC,gBAAgB;QAC7B,mFAAmF;IACrF,CAAC;IAEQ,KAAK,CAAC,cAAc,CAAC,EAAa,EAAE,IAAY,EAAE,MAAc;QACvE,IAAI,CAAC;YACH,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,cAAc;QAC3B,2EAA2E;IAC7E,CAAC;CACF"}
@@ -13,7 +13,7 @@ export declare class DurableObjectEventPublisher implements ExecutionEventPublis
13
13
  private readonly namespace;
14
14
  constructor(namespace: DurableObjectNamespace<WorkspaceEventsHub>);
15
15
  executionChanged(workspaceId: string, instance: ExecutionInstance, block?: Block | null): Promise<void>;
16
- boardChanged(workspaceId: string, reason: string, _blockId?: string | null): Promise<void>;
16
+ boardChanged(workspaceId: string, reason: string, _blockId?: string | null, originConnectionId?: string | null): Promise<void>;
17
17
  bootstrapChanged(workspaceId: string, job: BootstrapJob, block?: Block | null): Promise<void>;
18
18
  notificationChanged(workspaceId: string, notification: Notification): Promise<void>;
19
19
  llmCallObserved(workspaceId: string, activity: LlmCallActivity): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"DurableObjectEventPublisher.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/events/DurableObjectEventPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,iBAAiB,EAElB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE/E;;;;;;GAMG;AACH,qBAAa,2BAA4B,YAAW,uBAAuB;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,EAAI;IAEhF,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf;IAEK,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/F;IAEK,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,YAAY,EACjB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf;IAEK,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;IAEK,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;IAEK,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5F;IAEK,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3F;IAEK,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF;IAEK,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F;IAEK,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF;YAEa,OAAO;CAatB"}
1
+ {"version":3,"file":"DurableObjectEventPublisher.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/events/DurableObjectEventPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,iBAAiB,EAElB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE/E;;;;;;GAMG;AACH,qBAAa,2BAA4B,YAAW,uBAAuB;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,EAAI;IAEhF,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf;IAEK,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GACjC,OAAO,CAAC,IAAI,CAAC,CAMf;IAEK,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,YAAY,EACjB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf;IAEK,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;IAEK,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;IAEK,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5F;IAEK,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3F;IAEK,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF;IAEK,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F;IAEK,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF;YAEa,OAAO;CAqBtB"}
@@ -18,10 +18,12 @@ export class DurableObjectEventPublisher {
18
18
  at: Date.now(),
19
19
  });
20
20
  }
21
- async boardChanged(workspaceId, reason, _blockId) {
21
+ async boardChanged(workspaceId, reason, _blockId, originConnectionId) {
22
22
  // `_blockId` is used by the FanOutEventPublisher decorator to resolve which workspaces a
23
23
  // shared service's change reaches; the per-workspace publish itself is block-agnostic.
24
- await this.publish(workspaceId, { type: 'board', reason, at: Date.now() });
24
+ // `originConnectionId` (when present) rides as a side-channel header so the hub can skip
25
+ // the socket that caused the change — the wire event stays identical across all clients.
26
+ await this.publish(workspaceId, { type: 'board', reason, at: Date.now() }, originConnectionId);
25
27
  }
26
28
  async bootstrapChanged(workspaceId, job, block) {
27
29
  await this.publish(workspaceId, {
@@ -52,12 +54,17 @@ export class DurableObjectEventPublisher {
52
54
  async kaizenGradingChanged(workspaceId, grading) {
53
55
  await this.publish(workspaceId, { type: 'kaizen', grading, at: Date.now() });
54
56
  }
55
- async publish(workspaceId, event) {
57
+ async publish(workspaceId, event, originConnectionId) {
56
58
  try {
57
59
  const stub = this.namespace.get(this.namespace.idFromName(workspaceId));
60
+ const headers = { 'Content-Type': 'application/json' };
61
+ // The hub drops this event for the socket whose `?cid=` matches, so the connection
62
+ // that triggered the change never refreshes off its own echo.
63
+ if (originConnectionId)
64
+ headers['X-Origin-Cid'] = originConnectionId;
58
65
  await stub.fetch('http://hub/publish', {
59
66
  method: 'POST',
60
- headers: { 'Content-Type': 'application/json' },
67
+ headers,
61
68
  body: JSON.stringify(event),
62
69
  });
63
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DurableObjectEventPublisher.js","sourceRoot":"","sources":["../../../src/infrastructure/events/DurableObjectEventPublisher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DurableObjectEventPublisher.js","sourceRoot":"","sources":["../../../src/infrastructure/events/DurableObjectEventPublisher.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/worker",
3
- "version": "0.33.4",
3
+ "version": "0.33.6",
4
4
  "description": "Reusable Cloudflare Worker library (Hono + D1) exposing the Agent Architecture Board core: the `createApp()` Hono factory, the default fetch/scheduled/queue handler, and the Durable Object + Workflow classes. Deployments (see deploy/backend) supply the wrangler.toml + config and re-export these.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -42,19 +42,19 @@
42
42
  "pino": "^10.3.1",
43
43
  "valibot": "^1.4.1",
44
44
  "workers-ai-provider": "^3.2.0",
45
- "@cat-factory/agents": "0.21.3",
46
- "@cat-factory/consensus": "0.7.61",
45
+ "@cat-factory/agents": "0.21.4",
46
+ "@cat-factory/consensus": "0.7.62",
47
47
  "@cat-factory/contracts": "0.43.1",
48
- "@cat-factory/gates": "0.2.13",
49
- "@cat-factory/gitlab": "0.1.4",
50
- "@cat-factory/integrations": "0.26.2",
51
- "@cat-factory/kernel": "0.45.2",
52
- "@cat-factory/observability-langfuse": "0.7.57",
53
- "@cat-factory/orchestration": "0.36.2",
48
+ "@cat-factory/gates": "0.2.14",
49
+ "@cat-factory/gitlab": "0.1.5",
50
+ "@cat-factory/integrations": "0.26.3",
51
+ "@cat-factory/kernel": "0.45.3",
52
+ "@cat-factory/observability-langfuse": "0.7.58",
53
+ "@cat-factory/orchestration": "0.36.3",
54
54
  "@cat-factory/prompt-fragments": "0.8.1",
55
- "@cat-factory/provider-cloudflare": "0.7.61",
56
- "@cat-factory/server": "0.39.4",
57
- "@cat-factory/spend": "0.10.18"
55
+ "@cat-factory/provider-cloudflare": "0.7.62",
56
+ "@cat-factory/server": "0.39.6",
57
+ "@cat-factory/spend": "0.10.19"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@cloudflare/vitest-pool-workers": "^0.16.19",
@@ -62,7 +62,7 @@
62
62
  "typescript": "7.0.1-rc",
63
63
  "vitest": "^4.1.9",
64
64
  "wrangler": "^4.104.0",
65
- "@cat-factory/conformance": "0.9.11"
65
+ "@cat-factory/conformance": "0.9.12"
66
66
  },
67
67
  "scripts": {
68
68
  "build": "tsc -b tsconfig.build.json",