@pinecall/agents 0.9.20
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/LICENSE +202 -0
- package/README.md +121 -0
- package/dist/agent/accepts.d.ts +31 -0
- package/dist/agent/accepts.d.ts.map +1 -0
- package/dist/agent/accepts.js +27 -0
- package/dist/agent/accepts.js.map +1 -0
- package/dist/agent/agent.d.ts +151 -0
- package/dist/agent/agent.d.ts.map +1 -0
- package/dist/agent/agent.js +240 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/authors.d.ts +12 -0
- package/dist/agent/authors.d.ts.map +1 -0
- package/dist/agent/authors.js +26 -0
- package/dist/agent/authors.js.map +1 -0
- package/dist/agent/decorators.d.ts +16 -0
- package/dist/agent/decorators.d.ts.map +1 -0
- package/dist/agent/decorators.js +43 -0
- package/dist/agent/decorators.js.map +1 -0
- package/dist/agent/docstrings.d.ts +35 -0
- package/dist/agent/docstrings.d.ts.map +1 -0
- package/dist/agent/docstrings.js +301 -0
- package/dist/agent/docstrings.js.map +1 -0
- package/dist/agent/knowledge.d.ts +9 -0
- package/dist/agent/knowledge.d.ts.map +1 -0
- package/dist/agent/knowledge.js +3 -0
- package/dist/agent/knowledge.js.map +1 -0
- package/dist/agent/lifecycle.d.ts +29 -0
- package/dist/agent/lifecycle.d.ts.map +1 -0
- package/dist/agent/lifecycle.js +9 -0
- package/dist/agent/lifecycle.js.map +1 -0
- package/dist/agent/searching.d.ts +7 -0
- package/dist/agent/searching.d.ts.map +1 -0
- package/dist/agent/searching.js +35 -0
- package/dist/agent/searching.js.map +1 -0
- package/dist/agent/stages.d.ts +23 -0
- package/dist/agent/stages.d.ts.map +1 -0
- package/dist/agent/stages.js +29 -0
- package/dist/agent/stages.js.map +1 -0
- package/dist/agent/state.d.ts +36 -0
- package/dist/agent/state.d.ts.map +1 -0
- package/dist/agent/state.js +93 -0
- package/dist/agent/state.js.map +1 -0
- package/dist/agent/tools.d.ts +61 -0
- package/dist/agent/tools.d.ts.map +1 -0
- package/dist/agent/tools.js +145 -0
- package/dist/agent/tools.js.map +1 -0
- package/dist/agent/view.d.ts +29 -0
- package/dist/agent/view.d.ts.map +1 -0
- package/dist/agent/view.js +29 -0
- package/dist/agent/view.js.map +1 -0
- package/dist/agent/visibility.d.ts +32 -0
- package/dist/agent/visibility.d.ts.map +1 -0
- package/dist/agent/visibility.js +77 -0
- package/dist/agent/visibility.js.map +1 -0
- package/dist/call/call.d.ts +137 -0
- package/dist/call/call.d.ts.map +1 -0
- package/dist/call/call.js +228 -0
- package/dist/call/call.js.map +1 -0
- package/dist/call/history.d.ts +28 -0
- package/dist/call/history.d.ts.map +1 -0
- package/dist/call/history.js +32 -0
- package/dist/call/history.js.map +1 -0
- package/dist/call/room.d.ts +56 -0
- package/dist/call/room.d.ts.map +1 -0
- package/dist/call/room.js +66 -0
- package/dist/call/room.js.map +1 -0
- package/dist/client/agent.d.ts +93 -0
- package/dist/client/agent.d.ts.map +1 -0
- package/dist/client/agent.js +230 -0
- package/dist/client/agent.js.map +1 -0
- package/dist/client/calls.d.ts +87 -0
- package/dist/client/calls.d.ts.map +1 -0
- package/dist/client/calls.js +180 -0
- package/dist/client/calls.js.map +1 -0
- package/dist/client/client.d.ts +112 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +284 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/connection.d.ts +52 -0
- package/dist/client/connection.d.ts.map +1 -0
- package/dist/client/connection.js +157 -0
- package/dist/client/connection.js.map +1 -0
- package/dist/client/endpoints.d.ts +9 -0
- package/dist/client/endpoints.d.ts.map +1 -0
- package/dist/client/endpoints.js +25 -0
- package/dist/client/endpoints.js.map +1 -0
- package/dist/client/frames.d.ts +29 -0
- package/dist/client/frames.d.ts.map +1 -0
- package/dist/client/frames.js +51 -0
- package/dist/client/frames.js.map +1 -0
- package/dist/client/index.d.ts +18 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +13 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/listeners.d.ts +35 -0
- package/dist/client/listeners.d.ts.map +1 -0
- package/dist/client/listeners.js +60 -0
- package/dist/client/listeners.js.map +1 -0
- package/dist/client/lost.d.ts +4 -0
- package/dist/client/lost.d.ts.map +1 -0
- package/dist/client/lost.js +8 -0
- package/dist/client/lost.js.map +1 -0
- package/dist/client/observe.d.ts +50 -0
- package/dist/client/observe.d.ts.map +1 -0
- package/dist/client/observe.js +125 -0
- package/dist/client/observe.js.map +1 -0
- package/dist/client/signed.d.ts +14 -0
- package/dist/client/signed.d.ts.map +1 -0
- package/dist/client/signed.js +18 -0
- package/dist/client/signed.js.map +1 -0
- package/dist/client/testing/gateway.d.ts +58 -0
- package/dist/client/testing/gateway.d.ts.map +1 -0
- package/dist/client/testing/gateway.js +175 -0
- package/dist/client/testing/gateway.js.map +1 -0
- package/dist/client/testing/index.d.ts +4 -0
- package/dist/client/testing/index.d.ts.map +1 -0
- package/dist/client/testing/index.js +4 -0
- package/dist/client/testing/index.js.map +1 -0
- package/dist/client/testing/log.d.ts +24 -0
- package/dist/client/testing/log.d.ts.map +1 -0
- package/dist/client/testing/log.js +106 -0
- package/dist/client/testing/log.js.map +1 -0
- package/dist/client/testing/loopback.d.ts +3 -0
- package/dist/client/testing/loopback.d.ts.map +1 -0
- package/dist/client/testing/loopback.js +3 -0
- package/dist/client/testing/loopback.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/connect.d.ts +42 -0
- package/dist/runtime/connect.d.ts.map +1 -0
- package/dist/runtime/connect.js +234 -0
- package/dist/runtime/connect.js.map +1 -0
- package/dist/runtime/dispatch.d.ts +32 -0
- package/dist/runtime/dispatch.d.ts.map +1 -0
- package/dist/runtime/dispatch.js +46 -0
- package/dist/runtime/dispatch.js.map +1 -0
- package/dist/runtime/environment.d.ts +7 -0
- package/dist/runtime/environment.d.ts.map +1 -0
- package/dist/runtime/environment.js +30 -0
- package/dist/runtime/environment.js.map +1 -0
- package/dist/runtime/recall.d.ts +9 -0
- package/dist/runtime/recall.d.ts.map +1 -0
- package/dist/runtime/recall.js +13 -0
- package/dist/runtime/recall.js.map +1 -0
- package/dist/runtime/run-tool.d.ts +18 -0
- package/dist/runtime/run-tool.d.ts.map +1 -0
- package/dist/runtime/run-tool.js +70 -0
- package/dist/runtime/run-tool.js.map +1 -0
- package/dist/serve/index.d.ts +5 -0
- package/dist/serve/index.d.ts.map +1 -0
- package/dist/serve/index.js +50 -0
- package/dist/serve/index.js.map +1 -0
- package/dist/serve/io.d.ts +14 -0
- package/dist/serve/io.d.ts.map +1 -0
- package/dist/serve/io.js +6 -0
- package/dist/serve/io.js.map +1 -0
- package/dist/serve/leaving.d.ts +12 -0
- package/dist/serve/leaving.d.ts.map +1 -0
- package/dist/serve/leaving.js +61 -0
- package/dist/serve/leaving.js.map +1 -0
- package/dist/serve/lines.d.ts +7 -0
- package/dist/serve/lines.d.ts.map +1 -0
- package/dist/serve/lines.js +25 -0
- package/dist/serve/lines.js.map +1 -0
- package/dist/serve/load.d.ts +26 -0
- package/dist/serve/load.d.ts.map +1 -0
- package/dist/serve/load.js +61 -0
- package/dist/serve/load.js.map +1 -0
- package/dist/serve/machine.d.ts +4 -0
- package/dist/serve/machine.d.ts.map +1 -0
- package/dist/serve/machine.js +33 -0
- package/dist/serve/machine.js.map +1 -0
- package/dist/serve/prompt.d.ts +7 -0
- package/dist/serve/prompt.d.ts.map +1 -0
- package/dist/serve/prompt.js +51 -0
- package/dist/serve/prompt.js.map +1 -0
- package/dist/serve/start.d.ts +7 -0
- package/dist/serve/start.d.ts.map +1 -0
- package/dist/serve/start.js +95 -0
- package/dist/serve/start.js.map +1 -0
- package/dist/serve/viewing.d.ts +17 -0
- package/dist/serve/viewing.d.ts.map +1 -0
- package/dist/serve/viewing.js +42 -0
- package/dist/serve/viewing.js.map +1 -0
- package/dist/views/built-in-rules.d.ts +9 -0
- package/dist/views/built-in-rules.d.ts.map +1 -0
- package/dist/views/built-in-rules.js +28 -0
- package/dist/views/built-in-rules.js.map +1 -0
- package/dist/views/components.d.ts +17 -0
- package/dist/views/components.d.ts.map +1 -0
- package/dist/views/components.js +33 -0
- package/dist/views/components.js.map +1 -0
- package/dist/views/jsx-dev-runtime.d.ts +3 -0
- package/dist/views/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/views/jsx-dev-runtime.js +4 -0
- package/dist/views/jsx-dev-runtime.js.map +1 -0
- package/dist/views/jsx-runtime.d.ts +46 -0
- package/dist/views/jsx-runtime.d.ts.map +1 -0
- package/dist/views/jsx-runtime.js +63 -0
- package/dist/views/jsx-runtime.js.map +1 -0
- package/dist/views/layout.d.ts +19 -0
- package/dist/views/layout.d.ts.map +1 -0
- package/dist/views/layout.js +58 -0
- package/dist/views/layout.js.map +1 -0
- package/dist/views/nodes.d.ts +48 -0
- package/dist/views/nodes.d.ts.map +1 -0
- package/dist/views/nodes.js +45 -0
- package/dist/views/nodes.js.map +1 -0
- package/dist/views/panels.d.ts +17 -0
- package/dist/views/panels.d.ts.map +1 -0
- package/dist/views/panels.js +62 -0
- package/dist/views/panels.js.map +1 -0
- package/dist/views/render.d.ts +11 -0
- package/dist/views/render.d.ts.map +1 -0
- package/dist/views/render.js +19 -0
- package/dist/views/render.js.map +1 -0
- package/dist/wire/agent-config.d.ts +213 -0
- package/dist/wire/agent-config.d.ts.map +1 -0
- package/dist/wire/agent-config.js +126 -0
- package/dist/wire/agent-config.js.map +1 -0
- package/dist/wire/codec.d.ts +43 -0
- package/dist/wire/codec.d.ts.map +1 -0
- package/dist/wire/codec.js +51 -0
- package/dist/wire/codec.js.map +1 -0
- package/dist/wire/commands.d.ts +443 -0
- package/dist/wire/commands.d.ts.map +1 -0
- package/dist/wire/commands.js +203 -0
- package/dist/wire/commands.js.map +1 -0
- package/dist/wire/defs.d.ts +373 -0
- package/dist/wire/defs.d.ts.map +1 -0
- package/dist/wire/defs.js +212 -0
- package/dist/wire/defs.js.map +1 -0
- package/dist/wire/envelope.d.ts +29 -0
- package/dist/wire/envelope.d.ts.map +1 -0
- package/dist/wire/envelope.js +27 -0
- package/dist/wire/envelope.js.map +1 -0
- package/dist/wire/events-call.d.ts +446 -0
- package/dist/wire/events-call.d.ts.map +1 -0
- package/dist/wire/events-call.js +196 -0
- package/dist/wire/events-call.js.map +1 -0
- package/dist/wire/events.d.ts +946 -0
- package/dist/wire/events.d.ts.map +1 -0
- package/dist/wire/events.js +309 -0
- package/dist/wire/events.js.map +1 -0
- package/dist/wire/index.d.ts +19 -0
- package/dist/wire/index.d.ts.map +1 -0
- package/dist/wire/index.js +19 -0
- package/dist/wire/index.js.map +1 -0
- package/dist/wire/metrics.d.ts +366 -0
- package/dist/wire/metrics.d.ts.map +1 -0
- package/dist/wire/metrics.js +269 -0
- package/dist/wire/metrics.js.map +1 -0
- package/dist/wire/reduce.d.ts +10 -0
- package/dist/wire/reduce.d.ts.map +1 -0
- package/dist/wire/reduce.js +367 -0
- package/dist/wire/reduce.js.map +1 -0
- package/dist/wire/registry.d.ts +1789 -0
- package/dist/wire/registry.d.ts.map +1 -0
- package/dist/wire/registry.js +118 -0
- package/dist/wire/registry.js.map +1 -0
- package/dist/wire/rest-data.d.ts +170 -0
- package/dist/wire/rest-data.d.ts.map +1 -0
- package/dist/wire/rest-data.js +78 -0
- package/dist/wire/rest-data.js.map +1 -0
- package/dist/wire/rest-hosting.d.ts +74 -0
- package/dist/wire/rest-hosting.d.ts.map +1 -0
- package/dist/wire/rest-hosting.js +38 -0
- package/dist/wire/rest-hosting.js.map +1 -0
- package/dist/wire/rest-retrieval.d.ts +214 -0
- package/dist/wire/rest-retrieval.d.ts.map +1 -0
- package/dist/wire/rest-retrieval.js +161 -0
- package/dist/wire/rest-retrieval.js.map +1 -0
- package/dist/wire/rest.d.ts +786 -0
- package/dist/wire/rest.d.ts.map +1 -0
- package/dist/wire/rest.js +238 -0
- package/dist/wire/rest.js.map +1 -0
- package/dist/wire/room.d.ts +106 -0
- package/dist/wire/room.d.ts.map +1 -0
- package/dist/wire/room.js +73 -0
- package/dist/wire/room.js.map +1 -0
- package/dist/wire/state.d.ts +915 -0
- package/dist/wire/state.d.ts.map +1 -0
- package/dist/wire/state.js +189 -0
- package/dist/wire/state.js.map +1 -0
- package/dist/wire/verbs.d.ts +73 -0
- package/dist/wire/verbs.d.ts.map +1 -0
- package/dist/wire/verbs.js +50 -0
- package/dist/wire/verbs.js.map +1 -0
- package/package.json +74 -0
- package/tsconfig.tenant.json +24 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/client/testing/gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/testing/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/testing/index.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAEnG,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type Entry } from "../../wire/envelope.js";
|
|
2
|
+
import { type EventType } from "../../wire/registry.js";
|
|
3
|
+
/**
|
|
4
|
+
* Fake `GET /v1/calls/{id}/events` and `GET /v1/agents/{slug}/calls`, as JSON pages and SSE.
|
|
5
|
+
* `after` and `Last-Event-ID` are the same cursor; a reconnecting reader gets exactly what it missed.
|
|
6
|
+
*/
|
|
7
|
+
export declare class FakeLog {
|
|
8
|
+
#private;
|
|
9
|
+
readonly entries: Entry[];
|
|
10
|
+
private constructor();
|
|
11
|
+
/** Start on a random port. Close it when the test is over. */
|
|
12
|
+
static start(): Promise<FakeLog>;
|
|
13
|
+
/** The URL to give a client as PINECALL_URL. */
|
|
14
|
+
get url(): string;
|
|
15
|
+
/** Append one numbered entry and push it to attached readers. */
|
|
16
|
+
append(agent: string, call: string | null, type: EventType, data: Record<string, unknown>): Entry;
|
|
17
|
+
/** End every attached stream, simulating a deploy. */
|
|
18
|
+
cut(): void;
|
|
19
|
+
/** Number of attached readers. */
|
|
20
|
+
get readers(): number;
|
|
21
|
+
/** Stop listening and close all streams. */
|
|
22
|
+
close(): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../src/client/testing/log.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAU1E;;;GAGG;AACH,qBAAa,OAAO;;IAClB,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAM;IAK/B,OAAO,eAEN;IAED,8DAA8D;IAC9D,OAAa,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAQrC;IAED,gDAAgD;IAChD,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,iEAAiE;IACjE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAOhG;IAED,sDAAsD;IACtD,GAAG,IAAI,IAAI,CAKV;IAED,kCAAkC;IAClC,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,4CAA4C;IACtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;CAwCF"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// An in-memory fake of the call log's two read endpoints, fed by the test.
|
|
2
|
+
import { createServer } from "node:http";
|
|
3
|
+
import {} from "../../wire/envelope.js";
|
|
4
|
+
import { EPHEMERAL_EVENTS } from "../../wire/registry.js";
|
|
5
|
+
import { LOOPBACK } from "./loopback.js";
|
|
6
|
+
/**
|
|
7
|
+
* Fake `GET /v1/calls/{id}/events` and `GET /v1/agents/{slug}/calls`, as JSON pages and SSE.
|
|
8
|
+
* `after` and `Last-Event-ID` are the same cursor; a reconnecting reader gets exactly what it missed.
|
|
9
|
+
*/
|
|
10
|
+
export class FakeLog {
|
|
11
|
+
entries = [];
|
|
12
|
+
#server;
|
|
13
|
+
#readers = new Set();
|
|
14
|
+
#port = 0;
|
|
15
|
+
constructor(server) {
|
|
16
|
+
this.#server = server;
|
|
17
|
+
}
|
|
18
|
+
/** Start on a random port. Close it when the test is over. */
|
|
19
|
+
static async start() {
|
|
20
|
+
const server = createServer();
|
|
21
|
+
const log = new FakeLog(server);
|
|
22
|
+
server.on("request", (request, response) => log.#serve(request, response));
|
|
23
|
+
await new Promise((resolve) => server.listen(0, LOOPBACK, resolve));
|
|
24
|
+
const address = server.address();
|
|
25
|
+
log.#port = typeof address === "object" && address !== null ? address.port : 0;
|
|
26
|
+
return log;
|
|
27
|
+
}
|
|
28
|
+
/** The URL to give a client as PINECALL_URL. */
|
|
29
|
+
get url() {
|
|
30
|
+
return `http://${LOOPBACK}:${this.#port}`;
|
|
31
|
+
}
|
|
32
|
+
/** Append one numbered entry and push it to attached readers. */
|
|
33
|
+
append(agent, call, type, data) {
|
|
34
|
+
const entry = { seq: this.entries.length + 1, ts: Date.now() / 1000, call, agent, type, ephemeral: EPHEMERAL_EVENTS.has(type), data };
|
|
35
|
+
this.entries.push(entry);
|
|
36
|
+
for (const reader of this.#readers) {
|
|
37
|
+
this.#push(reader, entry);
|
|
38
|
+
}
|
|
39
|
+
return entry;
|
|
40
|
+
}
|
|
41
|
+
/** End every attached stream, simulating a deploy. */
|
|
42
|
+
cut() {
|
|
43
|
+
for (const reader of this.#readers) {
|
|
44
|
+
reader.response.end();
|
|
45
|
+
}
|
|
46
|
+
this.#readers.clear();
|
|
47
|
+
}
|
|
48
|
+
/** Number of attached readers. */
|
|
49
|
+
get readers() {
|
|
50
|
+
return this.#readers.size;
|
|
51
|
+
}
|
|
52
|
+
/** Stop listening and close all streams. */
|
|
53
|
+
async close() {
|
|
54
|
+
this.cut();
|
|
55
|
+
await new Promise((resolve, reject) => this.#server.close((failed) => (failed ? reject(failed) : resolve())));
|
|
56
|
+
}
|
|
57
|
+
#serve(request, response) {
|
|
58
|
+
const url = new URL(request.url ?? "/", this.url);
|
|
59
|
+
const of = matched(url.pathname);
|
|
60
|
+
if (of === null) {
|
|
61
|
+
response.writeHead(404).end();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const after = Number(request.headers["last-event-id"] ?? url.searchParams.get("after") ?? 0);
|
|
65
|
+
const mine = this.entries.filter((entry) => entry.seq > after && of(entry));
|
|
66
|
+
if ((request.headers.accept ?? "").includes("text/event-stream")) {
|
|
67
|
+
this.#attach(response, mine, after);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// A call's log is live until call.ended; an agent's never ends. `next`: last seq sent, else `after` while live.
|
|
71
|
+
const live = !this.entries.some((entry) => of(entry) && entry.type === "call.ended");
|
|
72
|
+
const last = mine.at(-1);
|
|
73
|
+
const next = last !== undefined ? last.seq : live ? after : null;
|
|
74
|
+
response.writeHead(200, { "content-type": "application/json" }).end(JSON.stringify({ entries: mine, live, next }));
|
|
75
|
+
}
|
|
76
|
+
#attach(response, replay, after) {
|
|
77
|
+
response.writeHead(200, { "content-type": "text/event-stream", "cache-control": "no-cache", connection: "keep-alive" });
|
|
78
|
+
const reader = { after, response };
|
|
79
|
+
for (const entry of replay) {
|
|
80
|
+
this.#push(reader, entry);
|
|
81
|
+
}
|
|
82
|
+
this.#readers.add(reader);
|
|
83
|
+
// No `error` listener needed: Node drops errors on a destroyed ServerResponse, so only `close` fires.
|
|
84
|
+
response.on("close", () => this.#readers.delete(reader));
|
|
85
|
+
}
|
|
86
|
+
#push(reader, entry) {
|
|
87
|
+
if (entry.seq <= reader.after) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
reader.after = entry.seq;
|
|
91
|
+
reader.response.write(`id: ${entry.seq}\ndata: ${JSON.stringify(entry)}\n\n`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Entry filter for a path, or null when the path is not a log endpoint. */
|
|
95
|
+
function matched(pathname) {
|
|
96
|
+
const call = /^\/v1\/calls\/([^/]+)\/events$/.exec(pathname);
|
|
97
|
+
if (call !== null) {
|
|
98
|
+
return (entry) => entry.call === decodeURIComponent(call[1]);
|
|
99
|
+
}
|
|
100
|
+
const agent = /^\/v1\/agents\/([^/]+)\/calls$/.exec(pathname);
|
|
101
|
+
if (agent !== null) {
|
|
102
|
+
return (entry) => entry.agent === decodeURIComponent(agent[1]);
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/client/testing/log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopback.d.ts","sourceRoot":"","sources":["../../../src/client/testing/loopback.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,eAAO,MAAM,QAAQ,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopback.js","sourceRoot":"","sources":["../../../src/client/testing/loopback.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export * from "./agent/agent.js";
|
|
2
|
+
export * from "./agent/knowledge.js";
|
|
3
|
+
export * from "./agent/authors.js";
|
|
4
|
+
export * from "./agent/state.js";
|
|
5
|
+
export * from "./agent/tools.js";
|
|
6
|
+
export * from "./agent/decorators.js";
|
|
7
|
+
export type { Stages } from "./agent/stages.js";
|
|
8
|
+
export * from "./agent/docstrings.js";
|
|
9
|
+
export * from "./agent/view.js";
|
|
10
|
+
export * from "./agent/lifecycle.js";
|
|
11
|
+
export * from "./views/jsx-runtime.js";
|
|
12
|
+
export * from "./views/components.js";
|
|
13
|
+
export { PROMPT_BLOCKS, type Block, type Blocks } from "./views/layout.js";
|
|
14
|
+
export * from "./views/render.js";
|
|
15
|
+
export { renderToNodes, said, type Panels, type Tone, type ViewNode } from "./views/nodes.js";
|
|
16
|
+
export { ToolFailed, runTool } from "./runtime/run-tool.js";
|
|
17
|
+
export * from "./runtime/connect.js";
|
|
18
|
+
export * from "./agent/visibility.js";
|
|
19
|
+
export * from "./agent/accepts.js";
|
|
20
|
+
export * from "./call/room.js";
|
|
21
|
+
export * from "./call/history.js";
|
|
22
|
+
export * from "./call/call.js";
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AAEtC,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3E,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG9F,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC5D,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// pinecall: the public entry point — the Agent class, the JSX prompt runtime, the call and the bridge.
|
|
2
|
+
// test/index.test.ts pins this list. The bare socket client is exported separately as `@pinecall/agents/client`.
|
|
3
|
+
export * from "./agent/agent.js";
|
|
4
|
+
export * from "./agent/knowledge.js";
|
|
5
|
+
export * from "./agent/authors.js";
|
|
6
|
+
export * from "./agent/state.js";
|
|
7
|
+
export * from "./agent/tools.js";
|
|
8
|
+
export * from "./agent/decorators.js";
|
|
9
|
+
export * from "./agent/docstrings.js";
|
|
10
|
+
export * from "./agent/view.js";
|
|
11
|
+
export * from "./agent/lifecycle.js";
|
|
12
|
+
export * from "./views/jsx-runtime.js";
|
|
13
|
+
export * from "./views/components.js";
|
|
14
|
+
// `layout` is exposed as `promptOf`.
|
|
15
|
+
export { PROMPT_BLOCKS } from "./views/layout.js";
|
|
16
|
+
export * from "./views/render.js";
|
|
17
|
+
// The panel tags themselves are exported from `@pinecall/agents/panels`.
|
|
18
|
+
export { renderToNodes, said } from "./views/nodes.js";
|
|
19
|
+
// `runTool` lets a tenant's unit tests run a tool as the bridge would; the rest of run-tool.ts is internal.
|
|
20
|
+
export { ToolFailed, runTool } from "./runtime/run-tool.js";
|
|
21
|
+
export * from "./runtime/connect.js";
|
|
22
|
+
export * from "./agent/visibility.js";
|
|
23
|
+
export * from "./agent/accepts.js";
|
|
24
|
+
export * from "./call/room.js";
|
|
25
|
+
export * from "./call/history.js";
|
|
26
|
+
export * from "./call/call.js";
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,iHAAiH;AAEjH,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,qCAAqC;AACrC,OAAO,EAAE,aAAa,EAA2B,MAAM,mBAAmB,CAAC;AAC3E,cAAc,mBAAmB,CAAC;AAClC,yEAAyE;AACzE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAyC,MAAM,kBAAkB,CAAC;AAC9F,4GAA4G;AAE5G,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC5D,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** The bridge: mounts an Agent class on a Pinecall client, one instance per call. */
|
|
2
|
+
import type { Agent as SdkAgent, AgentOptions, Pinecall, Tool } from "../client/index.js";
|
|
3
|
+
import { Agent } from "../agent/agent.js";
|
|
4
|
+
import { type LastCall } from "../agent/state.js";
|
|
5
|
+
/** Options for `mount()`. */
|
|
6
|
+
export interface MountOptions {
|
|
7
|
+
pc: Pinecall;
|
|
8
|
+
/** The class's source, so docstrings and parameter types survive compilation. */
|
|
9
|
+
source?: string;
|
|
10
|
+
/** The agent file's path; its extension selects the parser dialect. */
|
|
11
|
+
file?: string;
|
|
12
|
+
/** Override the slug derived from the class name. */
|
|
13
|
+
slug?: string;
|
|
14
|
+
/** Source for `this.last(contact)` on every instance of this mount. */
|
|
15
|
+
last?: LastCall;
|
|
16
|
+
/** False for a console, which serves only calls it opened itself. */
|
|
17
|
+
takesUnclaimed?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** A mounted agent: its registered SDK agent and the instances serving live calls. */
|
|
20
|
+
export interface Mounted {
|
|
21
|
+
slug: string;
|
|
22
|
+
agent: SdkAgent;
|
|
23
|
+
options: AgentOptions;
|
|
24
|
+
/** The instance serving a call, while it lasts. */
|
|
25
|
+
instanceOf(callId: string): Agent | undefined;
|
|
26
|
+
}
|
|
27
|
+
type Ctor = new () => Agent;
|
|
28
|
+
/** The slug an agent registers under: its `static slug`, or its class name in kebab-case. */
|
|
29
|
+
export declare function slugOf(ctor: Function): string;
|
|
30
|
+
/**
|
|
31
|
+
* Build the declaration sent to the gateway: tools, prompt layout, knowledge use, state fields,
|
|
32
|
+
* events and view. Environment fields are refused. `instance` is a throwaway probe;
|
|
33
|
+
* knowledge use is detected from `source` (or the class body).
|
|
34
|
+
*/
|
|
35
|
+
export declare function optionsFor(ctor: Ctor, tools: Tool[], instance?: Agent, file?: string, source?: string): AgentOptions;
|
|
36
|
+
/**
|
|
37
|
+
* Mount an agent class on a client. Each call gets its own instance, state and prompt.
|
|
38
|
+
* Nothing is sent until `pc.connect()`.
|
|
39
|
+
*/
|
|
40
|
+
export declare function mount(ctor: Ctor, { pc, source, file, slug, last, takesUnclaimed }: MountOptions): Mounted;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=connect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/runtime/connect.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAKrF,OAAO,KAAK,EAAE,KAAK,IAAI,QAAQ,EAAE,YAAY,EAAmB,QAAQ,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE3G,OAAO,EAAE,KAAK,EAAqD,MAAM,mBAAmB,CAAC;AAO7F,OAAO,EAAqB,KAAK,QAAQ,EAAiB,MAAM,mBAAmB,CAAC;AAUpF,6BAA6B;AAC7B,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,QAAQ,CAAC;IACb,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,sFAAsF;AACtF,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,mDAAmD;IACnD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;CAC/C;AAED,KAAK,IAAI,GAAG,UAAU,KAAK,CAAC;AAmB5B,6FAA6F;AAC7F,wBAAgB,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAO7C;AAOD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,GAAE,KAAkB,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAgBhI;AAED;;;GAGG;AACH,wBAAgB,KAAK,CACnB,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAqB,EAAE,EAAE,YAAY,GACpE,OAAO,CAqCT"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/** The bridge: mounts an Agent class on a Pinecall client, one instance per call. */
|
|
2
|
+
import {} from "../wire/codec.js";
|
|
3
|
+
import {} from "../wire/defs.js";
|
|
4
|
+
import {} from "../wire/registry.js";
|
|
5
|
+
import { Agent, onChange, onLog, recalled, seal, setCall, setLast } from "../agent/agent.js";
|
|
6
|
+
import { eventsOf } from "../agent/accepts.js";
|
|
7
|
+
import { visibilityOf } from "../agent/visibility.js";
|
|
8
|
+
import { CallWorld } from "../call/call.js";
|
|
9
|
+
import { describe } from "../agent/docstrings.js";
|
|
10
|
+
import { searchesKnowledge } from "../agent/searching.js";
|
|
11
|
+
import { runHook } from "../agent/lifecycle.js";
|
|
12
|
+
import { restore, snapshot } from "../agent/state.js";
|
|
13
|
+
import { toolNamed } from "../agent/tools.js";
|
|
14
|
+
import { viewOf } from "../agent/view.js";
|
|
15
|
+
import { PROMPT_BLOCKS } from "../views/layout.js";
|
|
16
|
+
import { promptOf } from "../views/render.js";
|
|
17
|
+
import { inOrder } from "./dispatch.js";
|
|
18
|
+
import { refuseTheEnvironment } from "./environment.js";
|
|
19
|
+
import { wordsRecalled } from "./recall.js";
|
|
20
|
+
import { runTool, ToolFailed } from "./run-tool.js";
|
|
21
|
+
/** The slug an agent registers under: its `static slug`, or its class name in kebab-case. */
|
|
22
|
+
export function slugOf(ctor) {
|
|
23
|
+
const declared = ctor.slug;
|
|
24
|
+
if (typeof declared === "string")
|
|
25
|
+
return declared;
|
|
26
|
+
return ctor.name
|
|
27
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1-$2")
|
|
28
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1-$2")
|
|
29
|
+
.toLowerCase();
|
|
30
|
+
}
|
|
31
|
+
function stateFieldsOf(ctor) {
|
|
32
|
+
const declared = visibilityOf(ctor);
|
|
33
|
+
return declared.length === 0 ? undefined : declared;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Build the declaration sent to the gateway: tools, prompt layout, knowledge use, state fields,
|
|
37
|
+
* events and view. Environment fields are refused. `instance` is a throwaway probe;
|
|
38
|
+
* knowledge use is detected from `source` (or the class body).
|
|
39
|
+
*/
|
|
40
|
+
export function optionsFor(ctor, tools, instance = new ctor(), file, source) {
|
|
41
|
+
const probe = instance;
|
|
42
|
+
refuseTheEnvironment(probe);
|
|
43
|
+
// Phone numbers are org rows managed with `pinecall numbers`, so a `phone` field is never sent.
|
|
44
|
+
const options = { tools };
|
|
45
|
+
if (searchesKnowledge(source ?? ctor.toString(), file))
|
|
46
|
+
options.usesKnowledge = true;
|
|
47
|
+
// Always sent whole, so the runtime and console name blocks the same way.
|
|
48
|
+
options.prompt = [...PROMPT_BLOCKS];
|
|
49
|
+
const stateFields = stateFieldsOf(ctor);
|
|
50
|
+
if (stateFields)
|
|
51
|
+
options.stateFields = stateFields;
|
|
52
|
+
const events = eventsOf(ctor);
|
|
53
|
+
if (events.length > 0)
|
|
54
|
+
options.events = events;
|
|
55
|
+
// Only the name: the panel's content is rendered on demand by view.render (cli/ui/viewing.ts).
|
|
56
|
+
const panel = viewOf(ctor);
|
|
57
|
+
if (panel !== undefined)
|
|
58
|
+
options.view = { name: panel.name };
|
|
59
|
+
return options;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Mount an agent class on a client. Each call gets its own instance, state and prompt.
|
|
63
|
+
* Nothing is sent until `pc.connect()`.
|
|
64
|
+
*/
|
|
65
|
+
export function mount(ctor, { pc, source, file, slug, last, takesUnclaimed = true }) {
|
|
66
|
+
if (source !== undefined)
|
|
67
|
+
describe(ctor, source, file);
|
|
68
|
+
const name = slug ?? slugOf(ctor);
|
|
69
|
+
const live = new Map();
|
|
70
|
+
const probe = new ctor();
|
|
71
|
+
const tools = probe.tools().map((spec) => ({
|
|
72
|
+
...spec,
|
|
73
|
+
run: (args, call) => call_(live, call, spec.name, args),
|
|
74
|
+
}));
|
|
75
|
+
const options = { ...optionsFor(ctor, tools, probe, file, source), takesUnclaimed };
|
|
76
|
+
const agent = pc.agent(name, options);
|
|
77
|
+
agent.on("call.started", (started, call) => {
|
|
78
|
+
if (call !== null) {
|
|
79
|
+
const send = (type, id, data) => agent.command(type, id, data);
|
|
80
|
+
const searching = (query, k) => pc.search(call.id, query, k);
|
|
81
|
+
void start(ctor, live, call, send, searching, last, started.state ?? undefined);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
// A call handed over mid-conversation. If already served here (the gateway restarted), keep the
|
|
85
|
+
// instance and resend the whole prompt, which the gateway may have lost.
|
|
86
|
+
agent.on("call.attached", (attached, call) => {
|
|
87
|
+
if (call === null)
|
|
88
|
+
return;
|
|
89
|
+
const held = live.get(call.id);
|
|
90
|
+
if (held !== undefined) {
|
|
91
|
+
held.sent = { blocks: new Map() };
|
|
92
|
+
sync(held, call);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const send = (type, id, data) => agent.command(type, id, data);
|
|
96
|
+
const searching = (query, k) => pc.search(call.id, query, k);
|
|
97
|
+
adopt(ctor, live, call, attached.state, send, searching, last);
|
|
98
|
+
});
|
|
99
|
+
agent.on("call.ended", (_payload, call) => {
|
|
100
|
+
if (call !== null)
|
|
101
|
+
void end(live, call);
|
|
102
|
+
});
|
|
103
|
+
return { slug: name, agent, options, instanceOf: (id) => live.get(id)?.agent };
|
|
104
|
+
}
|
|
105
|
+
// An unserved call means the line hung up: tell the model instead of throwing in the process.
|
|
106
|
+
async function call_(live, call, name, args) {
|
|
107
|
+
const serving = live.get(call.id);
|
|
108
|
+
if (serving === undefined)
|
|
109
|
+
throw new ToolFailed(`${name}: this call is no longer being served`);
|
|
110
|
+
const declaration = toolNamed(serving.agent, name);
|
|
111
|
+
if (declaration === undefined)
|
|
112
|
+
throw new ToolFailed(`${name}: this agent declares no such tool`);
|
|
113
|
+
return runTool(serving.agent, declaration, args);
|
|
114
|
+
}
|
|
115
|
+
// Subscribe to changes only after the first sync, so onCall's writes go out as one prompt. The
|
|
116
|
+
// state the opener asked for is applied after onCall, which would overwrite it, and before the
|
|
117
|
+
// first render, so the model never sees the class's own state first.
|
|
118
|
+
async function start(ctor, live, call, send, searching, last, openedIn) {
|
|
119
|
+
const link = serve(ctor, live, call, send, searching, last);
|
|
120
|
+
await runHook(link.agent, "onCall", hookCall(call));
|
|
121
|
+
if (openedIn !== undefined)
|
|
122
|
+
link.agent.startIn(openedIn);
|
|
123
|
+
call.setState(snapshot(link.agent));
|
|
124
|
+
sync(link, call);
|
|
125
|
+
follow(link, call);
|
|
126
|
+
}
|
|
127
|
+
// call.attached: take over a call from another process. Synchronous, because pending tool calls
|
|
128
|
+
// arrive next and must find the instance. No onCall; the gateway's snapshot is restored instead.
|
|
129
|
+
function adopt(ctor, live, call, state, send, searching, last) {
|
|
130
|
+
const link = serve(ctor, live, call, send, searching, last);
|
|
131
|
+
restore(link.agent, state);
|
|
132
|
+
sync(link, call);
|
|
133
|
+
follow(link, call);
|
|
134
|
+
}
|
|
135
|
+
function serve(ctor, live, call, send, searching, last) {
|
|
136
|
+
const agent = seal(new ctor());
|
|
137
|
+
if (last !== undefined)
|
|
138
|
+
setLast(agent, last);
|
|
139
|
+
const world = new CallWorld(callLine(call), (type, data) => send(type, call.id, data), searching);
|
|
140
|
+
setCall(agent, world);
|
|
141
|
+
const serving = { agent, ctor, call: world, warned: new Set(), queue: Promise.resolve() };
|
|
142
|
+
const link = { agent, sent: { blocks: new Map() }, stop: [], serving };
|
|
143
|
+
live.set(call.id, link);
|
|
144
|
+
return link;
|
|
145
|
+
}
|
|
146
|
+
function follow(link, call) {
|
|
147
|
+
const { agent, serving } = link;
|
|
148
|
+
const world = serving.call;
|
|
149
|
+
link.stop.push(onChange(agent, (change) => {
|
|
150
|
+
call.setState(snapshot(agent), [change.field]);
|
|
151
|
+
// state.set has no cause field on the wire, so log it separately.
|
|
152
|
+
const cause = world.cause;
|
|
153
|
+
if (cause !== null)
|
|
154
|
+
call.log("state.cause", { field: change.field, kind: "event", ...cause });
|
|
155
|
+
sync(link, call);
|
|
156
|
+
}), onLog(agent, (entry) => call.log(entry.name, dataOf(entry.data))), call.onAny((event) => {
|
|
157
|
+
world.take(event.type, event.data, Date.now());
|
|
158
|
+
if (event.type === "event.received")
|
|
159
|
+
void received(serving, event.data);
|
|
160
|
+
// Recalled memory is not state, so re-render explicitly.
|
|
161
|
+
if (event.type === "memory.ops") {
|
|
162
|
+
recalled(agent, wordsRecalled(event.data));
|
|
163
|
+
sync(link, call);
|
|
164
|
+
}
|
|
165
|
+
// Re-render on the user's turn so the view reflects the turn being answered, not the previous
|
|
166
|
+
// one. The gateway holds the LLM request while lookups run (runtime's session/lookups.py).
|
|
167
|
+
if (event.type === "turn.user")
|
|
168
|
+
sync(link, call);
|
|
169
|
+
// A claim changes the view (the caller can now see the page) without moving a field.
|
|
170
|
+
if (event.type === "call.claimed")
|
|
171
|
+
sync(link, call);
|
|
172
|
+
}));
|
|
173
|
+
}
|
|
174
|
+
// Numbered per call: listeners receive events without the wire's seq.
|
|
175
|
+
async function received(serving, data) {
|
|
176
|
+
const fact = data;
|
|
177
|
+
await inOrder(serving, {
|
|
178
|
+
name: fact.name,
|
|
179
|
+
data: fact.data,
|
|
180
|
+
source: fact.source,
|
|
181
|
+
seq: serving.call.numbered(),
|
|
182
|
+
...(fact.identity === undefined ? {} : { identity: fact.identity }),
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
async function end(live, call) {
|
|
186
|
+
const link = live.get(call.id);
|
|
187
|
+
if (link === undefined)
|
|
188
|
+
return;
|
|
189
|
+
live.delete(call.id);
|
|
190
|
+
for (const stop of link.stop)
|
|
191
|
+
stop();
|
|
192
|
+
await runHook(link.agent, "onEnd", hookCall(call));
|
|
193
|
+
setCall(link.agent, null);
|
|
194
|
+
}
|
|
195
|
+
// Send only blocks whose text changed. Tools are compared as a whole: only `when` changes them mid-call.
|
|
196
|
+
function sync(serving, call) {
|
|
197
|
+
const { blocks } = promptOf(serving.agent);
|
|
198
|
+
for (const block of blocks) {
|
|
199
|
+
if (block.text === (serving.sent.blocks.get(block.name) ?? ""))
|
|
200
|
+
continue;
|
|
201
|
+
serving.sent.blocks.set(block.name, block.text);
|
|
202
|
+
call.setPrompt(block.name, block.text);
|
|
203
|
+
}
|
|
204
|
+
const visible = serving.agent.visibleTools();
|
|
205
|
+
const key = JSON.stringify(visible);
|
|
206
|
+
if (key !== serving.sent.tools) {
|
|
207
|
+
serving.sent.tools = key;
|
|
208
|
+
call.setTools(visible);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function hookCall(call) {
|
|
212
|
+
const hook = { id: call.id, contact: call.contact?.id ?? call.from ?? "" };
|
|
213
|
+
if (call.from !== null)
|
|
214
|
+
hook.from = call.from;
|
|
215
|
+
if (call.channel !== null)
|
|
216
|
+
hook.channel = call.channel;
|
|
217
|
+
if (call.medium !== null)
|
|
218
|
+
hook.medium = call.medium;
|
|
219
|
+
return hook;
|
|
220
|
+
}
|
|
221
|
+
// Adds `today` and `claimed`, which hookCall lacks; without them `this.call.today` is undefined.
|
|
222
|
+
function callLine(call) {
|
|
223
|
+
return { ...hookCall(call), today: call.today, claimed: call.claimed };
|
|
224
|
+
}
|
|
225
|
+
// call.log requires an object, so wrap other values under `value`.
|
|
226
|
+
function dataOf(data) {
|
|
227
|
+
if (data === undefined)
|
|
228
|
+
return {};
|
|
229
|
+
if (typeof data === "object" && data !== null && !Array.isArray(data)) {
|
|
230
|
+
return data;
|
|
231
|
+
}
|
|
232
|
+
return { value: data };
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/runtime/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Dispatches `event.received` entries to the instance serving the call, or drops them. */
|
|
2
|
+
import { type EventSource } from "../agent/accepts.js";
|
|
3
|
+
import type { CallWorld } from "../call/call.js";
|
|
4
|
+
/** One `event.received` entry as the wire carries it. */
|
|
5
|
+
export interface Received {
|
|
6
|
+
name: string;
|
|
7
|
+
data: Record<string, unknown>;
|
|
8
|
+
source: EventSource;
|
|
9
|
+
identity?: string;
|
|
10
|
+
seq: number;
|
|
11
|
+
}
|
|
12
|
+
/** The live instance, its class and its call, as the dispatcher needs them. */
|
|
13
|
+
export interface Serving {
|
|
14
|
+
agent: object;
|
|
15
|
+
ctor: Function;
|
|
16
|
+
call: CallWorld;
|
|
17
|
+
/** `call:name` keys already warned about, so each warns once. */
|
|
18
|
+
warned: Set<string>;
|
|
19
|
+
/** Serializes this call's events so a write's cause is the event currently running. */
|
|
20
|
+
queue: Promise<unknown>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Dispatch after all earlier events finish. The cause lives on the call while a hook runs, so
|
|
24
|
+
* concurrent hooks would attribute writes to each other's event.
|
|
25
|
+
*/
|
|
26
|
+
export declare function inOrder(serving: Serving, received: Received): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Pass the event to `onEvent` if its name and source are declared, else drop it. Writes inside the
|
|
29
|
+
* hook are authored `event:<name>`, and the call carries the cause so the log can name it.
|
|
30
|
+
*/
|
|
31
|
+
export declare function dispatch(serving: Serving, received: Received): Promise<boolean>;
|
|
32
|
+
//# sourceMappingURL=dispatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/runtime/dispatch.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAI3F,OAAO,EAA2B,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,yDAAyD;AACzD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,+EAA+E;AAC/E,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,iEAAiE;IACjE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,uFAAuF;IACvF,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAK9E;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBrF"}
|