@timurproko/a1 0.2.7-dev.1275 → 0.2.7-dev.1285
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 +5 -1
- package/dist/app/session-shell/apps-dialog.d.ts +1 -1
- package/dist/app/session-shell/apps-dialog.js +2 -1
- package/dist/app/session-shell/dialog-coordinator.d.ts +4 -5
- package/dist/app/session-shell/dialog-coordinator.js +41 -12
- package/dist/app/session-shell/input-route.d.ts +23 -0
- package/dist/app/session-shell/input-route.js +59 -0
- package/dist/app/session-shell/session-selectors.d.ts +3 -3
- package/dist/app/session-shell/session-selectors.js +7 -2
- package/dist/app/session-shell/session-shell-root.d.ts +4 -68
- package/dist/app/session-shell/session-shell-root.js +6 -2
- package/dist/app/session-shell/session-shell.js +9 -13
- package/dist/app/session-shell/shell-host.js +2 -2
- package/dist/app/session-shell/shell-options.d.ts +65 -0
- package/dist/app/session-shell/shell-options.js +1 -0
- package/dist/app/session-shell/viewport-pointer.js +5 -1
- package/dist/app/session-shell/workflow-router.d.ts +4 -2
- package/dist/app/session-shell/workflow-router.js +12 -0
- package/dist/cli/dispatch.js +27 -1
- package/dist/cli/packages.js +18 -2
- package/dist/cli/session-context.js +6 -2
- package/dist/composition/owned-ui.js +20 -8
- package/dist/composition/session-naming.js +1 -1
- package/dist/composition/session-runtime-registry.d.ts +2 -0
- package/dist/composition/session-runtime-registry.js +49 -9
- package/dist/composition/settings-route-host.js +1 -0
- package/dist/contracts/agent-engine/package-ports.d.ts +10 -14
- package/dist/contracts/agent-engine/package-ports.js +5 -9
- package/dist/contracts/owned-ui/session-workflows.d.ts +6 -0
- package/dist/contracts/owned-ui/shell-components.d.ts +10 -0
- package/dist/contracts/presentation/component.d.ts +7 -0
- package/dist/contracts/presentation/index.d.ts +3 -0
- package/dist/contracts/presentation/index.js +4 -0
- package/dist/contracts/presentation/progress-palette.generated.d.ts +25 -1
- package/dist/contracts/presentation/progress-palette.generated.js +2 -135
- package/dist/contracts/presentation/progress-spinner.d.ts +7 -0
- package/dist/contracts/presentation/progress-spinner.js +1 -0
- package/dist/features/launch/session-context.d.ts +8 -0
- package/dist/features/launch/session-context.js +19 -10
- package/dist/features/owned-ui/project-trust-dialog.d.ts +1 -1
- package/dist/features/owned-ui/project-trust-dialog.js +5 -5
- package/dist/features/owned-ui/project-trust-prompt.js +2 -2
- package/dist/features/owned-ui/reference-screen-app.d.ts +2 -0
- package/dist/features/owned-ui/reference-screen-app.js +12 -5
- package/dist/features/owned-ui/session-fork-prompt.d.ts +2 -1
- package/dist/features/owned-ui/session-fork-prompt.js +11 -5
- package/dist/features/owned-ui/settings-app.d.ts +1 -1
- package/dist/features/owned-ui/settings-app.js +20 -13
- package/dist/features/owned-ui/settings-model-dialog.js +3 -3
- package/dist/features/owned-ui/settings-spinner-preview.d.ts +9 -0
- package/dist/features/owned-ui/settings-spinner-preview.js +29 -0
- package/dist/features/session-naming/context.d.ts +17 -0
- package/dist/features/session-naming/context.js +39 -0
- package/dist/features/session-naming/controller.d.ts +1 -5
- package/dist/features/session-naming/controller.js +7 -4
- package/dist/features/session-naming/generate.d.ts +2 -1
- package/dist/features/session-naming/generate.js +14 -10
- package/dist/features/session-naming/index.d.ts +1 -1
- package/dist/foundation/lifecycle/index.d.ts +3 -1
- package/dist/foundation/lifecycle/index.js +3 -1
- package/dist/foundation/lifecycle/session-claim-lock.d.ts +2 -2
- package/dist/foundation/lifecycle/session-claim-lock.js +36 -10
- package/dist/foundation/lifecycle/session-context-retry.d.ts +2 -0
- package/dist/foundation/lifecycle/session-context-retry.js +17 -0
- package/dist/foundation/lifecycle/session-repository-context.d.ts +7 -1
- package/dist/foundation/lifecycle/session-repository-context.js +105 -39
- package/dist/foundation/lifecycle/session-worktree-entry.d.ts +3 -0
- package/dist/foundation/lifecycle/session-worktree-entry.js +87 -0
- package/dist/foundation/release/automatic-update.js +2 -2
- package/dist/foundation/release/bootstrap.js +19 -3
- package/dist/foundation/release/release-gc.js +20 -5
- package/dist/foundation/release/release-state.d.ts +12 -3
- package/dist/foundation/release/release-state.js +55 -24
- package/dist/foundation/release/release-use.d.ts +10 -0
- package/dist/foundation/release/release-use.js +70 -0
- package/dist/foundation/release/update-activation.js +2 -2
- package/dist/foundation/release/update-recovery.js +2 -2
- package/dist/foundation/release/update.js +1 -1
- package/dist/foundation/release/warmup.js +8 -9
- package/dist/foundation/session-writer-lock/index.d.ts +2 -2
- package/dist/foundation/session-writer-lock/index.js +82 -12
- package/dist/foundation/startup/startup-descriptor.js +2 -2
- package/dist/foundation/terminal-cleanup/fatal-diagnostic.d.ts +2 -0
- package/dist/foundation/terminal-cleanup/fatal-diagnostic.js +59 -0
- package/dist/foundation/terminal-cleanup/fatal-exit.js +1 -29
- package/dist/integrations/pi/components/deferred-selector.d.ts +6 -0
- package/dist/integrations/pi/components/deferred-selector.js +40 -0
- package/dist/integrations/pi/components/login-dialog-loader.d.ts +3 -0
- package/dist/integrations/pi/components/login-dialog-loader.js +57 -0
- package/dist/integrations/pi/components/login-links.d.ts +6 -0
- package/dist/integrations/pi/components/login-links.js +31 -0
- package/dist/integrations/pi/components/login-text.d.ts +7 -0
- package/dist/integrations/pi/components/login-text.js +17 -0
- package/dist/integrations/pi/components/modal-frame.d.ts +5 -0
- package/dist/integrations/pi/components/modal-frame.js +30 -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 -1
- package/dist/integrations/pi/components/share-operation-dialog.js +13 -5
- package/dist/integrations/pi/components/shell-footer-status.d.ts +2 -1
- package/dist/integrations/pi/components/shell-footer-status.js +15 -8
- package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +11 -8
- package/dist/integrations/pi/components/shell-selectors-dialogs.js +36 -35
- package/dist/integrations/pi/components/shell-session-info-reference.d.ts +1 -1
- package/dist/integrations/pi/components/shell-session-info-reference.js +55 -49
- package/dist/integrations/pi/components/theme.d.ts +2 -0
- package/dist/integrations/pi/components/theme.js +4 -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/auth-url.d.ts +16 -0
- package/dist/integrations/pi/components/upstream/components/auth-url.js +49 -0
- 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.d.ts +1 -0
- package/dist/integrations/pi/components/upstream/components/extension-selector.js +22 -11
- package/dist/integrations/pi/components/upstream/components/login-dialog.d.ts +3 -0
- package/dist/integrations/pi/components/upstream/components/login-dialog.js +216 -0
- package/dist/integrations/pi/components/upstream/components/mermaid.js +1 -1
- package/dist/integrations/pi/components/upstream/components/oauth-selector.d.ts +19 -0
- package/dist/integrations/pi/components/upstream/components/oauth-selector.js +123 -0
- 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 +22 -13
- 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 +1 -1
- package/dist/integrations/pi/components/upstream/components/trust-selector.d.ts +2 -0
- package/dist/integrations/pi/components/upstream/components/trust-selector.js +30 -13
- 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.js +1 -1
- package/dist/integrations/pi/engine/adapter.d.ts +3 -1
- package/dist/integrations/pi/engine/adapter.js +24 -6
- package/dist/integrations/pi/engine/changelog.js +5 -2
- package/dist/integrations/pi/engine/delivery-retention.d.ts +7 -0
- package/dist/integrations/pi/engine/delivery-retention.js +66 -0
- package/dist/integrations/pi/engine/event-delivery.d.ts +17 -1
- package/dist/integrations/pi/engine/event-delivery.js +25 -3
- package/dist/integrations/pi/engine/extension-ui-binding.d.ts +2 -1
- package/dist/integrations/pi/engine/extension-ui-binding.js +45 -0
- package/dist/integrations/pi/engine/host-ports.d.ts +2 -0
- package/dist/integrations/pi/engine/host.d.ts +3 -0
- package/dist/integrations/pi/engine/host.js +2 -0
- package/dist/integrations/pi/engine/package-integration.js +19 -4
- package/dist/integrations/pi/engine/pending-delivery.d.ts +4 -1
- package/dist/integrations/pi/engine/pending-delivery.js +51 -18
- package/dist/integrations/pi/engine/resources/changelog.json +4 -4
- package/dist/integrations/pi/engine/runtime-integration.d.ts +8 -0
- package/dist/integrations/pi/engine/runtime-integration.js +58 -9
- package/dist/integrations/pi/engine/session-cwd-recovery.d.ts +11 -0
- package/dist/integrations/pi/engine/session-cwd-recovery.js +18 -0
- package/dist/integrations/pi/engine/session-runtime.d.ts +3 -0
- package/dist/integrations/pi/engine/session-runtime.js +2 -0
- package/dist/integrations/pi/engine/session-selection.d.ts +3 -2
- package/dist/integrations/pi/engine/session-selection.js +25 -5
- package/dist/integrations/pi/engine/transcript-image-assets.d.ts +3 -0
- package/dist/integrations/pi/engine/transcript-image-assets.js +65 -14
- package/dist/integrations/pi/engine/view-state.d.ts +14 -0
- package/dist/integrations/pi/engine/view-state.js +17 -0
- package/dist/integrations/pi/engine/workflow-runner.d.ts +2 -0
- package/dist/integrations/pi/engine/workflow-runner.js +47 -26
- package/dist/integrations/pi/engine/worktree-tools.d.ts +4 -0
- package/dist/integrations/pi/engine/worktree-tools.js +26 -0
- package/dist/integrations/pi/session-presenters/components.d.ts +2 -1
- package/dist/integrations/pi/session-presenters/components.js +12 -10
- package/dist/integrations/pi/session-presenters/presenters.d.ts +3 -1
- package/dist/integrations/pi/session-presenters/presenters.js +2 -2
- package/dist/integrations/pi/startup-public.d.ts +1 -1
- package/dist/integrations/pi/startup-public.js +16 -20
- package/dist/integrations/pi/startup-public.manifest.json +29 -29
- 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/product-identity.json +1 -1
- package/dist/runtime-payload-inventory.json +5027 -5027
- package/dist/ui/components/index.d.ts +1 -1
- package/dist/ui/components/index.js +1 -1
- package/dist/ui/components/list-block.d.ts +2 -2
- package/dist/ui/components/list-block.js +4 -3
- package/dist/ui/components/progress-status.d.ts +7 -0
- package/dist/ui/components/progress-status.js +21 -0
- package/dist/ui/components/value-menu.d.ts +1 -1
- package/dist/ui/components/value-menu.js +4 -2
- package/dist/ui/settings/declarations.d.ts +16 -4
- package/dist/ui/settings/declarations.js +13 -4
- package/dist/ui/settings/early-accent.d.ts +24 -0
- package/docs/architecture/internal-naming.md +1 -1
- package/docs/architecture/project-structure.md +7 -11
- package/docs/features/session-exports.md +1 -1
- package/docs/features/session-naming.md +8 -6
- package/docs/features/worktrees.md +38 -0
- package/docs/local-worktree-cleanup.md +27 -4
- package/docs/openspec-archive-automation.md +30 -4
- package/docs/worktree-link-recovery.md +2 -2
- package/package.json +5 -5
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
3
|
+
* packages/coding-agent/src/modes/interactive/components/login-dialog.ts.
|
|
4
|
+
* Modifications: Adapt all provider login states to shared live-themed framing: title, immediate muted
|
|
5
|
+
* description, blank row before accent-chevron input and one-cell inset. Preserve prompt, callback,
|
|
6
|
+
* device/copy, browser, cancellation and nested lifecycle contracts through neutral runtime ports;
|
|
7
|
+
* retain the public component for comparison.
|
|
8
|
+
* Deviations: shared-login-template.
|
|
9
|
+
*/
|
|
10
|
+
import { Container, getKeybindings, Input, Spacer } from "@earendil-works/pi-tui";
|
|
11
|
+
import { copyToClipboard, DynamicBorder } from "../../../startup-public.js";
|
|
12
|
+
import { addPiModalHeader, adoptPiModalFrame, renderPiModalSearchInput } from "../../modal-frame.js";
|
|
13
|
+
import { componentPort } from "../../shell-shared-facade.js";
|
|
14
|
+
import { DIALOG_CLOSE_SHORTCUT_HINT, internalDialogTitle, paintPiBorder, piTheme, renderPiModalShortcutHints } from "../../theme.js";
|
|
15
|
+
import { loginLink, loginWebUrl, openLoginBrowser } from "../../login-links.js";
|
|
16
|
+
import { loginPlainText, loginText } from "../../login-text.js";
|
|
17
|
+
import { AuthUrlComponent } from "./auth-url.js";
|
|
18
|
+
/** Provider-independent login state presentation with the pinned interaction/effect contract. */
|
|
19
|
+
class LoginDialog extends Container {
|
|
20
|
+
#input = new Input();
|
|
21
|
+
#content = new Container();
|
|
22
|
+
#runtime;
|
|
23
|
+
#complete;
|
|
24
|
+
#abort = new AbortController();
|
|
25
|
+
#pending;
|
|
26
|
+
#auth;
|
|
27
|
+
#device;
|
|
28
|
+
#deviceHint;
|
|
29
|
+
#focused = false;
|
|
30
|
+
#closed = false;
|
|
31
|
+
constructor(runtime, providerId, complete, providerName, title) {
|
|
32
|
+
super();
|
|
33
|
+
this.#runtime = runtime;
|
|
34
|
+
this.#complete = complete;
|
|
35
|
+
const heading = internalDialogTitle(title ?? `Login to ${providerName ?? providerId}`);
|
|
36
|
+
const header = addPiModalHeader(this, new DynamicBorder(paintPiBorder), loginText(heading, "accent", true));
|
|
37
|
+
this.addChild(this.#content);
|
|
38
|
+
this.addChild(new Spacer(1));
|
|
39
|
+
this.addChild({
|
|
40
|
+
render: width => loginText(() => renderPiModalShortcutHints([DIALOG_CLOSE_SHORTCUT_HINT])).render(width),
|
|
41
|
+
invalidate() { },
|
|
42
|
+
});
|
|
43
|
+
this.addChild(new DynamicBorder(paintPiBorder));
|
|
44
|
+
adoptPiModalFrame(this, { topIndex: 0, bottomIndex: this.children.length - 1, header });
|
|
45
|
+
this.#input.onSubmit = value => {
|
|
46
|
+
const pending = this.#pending;
|
|
47
|
+
if (pending === undefined || this.#closed)
|
|
48
|
+
return;
|
|
49
|
+
this.#pending = undefined;
|
|
50
|
+
this.#content.children = this.#content.children.map(child => child === this.#inputView
|
|
51
|
+
? { render: width => loginText(() => `${piTheme().fg("accent", ">")} ${piTheme().fg("text", loginPlainText(value))}`).render(width), invalidate() { } }
|
|
52
|
+
: child);
|
|
53
|
+
pending.resolve(value);
|
|
54
|
+
this.#runtime.requestRender();
|
|
55
|
+
};
|
|
56
|
+
this.#input.onEscape = () => this.#cancel();
|
|
57
|
+
}
|
|
58
|
+
#inputView = {
|
|
59
|
+
render: width => renderPiModalSearchInput(this.#input, width),
|
|
60
|
+
invalidate: () => this.#input.invalidate(),
|
|
61
|
+
};
|
|
62
|
+
get focused() { return this.#focused; }
|
|
63
|
+
set focused(value) { this.#focused = value; this.#input.focused = value; }
|
|
64
|
+
showAuth(url, instructions) {
|
|
65
|
+
if (this.#closed)
|
|
66
|
+
return;
|
|
67
|
+
this.#clearContent();
|
|
68
|
+
if (instructions)
|
|
69
|
+
this.#content.addChild(loginText(instructions));
|
|
70
|
+
else
|
|
71
|
+
this.#content.addChild(loginText("Continue in your browser"));
|
|
72
|
+
this.#content.addChild(new Spacer(1));
|
|
73
|
+
this.#auth = new AuthUrlComponent(url, () => { if (!this.#closed)
|
|
74
|
+
this.#runtime.requestRender(); });
|
|
75
|
+
this.#content.addChild(this.#auth);
|
|
76
|
+
openLoginBrowser(url);
|
|
77
|
+
this.#runtime.requestRender();
|
|
78
|
+
}
|
|
79
|
+
showDeviceCode(info) {
|
|
80
|
+
if (this.#closed)
|
|
81
|
+
return;
|
|
82
|
+
this.#clearContent();
|
|
83
|
+
this.#content.addChild(loginText("Continue in your browser"));
|
|
84
|
+
this.#content.addChild(new Spacer(1));
|
|
85
|
+
this.#content.addChild(loginText(() => loginLink(info.verificationUri), "accent"));
|
|
86
|
+
const click = process.platform === "darwin" ? "Cmd+click to open" : "Ctrl+click to open";
|
|
87
|
+
this.#content.addChild(loginText(() => loginLink(info.verificationUri, click), "dim"));
|
|
88
|
+
this.#content.addChild(new Spacer(1));
|
|
89
|
+
this.#content.addChild(loginText(`Enter code: ${info.userCode}`, "warning"));
|
|
90
|
+
const hint = new Container();
|
|
91
|
+
hint.addChild({ render: width => loginText(() => renderPiModalShortcutHints([{ key: getKeybindings().getKeys("tui.select.confirm").join("/"), action: "open browser and copy code" }])).render(width), invalidate() { } });
|
|
92
|
+
this.#content.addChild(hint);
|
|
93
|
+
this.#device = { info, hint };
|
|
94
|
+
this.#deviceHint = hint;
|
|
95
|
+
this.#runtime.requestRender();
|
|
96
|
+
}
|
|
97
|
+
showManualInput(message) { return this.showPrompt(message); }
|
|
98
|
+
showPrompt(message, placeholder) {
|
|
99
|
+
if (this.#closed)
|
|
100
|
+
return Promise.reject(new Error("Login cancelled"));
|
|
101
|
+
this.#clearDevice();
|
|
102
|
+
const context = [...this.#content.children];
|
|
103
|
+
// Invariant: the current description is directly under the title; retained auth context follows input.
|
|
104
|
+
this.#content.clear();
|
|
105
|
+
this.#content.addChild(loginText(message));
|
|
106
|
+
if (placeholder)
|
|
107
|
+
this.#content.addChild(loginText(`e.g., ${placeholder}`, "dim"));
|
|
108
|
+
this.#content.addChild(new Spacer(1));
|
|
109
|
+
this.#input.setValue("");
|
|
110
|
+
this.#content.addChild(this.#inputView);
|
|
111
|
+
if (context.length > 0) {
|
|
112
|
+
this.#content.addChild(new Spacer(1));
|
|
113
|
+
for (const child of context)
|
|
114
|
+
this.#content.addChild(child);
|
|
115
|
+
}
|
|
116
|
+
this.#runtime.requestRender();
|
|
117
|
+
return new Promise((resolve, reject) => { this.#pending = { resolve, reject }; });
|
|
118
|
+
}
|
|
119
|
+
showDetails(lines) {
|
|
120
|
+
if (this.#closed)
|
|
121
|
+
return;
|
|
122
|
+
this.#clearContent();
|
|
123
|
+
for (const line of lines)
|
|
124
|
+
this.#content.addChild(loginText(line));
|
|
125
|
+
this.#runtime.requestRender();
|
|
126
|
+
}
|
|
127
|
+
showInfo(message, links = []) {
|
|
128
|
+
if (this.#closed)
|
|
129
|
+
return;
|
|
130
|
+
this.#appendDescription(message);
|
|
131
|
+
for (const link of links)
|
|
132
|
+
this.#content.addChild(loginText(() => loginLink(link.url, link.label ? `${link.label}: ${loginWebUrl(link.url) ?? link.url}` : undefined), "accent"));
|
|
133
|
+
this.#runtime.requestRender();
|
|
134
|
+
}
|
|
135
|
+
showWaiting(message) { if (!this.#closed) {
|
|
136
|
+
this.#appendDescription(message);
|
|
137
|
+
this.#runtime.requestRender();
|
|
138
|
+
} }
|
|
139
|
+
showProgress(message) { if (!this.#closed) {
|
|
140
|
+
this.#content.addChild(loginText(message));
|
|
141
|
+
this.#runtime.requestRender();
|
|
142
|
+
} }
|
|
143
|
+
handleInput(data) {
|
|
144
|
+
if (this.#closed)
|
|
145
|
+
return;
|
|
146
|
+
const keys = getKeybindings();
|
|
147
|
+
if (keys.matches(data, "tui.select.cancel")) {
|
|
148
|
+
this.#cancel();
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (this.#auth !== undefined && keys.matches(data, "app.message.copy")) {
|
|
152
|
+
void this.#auth.copy();
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (this.#device !== undefined && this.#pending === undefined && this.#focused && keys.matches(data, "tui.select.confirm")) {
|
|
156
|
+
const { info, hint } = this.#device;
|
|
157
|
+
this.#device = undefined;
|
|
158
|
+
hint.clear();
|
|
159
|
+
hint.addChild(loginText("Copying code...", "dim"));
|
|
160
|
+
openLoginBrowser(info.verificationUri);
|
|
161
|
+
void copyToClipboard(info.userCode).then(() => this.#deviceStatus(hint, "Code copied to clipboard"), () => this.#deviceStatus(hint, "Copy code manually"));
|
|
162
|
+
this.#runtime.requestRender();
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
this.#input.handleInput(data);
|
|
166
|
+
}
|
|
167
|
+
dispose() {
|
|
168
|
+
if (this.#closed)
|
|
169
|
+
return;
|
|
170
|
+
this.#closed = true;
|
|
171
|
+
this.#abort.abort();
|
|
172
|
+
this.#auth?.dispose();
|
|
173
|
+
this.#pending?.reject(new Error("Login cancelled"));
|
|
174
|
+
this.#pending = undefined;
|
|
175
|
+
}
|
|
176
|
+
#cancel() { this.dispose(); this.#complete(false, "Login cancelled"); }
|
|
177
|
+
#appendDescription(message) {
|
|
178
|
+
if (this.#content.children.length > 0)
|
|
179
|
+
this.#content.addChild(new Spacer(1));
|
|
180
|
+
this.#content.addChild(loginText(message));
|
|
181
|
+
}
|
|
182
|
+
#clearDevice() {
|
|
183
|
+
if (this.#deviceHint !== undefined)
|
|
184
|
+
this.#content.removeChild(this.#deviceHint);
|
|
185
|
+
this.#deviceHint = undefined;
|
|
186
|
+
this.#device = undefined;
|
|
187
|
+
}
|
|
188
|
+
#clearContent() {
|
|
189
|
+
this.#clearDevice();
|
|
190
|
+
this.#auth?.dispose();
|
|
191
|
+
this.#auth = undefined;
|
|
192
|
+
this.#content.clear();
|
|
193
|
+
}
|
|
194
|
+
#deviceStatus(hint, message) {
|
|
195
|
+
if (this.#closed || !this.#focused || !this.#content.children.includes(hint))
|
|
196
|
+
return;
|
|
197
|
+
hint.clear();
|
|
198
|
+
hint.addChild(loginText(message, "dim"));
|
|
199
|
+
this.#runtime.requestRender();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/** One owned login port for every provider, keeping all state methods on the shared template. */
|
|
203
|
+
export function createThemedLoginDialog(runtime, providerId, complete, providerName, title) {
|
|
204
|
+
const dialog = new LoginDialog(runtime, providerId, complete, providerName, title);
|
|
205
|
+
return {
|
|
206
|
+
...componentPort(dialog),
|
|
207
|
+
showAuth: (url, instructions) => dialog.showAuth(url, instructions),
|
|
208
|
+
showDeviceCode: info => dialog.showDeviceCode(info),
|
|
209
|
+
showManualInput: message => dialog.showManualInput(message),
|
|
210
|
+
showPrompt: (message, placeholder) => dialog.showPrompt(message, placeholder),
|
|
211
|
+
showDetails: lines => dialog.showDetails(lines),
|
|
212
|
+
showInfo: (message, links) => dialog.showInfo(message, links),
|
|
213
|
+
showWaiting: message => dialog.showWaiting(message),
|
|
214
|
+
showProgress: message => dialog.showProgress(message),
|
|
215
|
+
};
|
|
216
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
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.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
3
|
+
* packages/coding-agent/src/modes/interactive/components/oauth-selector.ts.
|
|
4
|
+
* Modifications: Adapt the provider controller to injected neutral options, shared framing, live
|
|
5
|
+
* roles, Title Case and circular navigation. Configured status uses a muted dot, success-green
|
|
6
|
+
* configured text and trailing checkmark without method/source qualifiers. Omit decorative
|
|
7
|
+
* preferred-partner badges while retaining filtering, paging, actions and comparison presentation.
|
|
8
|
+
* Deviations: standard-sign-in-dialog-styling.
|
|
9
|
+
*/
|
|
10
|
+
import { Container } from "@earendil-works/pi-tui";
|
|
11
|
+
import type { OwnedUiShellAuthProviderOption as Provider } from "../../../../../contracts/owned-ui/index.js";
|
|
12
|
+
/** Owned provider controller with pinned content/status semantics and circular choice navigation. */
|
|
13
|
+
export declare class AuthProviderSelector extends Container {
|
|
14
|
+
#private;
|
|
15
|
+
constructor(mode: "login" | "logout", providers: readonly Provider[], select: (id: string) => void, cancel: () => void, query?: string);
|
|
16
|
+
get focused(): boolean;
|
|
17
|
+
set focused(value: boolean);
|
|
18
|
+
handleInput(data: string): void;
|
|
19
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
3
|
+
* packages/coding-agent/src/modes/interactive/components/oauth-selector.ts.
|
|
4
|
+
* Modifications: Adapt the provider controller to injected neutral options, shared framing, live
|
|
5
|
+
* roles, Title Case and circular navigation. Configured status uses a muted dot, success-green
|
|
6
|
+
* configured text and trailing checkmark without method/source qualifiers. Omit decorative
|
|
7
|
+
* preferred-partner badges while retaining filtering, paging, actions and comparison presentation.
|
|
8
|
+
* Deviations: standard-sign-in-dialog-styling.
|
|
9
|
+
*/
|
|
10
|
+
import { Container, fuzzyFilter, getKeybindings, getSelectPageIndex, Input, Spacer, Text, TruncatedText } from "@earendil-works/pi-tui";
|
|
11
|
+
import { wrapChoiceIndex } from "../../../../../contracts/presentation/index.js";
|
|
12
|
+
import { DynamicBorder } from "../../../startup-public.js";
|
|
13
|
+
import { addPiModalHeader, addPiModalSearchInput, adoptPiModalFrame } from "../../modal-frame.js";
|
|
14
|
+
import { DIALOG_CLOSE_SHORTCUT_HINT, paintPiBorder, piTheme, renderPiModalListRow, renderPiModalShortcutHints } from "../../theme.js";
|
|
15
|
+
const MAX_VISIBLE = 8;
|
|
16
|
+
/** Owned provider controller with pinned content/status semantics and circular choice navigation. */
|
|
17
|
+
export class AuthProviderSelector extends Container {
|
|
18
|
+
#search = new Input();
|
|
19
|
+
#list = new Container();
|
|
20
|
+
#providers;
|
|
21
|
+
#select;
|
|
22
|
+
#cancel;
|
|
23
|
+
#showTypes;
|
|
24
|
+
#mode;
|
|
25
|
+
#filtered;
|
|
26
|
+
#index = 0;
|
|
27
|
+
constructor(mode, providers, select, cancel, query = "") {
|
|
28
|
+
super();
|
|
29
|
+
this.#providers = providers;
|
|
30
|
+
this.#filtered = providers;
|
|
31
|
+
this.#select = select;
|
|
32
|
+
this.#cancel = cancel;
|
|
33
|
+
this.#mode = mode;
|
|
34
|
+
this.#showTypes = new Set(providers.map(provider => provider.authType)).size > 1;
|
|
35
|
+
this.#search.setValue(query);
|
|
36
|
+
this.#search.onSubmit = () => this.#selectCurrent();
|
|
37
|
+
const title = mode === "login" ? "Select Provider to Configure" : "Select Provider to Log Out";
|
|
38
|
+
const header = addPiModalHeader(this, new DynamicBorder(paintPiBorder), {
|
|
39
|
+
render: width => new TruncatedText(piTheme().fg("accent", piTheme().bold(title)), 0, 0).render(width),
|
|
40
|
+
invalidate: () => { },
|
|
41
|
+
});
|
|
42
|
+
this.addChild(new Spacer(1));
|
|
43
|
+
addPiModalSearchInput(this, this.#search);
|
|
44
|
+
this.addChild(new Spacer(1));
|
|
45
|
+
this.addChild(this.#list);
|
|
46
|
+
this.addChild(new Spacer(1));
|
|
47
|
+
this.addChild(new Text(renderPiModalShortcutHints([
|
|
48
|
+
{ key: "↑↓", action: "navigate" },
|
|
49
|
+
{ key: getKeybindings().getKeys("tui.select.confirm").join("/"), action: "select" },
|
|
50
|
+
DIALOG_CLOSE_SHORTCUT_HINT,
|
|
51
|
+
]), 0, 0));
|
|
52
|
+
this.addChild(new DynamicBorder(paintPiBorder));
|
|
53
|
+
adoptPiModalFrame(this, { topIndex: 0, bottomIndex: this.children.length - 1, header });
|
|
54
|
+
this.#filter();
|
|
55
|
+
}
|
|
56
|
+
get focused() { return this.#search.focused; }
|
|
57
|
+
set focused(value) { this.#search.focused = value; }
|
|
58
|
+
handleInput(data) {
|
|
59
|
+
const keys = getKeybindings();
|
|
60
|
+
const page = getSelectPageIndex(keys, data, this.#index, this.#filtered.length, MAX_VISIBLE);
|
|
61
|
+
if (keys.matches(data, "tui.select.up") || keys.matches(data, "tui.select.down")) {
|
|
62
|
+
this.#index = wrapChoiceIndex(this.#index, keys.matches(data, "tui.select.down") ? 1 : -1, this.#filtered.length);
|
|
63
|
+
}
|
|
64
|
+
else if (page !== undefined)
|
|
65
|
+
this.#index = page;
|
|
66
|
+
else if (keys.matches(data, "tui.select.confirm")) {
|
|
67
|
+
this.#selectCurrent();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
else if (keys.matches(data, "tui.select.cancel")) {
|
|
71
|
+
this.#cancel();
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this.#search.handleInput(data);
|
|
76
|
+
this.#filter();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
this.#update();
|
|
80
|
+
}
|
|
81
|
+
#selectCurrent() {
|
|
82
|
+
const provider = this.#filtered[this.#index];
|
|
83
|
+
if (provider !== undefined)
|
|
84
|
+
this.#select(provider.id);
|
|
85
|
+
}
|
|
86
|
+
#filter() {
|
|
87
|
+
const query = this.#search.getValue();
|
|
88
|
+
this.#filtered = query ? fuzzyFilter([...this.#providers], query, provider => `${provider.label} ${provider.providerId} ${provider.authType} `) : this.#providers;
|
|
89
|
+
this.#index = Math.min(this.#index, Math.max(0, this.#filtered.length - 1));
|
|
90
|
+
this.#update();
|
|
91
|
+
}
|
|
92
|
+
#update() {
|
|
93
|
+
this.#list.clear();
|
|
94
|
+
const start = Math.max(0, Math.min(this.#index - Math.floor(MAX_VISIBLE / 2), this.#filtered.length - MAX_VISIBLE));
|
|
95
|
+
const end = Math.min(start + MAX_VISIBLE, this.#filtered.length);
|
|
96
|
+
for (let index = start; index < end; index++) {
|
|
97
|
+
const provider = this.#filtered[index];
|
|
98
|
+
const selected = index === this.#index;
|
|
99
|
+
this.#list.addChild({
|
|
100
|
+
render: width => {
|
|
101
|
+
const theme = piTheme();
|
|
102
|
+
const prefix = selected ? theme.fg("accent", "→ ") : " ";
|
|
103
|
+
const type = this.#showTypes ? theme.fg("muted", ` [${provider.authType === "api_key" ? "API key" : "subscription"}]`) : "";
|
|
104
|
+
return [renderPiModalListRow(`${prefix}${theme.fg("text", provider.label)}${type}${providerStatus(provider)}`, width, selected)];
|
|
105
|
+
},
|
|
106
|
+
invalidate: () => { },
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
if (start > 0 || end < this.#filtered.length)
|
|
110
|
+
this.#list.addChild(new TruncatedText(piTheme().fg("muted", ` (${this.#index + 1}/${this.#filtered.length})`), 0, 0));
|
|
111
|
+
if (this.#filtered.length === 0) {
|
|
112
|
+
const empty = this.#mode === "login" ? "No providers available" : "No providers logged in. Use /login first.";
|
|
113
|
+
this.#list.addChild(new TruncatedText(piTheme().fg("muted", ` ${this.#providers.length === 0 ? empty : "No matching providers"}`), 0, 0));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function providerStatus(provider) {
|
|
118
|
+
const theme = piTheme();
|
|
119
|
+
const separator = theme.fg("muted", " • ");
|
|
120
|
+
if (provider.status === undefined)
|
|
121
|
+
return separator + theme.fg("muted", "not configured");
|
|
122
|
+
return separator + theme.fg("success", "configured ✓");
|
|
123
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
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.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
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.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
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.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
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,22 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/footer.ts.
|
|
4
|
-
* Modifications:
|
|
5
|
-
*
|
|
4
|
+
* Modifications: A1 PR links, model/name priority over stats, level colors, secondary-accent name
|
|
5
|
+
* reveals, dim name/row clipping; Pi intact.
|
|
6
6
|
* Deviations: owned-status-level-color, owned-pull-request-badge, owned-footer-ellipsis,
|
|
7
7
|
* owned-footer-model-priority, owned-session-name-reveal.
|
|
8
8
|
*/
|
|
9
9
|
import { isAbsolute, relative, resolve, sep } from "node:path";
|
|
10
|
-
import { hyperlink, truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
|
|
10
|
+
import { hyperlink, stripTerminalSequences, truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
|
|
11
11
|
import { piTheme } from "../../theme.js";
|
|
12
12
|
import { sessionNameFrame } from "../../../../../ui/components/session-name-frame.js";
|
|
13
13
|
export class SessionFooter {
|
|
14
|
+
#reveal = null;
|
|
15
|
+
#nameBudget = Number.MAX_SAFE_INTEGER;
|
|
14
16
|
getView;
|
|
15
17
|
cwd;
|
|
16
18
|
profile;
|
|
17
19
|
show;
|
|
18
|
-
#reveal = null;
|
|
19
|
-
#nameBudget = Number.MAX_SAFE_INTEGER;
|
|
20
20
|
constructor(getView, cwd, profile = "pi", show = () => true) {
|
|
21
21
|
this.getView = getView;
|
|
22
22
|
this.cwd = cwd;
|
|
@@ -35,14 +35,17 @@ export class SessionFooter {
|
|
|
35
35
|
const theme = piTheme();
|
|
36
36
|
const secondary = rgb(theme.getFgAnsi("mdHeading"));
|
|
37
37
|
const settled = rgb(theme.getFgAnsi("dim"));
|
|
38
|
+
const clip = (text, columns) => stripTerminalSequences(truncateToWidth(text, columns, "…"));
|
|
38
39
|
if (!this.#reveal)
|
|
39
|
-
return { text: theme.fg("dim",
|
|
40
|
+
return { text: theme.fg("dim", clip(name, width)), done: true };
|
|
40
41
|
return sessionNameFrame({
|
|
41
42
|
...this.#reveal, to: name, width,
|
|
42
43
|
truecolor: theme.getColorMode() === "truecolor" && secondary !== null && settled !== null,
|
|
43
|
-
measure: visibleWidth, clip
|
|
44
|
+
measure: visibleWidth, clip,
|
|
44
45
|
dim: text => theme.fg("dim", text),
|
|
45
46
|
paint: (text, brightness, progress) => {
|
|
47
|
+
if (text === "…")
|
|
48
|
+
return theme.fg("dim", text);
|
|
46
49
|
const channels = secondary.map((value, index) => {
|
|
47
50
|
const bright = value + (235 - value) * brightness;
|
|
48
51
|
return Math.round(bright + (settled[index] - bright) * progress);
|
|
@@ -120,23 +123,29 @@ export class SessionFooter {
|
|
|
120
123
|
const route = ` → ${routed.model.modelId}${level}`;
|
|
121
124
|
rightWithoutProvider += this.profile === "a1" ? theme.fg("dim", route) : route;
|
|
122
125
|
}
|
|
126
|
+
const nameWidth = this.profile === "a1" ? visibleWidth(sessionName ?? "") : 0;
|
|
123
127
|
let right = rightWithoutProvider;
|
|
124
128
|
if ((view.status.footer?.availableProviderCount ?? 1) > 1 && view.activeModel) {
|
|
125
129
|
const provider = `(${view.activeModel.providerId}) `;
|
|
126
130
|
right = (this.profile === "a1" ? theme.fg("dim", provider) : provider) + rightWithoutProvider;
|
|
127
|
-
if (leftWidth + 2 + visibleWidth(right) > width)
|
|
131
|
+
if (Math.max(leftWidth, nameWidth) + 2 + visibleWidth(right) > width)
|
|
128
132
|
right = rightWithoutProvider;
|
|
129
133
|
}
|
|
130
|
-
if (this.profile === "a1" && leftWidth + 2 + visibleWidth(right) > width) {
|
|
131
|
-
right = [rightWithoutProvider, modelLevel].find(value => visibleWidth(value) + 2 <= width)
|
|
134
|
+
if (this.profile === "a1" && Math.max(leftWidth, nameWidth) + 2 + visibleWidth(right) > width) {
|
|
135
|
+
right = [rightWithoutProvider, modelLevel].find(value => visibleWidth(value) + 2 + nameWidth <= width)
|
|
136
|
+
?? [rightWithoutProvider, modelLevel].find(value => visibleWidth(value) + 2 <= width)
|
|
132
137
|
?? truncateToWidth(theme.fg("dim", modelName), width, dimEllipsis);
|
|
133
138
|
left = truncateToWidth(left, Math.max(0, width - visibleWidth(right) - 2), dimEllipsis);
|
|
134
139
|
leftWidth = visibleWidth(left);
|
|
135
140
|
}
|
|
136
141
|
const rightWidth = visibleWidth(right);
|
|
137
|
-
this.#nameBudget = Math.max(0, width -
|
|
142
|
+
this.#nameBudget = Math.max(0, width - rightWidth - 2);
|
|
138
143
|
if (this.profile === "a1" && sessionName && this.#nameBudget > 0) {
|
|
139
|
-
|
|
144
|
+
this.#nameBudget = Math.min(visibleWidth(sessionName), this.#nameBudget);
|
|
145
|
+
const statsBudget = this.#nameBudget < visibleWidth(sessionName) ? 0
|
|
146
|
+
: Math.max(0, width - rightWidth - 2 - this.#nameBudget - 3);
|
|
147
|
+
left = statsBudget >= 4 ? truncateToWidth(left, statsBudget, dimEllipsis) : "";
|
|
148
|
+
left = (left ? left + theme.fg("dim", " • ") : "") + this.#nameFrame(sessionName, this.#nameBudget).text;
|
|
140
149
|
leftWidth = visibleWidth(left);
|
|
141
150
|
}
|
|
142
151
|
let line;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
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.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
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.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
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.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
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.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
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.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
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.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/themed-text.ts.
|
|
4
4
|
* Modifications: Integrated invalidation-aware text into A1's owned startup header and notices;
|
|
5
5
|
* repository formatting only.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/themed-text.ts.
|
|
4
4
|
* Modifications: Integrated invalidation-aware text into A1's owned startup header and notices;
|
|
5
5
|
* repository formatting only.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/thinking-selector.ts.
|
|
4
4
|
* Modifications: Preserve the searchable thinking-level selector, current/default semantics,
|
|
5
5
|
* selection, and focus while accepting the active bare-A1 cycle-key label from the shell, styling the
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/thinking-selector.ts.
|
|
4
4
|
* Modifications: Preserve the searchable thinking-level selector, current/default semantics,
|
|
5
5
|
* selection, and focus while accepting the active bare-A1 cycle-key label from the shell, styling the
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/tool-execution.ts.
|
|
4
4
|
* Modifications: Retain pinned shell/public renderers. Own image conversion; replace private APIs with
|
|
5
5
|
* public/local equivalents. Use bare-A1 secondary-accent read ranges and concise collapse shortcut
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/tree-selector.ts.
|
|
4
4
|
* Modifications: Port remaps public types/components plus owned keybindings/theme helpers while
|
|
5
5
|
* preserving tree behavior; bare A1 uses compact modal chrome and label editing, four-mode
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provenance: @earendil-works/pi-coding-agent 1.5.
|
|
2
|
+
* Provenance: @earendil-works/pi-coding-agent 1.5.2 (MIT), commit b4afdddf44e059c67ccf5097e5317d913521b470,
|
|
3
3
|
* packages/coding-agent/src/modes/interactive/components/tree-selector.ts.
|
|
4
4
|
* Modifications: Port remaps public types/components plus owned keybindings/theme helpers while
|
|
5
5
|
* preserving tree behavior; bare A1 uses compact modal chrome and label editing, four-mode
|
|
@@ -17,9 +17,11 @@ export declare class TrustSelectorComponent extends Container {
|
|
|
17
17
|
private selectedIndex;
|
|
18
18
|
private readonly listContainer;
|
|
19
19
|
private readonly trustOptions;
|
|
20
|
+
private readonly standardStyle;
|
|
20
21
|
readonly handleInput: (data: string) => void;
|
|
21
22
|
constructor(options: {
|
|
22
23
|
readonly cwd: string;
|
|
24
|
+
readonly standardStyle?: boolean;
|
|
23
25
|
readonly savedDecision: TrustDecision | null;
|
|
24
26
|
readonly projectTrusted: boolean;
|
|
25
27
|
readonly trustOptions: readonly TrustOption[];
|