@astralyn/pi 1.4.2 → 1.4.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.
- package/CHANGELOG.md +18 -0
- package/dist/bundle/chunks/{chunk-FGPSYHTQ.js → chunk-SBVVM3NV.js} +117 -117
- package/dist/bundle/chunks/{chunk-HXKY52DF.js → chunk-VGSZTBVJ.js} +1 -1
- package/dist/bundle/chunks/{virtual-modules-5NSVVTKO.js → virtual-modules-ETYFHSUG.js} +1 -1
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/core/agent-session.d.ts +15 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +1 -8
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/distribution-api.d.ts +1 -1
- package/dist/core/extensions/distribution-api.d.ts.map +1 -1
- package/dist/core/extensions/distribution-api.js.map +1 -1
- package/dist/core/extensions/index.d.ts +2 -2
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +4 -2
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +14 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/keybinding-registry.d.ts +16 -1
- package/dist/core/keybinding-registry.d.ts.map +1 -1
- package/dist/core/keybinding-registry.js +20 -0
- package/dist/core/keybinding-registry.js.map +1 -1
- package/dist/core/keybindings-schema.d.ts.map +1 -1
- package/dist/core/keybindings-schema.js +2 -1
- package/dist/core/keybindings-schema.js.map +1 -1
- package/dist/core/keybindings.d.ts +4 -106
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +0 -13
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +0 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tasks/format.d.ts.map +1 -1
- package/dist/core/tasks/format.js +10 -4
- package/dist/core/tasks/format.js.map +1 -1
- package/dist/core/tasks/limits.d.ts +5 -0
- package/dist/core/tasks/limits.d.ts.map +1 -0
- package/dist/core/tasks/limits.js +5 -0
- package/dist/core/tasks/limits.js.map +1 -0
- package/dist/core/tasks/runtime.d.ts +1 -0
- package/dist/core/tasks/runtime.d.ts.map +1 -1
- package/dist/core/tasks/runtime.js +7 -3
- package/dist/core/tasks/runtime.js.map +1 -1
- package/dist/core/tasks/session.d.ts +1 -1
- package/dist/core/tasks/session.d.ts.map +1 -1
- package/dist/core/tasks/session.js +10 -2
- package/dist/core/tasks/session.js.map +1 -1
- package/dist/core/tasks/types.d.ts +13 -0
- package/dist/core/tasks/types.d.ts.map +1 -1
- package/dist/core/tasks/types.js.map +1 -1
- package/dist/core/tools/bash.d.ts +98 -9
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +308 -11
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/index.d.ts +5 -4
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +3 -11
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/powershell.d.ts +2 -1
- package/dist/core/tools/powershell.d.ts.map +1 -1
- package/dist/core/tools/powershell.js +2 -1
- package/dist/core/tools/powershell.js.map +1 -1
- package/dist/core/tools/renderers/bash.d.ts +1 -1
- package/dist/core/tools/renderers/bash.d.ts.map +1 -1
- package/dist/core/tools/renderers/bash.js.map +1 -1
- package/dist/core/tools/renderers/index.d.ts.map +1 -1
- package/dist/core/tools/renderers/index.js +7 -5
- package/dist/core/tools/renderers/index.js.map +1 -1
- package/dist/core/tools/shell-execution.d.ts +2 -2
- package/dist/core/tools/shell-execution.d.ts.map +1 -1
- package/dist/core/tools/shell-execution.js +0 -21
- package/dist/core/tools/shell-execution.js.map +1 -1
- package/dist/core/tools/shell-operations.d.ts +12 -0
- package/dist/core/tools/shell-operations.d.ts.map +1 -0
- package/dist/core/tools/shell-operations.js +38 -0
- package/dist/core/tools/shell-operations.js.map +1 -0
- package/dist/core/tools/shell-tool.d.ts +8 -64
- package/dist/core/tools/shell-tool.d.ts.map +1 -1
- package/dist/core/tools/shell-tool.js +27 -125
- package/dist/core/tools/shell-tool.js.map +1 -1
- package/dist/extensions/index.d.ts +1 -0
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +5 -0
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/keybindings.d.ts +6 -0
- package/dist/extensions/keybindings.d.ts.map +1 -0
- package/dist/extensions/keybindings.js +6 -0
- package/dist/extensions/keybindings.js.map +1 -0
- package/dist/extensions/provider/store.d.ts +2 -0
- package/dist/extensions/provider/store.d.ts.map +1 -1
- package/dist/extensions/provider/store.js +4 -0
- package/dist/extensions/provider/store.js.map +1 -1
- package/dist/extensions/provider/ui/editor.d.ts +7 -9
- package/dist/extensions/provider/ui/editor.d.ts.map +1 -1
- package/dist/extensions/provider/ui/editor.js +103 -48
- package/dist/extensions/provider/ui/editor.js.map +1 -1
- package/dist/extensions/provider/ui/provider-list.d.ts.map +1 -1
- package/dist/extensions/provider/ui/provider-list.js +13 -19
- package/dist/extensions/provider/ui/provider-list.js.map +1 -1
- package/dist/extensions/run-summary/format.d.ts +2 -0
- package/dist/extensions/run-summary/format.d.ts.map +1 -0
- package/dist/extensions/run-summary/format.js +11 -0
- package/dist/extensions/run-summary/format.js.map +1 -0
- package/dist/extensions/run-summary/index.d.ts +4 -0
- package/dist/extensions/run-summary/index.d.ts.map +1 -0
- package/dist/extensions/run-summary/index.js +48 -0
- package/dist/extensions/run-summary/index.js.map +1 -0
- package/dist/extensions/run-summary/record.d.ts +11 -0
- package/dist/extensions/run-summary/record.d.ts.map +1 -0
- package/dist/extensions/run-summary/record.js +29 -0
- package/dist/extensions/run-summary/record.js.map +1 -0
- package/dist/extensions/tasks/index.d.ts +5 -0
- package/dist/extensions/tasks/index.d.ts.map +1 -0
- package/dist/extensions/tasks/index.js +42 -0
- package/dist/extensions/tasks/index.js.map +1 -0
- package/dist/extensions/tasks/keybindings.d.ts +19 -0
- package/dist/extensions/tasks/keybindings.d.ts.map +1 -0
- package/dist/extensions/tasks/keybindings.js +30 -0
- package/dist/extensions/tasks/keybindings.js.map +1 -0
- package/dist/{core/tools/tasks → extensions/tasks/tool}/actions.d.ts +2 -2
- package/dist/extensions/tasks/tool/actions.d.ts.map +1 -0
- package/dist/{core/tools/tasks → extensions/tasks/tool}/actions.js +4 -4
- package/dist/extensions/tasks/tool/actions.js.map +1 -0
- package/dist/{core/tools/tasks → extensions/tasks/tool}/constants.d.ts +1 -3
- package/dist/extensions/tasks/tool/constants.d.ts.map +1 -0
- package/dist/{core/tools/tasks → extensions/tasks/tool}/constants.js +1 -3
- package/dist/extensions/tasks/tool/constants.js.map +1 -0
- package/dist/extensions/tasks/tool/schema.d.ts.map +1 -0
- package/dist/{core/tools/tasks → extensions/tasks/tool}/schema.js +5 -4
- package/dist/extensions/tasks/tool/schema.js.map +1 -0
- package/dist/{core/tools/tasks → extensions/tasks/tool}/types.d.ts +1 -1
- package/dist/extensions/tasks/tool/types.d.ts.map +1 -0
- package/dist/extensions/tasks/tool/types.js.map +1 -0
- package/dist/extensions/tasks/tool.d.ts +6 -0
- package/dist/extensions/tasks/tool.d.ts.map +1 -0
- package/dist/{core/tools/tasks.js → extensions/tasks/tool.js} +6 -10
- package/dist/extensions/tasks/tool.js.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/completion-render.d.ts +1 -1
- package/dist/extensions/tasks/ui/completion-render.d.ts.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/completion-render.js +2 -2
- package/dist/extensions/tasks/ui/completion-render.js.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/index.d.ts +1 -1
- package/dist/extensions/tasks/ui/index.d.ts.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/index.js +4 -4
- package/dist/extensions/tasks/ui/index.js.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/inspector.d.ts +1 -1
- package/dist/extensions/tasks/ui/inspector.d.ts.map +1 -0
- package/dist/extensions/tasks/ui/inspector.js.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/layout.d.ts +1 -1
- package/dist/extensions/tasks/ui/layout.d.ts.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/layout.js +1 -1
- package/dist/extensions/tasks/ui/layout.js.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/list.d.ts +1 -1
- package/dist/extensions/tasks/ui/list.d.ts.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/list.js +1 -1
- package/dist/extensions/tasks/ui/list.js.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/manager.d.ts +2 -1
- package/dist/extensions/tasks/ui/manager.d.ts.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/manager.js +2 -1
- package/dist/extensions/tasks/ui/manager.js.map +1 -0
- package/dist/extensions/tasks/ui/model.d.ts.map +1 -0
- package/dist/extensions/tasks/ui/model.js.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/render.d.ts +3 -3
- package/dist/extensions/tasks/ui/render.d.ts.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/render.js +2 -2
- package/dist/extensions/tasks/ui/render.js.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/task-view.d.ts +1 -1
- package/dist/extensions/tasks/ui/task-view.d.ts.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/task-view.js +1 -1
- package/dist/extensions/tasks/ui/task-view.js.map +1 -0
- package/dist/extensions/tasks/ui/text.d.ts.map +1 -0
- package/dist/extensions/tasks/ui/text.js.map +1 -0
- package/dist/extensions/tasks/ui/tree.d.ts +7 -0
- package/dist/extensions/tasks/ui/tree.d.ts.map +1 -0
- package/dist/{modes/interactive/tasks/host-hooks.js → extensions/tasks/ui/tree.js} +1 -18
- package/dist/extensions/tasks/ui/tree.js.map +1 -0
- package/dist/extensions/tasks/ui/viewport.d.ts.map +1 -0
- package/dist/extensions/tasks/ui/viewport.js.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/views.d.ts +1 -1
- package/dist/extensions/tasks/ui/views.d.ts.map +1 -0
- package/dist/{modes/interactive/tasks → extensions/tasks/ui}/views.js +1 -1
- package/dist/extensions/tasks/ui/views.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +3 -2
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +65 -18
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +1 -3
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +16 -4
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +73 -33
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +3 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/docs/bundled/README.md +2 -4
- package/docs/bundled/extensions/provider.md +9 -7
- package/docs/bundled/extensions/run-summary.md +17 -0
- package/docs/bundled/tasks.md +3 -3
- package/docs/docs.json +4 -0
- package/docs/extensions.md +10 -3
- package/docs/settings.md +1 -1
- package/docs/tui.md +13 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/schemas/keybindings.schema.json +84 -52
- package/dist/core/tools/tasks/actions.d.ts.map +0 -1
- package/dist/core/tools/tasks/actions.js.map +0 -1
- package/dist/core/tools/tasks/constants.d.ts.map +0 -1
- package/dist/core/tools/tasks/constants.js.map +0 -1
- package/dist/core/tools/tasks/schema.d.ts.map +0 -1
- package/dist/core/tools/tasks/schema.js.map +0 -1
- package/dist/core/tools/tasks/types.d.ts.map +0 -1
- package/dist/core/tools/tasks/types.js.map +0 -1
- package/dist/core/tools/tasks.d.ts +0 -14
- package/dist/core/tools/tasks.d.ts.map +0 -1
- package/dist/core/tools/tasks.js.map +0 -1
- package/dist/modes/interactive/tasks/completion-render.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/completion-render.js.map +0 -1
- package/dist/modes/interactive/tasks/host-hooks.d.ts +0 -14
- package/dist/modes/interactive/tasks/host-hooks.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/host-hooks.js.map +0 -1
- package/dist/modes/interactive/tasks/index.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/index.js.map +0 -1
- package/dist/modes/interactive/tasks/inspector.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/inspector.js.map +0 -1
- package/dist/modes/interactive/tasks/layout.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/layout.js.map +0 -1
- package/dist/modes/interactive/tasks/list.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/list.js.map +0 -1
- package/dist/modes/interactive/tasks/manager.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/manager.js.map +0 -1
- package/dist/modes/interactive/tasks/model.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/model.js.map +0 -1
- package/dist/modes/interactive/tasks/render.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/render.js.map +0 -1
- package/dist/modes/interactive/tasks/task-view.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/task-view.js.map +0 -1
- package/dist/modes/interactive/tasks/text.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/text.js.map +0 -1
- package/dist/modes/interactive/tasks/viewport.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/viewport.js.map +0 -1
- package/dist/modes/interactive/tasks/views.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/views.js.map +0 -1
- /package/dist/{core/tools/tasks → extensions/tasks/tool}/schema.d.ts +0 -0
- /package/dist/{core/tools/tasks → extensions/tasks/tool}/types.js +0 -0
- /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/inspector.js +0 -0
- /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/model.d.ts +0 -0
- /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/model.js +0 -0
- /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/text.d.ts +0 -0
- /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/text.js +0 -0
- /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/viewport.d.ts +0 -0
- /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/viewport.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-message.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/custom-message.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAsB,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAGjH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"custom-message.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/custom-message.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TextContent } from \"@earendil-works/pi-ai\";\nimport type { Component } from \"@earendil-works/pi-tui\";\nimport { Box, Container, Markdown, type MarkdownTheme, MouseRegion, Spacer, Text } from \"@earendil-works/pi-tui\";\nimport type { MessageRenderer } from \"../../../core/extensions/types.ts\";\nimport type { CustomMessage } from \"../../../core/messages.ts\";\nimport { getMarkdownTheme, theme } from \"../theme/theme.ts\";\nimport { isPlainPrimaryClick } from \"./primary-click.ts\";\n\n/**\n * Component that renders a custom message entry from extensions.\n * Uses distinct styling to differentiate from user messages.\n */\nexport class CustomMessageComponent extends Container {\n\tprivate message: CustomMessage<unknown>;\n\tprivate customRenderer?: MessageRenderer;\n\tprivate box: Box;\n\tprivate customComponent?: Component;\n\tprivate markdownTheme: MarkdownTheme;\n\tprivate _expanded = false;\n\tprivate outputPad: number;\n\n\tconstructor(\n\t\tmessage: CustomMessage<unknown>,\n\t\tcustomRenderer?: MessageRenderer,\n\t\tmarkdownTheme: MarkdownTheme = getMarkdownTheme(),\n\t\toutputPad = 1,\n\t) {\n\t\tsuper();\n\t\tthis.message = message;\n\t\tthis.customRenderer = customRenderer;\n\t\tthis.markdownTheme = markdownTheme;\n\t\tthis.outputPad = outputPad;\n\n\t\tthis.addChild(new Spacer(1));\n\n\t\t// Create box with purple background (used for default rendering)\n\t\tthis.box = new Box(1, 1, (t) => theme.bg(\"customMessageBg\", t));\n\n\t\tthis.rebuild();\n\t}\n\n\tsetExpanded(expanded: boolean): void {\n\t\tif (this._expanded !== expanded) {\n\t\t\tthis._expanded = expanded;\n\t\t\tthis.rebuild();\n\t\t}\n\t}\n\n\tsetOutputPad(outputPad: number): void {\n\t\tif (this.outputPad !== outputPad) {\n\t\t\tthis.outputPad = outputPad;\n\t\t\tthis.rebuild();\n\t\t}\n\t}\n\n\toverride invalidate(): void {\n\t\tsuper.invalidate();\n\t\tthis.rebuild();\n\t}\n\n\tprivate rebuild(): void {\n\t\t// Remove previous content component\n\t\tif (this.customComponent) {\n\t\t\tthis.removeChild(this.customComponent);\n\t\t\tthis.customComponent = undefined;\n\t\t}\n\t\tthis.removeChild(this.box);\n\n\t\t// Try custom renderer first - it handles its own styling\n\t\tif (this.customRenderer) {\n\t\t\ttry {\n\t\t\t\tconst component = this.customRenderer(\n\t\t\t\t\tthis.message,\n\t\t\t\t\t{ expanded: this._expanded, outputPad: this.outputPad },\n\t\t\t\t\ttheme,\n\t\t\t\t);\n\t\t\t\tif (component) {\n\t\t\t\t\t// Custom renderer provides its own styled component\n\t\t\t\t\tthis.customComponent = new MouseRegion(component, (event) => {\n\t\t\t\t\t\t// MouseRegion already delegates handled child events before this callback.\n\t\t\t\t\t\tif (!isPlainPrimaryClick(event)) return undefined;\n\t\t\t\t\t\tthis.setExpanded(!this._expanded);\n\t\t\t\t\t\treturn { handled: true };\n\t\t\t\t\t});\n\t\t\t\t\tthis.addChild(this.customComponent);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Fall through to default rendering\n\t\t\t}\n\t\t}\n\n\t\t// Default rendering uses our box\n\t\tthis.addChild(this.box);\n\t\tthis.box.clear();\n\t\tthis.box.setPaddingX(this.outputPad);\n\n\t\t// Default rendering: label + content\n\t\tconst label = theme.fg(\"customMessageLabel\", `\\x1b[1m[${this.message.customType}]\\x1b[22m`);\n\t\tthis.box.addChild(new Text(label, 0, 0));\n\t\tthis.box.addChild(new Spacer(1));\n\n\t\t// Extract text content\n\t\tlet text: string;\n\t\tif (typeof this.message.content === \"string\") {\n\t\t\ttext = this.message.content;\n\t\t} else {\n\t\t\ttext = this.message.content\n\t\t\t\t.filter((c): c is TextContent => c.type === \"text\")\n\t\t\t\t.map((c) => c.text)\n\t\t\t\t.join(\"\\n\");\n\t\t}\n\n\t\tthis.box.addChild(\n\t\t\tnew Markdown(text, 0, 0, this.markdownTheme, {\n\t\t\t\tcolor: (text: string) => theme.fg(\"customMessageText\", text),\n\t\t\t}),\n\t\t);\n\t}\n}\n"]}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive mode for the coding agent.
|
|
3
|
+
* Handles TUI rendering and user interaction, delegating business logic to AgentSession.
|
|
4
|
+
*/
|
|
1
5
|
import { type ImageContent } from "@earendil-works/pi-ai/compat";
|
|
2
6
|
import { type Terminal } from "@earendil-works/pi-tui";
|
|
3
7
|
import { type AgentSessionRuntime } from "../../core/agent-session-runtime.ts";
|
|
@@ -36,7 +40,6 @@ export interface InteractiveModeOptions {
|
|
|
36
40
|
terminal?: Terminal;
|
|
37
41
|
}
|
|
38
42
|
export declare class InteractiveMode {
|
|
39
|
-
private tasksUI?;
|
|
40
43
|
private runtimeHost;
|
|
41
44
|
private renderer;
|
|
42
45
|
private ui;
|
|
@@ -72,8 +75,7 @@ export declare class InteractiveMode {
|
|
|
72
75
|
private workingVisible;
|
|
73
76
|
private workingIndicatorOptions;
|
|
74
77
|
private readonly defaultWorkingMessage;
|
|
75
|
-
private
|
|
76
|
-
private hiddenThinkingLabel;
|
|
78
|
+
private activeThinkingLabel;
|
|
77
79
|
private lastSigintTime;
|
|
78
80
|
private lastEscapeTime;
|
|
79
81
|
private changelogMarkdown;
|
|
@@ -109,6 +111,9 @@ export declare class InteractiveMode {
|
|
|
109
111
|
private installChangeWarningShown;
|
|
110
112
|
private extensionDialogs;
|
|
111
113
|
private extensionTerminalInputSubscriptions;
|
|
114
|
+
private extensionTranscriptNotes;
|
|
115
|
+
private hasRenderedTranscript;
|
|
116
|
+
private transcriptNotesRefreshScheduled;
|
|
112
117
|
private extensionWidgetsAbove;
|
|
113
118
|
private extensionWidgetsBelow;
|
|
114
119
|
private widgetContainerAbove;
|
|
@@ -316,6 +321,11 @@ export declare class InteractiveMode {
|
|
|
316
321
|
* we update the previous status line instead of appending new ones to avoid log spam.
|
|
317
322
|
*/
|
|
318
323
|
private showStatus;
|
|
324
|
+
private addExtensionTranscriptNote;
|
|
325
|
+
/** Coalesce restored historical notes into one rebuild; initial rendering will pick them up itself. */
|
|
326
|
+
private scheduleTranscriptNotesRefresh;
|
|
327
|
+
private rebuildTranscriptWithNotes;
|
|
328
|
+
private addTranscriptNoteToChat;
|
|
319
329
|
private addCustomEntryToChat;
|
|
320
330
|
private addMessageToChat;
|
|
321
331
|
private renderSessionItems;
|
|
@@ -341,7 +351,9 @@ export declare class InteractiveMode {
|
|
|
341
351
|
*/
|
|
342
352
|
private maybeShowCacheMissNotice;
|
|
343
353
|
private addCacheMissNotice;
|
|
344
|
-
renderInitialMessages(
|
|
354
|
+
renderInitialMessages(options?: {
|
|
355
|
+
populateHistory?: boolean;
|
|
356
|
+
}): void;
|
|
345
357
|
private renderProjectTrustWarningIfNeeded;
|
|
346
358
|
getUserInput(): Promise<string>;
|
|
347
359
|
private rebuildChatFromMessages;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { confirmStopBranchTasks, hotkeysTaskSection } from "./tasks/host-hooks.js";
|
|
2
|
-
import { bindTasksUI } from "./tasks/index.js";
|
|
3
1
|
/**
|
|
4
2
|
* Interactive mode for the coding agent.
|
|
5
3
|
* Handles TUI rendering and user interaction, delegating business logic to AgentSession.
|
|
@@ -22,6 +20,7 @@ import { findExtensionStackMatches, recordCrash, takeUnnotifiedCrash } from "../
|
|
|
22
20
|
import { DEFAULT_THINKING_LEVEL, THINKING_LEVEL_OPTIONS } from "../../core/defaults.js";
|
|
23
21
|
import { FooterDataProvider } from "../../core/footer-data-provider.js";
|
|
24
22
|
import { configureHttpDispatcher, formatHttpIdleTimeoutMs } from "../../core/http-dispatcher.js";
|
|
23
|
+
import { getRegisteredKeybindingHelpSections } from "../../core/keybinding-registry.js";
|
|
25
24
|
import { KeybindingsManager } from "../../core/keybindings.js";
|
|
26
25
|
import { createCompactionSummaryMessage, createCustomMessage } from "../../core/messages.js";
|
|
27
26
|
import { defaultModelPerProvider, findExactModelReferenceMatch, resolveModelScopeFromModels, } from "../../core/model-resolver.js";
|
|
@@ -50,7 +49,7 @@ import { checkForNewPiVersion } from "../../utils/version-check.js";
|
|
|
50
49
|
import { reportBug } from "./bug-report.js";
|
|
51
50
|
import { createChatViewport } from "./chat-viewport.js";
|
|
52
51
|
import { ArminComponent } from "./components/armin.js";
|
|
53
|
-
import { AssistantMessageComponent } from "./components/assistant-message.js";
|
|
52
|
+
import { AssistantMessageComponent, DEFAULT_ACTIVE_THINKING_LABEL } from "./components/assistant-message.js";
|
|
54
53
|
import { BashExecutionComponent } from "./components/bash-execution.js";
|
|
55
54
|
import { BranchSummaryMessageComponent } from "./components/branch-summary-message.js";
|
|
56
55
|
import { CompactionSummaryMessageComponent } from "./components/compaction-summary-message.js";
|
|
@@ -123,6 +122,9 @@ class BuiltInHeader extends ExpandableText {
|
|
|
123
122
|
return { handled: true };
|
|
124
123
|
}
|
|
125
124
|
}
|
|
125
|
+
function isTranscriptNote(item) {
|
|
126
|
+
return "type" in item && item.type === "transcript_note";
|
|
127
|
+
}
|
|
126
128
|
function isCustomSessionEntry(item) {
|
|
127
129
|
return "type" in item && item.type === "custom";
|
|
128
130
|
}
|
|
@@ -259,8 +261,7 @@ export class InteractiveMode {
|
|
|
259
261
|
this.workingVisible = true;
|
|
260
262
|
this.workingIndicatorOptions = undefined;
|
|
261
263
|
this.defaultWorkingMessage = "Working";
|
|
262
|
-
this.
|
|
263
|
-
this.hiddenThinkingLabel = this.defaultHiddenThinkingLabel;
|
|
264
|
+
this.activeThinkingLabel = DEFAULT_ACTIVE_THINKING_LABEL;
|
|
264
265
|
this.lastSigintTime = 0;
|
|
265
266
|
this.lastEscapeTime = 0;
|
|
266
267
|
this.changelogMarkdown = undefined;
|
|
@@ -321,6 +322,10 @@ export class InteractiveMode {
|
|
|
321
322
|
// The last entry is visible; see pushExtensionDialog().
|
|
322
323
|
this.extensionDialogs = [];
|
|
323
324
|
this.extensionTerminalInputSubscriptions = new Set();
|
|
325
|
+
// Ephemeral extension notes anchored to session entries and rebuilt with the transcript.
|
|
326
|
+
this.extensionTranscriptNotes = new Map();
|
|
327
|
+
this.hasRenderedTranscript = false;
|
|
328
|
+
this.transcriptNotesRefreshScheduled = false;
|
|
324
329
|
// Extension widgets (components rendered above/below the editor)
|
|
325
330
|
this.extensionWidgetsAbove = new Map();
|
|
326
331
|
this.extensionWidgetsBelow = new Map();
|
|
@@ -345,7 +350,6 @@ export class InteractiveMode {
|
|
|
345
350
|
this.options = { ...options, tuiMode };
|
|
346
351
|
this.autoTrustOnReloadCwd = options.autoTrustOnReloadCwd;
|
|
347
352
|
this.runtimeHost.setBeforeSessionInvalidate(() => {
|
|
348
|
-
this.tasksUI?.dispose();
|
|
349
353
|
this.resetExtensionUI();
|
|
350
354
|
});
|
|
351
355
|
this.runtimeHost.setRebindSession(async () => {
|
|
@@ -1456,7 +1460,6 @@ export class InteractiveMode {
|
|
|
1456
1460
|
* Initialize the extension system with TUI-based UI context.
|
|
1457
1461
|
*/
|
|
1458
1462
|
async bindCurrentSessionExtensions() {
|
|
1459
|
-
this.tasksUI?.dispose();
|
|
1460
1463
|
const uiContext = this.createExtensionUIContext();
|
|
1461
1464
|
await this.session.bindExtensions({
|
|
1462
1465
|
uiContext,
|
|
@@ -1525,7 +1528,6 @@ export class InteractiveMode {
|
|
|
1525
1528
|
this.showExtensionError(error.extensionPath, error.error, error.stack);
|
|
1526
1529
|
},
|
|
1527
1530
|
});
|
|
1528
|
-
this.tasksUI = bindTasksUI({ tasks: this.session.tasks, ui: uiContext });
|
|
1529
1531
|
setRegisteredThemes(this.session.resourceLoader.getThemes().themes);
|
|
1530
1532
|
this.setupAutocompleteProvider();
|
|
1531
1533
|
const extensionRunner = this.session.extensionRunner;
|
|
@@ -1787,14 +1789,14 @@ export class InteractiveMode {
|
|
|
1787
1789
|
this.ui.requestRender();
|
|
1788
1790
|
}
|
|
1789
1791
|
setHiddenThinkingLabel(label) {
|
|
1790
|
-
this.
|
|
1792
|
+
this.activeThinkingLabel = label ?? DEFAULT_ACTIVE_THINKING_LABEL;
|
|
1791
1793
|
for (const child of this.chatContainer.children) {
|
|
1792
1794
|
if (child instanceof AssistantMessageComponent) {
|
|
1793
|
-
child.setHiddenThinkingLabel(this.
|
|
1795
|
+
child.setHiddenThinkingLabel(this.activeThinkingLabel);
|
|
1794
1796
|
}
|
|
1795
1797
|
}
|
|
1796
1798
|
if (this.streamingComponent) {
|
|
1797
|
-
this.streamingComponent.setHiddenThinkingLabel(this.
|
|
1799
|
+
this.streamingComponent.setHiddenThinkingLabel(this.activeThinkingLabel);
|
|
1798
1800
|
}
|
|
1799
1801
|
this.ui.requestRender();
|
|
1800
1802
|
}
|
|
@@ -1848,6 +1850,9 @@ export class InteractiveMode {
|
|
|
1848
1850
|
}
|
|
1849
1851
|
resetExtensionUI() {
|
|
1850
1852
|
this.editorHost.clear();
|
|
1853
|
+
this.extensionTranscriptNotes.clear();
|
|
1854
|
+
this.hasRenderedTranscript = false;
|
|
1855
|
+
this.transcriptNotesRefreshScheduled = false;
|
|
1851
1856
|
if (this.extensionDialogs.length > 0) {
|
|
1852
1857
|
for (const dialog of this.extensionDialogs) {
|
|
1853
1858
|
dialog.component.dispose?.();
|
|
@@ -2019,6 +2024,7 @@ export class InteractiveMode {
|
|
|
2019
2024
|
setWorkingIndicator: (options) => this.setWorkingIndicator(options),
|
|
2020
2025
|
setHiddenThinkingLabel: (label) => this.setHiddenThinkingLabel(label),
|
|
2021
2026
|
setWidget: (key, content, options) => this.setExtensionWidget(key, content, options),
|
|
2027
|
+
addTranscriptNote: (key, text, options) => this.addExtensionTranscriptNote(key, text, options),
|
|
2022
2028
|
setFooter: (factory) => this.setExtensionFooter(factory),
|
|
2023
2029
|
setHeader: (factory) => this.setExtensionHeader(factory),
|
|
2024
2030
|
setTitle: (title) => this.ui.terminal.setTitle(title),
|
|
@@ -2463,11 +2469,6 @@ export class InteractiveMode {
|
|
|
2463
2469
|
if (this.editorHost.intercept(text, "steer"))
|
|
2464
2470
|
return;
|
|
2465
2471
|
// Handle commands
|
|
2466
|
-
if (text === "/tasks") {
|
|
2467
|
-
this.editor.setText("");
|
|
2468
|
-
await this.tasksUI?.open();
|
|
2469
|
-
return;
|
|
2470
|
-
}
|
|
2471
2472
|
if (text === "/settings") {
|
|
2472
2473
|
this.showSettingsSelector();
|
|
2473
2474
|
this.editor.setText("");
|
|
@@ -2758,7 +2759,7 @@ export class InteractiveMode {
|
|
|
2758
2759
|
this.ui.requestRender();
|
|
2759
2760
|
}
|
|
2760
2761
|
else if (event.message.role === "assistant") {
|
|
2761
|
-
this.streamingComponent = new AssistantMessageComponent(undefined, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.
|
|
2762
|
+
this.streamingComponent = new AssistantMessageComponent(undefined, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.activeThinkingLabel, this.outputPad, this.getMarkdownTransformers());
|
|
2762
2763
|
this.streamingMessage = event.message;
|
|
2763
2764
|
this.chatContainer.addChild(this.streamingComponent);
|
|
2764
2765
|
this.streamingComponent.updateContent(this.streamingMessage, true);
|
|
@@ -3054,6 +3055,41 @@ export class InteractiveMode {
|
|
|
3054
3055
|
this.lastStatusText = text;
|
|
3055
3056
|
this.ui.requestRender();
|
|
3056
3057
|
}
|
|
3058
|
+
addExtensionTranscriptNote(key, text, options) {
|
|
3059
|
+
if (this.extensionTranscriptNotes.has(key))
|
|
3060
|
+
return;
|
|
3061
|
+
const note = { key, text, afterEntryId: options.afterEntryId };
|
|
3062
|
+
this.extensionTranscriptNotes.set(key, note);
|
|
3063
|
+
if (this.hasRenderedTranscript && options.afterEntryId === this.sessionManager.getLeafId()) {
|
|
3064
|
+
this.addTranscriptNoteToChat({ type: "transcript_note", ...note });
|
|
3065
|
+
this.ui.requestRender();
|
|
3066
|
+
return;
|
|
3067
|
+
}
|
|
3068
|
+
this.scheduleTranscriptNotesRefresh();
|
|
3069
|
+
}
|
|
3070
|
+
/** Coalesce restored historical notes into one rebuild; initial rendering will pick them up itself. */
|
|
3071
|
+
scheduleTranscriptNotesRefresh() {
|
|
3072
|
+
if (!this.hasRenderedTranscript || this.transcriptNotesRefreshScheduled || !this.session.isIdle)
|
|
3073
|
+
return;
|
|
3074
|
+
this.transcriptNotesRefreshScheduled = true;
|
|
3075
|
+
const session = this.session;
|
|
3076
|
+
queueMicrotask(() => {
|
|
3077
|
+
if (this.session !== session || !this.transcriptNotesRefreshScheduled)
|
|
3078
|
+
return;
|
|
3079
|
+
this.transcriptNotesRefreshScheduled = false;
|
|
3080
|
+
if (!session.isIdle)
|
|
3081
|
+
return;
|
|
3082
|
+
this.rebuildTranscriptWithNotes();
|
|
3083
|
+
});
|
|
3084
|
+
}
|
|
3085
|
+
rebuildTranscriptWithNotes() {
|
|
3086
|
+
this.chatContainer.clear();
|
|
3087
|
+
this.renderInitialMessages({ populateHistory: false });
|
|
3088
|
+
}
|
|
3089
|
+
addTranscriptNoteToChat(note) {
|
|
3090
|
+
this.chatContainer.addChild(new Spacer(1));
|
|
3091
|
+
this.chatContainer.addChild(new ThemedText(() => theme.fg("dim", note.text), this.outputPad, 0));
|
|
3092
|
+
}
|
|
3057
3093
|
addCustomEntryToChat(entry) {
|
|
3058
3094
|
const renderer = this.session.extensionRunner.getEntryRenderer(entry.customType);
|
|
3059
3095
|
if (!renderer) {
|
|
@@ -3139,7 +3175,7 @@ export class InteractiveMode {
|
|
|
3139
3175
|
break;
|
|
3140
3176
|
}
|
|
3141
3177
|
case "assistant": {
|
|
3142
|
-
const assistantComponent = new AssistantMessageComponent(message, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.
|
|
3178
|
+
const assistantComponent = new AssistantMessageComponent(message, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.activeThinkingLabel, this.outputPad, this.getMarkdownTransformers());
|
|
3143
3179
|
this.chatContainer.addChild(assistantComponent);
|
|
3144
3180
|
break;
|
|
3145
3181
|
}
|
|
@@ -3165,6 +3201,10 @@ export class InteractiveMode {
|
|
|
3165
3201
|
this.updateEditorBorderColor();
|
|
3166
3202
|
}
|
|
3167
3203
|
for (const item of items) {
|
|
3204
|
+
if (isTranscriptNote(item)) {
|
|
3205
|
+
this.addTranscriptNoteToChat(item);
|
|
3206
|
+
continue;
|
|
3207
|
+
}
|
|
3168
3208
|
if (isCustomSessionEntry(item)) {
|
|
3169
3209
|
this.addCustomEntryToChat(item);
|
|
3170
3210
|
continue;
|
|
@@ -3245,16 +3285,21 @@ export class InteractiveMode {
|
|
|
3245
3285
|
if (this.renderer instanceof TuiAltScreen)
|
|
3246
3286
|
this.renderer.resetTextSelection();
|
|
3247
3287
|
const items = entries.flatMap((entry) => {
|
|
3288
|
+
const notes = [...this.extensionTranscriptNotes.values()]
|
|
3289
|
+
.filter((note) => note.afterEntryId === entry.id)
|
|
3290
|
+
.map((note) => ({ type: "transcript_note", ...note }));
|
|
3248
3291
|
if (entry.type === "custom" || (entry.type === "usage" && entry.kind === "cache_warm")) {
|
|
3249
|
-
return [entry];
|
|
3292
|
+
return [entry, ...notes];
|
|
3250
3293
|
}
|
|
3251
3294
|
const messages = sessionEntryToContextMessages(entry);
|
|
3252
3295
|
if ((entry.type === "compaction" || entry.type === "branch_summary") && entry.usage && messages.length > 0) {
|
|
3253
|
-
return [...messages, { type: "compaction_cost", kind: entry.type, usage: entry.usage }];
|
|
3296
|
+
return [...messages, { type: "compaction_cost", kind: entry.type, usage: entry.usage }, ...notes];
|
|
3254
3297
|
}
|
|
3255
|
-
return messages;
|
|
3298
|
+
return [...messages, ...notes];
|
|
3256
3299
|
});
|
|
3257
3300
|
this.renderSessionItems(items, options);
|
|
3301
|
+
this.hasRenderedTranscript = true;
|
|
3302
|
+
this.transcriptNotesRefreshScheduled = false;
|
|
3258
3303
|
}
|
|
3259
3304
|
addCacheWarmingUsage(entry) {
|
|
3260
3305
|
if (!this.settingsManager.getShowCacheMissNotices())
|
|
@@ -3342,11 +3387,11 @@ export class InteractiveMode {
|
|
|
3342
3387
|
this.chatContainer.addChild(new Spacer(1));
|
|
3343
3388
|
this.chatContainer.addChild(new ThemedText(() => theme.fg("warning", `${label}: ${reBilled}`), 1, 0));
|
|
3344
3389
|
}
|
|
3345
|
-
renderInitialMessages() {
|
|
3390
|
+
renderInitialMessages(options = {}) {
|
|
3346
3391
|
const entries = this.sessionManager.buildContextEntries();
|
|
3347
3392
|
this.renderSessionEntries(entries, {
|
|
3348
3393
|
updateFooter: true,
|
|
3349
|
-
populateHistory: true,
|
|
3394
|
+
populateHistory: options.populateHistory ?? true,
|
|
3350
3395
|
});
|
|
3351
3396
|
this.renderProjectTrustWarningIfNeeded();
|
|
3352
3397
|
// Show compaction info if session was compacted
|
|
@@ -3403,7 +3448,6 @@ export class InteractiveMode {
|
|
|
3403
3448
|
if (this.isShuttingDown)
|
|
3404
3449
|
return;
|
|
3405
3450
|
this.isShuttingDown = true;
|
|
3406
|
-
this.tasksUI?.dispose();
|
|
3407
3451
|
this.session.tasks.close();
|
|
3408
3452
|
// Keep signal handlers registered until terminal cleanup has completed.
|
|
3409
3453
|
// `signal-exit` checks the listener list during the same SIGTERM/SIGHUP
|
|
@@ -4586,11 +4630,6 @@ export class InteractiveMode {
|
|
|
4586
4630
|
}
|
|
4587
4631
|
// Ask about summarization
|
|
4588
4632
|
done(); // Close selector first
|
|
4589
|
-
const stopped = this.session.tasksStoppedByTreeNavigation(entryId);
|
|
4590
|
-
if (!(await confirmStopBranchTasks(stopped, (title, message) => this.showExtensionConfirm(title, message)))) {
|
|
4591
|
-
this.showTreeSelector(entryId);
|
|
4592
|
-
return;
|
|
4593
|
-
}
|
|
4594
4633
|
// Loop until user makes a complete choice or cancels to tree
|
|
4595
4634
|
let wantsSummary = false;
|
|
4596
4635
|
let customInstructions;
|
|
@@ -5342,9 +5381,7 @@ export class InteractiveMode {
|
|
|
5342
5381
|
chatRestoredBeforeSessionStart = true;
|
|
5343
5382
|
};
|
|
5344
5383
|
try {
|
|
5345
|
-
this.tasksUI?.dispose();
|
|
5346
5384
|
await this.session.reload({ beforeSessionStart: restoreChatBeforeSessionStart });
|
|
5347
|
-
this.tasksUI = bindTasksUI({ tasks: this.session.tasks, ui: this.createExtensionUIContext() });
|
|
5348
5385
|
restoreChatBeforeSessionStart();
|
|
5349
5386
|
this.keybindings.reload();
|
|
5350
5387
|
const activeHeader = this.customHeader ?? this.builtInHeader;
|
|
@@ -5726,8 +5763,11 @@ export class InteractiveMode {
|
|
|
5726
5763
|
| \`!\` | Run bash command |
|
|
5727
5764
|
| \`!!\` | Run bash command (excluded from context) |
|
|
5728
5765
|
`;
|
|
5729
|
-
|
|
5730
|
-
|
|
5766
|
+
for (const section of getRegisteredKeybindingHelpSections()) {
|
|
5767
|
+
hotkeys += `\n**${section.title}**\n| Key | Action |\n|-----|--------|\n`;
|
|
5768
|
+
for (const row of section.rows)
|
|
5769
|
+
hotkeys += `| \`${this.getEditorKeyDisplay(row.action)}\` | ${row.description} |\n`;
|
|
5770
|
+
}
|
|
5731
5771
|
// Add extension-registered shortcuts
|
|
5732
5772
|
const extensionRunner = this.session.extensionRunner;
|
|
5733
5773
|
const shortcuts = extensionRunner.getShortcuts(this.keybindings.getEffectiveConfig());
|