pi-ui-extend 0.1.6 → 0.1.9
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 +34 -0
- package/bin/pix.mjs +4 -4
- package/dist/app/app.js +38 -38
- package/dist/app/{cli.d.ts → cli/cli.d.ts} +1 -1
- package/dist/app/{cli.js → cli/cli.js} +1 -1
- package/dist/app/{install.js → cli/install.js} +2 -2
- package/dist/app/{command-controller.d.ts → commands/command-controller.d.ts} +1 -1
- package/dist/app/{command-host.d.ts → commands/command-host.d.ts} +3 -3
- package/dist/app/{command-model-actions.d.ts → commands/command-model-actions.d.ts} +1 -1
- package/dist/app/{command-model-actions.js → commands/command-model-actions.js} +2 -2
- package/dist/app/{command-navigation-actions.d.ts → commands/command-navigation-actions.d.ts} +1 -1
- package/dist/app/{command-navigation-actions.js → commands/command-navigation-actions.js} +5 -5
- package/dist/app/{command-registry.d.ts → commands/command-registry.d.ts} +1 -1
- package/dist/app/{command-runtime.js → commands/command-runtime.js} +1 -1
- package/dist/app/{command-session-actions.js → commands/command-session-actions.js} +3 -3
- package/dist/app/{shell-controller.d.ts → commands/shell-controller.d.ts} +1 -1
- package/dist/app/{shell-controller.js → commands/shell-controller.js} +1 -1
- package/dist/app/{slash-commands.d.ts → commands/slash-commands.d.ts} +2 -2
- package/dist/app/{slash-commands.js → commands/slash-commands.js} +1 -1
- package/dist/app/{extension-actions-controller.d.ts → extensions/extension-actions-controller.d.ts} +1 -1
- package/dist/app/{extension-actions-controller.js → extensions/extension-actions-controller.js} +1 -1
- package/dist/app/{extension-ui-controller.d.ts → extensions/extension-ui-controller.d.ts} +3 -3
- package/dist/app/{extension-ui-controller.js → extensions/extension-ui-controller.js} +4 -3
- package/dist/app/{input-action-controller.d.ts → input/input-action-controller.d.ts} +7 -7
- package/dist/app/{input-action-controller.js → input/input-action-controller.js} +3 -3
- package/dist/app/{input-controller.d.ts → input/input-controller.d.ts} +3 -3
- package/dist/app/{input-controller.js → input/input-controller.js} +1 -1
- package/dist/app/{input-paste-handler.d.ts → input/input-paste-handler.d.ts} +1 -1
- package/dist/app/{input-paste-handler.js → input/input-paste-handler.js} +3 -3
- package/dist/app/{native-modifiers.js → input/native-modifiers.js} +2 -2
- package/dist/app/{prompt-enhancer-controller.d.ts → input/prompt-enhancer-controller.d.ts} +5 -5
- package/dist/app/{prompt-enhancer-controller.js → input/prompt-enhancer-controller.js} +3 -3
- package/dist/app/{voice-controller.d.ts → input/voice-controller.d.ts} +1 -1
- package/dist/app/{voice-controller.js → input/voice-controller.js} +2 -2
- package/dist/app/{model-ref.d.ts → model/model-ref.d.ts} +1 -1
- package/dist/app/{model-ref.js → model/model-ref.js} +1 -1
- package/dist/app/{model-usage-controller.js → model/model-usage-controller.js} +1 -1
- package/dist/app/{model-usage-status.d.ts → model/model-usage-status.d.ts} +1 -1
- package/dist/app/{model-usage-status.js → model/model-usage-status.js} +1 -1
- package/dist/app/{menu-items-controller.d.ts → popup/menu-items-controller.d.ts} +4 -4
- package/dist/app/{menu-items-controller.js → popup/menu-items-controller.js} +5 -5
- package/dist/app/{popup-action-controller.d.ts → popup/popup-action-controller.d.ts} +4 -4
- package/dist/app/{popup-action-controller.js → popup/popup-action-controller.js} +2 -2
- package/dist/app/{popup-menu-controller.d.ts → popup/popup-menu-controller.d.ts} +4 -4
- package/dist/app/{popup-menu-controller.js → popup/popup-menu-controller.js} +7 -7
- package/dist/app/{conversation-entry-renderer.d.ts → rendering/conversation-entry-renderer.d.ts} +3 -3
- package/dist/app/{conversation-entry-renderer.js → rendering/conversation-entry-renderer.js} +3 -3
- package/dist/app/{conversation-shell-renderer.d.ts → rendering/conversation-shell-renderer.d.ts} +1 -1
- package/dist/app/{conversation-shell-renderer.js → rendering/conversation-shell-renderer.js} +1 -1
- package/dist/app/{conversation-tool-renderer.d.ts → rendering/conversation-tool-renderer.d.ts} +3 -3
- package/dist/app/{conversation-tool-renderer.js → rendering/conversation-tool-renderer.js} +7 -7
- package/dist/app/{conversation-viewport.d.ts → rendering/conversation-viewport.d.ts} +3 -3
- package/dist/app/{dcp-stats.js → rendering/dcp-stats.js} +1 -1
- package/dist/app/{editor-layout-renderer.d.ts → rendering/editor-layout-renderer.d.ts} +3 -3
- package/dist/app/{editor-layout-renderer.js → rendering/editor-layout-renderer.js} +2 -2
- package/dist/app/{editor-panels.d.ts → rendering/editor-panels.d.ts} +2 -2
- package/dist/app/{editor-panels.js → rendering/editor-panels.js} +4 -4
- package/dist/app/{message-content.d.ts → rendering/message-content.d.ts} +1 -1
- package/dist/app/{message-content.js → rendering/message-content.js} +1 -1
- package/dist/app/{render-controller.d.ts → rendering/render-controller.d.ts} +6 -6
- package/dist/app/{render-controller.js → rendering/render-controller.js} +5 -5
- package/dist/app/{render-text.d.ts → rendering/render-text.d.ts} +2 -2
- package/dist/app/{render-text.js → rendering/render-text.js} +3 -3
- package/dist/app/{status-line-renderer.d.ts → rendering/status-line-renderer.d.ts} +4 -4
- package/dist/app/{status-line-renderer.js → rendering/status-line-renderer.js} +4 -4
- package/dist/app/{tab-line-renderer.d.ts → rendering/tab-line-renderer.d.ts} +3 -3
- package/dist/app/{tab-line-renderer.js → rendering/tab-line-renderer.js} +2 -2
- package/dist/app/{toast-controller.d.ts → rendering/toast-controller.d.ts} +1 -1
- package/dist/app/{toast-controller.js → rendering/toast-controller.js} +2 -2
- package/dist/app/{toast-renderer.d.ts → rendering/toast-renderer.d.ts} +3 -3
- package/dist/app/{toast-renderer.js → rendering/toast-renderer.js} +3 -3
- package/dist/app/{tool-block-renderer.d.ts → rendering/tool-block-renderer.d.ts} +5 -5
- package/dist/app/{tool-block-renderer.js → rendering/tool-block-renderer.js} +2 -2
- package/dist/app/runtime.js +1 -1
- package/dist/app/{blink-controller.js → screen/blink-controller.js} +1 -1
- package/dist/app/{image-click-targets.d.ts → screen/image-click-targets.d.ts} +2 -2
- package/dist/app/{image-opener.d.ts → screen/image-opener.d.ts} +1 -1
- package/dist/app/{mouse-controller.d.ts → screen/mouse-controller.d.ts} +13 -9
- package/dist/app/{mouse-controller.js → screen/mouse-controller.js} +56 -28
- package/dist/app/{screen-selection.d.ts → screen/screen-selection.d.ts} +1 -1
- package/dist/app/{screen-styler.d.ts → screen/screen-styler.d.ts} +2 -2
- package/dist/app/{screen-styler.js → screen/screen-styler.js} +4 -4
- package/dist/app/{scroll-controller.d.ts → screen/scroll-controller.d.ts} +3 -3
- package/dist/app/{scroll-controller.js → screen/scroll-controller.js} +1 -1
- package/dist/app/{status-controller.d.ts → screen/status-controller.d.ts} +2 -2
- package/dist/app/{status-controller.js → screen/status-controller.js} +1 -1
- package/dist/app/{queued-message-controller.d.ts → session/queued-message-controller.d.ts} +2 -2
- package/dist/app/{queued-message-controller.js → session/queued-message-controller.js} +2 -2
- package/dist/app/{request-history.js → session/request-history.js} +2 -2
- package/dist/app/{session-event-controller.d.ts → session/session-event-controller.d.ts} +3 -3
- package/dist/app/{session-event-controller.js → session/session-event-controller.js} +3 -3
- package/dist/app/{session-history.d.ts → session/session-history.d.ts} +1 -1
- package/dist/app/{session-history.js → session/session-history.js} +3 -3
- package/dist/app/{session-lifecycle-controller.d.ts → session/session-lifecycle-controller.d.ts} +2 -2
- package/dist/app/{session-lifecycle-controller.js → session/session-lifecycle-controller.js} +7 -7
- package/dist/app/{session-search.d.ts → session/session-search.d.ts} +1 -1
- package/dist/app/{session-search.js → session/session-search.js} +3 -3
- package/dist/app/{tabs-controller.d.ts → session/tabs-controller.d.ts} +2 -2
- package/dist/app/{tabs-controller.js → session/tabs-controller.js} +4 -4
- package/dist/app/{subagents-files.d.ts → subagents/subagents-files.d.ts} +1 -1
- package/dist/app/{subagents-files.js → subagents/subagents-files.js} +1 -1
- package/dist/app/{subagents-model.d.ts → subagents/subagents-model.d.ts} +1 -1
- package/dist/app/{subagents-model.js → subagents/subagents-model.js} +4 -4
- package/dist/app/{subagents-widget-controller.d.ts → subagents/subagents-widget-controller.d.ts} +1 -1
- package/dist/app/{subagents-widget-controller.js → subagents/subagents-widget-controller.js} +2 -2
- package/dist/app/{terminal-bell-sound-controller.js → terminal/terminal-bell-sound-controller.js} +1 -1
- package/dist/app/{terminal-controller.js → terminal/terminal-controller.js} +2 -2
- package/dist/app/{todo-model.d.ts → todo/todo-model.d.ts} +1 -1
- package/dist/app/{todo-model.js → todo/todo-model.js} +3 -3
- package/dist/app/{todo-widget-controller.d.ts → todo/todo-widget-controller.d.ts} +1 -1
- package/dist/app/{todo-widget-controller.js → todo/todo-widget-controller.js} +2 -2
- package/dist/app/types.d.ts +2 -2
- package/dist/app/{workspace-actions-controller.d.ts → workspace/workspace-actions-controller.d.ts} +1 -1
- package/dist/app/{workspace-actions-controller.js → workspace/workspace-actions-controller.js} +3 -3
- package/dist/main.js +2 -2
- package/external/pi-tools-suite/README.md +82 -50
- package/external/pi-tools-suite/src/async-subagents/core/agent-strategy.ts +4 -0
- package/external/pi-tools-suite/src/async-subagents/core/spawn.ts +6 -2
- package/external/pi-tools-suite/src/dcp/prompts.ts +4 -0
- package/external/pi-tools-suite/src/default-pi-tools-suite-config.ts +272 -2
- package/external/pi-tools-suite/src/index.ts +1 -1
- package/external/pi-tools-suite/src/lsp/_shared/config.ts +38 -13
- package/external/pi-tools-suite/src/lsp/_shared/paths.ts +11 -1
- package/external/pi-tools-suite/src/lsp/async.ts +6 -1
- package/external/pi-tools-suite/src/lsp/child-process.ts +16 -2
- package/external/pi-tools-suite/src/lsp/client.ts +183 -4
- package/external/pi-tools-suite/src/lsp/manager.ts +44 -5
- package/external/pi-tools-suite/src/lsp/markdown-diagnostics.ts +157 -0
- package/external/pi-tools-suite/src/opencode-import/commands.ts +86 -0
- package/external/pi-tools-suite/src/opencode-import/importer.ts +208 -0
- package/external/pi-tools-suite/src/opencode-import/index.ts +25 -0
- package/package.json +1 -1
- package/external/pi-tools-suite/src/terminal-bell/index.ts +0 -339
- /package/dist/app/{install.d.ts → cli/install.d.ts} +0 -0
- /package/dist/app/{startup-checks.d.ts → cli/startup-checks.d.ts} +0 -0
- /package/dist/app/{startup-checks.js → cli/startup-checks.js} +0 -0
- /package/dist/app/{startup-info.d.ts → cli/startup-info.d.ts} +0 -0
- /package/dist/app/{startup-info.js → cli/startup-info.js} +0 -0
- /package/dist/app/{update.d.ts → cli/update.d.ts} +0 -0
- /package/dist/app/{update.js → cli/update.js} +0 -0
- /package/dist/app/{command-controller.js → commands/command-controller.js} +0 -0
- /package/dist/app/{command-host.js → commands/command-host.js} +0 -0
- /package/dist/app/{command-registry.js → commands/command-registry.js} +0 -0
- /package/dist/app/{command-runtime.d.ts → commands/command-runtime.d.ts} +0 -0
- /package/dist/app/{command-session-actions.d.ts → commands/command-session-actions.d.ts} +0 -0
- /package/dist/app/{shell-command.d.ts → commands/shell-command.d.ts} +0 -0
- /package/dist/app/{shell-command.js → commands/shell-command.js} +0 -0
- /package/dist/app/{extension-event-bus.d.ts → extensions/extension-event-bus.d.ts} +0 -0
- /package/dist/app/{extension-event-bus.js → extensions/extension-event-bus.js} +0 -0
- /package/dist/app/{native-modifiers.d.ts → input/native-modifiers.d.ts} +0 -0
- /package/dist/app/{terminal-edit-shortcuts.d.ts → input/terminal-edit-shortcuts.d.ts} +0 -0
- /package/dist/app/{terminal-edit-shortcuts.js → input/terminal-edit-shortcuts.js} +0 -0
- /package/dist/app/{model-usage-controller.d.ts → model/model-usage-controller.d.ts} +0 -0
- /package/dist/app/{conversation-viewport.js → rendering/conversation-viewport.js} +0 -0
- /package/dist/app/{dcp-stats.d.ts → rendering/dcp-stats.d.ts} +0 -0
- /package/dist/app/{blink-controller.d.ts → screen/blink-controller.d.ts} +0 -0
- /package/dist/app/{clipboard.d.ts → screen/clipboard.d.ts} +0 -0
- /package/dist/app/{clipboard.js → screen/clipboard.js} +0 -0
- /package/dist/app/{file-link-opener.d.ts → screen/file-link-opener.d.ts} +0 -0
- /package/dist/app/{file-link-opener.js → screen/file-link-opener.js} +0 -0
- /package/dist/app/{file-links.d.ts → screen/file-links.d.ts} +0 -0
- /package/dist/app/{file-links.js → screen/file-links.js} +0 -0
- /package/dist/app/{image-click-targets.js → screen/image-click-targets.js} +0 -0
- /package/dist/app/{image-opener.js → screen/image-opener.js} +0 -0
- /package/dist/app/{screen-selection.js → screen/screen-selection.js} +0 -0
- /package/dist/app/{request-history.d.ts → session/request-history.d.ts} +0 -0
- /package/dist/app/{nerd-font-controller.d.ts → terminal/nerd-font-controller.d.ts} +0 -0
- /package/dist/app/{nerd-font-controller.js → terminal/nerd-font-controller.js} +0 -0
- /package/dist/app/{terminal-bell-sound-controller.d.ts → terminal/terminal-bell-sound-controller.d.ts} +0 -0
- /package/dist/app/{terminal-controller.d.ts → terminal/terminal-controller.d.ts} +0 -0
- /package/dist/app/{terminal-output-buffer.d.ts → terminal/terminal-output-buffer.d.ts} +0 -0
- /package/dist/app/{terminal-output-buffer.js → terminal/terminal-output-buffer.js} +0 -0
- /package/dist/app/{workspace-undo.d.ts → workspace/workspace-undo.d.ts} +0 -0
- /package/dist/app/{workspace-undo.js → workspace/workspace-undo.js} +0 -0
package/README.md
CHANGED
|
@@ -185,6 +185,40 @@ Example fallback icon configuration:
|
|
|
185
185
|
- Click a tool row: expand or collapse that tool result.
|
|
186
186
|
- Click the right-aligned microphone/language status widget: toggle voice input and switch Russian/English dictation.
|
|
187
187
|
|
|
188
|
+
## Slash commands
|
|
189
|
+
|
|
190
|
+
Type `/` in the prompt to open the command picker. Commands that accept arguments can also be called directly with inline arguments.
|
|
191
|
+
|
|
192
|
+
| Command | Arguments | Description |
|
|
193
|
+
|---|---|---|
|
|
194
|
+
| `/settings` | — | Show current session, model, theme, and key settings. |
|
|
195
|
+
| `/model` | `[provider/model[:thinking]]` | Select the active model. Without arguments, opens the model picker. With a reference like `anthropic/claude-sonnet-4-20250514:medium`, sets the model and optional thinking level directly. |
|
|
196
|
+
| `/scoped-models` | `[refs…\|reset]` | Show or set the models used by the model selector and cycling. Pass one or more `provider/model[:thinking]` references separated by spaces or commas. Use `reset` to restore the default favorites. |
|
|
197
|
+
| `/thinking` | `[level]` | Select the thinking level. Without arguments, opens the thinking picker. Accepts an explicit level (`off`, `minimal`, `low`, `medium`, `high`, `xhigh`). |
|
|
198
|
+
| `/enhance` | — | Improve the current prompt draft using the prompt enhancer model. |
|
|
199
|
+
| `/export` | `[path]` | Export the session. Defaults to HTML. Pass a `.jsonl` path to export as JSONL. |
|
|
200
|
+
| `/import` | `<path.jsonl>` | Import and resume a session from a JSONL file. |
|
|
201
|
+
| `/share` | — | Share the session as a private GitHub gist (requires `gh` CLI). |
|
|
202
|
+
| `/copy` | — | Copy the last agent message to the clipboard. |
|
|
203
|
+
| `/name` | `[name]` | Show or set the session display name. |
|
|
204
|
+
| `/session` | — | Show session info: message counts, token usage, and cost. |
|
|
205
|
+
| `/usage` | — | Show local account quota usage and context window utilization. |
|
|
206
|
+
| `/changelog` | — | Show the Pi package changelog. |
|
|
207
|
+
| `/update` | `[--force\|--help]` | Check for Pix package updates. `/update` is check-only; run `pix update` in a shell to install. |
|
|
208
|
+
| `/hotkeys` | — | Show keyboard shortcuts. |
|
|
209
|
+
| `/fork` | `[entry-id]` | Fork the session from the latest or specified user-message entry. |
|
|
210
|
+
| `/clone` | — | Duplicate the current session at the current position. |
|
|
211
|
+
| `/jump` | `[query]` | Jump to a previous user message. Opens the message picker, optionally filtered by query. |
|
|
212
|
+
| `/search` | `<text>` | Search sessions for matching text and open a result in a new tab. |
|
|
213
|
+
| `/reload` | — | Reload keybindings, extensions, skills, prompts, and themes from disk. |
|
|
214
|
+
| `/resume` | `[path\|query]` | Resume a different session. Without arguments, opens the session picker. |
|
|
215
|
+
| `/new` | — | Start a fresh session in the current tab. |
|
|
216
|
+
| `/new_tab` | — | Open a fresh session in a new tab. |
|
|
217
|
+
| `/compact` | `[instructions]` | Manually compact the session context, optionally with custom instructions for the compaction. |
|
|
218
|
+
| `/quit`, `/exit` | — | Quit the renderer. |
|
|
219
|
+
|
|
220
|
+
Extensions, prompt templates, and skills may register additional slash commands that appear in the command picker alongside the built-in ones.
|
|
221
|
+
|
|
188
222
|
## Voice input
|
|
189
223
|
|
|
190
224
|
Pix can dictate into the prompt through local Vosk. The first start for each language downloads the small model into the gitignored `models/vosk/` directory inside this project:
|
package/bin/pix.mjs
CHANGED
|
@@ -9,8 +9,8 @@ const minimumNodeVersionLabel = "22.19.0";
|
|
|
9
9
|
const launcherPath = fileURLToPath(import.meta.url);
|
|
10
10
|
const packageRoot = dirname(dirname(launcherPath));
|
|
11
11
|
const mainPath = fileURLToPath(new URL("../dist/main.js", import.meta.url));
|
|
12
|
-
const updatePath = fileURLToPath(new URL("../dist/app/update.js", import.meta.url));
|
|
13
|
-
const installPath = fileURLToPath(new URL("../dist/app/install.js", import.meta.url));
|
|
12
|
+
const updatePath = fileURLToPath(new URL("../dist/app/cli/update.js", import.meta.url));
|
|
13
|
+
const installPath = fileURLToPath(new URL("../dist/app/cli/install.js", import.meta.url));
|
|
14
14
|
const distPath = dirname(mainPath);
|
|
15
15
|
const rawArgs = process.argv.slice(2);
|
|
16
16
|
const childArgs = [];
|
|
@@ -39,7 +39,7 @@ if (childArgs[0] === "update") {
|
|
|
39
39
|
console.error("pix update is not built yet. Run `npm run build:pix` or update from a published package.");
|
|
40
40
|
process.exit(1);
|
|
41
41
|
}
|
|
42
|
-
const { runPixUpdateCli } = await import(new URL("../dist/app/update.js", import.meta.url));
|
|
42
|
+
const { runPixUpdateCli } = await import(new URL("../dist/app/cli/update.js", import.meta.url));
|
|
43
43
|
process.exit(await runPixUpdateCli(childArgs.slice(1)));
|
|
44
44
|
}
|
|
45
45
|
|
|
@@ -48,7 +48,7 @@ if (childArgs[0] === "install" || childArgs[0] === "setup") {
|
|
|
48
48
|
console.error("pix install is not built yet. Run `npm run build:pix` or update from a published package.");
|
|
49
49
|
process.exit(1);
|
|
50
50
|
}
|
|
51
|
-
const { runPixInstallCli } = await import(new URL("../dist/app/install.js", import.meta.url));
|
|
51
|
+
const { runPixInstallCli } = await import(new URL("../dist/app/cli/install.js", import.meta.url));
|
|
52
52
|
process.exit(await runPixInstallCli(childArgs.slice(1), { env: pixChildEnv() }));
|
|
53
53
|
}
|
|
54
54
|
|
package/dist/app/app.js
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
1
|
import { THEMES } from "../theme.js";
|
|
2
2
|
import { InputEditor } from "../input-editor.js";
|
|
3
3
|
import { compileOutputFilterPatterns, loadPixConfig, resolveToolRule, } from "../config.js";
|
|
4
|
-
import { AppCommandController } from "./command-controller.js";
|
|
5
|
-
import { ConversationViewport } from "./conversation-viewport.js";
|
|
6
|
-
import { EditorLayoutRenderer } from "./editor-layout-renderer.js";
|
|
7
|
-
import { AppExtensionActionsController } from "./extension-actions-controller.js";
|
|
8
|
-
import { ExtensionUiController } from "./extension-ui-controller.js";
|
|
9
|
-
import { AppInputActionController } from "./input-action-controller.js";
|
|
10
|
-
import { AppInputController } from "./input-controller.js";
|
|
11
|
-
import { AppBlinkController } from "./blink-controller.js";
|
|
4
|
+
import { AppCommandController } from "./commands/command-controller.js";
|
|
5
|
+
import { ConversationViewport } from "./rendering/conversation-viewport.js";
|
|
6
|
+
import { EditorLayoutRenderer } from "./rendering/editor-layout-renderer.js";
|
|
7
|
+
import { AppExtensionActionsController } from "./extensions/extension-actions-controller.js";
|
|
8
|
+
import { ExtensionUiController } from "./extensions/extension-ui-controller.js";
|
|
9
|
+
import { AppInputActionController } from "./input/input-action-controller.js";
|
|
10
|
+
import { AppInputController } from "./input/input-controller.js";
|
|
11
|
+
import { AppBlinkController } from "./screen/blink-controller.js";
|
|
12
12
|
import { isRecord } from "./guards.js";
|
|
13
|
-
import { AppMenuItemsController } from "./menu-items-controller.js";
|
|
14
|
-
import { AppMouseController } from "./mouse-controller.js";
|
|
13
|
+
import { AppMenuItemsController } from "./popup/menu-items-controller.js";
|
|
14
|
+
import { AppMouseController } from "./screen/mouse-controller.js";
|
|
15
15
|
import { createId } from "./id.js";
|
|
16
|
-
import { NerdFontController } from "./nerd-font-controller.js";
|
|
17
|
-
import { AppPopupActionController } from "./popup-action-controller.js";
|
|
18
|
-
import { AppPopupMenuController } from "./popup-menu-controller.js";
|
|
19
|
-
import { AppPromptEnhancerController } from "./prompt-enhancer-controller.js";
|
|
20
|
-
import { AppQueuedMessageController } from "./queued-message-controller.js";
|
|
21
|
-
import { AppRequestHistory } from "./request-history.js";
|
|
22
|
-
import { AppRenderController } from "./render-controller.js";
|
|
16
|
+
import { NerdFontController } from "./terminal/nerd-font-controller.js";
|
|
17
|
+
import { AppPopupActionController } from "./popup/popup-action-controller.js";
|
|
18
|
+
import { AppPopupMenuController } from "./popup/popup-menu-controller.js";
|
|
19
|
+
import { AppPromptEnhancerController } from "./input/prompt-enhancer-controller.js";
|
|
20
|
+
import { AppQueuedMessageController } from "./session/queued-message-controller.js";
|
|
21
|
+
import { AppRequestHistory } from "./session/request-history.js";
|
|
22
|
+
import { AppRenderController } from "./rendering/render-controller.js";
|
|
23
23
|
import { createPixRuntime } from "./runtime.js";
|
|
24
|
-
import { ScreenStyler } from "./screen-styler.js";
|
|
25
|
-
import { AppScrollController } from "./scroll-controller.js";
|
|
26
|
-
import { searchResultScrollNeedles, searchResultTargetEntry } from "./session-search.js";
|
|
27
|
-
import { AppSessionLifecycleController } from "./session-lifecycle-controller.js";
|
|
28
|
-
import { AppShellController } from "./shell-controller.js";
|
|
29
|
-
import { runInteractiveShellCommand } from "./shell-command.js";
|
|
30
|
-
import { AppSessionEventController } from "./session-event-controller.js";
|
|
31
|
-
import { AppStatusController } from "./status-controller.js";
|
|
32
|
-
import { StatusLineRenderer } from "./status-line-renderer.js";
|
|
33
|
-
import { AppModelUsageController } from "./model-usage-controller.js";
|
|
34
|
-
import { AppWorkspaceActionsController } from "./workspace-actions-controller.js";
|
|
35
|
-
import { AppSubagentsWidgetController } from "./subagents-widget-controller.js";
|
|
36
|
-
import { AppTodoWidgetController } from "./todo-widget-controller.js";
|
|
37
|
-
import { AppTabsController } from "./tabs-controller.js";
|
|
38
|
-
import { TabLineRenderer } from "./tab-line-renderer.js";
|
|
39
|
-
import { AppTerminalController } from "./terminal-controller.js";
|
|
40
|
-
import { TerminalBellSoundController } from "./terminal-bell-sound-controller.js";
|
|
41
|
-
import { AppToastController } from "./toast-controller.js";
|
|
42
|
-
import { checkPixUpdate, formatPixStartupUpdateDialog } from "./update.js";
|
|
43
|
-
import { AppVoiceController } from "./voice-controller.js";
|
|
44
|
-
import { createIsolatedExtensionEventBus } from "./extension-event-bus.js";
|
|
24
|
+
import { ScreenStyler } from "./screen/screen-styler.js";
|
|
25
|
+
import { AppScrollController } from "./screen/scroll-controller.js";
|
|
26
|
+
import { searchResultScrollNeedles, searchResultTargetEntry } from "./session/session-search.js";
|
|
27
|
+
import { AppSessionLifecycleController } from "./session/session-lifecycle-controller.js";
|
|
28
|
+
import { AppShellController } from "./commands/shell-controller.js";
|
|
29
|
+
import { runInteractiveShellCommand } from "./commands/shell-command.js";
|
|
30
|
+
import { AppSessionEventController } from "./session/session-event-controller.js";
|
|
31
|
+
import { AppStatusController } from "./screen/status-controller.js";
|
|
32
|
+
import { StatusLineRenderer } from "./rendering/status-line-renderer.js";
|
|
33
|
+
import { AppModelUsageController } from "./model/model-usage-controller.js";
|
|
34
|
+
import { AppWorkspaceActionsController } from "./workspace/workspace-actions-controller.js";
|
|
35
|
+
import { AppSubagentsWidgetController } from "./subagents/subagents-widget-controller.js";
|
|
36
|
+
import { AppTodoWidgetController } from "./todo/todo-widget-controller.js";
|
|
37
|
+
import { AppTabsController } from "./session/tabs-controller.js";
|
|
38
|
+
import { TabLineRenderer } from "./rendering/tab-line-renderer.js";
|
|
39
|
+
import { AppTerminalController } from "./terminal/terminal-controller.js";
|
|
40
|
+
import { TerminalBellSoundController } from "./terminal/terminal-bell-sound-controller.js";
|
|
41
|
+
import { AppToastController } from "./rendering/toast-controller.js";
|
|
42
|
+
import { checkPixUpdate, formatPixStartupUpdateDialog } from "./cli/update.js";
|
|
43
|
+
import { AppVoiceController } from "./input/voice-controller.js";
|
|
44
|
+
import { createIsolatedExtensionEventBus } from "./extensions/extension-event-bus.js";
|
|
45
45
|
import { setAppIconTheme } from "./icons.js";
|
|
46
46
|
const TERMINAL_BELL_ATTENTION_EVENT = "pix:terminal-bell:attention";
|
|
47
47
|
const SUBAGENTS_LIVE_STATE_EVENT = "pi-tools-suite:async-subagents:live-state";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
|
-
import { parseThemeName } from "
|
|
2
|
+
import { parseThemeName } from "../../theme.js";
|
|
3
3
|
export function usage() {
|
|
4
4
|
return `Usage: pix [--cwd <path>] [--no-session] [--session <path>] [--theme dark|light] [--model <provider/model[:thinking]>]
|
|
5
5
|
pix update [--check] [--force]
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { existsSync } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
-
import { FONT_FAMILY_NAME, installJetBrainsNerdFont, isJetBrainsNerdFontInstalled, } from "
|
|
5
|
-
import { clipboardInstallHint, clipboardSupportAvailable } from "
|
|
4
|
+
import { FONT_FAMILY_NAME, installJetBrainsNerdFont, isJetBrainsNerdFontInstalled, } from "../terminal/nerd-font-controller.js";
|
|
5
|
+
import { clipboardInstallHint, clipboardSupportAvailable } from "../screen/clipboard.js";
|
|
6
6
|
export function pixInstallUsage() {
|
|
7
7
|
return `Usage: pix install [--check]
|
|
8
8
|
pix setup [--check]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CommandControllerHost } from "./command-host.js";
|
|
2
|
-
import type { PopupMenuPlacement, SessionModel, SlashCommand, ThinkingLevel } from "
|
|
2
|
+
import type { PopupMenuPlacement, SessionModel, SlashCommand, ThinkingLevel } from "../types.js";
|
|
3
3
|
export declare class AppCommandController {
|
|
4
4
|
private readonly host;
|
|
5
5
|
readonly slashCommands: readonly SlashCommand[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AgentSession, AgentSessionRuntime, SessionInfo } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import type { SessionSearchResult } from "
|
|
3
|
-
import type { ActivePopupMenu, AppOptions, Entry, ModelMenuValue, PixMenuItem, PixMenuOptions, PopupMenuPlacement, ScopedSessionModel, SessionModel, ThinkingMenuValue } from "
|
|
4
|
-
import type { ToastNotifier } from "
|
|
2
|
+
import type { SessionSearchResult } from "../session/session-search.js";
|
|
3
|
+
import type { ActivePopupMenu, AppOptions, Entry, ModelMenuValue, PixMenuItem, PixMenuOptions, PopupMenuPlacement, ScopedSessionModel, SessionModel, ThinkingMenuValue } from "../types.js";
|
|
4
|
+
import type { ToastNotifier } from "../../ui.js";
|
|
5
5
|
export type DirectPopupMenu = Exclude<ActivePopupMenu, "slash">;
|
|
6
6
|
export type CommandControllerHost = {
|
|
7
7
|
readonly options: AppOptions;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CommandControllerHost } from "./command-host.js";
|
|
2
|
-
import type { SessionModel, ThinkingLevel } from "
|
|
2
|
+
import type { SessionModel, ThinkingLevel } from "../types.js";
|
|
3
3
|
export declare class ModelCommandActions {
|
|
4
4
|
private readonly host;
|
|
5
5
|
constructor(host: CommandControllerHost);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getIdleRuntime, getRuntime } from "./command-runtime.js";
|
|
2
|
-
import { createId } from "
|
|
3
|
-
import { isThinkingLevel, parseScopedModelRef } from "
|
|
2
|
+
import { createId } from "../id.js";
|
|
3
|
+
import { isThinkingLevel, parseScopedModelRef } from "../model/model-ref.js";
|
|
4
4
|
export class ModelCommandActions {
|
|
5
5
|
host;
|
|
6
6
|
constructor(host) {
|
package/dist/app/{command-navigation-actions.d.ts → commands/command-navigation-actions.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CommandControllerHost } from "./command-host.js";
|
|
2
|
-
import type { PopupMenuPlacement } from "
|
|
2
|
+
import type { PopupMenuPlacement } from "../types.js";
|
|
3
3
|
export declare class NavigationCommandActions {
|
|
4
4
|
private readonly host;
|
|
5
5
|
constructor(host: CommandControllerHost);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
2
|
import { SessionManager } from "@earendil-works/pi-coding-agent";
|
|
3
3
|
import { getIdleRuntime, getRuntime } from "./command-runtime.js";
|
|
4
|
-
import { createId } from "
|
|
5
|
-
import { isRecord } from "
|
|
6
|
-
import { renderContent } from "
|
|
7
|
-
import { sanitizeText } from "
|
|
8
|
-
import { createSessionSearchMenuItems, searchSessions } from "
|
|
4
|
+
import { createId } from "../id.js";
|
|
5
|
+
import { isRecord } from "../guards.js";
|
|
6
|
+
import { renderContent } from "../rendering/message-content.js";
|
|
7
|
+
import { sanitizeText } from "../rendering/render-text.js";
|
|
8
|
+
import { createSessionSearchMenuItems, searchSessions } from "../session/session-search.js";
|
|
9
9
|
export class NavigationCommandActions {
|
|
10
10
|
host;
|
|
11
11
|
constructor(host) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CommandControllerHost } from "./command-host.js";
|
|
2
|
-
import type { SlashCommand } from "
|
|
2
|
+
import type { SlashCommand } from "../types.js";
|
|
3
3
|
export type CommandRegistryActions = {
|
|
4
4
|
runSettingsCommand(): Promise<void>;
|
|
5
5
|
runModelSlashCommand(argumentsText: string): Promise<void>;
|
|
@@ -5,9 +5,9 @@ import { dirname, join, resolve } from "node:path";
|
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { copyToClipboard, getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
7
7
|
import { getIdleRuntime, getRuntime, parsePathArgument } from "./command-runtime.js";
|
|
8
|
-
import { createId } from "
|
|
9
|
-
import { formatAccountUsageReport, queryAccountUsageReport } from "
|
|
10
|
-
import { checkPixUpdate, formatPixUpdateCheck, parsePixUpdateArgs, pixUpdateUsage } from "
|
|
8
|
+
import { createId } from "../id.js";
|
|
9
|
+
import { formatAccountUsageReport, queryAccountUsageReport } from "../model/model-usage-status.js";
|
|
10
|
+
import { checkPixUpdate, formatPixUpdateCheck, parsePixUpdateArgs, pixUpdateUsage } from "../cli/update.js";
|
|
11
11
|
export class SessionCommandActions {
|
|
12
12
|
host;
|
|
13
13
|
constructor(host) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type InteractiveShellCommandResult } from "./shell-command.js";
|
|
2
|
-
import type { Entry, SessionActivity } from "
|
|
2
|
+
import type { Entry, SessionActivity } from "../types.js";
|
|
3
3
|
export type AppShellControllerHost = {
|
|
4
4
|
readonly cwd: string;
|
|
5
5
|
isRunning(): boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentSessionRuntime } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import { type FuzzyMatch } from "
|
|
3
|
-
import type { ParsedSlashInput, SlashCommand } from "
|
|
2
|
+
import { type FuzzyMatch } from "../../fuzzy.js";
|
|
3
|
+
import type { ParsedSlashInput, SlashCommand } from "../types.js";
|
|
4
4
|
export declare function parseSlashInput(text: string): ParsedSlashInput | undefined;
|
|
5
5
|
export declare function getResourceSlashCommands(runtime: AgentSessionRuntime | undefined, builtInCommands: readonly SlashCommand[]): SlashCommand[];
|
|
6
6
|
export declare function getSlashCommandMatches(commands: readonly SlashCommand[], query: string, limit?: number): FuzzyMatch<SlashCommand>[];
|
package/dist/app/{extension-actions-controller.d.ts → extensions/extension-actions-controller.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AgentSessionRuntime, ExtensionCommandContextActions, ExtensionError } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import type { Entry } from "
|
|
2
|
+
import type { Entry } from "../types.js";
|
|
3
3
|
export type AppExtensionActionsHost = {
|
|
4
4
|
isRunning(): boolean;
|
|
5
5
|
getInput(): string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type Theme } from "
|
|
2
|
-
import { type ToastKind, type ToastNotifier } from "
|
|
3
|
-
import type { Entry, ExtensionInputMouseEvent, ExtensionWidgetRegistration, ExtensionWidgetTheme, PixExtensionUIContext, PixMenuController, WidgetPlacement, WidgetTuiHandle } from "
|
|
1
|
+
import { type Theme } from "../../theme.js";
|
|
2
|
+
import { type ToastKind, type ToastNotifier } from "../../ui.js";
|
|
3
|
+
import type { Entry, ExtensionInputMouseEvent, ExtensionWidgetRegistration, ExtensionWidgetTheme, PixExtensionUIContext, PixMenuController, WidgetPlacement, WidgetTuiHandle } from "../types.js";
|
|
4
4
|
export type ExtensionTerminalInputResult = {
|
|
5
5
|
consume: boolean;
|
|
6
6
|
data?: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ANSI_RESET, colorize, THEMES } from "
|
|
2
|
-
import { isToastKind } from "
|
|
3
|
-
import { ellipsizeDisplay, sanitizeText } from "
|
|
1
|
+
import { ANSI_RESET, colorize, THEMES } from "../../theme.js";
|
|
2
|
+
import { isToastKind } from "../../ui.js";
|
|
3
|
+
import { ellipsizeDisplay, sanitizeText } from "../rendering/render-text.js";
|
|
4
4
|
const CUSTOM_UI_WIDGET_KEY = "pix-custom-ui";
|
|
5
5
|
export class ExtensionUiController {
|
|
6
6
|
host;
|
|
@@ -207,6 +207,7 @@ export class ExtensionUiController {
|
|
|
207
207
|
setHeader: () => undefined,
|
|
208
208
|
setTitle: (title) => {
|
|
209
209
|
process.title = title;
|
|
210
|
+
renderIfRunning();
|
|
210
211
|
},
|
|
211
212
|
custom: (async (factory) => await this.showCustomUi(factory)),
|
|
212
213
|
pasteToEditor: (text) => {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { InputEditor } from "
|
|
1
|
+
import type { InputEditor } from "../../input-editor.js";
|
|
2
2
|
import type { AgentSessionRuntime } from "@earendil-works/pi-coding-agent";
|
|
3
|
-
import type { AppPopupActionController } from "
|
|
4
|
-
import type { AppPopupMenuController } from "
|
|
5
|
-
import type { AppQueuedMessageController } from "
|
|
6
|
-
import type { AppRequestHistory } from "
|
|
7
|
-
import { type InteractiveShellCommandResult } from "
|
|
8
|
-
import type { Entry, SessionActivity } from "
|
|
3
|
+
import type { AppPopupActionController } from "../popup/popup-action-controller.js";
|
|
4
|
+
import type { AppPopupMenuController } from "../popup/popup-menu-controller.js";
|
|
5
|
+
import type { AppQueuedMessageController } from "../session/queued-message-controller.js";
|
|
6
|
+
import type { AppRequestHistory } from "../session/request-history.js";
|
|
7
|
+
import { type InteractiveShellCommandResult } from "../commands/shell-command.js";
|
|
8
|
+
import type { Entry, SessionActivity } from "../types.js";
|
|
9
9
|
export type AppInputActionControllerHost = {
|
|
10
10
|
runtime(): AgentSessionRuntime | undefined;
|
|
11
11
|
isRunning(): boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createId } from "
|
|
2
|
-
import { stringifyUnknown } from "
|
|
3
|
-
import { bangShellCommandFromInput, formatShellCommandEntry, } from "
|
|
1
|
+
import { createId } from "../id.js";
|
|
2
|
+
import { stringifyUnknown } from "../rendering/message-content.js";
|
|
3
|
+
import { bangShellCommandFromInput, formatShellCommandEntry, } from "../commands/shell-command.js";
|
|
4
4
|
const ABORT_STATUS_RESTORE_MS = 1200;
|
|
5
5
|
export class AppInputActionController {
|
|
6
6
|
host;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { InputEditor } from "
|
|
2
|
-
import type { ExtensionTerminalInputResult } from "
|
|
3
|
-
import type { MouseEvent, ActivePopupMenu } from "
|
|
1
|
+
import { InputEditor } from "../../input-editor.js";
|
|
2
|
+
import type { ExtensionTerminalInputResult } from "../extensions/extension-ui-controller.js";
|
|
3
|
+
import type { MouseEvent, ActivePopupMenu } from "../types.js";
|
|
4
4
|
type DirectPopupMenu = Exclude<ActivePopupMenu, "slash">;
|
|
5
5
|
export type InputControllerHost = {
|
|
6
6
|
readonly inputEditor: InputEditor;
|
|
@@ -42,7 +42,7 @@ export class AppInputController {
|
|
|
42
42
|
}
|
|
43
43
|
drainInputBuffer() {
|
|
44
44
|
while (this.inputBuffer.length > 0) {
|
|
45
|
-
const mouseMatch = /^\x1b\[<(\d+);(
|
|
45
|
+
const mouseMatch = /^\x1b\[<(\d+);(-?\d+);(-?\d+)([mM])/.exec(this.inputBuffer);
|
|
46
46
|
if (mouseMatch) {
|
|
47
47
|
this.inputBuffer = this.inputBuffer.slice(mouseMatch[0].length);
|
|
48
48
|
this.host.handleMouse({
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { stat } from "node:fs/promises";
|
|
3
3
|
import { isAbsolute, relative, resolve } from "node:path";
|
|
4
|
-
import { isImagePath, looksLikeFilePath, quoteFilePathForInput, readClipboardImage } from "
|
|
5
|
-
import { PASTE_DUPLICATE_WINDOW_MS } from "
|
|
6
|
-
import { normalizePastedTextForDuplicateKey } from "
|
|
4
|
+
import { isImagePath, looksLikeFilePath, quoteFilePathForInput, readClipboardImage } from "../../input-editor.js";
|
|
5
|
+
import { PASTE_DUPLICATE_WINDOW_MS } from "../constants.js";
|
|
6
|
+
import { normalizePastedTextForDuplicateKey } from "../rendering/render-text.js";
|
|
7
7
|
export class InputPasteHandler {
|
|
8
8
|
host;
|
|
9
9
|
pasteBuffer = "";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { TERMINAL_COMMAND_MODIFIER_FLAG } from "
|
|
5
|
-
import { isRecord } from "
|
|
4
|
+
import { TERMINAL_COMMAND_MODIFIER_FLAG } from "../constants.js";
|
|
5
|
+
import { isRecord } from "../guards.js";
|
|
6
6
|
const cjsRequire = createRequire(import.meta.url);
|
|
7
7
|
let nativeModifiersHelper;
|
|
8
8
|
export function isNativeShiftPressed() {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type AgentSessionRuntime } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import type { PromptEnhancerConfig } from "
|
|
3
|
-
import type { InputEditor } from "
|
|
4
|
-
import type { ToastNotifier } from "
|
|
5
|
-
import type { TabInputState } from "
|
|
6
|
-
import type { SessionActivity } from "
|
|
2
|
+
import type { PromptEnhancerConfig } from "../../config.js";
|
|
3
|
+
import type { InputEditor } from "../../input-editor.js";
|
|
4
|
+
import type { ToastNotifier } from "../../ui.js";
|
|
5
|
+
import type { TabInputState } from "../session/tabs-controller.js";
|
|
6
|
+
import type { SessionActivity } from "../types.js";
|
|
7
7
|
export type AppPromptEnhancerControllerHost = {
|
|
8
8
|
runtime(): AgentSessionRuntime | undefined;
|
|
9
9
|
inputEditor(): InputEditor;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createAgentSessionFromServices, createAgentSessionServices, SessionManager, } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import { APP_ICONS } from "
|
|
3
|
-
import { stringifyUnknown } from "
|
|
4
|
-
import { parseModelRef } from "
|
|
2
|
+
import { APP_ICONS } from "../icons.js";
|
|
3
|
+
import { stringifyUnknown } from "../rendering/message-content.js";
|
|
4
|
+
import { parseModelRef } from "../model/model-ref.js";
|
|
5
5
|
const PROMPT_ENHANCER_SYSTEM_PROMPT = `You improve prompts for a coding agent.
|
|
6
6
|
|
|
7
7
|
Rewrite the user's draft into a clearer, more actionable prompt.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type DictationConfig } from "
|
|
1
|
+
import { type DictationConfig } from "../../config.js";
|
|
2
2
|
export type VoiceLanguage = string;
|
|
3
3
|
export type VoiceInputState = "idle" | "installing" | "downloading" | "loading" | "listening";
|
|
4
4
|
export type AppVoiceControllerHost = {
|
|
@@ -6,8 +6,8 @@ import https from "node:https";
|
|
|
6
6
|
import { createRequire } from "node:module";
|
|
7
7
|
import { join } from "node:path";
|
|
8
8
|
import { fileURLToPath } from "node:url";
|
|
9
|
-
import { savePixDictationLanguage } from "
|
|
10
|
-
import { APP_ICONS } from "
|
|
9
|
+
import { savePixDictationLanguage } from "../../config.js";
|
|
10
|
+
import { APP_ICONS } from "../icons.js";
|
|
11
11
|
const SAMPLE_RATE = 16_000;
|
|
12
12
|
const require = createRequire(import.meta.url);
|
|
13
13
|
const projectRoot = fileURLToPath(new URL("../..", import.meta.url));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MODEL_USAGE_POLL_INTERVAL_MS, MODEL_USAGE_STATUS_TICK_MS } from "
|
|
1
|
+
import { MODEL_USAGE_POLL_INTERVAL_MS, MODEL_USAGE_STATUS_TICK_MS } from "../constants.js";
|
|
2
2
|
import { formatModelUsageStatusLabel, modelUsageDescriptor, queryModelUsageStatus, } from "./model-usage-status.js";
|
|
3
3
|
export class AppModelUsageController {
|
|
4
4
|
host;
|
|
@@ -4,7 +4,7 @@ import { readFile } from "node:fs/promises";
|
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
import { join } from "node:path";
|
|
6
6
|
import { getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
7
|
-
import { formatCompactProgressBar } from "
|
|
7
|
+
import { formatCompactProgressBar } from "../../context-progress-bar.js";
|
|
8
8
|
const OPENAI_USAGE_URL = "https://chatgpt.com/backend-api/wham/usage";
|
|
9
9
|
const ZAI_QUOTA_URL = "https://api.z.ai/api/monitor/usage/quota/limit";
|
|
10
10
|
const ZHIPU_QUOTA_URL = "https://bigmodel.cn/api/monitor/usage/quota/limit";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentSessionRuntime, SessionInfo } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import type { PopupMenuItem } from "
|
|
3
|
-
import type { Entry, ModelMenuValue, QueueMessageMenuValue, ResumeMenuValue, ScopedSessionModel, SessionModel, SlashCommand, ThinkingMenuValue, UserMessageJumpMenuValue, UserMessageMenuValue } from "
|
|
2
|
+
import type { PopupMenuItem } from "../../ui.js";
|
|
3
|
+
import type { Entry, ModelMenuValue, QueueMessageMenuValue, ResumeMenuValue, ScopedSessionModel, SessionModel, SlashCommand, ThinkingMenuValue, UserMessageJumpMenuValue, UserMessageMenuValue } from "../types.js";
|
|
4
4
|
export type AppMenuItemsControllerHost = {
|
|
5
5
|
runtime(): AgentSessionRuntime | undefined;
|
|
6
6
|
getBuiltinSlashCommands(): readonly SlashCommand[];
|
|
@@ -11,9 +11,9 @@ export declare class AppMenuItemsController {
|
|
|
11
11
|
private readonly host;
|
|
12
12
|
private resumeMenuLoaderCache;
|
|
13
13
|
constructor(host: AppMenuItemsControllerHost);
|
|
14
|
-
parseSlashInput(text: string): import("
|
|
14
|
+
parseSlashInput(text: string): import("../types.js").ParsedSlashInput | undefined;
|
|
15
15
|
getResourceSlashCommands(): SlashCommand[];
|
|
16
|
-
getSlashCommandMatches(query: string, limit?: number): import("
|
|
16
|
+
getSlashCommandMatches(query: string, limit?: number): import("../../fuzzy.js").FuzzyMatch<SlashCommand>[];
|
|
17
17
|
getSlashCommandMenuItems(query: string): PopupMenuItem<SlashCommand>[];
|
|
18
18
|
modelRef(model: SessionModel): string;
|
|
19
19
|
getFavoriteScopedModels(): ScopedSessionModel[];
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
|
-
import { fuzzySearch } from "
|
|
3
|
-
import { PI_FAVORITE_MODEL_REFS, THINKING_LEVELS } from "
|
|
4
|
-
import { APP_ICONS } from "
|
|
5
|
-
import { parseScopedModelRef } from "
|
|
2
|
+
import { fuzzySearch } from "../../fuzzy.js";
|
|
3
|
+
import { PI_FAVORITE_MODEL_REFS, THINKING_LEVELS } from "../constants.js";
|
|
4
|
+
import { APP_ICONS } from "../icons.js";
|
|
5
|
+
import { parseScopedModelRef } from "../model/model-ref.js";
|
|
6
6
|
import { buildUserMessageJumpItems, createSessionInfoMenuItemsLoader } from "./popup-menu-controller.js";
|
|
7
|
-
import { getResourceSlashCommands, getSlashCommandMatches, parseSlashInput } from "
|
|
7
|
+
import { getResourceSlashCommands, getSlashCommandMatches, parseSlashInput } from "../commands/slash-commands.js";
|
|
8
8
|
export class AppMenuItemsController {
|
|
9
9
|
host;
|
|
10
10
|
resumeMenuLoaderCache;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { AgentSession, AgentSessionRuntime } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import type { AppCommandController } from "
|
|
2
|
+
import type { AppCommandController } from "../commands/command-controller.js";
|
|
3
3
|
import type { AppMenuItemsController } from "./menu-items-controller.js";
|
|
4
4
|
import type { AppPopupMenuController } from "./popup-menu-controller.js";
|
|
5
|
-
import type { AppQueuedMessageController } from "
|
|
6
|
-
import type { Entry, SlashCommand } from "
|
|
7
|
-
import type { AppWorkspaceActionsController } from "
|
|
5
|
+
import type { AppQueuedMessageController } from "../session/queued-message-controller.js";
|
|
6
|
+
import type { Entry, SlashCommand } from "../types.js";
|
|
7
|
+
import type { AppWorkspaceActionsController } from "../workspace/workspace-actions-controller.js";
|
|
8
8
|
export type AppPopupActionControllerHost = {
|
|
9
9
|
runtime(): AgentSessionRuntime | undefined;
|
|
10
10
|
getBuiltinSlashCommands(): readonly SlashCommand[];
|