neoctl 0.2.2 → 0.2.3

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.
Files changed (51) hide show
  1. package/dist/repl/index.js +2 -2
  2. package/dist/repl/index.js.map +1 -1
  3. package/package.json +3 -2
  4. package/dist/core/commands.d.ts +0 -66
  5. package/dist/core/commands.js +0 -151
  6. package/dist/core/commands.js.map +0 -1
  7. package/dist/core/runtime.d.ts +0 -59
  8. package/dist/core/runtime.js +0 -161
  9. package/dist/core/runtime.js.map +0 -1
  10. package/dist/repl/render.d.ts +0 -2
  11. package/dist/repl/render.js +0 -45
  12. package/dist/repl/render.js.map +0 -1
  13. package/dist/repl/status-line.d.ts +0 -19
  14. package/dist/repl/status-line.js +0 -160
  15. package/dist/repl/status-line.js.map +0 -1
  16. package/dist/repl/transcript-flush.d.ts +0 -6
  17. package/dist/repl/transcript-flush.js +0 -54
  18. package/dist/repl/transcript-flush.js.map +0 -1
  19. package/dist/repl/transcript-format.d.ts +0 -16
  20. package/dist/repl/transcript-format.js +0 -199
  21. package/dist/repl/transcript-format.js.map +0 -1
  22. package/dist/server/agent-manager.d.ts +0 -56
  23. package/dist/server/agent-manager.js +0 -171
  24. package/dist/server/agent-manager.js.map +0 -1
  25. package/dist/server/connection-manager.d.ts +0 -18
  26. package/dist/server/connection-manager.js +0 -52
  27. package/dist/server/connection-manager.js.map +0 -1
  28. package/dist/server/event-mapper.d.ts +0 -4
  29. package/dist/server/event-mapper.js +0 -31
  30. package/dist/server/event-mapper.js.map +0 -1
  31. package/dist/server/query-runtime.d.ts +0 -29
  32. package/dist/server/query-runtime.js +0 -61
  33. package/dist/server/query-runtime.js.map +0 -1
  34. package/dist/server/rpc-router.d.ts +0 -24
  35. package/dist/server/rpc-router.js +0 -165
  36. package/dist/server/rpc-router.js.map +0 -1
  37. package/dist/server/rpc-types.d.ts +0 -92
  38. package/dist/server/rpc-types.js +0 -2
  39. package/dist/server/rpc-types.js.map +0 -1
  40. package/dist/server/ws-server.d.ts +0 -22
  41. package/dist/server/ws-server.js +0 -84
  42. package/dist/server/ws-server.js.map +0 -1
  43. package/dist/tasks/task-record.d.ts +0 -50
  44. package/dist/tasks/task-record.js +0 -50
  45. package/dist/tasks/task-record.js.map +0 -1
  46. package/dist/tools/builtins/echo-tool.d.ts +0 -4
  47. package/dist/tools/builtins/echo-tool.js +0 -26
  48. package/dist/tools/builtins/echo-tool.js.map +0 -1
  49. package/dist/tools/builtins/vision-tool.d.ts +0 -38
  50. package/dist/tools/builtins/vision-tool.js +0 -351
  51. package/dist/tools/builtins/vision-tool.js.map +0 -1
