@intentic/sandbox-contract 1.252.0 → 1.253.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.
@@ -27,10 +27,11 @@ export interface PeerDialSpec<S extends SocketLike> {
27
27
  readonly log: (message: string) => void;
28
28
  readonly revoked: () => void;
29
29
  }
30
+ export type PeerLinkState = "open" | "connecting" | "closed";
30
31
  export interface PeerLink {
31
32
  readonly done: Promise<void>;
32
33
  readonly stop: (reason?: string) => void;
33
- readonly state: () => "open" | "connecting" | "closed";
34
+ readonly state: () => PeerLinkState;
34
35
  }
35
36
  export declare const dialPeer: <S extends SocketLike>(spec: PeerDialSpec<S>) => PeerLink;
36
37
  //# sourceMappingURL=peer-dial.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"peer-dial.d.ts","sourceRoot":"","sources":["../../src/protocol/peer-dial.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB;aAAK,OAAO,EAAE,IAAK;aAAE,KAAK,EAAE,KAAM;aAAE,QAAQ,EAAE,KAAM;CAAW,CAAC;AAc9F,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,iBAAiB,gBAAiB,MAAM,KAAG,MAAoD,CAAC;AAS7G,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAI5B,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5H,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,UAAU;IAG9C,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC;QAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAE5G,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjF,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAErC,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,CAAC;IAKhE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,QAAQ;IAErB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC,QAAQ,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAC;CAC1D;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,UAAU,QAAQ,YAAY,CAAC,CAAC,CAAC,KAAG,QA2ItE,CAAC"}
