@action-llama/action-llama 0.26.10 → 0.26.12
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/agents/bash-prefix.d.ts +1 -1
- package/dist/agents/bash-prefix.js +2 -2
- package/dist/agents/container-entry.d.ts.map +1 -1
- package/dist/agents/container-entry.js +12 -16
- package/dist/agents/container-entry.js.map +1 -1
- package/dist/agents/credential-setup.d.ts +1 -0
- package/dist/agents/credential-setup.d.ts.map +1 -1
- package/dist/agents/credential-setup.js +21 -0
- package/dist/agents/credential-setup.js.map +1 -1
- package/dist/agents/harness/claude-cli-harness.d.ts +15 -0
- package/dist/agents/harness/claude-cli-harness.d.ts.map +1 -0
- package/dist/agents/harness/claude-cli-harness.js +229 -0
- package/dist/agents/harness/claude-cli-harness.js.map +1 -0
- package/dist/agents/harness/consumer.d.ts +15 -0
- package/dist/agents/harness/consumer.d.ts.map +1 -0
- package/dist/agents/harness/consumer.js +115 -0
- package/dist/agents/harness/consumer.js.map +1 -0
- package/dist/agents/harness/factory.d.ts +9 -0
- package/dist/agents/harness/factory.d.ts.map +1 -0
- package/dist/agents/harness/factory.js +25 -0
- package/dist/agents/harness/factory.js.map +1 -0
- package/dist/agents/harness/index.d.ts +9 -0
- package/dist/agents/harness/index.d.ts.map +1 -0
- package/dist/agents/harness/index.js +5 -0
- package/dist/agents/harness/index.js.map +1 -0
- package/dist/agents/harness/pi-harness.d.ts +18 -0
- package/dist/agents/harness/pi-harness.d.ts.map +1 -0
- package/dist/agents/harness/pi-harness.js +203 -0
- package/dist/agents/harness/pi-harness.js.map +1 -0
- package/dist/agents/harness/types.d.ts +54 -0
- package/dist/agents/harness/types.d.ts.map +1 -0
- package/dist/agents/harness/types.js +2 -0
- package/dist/{chat → agents/harness}/types.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/cli/commands/run-agent.d.ts.map +1 -1
- package/dist/cli/commands/run-agent.js +12 -9
- package/dist/cli/commands/run-agent.js.map +1 -1
- package/dist/cli/commands/webhook.js +1 -5
- package/dist/cli/commands/webhook.js.map +1 -1
- package/dist/cli/main.js +0 -10
- package/dist/cli/main.js.map +1 -1
- package/dist/control/routes/stats.d.ts.map +1 -1
- package/dist/control/routes/stats.js +1 -4
- package/dist/control/routes/stats.js.map +1 -1
- package/dist/events/webhook-setup.d.ts.map +1 -1
- package/dist/events/webhook-setup.js +16 -1
- package/dist/events/webhook-setup.js.map +1 -1
- package/dist/execution/execution.d.ts.map +1 -1
- package/dist/execution/execution.js +10 -0
- package/dist/execution/execution.js.map +1 -1
- package/dist/execution/lock-store.d.ts +4 -2
- package/dist/execution/lock-store.d.ts.map +1 -1
- package/dist/execution/lock-store.js +6 -8
- package/dist/execution/lock-store.js.map +1 -1
- package/dist/frontend/assets/index-CLzpDcLm.css +2 -0
- package/dist/frontend/assets/{index-CDp1ALeQ.js → index-Dx2aJ_Db.js} +2 -2
- package/dist/frontend/assets/index-Dx2aJ_Db.js.map +1 -0
- package/dist/frontend/index.html +2 -2
- package/dist/gateway/frontend.d.ts +2 -2
- package/dist/gateway/frontend.d.ts.map +1 -1
- package/dist/gateway/frontend.js +2 -4
- package/dist/gateway/frontend.js.map +1 -1
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +3 -29
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/middleware/auth.d.ts +1 -1
- package/dist/gateway/middleware/auth.d.ts.map +1 -1
- package/dist/gateway/middleware/auth.js +2 -3
- package/dist/gateway/middleware/auth.js.map +1 -1
- package/dist/gateway/types.d.ts +0 -11
- package/dist/gateway/types.d.ts.map +1 -1
- package/dist/scheduler/gateway-setup.d.ts +0 -3
- package/dist/scheduler/gateway-setup.d.ts.map +1 -1
- package/dist/scheduler/gateway-setup.js +1 -43
- package/dist/scheduler/gateway-setup.js.map +1 -1
- package/dist/scheduler/index.js +4 -3
- package/dist/scheduler/index.js.map +1 -1
- package/dist/shared/config/load-agent.d.ts.map +1 -1
- package/dist/shared/config/load-agent.js +10 -0
- package/dist/shared/config/load-agent.js.map +1 -1
- package/dist/shared/config/load-project.d.ts.map +1 -1
- package/dist/shared/config/load-project.js +8 -0
- package/dist/shared/config/load-project.js.map +1 -1
- package/dist/shared/config/types.d.ts +7 -1
- package/dist/shared/config/types.d.ts.map +1 -1
- package/dist/shared/validation.d.ts.map +1 -1
- package/dist/shared/validation.js +18 -3
- package/dist/shared/validation.js.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +0 -4
- package/dist/tui/App.js.map +1 -1
- package/dist/webhooks/types.d.ts +1 -0
- package/dist/webhooks/types.d.ts.map +1 -1
- package/docker/Dockerfile +2 -1
- package/package.json +1 -1
- package/dist/agents/chat-entry.d.ts +0 -9
- package/dist/agents/chat-entry.d.ts.map +0 -1
- package/dist/agents/chat-entry.js +0 -165
- package/dist/agents/chat-entry.js.map +0 -1
- package/dist/agents/session-factory.d.ts +0 -13
- package/dist/agents/session-factory.d.ts.map +0 -1
- package/dist/agents/session-factory.js +0 -28
- package/dist/agents/session-factory.js.map +0 -1
- package/dist/chat/container-launcher.d.ts +0 -38
- package/dist/chat/container-launcher.d.ts.map +0 -1
- package/dist/chat/container-launcher.js +0 -120
- package/dist/chat/container-launcher.js.map +0 -1
- package/dist/chat/event-mapper.d.ts +0 -27
- package/dist/chat/event-mapper.d.ts.map +0 -1
- package/dist/chat/event-mapper.js +0 -56
- package/dist/chat/event-mapper.js.map +0 -1
- package/dist/chat/ink-adapter.d.ts +0 -9
- package/dist/chat/ink-adapter.d.ts.map +0 -1
- package/dist/chat/ink-adapter.js +0 -120
- package/dist/chat/ink-adapter.js.map +0 -1
- package/dist/chat/local-transport.d.ts +0 -28
- package/dist/chat/local-transport.d.ts.map +0 -1
- package/dist/chat/local-transport.js +0 -68
- package/dist/chat/local-transport.js.map +0 -1
- package/dist/chat/remote-transport.d.ts +0 -30
- package/dist/chat/remote-transport.d.ts.map +0 -1
- package/dist/chat/remote-transport.js +0 -110
- package/dist/chat/remote-transport.js.map +0 -1
- package/dist/chat/routes.d.ts +0 -10
- package/dist/chat/routes.d.ts.map +0 -1
- package/dist/chat/routes.js +0 -94
- package/dist/chat/routes.js.map +0 -1
- package/dist/chat/session-manager.d.ts +0 -22
- package/dist/chat/session-manager.d.ts.map +0 -1
- package/dist/chat/session-manager.js +0 -77
- package/dist/chat/session-manager.js.map +0 -1
- package/dist/chat/transport.d.ts +0 -15
- package/dist/chat/transport.d.ts.map +0 -1
- package/dist/chat/transport.js +0 -5
- package/dist/chat/transport.js.map +0 -1
- package/dist/chat/types.d.ts +0 -51
- package/dist/chat/types.d.ts.map +0 -1
- package/dist/chat/types.js +0 -7
- package/dist/chat/validation.d.ts +0 -30
- package/dist/chat/validation.d.ts.map +0 -1
- package/dist/chat/validation.js +0 -79
- package/dist/chat/validation.js.map +0 -1
- package/dist/chat/ws-handler.d.ts +0 -32
- package/dist/chat/ws-handler.d.ts.map +0 -1
- package/dist/chat/ws-handler.js +0 -234
- package/dist/chat/ws-handler.js.map +0 -1
- package/dist/cli/commands/chat.d.ts +0 -7
- package/dist/cli/commands/chat.d.ts.map +0 -1
- package/dist/cli/commands/chat.js +0 -436
- package/dist/cli/commands/chat.js.map +0 -1
- package/dist/frontend/assets/index-CDp1ALeQ.js.map +0 -1
- package/dist/frontend/assets/index-EMdmdqAZ.css +0 -2
- package/dist/gateway/routes/chat.d.ts +0 -32
- package/dist/gateway/routes/chat.d.ts.map +0 -1
- package/dist/gateway/routes/chat.js +0 -24
- package/dist/gateway/routes/chat.js.map +0 -1
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Launches and manages containers for chat sessions.
|
|
3
|
-
*
|
|
4
|
-
* Similar to ContainerAgentRunner but for interactive chat:
|
|
5
|
-
* - Sets AL_CHAT_MODE=1, AL_CHAT_SESSION_ID env vars
|
|
6
|
-
* - No PROMPT, no hard timeout
|
|
7
|
-
* - Reuses ContainerRuntime.launch() and prepareCredentials()
|
|
8
|
-
*/
|
|
9
|
-
import { randomUUID } from "crypto";
|
|
10
|
-
export class ChatContainerLauncher {
|
|
11
|
-
runtime;
|
|
12
|
-
globalConfig;
|
|
13
|
-
agentConfigs;
|
|
14
|
-
gatewayUrl;
|
|
15
|
-
logger;
|
|
16
|
-
sessionManager;
|
|
17
|
-
images;
|
|
18
|
-
registerContainer;
|
|
19
|
-
unregisterContainer;
|
|
20
|
-
sessionCredentials = new Map();
|
|
21
|
-
constructor(opts) {
|
|
22
|
-
this.runtime = opts.runtime;
|
|
23
|
-
this.globalConfig = opts.globalConfig;
|
|
24
|
-
this.agentConfigs = opts.agentConfigs;
|
|
25
|
-
this.gatewayUrl = opts.gatewayUrl;
|
|
26
|
-
this.logger = opts.logger;
|
|
27
|
-
this.sessionManager = opts.sessionManager;
|
|
28
|
-
this.images = opts.images;
|
|
29
|
-
this.registerContainer = opts.registerContainer ?? (() => Promise.resolve());
|
|
30
|
-
this.unregisterContainer = opts.unregisterContainer ?? (() => Promise.resolve());
|
|
31
|
-
}
|
|
32
|
-
async launchChatContainer(agentName, sessionId) {
|
|
33
|
-
const agentConfig = this.agentConfigs.find((a) => a.name === agentName);
|
|
34
|
-
if (!agentConfig) {
|
|
35
|
-
throw new Error(`Agent "${agentName}" not found`);
|
|
36
|
-
}
|
|
37
|
-
const image = this.images.get(agentName);
|
|
38
|
-
if (!image) {
|
|
39
|
-
throw new Error(`No image available for agent "${agentName}". Has the agent been built?`);
|
|
40
|
-
}
|
|
41
|
-
// Resolve credential refs
|
|
42
|
-
const credRefs = [...new Set(agentConfig.credentials)];
|
|
43
|
-
for (const mc of agentConfig.models) {
|
|
44
|
-
if (mc.authType === "pi_auth")
|
|
45
|
-
continue;
|
|
46
|
-
const providerKey = `${mc.provider}_key`;
|
|
47
|
-
if (!credRefs.some((r) => r === providerKey || r.startsWith(`${providerKey}:`))) {
|
|
48
|
-
credRefs.push(providerKey);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
const credentials = await this.runtime.prepareCredentials(credRefs);
|
|
52
|
-
// Generate shutdown secret for gateway registration (enables lock release on stop)
|
|
53
|
-
const shutdownSecret = randomUUID();
|
|
54
|
-
const instanceId = `${agentName}-chat-${sessionId.slice(0, 8)}`;
|
|
55
|
-
const env = {
|
|
56
|
-
AL_CHAT_MODE: "1",
|
|
57
|
-
AL_CHAT_SESSION_ID: sessionId,
|
|
58
|
-
GATEWAY_URL: this.gatewayUrl,
|
|
59
|
-
SHUTDOWN_SECRET: shutdownSecret,
|
|
60
|
-
};
|
|
61
|
-
const containerName = await this.runtime.launch({
|
|
62
|
-
image,
|
|
63
|
-
agentName: instanceId,
|
|
64
|
-
env,
|
|
65
|
-
credentials,
|
|
66
|
-
memory: this.globalConfig.local?.memory,
|
|
67
|
-
cpus: this.globalConfig.local?.cpus,
|
|
68
|
-
});
|
|
69
|
-
this.sessionManager.setContainerName(sessionId, containerName);
|
|
70
|
-
// Register with gateway so locks are released when container stops
|
|
71
|
-
try {
|
|
72
|
-
await this.registerContainer(shutdownSecret, {
|
|
73
|
-
containerName,
|
|
74
|
-
agentName,
|
|
75
|
-
instanceId,
|
|
76
|
-
});
|
|
77
|
-
this.sessionManager.setShutdownSecret(sessionId, shutdownSecret);
|
|
78
|
-
this.sessionCredentials.set(sessionId, credentials);
|
|
79
|
-
}
|
|
80
|
-
catch (err) {
|
|
81
|
-
this.logger.warn({ sessionId, err: err.message }, "failed to register chat container with gateway");
|
|
82
|
-
}
|
|
83
|
-
this.logger.info({ agentName, sessionId, containerName }, "chat container launched");
|
|
84
|
-
return containerName;
|
|
85
|
-
}
|
|
86
|
-
async stopChatContainer(sessionId) {
|
|
87
|
-
const session = this.sessionManager.getSession(sessionId);
|
|
88
|
-
if (!session?.containerName)
|
|
89
|
-
return;
|
|
90
|
-
// Release locks via gateway unregister (calls lockStore.releaseAll)
|
|
91
|
-
if (session.shutdownSecret) {
|
|
92
|
-
try {
|
|
93
|
-
await this.unregisterContainer(session.shutdownSecret);
|
|
94
|
-
}
|
|
95
|
-
catch (err) {
|
|
96
|
-
this.logger.warn({ sessionId, err: err.message }, "failed to unregister chat container");
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
// Clean up credentials
|
|
100
|
-
const creds = this.sessionCredentials.get(sessionId);
|
|
101
|
-
if (creds) {
|
|
102
|
-
this.runtime.cleanupCredentials(creds);
|
|
103
|
-
this.sessionCredentials.delete(sessionId);
|
|
104
|
-
}
|
|
105
|
-
try {
|
|
106
|
-
await this.runtime.kill(session.containerName);
|
|
107
|
-
}
|
|
108
|
-
catch (err) {
|
|
109
|
-
this.logger.warn({ sessionId, err: err.message }, "failed to kill chat container");
|
|
110
|
-
}
|
|
111
|
-
try {
|
|
112
|
-
await this.runtime.remove(session.containerName);
|
|
113
|
-
}
|
|
114
|
-
catch {
|
|
115
|
-
// Container may already be removed
|
|
116
|
-
}
|
|
117
|
-
this.logger.info({ sessionId, containerName: session.containerName }, "chat container stopped");
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=container-launcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"container-launcher.js","sourceRoot":"","sources":["../../src/chat/container-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Maps PI agent events to ChatOutbound messages.
|
|
3
|
-
*
|
|
4
|
-
* Pure function — reused by LocalTransport and chat container entrypoint.
|
|
5
|
-
*/
|
|
6
|
-
import type { ChatOutbound } from "./types.js";
|
|
7
|
-
/**
|
|
8
|
-
* PI agent event (subset of fields we care about).
|
|
9
|
-
* Using a loose type to avoid tight coupling to pi-coding-agent internals.
|
|
10
|
-
*/
|
|
11
|
-
export interface AgentEvent {
|
|
12
|
-
type: string;
|
|
13
|
-
assistantMessageEvent?: {
|
|
14
|
-
type: string;
|
|
15
|
-
delta?: string;
|
|
16
|
-
};
|
|
17
|
-
toolCallId?: string;
|
|
18
|
-
toolName?: string;
|
|
19
|
-
args?: Record<string, unknown>;
|
|
20
|
-
result?: unknown;
|
|
21
|
-
isError?: boolean;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Map a single PI AgentEvent to zero or more ChatOutbound messages.
|
|
25
|
-
*/
|
|
26
|
-
export declare function mapAgentEvent(event: AgentEvent): ChatOutbound[];
|
|
27
|
-
//# sourceMappingURL=event-mapper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-mapper.d.ts","sourceRoot":"","sources":["../../src/chat/event-mapper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB,CAAC,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,EAAE,CAmD/D"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Maps PI agent events to ChatOutbound messages.
|
|
3
|
-
*
|
|
4
|
-
* Pure function — reused by LocalTransport and chat container entrypoint.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Map a single PI AgentEvent to zero or more ChatOutbound messages.
|
|
8
|
-
*/
|
|
9
|
-
export function mapAgentEvent(event) {
|
|
10
|
-
const out = [];
|
|
11
|
-
switch (event.type) {
|
|
12
|
-
case "message_update":
|
|
13
|
-
if (event.assistantMessageEvent?.type === "text_delta" && event.assistantMessageEvent.delta) {
|
|
14
|
-
out.push({
|
|
15
|
-
type: "assistant_message",
|
|
16
|
-
text: event.assistantMessageEvent.delta,
|
|
17
|
-
done: false,
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
break;
|
|
21
|
-
case "agent_end":
|
|
22
|
-
case "turn_end":
|
|
23
|
-
out.push({
|
|
24
|
-
type: "assistant_message",
|
|
25
|
-
text: "",
|
|
26
|
-
done: true,
|
|
27
|
-
});
|
|
28
|
-
break;
|
|
29
|
-
case "tool_execution_start":
|
|
30
|
-
if (event.toolCallId && event.toolName) {
|
|
31
|
-
out.push({
|
|
32
|
-
type: "tool_start",
|
|
33
|
-
toolCallId: event.toolCallId,
|
|
34
|
-
tool: event.toolName,
|
|
35
|
-
input: event.args ? JSON.stringify(event.args) : "",
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
break;
|
|
39
|
-
case "tool_execution_end":
|
|
40
|
-
if (event.toolCallId && event.toolName) {
|
|
41
|
-
const resultStr = typeof event.result === "string"
|
|
42
|
-
? event.result
|
|
43
|
-
: JSON.stringify(event.result ?? "");
|
|
44
|
-
out.push({
|
|
45
|
-
type: "tool_result",
|
|
46
|
-
toolCallId: event.toolCallId,
|
|
47
|
-
tool: event.toolName,
|
|
48
|
-
output: resultStr,
|
|
49
|
-
error: event.isError || undefined,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
break;
|
|
53
|
-
}
|
|
54
|
-
return out;
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=event-mapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-mapper.js","sourceRoot":"","sources":["../../src/chat/event-mapper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqBH;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,MAAM,GAAG,GAAmB,EAAE,CAAC;IAE/B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,gBAAgB;YACnB,IAAI,KAAK,CAAC,qBAAqB,EAAE,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;gBAC5F,GAAG,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,mBAAmB;oBACzB,IAAI,EAAE,KAAK,CAAC,qBAAqB,CAAC,KAAK;oBACvC,IAAI,EAAE,KAAK;iBACZ,CAAC,CAAC;YACL,CAAC;YACD,MAAM;QAER,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU;YACb,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;YACH,MAAM;QAER,KAAK,sBAAsB;YACzB,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACvC,GAAG,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,YAAY;oBAClB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,IAAI,EAAE,KAAK,CAAC,QAAQ;oBACpB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;iBACpD,CAAC,CAAC;YACL,CAAC;YACD,MAAM;QAER,KAAK,oBAAoB;YACvB,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACvC,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;oBAChD,CAAC,CAAC,KAAK,CAAC,MAAM;oBACd,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBACvC,GAAG,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,aAAa;oBACnB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,IAAI,EAAE,KAAK,CAAC,QAAQ;oBACpB,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS;iBAClC,CAAC,CAAC;YACL,CAAC;YACD,MAAM;IACV,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ink-based terminal UI for ChatTransport.
|
|
3
|
-
*
|
|
4
|
-
* Used by `al chat <agent> --env <name>` (remote mode) to render
|
|
5
|
-
* streaming chat in the terminal.
|
|
6
|
-
*/
|
|
7
|
-
import type { ChatTransport } from "./transport.js";
|
|
8
|
-
export declare function runChatTUI(transport: ChatTransport, agentName: string): Promise<void>;
|
|
9
|
-
//# sourceMappingURL=ink-adapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ink-adapter.d.ts","sourceRoot":"","sources":["../../src/chat/ink-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AA8IpD,wBAAsB,UAAU,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3F"}
|
package/dist/chat/ink-adapter.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ink-based terminal UI for ChatTransport.
|
|
3
|
-
*
|
|
4
|
-
* Used by `al chat <agent> --env <name>` (remote mode) to render
|
|
5
|
-
* streaming chat in the terminal.
|
|
6
|
-
*/
|
|
7
|
-
import React, { useState, useEffect } from "react";
|
|
8
|
-
import { render, Box, Text, useInput, useApp } from "ink";
|
|
9
|
-
function ChatApp({ transport, agentName }) {
|
|
10
|
-
const [messages, setMessages] = useState([]);
|
|
11
|
-
const [input, setInput] = useState("");
|
|
12
|
-
const [streaming, setStreaming] = useState(false);
|
|
13
|
-
const { exit } = useApp();
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
const unsub = transport.onMessage((msg) => {
|
|
16
|
-
switch (msg.type) {
|
|
17
|
-
case "assistant_message":
|
|
18
|
-
if (msg.done) {
|
|
19
|
-
setStreaming(false);
|
|
20
|
-
// Finalize the streaming message
|
|
21
|
-
setMessages((prev) => {
|
|
22
|
-
const last = prev[prev.length - 1];
|
|
23
|
-
if (last?.role === "assistant" && !last.done) {
|
|
24
|
-
return [...prev.slice(0, -1), { ...last, done: true }];
|
|
25
|
-
}
|
|
26
|
-
return prev;
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
setStreaming(true);
|
|
31
|
-
setMessages((prev) => {
|
|
32
|
-
const last = prev[prev.length - 1];
|
|
33
|
-
if (last?.role === "assistant" && !last.done) {
|
|
34
|
-
return [...prev.slice(0, -1), { ...last, text: last.text + msg.text }];
|
|
35
|
-
}
|
|
36
|
-
return [...prev, { role: "assistant", text: msg.text, done: false }];
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
break;
|
|
40
|
-
case "tool_start":
|
|
41
|
-
setMessages((prev) => [
|
|
42
|
-
...prev,
|
|
43
|
-
{ role: "tool", text: `[${msg.tool}] ${msg.input.slice(0, 200)}`, toolName: msg.tool },
|
|
44
|
-
]);
|
|
45
|
-
break;
|
|
46
|
-
case "tool_result":
|
|
47
|
-
setMessages((prev) => [
|
|
48
|
-
...prev,
|
|
49
|
-
{
|
|
50
|
-
role: "tool",
|
|
51
|
-
text: `[${msg.tool}] ${msg.error ? "ERROR: " : ""}${msg.output.slice(0, 500)}`,
|
|
52
|
-
toolName: msg.tool,
|
|
53
|
-
},
|
|
54
|
-
]);
|
|
55
|
-
break;
|
|
56
|
-
case "error":
|
|
57
|
-
setMessages((prev) => [...prev, { role: "error", text: msg.message }]);
|
|
58
|
-
setStreaming(false);
|
|
59
|
-
break;
|
|
60
|
-
case "heartbeat":
|
|
61
|
-
// Ignore
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
return unsub;
|
|
66
|
-
}, [transport]);
|
|
67
|
-
useInput((inputChar, key) => {
|
|
68
|
-
if (key.ctrl && inputChar === "c") {
|
|
69
|
-
if (streaming) {
|
|
70
|
-
transport.send({ type: "cancel" });
|
|
71
|
-
setStreaming(false);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
transport.send({ type: "shutdown" });
|
|
75
|
-
transport.close().then(() => exit());
|
|
76
|
-
}
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
if (key.ctrl && inputChar === "d") {
|
|
80
|
-
transport.send({ type: "shutdown" });
|
|
81
|
-
transport.close().then(() => exit());
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
if (key.return) {
|
|
85
|
-
if (input.trim() && !streaming) {
|
|
86
|
-
const text = input.trim();
|
|
87
|
-
setMessages((prev) => [...prev, { role: "user", text, done: true }]);
|
|
88
|
-
setInput("");
|
|
89
|
-
transport.send({ type: "user_message", text });
|
|
90
|
-
}
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
if (key.backspace || key.delete) {
|
|
94
|
-
setInput((prev) => prev.slice(0, -1));
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
if (inputChar && !key.ctrl && !key.meta) {
|
|
98
|
-
setInput((prev) => prev + inputChar);
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
// Show last N messages to avoid terminal overflow
|
|
102
|
-
const visibleMessages = messages.slice(-30);
|
|
103
|
-
return React.createElement(Box, { flexDirection: "column", padding: 1 }, React.createElement(Text, { bold: true, color: "cyan" }, `Chat: ${agentName}`), React.createElement(Text, { dimColor: true }, "Ctrl+C = cancel/exit, Ctrl+D = exit"), React.createElement(Box, { flexDirection: "column", marginTop: 1 }, ...visibleMessages.map((msg, i) => {
|
|
104
|
-
switch (msg.role) {
|
|
105
|
-
case "user":
|
|
106
|
-
return React.createElement(Text, { key: i, color: "green" }, `> ${msg.text}`);
|
|
107
|
-
case "assistant":
|
|
108
|
-
return React.createElement(Text, { key: i, color: "white" }, msg.text);
|
|
109
|
-
case "tool":
|
|
110
|
-
return React.createElement(Text, { key: i, dimColor: true }, msg.text);
|
|
111
|
-
case "error":
|
|
112
|
-
return React.createElement(Text, { key: i, color: "red" }, `Error: ${msg.text}`);
|
|
113
|
-
}
|
|
114
|
-
})), React.createElement(Box, { marginTop: 1 }, React.createElement(Text, { color: streaming ? "yellow" : "green" }, streaming ? "(streaming...) " : "> "), React.createElement(Text, null, input), React.createElement(Text, { dimColor: true }, "\u2588")));
|
|
115
|
-
}
|
|
116
|
-
export async function runChatTUI(transport, agentName) {
|
|
117
|
-
const app = render(React.createElement(ChatApp, { transport, agentName }));
|
|
118
|
-
await app.waitUntilExit();
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=ink-adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ink-adapter.js","sourceRoot":"","sources":["../../src/chat/ink-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LocalTransport — ChatTransport backed by a local PI agent session.
|
|
3
|
-
*
|
|
4
|
-
* Used for `al chat <agent>` without --env (local mode).
|
|
5
|
-
*/
|
|
6
|
-
import type { ChatTransport } from "./transport.js";
|
|
7
|
-
import type { ChatInbound, ChatOutbound } from "./types.js";
|
|
8
|
-
export interface LocalTransportOptions {
|
|
9
|
-
/** PI agent session (from createAgentSession). */
|
|
10
|
-
session: {
|
|
11
|
-
prompt(text: string): Promise<any>;
|
|
12
|
-
dispose(): void;
|
|
13
|
-
subscribe(handler: (event: any) => void): void;
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
export declare class LocalTransport implements ChatTransport {
|
|
17
|
-
private session;
|
|
18
|
-
private handlers;
|
|
19
|
-
private _connected;
|
|
20
|
-
private agentBusy;
|
|
21
|
-
constructor(opts: LocalTransportOptions);
|
|
22
|
-
get connected(): boolean;
|
|
23
|
-
send(msg: ChatInbound): void;
|
|
24
|
-
onMessage(handler: (msg: ChatOutbound) => void): () => void;
|
|
25
|
-
close(): Promise<void>;
|
|
26
|
-
private emit;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=local-transport.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-transport.d.ts","sourceRoot":"","sources":["../../src/chat/local-transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5D,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,OAAO,EAAE;QACP,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,IAAI,IAAI,CAAC;QAChB,SAAS,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;KAChD,CAAC;CACH;AAED,qBAAa,cAAe,YAAW,aAAa;IAClD,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,qBAAqB;IAevC,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IA4B5B,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI;IAKrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,OAAO,CAAC,IAAI;CAKb"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LocalTransport — ChatTransport backed by a local PI agent session.
|
|
3
|
-
*
|
|
4
|
-
* Used for `al chat <agent>` without --env (local mode).
|
|
5
|
-
*/
|
|
6
|
-
import { mapAgentEvent } from "./event-mapper.js";
|
|
7
|
-
export class LocalTransport {
|
|
8
|
-
session;
|
|
9
|
-
handlers = new Set();
|
|
10
|
-
_connected = true;
|
|
11
|
-
agentBusy = false;
|
|
12
|
-
constructor(opts) {
|
|
13
|
-
this.session = opts.session;
|
|
14
|
-
// Subscribe to session events and map to ChatOutbound
|
|
15
|
-
this.session.subscribe((event) => {
|
|
16
|
-
const outbound = mapAgentEvent(event);
|
|
17
|
-
for (const msg of outbound) {
|
|
18
|
-
if (msg.type === "assistant_message" && msg.done) {
|
|
19
|
-
this.agentBusy = false;
|
|
20
|
-
}
|
|
21
|
-
this.emit(msg);
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
get connected() {
|
|
26
|
-
return this._connected;
|
|
27
|
-
}
|
|
28
|
-
send(msg) {
|
|
29
|
-
switch (msg.type) {
|
|
30
|
-
case "user_message":
|
|
31
|
-
if (this.agentBusy) {
|
|
32
|
-
this.emit({ type: "error", message: "Agent is busy processing. Please wait." });
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
this.agentBusy = true;
|
|
36
|
-
this.session.prompt(msg.text).catch((err) => {
|
|
37
|
-
this.emit({ type: "error", message: err.message });
|
|
38
|
-
this.agentBusy = false;
|
|
39
|
-
});
|
|
40
|
-
break;
|
|
41
|
-
case "cancel":
|
|
42
|
-
if (this.agentBusy) {
|
|
43
|
-
this.session.dispose();
|
|
44
|
-
this.agentBusy = false;
|
|
45
|
-
}
|
|
46
|
-
break;
|
|
47
|
-
case "shutdown":
|
|
48
|
-
this.session.dispose();
|
|
49
|
-
this._connected = false;
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
onMessage(handler) {
|
|
54
|
-
this.handlers.add(handler);
|
|
55
|
-
return () => { this.handlers.delete(handler); };
|
|
56
|
-
}
|
|
57
|
-
async close() {
|
|
58
|
-
this._connected = false;
|
|
59
|
-
this.session.dispose();
|
|
60
|
-
this.handlers.clear();
|
|
61
|
-
}
|
|
62
|
-
emit(msg) {
|
|
63
|
-
for (const handler of this.handlers) {
|
|
64
|
-
handler(msg);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=local-transport.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-transport.js","sourceRoot":"","sources":["../../src/chat/local-transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAWlD,MAAM,OAAO,cAAc;IACjB,OAAO,CAAmC;IAC1C,QAAQ,GAAqC,IAAI,GAAG,EAAE,CAAC;IACvD,UAAU,GAAG,IAAI,CAAC;IAClB,SAAS,GAAG,KAAK,CAAC;IAE1B,YAAY,IAA2B;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,sDAAsD;QACtD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAU,EAAE,EAAE;YACpC,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACtC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;oBACjD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACzB,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,GAAgB;QACnB,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,cAAc;gBACjB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC,CAAC;oBAChF,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;oBAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBACnD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACzB,CAAC,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,QAAQ;gBACX,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACzB,CAAC;gBACD,MAAM;YAER,KAAK,UAAU;gBACb,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,MAAM;QACV,CAAC;IACH,CAAC;IAED,SAAS,CAAC,OAAoC;QAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAEO,IAAI,CAAC,GAAiB;QAC5B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RemoteTransport — ChatTransport backed by a gateway WebSocket connection.
|
|
3
|
-
*
|
|
4
|
-
* Used for `al chat <agent> --env <name>` (remote mode) and the web UI.
|
|
5
|
-
*/
|
|
6
|
-
import type { ChatTransport } from "./transport.js";
|
|
7
|
-
import type { ChatInbound, ChatOutbound } from "./types.js";
|
|
8
|
-
export interface RemoteTransportOptions {
|
|
9
|
-
gatewayUrl: string;
|
|
10
|
-
agentName: string;
|
|
11
|
-
apiKey: string;
|
|
12
|
-
}
|
|
13
|
-
export declare class RemoteTransport implements ChatTransport {
|
|
14
|
-
private ws;
|
|
15
|
-
private sessionId;
|
|
16
|
-
private handlers;
|
|
17
|
-
private _connected;
|
|
18
|
-
private opts;
|
|
19
|
-
constructor(opts: RemoteTransportOptions);
|
|
20
|
-
get connected(): boolean;
|
|
21
|
-
/**
|
|
22
|
-
* Create a chat session and connect via WebSocket.
|
|
23
|
-
*/
|
|
24
|
-
connect(): Promise<void>;
|
|
25
|
-
send(msg: ChatInbound): void;
|
|
26
|
-
onMessage(handler: (msg: ChatOutbound) => void): () => void;
|
|
27
|
-
close(): Promise<void>;
|
|
28
|
-
private emit;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=remote-transport.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remote-transport.d.ts","sourceRoot":"","sources":["../../src/chat/remote-transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,eAAgB,YAAW,aAAa;IACnD,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,IAAI,CAAyB;gBAEzB,IAAI,EAAE,sBAAsB;IAIxC,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4D9B,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAO5B,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI;IAKrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB5B,OAAO,CAAC,IAAI;CAKb"}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RemoteTransport — ChatTransport backed by a gateway WebSocket connection.
|
|
3
|
-
*
|
|
4
|
-
* Used for `al chat <agent> --env <name>` (remote mode) and the web UI.
|
|
5
|
-
*/
|
|
6
|
-
import WebSocket from "ws";
|
|
7
|
-
export class RemoteTransport {
|
|
8
|
-
ws = null;
|
|
9
|
-
sessionId = null;
|
|
10
|
-
handlers = new Set();
|
|
11
|
-
_connected = false;
|
|
12
|
-
opts;
|
|
13
|
-
constructor(opts) {
|
|
14
|
-
this.opts = opts;
|
|
15
|
-
}
|
|
16
|
-
get connected() {
|
|
17
|
-
return this._connected;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Create a chat session and connect via WebSocket.
|
|
21
|
-
*/
|
|
22
|
-
async connect() {
|
|
23
|
-
const { gatewayUrl, agentName, apiKey } = this.opts;
|
|
24
|
-
// Create session via REST API
|
|
25
|
-
const res = await fetch(`${gatewayUrl}/api/chat/sessions`, {
|
|
26
|
-
method: "POST",
|
|
27
|
-
headers: {
|
|
28
|
-
"Content-Type": "application/json",
|
|
29
|
-
"Authorization": `Bearer ${apiKey}`,
|
|
30
|
-
},
|
|
31
|
-
body: JSON.stringify({ agentName }),
|
|
32
|
-
});
|
|
33
|
-
if (!res.ok) {
|
|
34
|
-
const text = await res.text();
|
|
35
|
-
throw new Error(`Failed to create chat session: ${text}`);
|
|
36
|
-
}
|
|
37
|
-
const { sessionId } = await res.json();
|
|
38
|
-
this.sessionId = sessionId;
|
|
39
|
-
// Connect WebSocket
|
|
40
|
-
const wsUrl = `${gatewayUrl.replace(/^http/, "ws")}/chat/ws/${sessionId}`;
|
|
41
|
-
this.ws = new WebSocket(wsUrl, {
|
|
42
|
-
headers: {
|
|
43
|
-
"Authorization": `Bearer ${apiKey}`,
|
|
44
|
-
},
|
|
45
|
-
});
|
|
46
|
-
return new Promise((resolve, reject) => {
|
|
47
|
-
const ws = this.ws;
|
|
48
|
-
ws.on("open", () => {
|
|
49
|
-
this._connected = true;
|
|
50
|
-
resolve();
|
|
51
|
-
});
|
|
52
|
-
ws.on("message", (data) => {
|
|
53
|
-
const raw = data.toString();
|
|
54
|
-
try {
|
|
55
|
-
const msg = JSON.parse(raw);
|
|
56
|
-
this.emit(msg);
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
// Ignore malformed messages
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
ws.on("close", () => {
|
|
63
|
-
this._connected = false;
|
|
64
|
-
});
|
|
65
|
-
ws.on("error", (err) => {
|
|
66
|
-
if (!this._connected) {
|
|
67
|
-
reject(err);
|
|
68
|
-
}
|
|
69
|
-
this._connected = false;
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
send(msg) {
|
|
74
|
-
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
|
|
75
|
-
throw new Error("Not connected");
|
|
76
|
-
}
|
|
77
|
-
this.ws.send(JSON.stringify(msg));
|
|
78
|
-
}
|
|
79
|
-
onMessage(handler) {
|
|
80
|
-
this.handlers.add(handler);
|
|
81
|
-
return () => { this.handlers.delete(handler); };
|
|
82
|
-
}
|
|
83
|
-
async close() {
|
|
84
|
-
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
|
|
85
|
-
// Send shutdown before closing
|
|
86
|
-
this.ws.send(JSON.stringify({ type: "shutdown" }));
|
|
87
|
-
this.ws.close();
|
|
88
|
-
}
|
|
89
|
-
this._connected = false;
|
|
90
|
-
this.handlers.clear();
|
|
91
|
-
// Clean up session
|
|
92
|
-
if (this.sessionId) {
|
|
93
|
-
try {
|
|
94
|
-
await fetch(`${this.opts.gatewayUrl}/api/chat/sessions/${this.sessionId}`, {
|
|
95
|
-
method: "DELETE",
|
|
96
|
-
headers: { "Authorization": `Bearer ${this.opts.apiKey}` },
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
catch {
|
|
100
|
-
// Best effort
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
emit(msg) {
|
|
105
|
-
for (const handler of this.handlers) {
|
|
106
|
-
handler(msg);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
//# sourceMappingURL=remote-transport.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remote-transport.js","sourceRoot":"","sources":["../../src/chat/remote-transport.ts"],"names":[],"mappings":"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"}
|
package/dist/chat/routes.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* REST API routes for chat session management.
|
|
3
|
-
*/
|
|
4
|
-
import type { Hono } from "hono";
|
|
5
|
-
import type { ChatSessionManager } from "./session-manager.js";
|
|
6
|
-
import type { Logger } from "../shared/logger.js";
|
|
7
|
-
export type LaunchChatCallback = (agentName: string, sessionId: string) => Promise<void>;
|
|
8
|
-
export type StopChatCallback = (sessionId: string) => Promise<void>;
|
|
9
|
-
export declare function registerChatApiRoutes(app: Hono, sessionManager: ChatSessionManager, launchCallback: LaunchChatCallback, stopCallback: StopChatCallback, logger?: Logger): void;
|
|
10
|
-
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/chat/routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AACzF,MAAM,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpE,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,IAAI,EACT,cAAc,EAAE,kBAAkB,EAClC,cAAc,EAAE,kBAAkB,EAClC,YAAY,EAAE,gBAAgB,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd,IAAI,CAoGN"}
|