fixo-cli 1.0.0
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/LICENSE +201 -0
- package/README.md +530 -0
- package/dist/agent/agent-client.d.ts +108 -0
- package/dist/agent/agent-client.d.ts.map +1 -0
- package/dist/agent/agent-client.js +1247 -0
- package/dist/agent/agent-client.js.map +1 -0
- package/dist/agent/agent-pool.d.ts +20 -0
- package/dist/agent/agent-pool.d.ts.map +1 -0
- package/dist/agent/agent-pool.js +217 -0
- package/dist/agent/agent-pool.js.map +1 -0
- package/dist/agent/background-awareness.d.ts +55 -0
- package/dist/agent/background-awareness.d.ts.map +1 -0
- package/dist/agent/background-awareness.js +104 -0
- package/dist/agent/background-awareness.js.map +1 -0
- package/dist/agent/command-parser.d.ts +33 -0
- package/dist/agent/command-parser.d.ts.map +1 -0
- package/dist/agent/command-parser.js +120 -0
- package/dist/agent/command-parser.js.map +1 -0
- package/dist/agent/context-budget.d.ts +91 -0
- package/dist/agent/context-budget.d.ts.map +1 -0
- package/dist/agent/context-budget.js +219 -0
- package/dist/agent/context-budget.js.map +1 -0
- package/dist/agent/conversation.d.ts +190 -0
- package/dist/agent/conversation.d.ts.map +1 -0
- package/dist/agent/conversation.js +547 -0
- package/dist/agent/conversation.js.map +1 -0
- package/dist/agent/hooks.d.ts +72 -0
- package/dist/agent/hooks.d.ts.map +1 -0
- package/dist/agent/hooks.js +214 -0
- package/dist/agent/hooks.js.map +1 -0
- package/dist/agent/mcp-bridge.d.ts +13 -0
- package/dist/agent/mcp-bridge.d.ts.map +1 -0
- package/dist/agent/mcp-bridge.js +86 -0
- package/dist/agent/mcp-bridge.js.map +1 -0
- package/dist/agent/mcp-client.d.ts +24 -0
- package/dist/agent/mcp-client.d.ts.map +1 -0
- package/dist/agent/mcp-client.js +146 -0
- package/dist/agent/mcp-client.js.map +1 -0
- package/dist/agent/mcp-manager.d.ts +13 -0
- package/dist/agent/mcp-manager.d.ts.map +1 -0
- package/dist/agent/mcp-manager.js +84 -0
- package/dist/agent/mcp-manager.js.map +1 -0
- package/dist/agent/mcp-registry.d.ts +45 -0
- package/dist/agent/mcp-registry.d.ts.map +1 -0
- package/dist/agent/mcp-registry.js +98 -0
- package/dist/agent/mcp-registry.js.map +1 -0
- package/dist/agent/orchestrator.d.ts +14 -0
- package/dist/agent/orchestrator.d.ts.map +1 -0
- package/dist/agent/orchestrator.js +118 -0
- package/dist/agent/orchestrator.js.map +1 -0
- package/dist/agent/parser-adapter.d.ts +120 -0
- package/dist/agent/parser-adapter.d.ts.map +1 -0
- package/dist/agent/parser-adapter.js +265 -0
- package/dist/agent/parser-adapter.js.map +1 -0
- package/dist/agent/parsers/imports.d.ts +11 -0
- package/dist/agent/parsers/imports.d.ts.map +1 -0
- package/dist/agent/parsers/imports.js +94 -0
- package/dist/agent/parsers/imports.js.map +1 -0
- package/dist/agent/parsers/shell.d.ts +23 -0
- package/dist/agent/parsers/shell.d.ts.map +1 -0
- package/dist/agent/parsers/shell.js +200 -0
- package/dist/agent/parsers/shell.js.map +1 -0
- package/dist/agent/parsers/symbols.d.ts +17 -0
- package/dist/agent/parsers/symbols.d.ts.map +1 -0
- package/dist/agent/parsers/symbols.js +103 -0
- package/dist/agent/parsers/symbols.js.map +1 -0
- package/dist/agent/permissions.d.ts +65 -0
- package/dist/agent/permissions.d.ts.map +1 -0
- package/dist/agent/permissions.js +219 -0
- package/dist/agent/permissions.js.map +1 -0
- package/dist/agent/predictive-gate.d.ts +69 -0
- package/dist/agent/predictive-gate.d.ts.map +1 -0
- package/dist/agent/predictive-gate.js +128 -0
- package/dist/agent/predictive-gate.js.map +1 -0
- package/dist/agent/provider-cooldown.d.ts +144 -0
- package/dist/agent/provider-cooldown.d.ts.map +1 -0
- package/dist/agent/provider-cooldown.js +300 -0
- package/dist/agent/provider-cooldown.js.map +1 -0
- package/dist/agent/providers-manager.d.ts +109 -0
- package/dist/agent/providers-manager.d.ts.map +1 -0
- package/dist/agent/providers-manager.js +464 -0
- package/dist/agent/providers-manager.js.map +1 -0
- package/dist/agent/repo-map.d.ts +6 -0
- package/dist/agent/repo-map.d.ts.map +1 -0
- package/dist/agent/repo-map.js +221 -0
- package/dist/agent/repo-map.js.map +1 -0
- package/dist/agent/retry.d.ts +103 -0
- package/dist/agent/retry.d.ts.map +1 -0
- package/dist/agent/retry.js +276 -0
- package/dist/agent/retry.js.map +1 -0
- package/dist/agent/search/index.d.ts +61 -0
- package/dist/agent/search/index.d.ts.map +1 -0
- package/dist/agent/search/index.js +314 -0
- package/dist/agent/search/index.js.map +1 -0
- package/dist/agent/single-agent.d.ts +76 -0
- package/dist/agent/single-agent.d.ts.map +1 -0
- package/dist/agent/single-agent.js +697 -0
- package/dist/agent/single-agent.js.map +1 -0
- package/dist/agent/skills.d.ts +22 -0
- package/dist/agent/skills.d.ts.map +1 -0
- package/dist/agent/skills.js +139 -0
- package/dist/agent/skills.js.map +1 -0
- package/dist/agent/stream-glue.d.ts +85 -0
- package/dist/agent/stream-glue.d.ts.map +1 -0
- package/dist/agent/stream-glue.js +120 -0
- package/dist/agent/stream-glue.js.map +1 -0
- package/dist/agent/subagent.d.ts +72 -0
- package/dist/agent/subagent.d.ts.map +1 -0
- package/dist/agent/subagent.js +193 -0
- package/dist/agent/subagent.js.map +1 -0
- package/dist/agent/telemetry.d.ts +192 -0
- package/dist/agent/telemetry.d.ts.map +1 -0
- package/dist/agent/telemetry.js +400 -0
- package/dist/agent/telemetry.js.map +1 -0
- package/dist/agent/tokenizer.d.ts +42 -0
- package/dist/agent/tokenizer.d.ts.map +1 -0
- package/dist/agent/tokenizer.js +107 -0
- package/dist/agent/tokenizer.js.map +1 -0
- package/dist/agent/tool-executor.d.ts +289 -0
- package/dist/agent/tool-executor.d.ts.map +1 -0
- package/dist/agent/tool-executor.js +2519 -0
- package/dist/agent/tool-executor.js.map +1 -0
- package/dist/agent/web-impl.d.ts +2 -0
- package/dist/agent/web-impl.d.ts.map +1 -0
- package/dist/agent/web-impl.js +34 -0
- package/dist/agent/web-impl.js.map +1 -0
- package/dist/agent/web.d.ts +8 -0
- package/dist/agent/web.d.ts.map +1 -0
- package/dist/agent/web.js +8 -0
- package/dist/agent/web.js.map +1 -0
- package/dist/agent/worker-agent.d.ts +27 -0
- package/dist/agent/worker-agent.d.ts.map +1 -0
- package/dist/agent/worker-agent.js +503 -0
- package/dist/agent/worker-agent.js.map +1 -0
- package/dist/config.d.ts +162 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +138 -0
- package/dist/config.js.map +1 -0
- package/dist/context/fixo-md-watcher.d.ts +42 -0
- package/dist/context/fixo-md-watcher.d.ts.map +1 -0
- package/dist/context/fixo-md-watcher.js +126 -0
- package/dist/context/fixo-md-watcher.js.map +1 -0
- package/dist/context/fixo-md.d.ts +50 -0
- package/dist/context/fixo-md.d.ts.map +1 -0
- package/dist/context/fixo-md.js +118 -0
- package/dist/context/fixo-md.js.map +1 -0
- package/dist/context/todo.d.ts +65 -0
- package/dist/context/todo.d.ts.map +1 -0
- package/dist/context/todo.js +194 -0
- package/dist/context/todo.js.map +1 -0
- package/dist/git/git-manager.d.ts +33 -0
- package/dist/git/git-manager.d.ts.map +1 -0
- package/dist/git/git-manager.js +293 -0
- package/dist/git/git-manager.js.map +1 -0
- package/dist/git/git-ops.d.ts +10 -0
- package/dist/git/git-ops.d.ts.map +1 -0
- package/dist/git/git-ops.js +131 -0
- package/dist/git/git-ops.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +352 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer.d.ts +30 -0
- package/dist/indexer.d.ts.map +1 -0
- package/dist/indexer.js +273 -0
- package/dist/indexer.js.map +1 -0
- package/dist/lsp/lsp-client.d.ts +24 -0
- package/dist/lsp/lsp-client.d.ts.map +1 -0
- package/dist/lsp/lsp-client.js +205 -0
- package/dist/lsp/lsp-client.js.map +1 -0
- package/dist/lsp/lsp-manager.d.ts +17 -0
- package/dist/lsp/lsp-manager.d.ts.map +1 -0
- package/dist/lsp/lsp-manager.js +154 -0
- package/dist/lsp/lsp-manager.js.map +1 -0
- package/dist/lsp/lsp-pre-save.d.ts +137 -0
- package/dist/lsp/lsp-pre-save.d.ts.map +1 -0
- package/dist/lsp/lsp-pre-save.js +245 -0
- package/dist/lsp/lsp-pre-save.js.map +1 -0
- package/dist/lsp/syntax-fallback.d.ts +83 -0
- package/dist/lsp/syntax-fallback.d.ts.map +1 -0
- package/dist/lsp/syntax-fallback.js +275 -0
- package/dist/lsp/syntax-fallback.js.map +1 -0
- package/dist/model-outcomes.d.ts +12 -0
- package/dist/model-outcomes.d.ts.map +1 -0
- package/dist/model-outcomes.js +46 -0
- package/dist/model-outcomes.js.map +1 -0
- package/dist/planner.d.ts +32 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +163 -0
- package/dist/planner.js.map +1 -0
- package/dist/project-memory.d.ts +29 -0
- package/dist/project-memory.d.ts.map +1 -0
- package/dist/project-memory.js +349 -0
- package/dist/project-memory.js.map +1 -0
- package/dist/review.d.ts +2 -0
- package/dist/review.d.ts.map +1 -0
- package/dist/review.js +61 -0
- package/dist/review.js.map +1 -0
- package/dist/runtime/background-jobs.d.ts +97 -0
- package/dist/runtime/background-jobs.d.ts.map +1 -0
- package/dist/runtime/background-jobs.js +331 -0
- package/dist/runtime/background-jobs.js.map +1 -0
- package/dist/runtime/credential-vault.d.ts +124 -0
- package/dist/runtime/credential-vault.d.ts.map +1 -0
- package/dist/runtime/credential-vault.js +184 -0
- package/dist/runtime/credential-vault.js.map +1 -0
- package/dist/runtime/loop-trap.d.ts +197 -0
- package/dist/runtime/loop-trap.d.ts.map +1 -0
- package/dist/runtime/loop-trap.js +420 -0
- package/dist/runtime/loop-trap.js.map +1 -0
- package/dist/runtime/policy.d.ts +15 -0
- package/dist/runtime/policy.d.ts.map +1 -0
- package/dist/runtime/policy.js +60 -0
- package/dist/runtime/policy.js.map +1 -0
- package/dist/runtime/redaction.d.ts +66 -0
- package/dist/runtime/redaction.d.ts.map +1 -0
- package/dist/runtime/redaction.js +155 -0
- package/dist/runtime/redaction.js.map +1 -0
- package/dist/runtime/session-snapshots.d.ts +76 -0
- package/dist/runtime/session-snapshots.d.ts.map +1 -0
- package/dist/runtime/session-snapshots.js +166 -0
- package/dist/runtime/session-snapshots.js.map +1 -0
- package/dist/runtime/staging.d.ts +205 -0
- package/dist/runtime/staging.d.ts.map +1 -0
- package/dist/runtime/staging.js +526 -0
- package/dist/runtime/staging.js.map +1 -0
- package/dist/runtime/task-session.d.ts +95 -0
- package/dist/runtime/task-session.d.ts.map +1 -0
- package/dist/runtime/task-session.js +263 -0
- package/dist/runtime/task-session.js.map +1 -0
- package/dist/runtime/worktree.d.ts +55 -0
- package/dist/runtime/worktree.d.ts.map +1 -0
- package/dist/runtime/worktree.js +175 -0
- package/dist/runtime/worktree.js.map +1 -0
- package/dist/setup-wizard.d.ts +8 -0
- package/dist/setup-wizard.d.ts.map +1 -0
- package/dist/setup-wizard.js +73 -0
- package/dist/setup-wizard.js.map +1 -0
- package/dist/shared/content.d.ts +43 -0
- package/dist/shared/content.d.ts.map +1 -0
- package/dist/shared/content.js +61 -0
- package/dist/shared/content.js.map +1 -0
- package/dist/shared/types.d.ts +217 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +3 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/test-runner.d.ts +5 -0
- package/dist/test-runner.d.ts.map +1 -0
- package/dist/test-runner.js +42 -0
- package/dist/test-runner.js.map +1 -0
- package/dist/types.d.ts +85 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/ascii.d.ts +23 -0
- package/dist/ui/ascii.d.ts.map +1 -0
- package/dist/ui/ascii.js +45 -0
- package/dist/ui/ascii.js.map +1 -0
- package/dist/ui/colors.d.ts +111 -0
- package/dist/ui/colors.d.ts.map +1 -0
- package/dist/ui/colors.js +166 -0
- package/dist/ui/colors.js.map +1 -0
- package/dist/ui/image-attach.d.ts +27 -0
- package/dist/ui/image-attach.d.ts.map +1 -0
- package/dist/ui/image-attach.js +100 -0
- package/dist/ui/image-attach.js.map +1 -0
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +18 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/markdown-stream.d.ts +91 -0
- package/dist/ui/markdown-stream.d.ts.map +1 -0
- package/dist/ui/markdown-stream.js +524 -0
- package/dist/ui/markdown-stream.js.map +1 -0
- package/dist/ui/plan-renderer.d.ts +36 -0
- package/dist/ui/plan-renderer.d.ts.map +1 -0
- package/dist/ui/plan-renderer.js +79 -0
- package/dist/ui/plan-renderer.js.map +1 -0
- package/dist/ui/prompt.d.ts +11 -0
- package/dist/ui/prompt.d.ts.map +1 -0
- package/dist/ui/prompt.js +1960 -0
- package/dist/ui/prompt.js.map +1 -0
- package/dist/ui/render-primitives.d.ts +117 -0
- package/dist/ui/render-primitives.d.ts.map +1 -0
- package/dist/ui/render-primitives.js +322 -0
- package/dist/ui/render-primitives.js.map +1 -0
- package/dist/ui/render.d.ts +133 -0
- package/dist/ui/render.d.ts.map +1 -0
- package/dist/ui/render.js +547 -0
- package/dist/ui/render.js.map +1 -0
- package/dist/ui/session-header.d.ts +30 -0
- package/dist/ui/session-header.d.ts.map +1 -0
- package/dist/ui/session-header.js +74 -0
- package/dist/ui/session-header.js.map +1 -0
- package/dist/workspace-guard.d.ts +68 -0
- package/dist/workspace-guard.d.ts.map +1 -0
- package/dist/workspace-guard.js +168 -0
- package/dist/workspace-guard.js.map +1 -0
- package/dist/workspace-lock.d.ts +27 -0
- package/dist/workspace-lock.d.ts.map +1 -0
- package/dist/workspace-lock.js +95 -0
- package/dist/workspace-lock.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import type { ChatToolDefinition } from '../shared/types.js';
|
|
2
|
+
import type { TaskSession } from '../runtime/task-session.js';
|
|
3
|
+
import { type PolicyProfile } from '../runtime/policy.js';
|
|
4
|
+
import { McpManager } from './mcp-manager.js';
|
|
5
|
+
import type { AgentClient } from './agent-client.js';
|
|
6
|
+
import { type SafetyConfig } from '../config.js';
|
|
7
|
+
import { LspPreSaveGate } from '../lsp/lsp-pre-save.js';
|
|
8
|
+
import { McpBridgeManager } from './mcp-bridge.js';
|
|
9
|
+
import { LspManager } from '../lsp/lsp-manager.js';
|
|
10
|
+
import { type TodoStatus } from '../context/todo.js';
|
|
11
|
+
import { BackgroundJobRegistry, type JobSnapshot } from '../runtime/background-jobs.js';
|
|
12
|
+
export declare const mcpManager: McpManager;
|
|
13
|
+
export declare const mcpBridgeManager: McpBridgeManager;
|
|
14
|
+
export declare function getLspManager(workspaceRoot: string): LspManager;
|
|
15
|
+
export declare function stopLspManager(): Promise<void>;
|
|
16
|
+
export interface LoadedPlugin {
|
|
17
|
+
path: string;
|
|
18
|
+
tools: ChatToolDefinition[];
|
|
19
|
+
execute: (name: string, args: Record<string, any>, context: any) => Promise<string>;
|
|
20
|
+
}
|
|
21
|
+
export declare const loadedPlugins: LoadedPlugin[];
|
|
22
|
+
export declare function initializePlugins(cwd: string, projectConfig?: any): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Names of all tools that perform a write / mutation. Used by
|
|
25
|
+
* {@link getActiveTools} to enforce role-based tool masking
|
|
26
|
+
* (Pillar 5 / Protection 2 — Strict Runtime Role Isolation).
|
|
27
|
+
* Kept as a Set for O(1) membership checks; never read in
|
|
28
|
+
* production paths.
|
|
29
|
+
*/
|
|
30
|
+
export declare const MUTATION_TOOL_NAMES: ReadonlySet<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Build the active tool list for a given execution role. The
|
|
33
|
+
* mode argument is the role the agent is operating in:
|
|
34
|
+
*
|
|
35
|
+
* - `BUILD` — the default; all tools are available.
|
|
36
|
+
* - `EXPLORE` — only read + LSP navigation tools.
|
|
37
|
+
* - `SCOUT` — only web fetch / search.
|
|
38
|
+
* - `PLAN` — read + web + LSP, but no mutations.
|
|
39
|
+
* - `READ_ONLY` (Pillar 5) — no mutation tools at all.
|
|
40
|
+
* This is the role forced on during vulnerability audits,
|
|
41
|
+
* reviews, and explanations, so the LLM has zero
|
|
42
|
+
* visibility of code-writing tools and cannot accidentally
|
|
43
|
+
* mutate the workspace.
|
|
44
|
+
*/
|
|
45
|
+
export declare function getActiveTools(mode?: string): ChatToolDefinition[];
|
|
46
|
+
/**
|
|
47
|
+
* Classify a task into an execution role. Read-only tasks
|
|
48
|
+
* (analysis, explanation, review) get the `READ_ONLY` role so
|
|
49
|
+
* mutation tools are not even visible to the model. This is
|
|
50
|
+
* the dynamic-tool-masking layer of Pillar 5.
|
|
51
|
+
*/
|
|
52
|
+
export declare function classifyExecutionRole(task: string): 'BUILD' | 'READ_ONLY';
|
|
53
|
+
export declare const TOOL_DEFINITIONS: ChatToolDefinition[];
|
|
54
|
+
export interface ToolCallEvent {
|
|
55
|
+
tool: string;
|
|
56
|
+
args: Record<string, string>;
|
|
57
|
+
result: string;
|
|
58
|
+
isWrite: boolean;
|
|
59
|
+
affectedPath?: string;
|
|
60
|
+
}
|
|
61
|
+
export interface ToolExecutionOptions {
|
|
62
|
+
session?: TaskSession;
|
|
63
|
+
policy?: PolicyProfile;
|
|
64
|
+
allowWithoutPrompt?: boolean;
|
|
65
|
+
client?: AgentClient;
|
|
66
|
+
model?: string;
|
|
67
|
+
/**
|
|
68
|
+
* Safety preferences (Pillar 1/2/3). When
|
|
69
|
+
* `preferences.safety.atomicStaging` is true, file writes are
|
|
70
|
+
* routed through {@link AtomicStagingManager} so the swap is
|
|
71
|
+
* atomic and rollback is possible. When undefined, the legacy
|
|
72
|
+
* direct-write path is used.
|
|
73
|
+
*/
|
|
74
|
+
safety?: SafetyConfig;
|
|
75
|
+
/**
|
|
76
|
+
* Execution mode (`'PLAN' | 'BUILD' | 'EXPLORE' | 'SCOUT'`).
|
|
77
|
+
* Surfaced to the executor so mutating tools can refuse to
|
|
78
|
+
* run under read-only modes. Optional — when omitted, mutating
|
|
79
|
+
* tools default to allowing execution.
|
|
80
|
+
*/
|
|
81
|
+
mode?: 'PLAN' | 'BUILD' | 'EXPLORE' | 'SCOUT';
|
|
82
|
+
/**
|
|
83
|
+
* Callback returning the current conversation token count.
|
|
84
|
+
* Used by the predictive context-budget gate (Phase 4) to
|
|
85
|
+
* decide whether a `read_file` would push the next request
|
|
86
|
+
* over the model's input window. When omitted, the gate
|
|
87
|
+
* treats conversation pressure as 0 and only considers the
|
|
88
|
+
* file's own projected cost.
|
|
89
|
+
*/
|
|
90
|
+
getConversationTokens?: () => number;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Lazily generate a per-process run id. Used to namespace
|
|
94
|
+
* `.fixo/staging/<runId>/` so concurrent runs against the same
|
|
95
|
+
* workspace never collide. The id is a 12-character base36 token.
|
|
96
|
+
*/
|
|
97
|
+
export declare function getOrCreateRunId(): string;
|
|
98
|
+
/** Test/utility hook — reset the cached run id. */
|
|
99
|
+
export declare function resetRunId(): void;
|
|
100
|
+
/**
|
|
101
|
+
* Lazily construct a singleton {@link LspPreSaveGate} that wires
|
|
102
|
+
* the tool-executor to the live `LspManager`. Mode is read from
|
|
103
|
+
* the user's safety config (default: `'warn'`). The gate is a
|
|
104
|
+
* no-op when no language server is installed on `PATH`, matching
|
|
105
|
+
* the existing `LspManager` behaviour.
|
|
106
|
+
*/
|
|
107
|
+
export declare function getOrCreateLspGate(cwd: string, safety: SafetyConfig): LspPreSaveGate;
|
|
108
|
+
/** Test/utility hook — reset the cached gate. */
|
|
109
|
+
export declare function resetLspGate(): void;
|
|
110
|
+
/**
|
|
111
|
+
* Execute a tool call and return its result string.
|
|
112
|
+
* Also logs the operation to the terminal with colored output.
|
|
113
|
+
*/
|
|
114
|
+
export declare function executeTool(name: string, args: Record<string, string>, cwd: string, verbose?: boolean, options?: ToolExecutionOptions): Promise<ToolCallEvent>;
|
|
115
|
+
/**
|
|
116
|
+
* Runtime execution context shared by every {@link ToolSpecification}.
|
|
117
|
+
* Replaces the loose `any`-typed context that previously lived in
|
|
118
|
+
* `LoadedPlugin.execute` so the type system enforces a uniform
|
|
119
|
+
* contract across the registry.
|
|
120
|
+
*/
|
|
121
|
+
export interface ToolExecutionContext {
|
|
122
|
+
readonly cwd: string;
|
|
123
|
+
readonly verbose: boolean;
|
|
124
|
+
readonly options: ToolExecutionOptions;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Compile-time type for an individual tool. Each new tool added to
|
|
128
|
+
* {@link TOOL_REGISTRY} must satisfy this contract: a strongly-typed
|
|
129
|
+
* `args` payload (`TArgs`) and a strongly-typed `execute` callback
|
|
130
|
+
* returning `TResult` (default `string` to match the existing
|
|
131
|
+
* `executeTool` surface).
|
|
132
|
+
*
|
|
133
|
+
* The `parameters` field is the JSON-Schema description that is sent
|
|
134
|
+
* to the LLM — it mirrors {@link ChatToolDefinition.function.parameters}
|
|
135
|
+
* so the existing `TOOL_DEFINITIONS` array and the registry stay in
|
|
136
|
+
* lock-step. Two tools must agree on `name` and `parameters` to be
|
|
137
|
+
* safely exposed to the LLM.
|
|
138
|
+
*/
|
|
139
|
+
export interface ToolSpecification<TArgs extends Record<string, any> = Record<string, any>, TResult = string> {
|
|
140
|
+
readonly name: string;
|
|
141
|
+
readonly description: string;
|
|
142
|
+
readonly parameters: {
|
|
143
|
+
readonly type: 'object';
|
|
144
|
+
readonly properties: Record<string, any>;
|
|
145
|
+
readonly required: string[];
|
|
146
|
+
};
|
|
147
|
+
execute(args: TArgs, context: ToolExecutionContext): Promise<TResult>;
|
|
148
|
+
}
|
|
149
|
+
export interface StrReplaceArgs {
|
|
150
|
+
/** File path, relative to workspace root or absolute. */
|
|
151
|
+
path: string;
|
|
152
|
+
/** Substring to hunt down inside the file. */
|
|
153
|
+
oldString: string;
|
|
154
|
+
/** Replacement content. */
|
|
155
|
+
newString: string;
|
|
156
|
+
/** When true, substitute every occurrence. Default false. */
|
|
157
|
+
replaceAll?: boolean;
|
|
158
|
+
/** When true (default), abort on non-unique matches. */
|
|
159
|
+
expectUnique?: boolean;
|
|
160
|
+
}
|
|
161
|
+
export interface GlobArgs {
|
|
162
|
+
/** Glob pattern, e.g. `src` followed by `**` then `*.ts`. */
|
|
163
|
+
pattern: string;
|
|
164
|
+
/** Optional scope; must resolve inside the workspace. */
|
|
165
|
+
cwd?: string;
|
|
166
|
+
/** Optional extra ignore pattern (single string or comma-separated). */
|
|
167
|
+
ignore?: string;
|
|
168
|
+
/** Default 1000, hard cap 5000. */
|
|
169
|
+
maxResults?: number;
|
|
170
|
+
/** Default false. */
|
|
171
|
+
includeHidden?: boolean;
|
|
172
|
+
/** Default false. */
|
|
173
|
+
followSymlinks?: boolean;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Thrown by the `str_replace` tool when the replacement cannot be
|
|
177
|
+
* applied. The error is surfaced to the model as a structured tool
|
|
178
|
+
* result so the next turn can react to the precise reason.
|
|
179
|
+
*/
|
|
180
|
+
export declare class SurgicalReplaceError extends Error {
|
|
181
|
+
readonly code: 'old_string_not_found' | 'old_string_ambiguous' | 'plan_mode_rejected' | 'platform_path_locked' | 'workspace_escape' | 'binary_file' | 'invalid_args';
|
|
182
|
+
readonly details: Readonly<Record<string, unknown>>;
|
|
183
|
+
constructor(message: string, code: SurgicalReplaceError['code'], details?: Readonly<Record<string, unknown>>);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Thrown by the `glob_files` tool for any non-recoverable traversal
|
|
187
|
+
* failure (workspace escape, invalid pattern, etc.).
|
|
188
|
+
*/
|
|
189
|
+
export declare class GlobFilesError extends Error {
|
|
190
|
+
readonly code: 'invalid_pattern' | 'workspace_escape' | 'traversal_failed';
|
|
191
|
+
readonly details: Readonly<Record<string, unknown>>;
|
|
192
|
+
constructor(message: string, code: GlobFilesError['code'], details?: Readonly<Record<string, unknown>>);
|
|
193
|
+
}
|
|
194
|
+
export interface TodoWriteArgs {
|
|
195
|
+
/** Mutation kind. */
|
|
196
|
+
op: 'add' | 'set_status' | 'remove' | 'clear_done';
|
|
197
|
+
/** Required for `add`. */
|
|
198
|
+
content?: string;
|
|
199
|
+
/** Required for `set_status` and `remove`. */
|
|
200
|
+
id?: string;
|
|
201
|
+
/** Required for `set_status`. */
|
|
202
|
+
status?: TodoStatus;
|
|
203
|
+
/** Optional blocker description (add only). */
|
|
204
|
+
blockedBy?: string;
|
|
205
|
+
}
|
|
206
|
+
export declare class TodoWriteError extends Error {
|
|
207
|
+
readonly code: 'plan_mode_rejected' | 'invalid_args' | 'not_found' | 'io_failure';
|
|
208
|
+
readonly details: Readonly<Record<string, unknown>>;
|
|
209
|
+
constructor(message: string, code: TodoWriteError['code'], details?: Readonly<Record<string, unknown>>);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Read the current todo list from `<cwd>/.fixo/todo_list.json`.
|
|
213
|
+
* Always succeeds — a missing or unreadable file returns an
|
|
214
|
+
* empty list (the loader is fault-tolerant by design).
|
|
215
|
+
*/
|
|
216
|
+
export declare function executeTodoRead(cwd: string): string;
|
|
217
|
+
/**
|
|
218
|
+
* Apply a todo mutation and persist the result. Rejected in
|
|
219
|
+
* `PLAN` mode (Pillar 1) — todo state is project-level
|
|
220
|
+
* metadata, not conversation state, so even an `add` would
|
|
221
|
+
* leak a write to disk.
|
|
222
|
+
*/
|
|
223
|
+
export declare function executeTodoWrite(args: TodoWriteArgs, cwd: string, options?: ToolExecutionOptions): Promise<string>;
|
|
224
|
+
export declare function getBackgroundJobRegistry(cwd: string): BackgroundJobRegistry;
|
|
225
|
+
/** Test-only: inject a custom registry. */
|
|
226
|
+
export declare function setBackgroundJobRegistry(cwd: string, reg: BackgroundJobRegistry | null): void;
|
|
227
|
+
export interface RunCommandAsyncArgs {
|
|
228
|
+
cmd: string;
|
|
229
|
+
args?: string[];
|
|
230
|
+
cwd?: string;
|
|
231
|
+
}
|
|
232
|
+
export interface PollCommandStatusArgs {
|
|
233
|
+
jobId: string;
|
|
234
|
+
tailLines?: number;
|
|
235
|
+
sinceBytes?: number;
|
|
236
|
+
}
|
|
237
|
+
export interface KillCommandArgs {
|
|
238
|
+
jobId: string;
|
|
239
|
+
}
|
|
240
|
+
export declare class BackgroundCommandError extends Error {
|
|
241
|
+
readonly code: 'plan_mode_rejected' | 'invalid_args' | 'spawn_failed' | 'no_such_job';
|
|
242
|
+
constructor(message: string, code: BackgroundCommandError['code']);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Spawn a long-running command and return its jobId without
|
|
246
|
+
* blocking. The tail buffers cap at 64 KiB per stream and the
|
|
247
|
+
* snapshot is fsynced to `<cwd>/.fixo/jobs/<jobId>.json` every
|
|
248
|
+
* 5 s so a crash does not lose the recent output.
|
|
249
|
+
*/
|
|
250
|
+
export declare function executeRunCommandAsync(args: RunCommandAsyncArgs, cwd: string, options?: ToolExecutionOptions): Promise<string>;
|
|
251
|
+
export declare function executePollCommandStatus(args: PollCommandStatusArgs, cwd: string): string;
|
|
252
|
+
export declare function executeKillCommand(args: KillCommandArgs, cwd: string): string;
|
|
253
|
+
/** Helper exported for tests + subagent use. */
|
|
254
|
+
export declare function shutdownAllBackgroundRegistries(): void;
|
|
255
|
+
/** Helper exported for `/jobs` slash command. */
|
|
256
|
+
export declare function listAllBackgroundJobs(cwd: string): JobSnapshot[];
|
|
257
|
+
/**
|
|
258
|
+
* Implementation of the `str_replace` tool. Strictly typed and
|
|
259
|
+
* gated by all four safety pillars:
|
|
260
|
+
*
|
|
261
|
+
* - Pillar 1 (Sandbox): `ctx.mode === 'PLAN'` is rejected.
|
|
262
|
+
* - Pillar 5 (Self-Protection): platform-locked paths are
|
|
263
|
+
* refused by `WorkspaceGuard.assertNotPlatformPath`.
|
|
264
|
+
* - Pillar 2 (Atomic Staging): the final commit is funneled
|
|
265
|
+
* through {@link AtomicStagingManager.applySurgicalReplace},
|
|
266
|
+
* not a direct `fs.writeFileSync`.
|
|
267
|
+
* - Pillar 3 (LSP pre-save): the staged content is checked by
|
|
268
|
+
* the gate before commit. In `block` mode a syntax error
|
|
269
|
+
* causes the edit to abort with the diagnostic reported back
|
|
270
|
+
* to the model.
|
|
271
|
+
*/
|
|
272
|
+
export declare function executeStrReplace(args: StrReplaceArgs, cwd: string, options?: ToolExecutionOptions): Promise<string>;
|
|
273
|
+
/**
|
|
274
|
+
* Implementation of the `glob_files` tool. Strictly typed,
|
|
275
|
+
* workspace-bounded, and capped.
|
|
276
|
+
*
|
|
277
|
+
* Uses Node 22+ native `fs.promises.glob` for performance. Falls
|
|
278
|
+
* back to a manual recursive walker on Node < 22 (which the
|
|
279
|
+
* project's `package.json` already requires) so the tool is
|
|
280
|
+
* always functional.
|
|
281
|
+
*/
|
|
282
|
+
export declare function executeGlobFiles(args: GlobArgs, cwd: string, _options?: ToolExecutionOptions): Promise<string>;
|
|
283
|
+
/** Register a typed tool specification. Throws on duplicate. */
|
|
284
|
+
export declare function registerTool<TArgs extends Record<string, any>, TResult = string>(spec: ToolSpecification<TArgs, TResult>): void;
|
|
285
|
+
/** Look up a registered tool specification. */
|
|
286
|
+
export declare function getToolSpecification(name: string): ToolSpecification<Record<string, any>, string> | undefined;
|
|
287
|
+
/** List the names of all registered typed tools. */
|
|
288
|
+
export declare function listRegisteredToolNames(): string[];
|
|
289
|
+
//# sourceMappingURL=tool-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/agent/tool-executor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAI7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAmB,KAAK,aAAa,EAAkB,MAAM,sBAAsB,CAAC;AAG3F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,OAAO,EAA0B,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAmB,MAAM,wBAAwB,CAAC;AAIzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAUL,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,qBAAqB,EAAE,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAQxF,eAAO,MAAM,UAAU,YAAmB,CAAC;AAC3C,eAAO,MAAM,gBAAgB,kBAAyB,CAAC;AAIvD,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,CAK/D;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAKpD;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACrF;AAED,eAAO,MAAM,aAAa,EAAE,YAAY,EAAO,CAAC;AAEhD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAsEvF;AAID;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAelD,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAoBlE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,CAmBzE;AAED,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,EA8hBhD,CAAC;AAIF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IAC9C;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,MAAM,MAAM,CAAC;CACtC;AAMD;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAKzC;AAED,mDAAmD;AACnD,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAMD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,cAAc,CAOpF;AAED,iDAAiD;AACjD,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAgKD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAe,EACxB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC,CA2ZxB;AAgiBD;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;CACxC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB,CAChC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACvD,OAAO,GAAG,MAAM;IAEhB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;IACF,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvE;AAID,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wDAAwD;IACxD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAID,MAAM,WAAW,QAAQ;IACvB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAID;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,SAAgB,IAAI,EAChB,sBAAsB,GACtB,sBAAsB,GACtB,oBAAoB,GACpB,sBAAsB,GACtB,kBAAkB,GAClB,aAAa,GACb,cAAc,CAAC;IACnB,SAAgB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBAEzD,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,EAClC,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;CAOlD;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;IAClF,SAAgB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBAEzD,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAC5B,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;CAOlD;AAID,MAAM,WAAW,aAAa;IAC5B,qBAAqB;IACrB,EAAE,EAAE,KAAK,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAC;IACnD,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,IAAI,EAAE,oBAAoB,GAAG,cAAc,GAAG,WAAW,GAAG,YAAY,CAAC;IACzF,SAAgB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBAEzD,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAC5B,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;CAOlD;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGnD;AAWD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAuEjB;AAaD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAO3E;AAED,2CAA2C;AAC3C,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAU7F;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,SAAgB,IAAI,EAAE,oBAAoB,GAAG,cAAc,GAAG,cAAc,GAAG,aAAa,CAAC;gBACjF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAC;CAKlE;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,mBAAmB,EACzB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,qBAAqB,EAC3B,GAAG,EAAE,MAAM,GACV,MAAM,CAiBR;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,MAAM,GACV,MAAM,CAaR;AAED,gDAAgD;AAChD,wBAAgB,+BAA+B,IAAI,IAAI,CAGtD;AAED,iDAAiD;AACjD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE,CAmBhE;AAsCD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAgIjB;AA0BD;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,oBAAyB,GAClC,OAAO,CAAC,MAAM,CAAC,CAqEjB;AAwKD,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,EAC9E,IAAI,EAAE,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,GACtC,IAAI,CAQN;AAED,+CAA+C;AAC/C,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GACX,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,SAAS,CAE5D;AAED,oDAAoD;AACpD,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD"}
|