@saleso.innovations/bridge 0.1.17 → 0.1.18
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/client.d.ts +2 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +38 -5
- package/dist/cronWatcher.d.ts.map +1 -1
- package/dist/cronWatcher.js +16 -2
- package/dist/hermesForwarder.d.ts.map +1 -1
- package/dist/hermesForwarder.js +3 -2
- 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.18
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
## Manual usage
|
package/dist/client.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export type AgentFailedPayload = {
|
|
|
37
37
|
export type AgentReply = {
|
|
38
38
|
delta: (text: string, sequence: number) => void;
|
|
39
39
|
activity: (activity: AgentActivityPayload) => void;
|
|
40
|
-
complete: (text: string, sequence: number, attachments?: UserMessageAttachment[]) => void;
|
|
40
|
+
complete: (text: string, sequence: number, attachments?: UserMessageAttachment[], hermesAssistantMessageId?: string) => void;
|
|
41
41
|
failed: (failure: AgentFailedPayload) => void;
|
|
42
42
|
};
|
|
43
43
|
export type CronDeliveryMeta = {
|
|
@@ -51,7 +51,7 @@ export type ConnectResult = {
|
|
|
51
51
|
agentToken: string;
|
|
52
52
|
close: () => void;
|
|
53
53
|
closed: Promise<void>;
|
|
54
|
-
deliverCronResult: (content: string, meta: CronDeliveryMeta) => void
|
|
54
|
+
deliverCronResult: (content: string, meta: CronDeliveryMeta) => Promise<void>;
|
|
55
55
|
};
|
|
56
56
|
export declare function pairCleosAgent(options: Omit<ConnectOptions, "onUserMessage">): Promise<{
|
|
57
57
|
agentId: string;
|
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,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -29,12 +29,13 @@ function parseUserMessageAttachments(raw) {
|
|
|
29
29
|
}
|
|
30
30
|
return attachments.length > 0 ? attachments : undefined;
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
const CRON_DELIVERY_TIMEOUT_MS = 45_000;
|
|
33
|
+
function sendCronResult(ws, agentId, messageId, content, meta) {
|
|
33
34
|
ws.send(JSON.stringify({
|
|
34
35
|
type: "agent.message",
|
|
35
36
|
agentId,
|
|
36
37
|
conversationId: meta.conversationId,
|
|
37
|
-
messageId
|
|
38
|
+
messageId,
|
|
38
39
|
content,
|
|
39
40
|
sequence: 0,
|
|
40
41
|
final: true,
|
|
@@ -72,7 +73,7 @@ function createReplySender(ws, agentId, conversationId, messageId) {
|
|
|
72
73
|
sequence: activity.sequence,
|
|
73
74
|
}));
|
|
74
75
|
},
|
|
75
|
-
complete(text, sequence, attachments) {
|
|
76
|
+
complete(text, sequence, attachments, hermesAssistantMessageId) {
|
|
76
77
|
ws.send(JSON.stringify({
|
|
77
78
|
type: "agent.message",
|
|
78
79
|
agentId,
|
|
@@ -82,6 +83,9 @@ function createReplySender(ws, agentId, conversationId, messageId) {
|
|
|
82
83
|
sequence,
|
|
83
84
|
final: true,
|
|
84
85
|
...(attachments && attachments.length > 0 ? { attachments } : {}),
|
|
86
|
+
...(hermesAssistantMessageId
|
|
87
|
+
? { metadata: { hermes: { assistantMessageId: hermesAssistantMessageId } } }
|
|
88
|
+
: {}),
|
|
85
89
|
}));
|
|
86
90
|
},
|
|
87
91
|
failed(failure) {
|
|
@@ -166,6 +170,7 @@ function userSafeHermesError(error) {
|
|
|
166
170
|
}
|
|
167
171
|
async function openAgentConnection(options) {
|
|
168
172
|
const ws = new WebSocket(options.relayWsUrl);
|
|
173
|
+
const pendingAcks = new Map();
|
|
169
174
|
let closedResolve = null;
|
|
170
175
|
const closed = new Promise((resolve) => {
|
|
171
176
|
closedResolve = resolve;
|
|
@@ -183,6 +188,15 @@ async function openAgentConnection(options) {
|
|
|
183
188
|
ws.on("message", (raw) => {
|
|
184
189
|
void (async () => {
|
|
185
190
|
const envelope = JSON.parse(raw.toString());
|
|
191
|
+
if (envelope.type === "ack") {
|
|
192
|
+
const requestId = typeof envelope.requestId === "string" ? envelope.requestId : "";
|
|
193
|
+
const resolveAck = requestId ? pendingAcks.get(requestId) : undefined;
|
|
194
|
+
if (resolveAck) {
|
|
195
|
+
pendingAcks.delete(requestId);
|
|
196
|
+
resolveAck(envelope.ok === true);
|
|
197
|
+
}
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
186
200
|
if (envelope.type === "hermes.command") {
|
|
187
201
|
await handleHermesCommandEnvelope(ws, envelope, options.agentId);
|
|
188
202
|
return;
|
|
@@ -224,6 +238,10 @@ async function openAgentConnection(options) {
|
|
|
224
238
|
}, 30_000);
|
|
225
239
|
ws.on("close", () => {
|
|
226
240
|
clearInterval(heartbeat);
|
|
241
|
+
for (const [requestId, resolveAck] of pendingAcks.entries()) {
|
|
242
|
+
pendingAcks.delete(requestId);
|
|
243
|
+
resolveAck(false);
|
|
244
|
+
}
|
|
227
245
|
closedResolve?.();
|
|
228
246
|
});
|
|
229
247
|
return {
|
|
@@ -234,11 +252,26 @@ async function openAgentConnection(options) {
|
|
|
234
252
|
ws.close();
|
|
235
253
|
},
|
|
236
254
|
closed,
|
|
237
|
-
deliverCronResult(content, meta) {
|
|
255
|
+
async deliverCronResult(content, meta) {
|
|
238
256
|
if (ws.readyState !== WebSocket.OPEN) {
|
|
239
257
|
throw new Error("Cleos relay connection is not open");
|
|
240
258
|
}
|
|
241
|
-
|
|
259
|
+
const messageId = randomUUID();
|
|
260
|
+
await new Promise((resolve, reject) => {
|
|
261
|
+
const timer = setTimeout(() => {
|
|
262
|
+
pendingAcks.delete(messageId);
|
|
263
|
+
reject(new Error("Cron delivery ack timed out"));
|
|
264
|
+
}, CRON_DELIVERY_TIMEOUT_MS);
|
|
265
|
+
pendingAcks.set(messageId, (ok) => {
|
|
266
|
+
clearTimeout(timer);
|
|
267
|
+
if (ok) {
|
|
268
|
+
resolve();
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
reject(new Error("Cron delivery persist failed"));
|
|
272
|
+
});
|
|
273
|
+
sendCronResult(ws, options.agentId, messageId, content, meta);
|
|
274
|
+
});
|
|
242
275
|
},
|
|
243
276
|
};
|
|
244
277
|
}
|
|
@@ -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;
|
|
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"}
|
package/dist/cronWatcher.js
CHANGED
|
@@ -83,6 +83,13 @@ function parseRunAtFromFileName(filePath) {
|
|
|
83
83
|
const base = filePath.split("/").pop()?.replace(/\.md$/i, "") ?? "";
|
|
84
84
|
if (!base)
|
|
85
85
|
return undefined;
|
|
86
|
+
const underscoreMatch = /^(\d{4}-\d{2}-\d{2})_(\d{2})-(\d{2})-(\d{2})$/.exec(base);
|
|
87
|
+
if (underscoreMatch) {
|
|
88
|
+
const [, datePart, hour, minute, second] = underscoreMatch;
|
|
89
|
+
const parsed = Date.parse(`${datePart}T${hour}:${minute}:${second}`);
|
|
90
|
+
if (Number.isFinite(parsed))
|
|
91
|
+
return parsed;
|
|
92
|
+
}
|
|
86
93
|
const asNumber = Number(base);
|
|
87
94
|
if (Number.isFinite(asNumber) && asNumber > 0)
|
|
88
95
|
return asNumber;
|
|
@@ -130,7 +137,7 @@ async function deliverPendingFiles(session, delivered, conversationId, options)
|
|
|
130
137
|
continue;
|
|
131
138
|
}
|
|
132
139
|
try {
|
|
133
|
-
session.deliverCronResult(content, {
|
|
140
|
+
await session.deliverCronResult(content, {
|
|
134
141
|
conversationId,
|
|
135
142
|
jobId,
|
|
136
143
|
jobName,
|
|
@@ -146,7 +153,14 @@ async function deliverPendingFiles(session, delivered, conversationId, options)
|
|
|
146
153
|
}));
|
|
147
154
|
return;
|
|
148
155
|
}
|
|
149
|
-
|
|
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
|
+
}));
|
|
163
|
+
continue;
|
|
150
164
|
}
|
|
151
165
|
delivered.add(key);
|
|
152
166
|
writeDeliveredIndex(delivered);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermesForwarder.d.ts","sourceRoot":"","sources":["../src/hermesForwarder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAyB,eAAe,EAAE,MAAM,aAAa,CAAC;AAWtF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAkBF,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,sBAA2B,GAAG;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf,CAUA;AA+MD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"hermesForwarder.d.ts","sourceRoot":"","sources":["../src/hermesForwarder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAyB,eAAe,EAAE,MAAM,aAAa,CAAC;AAWtF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAkBF,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,sBAA2B,GAAG;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf,CAUA;AA+MD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,mBAAmB,CAAC,CA6E9B;AAED,wBAAgB,0BAA0B,CAAC,OAAO,GAAE,sBAA2B,IAC/D,SAAS,MAAM,EAAE,MAAM,eAAe,EAAE,OAAO,UAAU,KAAG,OAAO,CAAC,IAAI,CAAC,CAMxF"}
|
package/dist/hermesForwarder.js
CHANGED
|
@@ -102,7 +102,7 @@ function processSseEventBlock(eventBlock, reply, counters, onTextDelta) {
|
|
|
102
102
|
try {
|
|
103
103
|
const payload = JSON.parse(data);
|
|
104
104
|
const delta = extractDeltaFromChunk(payload);
|
|
105
|
-
if (delta) {
|
|
105
|
+
if (delta && delta.trim()) {
|
|
106
106
|
onTextDelta(delta);
|
|
107
107
|
reply.delta(delta, counters.textSequence);
|
|
108
108
|
counters.textSequence += 1;
|
|
@@ -262,7 +262,8 @@ export async function forwardToHermes(content, meta, reply, options = {}) {
|
|
|
262
262
|
const mediaRefs = parseMediaReferences(fullText);
|
|
263
263
|
const attachments = mediaRefs.length > 0 ? await uploadMediaAttachments(meta.agentId, mediaRefs) : [];
|
|
264
264
|
const displayText = attachments.length > 0 ? stripMediaReferences(fullText, mediaRefs) : fullText.trim() || fullText;
|
|
265
|
-
|
|
265
|
+
const { assistantMessageId } = getLatestTurnMessageIds(resolvedSessionId);
|
|
266
|
+
reply.complete(displayText, counters.textSequence, attachments.length > 0 ? attachments : undefined, assistantMessageId !== undefined ? String(assistantMessageId) : undefined);
|
|
266
267
|
await linkTurnToConvex(meta, resolvedSessionId);
|
|
267
268
|
return { sessionId: resolvedSessionId };
|
|
268
269
|
}
|