@@ -1,171 +0,0 @@
1
- import { createCoreRuntime, createQueryEngineRuntime, } from "../core/runtime.js";
2
- import { QueryRun } from "./query-runtime.js";
3
- export class AgentManager {
4
- agents = new Map();
5
- createRuntime;
6
- idleAgentTtlMs;
7
- reconnectGraceMs;
8
- runningDetachedKeepAliveMs;
9
- services;
10
- sessionCwd;
11
- constructor(options = {}) {
12
- this.services = options.services;
13
- this.sessionCwd = options.sessionCwd;
14
- this.createRuntime = options.createRuntime ?? ((runtimeOptions) => this.services
15
- ? createQueryEngineRuntime(this.services, runtimeOptions)
16
- : createCoreRuntime(runtimeOptions));
17
- this.idleAgentTtlMs = options.idleAgentTtlMs ?? 10 * 60_000;
18
- this.reconnectGraceMs = options.reconnectGraceMs ?? 30_000;
19
- this.runningDetachedKeepAliveMs = options.runningDetachedKeepAliveMs ?? 60 * 60_000;
20
- }
21
- async getOrCreate(identity, options = {}) {
22
- const key = agentKey(identity);
23
- const existing = this.agents.get(key);
24
- if (existing)
25
- return existing;
26
- const runtime = await this.createRuntime({
27
- agentId: identity.agentId,
28
- sessionId: identity.sessionId,
29
- sessionCwd: this.sessionCwd,
30
- resume: options.resume ?? true,
31
- queryOrigin: "json-rpc-ws",
32
- });
33
- const agent = {
34
- ...identity,
35
- key,
36
- runtime,
37
- engine: runtime.engine,
38
- state: "idle",
39
- attachedConnections: new Set(),
40
- createdAt: new Date(),
41
- updatedAt: new Date(),
42
- };
43
- this.agents.set(key, agent);
44
- return agent;
45
- }
46
- get(identity) {
47
- return this.agents.get(agentKey(identity));
48
- }
49
- async attach(connectionId, identity, options = {}) {
50
- const agent = options.create === false ? this.mustGet(identity) : await this.getOrCreate(identity, { resume: options.resume });
51
- agent.attachedConnections.add(connectionId);
52
- agent.lastDetachedAt = undefined;
53
- agent.updatedAt = new Date();
54
- agent.state = agent.activeQuery ? "running" : "attached";
55
- return agent;
56
- }
57
- detach(connectionId, identity) {
58
- const agent = this.get(identity);
59
- if (!agent)
60
- return undefined;
61
- agent.attachedConnections.delete(connectionId);
62
- agent.updatedAt = new Date();
63
- if (agent.attachedConnections.size === 0) {
64
- agent.lastDetachedAt = new Date();
65
- agent.state = agent.activeQuery ? "detached_running" : "detached_idle";
66
- }
67
- return agent;
68
- }
69
- detachConnectionFromAll(connectionId) {
70
- for (const agent of this.agents.values()) {
71
- if (!agent.attachedConnections.has(connectionId))
72
- continue;
73
- agent.attachedConnections.delete(connectionId);
74
- agent.updatedAt = new Date();
75
- if (agent.attachedConnections.size === 0) {
76
- agent.lastDetachedAt = new Date();
77
- agent.state = agent.activeQuery ? "detached_running" : "detached_idle";
78
- }
79
- }
80
- }
81
- async startQuery(identity, input) {
82
- const agent = this.mustGet(identity);
83
- if (agent.activeQuery && agent.activeQuery.getState() === "running") {
84
- throw new Error(`agent already has a running query: ${agent.activeQuery.queryId}`);
85
- }
86
- const run = new QueryRun(agent.engine, {
87
- queryId: input.queryId,
88
- text: input.text,
89
- displayText: input.displayText,
90
- disconnectPolicy: input.disconnectPolicy,
91
- onEvent: input.onEvent,
92
- });
93
- agent.activeQuery = run;
94
- agent.updatedAt = new Date();
95
- agent.state = agent.attachedConnections.size > 0 ? "running" : "detached_running";
96
- run.start()
97
- .catch(() => undefined)
98
- .finally(() => {
99
- if (agent.activeQuery === run) {
100
- agent.activeQuery = undefined;
101
- agent.updatedAt = new Date();
102
- agent.state = agent.attachedConnections.size > 0 ? "idle" : "detached_idle";
103
- }
104
- });
105
- return run;
106
- }
107
- cancelQuery(identity, queryId) {
108
- const agent = this.mustGet(identity);
109
- if (!agent.activeQuery || agent.activeQuery.queryId !== queryId)
110
- return false;
111
- agent.activeQuery.cancel();
112
- agent.updatedAt = new Date();
113
- return true;
114
- }
115
- listSnapshots() {
116
- return [...this.agents.values()].map((agent) => ({
117
- key: agent.key,
118
- userId: agent.userId,
119
- agentId: agent.agentId,
120
- state: agent.state,
121
- attachedConnections: agent.attachedConnections.size,
122
- activeQueryId: agent.activeQuery?.queryId,
123
- snapshot: agent.engine.snapshot(),
124
- }));
125
- }
126
- sweep(now = Date.now()) {
127
- const disposed = [];
128
- for (const [key, agent] of this.agents) {
129
- if (agent.attachedConnections.size > 0)
130
- continue;
131
- const detachedAt = agent.lastDetachedAt?.getTime() ?? agent.updatedAt.getTime();
132
- const age = now - detachedAt;
133
- if (agent.activeQuery) {
134
- if (agent.activeQuery.getState() === "running") {
135
- if (age < this.runningDetachedKeepAliveMs)
136
- continue;
137
- agent.activeQuery.cancel();
138
- }
139
- else if (age < this.idleAgentTtlMs) {
140
- continue;
141
- }
142
- }
143
- else {
144
- if (age < Math.max(this.idleAgentTtlMs, this.reconnectGraceMs))
145
- continue;
146
- }
147
- this.dispose(key);
148
- disposed.push(key);
149
- }
150
- return disposed;
151
- }
152
- dispose(key) {
153
- const agent = this.agents.get(key);
154
- if (!agent)
155
- return false;
156
- agent.activeQuery?.cancel();
157
- agent.state = "disposed";
158
- this.agents.delete(key);
159
- return true;
160
- }
161
- mustGet(identity) {
162
- const agent = this.get(identity);
163
- if (!agent)
164
- throw new Error(`agent not found: ${agentKey(identity)}`);
165
- return agent;
166
- }
167
- }
168
- export function agentKey(identity) {
169
- return `${identity.userId}:${identity.sessionId ?? "default"}:${identity.agentId}`;
170
- }
171
- //# sourceMappingURL=agent-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-manager.js","sourceRoot":"","sources":["../../src/server/agent-manager.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { AgentIdentity } from "./agent-manager.js";
2
- export interface ConnectionRecord {
3
- id: string;
4
- attachedAgents: Map<string, AgentIdentity>;
5
- openedAt: Date;
6
- closedAt?: Date;
7
- }
8
- export declare class ConnectionManager {
9
- private readonly connections;
10
- open(id: string): ConnectionRecord;
11
- get(id: string): ConnectionRecord | undefined;
12
- attachAgent(connectionId: string, identity: AgentIdentity): void;
13
- detachAgent(connectionId: string, identity: AgentIdentity): void;
14
- listAttachedAgents(connectionId: string): AgentIdentity[];
15
- listConnectionIdsForAgent(identity: AgentIdentity): string[];
16
- close(connectionId: string): AgentIdentity[];
17
- private mustGet;
18
- }
@@ -1,52 +0,0 @@
1
- export class ConnectionManager {
2
- connections = new Map();
3
- open(id) {
4
- const record = {
5
- id,
6
- attachedAgents: new Map(),
7
- openedAt: new Date(),
8
- };
9
- this.connections.set(id, record);
10
- return record;
11
- }
12
- get(id) {
13
- return this.connections.get(id);
14
- }
15
- attachAgent(connectionId, identity) {
16
- const record = this.mustGet(connectionId);
17
- record.attachedAgents.set(agentLocatorKey(identity), identity);
18
- }
19
- detachAgent(connectionId, identity) {
20
- this.mustGet(connectionId).attachedAgents.delete(agentLocatorKey(identity));
21
- }
22
- listAttachedAgents(connectionId) {
23
- return [...this.mustGet(connectionId).attachedAgents.values()];
24
- }
25
- listConnectionIdsForAgent(identity) {
26
- const key = agentLocatorKey(identity);
27
- const results = [];
28
- for (const [connectionId, record] of this.connections) {
29
- if (record.attachedAgents.has(key))
30
- results.push(connectionId);
31
- }
32
- return results;
33
- }
34
- close(connectionId) {
35
- const record = this.connections.get(connectionId);
36
- if (!record)
37
- return [];
38
- record.closedAt = new Date();
39
- this.connections.delete(connectionId);
40
- return [...record.attachedAgents.values()];
41
- }
42
- mustGet(connectionId) {
43
- const record = this.connections.get(connectionId);
44
- if (!record)
45
- throw new Error(`connection not found: ${connectionId}`);
46
- return record;
47
- }
48
- }
49
- function agentLocatorKey(identity) {
50
- return `${identity.userId}:${identity.sessionId ?? "default"}:${identity.agentId}`;
51
- }
52
- //# sourceMappingURL=connection-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/server/connection-manager.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,iBAAiB;IACX,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEnE,IAAI,CAAC,EAAU;QACb,MAAM,MAAM,GAAqB;YAC/B,EAAE;YACF,cAAc,EAAE,IAAI,GAAG,EAAE;YACzB,QAAQ,EAAE,IAAI,IAAI,EAAE;SACrB,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,YAAoB,EAAE,QAAuB;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1C,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED,WAAW,CAAC,YAAoB,EAAE,QAAuB;QACvD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,kBAAkB,CAAC,YAAoB;QACrC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,yBAAyB,CAAC,QAAuB;QAC/C,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtD,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,YAAoB;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEO,OAAO,CAAC,YAAoB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;QACtE,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,SAAS,eAAe,CAAC,QAAuB;IAC9C,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,SAAS,IAAI,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;AACrF,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { AgentEvent } from "../types/events.js";
2
- import type { RpcQueryEventEnvelope, SerializedAgentEvent } from "./rpc-types.js";
3
- export declare function serializeAgentEvent(event: AgentEvent): SerializedAgentEvent;
4
- export declare function createQueryEventEnvelope(queryId: string, seq: number, event: AgentEvent): RpcQueryEventEnvelope;
@@ -1,31 +0,0 @@
1
- export function serializeAgentEvent(event) {
2
- if (event.type === "error") {
3
- return {
4
- ...event,
5
- error: serializeError(event.error),
6
- };
7
- }
8
- if (event.type === "retrying") {
9
- return {
10
- ...event,
11
- error: serializeError(event.error),
12
- };
13
- }
14
- return event;
15
- }
16
- export function createQueryEventEnvelope(queryId, seq, event) {
17
- return {
18
- queryId,
19
- seq,
20
- event: serializeAgentEvent(event),
21
- createdAt: new Date().toISOString(),
22
- };
23
- }
24
- function serializeError(error) {
25
- return {
26
- name: error.name,
27
- message: error.message,
28
- stack: error.stack,
29
- };
30
- }
31
- //# sourceMappingURL=event-mapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-mapper.js","sourceRoot":"","sources":["../../src/server/event-mapper.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,mBAAmB,CAAC,KAAiB;IACnD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO;YACL,GAAG,KAAK;YACR,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;SACnC,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO;YACL,GAAG,KAAK;YACR,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;SACnC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe,EAAE,GAAW,EAAE,KAAiB;IACtF,OAAO;QACL,OAAO;QACP,GAAG;QACH,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;QACjC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAY;IAClC,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;AACJ,CAAC"}
@@ -1,29 +0,0 @@
1
- import type { QueryEngine } from "../core/query-engine.js";
2
- import type { RpcQueryEventEnvelope } from "./rpc-types.js";
3
- export interface QueryRunOptions {
4
- queryId: string;
5
- text: string;
6
- displayText?: string;
7
- disconnectPolicy?: "continue" | "cancel";
8
- onEvent?: (event: RpcQueryEventEnvelope) => void;
9
- }
10
- export type QueryRunState = "running" | "completed" | "cancelled" | "failed";
11
- export declare class QueryRun {
12
- private readonly engine;
13
- private readonly options;
14
- readonly queryId: string;
15
- readonly startedAt: Date;
16
- readonly disconnectPolicy: "continue" | "cancel";
17
- private readonly controller;
18
- private readonly buffer;
19
- private state;
20
- private seq;
21
- private completion?;
22
- constructor(engine: QueryEngine, options: QueryRunOptions);
23
- start(): Promise<void>;
24
- cancel(): void;
25
- getState(): QueryRunState;
26
- getBufferedEvents(afterSeq?: number): RpcQueryEventEnvelope[];
27
- private run;
28
- private pushEvent;
29
- }
@@ -1,61 +0,0 @@
1
- import { createQueryEventEnvelope } from "./event-mapper.js";
2
- export class QueryRun {
3
- engine;
4
- options;
5
- queryId;
6
- startedAt = new Date();
7
- disconnectPolicy;
8
- controller = new AbortController();
9
- buffer = [];
10
- state = "running";
11
- seq = 0;
12
- completion;
13
- constructor(engine, options) {
14
- this.engine = engine;
15
- this.options = options;
16
- this.queryId = options.queryId;
17
- this.disconnectPolicy = options.disconnectPolicy ?? "continue";
18
- }
19
- start() {
20
- if (this.completion)
21
- return this.completion;
22
- this.completion = this.run();
23
- return this.completion;
24
- }
25
- cancel() {
26
- if (this.state !== "running")
27
- return;
28
- this.state = "cancelled";
29
- this.controller.abort();
30
- }
31
- getState() {
32
- return this.state;
33
- }
34
- getBufferedEvents(afterSeq = 0) {
35
- return this.buffer.filter((entry) => entry.seq > afterSeq);
36
- }
37
- async run() {
38
- try {
39
- for await (const event of this.engine.sendUserText(this.options.text, {
40
- abortSignal: this.controller.signal,
41
- displayText: this.options.displayText,
42
- })) {
43
- this.pushEvent(event);
44
- }
45
- if (this.state === "running")
46
- this.state = this.controller.signal.aborted ? "cancelled" : "completed";
47
- }
48
- catch (error) {
49
- this.state = this.controller.signal.aborted ? "cancelled" : "failed";
50
- const normalized = error instanceof Error ? error : new Error(String(error));
51
- this.pushEvent({ type: "error", error: normalized });
52
- throw normalized;
53
- }
54
- }
55
- pushEvent(event) {
56
- const envelope = createQueryEventEnvelope(this.queryId, ++this.seq, event);
57
- this.buffer.push(envelope);
58
- this.options.onEvent?.(envelope);
59
- }
60
- }
61
- //# sourceMappingURL=query-runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-runtime.js","sourceRoot":"","sources":["../../src/server/query-runtime.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import type { AgentManager } from "./agent-manager.js";
2
- import type { ConnectionManager } from "./connection-manager.js";
3
- import type { JsonRpcError, JsonRpcRequest, JsonRpcSuccess } from "./rpc-types.js";
4
- export interface RpcRouterOptions {
5
- agentManager: AgentManager;
6
- connectionManager: ConnectionManager;
7
- emitNotification: (connectionId: string, method: string, params: unknown) => void;
8
- }
9
- export declare class RpcRouter {
10
- private readonly options;
11
- constructor(options: RpcRouterOptions);
12
- handle(connectionId: string, request: JsonRpcRequest): Promise<JsonRpcSuccess | JsonRpcError | null>;
13
- private attach;
14
- private detach;
15
- private listSessions;
16
- private deleteSession;
17
- private startQuery;
18
- private cancelQuery;
19
- private resume;
20
- private requireAttachedIdentity;
21
- private requireAttachedIdentitySync;
22
- private ok;
23
- private error;
24
- }
@@ -1,165 +0,0 @@
1
- export class RpcRouter {
2
- options;
3
- constructor(options) {
4
- this.options = options;
5
- }
6
- async handle(connectionId, request) {
7
- try {
8
- switch (request.method) {
9
- case "agent.attach":
10
- return this.ok(request.id, await this.attach(connectionId, request.params));
11
- case "agent.detach":
12
- return this.ok(request.id, this.detach(connectionId, request.params));
13
- case "session.list":
14
- return this.ok(request.id, await this.listSessions(connectionId, request.params));
15
- case "session.delete":
16
- return this.ok(request.id, await this.deleteSession(connectionId, request.params));
17
- case "query.start":
18
- return this.ok(request.id, await this.startQuery(connectionId, request.params));
19
- case "query.cancel":
20
- return this.ok(request.id, this.cancelQuery(connectionId, request.params));
21
- case "connection.resume":
22
- return this.ok(request.id, await this.resume(connectionId, request.params));
23
- case "agent.list":
24
- return this.ok(request.id, this.options.agentManager.listSnapshots());
25
- default:
26
- return this.error(request.id, -32601, `method not found: ${request.method}`);
27
- }
28
- }
29
- catch (error) {
30
- const normalized = error instanceof Error ? error : new Error(String(error));
31
- return this.error(request.id, -32000, normalized.message, { stack: normalized.stack });
32
- }
33
- }
34
- async attach(connectionId, params) {
35
- const identity = normalizeIdentity(params);
36
- const agent = await this.options.agentManager.attach(connectionId, identity, {
37
- create: params?.create,
38
- resume: params?.resume,
39
- });
40
- this.options.connectionManager.attachAgent(connectionId, identity);
41
- return { key: agent.key, state: agent.state, snapshot: agent.engine.snapshot() };
42
- }
43
- detach(connectionId, params) {
44
- const identity = normalizeIdentity(params);
45
- const agent = this.options.agentManager.detach(connectionId, identity);
46
- this.options.connectionManager.detachAgent(connectionId, identity);
47
- return { detached: Boolean(agent), state: agent?.state };
48
- }
49
- async listSessions(connectionId, params) {
50
- const identity = await this.requireAttachedIdentity(connectionId, params);
51
- const agent = this.options.agentManager.get(identity);
52
- if (!agent)
53
- throw new Error(`agent not found: ${identity.agentId}`);
54
- return {
55
- current: agent.engine.snapshot().session,
56
- available: await agent.engine.listSessions(params?.limit ?? 10),
57
- };
58
- }
59
- async deleteSession(connectionId, params) {
60
- const identity = await this.requireAttachedIdentity(connectionId, params);
61
- const agent = this.options.agentManager.get(identity);
62
- if (!agent)
63
- throw new Error(`agent not found: ${identity.agentId}`);
64
- return {
65
- deleted: await agent.engine.deleteSession(required(params?.targetSessionId, "targetSessionId")),
66
- };
67
- }
68
- async startQuery(connectionId, params) {
69
- const identity = await this.requireAttachedIdentity(connectionId, params);
70
- const queryId = params?.queryId?.trim() || createId("query");
71
- const run = await this.options.agentManager.startQuery(identity, {
72
- queryId,
73
- text: required(params?.text, "text"),
74
- displayText: params?.displayText,
75
- disconnectPolicy: params?.disconnectPolicy,
76
- onEvent: (event) => {
77
- for (const target of this.options.connectionManager.listConnectionIdsForAgent(identity)) {
78
- this.options.emitNotification(target, "query.event", event);
79
- }
80
- },
81
- });
82
- return { queryId: run.queryId, state: run.getState() };
83
- }
84
- cancelQuery(connectionId, params) {
85
- const identity = this.requireAttachedIdentitySync(connectionId, params);
86
- return {
87
- cancelled: this.options.agentManager.cancelQuery(identity, required(params?.queryId, "queryId")),
88
- };
89
- }
90
- async resume(connectionId, params) {
91
- const agents = params?.agents ?? [];
92
- const queries = params?.queries ?? [];
93
- const attached = [];
94
- for (const locator of agents) {
95
- const identity = normalizeIdentity(locator);
96
- const agent = await this.options.agentManager.attach(connectionId, identity, { create: true, resume: true });
97
- this.options.connectionManager.attachAgent(connectionId, identity);
98
- attached.push({ key: agent.key, state: agent.state });
99
- }
100
- for (const query of queries) {
101
- for (const identity of this.options.connectionManager.listAttachedAgents(connectionId)) {
102
- const agent = this.options.agentManager.get(identity);
103
- if (!agent?.activeQuery || agent.activeQuery.queryId !== query.queryId)
104
- continue;
105
- for (const event of agent.activeQuery.getBufferedEvents(query.afterSeq ?? 0)) {
106
- this.options.emitNotification(connectionId, "query.event", event);
107
- }
108
- }
109
- }
110
- return { attached, replayedQueries: queries.map((item) => item.queryId) };
111
- }
112
- async requireAttachedIdentity(connectionId, params) {
113
- return this.requireAttachedIdentitySync(connectionId, params);
114
- }
115
- requireAttachedIdentitySync(connectionId, params) {
116
- const record = this.options.connectionManager.get(connectionId);
117
- if (!record)
118
- throw new Error(`connection not found: ${connectionId}`);
119
- const requested = params?.userId ? normalizeIdentity(params) : undefined;
120
- if (requested) {
121
- const match = record.attachedAgents.get(locatorKey(requested));
122
- if (match)
123
- return match;
124
- throw new Error(`agent is not attached to connection: ${locatorKey(requested)}`);
125
- }
126
- const first = record.attachedAgents.values().next().value;
127
- if (!first)
128
- throw new Error("no agent attached to connection");
129
- return first;
130
- }
131
- ok(id, result) {
132
- return {
133
- jsonrpc: "2.0",
134
- id: id ?? null,
135
- result,
136
- };
137
- }
138
- error(id, code, message, data) {
139
- return {
140
- jsonrpc: "2.0",
141
- id: id ?? null,
142
- error: { code, message, data },
143
- };
144
- }
145
- }
146
- function normalizeIdentity(params) {
147
- return {
148
- userId: required(params?.userId, "userId"),
149
- agentId: params?.agentId?.trim() || "main",
150
- sessionId: params?.sessionId?.trim() || undefined,
151
- };
152
- }
153
- function required(value, field) {
154
- const normalized = value?.trim();
155
- if (!normalized)
156
- throw new Error(`missing required field: ${field}`);
157
- return normalized;
158
- }
159
- function locatorKey(identity) {
160
- return `${identity.userId}:${identity.sessionId ?? "default"}:${identity.agentId}`;
161
- }
162
- function createId(prefix) {
163
- return `${prefix}_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
164
- }
165
- //# sourceMappingURL=rpc-router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpc-router.js","sourceRoot":"","sources":["../../src/server/rpc-router.ts"],"names":[],"mappings":"AAqBA,MAAM,OAAO,SAAS;IACS;IAA7B,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,MAAM,CAAC,YAAoB,EAAE,OAAuB;QACxD,IAAI,CAAC;YACH,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;gBACvB,KAAK,cAAc;oBACjB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,MAAuC,CAAC,CAAC,CAAC;gBAC/G,KAAK,cAAc;oBACjB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,MAAuC,CAAC,CAAC,CAAC;gBACzG,KAAK,cAAc;oBACjB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,MAAuC,CAAC,CAAC,CAAC;gBACrH,KAAK,gBAAgB;oBACnB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,MAAyC,CAAC,CAAC,CAAC;gBACxH,KAAK,aAAa;oBAChB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,MAAsC,CAAC,CAAC,CAAC;gBAClH,KAAK,cAAc;oBACjB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,MAAuC,CAAC,CAAC,CAAC;gBAC9G,KAAK,mBAAmB;oBACtB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,MAA4C,CAAC,CAAC,CAAC;gBACpH,KAAK,YAAY;oBACf,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC;gBACxE;oBACE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,qBAAqB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7E,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,YAAoB,EAAE,MAA0B;QACnE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE;YAC3E,MAAM,EAAE,MAAM,EAAE,MAAM;YACtB,MAAM,EAAE,MAAM,EAAE,MAAM;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACnE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IACnF,CAAC;IAEO,MAAM,CAAC,YAAoB,EAAE,MAA0B;QAC7D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACnE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,YAAoB,EAAE,MAA0B;QACzE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO;YACxC,SAAS,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;SAChE,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,YAAoB,EAAE,MAA4B;QAC5E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,OAAO;YACL,OAAO,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;SAChG,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,YAAoB,EAAE,MAAyB;QACtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC/D,OAAO;YACP,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;YACpC,WAAW,EAAE,MAAM,EAAE,WAAW;YAChC,gBAAgB,EAAE,MAAM,EAAE,gBAAgB;YAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACxF,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzD,CAAC;IAEO,WAAW,CAAC,YAAoB,EAAE,MAA0B;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACxE,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SACjG,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,YAAoB,EAAE,MAA+B;QACxE,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,EAA2C,CAAC;QAC7D,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7G,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACtD,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;oBAAE,SAAS;gBACjF,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC7E,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5E,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,YAAoB,EAAE,MAAkE;QAC5H,OAAO,IAAI,CAAC,2BAA2B,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IAEO,2BAA2B,CAAC,YAAoB,EAAE,MAAkE;QAC1H,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/D,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,wCAAwC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAkC,CAAC;QACvF,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,EAAE,CAAC,EAAwB,EAAE,MAAe;QAClD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,EAAE,IAAI,IAAI;YACd,MAAM;SACP,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,EAAwB,EAAE,IAAY,EAAE,OAAe,EAAE,IAAc;QACnF,OAAO;YACL,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,EAAE,IAAI,IAAI;YACd,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;SAC/B,CAAC;IACJ,CAAC;CACF;AAED,SAAS,iBAAiB,CAAC,MAAkE;IAC3F,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC1C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,MAAM;QAC1C,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,SAAS;KAClD,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAyB,EAAE,KAAa;IACxD,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;IACrE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,UAAU,CAAC,QAAuB;IACzC,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,SAAS,IAAI,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc;IAC9B,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC1F,CAAC"}