@timurproko/a1 0.2.7-dev.1225 → 0.2.7-dev.1228
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 +1 -1
- package/dist/app/session-shell/dock-chrome.d.ts +1 -0
- package/dist/app/session-shell/dock-chrome.js +9 -1
- package/dist/app/session-shell/shell-layout.d.ts +1 -1
- package/dist/app/session-shell/viewport-layout.js +6 -5
- package/dist/foundation/release/bootstrap.js +1 -1
- package/dist/foundation/release/update.js +4 -2
- package/dist/foundation/resident-tabs/settings.d.ts +4 -0
- package/dist/foundation/resident-tabs/settings.js +3 -1
- package/dist/integrations/pi/components/shell-footer-status.js +7 -8
- package/dist/integrations/pi/components/shell-shared-facade.d.ts +3 -0
- package/dist/integrations/pi/components/shell-shared-facade.js +9 -1
- 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/dist/ui/components/selection-copy.js +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -149,7 +149,7 @@ npm x -y -- @timurproko/a1-install
|
|
|
149
149
|
|
|
150
150
|
The **Update** setting controls release discovery:
|
|
151
151
|
|
|
152
|
-
- **Auto** (default) checks the running release's stable or development channel at startup and every 15 minutes while open. It silently installs a verified update, then shows `Update installed
|
|
152
|
+
- **Auto** (default) checks the running release's stable or development channel at startup and every 15 minutes while open. It silently installs a verified update, then shows `Update installed, restart to update` above the editor; existing sessions keep running until restarted.
|
|
153
153
|
- **Notify** checks at startup (at most daily), keeps the `Update Available` notice, and leaves installation manual.
|
|
154
154
|
- **No** performs no update check; updates remain available through the commands above.
|
|
155
155
|
|
|
@@ -29,6 +29,7 @@ export declare class DockChrome {
|
|
|
29
29
|
showCopyAcknowledgement(message: string): void;
|
|
30
30
|
clearCopyAcknowledgement(requestRender: boolean): void;
|
|
31
31
|
renderCopyAcknowledgement(width: number): string | undefined;
|
|
32
|
+
renderPromptOverlay(diagnostics: OwnedUiSessionViewModel["diagnostics"], width: number): string | undefined;
|
|
32
33
|
renderReleaseBanner(diagnostics: OwnedUiSessionViewModel["diagnostics"], width: number): PiShellReleaseUpdateBanner | undefined;
|
|
33
34
|
locateReleaseClose(frame: TranscriptViewportFrame, banner: PiShellReleaseUpdateBanner | undefined, tailEnd: number, tailLength: number): void;
|
|
34
35
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { COPY_ACKNOWLEDGEMENT_DURATION_MS } from "../../ui/components/selection-copy.js";
|
|
2
2
|
import { renderPiShellCommandMessage, renderPiShellReleaseUpdateBanner, renderPiShellStatusText, } from "../../integrations/pi/components/shell-presenters-info.js";
|
|
3
3
|
import { PINNED_PI_LAYOUT, piTheme } from "../../integrations/pi/components/upstream/theme/theme.js";
|
|
4
|
-
import { piShellTruncateToWidth } from "../../integrations/pi/components/shell-shared-facade.js";
|
|
4
|
+
import { piShellTruncateToWidth, renderPiShellInstalledUpdateStatus } from "../../integrations/pi/components/shell-shared-facade.js";
|
|
5
5
|
import { parseReleaseUpdateDiagnostic } from "./transcript-document.js";
|
|
6
6
|
/**
|
|
7
7
|
* The transient chrome around bare A1's dock: the one command notice above the editor, the release
|
|
@@ -80,6 +80,14 @@ export class DockChrome {
|
|
|
80
80
|
return undefined;
|
|
81
81
|
return piTheme().fg("accent", piShellTruncateToWidth(this.#copyAcknowledgement, width));
|
|
82
82
|
}
|
|
83
|
+
renderPromptOverlay(diagnostics, width) {
|
|
84
|
+
const acknowledgement = this.renderCopyAcknowledgement(width);
|
|
85
|
+
if (acknowledgement !== undefined)
|
|
86
|
+
return acknowledgement;
|
|
87
|
+
if (!diagnostics.some(diagnostic => diagnostic.code === "release-update-installed"))
|
|
88
|
+
return undefined;
|
|
89
|
+
return renderPiShellInstalledUpdateStatus(width) || undefined;
|
|
90
|
+
}
|
|
83
91
|
renderReleaseBanner(diagnostics, width) {
|
|
84
92
|
if (this.#releaseDismissed)
|
|
85
93
|
return undefined;
|
|
@@ -22,7 +22,7 @@ export interface ShellLayoutPorts {
|
|
|
22
22
|
readonly input: InputSurfaceSwitch;
|
|
23
23
|
readonly editor: Pick<PiShellEditorPort, "getText">;
|
|
24
24
|
readonly promptChips: Pick<PromptChipStore, "atomicRanges">;
|
|
25
|
-
readonly dockChrome: Pick<DockChrome, "
|
|
25
|
+
readonly dockChrome: Pick<DockChrome, "renderPromptOverlay" | "renderReleaseBanner" | "locateReleaseClose">;
|
|
26
26
|
readonly theme: TranscriptViewportTheme;
|
|
27
27
|
readonly onFrame?: (frame: TranscriptViewportFrame) => void;
|
|
28
28
|
rows(): number;
|
|
@@ -24,7 +24,8 @@ export class ViewportLayout {
|
|
|
24
24
|
const { viewport, input, dockChrome } = this.#ports;
|
|
25
25
|
const height = Math.max(0, this.#ports.rows());
|
|
26
26
|
const dock = this.#ports.dock(width);
|
|
27
|
-
const
|
|
27
|
+
const diagnostics = this.#ports.diagnostics();
|
|
28
|
+
const promptOverlay = dockChrome.renderPromptOverlay(diagnostics, width);
|
|
28
29
|
// Invariant: auto/always own one stable final-column gutter. Every scrollable
|
|
29
30
|
// surface ends before it; the dock remains full-width and hidden mode returns it.
|
|
30
31
|
const documentWidth = viewport.config.scrollbarAppearance === "hidden"
|
|
@@ -32,7 +33,7 @@ export class ViewportLayout {
|
|
|
32
33
|
: Math.max(1, width - 1);
|
|
33
34
|
const document = this.#ports.document(documentWidth);
|
|
34
35
|
const steeringRows = this.#ports.queued(documentWidth);
|
|
35
|
-
const releaseBanner = dockChrome.renderReleaseBanner(
|
|
36
|
+
const releaseBanner = dockChrome.renderReleaseBanner(diagnostics, documentWidth);
|
|
36
37
|
// Rationale: the release notice rides the bottom-aligned tail directly above Working, so it
|
|
37
38
|
// never displaces transcript content and scrolls away with the live status.
|
|
38
39
|
// Invariant: when idle the banner's last row sits on the line Working would occupy.
|
|
@@ -41,7 +42,7 @@ export class ViewportLayout {
|
|
|
41
42
|
const snapshot = this.#snapshot;
|
|
42
43
|
// Invariant: paint-only feedback may cover either viewport or dock cells, so
|
|
43
44
|
// ordinary dock-only reuse cannot safely omit its overlay composition.
|
|
44
|
-
const dockInputCandidate = input.dockInputCandidate &&
|
|
45
|
+
const dockInputCandidate = input.dockInputCandidate && promptOverlay === undefined;
|
|
45
46
|
// Concurrency: input may change after a keyboard receipt but before its paint.
|
|
46
47
|
// Capture only the live inputs this composition will actually represent.
|
|
47
48
|
const inputSurface = input.surface;
|
|
@@ -87,10 +88,10 @@ export class ViewportLayout {
|
|
|
87
88
|
// Invariant: the control belongs immediately above the complete dock and
|
|
88
89
|
// floats over transient viewport content rather than consuming a dock row.
|
|
89
90
|
bottomControlRow: Math.max(0, height - Math.min(height, dockRows.length) - 1),
|
|
90
|
-
...(
|
|
91
|
+
...(promptOverlay === undefined || height <= 0 ? {} : {
|
|
91
92
|
frameOverlay: {
|
|
92
93
|
row: Math.max(1, Math.min(height, dockStartRow + dock.inputOffset - 1)),
|
|
93
|
-
text:
|
|
94
|
+
text: promptOverlay,
|
|
94
95
|
},
|
|
95
96
|
}),
|
|
96
97
|
theme: this.#ports.theme,
|
|
@@ -67,7 +67,7 @@ async function runBootstrapAttempt(options, retriesRemaining) {
|
|
|
67
67
|
resident.executable.entry,
|
|
68
68
|
"attach", "--endpoint", resident.endpoint, "--cwd", process.cwd(), "--clear-exit-ms", String(RESIDENT_DETACH_INTERVAL_MS),
|
|
69
69
|
"--profile", environment[PRODUCT_IDENTITY.environment.profileHome] ?? paths.configDir,
|
|
70
|
-
"--settings-file", resolve(agentProfileDir, "settings.json"),
|
|
70
|
+
"--settings-file", resolve(agentProfileDir, "settings.json"), "--accent-color", (await residentLaunchSettings).accentColor,
|
|
71
71
|
"--data-dir", paths.dataDir, "--runtime-dir", paths.runtimeDir,
|
|
72
72
|
"--release-root", release.releaseRoot, "--node-executable", process.execPath,
|
|
73
73
|
]),
|
|
@@ -67,7 +67,9 @@ export function createNpmProcessRunner(platform = process.platform) {
|
|
|
67
67
|
// Invariant: no child of the updater shares the terminal. The progress bar is the only
|
|
68
68
|
// live output; a child's own text is kept, bounded, and shown with a failure or not at all.
|
|
69
69
|
const stdio = ["ignore", request.captureStdout ? "pipe" : "ignore", "pipe"];
|
|
70
|
-
const child = platform === "win32"
|
|
70
|
+
const child = platform === "win32"
|
|
71
|
+
? crossSpawn(command, [...arguments_], { stdio, windowsHide: true })
|
|
72
|
+
: spawn(command, [...arguments_], { stdio });
|
|
71
73
|
const stdout = [];
|
|
72
74
|
let stderr = "";
|
|
73
75
|
child.stdout?.on("data", chunk => stdout.push(Buffer.from(chunk)));
|
|
@@ -239,7 +241,7 @@ export function createUpdateLifecycleCoordinator(environment = process.env, file
|
|
|
239
241
|
},
|
|
240
242
|
};
|
|
241
243
|
}
|
|
242
|
-
const PROGRESS_BAR_WIDTH =
|
|
244
|
+
const PROGRESS_BAR_WIDTH = 38;
|
|
243
245
|
const PROGRESS_TICK_MS = 200;
|
|
244
246
|
/**
|
|
245
247
|
* Copying the release owns 78–92 and is reported file by file, so the bar crosses
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { OWNED_SETTING_DECLARATIONS } from "../../ui/settings/index.js";
|
|
1
2
|
export declare const RESIDENT_TABS_MAX_CONCURRENT_STARTS = 2;
|
|
2
3
|
export declare const RESIDENT_TABS_MAX_CONCURRENT_STARTS_CAP = 8;
|
|
3
4
|
export declare const RESIDENT_TABS_PREWARM_COUNT = 1;
|
|
4
5
|
export declare const RESIDENT_TABS_PREWARM_CAP = 1;
|
|
6
|
+
type ResidentAccentColor = (typeof OWNED_SETTING_DECLARATIONS.accentColor.allowedValues)[number];
|
|
5
7
|
export interface ResidentTabLaunchSettings {
|
|
8
|
+
readonly accentColor: ResidentAccentColor;
|
|
6
9
|
readonly tabsAutoName: boolean;
|
|
7
10
|
readonly maxConcurrentStarts: number;
|
|
8
11
|
readonly prewarmCount: number;
|
|
@@ -10,3 +13,4 @@ export interface ResidentTabLaunchSettings {
|
|
|
10
13
|
}
|
|
11
14
|
/** Read only resident-launch values before any UI or extension module is loaded. */
|
|
12
15
|
export declare function readResidentTabLaunchSettings(profileDir: string, namespace?: string, legacyConfigDir?: string, profileId?: string): Promise<ResidentTabLaunchSettings>;
|
|
16
|
+
export {};
|
|
@@ -7,6 +7,7 @@ export const RESIDENT_TABS_MAX_CONCURRENT_STARTS_CAP = 8;
|
|
|
7
7
|
export const RESIDENT_TABS_PREWARM_COUNT = 1;
|
|
8
8
|
export const RESIDENT_TABS_PREWARM_CAP = 1;
|
|
9
9
|
const DEFAULTS = Object.freeze({
|
|
10
|
+
accentColor: "blue",
|
|
10
11
|
tabsAutoName: true,
|
|
11
12
|
maxConcurrentStarts: RESIDENT_TABS_MAX_CONCURRENT_STARTS,
|
|
12
13
|
prewarmCount: RESIDENT_TABS_PREWARM_COUNT,
|
|
@@ -44,12 +45,13 @@ export async function readResidentTabLaunchSettings(profileDir, namespace = "a1"
|
|
|
44
45
|
}
|
|
45
46
|
function resolveLaunchValues(document, migrations) {
|
|
46
47
|
const resolution = resolveOwnedUiSettings({
|
|
47
|
-
declarations: [OWNED_SETTING_DECLARATIONS.tabsAutoName],
|
|
48
|
+
declarations: [OWNED_SETTING_DECLARATIONS.accentColor, OWNED_SETTING_DECLARATIONS.tabsAutoName],
|
|
48
49
|
migrations,
|
|
49
50
|
document,
|
|
50
51
|
currentVersion: OWNED_UI_SETTINGS_VERSION,
|
|
51
52
|
});
|
|
52
53
|
return {
|
|
54
|
+
accentColor: settingValue(resolution, "accentColor"),
|
|
53
55
|
tabsAutoName: settingValue(resolution, "tabsAutoName") === true,
|
|
54
56
|
maxConcurrentStarts: RESIDENT_TABS_MAX_CONCURRENT_STARTS,
|
|
55
57
|
prewarmCount: RESIDENT_TABS_PREWARM_COUNT,
|
|
@@ -7,7 +7,7 @@ import { KeybindingsManager } from "./upstream/adjacent/core/keybindings.js";
|
|
|
7
7
|
import { StatusIndicator, WorkingStatusIndicator } from "./upstream/components/status-indicator.js";
|
|
8
8
|
import { protectPiPromptChipPresentation } from "./prompt-chip-presentation.js";
|
|
9
9
|
import { PINNED_PI_LAYOUT, piTheme, } from "./theme.js";
|
|
10
|
-
import { createTuiFacade, ensureTheme,
|
|
10
|
+
import { createTuiFacade, ensureTheme, renderPiShellInstalledUpdateStatus, piShellVisibleWidth, } from "./shell-shared-facade.js";
|
|
11
11
|
export function createPiShellHeader(options = {}) {
|
|
12
12
|
ensureTheme();
|
|
13
13
|
let expanded = options.expanded ?? false;
|
|
@@ -107,9 +107,9 @@ export function createPiShellStatus(view, progressStatus, runtime) {
|
|
|
107
107
|
component = statusComponent(view, statusUi, outputPad, liveStatusText, placement, progressPresentation, progressStatus);
|
|
108
108
|
};
|
|
109
109
|
return {
|
|
110
|
-
render: width => appendInstalledUpdateStatus(component?.render(width) ?? [], width, view),
|
|
110
|
+
render: width => appendInstalledUpdateStatus(component?.render(width) ?? [], width, view, progressPresentation),
|
|
111
111
|
renderDock: width => placement === "dock" ? component?.render(width) ?? [] : [],
|
|
112
|
-
renderLive: width => appendInstalledUpdateStatus(placement === "live" ? component?.render(width) ?? [] : [], width, view),
|
|
112
|
+
renderLive: width => appendInstalledUpdateStatus(placement === "live" ? component?.render(width) ?? [] : [], width, view, progressPresentation),
|
|
113
113
|
placement: () => placement,
|
|
114
114
|
invalidate: () => component?.invalidate(),
|
|
115
115
|
update(next) {
|
|
@@ -228,12 +228,11 @@ function statusSignature(view, workingOverride, outputPad, placement, progressPr
|
|
|
228
228
|
const message = withMessage ? `${workingOverride ?? ""}\u0000${view.status.workingMessage ?? ""}\u0000${view.status.workingProgress ?? ""}` : "";
|
|
229
229
|
return `${placement}\u0000${outputPad}\u0000${view.lifecycle}\u0000${progressPresentation}\u0000${message}\u0000${view.status.diagnostics.at(-1) ?? ""}`;
|
|
230
230
|
}
|
|
231
|
-
function appendInstalledUpdateStatus(rows, width, view) {
|
|
232
|
-
if (
|
|
231
|
+
function appendInstalledUpdateStatus(rows, width, view, progressPresentation) {
|
|
232
|
+
if (progressPresentation === "custom-viewport" || width <= 0
|
|
233
|
+
|| !view.diagnostics.some(diagnostic => diagnostic.code === "release-update-installed"))
|
|
233
234
|
return rows;
|
|
234
|
-
const
|
|
235
|
-
const full = `${theme.fg("success", "Update installed")} ${theme.fg("muted", "·")} ${theme.fg("accent", "Restart to update")}`;
|
|
236
|
-
const status = piShellTruncateToWidth(full, width);
|
|
235
|
+
const status = renderPiShellInstalledUpdateStatus(width);
|
|
237
236
|
const statusWidth = piShellVisibleWidth(status);
|
|
238
237
|
const target = rows.findLastIndex(row => piShellVisibleWidth(row.trimEnd()) > 0);
|
|
239
238
|
if (target < 0)
|
|
@@ -8,6 +8,9 @@ import { KeybindingsManager } from "./upstream/adjacent/core/keybindings.js";
|
|
|
8
8
|
/** Terminal-cell width authority used by Pi-rendered component rows. */
|
|
9
9
|
export declare const piShellVisibleWidth: typeof visibleWidth;
|
|
10
10
|
export declare const piShellTruncateToWidth: (text: string, width: number) => string;
|
|
11
|
+
export declare const INSTALLED_UPDATE_STATUS_TEXT = "Update installed, restart to update";
|
|
12
|
+
/** Shared green restart notice for the pinned status and bare-A1 prompt overlay. */
|
|
13
|
+
export declare function renderPiShellInstalledUpdateStatus(width: number): string;
|
|
11
14
|
/** A clickable URL in pinned Pi's grammar: an OSC 8 link where the terminal supports one, the plain URL otherwise. */
|
|
12
15
|
export declare const piShellHyperlink: (url: string, text?: string) => string;
|
|
13
16
|
export interface PiShellComponentPort extends PresentationComponentPort {
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { getKeybindings, hyperlink, matchesKey, setKeybindings, visibleWidth, truncateToWidth, } from "@earendil-works/pi-tui";
|
|
2
2
|
import { KeybindingsManager, } from "./upstream/adjacent/core/keybindings.js";
|
|
3
|
-
import { ensurePiTheme, } from "./theme.js";
|
|
3
|
+
import { ensurePiTheme, piTheme, } from "./theme.js";
|
|
4
4
|
/** Terminal-cell width authority used by Pi-rendered component rows. */
|
|
5
5
|
export const piShellVisibleWidth = visibleWidth;
|
|
6
6
|
export const piShellTruncateToWidth = (text, width) => truncateToWidth(text, width, "");
|
|
7
|
+
export const INSTALLED_UPDATE_STATUS_TEXT = "Update installed, restart to update";
|
|
8
|
+
/** Shared green restart notice for the pinned status and bare-A1 prompt overlay. */
|
|
9
|
+
export function renderPiShellInstalledUpdateStatus(width) {
|
|
10
|
+
if (width <= 0)
|
|
11
|
+
return "";
|
|
12
|
+
ensurePiTheme();
|
|
13
|
+
return piShellTruncateToWidth(piTheme().fg("success", INSTALLED_UPDATE_STATUS_TEXT), width);
|
|
14
|
+
}
|
|
7
15
|
/** A clickable URL in pinned Pi's grammar: an OSC 8 link where the terminal supports one, the plain URL otherwise. */
|
|
8
16
|
export const piShellHyperlink = (url, text = url) => hyperlink(url, text);
|
|
9
17
|
// Provenance: pinned from packages/coding-agent/src/core/slash-commands.ts at 914cf14.
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"platform": "darwin",
|
|
8
8
|
"architecture": "arm64",
|
|
9
9
|
"capability": "supported",
|
|
10
|
-
"builtAt": "2026-10-
|
|
10
|
+
"builtAt": "2026-10-30T07:58:45.715Z",
|
|
11
11
|
"artifact": {
|
|
12
12
|
"filename": "process-guardian.node",
|
|
13
13
|
"sha256": "a87eaaffcd986b624c8b044b756446cc1bdaf4334a1775b97820542fe34f9fb7",
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"architecture": "arm64",
|
|
10
10
|
"target": "aarch64-apple-darwin",
|
|
11
11
|
"capability": "supported",
|
|
12
|
-
"builtAt": "2026-10-
|
|
12
|
+
"builtAt": "2026-10-30T08:01:30.327Z",
|
|
13
13
|
"artifact": {
|
|
14
14
|
"filename": "terminal-host.node",
|
|
15
|
-
"sha256": "
|
|
16
|
-
"size":
|
|
15
|
+
"sha256": "4e35835f3af4c0d9ae9582886f3a1f66d8a8bd306014d24af29e979ca504aed6",
|
|
16
|
+
"size": 6019520
|
|
17
17
|
},
|
|
18
18
|
"entry": {
|
|
19
19
|
"filename": "dist/foundation/resident-tabs/host-entry.js",
|
|
Binary file
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"platform": "darwin",
|
|
8
8
|
"architecture": "x64",
|
|
9
9
|
"capability": "supported",
|
|
10
|
-
"builtAt": "2026-10-
|
|
10
|
+
"builtAt": "2026-10-30T07:58:54.109Z",
|
|
11
11
|
"artifact": {
|
|
12
12
|
"filename": "process-guardian.node",
|
|
13
13
|
"sha256": "783a65f0de287a1c02cd5429dbe97bc8633f4cc8a7b92e3e961180b9bdcff814",
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"architecture": "x64",
|
|
10
10
|
"target": "x86_64-apple-darwin",
|
|
11
11
|
"capability": "supported",
|
|
12
|
-
"builtAt": "2026-10-
|
|
12
|
+
"builtAt": "2026-10-30T08:03:39.902Z",
|
|
13
13
|
"artifact": {
|
|
14
14
|
"filename": "terminal-host.node",
|
|
15
|
-
"sha256": "
|
|
16
|
-
"size":
|
|
15
|
+
"sha256": "7161d3bde5cf9d1caf2978fe623b6d26dbdc257093a48b2870d510804563a1b3",
|
|
16
|
+
"size": 6566416
|
|
17
17
|
},
|
|
18
18
|
"entry": {
|
|
19
19
|
"filename": "dist/foundation/resident-tabs/host-entry.js",
|
|
Binary file
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"platform": "linux",
|
|
8
8
|
"architecture": "x64",
|
|
9
9
|
"capability": "supported",
|
|
10
|
-
"builtAt": "2026-10-
|
|
10
|
+
"builtAt": "2026-10-30T07:58:30.937Z",
|
|
11
11
|
"artifact": {
|
|
12
12
|
"filename": "process-guardian.node",
|
|
13
13
|
"sha256": "118e5954e3864672bd8482ab7edf419cb27dcdf2533720316979b7f5cc5a53a5",
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"architecture": "x64",
|
|
10
10
|
"target": "x86_64-unknown-linux-gnu",
|
|
11
11
|
"capability": "supported",
|
|
12
|
-
"builtAt": "2026-10-
|
|
12
|
+
"builtAt": "2026-10-30T08:01:43.730Z",
|
|
13
13
|
"artifact": {
|
|
14
14
|
"filename": "terminal-host.node",
|
|
15
|
-
"sha256": "
|
|
16
|
-
"size":
|
|
15
|
+
"sha256": "41212856c811ddef6e918e96b49dc957b2d49946d7ef5494962db8d70937d760",
|
|
16
|
+
"size": 7306168
|
|
17
17
|
},
|
|
18
18
|
"entry": {
|
|
19
19
|
"filename": "dist/foundation/resident-tabs/host-entry.js",
|
|
Binary file
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
"platform": "win32",
|
|
8
8
|
"architecture": "x64",
|
|
9
9
|
"capability": "supported",
|
|
10
|
-
"builtAt": "2026-10-
|
|
10
|
+
"builtAt": "2026-10-30T07:59:01.471Z",
|
|
11
11
|
"artifact": {
|
|
12
12
|
"filename": "process-guardian.node",
|
|
13
|
-
"sha256": "
|
|
13
|
+
"sha256": "875865ad5b3bd80793a394573029d0388f54becf6a8ecb225b9e67845684b693",
|
|
14
14
|
"size": 402432
|
|
15
15
|
},
|
|
16
16
|
"provenance": {
|
|
Binary file
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"architecture": "x64",
|
|
10
10
|
"target": "x86_64-pc-windows-msvc",
|
|
11
11
|
"capability": "supported",
|
|
12
|
-
"builtAt": "2026-10-
|
|
12
|
+
"builtAt": "2026-10-30T08:02:29.690Z",
|
|
13
13
|
"artifact": {
|
|
14
14
|
"filename": "terminal-host.node",
|
|
15
|
-
"sha256": "
|
|
16
|
-
"size":
|
|
15
|
+
"sha256": "c25f492b5e735f453e0207bdfd6f43fd36ade4ba7cf86d8e69c2184cf751a873",
|
|
16
|
+
"size": 6397440
|
|
17
17
|
},
|
|
18
18
|
"entry": {
|
|
19
19
|
"filename": "dist/foundation/resident-tabs/host-entry.js",
|
|
Binary file
|
|
@@ -5,7 +5,7 @@ export const MAX_COPY_SOURCE_UNITS = 32 * 1024 * 1024;
|
|
|
5
5
|
export const MAX_COPY_ROWS = 65_536;
|
|
6
6
|
export const COPY_ACKNOWLEDGEMENT_DURATION_MS = 1_000;
|
|
7
7
|
export function copyAcknowledgementText(characters) {
|
|
8
|
-
return `
|
|
8
|
+
return `Copied ${characters} chars to clipboard`;
|
|
9
9
|
}
|
|
10
10
|
export function selectionCopyLineContent(text, prompt) {
|
|
11
11
|
const plain = stripAnsi(text);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timurproko/a1",
|
|
3
|
-
"version": "0.2.7-dev.
|
|
3
|
+
"version": "0.2.7-dev.1228",
|
|
4
4
|
"description": "Standalone terminal workspace for supervised native and managed agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"privateLaunchContract": "neutral-launch-v1",
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"@mariozechner/clipboard": "^0.3.9"
|
|
119
119
|
},
|
|
120
120
|
"publication": {
|
|
121
|
-
"source": "
|
|
122
|
-
"pullRequest":
|
|
121
|
+
"source": "27f992af0ceff4dfc40d49586bdc3cf02956f435",
|
|
122
|
+
"pullRequest": 853
|
|
123
123
|
}
|
|
124
124
|
}
|