@codemieai/code 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +357 -719
- package/bin/codemie-claude.js +145 -0
- package/bin/codemie-code.js +128 -15
- package/bin/codemie-codex.js +137 -0
- package/bin/codemie.js +1 -1
- package/dist/agents/adapters/claude-code.d.ts +7 -2
- package/dist/agents/adapters/claude-code.d.ts.map +1 -1
- package/dist/agents/adapters/claude-code.js +94 -58
- package/dist/agents/adapters/claude-code.js.map +1 -1
- package/dist/agents/adapters/codemie-code.d.ts +11 -2
- package/dist/agents/adapters/codemie-code.d.ts.map +1 -1
- package/dist/agents/adapters/codemie-code.js +93 -25
- package/dist/agents/adapters/codemie-code.js.map +1 -1
- package/dist/agents/adapters/codex.d.ts +7 -2
- package/dist/agents/adapters/codex.d.ts.map +1 -1
- package/dist/agents/adapters/codex.js +104 -39
- package/dist/agents/adapters/codex.js.map +1 -1
- package/dist/agents/codemie-code/agent.d.ts +89 -0
- package/dist/agents/codemie-code/agent.d.ts.map +1 -0
- package/dist/agents/codemie-code/agent.js +689 -0
- package/dist/agents/codemie-code/agent.js.map +1 -0
- package/dist/agents/codemie-code/config.d.ts +40 -0
- package/dist/agents/codemie-code/config.d.ts.map +1 -0
- package/dist/agents/codemie-code/config.js +278 -0
- package/dist/agents/codemie-code/config.js.map +1 -0
- package/dist/agents/codemie-code/filters.d.ts +91 -0
- package/dist/agents/codemie-code/filters.d.ts.map +1 -0
- package/dist/agents/codemie-code/filters.js +328 -0
- package/dist/agents/codemie-code/filters.js.map +1 -0
- package/dist/agents/codemie-code/index.d.ts +92 -0
- package/dist/agents/codemie-code/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/index.js +327 -0
- package/dist/agents/codemie-code/index.js.map +1 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts +87 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js +957 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts +116 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.js +537 -0
- package/dist/agents/codemie-code/modes/planMode.js.map +1 -0
- package/dist/agents/codemie-code/prompts.d.ts +40 -0
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -0
- package/dist/agents/codemie-code/prompts.js +160 -0
- package/dist/agents/codemie-code/prompts.js.map +1 -0
- package/dist/agents/codemie-code/storage/todoStorage.d.ts +78 -0
- package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +1 -0
- package/dist/agents/codemie-code/storage/todoStorage.js +225 -0
- package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.d.ts +108 -0
- package/dist/agents/codemie-code/tokenUtils.d.ts.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.js +220 -0
- package/dist/agents/codemie-code/tokenUtils.js.map +1 -0
- package/dist/agents/codemie-code/toolMetadata.d.ts +15 -0
- package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -0
- package/dist/agents/codemie-code/toolMetadata.js +315 -0
- package/dist/agents/codemie-code/toolMetadata.js.map +1 -0
- package/dist/agents/codemie-code/tools/index.d.ts +45 -0
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/index.js +407 -0
- package/dist/agents/codemie-code/tools/index.js.map +1 -0
- package/dist/agents/codemie-code/tools/planning.d.ts +53 -0
- package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/planning.js +224 -0
- package/dist/agents/codemie-code/tools/planning.js.map +1 -0
- package/dist/agents/codemie-code/types.d.ts +418 -0
- package/dist/agents/codemie-code/types.d.ts.map +1 -0
- package/dist/agents/codemie-code/types.js +35 -0
- package/dist/agents/codemie-code/types.js.map +1 -0
- package/dist/agents/codemie-code/ui/progressTracker.d.ts +125 -0
- package/dist/agents/codemie-code/ui/progressTracker.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/progressTracker.js +343 -0
- package/dist/agents/codemie-code/ui/progressTracker.js.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts +112 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.js +318 -0
- package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -0
- package/dist/agents/codemie-code/ui.d.ts +179 -0
- package/dist/agents/codemie-code/ui.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui.js +1408 -0
- package/dist/agents/codemie-code/ui.js.map +1 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts +87 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js +293 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts +41 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.js +305 -0
- package/dist/agents/codemie-code/utils/todoParser.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts +65 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.js +249 -0
- package/dist/agents/codemie-code/utils/todoValidator.js.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts +94 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.js +281 -0
- package/dist/agents/codemie-code/validators/planValidator.js.map +1 -0
- package/dist/agents/registry.d.ts +1 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +11 -15
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/auth.d.ts +3 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +170 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +350 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +308 -71
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/env.d.ts +3 -0
- package/dist/cli/commands/env.d.ts.map +1 -0
- package/dist/cli/commands/env.js +19 -0
- package/dist/cli/commands/env.js.map +1 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +28 -33
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.js +18 -24
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +297 -31
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +523 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/tools.d.ts +6 -0
- package/dist/cli/commands/tools.d.ts.map +1 -0
- package/dist/cli/commands/tools.js +244 -0
- package/dist/cli/commands/tools.js.map +1 -0
- package/dist/cli/commands/uninstall.js +24 -30
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/commands/version.d.ts.map +1 -1
- package/dist/cli/commands/version.js +11 -16
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts +6 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +424 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/index.js +85 -35
- package/dist/cli/index.js.map +1 -1
- package/dist/clients/adapters/github.d.ts +17 -0
- package/dist/clients/adapters/github.d.ts.map +1 -0
- package/dist/clients/adapters/github.js +150 -0
- package/dist/clients/adapters/github.js.map +1 -0
- package/dist/clients/adapters/gitlab.d.ts +17 -0
- package/dist/clients/adapters/gitlab.d.ts.map +1 -0
- package/dist/clients/adapters/gitlab.js +147 -0
- package/dist/clients/adapters/gitlab.js.map +1 -0
- package/dist/clients/registry.d.ts +20 -0
- package/dist/clients/registry.d.ts.map +1 -0
- package/dist/clients/registry.js +27 -0
- package/dist/clients/registry.js.map +1 -0
- package/dist/env/manager.js +9 -46
- package/dist/env/manager.js.map +1 -1
- package/dist/index.d.ts +6 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -43
- package/dist/index.js.map +1 -1
- package/dist/tools/detector.d.ts +33 -0
- package/dist/tools/detector.d.ts.map +1 -0
- package/dist/tools/detector.js +145 -0
- package/dist/tools/detector.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/manager.d.ts +21 -0
- package/dist/tools/manager.d.ts.map +1 -0
- package/dist/tools/manager.js +104 -0
- package/dist/tools/manager.js.map +1 -0
- package/dist/tools/registry.d.ts +8 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +36 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +41 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +5 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/sso.d.ts +42 -0
- package/dist/types/sso.d.ts.map +1 -0
- package/dist/types/sso.js +2 -0
- package/dist/types/sso.js.map +1 -0
- package/dist/utils/agent-compatibility.d.ts +32 -0
- package/dist/utils/agent-compatibility.d.ts.map +1 -0
- package/dist/utils/agent-compatibility.js +140 -0
- package/dist/utils/agent-compatibility.js.map +1 -0
- package/dist/utils/async-tips.d.ts.map +1 -1
- package/dist/utils/async-tips.js +16 -55
- package/dist/utils/async-tips.js.map +1 -1
- package/dist/utils/clipboard.d.ts +16 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +179 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/codemie-integration-validator.d.ts +17 -0
- package/dist/utils/codemie-integration-validator.d.ts.map +1 -0
- package/dist/utils/codemie-integration-validator.js +105 -0
- package/dist/utils/codemie-integration-validator.js.map +1 -0
- package/dist/utils/codemie-model-fetcher.d.ts +11 -0
- package/dist/utils/codemie-model-fetcher.d.ts.map +1 -0
- package/dist/utils/codemie-model-fetcher.js +242 -0
- package/dist/utils/codemie-model-fetcher.js.map +1 -0
- package/dist/utils/config-loader.d.ts +118 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +397 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/credential-store.d.ts +16 -0
- package/dist/utils/credential-store.d.ts.map +1 -0
- package/dist/utils/credential-store.js +109 -0
- package/dist/utils/credential-store.js.map +1 -0
- package/dist/utils/dirname.d.ts +7 -0
- package/dist/utils/dirname.d.ts.map +1 -0
- package/dist/utils/dirname.js +11 -0
- package/dist/utils/dirname.js.map +1 -0
- package/dist/utils/errors.js +7 -17
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/exec.js +3 -6
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/first-time.d.ts +34 -0
- package/dist/utils/first-time.d.ts.map +1 -0
- package/dist/utils/first-time.js +226 -0
- package/dist/utils/first-time.js.map +1 -0
- package/dist/utils/health-checker.d.ts +20 -0
- package/dist/utils/health-checker.d.ts.map +1 -0
- package/dist/utils/health-checker.js +172 -0
- package/dist/utils/health-checker.js.map +1 -0
- package/dist/utils/logger.js +12 -18
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/model-fetcher.d.ts +21 -0
- package/dist/utils/model-fetcher.d.ts.map +1 -0
- package/dist/utils/model-fetcher.js +150 -0
- package/dist/utils/model-fetcher.js.map +1 -0
- package/dist/utils/sso-auth.d.ts +15 -0
- package/dist/utils/sso-auth.d.ts.map +1 -0
- package/dist/utils/sso-auth.js +207 -0
- package/dist/utils/sso-auth.js.map +1 -0
- package/dist/utils/sso-gateway.d.ts +47 -0
- package/dist/utils/sso-gateway.d.ts.map +1 -0
- package/dist/utils/sso-gateway.js +298 -0
- package/dist/utils/sso-gateway.js.map +1 -0
- package/dist/utils/tips.d.ts.map +1 -1
- package/dist/utils/tips.js +13 -52
- package/dist/utils/tips.js.map +1 -1
- package/dist/workflows/detector.d.ts +37 -0
- package/dist/workflows/detector.d.ts.map +1 -0
- package/dist/workflows/detector.js +160 -0
- package/dist/workflows/detector.js.map +1 -0
- package/dist/workflows/index.d.ts +8 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +8 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/installer.d.ts +24 -0
- package/dist/workflows/installer.d.ts.map +1 -0
- package/dist/workflows/installer.js +105 -0
- package/dist/workflows/installer.js.map +1 -0
- package/dist/workflows/registry.d.ts +29 -0
- package/dist/workflows/registry.d.ts.map +1 -0
- package/dist/workflows/registry.js +54 -0
- package/dist/workflows/registry.js.map +1 -0
- package/dist/workflows/templates/github/metadata.d.ts +6 -0
- package/dist/workflows/templates/github/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/github/metadata.js +111 -0
- package/dist/workflows/templates/github/metadata.js.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts +6 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.js +14 -0
- package/dist/workflows/templates/gitlab/metadata.js.map +1 -0
- package/dist/workflows/types.d.ts +71 -0
- package/dist/workflows/types.d.ts.map +1 -0
- package/dist/workflows/types.js +5 -0
- package/dist/workflows/types.js.map +1 -0
- package/package.json +32 -25
- package/src/workflows/templates/github/code-ci.yml +529 -0
- package/src/workflows/templates/github/inline-fix.yml +665 -0
- package/src/workflows/templates/github/pr-review.yml +677 -0
- package/.claude/agents/README.md +0 -298
- package/.claude/agents/release-manager.md +0 -857
- package/.codemie/guides/git-workflow.md +0 -493
- package/CLAUDE.md +0 -855
- package/dist/agents/adapters/aider.d.ts +0 -12
- package/dist/agents/adapters/aider.d.ts.map +0 -1
- package/dist/agents/adapters/aider.js +0 -80
- package/dist/agents/adapters/aider.js.map +0 -1
- package/dist/cli/cli.d.ts +0 -4
- package/dist/cli/cli.d.ts.map +0 -1
- package/dist/cli/cli.js +0 -107
- package/dist/cli/cli.js.map +0 -1
- package/dist/cli/commands/mcp.d.ts +0 -3
- package/dist/cli/commands/mcp.d.ts.map +0 -1
- package/dist/cli/commands/mcp.js +0 -459
- package/dist/cli/commands/mcp.js.map +0 -1
- package/dist/code/agent-events.d.ts +0 -39
- package/dist/code/agent-events.d.ts.map +0 -1
- package/dist/code/agent-events.js +0 -4
- package/dist/code/agent-events.js.map +0 -1
- package/dist/code/agent.d.ts +0 -19
- package/dist/code/agent.d.ts.map +0 -1
- package/dist/code/agent.js +0 -144
- package/dist/code/agent.js.map +0 -1
- package/dist/code/config.d.ts +0 -13
- package/dist/code/config.d.ts.map +0 -1
- package/dist/code/config.js +0 -41
- package/dist/code/config.js.map +0 -1
- package/dist/code/index.d.ts +0 -19
- package/dist/code/index.d.ts.map +0 -1
- package/dist/code/index.js +0 -400
- package/dist/code/index.js.map +0 -1
- package/dist/code/prompts.d.ts +0 -2
- package/dist/code/prompts.d.ts.map +0 -1
- package/dist/code/prompts.js +0 -45
- package/dist/code/prompts.js.map +0 -1
- package/dist/code/tools/command.d.ts +0 -8
- package/dist/code/tools/command.d.ts.map +0 -1
- package/dist/code/tools/command.js +0 -83
- package/dist/code/tools/command.js.map +0 -1
- package/dist/code/tools/diff-utils.d.ts +0 -2
- package/dist/code/tools/diff-utils.d.ts.map +0 -1
- package/dist/code/tools/diff-utils.js +0 -45
- package/dist/code/tools/diff-utils.js.map +0 -1
- package/dist/code/tools/filesystem.d.ts +0 -11
- package/dist/code/tools/filesystem.d.ts.map +0 -1
- package/dist/code/tools/filesystem.js +0 -442
- package/dist/code/tools/filesystem.js.map +0 -1
- package/dist/code/tools/git.d.ts +0 -7
- package/dist/code/tools/git.d.ts.map +0 -1
- package/dist/code/tools/git.js +0 -111
- package/dist/code/tools/git.js.map +0 -1
- package/dist/code/tools/mcp.d.ts +0 -13
- package/dist/code/tools/mcp.d.ts.map +0 -1
- package/dist/code/tools/mcp.js +0 -230
- package/dist/code/tools/mcp.js.map +0 -1
- package/dist/data/tips.json +0 -118
- package/dist/ui/terminal-ui.d.ts +0 -73
- package/dist/ui/terminal-ui.d.ts.map +0 -1
- package/dist/ui/terminal-ui.js +0 -900
- package/dist/ui/terminal-ui.js.map +0 -1
- package/dist/utils/env-mapper.d.ts +0 -40
- package/dist/utils/env-mapper.d.ts.map +0 -1
- package/dist/utils/env-mapper.js +0 -122
- package/dist/utils/env-mapper.js.map +0 -1
- package/docs/USER_GUIDE.md +0 -573
- package/eslint.config.mjs +0 -43
- package/tests/agent-direct.test.mjs +0 -45
- package/tests/agent-output.test.mjs +0 -64
- package/tests/codemie-code.test.mjs +0 -42
- package/tests/context7-only.test.mjs +0 -42
- package/tests/conversation-flow.test.mjs +0 -63
- package/tests/interactive-simulation.test.mjs +0 -60
- package/tests/live-output.test.mjs +0 -53
- package/tests/mcp-context7.test.mjs +0 -105
- package/tests/mcp-e2e.test.mjs +0 -109
- package/tests/mcp-time-server.test.mjs +0 -58
- package/tests/streaming.test.mjs +0 -57
- package/tests/test-helpers.mjs +0 -94
- package/tests/text-wrapping.test.mjs +0 -33
- package/tests/tool-count.test.mjs +0 -81
- package/tests/ui-format.test.mjs +0 -39
- package/tests/ui-state.test.mjs +0 -72
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Tools Registry for CodeMie Native Agent
|
|
3
|
+
*
|
|
4
|
+
* Creates and manages system tools available to the LangGraph ReAct agent
|
|
5
|
+
*/
|
|
6
|
+
import { StructuredTool } from '@langchain/core/tools';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { promises as fs } from 'fs';
|
|
9
|
+
import { exec } from 'child_process';
|
|
10
|
+
import { promisify } from 'util';
|
|
11
|
+
import path from 'path';
|
|
12
|
+
import { filterDirectoryEntries, createFilterConfig, DEFAULT_FILTER_CONFIG, generateFilterStats } from '../filters.js';
|
|
13
|
+
const execAsync = promisify(exec);
|
|
14
|
+
/**
|
|
15
|
+
* Basic file read tool - reads file contents
|
|
16
|
+
*/
|
|
17
|
+
class ReadFileTool extends StructuredTool {
|
|
18
|
+
name = 'read_file';
|
|
19
|
+
description = 'Read the contents of a file from the filesystem';
|
|
20
|
+
schema = z.object({
|
|
21
|
+
filePath: z.string().describe('Path to the file to read'),
|
|
22
|
+
});
|
|
23
|
+
workingDirectory;
|
|
24
|
+
constructor(workingDirectory) {
|
|
25
|
+
super();
|
|
26
|
+
this.workingDirectory = workingDirectory;
|
|
27
|
+
}
|
|
28
|
+
async _call({ filePath }) {
|
|
29
|
+
try {
|
|
30
|
+
// Resolve path relative to working directory
|
|
31
|
+
const resolvedPath = path.resolve(this.workingDirectory, filePath);
|
|
32
|
+
// Basic security check - ensure we're not escaping working directory
|
|
33
|
+
if (!resolvedPath.startsWith(this.workingDirectory)) {
|
|
34
|
+
throw new Error('Access denied: Path is outside working directory');
|
|
35
|
+
}
|
|
36
|
+
// Emit progress: starting file read
|
|
37
|
+
emitToolProgress(this.name, {
|
|
38
|
+
percentage: 10,
|
|
39
|
+
operation: `Reading ${path.basename(filePath)}...`,
|
|
40
|
+
details: `Opening file: ${filePath}`
|
|
41
|
+
});
|
|
42
|
+
// Check file stats for progress estimation
|
|
43
|
+
const stats = await fs.stat(resolvedPath);
|
|
44
|
+
const fileSize = stats.size;
|
|
45
|
+
// Emit progress: file opened
|
|
46
|
+
emitToolProgress(this.name, {
|
|
47
|
+
percentage: 30,
|
|
48
|
+
operation: `Reading ${path.basename(filePath)}...`,
|
|
49
|
+
details: `File size: ${this.formatFileSize(fileSize)}`
|
|
50
|
+
});
|
|
51
|
+
// For large files, simulate progress by reading in chunks
|
|
52
|
+
if (fileSize > 50000) { // 50KB threshold for showing progress
|
|
53
|
+
let content = '';
|
|
54
|
+
const chunkSize = 8192; // 8KB chunks
|
|
55
|
+
const totalChunks = Math.ceil(fileSize / chunkSize);
|
|
56
|
+
const fileHandle = await fs.open(resolvedPath, 'r');
|
|
57
|
+
const buffer = Buffer.alloc(chunkSize);
|
|
58
|
+
try {
|
|
59
|
+
for (let i = 0; i < totalChunks; i++) {
|
|
60
|
+
const { bytesRead } = await fileHandle.read(buffer, 0, chunkSize, i * chunkSize);
|
|
61
|
+
content += buffer.subarray(0, bytesRead).toString('utf-8');
|
|
62
|
+
const progress = Math.min(30 + Math.round((i + 1) / totalChunks * 60), 90);
|
|
63
|
+
emitToolProgress(this.name, {
|
|
64
|
+
percentage: progress,
|
|
65
|
+
operation: `Reading ${path.basename(filePath)}...`,
|
|
66
|
+
details: `${Math.round((i + 1) / totalChunks * 100)}% complete`
|
|
67
|
+
});
|
|
68
|
+
// Small delay for large files to show progress
|
|
69
|
+
if (i % 10 === 0) {
|
|
70
|
+
await new Promise(resolve => setTimeout(resolve, 1));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
await fileHandle.close();
|
|
76
|
+
}
|
|
77
|
+
// Final progress
|
|
78
|
+
emitToolProgress(this.name, {
|
|
79
|
+
percentage: 100,
|
|
80
|
+
operation: `Completed reading ${path.basename(filePath)}`,
|
|
81
|
+
details: `Read ${this.formatFileSize(fileSize)}`
|
|
82
|
+
});
|
|
83
|
+
return `File: ${filePath}\n\n${content}`;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// For small files, read normally but still show progress
|
|
87
|
+
const content = await fs.readFile(resolvedPath, 'utf-8');
|
|
88
|
+
emitToolProgress(this.name, {
|
|
89
|
+
percentage: 100,
|
|
90
|
+
operation: `Completed reading ${path.basename(filePath)}`,
|
|
91
|
+
details: `Read ${this.formatFileSize(fileSize)}`
|
|
92
|
+
});
|
|
93
|
+
return `File: ${filePath}\n\n${content}`;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
return `Error reading file: ${error instanceof Error ? error.message : String(error)}`;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
formatFileSize(bytes) {
|
|
101
|
+
if (bytes < 1024)
|
|
102
|
+
return `${bytes} B`;
|
|
103
|
+
if (bytes < 1024 * 1024)
|
|
104
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
105
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Basic file write tool - writes content to a file
|
|
110
|
+
*/
|
|
111
|
+
class WriteFileTool extends StructuredTool {
|
|
112
|
+
name = 'write_file';
|
|
113
|
+
description = 'Write content to a file in the filesystem';
|
|
114
|
+
schema = z.object({
|
|
115
|
+
filePath: z.string().describe('Path to the file to write'),
|
|
116
|
+
content: z.string().describe('Content to write to the file'),
|
|
117
|
+
});
|
|
118
|
+
workingDirectory;
|
|
119
|
+
constructor(workingDirectory) {
|
|
120
|
+
super();
|
|
121
|
+
this.workingDirectory = workingDirectory;
|
|
122
|
+
}
|
|
123
|
+
async _call({ filePath, content }) {
|
|
124
|
+
try {
|
|
125
|
+
// Resolve path relative to working directory
|
|
126
|
+
const resolvedPath = path.resolve(this.workingDirectory, filePath);
|
|
127
|
+
// Basic security check - ensure we're not escaping working directory
|
|
128
|
+
if (!resolvedPath.startsWith(this.workingDirectory)) {
|
|
129
|
+
throw new Error('Access denied: Path is outside working directory');
|
|
130
|
+
}
|
|
131
|
+
// Ensure directory exists
|
|
132
|
+
const dir = path.dirname(resolvedPath);
|
|
133
|
+
await fs.mkdir(dir, { recursive: true });
|
|
134
|
+
await fs.writeFile(resolvedPath, content, 'utf-8');
|
|
135
|
+
return `Successfully wrote ${content.length} characters to ${filePath}`;
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
return `Error writing file: ${error instanceof Error ? error.message : String(error)}`;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Basic command execution tool - runs shell commands
|
|
144
|
+
*/
|
|
145
|
+
class ExecuteCommandTool extends StructuredTool {
|
|
146
|
+
name = 'execute_command';
|
|
147
|
+
description = 'Execute a shell command in the working directory';
|
|
148
|
+
schema = z.object({
|
|
149
|
+
command: z.string().describe('Shell command to execute'),
|
|
150
|
+
});
|
|
151
|
+
workingDirectory;
|
|
152
|
+
constructor(workingDirectory) {
|
|
153
|
+
super();
|
|
154
|
+
this.workingDirectory = workingDirectory;
|
|
155
|
+
}
|
|
156
|
+
async _call({ command }) {
|
|
157
|
+
try {
|
|
158
|
+
// Basic security checks
|
|
159
|
+
const dangerousCommands = ['rm -rf', 'sudo', 'chmod +x', 'curl', 'wget'];
|
|
160
|
+
if (dangerousCommands.some(cmd => command.toLowerCase().includes(cmd))) {
|
|
161
|
+
return `Error: Command rejected for security reasons: ${command}`;
|
|
162
|
+
}
|
|
163
|
+
// Emit progress: command starting
|
|
164
|
+
emitToolProgress(this.name, {
|
|
165
|
+
percentage: 10,
|
|
166
|
+
operation: `Executing command...`,
|
|
167
|
+
details: command.length > 50 ? `${command.substring(0, 47)}...` : command
|
|
168
|
+
});
|
|
169
|
+
// Start timer for progress estimation
|
|
170
|
+
const startTime = Date.now();
|
|
171
|
+
let progressInterval;
|
|
172
|
+
// For long-running commands, simulate progress
|
|
173
|
+
const estimatedTime = this.estimateCommandTime(command);
|
|
174
|
+
if (estimatedTime > 2000) { // Only show progress for commands estimated > 2s
|
|
175
|
+
progressInterval = setInterval(() => {
|
|
176
|
+
const elapsed = Date.now() - startTime;
|
|
177
|
+
const progress = Math.min(10 + Math.round((elapsed / estimatedTime) * 80), 90);
|
|
178
|
+
emitToolProgress(this.name, {
|
|
179
|
+
percentage: progress,
|
|
180
|
+
operation: `Executing command...`,
|
|
181
|
+
details: `Running for ${Math.round(elapsed / 1000)}s`,
|
|
182
|
+
estimatedTimeRemaining: Math.max(0, estimatedTime - elapsed)
|
|
183
|
+
});
|
|
184
|
+
}, 1000);
|
|
185
|
+
}
|
|
186
|
+
try {
|
|
187
|
+
const { stdout, stderr } = await execAsync(command, {
|
|
188
|
+
cwd: this.workingDirectory,
|
|
189
|
+
timeout: 30000, // 30 second timeout
|
|
190
|
+
maxBuffer: 1024 * 1024 // 1MB output limit
|
|
191
|
+
});
|
|
192
|
+
// Clear interval and emit completion
|
|
193
|
+
if (progressInterval) {
|
|
194
|
+
clearInterval(progressInterval);
|
|
195
|
+
}
|
|
196
|
+
const executionTime = Date.now() - startTime;
|
|
197
|
+
emitToolProgress(this.name, {
|
|
198
|
+
percentage: 100,
|
|
199
|
+
operation: `Command completed`,
|
|
200
|
+
details: `Finished in ${executionTime}ms`
|
|
201
|
+
});
|
|
202
|
+
let result = '';
|
|
203
|
+
if (stdout)
|
|
204
|
+
result += `STDOUT:\n${stdout}\n`;
|
|
205
|
+
if (stderr)
|
|
206
|
+
result += `STDERR:\n${stderr}\n`;
|
|
207
|
+
return result || 'Command executed successfully (no output)';
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
if (progressInterval) {
|
|
211
|
+
clearInterval(progressInterval);
|
|
212
|
+
}
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
return `Error executing command: ${error instanceof Error ? error.message : String(error)}`;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
estimateCommandTime(command) {
|
|
221
|
+
// Simple heuristics for command execution time estimation
|
|
222
|
+
const lowerCommand = command.toLowerCase();
|
|
223
|
+
if (lowerCommand.includes('npm install') || lowerCommand.includes('yarn install')) {
|
|
224
|
+
return 15000; // 15s for package installs
|
|
225
|
+
}
|
|
226
|
+
if (lowerCommand.includes('npm run build') || lowerCommand.includes('yarn build')) {
|
|
227
|
+
return 10000; // 10s for builds
|
|
228
|
+
}
|
|
229
|
+
if (lowerCommand.includes('git clone') || lowerCommand.includes('git pull')) {
|
|
230
|
+
return 8000; // 8s for git operations
|
|
231
|
+
}
|
|
232
|
+
if (lowerCommand.includes('find') || lowerCommand.includes('grep -r')) {
|
|
233
|
+
return 5000; // 5s for search operations
|
|
234
|
+
}
|
|
235
|
+
if (lowerCommand.includes('tar') || lowerCommand.includes('zip') || lowerCommand.includes('unzip')) {
|
|
236
|
+
return 6000; // 6s for compression operations
|
|
237
|
+
}
|
|
238
|
+
return 2000; // Default 2s
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Directory listing tool - lists files and directories with intelligent filtering
|
|
243
|
+
*/
|
|
244
|
+
class ListDirectoryTool extends StructuredTool {
|
|
245
|
+
name = 'list_directory';
|
|
246
|
+
description = 'List files and directories in a given path, automatically filtering out common ignore patterns (node_modules, .git, build artifacts, etc.)';
|
|
247
|
+
schema = z.object({
|
|
248
|
+
directoryPath: z.string().optional().describe('Directory path to list (defaults to working directory)'),
|
|
249
|
+
showAll: z.boolean().optional().describe('Show all files including normally filtered ones (default: false)'),
|
|
250
|
+
includeHidden: z.boolean().optional().describe('Include hidden files and directories (default: false)'),
|
|
251
|
+
});
|
|
252
|
+
workingDirectory;
|
|
253
|
+
filterConfig;
|
|
254
|
+
constructor(workingDirectory, filterConfig) {
|
|
255
|
+
super();
|
|
256
|
+
this.workingDirectory = workingDirectory;
|
|
257
|
+
this.filterConfig = filterConfig || DEFAULT_FILTER_CONFIG;
|
|
258
|
+
}
|
|
259
|
+
async _call({ directoryPath, showAll = false, includeHidden = false }) {
|
|
260
|
+
try {
|
|
261
|
+
const targetPath = directoryPath
|
|
262
|
+
? path.resolve(this.workingDirectory, directoryPath)
|
|
263
|
+
: this.workingDirectory;
|
|
264
|
+
// Security check
|
|
265
|
+
if (!targetPath.startsWith(this.workingDirectory)) {
|
|
266
|
+
throw new Error('Access denied: Path is outside working directory');
|
|
267
|
+
}
|
|
268
|
+
const entries = await fs.readdir(targetPath, { withFileTypes: true });
|
|
269
|
+
// Convert to our format for filtering
|
|
270
|
+
let directoryEntries = entries.map(entry => ({
|
|
271
|
+
name: entry.name,
|
|
272
|
+
isDirectory: entry.isDirectory()
|
|
273
|
+
}));
|
|
274
|
+
// Filter hidden files if not requested
|
|
275
|
+
if (!includeHidden) {
|
|
276
|
+
directoryEntries = directoryEntries.filter(entry => !entry.name.startsWith('.'));
|
|
277
|
+
}
|
|
278
|
+
// Store original count for statistics
|
|
279
|
+
const originalEntries = [...directoryEntries];
|
|
280
|
+
// Apply filtering if not showAll
|
|
281
|
+
let filteredEntries = directoryEntries;
|
|
282
|
+
let filterStats;
|
|
283
|
+
if (!showAll) {
|
|
284
|
+
const filterConfig = createFilterConfig({
|
|
285
|
+
...this.filterConfig,
|
|
286
|
+
enabled: true
|
|
287
|
+
});
|
|
288
|
+
filteredEntries = filterDirectoryEntries(directoryEntries, filterConfig, directoryPath || '');
|
|
289
|
+
filterStats = generateFilterStats(originalEntries, filteredEntries, filterConfig);
|
|
290
|
+
}
|
|
291
|
+
// Separate into files and directories
|
|
292
|
+
const files = [];
|
|
293
|
+
const directories = [];
|
|
294
|
+
for (const entry of filteredEntries) {
|
|
295
|
+
if (entry.isDirectory) {
|
|
296
|
+
directories.push(`${entry.name}/`);
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
files.push(entry.name);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// Build result string
|
|
303
|
+
let result = `Directory: ${directoryPath || '.'}\n\n`;
|
|
304
|
+
if (directories.length > 0) {
|
|
305
|
+
result += 'Directories:\n';
|
|
306
|
+
result += directories.map(dir => ` ${dir}`).join('\n') + '\n\n';
|
|
307
|
+
}
|
|
308
|
+
if (files.length > 0) {
|
|
309
|
+
result += 'Files:\n';
|
|
310
|
+
result += files.map(file => ` ${file}`).join('\n');
|
|
311
|
+
}
|
|
312
|
+
if (directories.length === 0 && files.length === 0) {
|
|
313
|
+
result += 'Directory is empty';
|
|
314
|
+
}
|
|
315
|
+
// Add filtering summary if filtering was applied
|
|
316
|
+
if (!showAll && filterStats && filterStats.ignoredEntries > 0) {
|
|
317
|
+
result += `\n\n--- Filtered out ${filterStats.ignoredEntries} items ---`;
|
|
318
|
+
result += `\nShowing ${filterStats.filteredEntries} of ${filterStats.totalEntries} total items`;
|
|
319
|
+
result += `\nUse showAll: true to see all items`;
|
|
320
|
+
}
|
|
321
|
+
return result;
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
return `Error listing directory: ${error instanceof Error ? error.message : String(error)}`;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Global tool event emitter - set during chatStream
|
|
330
|
+
*/
|
|
331
|
+
let globalToolEventCallback = null;
|
|
332
|
+
/**
|
|
333
|
+
* Set the global tool event callback for the current execution
|
|
334
|
+
*/
|
|
335
|
+
export function setGlobalToolEventCallback(callback) {
|
|
336
|
+
globalToolEventCallback = callback;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Emit a tool progress event using the global callback
|
|
340
|
+
*/
|
|
341
|
+
export function emitToolProgress(toolName, progress) {
|
|
342
|
+
if (globalToolEventCallback) {
|
|
343
|
+
globalToolEventCallback({
|
|
344
|
+
type: 'tool_call_progress',
|
|
345
|
+
toolName,
|
|
346
|
+
progress
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Create system tools available to the CodeMie agent
|
|
352
|
+
*/
|
|
353
|
+
export async function createSystemTools(config) {
|
|
354
|
+
const tools = [];
|
|
355
|
+
try {
|
|
356
|
+
// Basic file system tools
|
|
357
|
+
tools.push(new ReadFileTool(config.workingDirectory));
|
|
358
|
+
tools.push(new WriteFileTool(config.workingDirectory));
|
|
359
|
+
tools.push(new ListDirectoryTool(config.workingDirectory, config.directoryFilters));
|
|
360
|
+
// Command execution tool
|
|
361
|
+
tools.push(new ExecuteCommandTool(config.workingDirectory));
|
|
362
|
+
// Planning and todo tools
|
|
363
|
+
try {
|
|
364
|
+
const { planningTools, initializeTodoStorage } = await import('./planning.js');
|
|
365
|
+
// Initialize todo storage for this working directory
|
|
366
|
+
initializeTodoStorage(config.workingDirectory, config.debug);
|
|
367
|
+
tools.push(...planningTools);
|
|
368
|
+
if (config.debug) {
|
|
369
|
+
console.log(`[DEBUG] Added ${planningTools.length} planning tools`);
|
|
370
|
+
console.log(`[DEBUG] Initialized todo storage for: ${config.workingDirectory}`);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
catch (error) {
|
|
374
|
+
if (config.debug) {
|
|
375
|
+
console.warn('[DEBUG] Planning tools not available:', error);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
if (config.debug) {
|
|
379
|
+
console.log(`[DEBUG] Created ${tools.length} total system tools`);
|
|
380
|
+
}
|
|
381
|
+
return tools;
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
if (config.debug) {
|
|
385
|
+
console.error('[DEBUG] Error creating system tools:', error);
|
|
386
|
+
}
|
|
387
|
+
// Return empty array on error to allow agent to function
|
|
388
|
+
return [];
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Get available tool names and descriptions
|
|
393
|
+
*/
|
|
394
|
+
export function getToolSummary() {
|
|
395
|
+
return [
|
|
396
|
+
{ name: 'read_file', description: 'Read the contents of a file from the filesystem' },
|
|
397
|
+
{ name: 'write_file', description: 'Write content to a file in the filesystem' },
|
|
398
|
+
{ name: 'list_directory', description: 'List files and directories in a given path, automatically filtering out common ignore patterns (node_modules, .git, build artifacts, etc.)' },
|
|
399
|
+
{ name: 'execute_command', description: 'Execute a shell command in the working directory' },
|
|
400
|
+
{ name: 'write_todos', description: 'Create or update a structured todo list for planning and progress tracking' },
|
|
401
|
+
{ name: 'update_todo_status', description: 'Update the status of a specific todo by index' },
|
|
402
|
+
{ name: 'append_todo', description: 'Add a new todo item to the existing list' },
|
|
403
|
+
{ name: 'clear_todos', description: 'Clear all todos from the list' },
|
|
404
|
+
{ name: 'show_todos', description: 'Display the current todo list with progress information' }
|
|
405
|
+
];
|
|
406
|
+
}
|
|
407
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Planning Tools for CodeMie Agent
|
|
3
|
+
*
|
|
4
|
+
* Implementation of todo management tools with persistent file storage
|
|
5
|
+
*/
|
|
6
|
+
import { StructuredTool } from '@langchain/core/tools';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import type { Todo, TodoUpdateEvent } from '../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Initialize todo storage for the current working directory
|
|
11
|
+
*/
|
|
12
|
+
export declare function initializeTodoStorage(workingDirectory: string, debug?: boolean): void;
|
|
13
|
+
/**
|
|
14
|
+
* Simple Write Todos Tool
|
|
15
|
+
*/
|
|
16
|
+
declare class WriteSimpleTodosTool extends StructuredTool {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
schema: z.ZodObject<{
|
|
20
|
+
todos: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodObject<{
|
|
21
|
+
content: z.ZodString;
|
|
22
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
23
|
+
in_progress: "in_progress";
|
|
24
|
+
completed: "completed";
|
|
25
|
+
pending: "pending";
|
|
26
|
+
}>>;
|
|
27
|
+
}, z.core.$strip>>]>;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
_call(input: {
|
|
30
|
+
todos: any;
|
|
31
|
+
}): Promise<string>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Show Todos Tool with Storage Information
|
|
35
|
+
*/
|
|
36
|
+
declare class ShowSimpleTodosTool extends StructuredTool {
|
|
37
|
+
name: string;
|
|
38
|
+
description: string;
|
|
39
|
+
schema: z.ZodObject<{}, z.core.$strip>;
|
|
40
|
+
_call(): Promise<string>;
|
|
41
|
+
}
|
|
42
|
+
export declare const planningTools: (WriteSimpleTodosTool | ShowSimpleTodosTool)[];
|
|
43
|
+
export declare const writeTodos: WriteSimpleTodosTool;
|
|
44
|
+
export declare const showTodos: ShowSimpleTodosTool;
|
|
45
|
+
export declare class TodoStateManager {
|
|
46
|
+
static addEventCallback(callback: (event: TodoUpdateEvent) => void): void;
|
|
47
|
+
static removeEventCallback(callback: (event: TodoUpdateEvent) => void): void;
|
|
48
|
+
static getCurrentTodos(): Todo[];
|
|
49
|
+
static clearTodos(): Promise<void>;
|
|
50
|
+
static getStorageInfo(): any;
|
|
51
|
+
}
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=planning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../../../src/agents/codemie-code/tools/planning.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQzD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,IAAI,CAmCnF;AAED;;GAEG;AACH,cAAM,oBAAqB,SAAQ,cAAc;IAC/C,IAAI,SAAiB;IACrB,WAAW,SAAgF;IAE3F,MAAM;;;;;;;;;sBASH;IAEG,KAAK,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAwEpD;AAED;;GAEG;AACH,cAAM,mBAAoB,SAAQ,cAAc;IAC9C,IAAI,SAAgB;IACpB,WAAW,SAAiF;IAE5F,MAAM,iCAAgB;IAEhB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CA0C/B;AAGD,eAAO,MAAM,aAAa,gDAGzB,CAAC;AAGF,eAAO,MAAM,UAAU,sBAA6B,CAAC;AACrD,eAAO,MAAM,SAAS,qBAA4B,CAAC;AAGnD,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAIzE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAO5E,MAAM,CAAC,eAAe,IAAI,IAAI,EAAE;WAInB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BxC,MAAM,CAAC,cAAc,IAAI,GAAG;CAG7B"}
|