@timurproko/a1 0.2.4-dev.667 → 0.2.4

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 +50 -39
  2. package/bin/pinned-pi-public.js +20 -2
  3. package/dist/app/session-shell/session-shell-root.d.ts +0 -1
  4. package/dist/app/session-shell/session-shell-root.js +2 -7
  5. package/dist/app/session-shell/session-shell.js +2 -12
  6. package/dist/features/owned-ui/resources/release-notes.json +4 -0
  7. package/dist/foundation/release/progress-palette.generated.d.ts +5 -0
  8. package/dist/foundation/release/progress-palette.generated.js +5 -0
  9. package/dist/foundation/release/update.js +4 -5
  10. package/dist/foundation/startup/startup-descriptor.js +2 -2
  11. package/dist/integrations/pi/components/index.d.ts +1 -1
  12. package/dist/integrations/pi/components/index.js +1 -1
  13. package/dist/integrations/pi/components/resources/builtin-themes.d.ts +1 -1
  14. package/dist/integrations/pi/components/resources/builtin-themes.js +1 -1
  15. package/dist/integrations/pi/components/shell-presenters-transcript.js +10 -6
  16. package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +0 -1
  17. package/dist/integrations/pi/components/shell-selectors-dialogs.js +0 -5
  18. package/dist/integrations/pi/components/shell-shared-facade.d.ts +1 -1
  19. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +1 -1
  20. package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +1 -1
  21. package/dist/integrations/pi/components/upstream/assets/earendil-image.json +2 -2
  22. package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +1 -1
  23. package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +1 -1
  24. package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +1 -1
  25. package/dist/integrations/pi/components/upstream/components/extension-editor.js +1 -1
  26. package/dist/integrations/pi/components/upstream/components/extension-input.js +1 -1
  27. package/dist/integrations/pi/components/upstream/components/extension-selector.js +1 -1
  28. package/dist/integrations/pi/components/upstream/components/mermaid.js +1 -1
  29. package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +1 -1
  30. package/dist/integrations/pi/components/upstream/components/owned-editor.js +1 -1
  31. package/dist/integrations/pi/components/upstream/components/pi-logo.js +1 -1
  32. package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +1 -1
  33. package/dist/integrations/pi/components/upstream/components/session-footer.js +1 -1
  34. package/dist/integrations/pi/components/upstream/components/session-selector-search.js +1 -1
  35. package/dist/integrations/pi/components/upstream/components/session-selector.js +1 -1
  36. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +1 -1
  37. package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +1 -1
  38. package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +1 -1
  39. package/dist/integrations/pi/components/upstream/components/status-indicator.js +1 -1
  40. package/dist/integrations/pi/components/upstream/components/themed-text.d.ts +1 -1
  41. package/dist/integrations/pi/components/upstream/components/themed-text.js +1 -1
  42. package/dist/integrations/pi/components/upstream/components/thinking-selector.d.ts +1 -1
  43. package/dist/integrations/pi/components/upstream/components/thinking-selector.js +1 -1
  44. package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +4 -3
  45. package/dist/integrations/pi/components/upstream/components/tool-execution.js +8 -7
  46. package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +1 -1
  47. package/dist/integrations/pi/components/upstream/components/tree-selector.js +1 -1
  48. package/dist/integrations/pi/components/upstream/components/trust-selector.js +1 -1
  49. package/dist/integrations/pi/components/upstream/external-editor.js +1 -1
  50. package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +1 -1
  51. package/dist/integrations/pi/components/upstream/history/editor-core.js +1 -1
  52. package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +1 -1
  53. package/dist/integrations/pi/components/upstream/history/kill-ring.js +1 -1
  54. package/dist/integrations/pi/components/upstream/history/printable-key.js +1 -1
  55. package/dist/integrations/pi/components/upstream/history/text-helpers.js +1 -1
  56. package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +1 -1
  57. package/dist/integrations/pi/components/upstream/history/undo-stack.js +1 -1
  58. package/dist/integrations/pi/components/upstream/history/word-navigation.js +1 -1
  59. package/dist/integrations/pi/components/upstream/model-search.d.ts +1 -1
  60. package/dist/integrations/pi/components/upstream/theme/system-theme.d.ts +1 -1
  61. package/dist/integrations/pi/components/upstream/theme/system-theme.js +1 -1
  62. package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +1 -1
  63. package/dist/integrations/pi/components/upstream/theme/theme.js +1 -1
  64. package/dist/integrations/pi/engine/adapter.d.ts +1 -1
  65. package/dist/integrations/pi/engine/adapter.js +8 -2
  66. package/dist/integrations/pi/engine/resources/changelog.json +4 -4
  67. package/dist/integrations/pi/startup-public.js +164 -166
  68. package/dist/integrations/pi/startup-public.manifest.json +3081 -3075
  69. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +1 -1
  70. package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +1 -1
  71. package/dist/native/darwin-arm64/manifest.json +1 -1
  72. package/dist/native/linux-x64/manifest.json +1 -1
  73. package/dist/native/win32-x64/manifest.json +2 -2
  74. package/dist/native/win32-x64/process-guardian.exe +0 -0
  75. package/dist/runtime-payload-inventory.json +37842 -29757
  76. package/dist/ui/components/transcript-viewport.js +10 -7
  77. package/docs/architecture/project-structure.md +3 -1
  78. package/docs/assets/readme/gears-dark.svg +56 -0
  79. package/docs/assets/readme/gears.svg +0 -1
  80. package/docs/assets/readme/plugins-dark.svg +76 -0
  81. package/docs/assets/readme/plugins.svg +0 -1
  82. package/docs/assets/readme/rocket-dark.svg +66 -0
  83. package/docs/assets/readme/rocket.svg +0 -1
  84. package/docs/assets/readme/separator-dark.svg +13 -0
  85. package/docs/assets/readme/separator.svg +13 -0
  86. package/docs/assets/readme/terminal-dark.svg +76 -0
  87. package/docs/assets/readme/terminal.svg +0 -1
  88. package/docs/assets/readme/waves-dark.svg +142 -0
  89. package/docs/assets/readme/waves.svg +0 -1
  90. package/docs/local-worktree-cleanup.md +4 -2
  91. package/docs/openspec-archive-automation.md +14 -5
  92. package/docs/releases/0.2.4.md +22 -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
