@timurproko/a1 0.2.6-dev.717 → 0.2.6-dev.734
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/bin/cli.js +13 -2
- package/bin/ui.js +13 -0
- package/dist/app/session-shell/clipboard-services.d.ts +19 -0
- package/dist/app/session-shell/clipboard-services.js +7 -0
- package/dist/app/session-shell/exit-notice.d.ts +9 -5
- package/dist/app/session-shell/exit-notice.js +5 -5
- package/dist/app/session-shell/index.d.ts +3 -1
- package/dist/app/session-shell/index.js +1 -0
- package/dist/app/session-shell/paste-preparation-client.d.ts +3 -0
- package/dist/app/session-shell/paste-preparation-client.js +5 -2
- package/dist/app/session-shell/path-chip-presentation.d.ts +10 -3
- package/dist/app/session-shell/path-chip-presentation.js +48 -6
- package/dist/app/session-shell/prompt-chips.js +30 -4
- package/dist/app/session-shell/prompt-suggestion-controller.d.ts +5 -4
- package/dist/app/session-shell/prompt-suggestion-controller.js +148 -58
- package/dist/app/session-shell/quit-outro.d.ts +3 -1
- package/dist/app/session-shell/quit-outro.js +23 -8
- package/dist/app/session-shell/response-copy-transport.d.ts +6 -1
- package/dist/app/session-shell/response-copy-transport.js +8 -2
- package/dist/app/session-shell/session-shell-root.d.ts +22 -11
- package/dist/app/session-shell/session-shell-root.js +19 -12
- package/dist/app/session-shell/session-shell.d.ts +19 -21
- package/dist/app/session-shell/session-shell.js +678 -840
- package/dist/app/session-shell/session-viewport-controller.js +33 -21
- package/dist/cli/dispatch.js +5 -3
- package/dist/cli/session-context.d.ts +5 -1
- package/dist/cli/session-context.js +25 -8
- package/dist/composition/owned-ui.d.ts +23 -2
- package/dist/composition/owned-ui.js +124 -33
- package/dist/composition/session-info-reference.d.ts +2 -2
- package/dist/composition/session-info-reference.js +2 -2
- package/dist/composition/settings-route-host.js +2 -1
- package/dist/contracts/agent-engine/capability-ports.d.ts +1 -85
- package/dist/contracts/agent-engine/capability-ports.js +1 -35
- package/dist/contracts/agent-engine/index.d.ts +1 -7
- package/dist/contracts/agent-engine/index.js +0 -4
- package/dist/contracts/owned-ui/index.d.ts +9 -3
- package/dist/contracts/owned-ui/index.js +2 -1
- package/dist/contracts/owned-ui/model.d.ts +10 -0
- package/dist/contracts/owned-ui/session-backend.d.ts +119 -0
- package/dist/contracts/owned-ui/session-presenters.d.ts +55 -0
- package/dist/contracts/owned-ui/session-presenters.js +1 -0
- package/dist/contracts/owned-ui/session-workflows.d.ts +342 -0
- package/dist/contracts/owned-ui/session-workflows.js +30 -0
- package/dist/contracts/owned-ui/suggestion-diagnostics.d.ts +5 -1
- package/dist/contracts/owned-ui/suggestion-diagnostics.js +3 -1
- package/dist/contracts/owned-ui/validation.js +7 -0
- package/dist/features/launch/index.d.ts +1 -1
- package/dist/features/launch/session-context.d.ts +17 -2
- package/dist/features/launch/session-context.js +9 -5
- package/dist/features/owned-ui/settings-app.js +56 -54
- package/dist/features/prompt-suggestions/diagnostics.js +4 -1
- package/dist/foundation/lifecycle/index.d.ts +2 -2
- package/dist/foundation/lifecycle/index.js +1 -1
- package/dist/foundation/lifecycle/session-repository-context.d.ts +19 -2
- package/dist/foundation/lifecycle/session-repository-context.js +434 -66
- package/dist/foundation/process-containment/index.d.ts +1 -0
- package/dist/foundation/process-containment/index.js +1 -0
- package/dist/foundation/process-containment/native-process-inspector.d.ts +3 -0
- package/dist/foundation/process-containment/native-process-inspector.js +21 -0
- package/dist/foundation/release/bootstrap.js +1 -2
- package/dist/foundation/release/progress-palette.generated.d.ts +2 -2
- package/dist/foundation/release/progress-palette.generated.js +2 -2
- package/dist/foundation/release/release-gc.js +1 -1
- package/dist/foundation/release/update.js +0 -4
- package/dist/foundation/startup/startup-descriptor.js +2 -2
- package/dist/foundation/storage/control-store.js +0 -12
- package/dist/integrations/pi/components/components.js +2 -18
- package/dist/integrations/pi/components/index.d.ts +4 -4
- package/dist/integrations/pi/components/index.js +2 -2
- package/dist/integrations/pi/components/modal-frame.js +3 -4
- package/dist/integrations/pi/components/models-dialog.js +6 -35
- package/dist/integrations/pi/components/prompt-input-port.d.ts +1 -0
- package/dist/integrations/pi/components/resources/builtin-themes.d.ts +2 -2
- package/dist/integrations/pi/components/resources/builtin-themes.js +2 -2
- package/dist/integrations/pi/components/share-operation-dialog.js +3 -3
- package/dist/integrations/pi/components/shell-editor-autocomplete.js +19 -16
- package/dist/integrations/pi/components/shell-extension-ui.d.ts +5 -3
- package/dist/integrations/pi/components/shell-extension-ui.js +26 -12
- package/dist/integrations/pi/components/shell-hotkey-sections.js +2 -2
- package/dist/integrations/pi/components/shell-presenters-info.js +10 -10
- package/dist/integrations/pi/components/shell-presenters-transcript.js +13 -13
- package/dist/integrations/pi/components/shell-selectors-dialogs.js +5 -6
- package/dist/integrations/pi/components/shell-shared-facade.d.ts +21 -1
- package/dist/integrations/pi/components/shell-shared-facade.js +19 -3
- package/dist/integrations/pi/components/skills-dialog.js +3 -3
- package/dist/integrations/pi/components/submitted-prompt-adapter.js +2 -3
- package/dist/integrations/pi/components/theme.d.ts +9 -0
- package/dist/integrations/pi/components/theme.js +30 -0
- package/dist/integrations/pi/components/tool-result-adapter.js +6 -1
- package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +1 -1
- package/dist/integrations/pi/components/upstream/assets/earendil-image.json +2 -2
- package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +1 -1
- package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/extension-editor.js +6 -6
- package/dist/integrations/pi/components/upstream/components/extension-input.js +4 -4
- package/dist/integrations/pi/components/upstream/components/extension-selector.js +4 -4
- package/dist/integrations/pi/components/upstream/components/mermaid.js +1 -1
- package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +5 -5
- package/dist/integrations/pi/components/upstream/components/owned-editor.js +8 -5
- package/dist/integrations/pi/components/upstream/components/pi-logo.js +1 -1
- package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +3 -3
- package/dist/integrations/pi/components/upstream/components/session-footer.js +1 -1
- package/dist/integrations/pi/components/upstream/components/session-selector-search.js +1 -1
- package/dist/integrations/pi/components/upstream/components/session-selector.js +9 -9
- package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +3 -2
- package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +6 -3
- package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/status-indicator.js +1 -1
- package/dist/integrations/pi/components/upstream/components/themed-text.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/themed-text.js +1 -1
- package/dist/integrations/pi/components/upstream/components/thinking-selector.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/thinking-selector.js +2 -2
- package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +4 -0
- package/dist/integrations/pi/components/upstream/components/tool-execution.js +11 -1
- package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +2 -2
- package/dist/integrations/pi/components/upstream/components/tree-selector.js +27 -18
- package/dist/integrations/pi/components/upstream/components/trust-selector.js +1 -1
- package/dist/integrations/pi/components/upstream/external-editor.js +1 -1
- package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +4 -4
- package/dist/integrations/pi/components/upstream/history/editor-core.js +11 -7
- package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/history/kill-ring.js +1 -1
- package/dist/integrations/pi/components/upstream/history/printable-key.js +1 -1
- package/dist/integrations/pi/components/upstream/history/text-helpers.js +1 -1
- package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/history/undo-stack.js +1 -1
- package/dist/integrations/pi/components/upstream/history/word-navigation.js +1 -1
- package/dist/integrations/pi/components/upstream/model-search.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/program-status-reporter.d.ts +31 -0
- package/dist/integrations/pi/components/upstream/program-status-reporter.js +89 -0
- package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/theme/theme.d.ts +22 -1
- package/dist/integrations/pi/components/upstream/theme/theme.js +225 -10
- package/dist/integrations/pi/engine/adapter.d.ts +44 -24
- package/dist/integrations/pi/engine/adapter.js +130 -22
- package/dist/integrations/pi/engine/command-dispatch.d.ts +2 -5
- package/dist/integrations/pi/engine/extension-ui-binding.d.ts +2 -11
- package/dist/integrations/pi/engine/host-ports.d.ts +20 -0
- package/dist/integrations/pi/engine/host-ports.js +13 -0
- package/dist/integrations/pi/engine/host.d.ts +70 -0
- package/dist/integrations/pi/engine/host.js +147 -0
- package/dist/integrations/pi/engine/index.d.ts +8 -4
- package/dist/integrations/pi/engine/index.js +3 -1
- package/dist/integrations/pi/engine/pi-settings-metadata.json +1 -1
- package/dist/integrations/pi/engine/resource-catalog.d.ts +4 -23
- package/dist/integrations/pi/engine/resources/changelog.json +4 -4
- package/dist/integrations/pi/engine/runtime-integration.d.ts +8 -2
- package/dist/integrations/pi/engine/runtime-integration.js +12 -7
- package/dist/integrations/pi/engine/session-events.js +10 -2
- package/dist/integrations/pi/engine/session-integration.d.ts +3 -8
- package/dist/integrations/pi/engine/session-integration.js +0 -49
- package/dist/integrations/pi/engine/session-runtime.d.ts +18 -3
- package/dist/integrations/pi/engine/session-runtime.js +18 -7
- package/dist/integrations/pi/engine/settings-bridge.d.ts +2 -2
- package/dist/integrations/pi/engine/settings-bridge.js +0 -2
- package/dist/integrations/pi/engine/settings-port.d.ts +2 -0
- package/dist/integrations/pi/engine/settings-port.js +3 -5
- package/dist/integrations/pi/engine/transcript-projection.js +2 -1
- package/dist/integrations/pi/engine/workflows.d.ts +33 -260
- package/dist/integrations/pi/engine/workflows.js +6 -28
- package/dist/integrations/pi/session-presenters/index.d.ts +2 -0
- package/dist/integrations/pi/session-presenters/index.js +1 -0
- package/dist/integrations/pi/session-presenters/presenters.d.ts +16 -0
- package/dist/integrations/pi/session-presenters/presenters.js +341 -0
- package/dist/integrations/pi/startup-public.js +306 -290
- package/dist/integrations/pi/startup-public.manifest.json +289 -265
- package/dist/integrations/pi/tui-runtime/adapter.d.ts +2 -1
- package/dist/integrations/pi/tui-runtime/adapter.js +7 -2
- package/dist/integrations/pi/tui-runtime/contracts.d.ts +3 -1
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +8 -1
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +67 -2
- package/dist/integrations/pi/tui-runtime/index.d.ts +1 -1
- package/dist/integrations/pi/tui-runtime/index.js +1 -1
- package/dist/native/darwin-arm64/manifest.json +1 -1
- package/dist/native/linux-x64/manifest.json +1 -1
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/native/win32-x64/process-guardian.exe +0 -0
- package/dist/product-identity.d.ts +2 -2
- package/dist/product-identity.js +2 -2
- package/dist/product-identity.json +3 -1
- package/dist/runtime-payload-inventory.json +3092 -2878
- package/dist/ui/components/prompt-input.d.ts +2 -0
- package/dist/ui/components/prompt-input.js +5 -1
- package/dist/ui/components/text-selection.d.ts +1 -1
- package/dist/ui/components/text-selection.js +3 -1
- package/dist/ui/components/theme.d.ts +2 -0
- package/dist/ui/components/transcript-viewport.d.ts +6 -4
- package/dist/ui/components/transcript-viewport.js +94 -16
- package/dist/ui/components/value-menu.d.ts +2 -0
- package/dist/ui/components/value-menu.js +13 -8
- package/dist/ui/settings/declarations.d.ts +38 -14
- package/dist/ui/settings/declarations.js +35 -11
- package/dist/ui/settings/migrations.js +23 -0
- package/docs/architecture/boundaries.md +9 -1
- package/docs/architecture/project-structure.md +7 -5
- package/docs/architecture/prompt-suggestions.md +14 -10
- package/docs/local-worktree-cleanup.md +11 -5
- package/docs/openspec-archive-automation.md +6 -5
- package/package.json +3 -3
- package/dist/contracts/agent-engine/model.d.ts +0 -78
- package/dist/contracts/agent-engine/model.js +0 -1
- package/dist/contracts/agent-engine/ports.d.ts +0 -18
- package/dist/contracts/agent-engine/serialization.d.ts +0 -7
- package/dist/contracts/agent-engine/serialization.js +0 -58
- package/dist/contracts/agent-engine/validation.d.ts +0 -5
- package/dist/contracts/agent-engine/validation.js +0 -128
- package/dist/integrations/pi/components/upstream/theme/system-theme.d.ts +0 -61
- package/dist/integrations/pi/components/upstream/theme/system-theme.js +0 -709
- /package/dist/contracts/{agent-engine/ports.js → owned-ui/session-backend.js} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/custom-editor.ts.
|
|
4
4
|
* Modifications: A1-owned class name and synchronized A1 keybinding contract replace the nominal
|
|
5
5
|
* private upstream keybinding constructor dependency; bare A1 injects the shared Settings/agent input
|
|
6
6
|
* frame, transient contextual-suggestion branch, and explicit body geometry for selection and
|
|
7
|
-
* above-prompt autocomplete. Bare A1 also clears a sole top-level
|
|
8
|
-
*
|
|
9
|
-
* tunnel rows, and synchronously retains then refreshes an exact top-level
|
|
10
|
-
* applies its row.
|
|
7
|
+
* above-prompt autocomplete with a one-cell outer gutter. Bare A1 also clears a sole top-level
|
|
8
|
+
* slash-command search on Escape and completes a selected or exact completed tunnel command with `:`
|
|
9
|
+
* and reopens the menu on its tunnel rows, and synchronously retains then refreshes an exact top-level
|
|
10
|
+
* command menu after Tab applies its row.
|
|
11
11
|
* Deviations: owned-shared-input-frame, above-prompt-autocomplete-placement,
|
|
12
12
|
* clear-command-search-on-escape, command-tunnel-colon-completion, keep-command-menu-open-after-tab.
|
|
13
13
|
*/
|
|
@@ -211,6 +211,9 @@ export function createOwnedEditorClass(Base) {
|
|
|
211
211
|
topRule: rows[0],
|
|
212
212
|
bottomRule: rows[bottomBorder],
|
|
213
213
|
after: rows.slice(bottomBorder + 1),
|
|
214
|
+
// Align autocomplete's outer marker with the one-cell working-status gutter;
|
|
215
|
+
// prompt text keeps the complete two-cell `❯ ` prefix.
|
|
216
|
+
afterIndent: 1,
|
|
214
217
|
};
|
|
215
218
|
}, true, this.getPaddingX());
|
|
216
219
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/pi-logo.ts.
|
|
4
4
|
* Modifications: Remapped the private theme import to A1's public-backed adapter and composed the
|
|
5
5
|
* fixed-color logo into the owned startup header.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/scoped-models-selector.ts.
|
|
4
4
|
* Modifications: Source-synchronized scoped-model selector port: preserve session-only toggles,
|
|
5
5
|
* search, bulk/provider/reorder actions, dirty state, Ctrl+S persistence, refresh status,
|
|
@@ -2,7 +2,7 @@ import { Container, fuzzyFilter, getKeybindings, Input, Spacer, Text, } from "@e
|
|
|
2
2
|
import { DynamicBorder } from "../../../startup-public.js";
|
|
3
3
|
import { getModelSearchText } from "../model-search.js";
|
|
4
4
|
import { addPiModalHeader, adoptPiModalFrame } from "../../modal-frame.js";
|
|
5
|
-
import { DIALOG_CLOSE_SHORTCUT_HINT, piTheme, renderPiModalShortcutHints } from "../../theme.js";
|
|
5
|
+
import { DIALOG_CLOSE_SHORTCUT_HINT, paintPiBorder, piTheme, renderPiModalShortcutHints } from "../../theme.js";
|
|
6
6
|
// Rationale: upstream's capitalized hint formatter is private to the package; the same mapping lives here.
|
|
7
7
|
function keyDisplayText(keybinding) {
|
|
8
8
|
return getKeybindings().getKeys(keybinding)
|
|
@@ -111,7 +111,7 @@ export class ScopedModelsSelectorComponent extends Container {
|
|
|
111
111
|
this.enabledIds = config.enabledModelIds === null ? null : [...config.enabledModelIds];
|
|
112
112
|
this.filteredItems = this.buildItems();
|
|
113
113
|
// Header
|
|
114
|
-
const header = addPiModalHeader(this, new DynamicBorder(), new Text(theme.fg("accent", theme.bold("Model Configuration")), 0, 0));
|
|
114
|
+
const header = addPiModalHeader(this, new DynamicBorder(paintPiBorder), new Text(theme.fg("accent", theme.bold("Model Configuration")), 0, 0));
|
|
115
115
|
const saveKey = keyDisplayText("app.models.save");
|
|
116
116
|
this.addChild(new Text(theme.fg("muted", "Session-only.")
|
|
117
117
|
+ (saveKey ? ` ${renderPiModalShortcutHints([{ key: saveKey, action: "to save to settings." }])}` : ""), 0, 0));
|
|
@@ -131,7 +131,7 @@ export class ScopedModelsSelectorComponent extends Container {
|
|
|
131
131
|
}
|
|
132
132
|
this.footerText = new Text(this.getFooterText(), 0, 0);
|
|
133
133
|
this.addChild(this.footerText);
|
|
134
|
-
this.addChild(new DynamicBorder());
|
|
134
|
+
this.addChild(new DynamicBorder(paintPiBorder));
|
|
135
135
|
adoptPiModalFrame(this, { topIndex: 0, bottomIndex: this.children.length - 1, header });
|
|
136
136
|
this.updateList();
|
|
137
137
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/footer.ts.
|
|
4
4
|
* Modifications: Consumes neutral owned-UI view data instead of a fabricated concrete AgentSession;
|
|
5
5
|
* preserves the latest physical route for virtual models; an explicit bare-A1 profile colors the
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/session-selector-search.ts.
|
|
4
4
|
* Modifications: Source-synchronized session search port with only the public SessionInfo type import
|
|
5
5
|
* remapped.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/session-selector.ts.
|
|
4
4
|
* Modifications: Source-synchronized session selector port: preserve threaded/current/all scope,
|
|
5
5
|
* search, sort, named/path filters, rename, delete confirmation, active-session protection,
|
|
@@ -21,7 +21,7 @@ import { Container, getKeybindings, Input, matchesKey, sliceByColumn, Spacer, Te
|
|
|
21
21
|
import { KeybindingsManager } from "../adjacent/core/keybindings.js";
|
|
22
22
|
import { DynamicBorder } from "../../../startup-public.js";
|
|
23
23
|
import { addPiModalHeader, adoptPiModalFrame } from "../../modal-frame.js";
|
|
24
|
-
import { DIALOG_CLOSE_SHORTCUT_HINT, piTheme, renderPiModalShortcutHints } from "../../theme.js";
|
|
24
|
+
import { DIALOG_CLOSE_SHORTCUT_HINT, paintPiBorder, piTheme, renderPiModalShortcutHints } from "../../theme.js";
|
|
25
25
|
const theme = new Proxy({}, {
|
|
26
26
|
get(_target, property) {
|
|
27
27
|
const active = piTheme();
|
|
@@ -163,12 +163,12 @@ class SessionSelectorHeader {
|
|
|
163
163
|
render(width) {
|
|
164
164
|
const title = theme.fg("accent", theme.bold("Resume Session"));
|
|
165
165
|
const scopeText = theme.fg("muted", "Filter: ")
|
|
166
|
-
+ theme.fg(this.scope === "current" ? "
|
|
166
|
+
+ theme.fg(this.scope === "current" ? "mdHeading" : "dim", "current")
|
|
167
167
|
+ theme.fg("muted", " | ")
|
|
168
|
-
+ theme.fg(this.scope === "all" ? "
|
|
169
|
-
const nameText = theme.fg("muted", "Name: ") + theme.fg("
|
|
168
|
+
+ theme.fg(this.scope === "all" ? "mdHeading" : "dim", "all");
|
|
169
|
+
const nameText = theme.fg("muted", "Name: ") + theme.fg("mdHeading", this.nameFilter);
|
|
170
170
|
const sortLabel = this.sortMode === "relevance" ? "fuzzy" : this.sortMode;
|
|
171
|
-
const sortText = theme.fg("muted", "Sort: ") + theme.fg("
|
|
171
|
+
const sortText = theme.fg("muted", "Sort: ") + theme.fg("mdHeading", sortLabel);
|
|
172
172
|
const status = `${scopeText} ${nameText} ${sortText}`;
|
|
173
173
|
return [truncateToWidth(title, width, ""), truncateToWidth(status, width, "")];
|
|
174
174
|
}
|
|
@@ -691,16 +691,16 @@ export class SessionSelectorComponent extends Container {
|
|
|
691
691
|
this.clear();
|
|
692
692
|
const showHeader = options?.showHeader ?? true;
|
|
693
693
|
const modalHeader = showHeader
|
|
694
|
-
? addPiModalHeader(this, new DynamicBorder(), this.header)
|
|
694
|
+
? addPiModalHeader(this, new DynamicBorder(paintPiBorder), this.header)
|
|
695
695
|
: undefined;
|
|
696
696
|
if (!showHeader)
|
|
697
|
-
this.addChild(new DynamicBorder());
|
|
697
|
+
this.addChild(new DynamicBorder(paintPiBorder));
|
|
698
698
|
this.addChild(new Spacer(1));
|
|
699
699
|
this.addChild(content);
|
|
700
700
|
this.addChild(new Spacer(1));
|
|
701
701
|
if (showHeader)
|
|
702
702
|
this.addChild(this.footer);
|
|
703
|
-
this.addChild(new DynamicBorder());
|
|
703
|
+
this.addChild(new DynamicBorder(paintPiBorder));
|
|
704
704
|
const frame = { topIndex: 0, bottomIndex: this.children.length - 1 };
|
|
705
705
|
if (modalHeader === undefined)
|
|
706
706
|
adoptPiModalFrame(this, frame);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/skill-invocation-message.ts.
|
|
4
4
|
* Modifications: Mechanical port uses A1's public pi-tui instance, owned theme boundary, and
|
|
5
5
|
* root-instance keybinding registry because the public coding-agent component closes over a second
|
|
@@ -15,7 +15,8 @@ export declare class SkillInvocationMessageComponent extends Box {
|
|
|
15
15
|
#private;
|
|
16
16
|
private readonly skillBlock;
|
|
17
17
|
private readonly markdownTheme;
|
|
18
|
-
constructor(skillBlock: SkillInvocationBlock, markdownTheme: MarkdownTheme);
|
|
18
|
+
constructor(skillBlock: SkillInvocationBlock, markdownTheme: MarkdownTheme, outputPad?: number);
|
|
19
19
|
setExpanded(expanded: boolean): void;
|
|
20
|
+
setOutputPad(outputPad: number): void;
|
|
20
21
|
invalidate(): void;
|
|
21
22
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/skill-invocation-message.ts.
|
|
4
4
|
* Modifications: Mechanical port uses A1's public pi-tui instance, owned theme boundary, and
|
|
5
5
|
* root-instance keybinding registry because the public coding-agent component closes over a second
|
|
@@ -12,8 +12,8 @@ export class SkillInvocationMessageComponent extends Box {
|
|
|
12
12
|
#expanded = false;
|
|
13
13
|
skillBlock;
|
|
14
14
|
markdownTheme;
|
|
15
|
-
constructor(skillBlock, markdownTheme) {
|
|
16
|
-
super(
|
|
15
|
+
constructor(skillBlock, markdownTheme, outputPad = 1) {
|
|
16
|
+
super(outputPad, 1, text => piTheme().bg("customMessageBg", text));
|
|
17
17
|
this.skillBlock = skillBlock;
|
|
18
18
|
this.markdownTheme = markdownTheme;
|
|
19
19
|
this.#updateDisplay();
|
|
@@ -22,6 +22,9 @@ export class SkillInvocationMessageComponent extends Box {
|
|
|
22
22
|
this.#expanded = expanded;
|
|
23
23
|
this.#updateDisplay();
|
|
24
24
|
}
|
|
25
|
+
setOutputPad(outputPad) {
|
|
26
|
+
this.setPaddingX(outputPad);
|
|
27
|
+
}
|
|
25
28
|
invalidate() {
|
|
26
29
|
super.invalidate();
|
|
27
30
|
this.#updateDisplay();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/status-indicator.ts.
|
|
4
4
|
* Modifications: Mechanical source port with public package-root keybinding, Loader, and owned
|
|
5
5
|
* theme/countdown imports plus ECMAScript private fields.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/status-indicator.ts.
|
|
4
4
|
* Modifications: Mechanical source port with public package-root keybinding, Loader, and owned
|
|
5
5
|
* theme/countdown imports plus ECMAScript private fields.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/themed-text.ts.
|
|
4
4
|
* Modifications: Integrated invalidation-aware text into A1's owned startup header and notices;
|
|
5
5
|
* repository formatting only.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/themed-text.ts.
|
|
4
4
|
* Modifications: Integrated invalidation-aware text into A1's owned startup header and notices;
|
|
5
5
|
* repository formatting only.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/thinking-selector.ts.
|
|
4
4
|
* Modifications: Preserve the searchable thinking-level selector, current/default semantics,
|
|
5
5
|
* selection, and focus while accepting the active bare-A1 cycle-key label from the shell, styling the
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/thinking-selector.ts.
|
|
4
4
|
* Modifications: Preserve the searchable thinking-level selector, current/default semantics,
|
|
5
5
|
* selection, and focus while accepting the active bare-A1 cycle-key label from the shell, styling the
|
|
@@ -116,7 +116,7 @@ export class OwnedThinkingSelectorComponent extends Container {
|
|
|
116
116
|
buildSelectList(items, preselect) {
|
|
117
117
|
const theme = piTheme();
|
|
118
118
|
const levelWidth = this.allItems.reduce((widest, item) => Math.max(widest, (item.label ?? item.value).length), 0);
|
|
119
|
-
const selectedDefaultMarker = theme.fg("
|
|
119
|
+
const selectedDefaultMarker = theme.fg("text", "◉");
|
|
120
120
|
const unselectedDefaultMarker = theme.fg("dim", "○");
|
|
121
121
|
const themedItems = items.map((item) => {
|
|
122
122
|
const level = item.label ?? item.value;
|
|
@@ -2,6 +2,7 @@ import { Container, type TUI, type TuiMouseEvent } from "@earendil-works/pi-tui"
|
|
|
2
2
|
import { type ToolDefinition, type ToolRenderers } from "@earendil-works/pi-coding-agent";
|
|
3
3
|
type ToolPresentationResult = Parameters<NonNullable<ToolDefinition["renderResult"]>>[0] & {
|
|
4
4
|
isError: boolean;
|
|
5
|
+
durationMs?: number;
|
|
5
6
|
};
|
|
6
7
|
/** The caller-side merge 0.85.1 performs before handing a definition to the component: built-in renderers fill the gaps. */
|
|
7
8
|
type ToolRendererInput = ToolRenderers | ToolDefinition<any, any, any>;
|
|
@@ -9,6 +10,7 @@ export declare function mergeBuiltInRenderers(definition: ToolRendererInput | un
|
|
|
9
10
|
export interface ToolExecutionOptions {
|
|
10
11
|
showImages?: boolean;
|
|
11
12
|
imageWidthCells?: number;
|
|
13
|
+
outputPad?: number;
|
|
12
14
|
}
|
|
13
15
|
export declare class ToolExecutionComponent extends Container {
|
|
14
16
|
private contentBox;
|
|
@@ -30,6 +32,7 @@ export declare class ToolExecutionComponent extends Container {
|
|
|
30
32
|
private expanded;
|
|
31
33
|
private showImages;
|
|
32
34
|
private imageWidthCells;
|
|
35
|
+
private outputPad;
|
|
33
36
|
private isPartial;
|
|
34
37
|
private toolDefinition;
|
|
35
38
|
private builtInToolDefinition;
|
|
@@ -55,6 +58,7 @@ export declare class ToolExecutionComponent extends Container {
|
|
|
55
58
|
/** End mount ownership without letting an obsolete conversion or extension callback repaint. */
|
|
56
59
|
dispose(): void;
|
|
57
60
|
setExpanded(expanded: boolean): void;
|
|
61
|
+
setOutputPad(outputPad: number): void;
|
|
58
62
|
setShowImages(show: boolean): void;
|
|
59
63
|
setImageWidthCells(width: number): void;
|
|
60
64
|
invalidate(): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/tool-execution.ts.
|
|
4
4
|
* Modifications: Retain pinned shell and actual public tool-definition renderers. Replace private
|
|
5
5
|
* index-keyed image conversion with current-source ownership, serial conversion, visible fallback, and
|
|
@@ -73,6 +73,7 @@ export class ToolExecutionComponent extends Container {
|
|
|
73
73
|
expanded = false;
|
|
74
74
|
showImages;
|
|
75
75
|
imageWidthCells;
|
|
76
|
+
outputPad;
|
|
76
77
|
isPartial = true;
|
|
77
78
|
toolDefinition;
|
|
78
79
|
builtInToolDefinition;
|
|
@@ -94,6 +95,7 @@ export class ToolExecutionComponent extends Container {
|
|
|
94
95
|
this.toolDefinition = mergeBuiltInRenderers(toolDefinition, this.builtInToolDefinition);
|
|
95
96
|
this.showImages = options.showImages ?? true;
|
|
96
97
|
this.imageWidthCells = options.imageWidthCells ?? 60;
|
|
98
|
+
this.outputPad = options.outputPad ?? 1;
|
|
97
99
|
this.ui = ui;
|
|
98
100
|
this.cwd = cwd;
|
|
99
101
|
this.images = new ToolImagePresentation(() => {
|
|
@@ -149,6 +151,8 @@ export class ToolExecutionComponent extends Container {
|
|
|
149
151
|
expanded: this.expanded,
|
|
150
152
|
showImages: this.showImages,
|
|
151
153
|
isError: this.result?.isError ?? false,
|
|
154
|
+
durationMs: this.isPartial ? undefined : this.result?.durationMs,
|
|
155
|
+
outputPad: this.outputPad,
|
|
152
156
|
};
|
|
153
157
|
}
|
|
154
158
|
createCallFallback() {
|
|
@@ -212,6 +216,10 @@ export class ToolExecutionComponent extends Container {
|
|
|
212
216
|
this.expanded = expanded;
|
|
213
217
|
this.updateDisplay();
|
|
214
218
|
}
|
|
219
|
+
setOutputPad(outputPad) {
|
|
220
|
+
this.outputPad = outputPad;
|
|
221
|
+
this.updateDisplay();
|
|
222
|
+
}
|
|
215
223
|
setShowImages(show) {
|
|
216
224
|
this.showImages = show;
|
|
217
225
|
this.updateDisplay();
|
|
@@ -288,6 +296,7 @@ export class ToolExecutionComponent extends Container {
|
|
|
288
296
|
const renderContainer = this.getRenderShell() === "self" ? this.selfRenderContainer : this.contentBox;
|
|
289
297
|
if (renderContainer instanceof Box) {
|
|
290
298
|
renderContainer.setBgFn(bgFn);
|
|
299
|
+
renderContainer.setPaddingX(this.outputPad);
|
|
291
300
|
}
|
|
292
301
|
renderContainer.clear();
|
|
293
302
|
const callRenderer = this.getCallRenderer();
|
|
@@ -337,6 +346,7 @@ export class ToolExecutionComponent extends Container {
|
|
|
337
346
|
}
|
|
338
347
|
else {
|
|
339
348
|
this.contentText.setCustomBgFn(bgFn);
|
|
349
|
+
this.contentText.setPaddingX(this.outputPad);
|
|
340
350
|
this.contentText.setText(this.formatToolExecution());
|
|
341
351
|
hasContent = true;
|
|
342
352
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/tree-selector.ts.
|
|
4
4
|
* Modifications: Port remaps public types/components plus owned keybindings/theme helpers while
|
|
5
5
|
* preserving tree behavior; bare A1 uses compact modal chrome and label editing, four-mode
|
|
6
6
|
* Models-style filter status with Tab/Shift+Tab directional cycling and concise all-first presentation
|
|
7
|
-
* excluding internal bookkeeping, standard search input, blue
|
|
7
|
+
* excluding internal bookkeeping, standard search input, blue full-row menu-arrow selection that
|
|
8
8
|
* preserves per-entry semantic foregrounds and has no path bullets, accent entry labels, bracketed
|
|
9
9
|
* timestamps, numeric result counters without duplicate label-time status, and a stateful time on/off
|
|
10
10
|
* shortcut, semantic role colors with session naming for the system root, standard
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/tree-selector.ts.
|
|
4
4
|
* Modifications: Port remaps public types/components plus owned keybindings/theme helpers while
|
|
5
5
|
* preserving tree behavior; bare A1 uses compact modal chrome and label editing, four-mode
|
|
6
6
|
* Models-style filter status with Tab/Shift+Tab directional cycling and concise all-first presentation
|
|
7
|
-
* excluding internal bookkeeping, standard search input, blue
|
|
7
|
+
* excluding internal bookkeeping, standard search input, blue full-row menu-arrow selection that
|
|
8
8
|
* preserves per-entry semantic foregrounds and has no path bullets, accent entry labels, bracketed
|
|
9
9
|
* timestamps, numeric result counters without duplicate label-time status, and a stateful time on/off
|
|
10
10
|
* shortcut, semantic role colors with session naming for the system root, standard
|
|
@@ -18,7 +18,7 @@ import { Container, Input, matchesKey, Spacer, sliceByColumn, Text, truncateToWi
|
|
|
18
18
|
import { DynamicBorder } from "../../../startup-public.js";
|
|
19
19
|
import { KeybindingsManager } from "../adjacent/core/keybindings.js";
|
|
20
20
|
import { addPiModalHeader, adoptPiModalFrame } from "../../modal-frame.js";
|
|
21
|
-
import { DIALOG_CLOSE_SHORTCUT_HINT, piTheme, renderPiModalShortcutHints } from "../../theme.js";
|
|
21
|
+
import { DIALOG_CLOSE_SHORTCUT_HINT, paintPiBorder, piTheme, renderPiModalShortcutHints } from "../../theme.js";
|
|
22
22
|
const theme = new Proxy({}, {
|
|
23
23
|
get(_target, property) {
|
|
24
24
|
const active = piTheme();
|
|
@@ -41,6 +41,19 @@ const MIN_VISIBLE_ANCHOR_CONTENT_WIDTH = 4;
|
|
|
41
41
|
const MAX_VISIBLE_ANCHOR_CONTENT_WIDTH = 20;
|
|
42
42
|
const MIN_ANCHOR_CONTEXT_WIDTH = 2;
|
|
43
43
|
const MAX_ANCHOR_CONTEXT_WIDTH = 12;
|
|
44
|
+
/** Fit and paint a selected viewport row without letting nested SGR changes clear its background. */
|
|
45
|
+
function renderSelectedViewportRow(value, width) {
|
|
46
|
+
const availableWidth = Math.max(0, width);
|
|
47
|
+
const clipped = truncateToWidth(value, availableWidth, "");
|
|
48
|
+
const fitted = `${clipped}${" ".repeat(Math.max(0, availableWidth - visibleWidth(clipped)))}`;
|
|
49
|
+
const marker = "\u0000";
|
|
50
|
+
const wrapper = theme.bg("selectedBg", marker);
|
|
51
|
+
const markerIndex = wrapper.indexOf(marker);
|
|
52
|
+
const on = wrapper.slice(0, markerIndex);
|
|
53
|
+
const off = wrapper.slice(markerIndex + marker.length);
|
|
54
|
+
const reasserted = fitted.replace(/\u001b\[[0-?]*[ -/]*m/gu, sequence => `${sequence}${on}`);
|
|
55
|
+
return `${on}${reasserted}${off}`;
|
|
56
|
+
}
|
|
44
57
|
/**
|
|
45
58
|
* Render tree rows into a horizontally clipped viewport.
|
|
46
59
|
*
|
|
@@ -64,20 +77,20 @@ function renderHorizontalViewport(rows, width) {
|
|
|
64
77
|
}
|
|
65
78
|
// Clip only the body; the fixed-width gutter remains visible as navigation context.
|
|
66
79
|
return rows.map((row) => {
|
|
67
|
-
if (viewportWidth === 0)
|
|
68
|
-
|
|
80
|
+
if (viewportWidth === 0) {
|
|
81
|
+
const gutter = truncateToWidth(row.gutter, width, "");
|
|
82
|
+
return row.isSelected ? renderSelectedViewportRow(gutter, width) : gutter;
|
|
83
|
+
}
|
|
69
84
|
const leftClipped = horizontalScroll > 0;
|
|
70
85
|
const widthAfterLeftMarker = Math.max(0, viewportWidth - (leftClipped ? 1 : 0));
|
|
71
86
|
const rightClipped = row.bodyWidth - horizontalScroll > widthAfterLeftMarker;
|
|
72
87
|
const rightMarkerText = `…${row.rightClipSuffix}`;
|
|
73
88
|
const rightMarkerWidth = rightClipped ? visibleWidth(rightMarkerText) : 0;
|
|
74
89
|
const bodyWidth = Math.max(0, widthAfterLeftMarker - rightMarkerWidth);
|
|
75
|
-
const marker = (text) =>
|
|
76
|
-
? theme.bg("selectedBg", theme.fg("muted", text))
|
|
77
|
-
: theme.fg("muted", text);
|
|
90
|
+
const marker = (text) => theme.fg("muted", text);
|
|
78
91
|
const body = sliceByColumn(row.body, horizontalScroll, bodyWidth, true);
|
|
79
92
|
const line = `${row.gutter}${leftClipped ? marker("…") : ""}${body}${rightClipped ? marker(rightMarkerText) : ""}\x1b[0m`;
|
|
80
|
-
return truncateToWidth(line, width, "");
|
|
93
|
+
return row.isSelected ? renderSelectedViewportRow(line, width) : truncateToWidth(line, width, "");
|
|
81
94
|
});
|
|
82
95
|
}
|
|
83
96
|
const FILTER_MODES = ["all", "no-tools", "user-only", "labeled-only"];
|
|
@@ -620,12 +633,8 @@ class TreeList {
|
|
|
620
633
|
const content = this.getEntryDisplayText(flatNode.node);
|
|
621
634
|
const prefixPart = theme.fg("dim", prefix) + foldMarker;
|
|
622
635
|
const anchorCol = visibleWidth(prefixPart);
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
if (isSelected) {
|
|
626
|
-
gutter = theme.bg("selectedBg", gutter);
|
|
627
|
-
body = theme.bg("selectedBg", body);
|
|
628
|
-
}
|
|
636
|
+
const gutter = cursor;
|
|
637
|
+
const body = prefixPart + label + labelTimestamp + content;
|
|
629
638
|
const rightClipSuffix = entry.type === "message" && entry.message.role === "toolResult" ? "]" : "";
|
|
630
639
|
renderedRows.push({ gutter, body, anchorCol, bodyWidth: visibleWidth(body), rightClipSuffix, isSelected });
|
|
631
640
|
}
|
|
@@ -1088,7 +1097,7 @@ class TreeFilter {
|
|
|
1088
1097
|
invalidate() { }
|
|
1089
1098
|
render(width) {
|
|
1090
1099
|
const active = this.treeList.getFilterMode();
|
|
1091
|
-
const choices = FILTER_MODES.map((mode) => theme.fg(mode === active ? "
|
|
1100
|
+
const choices = FILTER_MODES.map((mode) => theme.fg(mode === active ? "mdHeading" : "muted", FILTER_LABELS[mode]));
|
|
1092
1101
|
return [truncateToWidth(theme.fg("muted", "Filter: ") + choices.join(theme.fg("muted", " | ")), width)];
|
|
1093
1102
|
}
|
|
1094
1103
|
}
|
|
@@ -1269,12 +1278,12 @@ export class TreeSelectorComponent extends Container {
|
|
|
1269
1278
|
this.treeHelp = new TreeHelp(this.treeList);
|
|
1270
1279
|
this.titleText = new Text(theme.fg("accent", theme.bold("Session Tree")), 0, 0);
|
|
1271
1280
|
this.restoreTreeContent();
|
|
1272
|
-
const header = addPiModalHeader(this, new DynamicBorder(), this.titleText);
|
|
1281
|
+
const header = addPiModalHeader(this, new DynamicBorder(paintPiBorder), this.titleText);
|
|
1273
1282
|
this.addChild(this.searchInputContainer);
|
|
1274
1283
|
this.addChild(this.treeContainer);
|
|
1275
1284
|
this.addChild(this.labelInputContainer);
|
|
1276
1285
|
this.addChild(this.footerContainer);
|
|
1277
|
-
this.addChild(new DynamicBorder());
|
|
1286
|
+
this.addChild(new DynamicBorder(paintPiBorder));
|
|
1278
1287
|
adoptPiModalFrame(this, {
|
|
1279
1288
|
topIndex: 0,
|
|
1280
1289
|
bottomIndex: this.children.length - 1,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/trust-selector.ts.
|
|
4
4
|
* Modifications: Mechanical source-synchronized trust selector port with injected public
|
|
5
5
|
* ProjectTrustStore-derived options, remapped owned theme imports, the shared bare-A1 modal shortcut
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/external-editor.ts.
|
|
4
4
|
* Modifications: Mechanical port: retain temporary prompt file, asynchronous inherited-stdio editor
|
|
5
5
|
* process, completion readback, and best-effort cleanup behind the owned extension-editor component.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-tui 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-tui 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/tui/src/components/editor.ts.
|
|
4
4
|
* Modifications: Owned editor core or minimal editor-local helper subset; public imports, strict
|
|
5
5
|
* types, typed persistent-history hooks, semantic border state with the user-approved numeric-only
|
|
6
|
-
* history label and separate centered history-overflow cue, and history-count
|
|
7
|
-
* placement within recalled multiline text. Public terminal runtime/exports
|
|
8
|
-
* unchanged. See docs/architecture/history-editor-provenance.md.
|
|
6
|
+
* history label with a three-cell inset and separate centered history-overflow cue, and history-count
|
|
7
|
+
* retention during cursor placement within recalled multiline text. Public terminal runtime/exports
|
|
8
|
+
* remain shared and unchanged. See docs/architecture/history-editor-provenance.md.
|
|
9
9
|
* Deviations: compact-history-counter-label, history-overflow-cue-separation,
|
|
10
10
|
* history-recall-cursor-retention, persistent-history-owned-editor-boundary.
|
|
11
11
|
*/
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-tui 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-tui 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/tui/src/components/editor.ts.
|
|
4
4
|
* Modifications: Owned editor core or minimal editor-local helper subset; public imports, strict
|
|
5
5
|
* types, typed persistent-history hooks, semantic border state with the user-approved numeric-only
|
|
6
|
-
* history label and separate centered history-overflow cue, and history-count
|
|
7
|
-
* placement within recalled multiline text. Public terminal runtime/exports
|
|
8
|
-
* unchanged. See docs/architecture/history-editor-provenance.md.
|
|
6
|
+
* history label with a three-cell inset and separate centered history-overflow cue, and history-count
|
|
7
|
+
* retention during cursor placement within recalled multiline text. Public terminal runtime/exports
|
|
8
|
+
* remain shared and unchanged. See docs/architecture/history-editor-provenance.md.
|
|
9
9
|
* Deviations: compact-history-counter-label, history-overflow-cue-separation,
|
|
10
10
|
* history-recall-cursor-retention, persistent-history-owned-editor-boundary.
|
|
11
11
|
*/
|
|
@@ -191,6 +191,8 @@ function buildDebouncePattern(triggerCharacters) {
|
|
|
191
191
|
const escapedWithoutAt = triggerCharacters.filter((character) => character !== "@").map(escapeCharacterClass);
|
|
192
192
|
return new RegExp(`${autocompleteTokenStartSource}(?:@(?:"[^"]*|${unquotedAutocompleteSuffixRegex.source})|[${escapedWithoutAt.join("")}]${unquotedAutocompleteSuffixRegex.source})$`, "u");
|
|
193
193
|
}
|
|
194
|
+
const HISTORY_COUNTER_INSET = 3;
|
|
195
|
+
const HISTORY_COUNTER_PREFIX = "── ";
|
|
194
196
|
function createScrollBorder(direction, hiddenLineCount, width, minimumCueStart = 0) {
|
|
195
197
|
const availableWidth = Math.max(0, width);
|
|
196
198
|
const label = ` ${direction} ${hiddenLineCount} more `;
|
|
@@ -491,7 +493,7 @@ export class HistoryEditorCore {
|
|
|
491
493
|
if (this.persistentHistory && this.historyIndex >= 0) {
|
|
492
494
|
const history = `${this.history.length - this.historyIndex}/${this.history.length} `;
|
|
493
495
|
if (hiddenLineCount > 0) {
|
|
494
|
-
const historyStart =
|
|
496
|
+
const historyStart = HISTORY_COUNTER_INSET;
|
|
495
497
|
const historyEnd = historyStart + visibleWidth(history);
|
|
496
498
|
const historyAnchorStart = historyStart - 1;
|
|
497
499
|
if (historyEnd <= width) {
|
|
@@ -501,10 +503,12 @@ export class HistoryEditorCore {
|
|
|
501
503
|
+ this.borderColor(border.slice(historyEnd));
|
|
502
504
|
}
|
|
503
505
|
}
|
|
504
|
-
const label =
|
|
506
|
+
const label = `${HISTORY_COUNTER_PREFIX}${history}`;
|
|
505
507
|
const shown = truncateToWidth(label, width);
|
|
506
508
|
const remaining = Math.max(0, width - visibleWidth(shown));
|
|
507
|
-
return this.borderColor(shown.slice(0,
|
|
509
|
+
return this.borderColor(shown.slice(0, HISTORY_COUNTER_INSET))
|
|
510
|
+
+ this.styleHistoryLabel(shown.slice(HISTORY_COUNTER_INSET))
|
|
511
|
+
+ this.borderColor("─".repeat(remaining));
|
|
508
512
|
}
|
|
509
513
|
const border = hiddenLineCount > 0 ? createScrollBorder("↑", hiddenLineCount, width) : "─".repeat(width);
|
|
510
514
|
return this.borderColor(border);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-tui 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-tui 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/tui/src/kill-ring.ts.
|
|
4
4
|
* Modifications: Owned editor core or minimal editor-local helper subset; public imports, strict
|
|
5
5
|
* types, typed persistent-history hooks, and semantic border state. Public terminal runtime/exports
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-tui 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-tui 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/tui/src/kill-ring.ts.
|
|
4
4
|
* Modifications: Owned editor core or minimal editor-local helper subset; public imports, strict
|
|
5
5
|
* types, typed persistent-history hooks, and semantic border state. Public terminal runtime/exports
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-tui 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-tui 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/tui/src/keys.ts.
|
|
4
4
|
* Modifications: Owned editor core or minimal editor-local helper subset; public imports, strict
|
|
5
5
|
* types, typed persistent-history hooks, and semantic border state. Public terminal runtime/exports
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-tui 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-tui 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/tui/src/utils.ts.
|
|
4
4
|
* Modifications: Owned editor core or minimal editor-local helper subset; public imports, strict
|
|
5
5
|
* types, typed persistent-history hooks, and semantic border state. Public terminal runtime/exports
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-tui 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-tui 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/tui/src/undo-stack.ts.
|
|
4
4
|
* Modifications: Owned editor core or minimal editor-local helper subset; public imports, strict
|
|
5
5
|
* types, typed persistent-history hooks, and semantic border state. Public terminal runtime/exports
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-tui 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-tui 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/tui/src/undo-stack.ts.
|
|
4
4
|
* Modifications: Owned editor core or minimal editor-local helper subset; public imports, strict
|
|
5
5
|
* types, typed persistent-history hooks, and semantic border state. Public terminal runtime/exports
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-tui 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-tui 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/tui/src/word-navigation.ts.
|
|
4
4
|
* Modifications: Owned editor core or minimal editor-local helper subset; public imports, strict
|
|
5
5
|
* types, typed persistent-history hooks, and semantic border state. Public terminal runtime/exports
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.0
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/model-search.ts.
|
|
4
4
|
* Modifications: Mechanical source-synchronized port preserving pinned model search terms for stateful
|
|
5
5
|
* scoped-model filtering.
|