@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
@@ -0,0 +1,29 @@
1
+ /**
2
+ * The presenter's concerns in their declared order. Session replacement and disposal fan out in
3
+ * that order, because later resets depend on earlier ones (copy intent before pastes before the
4
+ * input surface), and disposal is idempotent.
5
+ */
6
+ export class SessionConcerns {
7
+ #concerns;
8
+ #disposed = false;
9
+ constructor(concerns) {
10
+ this.#concerns = concerns;
11
+ }
12
+ replaceSession() {
13
+ if (this.#disposed)
14
+ return;
15
+ for (const concern of this.#concerns)
16
+ concern.onSessionReplaced?.();
17
+ }
18
+ /** Disposes each concern once, through `attempt` so one failure does not skip the rest. */
19
+ dispose(attempt = action => action()) {
20
+ if (this.#disposed)
21
+ return;
22
+ this.#disposed = true;
23
+ for (const concern of this.#concerns) {
24
+ const dispose = concern.dispose;
25
+ if (dispose !== undefined)
26
+ attempt(() => dispose.call(concern));
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,29 @@
1
+ export interface SessionResumeCommandMetadata {
2
+ readonly sessionId: string;
3
+ readonly sessionDir: string;
4
+ readonly usesDefaultSessionDir: boolean;
5
+ }
6
+ export declare function formatSessionResumeCommand(metadata: SessionResumeCommandMetadata): string;
7
+ export declare function quoteCommandArgument(value: string): string;
8
+ export interface ExitTextInput {
9
+ readonly terminalMode: "regular" | "fullscreen";
10
+ readonly customViewport: boolean;
11
+ readonly exitMode: "transcript" | "resume-hint";
12
+ readonly resume: SessionResumeCommandMetadata | null;
13
+ /** The styled transcript, rendered only when the pinned profile asks for it. */
14
+ readonly transcript: () => string;
15
+ }
16
+ /**
17
+ * What a fullscreen leave prints into the parent terminal: nothing after a regular-screen session,
18
+ * only the resume hint for bare A1 or when configured, and otherwise the transcript then the hint.
19
+ */
20
+ export declare function composeExitText(input: ExitTextInput): string;
21
+ /** Resolves once when the session stops, whether it stopped itself, was quit, or was disposed. */
22
+ export declare class SessionStopLatch {
23
+ #private;
24
+ readonly stopped: Promise<void>;
25
+ constructor();
26
+ resolve(): void;
27
+ /** The engine stopped on its own: dispose the shell, then resolve whether or not disposal failed. */
28
+ settleAfter(dispose: () => Promise<void>): void;
29
+ }
@@ -0,0 +1,49 @@
1
+ import { PRODUCT_TEXT } from "../../product-identity.js";
2
+ export function formatSessionResumeCommand(metadata) {
3
+ const args = [PRODUCT_TEXT.commandName];
4
+ if (!metadata.usesDefaultSessionDir)
5
+ args.push("--session-dir", quoteCommandArgument(metadata.sessionDir));
6
+ args.push("--session", metadata.sessionId);
7
+ return args.join(" ");
8
+ }
9
+ export function quoteCommandArgument(value) {
10
+ if (value.length > 0 && !/[^a-zA-Z0-9_\-./~:@]/.test(value))
11
+ return value;
12
+ return `'${value.replaceAll("'", `'\\''`)}'`;
13
+ }
14
+ /**
15
+ * What a fullscreen leave prints into the parent terminal: nothing after a regular-screen session,
16
+ * only the resume hint for bare A1 or when configured, and otherwise the transcript then the hint.
17
+ */
18
+ export function composeExitText(input) {
19
+ if (input.terminalMode !== "fullscreen")
20
+ return "";
21
+ const resumeHint = input.resume === null ? "" : `${dim("To resume this session:")} ${formatSessionResumeCommand(input.resume)}`;
22
+ // Invariant: bare A1 leaves only the hint behind; the pinned comparison profile still
23
+ // honors fullscreenExitOutput, including the styled transcript.
24
+ if (input.customViewport || input.exitMode === "resume-hint")
25
+ return resumeHint;
26
+ return [input.transcript(), resumeHint].filter(Boolean).join("\n\n");
27
+ }
28
+ /** Resolves once when the session stops, whether it stopped itself, was quit, or was disposed. */
29
+ export class SessionStopLatch {
30
+ stopped;
31
+ #resolve;
32
+ constructor() {
33
+ this.stopped = new Promise(resolve => {
34
+ this.#resolve = resolve;
35
+ });
36
+ }
37
+ resolve() {
38
+ const resolve = this.#resolve;
39
+ this.#resolve = undefined;
40
+ resolve?.();
41
+ }
42
+ /** The engine stopped on its own: dispose the shell, then resolve whether or not disposal failed. */
43
+ settleAfter(dispose) {
44
+ void dispose().then(() => this.resolve(), () => this.resolve());
45
+ }
46
+ }
47
+ function dim(value) {
48
+ return `\u001b[2m${value}\u001b[22m`;
49
+ }
@@ -4,7 +4,7 @@ import type { PiTuiPointerSurface } from "../../integrations/pi/tui-runtime/cont
4
4
  import type { UiRouteHost, UiRouteInput } from "../../ui/apps/contracts.js";
5
5
  import type { TranscriptViewportFrame, TranscriptViewportFrameDescriptor } from "../../ui/components/transcript-viewport.js";
6
6
  import type { PiShellLazySelectorLoader } from "../../integrations/pi/components/lazy-selectors.js";
7
- import { type PiShellHotkeysPresentation } from "../../integrations/pi/components/shell-presenters-info.js";
7
+ import type { PiShellHotkeysPresentation } from "../../integrations/pi/components/shell-presenters-info.js";
8
8
  import { type PiShellClipboardContent, type PiShellComponentPort, type PiKeybindingsHost, type PiShellEditorPort, type PiShellHeaderOptions, type PiShellHeaderPort, type PiShellImageAssetResolver, type PiShellLoadedResourcesPort, type PiShellResourceEntry, type PiShellTranscriptComponentPort } from "../../integrations/pi/components/shell-shared-facade.js";
9
9
  import { type PiTuiInputCoordinationScheduler, type PiTuiInputSurfaceKind } from "../../integrations/pi/tui-runtime/input-presentation-coordinator.js";
10
10
  import type { PiTuiComponentPort, PiTuiInputDiagnosticsEvent, PiTuiLayoutNode, PiTuiTerminalPort } from "../../integrations/pi/tui-runtime/contracts.js";