1
+ {"version":3,"file":"peer-dial.d.ts","sourceRoot":"","sources":["../../src/protocol/peer-dial.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB;aAAK,OAAO,EAAE,IAAK;aAAE,KAAK,EAAE,KAAM;aAAE,QAAQ,EAAE,KAAM;CAAW,CAAC;AA4B9F,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,iBAAiB,gBAAiB,MAAM,KAAG,MAAoD,CAAC;AAS7G,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAI5B,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5H,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,UAAU;IAG9C,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC;QAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAE5G,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjF,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAErC,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,CAAC;IAKhE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAChC;AAKD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE7D,MAAM,WAAW,QAAQ;IAErB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,aAAa,CAAC;CACvC;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,UAAU,QAAQ,YAAY,CAAC,CAAC,CAAC,KAAG,QAiLtE,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export const PEER_LINK_BACKOFF = { floorMs: 1_000, capMs: 30_000, stableMs: 60_000 };
2
+ const LOUD_ATTEMPTS = 3;
3
+ const QUIET_LOG_MS = 10 * 60_000;
2
4
  export const PEER_LINK_SILENCE_HEARTBEATS = 3;
3
5
  export const peerLinkSilenceMs = (heartbeatMs) => heartbeatMs * PEER_LINK_SILENCE_HEARTBEATS;
4
6
  const UNAUTHORIZED = 1008;
@@ -13,6 +15,24 @@ export const dialPeer = (spec) => {
13
15
  const done = new Promise((resolve) => {
14
16
  resolveDone = resolve;
15
17
  });
18
+ let failures = 0;
19
+ let quietSince = 0;
20
+ const complain = (said, delay) => {
21
+ const every = `retrying every ${Math.round(delay / 1000)}s`;
22
+ if (failures <= LOUD_ATTEMPTS) {
23
+ spec.log(`${said}; reconnecting in ${Math.round(delay / 1000)}s`);
24
+ return;
25
+ }
26
+ if (failures === LOUD_ATTEMPTS + 1) {
27
+ quietSince = Date.now();
28
+ spec.log(`${said}; still nothing after ${failures} attempts — ${every}, and saying so at most every ${Math.round(QUIET_LOG_MS / 60_000)} minutes from here`);
29
+ return;
30
+ }
31
+ if (Date.now() - quietSince >= QUIET_LOG_MS) {
32
+ quietSince = Date.now();
33
+ spec.log(`${said}; ${failures} failed attempts, ${every}`);
34
+ }
35
+ };
16
36
  const open = async () => {
17
37
  waiting = true;
18
38
  const attempt = await spec.open(stopping.signal);
@@ -52,7 +72,8 @@ export const dialPeer = (spec) => {
52
72
  }
53
73
  const delay = spec.backoff.next(openedAt === undefined ? 0 : Date.now() - openedAt);
54
74
  openedAt = undefined;
55
- spec.log(`${said}; reconnecting in ${Math.round(delay / 1000)}s`);
75
+ failures += 1;
76
+ complain(said, delay);
56
77
  waiting = true;
57
78
  setTimeout(() => void open(), delay);
58
79
  };
@@ -70,6 +91,8 @@ export const dialPeer = (spec) => {
70
91
  return;
71
92
  }
72
93
  openedAt = Date.now();
94
+ failures = 0;
95
+ quietSince = 0;
73
96
  arm();
74
97
  spec.attach(ws);
75
98
  const send = (hello) => {
@@ -100,7 +123,11 @@ export const dialPeer = (spec) => {
100
123
  }
101
124
  drop(`disconnected (${event.code ?? "no code"})`);
102
125
  });
103
- ws.addEventListener("error", () => spec.log("connection error"));
126
+ ws.addEventListener("error", () => {
127
+ if (failures < LOUD_ATTEMPTS) {
128
+ spec.log("connection error");
129
+ }
130
+ });
104
131
  };
105
132
  void open();
106
133
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"peer-dial.js","sourceRoot":"","sources":["../../src/protocol/peer-dial.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"peer-dial.js","sourceRoot":"","sources":["../../src/protocol/peer-dial.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAW,CAAC;AAa9F,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC;AAcjC,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,WAAmB,EAAU,EAAE,CAAC,WAAW,GAAG,4BAA4B,CAAC;AAG7G,MAAM,YAAY,GAAG,IAAI,CAAC;AAG1B,MAAM,IAAI,GAAG,CAAC,CAAC;AA6Cf,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAuB,IAAqB,EAAY,EAAE;IAC9E,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,IAAI,MAAqB,CAAC;IAC1B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,QAA4B,CAAC;IAGjC,IAAI,cAAc,GAAe,GAAG,EAAE,CAAC,SAAS,CAAC;IACjD,IAAI,WAAW,GAAe,GAAG,EAAE,CAAC,SAAS,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACvC,WAAW,GAAG,OAAO,CAAC;IAC1B,CAAC,CAAC,CAAC;IAGH,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,UAAU,GAAG,CAAC,CAAC;IAKnB,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,KAAa,EAAQ,EAAE;QACnD,MAAM,KAAK,GAAG,kBAAkB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QAC5D,IAAI,QAAQ,IAAI,aAAa,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,qBAAqB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAClE,OAAO;QACX,CAAC;QACD,IAAI,QAAQ,KAAK,aAAa,GAAG,CAAC,EAAE,CAAC;YACjC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CACJ,GAAG,IAAI,yBAAyB,QAAQ,eAAe,KAAK,iCAAiC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,oBAAoB,CACrJ,CAAC;YACF,OAAO;QACX,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,IAAI,YAAY,EAAE,CAAC;YAC1C,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,QAAQ,qBAAqB,KAAK,EAAE,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;QACnC,OAAO,GAAG,IAAI,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,GAAG,KAAK,CAAC;QAEhB,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACxC,OAAO;QACX,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,WAAW,EAAE,CAAC;YACd,OAAO;QACX,CAAC;QACD,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAC1B,MAAM,GAAG,EAAE,CAAC;QAEZ,IAAI,QAAmD,CAAC;QACxD,MAAM,MAAM,GAAG,GAAS,EAAE;YACtB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzB,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACvB,QAAQ,GAAG,SAAS,CAAC;YACzB,CAAC;QACL,CAAC,CAAC;QACF,cAAc,GAAG,MAAM,CAAC;QAKxB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,IAAI,GAAG,CAAC,IAAY,EAAQ,EAAE;YAChC,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO;YACX,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,EAAE,CAAC;YACT,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;gBAChB,MAAM,GAAG,SAAS,CAAC;YACvB,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC1B,WAAW,EAAE,CAAC;gBACd,OAAO;YACX,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;YACpF,QAAQ,GAAG,SAAS,CAAC;YACrB,QAAQ,IAAI,CAAC,CAAC;YACd,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC;YACf,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,MAAM,GAAG,GAAG,GAAS,EAAE;YACnB,MAAM,EAAE,CAAC;YACT,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;gBAIvB,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;gBAC/B,IAAI,CAAC,qBAAqB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACpE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC,CAAC;QAGF,GAAG,EAAE,CAAC;QAEN,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAEpC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;YAC7B,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO;YACX,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAGtB,QAAQ,GAAG,CAAC,CAAC;YACb,UAAU,GAAG,CAAC,CAAC;YACf,GAAG,EAAE,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,CAAC,KAA8B,EAAQ,EAAE;gBAClD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC7B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACL,CAAC,CAAC;YAEF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;gBAC3B,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAInC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,EAAE,CAAC;gBACT,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;oBAChB,MAAM,GAAG,SAAS,CAAC;gBACvB,CAAC;gBACD,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACjB,WAAW,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,OAAO;YACX,CAAC;YACD,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAMH,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC9B,IAAI,QAAQ,GAAG,aAAa,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACjC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,KAAK,IAAI,EAAE,CAAC;IAEZ,OAAO;QACH,IAAI;QACJ,IAAI,EAAE,CAAC,MAAM,GAAG,UAAU,EAAE,EAAE;YAC1B,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,GAAG,KAAK,CAAC;YAChB,cAAc,EAAE,CAAC;YAEjB,MAAM,IAAI,GAAG,MAAM,CAAC;YACpB,MAAM,GAAG,SAAS,CAAC;YACnB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1B,WAAW,EAAE,CAAC;QAClB,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;KAClH,CAAC;AACN,CAAC,CAAC"}
@@ -121,6 +121,10 @@ export declare const ArrivalReportSchema: z.ZodObject<{
121
121
  subject: z.ZodString;
122
122
  detail: z.ZodString;
123
123
  }, z.core.$strip>>;
124
+ presentation: z.ZodOptional<z.ZodObject<{
125
+ name: z.ZodOptional<z.ZodString>;
126
+ image: z.ZodOptional<z.ZodString>;
127
+ }, z.core.$strip>>;
124
128
  }, z.core.$strip>;
125
129
  export type ArrivalReport = z.infer<typeof ArrivalReportSchema>;
126
130
  export declare const ArrivalHostSchema: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"arrival.d.ts","sourceRoot":"","sources":["../../src/state/arrival.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,mBAAmB;;;;;EAAyD,CAAC;AAC1F,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,qBAAqB;;;EAAiC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAIpE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAqB7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAK9D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;iBAa5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAa5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,kBAAkB;;;;iBAM7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAM9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAIhE,eAAO,MAAM,iBAAiB;;;;;;;;iBAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,eAAO,MAAM,kBAAkB;;;;;;;;;;iBAAkD,CAAC;AAGlF,eAAO,MAAM,iBAAiB;;iBAAwC,CAAC;AACvE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"arrival.d.ts","sourceRoot":"","sources":["../../src/state/arrival.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,mBAAmB;;;;;EAAyD,CAAC;AAC1F,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,qBAAqB;;;EAAiC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAIpE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAqB7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAK9D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;iBAa5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAa5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,kBAAkB;;;;iBAM7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAU9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAIhE,eAAO,MAAM,iBAAiB;;;;;;;;iBAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,eAAO,MAAM,kBAAkB;;;;;;;;;;iBAAkD,CAAC;AAGlF,eAAO,MAAM,iBAAiB;;iBAAwC,CAAC;AACvE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -44,6 +44,7 @@ export const ArrivalReportSchema = z.object({
44
44
  failed: z.array(z.object({ id: z.string(), label: z.string(), error: z.string() })),
45
45
  refused: z.array(z.string()),
46
46
  needsAction: z.array(NeedsActionSchema),
47
+ presentation: z.object({ name: z.string().optional(), image: z.string().optional() }).optional(),
47
48
  });
48
49
  export const ArrivalHostSchema = z.object({
49
50
  id: z.string(),
@@ -1 +1 @@
1
- {"version":3,"file":"arrival.js","sourceRoot":"","sources":["../../src/state/arrival.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arrival.js","sourceRoot":"","sources":["../../src/state/arrival.ts"],"names":[],"mappings":"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"}
@@ -538,6 +538,10 @@ export declare const BundleManifestSchema: z.ZodObject<{
538
538
  sandbox: z.ZodOptional<z.ZodObject<{
539
539
  name: z.ZodString;
540
540
  }, z.core.$strip>>;
541
+ presentation: z.ZodOptional<z.ZodObject<{
542
+ name: z.ZodOptional<z.ZodString>;
543
+ image: z.ZodOptional<z.ZodString>;
544
+ }, z.core.$strip>>;
541
545
  createdAt: z.ZodNumber;
542
546
  secrets: z.ZodBoolean;
543
547
  repos: z.ZodArray<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/state/definition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/state/definition.ts"],"names":[],"mappings":"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"}
@@ -62,6 +62,12 @@ export const WorkspaceRemoteSchema = z.object({
62
62
  export const BundleManifestSchema = z.object({
63
63
  version: z.literal(3),
64
64
  sandbox: z.object({ name: z.string() }).optional(),
65
+ presentation: z
66
+ .object({
67
+ name: z.string().optional(),
68
+ image: z.string().optional(),
69
+ })
70
+ .optional(),
65
71
  createdAt: z.number(),
66
72
  secrets: z.boolean(),
67
73
  repos: z.array(z.string()),
@@ -1 +1 @@
1
- {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/state/definition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/state/definition.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentic/sandbox-contract",
3
- "version": "1.252.0",
3
+ "version": "1.253.0",
4
4
  "description": "oRPC wire contract for the intentic sandbox daemon, shared by the daemon and its browser client",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -185,9 +185,9 @@
185
185
  }
186
186
  },
187
187
  "dependencies": {
188
- "@intentic/constants": "1.252.0",
189
- "@intentic/extension-manifest": "1.252.0",
190
- "@intentic/registry": "1.252.0",
188
+ "@intentic/constants": "1.253.0",
189
+ "@intentic/extension-manifest": "1.253.0",
190
+ "@intentic/registry": "1.253.0",
191
191
  "@orpc/contract": "1.14.13",
192
192
  "tslib": "2.8.1",
193
193
  "zod": "4.5.4"
@@ -35,6 +35,10 @@ class FakeSocket implements SocketLike {
35
35
  says(): void {
36
36
  this.emit("message");
37
37
  }
38
+ // What a socket that cannot reach its far end emits before it closes: no code, no reason, just a fault.
39
+ errors(): void {
40
+ this.emit("error");
41
+ }
38
42
  private emit(type: string, code?: number): void {
39
43
  for (const listener of this.listeners.get(type) ?? []) {
40
44
  listener(code === undefined ? {} : { code });
@@ -57,7 +61,7 @@ const ladder = (delay = 1_000) => {
57
61
  };
58
62
  };
59
63
 
60
- const dialling = () => {
64
+ const dialling = (delay?: number) => {
61
65
  const sockets: FakeSocket[] = [];
62
66
  const attached: FakeSocket[] = [];
63
67
  const said: string[] = [];
@@ -70,7 +74,7 @@ const dialling = () => {
70
74
  },
71
75
  hello: () => ({ type: "hello", token: "iht_test", version: "1.0.0" }),
72
76
  attach: (socket) => void attached.push(socket),
73
- backoff: ladder(),
77
+ backoff: ladder(delay),
74
78
  silenceMs: SILENCE_MS,
75
79
  log: (message) => void said.push(message),
76
80
  revoked,
@@ -153,6 +157,73 @@ test("a socket that goes silent is abandoned and redialled, though no close ever
153
157
  }
154
158
  });
155
159
 
160
+ /* THE FAR END THAT IS NEVER COMING BACK, which is not a failure the loop can fix and not one it may narrate
161
+ * forever: a sandbox deleted, a tunnel repointed, a machine left on for a week. Every attempt here errors and
162
+ * closes without ever opening, exactly as a laptop's agent did 1,992 times into a 2.3 MB log. What is asserted
163
+ * is BOTH halves: the log stops repeating, and the dialling does not slow down to achieve it. */
164
+ test("a far end that never answers is reported a few times, then retried quietly at the same cadence", async () => {
165
+ vi.useFakeTimers();
166
+ try {
167
+ const { link, sockets, said } = dialling(60_000);
168
+ for (let attempt = 1; attempt <= 20; attempt += 1) {
169
+ // oxlint-disable-next-line eslint/no-await-in-loop -- one attempt after another is the thing under test
170
+ await vi.waitFor(() => expect(sockets).toHaveLength(attempt));
171
+ sockets.at(-1)?.errors();
172
+ sockets.at(-1)?.drops(1006);
173
+ // oxlint-disable-next-line eslint/no-await-in-loop -- the ladder's own wait, serial by construction
174
+ await vi.advanceTimersByTimeAsync(60_000);
175
+ }
176
+
177
+ // Twenty minutes of a dead link: eight lines, the last of them a count rather than a repetition.
178
+ expect(said).toEqual([
179
+ "connection error",
180
+ "disconnected (1006); reconnecting in 60s",
181
+ "connection error",
182
+ "disconnected (1006); reconnecting in 60s",
183
+ "connection error",
184
+ "disconnected (1006); reconnecting in 60s",
185
+ expect.stringContaining("still nothing after 4 attempts"),
186
+ expect.stringContaining("14 failed attempts"),
187
+ ]);
188
+ // The retries themselves are untouched: one dial per ladder delay, still going, plus the one now armed.
189
+ await vi.waitFor(() => expect(sockets).toHaveLength(21));
190
+
191
+ link.stop();
192
+ await link.done;
193
+ } finally {
194
+ vi.useRealTimers();
195
+ }
196
+ });
197
+
198
+ // Quiet is a property of the current outage, not of the link: whatever it hid, the next one starts from nothing.
199
+ test("a link that comes back is loud again about the outage after it", async () => {
200
+ vi.useFakeTimers();
201
+ try {
202
+ const { link, sockets, said } = dialling();
203
+ for (let attempt = 1; attempt <= 5; attempt += 1) {
204
+ // oxlint-disable-next-line eslint/no-await-in-loop -- one attempt after another is the thing under test
205
+ await vi.waitFor(() => expect(sockets).toHaveLength(attempt));
206
+ sockets.at(-1)?.drops(1006);
207
+ // oxlint-disable-next-line eslint/no-await-in-loop -- the ladder's own wait, serial by construction
208
+ await vi.advanceTimersByTimeAsync(1_000);
209
+ }
210
+ const whileQuiet = said.length;
211
+
212
+ await vi.waitFor(() => expect(sockets).toHaveLength(6));
213
+ sockets.at(-1)?.opens();
214
+ await vi.waitFor(() => expect(said.at(-1)).toBe("connected #6"));
215
+ sockets.at(-1)?.drops(1006);
216
+
217
+ expect(said.at(-1)).toBe("disconnected (1006); reconnecting in 1s");
218
+ expect(said).toHaveLength(whileQuiet + 2);
219
+
220
+ link.stop();
221
+ await link.done;
222
+ } finally {
223
+ vi.useRealTimers();
224
+ }
225
+ });
226
+
156
227
  test("a refused enrollment (1008) is never retried and is reported once", async () => {
157
228
  vi.useFakeTimers();
158
229
  try {
@@ -5,6 +5,20 @@
5
5
  // Reconnect backoff: fast floor for a restart, low cap so a reopened laptop is back within a minute.
6
6
  export const PEER_LINK_BACKOFF = { floorMs: 1_000, capMs: 30_000, stableMs: 60_000 } as const;
7
7
 
8
+ /* HOW MUCH A LINK THAT CANNOT BE REACHED IS ALLOWED TO SAY, which is a different question from how often it
9
+ * may try. At the cap above, a far end that is gone for good — a sandbox deleted, a tunnel pointed elsewhere —
10
+ * costs two lines every 30 seconds for as long as the machine is on: 5,760 a day. One laptop's agent had
11
+ * written 1,992 pairs of them, 2.3 MB, and this log is exactly where its owner had been sent to read why a
12
+ * DIFFERENT thing had failed; the answer was in there, under an hour of repetition.
13
+ *
14
+ * The cadence is not the problem and is deliberately untouched — a reopened laptop must be back within a
15
+ * minute, which is what the low cap buys. The REPETITION is. So the first few failures are reported in full,
16
+ * then the loop says so once more to mark that it is going quiet, and after that repeats itself at most once
17
+ * per QUIET_LOG_MS with the attempt count that says how long it has been trying. A link that opens resets all
18
+ * of it: every reconnect is news, and the reconnect line is what reports it. */
19
+ const LOUD_ATTEMPTS = 3;
20
+ const QUIET_LOG_MS = 10 * 60_000;
21
+
8
22
  /* HOW LONG A SOCKET MAY SAY NOTHING before this side calls the link dead, as a multiple of the door's own
9
23
  * heartbeat: the hub pings every live peer on an interval (peer-hub.ts), so a socket with nothing on it for
10
24
  * three heartbeats is not quiet, it is gone.
@@ -57,12 +71,16 @@ export interface PeerDialSpec<S extends SocketLike> {
57
71
  readonly revoked: () => void;
58
72
  }
59
73
 
74
+ // What the socket is doing right now. "connecting" covers a dial in flight and a retry waiting on the ladder:
75
+ // nobody should start another. Named, because processes that are not this one report it (a machine agent stamps
76
+ // it for `status`, which otherwise has only the link list on disk and no idea whether any of it is up).
77
+ export type PeerLinkState = "open" | "connecting" | "closed";
78
+
60
79
  export interface PeerLink {
61
80
  // Resolves when the loop is asked to stop or refused for good; never rejects, a connection error is a retry.
62
81
  readonly done: Promise<void>;
63
82
  readonly stop: (reason?: string) => void;
64
- // "connecting" covers a dial in flight and a retry waiting on the ladder: nobody should start another.
65
- readonly state: () => "open" | "connecting" | "closed";
83
+ readonly state: () => PeerLinkState;
66
84
  }
67
85
 
68
86
  export const dialPeer = <S extends SocketLike>(spec: PeerDialSpec<S>): PeerLink => {
@@ -77,6 +95,32 @@ export const dialPeer = <S extends SocketLike>(spec: PeerDialSpec<S>): PeerLink
77
95
  const done = new Promise<void>((resolve) => {
78
96
  resolveDone = resolve;
79
97
  });
98
+ // Consecutive attempts that have failed since this link was last open, and when the loop last complained out
99
+ // loud: between them they are the whole of the quiet rule above.
100
+ let failures = 0;
101
+ let quietSince = 0;
102
+
103
+ /* What ONE failed attempt is allowed to say. Three sentences rather than one repeated forever: the first few
104
+ * failures in full, then the line that marks the loop going quiet (so a reader who sees it knows the retries
105
+ * continue unlogged), then a complaint carrying the attempt count at most once per window. */
106
+ const complain = (said: string, delay: number): void => {
107
+ const every = `retrying every ${Math.round(delay / 1000)}s`;
108
+ if (failures <= LOUD_ATTEMPTS) {
109
+ spec.log(`${said}; reconnecting in ${Math.round(delay / 1000)}s`);
110
+ return;
111
+ }
112
+ if (failures === LOUD_ATTEMPTS + 1) {
113
+ quietSince = Date.now();
114
+ spec.log(
115
+ `${said}; still nothing after ${failures} attempts — ${every}, and saying so at most every ${Math.round(QUIET_LOG_MS / 60_000)} minutes from here`,
116
+ );
117
+ return;
118
+ }
119
+ if (Date.now() - quietSince >= QUIET_LOG_MS) {
120
+ quietSince = Date.now();
121
+ spec.log(`${said}; ${failures} failed attempts, ${every}`);
122
+ }
123
+ };
80
124
 
81
125
  const open = async (): Promise<void> => {
82
126
  waiting = true;
@@ -123,7 +167,8 @@ export const dialPeer = <S extends SocketLike>(spec: PeerDialSpec<S>): PeerLink
123
167
  }
124
168
  const delay = spec.backoff.next(openedAt === undefined ? 0 : Date.now() - openedAt);
125
169
  openedAt = undefined;
126
- spec.log(`${said}; reconnecting in ${Math.round(delay / 1000)}s`);
170
+ failures += 1;
171
+ complain(said, delay);
127
172
  waiting = true;
128
173
  setTimeout(() => void open(), delay);
129
174
  };
@@ -149,6 +194,10 @@ export const dialPeer = <S extends SocketLike>(spec: PeerDialSpec<S>): PeerLink
149
194
  return; // abandoned mid-connect: this socket is already closed and its replacement is on the ladder
150
195
  }
151
196
  openedAt = Date.now();
197
+ // A link that is up owes nothing to the failures behind it: the next outage is news again, and the
198
+ // "connected to …" line this open is about to log is what reports the recovery.
199
+ failures = 0;
200
+ quietSince = 0;
152
201
  arm();
153
202
  spec.attach(ws);
154
203
  const send = (hello: Record<string, unknown>): void => {
@@ -184,8 +233,15 @@ export const dialPeer = <S extends SocketLike>(spec: PeerDialSpec<S>): PeerLink
184
233
  drop(`disconnected (${event.code ?? "no code"})`);
185
234
  });
186
235
 
187
- // Always followed by a close event that owns the retry; this only records a cause the close code can't carry.
188
- ws.addEventListener("error", () => spec.log("connection error"));
236
+ /* Always followed by a close event that owns the retry; this only records a cause the close code can't
237
+ * carry, so it is silenced with the rest once the loop goes quiet — it is half of every repeated pair in
238
+ * a dead link's log, and it says nothing the drop line beside it does not. The attempt that finally
239
+ * reconnects is loud again, this line included. */
240
+ ws.addEventListener("error", () => {
241
+ if (failures < LOUD_ATTEMPTS) {
242
+ spec.log("connection error");
243
+ }
244
+ });
189
245
  };
190
246
 
191
247
  void open();
@@ -89,6 +89,10 @@ export const ArrivalReportSchema = z.object({
89
89
  failed: z.array(z.object({ id: z.string(), label: z.string(), error: z.string() })),
90
90
  refused: z.array(z.string()),
91
91
  needsAction: z.array(NeedsActionSchema),
92
+ // The source's presentation, when the artifact carried it: what its owner called it and its switcher logo. The
93
+ // daemon cannot apply these itself — they are platform rows, and it holds no owner session — so they are handed
94
+ // back for the caller that does. Absent for every artifact that carries none.
95
+ presentation: z.object({ name: z.string().optional(), image: z.string().optional() }).optional(),
92
96
  });
93
97
  export type ArrivalReport = z.infer<typeof ArrivalReportSchema>;
94
98
 
@@ -128,8 +128,24 @@ export type WorkspaceRemote = z.infer<typeof WorkspaceRemoteSchema>;
128
128
  export const BundleManifestSchema = z.object({
129
129
  // Bumped when the layout changes in a way an older daemon would misread; refused rather than guessed at.
130
130
  version: z.literal(3),
131
- // Where it came from, for the report's first line; never used to authorize anything.
131
+ // Where it came from, for the report's first line; never used to authorize anything. The CONTAINER's name
132
+ // (SANDBOX_NAME, `intentic-sandbox-sandbox-<id>`), so the block is absent on a headless daemon that has none.
132
133
  sandbox: z.object({ name: z.string() }).optional(),
134
+ // How the source presented itself: what its owner called it and the logo the switcher draws. Its own key rather
135
+ // than two more fields on `sandbox`, because these are platform rows (`sandbox.name` / `sandbox.image`) held
136
+ // nowhere under /work or /history, and either can be known when the container name is not — hanging them off
137
+ // `sandbox` would have made a sandbox's presentation ride on an unrelated string being set, and loosening that
138
+ // block's `name` to allow it would have shrunk a shipped surface. Without this a move landed a workspace called
139
+ // "workspace" wearing a "W" monogram, the source's identity left behind. A bundle is the only artifact that
140
+ // crosses both, so it carries them and the report hands them straight back, in this same shape, for the caller
141
+ // holding the owner session to apply.
142
+ presentation: z
143
+ .object({
144
+ name: z.string().optional(),
145
+ // A data URL, same shape and 150 KB ceiling the platform's own ImageDataUrlSchema enforces on the way in.
146
+ image: z.string().optional(),
147
+ })
148
+ .optional(),
133
149
  createdAt: z.number(),
134
150
  // The owner's export choice, used only to explain gaps; the restorer re-derives from the manifests instead.
135
151
  secrets: z.boolean(),