@timurproko/a1 0.2.7-dev.808 → 0.2.7-dev.809
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/dialog-coordinator.d.ts +42 -0
- package/dist/app/session-shell/dialog-coordinator.js +133 -0
- package/dist/app/session-shell/dock-chrome.d.ts +34 -0
- package/dist/app/session-shell/dock-chrome.js +109 -0
- package/dist/app/session-shell/exit-notice.d.ts +1 -1
- package/dist/app/session-shell/exit-notice.js +1 -1
- package/dist/app/session-shell/extension-surface.d.ts +30 -0
- package/dist/app/session-shell/extension-surface.js +105 -0
- package/dist/app/session-shell/input-surface-switch.d.ts +36 -0
- package/dist/app/session-shell/input-surface-switch.js +85 -0
- package/dist/app/session-shell/login-interaction.d.ts +27 -0
- package/dist/app/session-shell/login-interaction.js +91 -0
- package/dist/app/session-shell/prompt-submission.d.ts +48 -0
- package/dist/app/session-shell/prompt-submission.js +276 -0
- package/dist/app/session-shell/resident-tab-coordinator.d.ts +41 -0
- package/dist/app/session-shell/resident-tab-coordinator.js +120 -0
- package/dist/app/session-shell/session-concern.d.ts +22 -0
- package/dist/app/session-shell/session-concern.js +29 -0
- package/dist/app/session-shell/session-lifecycle.d.ts +29 -0
- package/dist/app/session-shell/session-lifecycle.js +49 -0
- package/dist/app/session-shell/session-shell-root.d.ts +1 -1
- package/dist/app/session-shell/session-shell-root.js +182 -931
- package/dist/app/session-shell/session-shell.d.ts +2 -8
- package/dist/app/session-shell/session-shell.js +202 -901
- package/dist/app/session-shell/settings-bindings.d.ts +17 -0
- package/dist/app/session-shell/settings-bindings.js +91 -0
- package/dist/app/session-shell/shell-editor-factory.d.ts +27 -0
- package/dist/app/session-shell/shell-editor-factory.js +102 -0
- package/dist/app/session-shell/shell-host.d.ts +6 -0
- package/dist/app/session-shell/shell-host.js +8 -0
- package/dist/app/session-shell/shell-layout.d.ts +64 -0
- package/dist/app/session-shell/shell-layout.js +18 -0
- package/dist/app/session-shell/suggestion-surface.d.ts +25 -0
- package/dist/app/session-shell/suggestion-surface.js +63 -0
- package/dist/app/session-shell/transcript-document.d.ts +78 -0
- package/dist/app/session-shell/transcript-document.js +365 -0
- package/dist/app/session-shell/viewport-layout.d.ts +31 -0
- package/dist/app/session-shell/viewport-layout.js +160 -0
- package/dist/app/session-shell/workflow-output.d.ts +33 -0
- package/dist/app/session-shell/workflow-output.js +174 -0
- package/dist/app/session-shell/workflow-router.d.ts +25 -0
- package/dist/app/session-shell/workflow-router.js +39 -0
- package/dist/composition/owned-ui.d.ts +4 -25
- package/dist/composition/owned-ui.js +26 -270
- package/dist/composition/resident-tab-bridge.d.ts +16 -0
- package/dist/composition/resident-tab-bridge.js +159 -0
- package/dist/composition/session-backend.d.ts +19 -0
- package/dist/composition/session-backend.js +1 -0
- package/dist/composition/session-runtime-registry.d.ts +20 -0
- package/dist/composition/session-runtime-registry.js +85 -0
- package/dist/composition/startup-route.d.ts +32 -0
- package/dist/composition/startup-route.js +72 -0
- package/dist/integrations/pi/engine/adapter.d.ts +4 -77
- package/dist/integrations/pi/engine/adapter.js +85 -393
- package/dist/integrations/pi/engine/command-dispatch.d.ts +13 -0
- package/dist/integrations/pi/engine/command-dispatch.js +57 -0
- package/dist/integrations/pi/engine/host.js +2 -2
- package/dist/integrations/pi/engine/ports.d.ts +56 -0
- package/dist/integrations/pi/engine/ports.js +89 -0
- package/dist/integrations/pi/engine/view-state.d.ts +42 -0
- package/dist/integrations/pi/engine/view-state.js +126 -0
- package/dist/native/darwin-arm64/manifest.json +1 -1
- package/dist/native/darwin-arm64/terminal-host.manifest.json +3 -3
- package/dist/native/darwin-arm64/terminal-host.node +0 -0
- package/dist/native/darwin-x64/manifest.json +1 -1
- package/dist/native/darwin-x64/terminal-host.manifest.json +3 -3
- package/dist/native/darwin-x64/terminal-host.node +0 -0
- package/dist/native/linux-x64/manifest.json +1 -1
- package/dist/native/linux-x64/terminal-host.manifest.json +3 -3
- package/dist/native/linux-x64/terminal-host.node +0 -0
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/native/win32-x64/process-guardian.node +0 -0
- package/dist/native/win32-x64/terminal-host.manifest.json +3 -3
- package/dist/native/win32-x64/terminal-host.node +0 -0
- package/docs/architecture/boundaries.md +14 -0
- package/docs/architecture/resident-tabs.md +6 -6
- package/package.json +1 -1
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
const SESSION_RUNTIME_REFRESH_MS = 30_000;
|
|
2
|
+
/**
|
|
3
|
+
* The live worktree claims this runtime's agents hold: each agent's session identity, the heartbeat
|
|
4
|
+
* that keeps the claims fresh, and their release when the runtime is disposed.
|
|
5
|
+
*/
|
|
6
|
+
export class SessionRuntimeRegistry {
|
|
7
|
+
#options;
|
|
8
|
+
// Invariant: one entry per agent of this runtime; each agent holds its own claim, and the runtime's exit releases all.
|
|
9
|
+
#identities = new Map();
|
|
10
|
+
#owner = null;
|
|
11
|
+
#timer = null;
|
|
12
|
+
#refresh = Promise.resolve();
|
|
13
|
+
#disposed = false;
|
|
14
|
+
constructor(options) {
|
|
15
|
+
this.#options = options;
|
|
16
|
+
}
|
|
17
|
+
/** The repository context reader for one agent; undefined names the primary agent. */
|
|
18
|
+
readerFor(agentId) {
|
|
19
|
+
return async (sessionId, sessionFile, signal) => {
|
|
20
|
+
const { runtimeId, inspectProcess } = this.#options;
|
|
21
|
+
const owner = await this.#ownerIdentity();
|
|
22
|
+
if (owner === null || runtimeId === undefined || inspectProcess === undefined)
|
|
23
|
+
return null;
|
|
24
|
+
const identity = { sessionId, sessionFile };
|
|
25
|
+
this.#identities.set(agentId, identity);
|
|
26
|
+
const { activateSessionRepositoryContext } = await import("../foundation/lifecycle/session-repository-context.js");
|
|
27
|
+
const context = await activateSessionRepositoryContext(identity, runtimeId, owner, {
|
|
28
|
+
signal,
|
|
29
|
+
inspectProcess,
|
|
30
|
+
...(agentId === undefined ? {} : { agentId }),
|
|
31
|
+
});
|
|
32
|
+
this.#arm();
|
|
33
|
+
return context;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/** Stops the heartbeat, waits for an in-flight refresh, and releases every claim this runtime holds. */
|
|
37
|
+
async dispose() {
|
|
38
|
+
this.#disposed = true;
|
|
39
|
+
if (this.#timer !== null)
|
|
40
|
+
clearInterval(this.#timer);
|
|
41
|
+
this.#timer = null;
|
|
42
|
+
await this.#refresh;
|
|
43
|
+
const { runtimeId } = this.#options;
|
|
44
|
+
const owner = await this.#ownerIdentity();
|
|
45
|
+
if (runtimeId === undefined || owner === null)
|
|
46
|
+
return;
|
|
47
|
+
await import("../foundation/lifecycle/session-repository-context.js")
|
|
48
|
+
.then(module => module.releaseSessionRepositoryRuntime(runtimeId, owner))
|
|
49
|
+
.catch(() => undefined);
|
|
50
|
+
}
|
|
51
|
+
async #ownerIdentity() {
|
|
52
|
+
const { runtimeId, inspectProcess } = this.#options;
|
|
53
|
+
if (runtimeId === undefined || inspectProcess === undefined)
|
|
54
|
+
return null;
|
|
55
|
+
this.#owner ??= inspectProcess(process.pid).catch(() => null);
|
|
56
|
+
return await this.#owner;
|
|
57
|
+
}
|
|
58
|
+
#arm() {
|
|
59
|
+
if (this.#timer !== null)
|
|
60
|
+
return;
|
|
61
|
+
this.#timer = setInterval(() => this.#queueRefresh(), this.#options.refreshMs ?? SESSION_RUNTIME_REFRESH_MS);
|
|
62
|
+
this.#timer.unref();
|
|
63
|
+
}
|
|
64
|
+
#queueRefresh() {
|
|
65
|
+
const { runtimeId, inspectProcess } = this.#options;
|
|
66
|
+
if (this.#disposed || this.#identities.size === 0 || runtimeId === undefined || inspectProcess === undefined)
|
|
67
|
+
return;
|
|
68
|
+
this.#refresh = this.#refresh.then(async () => {
|
|
69
|
+
if (this.#disposed)
|
|
70
|
+
return;
|
|
71
|
+
const owner = await this.#ownerIdentity();
|
|
72
|
+
if (owner === null)
|
|
73
|
+
return;
|
|
74
|
+
const { registerSessionRepositoryRuntime } = await import("../foundation/lifecycle/session-repository-context.js");
|
|
75
|
+
for (const [agentId, identity] of this.#identities) {
|
|
76
|
+
if (this.#disposed)
|
|
77
|
+
return;
|
|
78
|
+
await registerSessionRepositoryRuntime(identity, runtimeId, owner, {
|
|
79
|
+
inspectProcess,
|
|
80
|
+
...(agentId === undefined ? {} : { agentId }),
|
|
81
|
+
}).catch(() => undefined);
|
|
82
|
+
}
|
|
83
|
+
}).catch(() => undefined);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { OwnedUiShellEngineOptions } from "../app/session-shell/index.js";
|
|
2
|
+
import type { ReleaseNoteCatalog } from "../features/owned-ui/release-notes.js";
|
|
3
|
+
type StartupRoute = NonNullable<OwnedUiShellEngineOptions["startupRoute"]>;
|
|
4
|
+
export interface StartupReleaseNoteOptions {
|
|
5
|
+
readonly ownedSurfaces: boolean;
|
|
6
|
+
/** Deterministic catalog and version seams for composition tests. */
|
|
7
|
+
readonly releaseNotes?: ReleaseNoteCatalog;
|
|
8
|
+
readonly packageVersion?: string;
|
|
9
|
+
/** Without a profile there is nowhere to remember the note as seen, so it is never shown on startup. */
|
|
10
|
+
readonly profileId?: string;
|
|
11
|
+
readonly configDir: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function readPackageVersion(): Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* The release notes bare A1 ships and the one note this version shows once per profile on startup:
|
|
16
|
+
* the packaged catalog (or why it could not be read), the running version, and the claim that
|
|
17
|
+
* marks the note seen after its route closes.
|
|
18
|
+
*/
|
|
19
|
+
export declare class StartupReleaseNote {
|
|
20
|
+
#private;
|
|
21
|
+
readonly catalog: ReleaseNoteCatalog | null;
|
|
22
|
+
readonly failure: unknown;
|
|
23
|
+
readonly packageVersion: string | null;
|
|
24
|
+
static load(options: StartupReleaseNoteOptions): Promise<StartupReleaseNote>;
|
|
25
|
+
private constructor();
|
|
26
|
+
/** The changelog route to present after the first frame, or undefined when there is no unseen note to show. */
|
|
27
|
+
get startupRoute(): StartupRoute | undefined;
|
|
28
|
+
/** Waits for a pending acknowledgement; a failed one stays unseen and is never reported. */
|
|
29
|
+
settleAcknowledgement(): Promise<void>;
|
|
30
|
+
releaseClaim(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
export async function readPackageVersion() {
|
|
3
|
+
const manifest = JSON.parse(await readFile(new URL("../../package.json", import.meta.url), "utf8"));
|
|
4
|
+
const version = manifest?.version;
|
|
5
|
+
if (typeof version !== "string")
|
|
6
|
+
throw new Error("A1 package version is unavailable");
|
|
7
|
+
return version;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The release notes bare A1 ships and the one note this version shows once per profile on startup:
|
|
11
|
+
* the packaged catalog (or why it could not be read), the running version, and the claim that
|
|
12
|
+
* marks the note seen after its route closes.
|
|
13
|
+
*/
|
|
14
|
+
export class StartupReleaseNote {
|
|
15
|
+
catalog;
|
|
16
|
+
failure;
|
|
17
|
+
packageVersion;
|
|
18
|
+
#current;
|
|
19
|
+
#claim;
|
|
20
|
+
#acknowledgement = null;
|
|
21
|
+
static async load(options) {
|
|
22
|
+
let catalog = null;
|
|
23
|
+
let failure;
|
|
24
|
+
if (options.ownedSurfaces) {
|
|
25
|
+
try {
|
|
26
|
+
catalog = options.releaseNotes
|
|
27
|
+
?? await import("../features/owned-ui/release-notes.js").then(module => module.readPackagedReleaseNotes());
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
failure = error;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const packageVersion = options.ownedSurfaces ? options.packageVersion ?? await readPackageVersion() : null;
|
|
34
|
+
const current = packageVersion === null ? null : catalog?.current(packageVersion) ?? null;
|
|
35
|
+
const profileId = options.profileId;
|
|
36
|
+
const claim = current === null || profileId === undefined
|
|
37
|
+
? null
|
|
38
|
+
: await import("../features/owned-ui/release-note-state.js").then(module => module.claimReleaseNote({
|
|
39
|
+
configDir: options.configDir, profileId, version: current.version,
|
|
40
|
+
}));
|
|
41
|
+
return new StartupReleaseNote(catalog, failure, packageVersion, current, claim);
|
|
42
|
+
}
|
|
43
|
+
constructor(catalog, failure, packageVersion, current, claim) {
|
|
44
|
+
this.catalog = catalog;
|
|
45
|
+
this.failure = failure;
|
|
46
|
+
this.packageVersion = packageVersion;
|
|
47
|
+
this.#current = current;
|
|
48
|
+
this.#claim = claim;
|
|
49
|
+
}
|
|
50
|
+
/** The changelog route to present after the first frame, or undefined when there is no unseen note to show. */
|
|
51
|
+
get startupRoute() {
|
|
52
|
+
const current = this.#current;
|
|
53
|
+
const claim = this.#claim;
|
|
54
|
+
if (current === null || claim === null)
|
|
55
|
+
return undefined;
|
|
56
|
+
return {
|
|
57
|
+
route: "changelog",
|
|
58
|
+
input: { document: current.markdown },
|
|
59
|
+
onClosed: () => {
|
|
60
|
+
this.#acknowledgement ??= claim.acknowledge();
|
|
61
|
+
return this.#acknowledgement;
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/** Waits for a pending acknowledgement; a failed one stays unseen and is never reported. */
|
|
66
|
+
async settleAcknowledgement() {
|
|
67
|
+
await this.#acknowledgement?.catch(() => undefined);
|
|
68
|
+
}
|
|
69
|
+
async releaseClaim() {
|
|
70
|
+
await this.#claim?.release();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -1,38 +1,17 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import
|
|
3
|
-
import type { PiAuthenticationProviderOption, PiBashWorkflowResult, PiModelsContext, PiModelsRefreshResult, PiPinnedSettingsCallback, PiPinnedSettingsSnapshot, PiProjectTrustContext, PiProjectTrustUpdate, PiScopedModelsContext, PiScopedModelsRefreshResult, PiSessionResumeMetadata, PiSessionSelectorContext, PiTreeSelectorContext, PiWorkflowAutocompleteCommand, PiWorkflowHost, PiWorkflowInteractionHost, PiWorkflowOption, PiWorkflowRequest, PiWorkflowResult } from "./workflows.js";
|
|
1
|
+
import { type OwnedUiCommand, type OwnedUiExtensionPort, type OwnedUiPromptSuggestionGeneratorPort, type OwnedUiPromptSuggestionReasoning, type OwnedUiPromptSuggestionRequest, type OwnedUiPromptSuggestionResult, type OwnedUiEvent, type OwnedUiSessionBackend, type OwnedUiSessionCatalogPort, type OwnedUiSessionIdentityPort, type OwnedUiSessionPort, type OwnedUiSessionSettingsPort, type OwnedUiSessionViewModel, type OwnedUiSnapshot, type OwnedUiWorkflowPort } from "../../../contracts/owned-ui/index.js";
|
|
2
|
+
import type { PiPinnedSettingsSnapshot, PiWorkflowHost, PiWorkflowInteractionHost, PiWorkflowRequest, PiWorkflowResult } from "./workflows.js";
|
|
4
3
|
import type { PiSettingsBridge } from "./settings-bridge.js";
|
|
5
|
-
import type { PiSettingOwnerHandlers } from "./settings-bridge.js";
|
|
6
4
|
import type { PiProjectTrustPreflightPrompt } from "./project-trust-preflight.js";
|
|
7
5
|
import type { PiSessionForkPrompt, PiSessionSelection } from "./session-selection.js";
|
|
8
|
-
import type { AgentSettingOwner } from "../../../contracts/agent-engine/index.js";
|
|
9
6
|
import { type AdapterCommandResult } from "./command-dispatch.js";
|
|
10
|
-
import { type OwnedPiVisualExtensionSupport } from "./extension-ui-binding.js";
|
|
11
|
-
import { type OwnedPiExtensionResourceSummary, type OwnedPiResourceSummary } from "./resource-catalog.js";
|
|
12
7
|
import { type PiEnginePackageUpdateProbe, type PiEngineRuntimeFactory, type PiRepositoryContextReader } from "./session-runtime.js";
|
|
13
8
|
import { type PiEngineHostSessionPorts } from "./host-ports.js";
|
|
14
|
-
import {
|
|
9
|
+
import { type PiSessionPresentationSource } from "./ports.js";
|
|
15
10
|
export type { OwnedPiExtensionResourceSummary, OwnedPiExtensionSourceSummary, OwnedPiResourceSummary } from "./resource-catalog.js";
|
|
16
11
|
export type { PiEngineRuntimeFactory, PiEngineRuntimeFactoryInput } from "./session-runtime.js";
|
|
17
12
|
export type { AdapterCommandResult } from "./command-dispatch.js";
|
|
18
13
|
export type { OwnedPiVisualExtensionSupport } from "./extension-ui-binding.js";
|
|
19
|
-
|
|
20
|
-
* The Pi objects pinned selectors and transcript renderers are built from. They are not part of the
|
|
21
|
-
* session backend contract; only the session presenters owner reads them.
|
|
22
|
-
*/
|
|
23
|
-
export interface PiSessionPresentationSource {
|
|
24
|
-
pinnedModelSelectorContext(): ReturnType<PiWorkflowContexts["pinnedModelSelectorContext"]>;
|
|
25
|
-
pinnedSessionSelectorContext(): PiSessionSelectorContext;
|
|
26
|
-
pinnedTreeSelectorContext(): PiTreeSelectorContext;
|
|
27
|
-
pinnedMessageRenderer(customType: string): unknown;
|
|
28
|
-
pinnedToolRenderers(toolName: string): unknown;
|
|
29
|
-
pinnedShortcutDescriptions(bindings: Parameters<AgentSession["extensionRunner"]["getShortcuts"]>[0]): readonly {
|
|
30
|
-
readonly key: string;
|
|
31
|
-
readonly description: string;
|
|
32
|
-
}[];
|
|
33
|
-
pinnedSettingsModels(): Pick<PiPinnedSettingsSnapshot, "currentModel" | "availableDefaultModels">;
|
|
34
|
-
applyPinnedSettingValue(callback: PiPinnedSettingsCallback, value: unknown): Promise<PiWorkflowResult>;
|
|
35
|
-
}
|
|
14
|
+
export type { PiSessionPresentationSource } from "./ports.js";
|
|
36
15
|
/** Explicit flush failure when required delivery was interrupted rather than completed. */
|
|
37
16
|
export declare class EngineDeliveryError extends Error {
|
|
38
17
|
constructor();
|
|
@@ -80,22 +59,6 @@ export declare class PiEngineAdapter implements OwnedUiSessionBackend, OwnedUiPr
|
|
|
80
59
|
/** The Pi objects behind pinned selectors and renderers, for the session presenters owner only. */
|
|
81
60
|
presentationSource(): PiSessionPresentationSource;
|
|
82
61
|
setWorkflowInteractionHost(interaction: PiWorkflowInteractionHost): void;
|
|
83
|
-
get sessionId(): string;
|
|
84
|
-
get sessionGeneration(): number;
|
|
85
|
-
/** Actual session replacements, excluding delivery-only invalidation of callbacks. */
|
|
86
|
-
get sessionBindingGeneration(): number;
|
|
87
|
-
get cwd(): string;
|
|
88
|
-
get agentDir(): string;
|
|
89
|
-
resolveTranscriptImage(assetId: string): OwnedUiImageAttachment | null;
|
|
90
|
-
currentSessionFile(): string | null;
|
|
91
|
-
currentSessionResumeMetadata(): PiSessionResumeMetadata | null;
|
|
92
|
-
get disposed(): boolean;
|
|
93
|
-
/**
|
|
94
|
-
* Report a newer A1 release found by the startup check. The shell renders the diagnostic as
|
|
95
|
-
* pinned Pi's `Update Available` notice; it arrives whenever the check resolves, so a late
|
|
96
|
-
* result is appended to the transcript like Pi's own fire-and-forget version check.
|
|
97
|
-
*/
|
|
98
|
-
announceReleaseUpdate(release: OwnedUiReleaseUpdate): void;
|
|
99
62
|
suggestionReasoningPolicy(): OwnedUiPromptSuggestionReasoning;
|
|
100
63
|
generate(request: OwnedUiPromptSuggestionRequest): Promise<OwnedUiPromptSuggestionResult>;
|
|
101
64
|
generateResidentTabName(instruction: string, maxTokens: number, signal: AbortSignal): Promise<string | null>;
|
|
@@ -120,51 +83,15 @@ export declare class PiEngineAdapter implements OwnedUiSessionBackend, OwnedUiPr
|
|
|
120
83
|
peakBytes: number;
|
|
121
84
|
};
|
|
122
85
|
flushEvents(): Promise<void>;
|
|
123
|
-
nonVisualResources(): readonly OwnedPiResourceSummary[];
|
|
124
|
-
extensionResources(): readonly OwnedPiExtensionResourceSummary[];
|
|
125
|
-
workflowAutocompleteCommands(): readonly PiWorkflowAutocompleteCommand[];
|
|
126
|
-
visualExtensionSupport(): OwnedPiVisualExtensionSupport;
|
|
127
|
-
bindExtensionUi(ui: OwnedUiExtensionUiPort, shutdown?: () => void | Promise<void>): Promise<void>;
|
|
128
|
-
unbindExtensionUi(): Promise<void>;
|
|
129
|
-
cycleModelWorkflow(direction: "forward" | "backward"): Promise<PiWorkflowResult>;
|
|
130
|
-
pinnedProjectTrustContext(): PiProjectTrustContext;
|
|
131
|
-
persistProjectTrust(updates: readonly PiProjectTrustUpdate[]): void;
|
|
132
|
-
pinnedScopedModelsContext(): PiScopedModelsContext;
|
|
133
|
-
updateScopedModels(enabledModelIds: readonly string[] | null): void;
|
|
134
|
-
persistScopedModels(enabledModelIds: readonly string[] | null): void;
|
|
135
|
-
refreshScopedModels(signal: AbortSignal): Promise<PiScopedModelsRefreshResult>;
|
|
136
|
-
modelsContext(): PiModelsContext;
|
|
137
|
-
setSessionModelScope(scopeIds: readonly string[]): void;
|
|
138
|
-
persistModelScope(scopeIds: readonly string[]): void;
|
|
139
|
-
refreshModels(signal: AbortSignal): Promise<PiModelsRefreshResult>;
|
|
140
|
-
pinnedLoginOptions(authType?: "oauth" | "api_key"): readonly PiAuthenticationProviderOption[];
|
|
141
|
-
pinnedLoginMethodOptions(providerReference: string): {
|
|
142
|
-
readonly title: string;
|
|
143
|
-
readonly options: readonly PiWorkflowOption[];
|
|
144
|
-
};
|
|
145
|
-
pinnedAmbientAuthentication(selection: string): ReturnType<PiWorkflowContexts["pinnedAmbientAuthentication"]>;
|
|
146
|
-
pinnedLogoutOptions(): Promise<readonly PiAuthenticationProviderOption[]>;
|
|
147
|
-
pinnedForkOptions(): readonly PiWorkflowOption[];
|
|
148
|
-
/** Bind the owned UI's clipboard lifecycle without changing the comparison host. True means acknowledged delivery. */
|
|
149
|
-
bindClipboardWriter(writer: (text: string) => Promise<boolean>): () => void;
|
|
150
|
-
/** Workflow and tree copying share the active owner's write fence and delivery acknowledgment. */
|
|
151
|
-
copyWorkflowText(text: string): Promise<boolean>;
|
|
152
86
|
abortBashWorkflow(): void;
|
|
153
|
-
executeBashWorkflow(command: string, excludeFromContext: boolean): Promise<PiBashWorkflowResult>;
|
|
154
|
-
reloadBlockedResult(): PiWorkflowResult | null;
|
|
155
87
|
executeWorkflow(request: PiWorkflowRequest): Promise<PiWorkflowResult>;
|
|
156
88
|
/**
|
|
157
89
|
* The theme the engine is configured with, in the engine's own grammar: a
|
|
158
90
|
* theme's name, or a `light/dark` pair meaning "follow the terminal".
|
|
159
91
|
*/
|
|
160
92
|
configuredTheme(): string | undefined;
|
|
161
|
-
/** Persist the global thinking default without changing the live session level. */
|
|
162
|
-
setDefaultThinkingLevel(level: PiPinnedSettingsSnapshot["defaultThinkingLevel"]): void;
|
|
163
93
|
/** Settings port for the live runtime, or null before the runtime is available. */
|
|
164
94
|
settingsPort(): PiSettingsBridge | null;
|
|
165
|
-
/** Which settings surface this adapter serves; hidden-in-bare effects are unbindable in bare mode. */
|
|
166
|
-
get settingsProductMode(): "bare" | "comparison";
|
|
167
|
-
bindSettingsOwner(owner: AgentSettingOwner, handlers: PiSettingOwnerHandlers): () => void;
|
|
168
95
|
pinnedSettingsSnapshot(): PiPinnedSettingsSnapshot;
|
|
169
96
|
clearQueuedWorkflows(): readonly string[];
|
|
170
97
|
view(): OwnedUiSessionViewModel;
|