@aiden-ade/sandbox-agent 0.1.15 → 0.1.17

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.
@@ -0,0 +1,79 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-client.d.ts","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiden-ade/sandbox-agent",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "aiden-agent": "./dist/index.cjs"
@@ -11,22 +11,21 @@
11
11
  "publishConfig": {
12
12
  "access": "public"
13
13
  },
14
- "scripts": {
15
- "build": "tsup",
16
- "dev": "tsx src/index.ts",
17
- "prepack": "pnpm build",
18
- "test": "vitest run",
19
- "type-check": "tsc --noEmit"
20
- },
21
14
  "dependencies": {},
22
15
  "devDependencies": {
23
- "@aiden/agent-core": "workspace:*",
24
- "@aiden/shared": "workspace:*",
25
16
  "socket.io-client": "^4.8.0",
26
17
  "socket.io": "^4.8.0",
27
18
  "@types/node": "^22.0.0",
28
19
  "tsup": "^8.5.1",
29
20
  "tsx": "^4.19.0",
30
- "typescript": "~5.9.3"
21
+ "typescript": "~5.9.3",
22
+ "@aiden/agent-core": "0.1.0",
23
+ "@aiden/shared": "0.1.0"
24
+ },
25
+ "scripts": {
26
+ "build": "tsup",
27
+ "dev": "tsx src/index.ts",
28
+ "test": "vitest run",
29
+ "type-check": "tsc --noEmit"
31
30
  }
32
- }
31
+ }