@tloncorp/openclaw 0.4.3 → 0.6.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.
Files changed (104) hide show
  1. package/README.md +130 -141
  2. package/dist/index.js +147 -138
  3. package/dist/index.js.map +1 -1
  4. package/dist/setup-api.js +2 -2
  5. package/dist/setup-entry.js +2 -2
  6. package/dist/setup-entry.js.map +1 -1
  7. package/dist/src/account-fields.js +7 -3
  8. package/dist/src/account-fields.js.map +1 -1
  9. package/dist/src/actions.js +73 -52
  10. package/dist/src/actions.js.map +1 -1
  11. package/dist/src/channel.js +51 -39
  12. package/dist/src/channel.js.map +1 -1
  13. package/dist/src/channel.runtime.js +61 -32
  14. package/dist/src/channel.runtime.js.map +1 -1
  15. package/dist/src/config-schema.js +24 -4
  16. package/dist/src/config-schema.js.map +1 -1
  17. package/dist/src/effective-owner.js.map +1 -1
  18. package/dist/src/gateway-status.js +55 -7
  19. package/dist/src/gateway-status.js.map +1 -1
  20. package/dist/src/monitor/approval.js +71 -62
  21. package/dist/src/monitor/approval.js.map +1 -1
  22. package/dist/src/monitor/command-auth.js +7 -7
  23. package/dist/src/monitor/command-auth.js.map +1 -1
  24. package/dist/src/monitor/command-bridge.js +3 -2
  25. package/dist/src/monitor/command-bridge.js.map +1 -1
  26. package/dist/src/monitor/computing-presence.js +76 -12
  27. package/dist/src/monitor/computing-presence.js.map +1 -1
  28. package/dist/src/monitor/discovery.js +16 -9
  29. package/dist/src/monitor/discovery.js.map +1 -1
  30. package/dist/src/monitor/history.js +58 -26
  31. package/dist/src/monitor/history.js.map +1 -1
  32. package/dist/src/monitor/index.js +2771 -2483
  33. package/dist/src/monitor/index.js.map +1 -1
  34. package/dist/src/monitor/media.js +106 -78
  35. package/dist/src/monitor/media.js.map +1 -1
  36. package/dist/src/monitor/nudge-runner.js +36 -27
  37. package/dist/src/monitor/nudge-runner.js.map +1 -1
  38. package/dist/src/monitor/nudge-state.js +7 -11
  39. package/dist/src/monitor/nudge-state.js.map +1 -1
  40. package/dist/src/monitor/owner-reply-persistence.js +27 -26
  41. package/dist/src/monitor/owner-reply-persistence.js.map +1 -1
  42. package/dist/src/monitor/processed-messages.js.map +1 -1
  43. package/dist/src/monitor/settings-sync.js +1 -8
  44. package/dist/src/monitor/settings-sync.js.map +1 -1
  45. package/dist/src/monitor/utils.js +77 -71
  46. package/dist/src/monitor/utils.js.map +1 -1
  47. package/dist/src/nudge-decision.js +40 -43
  48. package/dist/src/nudge-decision.js.map +1 -1
  49. package/dist/src/nudge-messages.js +9 -9
  50. package/dist/src/nudge-scheduler.js.map +1 -1
  51. package/dist/src/owner-listen-command.js +38 -28
  52. package/dist/src/owner-listen-command.js.map +1 -1
  53. package/dist/src/pending-nudge.js.map +1 -1
  54. package/dist/src/runtime.js +10 -6
  55. package/dist/src/runtime.js.map +1 -1
  56. package/dist/src/session-roles.js +2 -1
  57. package/dist/src/session-roles.js.map +1 -1
  58. package/dist/src/settings.js +233 -102
  59. package/dist/src/settings.js.map +1 -1
  60. package/dist/src/setup-core.js +32 -32
  61. package/dist/src/setup-core.js.map +1 -1
  62. package/dist/src/setup-surface.js +19 -19
  63. package/dist/src/setup-surface.js.map +1 -1
  64. package/dist/src/shared-state.js +46 -0
  65. package/dist/src/shared-state.js.map +1 -0
  66. package/dist/src/targets.js +17 -10
  67. package/dist/src/targets.js.map +1 -1
  68. package/dist/src/telemetry.js +17 -14
  69. package/dist/src/telemetry.js.map +1 -1
  70. package/dist/src/tlon-binary.js +20 -12
  71. package/dist/src/tlon-binary.js.map +1 -1
  72. package/dist/src/tlon-tool-guard.js +5 -5
  73. package/dist/src/tool-trace.js +17 -13
  74. package/dist/src/tool-trace.js.map +1 -1
  75. package/dist/src/types.js +30 -12
  76. package/dist/src/types.js.map +1 -1
  77. package/dist/src/urbit/api-client.js +16 -12
  78. package/dist/src/urbit/api-client.js.map +1 -1
  79. package/dist/src/urbit/auth.js +9 -9
  80. package/dist/src/urbit/auth.js.map +1 -1
  81. package/dist/src/urbit/base-url.js +11 -11
  82. package/dist/src/urbit/base-url.js.map +1 -1
  83. package/dist/src/urbit/channel-ops.js +25 -19
  84. package/dist/src/urbit/channel-ops.js.map +1 -1
  85. package/dist/src/urbit/context.js +8 -8
  86. package/dist/src/urbit/context.js.map +1 -1
  87. package/dist/src/urbit/errors.js +33 -7
  88. package/dist/src/urbit/errors.js.map +1 -1
  89. package/dist/src/urbit/fetch.js +3 -3
  90. package/dist/src/urbit/fetch.js.map +1 -1
  91. package/dist/src/urbit/http-poke.js +10 -10
  92. package/dist/src/urbit/http-poke.js.map +1 -1
  93. package/dist/src/urbit/send.js +27 -23
  94. package/dist/src/urbit/send.js.map +1 -1
  95. package/dist/src/urbit/sse-client.js +45 -41
  96. package/dist/src/urbit/sse-client.js.map +1 -1
  97. package/dist/src/urbit/story.js +31 -30
  98. package/dist/src/urbit/story.js.map +1 -1
  99. package/dist/src/urbit/upload.js +8 -8
  100. package/dist/src/urbit/upload.js.map +1 -1
  101. package/dist/src/version.generated.js +2 -1
  102. package/dist/src/version.generated.js.map +1 -1
  103. package/openclaw.plugin.json +37 -0
  104. package/package.json +35 -15
