@alexkroman1/aai 0.8.7 → 0.9.0
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/{sdk/_internal_types.d.ts → _internal-types.d.ts} +0 -3
- package/dist/_internal-types.js +19 -0
- package/dist/{sdk/_mock_ws.d.ts → _mock-ws.d.ts} +16 -5
- package/dist/_mock-ws.js +158 -0
- package/dist/{sdk/_utils.d.ts → _utils.d.ts} +1 -2
- package/dist/_utils.js +8 -0
- package/dist/{sdk/builtin_tools.d.ts → builtin-tools.d.ts} +5 -8
- package/dist/builtin-tools.js +270 -0
- package/dist/{sdk/direct_executor.d.ts → direct-executor.d.ts} +3 -7
- package/dist/direct-executor.js +125 -0
- package/dist/{sdk/mod.d.ts → index.d.ts} +0 -4
- package/dist/index.js +2 -0
- package/dist/{sdk/kv.d.ts → kv.d.ts} +23 -20
- package/dist/kv.js +99 -0
- package/dist/{sdk/protocol.d.ts → protocol.d.ts} +67 -31
- package/dist/protocol.js +142 -0
- package/dist/runtime.d.ts +18 -0
- package/dist/runtime.js +16 -0
- package/dist/s2s.d.ts +110 -0
- package/dist/s2s.js +242 -0
- package/dist/{sdk/server.d.ts → server.d.ts} +3 -23
- package/dist/server.js +105 -0
- package/dist/{sdk/session.d.ts → session.d.ts} +4 -11
- package/dist/session.js +312 -0
- package/dist/tsdown.config.d.ts +2 -0
- package/dist/{sdk/types.d.ts → types.d.ts} +41 -25
- package/dist/types.js +139 -0
- package/dist/{sdk/vector.d.ts → vector.d.ts} +14 -15
- package/dist/vector.js +56 -0
- package/dist/{sdk/worker_entry.d.ts → worker-entry.d.ts} +2 -5
- package/dist/worker-entry.js +59 -0
- package/dist/{sdk/ws_handler.d.ts → ws-handler.d.ts} +10 -8
- package/dist/ws-handler.js +155 -0
- package/package.json +66 -149
- package/README.md +0 -34
- package/dist/aai.js +0 -3
- package/dist/cli/tsconfig.tsbuildinfo +0 -1
- package/dist/cli.js +0 -2811
- package/dist/sdk/_internal_types.d.ts.map +0 -1
- package/dist/sdk/_internal_types.js +0 -25
- package/dist/sdk/_internal_types.js.map +0 -1
- package/dist/sdk/_mock_ws.d.ts.map +0 -1
- package/dist/sdk/_mock_ws.js +0 -154
- package/dist/sdk/_mock_ws.js.map +0 -1
- package/dist/sdk/_render_check.d.ts +0 -10
- package/dist/sdk/_render_check.d.ts.map +0 -1
- package/dist/sdk/_render_check.js +0 -72
- package/dist/sdk/_render_check.js.map +0 -1
- package/dist/sdk/_utils.d.ts.map +0 -1
- package/dist/sdk/_utils.js +0 -7
- package/dist/sdk/_utils.js.map +0 -1
- package/dist/sdk/builtin_tools.d.ts.map +0 -1
- package/dist/sdk/builtin_tools.js +0 -309
- package/dist/sdk/builtin_tools.js.map +0 -1
- package/dist/sdk/capnweb.d.ts +0 -102
- package/dist/sdk/capnweb.d.ts.map +0 -1
- package/dist/sdk/capnweb.js +0 -219
- package/dist/sdk/capnweb.js.map +0 -1
- package/dist/sdk/define_agent.d.ts +0 -36
- package/dist/sdk/define_agent.d.ts.map +0 -1
- package/dist/sdk/define_agent.js +0 -71
- package/dist/sdk/define_agent.js.map +0 -1
- package/dist/sdk/direct_executor.d.ts.map +0 -1
- package/dist/sdk/direct_executor.js +0 -145
- package/dist/sdk/direct_executor.js.map +0 -1
- package/dist/sdk/host.d.ts +0 -59
- package/dist/sdk/host.d.ts.map +0 -1
- package/dist/sdk/host.js +0 -131
- package/dist/sdk/host.js.map +0 -1
- package/dist/sdk/kv.d.ts.map +0 -1
- package/dist/sdk/kv.js +0 -94
- package/dist/sdk/kv.js.map +0 -1
- package/dist/sdk/memory_tools.d.ts +0 -38
- package/dist/sdk/memory_tools.d.ts.map +0 -1
- package/dist/sdk/memory_tools.js +0 -77
- package/dist/sdk/memory_tools.js.map +0 -1
- package/dist/sdk/mod.d.ts.map +0 -1
- package/dist/sdk/mod.js +0 -27
- package/dist/sdk/mod.js.map +0 -1
- package/dist/sdk/protocol.d.ts.map +0 -1
- package/dist/sdk/protocol.js +0 -133
- package/dist/sdk/protocol.js.map +0 -1
- package/dist/sdk/runtime.d.ts +0 -36
- package/dist/sdk/runtime.d.ts.map +0 -1
- package/dist/sdk/runtime.js +0 -27
- package/dist/sdk/runtime.js.map +0 -1
- package/dist/sdk/s2s.d.ts +0 -74
- package/dist/sdk/s2s.d.ts.map +0 -1
- package/dist/sdk/s2s.js +0 -218
- package/dist/sdk/s2s.js.map +0 -1
- package/dist/sdk/server.d.ts.map +0 -1
- package/dist/sdk/server.js +0 -144
- package/dist/sdk/server.js.map +0 -1
- package/dist/sdk/session.d.ts.map +0 -1
- package/dist/sdk/session.js +0 -303
- package/dist/sdk/session.js.map +0 -1
- package/dist/sdk/system_prompt.d.ts +0 -6
- package/dist/sdk/system_prompt.d.ts.map +0 -1
- package/dist/sdk/system_prompt.js +0 -35
- package/dist/sdk/system_prompt.js.map +0 -1
- package/dist/sdk/tsconfig.tsbuildinfo +0 -1
- package/dist/sdk/types.d.ts.map +0 -1
- package/dist/sdk/types.js +0 -96
- package/dist/sdk/types.js.map +0 -1
- package/dist/sdk/vector.d.ts.map +0 -1
- package/dist/sdk/vector.js +0 -63
- package/dist/sdk/vector.js.map +0 -1
- package/dist/sdk/winterc_server.d.ts +0 -56
- package/dist/sdk/winterc_server.d.ts.map +0 -1
- package/dist/sdk/winterc_server.js +0 -77
- package/dist/sdk/winterc_server.js.map +0 -1
- package/dist/sdk/worker_entry.d.ts.map +0 -1
- package/dist/sdk/worker_entry.js +0 -68
- package/dist/sdk/worker_entry.js.map +0 -1
- package/dist/sdk/worker_shim.d.ts +0 -19
- package/dist/sdk/worker_shim.d.ts.map +0 -1
- package/dist/sdk/worker_shim.js +0 -141
- package/dist/sdk/worker_shim.js.map +0 -1
- package/dist/sdk/ws_handler.d.ts.map +0 -1
- package/dist/sdk/ws_handler.js +0 -158
- package/dist/sdk/ws_handler.js.map +0 -1
- package/dist/ui/_cn.d.ts +0 -5
- package/dist/ui/_cn.d.ts.map +0 -1
- package/dist/ui/_cn.js +0 -22
- package/dist/ui/_cn.js.map +0 -1
- package/dist/ui/_components/app.d.ts +0 -5
- package/dist/ui/_components/app.d.ts.map +0 -1
- package/dist/ui/_components/app.js +0 -12
- package/dist/ui/_components/app.js.map +0 -1
- package/dist/ui/_components/button.d.ts +0 -11
- package/dist/ui/_components/button.d.ts.map +0 -1
- package/dist/ui/_components/button.js +0 -17
- package/dist/ui/_components/button.js.map +0 -1
- package/dist/ui/_components/chat_view.d.ts +0 -5
- package/dist/ui/_components/chat_view.d.ts.map +0 -1
- package/dist/ui/_components/chat_view.js +0 -15
- package/dist/ui/_components/chat_view.js.map +0 -1
- package/dist/ui/_components/controls.d.ts +0 -4
- package/dist/ui/_components/controls.d.ts.map +0 -1
- package/dist/ui/_components/controls.js +0 -10
- package/dist/ui/_components/controls.js.map +0 -1
- package/dist/ui/_components/error_banner.d.ts +0 -8
- package/dist/ui/_components/error_banner.d.ts.map +0 -1
- package/dist/ui/_components/error_banner.js +0 -8
- package/dist/ui/_components/error_banner.js.map +0 -1
- package/dist/ui/_components/message_bubble.d.ts +0 -7
- package/dist/ui/_components/message_bubble.d.ts.map +0 -1
- package/dist/ui/_components/message_bubble.js +0 -11
- package/dist/ui/_components/message_bubble.js.map +0 -1
- package/dist/ui/_components/message_list.d.ts +0 -4
- package/dist/ui/_components/message_list.d.ts.map +0 -1
- package/dist/ui/_components/message_list.js +0 -45
- package/dist/ui/_components/message_list.js.map +0 -1
- package/dist/ui/_components/sidebar_layout.d.ts +0 -20
- package/dist/ui/_components/sidebar_layout.d.ts.map +0 -1
- package/dist/ui/_components/sidebar_layout.js +0 -19
- package/dist/ui/_components/sidebar_layout.js.map +0 -1
- package/dist/ui/_components/start_screen.d.ts +0 -25
- package/dist/ui/_components/start_screen.d.ts.map +0 -1
- package/dist/ui/_components/start_screen.js +0 -28
- package/dist/ui/_components/start_screen.js.map +0 -1
- package/dist/ui/_components/state_indicator.d.ts +0 -8
- package/dist/ui/_components/state_indicator.d.ts.map +0 -1
- package/dist/ui/_components/state_indicator.js +0 -6
- package/dist/ui/_components/state_indicator.js.map +0 -1
- package/dist/ui/_components/thinking_indicator.d.ts +0 -5
- package/dist/ui/_components/thinking_indicator.d.ts.map +0 -1
- package/dist/ui/_components/thinking_indicator.js +0 -10
- package/dist/ui/_components/thinking_indicator.js.map +0 -1
- package/dist/ui/_components/tool_call_block.d.ts +0 -7
- package/dist/ui/_components/tool_call_block.d.ts.map +0 -1
- package/dist/ui/_components/tool_call_block.js +0 -46
- package/dist/ui/_components/tool_call_block.js.map +0 -1
- package/dist/ui/_components/tool_icons.d.ts +0 -18
- package/dist/ui/_components/tool_icons.d.ts.map +0 -1
- package/dist/ui/_components/tool_icons.js +0 -26
- package/dist/ui/_components/tool_icons.js.map +0 -1
- package/dist/ui/_components/transcript.d.ts +0 -7
- package/dist/ui/_components/transcript.d.ts.map +0 -1
- package/dist/ui/_components/transcript.js +0 -9
- package/dist/ui/_components/transcript.js.map +0 -1
- package/dist/ui/_dom_shim.d.ts +0 -7
- package/dist/ui/_dom_shim.d.ts.map +0 -1
- package/dist/ui/_dom_shim.js +0 -21
- package/dist/ui/_dom_shim.js.map +0 -1
- package/dist/ui/_hooks.d.ts +0 -21
- package/dist/ui/_hooks.d.ts.map +0 -1
- package/dist/ui/_hooks.js +0 -35
- package/dist/ui/_hooks.js.map +0 -1
- package/dist/ui/_jsdom_setup.d.ts +0 -1
- package/dist/ui/_jsdom_setup.d.ts.map +0 -1
- package/dist/ui/_jsdom_setup.js +0 -6
- package/dist/ui/_jsdom_setup.js.map +0 -1
- package/dist/ui/_test_utils.js +0 -272
- package/dist/ui/_test_utils.js.map +0 -1
- package/dist/ui/audio.d.ts +0 -46
- package/dist/ui/audio.d.ts.map +0 -1
- package/dist/ui/audio.js +0 -130
- package/dist/ui/audio.js.map +0 -1
- package/dist/ui/components.d.ts +0 -14
- package/dist/ui/components.d.ts.map +0 -1
- package/dist/ui/components.js +0 -15
- package/dist/ui/components.js.map +0 -1
- package/dist/ui/components_mod.d.ts +0 -34
- package/dist/ui/components_mod.d.ts.map +0 -1
- package/dist/ui/components_mod.js +0 -32
- package/dist/ui/components_mod.js.map +0 -1
- package/dist/ui/mod.d.ts +0 -23
- package/dist/ui/mod.d.ts.map +0 -1
- package/dist/ui/mod.js +0 -22
- package/dist/ui/mod.js.map +0 -1
- package/dist/ui/mount.d.ts +0 -44
- package/dist/ui/mount.d.ts.map +0 -1
- package/dist/ui/mount.js +0 -61
- package/dist/ui/mount.js.map +0 -1
- package/dist/ui/mount_context.d.ts +0 -22
- package/dist/ui/mount_context.d.ts.map +0 -1
- package/dist/ui/mount_context.js +0 -10
- package/dist/ui/mount_context.js.map +0 -1
- package/dist/ui/session.d.ts +0 -96
- package/dist/ui/session.d.ts.map +0 -1
- package/dist/ui/session.js +0 -379
- package/dist/ui/session.js.map +0 -1
- package/dist/ui/session_mod.d.ts +0 -19
- package/dist/ui/session_mod.d.ts.map +0 -1
- package/dist/ui/session_mod.js +0 -18
- package/dist/ui/session_mod.js.map +0 -1
- package/dist/ui/signals.d.ts +0 -80
- package/dist/ui/signals.d.ts.map +0 -1
- package/dist/ui/signals.js +0 -137
- package/dist/ui/signals.js.map +0 -1
- package/dist/ui/tsconfig.tsbuildinfo +0 -1
- package/dist/ui/types.d.ts +0 -36
- package/dist/ui/types.d.ts.map +0 -1
- package/dist/ui/types.js +0 -4
- package/dist/ui/types.js.map +0 -1
- package/dist/ui/worklets/capture-processor.d.ts +0 -3
- package/dist/ui/worklets/capture-processor.d.ts.map +0 -1
- package/dist/ui/worklets/capture-processor.js +0 -61
- package/dist/ui/worklets/capture-processor.js.map +0 -1
- package/dist/ui/worklets/playback-processor.d.ts +0 -3
- package/dist/ui/worklets/playback-processor.d.ts.map +0 -1
- package/dist/ui/worklets/playback-processor.js +0 -109
- package/dist/ui/worklets/playback-processor.js.map +0 -1
- package/templates/.env +0 -1
- package/templates/_shared/.env.example +0 -5
- package/templates/_shared/CLAUDE.md +0 -1073
- package/templates/_shared/biome.json +0 -32
- package/templates/_shared/global.d.ts +0 -1
- package/templates/_shared/index.html +0 -16
- package/templates/_shared/package.json +0 -22
- package/templates/_shared/tsconfig.json +0 -16
- package/templates/code-interpreter/agent.ts +0 -27
- package/templates/code-interpreter/client.tsx +0 -3
- package/templates/dispatch-center/agent.ts +0 -1223
- package/templates/dispatch-center/client.tsx +0 -505
- package/templates/embedded-assets/agent.ts +0 -48
- package/templates/embedded-assets/client.tsx +0 -3
- package/templates/embedded-assets/knowledge.json +0 -20
- package/templates/health-assistant/agent.ts +0 -160
- package/templates/health-assistant/client.tsx +0 -3
- package/templates/infocom-adventure/agent.ts +0 -164
- package/templates/infocom-adventure/client.tsx +0 -300
- package/templates/math-buddy/agent.ts +0 -21
- package/templates/math-buddy/client.tsx +0 -3
- package/templates/memory-agent/agent.ts +0 -20
- package/templates/memory-agent/client.tsx +0 -3
- package/templates/night-owl/agent.ts +0 -98
- package/templates/night-owl/client.tsx +0 -12
- package/templates/personal-finance/agent.ts +0 -26
- package/templates/personal-finance/client.tsx +0 -3
- package/templates/pizza-ordering/agent.ts +0 -214
- package/templates/pizza-ordering/client.tsx +0 -264
- package/templates/simple/agent.ts +0 -6
- package/templates/simple/client.tsx +0 -3
- package/templates/smart-research/agent.ts +0 -164
- package/templates/smart-research/client.tsx +0 -3
- package/templates/solo-rpg/agent.ts +0 -1240
- package/templates/solo-rpg/client.tsx +0 -698
- package/templates/support/README.md +0 -62
- package/templates/support/agent.ts +0 -19
- package/templates/support/client.tsx +0 -3
- package/templates/travel-concierge/agent.ts +0 -29
- package/templates/travel-concierge/client.tsx +0 -3
- package/templates/tsconfig.json +0 -1
- package/templates/web-researcher/agent.ts +0 -17
- package/templates/web-researcher/client.tsx +0 -3
- package/ui/styles.css +0 -74
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WinterTC-compatible server factory.
|
|
3
|
-
*
|
|
4
|
-
* Creates a server with `fetch(Request): Response` and `handleWebSocket(ws)`
|
|
5
|
-
* that can run both in-process (self-hosted) and inside a sandboxed Worker
|
|
6
|
-
* (platform). This is the shared core for both modes.
|
|
7
|
-
*
|
|
8
|
-
* @module
|
|
9
|
-
*/
|
|
10
|
-
import type { Kv } from "./kv.ts";
|
|
11
|
-
import type { Logger, Metrics, S2SConfig } from "./runtime.ts";
|
|
12
|
-
import type { CreateS2sWebSocket } from "./s2s.ts";
|
|
13
|
-
import type { AgentDef } from "./types.ts";
|
|
14
|
-
import type { VectorStore } from "./vector.ts";
|
|
15
|
-
import { type SessionWebSocket } from "./ws_handler.ts";
|
|
16
|
-
export type WintercServerOptions = {
|
|
17
|
-
/** The agent definition returned by `defineAgent()`. */
|
|
18
|
-
agent: AgentDef;
|
|
19
|
-
/** Environment variables. */
|
|
20
|
-
env: Record<string, string>;
|
|
21
|
-
/** KV store. Defaults to in-memory. */
|
|
22
|
-
kv?: Kv;
|
|
23
|
-
/** Vector store. Defaults to in-memory. */
|
|
24
|
-
vector?: VectorStore;
|
|
25
|
-
/** Vector search function (legacy, used by builtin tool). */
|
|
26
|
-
vectorSearch?: ((query: string, topK: number) => Promise<string>) | undefined;
|
|
27
|
-
/** WebSocket factory for S2S connections. */
|
|
28
|
-
createWebSocket: CreateS2sWebSocket;
|
|
29
|
-
/** HTML to serve at `GET /`. */
|
|
30
|
-
clientHtml?: string;
|
|
31
|
-
/** Logger. Defaults to console. */
|
|
32
|
-
logger?: Logger;
|
|
33
|
-
/** Metrics collector. Defaults to noop. */
|
|
34
|
-
metrics?: Metrics;
|
|
35
|
-
/** S2S configuration. Defaults to AssemblyAI production. */
|
|
36
|
-
s2sConfig?: S2SConfig;
|
|
37
|
-
};
|
|
38
|
-
export type WintercServer = {
|
|
39
|
-
/** Standard fetch handler for HTTP routes. */
|
|
40
|
-
fetch(request: Request): Promise<Response>;
|
|
41
|
-
/** Attach a WebSocket to a new session. */
|
|
42
|
-
handleWebSocket(ws: SessionWebSocket, opts?: {
|
|
43
|
-
skipGreeting?: boolean;
|
|
44
|
-
}): void;
|
|
45
|
-
/** Stop all active sessions. */
|
|
46
|
-
close(): Promise<void>;
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* Create a WinterTC-compatible server from an agent definition.
|
|
50
|
-
*
|
|
51
|
-
* The returned object has a standard `fetch` handler and a `handleWebSocket`
|
|
52
|
-
* method. Self-hosted mode calls these directly; platform mode calls them
|
|
53
|
-
* from inside a sandboxed Worker via capnweb RPC.
|
|
54
|
-
*/
|
|
55
|
-
export declare function createWintercServer(options: WintercServerOptions): WintercServer;
|
|
56
|
-
//# sourceMappingURL=winterc_server.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"winterc_server.d.ts","sourceRoot":"","sources":["../../sdk/winterc_server.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAGlC,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,KAAK,gBAAgB,EAAqB,MAAM,iBAAiB,CAAC;AAE3E,MAAM,MAAM,oBAAoB,GAAG;IACjC,wDAAwD;IACxD,KAAK,EAAE,QAAQ,CAAC;IAChB,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,uCAAuC;IACvC,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,2CAA2C;IAC3C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9E,6CAA6C;IAC7C,eAAe,EAAE,kBAAkB,CAAC;IACpC,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,8CAA8C;IAC9C,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,2CAA2C;IAC3C,eAAe,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/E,gCAAgC;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAyEhF"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
// Copyright 2025 the AAI authors. MIT license.
|
|
2
|
-
/**
|
|
3
|
-
* WinterTC-compatible server factory.
|
|
4
|
-
*
|
|
5
|
-
* Creates a server with `fetch(Request): Response` and `handleWebSocket(ws)`
|
|
6
|
-
* that can run both in-process (self-hosted) and inside a sandboxed Worker
|
|
7
|
-
* (platform). This is the shared core for both modes.
|
|
8
|
-
*
|
|
9
|
-
* @module
|
|
10
|
-
*/
|
|
11
|
-
import { Hono } from "hono";
|
|
12
|
-
import { createDirectExecutor } from "./direct_executor.js";
|
|
13
|
-
import { createMemoryKv } from "./kv.js";
|
|
14
|
-
import { AUDIO_FORMAT } from "./protocol.js";
|
|
15
|
-
import { consoleLogger, DEFAULT_S2S_CONFIG, noopMetrics } from "./runtime.js";
|
|
16
|
-
import { createMemoryVectorStore } from "./vector.js";
|
|
17
|
-
import { wireSessionSocket } from "./ws_handler.js";
|
|
18
|
-
/**
|
|
19
|
-
* Create a WinterTC-compatible server from an agent definition.
|
|
20
|
-
*
|
|
21
|
-
* The returned object has a standard `fetch` handler and a `handleWebSocket`
|
|
22
|
-
* method. Self-hosted mode calls these directly; platform mode calls them
|
|
23
|
-
* from inside a sandboxed Worker via capnweb RPC.
|
|
24
|
-
*/
|
|
25
|
-
export function createWintercServer(options) {
|
|
26
|
-
const { agent, env, kv = createMemoryKv(), vector = createMemoryVectorStore(), vectorSearch, clientHtml, logger = consoleLogger, metrics = noopMetrics, s2sConfig = DEFAULT_S2S_CONFIG, } = options;
|
|
27
|
-
const executor = createDirectExecutor({
|
|
28
|
-
agent,
|
|
29
|
-
env,
|
|
30
|
-
kv,
|
|
31
|
-
vector,
|
|
32
|
-
...(vectorSearch ? { vectorSearch } : {}),
|
|
33
|
-
createWebSocket: options.createWebSocket,
|
|
34
|
-
logger,
|
|
35
|
-
metrics,
|
|
36
|
-
s2sConfig,
|
|
37
|
-
});
|
|
38
|
-
const sessions = new Map();
|
|
39
|
-
const readyConfig = {
|
|
40
|
-
audioFormat: AUDIO_FORMAT,
|
|
41
|
-
sampleRate: s2sConfig.inputSampleRate,
|
|
42
|
-
ttsSampleRate: s2sConfig.outputSampleRate,
|
|
43
|
-
};
|
|
44
|
-
const app = new Hono();
|
|
45
|
-
app.get("/health", (c) => c.json({ status: "ok", name: agent.name }));
|
|
46
|
-
app.get("/", (c) => {
|
|
47
|
-
if (clientHtml) {
|
|
48
|
-
return c.html(clientHtml);
|
|
49
|
-
}
|
|
50
|
-
return c.html(`<!DOCTYPE html><html><body><h1>${agent.name}</h1><p>Agent server running.</p></body></html>`);
|
|
51
|
-
});
|
|
52
|
-
return {
|
|
53
|
-
async fetch(request) {
|
|
54
|
-
return app.fetch(request);
|
|
55
|
-
},
|
|
56
|
-
handleWebSocket(ws, wsOpts) {
|
|
57
|
-
wireSessionSocket(ws, {
|
|
58
|
-
sessions,
|
|
59
|
-
createSession: (sid, client) => executor.createSession({
|
|
60
|
-
id: sid,
|
|
61
|
-
agent: agent.name,
|
|
62
|
-
client,
|
|
63
|
-
skipGreeting: wsOpts?.skipGreeting ?? false,
|
|
64
|
-
}),
|
|
65
|
-
readyConfig,
|
|
66
|
-
logger,
|
|
67
|
-
});
|
|
68
|
-
},
|
|
69
|
-
async close() {
|
|
70
|
-
for (const session of sessions.values()) {
|
|
71
|
-
await session.stop();
|
|
72
|
-
}
|
|
73
|
-
sessions.clear();
|
|
74
|
-
},
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=winterc_server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"winterc_server.js","sourceRoot":"","sources":["../../sdk/winterc_server.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAyB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAkC3E;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,EACJ,KAAK,EACL,GAAG,EACH,EAAE,GAAG,cAAc,EAAE,EACrB,MAAM,GAAG,uBAAuB,EAAE,EAClC,YAAY,EACZ,UAAU,EACV,MAAM,GAAG,aAAa,EACtB,OAAO,GAAG,WAAW,EACrB,SAAS,GAAG,kBAAkB,GAC/B,GAAG,OAAO,CAAC;IAEZ,MAAM,QAAQ,GAAG,oBAAoB,CAAC;QACpC,KAAK;QACL,GAAG;QACH,EAAE;QACF,MAAM;QACN,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,MAAM;QACN,OAAO;QACP,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE5C,MAAM,WAAW,GAAG;QAClB,WAAW,EAAE,YAAY;QACzB,UAAU,EAAE,SAAS,CAAC,eAAe;QACrC,aAAa,EAAE,SAAS,CAAC,gBAAgB;KAC1C,CAAC;IAEF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEtE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;QACjB,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,CACX,kCAAkC,KAAK,CAAC,IAAI,iDAAiD,CAC9F,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,OAAgB;YAC1B,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAED,eAAe,CAAC,EAAoB,EAAE,MAAmC;YACvE,iBAAiB,CAAC,EAAE,EAAE;gBACpB,QAAQ;gBACR,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAC7B,QAAQ,CAAC,aAAa,CAAC;oBACrB,EAAE,EAAE,GAAG;oBACP,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,MAAM;oBACN,YAAY,EAAE,MAAM,EAAE,YAAY,IAAI,KAAK;iBAC5C,CAAC;gBACJ,WAAW;gBACX,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,KAAK;YACT,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBACxC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;YACD,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker_entry.d.ts","sourceRoot":"","sources":["../../sdk/worker_entry.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,KAAK,EAAE,OAAO,EAAe,OAAO,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,CACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACvC,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,KAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;AAoBrB,+CAA+C;AAC/C,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,EAAE,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;CAC3C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACvC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
|
package/dist/sdk/worker_entry.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
// Copyright 2025 the AAI authors. MIT license.
|
|
2
|
-
/**
|
|
3
|
-
* Worker entry point — shared tool execution logic.
|
|
4
|
-
*
|
|
5
|
-
* @module
|
|
6
|
-
*/
|
|
7
|
-
import { EMPTY_PARAMS } from "./_internal_types.js";
|
|
8
|
-
import { errorMessage } from "./_utils.js";
|
|
9
|
-
import { TOOL_EXECUTION_TIMEOUT_MS } from "./protocol.js";
|
|
10
|
-
/** Yield to the event loop so pending I/O (e.g. WebSocket frames) can be processed. */
|
|
11
|
-
const yieldTick = () => new Promise((r) => setTimeout(r, 0));
|
|
12
|
-
function buildToolContext(opts) {
|
|
13
|
-
const { env, state, kv, vector, messages } = opts;
|
|
14
|
-
return {
|
|
15
|
-
env: { ...env },
|
|
16
|
-
abortSignal: AbortSignal.timeout(TOOL_EXECUTION_TIMEOUT_MS),
|
|
17
|
-
state: state ?? {},
|
|
18
|
-
get kv() {
|
|
19
|
-
if (!kv)
|
|
20
|
-
throw new Error("KV not available");
|
|
21
|
-
return kv;
|
|
22
|
-
},
|
|
23
|
-
get vector() {
|
|
24
|
-
if (!vector)
|
|
25
|
-
throw new Error("Vector store not available");
|
|
26
|
-
return vector;
|
|
27
|
-
},
|
|
28
|
-
messages: messages ?? [],
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Execute a tool call with argument validation and error handling.
|
|
33
|
-
*
|
|
34
|
-
* Validates the provided arguments against the tool's Zod parameter schema,
|
|
35
|
-
* constructs a {@linkcode ToolContext}, invokes the tool's `execute` function,
|
|
36
|
-
* and serializes the result to a string. Errors are caught and returned as
|
|
37
|
-
* `"Error: ..."` strings rather than thrown.
|
|
38
|
-
*
|
|
39
|
-
* @param name - The name of the tool being invoked.
|
|
40
|
-
* @param args - Raw arguments from the LLM to validate and pass to the tool.
|
|
41
|
-
* @param options - Tool definition, environment, and optional context.
|
|
42
|
-
* @returns The tool's result serialized as a string, or an error message.
|
|
43
|
-
*/
|
|
44
|
-
export async function executeToolCall(name, args, options) {
|
|
45
|
-
const { tool } = options;
|
|
46
|
-
const schema = tool.parameters ?? EMPTY_PARAMS;
|
|
47
|
-
const parsed = schema.safeParse(args);
|
|
48
|
-
if (!parsed.success) {
|
|
49
|
-
const issues = (parsed.error?.issues ?? [])
|
|
50
|
-
.map((i) => `${i.path.map(String).join(".")}: ${i.message}`)
|
|
51
|
-
.join(", ");
|
|
52
|
-
return `Error: Invalid arguments for tool "${name}": ${issues}`;
|
|
53
|
-
}
|
|
54
|
-
try {
|
|
55
|
-
const ctx = buildToolContext(options);
|
|
56
|
-
await yieldTick();
|
|
57
|
-
const result = await Promise.resolve(tool.execute(parsed.data, ctx));
|
|
58
|
-
await yieldTick();
|
|
59
|
-
if (result == null)
|
|
60
|
-
return "null";
|
|
61
|
-
return typeof result === "string" ? result : JSON.stringify(result);
|
|
62
|
-
}
|
|
63
|
-
catch (err) {
|
|
64
|
-
console.warn(`[tool-executor] Tool execution failed: ${name}`, err);
|
|
65
|
-
return `Error: ${errorMessage(err)}`;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=worker_entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker_entry.js","sourceRoot":"","sources":["../../sdk/worker_entry.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAI1D,uFAAuF;AACvF,MAAM,SAAS,GAAG,GAAkB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAkB5E,SAAS,gBAAgB,CAAC,IAA4B;IACpD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAClD,OAAO;QACL,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE;QACf,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,yBAAyB,CAAC;QAC3D,KAAK,EAAE,KAAK,IAAI,EAAE;QAClB,IAAI,EAAE;YACJ,IAAI,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,MAAM;YACR,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,QAAQ,EAAE,QAAQ,IAAI,EAAE;KACzB,CAAC;AACJ,CAAC;AAYD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,IAAuC,EACvC,OAA+B;IAE/B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC;aACxC,GAAG,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACvE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,sCAAsC,IAAI,MAAM,MAAM,EAAE,CAAC;IAClE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,SAAS,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACrE,MAAM,SAAS,EAAE,CAAC;QAClB,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,MAAM,CAAC;QAClC,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,0CAA0C,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACpE,OAAO,UAAU,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;IACvC,CAAC;AACH,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sandboxed worker entry point for platform mode.
|
|
3
|
-
*
|
|
4
|
-
* Called from the bundled `worker.js` inside a Deno Worker with all
|
|
5
|
-
* permissions false. Sets up capnweb RPC to proxy capabilities through
|
|
6
|
-
* the host, and delegates to a {@linkcode WintercServer} for session
|
|
7
|
-
* management.
|
|
8
|
-
*
|
|
9
|
-
* @module
|
|
10
|
-
*/
|
|
11
|
-
import type { AgentDef } from "./types.ts";
|
|
12
|
-
/**
|
|
13
|
-
* Initialize a sandboxed worker with the given agent definition.
|
|
14
|
-
*
|
|
15
|
-
* Sets up capnweb RPC, creates capability stubs backed by the host,
|
|
16
|
-
* and waits for initialization before creating the WinterTC server.
|
|
17
|
-
*/
|
|
18
|
-
export declare function initWorker(agent: AgentDef): void;
|
|
19
|
-
//# sourceMappingURL=worker_shim.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker_shim.d.ts","sourceRoot":"","sources":["../../sdk/worker_shim.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAYH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAuE3C;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAsFhD"}
|
package/dist/sdk/worker_shim.js
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
// Copyright 2025 the AAI authors. MIT license.
|
|
2
|
-
/**
|
|
3
|
-
* Sandboxed worker entry point for platform mode.
|
|
4
|
-
*
|
|
5
|
-
* Called from the bundled `worker.js` inside a Deno Worker with all
|
|
6
|
-
* permissions false. Sets up capnweb RPC to proxy capabilities through
|
|
7
|
-
* the host, and delegates to a {@linkcode WintercServer} for session
|
|
8
|
-
* management.
|
|
9
|
-
*
|
|
10
|
-
* @module
|
|
11
|
-
*/
|
|
12
|
-
import { BridgedWebSocket, createRpcSession, isTransferMessage, RpcTarget, sendTransfer, } from "./capnweb.js";
|
|
13
|
-
import { createWintercServer } from "./winterc_server.js";
|
|
14
|
-
/**
|
|
15
|
-
* RPC service exposed by the worker to the host.
|
|
16
|
-
* Methods are callable via capnweb RPC stubs.
|
|
17
|
-
*/
|
|
18
|
-
class WorkerService extends RpcTarget {
|
|
19
|
-
#agent;
|
|
20
|
-
#kv;
|
|
21
|
-
#vector;
|
|
22
|
-
#vectorSearch;
|
|
23
|
-
#createWebSocket;
|
|
24
|
-
#wintercServer = null;
|
|
25
|
-
constructor(agent, kv, vector, vectorSearch, createWebSocket) {
|
|
26
|
-
super();
|
|
27
|
-
this.#agent = agent;
|
|
28
|
-
this.#kv = kv;
|
|
29
|
-
this.#vector = vector;
|
|
30
|
-
this.#vectorSearch = vectorSearch;
|
|
31
|
-
this.#createWebSocket = createWebSocket;
|
|
32
|
-
}
|
|
33
|
-
/** Initialize the worker with environment variables. Creates the WinterTC server. */
|
|
34
|
-
init(env) {
|
|
35
|
-
this.#wintercServer = createWintercServer({
|
|
36
|
-
agent: this.#agent,
|
|
37
|
-
env,
|
|
38
|
-
kv: this.#kv,
|
|
39
|
-
vector: this.#vector,
|
|
40
|
-
vectorSearch: this.#vectorSearch,
|
|
41
|
-
createWebSocket: this.#createWebSocket,
|
|
42
|
-
});
|
|
43
|
-
return "ok";
|
|
44
|
-
}
|
|
45
|
-
/** Handle an HTTP request forwarded from the host. */
|
|
46
|
-
async workerFetch(url, method, headers, body) {
|
|
47
|
-
if (!this.#wintercServer)
|
|
48
|
-
throw new Error("Worker not initialized");
|
|
49
|
-
const request = new Request(url, { method, headers, ...(body ? { body } : {}) });
|
|
50
|
-
const response = await this.#wintercServer.fetch(request);
|
|
51
|
-
return {
|
|
52
|
-
status: response.status,
|
|
53
|
-
headers: Object.fromEntries(response.headers),
|
|
54
|
-
body: await response.text(),
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
/** Handle a new WebSocket client connection (called via port transfer, not RPC). */
|
|
58
|
-
handleWebSocket(port, skipGreeting) {
|
|
59
|
-
if (!this.#wintercServer)
|
|
60
|
-
throw new Error("Worker not initialized");
|
|
61
|
-
const ws = new BridgedWebSocket(port);
|
|
62
|
-
this.#wintercServer.handleWebSocket(ws, { skipGreeting });
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Initialize a sandboxed worker with the given agent definition.
|
|
67
|
-
*
|
|
68
|
-
* Sets up capnweb RPC, creates capability stubs backed by the host,
|
|
69
|
-
* and waits for initialization before creating the WinterTC server.
|
|
70
|
-
*/
|
|
71
|
-
export function initWorker(agent) {
|
|
72
|
-
// biome-ignore lint/suspicious/noExplicitAny: capnweb stubs are dynamically typed proxies
|
|
73
|
-
let hostStub;
|
|
74
|
-
// ─── Capnweb-backed KV ─────────────────────────────────────────────────
|
|
75
|
-
const kv = {
|
|
76
|
-
async get(key) {
|
|
77
|
-
const raw = await hostStub.kvGet(key);
|
|
78
|
-
return raw == null ? null : raw;
|
|
79
|
-
},
|
|
80
|
-
async set(key, value, options) {
|
|
81
|
-
await hostStub.kvSet(key, value, options);
|
|
82
|
-
},
|
|
83
|
-
async delete(key) {
|
|
84
|
-
await hostStub.kvDel(key);
|
|
85
|
-
},
|
|
86
|
-
async list(prefix, options) {
|
|
87
|
-
return (await hostStub.kvList(prefix, options));
|
|
88
|
-
},
|
|
89
|
-
};
|
|
90
|
-
// ─── Capnweb-backed vector store ───────────────────────────────────────
|
|
91
|
-
const vector = {
|
|
92
|
-
async upsert(id, data, metadata) {
|
|
93
|
-
await hostStub.vecUpsert(id, data, metadata);
|
|
94
|
-
},
|
|
95
|
-
async query(text, options) {
|
|
96
|
-
return (await hostStub.vecQuery(text, options));
|
|
97
|
-
},
|
|
98
|
-
async remove(ids) {
|
|
99
|
-
await hostStub.vecRemove(Array.isArray(ids) ? ids : [ids]);
|
|
100
|
-
},
|
|
101
|
-
};
|
|
102
|
-
const vectorSearch = async (query, topK) => {
|
|
103
|
-
const results = await vector.query(query, { topK });
|
|
104
|
-
if (results.length === 0)
|
|
105
|
-
return "No relevant results found.";
|
|
106
|
-
return JSON.stringify(results.map((r) => ({ score: r.score, text: r.data, metadata: r.metadata })));
|
|
107
|
-
};
|
|
108
|
-
// ─── Capnweb-backed S2S WebSocket factory ──────────────────────────────
|
|
109
|
-
const createWebSocket = (url, opts) => {
|
|
110
|
-
const { port1, port2 } = new MessageChannel();
|
|
111
|
-
sendTransfer(self, { _t: "createWs", url, headers: JSON.stringify(opts.headers) }, [port2]);
|
|
112
|
-
return new BridgedWebSocket(port1);
|
|
113
|
-
};
|
|
114
|
-
// ─── Monkeypatch fetch to proxy through host ──────────────────────────
|
|
115
|
-
globalThis.fetch = async (input, init) => {
|
|
116
|
-
const request = new Request(input, init);
|
|
117
|
-
const body = request.body ? await request.text() : undefined;
|
|
118
|
-
const result = await hostStub.hostFetch(request.url, request.method, Object.fromEntries(request.headers), body);
|
|
119
|
-
return new Response(result.body, {
|
|
120
|
-
status: result.status,
|
|
121
|
-
headers: result.headers,
|
|
122
|
-
});
|
|
123
|
-
};
|
|
124
|
-
// ─── Create worker service and RPC session ────────────────────────────
|
|
125
|
-
const workerService = new WorkerService(agent, kv, vector, vectorSearch, createWebSocket);
|
|
126
|
-
hostStub = createRpcSession({
|
|
127
|
-
port: self,
|
|
128
|
-
localMain: workerService,
|
|
129
|
-
onTransfer(data, ports) {
|
|
130
|
-
if (!isTransferMessage(data))
|
|
131
|
-
return;
|
|
132
|
-
if (data._t === "handleWs") {
|
|
133
|
-
const transferPort = ports[0];
|
|
134
|
-
if (!transferPort)
|
|
135
|
-
throw new Error("No port transferred for WebSocket");
|
|
136
|
-
workerService.handleWebSocket(transferPort, data.skipGreeting);
|
|
137
|
-
}
|
|
138
|
-
},
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=worker_shim.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker_shim.js","sourceRoot":"","sources":["../../sdk/worker_shim.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ws_handler.d.ts","sourceRoot":"","sources":["../../sdk/ws_handler.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAiB,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;IACpD,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC,GAAG,IAAI,CAAC;CACpF,CAAC;AAEF,mDAAmD;AACnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,2EAA2E;IAC3E,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,2EAA2E;IAC3E,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC;IAClE,iEAAiE;IACjE,WAAW,EAAE,WAAW,CAAC;IACzB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAiGF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CA0DpF"}
|
package/dist/sdk/ws_handler.js
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
// Copyright 2025 the AAI authors. MIT license.
|
|
2
|
-
/**
|
|
3
|
-
* WebSocket session lifecycle handler.
|
|
4
|
-
*
|
|
5
|
-
* Cross-runtime: accepts a Logger parameter instead of importing `@std/log`.
|
|
6
|
-
* Audio validation is handled at the host transport layer (see host.ts).
|
|
7
|
-
*
|
|
8
|
-
* @module
|
|
9
|
-
*/
|
|
10
|
-
import { errorMessage } from "./_utils.js";
|
|
11
|
-
import { ClientMessageSchema } from "./protocol.js";
|
|
12
|
-
import { consoleLogger } from "./runtime.js";
|
|
13
|
-
/**
|
|
14
|
-
* Creates a {@linkcode ClientSink} backed by a plain WebSocket.
|
|
15
|
-
*
|
|
16
|
-
* Text events are sent as JSON text frames; audio chunks are sent as
|
|
17
|
-
* binary frames (zero-copy).
|
|
18
|
-
*/
|
|
19
|
-
function createClientSink(ws) {
|
|
20
|
-
/** Send data over ws, tolerating races where the socket closes between readyState check and send. */
|
|
21
|
-
function safeSend(data) {
|
|
22
|
-
try {
|
|
23
|
-
if (ws.readyState === 1)
|
|
24
|
-
ws.send(data);
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
/* socket closed between check and send */
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return {
|
|
31
|
-
get open() {
|
|
32
|
-
return ws.readyState === 1;
|
|
33
|
-
},
|
|
34
|
-
event(e) {
|
|
35
|
-
safeSend(JSON.stringify(e));
|
|
36
|
-
},
|
|
37
|
-
playAudioChunk(chunk) {
|
|
38
|
-
safeSend(chunk);
|
|
39
|
-
},
|
|
40
|
-
playAudioDone() {
|
|
41
|
-
safeSend(JSON.stringify({ type: "audio_done" }));
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
function isBinaryData(data) {
|
|
46
|
-
return (globalThis.Buffer?.isBuffer(data) ||
|
|
47
|
-
data instanceof ArrayBuffer ||
|
|
48
|
-
data instanceof Uint8Array);
|
|
49
|
-
}
|
|
50
|
-
function toUint8Array(data) {
|
|
51
|
-
if (data instanceof Uint8Array)
|
|
52
|
-
return data;
|
|
53
|
-
if (data instanceof ArrayBuffer)
|
|
54
|
-
return new Uint8Array(data);
|
|
55
|
-
// Node.js Buffer or ArrayBuffer-like
|
|
56
|
-
const buf = data;
|
|
57
|
-
return new Uint8Array(buf.buffer ?? data, buf.byteOffset ?? 0, buf.byteLength);
|
|
58
|
-
}
|
|
59
|
-
function handleBinaryAudio(data, session) {
|
|
60
|
-
if (!isBinaryData(data))
|
|
61
|
-
return false;
|
|
62
|
-
session.onAudio(toUint8Array(data));
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
function handleTextMessage(data, session, log, ctx, sid) {
|
|
66
|
-
if (typeof data !== "string")
|
|
67
|
-
return;
|
|
68
|
-
let json;
|
|
69
|
-
try {
|
|
70
|
-
json = JSON.parse(data);
|
|
71
|
-
}
|
|
72
|
-
catch {
|
|
73
|
-
log.warn("Invalid JSON from client", { ...ctx, sid });
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
const parsed = ClientMessageSchema.safeParse(json);
|
|
77
|
-
if (!parsed.success) {
|
|
78
|
-
log.warn("Invalid client message", { ...ctx, sid, error: parsed.error.message });
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
const msg = parsed.data;
|
|
82
|
-
switch (msg.type) {
|
|
83
|
-
case "audio_ready":
|
|
84
|
-
session.onAudioReady();
|
|
85
|
-
break;
|
|
86
|
-
case "cancel":
|
|
87
|
-
session.onCancel();
|
|
88
|
-
break;
|
|
89
|
-
case "reset":
|
|
90
|
-
session.onReset();
|
|
91
|
-
break;
|
|
92
|
-
case "history":
|
|
93
|
-
session.onHistory(msg.messages);
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Attaches session lifecycle handlers to a native WebSocket using
|
|
99
|
-
* plain JSON text frames and binary audio frames.
|
|
100
|
-
*
|
|
101
|
-
* Connection flow:
|
|
102
|
-
* 1. WebSocket opens → server sends `{ type: "config", ...ReadyConfig }`
|
|
103
|
-
* 2. Client sets up audio → sends `{ type: "audio_ready" }`
|
|
104
|
-
* 3. If reconnecting → client sends `{ type: "history", messages: [...] }`
|
|
105
|
-
*/
|
|
106
|
-
export function wireSessionSocket(ws, opts) {
|
|
107
|
-
const { sessions, logger: log = consoleLogger } = opts;
|
|
108
|
-
const sessionId = crypto.randomUUID();
|
|
109
|
-
const sid = sessionId.slice(0, 8);
|
|
110
|
-
const ctx = opts.logContext ?? {};
|
|
111
|
-
let session = null;
|
|
112
|
-
function onOpen() {
|
|
113
|
-
opts.onOpen?.();
|
|
114
|
-
log.info("Session connected", { ...ctx, sid });
|
|
115
|
-
const client = createClientSink(ws);
|
|
116
|
-
session = opts.createSession(sessionId, client);
|
|
117
|
-
sessions.set(sessionId, session);
|
|
118
|
-
// Send config immediately — zero RTT
|
|
119
|
-
ws.send(JSON.stringify({ type: "config", ...opts.readyConfig }));
|
|
120
|
-
session
|
|
121
|
-
.start()
|
|
122
|
-
.then(() => {
|
|
123
|
-
log.info("Session ready", { ...ctx, sid });
|
|
124
|
-
})
|
|
125
|
-
.catch((err) => {
|
|
126
|
-
log.error("Session start failed", { ...ctx, sid, error: errorMessage(err) });
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
// readyState 1 = OPEN — socket already open (e.g. from ws handleUpgrade)
|
|
130
|
-
if (ws.readyState === 1) {
|
|
131
|
-
onOpen();
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
ws.addEventListener("open", onOpen);
|
|
135
|
-
}
|
|
136
|
-
ws.addEventListener("message", (event) => {
|
|
137
|
-
if (!session)
|
|
138
|
-
return;
|
|
139
|
-
const { data } = event;
|
|
140
|
-
if (handleBinaryAudio(data, session))
|
|
141
|
-
return;
|
|
142
|
-
handleTextMessage(data, session, log, ctx, sid);
|
|
143
|
-
});
|
|
144
|
-
ws.addEventListener("close", () => {
|
|
145
|
-
log.info("Session disconnected", { ...ctx, sid });
|
|
146
|
-
if (session) {
|
|
147
|
-
void session.stop().finally(() => {
|
|
148
|
-
sessions.delete(sessionId);
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
opts.onClose?.();
|
|
152
|
-
});
|
|
153
|
-
ws.addEventListener("error", (event) => {
|
|
154
|
-
const msg = event instanceof ErrorEvent ? event.message : "WebSocket error";
|
|
155
|
-
log.error("WebSocket error", { ...ctx, sid, error: msg });
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
//# sourceMappingURL=ws_handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ws_handler.js","sourceRoot":"","sources":["../../sdk/ws_handler.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/_cn.d.ts
DELETED
package/dist/ui/_cn.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_cn.d.ts","sourceRoot":"","sources":["../../ui/_cn.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,UAAU,EAAE,CAAC;AAE9E,mEAAmE;AACnE,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAclD"}
|
package/dist/ui/_cn.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// Copyright 2025 the AAI authors. MIT license.
|
|
2
|
-
/** Tiny clsx-style class name joiner. Falsy values are ignored. */
|
|
3
|
-
export function cn(...inputs) {
|
|
4
|
-
const classes = [];
|
|
5
|
-
for (const input of inputs) {
|
|
6
|
-
if (!input)
|
|
7
|
-
continue;
|
|
8
|
-
if (typeof input === "string") {
|
|
9
|
-
classes.push(input);
|
|
10
|
-
}
|
|
11
|
-
else if (typeof input === "number") {
|
|
12
|
-
classes.push(String(input));
|
|
13
|
-
}
|
|
14
|
-
else if (Array.isArray(input)) {
|
|
15
|
-
const inner = cn(...input);
|
|
16
|
-
if (inner)
|
|
17
|
-
classes.push(inner);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return classes.join(" ");
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=_cn.js.map
|
package/dist/ui/_cn.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_cn.js","sourceRoot":"","sources":["../../ui/_cn.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAI/C,mEAAmE;AACnE,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;YAC3B,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../ui/_components/app.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAatC,wBAAgB,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAQ7E"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "preact/jsx-runtime";
|
|
2
|
-
import { useMountConfig } from "../mount_context.js";
|
|
3
|
-
import { ChatView } from "./chat_view.js";
|
|
4
|
-
import { StartScreen } from "./start_screen.js";
|
|
5
|
-
function AnsiLogo() {
|
|
6
|
-
return (_jsx("pre", { class: "font-aai-mono text-lg leading-[1.1] font-bold text-aai-primary m-0", children: "▄▀█ ▄▀█ █\n█▀█ █▀█ █" }));
|
|
7
|
-
}
|
|
8
|
-
export function App({ className }) {
|
|
9
|
-
const { title } = useMountConfig();
|
|
10
|
-
return (_jsx(StartScreen, { icon: title ? undefined : _jsx(AnsiLogo, {}), title: title, className: className, children: _jsx(ChatView, {}) }));
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=app.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../ui/_components/app.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAiB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAoB,CAAC;AAEjD,SAAS,QAAQ;IACf,OAAO,CACL,cAAK,KAAK,EAAC,oEAAoE,YAC5E,sBAAsB,GACnB,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAAE,SAAS,EAA0B;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE,CAAC;IAEnC,OAAO,CACL,KAAC,WAAW,IAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAC,QAAQ,KAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,YACrF,KAAC,QAAQ,KAAG,GACA,CACf,CAAC;AACJ,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type * as preact from "preact";
|
|
2
|
-
type ButtonVariant = "default" | "secondary" | "ghost";
|
|
3
|
-
type ButtonSize = "default" | "lg";
|
|
4
|
-
export declare function Button({ variant, size, className, children, ...rest }: {
|
|
5
|
-
variant?: ButtonVariant;
|
|
6
|
-
size?: ButtonSize;
|
|
7
|
-
className?: string;
|
|
8
|
-
children?: preact.ComponentChildren;
|
|
9
|
-
} & Omit<preact.JSX.HTMLAttributes<HTMLButtonElement>, "className">): preact.JSX.Element;
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=button.d.ts.map
|