@timurproko/a1 0.2.6-dev.717 → 0.2.6-dev.727

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/bin/cli.js +13 -2
  2. package/bin/ui.js +13 -0
  3. package/dist/app/session-shell/prompt-suggestion-controller.d.ts +5 -4
  4. package/dist/app/session-shell/prompt-suggestion-controller.js +148 -58
  5. package/dist/app/session-shell/session-shell-root.d.ts +2 -1
  6. package/dist/app/session-shell/session-shell-root.js +13 -6
  7. package/dist/app/session-shell/session-shell.js +45 -3
  8. package/dist/app/session-shell/session-viewport-controller.js +33 -21
  9. package/dist/cli/dispatch.js +5 -3
  10. package/dist/cli/session-context.d.ts +5 -1
  11. package/dist/cli/session-context.js +25 -8
  12. package/dist/composition/owned-ui.d.ts +3 -0
  13. package/dist/composition/owned-ui.js +66 -6
  14. package/dist/composition/settings-route-host.js +2 -1
  15. package/dist/contracts/owned-ui/index.d.ts +4 -2
  16. package/dist/contracts/owned-ui/index.js +1 -1
  17. package/dist/contracts/owned-ui/model.d.ts +4 -0
  18. package/dist/contracts/owned-ui/suggestion-diagnostics.d.ts +5 -1
  19. package/dist/contracts/owned-ui/suggestion-diagnostics.js +3 -1
  20. package/dist/contracts/owned-ui/validation.js +7 -0
  21. package/dist/features/launch/index.d.ts +1 -1
  22. package/dist/features/launch/session-context.d.ts +17 -2
  23. package/dist/features/launch/session-context.js +9 -5
  24. package/dist/features/owned-ui/settings-app.js +21 -39
  25. package/dist/features/prompt-suggestions/diagnostics.js +4 -1
  26. package/dist/foundation/lifecycle/index.d.ts +2 -2
  27. package/dist/foundation/lifecycle/index.js +1 -1
  28. package/dist/foundation/lifecycle/session-repository-context.d.ts +19 -2
  29. package/dist/foundation/lifecycle/session-repository-context.js +434 -66
  30. package/dist/foundation/process-containment/index.d.ts +1 -0
  31. package/dist/foundation/process-containment/index.js +1 -0
  32. package/dist/foundation/process-containment/native-process-inspector.d.ts +3 -0
  33. package/dist/foundation/process-containment/native-process-inspector.js +21 -0
  34. package/dist/foundation/release/progress-palette.generated.d.ts +2 -2
  35. package/dist/foundation/release/progress-palette.generated.js +2 -2
  36. package/dist/foundation/startup/startup-descriptor.js +2 -2
  37. package/dist/integrations/pi/components/components.js +2 -2
  38. package/dist/integrations/pi/components/index.d.ts +2 -2
  39. package/dist/integrations/pi/components/index.js +1 -1
  40. package/dist/integrations/pi/components/modal-frame.js +3 -4
  41. package/dist/integrations/pi/components/models-dialog.js +5 -5
  42. package/dist/integrations/pi/components/prompt-input-port.d.ts +1 -0
  43. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +2 -2
  44. package/dist/integrations/pi/components/resources/builtin-themes.js +2 -2
  45. package/dist/integrations/pi/components/share-operation-dialog.js +3 -3
  46. package/dist/integrations/pi/components/shell-editor-autocomplete.js +8 -7
  47. package/dist/integrations/pi/components/shell-extension-ui.d.ts +2 -0
  48. package/dist/integrations/pi/components/shell-extension-ui.js +20 -10
  49. package/dist/integrations/pi/components/shell-hotkey-sections.js +2 -2
  50. package/dist/integrations/pi/components/shell-presenters-info.js +10 -10
  51. package/dist/integrations/pi/components/shell-presenters-transcript.js +10 -10
  52. package/dist/integrations/pi/components/shell-selectors-dialogs.js +5 -6
  53. package/dist/integrations/pi/components/shell-shared-facade.js +1 -1
  54. package/dist/integrations/pi/components/skills-dialog.js +3 -3
  55. package/dist/integrations/pi/components/submitted-prompt-adapter.js +2 -3
  56. package/dist/integrations/pi/components/theme.d.ts +9 -0
  57. package/dist/integrations/pi/components/theme.js +30 -0
  58. package/dist/integrations/pi/components/tool-result-adapter.js +6 -1
  59. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +1 -1
  60. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +1 -1
  61. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +2 -2
  62. package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +1 -1
  63. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +1 -1
  64. package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +1 -1
  65. package/dist/integrations/pi/components/upstream/components/extension-editor.js +6 -6
  66. package/dist/integrations/pi/components/upstream/components/extension-input.js +4 -4
  67. package/dist/integrations/pi/components/upstream/components/extension-selector.js +4 -4
  68. package/dist/integrations/pi/components/upstream/components/mermaid.js +1 -1
  69. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +5 -5
  70. package/dist/integrations/pi/components/upstream/components/owned-editor.js +8 -5
  71. package/dist/integrations/pi/components/upstream/components/pi-logo.js +1 -1
  72. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +1 -1
  73. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +3 -3
  74. package/dist/integrations/pi/components/upstream/components/session-footer.js +1 -1
  75. package/dist/integrations/pi/components/upstream/components/session-selector-search.js +1 -1
  76. package/dist/integrations/pi/components/upstream/components/session-selector.js +9 -9
  77. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +3 -2
  78. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +6 -3
  79. package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +1 -1
  80. package/dist/integrations/pi/components/upstream/components/status-indicator.js +1 -1
  81. package/dist/integrations/pi/components/upstream/components/themed-text.d.ts +1 -1
  82. package/dist/integrations/pi/components/upstream/components/themed-text.js +1 -1
  83. package/dist/integrations/pi/components/upstream/components/thinking-selector.d.ts +1 -1
  84. package/dist/integrations/pi/components/upstream/components/thinking-selector.js +2 -2
  85. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +4 -0
  86. package/dist/integrations/pi/components/upstream/components/tool-execution.js +11 -1
  87. package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +2 -2
  88. package/dist/integrations/pi/components/upstream/components/tree-selector.js +27 -18
  89. package/dist/integrations/pi/components/upstream/components/trust-selector.js +1 -1
  90. package/dist/integrations/pi/components/upstream/external-editor.js +1 -1
  91. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +4 -4
  92. package/dist/integrations/pi/components/upstream/history/editor-core.js +11 -7
  93. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +1 -1
  94. package/dist/integrations/pi/components/upstream/history/kill-ring.js +1 -1
  95. package/dist/integrations/pi/components/upstream/history/printable-key.js +1 -1
  96. package/dist/integrations/pi/components/upstream/history/text-helpers.js +1 -1
  97. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +1 -1
  98. package/dist/integrations/pi/components/upstream/history/undo-stack.js +1 -1
  99. package/dist/integrations/pi/components/upstream/history/word-navigation.js +1 -1
  100. package/dist/integrations/pi/components/upstream/model-search.d.ts +1 -1
  101. package/dist/integrations/pi/components/upstream/program-status-reporter.d.ts +31 -0
  102. package/dist/integrations/pi/components/upstream/program-status-reporter.js +89 -0
  103. package/dist/integrations/pi/components/upstream/theme/system-theme.d.ts +1 -1
  104. package/dist/integrations/pi/components/upstream/theme/system-theme.js +1 -1
  105. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +1 -1
  106. package/dist/integrations/pi/components/upstream/theme/theme.d.ts +18 -1
  107. package/dist/integrations/pi/components/upstream/theme/theme.js +207 -10
  108. package/dist/integrations/pi/engine/pi-settings-metadata.json +1 -1
  109. package/dist/integrations/pi/engine/resources/changelog.json +4 -4
  110. package/dist/integrations/pi/engine/session-events.js +10 -2
  111. package/dist/integrations/pi/engine/transcript-projection.js +2 -1
  112. package/dist/integrations/pi/startup-public.js +306 -290
  113. package/dist/integrations/pi/startup-public.manifest.json +289 -265
  114. package/dist/integrations/pi/tui-runtime/adapter.d.ts +2 -1
  115. package/dist/integrations/pi/tui-runtime/adapter.js +7 -0
  116. package/dist/integrations/pi/tui-runtime/contracts.d.ts +3 -1
  117. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +1 -1
  118. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +1 -1
  119. package/dist/native/darwin-arm64/manifest.json +1 -1
  120. package/dist/native/linux-x64/manifest.json +1 -1
  121. package/dist/native/win32-x64/manifest.json +2 -2
  122. package/dist/native/win32-x64/process-guardian.exe +0 -0
  123. package/dist/product-identity.d.ts +2 -2
  124. package/dist/product-identity.js +2 -2
  125. package/dist/product-identity.json +3 -1
  126. package/dist/runtime-payload-inventory.json +3092 -2878
  127. package/dist/ui/components/prompt-input.d.ts +2 -0
  128. package/dist/ui/components/prompt-input.js +5 -1
  129. package/dist/ui/components/text-selection.d.ts +1 -1
  130. package/dist/ui/components/text-selection.js +3 -1
  131. package/dist/ui/components/theme.d.ts +2 -0
  132. package/dist/ui/components/transcript-viewport.d.ts +6 -4
  133. package/dist/ui/components/transcript-viewport.js +94 -16
  134. package/dist/ui/components/value-menu.d.ts +2 -0
  135. package/dist/ui/components/value-menu.js +13 -8
  136. package/dist/ui/settings/declarations.d.ts +26 -14
  137. package/dist/ui/settings/declarations.js +24 -11
  138. package/dist/ui/settings/migrations.js +16 -0
  139. package/docs/architecture/project-structure.md +4 -3
  140. package/docs/architecture/prompt-suggestions.md +14 -10
  141. package/docs/local-worktree-cleanup.md +11 -5
  142. package/docs/openspec-archive-automation.md +6 -5
  143. package/package.json +3 -3
