@timurproko/a1 0.2.7-dev.779 → 0.2.7-dev.788
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/dist/app/session-shell/session-shell-root.js +4 -3
- package/dist/app/session-shell/session-shell.js +5 -1
- package/dist/app/session-shell/shell-host.d.ts +0 -2
- package/dist/app/session-shell/shell-host.js +3 -20
- package/dist/cli/tabs.js +15 -0
- package/dist/composition/owned-ui.d.ts +0 -1
- package/dist/composition/owned-ui.js +39 -30
- package/dist/contracts/owned-ui/session-workflows.d.ts +4 -1
- package/dist/features/resident-tab/auto-name.d.ts +2 -2
- package/dist/features/resident-tab/auto-name.js +7 -5
- package/dist/features/resident-tab/index.d.ts +1 -1
- package/dist/features/resident-tab/index.js +1 -1
- 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/resources/builtin-themes.d.ts +2 -2
- package/dist/integrations/pi/components/resources/builtin-themes.js +2 -2
- package/dist/integrations/pi/components/share-operation-dialog.d.ts +2 -0
- package/dist/integrations/pi/components/share-operation-dialog.js +2 -1
- package/dist/integrations/pi/components/shell-selectors-dialogs.js +1 -0
- package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +1 -1
- 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.js +1 -1
- package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +1 -1
- package/dist/integrations/pi/components/upstream/components/tree-selector.js +3 -11
- 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/program-status-reporter.d.ts +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/pi-settings-metadata.json +12 -0
- package/dist/integrations/pi/engine/resources/changelog.json +4 -4
- package/dist/integrations/pi/engine/settings-bridge.js +2 -0
- package/dist/integrations/pi/engine/settings-port.js +10 -1
- package/dist/integrations/pi/engine/workflow-runner.js +64 -2
- package/dist/integrations/pi/engine/workflow-support.d.ts +12 -0
- package/dist/integrations/pi/engine/workflow-support.js +36 -0
- package/dist/integrations/pi/engine/workflows.d.ts +3 -1
- package/dist/integrations/pi/engine/workflows.js +1 -0
- package/dist/integrations/pi/startup-public.js +38 -35
- package/dist/integrations/pi/startup-public.manifest.json +110 -116
- 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/a1_session_lock.node +0 -0
- package/dist/native/darwin-arm64/manifest.json +1 -1
- package/dist/native/darwin-arm64/terminal-host +0 -0
- package/dist/native/darwin-arm64/terminal-host.manifest.json +5 -5
- package/dist/native/darwin-x64/a1_session_lock.node +0 -0
- package/dist/native/darwin-x64/manifest.json +1 -1
- package/dist/native/darwin-x64/terminal-host +0 -0
- package/dist/native/darwin-x64/terminal-host.manifest.json +5 -5
- package/dist/native/linux-x64/a1_session_lock.node +0 -0
- package/dist/native/linux-x64/manifest.json +1 -1
- package/dist/native/linux-x64/terminal-host +0 -0
- package/dist/native/linux-x64/terminal-host.manifest.json +5 -5
- package/dist/native/win32-x64/a1_session_lock.node +0 -0
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/native/win32-x64/process-guardian.exe +0 -0
- package/dist/native/win32-x64/terminal-host.exe +0 -0
- package/dist/native/win32-x64/terminal-host.manifest.json +4 -4
- package/dist/runtime-payload-inventory.json +4242 -3716
- package/docs/architecture/toolchain.md +1 -1
- package/docs/ci-release-runbook.md +2 -2
- package/docs/openspec-archive-automation.md +5 -5
- package/docs/validation.md +9 -1
- package/package.json +3 -3
|
@@ -960,9 +960,10 @@ export class OwnedUiSessionShellRoot {
|
|
|
960
960
|
return;
|
|
961
961
|
}
|
|
962
962
|
// Rationale: the pinned engine links both share URLs; the workflow result carries the plain URLs.
|
|
963
|
-
const message = result.command
|
|
964
|
-
? `${linkShareUrl(result.message)}\nGist: ${piShellHyperlink(result.detail)}`
|
|
965
|
-
|
|
963
|
+
const message = result.command !== "share" ? result.message
|
|
964
|
+
: result.detail ? `${linkShareUrl(result.message)}\nGist: ${piShellHyperlink(result.detail)}`
|
|
965
|
+
// Protocol: Radius shares carry only the artifact URL.
|
|
966
|
+
: linkShareUrl(result.message);
|
|
966
967
|
this.appendWorkflowStatus(message);
|
|
967
968
|
}
|
|
968
969
|
toggleThinkingVisibility() {
|
|
@@ -1391,7 +1391,11 @@ export class OwnedUiSessionPresenter {
|
|
|
1391
1391
|
}
|
|
1392
1392
|
let result;
|
|
1393
1393
|
try {
|
|
1394
|
-
result = await this.backend.workflows.executeWorkflow(shareSurface === undefined ? request : {
|
|
1394
|
+
result = await this.backend.workflows.executeWorkflow(shareSurface === undefined ? request : {
|
|
1395
|
+
...request,
|
|
1396
|
+
signal: shareSurface.signal,
|
|
1397
|
+
onProgress: message => { shareSurface.setMessage?.(message); this.#terminal.requestRender(); },
|
|
1398
|
+
});
|
|
1395
1399
|
}
|
|
1396
1400
|
finally {
|
|
1397
1401
|
if (operationSurface) {
|
|
@@ -98,8 +98,6 @@ export declare class OwnedUiTerminalHost implements OwnedUiTerminalHostContract<
|
|
|
98
98
|
active(): OwnedUiHostedPresenter | null;
|
|
99
99
|
requestRender(from: OwnedUiHostedPresenter, force?: boolean): void;
|
|
100
100
|
start(): void;
|
|
101
|
-
/** Hidden resident tabs retain engine/status work but stop producing terminal animation frames. */
|
|
102
|
-
setPresentationVisible(visible: boolean): void;
|
|
103
101
|
/** Closes one presenter. Closing the last one ends the terminal. */
|
|
104
102
|
close(presenter: OwnedUiHostedPresenter): Promise<void>;
|
|
105
103
|
dispose(): Promise<void>;
|
|
@@ -42,8 +42,6 @@ export class OwnedUiTerminalHost {
|
|
|
42
42
|
#focused = false;
|
|
43
43
|
#pointerReporting = false;
|
|
44
44
|
#started = false;
|
|
45
|
-
#presentationVisible = true;
|
|
46
|
-
#releaseVisibilityHold;
|
|
47
45
|
#ending;
|
|
48
46
|
constructor(options) {
|
|
49
47
|
this.#customViewport = options.layout === "custom-viewport";
|
|
@@ -148,8 +146,10 @@ export class OwnedUiTerminalHost {
|
|
|
148
146
|
active() {
|
|
149
147
|
return this.#active;
|
|
150
148
|
}
|
|
149
|
+
// Invariant: resident tab visibility never gates rendering here; a hidden tab keeps painting into its
|
|
150
|
+
// resident terminal, and the native holder alone withholds inactive surfaces from attach clients.
|
|
151
151
|
requestRender(from, force = false) {
|
|
152
|
-
if (
|
|
152
|
+
if (from === this.#active)
|
|
153
153
|
this.runtime.requestRender(force);
|
|
154
154
|
}
|
|
155
155
|
start() {
|
|
@@ -157,26 +157,9 @@ export class OwnedUiTerminalHost {
|
|
|
157
157
|
return;
|
|
158
158
|
this.#started = true;
|
|
159
159
|
this.runtime.start();
|
|
160
|
-
if (!this.#presentationVisible)
|
|
161
|
-
this.#releaseVisibilityHold = this.runtime.beginPresentationHold();
|
|
162
160
|
if (this.#customViewport)
|
|
163
161
|
this.#setPointerReporting(true);
|
|
164
162
|
}
|
|
165
|
-
/** Hidden resident tabs retain engine/status work but stop producing terminal animation frames. */
|
|
166
|
-
setPresentationVisible(visible) {
|
|
167
|
-
if (this.#presentationVisible === visible)
|
|
168
|
-
return;
|
|
169
|
-
this.#presentationVisible = visible;
|
|
170
|
-
if (!this.#started || this.#ending !== undefined)
|
|
171
|
-
return;
|
|
172
|
-
if (visible) {
|
|
173
|
-
this.#releaseVisibilityHold?.();
|
|
174
|
-
this.#releaseVisibilityHold = undefined;
|
|
175
|
-
}
|
|
176
|
-
else if (this.#releaseVisibilityHold === undefined) {
|
|
177
|
-
this.#releaseVisibilityHold = this.runtime.beginPresentationHold();
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
163
|
/** Closes one presenter. Closing the last one ends the terminal. */
|
|
181
164
|
close(presenter) {
|
|
182
165
|
if (this.#ending !== undefined || !this.#presenters.has(presenter))
|
package/dist/cli/tabs.js
CHANGED
|
@@ -132,9 +132,24 @@ function status(result) {
|
|
|
132
132
|
`detachment: ${String(result.detachmentMode ?? "unknown")}${result.detachmentVerified === false ? " (not verified)" : ""}`,
|
|
133
133
|
`tabs: ${String(result.tabs ?? 0)}${Object.keys(byStatus).length > 0 ? ` (${Object.entries(byStatus).map(([key, value]) => `${key} ${String(value)}`).join(", ")})` : ""}`,
|
|
134
134
|
`clients: ${String(result.clients ?? 0)}`,
|
|
135
|
+
...startsAndLifecycle(result),
|
|
135
136
|
`limits: ${Object.entries(limits).map(([key, value]) => `${key} ${String(value)}`).join(", ")}`,
|
|
136
137
|
`counters: ${Object.entries(counters).map(([key, value]) => `${key} ${String(value)}`).join(", ")}`,
|
|
137
138
|
...(Array.isArray(result.logs) ? result.logs.map(path => `log: ${String(path)}`) : []),
|
|
138
139
|
];
|
|
139
140
|
return `${lines.join("\n")}\n`;
|
|
140
141
|
}
|
|
142
|
+
/** Lifecycle work running this long means a terminal's tab requests are stuck. */
|
|
143
|
+
const LIFECYCLE_STALL_MS = 10_000;
|
|
144
|
+
function startsAndLifecycle(result) {
|
|
145
|
+
const lines = [];
|
|
146
|
+
const starts = result.starts;
|
|
147
|
+
if (starts)
|
|
148
|
+
lines.push(`starts: active ${String(starts.active ?? 0)}, waiting ${String(starts.interactiveWaiting ?? 0)}, recovering ${String(starts.recoverySlots ?? 0)}`);
|
|
149
|
+
const lifecycle = result.lifecycle;
|
|
150
|
+
if (lifecycle) {
|
|
151
|
+
const oldest = typeof lifecycle.oldestMs === "number" ? lifecycle.oldestMs : 0;
|
|
152
|
+
lines.push(`lifecycle: pending ${String(lifecycle.pending ?? 0)}, oldest ${oldest}ms${oldest > LIFECYCLE_STALL_MS ? " (stalled)" : ""}`);
|
|
153
|
+
}
|
|
154
|
+
return lines;
|
|
155
|
+
}
|
|
@@ -87,5 +87,4 @@ export declare function composeOwnedUiApplication(options?: OwnedUiCompositionOp
|
|
|
87
87
|
export declare function composeOwnedUi(options?: OwnedUiCompositionOptions): Promise<OwnedUiComposition>;
|
|
88
88
|
export declare function bindResidentTabBridge(tabBridge: TabBridgeClient, backend: Pick<ComposedSessionBackend, "identity" | "session" | "workflows" | "generateResidentTabName">, recovery?: Pick<ResidentTabRecovery, "settled"> | null, options?: {
|
|
89
89
|
readonly autoName?: boolean;
|
|
90
|
-
readonly onVisibility?: (visible: boolean) => void;
|
|
91
90
|
}): Promise<() => void>;
|
|
@@ -164,13 +164,8 @@ export async function composeOwnedUi(options = {}) {
|
|
|
164
164
|
const recoveredTabInput = await tabRecovery?.initialize(currentBackendSessionFile(backend), backend.identity.sessionId);
|
|
165
165
|
if (tabBridge !== null && settings !== null && ownedSurfaces)
|
|
166
166
|
tabBridge.accent(settings.value("accentColor"));
|
|
167
|
-
let residentTabVisible = true;
|
|
168
|
-
let applyResidentTabVisibility = () => { };
|
|
169
167
|
let removeControllerBoundaryInput = () => { };
|
|
170
|
-
const unsubscribeTabBridge = tabBridge === null ? () => { } : await bindResidentTabBridge(tabBridge, backend, tabRecovery, {
|
|
171
|
-
autoName: settings?.value("tabsAutoName") ?? true,
|
|
172
|
-
onVisibility: visible => { residentTabVisible = visible; applyResidentTabVisibility(); },
|
|
173
|
-
});
|
|
168
|
+
const unsubscribeTabBridge = tabBridge === null ? () => { } : await bindResidentTabBridge(tabBridge, backend, tabRecovery, { autoName: settings?.value("tabsAutoName") ?? true });
|
|
174
169
|
let releaseNotes = null;
|
|
175
170
|
let releaseNotesFailure;
|
|
176
171
|
if (ownedSurfaces) {
|
|
@@ -322,7 +317,6 @@ export async function composeOwnedUi(options = {}) {
|
|
|
322
317
|
// the host and paints once attached.
|
|
323
318
|
terminalHost = createdTerminalHost = new OwnedUiTerminalHost(sessionTerminalHostOptions(presenterOptions));
|
|
324
319
|
if (tabBridge !== null) {
|
|
325
|
-
applyResidentTabVisibility = () => terminalHost.setPresentationVisible(residentTabVisible);
|
|
326
320
|
removeControllerBoundaryInput = terminalHost.runtime.addPreInputListener(data => ({
|
|
327
321
|
data: tabBridge.consumeControllerBoundaryInput(data),
|
|
328
322
|
}));
|
|
@@ -375,7 +369,6 @@ export async function composeOwnedUi(options = {}) {
|
|
|
375
369
|
exitNotice = import("../app/session-shell/exit-notice.js")
|
|
376
370
|
.then(module => module.armExitNotice(backend, exitNoticePath), () => null);
|
|
377
371
|
presenter.start();
|
|
378
|
-
applyResidentTabVisibility();
|
|
379
372
|
void announceNewerRelease().catch(() => undefined);
|
|
380
373
|
},
|
|
381
374
|
flush: () => backend.session.flushEvents(),
|
|
@@ -420,14 +413,38 @@ export async function bindResidentTabBridge(tabBridge, backend, recovery = null,
|
|
|
420
413
|
tabBridge.status("starting");
|
|
421
414
|
const currentSessionFile = () => currentBackendSessionFile(backend);
|
|
422
415
|
let pendingAutoName = null;
|
|
416
|
+
const isDefaultName = (name) => name == null || /^agent(?: \d+)?$/i.test(name);
|
|
417
|
+
const currentSessionName = () => backend.session.view().status.footer?.sessionName ?? null;
|
|
423
418
|
const announceSession = () => {
|
|
424
|
-
const name =
|
|
425
|
-
const nameSource = name === pendingAutoName ? "auto" :
|
|
419
|
+
const name = currentSessionName();
|
|
420
|
+
const nameSource = name === pendingAutoName ? "auto" : isDefaultName(name) ? "default" : "user";
|
|
426
421
|
tabBridge.session(currentSessionFile(), name, nameSource);
|
|
427
422
|
};
|
|
428
423
|
let working = false;
|
|
429
424
|
let lastTurnFailed = false;
|
|
430
425
|
let autoNameAttempted = false;
|
|
426
|
+
let autoNameArmed = false;
|
|
427
|
+
// Invariant: naming launches once per tab during an agent run, as soon as its prompt is projected,
|
|
428
|
+
// and runs beside the turn instead of waiting for it to settle.
|
|
429
|
+
const launchAutoName = () => {
|
|
430
|
+
if (!autoNameArmed || autoNameAttempted || options.autoName !== true || !isDefaultName(currentSessionName()))
|
|
431
|
+
return;
|
|
432
|
+
const prompt = backend.session.view().transcript.find(block => block.kind === "user")?.text.trim();
|
|
433
|
+
if (!prompt)
|
|
434
|
+
return;
|
|
435
|
+
autoNameAttempted = true;
|
|
436
|
+
void import("../features/resident-tab/index.js").then(({ generateAutoName }) => generateAutoName(prompt, request => backend.generateResidentTabName(request.prompt, request.maxTokens, request.signal))).then(async (name) => {
|
|
437
|
+
// Invariant: a manual rename made while generation was pending owns both the session and the tab.
|
|
438
|
+
if (!isDefaultName(currentSessionName()))
|
|
439
|
+
return;
|
|
440
|
+
pendingAutoName = name;
|
|
441
|
+
const result = await backend.workflows.executeWorkflow({ command: "name", argument: name });
|
|
442
|
+
if (result.outcome === "completed")
|
|
443
|
+
tabBridge.session(currentSessionFile(), name, "auto");
|
|
444
|
+
else if (pendingAutoName === name)
|
|
445
|
+
pendingAutoName = null;
|
|
446
|
+
}).catch(() => { pendingAutoName = null; });
|
|
447
|
+
};
|
|
431
448
|
const reportStatus = (lifecycle) => {
|
|
432
449
|
const view = backend.session.view();
|
|
433
450
|
const pendingRequests = view.dialog == null ? 0 : 1;
|
|
@@ -441,10 +458,9 @@ export async function bindResidentTabBridge(tabBridge, backend, recovery = null,
|
|
|
441
458
|
};
|
|
442
459
|
announceSession();
|
|
443
460
|
const unsubscribeCommands = typeof tabBridge.onCommand === "function" ? tabBridge.onCommand(command => {
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
else if (command.type === "rename") {
|
|
461
|
+
// Invariant: visibility stays decoded for generation-1 peers but never pauses rendering; a hidden tab
|
|
462
|
+
// keeps its resident terminal current while the holder withholds only its client surfaces.
|
|
463
|
+
if (command.type === "rename") {
|
|
448
464
|
void backend.workflows.executeWorkflow({ command: "name", argument: command.name }).catch(() => { });
|
|
449
465
|
}
|
|
450
466
|
else if (command.type === "stop") {
|
|
@@ -461,24 +477,17 @@ export async function bindResidentTabBridge(tabBridge, backend, recovery = null,
|
|
|
461
477
|
if (wasWorking && !working && recovery !== null) {
|
|
462
478
|
void recovery.settled(currentSessionFile()).catch(() => tabBridge.degraded(true));
|
|
463
479
|
}
|
|
464
|
-
if (wasWorking && !working && options.autoName === true && !autoNameAttempted) {
|
|
465
|
-
autoNameAttempted = true;
|
|
466
|
-
const view = backend.session.view();
|
|
467
|
-
const currentName = view.status.footer?.sessionName;
|
|
468
|
-
const prompt = view.transcript.find(block => block.kind === "user")?.text.trim();
|
|
469
|
-
if (prompt && (currentName == null || /^agent(?: \d+)?$/i.test(currentName))) {
|
|
470
|
-
void import("../features/resident-tab/index.js").then(({ generateAutoName }) => generateAutoName(prompt, request => backend.generateResidentTabName(request.prompt, request.maxTokens, request.signal))).then(async (name) => {
|
|
471
|
-
pendingAutoName = name;
|
|
472
|
-
const result = await backend.workflows.executeWorkflow({ command: "name", argument: name });
|
|
473
|
-
if (result.outcome === "completed")
|
|
474
|
-
tabBridge.session(currentSessionFile(), name, "auto");
|
|
475
|
-
else if (pendingAutoName === name)
|
|
476
|
-
pendingAutoName = null;
|
|
477
|
-
}).catch(() => { pendingAutoName = null; });
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
480
|
}
|
|
481
|
+
if (event.type === "agent-run-started") {
|
|
482
|
+
autoNameArmed = true;
|
|
483
|
+
launchAutoName();
|
|
484
|
+
}
|
|
485
|
+
// Rationale: Pi starts the run before it projects the user message, so the prompt may arrive later.
|
|
486
|
+
if (event.type === "transcript-block" || event.type === "session-view")
|
|
487
|
+
launchAutoName();
|
|
481
488
|
if (event.type === "agent-run-settled") {
|
|
489
|
+
launchAutoName();
|
|
490
|
+
autoNameArmed = false;
|
|
482
491
|
lastTurnFailed = !event.successful && !event.aborted;
|
|
483
492
|
tabBridge.prompt(event.aborted);
|
|
484
493
|
reportStatus();
|
|
@@ -49,6 +49,8 @@ export interface OwnedUiWorkflowRequest {
|
|
|
49
49
|
readonly cwdOverride?: string;
|
|
50
50
|
/** Cancellation for an owned operation surface such as `/share`. */
|
|
51
51
|
readonly signal?: AbortSignal;
|
|
52
|
+
/** Progress label for that operation surface, e.g. when `/share` picks its upload destination. */
|
|
53
|
+
readonly onProgress?: (message: string) => void;
|
|
52
54
|
readonly treeSummary?: {
|
|
53
55
|
readonly summarize: boolean;
|
|
54
56
|
readonly customInstructions?: string;
|
|
@@ -272,6 +274,7 @@ export interface OwnedUiSessionSettingsSnapshot {
|
|
|
272
274
|
readonly autocompleteMaxVisible: number;
|
|
273
275
|
readonly quietStartup: boolean | "header";
|
|
274
276
|
readonly defaultProjectTrust: "ask" | "always" | "never";
|
|
277
|
+
readonly sessionShareDestination: "auto" | "gist" | "radius";
|
|
275
278
|
readonly clearOnShrink: boolean;
|
|
276
279
|
readonly showTerminalProgress: boolean;
|
|
277
280
|
readonly tuiMode: "regular" | "fullscreen";
|
|
@@ -289,7 +292,7 @@ export type OwnedUiJsonValue = null | boolean | number | string | readonly Owned
|
|
|
289
292
|
/** The layer that installs a setting's live effect. */
|
|
290
293
|
export type OwnedUiSettingOwner = "agent" | "shell" | "terminal" | "startup" | "shutdown" | "installation";
|
|
291
294
|
/** Engine settings whose live effect an owner may bind. */
|
|
292
|
-
export type OwnedUiSessionSettingKey = "autoCompact" | "showImages" | "imageWidthCells" | "autoResizeImages" | "blockImages" | "enableSkillCommands" | "steeringMode" | "followUpMode" | "transport" | "httpIdleTimeoutMs" | "cacheWarmingMode" | "modelThinkingLevels" | "theme" | "hideThinkingBlock" | "mermaidRenderingMode" | "showCacheMissNotices" | "collapseChangelog" | "enableInstallTelemetry" | "quietStartup" | "defaultProjectTrust" | "doubleEscapeAction" | "treeFilterMode" | "showHardwareCursor" | "editorPaddingX" | "outputPad" | "autocompleteMaxVisible" | "clearOnShrink" | "showTerminalProgress" | "tuiMode" | "fullscreenExitOutput" | "fullscreenScrollbar" | "fullscreenCopyOnSelect" | "fullscreenWheelScrollLines" | "warnings";
|
|
295
|
+
export type OwnedUiSessionSettingKey = "autoCompact" | "showImages" | "imageWidthCells" | "autoResizeImages" | "blockImages" | "enableSkillCommands" | "steeringMode" | "followUpMode" | "transport" | "httpIdleTimeoutMs" | "cacheWarmingMode" | "modelThinkingLevels" | "theme" | "hideThinkingBlock" | "mermaidRenderingMode" | "showCacheMissNotices" | "collapseChangelog" | "enableInstallTelemetry" | "quietStartup" | "defaultProjectTrust" | "sessionShareDestination" | "doubleEscapeAction" | "treeFilterMode" | "showHardwareCursor" | "editorPaddingX" | "outputPad" | "autocompleteMaxVisible" | "clearOnShrink" | "showTerminalProgress" | "tuiMode" | "fullscreenExitOutput" | "fullscreenScrollbar" | "fullscreenCopyOnSelect" | "fullscreenWheelScrollLines" | "warnings";
|
|
293
296
|
export interface OwnedUiSettingEffectHandler {
|
|
294
297
|
/** Install one value in the active owner. Handlers must be idempotent and reversible. */
|
|
295
298
|
apply(value: OwnedUiJsonValue): void | Promise<void>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const AUTO_NAME_MAX_LENGTH = 16;
|
|
2
|
-
export declare const AUTO_NAME_TIMEOUT_MS =
|
|
3
|
-
export declare const
|
|
2
|
+
export declare const AUTO_NAME_TIMEOUT_MS = 30000;
|
|
3
|
+
export declare const AUTO_NAME_TOKEN_BUDGETS: readonly [4096, 32768];
|
|
4
4
|
export declare function normalizeAutoName(value: string): string | null;
|
|
5
5
|
export declare function fallbackAutoName(prompt: string): string;
|
|
6
6
|
export interface AutoNameCompletion {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export const AUTO_NAME_MAX_LENGTH = 16;
|
|
2
|
-
export const AUTO_NAME_TIMEOUT_MS =
|
|
3
|
-
|
|
2
|
+
export const AUTO_NAME_TIMEOUT_MS = 30_000;
|
|
3
|
+
// Rationale: reasoning models can spend a small ceiling on hidden thinking and emit no title, so an
|
|
4
|
+
// answerless attempt retries with a larger bound; budgets stay strictly increasing, as in v2.
|
|
5
|
+
export const AUTO_NAME_TOKEN_BUDGETS = [4_096, 32_768];
|
|
4
6
|
export function normalizeAutoName(value) {
|
|
5
7
|
const normalized = value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").replace(/-+/g, "-");
|
|
6
8
|
if (!normalized)
|
|
@@ -17,14 +19,14 @@ export function fallbackAutoName(prompt) {
|
|
|
17
19
|
return normalizeAutoName(words.slice(0, 3).join("-")) ?? "new-task";
|
|
18
20
|
}
|
|
19
21
|
export async function generateAutoName(firstPrompt, complete, timeoutMs = AUTO_NAME_TIMEOUT_MS) {
|
|
20
|
-
for (
|
|
22
|
+
for (const maxTokens of AUTO_NAME_TOKEN_BUDGETS) {
|
|
21
23
|
const controller = new AbortController();
|
|
22
24
|
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
23
25
|
timer.unref?.();
|
|
24
26
|
try {
|
|
25
27
|
const response = await complete({
|
|
26
28
|
prompt: `Name this coding task with a lowercase hyphenated title of at most ${AUTO_NAME_MAX_LENGTH} characters. Reply only with the title.\n\n${firstPrompt.slice(0, 500)}`,
|
|
27
|
-
maxTokens
|
|
29
|
+
maxTokens,
|
|
28
30
|
signal: controller.signal,
|
|
29
31
|
});
|
|
30
32
|
const name = response === null ? null : normalizeAutoName(response);
|
|
@@ -32,7 +34,7 @@ export async function generateAutoName(firstPrompt, complete, timeoutMs = AUTO_N
|
|
|
32
34
|
return name;
|
|
33
35
|
}
|
|
34
36
|
catch {
|
|
35
|
-
// Rationale: naming is best effort;
|
|
37
|
+
// Rationale: naming is best effort; the larger bounded attempt precedes the deterministic fallback.
|
|
36
38
|
}
|
|
37
39
|
finally {
|
|
38
40
|
clearTimeout(timer);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { AUTO_NAME_MAX_LENGTH,
|
|
1
|
+
export { AUTO_NAME_MAX_LENGTH, AUTO_NAME_TIMEOUT_MS, AUTO_NAME_TOKEN_BUDGETS, fallbackAutoName, generateAutoName, normalizeAutoName, type AutoNameCompletion, } from "./auto-name.js";
|
|
2
2
|
export { RESIDENT_TAB_SHORTCUTS, residentTabShortcutRegistry, type ResidentTabAction, type ResidentTabShortcut, } from "./shortcuts.js";
|
|
3
3
|
export { deriveResidentTabStatus, type ResidentTabDerivedStatus, type ResidentTabFacts, } from "./status-deriver.js";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { AUTO_NAME_MAX_LENGTH,
|
|
1
|
+
export { AUTO_NAME_MAX_LENGTH, AUTO_NAME_TIMEOUT_MS, AUTO_NAME_TOKEN_BUDGETS, fallbackAutoName, generateAutoName, normalizeAutoName, } from "./auto-name.js";
|
|
2
2
|
export { RESIDENT_TAB_SHORTCUTS, residentTabShortcutRegistry, } from "./shortcuts.js";
|
|
3
3
|
export { deriveResidentTabStatus, } from "./status-deriver.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Generated by scripts/pi/sync-progress-palette.ts from @earendil-works/pi-coding-agent 1.
|
|
3
|
-
* (MIT), commit
|
|
2
|
+
* Generated by scripts/pi/sync-progress-palette.ts from @earendil-works/pi-coding-agent 1.3.0
|
|
3
|
+
* (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0. 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.
|
|
3
|
-
* (MIT), commit
|
|
2
|
+
* Generated by scripts/pi/sync-progress-palette.ts from @earendil-works/pi-coding-agent 1.3.0
|
|
3
|
+
* (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0. 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": "bca69314139a5503ccfc0678ffc86f3b7160f57a6ca55c86239b6587d3f627a3"
|
|
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": "163053e701440c93391663404f0d4ae96c74f66773fa0ca99f98c39b68a5d37b"
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
export function loadDeclaredStartupGraph() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Attributed owned theme resources adapted from @earendil-works/pi-coding-agent 1.
|
|
3
|
-
* commit
|
|
2
|
+
* Attributed owned theme resources adapted from @earendil-works/pi-coding-agent 1.3.0 (MIT),
|
|
3
|
+
* commit 71023aec1546d6d677a65669c5665c0927ce0dd0.
|
|
4
4
|
* Upstream dark.json SHA-256: e1f96982f8cb7d2a48eca7db03c9cb282cb1e14a243680cd855638ecd6a251b6
|
|
5
5
|
* Upstream light.json SHA-256: 2dee6a4be7f765e7fd7728166b7ebf8c29e4ce313f8ec6b38ae50699e3abc2f3
|
|
6
6
|
* Modifications: removed upstream schema/export metadata; runtime color data is unchanged.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Attributed owned theme resources adapted from @earendil-works/pi-coding-agent 1.
|
|
3
|
-
* commit
|
|
2
|
+
* Attributed owned theme resources adapted from @earendil-works/pi-coding-agent 1.3.0 (MIT),
|
|
3
|
+
* commit 71023aec1546d6d677a65669c5665c0927ce0dd0.
|
|
4
4
|
* Upstream dark.json SHA-256: e1f96982f8cb7d2a48eca7db03c9cb282cb1e14a243680cd855638ecd6a251b6
|
|
5
5
|
* Upstream light.json SHA-256: 2dee6a4be7f765e7fd7728166b7ebf8c29e4ce313f8ec6b38ae50699e3abc2f3
|
|
6
6
|
* Modifications: removed upstream schema/export metadata; runtime color data is unchanged.
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { type PiShellComponentPort, type PiShellEditorOptions } from "./shell-shared-facade.js";
|
|
2
2
|
export interface PiShellOperationLoaderPort extends PiShellComponentPort {
|
|
3
3
|
readonly signal: AbortSignal;
|
|
4
|
+
/** Relabels the running operation; the pinned comparison loader keeps its first label. */
|
|
5
|
+
readonly setMessage?: (message: string) => void;
|
|
4
6
|
}
|
|
5
7
|
export declare function createPiShellShareOperationDialog(runtime: Pick<PiShellEditorOptions, "getColumns" | "getRows" | "requestRender">, message: string): PiShellOperationLoaderPort;
|
|
6
8
|
export declare function createPiShellOperationLoader(runtime: Pick<PiShellEditorOptions, "getColumns" | "getRows" | "requestRender">, message: string): PiShellOperationLoaderPort;
|
|
@@ -18,6 +18,7 @@ class ShareOperationDialog {
|
|
|
18
18
|
], new DynamicBorder(paintPiBorder));
|
|
19
19
|
}
|
|
20
20
|
get signal() { return this.#loader.signal; }
|
|
21
|
+
setMessage(message) { this.#loader.setMessage(message); }
|
|
21
22
|
invalidate() { this.#frame.invalidate(); }
|
|
22
23
|
render(width) { return this.#frame.render(width); }
|
|
23
24
|
handleInput(data) { this.#loader.handleInput(data); }
|
|
@@ -26,7 +27,7 @@ class ShareOperationDialog {
|
|
|
26
27
|
export function createPiShellShareOperationDialog(runtime, message) {
|
|
27
28
|
ensureTheme();
|
|
28
29
|
const dialog = new ShareOperationDialog(runtime, message);
|
|
29
|
-
return { ...componentPort(dialog), signal: dialog.signal };
|
|
30
|
+
return { ...componentPort(dialog), signal: dialog.signal, setMessage: message => dialog.setMessage(message) };
|
|
30
31
|
}
|
|
31
32
|
export function createPiShellOperationLoader(runtime, message) {
|
|
32
33
|
ensureTheme();
|
|
@@ -66,6 +66,7 @@ export function createPiShellSettingsSelector(options) {
|
|
|
66
66
|
onAutocompleteMaxVisibleChange: change("onAutocompleteMaxVisibleChange"),
|
|
67
67
|
onQuietStartupChange: change("onQuietStartupChange"),
|
|
68
68
|
onDefaultProjectTrustChange: change("onDefaultProjectTrustChange"),
|
|
69
|
+
onSessionShareDestinationChange: change("onSessionShareDestinationChange"),
|
|
69
70
|
onClearOnShrinkChange: change("onClearOnShrinkChange"),
|
|
70
71
|
onShowTerminalProgressChange: change("onShowTerminalProgressChange"),
|
|
71
72
|
onTuiModeChange: change("onTuiModeChange"),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
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.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
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.
|
|
3
|
+
"sourceVersion": "1.3.0",
|
|
4
4
|
"upstreamRepository": "https://github.com/earendil-works/pi.git",
|
|
5
|
-
"upstreamCommit": "
|
|
5
|
+
"upstreamCommit": "71023aec1546d6d677a65669c5665c0927ce0dd0",
|
|
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.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
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.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts.
|
|
4
4
|
* Modifications: Mechanical pinned source port with private imports remapped to public package-root
|
|
5
5
|
* types/APIs and A1-owned theme boundaries. The unchanged image is loaded lazily from its attributed,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/extension-editor.ts.
|
|
4
4
|
* Modifications: Mechanical port: remap pi-tui to the root public singleton, use owned
|
|
5
5
|
* keybindings/theme and external-editor seams, preserve editor layout, hints, focus, submission,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/extension-editor.ts.
|
|
4
4
|
* Modifications: Mechanical port: remap pi-tui to the root public singleton, use owned
|
|
5
5
|
* keybindings/theme and external-editor seams, preserve editor layout, hints, focus, submission,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/extension-input.ts.
|
|
4
4
|
* Modifications: Mechanical port: remap public imports, use ECMAScript private fields, and route the
|
|
5
5
|
* bare-A1 instruction row and chrome through the shared semantic shortcut and compact padded
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/extension-selector.ts.
|
|
4
4
|
* Modifications: Mechanical port: remap public imports, use ECMAScript private fields, and route the
|
|
5
5
|
* bare-A1 instruction row and chrome through the shared semantic shortcut and compact padded
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/mermaid.ts.
|
|
4
4
|
* Modifications: Mechanical pinned source port with private imports remapped to public package-root
|
|
5
5
|
* types/APIs and A1-owned theme boundaries; behavior remains acceptance-tested.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/custom-editor.ts.
|
|
4
4
|
* Modifications: A1-owned class name and synchronized A1 keybinding contract replace the nominal
|
|
5
5
|
* private upstream keybinding constructor dependency; bare A1 injects the shared Settings/agent input
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/custom-editor.ts.
|
|
4
4
|
* Modifications: A1-owned class name and synchronized A1 keybinding contract replace the nominal
|
|
5
5
|
* private upstream keybinding constructor dependency; bare A1 injects the shared Settings/agent input
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/pi-logo.ts.
|
|
4
4
|
* Modifications: Remapped the private theme import to A1's public-backed adapter and composed the
|
|
5
5
|
* fixed-color logo into the owned startup header.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/scoped-models-selector.ts.
|
|
4
4
|
* Modifications: Source-synchronized scoped-model selector port: preserve session-only toggles,
|
|
5
5
|
* search, bulk/provider/reorder actions, dirty state, Ctrl+S persistence, refresh status,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/footer.ts.
|
|
4
4
|
* Modifications: Consumes neutral owned-UI view data instead of a fabricated concrete AgentSession;
|
|
5
5
|
* preserves the latest physical route for virtual models; an explicit bare-A1 profile colors the
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/session-selector-search.ts.
|
|
4
4
|
* Modifications: Source-synchronized session search port with only the public SessionInfo type import
|
|
5
5
|
* remapped.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/session-selector.ts.
|
|
4
4
|
* Modifications: Source-synchronized session selector port: preserve threaded/current/all scope,
|
|
5
5
|
* search, sort, named/path filters, rename, delete confirmation, active-session protection,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/skill-invocation-message.ts.
|
|
4
4
|
* Modifications: Mechanical port uses A1's public pi-tui instance, owned theme boundary, and
|
|
5
5
|
* root-instance keybinding registry because the public coding-agent component closes over a second
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/skill-invocation-message.ts.
|
|
4
4
|
* Modifications: Mechanical port uses A1's public pi-tui instance, owned theme boundary, and
|
|
5
5
|
* root-instance keybinding registry because the public coding-agent component closes over a second
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/status-indicator.ts.
|
|
4
4
|
* Modifications: Mechanical source port with public package-root keybinding, Loader, and owned
|
|
5
5
|
* theme/countdown imports plus ECMAScript private fields.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.3.0 (MIT), commit 71023aec1546d6d677a65669c5665c0927ce0dd0,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/status-indicator.ts.
|
|
4
4
|
* Modifications: Mechanical source port with public package-root keybinding, Loader, and owned
|
|
5
5
|
* theme/countdown imports plus ECMAScript private fields.
|