@timurproko/a1 0.2.4-dev.673 → 0.2.5-dev.683

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 (95) hide show
  1. package/README.md +49 -38
  2. package/bin/pinned-pi-public.js +20 -2
  3. package/dist/app/session-shell/session-shell-root.d.ts +1 -1
  4. package/dist/app/session-shell/session-shell-root.js +6 -11
  5. package/dist/app/session-shell/session-shell.js +9 -17
  6. package/dist/composition/owned-ui.js +1 -0
  7. package/dist/composition/session-info-reference.d.ts +4 -0
  8. package/dist/composition/session-info-reference.js +20 -0
  9. package/dist/composition/settings-route-host.d.ts +2 -5
  10. package/dist/composition/settings-route-host.js +7 -11
  11. package/dist/features/owned-ui/reference-screen-app.d.ts +2 -0
  12. package/dist/features/owned-ui/reference-screen-app.js +7 -1
  13. package/dist/features/owned-ui/resources/release-notes.json +4 -0
  14. package/dist/foundation/release/progress-palette.generated.d.ts +2 -2
  15. package/dist/foundation/release/progress-palette.generated.js +2 -2
  16. package/dist/foundation/startup/startup-descriptor.js +2 -2
  17. package/dist/integrations/pi/components/index.d.ts +1 -1
  18. package/dist/integrations/pi/components/index.js +1 -1
  19. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +2 -2
  20. package/dist/integrations/pi/components/resources/builtin-themes.js +2 -2
  21. package/dist/integrations/pi/components/shell-presenters-info.d.ts +2 -0
  22. package/dist/integrations/pi/components/shell-presenters-info.js +1 -1
  23. package/dist/integrations/pi/components/shell-presenters-transcript.js +10 -6
  24. package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +0 -1
  25. package/dist/integrations/pi/components/shell-selectors-dialogs.js +0 -5
  26. package/dist/integrations/pi/components/shell-session-info-reference.d.ts +10 -0
  27. package/dist/integrations/pi/components/shell-session-info-reference.js +61 -0
  28. package/dist/integrations/pi/components/shell-shared-facade.d.ts +1 -1
  29. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +5 -5
  30. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +1 -1
  31. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +2 -2
  32. package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +1 -1
  33. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +1 -1
  34. package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +1 -1
  35. package/dist/integrations/pi/components/upstream/components/extension-editor.js +1 -1
  36. package/dist/integrations/pi/components/upstream/components/extension-input.js +1 -1
  37. package/dist/integrations/pi/components/upstream/components/extension-selector.js +1 -1
  38. package/dist/integrations/pi/components/upstream/components/mermaid.js +1 -1
  39. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +1 -1
  40. package/dist/integrations/pi/components/upstream/components/owned-editor.js +1 -1
  41. package/dist/integrations/pi/components/upstream/components/pi-logo.js +1 -1
  42. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +1 -1
  43. package/dist/integrations/pi/components/upstream/components/session-footer.js +1 -1
  44. package/dist/integrations/pi/components/upstream/components/session-selector-search.js +1 -1
  45. package/dist/integrations/pi/components/upstream/components/session-selector.js +1 -1
  46. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +1 -1
  47. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +1 -1
  48. package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +1 -1
  49. package/dist/integrations/pi/components/upstream/components/status-indicator.js +1 -1
  50. package/dist/integrations/pi/components/upstream/components/themed-text.d.ts +1 -1
  51. package/dist/integrations/pi/components/upstream/components/themed-text.js +1 -1
  52. package/dist/integrations/pi/components/upstream/components/thinking-selector.d.ts +1 -1
  53. package/dist/integrations/pi/components/upstream/components/thinking-selector.js +1 -1
  54. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +4 -3
  55. package/dist/integrations/pi/components/upstream/components/tool-execution.js +8 -7
  56. package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +1 -1
  57. package/dist/integrations/pi/components/upstream/components/tree-selector.js +1 -1
  58. package/dist/integrations/pi/components/upstream/components/trust-selector.js +1 -1
  59. package/dist/integrations/pi/components/upstream/external-editor.js +1 -1
  60. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +1 -1
  61. package/dist/integrations/pi/components/upstream/history/editor-core.js +1 -1
  62. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +1 -1
  63. package/dist/integrations/pi/components/upstream/history/kill-ring.js +1 -1
  64. package/dist/integrations/pi/components/upstream/history/printable-key.js +1 -1
  65. package/dist/integrations/pi/components/upstream/history/text-helpers.js +1 -1
  66. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +1 -1
  67. package/dist/integrations/pi/components/upstream/history/undo-stack.js +1 -1
  68. package/dist/integrations/pi/components/upstream/history/word-navigation.js +1 -1
  69. package/dist/integrations/pi/components/upstream/model-search.d.ts +1 -1
  70. package/dist/integrations/pi/components/upstream/theme/system-theme.d.ts +1 -1
  71. package/dist/integrations/pi/components/upstream/theme/system-theme.js +1 -1
  72. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +1 -1
  73. package/dist/integrations/pi/components/upstream/theme/theme.js +1 -1
  74. package/dist/integrations/pi/engine/adapter.d.ts +1 -1
  75. package/dist/integrations/pi/engine/adapter.js +8 -2
  76. package/dist/integrations/pi/engine/resources/changelog.json +4 -4
  77. package/dist/integrations/pi/startup-public.js +309 -206
  78. package/dist/integrations/pi/startup-public.manifest.json +3138 -3120
  79. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +1 -1
  80. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +1 -1
  81. package/dist/native/darwin-arm64/manifest.json +1 -1
  82. package/dist/native/linux-x64/manifest.json +1 -1
  83. package/dist/native/win32-x64/manifest.json +2 -2
  84. package/dist/native/win32-x64/process-guardian.exe +0 -0
  85. package/dist/runtime-payload-inventory.json +37027 -28855
  86. package/dist/ui/components/transcript-viewport.js +10 -7
  87. package/docs/architecture/project-structure.md +3 -1
  88. package/docs/assets/readme/separator-dark.svg +11 -0
  89. package/docs/assets/readme/separator.svg +11 -0
  90. package/docs/local-worktree-cleanup.md +3 -1
  91. package/docs/openspec-archive-automation.md +14 -5
  92. package/docs/releases/0.2.4.md +18 -0
  93. package/package.json +3 -3
  94. package/dist/integrations/pi/components/upstream/components/daxnuts.d.ts +0 -29
  95. package/dist/integrations/pi/components/upstream/components/daxnuts.js +0 -146
