@timurproko/a1 0.1.8-dev.465 → 0.1.8-dev.468

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.
@@ -12,7 +12,7 @@ import { createPiQueuedInputStatus, createPiShellFooter, createPiShellHeader, cr
12
12
  import { createPiShellArmin, createPiShellAuthProviderSelector, createPiShellDaxnuts, createPiShellDialog, createPiShellEarendilAnnouncement, createPiShellExtensionSelector, createPiShellLoginDialog, createPiShellModelSelector, createPiShellOperationLoader, createPiShellReloadBox, createPiShellScopedModelsSelector, createPiShellSelector, createPiShellSessionSelector, createPiShellSettingsSelector, createPiShellTreeSelector, createPiShellTrustSelector, createPiShellUserMessageSelector, } from "../components/shell-selectors-dialogs.js";
13
13
  import { createPiShellChangelog, createPiShellCollapsedChangelog, createPiShellHotkeys, createPiShellSessionInfo, renderPiShellCommandMessage, renderPiShellStatusText, } from "../components/shell-presenters-info.js";
14
14
  import { createPiShellTranscriptComponent, isPiPromptStyleCompaction, paintPiSubmittedPromptTimestamp, renderPiShellPackageUpdateNotice, renderPiShellStartupDiagnostic, renderPiShellTranscriptBlock, } from "../components/shell-presenters-transcript.js";
15
- import { onPiThemeChange, piTheme } from "../components/upstream/theme/theme.js";
15
+ import { onPiThemeChange, PINNED_PI_LAYOUT, piTheme } from "../components/upstream/theme/theme.js";
16
16
  import { piShellTruncateToWidth, piShellVisibleWidth, } from "../components/shell-shared-facade.js";
17
17
  import { classifyPiTuiInput, } from "../tui-runtime/input-presentation-coordinator.js";
18
18
  import { PromptChipStore } from "./prompt-chips.js";
@@ -59,6 +59,8 @@ export class OwnedUiSessionShellRoot {
59
59
  #workflowStatusAnchors = new Map();
60
60
  #workflowStatusMessages = new Map();
61
61
  #lastWorkflowStatusId;
62
+ // Invariant: the notice is dock chrome, never transcript content; the custom viewport alone uses it.
63
+ #dockNotice;
62
64
  #inputSurface;
63
65
  #inputSurfaceCoordination = "editor";
64
66
  #dockInputReuseEnabled;
@@ -341,6 +343,10 @@ export class OwnedUiSessionShellRoot {
341
343
  this.#documentLayouts.clear();
342
344
  }
343
345
  #mountTranscript(block) {
346
+ // Invariant: the notice answers the reader's last command, so only their next prompt or
347
+ // shell command retires it; assistant, tool, and compaction blocks streaming in keep it.
348
+ if (block.kind === "user" || block.kind === "bash")
349
+ this.#dismissDockNotice();
344
350
  const created = createPiShellTranscriptComponent(block, this.#cwd, this.#extensionRenderers, this.#submittedPromptComposer, this.#outputPad, !this.#thinkingVisible, this.#mermaidRenderingMode, this.#showImages, this.#imageWidthCells, this.#imageAssets, { ...this.#componentRuntime, changed: () => {
345
351
  if (this.#transcript.get(block.id) !== created)
346
352
  return;
@@ -522,7 +528,7 @@ export class OwnedUiSessionShellRoot {
522
528
  #renderDockLayout(width) {
523
529
  const queued = this.#customViewport ? [] : this.#renderQueued(width);
524
530
  const statusRows = this.#customViewport ? this.#status.renderDock(width) : this.#renderStatus(width);
525
- const transientRows = [...queued, ...statusRows];
531
+ const transientRows = [...queued, ...statusRows, ...this.#renderDockNotice(width)];
526
532
  const aboveWidgets = this.#renderWidgets("aboveEditor", width);
527
533
  const input = this.#inputSurface.render(width);
528
534
  // Invariant: pointer rows describe the body, not the autocomplete block now preceding it.
@@ -536,6 +542,18 @@ export class OwnedUiSessionShellRoot {
536
542
  inputRows: body?.rowCount ?? input.length,
537
543
  };
538
544
  }
545
+ #renderDockNotice(width) {
546
+ if (this.#dockNotice === undefined)
547
+ return [];
548
+ // Compatibility: Pi pads its status text by one cell regardless of the output pad setting.
549
+ return ["", ...renderPiShellStatusText(this.#dockNotice, width, PINNED_PI_LAYOUT.outputPad)];
550
+ }
551
+ #dismissDockNotice() {
552
+ if (this.#dockNotice === undefined)
553
+ return;
554
+ this.#dockNotice = undefined;
555
+ this.#invalidateChrome();
556
+ }
539
557
  #renderQueued(width) {
540
558
  return this.#view.editor.queuedSubmissions.length === 0 ? [] : this.#queued.render(width);
541
559
  }
@@ -734,6 +752,14 @@ export class OwnedUiSessionShellRoot {
734
752
  return rows.join("\n");
735
753
  }
736
754
  appendWorkflowStatus(message) {
755
+ // Rationale: bare A1 acknowledges commands in one dock notice above the editor, where the
756
+ // reader's eye already is, instead of a transcript row that opens an empty session at the
757
+ // top-left or sinks into a long feed. The pinned route keeps Pi's chat placement.
758
+ if (this.#customViewport) {
759
+ this.#dockNotice = message;
760
+ this.#invalidateChrome();
761
+ return;
762
+ }
737
763
  const previousId = this.#lastWorkflowStatusId;
738
764
  if (previousId !== undefined
739
765
  && this.#transcriptOrder.at(-1) === previousId
@@ -873,6 +899,7 @@ export class OwnedUiSessionShellRoot {
873
899
  this.invalidate();
874
900
  }
875
901
  resetWorkflowPresentation() {
902
+ this.#dockNotice = undefined;
876
903
  for (const id of this.#workflowStatusAnchors.keys()) {
877
904
  this.#transcript.get(id)?.dispose?.();
878
905
  this.#transcript.delete(id);
@@ -1057,6 +1084,8 @@ export class OwnedUiSessionShellRoot {
1057
1084
  this.#transcriptOrder = order;
1058
1085
  }
1059
1086
  #appendAnchoredWorkflowComponent(render, dispose) {
1087
+ // Invariant: transcript-bound workflow output supersedes a pending acknowledgement.
1088
+ this.#dismissDockNotice();
1060
1089
  this.#workflowTranscriptSequence += 1;
1061
1090
  const id = `workflow-status-${this.#workflowTranscriptSequence}`;
1062
1091
  const component = {
@@ -5,7 +5,7 @@
5
5
  "platform": "darwin",
6
6
  "architecture": "arm64",
7
7
  "capability": "supported",
8
- "builtAt": "2026-09-17T17:09:52.350Z",
8
+ "builtAt": "2026-09-17T18:35:35.556Z",
9
9
  "artifact": {
10
10
  "filename": "process-guardian",
11
11
  "sha256": "9db1726bbe3fc2e8292f2ead1e7e9d0fd4d7d0dc9217b372582bf354b0f565dc",
@@ -5,7 +5,7 @@
5
5
  "platform": "linux",
6
6
  "architecture": "x64",
7
7
  "capability": "supported",
8
- "builtAt": "2026-09-17T17:09:48.434Z",
8
+ "builtAt": "2026-09-17T18:35:34.322Z",
9
9
  "artifact": {
10
10
  "filename": "process-guardian",
11
11
  "sha256": "d8cda6b0c7cb36c0cc41e90802aceebf6c02eaebbc08a83d7d963d2e918dbd7a",
@@ -5,10 +5,10 @@
5
5
  "platform": "win32",
6
6
  "architecture": "x64",
7
7
  "capability": "supported",
8
- "builtAt": "2026-09-17T17:10:27.708Z",
8
+ "builtAt": "2026-09-17T18:36:08.573Z",
9
9
  "artifact": {
10
10
  "filename": "process-guardian.exe",
11
- "sha256": "7f414d3e5005949040b86ae78a4f73375ac5773c6ad9f6a3b3f22e7d9f7d5b11",
11
+ "sha256": "2e6e2de410d516ae2f78b20e7253e0feb789fc460de8b5de9ec3a22219395309",
12
12
  "size": 177664
13
13
  },
14
14
  "provenance": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@timurproko/a1",
3
- "version": "0.1.8-dev.465",
3
+ "version": "0.1.8-dev.468",
4
4
  "description": "Standalone terminal workspace for supervised native and managed agents",
5
5
  "type": "module",
6
6
  "privateLaunchContract": "neutral-launch-v1",