@elqnt/agents 3.1.0 → 3.2.1
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 +40 -0
- package/dist/{agent-models-C36pvpUb.d.mts → agent-models-DLQlC7N6.d.mts} +143 -2
- package/dist/{agent-models-C36pvpUb.d.ts → agent-models-DLQlC7N6.d.ts} +143 -2
- package/dist/api/index.d.mts +227 -5
- package/dist/api/index.d.ts +227 -5
- package/dist/api/index.js +54 -2
- package/dist/api/index.js.map +1 -1
- package/dist/api/index.mjs +53 -1
- package/dist/api/server.d.mts +4 -2
- package/dist/api/server.d.ts +4 -2
- package/dist/api/server.js +9 -1
- package/dist/api/server.js.map +1 -1
- package/dist/api/server.mjs +8 -0
- package/dist/api/server.mjs.map +1 -1
- package/dist/chunk-2JDVRL35.js +133 -0
- package/dist/chunk-2JDVRL35.js.map +1 -0
- package/dist/chunk-2QL3LLC3.mjs +1075 -0
- package/dist/chunk-2QL3LLC3.mjs.map +1 -0
- package/dist/chunk-3EHE4O57.mjs +133 -0
- package/dist/chunk-3EHE4O57.mjs.map +1 -0
- package/dist/{chunk-TPQS2XAW.js → chunk-3VM5TCJR.js} +8 -2
- package/dist/chunk-3VM5TCJR.js.map +1 -0
- package/dist/chunk-AF4QJD73.js +1075 -0
- package/dist/chunk-AF4QJD73.js.map +1 -0
- package/dist/{chunk-RAA5NKA7.js → chunk-BH2FIDFK.js} +224 -2
- package/dist/chunk-BH2FIDFK.js.map +1 -0
- package/dist/{chunk-NF6PGOXP.mjs → chunk-GOHHT3ET.mjs} +224 -2
- package/dist/chunk-GOHHT3ET.mjs.map +1 -0
- package/dist/{chunk-SXYTVNKJ.mjs → chunk-ZK27UGO6.mjs} +7 -1
- package/dist/{chunk-SXYTVNKJ.mjs.map → chunk-ZK27UGO6.mjs.map} +1 -1
- package/dist/hooks/index.d.mts +224 -67
- package/dist/hooks/index.d.ts +224 -67
- package/dist/hooks/index.js +8 -3
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +11 -6
- package/dist/index.d.mts +7 -5
- package/dist/index.d.ts +7 -5
- package/dist/index.js +67 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +70 -7
- package/dist/models/index.d.mts +3 -131
- package/dist/models/index.d.ts +3 -131
- package/dist/models/index.js +8 -2
- package/dist/models/index.js.map +1 -1
- package/dist/models/index.mjs +7 -1
- package/dist/{integration-21IuOOeV.d.mts → sandbox-DOxoM2Ge.d.mts} +132 -1
- package/dist/{integration-21IuOOeV.d.ts → sandbox-DOxoM2Ge.d.ts} +132 -1
- package/dist/transport/index.d.mts +36 -0
- package/dist/transport/index.d.ts +36 -0
- package/dist/transport/index.js +8 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/index.mjs +8 -0
- package/dist/transport/index.mjs.map +1 -0
- package/dist/types-C2qd5f-E.d.mts +51 -0
- package/dist/types-k9PszCzt.d.ts +51 -0
- package/dist/utils/index.d.mts +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/package.json +10 -4
- package/dist/chunk-NF6PGOXP.mjs.map +0 -1
- package/dist/chunk-RAA5NKA7.js.map +0 -1
- package/dist/chunk-RWFVHX2J.js +0 -585
- package/dist/chunk-RWFVHX2J.js.map +0 -1
- package/dist/chunk-TPQS2XAW.js.map +0 -1
- package/dist/chunk-X4MSBDTZ.mjs +0 -585
- package/dist/chunk-X4MSBDTZ.mjs.map +0 -1
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
|
+
|
|
3
|
+
// transport/sse.ts
|
|
4
|
+
function createBGAgentTransport(options) {
|
|
5
|
+
const debug = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _ => _.debug]), () => ( false));
|
|
6
|
+
let config = {};
|
|
7
|
+
let state = "disconnected";
|
|
8
|
+
let error;
|
|
9
|
+
const streams = /* @__PURE__ */ new Map();
|
|
10
|
+
const globalHandlers = /* @__PURE__ */ new Set();
|
|
11
|
+
const typeHandlers = /* @__PURE__ */ new Map();
|
|
12
|
+
function log(...args) {
|
|
13
|
+
if (debug) console.log("[BGAgentTransport]", ...args);
|
|
14
|
+
}
|
|
15
|
+
function emit(event) {
|
|
16
|
+
for (const handler of globalHandlers) {
|
|
17
|
+
try {
|
|
18
|
+
handler(event);
|
|
19
|
+
} catch (err) {
|
|
20
|
+
console.error("[BGAgentTransport] Handler error:", err);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const handlers = typeHandlers.get(event.type);
|
|
24
|
+
if (handlers) {
|
|
25
|
+
for (const handler of handlers) {
|
|
26
|
+
try {
|
|
27
|
+
handler(event);
|
|
28
|
+
} catch (err) {
|
|
29
|
+
console.error("[BGAgentTransport] Handler error:", err);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function connect(cfg) {
|
|
35
|
+
config = cfg || {};
|
|
36
|
+
state = "connected";
|
|
37
|
+
error = void 0;
|
|
38
|
+
log("Connected", config);
|
|
39
|
+
}
|
|
40
|
+
function streamJob(jobId) {
|
|
41
|
+
if (streams.has(jobId)) {
|
|
42
|
+
log("Already streaming", jobId);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const baseUrl = config.streamBaseUrl || "";
|
|
46
|
+
const url = `${baseUrl}/api/v1/bg-agents/stream?jobId=${jobId}`;
|
|
47
|
+
log("Opening stream", url);
|
|
48
|
+
const es = new EventSource(url);
|
|
49
|
+
es.onmessage = (event) => {
|
|
50
|
+
try {
|
|
51
|
+
const data = JSON.parse(event.data);
|
|
52
|
+
emit(data);
|
|
53
|
+
if (data.type === "bg_agent.completed" || data.type === "bg_agent.failed") {
|
|
54
|
+
log("Terminal event, closing stream", jobId, data.type);
|
|
55
|
+
es.close();
|
|
56
|
+
streams.delete(jobId);
|
|
57
|
+
if (streams.size === 0) state = "connected";
|
|
58
|
+
}
|
|
59
|
+
} catch (e) {
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
es.onopen = () => {
|
|
63
|
+
state = "streaming";
|
|
64
|
+
error = void 0;
|
|
65
|
+
log("Stream opened", jobId);
|
|
66
|
+
};
|
|
67
|
+
es.onerror = () => {
|
|
68
|
+
log("Stream error", jobId);
|
|
69
|
+
es.close();
|
|
70
|
+
streams.delete(jobId);
|
|
71
|
+
if (streams.size === 0) state = "connected";
|
|
72
|
+
error = { code: "STREAM_ERROR", message: `SSE connection failed for job ${jobId}`, retryable: true };
|
|
73
|
+
};
|
|
74
|
+
streams.set(jobId, es);
|
|
75
|
+
}
|
|
76
|
+
function stopJob(jobId) {
|
|
77
|
+
const es = streams.get(jobId);
|
|
78
|
+
if (es) {
|
|
79
|
+
es.close();
|
|
80
|
+
streams.delete(jobId);
|
|
81
|
+
log("Stopped stream", jobId);
|
|
82
|
+
if (streams.size === 0) state = "connected";
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function onEvent(handler) {
|
|
86
|
+
globalHandlers.add(handler);
|
|
87
|
+
return () => globalHandlers.delete(handler);
|
|
88
|
+
}
|
|
89
|
+
function on(eventType, handler) {
|
|
90
|
+
if (!typeHandlers.has(eventType)) {
|
|
91
|
+
typeHandlers.set(eventType, /* @__PURE__ */ new Set());
|
|
92
|
+
}
|
|
93
|
+
typeHandlers.get(eventType).add(handler);
|
|
94
|
+
return () => _optionalChain([typeHandlers, 'access', _2 => _2.get, 'call', _3 => _3(eventType), 'optionalAccess', _4 => _4.delete, 'call', _5 => _5(handler)]);
|
|
95
|
+
}
|
|
96
|
+
function disconnect() {
|
|
97
|
+
for (const [jobId, es] of streams) {
|
|
98
|
+
es.close();
|
|
99
|
+
log("Closed stream", jobId);
|
|
100
|
+
}
|
|
101
|
+
streams.clear();
|
|
102
|
+
globalHandlers.clear();
|
|
103
|
+
typeHandlers.clear();
|
|
104
|
+
state = "disconnected";
|
|
105
|
+
error = void 0;
|
|
106
|
+
log("Disconnected");
|
|
107
|
+
}
|
|
108
|
+
function getState() {
|
|
109
|
+
return state;
|
|
110
|
+
}
|
|
111
|
+
function getError() {
|
|
112
|
+
return error;
|
|
113
|
+
}
|
|
114
|
+
function clearError() {
|
|
115
|
+
error = void 0;
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
connect,
|
|
119
|
+
streamJob,
|
|
120
|
+
stopJob,
|
|
121
|
+
onEvent,
|
|
122
|
+
on,
|
|
123
|
+
disconnect,
|
|
124
|
+
getState,
|
|
125
|
+
getError,
|
|
126
|
+
clearError
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
exports.createBGAgentTransport = createBGAgentTransport;
|
|
133
|
+
//# sourceMappingURL=chunk-2JDVRL35.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/eloquent/eloquent/packages/@elqnt/agents/dist/chunk-2JDVRL35.js","../transport/sse.ts"],"names":[],"mappings":"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","file":"/home/runner/work/eloquent/eloquent/packages/@elqnt/agents/dist/chunk-2JDVRL35.js","sourcesContent":[null,"/**\n * Browser SSE Transport for Background Agent Progress\n *\n * Uses native EventSource for receiving agent progress events.\n * Follows the same factory pattern as @elqnt/docs/transport/sse.ts.\n *\n * @example\n * ```ts\n * import { createBGAgentTransport } from \"@elqnt/agents/transport\";\n *\n * const transport = createBGAgentTransport();\n * transport.connect();\n *\n * transport.on(\"bg_agent.round\", (event) => {\n * console.log(`Round ${event.round}: ${event.content}`);\n * });\n *\n * transport.on(\"bg_agent.completed\", (event) => {\n * console.log(\"Done:\", event.result);\n * });\n *\n * transport.streamJob(\"job-uuid-123\");\n *\n * // Clean up\n * transport.disconnect();\n * ```\n */\n\nimport type {\n BGAgentTransport,\n BGAgentTransportConfig,\n BGAgentTransportState,\n BGAgentTransportError,\n BGAgentTransportOptions,\n BGAgentEventType,\n EventHandler,\n Unsubscribe,\n BackgroundAgentProgressEvent,\n} from \"./types\";\n\nexport type { BGAgentTransportOptions };\n\nexport function createBGAgentTransport(\n options?: BGAgentTransportOptions\n): BGAgentTransport {\n const debug = options?.debug ?? false;\n\n // Internal state\n let config: BGAgentTransportConfig = {};\n let state: BGAgentTransportState = \"disconnected\";\n let error: BGAgentTransportError | undefined;\n\n // Active EventSource connections per jobId\n const streams = new Map<string, EventSource>();\n\n // Handler registry\n const globalHandlers = new Set<EventHandler>();\n const typeHandlers = new Map<string, Set<EventHandler>>();\n\n // ============== Internal Helpers ==============\n\n function log(...args: unknown[]) {\n if (debug) console.log(\"[BGAgentTransport]\", ...args);\n }\n\n function emit(event: BackgroundAgentProgressEvent) {\n // Global handlers\n for (const handler of globalHandlers) {\n try {\n handler(event);\n } catch (err) {\n console.error(\"[BGAgentTransport] Handler error:\", err);\n }\n }\n // Type-specific handlers\n const handlers = typeHandlers.get(event.type);\n if (handlers) {\n for (const handler of handlers) {\n try {\n handler(event);\n } catch (err) {\n console.error(\"[BGAgentTransport] Handler error:\", err);\n }\n }\n }\n }\n\n // ============== Transport Methods ==============\n\n function connect(cfg?: BGAgentTransportConfig): void {\n config = cfg || {};\n state = \"connected\";\n error = undefined;\n log(\"Connected\", config);\n }\n\n function streamJob(jobId: string): void {\n if (streams.has(jobId)) {\n log(\"Already streaming\", jobId);\n return;\n }\n\n const baseUrl = config.streamBaseUrl || \"\";\n const url = `${baseUrl}/api/v1/bg-agents/stream?jobId=${jobId}`;\n log(\"Opening stream\", url);\n\n const es = new EventSource(url);\n\n es.onmessage = (event) => {\n try {\n const data = JSON.parse(event.data) as BackgroundAgentProgressEvent;\n emit(data);\n\n // Auto-close on terminal events\n if (data.type === \"bg_agent.completed\" || data.type === \"bg_agent.failed\") {\n log(\"Terminal event, closing stream\", jobId, data.type);\n es.close();\n streams.delete(jobId);\n if (streams.size === 0) state = \"connected\";\n }\n } catch {\n // Ignore parse errors (heartbeat comments, etc.)\n }\n };\n\n es.onopen = () => {\n state = \"streaming\";\n error = undefined;\n log(\"Stream opened\", jobId);\n };\n\n es.onerror = () => {\n log(\"Stream error\", jobId);\n es.close();\n streams.delete(jobId);\n if (streams.size === 0) state = \"connected\";\n error = { code: \"STREAM_ERROR\", message: `SSE connection failed for job ${jobId}`, retryable: true };\n };\n\n streams.set(jobId, es);\n }\n\n function stopJob(jobId: string): void {\n const es = streams.get(jobId);\n if (es) {\n es.close();\n streams.delete(jobId);\n log(\"Stopped stream\", jobId);\n if (streams.size === 0) state = \"connected\";\n }\n }\n\n function onEvent(handler: EventHandler): Unsubscribe {\n globalHandlers.add(handler);\n return () => globalHandlers.delete(handler);\n }\n\n function on(eventType: BGAgentEventType, handler: EventHandler): Unsubscribe {\n if (!typeHandlers.has(eventType)) {\n typeHandlers.set(eventType, new Set());\n }\n typeHandlers.get(eventType)!.add(handler);\n return () => typeHandlers.get(eventType)?.delete(handler);\n }\n\n function disconnect(): void {\n for (const [jobId, es] of streams) {\n es.close();\n log(\"Closed stream\", jobId);\n }\n streams.clear();\n globalHandlers.clear();\n typeHandlers.clear();\n state = \"disconnected\";\n error = undefined;\n log(\"Disconnected\");\n }\n\n function getState(): BGAgentTransportState {\n return state;\n }\n\n function getError(): BGAgentTransportError | undefined {\n return error;\n }\n\n function clearError(): void {\n error = undefined;\n }\n\n return {\n connect,\n streamJob,\n stopJob,\n onEvent,\n on,\n disconnect,\n getState,\n getError,\n clearError,\n };\n}\n"]}
|