@@ -1,7 +1,7 @@
1
1
  export { adaptPiAssistantMessage, adaptPiToolExecution, adaptPiUserMessage } from "./components.js";
2
2
  export { loadHistoryEditor } from "./history-editor-loader.js";
3
3
  export { PiComponentConformanceError, runPiComponentConformance } from "./conformance.js";
4
- export { OWNED_BUILTIN_SLASH_COMMANDS, PINNED_PI_BUILTIN_SLASH_COMMANDS, componentFromPort, componentPort, createPiExtensionUiBridge, createPiQueuedInputStatus, createPiShellArmin, createPiShellAuthProviderSelector, createPiShellChangelog, createPiShellCollapsedChangelog, createPiShellDaxnuts, createPiShellDialog, createPiShellEarendilAnnouncement, createPiShellEditor, createPiShellExtensionSelector, createPiShellFooter, createPiShellHeader, createPiShellHotkeys, createPiShellLoadedResources, createPiShellLoginDialog, createPiShellModelSelector, createPiShellModelsDialog, createPiShellOperationLoader, createPiShellReloadBox, createPiShellScopedModelsSelector, createPiShellSelector, createPiShellSessionInfo, createPiShellSessionSelector, createPiShellSettingsSelector, createPiShellShowImagesSelector, createPiShellSkillsSelector, createPiShellStatus, createPiShellThemeSelector, createPiShellTranscriptComponent, createPiShellTreeSelector, createPiShellTrustSelector, createPiShellUserMessageSelector, createTuiFacade, ensureTheme, formatSessionTokens, isAutocompleteProvider, isPiPromptStyleCompaction, isRecord, paintPiSubmittedPromptTimestamp, piShellHyperlink, piShellTruncateToWidth, piShellVisibleWidth, renderPiShellChangelogLines, renderPiShellCommandMessage, renderPiShellHotkeysLines, renderPiShellPackageUpdateNotice, renderPiShellReleaseUpdateBanner, renderPiShellReleaseUpdateNotice, renderPiShellStartupDiagnostic, renderPiShellStatusText, renderPiShellTranscriptBlock, validatedAssistantMessage, } from "./shell-components.js";
4
+ export { OWNED_BUILTIN_SLASH_COMMANDS, PINNED_PI_BUILTIN_SLASH_COMMANDS, componentFromPort, componentPort, createPiExtensionUiBridge, createPiQueuedInputStatus, createPiShellArmin, createPiShellAuthProviderSelector, createPiShellChangelog, createPiShellCollapsedChangelog, createPiShellDialog, createPiShellEarendilAnnouncement, createPiShellEditor, createPiShellExtensionSelector, createPiShellFooter, createPiShellHeader, createPiShellHotkeys, createPiShellLoadedResources, createPiShellLoginDialog, createPiShellModelSelector, createPiShellModelsDialog, createPiShellOperationLoader, createPiShellReloadBox, createPiShellScopedModelsSelector, createPiShellSelector, createPiShellSessionInfo, createPiShellSessionSelector, createPiShellSettingsSelector, createPiShellShowImagesSelector, createPiShellSkillsSelector, createPiShellStatus, createPiShellThemeSelector, createPiShellTranscriptComponent, createPiShellTreeSelector, createPiShellTrustSelector, createPiShellUserMessageSelector, createTuiFacade, ensureTheme, formatSessionTokens, isAutocompleteProvider, isPiPromptStyleCompaction, isRecord, paintPiSubmittedPromptTimestamp, piShellHyperlink, piShellTruncateToWidth, piShellVisibleWidth, renderPiShellChangelogLines, renderPiShellCommandMessage, renderPiShellHotkeysLines, renderPiShellPackageUpdateNotice, renderPiShellReleaseUpdateBanner, renderPiShellReleaseUpdateNotice, renderPiShellStartupDiagnostic, renderPiShellStatusText, renderPiShellTranscriptBlock, validatedAssistantMessage, } from "./shell-components.js";
5
5
  export { renderPiShellHotkeySections } from "./shell-hotkey-sections.js";