package/README.md CHANGED
@@ -12,187 +12,198 @@
12
12
  <a href="https://agentnumberone.dev"><img alt="Website" src="https://img.shields.io/badge/web-agentnumberone.dev-2638d2?style=flat-square"></a>
13
13
  </p>
14
14
 
15
+ <p align="center">
16
+ <a href="#install">Install</a> ·
17
+ <a href="#launch">Launch</a> ·
18
+ <a href="#update">Update</a> ·
19
+ <a href="#extensions">Extensions</a> ·
20
+ <a href="#develop">Develop</a> ·
21
+ <a href="#publish">Publish</a>
22
+ </p>
23
+
15
24
  ## Install
16
25
 
17
26
  Release:
18
27
 
19
- ```sh
28
+ ```text
20
29
  npm x -y -- @timurproko/a1-install
21
30
  ```
22
31
 
23
32
  Develop:
24
33
 
25
- ```sh
34
+ ```text
26
35
  npm x -y -- @timurproko/a1-install --develop
27
36
  ```
28
37
 
29
38
  Preview number:
30
39
 
31
- ```sh
40
+ ```text
32
41
  npm x -y -- @timurproko/a1-install --develop 107
33
42
  ```
34
43
 
35
44
  Exact preview:
36
45
 
37
- ```sh
46
+ ```text
38
47
  npm x -y -- @timurproko/a1-install --develop 0.1.8-dev.107
39
48
  ```
40
49
 
41
- <p align="center"><picture><img src="docs/assets/readme/terminal.svg" alt="" width="240"></picture></p>
50
+ <p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/separator-dark.svg"><img src="docs/assets/readme/separator.svg" alt="" width="280"></picture></p>
42
51
 
43
- ## Use
52
+ ## Launch
44
53
 
45
54
  Launch A1 (profile: `~/.a1/agent`):
46
55
 
47
- ```sh
56
+ ```text
48
57
  a1
49
58
  ```
50
59
 
51
60
  Show all commands:
52
61
 
53
- ```sh
62
+ ```text
54
63
  a1 help
55
64
  ```
56
65
 
57
66
  Show the current and latest versions:
58
67
 
59
- ```sh
68
+ ```text
60
69
  a1 version
61
70
  ```
62
71
 
63
72
  Vanilla Pi oracle (`~/.pi/agent`):
64
73
 
65
- ```sh
74
+ ```text
66
75
  a1 pi
67
76
  ```
68
77
 
69
- ### Update
78
+ <p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/separator-dark.svg"><img src="docs/assets/readme/separator.svg" alt="" width="280"></picture></p>
79
+
80
+ ## Update
70
81
 
71
82
  Install the release:
72
83
 
