apex-code 0.0.1-alpha.6 → 0.0.1-alpha.8
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/CHANGELOG.md +162 -0
- package/README.md +5 -0
- package/dist/cli/args.d.ts +3 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +15 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/concurrent-session.d.ts +3 -0
- package/dist/cli/concurrent-session.d.ts.map +1 -0
- package/dist/cli/concurrent-session.js +13 -0
- package/dist/cli/concurrent-session.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -2
- package/dist/cli.js.map +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +20 -0
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +32 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +37 -6
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +4 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +6 -2
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +10 -9
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/experimental.d.ts +4 -0
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js +4 -0
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/extensions/types.d.ts +4 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts +1 -2
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +2 -17
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/http-idle-timeout.d.ts +12 -0
- package/dist/core/http-idle-timeout.d.ts.map +1 -0
- package/dist/core/http-idle-timeout.js +27 -0
- package/dist/core/http-idle-timeout.js.map +1 -0
- package/dist/core/keybindings.d.ts +24 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/lsp/client.d.ts +2 -0
- package/dist/core/lsp/client.d.ts.map +1 -1
- package/dist/core/lsp/client.js +27 -2
- package/dist/core/lsp/client.js.map +1 -1
- package/dist/core/model-config.d.ts +5 -0
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +1 -0
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/permissions/gate.d.ts +7 -0
- package/dist/core/permissions/gate.d.ts.map +1 -1
- package/dist/core/permissions/gate.js.map +1 -1
- package/dist/core/permissions/startup.d.ts +12 -0
- package/dist/core/permissions/startup.d.ts.map +1 -1
- package/dist/core/permissions/startup.js +12 -4
- package/dist/core/permissions/startup.js.map +1 -1
- package/dist/core/sandbox/child-entry.d.ts.map +1 -1
- package/dist/core/sandbox/child-entry.js +8 -1
- package/dist/core/sandbox/child-entry.js.map +1 -1
- package/dist/core/sandbox/cli-launch.d.ts +3 -0
- package/dist/core/sandbox/cli-launch.d.ts.map +1 -1
- package/dist/core/sandbox/cli-launch.js +25 -4
- package/dist/core/sandbox/cli-launch.js.map +1 -1
- package/dist/core/sandbox/cli-supervisor.d.ts.map +1 -1
- package/dist/core/sandbox/cli-supervisor.js +53 -13
- package/dist/core/sandbox/cli-supervisor.js.map +1 -1
- package/dist/core/sandbox/linux-backend.d.ts.map +1 -1
- package/dist/core/sandbox/linux-backend.js +15 -0
- package/dist/core/sandbox/linux-backend.js.map +1 -1
- package/dist/core/sandbox/macos-backend.d.ts.map +1 -1
- package/dist/core/sandbox/macos-backend.js +24 -1
- package/dist/core/sandbox/macos-backend.js.map +1 -1
- package/dist/core/sandbox/rpc/credential-client.d.ts +20 -0
- package/dist/core/sandbox/rpc/credential-client.d.ts.map +1 -0
- package/dist/core/sandbox/rpc/credential-client.js +170 -0
- package/dist/core/sandbox/rpc/credential-client.js.map +1 -0
- package/dist/core/sandbox/rpc/credential-proxy.d.ts +44 -0
- package/dist/core/sandbox/rpc/credential-proxy.d.ts.map +1 -0
- package/dist/core/sandbox/rpc/credential-proxy.js +381 -0
- package/dist/core/sandbox/rpc/credential-proxy.js.map +1 -0
- package/dist/core/sandbox/supervisor.d.ts +11 -0
- package/dist/core/sandbox/supervisor.d.ts.map +1 -1
- package/dist/core/sandbox/supervisor.js.map +1 -1
- package/dist/core/sandbox/terminal-size.d.ts +40 -0
- package/dist/core/sandbox/terminal-size.d.ts.map +1 -0
- package/dist/core/sandbox/terminal-size.js +105 -0
- package/dist/core/sandbox/terminal-size.js.map +1 -0
- package/dist/core/sdk.d.ts +6 -3
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +16 -4
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-lease.d.ts +31 -0
- package/dist/core/session-lease.d.ts.map +1 -0
- package/dist/core/session-lease.js +138 -0
- package/dist/core/session-lease.js.map +1 -0
- package/dist/core/session-manager.d.ts +5 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +3 -3
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +26 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +42 -3
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +2 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts +2 -2
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +47 -62
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +2 -0
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +24 -0
- package/dist/core/tools/delegate.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +2 -0
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +1 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +2 -0
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +35 -10
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/ls.d.ts +2 -0
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +5 -1
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +2 -0
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/web-search-exa.d.ts +33 -0
- package/dist/core/tools/web-search-exa.d.ts.map +1 -0
- package/dist/core/tools/web-search-exa.js +128 -0
- package/dist/core/tools/web-search-exa.js.map +1 -0
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +2 -0
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/web-search-provider.d.ts +64 -0
- package/dist/core/web-search-provider.d.ts.map +1 -0
- package/dist/core/web-search-provider.js +149 -0
- package/dist/core/web-search-provider.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +21 -1
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +23 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +105 -2
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts +7 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js +11 -2
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts +4 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +24 -6
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js +6 -3
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/first-use-hints.d.ts +8 -0
- package/dist/modes/interactive/components/first-use-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/first-use-hints.js +22 -0
- package/dist/modes/interactive/components/first-use-hints.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +15 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +133 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +1 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +1 -0
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +2 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +20 -5
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +16 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +106 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/splash-header.d.ts +29 -4
- package/dist/modes/interactive/components/splash-header.d.ts.map +1 -1
- package/dist/modes/interactive/components/splash-header.js +58 -23
- package/dist/modes/interactive/components/splash-header.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +14 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +113 -35
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tool-panel.d.ts +30 -0
- package/dist/modes/interactive/components/tool-panel.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-panel.js +130 -0
- package/dist/modes/interactive/components/tool-panel.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +48 -2
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +339 -68
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/model-catalog-refresh.d.ts +7 -0
- package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
- package/dist/modes/interactive/model-catalog-refresh.js +34 -0
- package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
- package/dist/modes/interactive/theme/apex.json +62 -63
- package/dist/modes/interactive/theme/dark.json +2 -0
- package/dist/modes/interactive/theme/light.json +2 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts +10 -2
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +25 -11
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +9 -1
- package/dist/modes/interactive/theme/theme.d.ts +14 -3
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +55 -6
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts +4 -1
- package/dist/modes/json-event.d.ts.map +1 -1
- package/dist/modes/json-event.js +5 -2
- package/dist/modes/json-event.js.map +1 -1
- package/dist/server/create-harness.d.ts.map +1 -1
- package/dist/server/create-harness.js +2 -0
- package/dist/server/create-harness.js.map +1 -1
- package/dist/themes/apex-logo.d.ts +36 -16
- package/dist/themes/apex-logo.d.ts.map +1 -1
- package/dist/themes/apex-logo.js +32 -28
- package/dist/themes/apex-logo.js.map +1 -1
- package/dist/utils/tools-manager.d.ts +10 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +15 -20
- package/dist/utils/tools-manager.js.map +1 -1
- package/docs/compaction.md +3 -3
- package/docs/custom-provider.md +1 -1
- package/docs/environment-variables.md +1 -0
- package/docs/extensions.md +4 -0
- package/docs/json.md +6 -4
- package/docs/keybindings.md +8 -2
- package/docs/rpc.md +15 -4
- package/docs/sdk.md +9 -0
- package/docs/settings.md +63 -0
- package/docs/terminal-setup.md +23 -2
- package/docs/themes.md +24 -3
- package/docs/tui.md +2 -2
- package/docs/usage.md +3 -2
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/subagent/README.md +2 -0
- package/examples/extensions/subagent/agents.ts +40 -9
- package/examples/extensions/subagent/index.ts +21 -3
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +27 -78
- package/package.json +6 -6
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
|
|
2
|
+
import { paintBackground, theme } from "../theme/theme.js";
|
|
3
|
+
const LIFECYCLE_SYMBOLS = {
|
|
4
|
+
unicode: { queued: "○", running: "◌", done: "✓", error: "✗" },
|
|
5
|
+
ascii: { queued: "[ ]", running: "[~]", done: "[x]", error: "[!]" },
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Running takes the brand accent rather than `warning`. Work in progress is
|
|
9
|
+
* not a caution; amber is reserved for states the user may need to act on.
|
|
10
|
+
*/
|
|
11
|
+
function lifecycleColor(lifecycle) {
|
|
12
|
+
switch (lifecycle) {
|
|
13
|
+
case "queued":
|
|
14
|
+
return "dim";
|
|
15
|
+
case "running":
|
|
16
|
+
return "accent";
|
|
17
|
+
case "done":
|
|
18
|
+
return "success";
|
|
19
|
+
case "error":
|
|
20
|
+
return "error";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The status spine drawn down the left edge of a tool panel.
|
|
25
|
+
*
|
|
26
|
+
* It is a redundant channel over the lifecycle word in the header, so it is
|
|
27
|
+
* free to lean on colour. The glyph still distinguishes work that has not
|
|
28
|
+
* started from work that has, which is the distinction a glance most needs.
|
|
29
|
+
*/
|
|
30
|
+
const SPINE_GLYPHS = {
|
|
31
|
+
unicode: { queued: "┆", running: "▌", done: "▌", error: "▌" },
|
|
32
|
+
ascii: { queued: ":", running: "|", done: "|", error: "|" },
|
|
33
|
+
};
|
|
34
|
+
export function formatToolDuration(durationMs) {
|
|
35
|
+
if (durationMs < 1000)
|
|
36
|
+
return `${Math.max(0, Math.round(durationMs))}ms`;
|
|
37
|
+
if (durationMs < 10_000)
|
|
38
|
+
return `${(durationMs / 1000).toFixed(1)}s`;
|
|
39
|
+
return `${Math.round(durationMs / 1000)}s`;
|
|
40
|
+
}
|
|
41
|
+
function lifecycleBackground(lifecycle) {
|
|
42
|
+
if (lifecycle === "done")
|
|
43
|
+
return "toolSuccessBg";
|
|
44
|
+
if (lifecycle === "error")
|
|
45
|
+
return "toolErrorBg";
|
|
46
|
+
return "toolPendingBg";
|
|
47
|
+
}
|
|
48
|
+
/** Prime-style flat shell for renderer-based tool calls. */
|
|
49
|
+
export class ToolPanelComponent {
|
|
50
|
+
child;
|
|
51
|
+
options;
|
|
52
|
+
constructor(child, options) {
|
|
53
|
+
this.child = child;
|
|
54
|
+
this.options = options;
|
|
55
|
+
}
|
|
56
|
+
render(width) {
|
|
57
|
+
if (width <= 0)
|
|
58
|
+
return [];
|
|
59
|
+
const padding = Math.min(2, Math.floor((width - 1) / 2));
|
|
60
|
+
const innerWidth = Math.max(1, width - padding * 2);
|
|
61
|
+
const childLines = this.child.render(innerWidth);
|
|
62
|
+
if (childLines.length === 0)
|
|
63
|
+
return [];
|
|
64
|
+
const { lifecycle, symbolPreset, durationMs } = this.options;
|
|
65
|
+
const duration = durationMs === undefined ? "" : ` ${formatToolDuration(durationMs)}`;
|
|
66
|
+
const state = theme.fg(lifecycleColor(lifecycle), `${LIFECYCLE_SYMBOLS[symbolPreset][lifecycle]} ${lifecycle}${duration}`);
|
|
67
|
+
const separator = theme.fg("dim", symbolPreset === "ascii" ? " - " : " · ");
|
|
68
|
+
const stateWidth = visibleWidth(separator) + visibleWidth(state);
|
|
69
|
+
const label = childLines[0].replace(/\s+$/, "");
|
|
70
|
+
const header = stateWidth < innerWidth
|
|
71
|
+
? `${truncateToWidth(label, innerWidth - stateWidth, "")}${separator}${state}`
|
|
72
|
+
: truncateToWidth(state, innerWidth, "");
|
|
73
|
+
const panelLines = [header];
|
|
74
|
+
if (childLines.length > 1)
|
|
75
|
+
panelLines.push("", ...childLines.slice(1));
|
|
76
|
+
const background = lifecycleBackground(lifecycle);
|
|
77
|
+
// The spine occupies the first column of the existing left padding, so it
|
|
78
|
+
// marks state without costing the panel a column of content. Below two
|
|
79
|
+
// columns of padding there is no room for it and it is dropped.
|
|
80
|
+
const showSpine = padding >= 1;
|
|
81
|
+
const spine = showSpine
|
|
82
|
+
? paintBackground(theme.fg(lifecycleColor(lifecycle), SPINE_GLYPHS[symbolPreset][lifecycle]), background)
|
|
83
|
+
: "";
|
|
84
|
+
const leftPadding = " ".repeat(Math.max(0, padding - (showSpine ? 1 : 0)));
|
|
85
|
+
return panelLines.map((line) => {
|
|
86
|
+
const clipped = truncateToWidth(line, innerWidth, "");
|
|
87
|
+
const rightPadding = " ".repeat(Math.max(0, innerWidth - visibleWidth(clipped)));
|
|
88
|
+
return spine + paintBackground(`${leftPadding}${clipped}${rightPadding}${" ".repeat(padding)}`, background);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
invalidate() {
|
|
92
|
+
this.child.invalidate?.();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Prefixes an existing public tool renderer with Apex-owned lifecycle text.
|
|
97
|
+
* The wrapped renderer receives the remaining width, so its own wrapping and
|
|
98
|
+
* cursor-free layout stay intact without a pi-tui hook.
|
|
99
|
+
*/
|
|
100
|
+
export class ToolStatusLineComponent {
|
|
101
|
+
child;
|
|
102
|
+
options;
|
|
103
|
+
constructor(child, options) {
|
|
104
|
+
this.child = child;
|
|
105
|
+
this.options = options;
|
|
106
|
+
}
|
|
107
|
+
render(width) {
|
|
108
|
+
if (width <= 0)
|
|
109
|
+
return [];
|
|
110
|
+
const { lifecycle, symbolPreset, durationMs } = this.options;
|
|
111
|
+
const duration = durationMs === undefined ? "" : ` ${formatToolDuration(durationMs)}`;
|
|
112
|
+
const separator = symbolPreset === "ascii" ? " | " : " · ";
|
|
113
|
+
const plainPrefix = `${LIFECYCLE_SYMBOLS[symbolPreset][lifecycle]} ${lifecycle}${duration}${separator}`;
|
|
114
|
+
const prefix = theme.fg(lifecycleColor(lifecycle), plainPrefix);
|
|
115
|
+
const prefixWidth = visibleWidth(prefix);
|
|
116
|
+
if (prefixWidth >= width) {
|
|
117
|
+
return [truncateToWidth(prefix, width, "")];
|
|
118
|
+
}
|
|
119
|
+
const childWidth = Math.max(1, width - prefixWidth);
|
|
120
|
+
const childLines = this.child.render(childWidth);
|
|
121
|
+
if (childLines.length === 0)
|
|
122
|
+
return [];
|
|
123
|
+
const continuation = " ".repeat(prefixWidth);
|
|
124
|
+
return childLines.map((line, index) => (index === 0 ? prefix : continuation) + line);
|
|
125
|
+
}
|
|
126
|
+
invalidate() {
|
|
127
|
+
this.child.invalidate?.();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=tool-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-panel.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tool-panel.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Component, truncateToWidth, visibleWidth } from \"@earendil-works/pi-tui\";\nimport { paintBackground, theme } from \"../theme/theme.ts\";\n\nexport type ToolLifecycle = \"queued\" | \"running\" | \"done\" | \"error\";\nexport type ToolSymbolPreset = \"unicode\" | \"ascii\";\n\nconst LIFECYCLE_SYMBOLS: Record<ToolSymbolPreset, Record<ToolLifecycle, string>> = {\n\tunicode: { queued: \"○\", running: \"◌\", done: \"✓\", error: \"✗\" },\n\tascii: { queued: \"[ ]\", running: \"[~]\", done: \"[x]\", error: \"[!]\" },\n};\n\n/**\n * Running takes the brand accent rather than `warning`. Work in progress is\n * not a caution; amber is reserved for states the user may need to act on.\n */\nfunction lifecycleColor(lifecycle: ToolLifecycle): \"dim\" | \"accent\" | \"success\" | \"error\" {\n\tswitch (lifecycle) {\n\t\tcase \"queued\":\n\t\t\treturn \"dim\";\n\t\tcase \"running\":\n\t\t\treturn \"accent\";\n\t\tcase \"done\":\n\t\t\treturn \"success\";\n\t\tcase \"error\":\n\t\t\treturn \"error\";\n\t}\n}\n\n/**\n * The status spine drawn down the left edge of a tool panel.\n *\n * It is a redundant channel over the lifecycle word in the header, so it is\n * free to lean on colour. The glyph still distinguishes work that has not\n * started from work that has, which is the distinction a glance most needs.\n */\nconst SPINE_GLYPHS: Record<ToolSymbolPreset, Record<ToolLifecycle, string>> = {\n\tunicode: { queued: \"┆\", running: \"▌\", done: \"▌\", error: \"▌\" },\n\tascii: { queued: \":\", running: \"|\", done: \"|\", error: \"|\" },\n};\n\nexport function formatToolDuration(durationMs: number): string {\n\tif (durationMs < 1000) return `${Math.max(0, Math.round(durationMs))}ms`;\n\tif (durationMs < 10_000) return `${(durationMs / 1000).toFixed(1)}s`;\n\treturn `${Math.round(durationMs / 1000)}s`;\n}\n\nexport interface ToolStatusLineOptions {\n\tlifecycle: ToolLifecycle;\n\tsymbolPreset: ToolSymbolPreset;\n\tdurationMs?: number;\n}\n\nfunction lifecycleBackground(lifecycle: ToolLifecycle): \"toolPendingBg\" | \"toolSuccessBg\" | \"toolErrorBg\" {\n\tif (lifecycle === \"done\") return \"toolSuccessBg\";\n\tif (lifecycle === \"error\") return \"toolErrorBg\";\n\treturn \"toolPendingBg\";\n}\n\n/** Prime-style flat shell for renderer-based tool calls. */\nexport class ToolPanelComponent implements Component {\n\tprivate readonly child: Component;\n\tprivate readonly options: ToolStatusLineOptions;\n\n\tconstructor(child: Component, options: ToolStatusLineOptions) {\n\t\tthis.child = child;\n\t\tthis.options = options;\n\t}\n\n\trender(width: number): string[] {\n\t\tif (width <= 0) return [];\n\t\tconst padding = Math.min(2, Math.floor((width - 1) / 2));\n\t\tconst innerWidth = Math.max(1, width - padding * 2);\n\t\tconst childLines = this.child.render(innerWidth);\n\t\tif (childLines.length === 0) return [];\n\n\t\tconst { lifecycle, symbolPreset, durationMs } = this.options;\n\t\tconst duration = durationMs === undefined ? \"\" : ` ${formatToolDuration(durationMs)}`;\n\t\tconst state = theme.fg(\n\t\t\tlifecycleColor(lifecycle),\n\t\t\t`${LIFECYCLE_SYMBOLS[symbolPreset][lifecycle]} ${lifecycle}${duration}`,\n\t\t);\n\t\tconst separator = theme.fg(\"dim\", symbolPreset === \"ascii\" ? \" - \" : \" · \");\n\t\tconst stateWidth = visibleWidth(separator) + visibleWidth(state);\n\t\tconst label = childLines[0].replace(/\\s+$/, \"\");\n\t\tconst header =\n\t\t\tstateWidth < innerWidth\n\t\t\t\t? `${truncateToWidth(label, innerWidth - stateWidth, \"\")}${separator}${state}`\n\t\t\t\t: truncateToWidth(state, innerWidth, \"\");\n\t\tconst panelLines = [header];\n\t\tif (childLines.length > 1) panelLines.push(\"\", ...childLines.slice(1));\n\n\t\tconst background = lifecycleBackground(lifecycle);\n\t\t// The spine occupies the first column of the existing left padding, so it\n\t\t// marks state without costing the panel a column of content. Below two\n\t\t// columns of padding there is no room for it and it is dropped.\n\t\tconst showSpine = padding >= 1;\n\t\tconst spine = showSpine\n\t\t\t? paintBackground(theme.fg(lifecycleColor(lifecycle), SPINE_GLYPHS[symbolPreset][lifecycle]), background)\n\t\t\t: \"\";\n\t\tconst leftPadding = \" \".repeat(Math.max(0, padding - (showSpine ? 1 : 0)));\n\t\treturn panelLines.map((line) => {\n\t\t\tconst clipped = truncateToWidth(line, innerWidth, \"\");\n\t\t\tconst rightPadding = \" \".repeat(Math.max(0, innerWidth - visibleWidth(clipped)));\n\t\t\treturn spine + paintBackground(`${leftPadding}${clipped}${rightPadding}${\" \".repeat(padding)}`, background);\n\t\t});\n\t}\n\n\tinvalidate(): void {\n\t\tthis.child.invalidate?.();\n\t}\n}\n\n/**\n * Prefixes an existing public tool renderer with Apex-owned lifecycle text.\n * The wrapped renderer receives the remaining width, so its own wrapping and\n * cursor-free layout stay intact without a pi-tui hook.\n */\nexport class ToolStatusLineComponent implements Component {\n\tprivate readonly child: Component;\n\tprivate readonly options: ToolStatusLineOptions;\n\n\tconstructor(child: Component, options: ToolStatusLineOptions) {\n\t\tthis.child = child;\n\t\tthis.options = options;\n\t}\n\n\trender(width: number): string[] {\n\t\tif (width <= 0) return [];\n\t\tconst { lifecycle, symbolPreset, durationMs } = this.options;\n\t\tconst duration = durationMs === undefined ? \"\" : ` ${formatToolDuration(durationMs)}`;\n\t\tconst separator = symbolPreset === \"ascii\" ? \" | \" : \" · \";\n\t\tconst plainPrefix = `${LIFECYCLE_SYMBOLS[symbolPreset][lifecycle]} ${lifecycle}${duration}${separator}`;\n\t\tconst prefix = theme.fg(lifecycleColor(lifecycle), plainPrefix);\n\t\tconst prefixWidth = visibleWidth(prefix);\n\n\t\tif (prefixWidth >= width) {\n\t\t\treturn [truncateToWidth(prefix, width, \"\")];\n\t\t}\n\n\t\tconst childWidth = Math.max(1, width - prefixWidth);\n\t\tconst childLines = this.child.render(childWidth);\n\t\tif (childLines.length === 0) return [];\n\n\t\tconst continuation = \" \".repeat(prefixWidth);\n\t\treturn childLines.map((line, index) => (index === 0 ? prefix : continuation) + line);\n\t}\n\n\tinvalidate(): void {\n\t\tthis.child.invalidate?.();\n\t}\n}\n"]}
|
|
@@ -7,7 +7,7 @@ import type { Terminal } from "@earendil-works/pi-tui";
|
|
|
7
7
|
import { type TUI, TuiAltScreen, TuiMainScreen } from "@earendil-works/pi-tui";
|
|
8
8
|
import { type AgentSessionRuntime } from "../../core/agent-session-runtime.ts";
|
|
9
9
|
import { SessionManager } from "../../core/session-manager.ts";
|
|
10
|
-
import type { TuiMode } from "../../core/settings-manager.ts";
|
|
10
|
+
import type { FullscreenExitOutput, TuiMode } from "../../core/settings-manager.ts";
|
|
11
11
|
import { type LatestApexCodeRelease } from "../../utils/version-check.ts";
|
|
12
12
|
export declare function formatResumeCommand(sessionManager: SessionManager): string | undefined;
|
|
13
13
|
/**
|
|
@@ -30,6 +30,8 @@ export interface InteractiveModeOptions {
|
|
|
30
30
|
verbose?: boolean;
|
|
31
31
|
/** TUI layout mode. */
|
|
32
32
|
tuiMode?: TuiMode;
|
|
33
|
+
/** Initial interactive theme setting for this invocation. */
|
|
34
|
+
initialThemeSetting?: string;
|
|
33
35
|
}
|
|
34
36
|
interface InteractiveTuiOptions {
|
|
35
37
|
tuiMode: TuiMode;
|
|
@@ -44,6 +46,8 @@ export declare function createInteractiveTui(options: InteractiveTuiOptions): Tu
|
|
|
44
46
|
export declare function createInteractiveTuiReference(getTui: () => TUI): TUI;
|
|
45
47
|
export declare class InteractiveMode {
|
|
46
48
|
private runtimeHost;
|
|
49
|
+
/** Settled once the most recent /settings permission-mode write has hit disk. */
|
|
50
|
+
private pendingPermissionModeWrite;
|
|
47
51
|
private renderer;
|
|
48
52
|
private ui;
|
|
49
53
|
private mainScreenRenderState;
|
|
@@ -66,6 +70,14 @@ export declare class InteractiveMode {
|
|
|
66
70
|
private footer;
|
|
67
71
|
private footerContainer;
|
|
68
72
|
private footerDataProvider;
|
|
73
|
+
/**
|
|
74
|
+
* Whether the startup screen is showing its counted inventory line.
|
|
75
|
+
*
|
|
76
|
+
* Warnings are only allowed to collapse into that count when the count is
|
|
77
|
+
* actually on screen. Under a quiet startup there is no splash header, so
|
|
78
|
+
* collapsing them would hide conflicts entirely rather than summarise them.
|
|
79
|
+
*/
|
|
80
|
+
private startupInventoryVisible;
|
|
69
81
|
private keybindings;
|
|
70
82
|
private version;
|
|
71
83
|
private isInitialized;
|
|
@@ -86,6 +98,7 @@ export declare class InteractiveMode {
|
|
|
86
98
|
private anthropicSubscriptionWarningShown;
|
|
87
99
|
private lastStatusSpacer;
|
|
88
100
|
private lastStatusText;
|
|
101
|
+
private managedToolStatusStarted;
|
|
89
102
|
private streamingComponent;
|
|
90
103
|
private streamingMessage;
|
|
91
104
|
private pendingTools;
|
|
@@ -97,6 +110,7 @@ export declare class InteractiveMode {
|
|
|
97
110
|
private unsubscribe?;
|
|
98
111
|
private signalCleanupHandlers;
|
|
99
112
|
private isBashMode;
|
|
113
|
+
private firstUseHints;
|
|
100
114
|
private bashComponent;
|
|
101
115
|
private pendingBashComponents;
|
|
102
116
|
private autoCompactionEscapeHandler?;
|
|
@@ -123,6 +137,7 @@ export declare class InteractiveMode {
|
|
|
123
137
|
private get agent();
|
|
124
138
|
private get sessionManager();
|
|
125
139
|
private get settingsManager();
|
|
140
|
+
private offerFirstUseHint;
|
|
126
141
|
constructor(runtimeHost: AgentSessionRuntime, options?: InteractiveModeOptions);
|
|
127
142
|
private getAutocompleteSourceTag;
|
|
128
143
|
private prefixAutocompleteDescription;
|
|
@@ -174,12 +189,37 @@ export declare class InteractiveMode {
|
|
|
174
189
|
private formatPathWithSource;
|
|
175
190
|
private formatDiagnostics;
|
|
176
191
|
private showLoadedResources;
|
|
192
|
+
/**
|
|
193
|
+
* Every startup diagnostic, grouped by the resource kind that produced it.
|
|
194
|
+
*
|
|
195
|
+
* One list feeds both the counted line in the header and the detailed
|
|
196
|
+
* listing, so the two can never disagree about how many issues exist.
|
|
197
|
+
*/
|
|
198
|
+
private collectDiagnosticGroups;
|
|
199
|
+
/**
|
|
200
|
+
* The counted line in the ruled band under the mark.
|
|
201
|
+
*
|
|
202
|
+
* The startup screen used to print all 152 skill names across fifteen rows.
|
|
203
|
+
* A count answers the only question that screen can usefully answer, which
|
|
204
|
+
* is what got loaded; the names live behind /resources now.
|
|
205
|
+
*/
|
|
206
|
+
/**
|
|
207
|
+
* The sigil row under the hint: how to reach commands, bash, and files.
|
|
208
|
+
*
|
|
209
|
+
* These are the only three characters that change what the composer does, so
|
|
210
|
+
* they take the accent and everything around them stays quiet.
|
|
211
|
+
*/
|
|
212
|
+
/** Live keybindings under the autocomplete dropdown. */
|
|
213
|
+
private buildAutocompleteFooter;
|
|
214
|
+
private buildStartupShortcuts;
|
|
215
|
+
private buildStartupInventory;
|
|
177
216
|
private bindCurrentSessionExtensions;
|
|
178
217
|
private applyFullscreenScrollbarSetting;
|
|
179
218
|
private applyRuntimeSettings;
|
|
180
219
|
private rebindCurrentSession;
|
|
181
220
|
private handleFatalRuntimeError;
|
|
182
221
|
private renderCurrentSessionState;
|
|
222
|
+
private clearPendingTools;
|
|
183
223
|
/**
|
|
184
224
|
* Get a registered tool definition by name (for custom rendering).
|
|
185
225
|
*/
|
|
@@ -234,6 +274,7 @@ export declare class InteractiveMode {
|
|
|
234
274
|
* Hide the extension selector.
|
|
235
275
|
*/
|
|
236
276
|
private hideExtensionSelector;
|
|
277
|
+
private showConfigurationIndex;
|
|
237
278
|
private showExtensionConfirm;
|
|
238
279
|
private promptForMissingSessionCwd;
|
|
239
280
|
/**
|
|
@@ -269,11 +310,14 @@ export declare class InteractiveMode {
|
|
|
269
310
|
private setupKeyHandlers;
|
|
270
311
|
private handleRightClickPaste;
|
|
271
312
|
private handleClipboardPaste;
|
|
313
|
+
private handleStartupSubmit;
|
|
272
314
|
private setupEditorSubmitHandler;
|
|
273
315
|
private subscribeToAgent;
|
|
274
316
|
private handleEvent;
|
|
275
317
|
/** Extract text content from a user message */
|
|
276
318
|
private getUserMessageText;
|
|
319
|
+
/** Show a managed-tool status update in the chat. */
|
|
320
|
+
private showManagedToolStatus;
|
|
277
321
|
/**
|
|
278
322
|
* Show a status message in the chat.
|
|
279
323
|
*
|
|
@@ -365,6 +409,8 @@ export declare class InteractiveMode {
|
|
|
365
409
|
* @param create Factory that receives a `done` callback and returns the component and focus target
|
|
366
410
|
*/
|
|
367
411
|
private showSelector;
|
|
412
|
+
private refreshFooterPermissionMode;
|
|
413
|
+
private applyPermissionMode;
|
|
368
414
|
private showSettingsSelector;
|
|
369
415
|
private handleModelCommand;
|
|
370
416
|
private findExactModelMatch;
|
|
@@ -422,7 +468,7 @@ export declare class InteractiveMode {
|
|
|
422
468
|
private checkDaxnutsEasterEgg;
|
|
423
469
|
private handleBashCommand;
|
|
424
470
|
private handleCompactCommand;
|
|
425
|
-
stop(): void;
|
|
471
|
+
stop(fullscreenExitOutput?: FullscreenExitOutput): void;
|
|
426
472
|
}
|
|
427
473
|
export {};
|
|
428
474
|
//# sourceMappingURL=interactive-mode.d.ts.map
|