@aiden-ade/sandbox-agent 0.1.13 → 0.1.15
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 +1408 -982
- package/package.json +1 -1
- package/dist/core-agent.d.ts +0 -33
- package/dist/core-agent.d.ts.map +0 -1
- package/dist/core-agent.js +0 -218
- package/dist/core-agent.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -53
- package/dist/index.js.map +0 -1
- package/dist/runtime-backends.d.ts +0 -2
- package/dist/runtime-backends.d.ts.map +0 -1
- package/dist/runtime-backends.js +0 -2
- package/dist/runtime-backends.js.map +0 -1
- package/dist/sandbox.d.ts +0 -25
- package/dist/sandbox.d.ts.map +0 -1
- package/dist/sandbox.js +0 -185
- package/dist/sandbox.js.map +0 -1
- package/dist/types.d.ts +0 -6
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -6
- package/dist/types.js.map +0 -1
- package/dist/updater.d.ts +0 -15
- package/dist/updater.d.ts.map +0 -1
- package/dist/updater.js +0 -54
- package/dist/updater.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -2
- package/dist/version.js.map +0 -1
- package/dist/web-presenter.d.ts +0 -33
- package/dist/web-presenter.d.ts.map +0 -1
- package/dist/web-presenter.js +0 -100
- package/dist/web-presenter.js.map +0 -1
- package/dist/ws-client.d.ts +0 -79
- package/dist/ws-client.d.ts.map +0 -1
- package/dist/ws-client.js +0 -74
- package/dist/ws-client.js.map +0 -1
package/dist/updater.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Self-update logic for the sandbox agent.
|
|
3
|
-
* In prod/staging, installs the new version from npm.
|
|
4
|
-
*/
|
|
5
|
-
import { execSync, spawn } from "node:child_process";
|
|
6
|
-
const DEFAULT_PATH = "/home/user/.local/node/bin:/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin";
|
|
7
|
-
/**
|
|
8
|
-
* Install the new agent version via npm.
|
|
9
|
-
* Returns true if the install succeeded.
|
|
10
|
-
*/
|
|
11
|
-
export async function installUpdate(payload) {
|
|
12
|
-
const version = payload.version ?? "latest";
|
|
13
|
-
if (!/^[\w.\-+]+$/.test(version)) {
|
|
14
|
-
console.error(`[updater] Refusing to install: invalid version string "${version}"`);
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
try {
|
|
18
|
-
console.info(`[updater] Installing @aiden-ade/sandbox-agent@${version} via npm`);
|
|
19
|
-
execSync(`npm install -g @aiden-ade/sandbox-agent@${version}`, {
|
|
20
|
-
timeout: 60_000,
|
|
21
|
-
env: { ...process.env, PATH: DEFAULT_PATH },
|
|
22
|
-
stdio: "pipe",
|
|
23
|
-
});
|
|
24
|
-
console.info("[updater] npm install complete");
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
console.error("[updater] npm install failed:", error.message);
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Spawn a new agent process with the same env vars, then exit this process.
|
|
34
|
-
* Preserves the provider session ID so the new agent can resume Claude context.
|
|
35
|
-
*/
|
|
36
|
-
export function respawnAgent(lastProviderSessionId) {
|
|
37
|
-
const env = { ...process.env };
|
|
38
|
-
if (lastProviderSessionId) {
|
|
39
|
-
env.AIDEN_PROVIDER_SESSION_ID = lastProviderSessionId;
|
|
40
|
-
}
|
|
41
|
-
console.info("[updater] Spawning new agent process");
|
|
42
|
-
const child = spawn("aiden-agent", [], {
|
|
43
|
-
detached: true,
|
|
44
|
-
stdio: "ignore",
|
|
45
|
-
env: { ...env, PATH: DEFAULT_PATH },
|
|
46
|
-
});
|
|
47
|
-
child.unref();
|
|
48
|
-
// Give the new process a moment to start before we exit
|
|
49
|
-
setTimeout(() => {
|
|
50
|
-
console.info("[updater] Old agent exiting after respawn");
|
|
51
|
-
process.exit(0);
|
|
52
|
-
}, 500);
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=updater.js.map
|
package/dist/updater.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,YAAY,GAAG,+GAA+G,CAAC;AAOrI;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC;IAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,0DAA0D,OAAO,GAAG,CAAC,CAAC;QACpF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,iDAAiD,OAAO,UAAU,CAAC,CAAC;QACjF,QAAQ,CAAC,2CAA2C,OAAO,EAAE,EAAE;YAC7D,OAAO,EAAE,MAAM;YACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE;YAC3C,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,qBAA8B;IACzD,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,IAAI,qBAAqB,EAAE,CAAC;QAC1B,GAAG,CAAC,yBAAyB,GAAG,qBAAqB,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE;QACrC,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;QACf,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE;KACpC,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,wDAAwD;IACxD,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,EAAE,GAAG,CAAC,CAAC;AACV,CAAC"}
|
package/dist/version.d.ts
DELETED
package/dist/version.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,UAAU,CAAC"}
|
package/dist/version.js
DELETED
package/dist/version.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC"}
|
package/dist/web-presenter.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { WSClient } from "./ws-client.js";
|
|
2
|
-
import type { AgentConfig, AgentResult, ExitPlanModeInput, UsageUpdate } from "./types.js";
|
|
3
|
-
import type { AgentPresenter } from "./types.js";
|
|
4
|
-
export declare class WebPresenter implements AgentPresenter {
|
|
5
|
-
private wsClient;
|
|
6
|
-
private conversationId;
|
|
7
|
-
private suppressSessionLifecycle;
|
|
8
|
-
constructor(wsClient: WSClient, conversationId: string);
|
|
9
|
-
setSuppressSessionLifecycle(suppress: boolean): void;
|
|
10
|
-
onStart(config: AgentConfig): void;
|
|
11
|
-
onLog(message: string): void;
|
|
12
|
-
onAssistantText(text: string): void;
|
|
13
|
-
onThinking(text: string): void;
|
|
14
|
-
onToolUse(tool: string, input: unknown, toolId: string): void;
|
|
15
|
-
onToolResult(toolId: string, content: string, isError?: boolean): void;
|
|
16
|
-
onTurnComplete(content: unknown[]): void;
|
|
17
|
-
onUsageUpdate(usage: UsageUpdate): void;
|
|
18
|
-
onAskUser(id: string, questions: unknown[]): void;
|
|
19
|
-
onTodoWrite(todos: unknown[]): void;
|
|
20
|
-
onExitPlanMode(id: string, input: ExitPlanModeInput, planFilePath?: string): void;
|
|
21
|
-
onCheckpoint(id: string): void;
|
|
22
|
-
onActivity(status: string): void;
|
|
23
|
-
onOpenBrowserTab(browserId: string, url?: string): void;
|
|
24
|
-
recordRawTranscript(): void;
|
|
25
|
-
onError(message: string, _isAgentError?: boolean): void;
|
|
26
|
-
onComplete(result: AgentResult): void;
|
|
27
|
-
/**
|
|
28
|
-
* Manually emit session lifecycle events and close.
|
|
29
|
-
* Called after the multi-turn loop exits.
|
|
30
|
-
*/
|
|
31
|
-
emitSessionEnd(result: AgentResult): Promise<void>;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=web-presenter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"web-presenter.d.ts","sourceRoot":"","sources":["../src/web-presenter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAc,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACvG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,YAAa,YAAW,cAAc;IACjD,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,wBAAwB,CAAS;gBAE7B,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM;IAKtD,2BAA2B,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIpD,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAIlC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAInC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI7D,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAUtE,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI;IAIxC,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAIvC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI;IAIjD,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI;IAInC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAIjF,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI9B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAIvD,mBAAmB,IAAI,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI;IAQvD,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAkBrC;;;OAGG;IACG,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAQzD"}
|
package/dist/web-presenter.js
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
export class WebPresenter {
|
|
2
|
-
wsClient;
|
|
3
|
-
conversationId;
|
|
4
|
-
suppressSessionLifecycle = false;
|
|
5
|
-
constructor(wsClient, conversationId) {
|
|
6
|
-
this.wsClient = wsClient;
|
|
7
|
-
this.conversationId = conversationId;
|
|
8
|
-
}
|
|
9
|
-
setSuppressSessionLifecycle(suppress) {
|
|
10
|
-
this.suppressSessionLifecycle = suppress;
|
|
11
|
-
}
|
|
12
|
-
onStart(config) {
|
|
13
|
-
this.wsClient.emitEvent({ type: "start", task: config.task, ts: Date.now() });
|
|
14
|
-
}
|
|
15
|
-
onLog(message) {
|
|
16
|
-
console.error(message);
|
|
17
|
-
}
|
|
18
|
-
onAssistantText(text) {
|
|
19
|
-
this.wsClient.emitEvent({ type: "text", text, ts: Date.now() });
|
|
20
|
-
}
|
|
21
|
-
onThinking(text) {
|
|
22
|
-
this.wsClient.emitEvent({ type: "thinking", text, ts: Date.now() });
|
|
23
|
-
}
|
|
24
|
-
onToolUse(tool, input, toolId) {
|
|
25
|
-
this.wsClient.emitEvent({ type: "tool_use", id: toolId, name: tool, input, ts: Date.now() });
|
|
26
|
-
}
|
|
27
|
-
onToolResult(toolId, content, isError) {
|
|
28
|
-
this.wsClient.emitEvent({
|
|
29
|
-
type: "tool_result",
|
|
30
|
-
id: toolId,
|
|
31
|
-
content,
|
|
32
|
-
ts: Date.now(),
|
|
33
|
-
...(isError ? { is_error: true } : {}),
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
onTurnComplete(content) {
|
|
37
|
-
this.wsClient.emitEvent({ type: "turn_complete", content, ts: Date.now() });
|
|
38
|
-
}
|
|
39
|
-
onUsageUpdate(usage) {
|
|
40
|
-
this.wsClient.emitEvent({ type: "usage", usage });
|
|
41
|
-
}
|
|
42
|
-
onAskUser(id, questions) {
|
|
43
|
-
this.wsClient.emitEvent({ type: "ask_user", id, questions });
|
|
44
|
-
}
|
|
45
|
-
onTodoWrite(todos) {
|
|
46
|
-
this.wsClient.emitEvent({ type: "todo_write", todos });
|
|
47
|
-
}
|
|
48
|
-
onExitPlanMode(id, input, planFilePath) {
|
|
49
|
-
this.wsClient.emitEvent({ type: "exit_plan_mode", id, input, ...(planFilePath ? { planFilePath } : {}) });
|
|
50
|
-
}
|
|
51
|
-
onCheckpoint(id) {
|
|
52
|
-
this.wsClient.emitEvent({ type: "checkpoint", id });
|
|
53
|
-
}
|
|
54
|
-
onActivity(status) {
|
|
55
|
-
this.wsClient.emitEvent({ type: "activity", status, ts: Date.now() });
|
|
56
|
-
}
|
|
57
|
-
onOpenBrowserTab(browserId, url) {
|
|
58
|
-
this.wsClient.emitEvent({ type: "open_browser_tab", browserId, ...(url ? { url } : {}) });
|
|
59
|
-
}
|
|
60
|
-
recordRawTranscript() {
|
|
61
|
-
// No-op for sandbox — raw transcripts stay in the container
|
|
62
|
-
}
|
|
63
|
-
onError(message, _isAgentError) {
|
|
64
|
-
this.wsClient.emitEvent({ type: "error", message });
|
|
65
|
-
if (!this.suppressSessionLifecycle) {
|
|
66
|
-
this.wsClient.emitEvent({ type: "session_error", error: message });
|
|
67
|
-
this.wsClient.close();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
onComplete(result) {
|
|
71
|
-
// Always send query_complete so the server persists query content
|
|
72
|
-
this.wsClient.emitEvent({ type: "query_complete", result, ts: Date.now() });
|
|
73
|
-
// In multi-turn mode (suppressSessionLifecycle=true), skip session lifecycle
|
|
74
|
-
if (this.suppressSessionLifecycle) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
// Single-turn mode: also send session lifecycle event and close
|
|
78
|
-
if (result.success) {
|
|
79
|
-
this.wsClient.emitEvent({ type: "session_complete", result });
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
this.wsClient.emitEvent({ type: "session_error", error: result.error || "Unknown error" });
|
|
83
|
-
}
|
|
84
|
-
this.wsClient.close();
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Manually emit session lifecycle events and close.
|
|
88
|
-
* Called after the multi-turn loop exits.
|
|
89
|
-
*/
|
|
90
|
-
async emitSessionEnd(result) {
|
|
91
|
-
if (result.success) {
|
|
92
|
-
this.wsClient.emitEvent({ type: "session_complete", result });
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
this.wsClient.emitEvent({ type: "session_error", error: result.error || "Unknown error" });
|
|
96
|
-
}
|
|
97
|
-
this.wsClient.close();
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=web-presenter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"web-presenter.js","sourceRoot":"","sources":["../src/web-presenter.ts"],"names":[],"mappings":"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"}
|
package/dist/ws-client.d.ts
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import type { AgentEvent } from "./types.js";
|
|
2
|
-
export interface ResolvedImage {
|
|
3
|
-
id: string;
|
|
4
|
-
data: string;
|
|
5
|
-
mimeType: string;
|
|
6
|
-
filename: string;
|
|
7
|
-
}
|
|
8
|
-
export interface UserMessagePayload {
|
|
9
|
-
text: string;
|
|
10
|
-
images?: ResolvedImage[];
|
|
11
|
-
providerSessionId?: string;
|
|
12
|
-
backendKind?: string;
|
|
13
|
-
agentId?: string;
|
|
14
|
-
agentPrompt?: string;
|
|
15
|
-
selectedModel?: string;
|
|
16
|
-
selectedContextWindow?: string | null;
|
|
17
|
-
selectedEffortLevel?: string | null;
|
|
18
|
-
mode?: string;
|
|
19
|
-
/** Structured task metadata for system prompt injection. */
|
|
20
|
-
taskMeta?: {
|
|
21
|
-
id: string;
|
|
22
|
-
title: string;
|
|
23
|
-
description: string | null;
|
|
24
|
-
status: string;
|
|
25
|
-
priority: string;
|
|
26
|
-
labels: string[] | null;
|
|
27
|
-
assignees: Array<{
|
|
28
|
-
name: string | null;
|
|
29
|
-
email: string;
|
|
30
|
-
}>;
|
|
31
|
-
descriptionAttachmentIds?: Array<{
|
|
32
|
-
id: string;
|
|
33
|
-
filename: string;
|
|
34
|
-
}>;
|
|
35
|
-
};
|
|
36
|
-
/** Workflow tool allowlist (present when triggered from a workflow). */
|
|
37
|
-
workflowTools?: Array<{
|
|
38
|
-
type: string;
|
|
39
|
-
id: string;
|
|
40
|
-
}>;
|
|
41
|
-
/** Agent run ID for status tracking. */
|
|
42
|
-
runId?: string;
|
|
43
|
-
/** Message ID that triggered this run. */
|
|
44
|
-
messageId?: string;
|
|
45
|
-
/** Maximum number of agent iterations. */
|
|
46
|
-
maxIterations?: number;
|
|
47
|
-
/** Task ID for MCP artifact creation. */
|
|
48
|
-
taskId?: string;
|
|
49
|
-
/** Conversation ID for MCP artifact creation. */
|
|
50
|
-
conversationId?: string;
|
|
51
|
-
/** Role attached to this conversation. */
|
|
52
|
-
/** Team ID of the active team context — injected into system prompt for MCP calls. */
|
|
53
|
-
teamId?: string;
|
|
54
|
-
/** User who initiated the run. */
|
|
55
|
-
currentUser?: {
|
|
56
|
-
id: string;
|
|
57
|
-
name: string | null;
|
|
58
|
-
email: string;
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
export interface WSClientCallbacks {
|
|
62
|
-
onUserMessage: (payload: UserMessagePayload) => void;
|
|
63
|
-
onStop: () => void;
|
|
64
|
-
onToolResponse?: (toolId: string, response: string) => void;
|
|
65
|
-
onConnect?: () => void;
|
|
66
|
-
onDisconnect?: (reason: string) => void;
|
|
67
|
-
}
|
|
68
|
-
export declare class WSClient {
|
|
69
|
-
private socket;
|
|
70
|
-
constructor(wsUrl: string, sessionId: string, // conversationId
|
|
71
|
-
taskId: string, token: string, // sandboxSessionToken
|
|
72
|
-
callbacks: WSClientCallbacks, agentVersion?: string);
|
|
73
|
-
emitEvent(event: AgentEvent): void;
|
|
74
|
-
waitForConnection(timeoutMs?: number): Promise<void>;
|
|
75
|
-
get connected(): boolean;
|
|
76
|
-
close(): void;
|
|
77
|
-
private setupListeners;
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=ws-client.d.ts.map
|
package/dist/ws-client.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ws-client.d.ts","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}
|
package/dist/ws-client.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { io } from "socket.io-client";
|
|
2
|
-
export class WSClient {
|
|
3
|
-
socket;
|
|
4
|
-
constructor(wsUrl, sessionId, // conversationId
|
|
5
|
-
taskId, token, // sandboxSessionToken
|
|
6
|
-
callbacks, agentVersion) {
|
|
7
|
-
this.socket = io(wsUrl, {
|
|
8
|
-
query: { type: "agent", sessionId, taskId, agentVersion: agentVersion ?? "" },
|
|
9
|
-
auth: { token },
|
|
10
|
-
transports: ["websocket"],
|
|
11
|
-
reconnection: true,
|
|
12
|
-
reconnectionAttempts: Infinity,
|
|
13
|
-
reconnectionDelay: 1000,
|
|
14
|
-
reconnectionDelayMax: 5000,
|
|
15
|
-
timeout: 20_000,
|
|
16
|
-
upgrade: false,
|
|
17
|
-
extraHeaders: { "ngrok-skip-browser-warning": "1" },
|
|
18
|
-
});
|
|
19
|
-
this.setupListeners(callbacks);
|
|
20
|
-
}
|
|
21
|
-
emitEvent(event) {
|
|
22
|
-
this.socket.emit("agent_event", event);
|
|
23
|
-
}
|
|
24
|
-
waitForConnection(timeoutMs = 15000) {
|
|
25
|
-
return new Promise((resolve, reject) => {
|
|
26
|
-
if (this.socket.connected) {
|
|
27
|
-
resolve();
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
const timeout = setTimeout(() => reject(new Error(`WSClient connection timeout after ${timeoutMs}ms`)), timeoutMs);
|
|
31
|
-
this.socket.once("connect", () => { clearTimeout(timeout); resolve(); });
|
|
32
|
-
this.socket.once("connect_error", (err) => { clearTimeout(timeout); reject(new Error(`WSClient connection failed: ${err.message}`)); });
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
get connected() { return this.socket.connected; }
|
|
36
|
-
close() { this.socket.disconnect(); }
|
|
37
|
-
setupListeners(callbacks) {
|
|
38
|
-
this.socket.on("connect", () => { console.debug("[WSClient] Connected to WS server"); callbacks.onConnect?.(); });
|
|
39
|
-
this.socket.on("disconnect", (reason) => { console.debug(`[WSClient] Disconnected: ${reason}`); callbacks.onDisconnect?.(reason); });
|
|
40
|
-
this.socket.on("connect_error", (error) => { console.warn(`[WSClient] Connection error: ${error.message}`); });
|
|
41
|
-
this.socket.on("user_message", (data, ack) => {
|
|
42
|
-
ack?.({ ok: true });
|
|
43
|
-
callbacks.onUserMessage({
|
|
44
|
-
text: data.text,
|
|
45
|
-
images: data.images,
|
|
46
|
-
providerSessionId: data.providerSessionId,
|
|
47
|
-
backendKind: data.backendKind,
|
|
48
|
-
agentId: data.agentId,
|
|
49
|
-
agentPrompt: data.agentPrompt,
|
|
50
|
-
selectedModel: data.selectedModel,
|
|
51
|
-
selectedContextWindow: data.selectedContextWindow,
|
|
52
|
-
selectedEffortLevel: data.selectedEffortLevel,
|
|
53
|
-
mode: data.mode,
|
|
54
|
-
taskMeta: data.taskMeta,
|
|
55
|
-
workflowTools: data.workflowTools,
|
|
56
|
-
runId: data.runId,
|
|
57
|
-
messageId: data.messageId,
|
|
58
|
-
maxIterations: data.maxIterations,
|
|
59
|
-
taskId: data.taskId,
|
|
60
|
-
conversationId: data.conversationId,
|
|
61
|
-
teamId: data.teamId,
|
|
62
|
-
currentUser: data.currentUser,
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
this.socket.on("stop", () => { callbacks.onStop(); });
|
|
66
|
-
this.socket.on("tool_response", (data) => {
|
|
67
|
-
if (data?.toolId && typeof data.response === "string") {
|
|
68
|
-
callbacks.onToolResponse?.(data.toolId, data.response);
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
this.socket.on("error", (data) => { console.error(`[WSClient] Server error: ${data.message} (${data.code})`); });
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=ws-client.js.map
|
package/dist/ws-client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}
|