@@ -1,4 +1,13 @@
1
- import { randomUUID } from "node:crypto";
1
+ import { randomUUID } from 'node:crypto';
2
+ /**
3
+ * Approval system for managing DM, channel mention, and group invite approvals.
4
+ *
5
+ * When an unknown ship tries to interact with the bot, the owner receives
6
+ * a notification and can approve or deny the request via slash commands
7
+ * (/allow, /reject, /ban).
8
+ */
9
+ import { APPROVAL_TTL_MS } from '../settings.js';
10
+ export { APPROVAL_TTL_MS };
2
11
  function displayChannel(nest, ctx) {
3
12
  const name = ctx?.channelNames?.get(nest);
4
13
  return name ? `${name} (${nest})` : nest;
@@ -13,12 +22,12 @@ function displayGroup(flag, ctx, titleOverride) {
13
22
  /** Map a reaction emoji to an approval action. Returns undefined for unrecognized emoji. */
14
23
  export function emojiToApprovalAction(emoji) {
15
24
  switch (emoji) {
16
- case "👍":
17
- return "approve";
18
- case "👎":
19
- return "deny";
20
- case "🛑":
21
- return "block";
25
+ case '👍':
26
+ return 'approve';
27
+ case '👎':
28
+ return 'deny';
29
+ case '🛑':
30
+ return 'block';
22
31
  default:
23
32
  return undefined;
24
33
  }
@@ -33,18 +42,16 @@ export function emojiToApprovalAction(emoji) {
33
42
  */
34
43
  export function normalizeNotificationId(id) {
35
44
  // Strip ship prefix: "~zod/170.141..." → "170.141..."
36
- if (id.includes("/") && id.startsWith("~")) {
37
- id = id.slice(id.indexOf("/") + 1);
45
+ if (id.includes('/') && id.startsWith('~')) {
46
+ id = id.slice(id.indexOf('/') + 1);
38
47
  }
39
48
  // Strip dots: "170.141.184..." → "170141184..."
40
- return id.replace(/\./g, "");
49
+ return id.replace(/\./g, '');
41
50
  }
42
51
  // ============================================================================
43
52
  // Approval Expiration
44
53
  // ============================================================================
45
- /** Pending approvals expire after 48 hours. */
46
- export const APPROVAL_TTL_MS = 48 * 60 * 60 * 1000;
47
- /** Check if a pending approval has expired. */
54
+ /** Check if a pending approval has expired (TTL defined in settings.ts). */
48
55
  export function isExpired(approval) {
49
56
  return Date.now() - approval.timestamp > APPROVAL_TTL_MS;
50
57
  }
@@ -94,41 +101,41 @@ function truncate(text, maxLength) {
94
101
  if (text.length <= maxLength) {
95
102
  return text;
96
103
  }
97
- return text.substring(0, maxLength - 3) + "...";
104
+ return text.substring(0, maxLength - 3) + '...';
98
105
  }
99
106
  // ============================================================================
100
107
  // Approval Request Formatting
101
108
  // ============================================================================
102
- const REACTION_HINT = "React to this message: 👍 approve · 👎 deny · 🛑 block";
109
+ const REACTION_HINT = 'React to this message: 👍 approve · 👎 deny · 🛑 block';
103
110
  function actionHintsDm(id) {
104
111
  return [
105
112
  REACTION_HINT,
106
- "",
107
- "Or use a slash command:",
113
+ '',
114
+ 'Or use a slash command:',
108
115
  ` /allow ${id} — allow this ship to DM`,
109
116
  ` /reject ${id} — decline (they can try again)`,
110
117
  ` /ban ${id} — block this ship`,
111
- ].join("\n");
118
+ ].join('\n');
112
119
  }
113
120
  function actionHintsChannel(id) {
114
121
  return [
115
122
  REACTION_HINT,
116
- "",
117
- "Or use a slash command:",
123
+ '',
124
+ 'Or use a slash command:',
118
125
  ` /allow ${id} — allow this ship in this channel`,
119
126
  ` /reject ${id} — decline (they can try again)`,
120
127
  ` /ban ${id} — block this ship`,
121
- ].join("\n");
128
+ ].join('\n');
122
129
  }
123
130
  function actionHintsGroup(id) {
124
131
  return [
125
132
  REACTION_HINT,
126
- "",
127
- "Or use a slash command:",
133
+ '',
134
+ 'Or use a slash command:',
128
135
  ` /allow ${id} — join this group`,
129
136
  ` /reject ${id} — decline the invite`,
130
137
  ` /ban ${id} — block this ship`,
131
- ].join("\n");
138
+ ].join('\n');
132
139
  }
133
140
  /**
134
141
  * Format a notification message for the owner about a pending approval.
@@ -136,28 +143,28 @@ function actionHintsGroup(id) {
136
143
  export function formatApprovalRequest(approval, ctx) {
137
144
  const preview = approval.messagePreview
138
145
  ? `\n"${truncate(approval.messagePreview, 100)}"`
139
- : "";
146
+ : '';
140
147
  switch (approval.type) {
141
- case "dm":
148
+ case 'dm':
142
149
  return [
143
150
  `DM request from ${approval.requestingShip}`,
144
151
  preview,
145
- "",
152
+ '',
146
153
  actionHintsDm(approval.id),
147
- ].join("\n");
148
- case "channel":
154
+ ].join('\n');
155
+ case 'channel':
149
156
  return [
150
- `${approval.requestingShip} mentioned the bot in ${displayChannel(approval.channelNest ?? "", ctx)}`,
157
+ `${approval.requestingShip} mentioned the bot in ${displayChannel(approval.channelNest ?? '', ctx)}`,
151
158
  preview,
152
- "",
159
+ '',
153
160
  actionHintsChannel(approval.id),
154
- ].join("\n");
155
- case "group":
161
+ ].join('\n');
162
+ case 'group':
156
163
  return [
157
- `Group invite from ${approval.requestingShip} to join ${displayGroup(approval.groupFlag ?? "", ctx, approval.groupTitle)}`,
158
- "",
164
+ `Group invite from ${approval.requestingShip} to join ${displayGroup(approval.groupFlag ?? '', ctx, approval.groupTitle)}`,
165
+ '',
159
166
  actionHintsGroup(approval.id),
160
- ].join("\n");
167
+ ].join('\n');
161
168
  }
162
169
  }
163
170
  // ============================================================================
@@ -195,10 +202,10 @@ export function hasDuplicatePending(pendingApprovals, type, requestingShip, chan
195
202
  if (approval.type !== type || approval.requestingShip !== requestingShip) {
196
203
  return false;
197
204
  }
198
- if (type === "channel" && approval.channelNest !== channelNest) {
205
+ if (type === 'channel' && approval.channelNest !== channelNest) {
199
206
  return false;
200
207
  }
201
- if (type === "group" && approval.groupFlag !== groupFlag) {
208
+ if (type === 'group' && approval.groupFlag !== groupFlag) {
202
209
  return false;
203
210
  }
204
211
  return true;
@@ -218,25 +225,25 @@ export function removePendingApproval(pendingApprovals, id) {
218
225
  */
219
226
  export function formatApprovalConfirmation(approval, action, ctx) {
220
227
  const ship = approval.requestingShip;
221
- if (action === "block") {
228
+ if (action === 'block') {
222
229
  return `Blocked ${ship}. They will no longer be able to contact the bot.`;
223
230
  }
224
231
  switch (approval.type) {
225
- case "dm":
226
- if (action === "approve") {
232
+ case 'dm':
233
+ if (action === 'approve') {
227
234
  return `Approved DM access for ${ship}. They can now message the bot.`;
228
235
  }
229
236
  return `Denied DM request from ${ship}.`;
230
- case "channel": {
231
- const channel = displayChannel(approval.channelNest ?? "", ctx);
232
- if (action === "approve") {
237
+ case 'channel': {
238
+ const channel = displayChannel(approval.channelNest ?? '', ctx);
239
+ if (action === 'approve') {
233
240
  return `Approved ${ship} for ${channel}. They can now interact in this channel.`;
234
241
  }
235
242
  return `Denied ${ship} for ${channel}.`;
236
243
  }
237
- case "group": {
238
- const group = displayGroup(approval.groupFlag ?? "", ctx, approval.groupTitle);
239
- if (action === "approve") {
244
+ case 'group': {
245
+ const group = displayGroup(approval.groupFlag ?? '', ctx, approval.groupTitle);
246
+ if (action === 'approve') {
240
247
  return `Approved group invite from ${ship} to ${group}. Joining group...`;
241
248
  }
242
249
  return `Denied group invite from ${ship} to ${group}.`;
@@ -251,15 +258,15 @@ export function formatApprovalConfirmation(approval, action, ctx) {
251
258
  */
252
259
  export function formatBlockedList(ships) {
253
260
  if (ships.length === 0) {
254
- return "No ships are currently blocked.";
261
+ return 'No ships are currently blocked.';
255
262
  }
256
263
  const lines = ships.map((s) => ` ${s}`);
257
264
  return [
258
265
  `Blocked ships (${ships.length}):`,
259
266
  ...lines,
260
- "",
261
- "To unban: `/unban ~ship-name`",
262
- ].join("\n");
267
+ '',
268
+ 'To unban: `/unban ~ship-name`',
269
+ ].join('\n');
263
270
  }
264
271
  /**
265
272
  * Format the list of pending approvals for display to owner.
@@ -267,26 +274,28 @@ export function formatBlockedList(ships) {
267
274
  export function formatPendingList(approvals, ctx) {
268
275
  const active = pruneExpired(approvals);
269
276
  if (active.length === 0) {
270
- return "No pending approval requests.";
277
+ return 'No pending approval requests.';
271
278
  }
272
279
  const entries = active.map((a) => {
273
280
  const ship = a.requestingShip;
274
- const preview = a.messagePreview ? `\n "${truncate(a.messagePreview, 80)}"` : "";
281
+ const preview = a.messagePreview
282
+ ? `\n "${truncate(a.messagePreview, 80)}"`
283
+ : '';
275
284
  switch (a.type) {
276
- case "dm":
285
+ case 'dm':
277
286
  return ` #${a.id} - DM from ${ship}${preview}`;
278
- case "channel":
279
- return ` #${a.id} - Mention in ${displayChannel(a.channelNest ?? "", ctx)} by ${ship}${preview}`;
280
- case "group":
281
- return ` #${a.id} - Group invite from ${ship} to ${displayGroup(a.groupFlag ?? "", ctx, a.groupTitle)}`;
287
+ case 'channel':
288
+ return ` #${a.id} - Mention in ${displayChannel(a.channelNest ?? '', ctx)} by ${ship}${preview}`;
289
+ case 'group':
290
+ return ` #${a.id} - Group invite from ${ship} to ${displayGroup(a.groupFlag ?? '', ctx, a.groupTitle)}`;
282
291
  }
283
292
  });
284
293
  return [
285
294
  `Pending requests (${active.length}):`,
286
- "",
295
+ '',
287
296
  ...entries,
288
- "",
289
- "Use /allow, /reject, or /ban with the ID.",
290
- ].join("\n");
297
+ '',
298
+ 'Use /allow, /reject, or /ban with the ID.',
299
+ ].join('\n');
291
300
  }
292
301
  //# sourceMappingURL=approval.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../src/monitor/approval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../src/monitor/approval.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@
4
4
  * Pure module with no OpenClaw SDK dependency. Accepts a minimal
5
5
  * CommandContextLike instead of the full PluginCommandContext.
6
6
  */
7
- import { getBridge, getAllBridges } from "./command-bridge.js";
8
- import { normalizeShip } from "../targets.js";
7
+ import { normalizeShip } from '../targets.js';
8
+ import { getAllBridges, getBridge, } from './command-bridge.js';
9
9
  /**
10
10
  * Resolve the correct bridge for a command invocation and verify ownership.
11
11
  *
@@ -25,7 +25,7 @@ export function resolveBridgeForCommand(ctx) {
25
25
  // 2. Fallback: enumerate all bridges
26
26
  const all = getAllBridges();
27
27
  if (all.size === 0)
28
- return { error: "Bot is not connected yet." };
28
+ return { error: 'Bot is not connected yet.' };
29
29
  if (all.size === 1) {
30
30
  const [, only] = [...all.entries()][0];
31
31
  return checkOwner(ctx, only);
@@ -40,7 +40,7 @@ export function resolveBridgeForCommand(ctx) {
40
40
  return checkOwner(ctx, matches[0]);
41
41
  }
42
42
  return {
43
- error: "Multiple accounts connected. Run this command from the owner DM for the target account.",
43
+ error: 'Multiple accounts connected. Run this command from the owner DM for the target account.',
44
44
  };
45
45
  }
46
46
  /**
@@ -49,13 +49,13 @@ export function resolveBridgeForCommand(ctx) {
49
49
  */
50
50
  export function checkOwner(ctx, bridge) {
51
51
  if (!bridge.ownerShip) {
52
- return { error: "Owner ship not configured." };
52
+ return { error: 'Owner ship not configured.' };
53
53
  }
54
54
  if (!ctx.senderId) {
55
- return { error: "Cannot identify sender." };
55
+ return { error: 'Cannot identify sender.' };
56
56
  }
57
57
  if (normalizeShip(ctx.senderId) !== bridge.ownerShip) {
58
- return { error: "Only the bot owner can use this command." };
58
+ return { error: 'Only the bot owner can use this command.' };
59
59
  }
60
60
  return { bridge };
61
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command-auth.js","sourceRoot":"","sources":["../../../src/monitor/command-auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAA8B,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAQ9C;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAAuB;IAEvB,gCAAgC;IAChC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,MAAM;YAAE,OAAO,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,qCAAqC;IACrC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;IAClE,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,iDAAiD;IACjD,qEAAqE;IACrE,wDAAwD;IACxD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC;QAC5E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO;QACL,KAAK,EAAE,yFAAyF;KACjG,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,GAAuB,EACvB,MAA6B;IAE7B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IACjD,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QACrD,OAAO,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"command-auth.js","sourceRoot":"","sources":["../../../src/monitor/command-auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAEL,aAAa,EACb,SAAS,GACV,MAAM,qBAAqB,CAAC;AAQ7B;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAAuB;IAEvB,gCAAgC;IAChC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,MAAM;YAAE,OAAO,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,qCAAqC;IACrC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;IAClE,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,iDAAiD;IACjD,qEAAqE;IACrE,wDAAwD;IACxD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC;QAC5E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO;QACL,KAAK,EACH,yFAAyF;KAC5F,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,GAAuB,EACvB,MAA6B;IAE7B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IACjD,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QACrD,OAAO,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
@@ -5,8 +5,9 @@
5
5
  * approval state (available after SSE starts). Each monitor registers a bridge
6
6
  * keyed by accountId; command handlers resolve the correct bridge at runtime.
7
7
  */
8
- const bridges = new Map();
9
- const DEFAULT_KEY = "default";
8
+ import { sharedMap } from '../shared-state.js';
9
+ const bridges = sharedMap('monitor.command-bridge.bridges');
10
+ const DEFAULT_KEY = 'default';
10
11
  export function setBridge(accountId, b) {
11
12
  bridges.set(accountId ?? DEFAULT_KEY, b);
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command-bridge.js","sourceRoot":"","sources":["../../../src/monitor/command-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiCH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiC,CAAC;AAEzD,MAAM,WAAW,GAAG,SAAS,CAAC;AAE9B,MAAM,UAAU,SAAS,CAAC,SAA6B,EAAE,CAAwB;IAC/E,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,YAAY,CAAC,SAA6B,EAAE,CAAwB;IAClF,MAAM,GAAG,GAAG,SAAS,IAAI,WAAW,CAAC;IACrC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAA6B;IACrD,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,IAAI,CAAC;AACvD,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"command-bridge.js","sourceRoot":"","sources":["../../../src/monitor/command-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAoC/C,MAAM,OAAO,GAAG,SAAS,CACvB,gCAAgC,CACjC,CAAC;AAEF,MAAM,WAAW,GAAG,SAAS,CAAC;AAE9B,MAAM,UAAU,SAAS,CACvB,SAA6B,EAC7B,CAAwB;IAExB,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,YAAY,CAC1B,SAA6B,EAC7B,CAAwB;IAExB,MAAM,GAAG,GAAG,SAAS,IAAI,WAAW,CAAC;IACrC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,SAA6B;IAE7B,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,IAAI,CAAC;AACvD,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,5 +1,17 @@
1
- import { createComputingStatus, getComputingStatusText, serializeComputingStatus, setConversationPresence, } from "@tloncorp/api";
1
+ import { clearConversationPresence, createComputingStatus, getComputingStatusText, serializeComputingStatus, setConversationPresence, } from '@tloncorp/api';
2
+ import { dr, render } from '@urbit/aura';
3
+ import { describeError } from '../urbit/errors.js';
2
4
  const DEFAULT_MIN_UPDATE_INTERVAL_MS = 1_000;
5
+ const ACTIVE_PRESENCE_TIMEOUT_SECS = 90;
6
+ const ACTIVE_PRESENCE_TIMEOUT = render('dr', dr.fromSeconds(BigInt(ACTIVE_PRESENCE_TIMEOUT_SECS)));
7
+ // Active %computing entries carry an explicit 90s ship-side timeout. Re-publish
8
+ // unchanged active state well inside that window so long healthy runs stay
9
+ // visible, while disrupted gateways still age out without a final clear poke.
10
+ const DEFAULT_MAX_PUBLISH_AGE_MS = 30_000;
11
+ // Stopped runIds remembered per conversation so a late keepalive refresh
12
+ // cannot resurrect a run that was just stopped. Capped because tombstones
13
+ // only matter for the few seconds until the keepalive loop fully stops.
14
+ const STOPPED_RUN_MEMORY = 8;
3
15
  function normalizeToolName(toolName) {
4
16
  const trimmed = toolName?.trim();
5
17
  return trimmed ? trimmed : null;
@@ -7,12 +19,20 @@ function normalizeToolName(toolName) {
7
19
  export function createComputingPresenceReporter() {
8
20
  return {
9
21
  publish: async ({ conversationId, thinking, toolNames }) => {
22
+ if (!thinking) {
23
+ await clearConversationPresence({
24
+ conversationId,
25
+ topic: 'computing',
26
+ });
27
+ return;
28
+ }
10
29
  const toolCalls = toolNames.map((toolName) => ({ toolName }));
11
30
  const status = createComputingStatus({ thinking, toolCalls });
12
31
  await setConversationPresence({
13
32
  conversationId,
14
- topic: "computing",
33
+ topic: 'computing',
15
34
  disclose: [],
35
+ timeout: ACTIVE_PRESENCE_TIMEOUT,
16
36
  display: {
17
37
  text: getComputingStatusText(status),
18
38
  blob: serializeComputingStatus({ thinking, toolCalls }),
@@ -25,11 +45,40 @@ export function createComputingPresenceTracker(params) {
25
45
  const reporter = params?.reporter ?? createComputingPresenceReporter();
26
46
  const runtime = params?.runtime;
27
47
  const minUpdateIntervalMs = Math.max(0, params?.minUpdateIntervalMs ?? DEFAULT_MIN_UPDATE_INTERVAL_MS);
48
+ const maxPublishAgeMs = Math.max(minUpdateIntervalMs, params?.maxPublishAgeMs ?? DEFAULT_MAX_PUBLISH_AGE_MS);
28
49
  const conversations = new Map();
29
50
  const lastPublishedState = new Map();
30
51
  const lastPublishedAt = new Map();
31
52
  const pendingState = new Map();
32
53
  const pendingTimers = new Map();
54
+ const stoppedRuns = new Map();
55
+ const markRunStopped = (conversationId, runId) => {
56
+ let stopped = stoppedRuns.get(conversationId);
57
+ if (!stopped) {
58
+ stopped = new Set();
59
+ stoppedRuns.set(conversationId, stopped);
60
+ }
61
+ stopped.delete(runId);
62
+ stopped.add(runId);
63
+ while (stopped.size > STOPPED_RUN_MEMORY) {
64
+ const oldest = stopped.values().next().value;
65
+ if (oldest === undefined) {
66
+ break;
67
+ }
68
+ stopped.delete(oldest);
69
+ }
70
+ };
71
+ const isRunStopped = (conversationId, runId) => stoppedRuns.get(conversationId)?.has(runId) ?? false;
72
+ const clearRunStopped = (conversationId, runId) => {
73
+ const stopped = stoppedRuns.get(conversationId);
74
+ if (!stopped) {
75
+ return;
76
+ }
77
+ stopped.delete(runId);
78
+ if (stopped.size === 0) {
79
+ stoppedRuns.delete(conversationId);
80
+ }
81
+ };
33
82
  const clonePublishedState = (state) => ({
34
83
  thinking: state.thinking,
35
84
  toolNames: [...state.toolNames],
@@ -65,6 +114,13 @@ export function createComputingPresenceTracker(params) {
65
114
  conversationId,
66
115
  ...state,
67
116
  });
117
+ if (!state.thinking) {
118
+ // idle is the terminal state; drop the records so the maps do not grow
119
+ // unboundedly across the gateway's lifetime
120
+ lastPublishedState.delete(conversationId);
121
+ lastPublishedAt.delete(conversationId);
122
+ return;
123
+ }
68
124
  lastPublishedState.set(conversationId, clonePublishedState(state));
69
125
  lastPublishedAt.set(conversationId, Date.now());
70
126
  };
@@ -81,8 +137,12 @@ export function createComputingPresenceTracker(params) {
81
137
  };
82
138
  const publishThrottled = async (conversationId, state) => {
83
139
  if (statesEqual(lastPublishedState.get(conversationId), state)) {
84
- clearPending(conversationId);
85
- return;
140
+ const publishedAt = lastPublishedAt.get(conversationId) ?? 0;
141
+ if (Date.now() - publishedAt < maxPublishAgeMs) {
142
+ clearPending(conversationId);
143
+ return;
144
+ }
145
+ // fall through: re-publish before the ship-side presence expires
86
146
  }
87
147
  if (minUpdateIntervalMs === 0) {
88
148
  await publishNow(conversationId, state);
@@ -100,7 +160,7 @@ export function createComputingPresenceTracker(params) {
100
160
  }
101
161
  const timer = setTimeout(() => {
102
162
  pendingTimers.delete(conversationId);
103
- void safelySync(conversationId, "flush", async () => {
163
+ void safelySync(conversationId, 'flush', async () => {
104
164
  await flushPending(conversationId);
105
165
  });
106
166
  }, nextAllowedAt - now);
@@ -162,14 +222,15 @@ export function createComputingPresenceTracker(params) {
162
222
  await fn();
163
223
  }
164
224
  catch (error) {
165
- runtime?.error?.(`[tlon] Failed to ${action} computing presence for ${conversationId}: ${error instanceof Error
166
- ? (error.stack ?? error.message)
167
- : String(error)}`);
225
+ runtime?.error?.(`[tlon] Failed to ${action} computing presence for ${conversationId}: ${describeError(error)}`);
168
226
  }
169
227
  };
170
228
  return {
171
229
  refreshRun: async (params) => {
172
- await safelySync(params.conversationId, "refresh", async () => {
230
+ if (isRunStopped(params.conversationId, params.runId)) {
231
+ return;
232
+ }
233
+ await safelySync(params.conversationId, 'refresh', async () => {
173
234
  ensureRun(params.conversationId, params.runId);
174
235
  await syncConversation(params.conversationId);
175
236
  });
@@ -179,7 +240,9 @@ export function createComputingPresenceTracker(params) {
179
240
  if (!toolName) {
180
241
  return;
181
242
  }
182
- await safelySync(params.conversationId, "update", async () => {
243
+ await safelySync(params.conversationId, 'update', async () => {
244
+ // real activity resumes a previously stopped run
245
+ clearRunStopped(params.conversationId, params.runId);
183
246
  const run = ensureRun(params.conversationId, params.runId);
184
247
  if (!run.toolNames.includes(toolName)) {
185
248
  run.toolNames.push(toolName);
@@ -188,7 +251,7 @@ export function createComputingPresenceTracker(params) {
188
251
  });
189
252
  },
190
253
  clearToolCalls: async (params) => {
191
- await safelySync(params.conversationId, "clear tools for", async () => {
254
+ await safelySync(params.conversationId, 'clear tools for', async () => {
192
255
  const run = getRun(params.conversationId, params.runId);
193
256
  if (!run || run.toolNames.length === 0) {
194
257
  return;
@@ -198,7 +261,8 @@ export function createComputingPresenceTracker(params) {
198
261
  });
199
262
  },
200
263
  stopRun: async (params) => {
201
- await safelySync(params.conversationId, "clear", async () => {
264
+ markRunStopped(params.conversationId, params.runId);
265
+ await safelySync(params.conversationId, 'clear', async () => {
202
266
  const runs = conversations.get(params.conversationId);
203
267
  if (!runs) {
204
268
  if (lastPublishedState.get(params.conversationId)?.thinking) {
@@ -1 +1 @@
1
- {"version":3,"file":"computing-presence.js","sourceRoot":"","sources":["../../../src/monitor/computing-presence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"computing-presence.js","sourceRoot":"","sources":["../../../src/monitor/computing-presence.ts"],"names":[],"mappings":"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"}