6
6
  export { PINNED_PI_LAYOUT, applyConfiguredPiTheme, applyPiTheme, applyPiThemeInstance, currentPiThemeName, detectPiTerminalBackgroundFromEnv, detectPiTerminalBackgroundTheme, detectPiTerminalThemeForAuto, ensurePiTheme, getAvailablePiThemes, loadPiTheme, onPiThemeChange, parsePiAutoThemeSetting, piTheme, resolvePiThemeSetting, stopPiThemeWatcher, } from "./theme.js";
7
7
  export { OwnedPiThemeController } from "./upstream/theme/theme-controller.js";
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Attributed owned theme resources adapted from @earendil-works/pi-coding-agent 1.0.0 (MIT),
3
- * commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32.
2
+ * Attributed owned theme resources adapted from @earendil-works/pi-coding-agent 1.0.4 (MIT),
3
+ * commit 7c10bd4337495ee613f2224843ecdf349b80d1df.
4
4
  * Upstream dark.json SHA-256: c11a588b714d35300293079b425fb09a3693d4b2d453585d211b08163c648b75
5
5
  * Upstream light.json SHA-256: f590c51c2bc8b238891efd0e983473ed2e2a6487b6692cc1d4b2845165e703f7
6
6
  * Modifications: removed upstream schema/export metadata; runtime color data is unchanged.
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Attributed owned theme resources adapted from @earendil-works/pi-coding-agent 1.0.0 (MIT),
3
- * commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32.
2
+ * Attributed owned theme resources adapted from @earendil-works/pi-coding-agent 1.0.4 (MIT),
3
+ * commit 7c10bd4337495ee613f2224843ecdf349b80d1df.
4
4
  * Upstream dark.json SHA-256: c11a588b714d35300293079b425fb09a3693d4b2d453585d211b08163c648b75
