@saleso.innovations/bridge 0.1.18 → 0.1.19

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/README.md CHANGED
@@ -34,7 +34,7 @@ This installs the latest package, refreshes the CLI symlink, and restarts `cleos
34
34
  To pin a specific release (e.g. after a Cleos update):
35
35
 
36
36
  ```bash
37
- curl -fsSL https://amicable-elephant-407.convex.site/update-bridge.sh | bash -s -- 0.1.18
37
+ curl -fsSL https://amicable-elephant-407.convex.site/update-bridge.sh | bash -s -- 0.1.19
38
38
  ```
39
39
 
40
40
  ## Manual usage
@@ -1,4 +1,6 @@
1
1
  import { type SavedAgentCredentials } from "./credentials.js";
2
- export declare function resolveActiveConversationId(credentials?: SavedAgentCredentials): Promise<string>;
2
+ export declare function resolveActiveConversationId(credentials?: SavedAgentCredentials, options?: {
3
+ forceRefresh?: boolean;
4
+ }): Promise<string>;
3
5
  export declare function rememberConversationId(conversationId: string): void;
4
6
  //# sourceMappingURL=activeConversation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"activeConversation.d.ts","sourceRoot":"","sources":["../src/activeConversation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqC,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEjG,wBAAsB,2BAA2B,CAC/C,WAAW,CAAC,EAAE,qBAAqB,GAClC,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAEnE"}
1
+ {"version":3,"file":"activeConversation.d.ts","sourceRoot":"","sources":["../src/activeConversation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqC,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEjG,wBAAsB,2BAA2B,CAC/C,WAAW,CAAC,EAAE,qBAAqB,EACnC,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACvC,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAEnE"}
@@ -1,12 +1,12 @@
1
1
  import { convexSiteUrlFromEnv } from "./resolve.js";
2
2
  import { hashToken } from "./token.js";
3
3
  import { loadCredentials, patchCredentials } from "./credentials.js";
4
- export async function resolveActiveConversationId(credentials) {
4
+ export async function resolveActiveConversationId(credentials, options = {}) {
5
5
  const resolved = credentials ?? loadCredentials();
6
6
  if (!resolved) {
7
7
  throw new Error("No saved Cleos agent credentials");
8
8
  }
9
- if (resolved.conversationId) {
9
+ if (resolved.conversationId && !options.forceRefresh) {
10
10
  return resolved.conversationId;
11
11
  }
12
12
  const convexSiteUrl = resolved.convexSiteUrl ?? convexSiteUrlFromEnv();
package/dist/cli.js CHANGED
@@ -81,6 +81,21 @@ async function main() {
81
81
  }
82
82
  const session = await reconnectHermesAgent({ onUserMessage });
83
83
  try {
84
+ if (process.platform !== "win32") {
85
+ try {
86
+ const { execSync } = await import("node:child_process");
87
+ const active = execSync("systemctl is-active cleos-bridge.service", {
88
+ encoding: "utf8",
89
+ stdio: ["ignore", "pipe", "ignore"],
90
+ }).trim();
91
+ if (active === "active") {
92
+ console.error("Warning: cleos-bridge.service is running. Stop it first to avoid relay disconnects:\n systemctl stop cleos-bridge.service");
93
+ }
94
+ }
95
+ catch {
96
+ // systemctl unavailable or service not installed.
97
+ }
98
+ }
84
99
  const summary = await backfillCronDeliveries(session, { reset });
85
100
  console.log(JSON.stringify({ event: "cleos-bridge.cron-backfill.complete", ...summary }, null, 2));
86
101
  if (summary.remainingCount > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -193,7 +193,8 @@ async function openAgentConnection(options) {
193
193
  const resolveAck = requestId ? pendingAcks.get(requestId) : undefined;
194
194
  if (resolveAck) {
195
195
  pendingAcks.delete(requestId);
196
- resolveAck(envelope.ok === true);
196
+ const message = typeof envelope.message === "string" ? envelope.message : undefined;
197
+ resolveAck(envelope.ok === true, message);
197
198
  }
198
199
  return;
199
200
  }
@@ -262,13 +263,13 @@ async function openAgentConnection(options) {
262
263
  pendingAcks.delete(messageId);
263
264
  reject(new Error("Cron delivery ack timed out"));
264
265
  }, CRON_DELIVERY_TIMEOUT_MS);
265
- pendingAcks.set(messageId, (ok) => {
266
+ pendingAcks.set(messageId, (ok, failureMessage) => {
266
267
  clearTimeout(timer);
267
268
  if (ok) {
268
269
  resolve();
269
270
  return;
270
271
  }
271
- reject(new Error("Cron delivery persist failed"));
272
+ reject(new Error(failureMessage ?? "Cron delivery persist failed"));
272
273
  });
273
274
  sendCronResult(ws, options.agentId, messageId, content, meta);
274
275
  });
@@ -1 +1 @@
1
- {"version":3,"file":"cronWatcher.d.ts","sourceRoot":"","sources":["../src/cronWatcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,eAAO,MAAM,sBAAsB,QAA+C,CAAC;AAEnF,eAAO,MAAM,oBAAoB,QAAmD,CAAC;AASrF,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF,wBAAgB,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC,CAQhD;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAGhE;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,MAA+B,GAAG,MAAM,EAAE,CAoBtF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,GAAG,CAAC,MAAM,CAAwB,GAAG,MAAM,EAAE,CAE5F;AAsID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,IAAI,CA8BxE;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC;IAC1F,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAsBD"}
1
+ {"version":3,"file":"cronWatcher.d.ts","sourceRoot":"","sources":["../src/cronWatcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,eAAO,MAAM,sBAAsB,QAA+C,CAAC;AAEnF,eAAO,MAAM,oBAAoB,QAAmD,CAAC;AASrF,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF,wBAAgB,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC,CAQhD;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAGhE;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,MAA+B,GAAG,MAAM,EAAE,CAoBtF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,GAAG,CAAC,MAAM,CAAwB,GAAG,MAAM,EAAE,CAE5F;AA+JD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,IAAI,CA4BxE;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC;IAC1F,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAmBD"}
@@ -121,7 +121,7 @@ function sleep(ms) {
121
121
  function isRelayNotOpenError(error) {
122
122
  return error instanceof Error && error.message === "Cleos relay connection is not open";
123
123
  }
124
- async function deliverPendingFiles(session, delivered, conversationId, options) {
124
+ async function deliverPendingFiles(session, delivered, conversationRef, options) {
125
125
  const jobNames = loadHermesCronJobs();
126
126
  for (const filePath of listCronOutputFiles()) {
127
127
  const key = relativeOutputKey(filePath);
@@ -136,30 +136,49 @@ async function deliverPendingFiles(session, delivered, conversationId, options)
136
136
  writeDeliveredIndex(delivered);
137
137
  continue;
138
138
  }
139
- try {
140
- await session.deliverCronResult(content, {
141
- conversationId,
142
- jobId,
143
- jobName,
144
- runAt: parseRunAtFromFileName(filePath),
145
- });
146
- }
147
- catch (error) {
148
- if (isRelayNotOpenError(error)) {
149
- console.log(JSON.stringify({
150
- event: "cleos-bridge.cron-deferred",
139
+ let retriedAfterConversationRefresh = false;
140
+ let deliveredSuccessfully = false;
141
+ while (true) {
142
+ try {
143
+ await session.deliverCronResult(content, {
144
+ conversationId: conversationRef.value,
145
+ jobId,
146
+ jobName,
147
+ runAt: parseRunAtFromFileName(filePath),
148
+ });
149
+ deliveredSuccessfully = true;
150
+ break;
151
+ }
152
+ catch (error) {
153
+ if (isRelayNotOpenError(error)) {
154
+ console.log(JSON.stringify({
155
+ event: "cleos-bridge.cron-deferred",
156
+ file: key,
157
+ reason: "relay_not_open",
158
+ }));
159
+ return;
160
+ }
161
+ const message = error instanceof Error ? error.message : String(error);
162
+ const shouldRefreshConversation = !retriedAfterConversationRefresh
163
+ && (message.includes("Invalid relay message target")
164
+ || message.includes("Active conversation")
165
+ || message.includes("Cron delivery persist failed"));
166
+ if (shouldRefreshConversation) {
167
+ conversationRef.value = await resolveActiveConversationId(undefined, { forceRefresh: true });
168
+ retriedAfterConversationRefresh = true;
169
+ continue;
170
+ }
171
+ options.onError?.(message);
172
+ console.error(JSON.stringify({
173
+ event: "cleos-bridge.cron-delivery-failed",
151
174
  file: key,
152
- reason: "relay_not_open",
175
+ message,
176
+ conversationId: conversationRef.value,
153
177
  }));
154
- return;
178
+ break;
155
179
  }
156
- const message = error instanceof Error ? error.message : String(error);
157
- options.onError?.(message);
158
- console.error(JSON.stringify({
159
- event: "cleos-bridge.cron-delivery-failed",
160
- file: key,
161
- message,
162
- }));
180
+ }
181
+ if (!deliveredSuccessfully) {
163
182
  continue;
164
183
  }
165
184
  delivered.add(key);
@@ -182,10 +201,8 @@ export function startCronWatcher(options) {
182
201
  if (stopped)
183
202
  return;
184
203
  try {
185
- if (!conversationId) {
186
- conversationId = await resolveActiveConversationId();
187
- }
188
- await deliverPendingFiles(options.session, delivered, conversationId, options);
204
+ conversationId = await resolveActiveConversationId(undefined, { forceRefresh: !conversationId });
205
+ await deliverPendingFiles(options.session, delivered, { value: conversationId }, options);
189
206
  }
190
207
  catch (error) {
191
208
  const message = error instanceof Error ? error.message : String(error);
@@ -206,12 +223,9 @@ export async function runCronBackfill(session, resetIndex) {
206
223
  const clearedEntries = resetIndex ? clearDeliveredIndex() : 0;
207
224
  const delivered = readDeliveredIndex();
208
225
  const pendingAfterReset = listPendingCronFiles(delivered).length;
209
- let conversationId = loadCredentials()?.conversationId ?? null;
210
- if (!conversationId) {
211
- conversationId = await resolveActiveConversationId();
212
- }
226
+ let conversationId = await resolveActiveConversationId(undefined, { forceRefresh: true });
213
227
  const deliveredBefore = delivered.size;
214
- await deliverPendingFiles(session, delivered, conversationId, {});
228
+ await deliverPendingFiles(session, delivered, { value: conversationId }, {});
215
229
  const deliveredCount = delivered.size - deliveredBefore;
216
230
  const remainingCount = listPendingCronFiles(delivered).length;
217
231
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saleso.innovations/bridge",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
4
4
  "description": "Connect your Hermes agent to the Cleos iOS app via pairing code.",
5
5
  "type": "module",
6
6
  "license": "MIT",