agent-enderun 1.1.1 → 1.1.2
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/.enderun/STATUS.md +2 -2
- package/.enderun/agents/analyst.json +4 -4
- package/.enderun/agents/backend.json +4 -4
- package/.enderun/agents/database.json +4 -4
- package/.enderun/agents/devops.json +4 -4
- package/.enderun/agents/explorer.json +4 -4
- package/.enderun/agents/frontend.json +4 -4
- package/.enderun/agents/git.json +4 -4
- package/.enderun/agents/manager.json +4 -6
- package/.enderun/agents/mobile.json +4 -4
- package/.enderun/agents/native.json +4 -4
- package/.enderun/agents/quality.json +4 -4
- package/.enderun/agents/security.json +4 -4
- package/.enderun/config.json +3 -2
- package/.enderun/logs/manager.json +4 -0
- package/.enderun/memory/PROJECT_MEMORY.md +38 -0
- package/CLAUDE.md +5 -4
- package/GEMINI.md +5 -4
- package/GROK.md +3 -3
- package/README.md +2 -2
- package/agent.md +6 -6
- package/bin/cli.js +3 -4
- package/bin/compile.js +22 -0
- package/bin/test-init-run.js +136 -0
- package/dist/framework-mcp/src/index.js +1 -1
- package/dist/framework-mcp/src/tools/definitions.js +3 -1
- package/dist/framework-mcp/src/tools/definitions.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/read_file.js +20 -0
- package/dist/framework-mcp/src/tools/file_system/read_file.js.map +1 -1
- package/dist/framework-mcp/src/tools/messaging/send_message.js +37 -14
- package/dist/framework-mcp/src/tools/messaging/send_message.js.map +1 -1
- package/dist/src/cli/adapters.d.ts +3 -1
- package/dist/src/cli/adapters.js +13 -11
- package/dist/src/cli/adapters.js.map +1 -1
- package/dist/src/cli/commands/check.js +12 -1
- package/dist/src/cli/commands/check.js.map +1 -1
- package/dist/src/cli/commands/init.js +21 -11
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/orchestrate.d.ts +15 -0
- package/dist/src/cli/commands/orchestrate.js +45 -1
- package/dist/src/cli/commands/orchestrate.js.map +1 -1
- package/dist/src/cli/index.js +84 -19
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/utils/memory.js +4 -0
- package/dist/src/cli/utils/memory.js.map +1 -1
- package/dist/src/cli/utils/pkg.js +5 -1
- package/dist/src/cli/utils/pkg.js.map +1 -1
- package/dist/tests/adapter.test.js +10 -8
- package/dist/tests/adapter.test.js.map +1 -1
- package/dist/tests/gemini.test.js +8 -7
- package/dist/tests/gemini.test.js.map +1 -1
- package/dist/vitest.config.js +1 -1
- package/dist/vitest.config.js.map +1 -1
- package/docs/project_analysis_report.md +1 -1
- package/eslint.config.js +2 -2
- package/framework-mcp/dist/src/index.js +1 -1
- package/framework-mcp/dist/src/tools/definitions.js +3 -1
- package/framework-mcp/dist/src/tools/file_system/read_file.js +20 -0
- package/framework-mcp/package.json +2 -2
- package/framework-mcp/src/index.ts +1 -1
- package/framework-mcp/src/tools/definitions.ts +3 -1
- package/framework-mcp/src/tools/file_system/read_file.ts +24 -0
- package/package.json +10 -8
- package/src/cli/adapters.ts +10 -10
- package/src/cli/commands/check.ts +13 -1
- package/src/cli/commands/init.ts +12 -11
- package/src/cli/commands/orchestrate.ts +1 -1
- package/src/cli/utils/memory.ts +4 -0
- package/src/cli/utils/pkg.ts +5 -1
- package/tsconfig.json +0 -2
- package/.enderun/ARCHITECTURE.md +0 -1
- package/.enderun/SECURITY.md +0 -1
- package/bin/init-check.js +0 -86
- package/bin/update-contract.js +0 -93
- package/dist/apps/backend/src/types/index.d.ts +0 -9
- package/dist/apps/backend/src/types/index.js +0 -5
- package/dist/apps/backend/src/types/index.js.map +0 -1
- package/dist/apps/web/src/main.d.ts +0 -1
- package/dist/apps/web/src/main.js +0 -9
- package/dist/apps/web/src/main.js.map +0 -1
- package/dist/apps/web/vite.config.d.ts +0 -2
- package/dist/apps/web/vite.config.js +0 -6
- package/dist/apps/web/vite.config.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/index.d.ts +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/index.js +0 -71
- package/dist/tests/framework-init-test/framework-mcp/src/index.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/tools/definitions.d.ts +0 -2
- package/dist/tests/framework-init-test/framework-mcp/src/tools/definitions.js +0 -111
- package/dist/tests/framework-init-test/framework-mcp/src/tools/definitions.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/patch_file.d.ts +0 -2
- package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/patch_file.js +0 -19
- package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/patch_file.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/read_file.d.ts +0 -2
- package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/read_file.js +0 -8
- package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/read_file.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/replace_text.d.ts +0 -2
- package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/replace_text.js +0 -32
- package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/replace_text.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/write_file.d.ts +0 -2
- package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/write_file.js +0 -10
- package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/write_file.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/get_status.d.ts +0 -2
- package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/get_status.js +0 -6
- package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/get_status.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/orchestrate.d.ts +0 -2
- package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/orchestrate.js +0 -6
- package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/orchestrate.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_contract_hash.d.ts +0 -2
- package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_contract_hash.js +0 -6
- package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_contract_hash.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_memory.d.ts +0 -2
- package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_memory.js +0 -9
- package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_memory.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/tools/index.d.ts +0 -5
- package/dist/tests/framework-init-test/framework-mcp/src/tools/index.js +0 -26
- package/dist/tests/framework-init-test/framework-mcp/src/tools/index.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/log_action.d.ts +0 -2
- package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/log_action.js +0 -23
- package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/log_action.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/send_message.d.ts +0 -2
- package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/send_message.js +0 -24
- package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/send_message.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/tools/types.d.ts +0 -47
- package/dist/tests/framework-init-test/framework-mcp/src/tools/types.js +0 -2
- package/dist/tests/framework-init-test/framework-mcp/src/tools/types.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/utils/cli.d.ts +0 -5
- package/dist/tests/framework-init-test/framework-mcp/src/utils/cli.js +0 -21
- package/dist/tests/framework-init-test/framework-mcp/src/utils/cli.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/src/utils/security.d.ts +0 -12
- package/dist/tests/framework-init-test/framework-mcp/src/utils/security.js +0 -54
- package/dist/tests/framework-init-test/framework-mcp/src/utils/security.js.map +0 -1
- package/dist/tests/framework-init-test/framework-mcp/tests/tools/file_system/replace_text.test.d.ts +0 -1
- package/dist/tests/framework-init-test/framework-mcp/tests/tools/file_system/replace_text.test.js +0 -69
- package/dist/tests/framework-init-test/framework-mcp/tests/tools/file_system/replace_text.test.js.map +0 -1
- package/dist/tests/framework-init-test/panda.config.d.ts +0 -4
- package/dist/tests/framework-init-test/panda.config.js +0 -95
- package/dist/tests/framework-init-test/panda.config.js.map +0 -1
- package/dist/tests/framework-init-test/vitest.config.d.ts +0 -2
- package/dist/tests/framework-init-test/vitest.config.js +0 -19
- package/dist/tests/framework-init-test/vitest.config.js.map +0 -1
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import { safePath } from "../../utils/security.js";
|
|
3
|
-
export function handlePatchFile(projectRoot, args) {
|
|
4
|
-
const filePath = safePath(projectRoot, args.path);
|
|
5
|
-
const lines = fs.readFileSync(filePath, "utf8").split("\n");
|
|
6
|
-
const start = args.startLine - 1;
|
|
7
|
-
const end = args.endLine;
|
|
8
|
-
const newContent = args.newContent.split("\n");
|
|
9
|
-
if (start < 0 || start > lines.length) {
|
|
10
|
-
throw new Error(`Invalid start line: ${start + 1}. File has ${lines.length} lines.`);
|
|
11
|
-
}
|
|
12
|
-
if (end < start + 1 || end > lines.length) {
|
|
13
|
-
throw new Error(`Invalid end line: ${end}. Must be between ${start + 1} and ${lines.length}.`);
|
|
14
|
-
}
|
|
15
|
-
lines.splice(start, end - start, ...newContent);
|
|
16
|
-
fs.writeFileSync(filePath, lines.join("\n"));
|
|
17
|
-
return { content: [{ type: "text", text: `✅ File patched successfully: ${args.path}` }] };
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=patch_file.js.map
|
package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/patch_file.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patch_file.js","sourceRoot":"","sources":["../../../../../../../tests/framework-init-test/framework-mcp/src/tools/file_system/patch_file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,IAAc;IAC/D,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAI,IAAI,CAAC,SAAoB,GAAG,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAiB,CAAC;IACnC,MAAM,UAAU,GAAI,IAAI,CAAC,UAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3D,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,GAAG,CAAC,cAAc,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,qBAAqB,KAAK,GAAG,CAAC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACnG,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,UAAU,CAAC,CAAC;IAChD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;AAC9F,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import { safePath } from "../../utils/security.js";
|
|
3
|
-
export function handleReadFile(projectRoot, args) {
|
|
4
|
-
const filePath = safePath(projectRoot, args.path);
|
|
5
|
-
const content = fs.readFileSync(filePath, "utf8");
|
|
6
|
-
return { content: [{ type: "text", text: content }] };
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=read_file.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"read_file.js","sourceRoot":"","sources":["../../../../../../../tests/framework-init-test/framework-mcp/src/tools/file_system/read_file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,IAAc;IAC9D,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC1D,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import { safePath } from "../../utils/security.js";
|
|
3
|
-
export function handleReplaceText(projectRoot, args) {
|
|
4
|
-
const filePath = safePath(projectRoot, args.path);
|
|
5
|
-
let content = fs.readFileSync(filePath, "utf8");
|
|
6
|
-
const oldText = args.oldText;
|
|
7
|
-
const newText = args.newText;
|
|
8
|
-
const allowMultiple = args.allowMultiple || false; // Default to false
|
|
9
|
-
if (!content.includes(oldText)) {
|
|
10
|
-
throw new Error(`Text not found in file: ${oldText.slice(0, 100)}...`);
|
|
11
|
-
}
|
|
12
|
-
// Surgical precision guard: reject ambiguous replacements unless allowMultiple is true.
|
|
13
|
-
if (!allowMultiple) {
|
|
14
|
-
const firstIndex = content.indexOf(oldText);
|
|
15
|
-
const lastIndex = content.lastIndexOf(oldText);
|
|
16
|
-
if (firstIndex !== lastIndex) {
|
|
17
|
-
const count = (content.match(new RegExp(oldText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g')) || []).length;
|
|
18
|
-
throw new Error(`Ambiguous replacement: "${oldText.slice(0, 80)}..." found ${count} times in ${args.path}. ` +
|
|
19
|
-
"Provide a longer, unique context string or set 'allow_multiple' to true.");
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
// Perform replacement(s)
|
|
23
|
-
if (allowMultiple) {
|
|
24
|
-
content = content.replace(new RegExp(oldText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), newText);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
content = content.replace(oldText, newText);
|
|
28
|
-
}
|
|
29
|
-
fs.writeFileSync(filePath, content);
|
|
30
|
-
return { content: [{ type: "text", text: `✅ Surgical edit successful in ${args.path}` }] };
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=replace_text.js.map
|
package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/replace_text.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replace_text.js","sourceRoot":"","sources":["../../../../../../../tests/framework-init-test/framework-mcp/src/tools/file_system/replace_text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,MAAM,UAAU,iBAAiB,CAAC,WAAmB,EAAE,IAAc;IACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;IAC5D,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC,mBAAmB;IAEtE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED,wFAAwF;IACxF,IAAI,CAAC,aAAa,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAC5G,MAAM,IAAI,KAAK,CACX,2BAA2B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,KAAK,aAAa,IAAI,CAAC,IAAI,IAAI;gBAC5F,0EAA0E,CAC7E,CAAC;QACN,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,IAAI,aAAa,EAAE,CAAC;QAChB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACxG,CAAC;SAAM,CAAC;QACJ,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;AAC/F,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import path from "path";
|
|
3
|
-
import { safePath } from "../../utils/security.js";
|
|
4
|
-
export function handleWriteFile(projectRoot, args) {
|
|
5
|
-
const filePath = safePath(projectRoot, args.path);
|
|
6
|
-
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
7
|
-
fs.writeFileSync(filePath, args.content);
|
|
8
|
-
return { content: [{ type: "text", text: `✅ File written: ${args.path}` }] };
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=write_file.js.map
|
package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/write_file.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"write_file.js","sourceRoot":"","sources":["../../../../../../../tests/framework-init-test/framework-mcp/src/tools/file_system/write_file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,IAAc;IAC/D,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;IAC5D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAiB,CAAC,CAAC;IACnD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;AACjF,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { safeExec } from "../../utils/cli.js";
|
|
2
|
-
export function handleGetFrameworkStatus(projectRoot, args) {
|
|
3
|
-
const output = safeExec("npx", ["agent-enderun", "status"], projectRoot, args.timeout);
|
|
4
|
-
return { content: [{ type: "text", text: output }] };
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=get_status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get_status.js","sourceRoot":"","sources":["../../../../../../../tests/framework-init-test/framework-mcp/src/tools/framework/get_status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,UAAU,wBAAwB,CAAC,WAAmB,EAAE,IAAc;IACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACzD,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { safeExec } from "../../utils/cli.js";
|
|
2
|
-
export function handleOrchestrateLoop(projectRoot, args) {
|
|
3
|
-
const output = safeExec("npx", ["agent-enderun", "orchestrate"], projectRoot, args.timeout);
|
|
4
|
-
return { content: [{ type: "text", text: output }] };
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=orchestrate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../../../../../../../tests/framework-init-test/framework-mcp/src/tools/framework/orchestrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,UAAU,qBAAqB,CAAC,WAAmB,EAAE,IAAc;IACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACzD,CAAC"}
|
package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_contract_hash.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { safeExec } from "../../utils/cli.js";
|
|
2
|
-
export function handleUpdateContractHash(projectRoot, args) {
|
|
3
|
-
const output = safeExec("npx", ["agent-enderun", "update-contract"], projectRoot, args.timeout);
|
|
4
|
-
return { content: [{ type: "text", text: output }] };
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=update_contract_hash.js.map
|
package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_contract_hash.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update_contract_hash.js","sourceRoot":"","sources":["../../../../../../../tests/framework-init-test/framework-mcp/src/tools/framework/update_contract_hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,UAAU,wBAAwB,CAAC,WAAmB,EAAE,IAAc;IACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,iBAAiB,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAChG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACzD,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { safeExec } from "../../utils/cli.js";
|
|
2
|
-
export function handleUpdateProjectMemory(projectRoot, args) {
|
|
3
|
-
const section = args.section;
|
|
4
|
-
const content = args.content;
|
|
5
|
-
// Using execFileSync with array args prevents command injection
|
|
6
|
-
safeExec("npx", ["agent-enderun", "update_project_memory", section, content], projectRoot, args.timeout);
|
|
7
|
-
return { content: [{ type: "text", text: `✅ Section ${section} updated.` }] };
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=update_memory.js.map
|
package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_memory.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update_memory.js","sourceRoot":"","sources":["../../../../../../../tests/framework-init-test/framework-mcp/src/tools/framework/update_memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,UAAU,yBAAyB,CAAC,WAAmB,EAAE,IAAc;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;IACvC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,OAAO,WAAW,EAAE,CAAC,EAAE,CAAC;AAClF,CAAC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { TOOLS } from "./definitions.js";
|
|
2
|
-
import { handleReadFile } from "./file_system/read_file.js";
|
|
3
|
-
import { handleWriteFile } from "./file_system/write_file.js";
|
|
4
|
-
import { handleReplaceText } from "./file_system/replace_text.js";
|
|
5
|
-
import { handlePatchFile } from "./file_system/patch_file.js";
|
|
6
|
-
import { handleGetFrameworkStatus } from "./framework/get_status.js";
|
|
7
|
-
import { handleUpdateProjectMemory } from "./framework/update_memory.js";
|
|
8
|
-
import { handleOrchestrateLoop } from "./framework/orchestrate.js";
|
|
9
|
-
import { handleUpdateContractHash } from "./framework/update_contract_hash.js";
|
|
10
|
-
import { handleSendAgentMessage } from "./messaging/send_message.js";
|
|
11
|
-
import { handleLogAgentAction } from "./messaging/log_action.js";
|
|
12
|
-
// Map of tool names to their handler functions
|
|
13
|
-
export const toolHandlers = {
|
|
14
|
-
read_file: handleReadFile,
|
|
15
|
-
write_file: handleWriteFile,
|
|
16
|
-
replace_text: handleReplaceText,
|
|
17
|
-
patch_file: handlePatchFile,
|
|
18
|
-
get_framework_status: handleGetFrameworkStatus,
|
|
19
|
-
update_project_memory: handleUpdateProjectMemory,
|
|
20
|
-
orchestrate_loop: handleOrchestrateLoop,
|
|
21
|
-
send_agent_message: handleSendAgentMessage,
|
|
22
|
-
log_agent_action: handleLogAgentAction,
|
|
23
|
-
update_contract_hash: handleUpdateContractHash,
|
|
24
|
-
};
|
|
25
|
-
export { TOOLS };
|
|
26
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../tests/framework-init-test/framework-mcp/src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAMjE,+CAA+C;AAC/C,MAAM,CAAC,MAAM,YAAY,GAAgC;IACrD,SAAS,EAAE,cAAc;IACzB,UAAU,EAAE,eAAe;IAC3B,YAAY,EAAE,iBAAiB;IAC/B,UAAU,EAAE,eAAe;IAC3B,oBAAoB,EAAE,wBAAwB;IAC9C,qBAAqB,EAAE,yBAAyB;IAChD,gBAAgB,EAAE,qBAAqB;IACvC,kBAAkB,EAAE,sBAAsB;IAC1C,gBAAgB,EAAE,oBAAoB;IACtC,oBAAoB,EAAE,wBAAwB;CACjD,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import path from "path";
|
|
3
|
-
import { resolveFrameworkDir } from "../../utils/security.js";
|
|
4
|
-
export function handleLogAgentAction(projectRoot, args) {
|
|
5
|
-
const { agent, action, traceId, status, summary } = args;
|
|
6
|
-
const findings = args.findings ? args.findings.split(",").map(f => f.trim()) : [];
|
|
7
|
-
const frameworkDir = resolveFrameworkDir(projectRoot);
|
|
8
|
-
const agentName = agent.replace("@", "");
|
|
9
|
-
const logPath = path.join(projectRoot, frameworkDir, "logs", `${agentName}.json`);
|
|
10
|
-
const logEntry = {
|
|
11
|
-
timestamp: new Date().toISOString(),
|
|
12
|
-
agent,
|
|
13
|
-
action,
|
|
14
|
-
requestId: traceId,
|
|
15
|
-
status,
|
|
16
|
-
summary,
|
|
17
|
-
findings
|
|
18
|
-
};
|
|
19
|
-
fs.mkdirSync(path.dirname(logPath), { recursive: true });
|
|
20
|
-
fs.appendFileSync(logPath, JSON.stringify(logEntry) + "\n");
|
|
21
|
-
return { content: [{ type: "text", text: `✅ Action logged for ${agent} to ${path.join(frameworkDir, "logs", `${agentName}.json`)}` }] };
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=log_action.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log_action.js","sourceRoot":"","sources":["../../../../../../../tests/framework-init-test/framework-mcp/src/tools/messaging/log_action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,MAAM,UAAU,oBAAoB,CAAC,WAAmB,EAAE,IAAc;IACpE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAuF,CAAC;IAC5I,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAElF,MAAM,YAAY,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,SAAS,GAAI,KAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,SAAS,OAAO,CAAC,CAAC;IAElF,MAAM,QAAQ,GAAG;QACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK;QACL,MAAM;QACN,SAAS,EAAE,OAAO;QAClB,MAAM;QACN,OAAO;QACP,QAAQ;KACX,CAAC;IAEF,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;IAE5D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,SAAS,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC5I,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import path from "path";
|
|
3
|
-
import { resolveFrameworkDir } from "../../utils/security.js";
|
|
4
|
-
export function handleSendAgentMessage(projectRoot, args) {
|
|
5
|
-
const { to, category, content, traceId } = args;
|
|
6
|
-
// `from` is optional — falls back to "@mcp" for backward compatibility
|
|
7
|
-
const from = args.from || "@mcp";
|
|
8
|
-
const frameworkDir = resolveFrameworkDir(projectRoot);
|
|
9
|
-
const agentName = to.replace("@", "");
|
|
10
|
-
const messagePath = path.join(projectRoot, frameworkDir, "messages", `${agentName}.json`);
|
|
11
|
-
const message = {
|
|
12
|
-
timestamp: new Date().toISOString(),
|
|
13
|
-
from,
|
|
14
|
-
to,
|
|
15
|
-
category,
|
|
16
|
-
traceId,
|
|
17
|
-
content,
|
|
18
|
-
status: "PENDING"
|
|
19
|
-
};
|
|
20
|
-
fs.mkdirSync(path.dirname(messagePath), { recursive: true });
|
|
21
|
-
fs.appendFileSync(messagePath, JSON.stringify(message) + "\n");
|
|
22
|
-
return { content: [{ type: "text", text: `✅ Message sent to ${to} (from: ${from})` }] };
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=send_message.js.map
|
package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/send_message.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"send_message.js","sourceRoot":"","sources":["../../../../../../../tests/framework-init-test/framework-mcp/src/tools/messaging/send_message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,MAAM,UAAU,sBAAsB,CAAC,WAAmB,EAAE,IAAc;IACtE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAA2E,CAAC;IACvH,uEAAuE;IACvE,MAAM,IAAI,GAAI,IAAI,CAAC,IAAe,IAAI,MAAM,CAAC;IAE7C,MAAM,YAAY,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,SAAS,OAAO,CAAC,CAAC;IAE1F,MAAM,OAAO,GAAG;QACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,IAAI;QACJ,EAAE;QACF,QAAQ;QACR,OAAO;QACP,OAAO;QACP,MAAM,EAAE,SAAS;KACpB,CAAC;IAEF,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,EAAE,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAE/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;AAC5F,CAAC"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
export interface ToolDefinition {
|
|
2
|
-
name: string;
|
|
3
|
-
description: string;
|
|
4
|
-
inputSchema: {
|
|
5
|
-
type: "object";
|
|
6
|
-
properties: Record<string, {
|
|
7
|
-
type: string;
|
|
8
|
-
description?: string;
|
|
9
|
-
enum?: string[];
|
|
10
|
-
}>;
|
|
11
|
-
required?: string[];
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
export interface CallToolRequest {
|
|
15
|
-
params: {
|
|
16
|
-
name: string;
|
|
17
|
-
arguments?: ToolArgs;
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
export interface ToolArgs {
|
|
21
|
-
path?: string;
|
|
22
|
-
content?: string;
|
|
23
|
-
oldText?: string;
|
|
24
|
-
newText?: string;
|
|
25
|
-
startLine?: number;
|
|
26
|
-
endLine?: number;
|
|
27
|
-
newContent?: string;
|
|
28
|
-
section?: string;
|
|
29
|
-
to?: string;
|
|
30
|
-
category?: "ACTION" | "DELEGATION" | "INFO" | "ALERT";
|
|
31
|
-
traceId?: string;
|
|
32
|
-
agent?: string;
|
|
33
|
-
action?: string;
|
|
34
|
-
status?: "SUCCESS" | "FAILURE";
|
|
35
|
-
summary?: string;
|
|
36
|
-
findings?: string;
|
|
37
|
-
allowMultiple?: boolean;
|
|
38
|
-
timeout?: number;
|
|
39
|
-
from?: string;
|
|
40
|
-
}
|
|
41
|
-
export interface ToolResult {
|
|
42
|
-
isError?: boolean;
|
|
43
|
-
content: Array<{
|
|
44
|
-
type: "text";
|
|
45
|
-
text: string;
|
|
46
|
-
}>;
|
|
47
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../tests/framework-init-test/framework-mcp/src/tools/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { execFileSync } from "child_process";
|
|
2
|
-
/**
|
|
3
|
-
* Executes a CLI command safely using execFileSync (no shell injection risk).
|
|
4
|
-
* Captures stderr gracefully to prevent stream crashes.
|
|
5
|
-
*/
|
|
6
|
-
export function safeExec(command, args, cwd, timeout) {
|
|
7
|
-
try {
|
|
8
|
-
return execFileSync(command, args, {
|
|
9
|
-
cwd,
|
|
10
|
-
encoding: "utf8",
|
|
11
|
-
timeout: timeout || 30000,
|
|
12
|
-
maxBuffer: 1024 * 1024,
|
|
13
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
const err = error;
|
|
18
|
-
throw new Error(err.stderr || err.message || "Command execution failed", { cause: error });
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=cli.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../../../tests/framework-init-test/framework-mcp/src/utils/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,IAAc,EAAE,GAAW,EAAE,OAAgB;IACnF,IAAI,CAAC;QACD,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE;YAC/B,GAAG;YACH,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,OAAO,IAAI,KAAK;YACzB,SAAS,EAAE,IAAI,GAAG,IAAI;YACtB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,KAA8C,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,0BAA0B,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/F,CAAC;AACL,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Validates and resolves a user-provided path to prevent path traversal attacks.
|
|
3
|
-
* Ensures the resolved path stays within the project root boundary.
|
|
4
|
-
*/
|
|
5
|
-
export declare function safePath(projectRoot: string, userPath: string): string;
|
|
6
|
-
/**
|
|
7
|
-
* Resolves the active framework directory.
|
|
8
|
-
* Priority: package.json `enderun.frameworkDir` → `.enderun` → adapter dirs.
|
|
9
|
-
* This ensures the canonical framework directory is always used,
|
|
10
|
-
* even when adapter-specific dirs (e.g. `.gemini`) exist alongside it.
|
|
11
|
-
*/
|
|
12
|
-
export declare function resolveFrameworkDir(projectRoot: string): string;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
/**
|
|
4
|
-
* Validates and resolves a user-provided path to prevent path traversal attacks.
|
|
5
|
-
* Ensures the resolved path stays within the project root boundary.
|
|
6
|
-
*/
|
|
7
|
-
export function safePath(projectRoot, userPath) {
|
|
8
|
-
const resolved = path.resolve(projectRoot, userPath);
|
|
9
|
-
const normalizedRoot = path.resolve(projectRoot);
|
|
10
|
-
if (!resolved.startsWith(normalizedRoot + path.sep) && resolved !== normalizedRoot) {
|
|
11
|
-
throw new Error(`Access denied: path "${userPath}" escapes project root.`);
|
|
12
|
-
}
|
|
13
|
-
return resolved;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Resolves the active framework directory.
|
|
17
|
-
* Priority: package.json `enderun.frameworkDir` → `.enderun` → adapter dirs.
|
|
18
|
-
* This ensures the canonical framework directory is always used,
|
|
19
|
-
* even when adapter-specific dirs (e.g. `.gemini`) exist alongside it.
|
|
20
|
-
*/
|
|
21
|
-
export function resolveFrameworkDir(projectRoot) {
|
|
22
|
-
// 1. Authoritative source: read from package.json if present
|
|
23
|
-
try {
|
|
24
|
-
const pkgPath = path.join(projectRoot, "package.json");
|
|
25
|
-
if (fs.existsSync(pkgPath)) {
|
|
26
|
-
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
|
|
27
|
-
const enderunConfig = pkg["enderun"];
|
|
28
|
-
if (enderunConfig && typeof enderunConfig["frameworkDir"] === "string") {
|
|
29
|
-
return enderunConfig["frameworkDir"];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
// ignore — fall through to filesystem scan
|
|
35
|
-
}
|
|
36
|
-
// 2. Filesystem scan — .enderun takes precedence over adapter-specific dirs
|
|
37
|
-
const candidates = [
|
|
38
|
-
".enderun",
|
|
39
|
-
".claude",
|
|
40
|
-
".grok",
|
|
41
|
-
".agent",
|
|
42
|
-
".gemini/antigravity",
|
|
43
|
-
".gemini/antigravity-cli",
|
|
44
|
-
".gemini",
|
|
45
|
-
];
|
|
46
|
-
for (const candidate of candidates) {
|
|
47
|
-
const candidatePath = path.join(projectRoot, candidate);
|
|
48
|
-
if (fs.existsSync(candidatePath)) {
|
|
49
|
-
return candidate;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return ".enderun";
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=security.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../../../../tests/framework-init-test/framework-mcp/src/utils/security.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,WAAmB,EAAE,QAAgB;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEjD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,yBAAyB,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACnD,6DAA6D;IAC7D,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAA4B,CAAC;YACpF,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS,CAAwC,CAAC;YAC5E,IAAI,aAAa,IAAI,OAAO,aAAa,CAAC,cAAc,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACrE,OAAO,aAAa,CAAC,cAAc,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,2CAA2C;IAC/C,CAAC;IAED,4EAA4E;IAC5E,MAAM,UAAU,GAAG;QACf,UAAU;QACV,SAAS;QACT,OAAO;QACP,QAAQ;QACR,qBAAqB;QACrB,yBAAyB;QACzB,SAAS;KACZ,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC"}
|
package/dist/tests/framework-init-test/framework-mcp/tests/tools/file_system/replace_text.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/tests/framework-init-test/framework-mcp/tests/tools/file_system/replace_text.test.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import path from "path";
|
|
4
|
-
import { handleReplaceText } from "../../../src/tools/file_system/replace_text";
|
|
5
|
-
const TEST_DIR = path.join(__dirname, "../_temp_test_files");
|
|
6
|
-
const TEST_FILE = path.join(TEST_DIR, "test_file.txt");
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
fs.mkdirSync(TEST_DIR, { recursive: true });
|
|
9
|
-
});
|
|
10
|
-
afterEach(() => {
|
|
11
|
-
fs.rmSync(TEST_DIR, { recursive: true, force: true });
|
|
12
|
-
});
|
|
13
|
-
describe("handleReplaceText", () => {
|
|
14
|
-
it("should replace a single occurrence of text", () => {
|
|
15
|
-
fs.writeFileSync(TEST_FILE, "hello world", "utf8");
|
|
16
|
-
const args = {
|
|
17
|
-
path: TEST_FILE,
|
|
18
|
-
oldText: "world",
|
|
19
|
-
newText: "there",
|
|
20
|
-
};
|
|
21
|
-
const result = handleReplaceText(TEST_DIR, args);
|
|
22
|
-
expect(result.content[0].text).toContain("✅ Surgical edit successful");
|
|
23
|
-
expect(fs.readFileSync(TEST_FILE, "utf8")).toBe("hello there");
|
|
24
|
-
});
|
|
25
|
-
it("should throw an error if text is not found", () => {
|
|
26
|
-
fs.writeFileSync(TEST_FILE, "hello world", "utf8");
|
|
27
|
-
const args = {
|
|
28
|
-
path: TEST_FILE,
|
|
29
|
-
oldText: "missing",
|
|
30
|
-
newText: "found",
|
|
31
|
-
};
|
|
32
|
-
expect(() => handleReplaceText(TEST_DIR, args)).toThrowError("Text not found in file");
|
|
33
|
-
});
|
|
34
|
-
it("should throw an error for ambiguous replacement if allowMultiple is false", () => {
|
|
35
|
-
fs.writeFileSync(TEST_FILE, "hello world world", "utf8");
|
|
36
|
-
const args = {
|
|
37
|
-
path: TEST_FILE,
|
|
38
|
-
oldText: "world",
|
|
39
|
-
newText: "there",
|
|
40
|
-
allowMultiple: false,
|
|
41
|
-
};
|
|
42
|
-
expect(() => handleReplaceText(TEST_DIR, args)).toThrowError("Ambiguous replacement");
|
|
43
|
-
});
|
|
44
|
-
it("should replace all occurrences of text if allowMultiple is true", () => {
|
|
45
|
-
fs.writeFileSync(TEST_FILE, "hello world world", "utf8");
|
|
46
|
-
const args = {
|
|
47
|
-
path: TEST_FILE,
|
|
48
|
-
oldText: "world",
|
|
49
|
-
newText: "there",
|
|
50
|
-
allowMultiple: true,
|
|
51
|
-
};
|
|
52
|
-
const result = handleReplaceText(TEST_DIR, args);
|
|
53
|
-
expect(result.content[0].text).toContain("✅ Surgical edit successful");
|
|
54
|
-
expect(fs.readFileSync(TEST_FILE, "utf8")).toBe("hello there there");
|
|
55
|
-
});
|
|
56
|
-
it("should handle special characters in oldText when allowMultiple is true", () => {
|
|
57
|
-
fs.writeFileSync(TEST_FILE, "test.txt", "utf8");
|
|
58
|
-
const args = {
|
|
59
|
-
path: TEST_FILE,
|
|
60
|
-
oldText: ".txt",
|
|
61
|
-
newText: ".md",
|
|
62
|
-
allowMultiple: true,
|
|
63
|
-
};
|
|
64
|
-
const result = handleReplaceText(TEST_DIR, args);
|
|
65
|
-
expect(result.content[0].text).toContain("✅ Surgical edit successful");
|
|
66
|
-
expect(fs.readFileSync(TEST_FILE, "utf8")).toBe("test.md");
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
//# sourceMappingURL=replace_text.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replace_text.test.js","sourceRoot":"","sources":["../../../../../../../tests/framework-init-test/framework-mcp/tests/tools/file_system/replace_text.test.ts"],"names":[],"mappings":"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"}
|