agent-enderun 1.10.2 → 1.10.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 +2 -1
- package/dist/framework-mcp/src/constants.d.ts +47 -0
- package/dist/framework-mcp/src/constants.js +65 -0
- package/dist/framework-mcp/src/constants.js.map +1 -0
- package/dist/framework-mcp/src/index.js +26 -5
- package/dist/framework-mcp/src/index.js.map +1 -1
- package/dist/framework-mcp/src/tools/control_plane/locking.d.ts +3 -9
- package/dist/framework-mcp/src/tools/control_plane/locking.js.map +1 -1
- package/dist/framework-mcp/src/tools/control_plane/registry.d.ts +2 -8
- package/dist/framework-mcp/src/tools/control_plane/registry.js.map +1 -1
- package/dist/framework-mcp/src/tools/dashboard/start_dashboard.d.ts +2 -2
- package/dist/framework-mcp/src/tools/dashboard/start_dashboard.js.map +1 -1
- package/dist/framework-mcp/src/tools/definitions.js +30 -0
- package/dist/framework-mcp/src/tools/definitions.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.d.ts +2 -2
- package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +12 -4
- package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/patch_file.d.ts +2 -2
- package/dist/framework-mcp/src/tools/file_system/patch_file.js +6 -2
- package/dist/framework-mcp/src/tools/file_system/patch_file.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/read_file.d.ts +2 -2
- package/dist/framework-mcp/src/tools/file_system/read_file.js +43 -26
- package/dist/framework-mcp/src/tools/file_system/read_file.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/replace_text.d.ts +2 -2
- package/dist/framework-mcp/src/tools/file_system/replace_text.js +7 -3
- package/dist/framework-mcp/src/tools/file_system/replace_text.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/write_file.d.ts +2 -2
- package/dist/framework-mcp/src/tools/file_system/write_file.js +27 -15
- package/dist/framework-mcp/src/tools/file_system/write_file.js.map +1 -1
- package/dist/framework-mcp/src/tools/framework/get_status.d.ts +2 -2
- package/dist/framework-mcp/src/tools/framework/get_status.js.map +1 -1
- package/dist/framework-mcp/src/tools/framework/orchestrate.d.ts +2 -2
- package/dist/framework-mcp/src/tools/framework/orchestrate.js.map +1 -1
- package/dist/framework-mcp/src/tools/framework/run_tests.d.ts +2 -2
- package/dist/framework-mcp/src/tools/framework/run_tests.js.map +1 -1
- package/dist/framework-mcp/src/tools/framework/update_contract_hash.d.ts +2 -2
- package/dist/framework-mcp/src/tools/framework/update_contract_hash.js.map +1 -1
- package/dist/framework-mcp/src/tools/framework/update_memory.d.ts +2 -2
- package/dist/framework-mcp/src/tools/framework/update_memory.js +1 -1
- package/dist/framework-mcp/src/tools/framework/update_memory.js.map +1 -1
- package/dist/framework-mcp/src/tools/index.d.ts +1 -2
- package/dist/framework-mcp/src/tools/index.js +33 -25
- package/dist/framework-mcp/src/tools/index.js.map +1 -1
- package/dist/framework-mcp/src/tools/messaging/log_action.d.ts +2 -2
- package/dist/framework-mcp/src/tools/messaging/log_action.js.map +1 -1
- package/dist/framework-mcp/src/tools/messaging/send_message.d.ts +2 -2
- package/dist/framework-mcp/src/tools/messaging/send_message.js +14 -1
- package/dist/framework-mcp/src/tools/messaging/send_message.js.map +1 -1
- package/dist/framework-mcp/src/tools/observability/check_ports.d.ts +2 -2
- package/dist/framework-mcp/src/tools/observability/check_ports.js.map +1 -1
- package/dist/framework-mcp/src/tools/quality/check_lint.d.ts +5 -0
- package/dist/framework-mcp/src/tools/quality/check_lint.js +29 -0
- package/dist/framework-mcp/src/tools/quality/check_lint.js.map +1 -0
- package/dist/framework-mcp/src/tools/search/get_gaps.d.ts +2 -2
- package/dist/framework-mcp/src/tools/search/get_gaps.js.map +1 -1
- package/dist/framework-mcp/src/tools/search/get_map.d.ts +2 -2
- package/dist/framework-mcp/src/tools/search/get_map.js +1 -1
- package/dist/framework-mcp/src/tools/search/get_map.js.map +1 -1
- package/dist/framework-mcp/src/tools/search/grep_search.d.ts +2 -2
- package/dist/framework-mcp/src/tools/search/grep_search.js +45 -28
- package/dist/framework-mcp/src/tools/search/grep_search.js.map +1 -1
- package/dist/framework-mcp/src/tools/search/list_dir.d.ts +2 -2
- package/dist/framework-mcp/src/tools/search/list_dir.js.map +1 -1
- package/dist/framework-mcp/src/tools/shell/run_command.d.ts +2 -0
- package/dist/framework-mcp/src/tools/shell/run_command.js +47 -0
- package/dist/framework-mcp/src/tools/shell/run_command.js.map +1 -0
- package/dist/framework-mcp/src/tools/types.d.ts +95 -28
- package/dist/framework-mcp/src/utils/metrics.d.ts +20 -0
- package/dist/framework-mcp/src/utils/metrics.js +24 -6
- package/dist/framework-mcp/src/utils/metrics.js.map +1 -1
- package/dist/framework-mcp/src/utils/security.d.ts +1 -3
- package/dist/framework-mcp/src/utils/security.js +21 -18
- package/dist/framework-mcp/src/utils/security.js.map +1 -1
- package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js +19 -14
- package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js.map +1 -1
- package/dist/framework-mcp/tests/tools/messaging/send_message.test.js +1 -1
- package/dist/framework-mcp/tests/tools/messaging/send_message.test.js.map +1 -1
- package/dist/framework-mcp/tests/tools/quality/check_lint.test.d.ts +1 -0
- package/dist/framework-mcp/tests/tools/quality/check_lint.test.js +36 -0
- package/dist/framework-mcp/tests/tools/quality/check_lint.test.js.map +1 -0
- package/dist/framework-mcp/tests/tools/shell/run_command.test.d.ts +1 -0
- package/dist/framework-mcp/tests/tools/shell/run_command.test.js +43 -0
- package/dist/framework-mcp/tests/tools/shell/run_command.test.js.map +1 -0
- package/dist/src/cli/adapters/core.d.ts +1 -1
- package/dist/src/cli/adapters/core.js +5 -0
- package/dist/src/cli/adapters/core.js.map +1 -1
- package/dist/src/cli/adapters/paths.d.ts +15 -0
- package/dist/src/cli/adapters/paths.js +101 -0
- package/dist/src/cli/adapters/paths.js.map +1 -0
- package/dist/src/cli/adapters/scaffold.js +2 -1
- package/dist/src/cli/adapters/scaffold.js.map +1 -1
- package/dist/src/cli/commands/check.js +15 -36
- package/dist/src/cli/commands/check.js.map +1 -1
- package/dist/src/cli/commands/dashboard/data-service.d.ts +8 -0
- package/dist/src/cli/commands/dashboard/data-service.js +37 -0
- package/dist/src/cli/commands/dashboard/data-service.js.map +1 -1
- package/dist/src/cli/commands/init/scaffold-standards.js +6 -1
- package/dist/src/cli/commands/init/scaffold-standards.js.map +1 -1
- package/dist/src/cli/commands/init.js +2 -5
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/orchestrate.d.ts +5 -0
- package/dist/src/cli/commands/orchestrate.js +148 -128
- package/dist/src/cli/commands/orchestrate.js.map +1 -1
- package/dist/src/cli/utils/fs.js +1 -1
- package/dist/src/cli/utils/fs.js.map +1 -1
- package/dist/src/cli/utils/memory.d.ts +1 -1
- package/dist/src/cli/utils/memory.js +28 -8
- package/dist/src/cli/utils/memory.js.map +1 -1
- package/dist/src/modules/adapters/definitions.js +3 -3
- package/dist/src/modules/adapters/definitions.js.map +1 -1
- package/dist/src/modules/agents/definitions.js +2 -1
- package/dist/src/modules/agents/definitions.js.map +1 -1
- package/dist/src/modules/agents/registry/architect.js +1 -0
- package/dist/src/modules/agents/registry/architect.js.map +1 -1
- package/dist/src/modules/agents/registry/backend.js +3 -3
- package/dist/src/modules/agents/registry/backend.js.map +1 -1
- package/dist/src/modules/agents/registry/database.js +3 -3
- package/dist/src/modules/agents/registry/database.js.map +1 -1
- package/dist/src/modules/agents/registry/devops.js +1 -1
- package/dist/src/modules/agents/registry/devops.js.map +1 -1
- package/dist/src/modules/agents/registry/quality.js +1 -0
- package/dist/src/modules/agents/registry/quality.js.map +1 -1
- package/dist/src/shared/constants.d.ts +113 -0
- package/dist/src/shared/constants.js +178 -0
- package/dist/src/shared/constants.js.map +1 -0
- package/dist/tests/adapters/paths.test.d.ts +1 -0
- package/dist/tests/adapters/paths.test.js +63 -0
- package/dist/tests/adapters/paths.test.js.map +1 -0
- package/dist/tests/approve.test.js +2 -1
- package/dist/tests/approve.test.js.map +1 -1
- package/dist/tests/cli/init/unified_init.test.d.ts +1 -0
- package/dist/tests/cli/init/unified_init.test.js +47 -0
- package/dist/tests/cli/init/unified_init.test.js.map +1 -0
- package/dist/tests/fs-utils.test.js +1 -1
- package/dist/tests/fs-utils.test.js.map +1 -1
- package/dist/tests/memory-utils.test.js +1 -1
- package/dist/tests/memory-utils.test.js.map +1 -1
- package/dist/tests/shared/constants.test.d.ts +1 -0
- package/dist/tests/shared/constants.test.js +17 -0
- package/dist/tests/shared/constants.test.js.map +1 -0
- package/dist/tests/trace.test.js +2 -2
- package/dist/tests/trace.test.js.map +1 -1
- package/package.json +6 -6
- package/src/cli/adapters/core.ts +7 -0
- package/src/cli/adapters/paths.ts +134 -0
- package/src/cli/adapters/scaffold.ts +2 -1
- package/src/cli/commands/check.ts +16 -38
- package/src/cli/commands/dashboard/data-service.ts +48 -0
- package/src/cli/commands/init/scaffold-standards.ts +6 -1
- package/src/cli/commands/init.ts +1 -4
- package/src/cli/commands/orchestrate.ts +151 -127
- package/src/cli/utils/fs.ts +1 -1
- package/src/cli/utils/memory.ts +32 -7
- package/src/modules/adapters/definitions.ts +4 -3
- package/src/modules/agents/definitions.ts +2 -1
- package/src/modules/agents/registry/architect.ts +1 -0
- package/src/modules/agents/registry/backend.ts +3 -3
- package/src/modules/agents/registry/database.ts +3 -3
- package/src/modules/agents/registry/devops.ts +1 -1
- package/src/modules/agents/registry/quality.ts +1 -0
- package/src/shared/constants.ts +212 -0
- package/bin/validate-agent-army.js +0 -148
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified_init.test.js","sourceRoot":"","sources":["../../../../tests/cli/init/unified_init.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ describe("FileSystem Utilities", () => {
|
|
|
20
20
|
updateGitIgnore(gitignorePath, ".gemini", false);
|
|
21
21
|
expect(fs.existsSync(gitignorePath)).toBe(true);
|
|
22
22
|
const content = fs.readFileSync(gitignorePath, "utf8");
|
|
23
|
-
expect(content).toContain("#
|
|
23
|
+
expect(content).toContain("# Agent Enderun");
|
|
24
24
|
expect(content).toContain(".gemini/logs/*.json");
|
|
25
25
|
expect(content).toContain(".gemini/memory/");
|
|
26
26
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-utils.test.js","sourceRoot":"","sources":["../../tests/fs-utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACH,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACV,MAAM,wBAAwB,CAAC;AAEhC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IAElE,UAAU,CAAC,GAAG,EAAE;QACZ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;YACtF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAEvD,eAAe,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAEjD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACvD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"fs-utils.test.js","sourceRoot":"","sources":["../../tests/fs-utils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ describe("Memory Utilities", () => {
|
|
|
19
19
|
describe("Framework Directories", () => {
|
|
20
20
|
it("should fallback to .gemini directory if no config is found", () => {
|
|
21
21
|
const frameworkDir = memoryUtils.getLocalFrameworkDir();
|
|
22
|
-
expect(frameworkDir).toContain(".
|
|
22
|
+
expect(frameworkDir).toContain(".enderun");
|
|
23
23
|
});
|
|
24
24
|
});
|
|
25
25
|
describe("Memory Lock", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-utils.test.js","sourceRoot":"","sources":["../../tests/memory-utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,WAAW,MAAM,4BAA4B,CAAC;AAE1D,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,GAAG,EAAE;QACZ,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;QACzE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAClD,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAClE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5F,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,EAAE,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YAClE,MAAM,YAAY,GAAG,WAAW,CAAC,oBAAoB,EAAE,CAAC;YACxD,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"memory-utils.test.js","sourceRoot":"","sources":["../../tests/memory-utils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { FRAMEWORK, ADAPTER_DIRS, NATIVE_AGENT_PATHS, pathJoin, knowledgePath, unifiedAdapterPath, } from "../../src/shared/constants.js";
|
|
3
|
+
describe("shared/constants", () => {
|
|
4
|
+
it("should define core framework directory", () => {
|
|
5
|
+
expect(FRAMEWORK.CORE_DIR).toBe(".enderun");
|
|
6
|
+
expect(FRAMEWORK.UNIFIED_HUB_DIR).toBe(".agents");
|
|
7
|
+
});
|
|
8
|
+
it("should build consistent native agent paths", () => {
|
|
9
|
+
expect(NATIVE_AGENT_PATHS.gemini).toBe(pathJoin(ADAPTER_DIRS.GEMINI, "agents"));
|
|
10
|
+
expect(NATIVE_AGENT_PATHS.cursor).toBe(pathJoin(ADAPTER_DIRS.CURSOR, "rules"));
|
|
11
|
+
});
|
|
12
|
+
it("should build knowledge and unified paths", () => {
|
|
13
|
+
expect(knowledgePath("security-standards.md")).toBe(".enderun/knowledge/security-standards.md");
|
|
14
|
+
expect(unifiedAdapterPath("gemini", "agents")).toBe(".agents/gemini/agents");
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=constants.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.test.js","sourceRoot":"","sources":["../../../tests/shared/constants.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACH,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,kBAAkB,GACrB,MAAM,+BAA+B,CAAC;AAEvC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChF,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAChG,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/dist/tests/trace.test.js
CHANGED
|
@@ -18,8 +18,8 @@ describe("Trace Command", () => {
|
|
|
18
18
|
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
19
19
|
delete process.env.ENDERUN_TEST_DIR;
|
|
20
20
|
});
|
|
21
|
-
it("should successfully generate Trace ID and add task to JSON store", () => {
|
|
22
|
-
const traceId = traceNewCommand("Implement tests", "coder", "P1");
|
|
21
|
+
it("should successfully generate Trace ID and add task to JSON store", async () => {
|
|
22
|
+
const traceId = await traceNewCommand("Implement tests", "coder", "P1");
|
|
23
23
|
expect(traceId).toBeDefined();
|
|
24
24
|
const taskPath = path.join(memoryDir, "tasks", `${traceId}.json`);
|
|
25
25
|
expect(fs.existsSync(taskPath)).toBe(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.test.js","sourceRoot":"","sources":["../../tests/trace.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,WAAW,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,IAAI,OAAe,CAAC;IACpB,IAAI,SAAiB,CAAC;IAEtB,UAAU,CAAC,GAAG,EAAE;QACZ,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACxE,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAEvC,mBAAmB;QACnB,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,
|
|
1
|
+
{"version":3,"file":"trace.test.js","sourceRoot":"","sources":["../../tests/trace.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,WAAW,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,IAAI,OAAe,CAAC;IACpB,IAAI,SAAiB,CAAC;IAEtB,UAAU,CAAC,GAAG,EAAE;QACZ,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACxE,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAEvC,mBAAmB;QACnB,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAExE,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,OAAO,CAAC,CAAC;QAClE,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-enderun",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.4",
|
|
4
4
|
"description": "The Supreme AI Governance & Autonomous Orchestration Framework for Enterprise Development. Acts as a Corporate AI Management Assistant.",
|
|
5
5
|
"author": "Yusuf BEKAR",
|
|
6
6
|
"license": "MIT",
|
|
@@ -64,14 +64,14 @@
|
|
|
64
64
|
"eslint": "^10.4.0",
|
|
65
65
|
"globals": "^17.6.0",
|
|
66
66
|
"tsx": "^4.22.3",
|
|
67
|
-
"typescript": "^
|
|
68
|
-
"typescript-eslint": "^8.
|
|
69
|
-
"vitest": "^
|
|
67
|
+
"typescript": "^5.0.0",
|
|
68
|
+
"typescript-eslint": "^8.0.0",
|
|
69
|
+
"vitest": "^3.0.0"
|
|
70
70
|
},
|
|
71
71
|
"enderun": {
|
|
72
|
-
"version": "1.10.
|
|
72
|
+
"version": "1.10.3",
|
|
73
73
|
"initializedAt": "2026-06-04T18:51:28.970Z",
|
|
74
|
-
"frameworkDir": ".
|
|
74
|
+
"frameworkDir": ".enderun"
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
77
|
"chalk": "^5.6.2",
|
package/src/cli/adapters/core.ts
CHANGED
|
@@ -16,16 +16,23 @@ export const FRAMEWORK_DIR_CANDIDATES = [
|
|
|
16
16
|
".claude",
|
|
17
17
|
".github",
|
|
18
18
|
".grok",
|
|
19
|
+
".windsurf",
|
|
19
20
|
".antigravity",
|
|
20
21
|
".agent",
|
|
21
22
|
".gemini/antigravity-cli",
|
|
22
23
|
".gemini",
|
|
23
24
|
".agents",
|
|
25
|
+
"antigravity-cli"
|
|
24
26
|
] as const;
|
|
25
27
|
|
|
26
28
|
export function buildMcpServerEntry(projectRoot: string) {
|
|
27
29
|
const packageRoot = getPackageRoot();
|
|
28
30
|
const mcpServerPath = path.join(packageRoot, "framework-mcp/dist/index.js");
|
|
31
|
+
|
|
32
|
+
if (!fs.existsSync(mcpServerPath)) {
|
|
33
|
+
console.warn(`⚠️ MCP Server not found at ${mcpServerPath}. Did you run 'npm run build'?`);
|
|
34
|
+
}
|
|
35
|
+
|
|
29
36
|
const relativePath = path.relative(projectRoot, mcpServerPath) || mcpServerPath;
|
|
30
37
|
|
|
31
38
|
return {
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import type { AdapterId } from "../../modules/adapters/types.js";
|
|
4
|
+
import { ADAPTER_IDS } from "../../modules/adapters/types.js";
|
|
5
|
+
import {
|
|
6
|
+
LEGACY_AGENT_LAYOUT_BASES,
|
|
7
|
+
UNIFIED_ADAPTER_SLUG,
|
|
8
|
+
UNIFIED_HUB_DIR,
|
|
9
|
+
pathJoin,
|
|
10
|
+
unifiedAdapterPath,
|
|
11
|
+
} from "../../shared/constants.js";
|
|
12
|
+
import { ADAPTERS } from "./core.js";
|
|
13
|
+
|
|
14
|
+
export {
|
|
15
|
+
CORE_FRAMEWORK_DIR,
|
|
16
|
+
UNIFIED_HUB_DIR,
|
|
17
|
+
UNIFIED_ADAPTER_SLUG,
|
|
18
|
+
} from "../../shared/constants.js";
|
|
19
|
+
|
|
20
|
+
export interface AgentsDestination {
|
|
21
|
+
agentsDir: string;
|
|
22
|
+
agentsExt: string;
|
|
23
|
+
nestedAntigravity: boolean;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function unifiedAdapterRoot(aiToolDir: string, adapterId: AdapterId): string {
|
|
27
|
+
return pathJoin(aiToolDir, UNIFIED_ADAPTER_SLUG[adapterId]);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function resolveAgentsDir(
|
|
31
|
+
adapterId: AdapterId,
|
|
32
|
+
isUnified: boolean,
|
|
33
|
+
aiToolDir: string = UNIFIED_HUB_DIR,
|
|
34
|
+
): AgentsDestination {
|
|
35
|
+
const adapter = ADAPTERS[adapterId];
|
|
36
|
+
|
|
37
|
+
if (!isUnified) {
|
|
38
|
+
return {
|
|
39
|
+
agentsDir: adapter.agentsDir ?? pathJoin(adapter.frameworkDir, "agents"),
|
|
40
|
+
agentsExt: adapter.agentsExt ?? ".md",
|
|
41
|
+
nestedAntigravity: adapterId === "antigravity-cli",
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const base = unifiedAdapterRoot(aiToolDir, adapterId);
|
|
46
|
+
|
|
47
|
+
switch (adapterId) {
|
|
48
|
+
case "cursor":
|
|
49
|
+
return { agentsDir: pathJoin(base, "rules"), agentsExt: ".mdc", nestedAntigravity: false };
|
|
50
|
+
case "codex":
|
|
51
|
+
return { agentsDir: pathJoin(base, "instructions"), agentsExt: ".md", nestedAntigravity: false };
|
|
52
|
+
case "antigravity-cli":
|
|
53
|
+
return { agentsDir: pathJoin(base, "agents"), agentsExt: ".md", nestedAntigravity: true };
|
|
54
|
+
default:
|
|
55
|
+
return { agentsDir: pathJoin(base, "agents"), agentsExt: ".md", nestedAntigravity: false };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function getUnifiedAgentLayoutBases(aiToolDir: string = UNIFIED_HUB_DIR): string[] {
|
|
60
|
+
return ADAPTER_IDS.map((id) => resolveAgentsDir(id, true, aiToolDir).agentsDir);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const AGENT_INSTRUCTION_CANDIDATES: Array<(name: string) => string[]> = [
|
|
64
|
+
(n) => ADAPTER_IDS.flatMap((id) => {
|
|
65
|
+
const { agentsDir, nestedAntigravity, agentsExt } = resolveAgentsDir(id, true);
|
|
66
|
+
if (nestedAntigravity) {
|
|
67
|
+
return [pathJoin(agentsDir, n, "agent.json"), pathJoin(agentsDir, n, "agent.md")];
|
|
68
|
+
}
|
|
69
|
+
return [pathJoin(agentsDir, `${n}${agentsExt}`)];
|
|
70
|
+
}),
|
|
71
|
+
(n) => LEGACY_AGENT_LAYOUT_BASES.flatMap((base) => {
|
|
72
|
+
if (base.includes("antigravity")) {
|
|
73
|
+
return [pathJoin(base, n, "agent.json"), pathJoin(base, n, "agent.md")];
|
|
74
|
+
}
|
|
75
|
+
const ext = base.includes("rules") ? ".mdc" : ".md";
|
|
76
|
+
return [pathJoin(base, `${n}${ext}`)];
|
|
77
|
+
}),
|
|
78
|
+
];
|
|
79
|
+
|
|
80
|
+
export function findAgentInstruction(projectRoot: string, agentName: string): string | null {
|
|
81
|
+
for (const buildPaths of AGENT_INSTRUCTION_CANDIDATES) {
|
|
82
|
+
for (const rel of buildPaths(agentName)) {
|
|
83
|
+
const full = path.join(projectRoot, rel);
|
|
84
|
+
if (fs.existsSync(full)) return rel;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export function detectActiveAgentLayouts(projectRoot: string): string[] {
|
|
91
|
+
const unified = getUnifiedAgentLayoutBases()
|
|
92
|
+
.filter((b) => fs.existsSync(path.join(projectRoot, b)));
|
|
93
|
+
|
|
94
|
+
const legacy = LEGACY_AGENT_LAYOUT_BASES
|
|
95
|
+
.filter((b) => fs.existsSync(path.join(projectRoot, b)));
|
|
96
|
+
|
|
97
|
+
return [...new Set([...unified, ...legacy])];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function copyDirectoryRecursive(src: string, dest: string): void {
|
|
101
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
102
|
+
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
103
|
+
const srcPath = path.join(src, entry.name);
|
|
104
|
+
const destPath = path.join(dest, entry.name);
|
|
105
|
+
if (entry.isDirectory()) {
|
|
106
|
+
copyDirectoryRecursive(srcPath, destPath);
|
|
107
|
+
} else {
|
|
108
|
+
fs.copyFileSync(srcPath, destPath);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function mirrorUnifiedAgentsToNative(projectRoot: string, adapterId: AdapterId): void {
|
|
114
|
+
const { agentsDir: unifiedDir } = resolveAgentsDir(adapterId, true);
|
|
115
|
+
const nativeRel = ADAPTERS[adapterId].agentsDir;
|
|
116
|
+
if (!nativeRel) return;
|
|
117
|
+
|
|
118
|
+
const src = path.join(projectRoot, unifiedDir);
|
|
119
|
+
const dest = path.join(projectRoot, nativeRel);
|
|
120
|
+
if (!fs.existsSync(src) || path.resolve(src) === path.resolve(dest)) return;
|
|
121
|
+
|
|
122
|
+
if (fs.existsSync(dest)) {
|
|
123
|
+
fs.rmSync(dest, { recursive: true, force: true });
|
|
124
|
+
}
|
|
125
|
+
copyDirectoryRecursive(src, dest);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/** Cursor global rule destinations (native + unified hub). */
|
|
129
|
+
export function getCursorGlobalRulePaths(projectRoot: string): string[] {
|
|
130
|
+
return [
|
|
131
|
+
path.join(projectRoot, ADAPTERS.cursor.frameworkDir, "rules", "global.mdc"),
|
|
132
|
+
path.join(projectRoot, unifiedAdapterPath(UNIFIED_ADAPTER_SLUG.cursor, "rules", "global.mdc")),
|
|
133
|
+
];
|
|
134
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { writeTextFile } from "../utils/fs.js";
|
|
2
2
|
import path from "path";
|
|
3
3
|
import fs from "fs";
|
|
4
|
+
import { getPackageRoot } from "../utils/pkg.js";
|
|
4
5
|
import {
|
|
5
6
|
ALL_AGENTS,
|
|
6
7
|
toClaudeCodeMd,
|
|
@@ -20,7 +21,7 @@ export function scaffoldAgents(projectRoot: string, adapterId: AdapterId, dryRun
|
|
|
20
21
|
const allowedAgents = agentsToScaffold ? new Set(agentsToScaffold) : undefined;
|
|
21
22
|
const destAgentsDir = path.join(projectRoot, adapter.agentsDir);
|
|
22
23
|
|
|
23
|
-
const baseKnowledgeDir = path.join(
|
|
24
|
+
const baseKnowledgeDir = path.join(getPackageRoot(), "templates/standards");
|
|
24
25
|
|
|
25
26
|
try {
|
|
26
27
|
if (!dryRun) fs.mkdirSync(destAgentsDir, { recursive: true });
|
|
@@ -2,12 +2,13 @@ import fs from "fs";
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
import { execSync } from "child_process";
|
|
4
4
|
|
|
5
|
-
import { getFrameworkDir, getMemoryPath, getConfiguredPaths } from "../utils/memory.js";
|
|
5
|
+
import { getFrameworkDir, getMemoryPath, getConfiguredPaths, isFrameworkDevelopmentRepo } from "../utils/memory.js";
|
|
6
6
|
import { getPackageVersion, getValidatorPath } from "../utils/pkg.js";
|
|
7
7
|
import { UI } from "../utils/ui.js";
|
|
8
8
|
import { logger } from "../../shared/logger.js";
|
|
9
9
|
import { scanProjectCompliance } from "../utils/compliance.js";
|
|
10
10
|
import { ALL_AGENTS } from "../../modules/agents/definitions.js";
|
|
11
|
+
import { detectActiveAgentLayouts, findAgentInstruction } from "../adapters/paths.js";
|
|
11
12
|
|
|
12
13
|
export async function checkCommand() {
|
|
13
14
|
UI.intent("Agent Enderun Health Check", `Checking system health and discipline rules (v${getPackageVersion()})...`);
|
|
@@ -32,18 +33,7 @@ export async function checkCommand() {
|
|
|
32
33
|
issues++;
|
|
33
34
|
}
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
try {
|
|
37
|
-
const localPkgPath = path.join(process.cwd(), "package.json");
|
|
38
|
-
if (fs.existsSync(localPkgPath)) {
|
|
39
|
-
const localPkg = JSON.parse(fs.readFileSync(localPkgPath, "utf8"));
|
|
40
|
-
if (localPkg.name === "agent-enderun") {
|
|
41
|
-
isFrameworkDevelopment = true;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
} catch (err) {
|
|
45
|
-
logger.debug("Failed to read package.json in checkCommand", err);
|
|
46
|
-
}
|
|
36
|
+
const isFrameworkDevelopment = isFrameworkDevelopmentRepo();
|
|
47
37
|
|
|
48
38
|
const checks = [
|
|
49
39
|
{ name: "Constitution (ENDERUN.md)", path: constitutionPath },
|
|
@@ -99,35 +89,23 @@ export async function checkCommand() {
|
|
|
99
89
|
|
|
100
90
|
// Agent Documentation Check (Live Integrity)
|
|
101
91
|
console.warn("\n📚 Checking Agent Integrity (Instructions)...");
|
|
102
|
-
|
|
103
|
-
// We check both the main framework dir and common subdirs
|
|
104
|
-
const possibleAgentDirs = [
|
|
105
|
-
path.join(process.cwd(), ".agents"),
|
|
106
|
-
path.join(process.cwd(), ".gemini/agents"),
|
|
107
|
-
path.join(process.cwd(), ".claude/agents"),
|
|
108
|
-
path.join(process.cwd(), ".cursor/rules"),
|
|
109
|
-
path.join(process.cwd(), ".grok"),
|
|
110
|
-
path.join(process.cwd(), ".antigravity/agents"),
|
|
111
|
-
];
|
|
112
92
|
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
if (fs.existsSync(mdPath) || fs.existsSync(mdcPath)) {
|
|
123
|
-
UI.success(`Instructions for @${agentName} found in ${path.relative(process.cwd(), activeAgentDir)}`);
|
|
93
|
+
const projectRoot = process.cwd();
|
|
94
|
+
const activeLayouts = detectActiveAgentLayouts(projectRoot);
|
|
95
|
+
|
|
96
|
+
if (activeLayouts.length > 0) {
|
|
97
|
+
UI.success(`Active agent layout(s): ${activeLayouts.join(", ")}`);
|
|
98
|
+
ALL_AGENTS.forEach((agent) => {
|
|
99
|
+
const found = findAgentInstruction(projectRoot, agent.name);
|
|
100
|
+
if (found) {
|
|
101
|
+
UI.success(`Instructions for @${agent.name} found at ${found}`);
|
|
124
102
|
} else {
|
|
125
|
-
UI.error(`Instructions for @${
|
|
103
|
+
UI.error(`Instructions for @${agent.name} MISSING! Run 'agent-enderun init' to scaffold.`);
|
|
126
104
|
issues++;
|
|
127
105
|
}
|
|
128
106
|
});
|
|
129
107
|
} else {
|
|
130
|
-
UI.warning("No active agent instruction directory detected
|
|
108
|
+
UI.warning("No active agent instruction directory detected. Run 'agent-enderun init [adapter]' first.");
|
|
131
109
|
issues++;
|
|
132
110
|
}
|
|
133
111
|
|
|
@@ -149,12 +127,12 @@ export async function checkCommand() {
|
|
|
149
127
|
}
|
|
150
128
|
|
|
151
129
|
try {
|
|
130
|
+
UI.intent("Type Check", "Running 'npx tsc --noEmit' (this may take a few seconds)...");
|
|
152
131
|
execSync("npx tsc --noEmit", { stdio: "pipe" });
|
|
153
132
|
UI.success("TypeScript type check PASSED.");
|
|
154
133
|
} catch (err) {
|
|
155
|
-
UI.
|
|
134
|
+
UI.warning("TypeScript type check FAILED or 'tsc' not found. This is a non-blocking warning for lightweight checks.");
|
|
156
135
|
logger.debug("npx tsc --noEmit check failed", err);
|
|
157
|
-
issues++;
|
|
158
136
|
}
|
|
159
137
|
|
|
160
138
|
interface MetricEntry {
|
|
@@ -74,6 +74,54 @@ export function parseProjectMemory() {
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
interface ProjectStructureEntry {
|
|
78
|
+
name: string;
|
|
79
|
+
path: string;
|
|
80
|
+
type: "directory" | "file";
|
|
81
|
+
children?: ProjectStructureEntry[];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function getProjectStructure(): ProjectStructureEntry[] {
|
|
85
|
+
const projectRoot = process.cwd();
|
|
86
|
+
|
|
87
|
+
function walk(dir: string, depth = 0): ProjectStructureEntry[] {
|
|
88
|
+
if (depth > 3) return []; // Limit depth for performance
|
|
89
|
+
|
|
90
|
+
const entries: ProjectStructureEntry[] = [];
|
|
91
|
+
let files: fs.Dirent[];
|
|
92
|
+
|
|
93
|
+
try {
|
|
94
|
+
files = fs.readdirSync(dir, { withFileTypes: true });
|
|
95
|
+
} catch (_e) {
|
|
96
|
+
// Silently ignore directories that cannot be read
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
for (const file of files) {
|
|
101
|
+
if (file.name.startsWith(".") || file.name === "node_modules" || file.name === "dist") continue;
|
|
102
|
+
|
|
103
|
+
const fullPath = path.join(dir, file.name);
|
|
104
|
+
const entry: ProjectStructureEntry = {
|
|
105
|
+
name: file.name,
|
|
106
|
+
path: path.relative(projectRoot, fullPath),
|
|
107
|
+
type: file.isDirectory() ? "directory" : "file"
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
if (file.isDirectory()) {
|
|
111
|
+
entry.children = walk(fullPath, depth + 1);
|
|
112
|
+
}
|
|
113
|
+
entries.push(entry);
|
|
114
|
+
}
|
|
115
|
+
return entries;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
try {
|
|
119
|
+
return walk(projectRoot);
|
|
120
|
+
} catch {
|
|
121
|
+
return [];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
77
125
|
export function readManagerLogs() {
|
|
78
126
|
const frameworkDir = getFrameworkDir();
|
|
79
127
|
if (!frameworkDir) return [];
|
|
@@ -43,7 +43,12 @@ This document outlines the strict ESLint coding standards for Agent Enderun proj
|
|
|
43
43
|
{ file: "quality-standards.md", template: "templates/standards/quality-standards.md", default: "# ⚖️ Corporate Code Quality Standards" },
|
|
44
44
|
{ file: "logging-and-secrets.md", template: "templates/standards/logging-and-secrets.md", default: "# 🪵 Corporate Logging Standards" },
|
|
45
45
|
{ file: "testing-standards.md", template: "templates/standards/testing-standards.md", default: "# 🧪 Corporate Testing Standards" },
|
|
46
|
-
{ file: "i18n-standards.md", template: "templates/standards/i18n-standards.md", default: "# 🌐 Corporate i18n Standards" }
|
|
46
|
+
{ file: "i18n-standards.md", template: "templates/standards/i18n-standards.md", default: "# 🌐 Corporate i18n Standards" },
|
|
47
|
+
{ file: "llm-governance.md", template: "templates/standards/llm-governance.md", default: "# 🤖 LLM Governance Standards" },
|
|
48
|
+
{ file: "observability-standards.md", template: "templates/standards/observability-standards.md", default: "# 📈 Corporate Observability Standards" },
|
|
49
|
+
{ file: "deployment-standards.md", template: "templates/standards/deployment-standards.md", default: "# 🚀 Corporate Deployment Standards" },
|
|
50
|
+
{ file: "performance-standards.md", template: "templates/standards/performance-standards.md", default: "# ⚡ Corporate Performance Standards" },
|
|
51
|
+
{ file: "security-audit-standards.md", template: "templates/standards/security-audit-standards.md", default: "# 🔍 Corporate Security Audit Standards" }
|
|
47
52
|
];
|
|
48
53
|
|
|
49
54
|
for (const std of standards) {
|
package/src/cli/commands/init.ts
CHANGED
|
@@ -113,14 +113,11 @@ export async function initCommand(adapterName: string, options: { unified?: bool
|
|
|
113
113
|
|
|
114
114
|
scaffoldConstitution(projectRoot, coreDir, adapterId, dryRun);
|
|
115
115
|
|
|
116
|
+
scaffoldStandards(path.join(projectRoot, coreDir), dryRun);
|
|
116
117
|
scaffoldAgents(projectRoot, adapterId, dryRun, selectedAgents);
|
|
117
118
|
|
|
118
119
|
const skillsBaseDir = path.join(projectRoot, aiToolDir, "skills");
|
|
119
120
|
scaffoldSkills(skillsBaseDir, dryRun);
|
|
120
|
-
|
|
121
|
-
initializeMemory(path.join(projectRoot, coreDir), dryRun);
|
|
122
|
-
scaffoldFrameworkConfigs(projectRoot, coreDir, adapter, dryRun, selectedPalette);
|
|
123
|
-
scaffoldStandards(path.join(projectRoot, coreDir), dryRun);
|
|
124
121
|
scaffoldOps(path.join(projectRoot, coreDir), dryRun);
|
|
125
122
|
scaffoldShims(projectRoot, coreDir, adapterId, adapter, dryRun);
|
|
126
123
|
|