neoctl 0.2.2 → 0.2.4

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 (72) hide show
  1. package/dist/app/app-prompt.d.ts +32 -0
  2. package/dist/app/app-prompt.js +42 -0
  3. package/dist/app/app-prompt.js.map +1 -0
  4. package/dist/context/context-manager.d.ts +12 -0
  5. package/dist/context/context-manager.js +32 -0
  6. package/dist/context/context-manager.js.map +1 -1
  7. package/dist/core/query-engine.d.ts +7 -0
  8. package/dist/core/query-engine.js +26 -3
  9. package/dist/core/query-engine.js.map +1 -1
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.js +1 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/repl/index.js +2 -2
  14. package/dist/repl/index.js.map +1 -1
  15. package/dist/session/session-export.d.ts +1 -0
  16. package/dist/session/session-export.js +1 -0
  17. package/dist/session/session-export.js.map +1 -1
  18. package/dist/session/session-store.d.ts +11 -0
  19. package/dist/session/session-store.js +21 -0
  20. package/dist/session/session-store.js.map +1 -1
  21. package/dist/web/index.d.ts +18 -0
  22. package/dist/web/index.js +33 -0
  23. package/dist/web/index.js.map +1 -1
  24. package/package.json +3 -2
  25. package/dist/core/commands.d.ts +0 -66
  26. package/dist/core/commands.js +0 -151
  27. package/dist/core/commands.js.map +0 -1
  28. package/dist/core/runtime.d.ts +0 -59
  29. package/dist/core/runtime.js +0 -161
  30. package/dist/core/runtime.js.map +0 -1
  31. package/dist/repl/render.d.ts +0 -2
  32. package/dist/repl/render.js +0 -45
  33. package/dist/repl/render.js.map +0 -1
  34. package/dist/repl/status-line.d.ts +0 -19
  35. package/dist/repl/status-line.js +0 -160
  36. package/dist/repl/status-line.js.map +0 -1
  37. package/dist/repl/transcript-flush.d.ts +0 -6
  38. package/dist/repl/transcript-flush.js +0 -54
  39. package/dist/repl/transcript-flush.js.map +0 -1
  40. package/dist/repl/transcript-format.d.ts +0 -16
  41. package/dist/repl/transcript-format.js +0 -199
  42. package/dist/repl/transcript-format.js.map +0 -1
  43. package/dist/server/agent-manager.d.ts +0 -56
  44. package/dist/server/agent-manager.js +0 -171
  45. package/dist/server/agent-manager.js.map +0 -1
  46. package/dist/server/connection-manager.d.ts +0 -18
  47. package/dist/server/connection-manager.js +0 -52
  48. package/dist/server/connection-manager.js.map +0 -1
  49. package/dist/server/event-mapper.d.ts +0 -4
  50. package/dist/server/event-mapper.js +0 -31
  51. package/dist/server/event-mapper.js.map +0 -1
  52. package/dist/server/query-runtime.d.ts +0 -29
  53. package/dist/server/query-runtime.js +0 -61
  54. package/dist/server/query-runtime.js.map +0 -1
  55. package/dist/server/rpc-router.d.ts +0 -24
  56. package/dist/server/rpc-router.js +0 -165
  57. package/dist/server/rpc-router.js.map +0 -1
  58. package/dist/server/rpc-types.d.ts +0 -92
  59. package/dist/server/rpc-types.js +0 -2
  60. package/dist/server/rpc-types.js.map +0 -1
  61. package/dist/server/ws-server.d.ts +0 -22
  62. package/dist/server/ws-server.js +0 -84
  63. package/dist/server/ws-server.js.map +0 -1
  64. package/dist/tasks/task-record.d.ts +0 -50
  65. package/dist/tasks/task-record.js +0 -50
  66. package/dist/tasks/task-record.js.map +0 -1
  67. package/dist/tools/builtins/echo-tool.d.ts +0 -4
  68. package/dist/tools/builtins/echo-tool.js +0 -26
  69. package/dist/tools/builtins/echo-tool.js.map +0 -1
  70. package/dist/tools/builtins/vision-tool.d.ts +0 -38
  71. package/dist/tools/builtins/vision-tool.js +0 -351
  72. package/dist/tools/builtins/vision-tool.js.map +0 -1
