@timurproko/a1 0.2.4-dev.673 → 0.2.5-dev.683
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.
- package/README.md +49 -38
- package/bin/pinned-pi-public.js +20 -2
- package/dist/app/session-shell/session-shell-root.d.ts +1 -1
- package/dist/app/session-shell/session-shell-root.js +6 -11
- package/dist/app/session-shell/session-shell.js +9 -17
- package/dist/composition/owned-ui.js +1 -0
- package/dist/composition/session-info-reference.d.ts +4 -0
- package/dist/composition/session-info-reference.js +20 -0
- package/dist/composition/settings-route-host.d.ts +2 -5
- package/dist/composition/settings-route-host.js +7 -11
- package/dist/features/owned-ui/reference-screen-app.d.ts +2 -0
- package/dist/features/owned-ui/reference-screen-app.js +7 -1
- package/dist/features/owned-ui/resources/release-notes.json +4 -0
- package/dist/foundation/release/progress-palette.generated.d.ts +2 -2
- package/dist/foundation/release/progress-palette.generated.js +2 -2
- package/dist/foundation/startup/startup-descriptor.js +2 -2
- package/dist/integrations/pi/components/index.d.ts +1 -1
- package/dist/integrations/pi/components/index.js +1 -1
- package/dist/integrations/pi/components/resources/builtin-themes.d.ts +2 -2
- package/dist/integrations/pi/components/resources/builtin-themes.js +2 -2
- package/dist/integrations/pi/components/shell-presenters-info.d.ts +2 -0
- package/dist/integrations/pi/components/shell-presenters-info.js +1 -1
- package/dist/integrations/pi/components/shell-presenters-transcript.js +10 -6
- package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +0 -1
- package/dist/integrations/pi/components/shell-selectors-dialogs.js +0 -5
- package/dist/integrations/pi/components/shell-session-info-reference.d.ts +10 -0
- package/dist/integrations/pi/components/shell-session-info-reference.js +61 -0
- package/dist/integrations/pi/components/shell-shared-facade.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +5 -5
- package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +1 -1
- package/dist/integrations/pi/components/upstream/assets/earendil-image.json +2 -2
- package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +1 -1
- package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/extension-editor.js +1 -1
- package/dist/integrations/pi/components/upstream/components/extension-input.js +1 -1
- package/dist/integrations/pi/components/upstream/components/extension-selector.js +1 -1
- package/dist/integrations/pi/components/upstream/components/mermaid.js +1 -1
- package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/owned-editor.js +1 -1
- package/dist/integrations/pi/components/upstream/components/pi-logo.js +1 -1
- package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/session-footer.js +1 -1
- package/dist/integrations/pi/components/upstream/components/session-selector-search.js +1 -1
- package/dist/integrations/pi/components/upstream/components/session-selector.js +1 -1
- package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +1 -1
- package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/status-indicator.js +1 -1
- package/dist/integrations/pi/components/upstream/components/themed-text.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/themed-text.js +1 -1
- package/dist/integrations/pi/components/upstream/components/thinking-selector.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/thinking-selector.js +1 -1
- package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +4 -3
- package/dist/integrations/pi/components/upstream/components/tool-execution.js +8 -7
- package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/tree-selector.js +1 -1
- package/dist/integrations/pi/components/upstream/components/trust-selector.js +1 -1
- package/dist/integrations/pi/components/upstream/external-editor.js +1 -1
- package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/history/editor-core.js +1 -1
- package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/history/kill-ring.js +1 -1
- package/dist/integrations/pi/components/upstream/history/printable-key.js +1 -1
- package/dist/integrations/pi/components/upstream/history/text-helpers.js +1 -1
- package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/history/undo-stack.js +1 -1
- package/dist/integrations/pi/components/upstream/history/word-navigation.js +1 -1
- package/dist/integrations/pi/components/upstream/model-search.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/theme/system-theme.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/theme/system-theme.js +1 -1
- package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/theme/theme.js +1 -1
- package/dist/integrations/pi/engine/adapter.d.ts +1 -1
- package/dist/integrations/pi/engine/adapter.js +8 -2
- package/dist/integrations/pi/engine/resources/changelog.json +4 -4
- package/dist/integrations/pi/startup-public.js +309 -206
- package/dist/integrations/pi/startup-public.manifest.json +3138 -3120
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +1 -1
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +1 -1
- package/dist/native/darwin-arm64/manifest.json +1 -1
- package/dist/native/linux-x64/manifest.json +1 -1
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/native/win32-x64/process-guardian.exe +0 -0
- package/dist/runtime-payload-inventory.json +37027 -28855
- package/dist/ui/components/transcript-viewport.js +10 -7
- package/docs/architecture/project-structure.md +3 -1
- package/docs/assets/readme/separator-dark.svg +11 -0
- package/docs/assets/readme/separator.svg +11 -0
- package/docs/local-worktree-cleanup.md +3 -1
- package/docs/openspec-archive-automation.md +14 -5
- package/docs/releases/0.2.4.md +18 -0
- package/package.json +3 -3
- package/dist/integrations/pi/components/upstream/components/daxnuts.d.ts +0 -29
- 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
|
-
```
|
|
28
|
+
```text
|
|
20
29
|
npm x -y -- @timurproko/a1-install
|
|
21
30
|
```
|
|
22
31
|
|
|
23
32
|
Develop:
|
|
24
33
|
|
|
25
|
-
```
|
|
34
|
+
```text
|
|
26
35
|
npm x -y -- @timurproko/a1-install --develop
|
|
27
36
|
```
|
|
28
37
|
|
|
29
38
|
Preview number:
|
|
30
39
|
|
|
31
|
-
```
|
|
40
|
+
```text
|
|
32
41
|
npm x -y -- @timurproko/a1-install --develop 107
|
|
33
42
|
```
|
|
34
43
|
|
|
35
44
|
Exact preview:
|
|
36
45
|
|
|
37
|
-
```
|
|
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><source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/
|
|
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
|
-
##
|
|
52
|
+
## Launch
|
|
44
53
|
|
|
45
54
|
Launch A1 (profile: `~/.a1/agent`):
|
|
46
55
|
|
|
47
|
-
```
|
|
56
|
+
```text
|
|
48
57
|
a1
|
|
49
58
|
```
|
|
50
59
|
|
|
51
60
|
Show all commands:
|
|
52
61
|
|
|
53
|
-
```
|
|
62
|
+
```text
|
|
54
63
|
a1 help
|
|
55
64
|
```
|
|
56
65
|
|
|
57
66
|
Show the current and latest versions:
|
|
58
67
|
|
|
59
|
-
```
|
|
68
|
+
```text
|
|
60
69
|
a1 version
|
|
61
70
|
```
|
|
62
71
|
|
|
63
72
|
Vanilla Pi oracle (`~/.pi/agent`):
|
|
64
73
|
|
|
65
|
-
```
|
|
74
|
+
```text
|
|
66
75
|
a1 pi
|
|
67
76
|
```
|
|
68
77
|
|
|
69
|
-
|
|
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
|
-
```
|
|
84
|
+
```text
|
|
74
85
|
a1 update
|
|
75
86
|
```
|
|
76
87
|
|
|
77
88
|
Install develop:
|
|
78
89
|
|
|
79
|
-
```
|
|
90
|
+
```text
|
|
80
91
|
a1 update --develop
|
|
81
92
|
```
|
|
82
93
|
|
|
83
94
|
Install preview 107:
|
|
84
95
|
|
|
85
|
-
```
|
|
96
|
+
```text
|
|
86
97
|
a1 update --develop 107
|
|
87
98
|
```
|
|
88
99
|
|
|
89
100
|
Install that exact preview:
|
|
90
101
|
|
|
91
|
-
```
|
|
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
|
-
```
|
|
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
|
-
```
|
|
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><source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/
|
|
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
|
-
```
|
|
126
|
+
```text
|
|
116
127
|
a1 install npm:pi-mcp-adapter
|
|
117
128
|
```
|
|
118
129
|
|
|
119
130
|
Remove it (alias: `a1 uninstall`):
|
|
120
131
|
|
|
121
|
-
```
|
|
132
|
+
```text
|
|
122
133
|
a1 remove npm:pi-mcp-adapter
|
|
123
134
|
```
|
|
124
135
|
|
|
125
136
|
List installed packages:
|
|
126
137
|
|
|
127
|
-
```
|
|
138
|
+
```text
|
|
128
139
|
a1 list
|
|
129
140
|
```
|
|
130
141
|
|
|
131
142
|
Update every installed package:
|
|
132
143
|
|
|
133
|
-
```
|
|
144
|
+
```text
|
|
134
145
|
a1 update --extensions
|
|
135
146
|
```
|
|
136
147
|
|
|
137
148
|
Update one:
|
|
138
149
|
|
|
139
|
-
```
|
|
150
|
+
```text
|
|
140
151
|
a1 update npm:pi-mcp-adapter
|
|
141
152
|
```
|
|
142
153
|
|
|
143
|
-
<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/
|
|
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
|
-
```
|
|
160
|
+
```text
|
|
150
161
|
npm ci
|
|
151
162
|
```
|
|
152
163
|
|
|
153
164
|
Compile TypeScript and the process guardian into `dist`:
|
|
154
165
|
|
|
155
|
-
```
|
|
166
|
+
```text
|
|
156
167
|
npm run build
|
|
157
168
|
```
|
|
158
169
|
|
|
159
170
|
Build and launch a source `a1`:
|
|
160
171
|
|
|
161
|
-
```
|
|
172
|
+
```text
|
|
162
173
|
npm start
|
|
163
174
|
```
|
|
164
175
|
|
|
165
176
|
Build and launch a source `a1 pi`:
|
|
166
177
|
|
|
167
|
-
```
|
|
178
|
+
```text
|
|
168
179
|
npm run start:pi
|
|
169
180
|
```
|
|
170
181
|
|
|
171
182
|
Typecheck + fast suite (alias: `npm test`):
|
|
172
183
|
|
|
173
|
-
```
|
|
184
|
+
```text
|
|
174
185
|
npm run test:fast
|
|
175
186
|
```
|
|
176
187
|
|
|
177
188
|
Complete non-physical suite:
|
|
178
189
|
|
|
179
|
-
```
|
|
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
|
-
```
|
|
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
|
-
```
|
|
202
|
+
```text
|
|
192
203
|
npm run preview:readme
|
|
193
204
|
```
|
|
194
205
|
|
|
195
|
-
<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/
|
|
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
|
-
```
|
|
214
|
+
```text
|
|
204
215
|
npm run develop
|
|
205
216
|
```
|
|
206
217
|
|
|
207
218
|
### Release
|
|
208
219
|
|
|
209
|
-
```
|
|
220
|
+
```text
|
|
210
221
|
npm run release -- patch # 0.1.8-dev -> 0.1.8
|
|
211
222
|
```
|
|
212
223
|
|
|
213
|
-
```
|
|
224
|
+
```text
|
|
214
225
|
npm run release -- minor # 0.1.8-dev -> 0.2.0
|
|
215
226
|
```
|
|
216
227
|
|
|
217
|
-
```
|
|
228
|
+
```text
|
|
218
229
|
npm run release -- major # 0.1.8-dev -> 1.0.0
|
|
219
230
|
```
|
|
220
231
|
|
|
221
|
-
```
|
|
232
|
+
```text
|
|
222
233
|
npm run release -- 0.4.0 # prepare an exact stable version
|
|
223
234
|
```
|
|
224
235
|
|
package/bin/pinned-pi-public.js
CHANGED
|
@@ -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 =
|
|
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");
|
|
@@ -257,13 +257,13 @@ export declare class OwnedUiSessionShellRoot implements PiTuiComponentPort {
|
|
|
257
257
|
setViewportOverlaySurfaces(surfaces: readonly PiTuiPointerSurface[] | null): void;
|
|
258
258
|
viewportInputGeometryReady(width: number, height: number): boolean;
|
|
259
259
|
handleViewportPreInput(data: string, allowWheel?: boolean, now?: number, editorActive?: boolean): SessionViewportInputResult;
|
|
260
|
+
dismissNotice(): void;
|
|
260
261
|
layoutRoot(): PiTuiLayoutNode;
|
|
261
262
|
transcriptComponent(id: string): PiShellTranscriptComponentPort | undefined;
|
|
262
263
|
exitTranscript(width: number): string;
|
|
263
264
|
appendWorkflowStatus(message: string): void;
|
|
264
265
|
appendWorkflowMessage(message: PiWorkflowMessage, errorCode?: ImageAttachmentError["code"]): void;
|
|
265
266
|
appendWorkflowResult(result: PiWorkflowResult, errorCode?: ImageAttachmentError["code"]): void;
|
|
266
|
-
appendDaxnuts(): void;
|
|
267
267
|
toggleThinkingVisibility(): void;
|
|
268
268
|
get toolsExpanded(): boolean;
|
|
269
269
|
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,
|
|
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
|
-
|
|
89
|
+
getToolRenderers: () => undefined,
|
|
90
90
|
}, sessionLayout = "pinned", imageAssets) {
|
|
91
91
|
this.#view = view;
|
|
92
92
|
this.#customViewport = sessionLayout === "custom-viewport";
|
|
@@ -286,7 +286,7 @@ export class OwnedUiSessionShellRoot {
|
|
|
286
286
|
reconcilePromptImageLimitNotice(text = this.editor.getText()) {
|
|
287
287
|
if (this.#dockNotice?.errorCode !== "image-count" || !this.#promptChips.imageLimitState(text).corrected)
|
|
288
288
|
return false;
|
|
289
|
-
this
|
|
289
|
+
this.dismissNotice();
|
|
290
290
|
return true;
|
|
291
291
|
}
|
|
292
292
|
hasPendingPastes(text) { return this.#promptChips.hasPending(text); }
|
|
@@ -375,7 +375,7 @@ export class OwnedUiSessionShellRoot {
|
|
|
375
375
|
// Invariant: the notice answers the reader's last command, so only their next prompt or
|
|
376
376
|
// shell command retires it; assistant, tool, and compaction blocks streaming in keep it.
|
|
377
377
|
if (block.kind === "user" || block.kind === "bash")
|
|
378
|
-
this
|
|
378
|
+
this.dismissNotice();
|
|
379
379
|
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: () => {
|
|
380
380
|
if (this.#transcript.get(block.id) !== created)
|
|
381
381
|
return;
|
|
@@ -659,7 +659,7 @@ export class OwnedUiSessionShellRoot {
|
|
|
659
659
|
}
|
|
660
660
|
return renderPiShellCommandMessage({ kind: notice.kind, message: notice.message }, width, this.#outputPad);
|
|
661
661
|
}
|
|
662
|
-
|
|
662
|
+
dismissNotice() {
|
|
663
663
|
if (this.#dockNotice === undefined)
|
|
664
664
|
return;
|
|
665
665
|
this.#dockNotice = undefined;
|
|
@@ -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
|
}
|
|
@@ -1252,7 +1247,7 @@ export class OwnedUiSessionShellRoot {
|
|
|
1252
1247
|
}
|
|
1253
1248
|
#appendAnchoredWorkflowComponent(render, dispose) {
|
|
1254
1249
|
// Invariant: transcript-bound workflow output supersedes a pending acknowledgement.
|
|
1255
|
-
this
|
|
1250
|
+
this.dismissNotice();
|
|
1256
1251
|
this.#workflowTranscriptSequence += 1;
|
|
1257
1252
|
const id = `workflow-status-${this.#workflowTranscriptSequence}`;
|
|
1258
1253
|
const component = {
|
|
@@ -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,
|
|
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
|
-
|
|
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),
|
|
@@ -358,12 +358,13 @@ export class OwnedUiSessionShell {
|
|
|
358
358
|
? this.runtime.addPreInputListener(data => {
|
|
359
359
|
if (inputPresentation?.coordination === false)
|
|
360
360
|
this.#streamPresentation.noteImmediatePresentation();
|
|
361
|
-
// Compatibility:
|
|
362
|
-
|
|
363
|
-
// overlays retain Pi's normal dispatch, and comparison profiles never enter here.
|
|
361
|
+
// Compatibility: route boundary keys before Pi.
|
|
362
|
+
const isDefault = this.root.usesDefaultInputSurface();
|
|
364
363
|
if (!this.runtime.hasOverlay() && (this.root.editor.matchesTerminalKey(data, "home")
|
|
365
|
-
|| this.root.editor.matchesTerminalKey(data, "end")
|
|
366
|
-
|
|
364
|
+
|| this.root.editor.matchesTerminalKey(data, "end")
|
|
365
|
+
|| !isDefault && (this.root.editor.matchesTerminalKey(data, "ctrl+home")
|
|
366
|
+
|| this.root.editor.matchesTerminalKey(data, "ctrl+end")))) {
|
|
367
|
+
if (isDefault)
|
|
367
368
|
this.root.handleViewportPreInput(data, true);
|
|
368
369
|
this.root.handleInput(data);
|
|
369
370
|
this.runtime.requestRender();
|
|
@@ -823,8 +824,6 @@ export class OwnedUiSessionShell {
|
|
|
823
824
|
async cycleModel(direction) {
|
|
824
825
|
const result = await this.backend.cycleModelWorkflow(direction);
|
|
825
826
|
this.root.appendWorkflowResult(result);
|
|
826
|
-
if (result.outcome === "completed")
|
|
827
|
-
this.#showDaxnutsForActiveModel();
|
|
828
827
|
this.runtime.requestRender();
|
|
829
828
|
return workflowAdapterResult(result);
|
|
830
829
|
}
|
|
@@ -1345,8 +1344,6 @@ export class OwnedUiSessionShell {
|
|
|
1345
1344
|
this.#installAutocompleteCommands();
|
|
1346
1345
|
}
|
|
1347
1346
|
this.root.appendWorkflowResult(result);
|
|
1348
|
-
if ((request.command === "model" || request.command === "models") && result.outcome === "completed")
|
|
1349
|
-
this.#showDaxnutsForActiveModel();
|
|
1350
1347
|
this.runtime.requestRender();
|
|
1351
1348
|
return workflowAdapterResult(result);
|
|
1352
1349
|
}
|
|
@@ -1536,12 +1533,6 @@ export class OwnedUiSessionShell {
|
|
|
1536
1533
|
this.runtime.requestRender();
|
|
1537
1534
|
}).finally(() => clearTimeout(timeout));
|
|
1538
1535
|
}
|
|
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
1536
|
// Invariant: pointer reporting is disabled on every path that ends the owning screen.
|
|
1546
1537
|
#setPointerReporting(enabled, forceOff = false) {
|
|
1547
1538
|
const effective = forceOff ? false : this.#customViewport || enabled;
|
|
@@ -1778,6 +1769,7 @@ export class OwnedUiSessionShell {
|
|
|
1778
1769
|
return { outcome: "failed", diagnostic: `route is unavailable: ${route}` };
|
|
1779
1770
|
if (!this.runtime.active)
|
|
1780
1771
|
return { outcome: "failed", diagnostic: "runtime is not active" };
|
|
1772
|
+
this.root.dismissNotice();
|
|
1781
1773
|
this.#dialogHandle?.hide();
|
|
1782
1774
|
this.#dialogSource = "route";
|
|
1783
1775
|
// Protocol: any-event reporting: hover and drag are what the screen is driven by, and
|
|
@@ -82,6 +82,7 @@ export async function composeOwnedUi(options = {}) {
|
|
|
82
82
|
const { renderPiShellHotkeySections } = await import("../integrations/pi/components/shell-hotkey-sections.js");
|
|
83
83
|
return { sections: width => renderPiShellHotkeySections(presentation, width) };
|
|
84
84
|
},
|
|
85
|
+
session: () => import("./session-info-reference.js").then(m => m.loadSessionInfoReference(adapter)),
|
|
85
86
|
};
|
|
86
87
|
const routeHost = settings === null || !ownedSurfaces ? null : createOwnedRouteHost(settings, references);
|
|
87
88
|
const viewportSettings = settings === null || !ownedSurfaces ? null : {
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ReferenceDocumentProvider } from "../features/owned-ui/reference-screen-app.js";
|
|
2
|
+
import type { PiEngineAdapter } from "../integrations/pi/engine/adapter.js";
|
|
3
|
+
/** Captures one current session snapshot and adapts it to the neutral reference document. */
|
|
4
|
+
export declare function loadSessionInfoReference(adapter: PiEngineAdapter): Promise<ReferenceDocumentProvider>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { renderPiShellSessionInfoReferenceDocument } from "../integrations/pi/components/shell-session-info-reference.js";
|
|
2
|
+
/** Captures one current session snapshot and adapts it to the neutral reference document. */
|
|
3
|
+
export async function loadSessionInfoReference(adapter) {
|
|
4
|
+
const result = await adapter.executeWorkflow({ command: "session", argument: "" });
|
|
5
|
+
if (result.outcome !== "completed")
|
|
6
|
+
throw new Error(result.message);
|
|
7
|
+
if (result.presentation?.kind !== "session-info")
|
|
8
|
+
throw new Error("Session workflow returned no structured information");
|
|
9
|
+
const presentation = result.presentation;
|
|
10
|
+
let cached = null;
|
|
11
|
+
const document = (width) => {
|
|
12
|
+
if (cached?.width !== width)
|
|
13
|
+
cached = { width, document: renderPiShellSessionInfoReferenceDocument(presentation, width) };
|
|
14
|
+
return cached.document;
|
|
15
|
+
};
|
|
16
|
+
return {
|
|
17
|
+
preamble: width => document(width).preamble,
|
|
18
|
+
sections: width => document(width).sections,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -7,10 +7,7 @@ export type OwnedReferenceRows = NonNullable<ReferenceDocumentProvider["rows"]>;
|
|
|
7
7
|
export interface OwnedReferenceProviders {
|
|
8
8
|
changelog(input?: UiRouteInput): Promise<ReferenceDocumentProvider>;
|
|
9
9
|
hotkeys(): Promise<ReferenceDocumentProvider>;
|
|
10
|
+
session(): Promise<ReferenceDocumentProvider>;
|
|
10
11
|
}
|
|
11
|
-
/**
|
|
12
|
-
* Declares the A1-owned settings route, and the changelog and hotkeys reference
|
|
13
|
-
* routes when their documents are supplied, without evaluating their presentation
|
|
14
|
-
* graphs during startup. Opening a route retains input while the optional module loads.
|
|
15
|
-
*/
|
|
12
|
+
/** Declares settings and lazy document routes. */
|
|
16
13
|
export declare function createOwnedRouteHost(settings: OwnedSettingsManager, references?: OwnedReferenceProviders): UiRouteHost;
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CHANGELOG_ROUTE, CHANGELOG_TITLE, HOTKEYS_ROUTE, HOTKEYS_TITLE, } from "../features/owned-ui/reference-routes.js";
|
|
2
2
|
import { SETTINGS_APP_ID, SETTINGS_ROUTE } from "../features/owned-ui/settings-route.js";
|
|
3
3
|
import { piTheme } from "../integrations/pi/components/upstream/theme/theme.js";
|
|
4
4
|
import { faint } from "../ui/components/text.js";
|
|
5
|
-
/**
|
|
6
|
-
* Declares the A1-owned settings route, and the changelog and hotkeys reference
|
|
7
|
-
* routes when their documents are supplied, without evaluating their presentation
|
|
8
|
-
* graphs during startup. Opening a route retains input while the optional module loads.
|
|
9
|
-
*/
|
|
5
|
+
/** Declares settings and lazy document routes. */
|
|
10
6
|
export function createOwnedRouteHost(settings, references) {
|
|
11
|
-
const routes = new Set([SETTINGS_ROUTE, ...(references === undefined ? [] : [CHANGELOG_ROUTE, HOTKEYS_ROUTE])]);
|
|
7
|
+
const routes = new Set([SETTINGS_ROUTE, ...(references === undefined ? [] : [CHANGELOG_ROUTE, HOTKEYS_ROUTE, "session"])]);
|
|
12
8
|
return {
|
|
13
9
|
claims: route => routes.has(route),
|
|
14
10
|
open: (route, input) => {
|
|
@@ -18,10 +14,10 @@ export function createOwnedRouteHost(settings, references) {
|
|
|
18
14
|
return deferredSurface(SETTINGS_APP_ID, "settings", () => loadSettingsSurface(settings));
|
|
19
15
|
}
|
|
20
16
|
const changelog = route === CHANGELOG_ROUTE;
|
|
21
|
-
const
|
|
22
|
-
const title = changelog ? CHANGELOG_TITLE : HOTKEYS_TITLE;
|
|
23
|
-
const document = changelog ? references.changelog(input) : references.hotkeys();
|
|
24
|
-
return deferredSurface(
|
|
17
|
+
const session = route === "session";
|
|
18
|
+
const title = session ? "Session Info" : changelog ? CHANGELOG_TITLE : HOTKEYS_TITLE;
|
|
19
|
+
const document = session ? references.session() : changelog ? references.changelog(input) : references.hotkeys();
|
|
20
|
+
return deferredSurface(route, title, () => loadReferenceSurface(settings, route, route, title, document));
|
|
25
21
|
},
|
|
26
22
|
};
|
|
27
23
|
}
|
|
@@ -11,6 +11,8 @@ export interface ReferenceDocumentSection {
|
|
|
11
11
|
export interface ReferenceDocumentProvider {
|
|
12
12
|
/** Flat rows for this width, or null while the document is not available yet. */
|
|
13
13
|
readonly rows?: (width: number) => readonly string[] | null;
|
|
14
|
+
/** Rows between the screen title and structured groups, absent for group-only documents. */
|
|
15
|
+
readonly preamble?: (width: number) => readonly string[] | null;
|
|
14
16
|
/** Structured groups opt into shared Settings-style headers and pinning. */
|
|
15
17
|
readonly sections?: (width: number) => readonly ReferenceDocumentSection[] | null;
|
|
16
18
|
/** Settles once the selected content provider answers; absent when available at once. */
|
|
@@ -222,10 +222,16 @@ export class ReferenceScreenApp {
|
|
|
222
222
|
if (cached !== null && cached.width === width)
|
|
223
223
|
return this.#withTitle(cached.content, title);
|
|
224
224
|
const sections = this.#document.sections?.(width);
|
|
225
|
-
|
|
225
|
+
const preamble = sections === undefined ? undefined : this.#document.preamble?.(width);
|
|
226
|
+
if (sections === null || preamble === null)
|
|
226
227
|
return { kind: "flat", rows: [title, "", LOADING_NOTICE] };
|
|
227
228
|
if (sections !== undefined) {
|
|
228
229
|
const rows = [];
|
|
230
|
+
if (preamble !== undefined && preamble.length > 0) {
|
|
231
|
+
for (const row of preamble)
|
|
232
|
+
rows.push({ kind: "note", group: "", text: row });
|
|
233
|
+
rows.push({ kind: "spacer" });
|
|
234
|
+
}
|
|
229
235
|
sections.forEach((section, sectionIndex) => {
|
|
230
236
|
if (sectionIndex > 0)
|
|
231
237
|
rows.push({ kind: "spacer" });
|
|
@@ -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"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Generated by scripts/pi/sync-progress-palette.ts from @earendil-works/pi-coding-agent 1.0.
|
|
3
|
-
* (MIT), commit
|
|
2
|
+
* Generated by scripts/pi/sync-progress-palette.ts from @earendil-works/pi-coding-agent 1.0.4
|
|
3
|
+
* (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df. Do not edit directly.
|
|
4
4
|
*/
|
|
5
5
|
export declare const SHARED_PROGRESS_ACCENT_ANSI = "\u001B[38;2;167;152;215m";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Generated by scripts/pi/sync-progress-palette.ts from @earendil-works/pi-coding-agent 1.0.
|
|
3
|
-
* (MIT), commit
|
|
2
|
+
* Generated by scripts/pi/sync-progress-palette.ts from @earendil-works/pi-coding-agent 1.0.4
|
|
3
|
+
* (MIT), commit 7c10bd4337495ee613f2224843ecdf349b80d1df. Do not edit directly.
|
|
4
4
|
*/
|
|
5
5
|
export const SHARED_PROGRESS_ACCENT_ANSI = "\u001b[38;2;167;152;215m";
|
|
@@ -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": "
|
|
13
|
+
"sha256": "2adac500d8cebd5f7805c18a549ec0c6b23f13bd10ee5f3f463a6758f489e410"
|
|
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": "
|
|
22
|
+
"identity": "b010b97970c6c40fe160224121793bf0b26d7c77e7860d8e787aaeb912333100"
|
|
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,
|
|
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";
|