@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
|
@@ -1,442 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.FilesystemTools = void 0;
|
|
37
|
-
const tools_1 = require("@langchain/core/tools");
|
|
38
|
-
const zod_1 = require("zod");
|
|
39
|
-
const fs = __importStar(require("fs/promises"));
|
|
40
|
-
const path = __importStar(require("path"));
|
|
41
|
-
const diff_utils_js_1 = require("./diff-utils.js");
|
|
42
|
-
const errors_js_1 = require("../../utils/errors.js");
|
|
43
|
-
const DEFAULT_IGNORE_PATTERNS = [
|
|
44
|
-
'node_modules', '.git', '__pycache__', '.pytest_cache',
|
|
45
|
-
'.venv', 'venv', 'dist', 'build', '.next', '.nuxt',
|
|
46
|
-
'coverage', '.DS_Store'
|
|
47
|
-
];
|
|
48
|
-
class FilesystemTools {
|
|
49
|
-
config;
|
|
50
|
-
constructor(config) {
|
|
51
|
-
this.config = config;
|
|
52
|
-
if (!config.ignorePatterns) {
|
|
53
|
-
config.ignorePatterns = DEFAULT_IGNORE_PATTERNS;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
getTools() {
|
|
57
|
-
return [
|
|
58
|
-
new ReadFileTool(this.config),
|
|
59
|
-
new ReadMultipleFilesTool(this.config),
|
|
60
|
-
new WriteFileTool(this.config),
|
|
61
|
-
new EditFileTool(this.config),
|
|
62
|
-
new CreateDirectoryTool(this.config),
|
|
63
|
-
new ListDirectoryTool(this.config),
|
|
64
|
-
new ProjectTreeTool(this.config),
|
|
65
|
-
new MoveFileTool(this.config),
|
|
66
|
-
new SearchFilesTool(this.config),
|
|
67
|
-
new ListAllowedDirectoriesTool(this.config)
|
|
68
|
-
];
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
exports.FilesystemTools = FilesystemTools;
|
|
72
|
-
// Base class with security validation
|
|
73
|
-
class BaseFilesystemTool extends tools_1.StructuredTool {
|
|
74
|
-
config;
|
|
75
|
-
constructor(config) {
|
|
76
|
-
super();
|
|
77
|
-
this.config = config;
|
|
78
|
-
}
|
|
79
|
-
async validatePath(requestedPath) {
|
|
80
|
-
// Expand home directory
|
|
81
|
-
const expanded = requestedPath.startsWith('~/')
|
|
82
|
-
? path.join(process.env.HOME || '', requestedPath.slice(2))
|
|
83
|
-
: requestedPath;
|
|
84
|
-
// Get absolute path
|
|
85
|
-
const absolute = path.resolve(expanded);
|
|
86
|
-
const normalized = path.normalize(absolute);
|
|
87
|
-
// Check if path is within allowed directories
|
|
88
|
-
const isAllowed = this.config.allowedDirectories.some(dir => normalized.startsWith(path.normalize(dir)));
|
|
89
|
-
if (!isAllowed) {
|
|
90
|
-
throw new errors_js_1.PathSecurityError(absolute, 'path outside allowed directories');
|
|
91
|
-
}
|
|
92
|
-
// Resolve symlinks and validate again
|
|
93
|
-
try {
|
|
94
|
-
const realPath = await fs.realpath(absolute);
|
|
95
|
-
const isRealAllowed = this.config.allowedDirectories.some(dir => realPath.startsWith(path.normalize(dir)));
|
|
96
|
-
if (!isRealAllowed) {
|
|
97
|
-
throw new errors_js_1.PathSecurityError(realPath, 'symlink target outside allowed directories');
|
|
98
|
-
}
|
|
99
|
-
return realPath;
|
|
100
|
-
}
|
|
101
|
-
catch {
|
|
102
|
-
// File doesn't exist yet, validate parent
|
|
103
|
-
const parent = path.dirname(absolute);
|
|
104
|
-
try {
|
|
105
|
-
const realParent = await fs.realpath(parent);
|
|
106
|
-
const isParentAllowed = this.config.allowedDirectories.some(dir => realParent.startsWith(path.normalize(dir)));
|
|
107
|
-
if (!isParentAllowed) {
|
|
108
|
-
throw new errors_js_1.PathSecurityError(parent, 'parent directory outside allowed directories');
|
|
109
|
-
}
|
|
110
|
-
return absolute;
|
|
111
|
-
}
|
|
112
|
-
catch {
|
|
113
|
-
throw new errors_js_1.PathSecurityError(parent, 'parent directory does not exist');
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
shouldIgnore(filePath) {
|
|
118
|
-
return this.config.ignorePatterns.some(pattern => filePath.includes(pattern));
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
// 1. Read File Tool
|
|
122
|
-
class ReadFileTool extends BaseFilesystemTool {
|
|
123
|
-
name = 'read_file';
|
|
124
|
-
description = 'Read contents of a file';
|
|
125
|
-
schema = zod_1.z.object({
|
|
126
|
-
path: zod_1.z.string().describe('File path to read')
|
|
127
|
-
});
|
|
128
|
-
async _call({ path: filePath }) {
|
|
129
|
-
try {
|
|
130
|
-
const validated = await this.validatePath(filePath);
|
|
131
|
-
const content = await fs.readFile(validated, 'utf-8');
|
|
132
|
-
return content;
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
return `Error reading file: ${(0, errors_js_1.getErrorMessage)(error)}`;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
// 2. Read Multiple Files Tool
|
|
140
|
-
class ReadMultipleFilesTool extends BaseFilesystemTool {
|
|
141
|
-
name = 'read_multiple_files';
|
|
142
|
-
description = 'Read contents of multiple files at once';
|
|
143
|
-
schema = zod_1.z.object({
|
|
144
|
-
paths: zod_1.z.array(zod_1.z.string()).describe('Array of file paths to read')
|
|
145
|
-
});
|
|
146
|
-
async _call({ paths }) {
|
|
147
|
-
const results = [];
|
|
148
|
-
for (const filePath of paths) {
|
|
149
|
-
try {
|
|
150
|
-
const validated = await this.validatePath(filePath);
|
|
151
|
-
const content = await fs.readFile(validated, 'utf-8');
|
|
152
|
-
results.push(`${filePath}:\n${content}\n`);
|
|
153
|
-
}
|
|
154
|
-
catch (error) {
|
|
155
|
-
results.push(`${filePath}: Error - ${(0, errors_js_1.getErrorMessage)(error)}`);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return results.join('\n---\n');
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
// 3. Write File Tool
|
|
162
|
-
class WriteFileTool extends BaseFilesystemTool {
|
|
163
|
-
name = 'write_file';
|
|
164
|
-
description = 'Write content to a file, creating parent directories if needed';
|
|
165
|
-
schema = zod_1.z.object({
|
|
166
|
-
path: zod_1.z.string().describe('File path to write'),
|
|
167
|
-
content: zod_1.z.string().describe('Content to write to file')
|
|
168
|
-
});
|
|
169
|
-
async _call({ path: filePath, content }) {
|
|
170
|
-
try {
|
|
171
|
-
const validated = await this.validatePath(filePath);
|
|
172
|
-
await fs.mkdir(path.dirname(validated), { recursive: true });
|
|
173
|
-
await fs.writeFile(validated, content, 'utf-8');
|
|
174
|
-
return `Successfully wrote to ${filePath}`;
|
|
175
|
-
}
|
|
176
|
-
catch (error) {
|
|
177
|
-
return `Error writing file: ${(0, errors_js_1.getErrorMessage)(error)}`;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
// 4. Edit File Tool (with indentation preservation and diff generation)
|
|
182
|
-
class EditFileTool extends BaseFilesystemTool {
|
|
183
|
-
name = 'edit_file';
|
|
184
|
-
description = `Edit a file by replacing specific text blocks. Provides a diff of changes.
|
|
185
|
-
|
|
186
|
-
Each edit should specify:
|
|
187
|
-
- old_text: Exact text to find (must match exactly including whitespace)
|
|
188
|
-
- new_text: Replacement text
|
|
189
|
-
|
|
190
|
-
The tool preserves indentation and shows a unified diff of changes.`;
|
|
191
|
-
schema = zod_1.z.object({
|
|
192
|
-
path: zod_1.z.string().describe('File path to edit'),
|
|
193
|
-
edits: zod_1.z.array(zod_1.z.object({
|
|
194
|
-
old_text: zod_1.z.string().describe('Exact text to find'),
|
|
195
|
-
new_text: zod_1.z.string().describe('Replacement text')
|
|
196
|
-
})).describe('Array of edit operations'),
|
|
197
|
-
dry_run: zod_1.z.boolean().nullable().optional().describe('If true, show diff without writing')
|
|
198
|
-
});
|
|
199
|
-
async _call({ path: filePath, edits, dry_run = false }) {
|
|
200
|
-
try {
|
|
201
|
-
const validated = await this.validatePath(filePath);
|
|
202
|
-
const originalContent = await fs.readFile(validated, 'utf-8');
|
|
203
|
-
let modifiedContent = originalContent;
|
|
204
|
-
// Apply each edit
|
|
205
|
-
for (const edit of edits) {
|
|
206
|
-
const oldText = this.normalizeLineEndings(edit.old_text);
|
|
207
|
-
const newText = this.normalizeLineEndings(edit.new_text);
|
|
208
|
-
// Try direct replacement first
|
|
209
|
-
if (modifiedContent.includes(oldText)) {
|
|
210
|
-
modifiedContent = modifiedContent.replace(oldText, newText);
|
|
211
|
-
continue;
|
|
212
|
-
}
|
|
213
|
-
// Try line-by-line with indentation preservation
|
|
214
|
-
const result = this.applyEditWithIndentation(modifiedContent, oldText, newText);
|
|
215
|
-
if (result) {
|
|
216
|
-
modifiedContent = result;
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
throw new Error(`Could not find exact match for:\n${edit.old_text}`);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
// Create diff
|
|
223
|
-
const diff = (0, diff_utils_js_1.createUnifiedDiff)(originalContent, modifiedContent, filePath);
|
|
224
|
-
// Write if not dry run
|
|
225
|
-
if (!dry_run) {
|
|
226
|
-
await fs.writeFile(validated, modifiedContent, 'utf-8');
|
|
227
|
-
}
|
|
228
|
-
return diff;
|
|
229
|
-
}
|
|
230
|
-
catch (error) {
|
|
231
|
-
return `Error editing file: ${(0, errors_js_1.getErrorMessage)(error)}`;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
normalizeLineEndings(text) {
|
|
235
|
-
return text.replace(/\r\n/g, '\n');
|
|
236
|
-
}
|
|
237
|
-
applyEditWithIndentation(content, oldText, newText) {
|
|
238
|
-
const contentLines = content.split('\n');
|
|
239
|
-
const oldLines = oldText.split('\n');
|
|
240
|
-
const newLines = newText.split('\n');
|
|
241
|
-
// Find matching position
|
|
242
|
-
for (let i = 0; i <= contentLines.length - oldLines.length; i++) {
|
|
243
|
-
const matches = oldLines.every((oldLine, j) => contentLines[i + j].trim() === oldLine.trim());
|
|
244
|
-
if (matches) {
|
|
245
|
-
// Preserve original indentation
|
|
246
|
-
const indent = contentLines[i].match(/^\s*/)?.[0] || '';
|
|
247
|
-
const indentedNewLines = newLines.map((line, j) => {
|
|
248
|
-
if (j === 0)
|
|
249
|
-
return indent + line.trimStart();
|
|
250
|
-
return line;
|
|
251
|
-
});
|
|
252
|
-
contentLines.splice(i, oldLines.length, ...indentedNewLines);
|
|
253
|
-
return contentLines.join('\n');
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
return null;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
// 5. Create Directory Tool
|
|
260
|
-
class CreateDirectoryTool extends BaseFilesystemTool {
|
|
261
|
-
name = 'create_directory';
|
|
262
|
-
description = 'Create a directory (and parent directories if needed)';
|
|
263
|
-
schema = zod_1.z.object({
|
|
264
|
-
path: zod_1.z.string().describe('Directory path to create')
|
|
265
|
-
});
|
|
266
|
-
async _call({ path: dirPath }) {
|
|
267
|
-
try {
|
|
268
|
-
const validated = await this.validatePath(dirPath);
|
|
269
|
-
await fs.mkdir(validated, { recursive: true });
|
|
270
|
-
return `Successfully created directory ${dirPath}`;
|
|
271
|
-
}
|
|
272
|
-
catch (error) {
|
|
273
|
-
return `Error creating directory: ${(0, errors_js_1.getErrorMessage)(error)}`;
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
// 6. List Directory Tool
|
|
278
|
-
class ListDirectoryTool extends BaseFilesystemTool {
|
|
279
|
-
name = 'list_directory';
|
|
280
|
-
description = 'List files and directories in a path';
|
|
281
|
-
schema = zod_1.z.object({
|
|
282
|
-
path: zod_1.z.string().describe('Directory path to list')
|
|
283
|
-
});
|
|
284
|
-
async _call({ path: dirPath }) {
|
|
285
|
-
try {
|
|
286
|
-
const validated = await this.validatePath(dirPath);
|
|
287
|
-
const entries = await fs.readdir(validated, { withFileTypes: true });
|
|
288
|
-
const formatted = entries.map(entry => {
|
|
289
|
-
const type = entry.isDirectory() ? '[DIR]' : '[FILE]';
|
|
290
|
-
return `${type} ${entry.name}`;
|
|
291
|
-
});
|
|
292
|
-
return formatted.length > 0 ? formatted.join('\n') : 'Empty directory';
|
|
293
|
-
}
|
|
294
|
-
catch (error) {
|
|
295
|
-
return `Error listing directory: ${(0, errors_js_1.getErrorMessage)(error)}`;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
// 7. Project Tree Tool
|
|
300
|
-
class ProjectTreeTool extends BaseFilesystemTool {
|
|
301
|
-
name = 'project_tree';
|
|
302
|
-
description = 'Get complete project file tree as JSON array, excluding ignored patterns';
|
|
303
|
-
schema = zod_1.z.object({
|
|
304
|
-
directory: zod_1.z.string().nullable().optional().describe('Directory to scan (default: first allowed directory)')
|
|
305
|
-
});
|
|
306
|
-
async _call({ directory }) {
|
|
307
|
-
try {
|
|
308
|
-
const targetDir = directory || this.config.allowedDirectories[0];
|
|
309
|
-
const validated = await this.validatePath(targetDir);
|
|
310
|
-
const files = await this.collectFiles(validated, validated);
|
|
311
|
-
return JSON.stringify(files, null, 2);
|
|
312
|
-
}
|
|
313
|
-
catch (error) {
|
|
314
|
-
return `Error generating project tree: ${(0, errors_js_1.getErrorMessage)(error)}`;
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
async collectFiles(rootDir, currentDir) {
|
|
318
|
-
const files = [];
|
|
319
|
-
try {
|
|
320
|
-
const entries = await fs.readdir(currentDir, { withFileTypes: true });
|
|
321
|
-
for (const entry of entries) {
|
|
322
|
-
const fullPath = path.join(currentDir, entry.name);
|
|
323
|
-
const relativePath = path.relative(rootDir, fullPath);
|
|
324
|
-
// Skip ignored patterns
|
|
325
|
-
if (this.shouldIgnore(relativePath)) {
|
|
326
|
-
continue;
|
|
327
|
-
}
|
|
328
|
-
if (entry.isDirectory()) {
|
|
329
|
-
const subFiles = await this.collectFiles(rootDir, fullPath);
|
|
330
|
-
files.push(...subFiles);
|
|
331
|
-
}
|
|
332
|
-
else {
|
|
333
|
-
files.push(relativePath);
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
catch {
|
|
338
|
-
// Skip directories we can't read
|
|
339
|
-
}
|
|
340
|
-
return files;
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
// 8. Move File Tool
|
|
344
|
-
class MoveFileTool extends BaseFilesystemTool {
|
|
345
|
-
name = 'move_file';
|
|
346
|
-
description = 'Move or rename a file';
|
|
347
|
-
schema = zod_1.z.object({
|
|
348
|
-
source: zod_1.z.string().describe('Source file path'),
|
|
349
|
-
destination: zod_1.z.string().describe('Destination file path')
|
|
350
|
-
});
|
|
351
|
-
async _call({ source, destination }) {
|
|
352
|
-
try {
|
|
353
|
-
const validatedSource = await this.validatePath(source);
|
|
354
|
-
const validatedDest = await this.validatePath(destination);
|
|
355
|
-
await fs.mkdir(path.dirname(validatedDest), { recursive: true });
|
|
356
|
-
await fs.rename(validatedSource, validatedDest);
|
|
357
|
-
return `Successfully moved ${source} to ${destination}`;
|
|
358
|
-
}
|
|
359
|
-
catch (error) {
|
|
360
|
-
return `Error moving file: ${(0, errors_js_1.getErrorMessage)(error)}`;
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
// 9. Search Files Tool
|
|
365
|
-
class SearchFilesTool extends BaseFilesystemTool {
|
|
366
|
-
name = 'search_files';
|
|
367
|
-
description = `Search for files by name or content.
|
|
368
|
-
|
|
369
|
-
- By default, searches file names
|
|
370
|
-
- With full_search=true, also searches file contents
|
|
371
|
-
- Respects ignore patterns`;
|
|
372
|
-
schema = zod_1.z.object({
|
|
373
|
-
path: zod_1.z.string().describe('Directory to search in'),
|
|
374
|
-
pattern: zod_1.z.string().describe('Search pattern (case-insensitive)'),
|
|
375
|
-
exclude_patterns: zod_1.z.array(zod_1.z.string()).nullable().optional().describe('Additional patterns to exclude'),
|
|
376
|
-
full_search: zod_1.z.boolean().nullable().optional().describe('Search file contents (default: false)')
|
|
377
|
-
});
|
|
378
|
-
async _call({ path: searchPath, pattern, exclude_patterns, full_search }) {
|
|
379
|
-
try {
|
|
380
|
-
const validated = await this.validatePath(searchPath);
|
|
381
|
-
const excludeArray = exclude_patterns || [];
|
|
382
|
-
const allExclude = [...this.config.ignorePatterns, ...excludeArray];
|
|
383
|
-
const fullSearchBool = full_search || false;
|
|
384
|
-
const results = await this.searchFiles(validated, pattern.toLowerCase(), allExclude, fullSearchBool);
|
|
385
|
-
return results.length > 0 ? results.join('\n') : 'No matches found';
|
|
386
|
-
}
|
|
387
|
-
catch (error) {
|
|
388
|
-
return `Error searching: ${(0, errors_js_1.getErrorMessage)(error)}`;
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
async searchFiles(dir, pattern, excludePatterns, fullSearch) {
|
|
392
|
-
const results = [];
|
|
393
|
-
try {
|
|
394
|
-
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
395
|
-
for (const entry of entries) {
|
|
396
|
-
const fullPath = path.join(dir, entry.name);
|
|
397
|
-
// Skip excluded patterns
|
|
398
|
-
if (excludePatterns.some(p => fullPath.includes(p))) {
|
|
399
|
-
continue;
|
|
400
|
-
}
|
|
401
|
-
if (entry.isDirectory()) {
|
|
402
|
-
const subResults = await this.searchFiles(fullPath, pattern, excludePatterns, fullSearch);
|
|
403
|
-
results.push(...subResults);
|
|
404
|
-
}
|
|
405
|
-
else {
|
|
406
|
-
// Check filename
|
|
407
|
-
if (entry.name.toLowerCase().includes(pattern)) {
|
|
408
|
-
results.push(fullPath);
|
|
409
|
-
continue;
|
|
410
|
-
}
|
|
411
|
-
// Check content if full_search
|
|
412
|
-
if (fullSearch && await this.fileContainsPattern(fullPath, pattern)) {
|
|
413
|
-
results.push(fullPath);
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
catch {
|
|
419
|
-
// Skip directories we can't read
|
|
420
|
-
}
|
|
421
|
-
return results;
|
|
422
|
-
}
|
|
423
|
-
async fileContainsPattern(filePath, pattern) {
|
|
424
|
-
try {
|
|
425
|
-
const content = await fs.readFile(filePath, 'utf-8');
|
|
426
|
-
return content.toLowerCase().includes(pattern);
|
|
427
|
-
}
|
|
428
|
-
catch {
|
|
429
|
-
return false;
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
// 10. List Allowed Directories Tool
|
|
434
|
-
class ListAllowedDirectoriesTool extends BaseFilesystemTool {
|
|
435
|
-
name = 'list_allowed_directories';
|
|
436
|
-
description = 'Show which directories are accessible';
|
|
437
|
-
schema = zod_1.z.object({});
|
|
438
|
-
async _call() {
|
|
439
|
-
return 'Allowed directories:\n' + this.config.allowedDirectories.join('\n');
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
//# sourceMappingURL=filesystem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../src/code/tools/filesystem.ts"],"names":[],"mappings":"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"}
|
package/dist/code/tools/git.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/code/tools/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,qBAAa,QAAQ;IACP,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAEnC,QAAQ,IAAI,cAAc,EAAE;CAQ7B"}
|
package/dist/code/tools/git.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GitTools = void 0;
|
|
4
|
-
const tools_1 = require("@langchain/core/tools");
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const exec_js_1 = require("../../utils/exec.js");
|
|
7
|
-
const errors_js_1 = require("../../utils/errors.js");
|
|
8
|
-
class GitTools {
|
|
9
|
-
rootDir;
|
|
10
|
-
constructor(rootDir) {
|
|
11
|
-
this.rootDir = rootDir;
|
|
12
|
-
}
|
|
13
|
-
getTools() {
|
|
14
|
-
return [
|
|
15
|
-
new GitStatusTool(this.rootDir),
|
|
16
|
-
new GitDiffTool(this.rootDir),
|
|
17
|
-
new GitLogTool(this.rootDir),
|
|
18
|
-
new GenericGitTool(this.rootDir)
|
|
19
|
-
];
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.GitTools = GitTools;
|
|
23
|
-
class GitStatusTool extends tools_1.StructuredTool {
|
|
24
|
-
rootDir;
|
|
25
|
-
name = 'git_status';
|
|
26
|
-
description = 'Get git repository status';
|
|
27
|
-
schema = zod_1.z.object({});
|
|
28
|
-
constructor(rootDir) {
|
|
29
|
-
super();
|
|
30
|
-
this.rootDir = rootDir;
|
|
31
|
-
}
|
|
32
|
-
async _call() {
|
|
33
|
-
try {
|
|
34
|
-
const result = await (0, exec_js_1.exec)('git', ['status', '--short'], { cwd: this.rootDir });
|
|
35
|
-
return result.stdout || 'No changes';
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
return `Error: ${(0, errors_js_1.getErrorMessage)(error)}`;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
class GitDiffTool extends tools_1.StructuredTool {
|
|
43
|
-
rootDir;
|
|
44
|
-
name = 'git_diff';
|
|
45
|
-
description = 'Get git diff for changes';
|
|
46
|
-
schema = zod_1.z.object({
|
|
47
|
-
path: zod_1.z.string().nullable().optional().describe('File path to diff (optional)')
|
|
48
|
-
});
|
|
49
|
-
constructor(rootDir) {
|
|
50
|
-
super();
|
|
51
|
-
this.rootDir = rootDir;
|
|
52
|
-
}
|
|
53
|
-
async _call({ path }) {
|
|
54
|
-
try {
|
|
55
|
-
const args = ['diff'];
|
|
56
|
-
if (path)
|
|
57
|
-
args.push(path);
|
|
58
|
-
const result = await (0, exec_js_1.exec)('git', args, { cwd: this.rootDir });
|
|
59
|
-
return result.stdout || 'No differences';
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
return `Error: ${(0, errors_js_1.getErrorMessage)(error)}`;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
class GitLogTool extends tools_1.StructuredTool {
|
|
67
|
-
rootDir;
|
|
68
|
-
name = 'git_log';
|
|
69
|
-
description = 'Get git commit history';
|
|
70
|
-
schema = zod_1.z.object({
|
|
71
|
-
count: zod_1.z.number().nullable().optional().default(10).describe('Number of commits to show')
|
|
72
|
-
});
|
|
73
|
-
constructor(rootDir) {
|
|
74
|
-
super();
|
|
75
|
-
this.rootDir = rootDir;
|
|
76
|
-
}
|
|
77
|
-
async _call({ count }) {
|
|
78
|
-
try {
|
|
79
|
-
const result = await (0, exec_js_1.exec)('git', ['log', `--max-count=${count}`, '--oneline'], { cwd: this.rootDir });
|
|
80
|
-
return result.stdout || 'No commits';
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
return `Error: ${(0, errors_js_1.getErrorMessage)(error)}`;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
class GenericGitTool extends tools_1.StructuredTool {
|
|
88
|
-
rootDir;
|
|
89
|
-
name = 'git_command';
|
|
90
|
-
description = 'Execute any git command. Input is the git command without "git" prefix.';
|
|
91
|
-
schema = zod_1.z.object({
|
|
92
|
-
command: zod_1.z.string().describe('Git command to execute (without "git" prefix)')
|
|
93
|
-
});
|
|
94
|
-
constructor(rootDir) {
|
|
95
|
-
super();
|
|
96
|
-
this.rootDir = rootDir;
|
|
97
|
-
}
|
|
98
|
-
async _call({ command }) {
|
|
99
|
-
try {
|
|
100
|
-
// Split command safely
|
|
101
|
-
const args = command.match(/(?:[^\s"]+|"[^"]*")+/g) || [];
|
|
102
|
-
const cleanArgs = args.map(arg => arg.replace(/^"|"$/g, ''));
|
|
103
|
-
const result = await (0, exec_js_1.exec)('git', cleanArgs, { cwd: this.rootDir });
|
|
104
|
-
return result.stdout || 'Command executed successfully';
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
return `Error: ${(0, errors_js_1.getErrorMessage)(error)}`;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=git.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/code/tools/git.ts"],"names":[],"mappings":"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"}
|
package/dist/code/tools/mcp.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { StructuredTool } from '@langchain/core/tools';
|
|
2
|
-
export declare class MCPTools {
|
|
3
|
-
private rootDir;
|
|
4
|
-
private mcpClient;
|
|
5
|
-
private enabledServers;
|
|
6
|
-
constructor(rootDir: string);
|
|
7
|
-
initialize(servers?: string[]): Promise<void>;
|
|
8
|
-
getTools(): Promise<StructuredTool[]>;
|
|
9
|
-
private loadMCPConfigs;
|
|
10
|
-
private interpolateEnvVars;
|
|
11
|
-
dispose(): Promise<void>;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/code/tools/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQvD,qBAAa,QAAQ;IAIP,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,cAAc,CAAgB;gBAElB,OAAO,EAAE,MAAM;IAE7B,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC7C,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAiB7B,cAAc;IAoD5B,OAAO,CAAC,kBAAkB;IAMpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAS/B"}
|