@@ -1,6 +0,0 @@
1
- import { type TranscriptUiLine } from "./transcript-format.js";
2
- export declare function TranscriptFlusher({ lines, columns, resetEpoch, }: {
3
- lines: readonly TranscriptUiLine[];
4
- columns: number;
5
- resetEpoch: number;
6
- }): null;
@@ -1,54 +0,0 @@
1
- import { useStdout } from "ink";
2
- import { useLayoutEffect } from "react";
3
- import { markdownRenderKey } from "./markdown-renderer.js";
4
- import { formatTranscriptBlock } from "./transcript-format.js";
5
- function messageContentWidth(columns) {
6
- return Math.max(10, columns - 2);
7
- }
8
- function lineNeedsDynamicRender(line, columns) {
9
- const w = messageContentWidth(columns);
10
- if (line.live || line.pendingReplacement)
11
- return true;
12
- if (line.previewStyle === "summary" || line.format === "ansi")
13
- return false;
14
- return line.renderedKey !== markdownRenderKey(line.text, line.kind, w);
15
- }
16
- function lineDigest(line) {
17
- return `${line.text}\0${line.renderedKey ?? ""}\0${Boolean(line.live)}\0${Boolean(line.pendingReplacement)}\0${line.title ?? ""}\0${line.format ?? ""}\0${line.previewStyle ?? ""}`;
18
- }
19
- /** Survives React remount / HMR so we do not re-append the same transcript blocks to scrollback. */
20
- let transcriptDigestMap = new Map();
21
- let transcriptDigestLastEpoch = -1;
22
- export function TranscriptFlusher({ lines, columns, resetEpoch, }) {
23
- const { write } = useStdout();
24
- useLayoutEffect(() => {
25
- if (transcriptDigestLastEpoch !== resetEpoch) {
26
- transcriptDigestMap.clear();
27
- transcriptDigestLastEpoch = resetEpoch;
28
- }
29
- const w = messageContentWidth(columns);
30
- let tailIndex = lines.findIndex((l) => lineNeedsDynamicRender(l, columns));
31
- if (tailIndex === -1)
32
- tailIndex = lines.length;
33
- const parts = [];
34
- for (let i = 0; i < tailIndex; i++) {
35
- const line = lines[i];
36
- if (!line)
37
- continue;
38
- const digest = lineDigest(line);
39
- const mapKey = `${resetEpoch}:${line.id}`;
40
- const prev = transcriptDigestMap.get(mapKey);
41
- if (prev === digest)
42
- continue;
43
- transcriptDigestMap.set(mapKey, digest);
44
- const block = formatTranscriptBlock(line, w);
45
- if (block.length === 0)
46
- continue;
47
- parts.push(block.endsWith("\n") ? block : `${block}\n`);
48
- }
49
- if (parts.length > 0)
50
- write(parts.join(""));
51
- }, [lines, columns, write, resetEpoch]);
52
- return null;
53
- }
54
- //# sourceMappingURL=transcript-flush.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transcript-flush.js","sourceRoot":"","sources":["../../src/repl/transcript-flush.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAyB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAyB,MAAM,wBAAwB,CAAC;AAEtF,SAAS,mBAAmB,CAAC,OAAe;IAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAsB,EAAE,OAAe;IACrE,MAAM,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC5E,OAAO,IAAI,CAAC,WAAW,KAAK,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAwB,EAAE,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,UAAU,CAAC,IAAsB;IACxC,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,EAAE,KAAK,IAAI,CAAC,MAAM,IAAI,EAAE,KAAK,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;AACtL,CAAC;AAED,oGAAoG;AACpG,IAAI,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;AACpD,IAAI,yBAAyB,GAAG,CAAC,CAAC,CAAC;AAEnC,MAAM,UAAU,iBAAiB,CAAC,EAChC,KAAK,EACL,OAAO,EACP,UAAU,GAKX;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,CAAC;IAE9B,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,yBAAyB,KAAK,UAAU,EAAE,CAAC;YAC7C,mBAAmB,CAAC,KAAK,EAAE,CAAC;YAC5B,yBAAyB,GAAG,UAAU,CAAC;QACzC,CAAC;QAED,MAAM,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3E,IAAI,SAAS,KAAK,CAAC,CAAC;YAAE,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QAE/C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,IAAI,KAAK,MAAM;gBAAE,SAAS;YAC9B,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAExC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,16 +0,0 @@
1
- export interface TranscriptUiLine {
2
- id: number;
3
- kind: "system" | "user" | "assistant" | "thinking" | "tool" | "error" | "meta";
4
- text: string;
5
- title?: string;
6
- bodyTitle?: string;
7
- titleStatus?: "success" | "failure";
8
- format?: "markdown" | "ansi" | "plain";
9
- previewStyle?: "summary";
10
- summaryMaxLines?: number;
11
- live?: boolean;
12
- pendingReplacement?: boolean;
13
- renderedKey?: string;
14
- }
15
- /** Full message block as ANSI (including role marker), for scrollback via Ink `write`. */
16
- export declare function formatTranscriptBlock(line: TranscriptUiLine, width: number): string;
@@ -1,199 +0,0 @@
1
- import chalk from "chalk";
2
- import stripAnsi from "strip-ansi";
3
- import wrapAnsi from "wrap-ansi";
4
- import { getRenderedMarkdownLines, markdownRenderKey, renderedLinesToAnsi, renderMarkdownPreviewToLines, } from "./markdown-renderer.js";
5
- const SUMMARY_BLOCK = {
6
- maxLines: 6,
7
- detailIndent: " ",
8
- };
9
- const THINKING_COLOR = "#a855f7";
10
- const THINKING_MARKER = "◆";
11
- const MESSAGE_ROLE_MARKER = "● ";
12
- function colorForKind(kind) {
13
- if (kind === "user")
14
- return chalk.cyan;
15
- if (kind === "assistant")
16
- return chalk.green;
17
- if (kind === "thinking")
18
- return chalk.hex(THINKING_COLOR);
19
- if (kind === "tool")
20
- return chalk.hex("#d4b04c");
21
- if (kind === "error")
22
- return chalk.red;
23
- if (kind === "meta")
24
- return chalk.gray;
25
- return chalk.white;
26
- }
27
- function markerColorForKind(kind) {
28
- if (kind === "thinking")
29
- return chalk.hex(THINKING_COLOR);
30
- return colorForKind(kind);
31
- }
32
- function messageRoleMarker(kind) {
33
- if (kind === "thinking")
34
- return `${THINKING_MARKER} `;
35
- return MESSAGE_ROLE_MARKER;
36
- }
37
- function titleForKind(kind) {
38
- if (kind === "thinking")
39
- return `${THINKING_MARKER} think`;
40
- if (kind === "tool")
41
- return "Tool";
42
- if (kind === "error")
43
- return "Error";
44
- if (kind === "meta")
45
- return "Meta";
46
- if (kind === "system")
47
- return "System";
48
- if (kind === "user")
49
- return "User";
50
- return "Assistant";
51
- }
52
- function titleStatusMarker(status) {
53
- return status === "success" ? "✓" : "✗";
54
- }
55
- function titleStatusColor(status) {
56
- return status === "success" ? chalk.green : chalk.red;
57
- }
58
- function summaryTitle(line) {
59
- if (summaryUsesRoleMarker(line))
60
- return "";
61
- const title = line.title ?? titleForKind(line.kind);
62
- if (!line.titleStatus)
63
- return title;
64
- return `${title} ${titleStatusMarker(line.titleStatus)}`;
65
- }
66
- function summaryUsesRoleMarker(line) {
67
- return line.previewStyle === "summary" && (line.kind === "system" || line.kind === "meta");
68
- }
69
- function titleProvidesToolMarker(line) {
70
- return line.kind === "tool" && !!line.title && (line.title.startsWith("◇ ") || line.title.startsWith("◆ "));
71
- }
72
- function truncateAnsi(value, maxLength) {
73
- let visible = 0;
74
- let cut = value.length;
75
- let inAnsi = false;
76
- for (let i = 0; i < value.length; i++) {
77
- const ch = value[i];
78
- if (ch === "\x1B") {
79
- inAnsi = true;
80
- continue;
81
- }
82
- if (inAnsi) {
83
- if (ch === "m")
84
- inAnsi = false;
85
- continue;
86
- }
87
- visible++;
88
- if (visible > maxLength) {
89
- cut = i;
90
- break;
91
- }
92
- }
93
- return value.slice(0, cut);
94
- }
95
- function renderSummaryLines(line, width) {
96
- const content = line.text;
97
- const detailWidth = Math.max(10, width - SUMMARY_BLOCK.detailIndent.length);
98
- const title = summaryTitle(line);
99
- const rawLines = content.replace(/\r\n/g, "\n").split("\n");
100
- const wrapped = rawLines.flatMap((rawLine, index) => {
101
- const lineWidth = index === 0 && !title ? width : detailWidth;
102
- return wrapAnsi(rawLine, Math.max(10, lineWidth), { hard: true, trim: false }).split("\n");
103
- });
104
- const maxLines = line.summaryMaxLines ?? SUMMARY_BLOCK.maxLines;
105
- const preview = [title, ...wrapped].filter((value) => stripAnsi(value).length > 0).slice(0, maxLines);
106
- if (wrapped.length + (title ? 1 : 0) > maxLines && preview.length > 0) {
107
- preview[preview.length - 1] = truncateAnsi(preview[preview.length - 1], Math.max(1, detailWidth - 1)) + "…";
108
- }
109
- return preview.length ? preview : [""];
110
- }
111
- function formatSummaryTranscript(line, width) {
112
- const useRoleMarker = summaryUsesRoleMarker(line);
113
- const summaryWidth = useRoleMarker ? width : Math.max(10, width - 2);
114
- const lines = renderSummaryLines(line, summaryWidth);
115
- const out = [];
116
- for (let index = 0; index < lines.length; index++) {
117
- const previewLine = lines[index] ?? "";
118
- const detail = index > 0;
119
- const text = detail ? `${SUMMARY_BLOCK.detailIndent}${previewLine}` : previewLine;
120
- if (!detail && line.titleStatus) {
121
- const marker = titleStatusMarker(line.titleStatus);
122
- const markerSuffix = ` ${marker}`;
123
- const titleText = text.endsWith(markerSuffix) ? text.slice(0, -markerSuffix.length) : `${text} `;
124
- out.push(`${colorForKind(line.kind).bold(titleText)}${titleStatusColor(line.titleStatus).bold(marker)}`);
125
- }
126
- else if (line.format === "ansi") {
127
- out.push(detail ? chalk.gray.dim(text) : `${colorForKind(line.kind).bold(text)}`);
128
- }
129
- else {
130
- out.push(detail ? chalk.gray.dim(text) : colorForKind(line.kind).bold(text));
131
- }
132
- }
133
- const prefix = useRoleMarker ? markerColorForKind(line.kind)(messageRoleMarker(line.kind)) : "";
134
- const body = out.join("\n");
135
- return useRoleMarker ? `${prefix}${body}` : body;
136
- }
137
- function formatPlainTranscript(line, width) {
138
- const useRoleMarker = !titleProvidesToolMarker(line);
139
- const lineWidth = useRoleMarker ? width : Math.max(10, width - 2);
140
- const parts = [];
141
- if (line.title) {
142
- const t = line.titleStatus
143
- ? `${colorForKind(line.kind).bold(line.title)} ${titleStatusColor(line.titleStatus).bold(titleStatusMarker(line.titleStatus))}`
144
- : colorForKind(line.kind).bold(line.title);
145
- parts.push(t);
146
- }
147
- if (line.bodyTitle)
148
- parts.push(chalk.bold(line.bodyTitle));
149
- const mdKind = line.kind;
150
- const rendered = getRenderedMarkdownLines(line.text, mdKind, lineWidth);
151
- parts.push(renderedLinesToAnsi(rendered, mdKind));
152
- const body = parts.join("\n");
153
- return useRoleMarker ? `${markerColorForKind(line.kind)(messageRoleMarker(line.kind))}${body}` : body;
154
- }
155
- function formatAnsiTranscript(line, width) {
156
- const useRoleMarker = !titleProvidesToolMarker(line);
157
- const lineWidth = useRoleMarker ? width : Math.max(10, width - 2);
158
- const wrapped = wrapAnsi(line.text, Math.max(10, lineWidth), { hard: true, trim: false }).split("\n");
159
- const parts = [];
160
- if (line.title) {
161
- const t = line.titleStatus
162
- ? `${colorForKind(line.kind).bold(line.title)} ${titleStatusColor(line.titleStatus).bold(titleStatusMarker(line.titleStatus))}`
163
- : colorForKind(line.kind).bold(line.title);
164
- parts.push(t);
165
- }
166
- if (line.bodyTitle)
167
- parts.push(chalk.bold(line.bodyTitle));
168
- parts.push(...wrapped);
169
- const body = parts.join("\n");
170
- return useRoleMarker ? `${markerColorForKind(line.kind)(messageRoleMarker(line.kind))}${body}` : body;
171
- }
172
- /** Full message block as ANSI (including role marker), for scrollback via Ink `write`. */
173
- export function formatTranscriptBlock(line, width) {
174
- if (line.previewStyle === "summary")
175
- return formatSummaryTranscript(line, width);
176
- if (line.format === "ansi")
177
- return formatAnsiTranscript(line, width);
178
- const key = markdownRenderKey(line.text, line.kind, width);
179
- if (line.renderedKey === key) {
180
- return formatPlainTranscript(line, width);
181
- }
182
- const mdKind = line.kind;
183
- const useRoleMarker = !titleProvidesToolMarker(line);
184
- const lineWidth = useRoleMarker ? width : Math.max(10, width - 2);
185
- const parts = [];
186
- if (line.title) {
187
- const t = line.titleStatus
188
- ? `${colorForKind(line.kind).bold(line.title)} ${titleStatusColor(line.titleStatus).bold(titleStatusMarker(line.titleStatus))}`
189
- : colorForKind(line.kind).bold(line.title);
190
- parts.push(t);
191
- }
192
- if (line.bodyTitle)
193
- parts.push(chalk.bold(line.bodyTitle));
194
- const preview = renderMarkdownPreviewToLines(line.text, mdKind, lineWidth);
195
- parts.push(renderedLinesToAnsi(preview, mdKind));
196
- const body = parts.join("\n");
197
- return useRoleMarker ? `${markerColorForKind(line.kind)(messageRoleMarker(line.kind))}${body}` : body;
198
- }
199
- //# sourceMappingURL=transcript-format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transcript-format.js","sourceRoot":"","sources":["../../src/repl/transcript-format.ts"],"names":[],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- import type { QueryEngine } from "../core/query-engine.js";
2
- import { type CoreRuntime, type CoreServices, type CreateCoreRuntimeOptions } from "../core/runtime.js";
3
- import type { RpcAgentSnapshot } from "./rpc-types.js";
4
- import { QueryRun, type QueryRunOptions } from "./query-runtime.js";
5
- export type ManagedAgentState = "attached" | "idle" | "running" | "detached_idle" | "detached_running" | "disposed";
6
- export interface AgentManagerOptions {
7
- idleAgentTtlMs?: number;
8
- reconnectGraceMs?: number;
9
- runningDetachedKeepAliveMs?: number;
10
- createRuntime?: (options: CreateCoreRuntimeOptions) => Promise<CoreRuntime>;
11
- services?: CoreServices;
12
- sessionCwd?: string;
13
- }
14
- export interface AgentIdentity {
15
- userId: string;
16
- agentId: string;
17
- sessionId?: string;
18
- }
19
- export interface ManagedAgent extends AgentIdentity {
20
- key: string;
21
- runtime: CoreRuntime;
22
- engine: QueryEngine;
23
- state: ManagedAgentState;
24
- attachedConnections: Set<string>;
25
- createdAt: Date;
26
- updatedAt: Date;
27
- lastDetachedAt?: Date;
28
- activeQuery?: QueryRun;
29
- }
30
- export declare class AgentManager {
31
- private readonly agents;
32
- private readonly createRuntime;
33
- private readonly idleAgentTtlMs;
34
- private readonly reconnectGraceMs;
35
- private readonly runningDetachedKeepAliveMs;
36
- private readonly services?;
37
- private readonly sessionCwd?;
38
- constructor(options?: AgentManagerOptions);
39
- getOrCreate(identity: AgentIdentity, options?: {
40
- resume?: boolean;
41
- }): Promise<ManagedAgent>;
42
- get(identity: AgentIdentity): ManagedAgent | undefined;
43
- attach(connectionId: string, identity: AgentIdentity, options?: {
44
- create?: boolean;
45
- resume?: boolean;
46
- }): Promise<ManagedAgent>;
47
- detach(connectionId: string, identity: AgentIdentity): ManagedAgent | undefined;
48
- detachConnectionFromAll(connectionId: string): void;
49
- startQuery(identity: AgentIdentity, input: Pick<QueryRunOptions, "queryId" | "text" | "displayText" | "disconnectPolicy" | "onEvent">): Promise<QueryRun>;
50
- cancelQuery(identity: AgentIdentity, queryId: string): boolean;
51
- listSnapshots(): RpcAgentSnapshot[];
52
- sweep(now?: number): string[];
53
- dispose(key: string): boolean;
54
- private mustGet;
55
- }
56
- export declare function agentKey(identity: AgentIdentity): string;
@@ -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