73
- ```sh
84
+ ```text
74
85
  a1 update
75
86
  ```
76
87
 
77
88
  Install develop:
78
89
 
79
- ```sh
90
+ ```text
80
91
  a1 update --develop
81
92
  ```
82
93
 
83
94
  Install preview 107:
84
95
 
85
- ```sh
96
+ ```text
86
97
  a1 update --develop 107
87
98
  ```
88
99
 
89
100
  Install that exact preview:
90
101
 
91
- ```sh
102
+ ```text
92
103
  a1 update --develop 0.1.8-dev.107
93
104
  ```
94
105
 
95
106
  Refresh A1's model catalogs:
96
107
 
97
- ```sh
108
+ ```text
98
109
  a1 update --models
99
110
  ```
100
111
 
101
112
  Stuck on `0.2.2` and `a1 update` fails? Run the installer once, then use `a1 update` as usual:
102
113
 
103
- ```sh
114
+ ```text
104
115
  npm x -y -- @timurproko/a1-install
105
116
  ```
106
117
 
107
118
  A1 shows an `Update Available` notice at most once a day and never installs anything by itself. Turn it off in Settings (`Update check`) or with `A1_SKIP_VERSION_CHECK=1`.
108
119
 
109
- <p align="center"><picture><img src="docs/assets/readme/plugins.svg" alt="" width="240"></picture></p>
120
+ <p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/separator-dark.svg"><img src="docs/assets/readme/separator.svg" alt="" width="280"></picture></p>
110
121
 
111
122
  ## Extensions
112
123
 
113
124
  Install a package:
114
125
 
115
- ```sh
126
+ ```text
116
127
  a1 install npm:pi-mcp-adapter
117
128
  ```
118
129
 
119
130
  Remove it (alias: `a1 uninstall`):
120
131
 
121
- ```sh
132
+ ```text
122
133
  a1 remove npm:pi-mcp-adapter
123
134
  ```
124
135
 
125
136
  List installed packages:
126
137
 
127
- ```sh
138
+ ```text
128
139
  a1 list
129
140
  ```
130
141
 
131
142
  Update every installed package:
132
143
 
133
- ```sh
144
+ ```text
134
145
  a1 update --extensions
135
146
  ```
136
147
 
137
148
  Update one:
138
149
 
139
- ```sh
150
+ ```text
140
151
  a1 update npm:pi-mcp-adapter
141
152
  ```
142
153
 
143
- <p align="center"><picture><img src="docs/assets/readme/gears.svg" alt="" width="240"></picture></p>
154
+ <p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/separator-dark.svg"><img src="docs/assets/readme/separator.svg" alt="" width="280"></picture></p>
144
155
 
145
156
  ## Develop
146
157
 
147
158
  Install exact locked dependencies:
148
159
 
149
- ```sh
160
+ ```text
150
161
  npm ci
151
162
  ```
152
163
 
153
164
  Compile TypeScript and the process guardian into `dist`:
154
165
 
155
- ```sh
166
+ ```text
156
167
  npm run build
157
168
  ```
158
169
 
159
170
  Build and launch a source `a1`:
160
171
 
161
- ```sh
172
+ ```text
162
173
  npm start
163
174
  ```
164
175
 
165
176
  Build and launch a source `a1 pi`:
166
177
 
167
- ```sh
178
+ ```text
168
179
  npm run start:pi
169
180
  ```
170
181
 
171
182
  Typecheck + fast suite (alias: `npm test`):
172
183
 
173
- ```sh
184
+ ```text
174
185
  npm run test:fast
175
186
  ```
176
187
 
177
188
  Complete non-physical suite:
178
189
 
179
- ```sh
190
+ ```text
180
191
  npm run test:full
181
192
  ```
182
193
 
183
194
  Report Node, npm, git, Rust, and dependency readiness:
184
195
 
185
- ```sh
196
+ ```text
186
197
  npm run doctor
187
198
  ```
188
199
 
189
200
  Preview the README as GitHub renders it, in your browser (needs `gh`):
190
201
 
191
- ```sh
202
+ ```text
192
203
  npm run preview:readme
193
204
  ```
194
205
 
195
- <p align="center"><picture><img src="docs/assets/readme/rocket.svg" alt="" width="240"></picture></p>
206
+ <p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/separator-dark.svg"><img src="docs/assets/readme/separator.svg" alt="" width="280"></picture></p>
196
207
 
197
208
  ## Publish
198
209
 
@@ -200,25 +211,25 @@ npm run preview:readme
200
211
 
201
212
  Request the preview publish:
202
213
 
203
- ```sh
214
+ ```text
204
215
  npm run develop
205
216
  ```