5
5
  * Upstream light.json SHA-256: f590c51c2bc8b238891efd0e983473ed2e2a6487b6692cc1d4b2845165e703f7
6
6
  * Modifications: removed upstream schema/export metadata; runtime color data is unchanged.
@@ -56,6 +56,8 @@ export interface PiShellCommandMessagePresentation {
56
56
  readonly detail?: string;
57
57
  }
58
58
  export declare function renderPiShellCommandMessage(presentation: PiShellCommandMessagePresentation, width: number, outputPad?: 0 | 1): readonly string[];
59
+ /** The one-line warming status the pinned session report shows; a decision is attached once warming acted. */
60
+ export declare function formatCacheWarmingStatus(status: NonNullable<PiShellCacheWarmingPresentation["status"]>, now?: number): string;
59
61
  export declare function createPiShellSessionInfo(presentation: PiShellSessionInfoPresentation): PiShellComponentPort;
60
62
  export declare function createPiShellCollapsedChangelog(): PiShellComponentPort;
61
63
  export declare function createPiShellChangelog(markdown: string): PiShellComponentPort;
@@ -56,7 +56,7 @@ function formatWarmingDecisionTime(nextWarmAt, now) {
56
56
  return `Decision in ${parts.join(" ")}`;
57
57
  }
58
58
  /** The one-line warming status the pinned session report shows; a decision is attached once warming acted. */
