@timurproko/a1 0.2.7-dev.808 → 0.2.7-dev.810

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 (141) hide show
  1. package/README.md +4 -2
  2. package/dist/app/session-shell/dialog-coordinator.d.ts +42 -0
  3. package/dist/app/session-shell/dialog-coordinator.js +133 -0
  4. package/dist/app/session-shell/dock-chrome.d.ts +34 -0
  5. package/dist/app/session-shell/dock-chrome.js +109 -0
  6. package/dist/app/session-shell/exit-notice.d.ts +1 -1
  7. package/dist/app/session-shell/exit-notice.js +1 -1
  8. package/dist/app/session-shell/extension-surface.d.ts +30 -0
  9. package/dist/app/session-shell/extension-surface.js +105 -0
  10. package/dist/app/session-shell/input-surface-switch.d.ts +36 -0
  11. package/dist/app/session-shell/input-surface-switch.js +85 -0
  12. package/dist/app/session-shell/login-interaction.d.ts +27 -0
  13. package/dist/app/session-shell/login-interaction.js +91 -0
  14. package/dist/app/session-shell/prompt-submission.d.ts +48 -0
  15. package/dist/app/session-shell/prompt-submission.js +276 -0
  16. package/dist/app/session-shell/resident-tab-coordinator.d.ts +41 -0
  17. package/dist/app/session-shell/resident-tab-coordinator.js +120 -0
  18. package/dist/app/session-shell/response-copy-transport.d.ts +13 -0
  19. package/dist/app/session-shell/response-copy-transport.js +16 -7
  20. package/dist/app/session-shell/session-concern.d.ts +22 -0
  21. package/dist/app/session-shell/session-concern.js +29 -0
  22. package/dist/app/session-shell/session-lifecycle.d.ts +29 -0
  23. package/dist/app/session-shell/session-lifecycle.js +49 -0
  24. package/dist/app/session-shell/session-shell-root.d.ts +1 -1
  25. package/dist/app/session-shell/session-shell-root.js +182 -931
  26. package/dist/app/session-shell/session-shell.d.ts +2 -8
  27. package/dist/app/session-shell/session-shell.js +202 -901
  28. package/dist/app/session-shell/settings-bindings.d.ts +17 -0
  29. package/dist/app/session-shell/settings-bindings.js +91 -0
  30. package/dist/app/session-shell/shell-editor-factory.d.ts +27 -0
  31. package/dist/app/session-shell/shell-editor-factory.js +102 -0
  32. package/dist/app/session-shell/shell-host.d.ts +6 -0
  33. package/dist/app/session-shell/shell-host.js +8 -0
  34. package/dist/app/session-shell/shell-layout.d.ts +64 -0
  35. package/dist/app/session-shell/shell-layout.js +18 -0
  36. package/dist/app/session-shell/suggestion-surface.d.ts +25 -0
  37. package/dist/app/session-shell/suggestion-surface.js +63 -0
  38. package/dist/app/session-shell/transcript-document.d.ts +78 -0
  39. package/dist/app/session-shell/transcript-document.js +365 -0
  40. package/dist/app/session-shell/viewport-layout.d.ts +31 -0
  41. package/dist/app/session-shell/viewport-layout.js +160 -0
  42. package/dist/app/session-shell/workflow-output.d.ts +33 -0
  43. package/dist/app/session-shell/workflow-output.js +174 -0
  44. package/dist/app/session-shell/workflow-router.d.ts +25 -0
  45. package/dist/app/session-shell/workflow-router.js +39 -0
  46. package/dist/composition/owned-ui.d.ts +4 -25
  47. package/dist/composition/owned-ui.js +26 -270
  48. package/dist/composition/resident-tab-bridge.d.ts +16 -0
  49. package/dist/composition/resident-tab-bridge.js +159 -0
  50. package/dist/composition/session-backend.d.ts +19 -0
  51. package/dist/composition/session-backend.js +1 -0
  52. package/dist/composition/session-runtime-registry.d.ts +20 -0
  53. package/dist/composition/session-runtime-registry.js +85 -0
  54. package/dist/composition/startup-route.d.ts +32 -0
  55. package/dist/composition/startup-route.js +72 -0
  56. package/dist/foundation/release/progress-palette.generated.d.ts +2 -2
  57. package/dist/foundation/release/progress-palette.generated.js +2 -2
  58. package/dist/foundation/startup/startup-descriptor.js +2 -2
  59. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +2 -2
  60. package/dist/integrations/pi/components/resources/builtin-themes.js +2 -2
  61. package/dist/integrations/pi/components/shell-extension-ui.js +79 -60
  62. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +1 -1
  63. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +1 -1
  64. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +2 -2
  65. package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +1 -1
  66. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +1 -1
  67. package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +1 -1
  68. package/dist/integrations/pi/components/upstream/components/extension-editor.js +1 -1
  69. package/dist/integrations/pi/components/upstream/components/extension-input.js +1 -1
  70. package/dist/integrations/pi/components/upstream/components/extension-selector.js +1 -1
  71. package/dist/integrations/pi/components/upstream/components/mermaid.js +1 -1
  72. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +1 -1
  73. package/dist/integrations/pi/components/upstream/components/owned-editor.js +1 -1
  74. package/dist/integrations/pi/components/upstream/components/pi-logo.js +1 -1
  75. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +1 -1
  76. package/dist/integrations/pi/components/upstream/components/session-footer.js +1 -1
  77. package/dist/integrations/pi/components/upstream/components/session-selector-search.js +1 -1
  78. package/dist/integrations/pi/components/upstream/components/session-selector.js +1 -1
  79. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +1 -1
  80. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +1 -1
  81. package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +1 -1
  82. package/dist/integrations/pi/components/upstream/components/status-indicator.js +1 -1
  83. package/dist/integrations/pi/components/upstream/components/themed-text.d.ts +1 -1
  84. package/dist/integrations/pi/components/upstream/components/themed-text.js +1 -1
  85. package/dist/integrations/pi/components/upstream/components/thinking-selector.d.ts +1 -1
  86. package/dist/integrations/pi/components/upstream/components/thinking-selector.js +1 -1
  87. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +2 -4
  88. package/dist/integrations/pi/components/upstream/components/tool-execution.js +77 -98
  89. package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +1 -1
  90. package/dist/integrations/pi/components/upstream/components/tree-selector.js +1 -1
  91. package/dist/integrations/pi/components/upstream/components/trust-selector.js +1 -1
  92. package/dist/integrations/pi/components/upstream/external-editor.js +1 -1
  93. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +1 -1
  94. package/dist/integrations/pi/components/upstream/history/editor-core.js +1 -1
  95. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +1 -1
  96. package/dist/integrations/pi/components/upstream/history/kill-ring.js +1 -1
  97. package/dist/integrations/pi/components/upstream/history/printable-key.js +1 -1
  98. package/dist/integrations/pi/components/upstream/history/text-helpers.js +1 -1
  99. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +1 -1
  100. package/dist/integrations/pi/components/upstream/history/undo-stack.js +1 -1
  101. package/dist/integrations/pi/components/upstream/history/word-navigation.js +1 -1
  102. package/dist/integrations/pi/components/upstream/model-search.d.ts +1 -1
  103. package/dist/integrations/pi/components/upstream/program-status-reporter.d.ts +1 -1
  104. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +1 -1
  105. package/dist/integrations/pi/components/upstream/theme/theme.js +1 -1
  106. package/dist/integrations/pi/engine/adapter.d.ts +4 -77
  107. package/dist/integrations/pi/engine/adapter.js +85 -393
  108. package/dist/integrations/pi/engine/command-dispatch.d.ts +13 -0
  109. package/dist/integrations/pi/engine/command-dispatch.js +57 -0
  110. package/dist/integrations/pi/engine/host.js +2 -2
  111. package/dist/integrations/pi/engine/ports.d.ts +56 -0
  112. package/dist/integrations/pi/engine/ports.js +89 -0
  113. package/dist/integrations/pi/engine/resources/changelog.json +4 -4
  114. package/dist/integrations/pi/engine/view-state.d.ts +42 -0
  115. package/dist/integrations/pi/engine/view-state.js +126 -0
  116. package/dist/integrations/pi/startup-public.js +164 -150
  117. package/dist/integrations/pi/startup-public.manifest.json +351 -310
  118. package/dist/integrations/pi/tui-runtime/adapter.js +4 -0
  119. package/dist/integrations/pi/tui-runtime/contracts.d.ts +5 -0
  120. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +1 -1
  121. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +1 -1
  122. package/dist/native/darwin-arm64/manifest.json +1 -1
  123. package/dist/native/darwin-arm64/terminal-host.manifest.json +3 -3
  124. package/dist/native/darwin-arm64/terminal-host.node +0 -0
  125. package/dist/native/darwin-x64/manifest.json +1 -1
  126. package/dist/native/darwin-x64/terminal-host.manifest.json +3 -3
  127. package/dist/native/darwin-x64/terminal-host.node +0 -0
  128. package/dist/native/linux-x64/manifest.json +1 -1
  129. package/dist/native/linux-x64/terminal-host.manifest.json +3 -3
  130. package/dist/native/linux-x64/terminal-host.node +0 -0
  131. package/dist/native/win32-x64/manifest.json +2 -2
  132. package/dist/native/win32-x64/process-guardian.node +0 -0
  133. package/dist/native/win32-x64/terminal-host.manifest.json +3 -3
  134. package/dist/native/win32-x64/terminal-host.node +0 -0
  135. package/dist/runtime-payload-inventory.json +5181 -5369
  136. package/dist/ui/components/transcript-viewport.js +10 -19
  137. package/docs/architecture/boundaries.md +14 -0
  138. package/docs/architecture/resident-tabs.md +8 -8
  139. package/docs/architecture/response-copy-delivery.md +1 -1
  140. package/docs/architecture/toolchain.md +2 -2
  141. package/package.json +5 -5
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
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.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
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.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
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
@@ -14,7 +14,6 @@ export interface ToolExecutionOptions {
14
14
  export declare class ToolExecutionComponent extends Container {
15
15
  private contentBox;
16
16
  private contentText;
17
- private contentTextRegion;
18
17
  private selfRenderContainer;
19
18
  private selfRenderHeight;
20
19
  private callRendererComponent;
@@ -42,9 +41,6 @@ export declare class ToolExecutionComponent extends Container {
42
41
  private result;
43
42
  private hideComponent;
44
43
  constructor(toolName: string, toolCallId: string, args: any, options: ToolExecutionOptions | undefined, toolDefinition: ToolRenderers | ToolDefinition<any, any, any> | undefined, ui: TUI, cwd: string);
45
- private getCallRenderer;
46
- private getResultRenderer;
47
- private hasRendererDefinition;
48
44
  private getRenderShell;
49
45
  private getRenderContext;
50
46
  private createCallFallback;
@@ -63,6 +59,8 @@ export declare class ToolExecutionComponent extends Container {
63
59
  render(width: number): string[];
64
60
  handleMouse(event: TuiMouseEvent): ReturnType<Container["handleMouse"]>;
65
61
  private updateDisplay;
62
+ private callTheme;
63
+ private appendRenderer;
66
64
  private composeDisplay;
67
65
  private getTextOutput;
68
66
  private formatToolExecution;
@@ -1,11 +1,12 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
3
3
  * packages/coding-agent/src/modes/interactive/components/tool-execution.ts.
4
4
  * Modifications: Retain pinned shell/public renderers. Own image conversion; replace private APIs with
5
5
  * public/local equivalents. Use bare-A1 secondary-accent read ranges and concise collapse shortcut
6
- * hints. See docs/architecture/tool-image-presentation.md.
6
+ * hints. Restore the enclosing default-shell background after nested renderer resets. See
7
+ * docs/architecture/tool-image-presentation.md.
7
8
  * Deviations: current-tool-image-conversion-ownership, read-range-secondary-accent,
8
- * concise-tool-expand-shortcut-hint.
9
+ * concise-tool-expand-shortcut-hint, default-shell-background-reset-scoping.
9
10
  */
10
11
  import { stripVTControlCharacters } from "node:util";
11
12
  import { Box, Container, getCapabilities, getImageDimensions, imageFallback, MouseRegion, Spacer, Text } from "@earendil-works/pi-tui";
@@ -29,6 +30,30 @@ function withConciseExpandHint(component) {
29
30
  return typeof value === "function" ? value.bind(target) : value;
30
31
  } });
31
32
  }
33
+ function enclosingToolBackground(theme, role) {
34
+ const background = theme.bg(role, "\u0000").split("\u0000")[0];
35
+ // Invariant: child defaults return to the enclosing shell, not the terminal canvas.
36
+ return text => theme.bg(role, text.replace(/\u001b\[([0-9:;]*)m/gu, (ansi, parameters) => {
37
+ const values = parameters.split(";");
38
+ let restore = false;
39
+ for (let index = 0; index < values.length; index++) {
40
+ const token = values[index], code = Number(token.split(":", 1)[0] || "0");
41
+ if (code === 0 || code === 49)
42
+ restore = true;
43
+ else if (code >= 40 && code <= 47 || code >= 100 && code <= 107)
44
+ restore = false;
45
+ else if (code === 38 || code === 48 || code === 58) {
46
+ if (code === 48)
47
+ restore = false;
48
+ if (!token.includes(":")) {
49
+ const mode = Number(values[index + 1]);
50
+ index += mode === 2 ? 4 : mode === 5 ? 2 : 1;
51
+ }
52
+ }
53
+ }
54
+ return restore ? ansi + background : ansi;
55
+ }));
56
+ }
32
57
  export function mergeBuiltInRenderers(definition, builtIn) {
33
58
  if (definition === undefined)
34
59
  return builtIn;
@@ -71,7 +96,6 @@ function formatToolCallWithArgs(title, args, expanded) {
71
96
  export class ToolExecutionComponent extends Container {
72
97
  contentBox;
73
98
  contentText;
74
- contentTextRegion;
75
99
  selfRenderContainer;
76
100
  selfRenderHeight = 0;
77
101
  callRendererComponent;
@@ -118,27 +142,17 @@ export class ToolExecutionComponent extends Container {
118
142
  this.ui.requestRender();
119
143
  });
120
144
  this.addChild(new Spacer(1));
121
- this.contentBox = new Box(1, 1, (text) => piTheme().bg("toolPendingBg", text));
122
- this.contentText = new Text("", 1, 1, (text) => piTheme().bg("toolPendingBg", text));
123
- this.contentTextRegion = this.createResultRegion(this.contentText);
145
+ this.contentBox = new Box(1, 1, enclosingToolBackground(piTheme(), "toolPendingBg"));
146
+ this.contentText = new Text("", 1, 1, enclosingToolBackground(piTheme(), "toolPendingBg"));
124
147
  this.selfRenderContainer = new Container();
125
- if (this.hasRendererDefinition()) {
148
+ if (this.toolDefinition !== undefined) {
126
149
  this.addChild(this.getRenderShell() === "self" ? this.selfRenderContainer : this.contentBox);
127
150
  }
128
151
  else {
129
- this.addChild(this.contentTextRegion);
152
+ this.addChild(this.createResultRegion(this.contentText));
130
153
  }
131
154
  this.updateDisplay();
132
155
  }
133
- getCallRenderer() {
134
- return this.toolDefinition?.renderCall;
135
- }
136
- getResultRenderer() {
137
- return this.toolDefinition?.renderResult;
138
- }
139
- hasRendererDefinition() {
140
- return this.toolDefinition !== undefined;
141
- }
142
156
  getRenderShell() {
143
157
  return this.toolDefinition?.renderShell ?? "default";
144
158
  }
@@ -171,9 +185,8 @@ export class ToolExecutionComponent extends Container {
171
185
  createResultFallback() {
172
186
  const theme = piTheme();
173
187
  const output = this.getTextOutput();
174
- if (!output) {
188
+ if (!output)
175
189
  return undefined;
176
- }
177
190
  const lines = output.split("\n");
178
191
  const displayLines = this.expanded ? lines : lines.slice(0, FALLBACK_PREVIEW_LINES);
179
192
  const remaining = lines.length - displayLines.length;
@@ -245,7 +258,7 @@ export class ToolExecutionComponent extends Container {
245
258
  if (this.hideComponent) {
246
259
  return [];
247
260
  }
248
- if (this.hasRendererDefinition() && this.getRenderShell() === "self") {
261
+ if (this.toolDefinition !== undefined && this.getRenderShell() === "self") {
249
262
  const contentLines = this.selfRenderContainer.render(width);
250
263
  this.selfRenderHeight = contentLines.length;
251
264
  if (contentLines.length === 0 && this.imageComponents.length === 0) {
@@ -271,7 +284,7 @@ export class ToolExecutionComponent extends Container {
271
284
  return super.render(width);
272
285
  }
273
286
  handleMouse(event) {
274
- if (!this.hasRendererDefinition() || this.getRenderShell() !== "self")
287
+ if (this.toolDefinition === undefined || this.getRenderShell() !== "self")
275
288
  return super.handleMouse(event);
276
289
  if (event.y <= 0 || event.y > this.selfRenderHeight)
277
290
  return undefined;
@@ -292,77 +305,52 @@ export class ToolExecutionComponent extends Container {
292
305
  this.updatingDisplay = false;
293
306
  }
294
307
  }
308
+ callTheme(theme, renderer) {
309
+ if (this.toolName !== "read" || renderer !== this.builtInToolDefinition?.renderCall || !isPiAccentProjectionEnabled)
310
+ return theme;
311
+ return new Proxy(theme, { get(target, property) {
312
+ if (property === "fg")
313
+ return (...args) => target.fg(args[0] === "warning" ? "mdHeading" : args[0], args[1]);
314
+ const value = Reflect.get(target, property, target);
315
+ return typeof value === "function" ? value.bind(target) : value;
316
+ } });
317
+ }
318
+ appendRenderer(container, field, render, fallback, builtIn) {
319
+ if (render) {
320
+ try {
321
+ const component = render(this.getRenderContext(this[field]));
322
+ this[field] = component;
323
+ container.addChild(this.createResultRegion(builtIn ? withConciseExpandHint(component) : component));
324
+ return true;
325
+ }
326
+ catch {
327
+ this[field] = undefined;
328
+ }
329
+ }
330
+ const component = fallback();
331
+ if (component)
332
+ container.addChild(this.createResultRegion(component));
333
+ return component !== undefined;
334
+ }
295
335
  composeDisplay() {
296
336
  const theme = piTheme();
297
- const bgFn = this.isPartial
298
- ? (text) => theme.bg("toolPendingBg", text)
299
- : this.result?.isError
300
- ? (text) => theme.bg("toolErrorBg", text)
301
- : (text) => theme.bg("toolSuccessBg", text);
337
+ const bgFn = enclosingToolBackground(theme, this.isPartial ? "toolPendingBg"
338
+ : this.result?.isError ? "toolErrorBg" : "toolSuccessBg");
302
339
  let hasContent = false;
303
340
  this.hideComponent = false;
304
- if (this.hasRendererDefinition()) {
341
+ if (this.toolDefinition !== undefined) {
305
342
  const renderContainer = this.getRenderShell() === "self" ? this.selfRenderContainer : this.contentBox;
306
343
  if (renderContainer instanceof Box) {
307
344
  renderContainer.setBgFn(bgFn);
308
345
  renderContainer.setPaddingX(this.outputPad);
309
346
  }
310
347
  renderContainer.clear();
311
- const callRenderer = this.getCallRenderer();
312
- if (!callRenderer) {
313
- renderContainer.addChild(this.createResultRegion(this.createCallFallback()));
314
- hasContent = true;
315
- }
316
- else {
317
- try {
318
- const component = callRenderer(this.args, this.toolName === "read" && callRenderer === this.builtInToolDefinition?.renderCall && isPiAccentProjectionEnabled
319
- ? new Proxy(theme, {
320
- get(target, property) {
321
- if (property === "fg") {
322
- return (...args) => target.fg(args[0] === "warning" ? "mdHeading" : args[0], args[1]);
323
- }
324
- const value = Reflect.get(target, property, target);
325
- return typeof value === "function" ? value.bind(target) : value;
326
- },
327
- })
328
- : theme, this.getRenderContext(this.callRendererComponent));
329
- this.callRendererComponent = component;
330
- renderContainer.addChild(this.createResultRegion(callRenderer === this.builtInToolDefinition?.renderCall
331
- ? withConciseExpandHint(component) : component));
332
- hasContent = true;
333
- }
334
- catch {
335
- this.callRendererComponent = undefined;
336
- renderContainer.addChild(this.createResultRegion(this.createCallFallback()));
337
- hasContent = true;
338
- }
339
- }
340
- if (this.result) {
341
- const resultRenderer = this.getResultRenderer();
342
- if (!resultRenderer) {
343
- const component = this.createResultFallback();
344
- if (component) {
345
- renderContainer.addChild(this.createResultRegion(component));
346
- hasContent = true;
347
- }
348
- }
349
- else {
350
- try {
351
- const component = resultRenderer({ content: this.result.content, details: this.result.details }, { expanded: this.expanded, isPartial: this.isPartial }, theme, this.getRenderContext(this.resultRendererComponent));
352
- this.resultRendererComponent = component;
353
- renderContainer.addChild(this.createResultRegion(resultRenderer === this.builtInToolDefinition?.renderResult
354
- ? withConciseExpandHint(component) : component));
355
- hasContent = true;
356
- }
357
- catch {
358
- this.resultRendererComponent = undefined;
359
- const component = this.createResultFallback();
360
- if (component) {
361
- renderContainer.addChild(this.createResultRegion(component));
362
- hasContent = true;
363
- }
364
- }
365
- }
348
+ const call = this.toolDefinition?.renderCall;
349
+ hasContent = this.appendRenderer(renderContainer, "callRendererComponent", call ? context => call(this.args, this.callTheme(theme, call), context) : undefined, () => this.createCallFallback(), call === this.builtInToolDefinition?.renderCall);
350
+ const result = this.result;
351
+ if (result) {
352
+ const render = this.toolDefinition?.renderResult;
353
+ hasContent = this.appendRenderer(renderContainer, "resultRendererComponent", render ? context => render({ content: result.content, details: result.details }, { expanded: this.expanded, isPartial: this.isPartial }, theme, context) : undefined, () => this.createResultFallback(), render === this.builtInToolDefinition?.renderResult) || hasContent;
366
354
  }
367
355
  }
368
356
  else {
@@ -371,13 +359,9 @@ export class ToolExecutionComponent extends Container {
371
359
  this.contentText.setText(this.formatToolExecution());
372
360
  hasContent = true;
373
361
  }
374
- for (const img of this.imageComponents) {
375
- this.removeChild(img);
376
- }
362
+ for (const child of [...this.imageComponents, ...this.imageSpacers])
363
+ this.removeChild(child);
377
364
  this.imageComponents = [];
378
- for (const spacer of this.imageSpacers) {
379
- this.removeChild(spacer);
380
- }
381
365
  this.imageSpacers = [];
382
366
  this.images.update(this.result?.content ?? [], this.showImages);
383
367
  for (const imageComponent of this.images.components(this.imageWidthCells)) {
@@ -387,17 +371,14 @@ export class ToolExecutionComponent extends Container {
387
371
  this.imageComponents.push(imageComponent);
388
372
  this.addChild(imageComponent);
389
373
  }
390
- if (this.hasRendererDefinition() && !hasContent && this.imageComponents.length === 0) {
374
+ if (this.toolDefinition !== undefined && !hasContent && this.imageComponents.length === 0) {
391
375
  this.hideComponent = true;
392
376
  }
393
377
  }
394
378
  getTextOutput() {
395
379
  if (!this.result)
396
380
  return "";
397
- const text = this.result.content.filter(part => part.type === "text").map(part => Array.from(stripVTControlCharacters(part.text ?? "")).filter(char => {
398
- const code = char.codePointAt(0);
399
- return code === 9 || code === 10 || code > 31 && (code < 0xfff9 || code > 0xfffb);
400
- }).join("")).join("\n");
381
+ const text = this.result.content.filter(part => part.type === "text").map(part => stripVTControlCharacters(part.text ?? "").replace(/[\u0000-\u0008\u000b-\u001f\ufff9-\ufffb]/gu, "")).join("\n");
401
382
  if (getCapabilities().images && this.showImages)
402
383
  return text;
403
384
  const indicators = this.result.content.filter(part => part.type === "image").map(part => imageFallback(part.mimeType ?? "image/unknown", part.data && part.mimeType ? getImageDimensions(part.data, part.mimeType) ?? undefined : undefined)).join("\n");
@@ -407,13 +388,11 @@ export class ToolExecutionComponent extends Container {
407
388
  const theme = piTheme();
408
389
  let text = theme.fg("toolTitle", theme.bold(this.toolName));
409
390
  const content = JSON.stringify(this.args, null, 2);
410
- if (content) {
391
+ if (content)
411
392
  text += `\n\n${content}`;
412
- }
413
393
  const output = this.getTextOutput();
414
- if (output) {
394
+ if (output)
415
395
  text += `\n${output}`;
416
- }
417
396
  return text;
418
397
  }
419
398
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
3
3
  * packages/coding-agent/src/modes/interactive/components/tree-selector.ts.
4
4
  * Modifications: Port remaps public types/components plus owned keybindings/theme helpers while
5
5
  * preserving tree behavior; bare A1 uses compact modal chrome and label editing, four-mode
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
3
3
  * packages/coding-agent/src/modes/interactive/components/tree-selector.ts.
4
4
  * Modifications: Port remaps public types/components plus owned keybindings/theme helpers while
5
5
  * preserving tree behavior; bare A1 uses compact modal chrome and label editing, four-mode
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
3
3
  * packages/coding-agent/src/modes/interactive/components/trust-selector.ts.
4
4
  * Modifications: Mechanical source-synchronized trust selector port with injected public
5
5
  * ProjectTrustStore-derived options, remapped owned theme imports, the shared bare-A1 modal shortcut
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
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.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-tui 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
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.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-tui 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
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.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-tui 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
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.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-tui 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
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.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-tui 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
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.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-tui 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
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.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-tui 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
3
3
  * packages/tui/src/undo-stack.ts.
4
4
  * Modifications: Owned editor core or minimal editor-local helper subset; public imports, strict
5
5
  * types, typed persistent-history hooks, and semantic border state. Public terminal runtime/exports
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-tui 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-tui 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
3
3
  * packages/tui/src/undo-stack.ts.
4
4
  * Modifications: Owned editor core or minimal editor-local helper subset; public imports, strict
5
5
  * types, typed persistent-history hooks, and semantic border state. Public terminal runtime/exports
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-tui 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-tui 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
3
3
  * packages/tui/src/word-navigation.ts.
4
4
  * Modifications: Owned editor core or minimal editor-local helper subset; public imports, strict
5
5
  * types, typed persistent-history hooks, and semantic border state. Public terminal runtime/exports
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
3
3
  * packages/coding-agent/src/modes/interactive/model-search.ts.
4
4
  * Modifications: Mechanical source-synchronized port preserving pinned model search terms for stateful
5
5
  * scoped-model filtering.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
3
3
  * packages/coding-agent/src/modes/interactive/program-status-reporter.ts.
4
4
  * Modifications: Remap Pi session events to A1's neutral run events, inject the terminal reporter, use
5
5
  * A1's application identity, and clear dialog state when the owned session changes.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
3
3
  * packages/coding-agent/src/modes/interactive/theme/theme-controller.ts.
4
4
  * Modifications: Source-synchronized controller port: renamed owner class, injected dependency-free
5
5
  * settings/runtime ports, remapped private theme helpers to the public-backed A1 theme adapter, and
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
3
3
  * packages/coding-agent/src/modes/interactive/theme/theme.ts.
4
4
  * Modifications: Source-synchronized theme port: retain pinned theme schema, variable/color
5
5
  * resolution, built-in and custom loading, terminal detection, and layout defaults while constructing
@@ -1,38 +1,17 @@
1
- import { type AgentSession } from "../startup-public.js";
2
- import { type OwnedUiCommand, type OwnedUiExtensionPort, type OwnedUiExtensionUiPort, type OwnedUiImageAttachment, type OwnedUiPromptSuggestionGeneratorPort, type OwnedUiPromptSuggestionReasoning, type OwnedUiPromptSuggestionRequest, type OwnedUiPromptSuggestionResult, type OwnedUiEvent, type OwnedUiReleaseUpdate, type OwnedUiSessionBackend, type OwnedUiSessionCatalogPort, type OwnedUiSessionIdentityPort, type OwnedUiSessionPort, type OwnedUiSessionSettingsPort, type OwnedUiSessionViewModel, type OwnedUiSnapshot, type OwnedUiWorkflowPort } from "../../../contracts/owned-ui/index.js";
3
- import type { PiAuthenticationProviderOption, PiBashWorkflowResult, PiModelsContext, PiModelsRefreshResult, PiPinnedSettingsCallback, PiPinnedSettingsSnapshot, PiProjectTrustContext, PiProjectTrustUpdate, PiScopedModelsContext, PiScopedModelsRefreshResult, PiSessionResumeMetadata, PiSessionSelectorContext, PiTreeSelectorContext, PiWorkflowAutocompleteCommand, PiWorkflowHost, PiWorkflowInteractionHost, PiWorkflowOption, PiWorkflowRequest, PiWorkflowResult } from "./workflows.js";
1
+ import { type OwnedUiCommand, type OwnedUiExtensionPort, type OwnedUiPromptSuggestionGeneratorPort, type OwnedUiPromptSuggestionReasoning, type OwnedUiPromptSuggestionRequest, type OwnedUiPromptSuggestionResult, type OwnedUiEvent, type OwnedUiSessionBackend, type OwnedUiSessionCatalogPort, type OwnedUiSessionIdentityPort, type OwnedUiSessionPort, type OwnedUiSessionSettingsPort, type OwnedUiSessionViewModel, type OwnedUiSnapshot, type OwnedUiWorkflowPort } from "../../../contracts/owned-ui/index.js";
2
+ import type { PiPinnedSettingsSnapshot, PiWorkflowHost, PiWorkflowInteractionHost, PiWorkflowRequest, PiWorkflowResult } from "./workflows.js";
4
3
  import type { PiSettingsBridge } from "./settings-bridge.js";
5
- import type { PiSettingOwnerHandlers } from "./settings-bridge.js";
6
4
  import type { PiProjectTrustPreflightPrompt } from "./project-trust-preflight.js";
7
5
  import type { PiSessionForkPrompt, PiSessionSelection } from "./session-selection.js";
8
- import type { AgentSettingOwner } from "../../../contracts/agent-engine/index.js";
9
6
  import { type AdapterCommandResult } from "./command-dispatch.js";
10
- import { type OwnedPiVisualExtensionSupport } from "./extension-ui-binding.js";
11
- import { type OwnedPiExtensionResourceSummary, type OwnedPiResourceSummary } from "./resource-catalog.js";
12
7
  import { type PiEnginePackageUpdateProbe, type PiEngineRuntimeFactory, type PiRepositoryContextReader } from "./session-runtime.js";
13
8
  import { type PiEngineHostSessionPorts } from "./host-ports.js";
14
- import { PiWorkflowContexts } from "./workflow-contexts.js";
9
+ import { type PiSessionPresentationSource } from "./ports.js";
15
10
  export type { OwnedPiExtensionResourceSummary, OwnedPiExtensionSourceSummary, OwnedPiResourceSummary } from "./resource-catalog.js";
16
11
  export type { PiEngineRuntimeFactory, PiEngineRuntimeFactoryInput } from "./session-runtime.js";
17
12
  export type { AdapterCommandResult } from "./command-dispatch.js";
18
13
  export type { OwnedPiVisualExtensionSupport } from "./extension-ui-binding.js";
19
- /**
20
- * The Pi objects pinned selectors and transcript renderers are built from. They are not part of the
21
- * session backend contract; only the session presenters owner reads them.
22
- */
23
- export interface PiSessionPresentationSource {
24
- pinnedModelSelectorContext(): ReturnType<PiWorkflowContexts["pinnedModelSelectorContext"]>;
25
- pinnedSessionSelectorContext(): PiSessionSelectorContext;
26
- pinnedTreeSelectorContext(): PiTreeSelectorContext;
27
- pinnedMessageRenderer(customType: string): unknown;
28
- pinnedToolRenderers(toolName: string): unknown;
29
- pinnedShortcutDescriptions(bindings: Parameters<AgentSession["extensionRunner"]["getShortcuts"]>[0]): readonly {
30
- readonly key: string;
31
- readonly description: string;
32
- }[];
33
- pinnedSettingsModels(): Pick<PiPinnedSettingsSnapshot, "currentModel" | "availableDefaultModels">;
34
- applyPinnedSettingValue(callback: PiPinnedSettingsCallback, value: unknown): Promise<PiWorkflowResult>;
35
- }
14
+ export type { PiSessionPresentationSource } from "./ports.js";
36
15
  /** Explicit flush failure when required delivery was interrupted rather than completed. */
37
16
  export declare class EngineDeliveryError extends Error {
38
17
  constructor();
@@ -80,22 +59,6 @@ export declare class PiEngineAdapter implements OwnedUiSessionBackend, OwnedUiPr
80
59
  /** The Pi objects behind pinned selectors and renderers, for the session presenters owner only. */
81
60
  presentationSource(): PiSessionPresentationSource;
82
61
  setWorkflowInteractionHost(interaction: PiWorkflowInteractionHost): void;
83
- get sessionId(): string;
84
- get sessionGeneration(): number;
85
- /** Actual session replacements, excluding delivery-only invalidation of callbacks. */
86
- get sessionBindingGeneration(): number;
87
- get cwd(): string;
88
- get agentDir(): string;
89
- resolveTranscriptImage(assetId: string): OwnedUiImageAttachment | null;
90
- currentSessionFile(): string | null;
91
- currentSessionResumeMetadata(): PiSessionResumeMetadata | null;
92
- get disposed(): boolean;
93
- /**
94
- * Report a newer A1 release found by the startup check. The shell renders the diagnostic as
95
- * pinned Pi's `Update Available` notice; it arrives whenever the check resolves, so a late
96
- * result is appended to the transcript like Pi's own fire-and-forget version check.
97
- */
98
- announceReleaseUpdate(release: OwnedUiReleaseUpdate): void;
99
62
  suggestionReasoningPolicy(): OwnedUiPromptSuggestionReasoning;
100
63
  generate(request: OwnedUiPromptSuggestionRequest): Promise<OwnedUiPromptSuggestionResult>;
101
64
  generateResidentTabName(instruction: string, maxTokens: number, signal: AbortSignal): Promise<string | null>;
@@ -120,51 +83,15 @@ export declare class PiEngineAdapter implements OwnedUiSessionBackend, OwnedUiPr
120
83
  peakBytes: number;
121
84
  };
122
85
  flushEvents(): Promise<void>;
123
- nonVisualResources(): readonly OwnedPiResourceSummary[];
124
- extensionResources(): readonly OwnedPiExtensionResourceSummary[];
125
- workflowAutocompleteCommands(): readonly PiWorkflowAutocompleteCommand[];
126
- visualExtensionSupport(): OwnedPiVisualExtensionSupport;
127
- bindExtensionUi(ui: OwnedUiExtensionUiPort, shutdown?: () => void | Promise<void>): Promise<void>;
128
- unbindExtensionUi(): Promise<void>;
129
- cycleModelWorkflow(direction: "forward" | "backward"): Promise<PiWorkflowResult>;
130
- pinnedProjectTrustContext(): PiProjectTrustContext;
131
- persistProjectTrust(updates: readonly PiProjectTrustUpdate[]): void;
132
- pinnedScopedModelsContext(): PiScopedModelsContext;
133
- updateScopedModels(enabledModelIds: readonly string[] | null): void;
134
- persistScopedModels(enabledModelIds: readonly string[] | null): void;
135
- refreshScopedModels(signal: AbortSignal): Promise<PiScopedModelsRefreshResult>;
136
- modelsContext(): PiModelsContext;
137
- setSessionModelScope(scopeIds: readonly string[]): void;
138
- persistModelScope(scopeIds: readonly string[]): void;
139
- refreshModels(signal: AbortSignal): Promise<PiModelsRefreshResult>;
140
- pinnedLoginOptions(authType?: "oauth" | "api_key"): readonly PiAuthenticationProviderOption[];
141
- pinnedLoginMethodOptions(providerReference: string): {
142
- readonly title: string;
143
- readonly options: readonly PiWorkflowOption[];
144
- };
145
- pinnedAmbientAuthentication(selection: string): ReturnType<PiWorkflowContexts["pinnedAmbientAuthentication"]>;
146
- pinnedLogoutOptions(): Promise<readonly PiAuthenticationProviderOption[]>;
147
- pinnedForkOptions(): readonly PiWorkflowOption[];
148
- /** Bind the owned UI's clipboard lifecycle without changing the comparison host. True means acknowledged delivery. */
149
- bindClipboardWriter(writer: (text: string) => Promise<boolean>): () => void;
150
- /** Workflow and tree copying share the active owner's write fence and delivery acknowledgment. */
151
- copyWorkflowText(text: string): Promise<boolean>;
152
86
  abortBashWorkflow(): void;
153
- executeBashWorkflow(command: string, excludeFromContext: boolean): Promise<PiBashWorkflowResult>;
154
- reloadBlockedResult(): PiWorkflowResult | null;
155
87
  executeWorkflow(request: PiWorkflowRequest): Promise<PiWorkflowResult>;
156
88
  /**
157
89
  * The theme the engine is configured with, in the engine's own grammar: a
158
90
  * theme's name, or a `light/dark` pair meaning "follow the terminal".
159
91
  */
160
92
  configuredTheme(): string | undefined;
161
- /** Persist the global thinking default without changing the live session level. */
162
- setDefaultThinkingLevel(level: PiPinnedSettingsSnapshot["defaultThinkingLevel"]): void;
163
93
  /** Settings port for the live runtime, or null before the runtime is available. */
164
94
  settingsPort(): PiSettingsBridge | null;
165
- /** Which settings surface this adapter serves; hidden-in-bare effects are unbindable in bare mode. */
166
- get settingsProductMode(): "bare" | "comparison";
167
- bindSettingsOwner(owner: AgentSettingOwner, handlers: PiSettingOwnerHandlers): () => void;
168
95
  pinnedSettingsSnapshot(): PiPinnedSettingsSnapshot;
169
96
  clearQueuedWorkflows(): readonly string[];
170
97
  view(): OwnedUiSessionViewModel;