@@ -1,7 +1,7 @@
1
1
  import { DynamicBorder } from "../startup-public.js";
2
2
  import { Container, getKeybindings, Input, Spacer, Text } from "@earendil-works/pi-tui";
3
3
  import { addPiModalHeader, adoptPiModalFrame } from "./modal-frame.js";
4
- import { DIALOG_CLOSE_SHORTCUT_HINT, PINNED_PI_LAYOUT, piTheme, renderPiModalListRow, renderPiModalShortcutHints, } from "./theme.js";
4
+ import { DIALOG_CLOSE_SHORTCUT_HINT, paintPiBorder, PINNED_PI_LAYOUT, piTheme, renderPiModalListRow, renderPiModalShortcutHints, } from "./theme.js";
5
5
  import { componentPort, ensureTheme, piShellTruncateToWidth, piShellVisibleWidth } from "./shell-shared-facade.js";
6
6
  import { skillMatchesQuery } from "./skills-command.js";
7
7
  /** A single line clipped at the viewport width: no wrap, no ellipsis, padded to the full width. */
@@ -48,7 +48,7 @@ class SkillsSelectorComponent extends Container {
48
48
  this.#onSelect = options.onSelect;
49
49
  this.#onCancel = options.onCancel;
50
50
  this.#searchInput.onSubmit = () => this.#selectCurrent();
51
- const header = addPiModalHeader(this, new DynamicBorder(), new Text(piTheme().fg("accent", piTheme().bold("Skills")), 0, 0));
51
+ const header = addPiModalHeader(this, new DynamicBorder(paintPiBorder), new Text(piTheme().fg("accent", piTheme().bold("Skills")), 0, 0));
52
52
  this.addChild(new Spacer(1));
53
53
  this.addChild(this.#searchInput);
54
54
  this.addChild(new Spacer(1));
@@ -61,7 +61,7 @@ class SkillsSelectorComponent extends Container {
61
61
  { key: bindings.getKeys("tui.select.confirm").join("/"), action: "select" },
62
62
  DIALOG_CLOSE_SHORTCUT_HINT,
63
63
  ]), 0, 0));