59
- function formatCacheWarmingStatus(status, now = Date.now()) {
59
+ export function formatCacheWarmingStatus(status, now = Date.now()) {
60
60
  const decision = status.decision;
61
61
  if (!decision || (status.state === "inactive" && !decision.economicsAvailable && !status.extensionOverride)) {
62
62
  return `Inactive (${status.reason ?? "unknown reason"})`;
@@ -304,15 +304,19 @@ function assistantPayloadContent(value) {
304
304
  }
305
305
  return content.length === 0 && value.length > 0 ? undefined : content;
306
306
  }
307
- function validatedToolDefinition(value) {
307
+ function validatedToolRenderers(value) {
308
308
  if (value === undefined)
309
309
  return undefined;
310
- if (!isPiToolDefinition(value))
311
- throw new TypeError("Pi tool-definition façade rejected malformed metadata");
310
+ if (!isPiToolRenderers(value))
311
+ throw new TypeError("Pi tool-renderer façade rejected malformed metadata");
312
312
  return value;
313
313
  }
314
- function isPiToolDefinition(value) {
315
- return isRecord(value) && typeof value.name === "string";
314
+ function isPiToolRenderers(value) {
315
+ if (!isRecord(value))
316
+ return false;
317
+ return (value.renderShell === undefined || value.renderShell === "default" || value.renderShell === "self")
318
+ && (value.renderCall === undefined || typeof value.renderCall === "function")
319
+ && (value.renderResult === undefined || typeof value.renderResult === "function");
316
320
  }
317
321
  function validatedMessageRenderer(value) {
318
322
  if (value === undefined)
@@ -329,7 +333,7 @@ function toolComponent(block, cwd, extensions, showImages, imageWidthCells, imag
329
333
  const toolCallId = stringPayload(payload, "toolCallId") ?? block.id;
330
334
  const toolName = stringPayload(payload, "toolName") ?? block.title ?? "tool";
331
335
  const argumentsPayload = toolArguments(block);
332
- const component = new ToolExecutionComponent(toolName, toolCallId, argumentsPayload, { showImages, imageWidthCells }, validatedToolDefinition(extensions?.getToolDefinition(toolName)), tui ?? createTuiFacade({ getColumns: () => 80, getRows: () => 24, requestRender() { } }), cwd);
336
+ const component = new ToolExecutionComponent(toolName, toolCallId, argumentsPayload, { showImages, imageWidthCells }, validatedToolRenderers(extensions?.getToolRenderers(toolName)), tui ?? createTuiFacade({ getColumns: () => 80, getRows: () => 24, requestRender() { } }), cwd);
333
337
  applyToolState(component, block);
334
338
  updateToolResult(component, block, imageAssets);
335
339
  return component;
@@ -109,7 +109,6 @@ export interface PiShellLoginDialogPort extends PiShellComponentPort {
109
109
  }
110
110
  export declare function createPiShellLoginDialog(runtime: Pick<PiShellEditorOptions, "getColumns" | "getRows" | "requestRender">, providerId: string, onComplete: (success: boolean, message?: string) => void, providerName?: string, title?: string): PiShellLoginDialogPort;
111
111
  export declare function createPiShellArmin(runtime: Pick<PiShellEditorOptions, "getColumns" | "getRows" | "requestRender">): PiShellComponentPort;
112
- export declare function createPiShellDaxnuts(runtime: Pick<PiShellEditorOptions, "getColumns" | "getRows" | "requestRender">): PiShellComponentPort;
113
112
  export declare function createPiShellEarendilAnnouncement(): PiShellComponentPort;
114
113
  export interface PiShellOperationLoaderPort extends PiShellComponentPort {
115
114
  readonly signal: AbortSignal;
@@ -1,5 +1,4 @@
1
1
  import { ArminComponent, BorderedLoader, DynamicBorder, ExtensionSelectorComponent, getSelectListTheme, LoginDialogComponent, ModelSelectorComponent, OAuthSelectorComponent, SettingsSelectorComponent, ShowImagesSelectorComponent, ThemeSelectorComponent, UserMessageSelectorComponent, } from "../startup-public.js";
2
- import { DaxnutsComponent, } from "./upstream/components/daxnuts.js";
3
2
  import { EarendilAnnouncementComponent, } from "./upstream/components/earendil-announcement.js";
4
3
  import { Box, Container, SelectList, Spacer, Text, } from "@earendil-works/pi-tui";
5
4
  import { ScopedModelsSelectorComponent, } from "./upstream/components/scoped-models-selector.js";
@@ -170,10 +169,6 @@ export function createPiShellArmin(runtime) {
170
169
  ensureTheme();
171
170
  return componentPort(new ArminComponent(createTuiFacade(runtime)));
172
171
  }
173
- export function createPiShellDaxnuts(runtime) {
174
- ensureTheme();
175
- return componentPort(new DaxnutsComponent(createTuiFacade(runtime)));
176
- }
177
172
  export function createPiShellEarendilAnnouncement() {
178
173
  ensureTheme();
179
174
  return componentPort(new EarendilAnnouncementComponent());
@@ -0,0 +1,10 @@
1
+ import { type PiShellSessionInfoPresentation } from "./shell-presenters-info.js";
2
+ export interface PiShellSessionInfoReferenceDocument {
3
+ readonly preamble: readonly string[];
4
+ readonly sections: readonly {
5
+ readonly title: string;
6
+ readonly rows: readonly string[];
7
+ }[];
8
+ }
9
+ /** Renders the pinned report values while leaving group names semantic for the owned screen. */
10
+ export declare function renderPiShellSessionInfoReferenceDocument(presentation: PiShellSessionInfoPresentation, width: number): PiShellSessionInfoReferenceDocument;
@@ -0,0 +1,61 @@
1
+ import { Text } from "@earendil-works/pi-tui";
2
+ import { formatCacheWarmingStatus } from "./shell-presenters-info.js";
3
+ import { ensureTheme, formatSessionTokens } from "./shell-shared-facade.js";
4
+ import { piTheme } from "./theme.js";
5
+ /** Renders the pinned report values while leaving group names semantic for the owned screen. */
6
+ export function renderPiShellSessionInfoReferenceDocument(presentation, width) {
7
+ ensureTheme();
8
+ const { stats, sessionName, cacheWaste, usageBreakdown, cacheWarming } = presentation;
9
+ const render = (rows) => new Text(rows.join("\n"), 1, 0).render(width);
10
+ const preamble = [
11
+ ...(sessionName ? [`${piTheme().fg("dim", "Name:")} ${sessionName}`] : []),
12
+ `${piTheme().fg("dim", "File:")} ${stats.sessionFile ?? "In-memory"}`,
13
+ `${piTheme().fg("dim", "ID:")} ${stats.sessionId}`,
14
+ ];
15
+ const messages = [
16
+ `${piTheme().fg("dim", "Total:")} ${stats.totalMessages}`,
17
+ `${piTheme().fg("dim", "User:")} ${stats.userMessages}`,
18
+ `${piTheme().fg("dim", "Assistant:")} ${stats.assistantMessages}`,
19
+ `${piTheme().fg("dim", "Tools:")} ${stats.toolCalls} calls, ${stats.toolResults} results`,
20
+ ];
21
+ const { input, cacheRead, cacheWrite } = stats.tokens;
22
+ const promptTokens = input + cacheRead + cacheWrite;
23
+ const tokens = [`${piTheme().fg("dim", "Input:")} ${promptTokens.toLocaleString()}`];
24
+ if (promptTokens > 0 && (cacheRead > 0 || cacheWrite > 0)) {
25
+ tokens.push(` ${piTheme().fg("dim", "Cached:")} ${cacheRead.toLocaleString()} ${piTheme().fg("dim", `(${((cacheRead / promptTokens) * 100).toFixed(1)}%)`)}`);
26
+ const written = cacheWrite > 0 ? ` ${piTheme().fg("dim", `(${cacheWrite.toLocaleString()} written to cache)`)}` : "";
27
+ tokens.push(` ${piTheme().fg("dim", "Uncached:")} ${(input + cacheWrite).toLocaleString()}${written}`);
28
+ }
29
+ tokens.push(`${piTheme().fg("dim", "Output:")} ${stats.tokens.output.toLocaleString()}`);
30
+ tokens.push(`${piTheme().fg("dim", "Total:")} ${stats.tokens.total.toLocaleString()}`);
31
+ const warmingStatus = cacheWarming.status;
32
+ const warming = [
33
+ `${piTheme().fg("dim", "Mode:")} ${cacheWarming.mode}`,
34
+ `${piTheme().fg("dim", "Status:")} ${warmingStatus ? formatCacheWarmingStatus(warmingStatus) : "Inactive (cache warming unavailable)"}`,
35
+ ];
36
+ const warmingDecision = warmingStatus?.decision;
37
+ if (warmingDecision?.economicsAvailable) {
38
+ warming.push(`${piTheme().fg("dim", "Cache miss penalty:")} $${warmingDecision.missCost.toFixed(3)}`);
39
+ warming.push(`${piTheme().fg("dim", "Refresh cost:")} $${warmingDecision.warmCost.toFixed(3)}`);
40
+ }
41
+ const sections = [
42
+ { title: "Messages", rows: render(messages) },
43
+ { title: "Tokens", rows: render(tokens) },
44
+ { title: "Cache Warming", rows: render(warming) },
45
+ ];
46
+ if (stats.cost > 0 || cacheWaste.missedTokens > 0) {
47
+ const cost = [`${piTheme().fg("dim", "Total:")} $${stats.cost.toFixed(3)}`];
48
+ if (usageBreakdown.length > 1)
49
+ for (const entry of usageBreakdown) {
50
+ cost.push(` ${piTheme().fg("dim", `${entry.key}:`)} $${entry.cost.toFixed(3)} ${piTheme().fg("dim", `(${formatSessionTokens(entry.tokens)} tokens)`)}`);
51
+ }
52
+ if (cacheWaste.missedTokens > 0) {
53
+ const detail = `${cacheWaste.missedTokens.toLocaleString()} tokens, ${cacheWaste.missCount === 1 ? "1 miss" : `${cacheWaste.missCount} misses`}`;
54
+ cost.push(cacheWaste.missedCost >= 0.0001
55
+ ? `${piTheme().fg("dim", "Cache Re-billed:")} $${cacheWaste.missedCost.toFixed(3)} ${piTheme().fg("dim", `(${detail})`)}`
56
+ : `${piTheme().fg("dim", "Cache Re-billed:")} ${detail}`);
57
+ }
58
+ sections.push({ title: "Cost", rows: render(cost) });
59
+ }
60
+ return { preamble: render(preamble), sections };
61
+ }
@@ -121,7 +121,7 @@ export interface PiShellImageAssetResolver {
121
121
  }
122
122
  export interface PiShellExtensionRendererResolver {
123
123
  getMessageRenderer(customType: string): unknown;
124
- getToolDefinition(toolName: string): unknown;
124
+ getToolRenderers(toolName: string): unknown;
125
125
  getShortcuts?(bindings: KeybindingsConfig): readonly {
126
126
  readonly key: string;
127
127
  readonly description: string;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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
@@ -287,11 +287,11 @@ export declare const KEYBINDINGS: {
287
287
  readonly description: "Move cursor word right";
288
288
  };
289
289
  readonly "tui.editor.cursorLineStart": {
290
- readonly defaultKeys: ["home", "ctrl+home", "ctrl+a"];
290
+ readonly defaultKeys: ["home", "ctrl+a"];
291
291
  readonly description: "Move to line start";
292
292
  };
293
293
  readonly "tui.editor.cursorLineEnd": {
294
- readonly defaultKeys: ["end", "ctrl+end", "ctrl+e"];
294
+ readonly defaultKeys: ["end", "ctrl+e"];
295
295
  readonly description: "Move to line end";
296
296
  };
297
297
  readonly "tui.editor.jumpForward": {
@@ -419,11 +419,11 @@ export declare const KEYBINDINGS: {
419
419
  readonly description: "Close transcript search";
420
420
  };
421
421
  readonly "tui.altScreen.top": {
422
- readonly defaultKeys: "home";
422
+ readonly defaultKeys: "ctrl+home";
423
423
  readonly description: "Scroll viewport to top";
424
424
  };
425
425
  readonly "tui.altScreen.bottom": {
426
- readonly defaultKeys: "end";
426
+ readonly defaultKeys: "ctrl+end";
427
427
  readonly description: "Scroll viewport to bottom";
428
428
  };
429
429
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0",
3
+ "sourceVersion": "1.0.4",
4
4
  "upstreamRepository": "https://github.com/earendil-works/pi.git",
5
- "upstreamCommit": "a13d35a742c6ef8462812a28fbe1d8c8b7431c32",
5
+ "upstreamCommit": "7c10bd4337495ee613f2224843ecdf349b80d1df",
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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, loading
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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,10 +1,11 @@
1
1
  import { Container, type TUI, type TuiMouseEvent } from "@earendil-works/pi-tui";
2
- import { type ToolDefinition } from "@earendil-works/pi-coding-agent";
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
5
  };
6
6
  /** The caller-side merge 0.85.1 performs before handing a definition to the component: built-in renderers fill the gaps. */
7
- export declare function mergeBuiltInRenderers(definition: ToolDefinition<any, any, any> | undefined, builtIn: ToolDefinition<any, any, any> | undefined): ToolDefinition<any, any, any> | undefined;
7
+ type ToolRendererInput = ToolRenderers | ToolDefinition<any, any, any>;
8
+ export declare function mergeBuiltInRenderers(definition: ToolRendererInput | undefined, builtIn: ToolRendererInput | undefined): ToolRenderers | undefined;
8
9
  export interface ToolExecutionOptions {
9
10
  showImages?: boolean;
10
11
  imageWidthCells?: number;
@@ -38,7 +39,7 @@ export declare class ToolExecutionComponent extends Container {
38
39
  private argsComplete;
39
40
  private result;
40
41
  private hideComponent;
41
- constructor(toolName: string, toolCallId: string, args: any, options: ToolExecutionOptions | undefined, toolDefinition: ToolDefinition<any, any, any> | undefined, ui: TUI, cwd: string);
42
+ constructor(toolName: string, toolCallId: string, args: any, options: ToolExecutionOptions | undefined, toolDefinition: ToolRenderers | ToolDefinition<any, any, any> | undefined, ui: TUI, cwd: string);
42
43
  private getCallRenderer;
43
44
  private getResultRenderer;
44
45
  private hasRendererDefinition;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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
@@ -13,17 +13,18 @@ import { Box, Container, getCapabilities, getImageDimensions, imageFallback, Mou
13
13
  import { createReadToolDefinition, createBashToolDefinition, createEditToolDefinition, createWriteToolDefinition, createGrepToolDefinition, createFindToolDefinition, createLsToolDefinition, keyHint, } from "../../../startup-public.js";
14
14
  import { piTheme } from "../theme/theme.js";
15
15
  import { ToolImagePresentation } from "../../tool-image-presentation.js";
16
- /** The caller-side merge 0.85.1 performs before handing a definition to the component: built-in renderers fill the gaps. */
17
16
  export function mergeBuiltInRenderers(definition, builtIn) {
18
17
  if (definition === undefined)
19
18
  return builtIn;
20
19
  if (builtIn === undefined)
21
20
  return definition;
22
- const merged = { ...definition };
23
- if (definition.renderCall === undefined && builtIn.renderCall !== undefined)
24
- merged.renderCall = builtIn.renderCall;
25
- if (definition.renderResult === undefined && builtIn.renderResult !== undefined)
26
- merged.renderResult = builtIn.renderResult;
21
+ const selected = definition;
22
+ const fallback = builtIn;
23
+ const merged = { ...selected };
24
+ if (selected.renderCall === undefined && fallback.renderCall !== undefined)
25
+ merged.renderCall = fallback.renderCall;
26
+ if (selected.renderResult === undefined && fallback.renderResult !== undefined)
27
+ merged.renderResult = fallback.renderResult;
27
28
  return merged;
28
29
  }
29
30
  const definitions = { read: createReadToolDefinition, bash: createBashToolDefinition, edit: createEditToolDefinition,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
3
3
  * packages/coding-agent/src/modes/interactive/components/tree-selector.ts.
4
4
  * Modifications: Source-synchronized tree selector port: preserve filtering, folding, labels, copying,
5
5
  * tree navigation, key hints, focus, and viewport behavior while remapping public types/components
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
3
3
  * packages/coding-agent/src/modes/interactive/components/tree-selector.ts.
4
4
  * Modifications: Source-synchronized tree selector port: preserve filtering, folding, labels, copying,
5
5
  * tree navigation, key hints, focus, and viewport behavior while remapping public types/components
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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, and the shared bare-A1 modal
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-tui 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-tui 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-tui 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-tui 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-tui 1.0.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-tui 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-tui 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-tui 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-tui 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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.0 (MIT), commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32,
2
+ * Provenance: @earendil-works/pi-tui 1.0.4 (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df,
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