@timurproko/a1 0.2.7-dev.1232 → 0.2.7-dev.1234

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 (103) hide show
  1. package/dist/composition/owned-ui.js +13 -79
  2. package/dist/composition/release-update-observation.d.ts +22 -0
  3. package/dist/composition/release-update-observation.js +91 -0
  4. package/dist/composition/resident-tab-bridge.d.ts +16 -0
  5. package/dist/composition/resident-tab-bridge.js +45 -16
  6. package/dist/composition/startup-route.d.ts +8 -0
  7. package/dist/composition/startup-route.js +20 -0
  8. package/dist/contracts/owned-ui/session-workflows.d.ts +3 -0
  9. package/dist/foundation/release/bootstrap.js +46 -36
  10. package/dist/foundation/release/progress-palette.generated.d.ts +1 -1
  11. package/dist/foundation/release/progress-palette.generated.js +1 -1
  12. package/dist/foundation/release/update-activation.js +8 -2
  13. package/dist/foundation/resident-tabs/bridge-client.d.ts +3 -0
  14. package/dist/foundation/resident-tabs/bridge-client.js +7 -1
  15. package/dist/foundation/resident-tabs/continuity.d.ts +12 -0
  16. package/dist/foundation/resident-tabs/continuity.js +55 -0
  17. package/dist/foundation/resident-tabs/index.d.ts +3 -0
  18. package/dist/foundation/resident-tabs/index.js +4 -0
  19. package/dist/foundation/resident-tabs/maintenance.d.ts +1 -1
  20. package/dist/foundation/resident-tabs/release-holds.js +11 -8
  21. package/dist/foundation/resident-tabs/runtime-control.d.ts +38 -0
  22. package/dist/foundation/resident-tabs/runtime-control.js +73 -0
  23. package/dist/foundation/startup/startup-descriptor.js +2 -2
  24. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +2 -2
  25. package/dist/integrations/pi/components/resources/builtin-themes.js +2 -2
  26. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +1 -1
  27. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +1 -1
  28. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +2 -2
  29. package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +1 -1
  30. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +1 -1
  31. package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +3 -3
  32. package/dist/integrations/pi/components/upstream/components/extension-editor.js +4 -1
  33. package/dist/integrations/pi/components/upstream/components/extension-input.js +1 -1
  34. package/dist/integrations/pi/components/upstream/components/extension-selector.js +1 -1
  35. package/dist/integrations/pi/components/upstream/components/mermaid.js +1 -1
  36. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +1 -1
  37. package/dist/integrations/pi/components/upstream/components/owned-editor.js +8 -1
  38. package/dist/integrations/pi/components/upstream/components/pi-logo.js +1 -1
  39. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +2 -1
  40. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +14 -3
  41. package/dist/integrations/pi/components/upstream/components/session-footer.js +1 -1
  42. package/dist/integrations/pi/components/upstream/components/session-selector-search.d.ts +4 -0
  43. package/dist/integrations/pi/components/upstream/components/session-selector-search.js +87 -23
  44. package/dist/integrations/pi/components/upstream/components/session-selector.d.ts +3 -2
  45. package/dist/integrations/pi/components/upstream/components/session-selector.js +18 -13
  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 +6 -0
  55. package/dist/integrations/pi/components/upstream/components/tool-execution.js +14 -2
  56. package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +2 -1
  57. package/dist/integrations/pi/components/upstream/components/tree-selector.js +5 -4
  58. package/dist/integrations/pi/components/upstream/components/trust-selector.js +1 -1
  59. package/dist/integrations/pi/components/upstream/external-editor.d.ts +1 -0
  60. package/dist/integrations/pi/components/upstream/external-editor.js +13 -6
  61. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +3 -1
  62. package/dist/integrations/pi/components/upstream/history/editor-core.js +9 -2
  63. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +1 -1
  64. package/dist/integrations/pi/components/upstream/history/kill-ring.js +1 -1
  65. package/dist/integrations/pi/components/upstream/history/printable-key.js +1 -1
  66. package/dist/integrations/pi/components/upstream/history/text-helpers.js +1 -1
  67. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +1 -1
  68. package/dist/integrations/pi/components/upstream/history/undo-stack.js +1 -1
  69. package/dist/integrations/pi/components/upstream/history/word-navigation.js +1 -1
  70. package/dist/integrations/pi/components/upstream/model-search.d.ts +11 -1
  71. package/dist/integrations/pi/components/upstream/model-search.js +21 -0
  72. package/dist/integrations/pi/components/upstream/program-status-reporter.d.ts +1 -1
  73. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +1 -1
  74. package/dist/integrations/pi/components/upstream/theme/theme.js +1 -1
  75. package/dist/integrations/pi/engine/adapter.js +6 -1
  76. package/dist/integrations/pi/engine/diagnostics-state.d.ts +9 -0
  77. package/dist/integrations/pi/engine/diagnostics-state.js +34 -0
  78. package/dist/integrations/pi/engine/resources/changelog.json +4 -4
  79. package/dist/integrations/pi/engine/view-state.d.ts +2 -1
  80. package/dist/integrations/pi/engine/view-state.js +4 -16
  81. package/dist/integrations/pi/startup-public.js +324 -309
  82. package/dist/integrations/pi/startup-public.manifest.json +1156 -846
  83. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +1 -1
  84. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +1 -1
  85. package/dist/native/darwin-arm64/manifest.json +1 -1
  86. package/dist/native/darwin-arm64/terminal-host.manifest.json +3 -3
  87. package/dist/native/darwin-arm64/terminal-host.node +0 -0
  88. package/dist/native/darwin-x64/manifest.json +1 -1
  89. package/dist/native/darwin-x64/terminal-host.manifest.json +3 -3
  90. package/dist/native/darwin-x64/terminal-host.node +0 -0
  91. package/dist/native/linux-x64/manifest.json +1 -1
  92. package/dist/native/linux-x64/terminal-host.manifest.json +3 -3
  93. package/dist/native/linux-x64/terminal-host.node +0 -0
  94. package/dist/native/win32-x64/manifest.json +2 -2
  95. package/dist/native/win32-x64/process-guardian.node +0 -0
  96. package/dist/native/win32-x64/terminal-host.manifest.json +3 -3
  97. package/dist/native/win32-x64/terminal-host.node +0 -0
  98. package/dist/runtime-payload-inventory.json +8178 -5237
  99. package/dist/ui/settings/progress-palette.generated.d.ts +1 -1
  100. package/dist/ui/settings/progress-palette.generated.js +1 -1
  101. package/docs/architecture/native-fixture-isolation.md +23 -0
  102. package/docs/architecture/resident-tabs.md +23 -4
  103. package/package.json +10 -5