64
- this.addChild(new DynamicBorder());
64
+ this.addChild(new DynamicBorder(paintPiBorder));
65
65
  adoptPiModalFrame(this, { topIndex: 0, bottomIndex: this.children.length - 1, header });
66
66
  this.#updateList();
67
67
  }
@@ -1,7 +1,6 @@
1
- import { getMarkdownTheme } from "../startup-public.js";
2
1
  import { Box, Markdown, Text } from "@earendil-works/pi-tui";
3
2
  import { protectPiPromptChipPresentation } from "./prompt-chip-presentation.js";
4
- import { piTheme } from "./theme.js";
3
+ import { getPiMarkdownTheme, piTheme } from "./theme.js";
5
4
  /** Branch summaries share the block kind but do not participate in prompt navigation. */
6
5
  export function isPiPromptStyleCompaction(block) {
7
6
  return block.kind === "compaction" && block.status === "finalized"
@@ -20,7 +19,7 @@ export function createPiSubmittedPromptComponent(block, composer, heading) {
20
19
  // Invariant: presentation-only chrome stays outside the summary's Markdown parser and stored text.
21
20
  const header = heading === undefined ? undefined : new Text(heading, 0, 0);
22
21
  let chipWrapping;
23
- const markdown = new Markdown(block.text, 0, 0, getMarkdownTheme(), { color: content => piTheme().fg("userMessageText", content) }, {
22
+ const markdown = new Markdown(block.text, 0, 0, getPiMarkdownTheme(), { color: content => piTheme().fg("userMessageText", content) }, {
24
23
  preserveOrderedListMarkers: true,
25
24
  preserveBackslashEscapes: true,
26
25
  ...(block.kind === "user" ? { transform: (text, width) => {
@@ -1,7 +1,16 @@
1
1
  import { DIALOG_CLOSE_SHORTCUT_HINT, displayShortcutKeyLabel, type SemanticShortcutHint } from "../../../contracts/presentation/index.js";
2
+ import { type MarkdownTheme, type SelectListTheme } from "@earendil-works/pi-tui";
2
3
  export * from "./upstream/theme/theme.js";
3
4
  export type PiModalShortcutHint = SemanticShortcutHint;
4
5
  export { DIALOG_CLOSE_SHORTCUT_HINT, displayShortcutKeyLabel };
6
+ /** Resolves dialog rules through the live A1 projection instead of Pi's package-global theme. */
7
+ export declare function paintPiBorder(text: string): string;
8
+ /** Markdown keeps Pi's complete base treatment while resolving list markers through A1's accent. */
9
+ export declare function getPiMarkdownTheme(): MarkdownTheme;
10
+ /** Hotkey key spans share the live secondary/filter tone without changing general Markdown code. */
11
+ export declare function getPiHotkeysMarkdownTheme(): MarkdownTheme;
12
+ /** Select-list roles resolved through A1's active theme rather than Pi's package-global base theme. */
13
+ export declare function getPiSelectListTheme(): SelectListTheme;
5
14
  /** Paint one selected bare-A1 list item with the standard blue selection surface. */
6
15
  export declare function renderPiListSelection(content: string): string;
7
16
  /** One standard bare-A1 modal row, clipped before its item-bounded selection is painted. */
@@ -1,8 +1,38 @@
1
1
  import { DIALOG_CLOSE_SHORTCUT_HINT, displayShortcutKeyLabel, renderSemanticShortcutHints, } from "../../../contracts/presentation/index.js";
2
2
  import { stripTerminalSequences, truncateToWidth } from "@earendil-works/pi-tui";
3
+ import { getMarkdownTheme } from "../startup-public.js";
3
4
  import { piTheme } from "./upstream/theme/theme.js";
4
5
  export * from "./upstream/theme/theme.js";
5
6
  export { DIALOG_CLOSE_SHORTCUT_HINT, displayShortcutKeyLabel };
7
+ /** Resolves dialog rules through the live A1 projection instead of Pi's package-global theme. */
8
+ export function paintPiBorder(text) {
9
+ return piTheme().fg("border", text);
10
+ }
11
+ /** Markdown keeps Pi's complete base treatment while resolving list markers through A1's accent. */
12
+ export function getPiMarkdownTheme() {
13
+ return {
14
+ ...getMarkdownTheme(),
15
+ heading: text => piTheme().fg("mdHeading", text),
16
+ listBullet: text => piTheme().fg("mdListBullet", text),
17
+ };
18
+ }
19
+ /** Hotkey key spans share the live secondary/filter tone without changing general Markdown code. */
20
+ export function getPiHotkeysMarkdownTheme() {
21
+ return {
22
+ ...getPiMarkdownTheme(),
23
+ code: text => piTheme().fg("mdHeading", text),
24
+ };
25
+ }
26
+ /** Select-list roles resolved through A1's active theme rather than Pi's package-global base theme. */
27
+ export function getPiSelectListTheme() {
28
+ return {
29
+ selectedPrefix: text => piTheme().fg("accent", text),
30
+ selectedText: text => piTheme().fg("accent", text),
31
+ description: text => piTheme().fg("muted", text),
32
+ scrollInfo: text => piTheme().fg("muted", text),
33
+ noMatch: text => piTheme().fg("muted", text),
34
+ };
35
+ }
6
36
  /** Paint one selected bare-A1 list item with the standard blue selection surface. */
7
37
  export function renderPiListSelection(content) {
8
38
  return piTheme().bg("selectedBg", content);
@@ -16,7 +16,12 @@ export function updatePiToolResult(component, block, assets) {
16
16
  ? [{ type: "text", text: block.text }, ...(block.imageReferences ?? []).map((_, index) => image(index))]
17
17
  : result.content.map(part => part.type === "text"
18
18
  ? { type: "text", text: block.text.slice(part.start, part.end) } : image(part.imageIndex));
19
- component.updateResult({ content, details: result?.details, isError: payload.isError === true }, block.status === "live");
19
+ component.updateResult({
20
+ content,
21
+ details: result?.details,
22
+ isError: payload.isError === true,
23
+ ...(typeof payload.durationMs === "number" ? { durationMs: payload.durationMs } : {}),
24
+ }, block.status === "live");
20
25
  }
21
26
  export function piToolArguments(block) {
22
27
  if (block.toolRendering !== undefined)
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
3
3
  * packages/coding-agent/src/core/keybindings.ts.
4
4
  * Modifications: Mechanical source port with Node import prefixes, public package-root agent-directory
5
5
  * resolution, and an opt-in bare-A1 input profile including Ctrl+L level cycling, unbound model
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
3
3
  * packages/coding-agent/src/core/keybindings.ts.
4
4
  * Modifications: Mechanical source port with Node import prefixes, public package-root agent-directory
5
5
  * resolution, and an opt-in bare-A1 input profile including Ctrl+L level cycling, unbound model
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "sourcePackage": "@earendil-works/pi-coding-agent",
3
- "sourceVersion": "1.0.4",
3
+ "sourceVersion": "1.1.0",
4
4
  "upstreamRepository": "https://github.com/earendil-works/pi.git",
5
- "upstreamCommit": "7c10bd4337495ee613f2224843ecdf349b80d1df",
5
+ "upstreamCommit": "abe508e1b89912adde45528136c3221eb69acdd7",
6
6
  "sourcePath": "dist/modes/interactive/assets/clankolas.png",
7
7
  "sourceSha256": "169acd0dfe6fbb8d8742ed24a3fc654fd0b2e2d4223c733249c5493723f1b72d",
8
8
  "license": "MIT",
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
3
3
  * packages/coding-agent/src/modes/interactive/components/countdown-timer.ts.
4
4
  * Modifications: Mechanical source port with ECMAScript private fields; imports remain on the public
5
5
  * Pi TUI package root.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
3
3
  * packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts.
4
4
  * Modifications: Mechanical pinned source port with private imports remapped to public package-root
5
5
  * types/APIs and A1-owned theme boundaries. The unchanged image is loaded lazily from its attributed,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
3
3
  * packages/coding-agent/src/modes/interactive/components/extension-editor.ts.
4
4
  * Modifications: Mechanical port: remap pi-tui to the root public singleton, use owned
5
5
  * keybindings/theme and external-editor seams, preserve editor layout, hints, focus, submission,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
3
3
  * packages/coding-agent/src/modes/interactive/components/extension-editor.ts.
4
4
  * Modifications: Mechanical port: remap pi-tui to the root public singleton, use owned
5
5
  * keybindings/theme and external-editor seams, preserve editor layout, hints, focus, submission,
@@ -8,10 +8,10 @@
8
8
  * Deviations: owned-modal-shortcut-hints.
9
9
  */
10
10
  import { Container, Editor, Spacer, Text, } from "@earendil-works/pi-tui";
11
- import { DynamicBorder, getSelectListTheme } from "../../../startup-public.js";
11
+ import { DynamicBorder } from "../../../startup-public.js";
12
12
  import { editInExternalEditor } from "../external-editor.js";
13
13
  import { addPiModalHeader, adoptPiModalFrame } from "../../modal-frame.js";
14
- import { DIALOG_CLOSE_SHORTCUT_HINT, piTheme, renderPiModalShortcutHints } from "../../theme.js";
14
+ import { DIALOG_CLOSE_SHORTCUT_HINT, getPiSelectListTheme, paintPiBorder, piTheme, renderPiModalShortcutHints } from "../../theme.js";
15
15
  export class ExtensionEditorComponent extends Container {
16
16
  #editor;
17
17
  #tui;
@@ -36,7 +36,7 @@ export class ExtensionEditorComponent extends Container {
36
36
  || process.env.EDITOR
37
37
  || (process.platform === "win32" ? "notepad" : "nano");
38
38
  const { description, ...editorOptions } = options ?? {};
39
- const header = addPiModalHeader(this, new DynamicBorder(), new Text(piTheme().fg("accent", title), 0, 0));
39
+ const header = addPiModalHeader(this, new DynamicBorder(paintPiBorder), new Text(piTheme().fg("accent", title), 0, 0));
40
40
  if (description) {
41
41
  this.addChild(new Spacer(1));
42
42
  this.addChild(new Text(piTheme().fg("text", description), 0, 0));
@@ -44,7 +44,7 @@ export class ExtensionEditorComponent extends Container {
44
44
  this.addChild(new Spacer(1));
45
45
  this.#editor = new Editor(tui, {
46
46
  borderColor: text => piTheme().fg("borderMuted", text),
47
- selectList: getSelectListTheme(),
47
+ selectList: getPiSelectListTheme(),
48
48
  }, editorOptions);
49
49
  if (prefill)
50
50
  this.#editor.setText(prefill);
@@ -59,7 +59,7 @@ export class ExtensionEditorComponent extends Container {
59
59
  ]);
60
60
  this.addChild(new Text(hint, 0, 0));
61
61
  this.addChild(new Spacer(1));
62
- this.addChild(new DynamicBorder());
62
+ this.addChild(new DynamicBorder(paintPiBorder));
63
63
  adoptPiModalFrame(this, { topIndex: 0, bottomIndex: this.children.length - 1, header });
64
64
  }
65
65
  handleInput(data) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
3
3
  * packages/coding-agent/src/modes/interactive/components/extension-input.ts.
4
4
  * Modifications: Mechanical port: remap public imports, use ECMAScript private fields, and route the
5
5
  * bare-A1 instruction row and chrome through the shared semantic shortcut and compact padded
@@ -10,7 +10,7 @@
10
10
  import { DynamicBorder } from "../../../startup-public.js";
11
11
  import { Container, getKeybindings, Input, Spacer, Text } from "@earendil-works/pi-tui";
12
12
  import { addPiModalHeader, adoptPiModalFrame } from "../../modal-frame.js";
13
- import { DIALOG_CLOSE_SHORTCUT_HINT, piTheme, renderPiModalShortcutHints } from "../../theme.js";
13
+ import { DIALOG_CLOSE_SHORTCUT_HINT, paintPiBorder, piTheme, renderPiModalShortcutHints } from "../../theme.js";
14
14
  import { CountdownTimer } from "./countdown-timer.js";
15
15
  /** Bare-A1 extension text input using the common modal shortcut row. */
16
16
  export class ExtensionInputComponent extends Container {
@@ -33,7 +33,7 @@ export class ExtensionInputComponent extends Container {
33
33
  this.#baseTitle = title;
34
34
  const theme = piTheme();
35
35
  this.#titleText = new Text(theme.fg("accent", theme.bold(title)), 0, 0);
36
- const header = addPiModalHeader(this, new DynamicBorder(), this.#titleText);
36
+ const header = addPiModalHeader(this, new DynamicBorder(paintPiBorder), this.#titleText);
37
37
  if (opts?.description) {
38
38
  this.addChild(new Spacer(1));
39
39
  this.addChild(new Text(theme.fg("text", opts.description), 0, 0));
@@ -54,7 +54,7 @@ export class ExtensionInputComponent extends Container {
54
54
  { key: keys.getKeys("tui.select.confirm").join("/"), action: "submit" },
55
55
  DIALOG_CLOSE_SHORTCUT_HINT,
56
56
  ]), 0, 0));
57
- this.addChild(new DynamicBorder());
57
+ this.addChild(new DynamicBorder(paintPiBorder));
58
58
  adoptPiModalFrame(this, { topIndex: 0, bottomIndex: this.children.length - 1, header });
59
59
  }
60
60
  handleInput(keyData) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
3
3
  * packages/coding-agent/src/modes/interactive/components/extension-selector.ts.
4
4
  * Modifications: Mechanical port: remap public imports, use ECMAScript private fields, and route the
5
5
  * bare-A1 instruction row and chrome through the shared semantic shortcut and compact padded
@@ -10,7 +10,7 @@
10
10
  import { DynamicBorder } from "../../../startup-public.js";
11
11
  import { Container, getKeybindings, Spacer, Text } from "@earendil-works/pi-tui";
12
12
  import { addPiModalHeader, adoptPiModalFrame } from "../../modal-frame.js";
13
- import { DIALOG_CLOSE_SHORTCUT_HINT, piTheme, renderPiModalShortcutHints } from "../../theme.js";
13
+ import { DIALOG_CLOSE_SHORTCUT_HINT, paintPiBorder, piTheme, renderPiModalShortcutHints } from "../../theme.js";
14
14
  import { CountdownTimer } from "./countdown-timer.js";
15
15
  /** Bare-A1 extension selector using the common modal shortcut row. */
16
16
  export class ExtensionSelectorComponent extends Container {
@@ -32,7 +32,7 @@ export class ExtensionSelectorComponent extends Container {
32
32
  this.#onToggleToolsExpanded = opts?.onToggleToolsExpanded;
33
33
  const theme = piTheme();
34
34
  this.#titleText = new Text(theme.fg("accent", theme.bold(title)), 0, 0);
35
- const header = addPiModalHeader(this, new DynamicBorder(), this.#titleText);
35
+ const header = addPiModalHeader(this, new DynamicBorder(paintPiBorder), this.#titleText);
36
36
  if (opts?.description) {
37
37
  this.addChild(new Spacer(1));
38
38
  this.addChild(new Text(theme.fg("text", opts.description), 0, 0));
@@ -52,7 +52,7 @@ export class ExtensionSelectorComponent extends Container {
52
52
  { key: keys.getKeys("tui.select.confirm").join("/"), action: "select" },
53
53
  DIALOG_CLOSE_SHORTCUT_HINT,
54
54
  ]), 0, 0));
55
- this.addChild(new DynamicBorder());
55
+ this.addChild(new DynamicBorder(paintPiBorder));
56
56
  adoptPiModalFrame(this, { topIndex: 0, bottomIndex: this.children.length - 1, header });
57
57
  this.#updateList();
58
58
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.1.0 (MIT), commit abe508e1b89912adde45528136c3221eb69acdd7,
3
3
  * packages/coding-agent/src/modes/interactive/components/mermaid.ts.
4
4
  * Modifications: Mechanical pinned source port with private imports remapped to public package-root
5
5
  * types/APIs and A1-owned theme boundaries; behavior remains acceptance-tested.
@@ -1,13 +1,13 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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 slash-command search on Escape. Bare
8
- * A1 also completes a selected or exact completed tunnel command with `:` and reopens the menu on its
9
- * tunnel rows, and synchronously retains then refreshes an exact top-level command menu after Tab
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
  */
@@ -1,13 +1,13 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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 slash-command search on Escape. Bare
8
- * A1 also completes a selected or exact completed tunnel command with `:` and reopens the menu on its
9
- * tunnel rows, and synchronously retains then refreshes an exact top-level command menu after Tab
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.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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" ? "accent" : "dim", "current")
166
+ + theme.fg(this.scope === "current" ? "mdHeading" : "dim", "current")
167
167
  + theme.fg("muted", " | ")
168
- + theme.fg(this.scope === "all" ? "accent" : "dim", "all");
169
- const nameText = theme.fg("muted", "Name: ") + theme.fg("accent", this.nameFilter);
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("accent", sortLabel);
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.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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(1, 1, text => piTheme().bg("customMessageBg", text));
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.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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("accent", "◉");
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;