@di-code/coding-agent 0.2.1 → 0.2.2
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/README.md +5 -0
- package/dist/core/session/session-manager.d.ts +18 -1
- package/dist/core/session/session-manager.d.ts.map +1 -1
- package/dist/core/session/session-manager.js +90 -1
- package/dist/core/session/session-manager.js.map +1 -1
- package/dist/core/session/session-storage.d.ts +2 -0
- package/dist/core/session/session-storage.d.ts.map +1 -1
- package/dist/core/session/session-storage.js +22 -1
- package/dist/core/session/session-storage.js.map +1 -1
- package/dist/core/session/types.d.ts +16 -1
- package/dist/core/session/types.d.ts.map +1 -1
- package/dist/core/session/types.js.map +1 -1
- package/dist/core/session.d.ts +27 -2
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +59 -0
- package/dist/core/session.js.map +1 -1
- package/dist/entry.js +1 -1
- package/dist/entry.js.map +1 -1
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.map +1 -1
- package/dist/interactive-host-entry.d.ts.map +1 -1
- package/dist/interactive-host-entry.js +107 -12
- package/dist/interactive-host-entry.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +3 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive-components.d.ts +8 -0
- package/dist/modes/interactive-components.d.ts.map +1 -1
- package/dist/modes/interactive-components.js +7 -2
- package/dist/modes/interactive-components.js.map +1 -1
- package/dist/modes/interactive.d.ts +4 -0
- package/dist/modes/interactive.d.ts.map +1 -1
- package/dist/modes/interactive.js +69 -0
- package/dist/modes/interactive.js.map +1 -1
- package/dist/modes/tree-selector.d.ts.map +1 -1
- package/dist/modes/tree-selector.js +4 -0
- package/dist/modes/tree-selector.js.map +1 -1
- package/dist/rpc/client.d.ts +2 -0
- package/dist/rpc/client.d.ts.map +1 -1
- package/dist/rpc/client.js +3 -0
- package/dist/rpc/client.js.map +1 -1
- package/dist/rpc/dispatcher.d.ts +14 -0
- package/dist/rpc/dispatcher.d.ts.map +1 -1
- package/dist/rpc/dispatcher.js +222 -7
- package/dist/rpc/dispatcher.js.map +1 -1
- package/dist/rpc/protocol.d.ts +12 -5
- package/dist/rpc/protocol.d.ts.map +1 -1
- package/dist/rpc/protocol.js +34 -0
- package/dist/rpc/protocol.js.map +1 -1
- package/dist/rpc/server.d.ts +5 -0
- package/dist/rpc/server.d.ts.map +1 -1
- package/dist/rpc/server.js +4 -0
- package/dist/rpc/server.js.map +1 -1
- package/dist/rpc-server-entry.d.ts.map +1 -1
- package/dist/rpc-server-entry.js +15 -1
- package/dist/rpc-server-entry.js.map +1 -1
- package/dist/runtime/product-host.d.ts +7 -0
- package/dist/runtime/product-host.d.ts.map +1 -1
- package/dist/runtime/product-host.js +29 -9
- package/dist/runtime/product-host.js.map +1 -1
- package/dist/runtime/session-factory.d.ts +18 -2
- package/dist/runtime/session-factory.d.ts.map +1 -1
- package/dist/runtime/session-factory.js +286 -24
- package/dist/runtime/session-factory.js.map +1 -1
- package/dist/runtime/session-host.d.ts +46 -1
- package/dist/runtime/session-host.d.ts.map +1 -1
- package/dist/runtime/session-host.js +38 -6
- package/dist/runtime/session-host.js.map +1 -1
- package/dist/ui-host.d.ts.map +1 -1
- package/dist/ui-host.js +3 -0
- package/dist/ui-host.js.map +1 -1
- package/dist/web/assets/index-C2SOU925.css +1 -0
- package/dist/web/assets/index-knXkInvO.js +41 -0
- package/dist/web/assets/index-knXkInvO.js.map +1 -0
- package/dist/web/index.html +2 -2
- package/dist/web-command.d.ts.map +1 -1
- package/dist/web-command.js +8 -1
- package/dist/web-command.js.map +1 -1
- package/dist/webui-entry.js +9 -1
- package/dist/webui-entry.js.map +1 -1
- package/dist/webui.d.ts +10 -0
- package/dist/webui.d.ts.map +1 -1
- package/dist/webui.js +21 -0
- package/dist/webui.js.map +1 -1
- package/package.json +11 -9
- package/dist/web/assets/index-C-NyCPxd.css +0 -1
- package/dist/web/assets/index-DgyxuNNG.js +0 -41
- package/dist/web/assets/index-DgyxuNNG.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-selector.js","sourceRoot":"","sources":["../../src/modes/tree-selector.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Component, type Focusable, Key, matchesKey, SelectionPanel } from \"@di-code/tui\";\nimport type { SessionEntry, SessionTreeNode } from \"../core/session/types.ts\";\nimport { type Locale, translate } from \"../i18n.ts\";\n\nconst RESET_FOREGROUND = \"\\x1b[39m\";\nconst CYAN = \"\\x1b[38;5;45m\";\nconst GREEN = \"\\x1b[38;5;114m\";\nconst YELLOW = \"\\x1b[38;5;222m\";\nconst RED = \"\\x1b[38;5;210m\";\nconst DIM = \"\\x1b[38;5;245m\";\nconst MAX_VISIBLE_NODES = 12;\n\ninterface FlatTreeNode {\n\treadonly entry: SessionEntry;\n\t/** Visual indentation only grows where the session graph actually branches. */\n\treadonly indent: number;\n\treadonly showConnector: boolean;\n\treadonly isLast: boolean;\n\treadonly gutters: readonly TreeGutter[];\n\treadonly isCurrentPath: boolean;\n}\n\ninterface TreeGutter {\n\treadonly level: number;\n\treadonly continues: boolean;\n}\n\nexport interface TreeSelectorOptions {\n\treadonly nodes: readonly SessionTreeNode[];\n\treadonly leafId?: string;\n\treadonly locale: Locale;\n\tonContinue?(entry: SessionEntry): void;\n\tonEdit?(entry: SessionEntry): void;\n\tonSummarize?(entry: SessionEntry): void;\n\tonCancel?(): void;\n}\n\nfunction paint(color: string, text: string): string {\n\t// Reset only the foreground so a selected row keeps its background across coloured fragments.\n\treturn `${color}${text}${RESET_FOREGROUND}`;\n}\n\nfunction singleLine(value: string): string {\n\treturn value\n\t\t.replace(/[\\r\\n\\t]+/g, \" \")\n\t\t.replace(/\\s+/g, \" \")\n\t\t.trim();\n}\n\nfunction textContent(entry: SessionEntry): string {\n\tif (entry.type === \"summary\") return singleLine(entry.summary);\n\tif (entry.type === \"plugin\") return singleLine(`plugin:${entry.pluginId}`);\n\treturn singleLine(entry.message.content.map((content) => (content.type === \"text\" ? content.text : \"\")).join(\" \"));\n}\n\nfunction flattenTree(nodes: readonly SessionTreeNode[], leafId: string | undefined): FlatTreeNode[] {\n\tconst parents = new Map<string, string>();\n\tconst raw: Array<Omit<FlatTreeNode, \"isCurrentPath\">> = [];\n\ttype PendingNode = {\n\t\treadonly node: SessionTreeNode;\n\t\treadonly indent: number;\n\t\treadonly justBranched: boolean;\n\t\treadonly showConnector: boolean;\n\t\treadonly isLast: boolean;\n\t\treadonly gutters: readonly TreeGutter[];\n\t};\n\tconst stack: PendingNode[] = [];\n\tconst multipleRoots = nodes.length > 1;\n\n\tfor (let index = nodes.length - 1; index >= 0; index -= 1) {\n\t\tconst node = nodes[index];\n\t\tif (!node) continue;\n\t\tstack.push({\n\t\t\tnode,\n\t\t\tindent: multipleRoots ? 1 : 0,\n\t\t\tjustBranched: multipleRoots,\n\t\t\tshowConnector: multipleRoots,\n\t\t\tisLast: index === nodes.length - 1,\n\t\t\tgutters: [],\n\t\t});\n\t}\n\n\twhile (stack.length > 0) {\n\t\tconst current = stack.pop();\n\t\tif (!current) continue;\n\t\traw.push({\n\t\t\tentry: current.node.entry,\n\t\t\tindent: current.indent,\n\t\t\tshowConnector: current.showConnector,\n\t\t\tisLast: current.isLast,\n\t\t\tgutters: current.gutters,\n\t\t});\n\t\tconst children = current.node.children;\n\t\tconst multipleChildren = children.length > 1;\n\t\tconst childIndent = multipleChildren\n\t\t\t? current.indent + 1\n\t\t\t: current.justBranched && current.indent > 0\n\t\t\t\t? current.indent + 1\n\t\t\t\t: current.indent;\n\t\tconst childGutters =\n\t\t\tcurrent.showConnector && current.indent > 0\n\t\t\t\t? [...current.gutters, { level: current.indent - 1, continues: !current.isLast }]\n\t\t\t\t: current.gutters;\n\t\tfor (let index = children.length - 1; index >= 0; index -= 1) {\n\t\t\tconst child = children[index];\n\t\t\tif (!child) continue;\n\t\t\tparents.set(child.entry.id, current.node.entry.id);\n\t\t\tstack.push({\n\t\t\t\tnode: child,\n\t\t\t\tindent: childIndent,\n\t\t\t\tjustBranched: multipleChildren,\n\t\t\t\tshowConnector: multipleChildren,\n\t\t\t\tisLast: index === children.length - 1,\n\t\t\t\tgutters: childGutters,\n\t\t\t});\n\t\t}\n\t}\n\n\tconst currentPath = new Set<string>();\n\tfor (let current = leafId; current; current = parents.get(current)) currentPath.add(current);\n\treturn raw.map((node) => ({ ...node, isCurrentPath: currentPath.has(node.entry.id) }));\n}\n\n/** Compact, keyboard-driven session tree browser. It only renders and delegates all state changes to its caller. */\nexport class TreeSelector implements Component, Focusable {\n\tfocused = false;\n\tprivate readonly options: TreeSelectorOptions;\n\tprivate readonly nodes: readonly FlatTreeNode[];\n\tprivate selectedIndex = 0;\n\n\tconstructor(options: TreeSelectorOptions) {\n\t\tthis.options = options;\n\t\tthis.nodes = flattenTree(options.nodes, options.leafId);\n\t\tconst selected = this.nodes.findIndex((node) => node.entry.id === options.leafId);\n\t\tif (selected >= 0) this.selectedIndex = selected;\n\t}\n\n\tinvalidate(): void {}\n\n\trender(width: number): string[] {\n\t\tif (width <= 0) return [];\n\t\tif (this.nodes.length === 0)\n\t\t\treturn new SelectionPanel({ emptyText: translate(this.options.locale, \"treeEmpty\"), total: 0 }).render(width);\n\n\t\tconst start = Math.max(\n\t\t\t0,\n\t\t\tMath.min(this.selectedIndex - Math.floor(MAX_VISIBLE_NODES / 2), this.nodes.length - MAX_VISIBLE_NODES),\n\t\t);\n\t\tconst end = Math.min(this.nodes.length, start + MAX_VISIBLE_NODES);\n\t\tconst rows: string[] = [];\n\t\tfor (let index = start; index < end; index += 1) {\n\t\t\tconst node = this.nodes[index];\n\t\t\tif (node) rows.push(this.renderNode(node));\n\t\t}\n\t\treturn new SelectionPanel({\n\t\t\trows,\n\t\t\tselectedIndex: this.selectedIndex - start,\n\t\t\tposition: this.selectedIndex + 1,\n\t\t\ttotal: this.nodes.length,\n\t\t\thint: this.actionHint(),\n\t\t}).render(width);\n\t}\n\n\thandleInput(data: string): void {\n\t\tif (matchesKey(data, Key.up)) {\n\t\t\tthis.move(-1);\n\t\t\treturn;\n\t\t}\n\t\tif (matchesKey(data, Key.down)) {\n\t\t\tthis.move(1);\n\t\t\treturn;\n\t\t}\n\t\tif (matchesKey(data, Key.enter)) {\n\t\t\tthis.select(\"continue\");\n\t\t\treturn;\n\t\t}\n\t\tif (matchesKey(data, Key.escape) || matchesKey(data, Key.ctrl(\"c\"))) {\n\t\t\tthis.options.onCancel?.();\n\t\t\treturn;\n\t\t}\n\t\tif (matchesKey(data, \"e\")) {\n\t\t\tthis.select(\"edit\");\n\t\t\treturn;\n\t\t}\n\t\tif (matchesKey(data, \"s\")) this.select(\"summarize\");\n\t}\n\n\tprivate renderNode(node: FlatTreeNode): string {\n\t\tconst prefix = this.renderPrefix(node);\n\t\tconst currentPath = node.isCurrentPath ? paint(CYAN, \"• \") : \" \";\n\t\tconst content = this.entryDisplay(node.entry);\n\t\treturn `${prefix}${currentPath}${content}`;\n\t}\n\n\tprivate renderPrefix(node: FlatTreeNode): string {\n\t\tconst levels: string[] = [];\n\t\tfor (let level = 0; level < node.indent; level += 1) {\n\t\t\tconst gutter = node.gutters.find((candidate) => candidate.level === level);\n\t\t\tif (gutter) {\n\t\t\t\tlevels.push(paint(DIM, gutter.continues ? \"│ \" : \" \"));\n\t\t\t} else if (node.showConnector && level === node.indent - 1) {\n\t\t\t\tlevels.push(paint(DIM, node.isLast ? \"└─ \" : \"├─ \"));\n\t\t\t} else {\n\t\t\t\tlevels.push(\" \");\n\t\t\t}\n\t\t}\n\t\treturn levels.join(\"\");\n\t}\n\n\tprivate entryDisplay(entry: SessionEntry): string {\n\t\tconst text = textContent(entry);\n\t\tif (entry.type === \"summary\") return `${paint(YELLOW, \"summary: \")}${text || paint(DIM, \"(empty)\")}`;\n\t\tif (entry.type === \"plugin\") return `${paint(DIM, \"plugin: \")}${text || paint(DIM, \"(empty)\")}`;\n\t\tif (entry.message.role === \"user\") return `${paint(CYAN, \"user: \")}${text || paint(DIM, \"(empty)\")}`;\n\t\tif (entry.message.role === \"assistant\") {\n\t\t\tif (text) return `${paint(GREEN, \"assistant: \")}${text}`;\n\t\t\tif (entry.message.stopReason === \"aborted\") return `${paint(GREEN, \"assistant: \")}${paint(DIM, \"(aborted)\")}`;\n\t\t\tif (entry.message.stopReason === \"error\") return `${paint(GREEN, \"assistant: \")}${paint(RED, \"(error)\")}`;\n\t\t\treturn `${paint(GREEN, \"assistant: \")}${paint(DIM, \"(no text)\")}`;\n\t\t}\n\t\treturn `${paint(DIM, `${entry.message.toolName}: `)}${text || paint(DIM, \"(no text)\")}`;\n\t}\n\n\tprivate actionHint(): string {\n\t\treturn `Enter ${translate(this.options.locale, \"treeContinue\")} · e ${translate(this.options.locale, \"treeEdit\")} · s ${translate(this.options.locale, \"treeSummarize\")} · Esc ${translate(this.options.locale, \"treeCancel\")}`;\n\t}\n\n\tprivate move(direction: -1 | 1): void {\n\t\tif (this.nodes.length === 0) return;\n\t\tthis.selectedIndex = (this.selectedIndex + direction + this.nodes.length) % this.nodes.length;\n\t}\n\n\tprivate select(action: \"continue\" | \"edit\" | \"summarize\"): void {\n\t\tconst entry = this.nodes[this.selectedIndex]?.entry;\n\t\tif (!entry) return;\n\t\tif (action === \"continue\") this.options.onContinue?.(entry);\n\t\telse if (action === \"edit\") this.options.onEdit?.(entry);\n\t\telse this.options.onSummarize?.(entry);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tree-selector.js","sourceRoot":"","sources":["../../src/modes/tree-selector.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Component, type Focusable, Key, matchesKey, SelectionPanel } from \"@di-code/tui\";\nimport type { SessionEntry, SessionTreeNode } from \"../core/session/types.ts\";\nimport { type Locale, translate } from \"../i18n.ts\";\n\nconst RESET_FOREGROUND = \"\\x1b[39m\";\nconst CYAN = \"\\x1b[38;5;45m\";\nconst GREEN = \"\\x1b[38;5;114m\";\nconst YELLOW = \"\\x1b[38;5;222m\";\nconst RED = \"\\x1b[38;5;210m\";\nconst DIM = \"\\x1b[38;5;245m\";\nconst MAX_VISIBLE_NODES = 12;\n\ninterface FlatTreeNode {\n\treadonly entry: SessionEntry;\n\t/** Visual indentation only grows where the session graph actually branches. */\n\treadonly indent: number;\n\treadonly showConnector: boolean;\n\treadonly isLast: boolean;\n\treadonly gutters: readonly TreeGutter[];\n\treadonly isCurrentPath: boolean;\n}\n\ninterface TreeGutter {\n\treadonly level: number;\n\treadonly continues: boolean;\n}\n\nexport interface TreeSelectorOptions {\n\treadonly nodes: readonly SessionTreeNode[];\n\treadonly leafId?: string;\n\treadonly locale: Locale;\n\tonContinue?(entry: SessionEntry): void;\n\tonEdit?(entry: SessionEntry): void;\n\tonSummarize?(entry: SessionEntry): void;\n\tonCancel?(): void;\n}\n\nfunction paint(color: string, text: string): string {\n\t// Reset only the foreground so a selected row keeps its background across coloured fragments.\n\treturn `${color}${text}${RESET_FOREGROUND}`;\n}\n\nfunction singleLine(value: string): string {\n\treturn value\n\t\t.replace(/[\\r\\n\\t]+/g, \" \")\n\t\t.replace(/\\s+/g, \" \")\n\t\t.trim();\n}\n\nfunction textContent(entry: SessionEntry): string {\n\tif (entry.type === \"summary\") return singleLine(entry.summary);\n\tif (entry.type === \"plugin\") return singleLine(`plugin:${entry.pluginId}`);\n\tif (entry.type === \"event\") return singleLine(`event:${entry.namespace}:${entry.eventName}`);\n\treturn singleLine(entry.message.content.map((content) => (content.type === \"text\" ? content.text : \"\")).join(\" \"));\n}\n\nfunction flattenTree(nodes: readonly SessionTreeNode[], leafId: string | undefined): FlatTreeNode[] {\n\tconst parents = new Map<string, string>();\n\tconst raw: Array<Omit<FlatTreeNode, \"isCurrentPath\">> = [];\n\ttype PendingNode = {\n\t\treadonly node: SessionTreeNode;\n\t\treadonly indent: number;\n\t\treadonly justBranched: boolean;\n\t\treadonly showConnector: boolean;\n\t\treadonly isLast: boolean;\n\t\treadonly gutters: readonly TreeGutter[];\n\t};\n\tconst stack: PendingNode[] = [];\n\tconst multipleRoots = nodes.length > 1;\n\n\tfor (let index = nodes.length - 1; index >= 0; index -= 1) {\n\t\tconst node = nodes[index];\n\t\tif (!node) continue;\n\t\tstack.push({\n\t\t\tnode,\n\t\t\tindent: multipleRoots ? 1 : 0,\n\t\t\tjustBranched: multipleRoots,\n\t\t\tshowConnector: multipleRoots,\n\t\t\tisLast: index === nodes.length - 1,\n\t\t\tgutters: [],\n\t\t});\n\t}\n\n\twhile (stack.length > 0) {\n\t\tconst current = stack.pop();\n\t\tif (!current) continue;\n\t\traw.push({\n\t\t\tentry: current.node.entry,\n\t\t\tindent: current.indent,\n\t\t\tshowConnector: current.showConnector,\n\t\t\tisLast: current.isLast,\n\t\t\tgutters: current.gutters,\n\t\t});\n\t\tconst children = current.node.children;\n\t\tconst multipleChildren = children.length > 1;\n\t\tconst childIndent = multipleChildren\n\t\t\t? current.indent + 1\n\t\t\t: current.justBranched && current.indent > 0\n\t\t\t\t? current.indent + 1\n\t\t\t\t: current.indent;\n\t\tconst childGutters =\n\t\t\tcurrent.showConnector && current.indent > 0\n\t\t\t\t? [...current.gutters, { level: current.indent - 1, continues: !current.isLast }]\n\t\t\t\t: current.gutters;\n\t\tfor (let index = children.length - 1; index >= 0; index -= 1) {\n\t\t\tconst child = children[index];\n\t\t\tif (!child) continue;\n\t\t\tparents.set(child.entry.id, current.node.entry.id);\n\t\t\tstack.push({\n\t\t\t\tnode: child,\n\t\t\t\tindent: childIndent,\n\t\t\t\tjustBranched: multipleChildren,\n\t\t\t\tshowConnector: multipleChildren,\n\t\t\t\tisLast: index === children.length - 1,\n\t\t\t\tgutters: childGutters,\n\t\t\t});\n\t\t}\n\t}\n\n\tconst currentPath = new Set<string>();\n\tfor (let current = leafId; current; current = parents.get(current)) currentPath.add(current);\n\treturn raw.map((node) => ({ ...node, isCurrentPath: currentPath.has(node.entry.id) }));\n}\n\n/** Compact, keyboard-driven session tree browser. It only renders and delegates all state changes to its caller. */\nexport class TreeSelector implements Component, Focusable {\n\tfocused = false;\n\tprivate readonly options: TreeSelectorOptions;\n\tprivate readonly nodes: readonly FlatTreeNode[];\n\tprivate selectedIndex = 0;\n\n\tconstructor(options: TreeSelectorOptions) {\n\t\tthis.options = options;\n\t\tthis.nodes = flattenTree(options.nodes, options.leafId);\n\t\tconst selected = this.nodes.findIndex((node) => node.entry.id === options.leafId);\n\t\tif (selected >= 0) this.selectedIndex = selected;\n\t}\n\n\tinvalidate(): void {}\n\n\trender(width: number): string[] {\n\t\tif (width <= 0) return [];\n\t\tif (this.nodes.length === 0)\n\t\t\treturn new SelectionPanel({ emptyText: translate(this.options.locale, \"treeEmpty\"), total: 0 }).render(width);\n\n\t\tconst start = Math.max(\n\t\t\t0,\n\t\t\tMath.min(this.selectedIndex - Math.floor(MAX_VISIBLE_NODES / 2), this.nodes.length - MAX_VISIBLE_NODES),\n\t\t);\n\t\tconst end = Math.min(this.nodes.length, start + MAX_VISIBLE_NODES);\n\t\tconst rows: string[] = [];\n\t\tfor (let index = start; index < end; index += 1) {\n\t\t\tconst node = this.nodes[index];\n\t\t\tif (node) rows.push(this.renderNode(node));\n\t\t}\n\t\treturn new SelectionPanel({\n\t\t\trows,\n\t\t\tselectedIndex: this.selectedIndex - start,\n\t\t\tposition: this.selectedIndex + 1,\n\t\t\ttotal: this.nodes.length,\n\t\t\thint: this.actionHint(),\n\t\t}).render(width);\n\t}\n\n\thandleInput(data: string): void {\n\t\tif (matchesKey(data, Key.up)) {\n\t\t\tthis.move(-1);\n\t\t\treturn;\n\t\t}\n\t\tif (matchesKey(data, Key.down)) {\n\t\t\tthis.move(1);\n\t\t\treturn;\n\t\t}\n\t\tif (matchesKey(data, Key.enter)) {\n\t\t\tthis.select(\"continue\");\n\t\t\treturn;\n\t\t}\n\t\tif (matchesKey(data, Key.escape) || matchesKey(data, Key.ctrl(\"c\"))) {\n\t\t\tthis.options.onCancel?.();\n\t\t\treturn;\n\t\t}\n\t\tif (matchesKey(data, \"e\")) {\n\t\t\tthis.select(\"edit\");\n\t\t\treturn;\n\t\t}\n\t\tif (matchesKey(data, \"s\")) this.select(\"summarize\");\n\t}\n\n\tprivate renderNode(node: FlatTreeNode): string {\n\t\tconst prefix = this.renderPrefix(node);\n\t\tconst currentPath = node.isCurrentPath ? paint(CYAN, \"• \") : \" \";\n\t\tconst content = this.entryDisplay(node.entry);\n\t\treturn `${prefix}${currentPath}${content}`;\n\t}\n\n\tprivate renderPrefix(node: FlatTreeNode): string {\n\t\tconst levels: string[] = [];\n\t\tfor (let level = 0; level < node.indent; level += 1) {\n\t\t\tconst gutter = node.gutters.find((candidate) => candidate.level === level);\n\t\t\tif (gutter) {\n\t\t\t\tlevels.push(paint(DIM, gutter.continues ? \"│ \" : \" \"));\n\t\t\t} else if (node.showConnector && level === node.indent - 1) {\n\t\t\t\tlevels.push(paint(DIM, node.isLast ? \"└─ \" : \"├─ \"));\n\t\t\t} else {\n\t\t\t\tlevels.push(\" \");\n\t\t\t}\n\t\t}\n\t\treturn levels.join(\"\");\n\t}\n\n\tprivate entryDisplay(entry: SessionEntry): string {\n\t\tconst text = textContent(entry);\n\t\tif (entry.type === \"summary\") return `${paint(YELLOW, \"summary: \")}${text || paint(DIM, \"(empty)\")}`;\n\t\tif (entry.type === \"plugin\") return `${paint(DIM, \"plugin: \")}${text || paint(DIM, \"(empty)\")}`;\n\t\tif (entry.type === \"event\") return `${paint(DIM, \"event: \")}${text || paint(DIM, \"(empty)\")}`;\n\t\tif (entry.message.role === \"user\") return `${paint(CYAN, \"user: \")}${text || paint(DIM, \"(empty)\")}`;\n\t\tif (entry.message.role === \"assistant\") {\n\t\t\tif (text) return `${paint(GREEN, \"assistant: \")}${text}`;\n\t\t\tif (entry.message.stopReason === \"aborted\") return `${paint(GREEN, \"assistant: \")}${paint(DIM, \"(aborted)\")}`;\n\t\t\tif (entry.message.stopReason === \"error\") return `${paint(GREEN, \"assistant: \")}${paint(RED, \"(error)\")}`;\n\t\t\treturn `${paint(GREEN, \"assistant: \")}${paint(DIM, \"(no text)\")}`;\n\t\t}\n\t\treturn `${paint(DIM, `${entry.message.toolName}: `)}${text || paint(DIM, \"(no text)\")}`;\n\t}\n\n\tprivate actionHint(): string {\n\t\treturn `Enter ${translate(this.options.locale, \"treeContinue\")} · e ${translate(this.options.locale, \"treeEdit\")} · s ${translate(this.options.locale, \"treeSummarize\")} · Esc ${translate(this.options.locale, \"treeCancel\")}`;\n\t}\n\n\tprivate move(direction: -1 | 1): void {\n\t\tif (this.nodes.length === 0) return;\n\t\tthis.selectedIndex = (this.selectedIndex + direction + this.nodes.length) % this.nodes.length;\n\t}\n\n\tprivate select(action: \"continue\" | \"edit\" | \"summarize\"): void {\n\t\tconst entry = this.nodes[this.selectedIndex]?.entry;\n\t\tif (!entry) return;\n\t\tif (action === \"continue\") this.options.onContinue?.(entry);\n\t\telse if (action === \"edit\") this.options.onEdit?.(entry);\n\t\telse this.options.onSummarize?.(entry);\n\t}\n}\n"]}
|
package/dist/rpc/client.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Readable, Writable } from "node:stream";
|
|
2
2
|
import type { AssistantMessage, Model, ThinkingLevel } from "@di-code/ai";
|
|
3
|
+
import type { UserInteractionResult } from "@di-code/plugin-sdk";
|
|
3
4
|
import { type OperationState, type RpcAttachmentInfo, type RpcCapabilities, type RpcContextFileInfo, type RpcErrorCode, type RpcEventRecord, type RpcMcpServerInfo, type RpcMethod, type RpcProductState, type RpcProviderSummary, type RpcSessionState, type RpcSettingsSnapshot, type RpcSuccessResult } from "./protocol.ts";
|
|
4
5
|
export interface RpcTransport {
|
|
5
6
|
readonly readable: Readable;
|
|
@@ -97,6 +98,7 @@ export declare class RpcClient {
|
|
|
97
98
|
removeMcpServer(serverId: string, scope?: "user" | "project" | "local"): Promise<void>;
|
|
98
99
|
reconnectMcpServer(serverId: string): Promise<RpcMcpServerInfo>;
|
|
99
100
|
createAttachment(name: string, contentType: RpcAttachmentInfo["contentType"], data: string): Promise<RpcAttachmentInfo>;
|
|
101
|
+
respondInteraction(requestId: string, result: Omit<UserInteractionResult, "requestId" | "toolCallId">): Promise<void>;
|
|
100
102
|
close(): void;
|
|
101
103
|
private send;
|
|
102
104
|
private readonly handleData;
|
package/dist/rpc/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/rpc/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/rpc/client.ts"],"names":[],"mappings":"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"}
|
package/dist/rpc/client.js
CHANGED
|
@@ -230,6 +230,9 @@ export class RpcClient {
|
|
|
230
230
|
const result = await this.send("create_attachment", { name, contentType, data });
|
|
231
231
|
return result.attachment;
|
|
232
232
|
}
|
|
233
|
+
async respondInteraction(requestId, result) {
|
|
234
|
+
await this.send("respond_interaction", { requestId, ...result });
|
|
235
|
+
}
|
|
233
236
|
close() {
|
|
234
237
|
if (this.closed)
|
|
235
238
|
return;
|
package/dist/rpc/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/rpc/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { Readable, Writable } from \"node:stream\";\nimport type { AssistantMessage, Model, ThinkingLevel } from \"@di-code/ai\";\nimport { JsonlLineDecoder, serializeJsonLine } from \"./jsonl.ts\";\nimport {\n\ttype OperationState,\n\tparseRpcServerMessage,\n\tRPC_PROTOCOL_VERSION,\n\ttype RpcAttachmentInfo,\n\ttype RpcCapabilities,\n\ttype RpcContextFileInfo,\n\ttype RpcErrorCode,\n\ttype RpcEventRecord,\n\ttype RpcMcpServerInfo,\n\ttype RpcMethod,\n\ttype RpcProductState,\n\ttype RpcProviderSummary,\n\ttype RpcRequest,\n\ttype RpcSessionState,\n\ttype RpcSettingsSnapshot,\n\ttype RpcSuccessResult,\n} from \"./protocol.ts\";\n\nexport interface RpcTransport {\n\treadonly readable: Readable;\n\treadonly writable: Writable;\n\tonExit?(listener: (code: number | null, signal: NodeJS.Signals | null) => void): () => void;\n\tclose?(): void;\n}\n\nexport interface RpcPromptOptions {\n\treadonly signal?: AbortSignal;\n\t/** Attachments are uploaded explicitly and consumed by this request; requests are never replayed automatically. */\n\treadonly attachmentIds?: readonly string[];\n}\n\nexport interface RpcSessionInfo {\n\treadonly id: string;\n\treadonly label: string;\n\treadonly modifiedAt?: number;\n}\n\nexport interface RpcRuntimeSnapshot {\n\treadonly providerId: string;\n\treadonly modelId: string;\n\treadonly thinkingLevel?: ThinkingLevel;\n}\n\ninterface PendingRequest {\n\treadonly method: RpcMethod;\n\treadonly resolve: (result: RpcSuccessResult) => void;\n\treadonly reject: (error: Error) => void;\n}\n\nexport class RpcRemoteError extends Error {\n\treadonly code: RpcErrorCode;\n\n\tconstructor(code: RpcErrorCode, message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"RpcRemoteError\";\n\t\tthis.code = code;\n\t}\n}\n\nexport class RpcClient {\n\tprivate readonly transport: RpcTransport;\n\tprivate readonly decoder: JsonlLineDecoder;\n\tprivate readonly pending = new Map<string, PendingRequest>();\n\tprivate readonly listeners = new Set<(event: RpcEventRecord) => void>();\n\tprivate readonly removeExitListener?: () => void;\n\tprivate closed = false;\n\n\tconstructor(transport: RpcTransport) {\n\t\tthis.transport = transport;\n\t\tthis.decoder = new JsonlLineDecoder((line) => this.acceptLine(line));\n\t\ttransport.readable.on(\"data\", this.handleData);\n\t\ttransport.readable.once(\"end\", this.handleEnd);\n\t\ttransport.readable.once(\"error\", this.handleError);\n\t\ttransport.writable.once(\"error\", this.handleError);\n\t\tthis.removeExitListener = transport.onExit?.((code, signal) => {\n\t\t\tthis.fail(new RpcRemoteError(\"PROCESS_EXIT\", `RPC process exited (code=${code} signal=${signal})`));\n\t\t});\n\t}\n\n\tsubscribe(listener: (event: RpcEventRecord) => void): () => void {\n\t\tthis.listeners.add(listener);\n\t\treturn () => this.listeners.delete(listener);\n\t}\n\n\tasync getState(): Promise<RpcSessionState> {\n\t\tconst result = await this.send(\"get_state\", {});\n\t\tif (result.method !== \"get_state\") throw new Error(\"RPC get_state returned an incompatible result.\");\n\t\treturn result.state as RpcSessionState;\n\t}\n\n\tasync prompt(message: string, options: RpcPromptOptions = {}): Promise<AssistantMessage> {\n\t\tconst requestId = randomUUID();\n\t\tconst onAbort = () => {\n\t\t\tvoid this.cancel(requestId).catch(() => undefined);\n\t\t};\n\t\toptions.signal?.addEventListener(\"abort\", onAbort, { once: true });\n\t\ttry {\n\t\t\tconst response = this.send(\n\t\t\t\t\"prompt\",\n\t\t\t\t{ message, ...(options.attachmentIds === undefined ? {} : { attachmentIds: [...options.attachmentIds] }) },\n\t\t\t\trequestId,\n\t\t\t);\n\t\t\tif (options.signal?.aborted) onAbort();\n\t\t\tconst result = await response;\n\t\t\tif (result.method !== \"prompt\") throw new Error(\"RPC prompt returned an incompatible result.\");\n\t\t\treturn result.message as AssistantMessage;\n\t\t} finally {\n\t\t\toptions.signal?.removeEventListener(\"abort\", onAbort);\n\t\t}\n\t}\n\n\tasync cancel(requestId: string): Promise<boolean> {\n\t\tconst result = await this.send(\"cancel\", { requestId });\n\t\tif (result.method !== \"cancel\") throw new Error(\"RPC cancel returned an incompatible result.\");\n\t\treturn result.cancelled as boolean;\n\t}\n\n\t/**\n\t * Sends an explicitly named, schema-validated RPC request. Consumers should negotiate capabilities\n\t * before using extended methods so old process servers remain usable.\n\t */\n\tcall(method: RpcMethod, params: Record<string, unknown> = {}, id?: string): Promise<RpcSuccessResult> {\n\t\treturn this.send(method, params, id);\n\t}\n\n\tasync getCapabilities(events: readonly string[] = []): Promise<RpcSuccessResult> {\n\t\tconst result = await this.send(\"get_capabilities\", { events: [...events] });\n\t\treturn result;\n\t}\n\n\tasync negotiate(events: readonly import(\"./protocol.ts\").RpcExtendedEventName[] = []): Promise<RpcCapabilities> {\n\t\tconst result = await this.getCapabilities(events);\n\t\treturn {\n\t\t\tmethods: result.methods as readonly RpcMethod[],\n\t\t\tevents: result.events as readonly import(\"./protocol.ts\").RpcExtendedEventName[],\n\t\t\teventBufferSize: result.eventBufferSize as number,\n\t\t};\n\t}\n\n\tasync resumeEvents(lastSequence?: number): Promise<{ readonly snapshotRequired: boolean }> {\n\t\tconst result = await this.send(\"resume_events\", lastSequence === undefined ? {} : { lastSequence });\n\t\treturn { snapshotRequired: result.snapshotRequired as boolean };\n\t}\n\n\tasync getOperation(requestId: string): Promise<OperationState> {\n\t\tconst result = await this.send(\"get_operation\", { requestId });\n\t\treturn result.operation as OperationState;\n\t}\n\n\tasync listSessions(): Promise<readonly RpcSessionInfo[]> {\n\t\tconst result = await this.send(\"list_sessions\", {});\n\t\treturn result.sessions as readonly RpcSessionInfo[];\n\t}\n\n\tasync newSession(): Promise<RpcSessionInfo> {\n\t\tconst result = await this.send(\"new_session\", {});\n\t\treturn result.session as RpcSessionInfo;\n\t}\n\n\tasync openSession(sessionId: string): Promise<RpcSessionInfo> {\n\t\tconst result = await this.send(\"open_session\", { sessionId });\n\t\treturn result.session as RpcSessionInfo;\n\t}\n\n\tasync getProductState(): Promise<RpcProductState> {\n\t\tconst result = await this.send(\"get_product_state\", {});\n\t\treturn result.state as RpcProductState;\n\t}\n\n\tasync getProjectTrust(): Promise<boolean> {\n\t\tconst result = await this.send(\"get_project_trust\", {});\n\t\treturn result.trusted as boolean;\n\t}\n\n\tasync getTranscript(\n\t\tparams: { readonly pageToken?: string; readonly pageSize?: number; readonly maxBytes?: number } = {},\n\t): Promise<RpcSuccessResult> {\n\t\treturn this.send(\"get_transcript\", params);\n\t}\n\n\tasync getTree(): Promise<RpcSuccessResult> {\n\t\treturn this.send(\"get_tree\", {});\n\t}\n\n\tasync navigateTree(entryId: string): Promise<RpcSuccessResult> {\n\t\treturn this.send(\"navigate_tree\", { entryId });\n\t}\n\n\tasync getModels(): Promise<readonly Model[]> {\n\t\tconst result = await this.send(\"get_models\", {});\n\t\treturn result.models as readonly Model[];\n\t}\n\n\tasync setModel(modelId: string): Promise<Model> {\n\t\tconst result = await this.send(\"set_model\", { modelId });\n\t\treturn result.model as Model;\n\t}\n\n\tasync getRuntime(): Promise<RpcRuntimeSnapshot> {\n\t\tconst result = await this.send(\"get_runtime\", {});\n\t\treturn {\n\t\t\tproviderId: result.providerId as string,\n\t\t\tmodelId: result.modelId as string,\n\t\t\t...(result.thinkingLevel === undefined ? {} : { thinkingLevel: result.thinkingLevel as ThinkingLevel }),\n\t\t};\n\t}\n\n\tasync setRuntime(providerId: string, modelId: string): Promise<Model> {\n\t\tconst result = await this.send(\"set_runtime\", { providerId, modelId });\n\t\treturn result.model as Model;\n\t}\n\n\tasync setThinkingLevel(level?: ThinkingLevel): Promise<ThinkingLevel | undefined> {\n\t\tconst result = await this.send(\"set_thinking_level\", level === undefined ? {} : { level });\n\t\treturn result.level as ThinkingLevel | undefined;\n\t}\n\n\tasync compact(): Promise<void> {\n\t\tawait this.send(\"compact\", {});\n\t}\n\n\tasync setCompactionEnabled(enabled: boolean): Promise<boolean> {\n\t\tconst result = await this.send(\"set_compaction_enabled\", { enabled });\n\t\treturn result.enabled as boolean;\n\t}\n\n\tasync getUsage(): Promise<RpcSuccessResult> {\n\t\treturn this.send(\"get_usage\", {});\n\t}\n\n\tasync listSkills(): Promise<RpcSuccessResult> {\n\t\treturn this.send(\"list_skills\", {});\n\t}\n\n\tasync getResources(): Promise<RpcSuccessResult> {\n\t\treturn this.send(\"get_resources\", {});\n\t}\n\n\tasync steer(message: string, options: RpcPromptOptions = {}): Promise<void> {\n\t\tconst result = await this.send(\"steer\", {\n\t\t\tmessage,\n\t\t\t...(options.attachmentIds === undefined ? {} : { attachmentIds: [...options.attachmentIds] }),\n\t\t});\n\t\tif (result.method !== \"steer\") throw new Error(\"RPC steer returned an incompatible result.\");\n\t}\n\n\tasync retry(targetRequestId: string): Promise<AssistantMessage> {\n\t\tconst result = await this.send(\"retry\", { targetRequestId });\n\t\tif (result.method !== \"retry\") throw new Error(\"RPC retry returned an incompatible result.\");\n\t\treturn result.message as AssistantMessage;\n\t}\n\n\tasync listProviders(): Promise<readonly RpcProviderSummary[]> {\n\t\tconst result = await this.send(\"list_providers\", {});\n\t\treturn result.providers as readonly RpcProviderSummary[];\n\t}\n\n\tasync getSettings(): Promise<RpcSettingsSnapshot> {\n\t\tconst result = await this.send(\"get_settings\", {});\n\t\treturn result.settings as RpcSettingsSnapshot;\n\t}\n\n\tasync setDefaultProvider(providerId: string): Promise<void> {\n\t\tawait this.send(\"set_default_provider\", { providerId });\n\t}\n\n\tasync setDefaultModel(modelId: string): Promise<void> {\n\t\tawait this.send(\"set_default_model\", { modelId });\n\t}\n\n\tasync setLocale(locale: \"en\" | \"zh-CN\"): Promise<void> {\n\t\tawait this.send(\"set_locale\", { locale });\n\t}\n\n\tasync setPermissionMode(permissionMode: \"ask\" | \"allow\" | \"deny\"): Promise<void> {\n\t\tawait this.send(\"set_permission_mode\", { permissionMode });\n\t}\n\n\tasync configureCustomProvider(input: {\n\t\treadonly api: \"openai-responses\" | \"openai-chat-completions\" | \"anthropic-messages\";\n\t\treadonly baseUrl: string;\n\t\treadonly apiKey: string;\n\t\treadonly modelId: string;\n\t}): Promise<RpcProviderSummary> {\n\t\tconst result = await this.send(\"configure_custom_provider\", input);\n\t\treturn result.provider as RpcProviderSummary;\n\t}\n\n\tasync login(\n\t\tproviderId: string,\n\t\tapiKey: string,\n\t\toptions: { readonly modelId?: string; readonly api?: string } = {},\n\t): Promise<RpcProviderSummary> {\n\t\tconst result = await this.send(\"login\", { providerId, apiKey, ...options });\n\t\treturn result.provider as RpcProviderSummary;\n\t}\n\n\tasync logout(providerId: string): Promise<void> {\n\t\tawait this.send(\"logout\", { providerId });\n\t}\n\n\tasync setProjectTrust(trusted: boolean): Promise<boolean> {\n\t\tconst result = await this.send(\"set_project_trust\", { trusted });\n\t\treturn result.trusted as boolean;\n\t}\n\n\tasync listContextFiles(): Promise<readonly RpcContextFileInfo[]> {\n\t\tconst result = await this.send(\"list_context_files\", {});\n\t\treturn result.files as readonly RpcContextFileInfo[];\n\t}\n\n\tasync listMcpServers(): Promise<readonly RpcMcpServerInfo[]> {\n\t\tconst result = await this.send(\"list_mcp_servers\", {});\n\t\treturn result.servers as readonly RpcMcpServerInfo[];\n\t}\n\n\tasync configureMcpServer(\n\t\tserverId: string,\n\t\tscope: \"user\" | \"project\" | \"local\",\n\t\tconfig: Record<string, unknown>,\n\t): Promise<RpcMcpServerInfo> {\n\t\tconst result = await this.send(\"configure_mcp_server\", { serverId, scope, config });\n\t\treturn result.server as RpcMcpServerInfo;\n\t}\n\n\tasync removeMcpServer(serverId: string, scope: \"user\" | \"project\" | \"local\" = \"project\"): Promise<void> {\n\t\tawait this.send(\"remove_mcp_server\", { serverId, scope });\n\t}\n\n\tasync reconnectMcpServer(serverId: string): Promise<RpcMcpServerInfo> {\n\t\tconst result = await this.send(\"reconnect_mcp_server\", { serverId });\n\t\treturn result.server as RpcMcpServerInfo;\n\t}\n\n\tasync createAttachment(\n\t\tname: string,\n\t\tcontentType: RpcAttachmentInfo[\"contentType\"],\n\t\tdata: string,\n\t): Promise<RpcAttachmentInfo> {\n\t\tconst result = await this.send(\"create_attachment\", { name, contentType, data });\n\t\treturn result.attachment as RpcAttachmentInfo;\n\t}\n\n\tclose(): void {\n\t\tif (this.closed) return;\n\t\tthis.closed = true;\n\t\tthis.detach();\n\t\tthis.transport.close?.();\n\t\tthis.rejectPending(new Error(\"RPC client is closed.\"));\n\t}\n\n\tprivate send(\n\t\tmethod: \"prompt\",\n\t\tparams: { readonly message: string; readonly attachmentIds?: readonly string[] },\n\t\tid?: string,\n\t): Promise<RpcSuccessResult>;\n\tprivate send(method: \"cancel\", params: { readonly requestId: string }, id?: string): Promise<RpcSuccessResult>;\n\tprivate send(method: \"get_state\", params: Record<string, never>, id?: string): Promise<RpcSuccessResult>;\n\tprivate send(method: RpcMethod, params: Record<string, unknown>, id?: string): Promise<RpcSuccessResult>;\n\tprivate send(method: RpcMethod, params: Record<string, unknown>, id = randomUUID()): Promise<RpcSuccessResult> {\n\t\tif (this.closed) return Promise.reject(new Error(\"RPC client is closed.\"));\n\t\tconst request = { version: RPC_PROTOCOL_VERSION, kind: \"request\", id, method, params } as RpcRequest;\n\t\treturn new Promise<RpcSuccessResult>((resolve, reject) => {\n\t\t\tthis.pending.set(id, { method, resolve, reject });\n\t\t\tthis.transport.writable.write(serializeJsonLine(request), (error) => {\n\t\t\t\tif (!error) return;\n\t\t\t\tthis.pending.delete(id);\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate readonly handleData = (chunk: string | Buffer): void => {\n\t\ttry {\n\t\t\tthis.decoder.push(chunk);\n\t\t} catch (cause) {\n\t\t\tthis.fail(cause instanceof Error ? cause : new Error(String(cause)));\n\t\t}\n\t};\n\n\tprivate readonly handleEnd = (): void => {\n\t\ttry {\n\t\t\tthis.decoder.end();\n\t\t} catch (cause) {\n\t\t\tthis.fail(cause instanceof Error ? cause : new Error(String(cause)));\n\t\t\treturn;\n\t\t}\n\t\tthis.fail(new Error(\"RPC output ended before the client was closed.\"));\n\t};\n\n\tprivate readonly handleError = (error: Error): void => this.fail(error);\n\n\tprivate acceptLine(line: string): void {\n\t\tconst message = parseRpcServerMessage(line);\n\t\tif (message.kind === \"event\") {\n\t\t\tfor (const listener of this.listeners) listener(structuredClone(message));\n\t\t\treturn;\n\t\t}\n\t\tif (!message.ok && message.id === undefined) {\n\t\t\tthis.fail(new Error(`${message.error.code}: ${message.error.message}`));\n\t\t\treturn;\n\t\t}\n\t\tif (message.id === undefined) return;\n\t\tconst pending = this.pending.get(message.id);\n\t\tif (!pending) return;\n\t\tthis.pending.delete(message.id);\n\t\tif (!message.ok) {\n\t\t\tpending.reject(new RpcRemoteError(message.error.code, message.error.message));\n\t\t\treturn;\n\t\t}\n\t\tif (message.result.method !== pending.method) {\n\t\t\tpending.reject(new Error(`RPC response method mismatch: expected ${pending.method}.`));\n\t\t\treturn;\n\t\t}\n\t\tpending.resolve(message.result);\n\t}\n\n\tprivate fail(error: Error): void {\n\t\tif (this.closed) return;\n\t\tthis.closed = true;\n\t\tthis.detach();\n\t\tthis.rejectPending(error);\n\t}\n\n\tprivate rejectPending(error: Error): void {\n\t\tfor (const pending of this.pending.values()) pending.reject(error);\n\t\tthis.pending.clear();\n\t}\n\n\tprivate detach(): void {\n\t\tthis.transport.readable.off(\"data\", this.handleData);\n\t\tthis.transport.readable.off(\"end\", this.handleEnd);\n\t\tthis.transport.readable.off(\"error\", this.handleError);\n\t\tthis.transport.writable.off(\"error\", this.handleError);\n\t\tthis.removeExitListener?.();\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/rpc/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { Readable, Writable } from \"node:stream\";\nimport type { AssistantMessage, Model, ThinkingLevel } from \"@di-code/ai\";\nimport type { UserInteractionResult } from \"@di-code/plugin-sdk\";\nimport { JsonlLineDecoder, serializeJsonLine } from \"./jsonl.ts\";\nimport {\n\ttype OperationState,\n\tparseRpcServerMessage,\n\tRPC_PROTOCOL_VERSION,\n\ttype RpcAttachmentInfo,\n\ttype RpcCapabilities,\n\ttype RpcContextFileInfo,\n\ttype RpcErrorCode,\n\ttype RpcEventRecord,\n\ttype RpcMcpServerInfo,\n\ttype RpcMethod,\n\ttype RpcProductState,\n\ttype RpcProviderSummary,\n\ttype RpcRequest,\n\ttype RpcSessionState,\n\ttype RpcSettingsSnapshot,\n\ttype RpcSuccessResult,\n} from \"./protocol.ts\";\n\nexport interface RpcTransport {\n\treadonly readable: Readable;\n\treadonly writable: Writable;\n\tonExit?(listener: (code: number | null, signal: NodeJS.Signals | null) => void): () => void;\n\tclose?(): void;\n}\n\nexport interface RpcPromptOptions {\n\treadonly signal?: AbortSignal;\n\t/** Attachments are uploaded explicitly and consumed by this request; requests are never replayed automatically. */\n\treadonly attachmentIds?: readonly string[];\n}\n\nexport interface RpcSessionInfo {\n\treadonly id: string;\n\treadonly label: string;\n\treadonly modifiedAt?: number;\n}\n\nexport interface RpcRuntimeSnapshot {\n\treadonly providerId: string;\n\treadonly modelId: string;\n\treadonly thinkingLevel?: ThinkingLevel;\n}\n\ninterface PendingRequest {\n\treadonly method: RpcMethod;\n\treadonly resolve: (result: RpcSuccessResult) => void;\n\treadonly reject: (error: Error) => void;\n}\n\nexport class RpcRemoteError extends Error {\n\treadonly code: RpcErrorCode;\n\n\tconstructor(code: RpcErrorCode, message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"RpcRemoteError\";\n\t\tthis.code = code;\n\t}\n}\n\nexport class RpcClient {\n\tprivate readonly transport: RpcTransport;\n\tprivate readonly decoder: JsonlLineDecoder;\n\tprivate readonly pending = new Map<string, PendingRequest>();\n\tprivate readonly listeners = new Set<(event: RpcEventRecord) => void>();\n\tprivate readonly removeExitListener?: () => void;\n\tprivate closed = false;\n\n\tconstructor(transport: RpcTransport) {\n\t\tthis.transport = transport;\n\t\tthis.decoder = new JsonlLineDecoder((line) => this.acceptLine(line));\n\t\ttransport.readable.on(\"data\", this.handleData);\n\t\ttransport.readable.once(\"end\", this.handleEnd);\n\t\ttransport.readable.once(\"error\", this.handleError);\n\t\ttransport.writable.once(\"error\", this.handleError);\n\t\tthis.removeExitListener = transport.onExit?.((code, signal) => {\n\t\t\tthis.fail(new RpcRemoteError(\"PROCESS_EXIT\", `RPC process exited (code=${code} signal=${signal})`));\n\t\t});\n\t}\n\n\tsubscribe(listener: (event: RpcEventRecord) => void): () => void {\n\t\tthis.listeners.add(listener);\n\t\treturn () => this.listeners.delete(listener);\n\t}\n\n\tasync getState(): Promise<RpcSessionState> {\n\t\tconst result = await this.send(\"get_state\", {});\n\t\tif (result.method !== \"get_state\") throw new Error(\"RPC get_state returned an incompatible result.\");\n\t\treturn result.state as RpcSessionState;\n\t}\n\n\tasync prompt(message: string, options: RpcPromptOptions = {}): Promise<AssistantMessage> {\n\t\tconst requestId = randomUUID();\n\t\tconst onAbort = () => {\n\t\t\tvoid this.cancel(requestId).catch(() => undefined);\n\t\t};\n\t\toptions.signal?.addEventListener(\"abort\", onAbort, { once: true });\n\t\ttry {\n\t\t\tconst response = this.send(\n\t\t\t\t\"prompt\",\n\t\t\t\t{ message, ...(options.attachmentIds === undefined ? {} : { attachmentIds: [...options.attachmentIds] }) },\n\t\t\t\trequestId,\n\t\t\t);\n\t\t\tif (options.signal?.aborted) onAbort();\n\t\t\tconst result = await response;\n\t\t\tif (result.method !== \"prompt\") throw new Error(\"RPC prompt returned an incompatible result.\");\n\t\t\treturn result.message as AssistantMessage;\n\t\t} finally {\n\t\t\toptions.signal?.removeEventListener(\"abort\", onAbort);\n\t\t}\n\t}\n\n\tasync cancel(requestId: string): Promise<boolean> {\n\t\tconst result = await this.send(\"cancel\", { requestId });\n\t\tif (result.method !== \"cancel\") throw new Error(\"RPC cancel returned an incompatible result.\");\n\t\treturn result.cancelled as boolean;\n\t}\n\n\t/**\n\t * Sends an explicitly named, schema-validated RPC request. Consumers should negotiate capabilities\n\t * before using extended methods so old process servers remain usable.\n\t */\n\tcall(method: RpcMethod, params: Record<string, unknown> = {}, id?: string): Promise<RpcSuccessResult> {\n\t\treturn this.send(method, params, id);\n\t}\n\n\tasync getCapabilities(events: readonly string[] = []): Promise<RpcSuccessResult> {\n\t\tconst result = await this.send(\"get_capabilities\", { events: [...events] });\n\t\treturn result;\n\t}\n\n\tasync negotiate(events: readonly import(\"./protocol.ts\").RpcExtendedEventName[] = []): Promise<RpcCapabilities> {\n\t\tconst result = await this.getCapabilities(events);\n\t\treturn {\n\t\t\tmethods: result.methods as readonly RpcMethod[],\n\t\t\tevents: result.events as readonly import(\"./protocol.ts\").RpcExtendedEventName[],\n\t\t\teventBufferSize: result.eventBufferSize as number,\n\t\t};\n\t}\n\n\tasync resumeEvents(lastSequence?: number): Promise<{ readonly snapshotRequired: boolean }> {\n\t\tconst result = await this.send(\"resume_events\", lastSequence === undefined ? {} : { lastSequence });\n\t\treturn { snapshotRequired: result.snapshotRequired as boolean };\n\t}\n\n\tasync getOperation(requestId: string): Promise<OperationState> {\n\t\tconst result = await this.send(\"get_operation\", { requestId });\n\t\treturn result.operation as OperationState;\n\t}\n\n\tasync listSessions(): Promise<readonly RpcSessionInfo[]> {\n\t\tconst result = await this.send(\"list_sessions\", {});\n\t\treturn result.sessions as readonly RpcSessionInfo[];\n\t}\n\n\tasync newSession(): Promise<RpcSessionInfo> {\n\t\tconst result = await this.send(\"new_session\", {});\n\t\treturn result.session as RpcSessionInfo;\n\t}\n\n\tasync openSession(sessionId: string): Promise<RpcSessionInfo> {\n\t\tconst result = await this.send(\"open_session\", { sessionId });\n\t\treturn result.session as RpcSessionInfo;\n\t}\n\n\tasync getProductState(): Promise<RpcProductState> {\n\t\tconst result = await this.send(\"get_product_state\", {});\n\t\treturn result.state as RpcProductState;\n\t}\n\n\tasync getProjectTrust(): Promise<boolean> {\n\t\tconst result = await this.send(\"get_project_trust\", {});\n\t\treturn result.trusted as boolean;\n\t}\n\n\tasync getTranscript(\n\t\tparams: { readonly pageToken?: string; readonly pageSize?: number; readonly maxBytes?: number } = {},\n\t): Promise<RpcSuccessResult> {\n\t\treturn this.send(\"get_transcript\", params);\n\t}\n\n\tasync getTree(): Promise<RpcSuccessResult> {\n\t\treturn this.send(\"get_tree\", {});\n\t}\n\n\tasync navigateTree(entryId: string): Promise<RpcSuccessResult> {\n\t\treturn this.send(\"navigate_tree\", { entryId });\n\t}\n\n\tasync getModels(): Promise<readonly Model[]> {\n\t\tconst result = await this.send(\"get_models\", {});\n\t\treturn result.models as readonly Model[];\n\t}\n\n\tasync setModel(modelId: string): Promise<Model> {\n\t\tconst result = await this.send(\"set_model\", { modelId });\n\t\treturn result.model as Model;\n\t}\n\n\tasync getRuntime(): Promise<RpcRuntimeSnapshot> {\n\t\tconst result = await this.send(\"get_runtime\", {});\n\t\treturn {\n\t\t\tproviderId: result.providerId as string,\n\t\t\tmodelId: result.modelId as string,\n\t\t\t...(result.thinkingLevel === undefined ? {} : { thinkingLevel: result.thinkingLevel as ThinkingLevel }),\n\t\t};\n\t}\n\n\tasync setRuntime(providerId: string, modelId: string): Promise<Model> {\n\t\tconst result = await this.send(\"set_runtime\", { providerId, modelId });\n\t\treturn result.model as Model;\n\t}\n\n\tasync setThinkingLevel(level?: ThinkingLevel): Promise<ThinkingLevel | undefined> {\n\t\tconst result = await this.send(\"set_thinking_level\", level === undefined ? {} : { level });\n\t\treturn result.level as ThinkingLevel | undefined;\n\t}\n\n\tasync compact(): Promise<void> {\n\t\tawait this.send(\"compact\", {});\n\t}\n\n\tasync setCompactionEnabled(enabled: boolean): Promise<boolean> {\n\t\tconst result = await this.send(\"set_compaction_enabled\", { enabled });\n\t\treturn result.enabled as boolean;\n\t}\n\n\tasync getUsage(): Promise<RpcSuccessResult> {\n\t\treturn this.send(\"get_usage\", {});\n\t}\n\n\tasync listSkills(): Promise<RpcSuccessResult> {\n\t\treturn this.send(\"list_skills\", {});\n\t}\n\n\tasync getResources(): Promise<RpcSuccessResult> {\n\t\treturn this.send(\"get_resources\", {});\n\t}\n\n\tasync steer(message: string, options: RpcPromptOptions = {}): Promise<void> {\n\t\tconst result = await this.send(\"steer\", {\n\t\t\tmessage,\n\t\t\t...(options.attachmentIds === undefined ? {} : { attachmentIds: [...options.attachmentIds] }),\n\t\t});\n\t\tif (result.method !== \"steer\") throw new Error(\"RPC steer returned an incompatible result.\");\n\t}\n\n\tasync retry(targetRequestId: string): Promise<AssistantMessage> {\n\t\tconst result = await this.send(\"retry\", { targetRequestId });\n\t\tif (result.method !== \"retry\") throw new Error(\"RPC retry returned an incompatible result.\");\n\t\treturn result.message as AssistantMessage;\n\t}\n\n\tasync listProviders(): Promise<readonly RpcProviderSummary[]> {\n\t\tconst result = await this.send(\"list_providers\", {});\n\t\treturn result.providers as readonly RpcProviderSummary[];\n\t}\n\n\tasync getSettings(): Promise<RpcSettingsSnapshot> {\n\t\tconst result = await this.send(\"get_settings\", {});\n\t\treturn result.settings as RpcSettingsSnapshot;\n\t}\n\n\tasync setDefaultProvider(providerId: string): Promise<void> {\n\t\tawait this.send(\"set_default_provider\", { providerId });\n\t}\n\n\tasync setDefaultModel(modelId: string): Promise<void> {\n\t\tawait this.send(\"set_default_model\", { modelId });\n\t}\n\n\tasync setLocale(locale: \"en\" | \"zh-CN\"): Promise<void> {\n\t\tawait this.send(\"set_locale\", { locale });\n\t}\n\n\tasync setPermissionMode(permissionMode: \"ask\" | \"allow\" | \"deny\"): Promise<void> {\n\t\tawait this.send(\"set_permission_mode\", { permissionMode });\n\t}\n\n\tasync configureCustomProvider(input: {\n\t\treadonly api: \"openai-responses\" | \"openai-chat-completions\" | \"anthropic-messages\";\n\t\treadonly baseUrl: string;\n\t\treadonly apiKey: string;\n\t\treadonly modelId: string;\n\t}): Promise<RpcProviderSummary> {\n\t\tconst result = await this.send(\"configure_custom_provider\", input);\n\t\treturn result.provider as RpcProviderSummary;\n\t}\n\n\tasync login(\n\t\tproviderId: string,\n\t\tapiKey: string,\n\t\toptions: { readonly modelId?: string; readonly api?: string } = {},\n\t): Promise<RpcProviderSummary> {\n\t\tconst result = await this.send(\"login\", { providerId, apiKey, ...options });\n\t\treturn result.provider as RpcProviderSummary;\n\t}\n\n\tasync logout(providerId: string): Promise<void> {\n\t\tawait this.send(\"logout\", { providerId });\n\t}\n\n\tasync setProjectTrust(trusted: boolean): Promise<boolean> {\n\t\tconst result = await this.send(\"set_project_trust\", { trusted });\n\t\treturn result.trusted as boolean;\n\t}\n\n\tasync listContextFiles(): Promise<readonly RpcContextFileInfo[]> {\n\t\tconst result = await this.send(\"list_context_files\", {});\n\t\treturn result.files as readonly RpcContextFileInfo[];\n\t}\n\n\tasync listMcpServers(): Promise<readonly RpcMcpServerInfo[]> {\n\t\tconst result = await this.send(\"list_mcp_servers\", {});\n\t\treturn result.servers as readonly RpcMcpServerInfo[];\n\t}\n\n\tasync configureMcpServer(\n\t\tserverId: string,\n\t\tscope: \"user\" | \"project\" | \"local\",\n\t\tconfig: Record<string, unknown>,\n\t): Promise<RpcMcpServerInfo> {\n\t\tconst result = await this.send(\"configure_mcp_server\", { serverId, scope, config });\n\t\treturn result.server as RpcMcpServerInfo;\n\t}\n\n\tasync removeMcpServer(serverId: string, scope: \"user\" | \"project\" | \"local\" = \"project\"): Promise<void> {\n\t\tawait this.send(\"remove_mcp_server\", { serverId, scope });\n\t}\n\n\tasync reconnectMcpServer(serverId: string): Promise<RpcMcpServerInfo> {\n\t\tconst result = await this.send(\"reconnect_mcp_server\", { serverId });\n\t\treturn result.server as RpcMcpServerInfo;\n\t}\n\n\tasync createAttachment(\n\t\tname: string,\n\t\tcontentType: RpcAttachmentInfo[\"contentType\"],\n\t\tdata: string,\n\t): Promise<RpcAttachmentInfo> {\n\t\tconst result = await this.send(\"create_attachment\", { name, contentType, data });\n\t\treturn result.attachment as RpcAttachmentInfo;\n\t}\n\n\tasync respondInteraction(\n\t\trequestId: string,\n\t\tresult: Omit<UserInteractionResult, \"requestId\" | \"toolCallId\">,\n\t): Promise<void> {\n\t\tawait this.send(\"respond_interaction\", { requestId, ...result });\n\t}\n\n\tclose(): void {\n\t\tif (this.closed) return;\n\t\tthis.closed = true;\n\t\tthis.detach();\n\t\tthis.transport.close?.();\n\t\tthis.rejectPending(new Error(\"RPC client is closed.\"));\n\t}\n\n\tprivate send(\n\t\tmethod: \"prompt\",\n\t\tparams: { readonly message: string; readonly attachmentIds?: readonly string[] },\n\t\tid?: string,\n\t): Promise<RpcSuccessResult>;\n\tprivate send(method: \"cancel\", params: { readonly requestId: string }, id?: string): Promise<RpcSuccessResult>;\n\tprivate send(method: \"get_state\", params: Record<string, never>, id?: string): Promise<RpcSuccessResult>;\n\tprivate send(method: RpcMethod, params: Record<string, unknown>, id?: string): Promise<RpcSuccessResult>;\n\tprivate send(method: RpcMethod, params: Record<string, unknown>, id = randomUUID()): Promise<RpcSuccessResult> {\n\t\tif (this.closed) return Promise.reject(new Error(\"RPC client is closed.\"));\n\t\tconst request = { version: RPC_PROTOCOL_VERSION, kind: \"request\", id, method, params } as RpcRequest;\n\t\treturn new Promise<RpcSuccessResult>((resolve, reject) => {\n\t\t\tthis.pending.set(id, { method, resolve, reject });\n\t\t\tthis.transport.writable.write(serializeJsonLine(request), (error) => {\n\t\t\t\tif (!error) return;\n\t\t\t\tthis.pending.delete(id);\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate readonly handleData = (chunk: string | Buffer): void => {\n\t\ttry {\n\t\t\tthis.decoder.push(chunk);\n\t\t} catch (cause) {\n\t\t\tthis.fail(cause instanceof Error ? cause : new Error(String(cause)));\n\t\t}\n\t};\n\n\tprivate readonly handleEnd = (): void => {\n\t\ttry {\n\t\t\tthis.decoder.end();\n\t\t} catch (cause) {\n\t\t\tthis.fail(cause instanceof Error ? cause : new Error(String(cause)));\n\t\t\treturn;\n\t\t}\n\t\tthis.fail(new Error(\"RPC output ended before the client was closed.\"));\n\t};\n\n\tprivate readonly handleError = (error: Error): void => this.fail(error);\n\n\tprivate acceptLine(line: string): void {\n\t\tconst message = parseRpcServerMessage(line);\n\t\tif (message.kind === \"event\") {\n\t\t\tfor (const listener of this.listeners) listener(structuredClone(message));\n\t\t\treturn;\n\t\t}\n\t\tif (!message.ok && message.id === undefined) {\n\t\t\tthis.fail(new Error(`${message.error.code}: ${message.error.message}`));\n\t\t\treturn;\n\t\t}\n\t\tif (message.id === undefined) return;\n\t\tconst pending = this.pending.get(message.id);\n\t\tif (!pending) return;\n\t\tthis.pending.delete(message.id);\n\t\tif (!message.ok) {\n\t\t\tpending.reject(new RpcRemoteError(message.error.code, message.error.message));\n\t\t\treturn;\n\t\t}\n\t\tif (message.result.method !== pending.method) {\n\t\t\tpending.reject(new Error(`RPC response method mismatch: expected ${pending.method}.`));\n\t\t\treturn;\n\t\t}\n\t\tpending.resolve(message.result);\n\t}\n\n\tprivate fail(error: Error): void {\n\t\tif (this.closed) return;\n\t\tthis.closed = true;\n\t\tthis.detach();\n\t\tthis.rejectPending(error);\n\t}\n\n\tprivate rejectPending(error: Error): void {\n\t\tfor (const pending of this.pending.values()) pending.reject(error);\n\t\tthis.pending.clear();\n\t}\n\n\tprivate detach(): void {\n\t\tthis.transport.readable.off(\"data\", this.handleData);\n\t\tthis.transport.readable.off(\"end\", this.handleEnd);\n\t\tthis.transport.readable.off(\"error\", this.handleError);\n\t\tthis.transport.writable.off(\"error\", this.handleError);\n\t\tthis.removeExitListener?.();\n\t}\n}\n"]}
|
package/dist/rpc/dispatcher.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AssistantMessage, ImageContent, Message } from "@di-code/ai";
|
|
2
2
|
import type { CommandRegistry } from "@di-code/builtins";
|
|
3
|
+
import type { UserInteractionInput, UserInteractionResult } from "@di-code/plugin-sdk";
|
|
3
4
|
import type { AgentSessionListener } from "../core/session.ts";
|
|
4
5
|
import type { ProductHost } from "../runtime/product-host.ts";
|
|
5
6
|
import type { SessionHost } from "../runtime/session-host.ts";
|
|
@@ -60,6 +61,7 @@ export declare class RpcDispatcher {
|
|
|
60
61
|
private readonly methods?;
|
|
61
62
|
private readonly onError;
|
|
62
63
|
private readonly approvals;
|
|
64
|
+
private readonly interactions;
|
|
63
65
|
private readonly maxEvents;
|
|
64
66
|
private productState;
|
|
65
67
|
private readonly productHost?;
|
|
@@ -80,11 +82,23 @@ export declare class RpcDispatcher {
|
|
|
80
82
|
private sequence;
|
|
81
83
|
constructor(options: RpcDispatcherOptions);
|
|
82
84
|
subscribe(listener: (message: RpcServerMessage) => void): () => void;
|
|
85
|
+
/** Publishes a versioned projection only to clients that negotiated projection events. */
|
|
86
|
+
emitProjection(input: {
|
|
87
|
+
readonly namespace: string;
|
|
88
|
+
readonly projectionName: string;
|
|
89
|
+
readonly version: number;
|
|
90
|
+
readonly state: unknown;
|
|
91
|
+
readonly requestId?: string;
|
|
92
|
+
}): void;
|
|
83
93
|
dispatch(request: RpcRequest): Promise<RpcResponse>;
|
|
84
94
|
dispose(): Promise<void>;
|
|
85
95
|
private execute;
|
|
86
96
|
/** Waits for the browser to approve a specific tool invocation. */
|
|
87
97
|
requestToolApproval(toolName: string, parameters: unknown, signal?: AbortSignal): Promise<boolean>;
|
|
98
|
+
/** Requests a structured user response through the negotiated interaction channel. */
|
|
99
|
+
requestInteraction(input: Omit<UserInteractionInput, "requestId"> & {
|
|
100
|
+
readonly requestId?: string;
|
|
101
|
+
}, signal?: AbortSignal): Promise<UserInteractionResult>;
|
|
88
102
|
private runOperation;
|
|
89
103
|
private transcript;
|
|
90
104
|
private requireProduct;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/rpc/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/rpc/dispatcher.ts"],"names":[],"mappings":"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"}
|