@saleso.innovations/bridge 0.1.18 → 0.1.20
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 +1 -1
- package/dist/activeConversation.d.ts +3 -1
- package/dist/activeConversation.d.ts.map +1 -1
- package/dist/activeConversation.js +2 -2
- package/dist/cli.js +15 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -3
- package/dist/cronWatcher.d.ts.map +1 -1
- package/dist/cronWatcher.js +58 -28
- package/package.json +1 -1
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.
|
|
37
|
+
curl -fsSL https://amicable-elephant-407.convex.site/update-bridge.sh | bash -s -- 0.1.20
|
|
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
|
|
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,
|
|
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) {
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoC,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAYhG,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACrG,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,cAAc,GAAG,gBAAgB,CAAC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACnD,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,qBAAqB,EAAE,EACrC,wBAAwB,CAAC,EAAE,MAAM,KAC9B,IAAI,CAAC;IACV,MAAM,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E,CAAC;
|
|
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
|
-
|
|
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;
|
|
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;AAerF,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;AA6KD,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"}
|
package/dist/cronWatcher.js
CHANGED
|
@@ -8,6 +8,11 @@ const HERMES_CRON_JOBS_FILE = join(homedir(), ".hermes", "cron", "jobs.json");
|
|
|
8
8
|
export const DELIVERED_INDEX_PATH = join(homedir(), ".cleos", "cron-delivered.json");
|
|
9
9
|
const POLL_INTERVAL_MS = 5_000;
|
|
10
10
|
const FILE_SETTLE_MS = 750;
|
|
11
|
+
// Keep in sync with isSilentHermesCronOutput in @repo/backend-types.
|
|
12
|
+
const SILENT_CRON_OUTPUT_PATTERN = /\bstatus:\s*silent\b/i;
|
|
13
|
+
function isSilentHermesCronOutput(content) {
|
|
14
|
+
return SILENT_CRON_OUTPUT_PATTERN.test(content.trim());
|
|
15
|
+
}
|
|
11
16
|
export function readDeliveredIndex() {
|
|
12
17
|
try {
|
|
13
18
|
const parsed = JSON.parse(readFileSync(DELIVERED_INDEX_PATH, "utf8"));
|
|
@@ -121,7 +126,7 @@ function sleep(ms) {
|
|
|
121
126
|
function isRelayNotOpenError(error) {
|
|
122
127
|
return error instanceof Error && error.message === "Cleos relay connection is not open";
|
|
123
128
|
}
|
|
124
|
-
async function deliverPendingFiles(session, delivered,
|
|
129
|
+
async function deliverPendingFiles(session, delivered, conversationRef, options) {
|
|
125
130
|
const jobNames = loadHermesCronJobs();
|
|
126
131
|
for (const filePath of listCronOutputFiles()) {
|
|
127
132
|
const key = relativeOutputKey(filePath);
|
|
@@ -136,30 +141,60 @@ async function deliverPendingFiles(session, delivered, conversationId, options)
|
|
|
136
141
|
writeDeliveredIndex(delivered);
|
|
137
142
|
continue;
|
|
138
143
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
144
|
+
if (isSilentHermesCronOutput(content)) {
|
|
145
|
+
delivered.add(key);
|
|
146
|
+
writeDeliveredIndex(delivered);
|
|
147
|
+
console.log(JSON.stringify({
|
|
148
|
+
event: "cleos-bridge.cron-skipped-silent",
|
|
142
149
|
jobId,
|
|
143
150
|
jobName,
|
|
144
|
-
|
|
145
|
-
});
|
|
151
|
+
file: key,
|
|
152
|
+
}));
|
|
153
|
+
continue;
|
|
146
154
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
155
|
+
let retriedAfterConversationRefresh = false;
|
|
156
|
+
let deliveredSuccessfully = false;
|
|
157
|
+
while (true) {
|
|
158
|
+
try {
|
|
159
|
+
await session.deliverCronResult(content, {
|
|
160
|
+
conversationId: conversationRef.value,
|
|
161
|
+
jobId,
|
|
162
|
+
jobName,
|
|
163
|
+
runAt: parseRunAtFromFileName(filePath),
|
|
164
|
+
});
|
|
165
|
+
deliveredSuccessfully = true;
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
if (isRelayNotOpenError(error)) {
|
|
170
|
+
console.log(JSON.stringify({
|
|
171
|
+
event: "cleos-bridge.cron-deferred",
|
|
172
|
+
file: key,
|
|
173
|
+
reason: "relay_not_open",
|
|
174
|
+
}));
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
178
|
+
const shouldRefreshConversation = !retriedAfterConversationRefresh
|
|
179
|
+
&& (message.includes("Invalid relay message target")
|
|
180
|
+
|| message.includes("Active conversation")
|
|
181
|
+
|| message.includes("Cron delivery persist failed"));
|
|
182
|
+
if (shouldRefreshConversation) {
|
|
183
|
+
conversationRef.value = await resolveActiveConversationId(undefined, { forceRefresh: true });
|
|
184
|
+
retriedAfterConversationRefresh = true;
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
options.onError?.(message);
|
|
188
|
+
console.error(JSON.stringify({
|
|
189
|
+
event: "cleos-bridge.cron-delivery-failed",
|
|
151
190
|
file: key,
|
|
152
|
-
|
|
191
|
+
message,
|
|
192
|
+
conversationId: conversationRef.value,
|
|
153
193
|
}));
|
|
154
|
-
|
|
194
|
+
break;
|
|
155
195
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
console.error(JSON.stringify({
|
|
159
|
-
event: "cleos-bridge.cron-delivery-failed",
|
|
160
|
-
file: key,
|
|
161
|
-
message,
|
|
162
|
-
}));
|
|
196
|
+
}
|
|
197
|
+
if (!deliveredSuccessfully) {
|
|
163
198
|
continue;
|
|
164
199
|
}
|
|
165
200
|
delivered.add(key);
|
|
@@ -182,10 +217,8 @@ export function startCronWatcher(options) {
|
|
|
182
217
|
if (stopped)
|
|
183
218
|
return;
|
|
184
219
|
try {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
}
|
|
188
|
-
await deliverPendingFiles(options.session, delivered, conversationId, options);
|
|
220
|
+
conversationId = await resolveActiveConversationId(undefined, { forceRefresh: !conversationId });
|
|
221
|
+
await deliverPendingFiles(options.session, delivered, { value: conversationId }, options);
|
|
189
222
|
}
|
|
190
223
|
catch (error) {
|
|
191
224
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -206,12 +239,9 @@ export async function runCronBackfill(session, resetIndex) {
|
|
|
206
239
|
const clearedEntries = resetIndex ? clearDeliveredIndex() : 0;
|
|
207
240
|
const delivered = readDeliveredIndex();
|
|
208
241
|
const pendingAfterReset = listPendingCronFiles(delivered).length;
|
|
209
|
-
let conversationId =
|
|
210
|
-
if (!conversationId) {
|
|
211
|
-
conversationId = await resolveActiveConversationId();
|
|
212
|
-
}
|
|
242
|
+
let conversationId = await resolveActiveConversationId(undefined, { forceRefresh: true });
|
|
213
243
|
const deliveredBefore = delivered.size;
|
|
214
|
-
await deliverPendingFiles(session, delivered, conversationId, {});
|
|
244
|
+
await deliverPendingFiles(session, delivered, { value: conversationId }, {});
|
|
215
245
|
const deliveredCount = delivered.size - deliveredBefore;
|
|
216
246
|
const remainingCount = listPendingCronFiles(delivered).length;
|
|
217
247
|
return {
|