elasticdash-test 0.1.18-alpha → 0.1.18-alpha-2

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/dist/index.cjs CHANGED
@@ -2985,6 +2985,95 @@ var init_trigger_executor = __esm({
2985
2985
  }
2986
2986
  });
2987
2987
 
2988
+ // src/socket-connector.ts
2989
+ function connectToBackend(options) {
2990
+ if (socket?.connected) return socket;
2991
+ if (socket) return socket;
2992
+ const { serverUrl, apiKey, sessionId, serviceId } = options;
2993
+ const cwd = process.cwd();
2994
+ socket = (0, import_socket.io)(serverUrl, {
2995
+ auth: {
2996
+ ...apiKey ? { apiKey } : {},
2997
+ sessionId,
2998
+ serviceId
2999
+ },
3000
+ transports: ["websocket", "polling"],
3001
+ reconnection: true,
3002
+ reconnectionDelay: 1e3,
3003
+ reconnectionDelayMax: 3e4
3004
+ });
3005
+ socket.on("connect", () => {
3006
+ debugLog(`[elasticdash] Socket connected: ${socket.id}`);
3007
+ const tools = scanTools(cwd);
3008
+ const workflows = scanWorkflows(cwd);
3009
+ socket.emit("register", {
3010
+ sessionId,
3011
+ serviceId,
3012
+ tools: tools.map((t) => t.name),
3013
+ workflows: workflows.map((w) => w.name)
3014
+ });
3015
+ });
3016
+ socket.on("portal:task", async (task, ack) => {
3017
+ debugLog(`[elasticdash] Socket received portal task: ${task.taskId} type=${task.type} name=${task.name}`);
3018
+ try {
3019
+ const tools = scanTools(cwd);
3020
+ const result = await executePortalTask(task, cwd, tools);
3021
+ if (typeof ack === "function") {
3022
+ ack(result);
3023
+ } else {
3024
+ socket.emit("portal:result", result);
3025
+ }
3026
+ } catch (e) {
3027
+ const errorResult = {
3028
+ taskId: task.taskId,
3029
+ ok: false,
3030
+ output: null,
3031
+ error: e instanceof Error ? e.message : String(e),
3032
+ durationMs: 0,
3033
+ metadata: task.metadata
3034
+ };
3035
+ if (typeof ack === "function") {
3036
+ ack(errorResult);
3037
+ } else {
3038
+ socket.emit("portal:result", errorResult);
3039
+ }
3040
+ }
3041
+ });
3042
+ socket.on("trigger", async (trigger) => {
3043
+ debugLog(`[elasticdash] Socket received trigger: ${trigger.triggerId} steps=${trigger.steps.length} runs=${trigger.runCount}`);
3044
+ try {
3045
+ await executeTrigger(serverUrl, apiKey, trigger);
3046
+ } catch (e) {
3047
+ debugLog(`[elasticdash] Socket trigger execution failed: ${e instanceof Error ? e.message : String(e)}`);
3048
+ }
3049
+ });
3050
+ socket.on("disconnect", (reason) => {
3051
+ debugLog(`[elasticdash] Socket disconnected: ${reason}`);
3052
+ });
3053
+ socket.on("connect_error", (err) => {
3054
+ debugLog(`[elasticdash] Socket connection error: ${err.message}`);
3055
+ });
3056
+ return socket;
3057
+ }
3058
+ async function disconnectFromBackend() {
3059
+ if (socket) {
3060
+ socket.disconnect();
3061
+ socket = null;
3062
+ }
3063
+ }
3064
+ var import_socket, socket;
3065
+ var init_socket_connector = __esm({
3066
+ "src/socket-connector.ts"() {
3067
+ "use strict";
3068
+ import_socket = require("socket.io-client");
3069
+ init_portal_executor();
3070
+ init_trigger_executor();
3071
+ init_tool_runner();
3072
+ init_debug();
3073
+ socket = null;
3074
+ }
3075
+ });
3076
+
2988
3077
  // src/observability.ts