206
217
 
207
218
  ### Release
208
219
 
209
- ```sh
220
+ ```text
210
221
  npm run release -- patch # 0.1.8-dev -> 0.1.8
211
222
  ```
212
223
 
213
- ```sh
224
+ ```text
214
225
  npm run release -- minor # 0.1.8-dev -> 0.2.0
215
226
  ```
216
227
 
217
- ```sh
228
+ ```text
218
229
  npm run release -- major # 0.1.8-dev -> 1.0.0
219
230
  ```
220
231
 
221
- ```sh
232
+ ```text
222
233
  npm run release -- 0.4.0 # prepare an exact stable version
223
234
  ```
224
235
 
@@ -227,5 +238,5 @@ Once validation passes, open the printed draft link, edit the `## [version] - YY
227
238
  <br>
228
239
 
229
240
  <p align="center">
230
- <picture><img src="docs/assets/readme/waves.svg" alt="" width="100%"></picture>
241
+ <picture><source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/waves-dark.svg"><img src="docs/assets/readme/waves.svg" alt="" width="100%"></picture>
231
242
  </p>
@@ -49,9 +49,9 @@ export function resolvePinnedPiImport(specifier) {
49
49
  if (match === null) throw new Error(`pinned Pi import is invalid: ${specifier}`);
50
50
  const packageName = match[1] ?? "";
51
51
  const subpath = match[2]?.slice(1) ?? "";
52
- const packageRoot = resolve(root, "node_modules", ...packageName.split("/"));
52
+ const packageRoot = findDependencyRoot(root, packageName);
53
+ if (packageRoot === undefined) throw new Error(`pinned Pi dependency is unavailable: ${packageName}`);
53
54
  const manifestPath = resolve(packageRoot, "package.json");
54
- if (!existsSync(manifestPath)) throw new Error(`pinned Pi dependency is unavailable: ${packageName}`);
55
55
  const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
56
56
  const declaredTarget = exportedTarget(manifest.exports, subpath) ?? (subpath.length === 0 ? manifest.module ?? manifest.main : undefined);
57
57
  const target = typeof declaredTarget === "string" && !declaredTarget.startsWith(".") ? `./${declaredTarget}` : declaredTarget;
@@ -61,6 +61,24 @@ export function resolvePinnedPiImport(specifier) {
61
61
  return pathToFileURL(path).href;
62
62
  }
63
63
 
64
+ /**
65
+ * Follow Node's package lookup shape so npm may either nest a Pi dependency or
66
+ * deduplicate it into an ancestor node_modules directory.
67
+ * @param {string} root
68
+ * @param {string} packageName
69
+ * @returns {string | undefined}
70
+ */
71
+ function findDependencyRoot(root, packageName) {
72
+ let current = root;
73
+ while (true) {
74
+ const candidate = resolve(current, "node_modules", ...packageName.split("/"));
75
+ if (existsSync(resolve(candidate, "package.json"))) return candidate;
76
+ const parent = dirname(current);
77
+ if (parent === current) return undefined;
78
+ current = parent;
79
+ }
80
+ }
81
+
64
82
  function pinnedRoot() {
65
83
  if (configuredRoot === undefined) throw new Error("pinned Pi public package directory is not configured");
66
84
  if (!existsSync(resolve(configuredRoot, "package.json"))) throw new Error("pinned Pi public package directory is unavailable");
@@ -263,7 +263,6 @@ export declare class OwnedUiSessionShellRoot implements PiTuiComponentPort {
263
263
  appendWorkflowStatus(message: string): void;
264
264
  appendWorkflowMessage(message: PiWorkflowMessage, errorCode?: ImageAttachmentError["code"]): void;
265
265
  appendWorkflowResult(result: PiWorkflowResult, errorCode?: ImageAttachmentError["code"]): void;
266
- appendDaxnuts(): void;
267
266
  toggleThinkingVisibility(): void;
268
267
  get toolsExpanded(): boolean;
269
268
  setToolsExpanded(expanded: boolean): void;
@@ -9,7 +9,7 @@ import { PINNED_PI_HIDDEN_COMMAND_NAMES, PINNED_PI_WORKFLOW_COMMAND_NAMES } from
9
9
  import { createPiExtensionUiBridge } from "../../integrations/pi/components/shell-extension-ui.js";
10
10
  import { createPiShellEditor } from "../../integrations/pi/components/shell-editor-autocomplete.js";
11
11
  import { createPiQueuedInputStatus, createPiShellFooter, createPiShellHeader, createPiShellLoadedResources, createPiShellStatus, } from "../../integrations/pi/components/shell-footer-status.js";
12
- import { createPiShellArmin, createPiShellAuthProviderSelector, createPiShellDaxnuts, createPiShellDialog, createPiShellEarendilAnnouncement, createPiShellExtensionSelector, createPiShellLoginDialog, createPiShellModelSelector, createPiShellOperationLoader, createPiShellReloadBox, createPiShellScopedModelsSelector, createPiShellSelector, createPiShellSessionSelector, createPiShellSettingsSelector, createPiShellTreeSelector, createPiShellTrustSelector, createPiShellUserMessageSelector, } from "../../integrations/pi/components/shell-selectors-dialogs.js";
12
+ import { createPiShellArmin, createPiShellAuthProviderSelector, createPiShellDialog, createPiShellEarendilAnnouncement, createPiShellExtensionSelector, createPiShellLoginDialog, createPiShellModelSelector, createPiShellOperationLoader, createPiShellReloadBox, createPiShellScopedModelsSelector, createPiShellSelector, createPiShellSessionSelector, createPiShellSettingsSelector, createPiShellTreeSelector, createPiShellTrustSelector, createPiShellUserMessageSelector, } from "../../integrations/pi/components/shell-selectors-dialogs.js";
13
13
  import { createPiShellChangelog, createPiShellCollapsedChangelog, createPiShellHotkeys, createPiShellSessionInfo, renderPiShellCommandMessage, renderPiShellPackageUpdateNotice, renderPiShellReleaseUpdateBanner, renderPiShellReleaseUpdateNotice, renderPiShellStatusText, } from "../../integrations/pi/components/shell-presenters-info.js";
14
14
  import { createPiShellTranscriptComponent, isPiPromptStyleCompaction, paintPiSubmittedPromptTimestamp, renderPiShellStartupDiagnostic, renderPiShellTranscriptBlock, } from "../../integrations/pi/components/shell-presenters-transcript.js";
15
15
  import { onPiThemeChange, PINNED_PI_LAYOUT, piTheme } from "../../integrations/pi/components/upstream/theme/theme.js";
@@ -86,7 +86,7 @@ export class OwnedUiSessionShellRoot {
86
86
  #imageSubmissionsSending = 0;
87
87
  constructor(view, cwd, handlers, startup = {}, agentDir, extensionRenderers = {
88
88
  getMessageRenderer: () => undefined,
89
- getToolDefinition: () => undefined,
89
+ getToolRenderers: () => undefined,
90
90
  }, sessionLayout = "pinned", imageAssets) {
91
91
  this.#view = view;
92
92
  this.#customViewport = sessionLayout === "custom-viewport";
@@ -984,11 +984,6 @@ export class OwnedUiSessionShellRoot {
984
984
  : result.message;
985
985
  this.appendWorkflowStatus(message);
986
986
  }
987
- appendDaxnuts() {
988
- this.#lastWorkflowStatusId = undefined;
989
- const daxnuts = createPiShellDaxnuts(this.#componentRuntime);
990
- this.#appendAnchoredWorkflowComponent(width => ["", ...daxnuts.render(width)], () => daxnuts.dispose?.());
991
- }
992
987
  toggleThinkingVisibility() {
993
988
  this.setHideThinkingBlock(this.#thinkingVisible);
994
989
  }
@@ -14,7 +14,7 @@ import { createPiExtensionUiBridge } from "../../integrations/pi/components/shel
14
14
  import { createPiShellEditor } from "../../integrations/pi/components/shell-editor-autocomplete.js";
15
15
  import { SKILLS_COMMAND_NAME, findSkillByArgument, rewriteSkillsTunnelSubmission, skillPrompt, skillsFromCommands, } from "../../integrations/pi/components/skills-command.js";
16
16
  import { createPiQueuedInputStatus, createPiShellFooter, createPiShellHeader, createPiShellLoadedResources, createPiShellStatus, } from "../../integrations/pi/components/shell-footer-status.js";
17
- import { createPiShellArmin, createPiShellAuthProviderSelector, createPiShellDaxnuts, createPiShellDialog, createPiShellEarendilAnnouncement, createPiShellExtensionSelector, createPiShellLoginDialog, createPiShellModelSelector, createPiShellModelsDialog, createPiShellOperationLoader, createPiShellReloadBox, createPiShellScopedModelsSelector, createPiShellSelector, createPiShellSessionSelector, createPiShellSettingsSelector, createPiShellSkillsSelector, createPiShellTreeSelector, createPiShellTrustSelector, createPiShellUserMessageSelector, } from "../../integrations/pi/components/shell-selectors-dialogs.js";
17
+ import { createPiShellArmin, createPiShellAuthProviderSelector, createPiShellDialog, createPiShellEarendilAnnouncement, createPiShellExtensionSelector, createPiShellLoginDialog, createPiShellModelSelector, createPiShellModelsDialog, createPiShellOperationLoader, createPiShellReloadBox, createPiShellScopedModelsSelector, createPiShellSelector, createPiShellSessionSelector, createPiShellSettingsSelector, createPiShellSkillsSelector, createPiShellTreeSelector, createPiShellTrustSelector, createPiShellUserMessageSelector, } from "../../integrations/pi/components/shell-selectors-dialogs.js";
18
18
  import { createPiShellChangelog, createPiShellHotkeys, createPiShellSessionInfo, renderPiShellPackageUpdateNotice, renderPiShellStatusText, } from "../../integrations/pi/components/shell-presenters-info.js";
19
19
  import { createPiShellTranscriptComponent, renderPiShellStartupDiagnostic, renderPiShellTranscriptBlock, } from "../../integrations/pi/components/shell-presenters-transcript.js";
20
20
  import { onPiThemeChange, piTheme } from "../../integrations/pi/components/upstream/theme/theme.js";
@@ -233,7 +233,7 @@ export class OwnedUiSessionShell {
233
233
  resources: startup?.resources ?? shellResourceEntries(this.backend),
234
234
  }, this.backend.agentDir, {
235
235
  getMessageRenderer: customType => this.backend.pinnedMessageRenderer(customType),
236
- getToolDefinition: toolName => this.backend.pinnedToolDefinition(toolName),
236
+ getToolRenderers: toolName => this.backend.pinnedToolRenderers(toolName),
237
237
  getShortcuts: bindings => this.backend.pinnedShortcutDescriptions(bindings),
238
238
  }, sessionLayout, {
239
239
  resolve: assetId => this.backend.resolveTranscriptImage(assetId),
@@ -823,8 +823,6 @@ export class OwnedUiSessionShell {
823
823
  async cycleModel(direction) {
824
824
  const result = await this.backend.cycleModelWorkflow(direction);
825
825
  this.root.appendWorkflowResult(result);
826
- if (result.outcome === "completed")
827
- this.#showDaxnutsForActiveModel();
828
826
  this.runtime.requestRender();
829
827
  return workflowAdapterResult(result);
830
828
  }
@@ -1345,8 +1343,6 @@ export class OwnedUiSessionShell {
1345
1343
  this.#installAutocompleteCommands();
1346
1344
  }
1347
1345
  this.root.appendWorkflowResult(result);
1348
- if ((request.command === "model" || request.command === "models") && result.outcome === "completed")
1349
- this.#showDaxnutsForActiveModel();
1350
1346
  this.runtime.requestRender();
1351
1347
  return workflowAdapterResult(result);
1352
1348
  }
@@ -1536,12 +1532,6 @@ export class OwnedUiSessionShell {
1536
1532
  this.runtime.requestRender();
1537
1533
  }).finally(() => clearTimeout(timeout));
1538
1534
  }
1539
- #showDaxnutsForActiveModel() {
1540
- const model = this.view().activeModel;
1541
- if (model?.providerId === "opencode" && model.modelId.toLowerCase().includes("kimi-k2.5")) {
1542
- this.root.appendDaxnuts();
1543
- }
1544
- }
1545
1535
  // Invariant: pointer reporting is disabled on every path that ends the owning screen.
1546
1536
  #setPointerReporting(enabled, forceOff = false) {
1547
1537
  const effective = forceOff ? false : this.#customViewport || enabled;
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "schema": "a1-release-notes-v1",
3
3
  "releases": [
4
+ {
5
+ "version": "0.2.4",
6
+ "markdown": "## [0.2.4] - 2026-10-05\n\n### Changed\n\n- upgrade pinned Pi to 1.0.0 ([#658](https://github.com/timurproko/a1/pull/658))\n- upgrade pinned Pi to 1.0.2 ([#669](https://github.com/timurproko/a1/pull/669))\n- add animated mark, section art, and browser preview ([#665](https://github.com/timurproko/a1/pull/665))\n- keep the hero mark still and link only it to the site ([#666](https://github.com/timurproko/a1/pull/666))\n- pick dark-mode art via picture sources ([#668](https://github.com/timurproko/a1/pull/668))\n\n### Fixed\n\n- make self-update upgrades reliable ([#664](https://github.com/timurproko/a1/pull/664))\n- restore the terminal and print a resume hint when a1 is killed ([#667](https://github.com/timurproko/a1/pull/667))\n- align progress with Pi accent ([#671](https://github.com/timurproko/a1/pull/671))\n- support Git URL rewrites ([#673](https://github.com/timurproko/a1/pull/673))\n- support repository relocation ([#675](https://github.com/timurproko/a1/pull/675))\n- prevent bottom control gutter bleed ([#677](https://github.com/timurproko/a1/pull/677))\n"
7
+ },
4
8
  {
5
9
  "version": "0.2.3",
6
10
  "markdown": "## [0.2.3] - 2026-10-03\n\n### Changed\n\n- upgrade pinned Pi to 0.99.1 ([#642](https://github.com/timurproko/a1/pull/642))\n- upgrade pinned Pi to 0.99.2 ([#652](https://github.com/timurproko/a1/pull/652))\n- match changelog link decoration ([#649](https://github.com/timurproko/a1/pull/649))\n- rename stable wrapper ([#655](https://github.com/timurproko/a1/pull/655))\n\n### Fixed\n\n- restore documentation auto-merge ([#653](https://github.com/timurproko/a1/pull/653))\n- allow development publication startup ([#654](https://github.com/timurproko/a1/pull/654))\n- bound Windows backlog setup ([#656](https://github.com/timurproko/a1/pull/656))\n- resolve bundled npm entry ([#657](https://github.com/timurproko/a1/pull/657))\n- verify exact npm resources ([#659](https://github.com/timurproko/a1/pull/659))\n"
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated by scripts/pi/sync-progress-palette.ts from @earendil-works/pi-coding-agent 1.0.2
3
+ * (MIT), commit cd32f7725fdbddbaecdff5b1e68491563394e0ca. Do not edit directly.
4
+ */
5
+ export declare const SHARED_PROGRESS_ACCENT_ANSI = "\u001B[38;2;167;152;215m";
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated by scripts/pi/sync-progress-palette.ts from @earendil-works/pi-coding-agent 1.0.2
3
+ * (MIT), commit cd32f7725fdbddbaecdff5b1e68491563394e0ca. Do not edit directly.
4
+ */
5
+ export const SHARED_PROGRESS_ACCENT_ANSI = "\u001b[38;2;167;152;215m";
@@ -5,6 +5,7 @@ import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
5
5
  import crossSpawn from "cross-spawn";
6
6
  import { valid as validSemver } from "semver";
7
7
  import { PRODUCT_IDENTITY, PRODUCT_TEXT } from "../../product-identity.js";
8
+ import { SHARED_PROGRESS_ACCENT_ANSI } from "./progress-palette.generated.js";
8
9
  import { isNewerRelease, releaseChannelOf } from "./latest-release.js";
9
10
  import { certifyMaterializedRelease, ensureSupervisor, waitForProcessExit, } from "./bootstrap.js";
10
11
  import { probeOwnership, readEndpointMetadata, removeEndpointArtifacts } from "./endpoints.js";
@@ -235,13 +236,11 @@ const ACTIVATION_PROGRESS = {
235
236
  export function renderUpdateProgressBar(percent) {
236
237
  const bounded = Math.min(100, Math.max(0, Math.round(percent)));
237
238
  const filled = Math.round((bounded / 100) * PROGRESS_BAR_WIDTH);
238
- // Rationale: the completed run uses A1's scrollbar-aligned teal, followed by a
239
- // darker gray track and one gray space before the percentage. Explicit RGB
240
- // keeps each color stable even when the terminal remaps its ANSI palette.
241
- const completed = "\u001b[38;2;138;190;183m";
239
+ // Rationale: the completed run follows the pinned Pi controls' semantic accent,
240
+ // while the track and percentage retain the update meter's neutral treatment.
242
241
  const gray = "\u001b[38;2;128;128;128m";
243
242
  const track = "\u001b[38;2;102;102;102m";
244
- return `${completed}${"━".repeat(filled)}${track}${"─".repeat(PROGRESS_BAR_WIDTH - filled)}${gray} ${bounded}%\u001b[39m`;
243
+ return `${SHARED_PROGRESS_ACCENT_ANSI}${"━".repeat(filled)}${track}${"─".repeat(PROGRESS_BAR_WIDTH - filled)}${gray} ${bounded}%\u001b[39m`;
245
244
  }
246
245
  function createUpdateProgress(output, enabled) {
247
246
  let visible = false;
@@ -10,7 +10,7 @@ export const STARTUP_DESCRIPTOR = Object.freeze({
10
10
  ],
11
11
  "generatedArtifact": {
12
12
  "path": "dist/integrations/pi/startup-public.js",
13
- "sha256": "cb2331c550009704bce2614f2f7fb6e1b45ed00403be804da3b83c1ea90a17c4"
13
+ "sha256": "c115c1f4222f750961ed1d2d2b9b6c022f2948b070445b84e758c4d0c40d0bcd"
14
14
  },
15
15
  "dependencyLayerIdentity": {
16
16
  "source": "A1_RELEASE_LAYERS",
@@ -19,7 +19,7 @@ export const STARTUP_DESCRIPTOR = Object.freeze({
19
19
  "compileCacheNamespace": {
20
20
  "strategy": "node-abi-version-and-ordered-layer-sha256-v1"
21
21
  },
22
- "identity": "54cea64be46c7a0d36ab6a1889206f79813dba6b9884387b391440fe30a1fdee"
22
+ "identity": "e2d043ae3f413047a59b2d289bbca7b46ff0eebbc040e652dc8f76677054f49e"
23
23
  });
24
24
 
25
25
  export function loadDeclaredStartupGraph() {
@@ -2,7 +2,7 @@ export { adaptPiAssistantMessage, adaptPiToolExecution, adaptPiUserMessage } fro
2
2
  export { loadHistoryEditor, type HistoryEditorConstructor } from "./history-editor-loader.js";
3
3
  export { PiComponentConformanceError, runPiComponentConformance } from "./conformance.js";
4
4
  export type { PiComponentConformanceReport, PiComponentConformanceResult } from "./conformance.js";
5
- 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";
5
+ 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";
6
6
  export { renderPiShellHotkeySections } from "./shell-hotkey-sections.js";
7
7
  export type { PiShellHotkeySection } from "./shell-hotkey-sections.js";
8
8
  export type { PiExtensionUiBridge, PiExtensionUiBridgeHost, PiShellAuthProviderOption, PiShellAutocompleteCommand, PiShellClipboardContent, PiShellCommandMessagePresentation, PiShellComponentPort, PiShellEditorBodyGeometry, PiShellEditorOptions, PiShellEditorPointerEvent, PiShellEditorPort, PiShellEditorTextRange, PiShellExtensionRendererResolver, PiShellHeaderOptions, PiShellHeaderPort, PiShellHotkeysPresentation, PiShellImageAssetResolver, PiShellLoadedResourcesPort, PiShellLoginDialogPort, PiShellModelSelectorOptions, PiShellModelsDialogOptions, PiShellModelsDialogPort, PiShellOperationLoaderPort, PiShellPasteReservation, PiShellQueuedInputPort, PiShellResourceEntry, PiShellResourceSection, PiShellScopedModelDescriptor, PiShellScopedModelsSelectorOptions, PiShellScopedModelsSelectorPort, PiShellSelectorOption, PiShellSelectorOptions, PiShellSessionInfoPresentation, PiShellSettingsSelectorOptions, PiShellStartupNotice, PiShellStatusPlacement, PiShellStatusPort, PiShellSubmittedPromptComposer, PiShellTranscriptComponentPort, PiShellViewComponentPort, } from "./shell-components.js";
@@ -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
2
  * Attributed owned theme resources adapted from @earendil-works/pi-coding-agent 1.0.0 (MIT),
3
- * commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32.
3
+ * commit cd32f7725fdbddbaecdff5b1e68491563394e0ca.
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
2
  * Attributed owned theme resources adapted from @earendil-works/pi-coding-agent 1.0.0 (MIT),
3
- * commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32.
3
+ * commit cd32f7725fdbddbaecdff5b1e68491563394e0ca.
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.
@@ -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());
@@ -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.2 (MIT), commit cd32f7725fdbddbaecdff5b1e68491563394e0ca,
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,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.2 (MIT), commit cd32f7725fdbddbaecdff5b1e68491563394e0ca,
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.2",
4
4
  "upstreamRepository": "https://github.com/earendil-works/pi.git",
5
- "upstreamCommit": "a13d35a742c6ef8462812a28fbe1d8c8b7431c32",
5
+ "upstreamCommit": "cd32f7725fdbddbaecdff5b1e68491563394e0ca",
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.2 (MIT), commit cd32f7725fdbddbaecdff5b1e68491563394e0ca,
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.