@@ -3,6 +3,27 @@ export function getModelSearchText(item) {
3
3
  const name = item.name ? ` ${item.name}` : "";
4
4
  return `${id} ${provider} ${provider}/${id} ${provider} ${id}${name}`;
5
5
  }
6
+ const splitModelLabel = (value) => value
7
+ .toLowerCase()
8
+ .split(/[^\p{L}\p{N}]+/u)
9
+ .filter(Boolean);
10
+ /**
11
+ * Returns the model name when it has words the ID does not, e.g. a renamed override like
12
+ * "MiniMax M3 [rasmus@openrouter, parasail]" for "minimax/minimax-m3". Names that only
13
+ * restate the ID with different casing, separators, or a dropped namespace/version suffix
14
+ * ("Claude Sonnet 4.5 (EU)" for "eu.anthropic.claude-sonnet-4-5-20250929-v1:0") return undefined.
15
+ */
16
+ export function getDistinctModelName(item) {
17
+ const name = item.name?.trim();
18
+ if (!name)
19
+ return undefined;
20
+ const idWords = splitModelLabel(item.id);
21
+ const idTokens = new Set(idWords);
22
+ const compactId = idWords.join("");
23
+ // Single-character words must match a whole ID token: "4" is not covered by "mistral-small-2603".
24
+ const isCovered = (word) => idTokens.has(word) || (word.length > 1 && compactId.includes(word));
25
+ return splitModelLabel(name).every(isCovered) ? undefined : name;
26
+ }
6
27
  /**
7
28
  * The /model selector search should rank exact provider-prefixed queries before proxy-provider IDs
8
29
  * like openrouter/openai/gpt-5, so keep the bare model ID out of the leading position.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance: @earendil-works/pi-coding-agent 1.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.5.0 (MIT), commit f9a26365568127461c47a07a37dcb42c140a3ac5,
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.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.5.0 (MIT), commit f9a26365568127461c47a07a37dcb42c140a3ac5,
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.4.0 (MIT), commit 4a080252f06caf63a525d7873c5d94d3c23887e0,
2
+ * Provenance: @earendil-works/pi-coding-agent 1.5.0 (MIT), commit f9a26365568127461c47a07a37dcb42c140a3ac5,
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
@@ -211,6 +211,11 @@ export class PiEngineAdapter {
211
211
  #announceReleaseUpdate(release) {
212
212
  if (this.#disposed)
213
213
  return;
214
+ if (release.status === "client-connected") {
215
+ if (this.#state.diagnosticsState.acknowledgeClientVersion(release.version))
216
+ this.#emitView();
217
+ return;
218
+ }
214
219
  if (release.status === "installed") {
215
220
  this.#addDiagnostic("info", "release-update-installed", `Update ${release.version} installed; restart to update.`, true);
216
221
  }
@@ -510,7 +515,7 @@ export class PiEngineAdapter {
510
515
  this.#engine.resume();
511
516
  }
512
517
  #recordDiagnostic(severity, code, message, recoverable) {
513
- return this.#state.recordDiagnostic(severity, code, message, recoverable);
518
+ return this.#state.diagnosticsState.record(severity, code, message, recoverable);
514
519
  }
515
520
  }
516
521
  export async function createPiEngineAdapter(options) {
@@ -0,0 +1,9 @@
1
+ import type { OwnedUiDiagnostics } from "../../../contracts/owned-ui/index.js";
2
+ /** Bounded structured notices; acknowledgements never inspect terminal cells or touch Agent work. */
3
+ export declare class EngineDiagnostics {
4
+ #private;
5
+ get values(): readonly OwnedUiDiagnostics[];
6
+ get messages(): readonly string[];
7
+ record(severity: OwnedUiDiagnostics["severity"], code: string, message: string, recoverable: boolean): OwnedUiDiagnostics;
8
+ acknowledgeClientVersion(version: string): boolean;
9
+ }
@@ -0,0 +1,34 @@
1
+ import { gte, valid as validSemver } from "semver";
2
+ /** Bounded structured notices; acknowledgements never inspect terminal cells or touch Agent work. */
3
+ export class EngineDiagnostics {
4
+ #values = [];
5
+ #messages = [];
6
+ #sequence = 0;
7
+ get values() { return this.#values; }
8
+ get messages() { return this.#messages; }
9
+ record(severity, code, message, recoverable) {
10
+ const diagnostic = { sequence: this.#sequence++, code, severity, message, recoverable };
11
+ this.#values.push(diagnostic);
12
+ if (this.#values.length > 100)
13
+ this.#values.shift();
14
+ this.#messages = [...this.#messages, message].slice(-8);
15
+ return diagnostic;
16
+ }
17
+ acknowledgeClientVersion(version) {
18
+ if (validSemver(version) === null)
19
+ return false;
20
+ const removed = new Set();
21
+ for (let index = this.#values.length - 1; index >= 0; index--) {
22
+ const diagnostic = this.#values[index];
23
+ const installed = diagnostic.code === "release-update-installed" ? /^Update (\S+) installed; restart to update\.$/u.exec(diagnostic.message)?.[1] : undefined;
24
+ if (installed !== undefined && validSemver(installed) !== null && gte(version, installed)) {
25
+ removed.add(diagnostic.message);
26
+ this.#values.splice(index, 1);
27
+ }
28
+ }
29
+ if (removed.size === 0)
30
+ return false;
31
+ this.#messages = this.#messages.filter(message => !removed.has(message) || this.#values.some(diagnostic => diagnostic.message === message));
32
+ return true;
33
+ }
34
+ }