2989
3078
  var observability_exports = {};
2990
3079
  __export(observability_exports, {
@@ -3034,6 +3123,7 @@ function initObservability(options) {
3034
3123
  interceptFetch();
3035
3124
  installDBAutoInterceptor().catch(() => {
3036
3125
  });
3126
+ connectToBackend({ serverUrl, apiKey, sessionId, serviceId });
3037
3127
  heartbeatTimer = setInterval(() => {
3038
3128
  batcher.enqueue({
3039
3129
  id: ctx.nextId(),
@@ -3105,6 +3195,7 @@ async function shutdownObservability() {
3105
3195
  durationMs: 0,
3106
3196
  schemaVersion: 1
3107
3197
  });
3198
+ await disconnectFromBackend();
3108
3199
  await ctx.batcher.shutdown();
3109
3200
  clearObservabilityContext();
3110
3201
  debugLog(`[elasticdash] Observability shut down \u2014 sessionId=${ctx.sessionId}`);
@@ -3168,6 +3259,7 @@ var init_observability = __esm({
3168
3259
  init_ai_interceptor();
3169
3260
  init_http();
3170
3261
  init_db_auto();
3262
+ init_socket_connector();
3171
3263
  init_trigger_executor();
3172
3264
  init_tool_runner();
3173
3265
  init_debug();
@@ -3577,8 +3669,10 @@ __export(index_exports, {
3577
3669
  checkToolAvailability: () => checkToolAvailability,
3578
3670
  clearGlobalHttpContext: () => clearGlobalHttpContext,
3579
3671
  clearRegistry: () => clearRegistry,
3672
+ connectToBackend: () => connectToBackend,
3580
3673
  createTraceHandle: () => createTraceHandle,
3581
3674
  deserializeAgentState: () => deserializeAgentState,
3675
+ disconnectFromBackend: () => disconnectFromBackend,
3582
3676
  executePortalTask: () => executePortalTask,
3583
3677
  expect: () => import_expect.expect,
3584
3678
  extractTaskOutputs: () => extractTaskOutputs,
@@ -4865,6 +4959,7 @@ init_ai_interceptor();
4865
4959
  init_observability();
4866
4960
  init_telemetry_batcher();
4867
4961
  init_portal_executor();
4962
+ init_socket_connector();
4868
4963
  init_tracing();
4869
4964
 
4870
4965
  // src/internals/conditional-recorder.ts
@@ -5247,8 +5342,10 @@ init_portal_executor();
5247
5342
  checkToolAvailability,
5248
5343
  clearGlobalHttpContext,
5249
5344
  clearRegistry,
5345
+ connectToBackend,
5250
5346
  createTraceHandle,
5251
5347
  deserializeAgentState,
5348
+ disconnectFromBackend,
5252
5349
  executePortalTask,
5253
5350
  expect,
5254
5351
  extractTaskOutputs,
package/dist/index.d.ts CHANGED
@@ -29,6 +29,8 @@ export type { TelemetryBatcherOptions, TriggerSignal, TriggerStep } from './tele
29
29
  export type { ObservabilityContext } from './interceptors/telemetry-push.js';
30
30
  export { checkToolAvailability, checkAIAvailability } from './portal-executor.js';
31
31
  export type { AvailabilityResult } from './portal-executor.js';
32
+ export { connectToBackend, disconnectFromBackend } from './socket-connector.js';
33
+ export type { SocketConnectorOptions } from './socket-connector.js';
32
34
  export { startLLMProxy, fetchCapturedTrace } from './proxy/llm-capture.js';
33
35
  export { recordToolCall } from './tracing.js';
34
36
  export { safeRecordToolCall, isWorker } from './internals/conditional-recorder.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -30,6 +30,8 @@ export { installAIInterceptor, uninstallAIInterceptor } from './interceptors/ai-
30
30
  export { initObservability, shutdownObservability, startTrace, wrapWorkflow } from './observability.js';
31
31
  export { TelemetryBatcher } from './telemetry-batcher.js';
32
32
  export { checkToolAvailability, checkAIAvailability } from './portal-executor.js';
33
+ // Socket connector (real-time backend communication)
34
+ export { connectToBackend, disconnectFromBackend } from './socket-connector.js';
33
35
  // LLM proxy
34
36
  export { startLLMProxy, fetchCapturedTrace } from './proxy/llm-capture.js';
35
37
  // Tracing
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAE1C,iBAAiB;AACjB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACnH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAG5C,gBAAgB;AAChB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAGnH,4BAA4B;AAC5B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAItD,yBAAyB;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAEtD,oEAAoE;AACpE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,kCAAkC,CAAA;AAGzC,4DAA4D;AAC5D,OAAO,EACL,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AAUrC,wBAAwB;AACxB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3G,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAEhG,4BAA4B;AAC5B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAGzF,2BAA2B;AAC3B,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEjH,sCAAsC;AACtC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAE/F,gBAAgB;AAChB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAGzD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAGjF,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE1E,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAElF,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAGlD,yBAAyB;AACzB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGxH,8BAA8B;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAKD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,mBAAmB,CAgFrF;AAgCD;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2B3D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAWxD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,CAAC,EACpD,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAChC,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAsC/B"}
1
+ {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAKD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,mBAAmB,CAiFrF;AAgCD;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CA8B3D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAWxD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,CAAC,EACpD,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAChC,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAsC/B"}
@@ -4,6 +4,7 @@ import { setObservabilityContext, getObservabilityContext, clearObservabilityCon
4
4
  import { installAIInterceptor } from './interceptors/ai-interceptor.js';
5
5
  import { interceptFetch } from './interceptors/http.js';
6
6
  import { installDBAutoInterceptor } from './interceptors/db-auto.js';
7
+ import { connectToBackend, disconnectFromBackend } from './socket-connector.js';
7
8
  import { executeTrigger } from './trigger-executor.js';
8
9
  import { scanTools, scanWorkflows } from './execution/tool-runner.js';
9
10
  import { debugLog } from './utils/debug.js';
@@ -59,6 +60,7 @@ export function initObservability(options) {
59
60
  installAIInterceptor();
60
61
  interceptFetch();
61
62
  installDBAutoInterceptor().catch(() => { });
63
+ connectToBackend({ serverUrl, apiKey, sessionId, serviceId });
62
64
  // Heartbeat
63
65
  heartbeatTimer = setInterval(() => {
64
66
  batcher.enqueue({
@@ -145,6 +147,8 @@ export async function shutdownObservability() {
145
147
  durationMs: 0,
146
148
  schemaVersion: 1,
147
149
  });
150
+ // Disconnect socket
151
+ await disconnectFromBackend();
148
152
  // Flush and shut down the batcher
149
153
  await ctx.batcher.shutdown();
150
154
  clearObservabilityContext();
@@ -1 +1 @@
1
- {"version":3,"file":"observability.js","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { Socket } from 'socket.io-client';
2
+ export interface SocketConnectorOptions {
3
+ serverUrl: string;
4
+ apiKey?: string;
5
+ sessionId: string;
6
+ serviceId: string;
7
+ }
8
+ /**
9
+ * Establish a persistent socket.io connection to the backend.
10
+ *
11
+ * The SDK registers its sessionId, serviceId, and available tools/workflows
12
+ * on connect. The backend can then push portal tasks and trigger signals
13
+ * to this SDK instance for execution.
14
+ *
15
+ * Auto-reconnects on disconnect with exponential backoff (1s–30s).
16
+ * Safe to call multiple times — subsequent calls return the existing socket.
17
+ */
18
+ export declare function connectToBackend(options: SocketConnectorOptions): Socket;
19
+ /**
20
+ * Disconnect from the backend and clean up the socket.
21
+ */
22
+ export declare function disconnectFromBackend(): Promise<void>;
23
+ //# sourceMappingURL=socket-connector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-connector.d.ts","sourceRoot":"","sources":["../src/socket-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAQ7C,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAID;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CA6ExE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3D"}
@@ -0,0 +1,102 @@
1
+ import { io } from 'socket.io-client';
2
+ import { executePortalTask } from './portal-executor.js';
3
+ import { executeTrigger } from './trigger-executor.js';
4
+ import { scanTools, scanWorkflows } from './execution/tool-runner.js';
5
+ import { debugLog } from './utils/debug.js';
6
+ let socket = null;
7
+ /**
8
+ * Establish a persistent socket.io connection to the backend.
9
+ *
10
+ * The SDK registers its sessionId, serviceId, and available tools/workflows
11
+ * on connect. The backend can then push portal tasks and trigger signals
12
+ * to this SDK instance for execution.
13
+ *
14
+ * Auto-reconnects on disconnect with exponential backoff (1s–30s).
15
+ * Safe to call multiple times — subsequent calls return the existing socket.
16
+ */
17
+ export function connectToBackend(options) {
18
+ if (socket?.connected)
19
+ return socket;
20
+ // If a socket exists but is disconnected/reconnecting, reuse it
21
+ if (socket)
22
+ return socket;
23
+ const { serverUrl, apiKey, sessionId, serviceId } = options;
24
+ const cwd = process.cwd();
25
+ socket = io(serverUrl, {
26
+ auth: {
27
+ ...(apiKey ? { apiKey } : {}),
28
+ sessionId,
29
+ serviceId,
30
+ },
31
+ transports: ['websocket', 'polling'],
32
+ reconnection: true,
33
+ reconnectionDelay: 1000,
34
+ reconnectionDelayMax: 30_000,
35
+ });
36
+ socket.on('connect', () => {
37
+ debugLog(`[elasticdash] Socket connected: ${socket.id}`);
38
+ const tools = scanTools(cwd);
39
+ const workflows = scanWorkflows(cwd);
40
+ socket.emit('register', {
41
+ sessionId,
42
+ serviceId,
43
+ tools: tools.map(t => t.name),
44
+ workflows: workflows.map(w => w.name),
45
+ });
46
+ });
47
+ socket.on('portal:task', async (task, ack) => {
48
+ debugLog(`[elasticdash] Socket received portal task: ${task.taskId} type=${task.type} name=${task.name}`);
49
+ try {
50
+ const tools = scanTools(cwd);
51
+ const result = await executePortalTask(task, cwd, tools);
52
+ if (typeof ack === 'function') {
53
+ ack(result);
54
+ }
55
+ else {
56
+ socket.emit('portal:result', result);
57
+ }
58
+ }
59
+ catch (e) {
60
+ const errorResult = {
61
+ taskId: task.taskId,
62
+ ok: false,
63
+ output: null,
64
+ error: e instanceof Error ? e.message : String(e),
65
+ durationMs: 0,
66
+ metadata: task.metadata,
67
+ };
68
+ if (typeof ack === 'function') {
69
+ ack(errorResult);
70
+ }
71
+ else {
72
+ socket.emit('portal:result', errorResult);
73
+ }
74
+ }
75
+ });
76
+ socket.on('trigger', async (trigger) => {
77
+ debugLog(`[elasticdash] Socket received trigger: ${trigger.triggerId} steps=${trigger.steps.length} runs=${trigger.runCount}`);
78
+ try {
79
+ await executeTrigger(serverUrl, apiKey, trigger);
80
+ }
81
+ catch (e) {
82
+ debugLog(`[elasticdash] Socket trigger execution failed: ${e instanceof Error ? e.message : String(e)}`);
83
+ }
84
+ });
85
+ socket.on('disconnect', (reason) => {
86
+ debugLog(`[elasticdash] Socket disconnected: ${reason}`);
87
+ });
88
+ socket.on('connect_error', (err) => {
89
+ debugLog(`[elasticdash] Socket connection error: ${err.message}`);
90
+ });
91
+ return socket;
92
+ }
93
+ /**
94
+ * Disconnect from the backend and clean up the socket.
95
+ */
96
+ export async function disconnectFromBackend() {
97
+ if (socket) {
98
+ socket.disconnect();
99
+ socket = null;
100
+ }
101
+ }
102
+ //# sourceMappingURL=socket-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-connector.js","sourceRoot":"","sources":["../src/socket-connector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "elasticdash-test",
3
- "version": "0.1.18-alpha",
3
+ "version": "0.1.18-alpha-2",
4
4
  "description": "AI-native test runner for ElasticDash workflow testing",
5
5
  "type": "module",
6
6
  "bin": {
@@ -51,6 +51,7 @@
51
51
  "expect": "^29.7.0",
52
52
  "express": "^5.2.1",
53
53
  "fast-glob": "^3.3.2",
54
+ "socket.io-client": "^4.8.3",
54
55
  "tsx": "^4.15.6"
55
56
  },
56
57
  "devDependencies": {
package/src/index.ts CHANGED
@@ -80,6 +80,10 @@ export type { ObservabilityContext } from './interceptors/telemetry-push.js'
80
80
  export { checkToolAvailability, checkAIAvailability } from './portal-executor.js'
81
81
  export type { AvailabilityResult } from './portal-executor.js'
82
82
 
83
+ // Socket connector (real-time backend communication)
84
+ export { connectToBackend, disconnectFromBackend } from './socket-connector.js'
85
+ export type { SocketConnectorOptions } from './socket-connector.js'
86
+
83
87
  // LLM proxy
84
88
  export { startLLMProxy, fetchCapturedTrace } from './proxy/llm-capture.js'
85
89
 
@@ -10,6 +10,7 @@ import type { ObservabilityContext } from './interceptors/telemetry-push.js'
10
10
  import { installAIInterceptor } from './interceptors/ai-interceptor.js'
11
11
  import { interceptFetch } from './interceptors/http.js'
12
12
  import { installDBAutoInterceptor } from './interceptors/db-auto.js'
13
+ import { connectToBackend, disconnectFromBackend } from './socket-connector.js'
13
14
  import { executeTrigger } from './trigger-executor.js'
14
15
  import { scanTools, scanWorkflows } from './execution/tool-runner.js'
15
16
  import { debugLog } from './utils/debug.js'
@@ -88,6 +89,7 @@ export function initObservability(options?: ObservabilityOptions): Observability
88
89
  installAIInterceptor()
89
90
  interceptFetch()
90
91
  installDBAutoInterceptor().catch(() => {})
92
+ connectToBackend({ serverUrl, apiKey, sessionId, serviceId })
91
93
 
92
94
  // Heartbeat
93
95
  heartbeatTimer = setInterval(() => {
@@ -182,6 +184,9 @@ export async function shutdownObservability(): Promise<void> {
182
184
  schemaVersion: 1,
183
185
  })
184
186
 
187
+ // Disconnect socket
188
+ await disconnectFromBackend()
189
+
185
190
  // Flush and shut down the batcher
186
191
  await ctx.batcher.shutdown()
187
192
 
@@ -0,0 +1,115 @@
1
+ import { io, Socket } from 'socket.io-client'
2
+ import type { PortalTask, PortalTaskResult } from './types/portal.js'
3
+ import type { TriggerSignal } from './telemetry-batcher.js'
4
+ import { executePortalTask } from './portal-executor.js'
5
+ import { executeTrigger } from './trigger-executor.js'
6
+ import { scanTools, scanWorkflows } from './execution/tool-runner.js'
7
+ import { debugLog } from './utils/debug.js'
8
+
9
+ export interface SocketConnectorOptions {
10
+ serverUrl: string
11
+ apiKey?: string
12
+ sessionId: string
13
+ serviceId: string
14
+ }
15
+
16
+ let socket: Socket | null = null
17
+
18
+ /**
19
+ * Establish a persistent socket.io connection to the backend.
20
+ *
21
+ * The SDK registers its sessionId, serviceId, and available tools/workflows
22
+ * on connect. The backend can then push portal tasks and trigger signals
23
+ * to this SDK instance for execution.
24
+ *
25
+ * Auto-reconnects on disconnect with exponential backoff (1s–30s).
26
+ * Safe to call multiple times — subsequent calls return the existing socket.
27
+ */
28
+ export function connectToBackend(options: SocketConnectorOptions): Socket {
29
+ if (socket?.connected) return socket
30
+ // If a socket exists but is disconnected/reconnecting, reuse it
31
+ if (socket) return socket
32
+
33
+ const { serverUrl, apiKey, sessionId, serviceId } = options
34
+ const cwd = process.cwd()
35
+
36
+ socket = io(serverUrl, {
37
+ auth: {
38
+ ...(apiKey ? { apiKey } : {}),
39
+ sessionId,
40
+ serviceId,
41
+ },
42
+ transports: ['websocket', 'polling'],
43
+ reconnection: true,
44
+ reconnectionDelay: 1000,
45
+ reconnectionDelayMax: 30_000,
46
+ })
47
+
48
+ socket.on('connect', () => {
49
+ debugLog(`[elasticdash] Socket connected: ${socket!.id}`)
50
+ const tools = scanTools(cwd)
51
+ const workflows = scanWorkflows(cwd)
52
+ socket!.emit('register', {
53
+ sessionId,
54
+ serviceId,
55
+ tools: tools.map(t => t.name),
56
+ workflows: workflows.map(w => w.name),
57
+ })
58
+ })
59
+
60
+ socket.on('portal:task', async (task: PortalTask, ack?: (result: PortalTaskResult) => void) => {
61
+ debugLog(`[elasticdash] Socket received portal task: ${task.taskId} type=${task.type} name=${task.name}`)
62
+ try {
63
+ const tools = scanTools(cwd)
64
+ const result = await executePortalTask(task, cwd, tools)
65
+ if (typeof ack === 'function') {
66
+ ack(result)
67
+ } else {
68
+ socket!.emit('portal:result', result)
69
+ }
70
+ } catch (e) {
71
+ const errorResult: PortalTaskResult = {
72
+ taskId: task.taskId,
73
+ ok: false,
74
+ output: null,
75
+ error: e instanceof Error ? e.message : String(e),
76
+ durationMs: 0,
77
+ metadata: task.metadata,
78
+ }
79
+ if (typeof ack === 'function') {
80
+ ack(errorResult)
81
+ } else {
82
+ socket!.emit('portal:result', errorResult)
83
+ }
84
+ }
85
+ })
86
+
87
+ socket.on('trigger', async (trigger: TriggerSignal) => {
88
+ debugLog(`[elasticdash] Socket received trigger: ${trigger.triggerId} steps=${trigger.steps.length} runs=${trigger.runCount}`)
89
+ try {
90
+ await executeTrigger(serverUrl, apiKey, trigger)
91
+ } catch (e) {
92
+ debugLog(`[elasticdash] Socket trigger execution failed: ${e instanceof Error ? e.message : String(e)}`)
93
+ }
94
+ })
95
+
96
+ socket.on('disconnect', (reason) => {
97
+ debugLog(`[elasticdash] Socket disconnected: ${reason}`)
98
+ })
99
+
100
+ socket.on('connect_error', (err) => {
101
+ debugLog(`[elasticdash] Socket connection error: ${err.message}`)
102
+ })
103
+
104
+ return socket
105
+ }
106
+
107
+ /**
108
+ * Disconnect from the backend and clean up the socket.
109
+ */
110
+ export async function disconnectFromBackend(): Promise<void> {
111
+ if (socket) {
112
+ socket.disconnect()
113
+ socket = null
114
+ }
115
+ }