@oh-my-pi/pi-coding-agent 17.2.10 → 17.2.12
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 +53 -0
- package/dist/{CHANGELOG-rhwzpexa.md → CHANGELOG-k9ghy5sn.md} +53 -0
- package/dist/cli.js +10775 -10762
- package/dist/types/advisor/runtime.d.ts +1 -1
- package/dist/types/capability/mcp.d.ts +11 -0
- package/dist/types/capability/skill.d.ts +6 -0
- package/dist/types/cli/command-help.d.ts +3 -0
- package/dist/types/commands/share.d.ts +25 -0
- package/dist/types/commit/agentic/index.d.ts +3 -1
- package/dist/types/commit/execute.d.ts +32 -0
- package/dist/types/commit/index.d.ts +2 -1
- package/dist/types/commit/pipeline.d.ts +7 -1
- package/dist/types/config/custom-models.d.ts +31 -0
- package/dist/types/config/model-config-values.d.ts +19 -0
- package/dist/types/config/model-patch.d.ts +93 -0
- package/dist/types/config/model-provider-discovery.d.ts +51 -0
- package/dist/types/config/model-registry.d.ts +9 -52
- package/dist/types/config/settings-schema.d.ts +1 -34
- package/dist/types/config/settings.d.ts +5 -3
- package/dist/types/debug/raw-sse-buffer.d.ts +9 -0
- package/dist/types/discovery/agent-plugin-format.d.ts +136 -0
- package/dist/types/discovery/agent-plugins.d.ts +1 -0
- package/dist/types/discovery/contained-path.d.ts +33 -0
- package/dist/types/discovery/index.d.ts +1 -0
- package/dist/types/eval/executor-base.d.ts +8 -2
- package/dist/types/eval/kernel-session-registry.d.ts +60 -0
- package/dist/types/export/share.d.ts +1 -1
- package/dist/types/extensibility/custom-tools/types.d.ts +2 -2
- package/dist/types/extensibility/extensions/loader.d.ts +7 -0
- package/dist/types/extensibility/extensions/types.d.ts +11 -0
- package/dist/types/extensibility/shared-events.d.ts +3 -2
- package/dist/types/extensibility/skills.d.ts +5 -0
- package/dist/types/lsp/diagnostics.d.ts +96 -0
- package/dist/types/lsp/index.d.ts +7 -128
- package/dist/types/lsp/servers.d.ts +72 -0
- package/dist/types/lsp/tool.d.ts +42 -0
- package/dist/types/lsp/workspace-diagnostics.d.ts +12 -0
- package/dist/types/lsp/writethrough.d.ts +33 -0
- package/dist/types/mcp/transports/header-policy.d.ts +46 -0
- package/dist/types/mcp/types.d.ts +15 -0
- package/dist/types/modes/components/agent-hub-projection.d.ts +2 -7
- package/dist/types/modes/components/agent-hub-renderer.d.ts +0 -7
- package/dist/types/modes/components/agent-hub.d.ts +2 -0
- package/dist/types/modes/components/agent-transcript-viewer.d.ts +2 -0
- package/dist/types/modes/components/chat-transcript-builder.d.ts +2 -0
- package/dist/types/modes/components/custom-editor.d.ts +1 -2
- package/dist/types/modes/components/status-line/types.d.ts +2 -0
- package/dist/types/modes/components/tool-execution.d.ts +2 -0
- package/dist/types/modes/theme/color.d.ts +19 -0
- package/dist/types/modes/theme/loader.d.ts +19 -0
- package/dist/types/modes/theme/schema.d.ts +175 -0
- package/dist/types/modes/theme/symbols.d.ts +28 -0
- package/dist/types/modes/theme/theme-class.d.ts +244 -0
- package/dist/types/modes/theme/theme.d.ts +9 -280
- package/dist/types/modes/theme/tui-adapters.d.ts +13 -0
- package/dist/types/modes/utils/transcript-render-helpers.d.ts +3 -2
- package/dist/types/registry/agent-registry.d.ts +1 -3
- package/dist/types/secrets/index.d.ts +26 -2
- package/dist/types/secrets/message-transform.d.ts +40 -0
- package/dist/types/secrets/obfuscator.d.ts +0 -108
- package/dist/types/secrets/placeholder-scan.d.ts +95 -0
- package/dist/types/secrets/placeholder.d.ts +94 -0
- package/dist/types/secrets/replacement.d.ts +82 -0
- package/dist/types/session/agent-session-events.d.ts +2 -2
- package/dist/types/session/agent-session-types.d.ts +6 -0
- package/dist/types/session/agent-session.d.ts +2 -2
- package/dist/types/session/messages.d.ts +1 -0
- package/dist/types/session/prewalk.d.ts +3 -1
- package/dist/types/session/session-handoff.d.ts +3 -3
- package/dist/types/session/session-manager.d.ts +32 -0
- package/dist/types/session/session-provider-boundary.d.ts +1 -1
- package/dist/types/session/session-tools.d.ts +8 -0
- package/dist/types/session/turn-recovery.d.ts +9 -4
- package/dist/types/slash-commands/builtin-collaboration.d.ts +2 -0
- package/dist/types/slash-commands/builtin-completions.d.ts +36 -0
- package/dist/types/slash-commands/builtin-control.d.ts +2 -0
- package/dist/types/slash-commands/builtin-lifecycle.d.ts +3 -0
- package/dist/types/slash-commands/builtin-marketplace.d.ts +11 -0
- package/dist/types/slash-commands/builtin-modes.d.ts +5 -0
- package/dist/types/slash-commands/builtin-registry.d.ts +1 -1
- package/dist/types/slash-commands/builtin-session.d.ts +2 -0
- package/dist/types/task/index.d.ts +2 -0
- package/dist/types/tools/gh-common.d.ts +69 -0
- package/dist/types/tools/gh-pr-checkout.d.ts +84 -0
- package/dist/types/tools/gh-pr-diff.d.ts +102 -0
- package/dist/types/tools/gh-run-watch.d.ts +78 -0
- package/dist/types/tools/gh-search.d.ts +61 -0
- package/dist/types/tools/gh-types.d.ts +340 -0
- package/dist/types/tools/gh-view.d.ts +88 -0
- package/dist/types/tools/gh.d.ts +4 -201
- package/dist/types/tools/read-archive.d.ts +16 -0
- package/dist/types/tools/read-format.d.ts +104 -0
- package/dist/types/tools/read-path-resolution.d.ts +19 -0
- package/dist/types/tools/read-pdf-images.d.ts +12 -0
- package/dist/types/tools/read-renderer.d.ts +24 -0
- package/dist/types/tools/read-selector.d.ts +27 -0
- package/dist/types/tools/read-sqlite.d.ts +16 -0
- package/dist/types/tools/read-summary.d.ts +19 -0
- package/dist/types/tools/read.d.ts +1 -23
- package/dist/types/tools/shell-tokenize.d.ts +18 -1
- package/dist/types/utils/changelog.d.ts +0 -5
- package/package.json +13 -13
- package/scripts/legacy-pi-virtual-module.ts +4 -1
- package/src/advisor/runtime.ts +12 -7
- package/src/capability/mcp.ts +11 -0
- package/src/capability/skill.ts +6 -0
- package/src/cli/command-help.ts +4 -0
- package/src/cli/gallery-cli.ts +1 -1
- package/src/cli-commands.ts +5 -0
- package/src/commands/commit.ts +16 -3
- package/src/commands/share.ts +71 -0
- package/src/commit/agentic/index.ts +39 -21
- package/src/commit/execute.ts +56 -0
- package/src/commit/index.ts +2 -1
- package/src/commit/pipeline.ts +20 -7
- package/src/config/custom-models.ts +188 -0
- package/src/config/model-config-values.ts +128 -0
- package/src/config/model-discovery.ts +1 -1
- package/src/config/model-patch.ts +252 -0
- package/src/config/model-provider-discovery.ts +132 -0
- package/src/config/model-registry.ts +84 -704
- package/src/config/settings-schema.ts +2 -33
- package/src/config/settings.ts +53 -3
- package/src/debug/raw-sse-buffer.ts +20 -0
- package/src/discovery/agent-plugin-format.ts +551 -0
- package/src/discovery/agent-plugins.ts +341 -0
- package/src/discovery/claude-plugins.ts +21 -5
- package/src/discovery/contained-path.ts +75 -0
- package/src/discovery/helpers.ts +23 -9
- package/src/discovery/index.ts +1 -0
- package/src/discovery/omp-plugins.ts +20 -7
- package/src/edit/hashline/diff.ts +5 -1
- package/src/eval/executor-base.ts +39 -6
- package/src/eval/jl/executor.ts +82 -371
- package/src/eval/kernel-session-registry.ts +398 -0
- package/src/eval/py/executor.ts +53 -261
- package/src/eval/rb/executor.ts +36 -279
- package/src/exec/non-interactive-env.ts +1 -0
- package/src/export/share.ts +2 -1
- package/src/extensibility/custom-tools/types.ts +2 -2
- package/src/extensibility/extensions/loader.ts +78 -14
- package/src/extensibility/extensions/runner.ts +6 -0
- package/src/extensibility/extensions/types.ts +12 -0
- package/src/extensibility/plugins/marketplace/manager.ts +2 -1
- package/src/extensibility/shared-events.ts +3 -2
- package/src/extensibility/skills.ts +9 -0
- package/src/internal-urls/skill-protocol.ts +14 -0
- package/src/internal-urls/vault-protocol.ts +2 -2
- package/src/launch/client.ts +11 -1
- package/src/launch/protocol.ts +7 -2
- package/src/lsp/diagnostics.ts +516 -0
- package/src/lsp/index.ts +20 -2819
- package/src/lsp/servers.ts +296 -0
- package/src/lsp/tool.ts +1352 -0
- package/src/lsp/workspace-diagnostics.ts +170 -0
- package/src/lsp/writethrough.ts +561 -0
- package/src/main.ts +3 -2
- package/src/mcp/config.ts +3 -0
- package/src/mcp/manager.ts +12 -9
- package/src/mcp/transports/header-policy.ts +95 -0
- package/src/mcp/transports/http.ts +35 -52
- package/src/mcp/transports/sse.ts +20 -27
- package/src/mcp/types.ts +15 -0
- package/src/modes/acp/acp-agent.ts +15 -4
- package/src/modes/components/agent-dashboard.ts +2 -0
- package/src/modes/components/agent-hub-projection.ts +2 -2
- package/src/modes/components/agent-hub-renderer.ts +3 -7
- package/src/modes/components/agent-hub.ts +5 -0
- package/src/modes/components/agent-transcript-viewer.ts +3 -0
- package/src/modes/components/chat-transcript-builder.ts +3 -0
- package/src/modes/components/custom-editor.ts +0 -9
- package/src/modes/components/status-line/component.ts +1 -0
- package/src/modes/components/status-line/segments.ts +6 -4
- package/src/modes/components/status-line/types.ts +2 -0
- package/src/modes/components/tool-execution.ts +13 -16
- package/src/modes/components/tree-selector.ts +62 -3
- package/src/modes/controllers/command-controller.ts +8 -2
- package/src/modes/controllers/event-controller.ts +15 -15
- package/src/modes/controllers/input-controller.ts +20 -2
- package/src/modes/controllers/selector-controller.ts +1 -0
- package/src/modes/theme/color.ts +133 -0
- package/src/modes/theme/loader.ts +178 -0
- package/src/modes/theme/schema.ts +263 -0
- package/src/modes/theme/symbols.ts +1000 -0
- package/src/modes/theme/theme-class.ts +611 -0
- package/src/modes/theme/theme.ts +27 -2453
- package/src/modes/theme/tui-adapters.ts +279 -0
- package/src/modes/utils/transcript-render-helpers.ts +4 -2
- package/src/modes/utils/ui-helpers.ts +1 -0
- package/src/registry/agent-registry.ts +2 -2
- package/src/sdk.ts +6 -49
- package/src/secrets/index.ts +51 -6
- package/src/secrets/message-transform.ts +287 -0
- package/src/secrets/obfuscator.ts +39 -1303
- package/src/secrets/placeholder-scan.ts +506 -0
- package/src/secrets/placeholder.ts +309 -0
- package/src/secrets/replacement.ts +216 -0
- package/src/session/agent-session-events.ts +2 -2
- package/src/session/agent-session-types.ts +6 -0
- package/src/session/agent-session.ts +146 -21
- package/src/session/indexed-session-storage.ts +7 -2
- package/src/session/messages.ts +1 -0
- package/src/session/prewalk.ts +57 -17
- package/src/session/session-advisors.ts +32 -34
- package/src/session/session-context.ts +3 -5
- package/src/session/session-handoff.ts +39 -16
- package/src/session/session-manager.ts +67 -3
- package/src/session/session-provider-boundary.ts +3 -6
- package/src/session/session-tools.ts +37 -3
- package/src/session/todo-tracker.ts +11 -1
- package/src/session/turn-recovery.ts +115 -84
- package/src/slash-commands/builtin-collaboration.ts +504 -0
- package/src/slash-commands/builtin-completions.ts +291 -0
- package/src/slash-commands/builtin-control.ts +78 -0
- package/src/slash-commands/builtin-lifecycle.ts +506 -0
- package/src/slash-commands/builtin-marketplace.ts +567 -0
- package/src/slash-commands/builtin-modes.ts +518 -0
- package/src/slash-commands/builtin-registry.ts +21 -2996
- package/src/slash-commands/builtin-session.ts +592 -0
- package/src/task/executor.ts +17 -14
- package/src/task/index.ts +21 -6
- package/src/tools/bash-skill-urls.ts +15 -0
- package/src/tools/bash.ts +10 -11
- package/src/tools/debug.ts +1 -1
- package/src/tools/gh-common.ts +288 -0
- package/src/tools/gh-pr-checkout.ts +679 -0
- package/src/tools/gh-pr-diff.ts +473 -0
- package/src/tools/gh-run-watch.ts +1015 -0
- package/src/tools/gh-search.ts +500 -0
- package/src/tools/gh-types.ts +379 -0
- package/src/tools/gh-view.ts +612 -0
- package/src/tools/gh.ts +109 -3821
- package/src/tools/jtd-to-json-schema.ts +123 -21
- package/src/tools/read-archive.ts +209 -0
- package/src/tools/read-format.ts +593 -0
- package/src/tools/read-path-resolution.ts +36 -0
- package/src/tools/read-pdf-images.ts +250 -0
- package/src/tools/read-renderer.ts +289 -0
- package/src/tools/read-selector.ts +84 -0
- package/src/tools/read-sqlite.ts +215 -0
- package/src/tools/read-summary.ts +199 -0
- package/src/tools/read.ts +82 -1824
- package/src/tools/shell-tokenize.ts +99 -1
- package/src/utils/changelog.ts +1 -1
- package/src/utils/title-generator.ts +3 -1
- package/src/web/search/providers/exa.ts +1 -1
- package/src/web/search/providers/zai.ts +12 -3
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP header precedence and redirect-origin policy for remote MCP transports.
|
|
3
|
+
*
|
|
4
|
+
* Two invariants, applied at every transport fetch:
|
|
5
|
+
*
|
|
6
|
+
* 1. Client-generated headers (protocol headers like `Content-Type`, `Accept`,
|
|
7
|
+
* `Mcp-Session-Id`, and authorization) take precedence over configured
|
|
8
|
+
* headers with the same case-insensitive name. Configured headers can never
|
|
9
|
+
* corrupt the MCP wire protocol via casing tricks.
|
|
10
|
+
* 2. Origin-locked servers (Agent Plugins §7.2.1) never forward configured
|
|
11
|
+
* headers to a different origin: redirects are followed manually and
|
|
12
|
+
* configured headers are attached only when the hop targets the configured
|
|
13
|
+
* origin. Method-changing redirects of non-GET requests are refused.
|
|
14
|
+
*/
|
|
15
|
+
/** Header buckets for one MCP HTTP request. */
|
|
16
|
+
interface MCPHeaderSources {
|
|
17
|
+
/** Client-generated HTTP/MCP/authorization headers; win case-insensitively. */
|
|
18
|
+
generated: Record<string, string>;
|
|
19
|
+
/** Configured headers from the server entry (package or user config). */
|
|
20
|
+
configured?: Record<string, string>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Merge configured headers under client-generated ones: a configured entry is
|
|
24
|
+
* dropped when a generated header with the same case-insensitive name exists.
|
|
25
|
+
*/
|
|
26
|
+
export declare function mergeMCPHeaders({ generated, configured }: MCPHeaderSources): Record<string, string>;
|
|
27
|
+
/**
|
|
28
|
+
* Set a client-generated header, removing any existing entry with the same
|
|
29
|
+
* case-insensitive name so the generated value is the only one sent.
|
|
30
|
+
*/
|
|
31
|
+
export declare function setGeneratedHeader(headers: Record<string, string>, name: string, value: string): void;
|
|
32
|
+
export interface MCPFetchInit {
|
|
33
|
+
method: "GET" | "POST" | "DELETE";
|
|
34
|
+
body?: string;
|
|
35
|
+
signal?: AbortSignal;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Fetch an MCP endpoint with header precedence and, for origin-locked servers,
|
|
39
|
+
* manual redirect handling that strips configured headers on cross-origin hops.
|
|
40
|
+
*
|
|
41
|
+
* Non-locked servers keep the platform default redirect behavior. Locked
|
|
42
|
+
* non-GET requests only follow 307/308 (method-preserving); a 301/302/303
|
|
43
|
+
* redirect of a JSON-RPC POST is a connection error, never a silent GET.
|
|
44
|
+
*/
|
|
45
|
+
export declare function mcpFetch(url: string, init: MCPFetchInit, sources: MCPHeaderSources, originLocked: boolean): Promise<Response>;
|
|
46
|
+
export {};
|
|
@@ -82,6 +82,13 @@ export interface MCPStdioServerConfig extends MCPServerConfigBase {
|
|
|
82
82
|
command: string;
|
|
83
83
|
args?: string[];
|
|
84
84
|
env?: Record<string, string>;
|
|
85
|
+
/**
|
|
86
|
+
* `literal`: env values are opaque plugin package data (Agent Plugins
|
|
87
|
+
* §§4.1/9.2) — no env-name lookup, no `!command` execution, no dropping of
|
|
88
|
+
* empty values. The provider already applied the only permitted expansion
|
|
89
|
+
* (`${PLUGIN_ROOT}`/`${PLUGIN_DATA}`).
|
|
90
|
+
*/
|
|
91
|
+
envPolicy?: "literal";
|
|
85
92
|
cwd?: string;
|
|
86
93
|
}
|
|
87
94
|
/** HTTP server configuration (Streamable HTTP transport) */
|
|
@@ -89,12 +96,20 @@ export interface MCPHttpServerConfig extends MCPServerConfigBase {
|
|
|
89
96
|
type: "http";
|
|
90
97
|
url: string;
|
|
91
98
|
headers?: Record<string, string>;
|
|
99
|
+
/**
|
|
100
|
+
* `origin-locked`: configured headers are literal package data pinned to the
|
|
101
|
+
* configured URL's origin (Agent Plugins §7.2.1) — never expanded, never
|
|
102
|
+
* forwarded cross-origin, and client-generated headers win case-insensitively.
|
|
103
|
+
*/
|
|
104
|
+
headerPolicy?: "origin-locked";
|
|
92
105
|
}
|
|
93
106
|
/** SSE server configuration (deprecated, use HTTP) */
|
|
94
107
|
export interface MCPSseServerConfig extends MCPServerConfigBase {
|
|
95
108
|
type: "sse";
|
|
96
109
|
url: string;
|
|
97
110
|
headers?: Record<string, string>;
|
|
111
|
+
/** See {@link MCPHttpServerConfig.headerPolicy}. */
|
|
112
|
+
headerPolicy?: "origin-locked";
|
|
98
113
|
}
|
|
99
114
|
export type MCPServerConfig = MCPStdioServerConfig | MCPHttpServerConfig | MCPSseServerConfig;
|
|
100
115
|
export declare const MCP_CONFIG_SCHEMA_URL = "https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/coding-agent/src/config/mcp-schema.json";
|
|
@@ -6,7 +6,7 @@ export interface AggregateMetrics extends AgentMetrics {
|
|
|
6
6
|
/** Rows whose duration is an observer-measured active runtime. */
|
|
7
7
|
activeDurationAgents: number;
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
interface AgentTreeProjection {
|
|
10
10
|
rows: AgentRef[];
|
|
11
11
|
depthById: Map<string, number>;
|
|
12
12
|
parentById: Map<string, string>;
|
|
@@ -15,12 +15,6 @@ export interface AgentTreeProjection {
|
|
|
15
15
|
export declare const STATUS_ORDER: Record<AgentStatus, number>;
|
|
16
16
|
/** Exact observer usage for one roster entry. */
|
|
17
17
|
export declare function progressMetrics(observed: ObservableSession | undefined): AgentMetrics | undefined;
|
|
18
|
-
/**
|
|
19
|
-
* Read direct assistant usage from a live session. SessionStats also includes
|
|
20
|
-
* usage embedded in completed `task` tool results, so using it for a parent
|
|
21
|
-
* row would double-count child rows in the aggregate.
|
|
22
|
-
*/
|
|
23
|
-
export declare function readSessionMetrics(session: NonNullable<AgentRef["session"]>): AgentMetrics | undefined;
|
|
24
18
|
export declare function aggregateMetrics(args: {
|
|
25
19
|
rows: readonly AgentRef[];
|
|
26
20
|
observedById: ReadonlyMap<string, ObservableSession>;
|
|
@@ -36,3 +30,4 @@ export declare function aggregateMetrics(args: {
|
|
|
36
30
|
};
|
|
37
31
|
/** Parent-before-child projection preserving the roster's stable sibling order. */
|
|
38
32
|
export declare function projectAgentTree(refs: readonly AgentRef[]): AgentTreeProjection;
|
|
33
|
+
export {};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ThinkingLevel } from "@oh-my-pi/pi-agent-core";
|
|
2
1
|
import type { Settings } from "../../config/settings.js";
|
|
3
2
|
import { type AgentRef } from "../../registry/agent-registry.js";
|
|
4
3
|
import type { ObservableSession } from "../session-observer-registry.js";
|
|
@@ -7,8 +6,6 @@ export interface RosterRender {
|
|
|
7
6
|
lines: string[];
|
|
8
7
|
hitRows: Array<number | undefined>;
|
|
9
8
|
}
|
|
10
|
-
/** Legacy progress snapshots may omit counters; snapshot absence remains distinct. */
|
|
11
|
-
export declare function metricNumber(value: number | undefined): number;
|
|
12
9
|
/** Compute the max content width for the current terminal, accounting for chrome. */
|
|
13
10
|
export declare function contentWidth(): number;
|
|
14
11
|
/** Remove terminal controls and normalize a value before it reaches the TUI. */
|
|
@@ -19,12 +16,8 @@ export declare function clampHubLine(line: string, width: number): string;
|
|
|
19
16
|
/** Status glyph, colored per theme status conventions. The title-line counts spell out the words. */
|
|
20
17
|
export declare function statusGlyph(status: AgentRef["status"]): string;
|
|
21
18
|
export declare function statusText(status: AgentRef["status"], text: string): string;
|
|
22
|
-
/** Model id + thinking level (`sonnet-4-6 ◒ high`), level colored per theme. */
|
|
23
|
-
export declare function formatModelBadge(modelId: string, level: ThinkingLevel | undefined): string;
|
|
24
19
|
/** Textual model-role tag; color reinforces (but never replaces) the label. */
|
|
25
20
|
export declare function formatRoleBadge(role: string, settings: Settings): string;
|
|
26
|
-
/** Format a resolved selector, preserving provider identity when requested. */
|
|
27
|
-
export declare function formatResolvedModelBadge(resolved: string, preserveProvider?: boolean, fallbackLevel?: ThinkingLevel): string;
|
|
28
21
|
/**
|
|
29
22
|
* Resolved model + reasoning level for a hub row. Exact executor progress is
|
|
30
23
|
* authoritative (and survives completion); direct live sessions are the
|
|
@@ -56,6 +56,8 @@ export interface AgentHubDeps {
|
|
|
56
56
|
ui?: TUI;
|
|
57
57
|
/** Tool lookup for transcript renderers (labels, custom render functions). */
|
|
58
58
|
getTool?: (name: string) => AgentTool | undefined;
|
|
59
|
+
/** Whether the active registry entry came from a built-in factory. */
|
|
60
|
+
isBuiltInTool?: (name: string) => boolean;
|
|
59
61
|
/** Extension message renderers for custom messages in the transcript. */
|
|
60
62
|
getMessageRenderer?: (customType: string) => MessageRenderer | undefined;
|
|
61
63
|
/** Cwd used by tool renderers for path shortening; defaults to the project dir. */
|
|
@@ -17,6 +17,8 @@ export interface AgentTranscriptViewerDeps {
|
|
|
17
17
|
lifecycle?: () => AgentLifecycleManager;
|
|
18
18
|
ui: TUI;
|
|
19
19
|
getTool?: (name: string) => AgentTool | undefined;
|
|
20
|
+
/** Whether the active registry entry came from a built-in factory. */
|
|
21
|
+
isBuiltInTool?: (name: string) => boolean;
|
|
20
22
|
getMessageRenderer?: (customType: string) => MessageRenderer | undefined;
|
|
21
23
|
cwd: string;
|
|
22
24
|
hideThinkingBlock?: () => boolean;
|
|
@@ -19,6 +19,8 @@ import { TranscriptContainer } from "./transcript-container.js";
|
|
|
19
19
|
export interface ChatTranscriptBuilderDeps {
|
|
20
20
|
ui: TUI;
|
|
21
21
|
getTool?: (name: string) => AgentTool | undefined;
|
|
22
|
+
/** Whether the active registry entry came from a built-in factory. */
|
|
23
|
+
isBuiltInTool?: (name: string) => boolean;
|
|
22
24
|
getMessageRenderer?: (customType: string) => MessageRenderer | undefined;
|
|
23
25
|
cwd: string;
|
|
24
26
|
hideThinkingBlock?: () => boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ImageContent } from "@oh-my-pi/pi-ai";
|
|
2
2
|
import { Editor, type KeyId, TUI } from "@oh-my-pi/pi-tui";
|
|
3
3
|
import type { AppKeybinding } from "../../config/keybindings.js";
|
|
4
|
-
type ConfigurableEditorAction = Extract<AppKeybinding, "app.interrupt" | "app.clear" | "app.exit" | "app.suspend" | "app.display.reset" | "app.thinking.cycle" | "app.model.cycleForward" | "app.model.cycleBackward" | "app.model.select" | "app.model.selectTemporary" | "app.tools.
|
|
4
|
+
type ConfigurableEditorAction = Extract<AppKeybinding, "app.interrupt" | "app.clear" | "app.exit" | "app.suspend" | "app.display.reset" | "app.thinking.cycle" | "app.model.cycleForward" | "app.model.cycleBackward" | "app.model.select" | "app.model.selectTemporary" | "app.tools.toggleVisibility" | "app.thinking.toggle" | "app.editor.external" | "app.history.search" | "app.message.dequeue" | "app.retry" | "app.clipboard.pasteImage" | "app.clipboard.pasteTextRaw" | "app.clipboard.copyPrompt">;
|
|
5
5
|
/** Max gap (ms) between two spaces for the later one to count as OS key auto-repeat rather than a
|
|
6
6
|
* deliberate press. OS auto-repeat is fast; a deliberate tap (even a fast one) is slower. */
|
|
7
7
|
export declare const SPACE_REPEAT_MAX_GAP_MS = 120;
|
|
@@ -140,7 +140,6 @@ export declare class CustomEditor extends Editor {
|
|
|
140
140
|
onCycleModelForward?: () => void;
|
|
141
141
|
onCycleModelBackward?: () => void;
|
|
142
142
|
onSelectModel?: () => void;
|
|
143
|
-
onExpandTools?: () => void;
|
|
144
143
|
onToggleToolActivity?: () => void;
|
|
145
144
|
onToggleThinking?: () => void;
|
|
146
145
|
onExternalEditor?: () => void;
|
|
@@ -52,6 +52,8 @@ export interface SegmentContext {
|
|
|
52
52
|
session: AgentSession;
|
|
53
53
|
/** Focused subagent id while the view is proxied at its session, undefined otherwise. */
|
|
54
54
|
focusedAgentId?: string | undefined;
|
|
55
|
+
/** Effective `statusLine.sessionAccent`; `false` disables hash-derived accent colors, while `true` or omission enables them. */
|
|
56
|
+
sessionAccent?: boolean;
|
|
55
57
|
activeRepo: ActiveRepoContext | null;
|
|
56
58
|
width: number;
|
|
57
59
|
options: StatusLineSegmentOptions;
|
|
@@ -28,6 +28,8 @@ export interface ToolExecutionOptions {
|
|
|
28
28
|
/** Session-persistent edit clipboard register, forked per preview frame. */
|
|
29
29
|
clipboard?: Clipboard;
|
|
30
30
|
showImages?: boolean;
|
|
31
|
+
/** Allow the name-keyed renderer registry only when the active tool is the built-in implementation. */
|
|
32
|
+
useBuiltInRenderer?: boolean;
|
|
31
33
|
editFuzzyThreshold?: number;
|
|
32
34
|
editAllowFuzzy?: boolean;
|
|
33
35
|
/** Live-region probe used to settle detached task progress once the block
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ColorMode, ColorValue } from "./schema.js";
|
|
2
|
+
export declare function detectColorMode(): ColorMode;
|
|
3
|
+
export declare function colorToAnsi(color: string, mode: ColorMode): string;
|
|
4
|
+
export declare function fgAnsi(color: string | number, mode: ColorMode): string;
|
|
5
|
+
export declare function bgAnsi(color: string | number, mode: ColorMode): string;
|
|
6
|
+
export declare function resolveVarRefs(value: ColorValue, vars: Record<string, ColorValue>, visited?: Set<string>): string | number;
|
|
7
|
+
export declare function resolveThemeColors<T extends Record<string, ColorValue>>(colors: T, vars?: Record<string, ColorValue>): Record<keyof T, string | number>;
|
|
8
|
+
/**
|
|
9
|
+
* Resolve a theme color value (hex string or 256-color index) to a CSS hex string.
|
|
10
|
+
* Empty string represents the default terminal color.
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolveToHex(value: string | number, isLight: boolean): string;
|
|
13
|
+
/**
|
|
14
|
+
* Convert a 256-color index to hex string.
|
|
15
|
+
* Indices 0-15: basic colors (approximate)
|
|
16
|
+
* Indices 16-231: 6x6x6 color cube
|
|
17
|
+
* Indices 232-255: grayscale ramp
|
|
18
|
+
*/
|
|
19
|
+
export declare function ansi256ToHex(index: number): string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ColorMode, type ThemeJson } from "./schema.js";
|
|
2
|
+
import { type SymbolPreset } from "./symbols.js";
|
|
3
|
+
import { Theme } from "./theme-class.js";
|
|
4
|
+
export declare function getBuiltinThemes(): Record<string, ThemeJson>;
|
|
5
|
+
export declare function getAvailableThemes(): Promise<string[]>;
|
|
6
|
+
export interface ThemeInfo {
|
|
7
|
+
name: string;
|
|
8
|
+
path: string | undefined;
|
|
9
|
+
}
|
|
10
|
+
export declare function getAvailableThemesWithPaths(): Promise<ThemeInfo[]>;
|
|
11
|
+
export declare function loadThemeJson(name: string): Promise<ThemeJson>;
|
|
12
|
+
export interface CreateThemeOptions {
|
|
13
|
+
mode?: ColorMode;
|
|
14
|
+
symbolPresetOverride?: SymbolPreset;
|
|
15
|
+
colorBlindMode?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function createTheme(themeJson: ThemeJson, options?: CreateThemeOptions): Theme;
|
|
18
|
+
export declare function loadTheme(name: string, options?: CreateThemeOptions): Promise<Theme>;
|
|
19
|
+
export declare function getThemeByName(name: string): Promise<Theme | undefined>;
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import type { SpinnerFramesOverride } from "./symbols.js";
|
|
2
|
+
export type ColorValue = string | number;
|
|
3
|
+
export declare const themeJsonSchema: import("@oh-my-pi/omptype").FluentType<{
|
|
4
|
+
$schema?: string | undefined;
|
|
5
|
+
colors: {
|
|
6
|
+
accent: string | number;
|
|
7
|
+
bashMode: string | number;
|
|
8
|
+
border: string | number;
|
|
9
|
+
borderAccent: string | number;
|
|
10
|
+
borderMuted: string | number;
|
|
11
|
+
customMessageBg: string | number;
|
|
12
|
+
customMessageLabel: string | number;
|
|
13
|
+
customMessageText: string | number;
|
|
14
|
+
dim: string | number;
|
|
15
|
+
error: string | number;
|
|
16
|
+
mdCode: string | number;
|
|
17
|
+
mdCodeBlock: string | number;
|
|
18
|
+
mdCodeBlockBorder: string | number;
|
|
19
|
+
mdHeading: string | number;
|
|
20
|
+
mdHr: string | number;
|
|
21
|
+
mdLink: string | number;
|
|
22
|
+
mdLinkUrl: string | number;
|
|
23
|
+
mdListBullet: string | number;
|
|
24
|
+
mdQuote: string | number;
|
|
25
|
+
mdQuoteBorder: string | number;
|
|
26
|
+
muted: string | number;
|
|
27
|
+
pythonMode: string | number;
|
|
28
|
+
selectedBg: string | number;
|
|
29
|
+
statusLineBg: string | number;
|
|
30
|
+
statusLineContext: string | number;
|
|
31
|
+
statusLineCost: string | number;
|
|
32
|
+
statusLineDirty: string | number;
|
|
33
|
+
statusLineGitClean: string | number;
|
|
34
|
+
statusLineGitDirty: string | number;
|
|
35
|
+
statusLineModel: string | number;
|
|
36
|
+
statusLineOutput: string | number;
|
|
37
|
+
statusLinePath: string | number;
|
|
38
|
+
statusLineSep: string | number;
|
|
39
|
+
statusLineSpend: string | number;
|
|
40
|
+
statusLineStaged: string | number;
|
|
41
|
+
statusLineSubagents: string | number;
|
|
42
|
+
statusLineUntracked: string | number;
|
|
43
|
+
success: string | number;
|
|
44
|
+
syntaxComment: string | number;
|
|
45
|
+
syntaxFunction: string | number;
|
|
46
|
+
syntaxKeyword: string | number;
|
|
47
|
+
syntaxNumber: string | number;
|
|
48
|
+
syntaxOperator: string | number;
|
|
49
|
+
syntaxPunctuation: string | number;
|
|
50
|
+
syntaxString: string | number;
|
|
51
|
+
syntaxType: string | number;
|
|
52
|
+
syntaxVariable: string | number;
|
|
53
|
+
text: string | number;
|
|
54
|
+
thinkingHigh: string | number;
|
|
55
|
+
thinkingLow: string | number;
|
|
56
|
+
thinkingMax?: string | number | undefined;
|
|
57
|
+
thinkingMedium: string | number;
|
|
58
|
+
thinkingMinimal: string | number;
|
|
59
|
+
thinkingOff: string | number;
|
|
60
|
+
thinkingText: string | number;
|
|
61
|
+
thinkingXhigh: string | number;
|
|
62
|
+
toolDiffAdded: string | number;
|
|
63
|
+
toolDiffContext: string | number;
|
|
64
|
+
toolDiffRemoved: string | number;
|
|
65
|
+
toolErrorBg: string | number;
|
|
66
|
+
toolOutput: string | number;
|
|
67
|
+
toolPendingBg: string | number;
|
|
68
|
+
toolSuccessBg: string | number;
|
|
69
|
+
toolTitle: string | number;
|
|
70
|
+
userMessageBg: string | number;
|
|
71
|
+
userMessageText: string | number;
|
|
72
|
+
warning: string | number;
|
|
73
|
+
};
|
|
74
|
+
export?: {
|
|
75
|
+
cardBg?: string | number | undefined;
|
|
76
|
+
infoBg?: string | number | undefined;
|
|
77
|
+
pageBg?: string | number | undefined;
|
|
78
|
+
} | undefined;
|
|
79
|
+
name: string;
|
|
80
|
+
symbols?: {
|
|
81
|
+
overrides?: Record<string, string> | undefined;
|
|
82
|
+
preset?: "ascii" | "nerd" | "unicode" | undefined;
|
|
83
|
+
spinnerFrames?: SpinnerFramesOverride | undefined;
|
|
84
|
+
} | undefined;
|
|
85
|
+
vars?: Record<string, string | number> | undefined;
|
|
86
|
+
}, {
|
|
87
|
+
$schema?: string | undefined;
|
|
88
|
+
colors: {
|
|
89
|
+
accent: string | number;
|
|
90
|
+
bashMode: string | number;
|
|
91
|
+
border: string | number;
|
|
92
|
+
borderAccent: string | number;
|
|
93
|
+
borderMuted: string | number;
|
|
94
|
+
customMessageBg: string | number;
|
|
95
|
+
customMessageLabel: string | number;
|
|
96
|
+
customMessageText: string | number;
|
|
97
|
+
dim: string | number;
|
|
98
|
+
error: string | number;
|
|
99
|
+
mdCode: string | number;
|
|
100
|
+
mdCodeBlock: string | number;
|
|
101
|
+
mdCodeBlockBorder: string | number;
|
|
102
|
+
mdHeading: string | number;
|
|
103
|
+
mdHr: string | number;
|
|
104
|
+
mdLink: string | number;
|
|
105
|
+
mdLinkUrl: string | number;
|
|
106
|
+
mdListBullet: string | number;
|
|
107
|
+
mdQuote: string | number;
|
|
108
|
+
mdQuoteBorder: string | number;
|
|
109
|
+
muted: string | number;
|
|
110
|
+
pythonMode: string | number;
|
|
111
|
+
selectedBg: string | number;
|
|
112
|
+
statusLineBg: string | number;
|
|
113
|
+
statusLineContext: string | number;
|
|
114
|
+
statusLineCost: string | number;
|
|
115
|
+
statusLineDirty: string | number;
|
|
116
|
+
statusLineGitClean: string | number;
|
|
117
|
+
statusLineGitDirty: string | number;
|
|
118
|
+
statusLineModel: string | number;
|
|
119
|
+
statusLineOutput: string | number;
|
|
120
|
+
statusLinePath: string | number;
|
|
121
|
+
statusLineSep: string | number;
|
|
122
|
+
statusLineSpend: string | number;
|
|
123
|
+
statusLineStaged: string | number;
|
|
124
|
+
statusLineSubagents: string | number;
|
|
125
|
+
statusLineUntracked: string | number;
|
|
126
|
+
success: string | number;
|
|
127
|
+
syntaxComment: string | number;
|
|
128
|
+
syntaxFunction: string | number;
|
|
129
|
+
syntaxKeyword: string | number;
|
|
130
|
+
syntaxNumber: string | number;
|
|
131
|
+
syntaxOperator: string | number;
|
|
132
|
+
syntaxPunctuation: string | number;
|
|
133
|
+
syntaxString: string | number;
|
|
134
|
+
syntaxType: string | number;
|
|
135
|
+
syntaxVariable: string | number;
|
|
136
|
+
text: string | number;
|
|
137
|
+
thinkingHigh: string | number;
|
|
138
|
+
thinkingLow: string | number;
|
|
139
|
+
thinkingMax?: string | number | undefined;
|
|
140
|
+
thinkingMedium: string | number;
|
|
141
|
+
thinkingMinimal: string | number;
|
|
142
|
+
thinkingOff: string | number;
|
|
143
|
+
thinkingText: string | number;
|
|
144
|
+
thinkingXhigh: string | number;
|
|
145
|
+
toolDiffAdded: string | number;
|
|
146
|
+
toolDiffContext: string | number;
|
|
147
|
+
toolDiffRemoved: string | number;
|
|
148
|
+
toolErrorBg: string | number;
|
|
149
|
+
toolOutput: string | number;
|
|
150
|
+
toolPendingBg: string | number;
|
|
151
|
+
toolSuccessBg: string | number;
|
|
152
|
+
toolTitle: string | number;
|
|
153
|
+
userMessageBg: string | number;
|
|
154
|
+
userMessageText: string | number;
|
|
155
|
+
warning: string | number;
|
|
156
|
+
};
|
|
157
|
+
export?: {
|
|
158
|
+
cardBg?: string | number | undefined;
|
|
159
|
+
infoBg?: string | number | undefined;
|
|
160
|
+
pageBg?: string | number | undefined;
|
|
161
|
+
} | undefined;
|
|
162
|
+
name: string;
|
|
163
|
+
symbols?: {
|
|
164
|
+
overrides?: Record<string, string> | undefined;
|
|
165
|
+
preset?: "ascii" | "nerd" | "unicode" | undefined;
|
|
166
|
+
spinnerFrames?: unknown;
|
|
167
|
+
} | undefined;
|
|
168
|
+
vars?: Record<string, string | number> | undefined;
|
|
169
|
+
}>;
|
|
170
|
+
export type ThemeJson = typeof themeJsonSchema.infer;
|
|
171
|
+
export type ThemeColor = "accent" | "border" | "borderAccent" | "borderMuted" | "success" | "error" | "warning" | "muted" | "dim" | "text" | "thinkingText" | "userMessageText" | "customMessageText" | "customMessageLabel" | "toolTitle" | "toolOutput" | "mdHeading" | "mdLink" | "mdLinkUrl" | "mdCode" | "mdCodeBlock" | "mdCodeBlockBorder" | "mdQuote" | "mdQuoteBorder" | "mdHr" | "mdListBullet" | "toolDiffAdded" | "toolDiffRemoved" | "toolDiffContext" | "syntaxComment" | "syntaxKeyword" | "syntaxFunction" | "syntaxVariable" | "syntaxString" | "syntaxNumber" | "syntaxType" | "syntaxOperator" | "syntaxPunctuation" | "thinkingOff" | "thinkingMinimal" | "thinkingLow" | "thinkingMedium" | "thinkingHigh" | "thinkingXhigh" | "thinkingMax" | "bashMode" | "pythonMode" | "statusLineSep" | "statusLineModel" | "statusLinePath" | "statusLineGitClean" | "statusLineGitDirty" | "statusLineContext" | "statusLineSpend" | "statusLineStaged" | "statusLineDirty" | "statusLineUntracked" | "statusLineOutput" | "statusLineCost" | "statusLineSubagents";
|
|
172
|
+
/** Check if a string is a valid ThemeColor value */
|
|
173
|
+
export declare function isValidThemeColor(color: string): color is ThemeColor;
|
|
174
|
+
export type ThemeBg = "selectedBg" | "userMessageBg" | "customMessageBg" | "toolPendingBg" | "toolSuccessBg" | "toolErrorBg" | "statusLineBg";
|
|
175
|
+
export type ColorMode = "truecolor" | "256color";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type SymbolPreset = "unicode" | "nerd" | "ascii";
|
|
2
|
+
/**
|
|
3
|
+
* All available symbol keys organized by category.
|
|
4
|
+
*/
|
|
5
|
+
export type SymbolKey = "status.success" | "status.error" | "status.warning" | "status.info" | "status.pending" | "status.disabled" | "status.enabled" | "status.running" | "status.shadowed" | "status.aborted" | "status.done" | "nav.cursor" | "nav.selected" | "nav.expand" | "nav.collapse" | "nav.back" | "tree.branch" | "tree.last" | "tree.vertical" | "tree.horizontal" | "tree.hook" | "boxRound.topLeft" | "boxRound.topRight" | "boxRound.bottomLeft" | "boxRound.bottomRight" | "boxRound.horizontal" | "boxRound.vertical" | "boxSharp.topLeft" | "boxSharp.topRight" | "boxSharp.bottomLeft" | "boxSharp.bottomRight" | "boxSharp.horizontal" | "boxSharp.vertical" | "boxSharp.cross" | "boxSharp.teeDown" | "boxSharp.teeUp" | "boxSharp.teeRight" | "boxSharp.teeLeft" | "sep.powerline" | "sep.powerlineThin" | "sep.powerlineLeft" | "sep.powerlineRight" | "sep.powerlineThinLeft" | "sep.powerlineThinRight" | "sep.block" | "sep.space" | "sep.asciiLeft" | "sep.asciiRight" | "sep.dot" | "sep.slash" | "sep.pipe" | "icon.model" | "icon.plan" | "icon.prewalk" | "icon.goal" | "icon.pause" | "icon.loop" | "icon.folder" | "icon.worktree" | "icon.search" | "icon.scratchFolder" | "icon.file" | "icon.git" | "icon.branch" | "icon.pr" | "icon.tokens" | "icon.context" | "icon.cost" | "icon.time" | "icon.pi" | "icon.ghost" | "icon.agents" | "icon.job" | "icon.cache" | "icon.cacheMiss" | "icon.input" | "icon.output" | "icon.throughput" | "icon.host" | "icon.session" | "icon.package" | "icon.warning" | "icon.rewind" | "icon.auto" | "icon.fast" | "icon.extensionSkill" | "icon.extensionTool" | "icon.extensionSlashCommand" | "icon.extensionMcp" | "icon.extensionRule" | "icon.extensionHook" | "icon.extensionPrompt" | "icon.extensionContextFile" | "icon.extensionInstruction" | "icon.mic" | "icon.camera" | "thinking.minimal" | "thinking.low" | "thinking.medium" | "thinking.high" | "thinking.xhigh" | "thinking.max" | "thinking.autoPending" | "checkbox.checked" | "checkbox.unchecked" | "radio.selected" | "radio.unselected" | "format.bullet" | "format.dash" | "format.bracketLeft" | "format.bracketRight" | "md.quoteBorder" | "md.hrChar" | "md.bullet" | "md.colorSwatch" | "advisor.rail" | "lang.default" | "lang.typescript" | "lang.javascript" | "lang.python" | "lang.rust" | "lang.go" | "lang.java" | "lang.c" | "lang.cpp" | "lang.csharp" | "lang.ruby" | "lang.julia" | "lang.php" | "lang.swift" | "lang.kotlin" | "lang.shell" | "lang.html" | "lang.css" | "lang.json" | "lang.yaml" | "lang.markdown" | "lang.sql" | "lang.docker" | "lang.lua" | "lang.text" | "lang.env" | "lang.toml" | "lang.xml" | "lang.ini" | "lang.conf" | "lang.log" | "lang.csv" | "lang.tsv" | "lang.image" | "lang.pdf" | "lang.archive" | "lang.binary" | "tab.appearance" | "tab.model" | "tab.interaction" | "tab.context" | "tab.files" | "tab.shell" | "tab.tools" | "tab.memory" | "tab.tasks" | "tab.providers" | "tool.write" | "tool.edit" | "tool.bash" | "tool.ssh" | "tool.lsp" | "tool.gh" | "tool.webSearch" | "tool.exa" | "tool.browser" | "tool.eval" | "tool.debug" | "tool.mcp" | "tool.job" | "tool.launch" | "tool.task" | "tool.todo" | "tool.memory" | "tool.ask" | "tool.resolve" | "tool.review" | "tool.inspectImage" | "tool.goal" | "tool.irc" | "tool.delete" | "tool.move";
|
|
6
|
+
export type SymbolMap = Record<SymbolKey, string>;
|
|
7
|
+
export declare const SYMBOL_PRESETS: Record<SymbolPreset, SymbolMap>;
|
|
8
|
+
export type SpinnerType = "status" | "activity";
|
|
9
|
+
export declare const SPINNER_FRAMES: Record<SymbolPreset, Record<SpinnerType, string[]>>;
|
|
10
|
+
/**
|
|
11
|
+
* Shape accepted by `themeJson.symbols.spinnerFrames`. A flat array applies to
|
|
12
|
+
* both spinner types; an object lets a theme override `status` and/or
|
|
13
|
+
* `activity` independently. Anything not specified falls back to the symbol
|
|
14
|
+
* preset's default frames.
|
|
15
|
+
*/
|
|
16
|
+
export type SpinnerFramesOverride = string[] | {
|
|
17
|
+
status?: string[];
|
|
18
|
+
activity?: string[];
|
|
19
|
+
};
|
|
20
|
+
export declare function normalizeSpinnerFramesOverride(value: SpinnerFramesOverride | undefined): Partial<Record<SpinnerType, string[]>>;
|
|
21
|
+
/**
|
|
22
|
+
* Get available symbol presets.
|
|
23
|
+
*/
|
|
24
|
+
export declare function getAvailableSymbolPresets(): SymbolPreset[];
|
|
25
|
+
/**
|
|
26
|
+
* Check if a string is a valid symbol preset.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isValidSymbolPreset(preset: string): preset is SymbolPreset;
|