agent-enderun 1.11.0 → 1.11.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/README.md +14 -6
- package/bin/validate-agent-army.js +146 -0
- package/dist/src/cli/adapters/paths.js +2 -1
- package/dist/src/cli/adapters/paths.js.map +1 -1
- package/dist/src/cli/adapters/scaffold.js +5 -1
- package/dist/src/cli/adapters/scaffold.js.map +1 -1
- package/dist/src/cli/adapters/utils.js +2 -3
- package/dist/src/cli/adapters/utils.js.map +1 -1
- package/dist/src/cli/commands/init/scaffold-core.js +8 -2
- package/dist/src/cli/commands/init/scaffold-core.js.map +1 -1
- package/dist/src/cli/commands/init/scaffold-standards.js +3 -0
- package/dist/src/cli/commands/init/scaffold-standards.js.map +1 -1
- package/dist/src/cli/commands/orchestrate.d.ts +3 -1
- package/dist/src/cli/commands/orchestrate.js +40 -4
- package/dist/src/cli/commands/orchestrate.js.map +1 -1
- package/dist/src/cli/commands/plan.js +2 -1
- package/dist/src/cli/commands/plan.js.map +1 -1
- package/dist/src/modules/adapters/definitions.js +1 -1
- package/dist/src/modules/adapters/definitions.js.map +1 -1
- package/dist/src/modules/adapters/shared.js +29 -10
- package/dist/src/modules/adapters/shared.js.map +1 -1
- package/dist/src/modules/agents/definitions.d.ts +1 -1
- package/dist/src/modules/agents/definitions.js +153 -72
- package/dist/src/modules/agents/definitions.js.map +1 -1
- package/dist/src/modules/agents/registry/analyst.js +4 -0
- package/dist/src/modules/agents/registry/analyst.js.map +1 -1
- package/dist/src/modules/agents/registry/devops.js +2 -0
- package/dist/src/modules/agents/registry/devops.js.map +1 -1
- package/dist/src/modules/agents/registry/explorer.js +1 -0
- package/dist/src/modules/agents/registry/explorer.js.map +1 -1
- package/dist/src/modules/agents/registry/git.js +2 -0
- package/dist/src/modules/agents/registry/git.js.map +1 -1
- package/dist/src/modules/agents/registry/manager.js +5 -0
- package/dist/src/modules/agents/registry/manager.js.map +1 -1
- package/dist/src/modules/agents/registry/native.js +4 -0
- package/dist/src/modules/agents/registry/native.js.map +1 -1
- package/dist/src/shared/constants.d.ts +1 -1
- package/dist/src/shared/constants.js +10 -9
- package/dist/src/shared/constants.js.map +1 -1
- package/dist/tests/adapters/paths.test.js +3 -3
- package/dist/tests/adapters/paths.test.js.map +1 -1
- package/dist/tests/integration/agent_flow.test.js +2 -2
- package/dist/tests/integration/agent_flow.test.js.map +1 -1
- package/dist/tests/orchestrate.test.js +2 -7
- package/dist/tests/orchestrate.test.js.map +1 -1
- package/package.json +2 -2
- package/src/cli/adapters/paths.ts +2 -1
- package/src/cli/adapters/scaffold.ts +5 -1
- package/src/cli/adapters/utils.ts +2 -2
- package/src/cli/commands/init/scaffold-core.ts +8 -2
- package/src/cli/commands/init/scaffold-standards.ts +3 -0
- package/src/cli/commands/orchestrate.ts +41 -4
- package/src/cli/commands/plan.ts +2 -1
- package/src/modules/adapters/definitions.ts +1 -1
- package/src/modules/adapters/shared.ts +33 -10
- package/src/modules/agents/definitions.ts +164 -75
- package/src/modules/agents/registry/analyst.ts +4 -0
- package/src/modules/agents/registry/devops.ts +2 -0
- package/src/modules/agents/registry/explorer.ts +1 -0
- package/src/modules/agents/registry/git.ts +2 -0
- package/src/modules/agents/registry/manager.ts +5 -0
- package/src/modules/agents/registry/native.ts +4 -0
- package/src/shared/constants.ts +14 -13
- package/templates/standards/governance-standards.md +121 -0
|
@@ -11,6 +11,7 @@ export const git = {
|
|
|
11
11
|
stateMachine: STATE_MACHINE,
|
|
12
12
|
tools: [
|
|
13
13
|
"run_shell_command",
|
|
14
|
+
"read_file",
|
|
14
15
|
"list_dir",
|
|
15
16
|
"grep_search",
|
|
16
17
|
"read_project_memory",
|
|
@@ -30,6 +31,7 @@ export const git = {
|
|
|
30
31
|
"NO FORCE PUSH: Force-pushing to any shared branch is unconditionally forbidden.",
|
|
31
32
|
"GIT FLOW: Strictly follow git-flow branching conventions — feature, hotfix, release naming enforced.",
|
|
32
33
|
],
|
|
34
|
+
knowledgeFiles: ["logging-and-secrets.md"],
|
|
33
35
|
},
|
|
34
36
|
};
|
|
35
37
|
//# sourceMappingURL=git.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../../../src/modules/agents/registry/git.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,uCAAgD,CAAC;AAEvE,MAAM,CAAC,MAAM,GAAG,GAAoB;IAChC,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,kBAAkB;IAC/B,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACb,iDAAiD;QACjD,iCAAiC;IAC/B,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC3B,YAAY,EAAE,aAAa;IAC3B,KAAK,EAAE;QACH,mBAAmB;QACnB,UAAU;QACV,aAAa;QACb,qBAAqB;QACrB,oBAAoB;KACvB;IACD,YAAY,EAAE;QACV,QAAQ,EAAE,6DAA6D;QACvE,OAAO,EACX,kEAAkE;YAClE,yCAAyC;QACrC,cAAc,EAAE,0EAA0E;YAC1E,2FAA2F;YAC3F,0EAA0E;YAC1E,kGAAkG;QAClH,KAAK,EAAE;YACH,uGAAuG;YACvG,2GAA2G;YAC3G,iFAAiF;YACjF,sGAAsG;SACzG;
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../../../src/modules/agents/registry/git.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,uCAAgD,CAAC;AAEvE,MAAM,CAAC,MAAM,GAAG,GAAoB;IAChC,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,kBAAkB;IAC/B,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACb,iDAAiD;QACjD,iCAAiC;IAC/B,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC3B,YAAY,EAAE,aAAa;IAC3B,KAAK,EAAE;QACH,mBAAmB;QACnB,WAAW;QACX,UAAU;QACV,aAAa;QACb,qBAAqB;QACrB,oBAAoB;KACvB;IACD,YAAY,EAAE;QACV,QAAQ,EAAE,6DAA6D;QACvE,OAAO,EACX,kEAAkE;YAClE,yCAAyC;QACrC,cAAc,EAAE,0EAA0E;YAC1E,2FAA2F;YAC3F,0EAA0E;YAC1E,kGAAkG;QAClH,KAAK,EAAE;YACH,uGAAuG;YACvG,2GAA2G;YAC3G,iFAAiF;YACjF,sGAAsG;SACzG;QACD,cAAc,EAAE,CAAC,wBAAwB,CAAC;KAC7C;CACJ,CAAC"}
|
|
@@ -15,6 +15,9 @@ export const manager = {
|
|
|
15
15
|
"read_project_memory",
|
|
16
16
|
"get_memory_insights",
|
|
17
17
|
"update_project_memory",
|
|
18
|
+
"acquire_lock",
|
|
19
|
+
"release_lock",
|
|
20
|
+
"log_agent_action",
|
|
18
21
|
"get_project_gaps",
|
|
19
22
|
"get_project_map",
|
|
20
23
|
"audit_dependencies",
|
|
@@ -44,7 +47,9 @@ export const manager = {
|
|
|
44
47
|
"GAP ANALYSIS: Run 'get_project_gaps' after each phase — unfinished logic is a breach of discipline.",
|
|
45
48
|
"SYSTEM OBSERVABILITY: Periodically invoke 'get_system_health' and 'check_active_ports' to verify environment stability.",
|
|
46
49
|
"MEMORY INTEGRITY: Synchronize 'PROJECT_MEMORY.md' after every single turn. Memory drift is treason.",
|
|
50
|
+
"LOCKING PROTOCOL: Always acquire a lock via 'acquire_lock' on 'memory' resource before writing to PROJECT_MEMORY.md. Release immediately after write.",
|
|
47
51
|
],
|
|
52
|
+
knowledgeFiles: ["governance-standards.md"],
|
|
48
53
|
},
|
|
49
54
|
};
|
|
50
55
|
//# sourceMappingURL=manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../../src/modules/agents/registry/manager.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,uCAAgD,CAAC;AAEvE,MAAM,CAAC,MAAM,OAAO,GAAoB;IACpC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,yCAAyC;IAC/C,WAAW,EACb,kEAAkE;QAClE,uEAAuE;IACrE,UAAU,EAAE,EAAE;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,YAAY,CAAC;IAC7C,YAAY,EAAE,aAAa;IAC3B,KAAK,EAAE;QACH,kBAAkB;QAClB,oBAAoB;QACpB,qBAAqB;QACrB,qBAAqB;QACrB,uBAAuB;QACvB,kBAAkB;QAClB,iBAAiB;QACjB,oBAAoB;QACpB,UAAU;QACV,aAAa;QACb,sBAAsB;QACtB,mBAAmB;QACnB,oBAAoB;QACpB,iBAAiB;KACpB;IACD,YAAY,EAAE;QACV,QAAQ,EAAE,yDAAyD;QACnE,OAAO,EACX,kEAAkE;YAClE,4CAA4C;QACxC,cAAc,EAAE,yFAAyF;YACzF,mFAAmF;YACnF,0EAA0E;YAC1E,+FAA+F;QAC/G,KAAK,EAAE;YACH,4EAA4E;gBAClF,2GAA2G;YACrG,sHAAsH;YACtH,iHAAiH;YACjH,oHAAoH;YACpH,2GAA2G;YAC3G,gGAAgG;YAChG,qGAAqG;YACrG,yHAAyH;YACzH,qGAAqG;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../../src/modules/agents/registry/manager.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,uCAAgD,CAAC;AAEvE,MAAM,CAAC,MAAM,OAAO,GAAoB;IACpC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,yCAAyC;IAC/C,WAAW,EACb,kEAAkE;QAClE,uEAAuE;IACrE,UAAU,EAAE,EAAE;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,YAAY,CAAC;IAC7C,YAAY,EAAE,aAAa;IAC3B,KAAK,EAAE;QACH,kBAAkB;QAClB,oBAAoB;QACpB,qBAAqB;QACrB,qBAAqB;QACrB,uBAAuB;QACvB,cAAc;QACd,cAAc;QACd,kBAAkB;QAClB,kBAAkB;QAClB,iBAAiB;QACjB,oBAAoB;QACpB,UAAU;QACV,aAAa;QACb,sBAAsB;QACtB,mBAAmB;QACnB,oBAAoB;QACpB,iBAAiB;KACpB;IACD,YAAY,EAAE;QACV,QAAQ,EAAE,yDAAyD;QACnE,OAAO,EACX,kEAAkE;YAClE,4CAA4C;QACxC,cAAc,EAAE,yFAAyF;YACzF,mFAAmF;YACnF,0EAA0E;YAC1E,+FAA+F;QAC/G,KAAK,EAAE;YACH,4EAA4E;gBAClF,2GAA2G;YACrG,sHAAsH;YACtH,iHAAiH;YACjH,oHAAoH;YACpH,2GAA2G;YAC3G,gGAAgG;YAChG,qGAAqG;YACrG,yHAAyH;YACzH,qGAAqG;YACrG,uJAAuJ;SAC1J;QACD,cAAc,EAAE,CAAC,yBAAyB,CAAC;KAC9C;CACJ,CAAC"}
|
|
@@ -17,6 +17,8 @@ export const native = {
|
|
|
17
17
|
"grep_search",
|
|
18
18
|
"read_project_memory",
|
|
19
19
|
"run_shell_command",
|
|
20
|
+
"send_agent_message",
|
|
21
|
+
"log_agent_action",
|
|
20
22
|
],
|
|
21
23
|
instructions: {
|
|
22
24
|
identity: "Native Integration Engineer and OS-Layer Security Enforcer",
|
|
@@ -30,7 +32,9 @@ export const native = {
|
|
|
30
32
|
"SECURITY PARAMOUNT: Handle all OS-layer operations with rigorous input validation.",
|
|
31
33
|
"PLATFORM ISOLATION: Strictly separate platform-specific code from shared business logic.",
|
|
32
34
|
"SYSTEM CALL AUDITING: Validate all native module inputs and log elevated-privilege operations.",
|
|
35
|
+
"ESCALATION PROTOCOL: Any destructive or elevated-privilege operation requires prior @manager approval via send_agent_message.",
|
|
33
36
|
],
|
|
37
|
+
knowledgeFiles: ["security-standards.md", "logging-and-secrets.md"],
|
|
34
38
|
},
|
|
35
39
|
};
|
|
36
40
|
//# sourceMappingURL=native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../../../../src/modules/agents/registry/native.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,uCAAgD,CAAC;AAEvE,MAAM,CAAC,MAAM,MAAM,GAAoB;IACnC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,iBAAiB;IAC9B,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACb,kDAAkD;QAClD,iDAAiD;IAC/C,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;IACxB,YAAY,EAAE,aAAa;IAC3B,KAAK,EAAE;QACH,WAAW;QACX,YAAY;QACZ,cAAc;QACd,UAAU;QACV,aAAa;QACb,qBAAqB;QACrB,mBAAmB;
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../../../../src/modules/agents/registry/native.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,uCAAgD,CAAC;AAEvE,MAAM,CAAC,MAAM,MAAM,GAAoB;IACnC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,iBAAiB;IAC9B,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACb,kDAAkD;QAClD,iDAAiD;IAC/C,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;IACxB,YAAY,EAAE,aAAa;IAC3B,KAAK,EAAE;QACH,WAAW;QACX,YAAY;QACZ,cAAc;QACd,UAAU;QACV,aAAa;QACb,qBAAqB;QACrB,mBAAmB;QACnB,oBAAoB;QACpB,kBAAkB;KACrB;IACD,YAAY,EAAE;QACV,QAAQ,EAAE,4DAA4D;QACtE,OAAO,EACX,kEAAkE;YAClE,4CAA4C;QACxC,cAAc,EAAE,0EAA0E;YAC1E,2FAA2F;YAC3F,0EAA0E;YAC1E,kGAAkG;QAClH,KAAK,EAAE;YACH,oFAAoF;YACpF,0FAA0F;YAC1F,gGAAgG;YAChG,+HAA+H;SAClI;QACD,cAAc,EAAE,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;KACtE;CACJ,CAAC"}
|
|
@@ -76,7 +76,7 @@ export declare const DEFAULT_MONOREPO_PATHS: {
|
|
|
76
76
|
readonly docs: "docs";
|
|
77
77
|
readonly tests: "tests";
|
|
78
78
|
};
|
|
79
|
-
/** Cursor rule globs per agent role (monorepo layout). */
|
|
79
|
+
/** Cursor rule globs per agent role (enterprise monorepo layout). */
|
|
80
80
|
export declare const CURSOR_AGENT_GLOBS: Record<string, string>;
|
|
81
81
|
export declare const MCP: {
|
|
82
82
|
readonly SERVER_NAME: "agent-enderun";
|
|
@@ -113,20 +113,21 @@ export const DEFAULT_MONOREPO_PATHS = {
|
|
|
113
113
|
docs: "docs",
|
|
114
114
|
tests: "tests",
|
|
115
115
|
};
|
|
116
|
-
/** Cursor rule globs per agent role (monorepo layout). */
|
|
116
|
+
/** Cursor rule globs per agent role (enterprise monorepo layout). */
|
|
117
117
|
export const CURSOR_AGENT_GLOBS = {
|
|
118
|
+
manager: "**/*",
|
|
119
|
+
security: "**/*",
|
|
120
|
+
architect: "**/*",
|
|
118
121
|
backend: `${DEFAULT_MONOREPO_PATHS.backend}/**/*`,
|
|
119
122
|
frontend: `${DEFAULT_MONOREPO_PATHS.frontend}/**/*`,
|
|
120
|
-
database: `${DEFAULT_MONOREPO_PATHS.backend}/src/database/**/*`,
|
|
121
123
|
mobile: `${DEFAULT_MONOREPO_PATHS.mobile}/**/*`,
|
|
122
124
|
native: "apps/native/**/*",
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
manager: "*",
|
|
125
|
+
database: `${DEFAULT_MONOREPO_PATHS.backend}/src/database/**/*`,
|
|
126
|
+
devops: "{.github,docker,infra,scripts,*.yml,*.yaml,Dockerfile*}",
|
|
127
|
+
quality: "**/*",
|
|
128
|
+
analyst: "{docs,specs,contracts}/**/*",
|
|
129
|
+
explorer: "**/*",
|
|
130
|
+
git: "**/*",
|
|
130
131
|
};
|
|
131
132
|
// ─── MCP & environment ──────────────────────────────────────────────────────
|
|
132
133
|
export const MCP = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/shared/constants.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/shared/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ describe("Adapter Paths", () => {
|
|
|
21
21
|
expect(resolveAgentsDir("gemini", true).agentsDir).toBe(".agents/gemini/agents");
|
|
22
22
|
expect(resolveAgentsDir("cursor", true).agentsDir).toBe(".agents/cursor/rules");
|
|
23
23
|
expect(resolveAgentsDir("codex", true).agentsDir).toBe(".agents/codex/instructions");
|
|
24
|
-
expect(resolveAgentsDir("antigravity-cli", true).agentsDir).toBe(".agents/
|
|
24
|
+
expect(resolveAgentsDir("antigravity-cli", true).agentsDir).toBe(".agents/agents");
|
|
25
25
|
});
|
|
26
26
|
it("should expose a layout base for every adapter slug", () => {
|
|
27
27
|
const bases = getUnifiedAgentLayoutBases();
|
|
@@ -37,10 +37,10 @@ describe("Adapter Paths", () => {
|
|
|
37
37
|
expect(findAgentInstruction(tempDir, "manager")).toBe(".agents/gemini/agents/manager.md");
|
|
38
38
|
});
|
|
39
39
|
it("should find nested antigravity agent.json", () => {
|
|
40
|
-
const agentDir = path.join(tempDir, ".agents/
|
|
40
|
+
const agentDir = path.join(tempDir, ".agents/agents/manager");
|
|
41
41
|
fs.mkdirSync(agentDir, { recursive: true });
|
|
42
42
|
fs.writeFileSync(path.join(agentDir, "agent.json"), "{}");
|
|
43
|
-
expect(findAgentInstruction(tempDir, "manager")).toBe(".agents/
|
|
43
|
+
expect(findAgentInstruction(tempDir, "manager")).toBe(".agents/agents/manager/agent.json");
|
|
44
44
|
});
|
|
45
45
|
});
|
|
46
46
|
describe("mirrorUnifiedAgentsToNative", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.test.js","sourceRoot":"","sources":["../../../tests/adapters/paths.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,EACH,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,GAAG,EAAE;QACZ,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC5E,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;IACzD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACtD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC3E,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;YACzE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACjF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAChF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACrF,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"paths.test.js","sourceRoot":"","sources":["../../../tests/adapters/paths.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,8 +42,8 @@ describe("Agent Integration Flow", () => {
|
|
|
42
42
|
content: JSON.stringify(taskPayload),
|
|
43
43
|
traceId: traceId
|
|
44
44
|
});
|
|
45
|
-
// 2. Orchestrator processes the task
|
|
46
|
-
await orchestrateCommand();
|
|
45
|
+
// 2. Orchestrator processes the task (single iteration for test determinism)
|
|
46
|
+
await orchestrateCommand({ maxIterations: 1 });
|
|
47
47
|
// 3. Verify Backend status changed to EXECUTING
|
|
48
48
|
const status = memoryUtils.readStatus();
|
|
49
49
|
expect(status["@backend"].state).toBe("EXECUTING");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent_flow.test.js","sourceRoot":"","sources":["../../../tests/integration/agent_flow.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,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,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAExF,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACpC,IAAI,OAAe,CAAC;IACpB,IAAI,SAAiB,CAAC;IACtB,IAAI,WAAmB,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACZ,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC;QAC9E,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAE7C,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,SAAS,CAAC,CAAC;QAEzE,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACvC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,uBAAuB;QACvB,WAAW,CAAC,mBAAmB,CAAC,QAAQ,EAAE;YACtC,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;YAC5C,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;SAC/C,CAAC,CAAC;IACP,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,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,OAAO,GAAG,eAAe,CAAC;QAEhC,4BAA4B;QAC5B,MAAM,WAAW,GAAG;YAChB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,UAAU;SACpB,CAAC;QACF,MAAM,WAAW,CAAC;YACd,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,UAAU;YACd,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;YACpC,OAAO,EAAE,OAAO;SACnB,CAAC,CAAC;QAEH,
|
|
1
|
+
{"version":3,"file":"agent_flow.test.js","sourceRoot":"","sources":["../../../tests/integration/agent_flow.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,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,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAExF,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACpC,IAAI,OAAe,CAAC;IACpB,IAAI,SAAiB,CAAC;IACtB,IAAI,WAAmB,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACZ,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC;QAC9E,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAE7C,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,SAAS,CAAC,CAAC;QAEzE,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACvC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,uBAAuB;QACvB,WAAW,CAAC,mBAAmB,CAAC,QAAQ,EAAE;YACtC,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;YAC5C,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;SAC/C,CAAC,CAAC;IACP,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,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,OAAO,GAAG,eAAe,CAAC;QAEhC,4BAA4B;QAC5B,MAAM,WAAW,GAAG;YAChB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,UAAU;SACpB,CAAC;QACF,MAAM,WAAW,CAAC;YACd,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,UAAU;YACd,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;YACpC,OAAO,EAAE,OAAO;SACnB,CAAC,CAAC;QAEH,6EAA6E;QAC7E,MAAM,kBAAkB,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;QAE/C,gDAAgD;QAChD,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -53,14 +53,9 @@ describe("Hermes Message Protocol & Orchestration", () => {
|
|
|
53
53
|
memoryUtils.updateDocumentStore("status", {
|
|
54
54
|
"@frontend": { state: "EXECUTING", task: "Building dashboard", lastUpdated: pastTime }
|
|
55
55
|
});
|
|
56
|
-
// Run orchestration loop
|
|
57
|
-
|
|
58
|
-
// updating the implementation to check status.json.
|
|
59
|
-
// For now, let's fix the test logic to align with what the code *should* do.
|
|
60
|
-
await orchestrateCommand();
|
|
56
|
+
// Run a single orchestration iteration (avoids infinite loop in tests)
|
|
57
|
+
await orchestrateCommand({ maxIterations: 1 });
|
|
61
58
|
const statuses = memoryUtils.readStatus();
|
|
62
|
-
// Since we didn't update orchestrate.ts to read status.json,
|
|
63
|
-
// the code won't see it yet. I need to fix orchestrate.ts.
|
|
64
59
|
expect(statuses["@frontend"].state).toBe("BLOCKED");
|
|
65
60
|
});
|
|
66
61
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrate.test.js","sourceRoot":"","sources":["../../tests/orchestrate.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;AAC1D,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE1G,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACrD,IAAI,OAAe,CAAC;IACpB,IAAI,SAAiB,CAAC;IACtB,IAAI,WAAmB,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACZ,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC;QAC9E,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAE7C,qCAAqC;QACrC,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,SAAS,CAAC,CAAC;QAEzE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,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,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,MAAM,QAAQ,GAAG;YACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,UAAU;YACd,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,gCAAgC;YACzC,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,MAAM;SACnB,CAAC;QAEF,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,WAAW,GAAG;YAChB,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,UAAU;YACd,QAAQ,EAAE,YAAqB;YAC/B,OAAO,EAAE,2BAA2B;YACpC,OAAO,EAAE,SAAS;SACrB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACrE,WAAW,CAAC,mBAAmB,CAAC,QAAQ,EAAE;YACtC,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,QAAQ,EAAE;SACzF,CAAC,CAAC;QAEH,
|
|
1
|
+
{"version":3,"file":"orchestrate.test.js","sourceRoot":"","sources":["../../tests/orchestrate.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-enderun",
|
|
3
|
-
"version": "1.11.
|
|
3
|
+
"version": "1.11.2",
|
|
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",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"vitest": "^3.0.0"
|
|
72
72
|
},
|
|
73
73
|
"enderun": {
|
|
74
|
-
"version": "1.11.
|
|
74
|
+
"version": "1.11.2",
|
|
75
75
|
"initializedAt": "2026-06-04T18:51:28.970Z",
|
|
76
76
|
"frameworkDir": ".enderun"
|
|
77
77
|
},
|
|
@@ -50,7 +50,8 @@ export function resolveAgentsDir(
|
|
|
50
50
|
case "codex":
|
|
51
51
|
return { agentsDir: pathJoin(base, "instructions"), agentsExt: ".md", nestedAntigravity: false };
|
|
52
52
|
case "antigravity-cli":
|
|
53
|
-
|
|
53
|
+
// Antigravity CLI expects workspace agents at .agents/agents/{agent_name}/agent.json
|
|
54
|
+
return { agentsDir: pathJoin(aiToolDir, "agents"), agentsExt: ".json", nestedAntigravity: true };
|
|
54
55
|
default:
|
|
55
56
|
return { agentsDir: pathJoin(base, "agents"), agentsExt: ".md", nestedAntigravity: false };
|
|
56
57
|
}
|
|
@@ -48,6 +48,10 @@ export function scaffoldAgents(
|
|
|
48
48
|
case "gemini":
|
|
49
49
|
content = toGeminiCliMd(agent, baseKnowledgeDir);
|
|
50
50
|
break;
|
|
51
|
+
case "grok":
|
|
52
|
+
// Grok uses same Gemini-compatible YAML format
|
|
53
|
+
content = toGeminiCliMd(agent, baseKnowledgeDir);
|
|
54
|
+
break;
|
|
51
55
|
case "claude":
|
|
52
56
|
content = toClaudeCodeMd(agent, baseKnowledgeDir);
|
|
53
57
|
break;
|
|
@@ -62,7 +66,7 @@ export function scaffoldAgents(
|
|
|
62
66
|
const agentDir = path.join(destAgentsDir, agent.name);
|
|
63
67
|
if (!dryRun) fs.mkdirSync(agentDir, { recursive: true });
|
|
64
68
|
|
|
65
|
-
content = toAntigravityJson(agent);
|
|
69
|
+
content = toAntigravityJson(agent, baseKnowledgeDir);
|
|
66
70
|
fileName = path.join(agent.name, "agent.json");
|
|
67
71
|
|
|
68
72
|
secondaryContent = `# 🎖️ Agent Enderun — @${agent.name}\n\n${agent.instructions.identity}\n\n${agent.instructions.mission}`;
|
|
@@ -46,9 +46,9 @@ export function remapFrameworkContent(
|
|
|
46
46
|
if (adapterId === "antigravity-cli") {
|
|
47
47
|
agentFolder = "agents";
|
|
48
48
|
knowledgeFolder = "rules";
|
|
49
|
-
} else if (adapterId === "grok") {
|
|
50
|
-
agentFolder = "plugins";
|
|
51
49
|
}
|
|
50
|
+
// Note: Grok uses the same directory structure as Gemini (".grok/agents").
|
|
51
|
+
// No override needed — default agentFolder = "agents" is correct.
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
const frameworkPattern = ".enderun/";
|
|
@@ -92,12 +92,18 @@ export function scaffoldShims(
|
|
|
92
92
|
unified: boolean = false
|
|
93
93
|
) {
|
|
94
94
|
for (const [name, content] of Object.entries(SHIM_TEMPLATES)) {
|
|
95
|
-
|
|
95
|
+
// Normalize: "antigravity-cli" template key needs exact match or prefix match
|
|
96
|
+
const isSelectedAdapter = name === adapterId ||
|
|
97
|
+
name.toLowerCase() === adapterId.split("-")[0].toLowerCase();
|
|
96
98
|
|
|
97
99
|
if (unified || isSelectedAdapter) {
|
|
98
100
|
const shimContent = remapFrameworkContent(content, coreDir, adapterId);
|
|
101
|
+
// In unified mode, each adapter writes its OWN shimFile name.
|
|
102
|
+
// In single-adapter mode, use selected adapter's shimFile.
|
|
99
103
|
const shimAdapter = ADAPTERS[name as AdapterId] || adapter;
|
|
100
|
-
const shimFileName = (unified && !isSelectedAdapter)
|
|
104
|
+
const shimFileName = (unified && !isSelectedAdapter)
|
|
105
|
+
? (shimAdapter.shimFile || `${name.toUpperCase()}.md`) // each adapter's own file
|
|
106
|
+
: (adapter.shimFile || `${name.toUpperCase()}.md`); // selected adapter's file
|
|
101
107
|
|
|
102
108
|
if (!dryRun) writeTextFile(path.join(projectRoot, shimFileName), shimContent);
|
|
103
109
|
if (isSelectedAdapter) {
|
|
@@ -34,6 +34,9 @@ This document outlines the strict ESLint coding standards for Agent Enderun proj
|
|
|
34
34
|
writeTextFile(path.join(knowledgePath, "eslint-standards.md"), eslintStandardsContent);
|
|
35
35
|
|
|
36
36
|
const standards = [
|
|
37
|
+
// ── Supreme Governance (required by @manager, @security, @architect) ──────
|
|
38
|
+
{ file: "governance-standards.md", template: "templates/standards/governance-standards.md", default: "# 🎖️ Agent Enderun — Governance & Nizam Standards" },
|
|
39
|
+
// ── Core Engineering Standards ────────────────────────────────────────────
|
|
37
40
|
{ file: "crud-governance.md", template: "templates/standards/crud-governance.md", default: "# 🏛️ Corporate CRUD and Governance Standards" },
|
|
38
41
|
{ file: "architecture-standards.md", template: "templates/standards/architecture-standards.md", default: "# 📐 Corporate Architecture Standards" },
|
|
39
42
|
{ file: "frontend-standards.md", template: "templates/standards/frontend-standards.md", default: "# 🎨 Corporate Frontend Standards" },
|
|
@@ -28,11 +28,16 @@ export type HermesMessage = z.infer<typeof HermesMessageSchema>;
|
|
|
28
28
|
let agentStatusCache: Record<string, { state: string; task: string; lastUpdated?: string }> = {};
|
|
29
29
|
let isLooping = false;
|
|
30
30
|
|
|
31
|
-
export async function orchestrateCommand() {
|
|
31
|
+
export async function orchestrateCommand(options?: { maxIterations?: number }) {
|
|
32
32
|
UI.intent("Hermes Message Broker", "Starting the live agent orchestration loop...");
|
|
33
33
|
|
|
34
34
|
const frameworkDir = getFrameworkDir();
|
|
35
35
|
const messagesDir = path.join(frameworkDir, "messages");
|
|
36
|
+
const maxIterations = options?.maxIterations;
|
|
37
|
+
let iterationCount = 0;
|
|
38
|
+
|
|
39
|
+
// Reset in-memory cache so each invocation starts fresh (important for test isolation)
|
|
40
|
+
agentStatusCache = {};
|
|
36
41
|
|
|
37
42
|
// Graceful Shutdown Handling
|
|
38
43
|
const shutdown = async () => {
|
|
@@ -93,16 +98,36 @@ export async function orchestrateCommand() {
|
|
|
93
98
|
const parsed = JSON.parse(line);
|
|
94
99
|
const msg = HermesMessageSchema.parse(parsed);
|
|
95
100
|
|
|
96
|
-
// Contract Validation
|
|
101
|
+
// Contract Validation for structured task messages
|
|
102
|
+
// ACTION & DELEGATION must be valid TaskRequest payloads
|
|
103
|
+
// SUBTASK must have a parentId and valid task payload
|
|
104
|
+
// ALERT must have a content string (free-form, no schema required)
|
|
97
105
|
if (msg.category === "ACTION" || msg.category === "DELEGATION") {
|
|
98
106
|
try {
|
|
99
107
|
const payload = JSON.parse(msg.content);
|
|
100
108
|
TaskRequestSchema.parse(payload);
|
|
101
109
|
} catch (e) {
|
|
102
|
-
UI.error(`Invalid task contract payload: ${(e as Error).message}`);
|
|
110
|
+
UI.error(`Invalid task contract payload in ${msg.category} from @${msg.from}: ${(e as Error).message}`);
|
|
103
111
|
return; // Skip invalid message
|
|
104
112
|
}
|
|
105
113
|
}
|
|
114
|
+
if (msg.category === "SUBTASK") {
|
|
115
|
+
if (!msg.parentId) {
|
|
116
|
+
UI.error(`SUBTASK from @${msg.from} is missing required parentId — skipping.`);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const payload = JSON.parse(msg.content);
|
|
121
|
+
TaskRequestSchema.parse(payload);
|
|
122
|
+
} catch (e) {
|
|
123
|
+
UI.error(`Invalid SUBTASK payload from @${msg.from}: ${(e as Error).message}`);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (msg.category === "ALERT" && !msg.content.trim()) {
|
|
128
|
+
UI.error(`ALERT from @${msg.from} has empty content — skipping.`);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
106
131
|
|
|
107
132
|
// A message is actionable if it's pending, or if it's been approved.
|
|
108
133
|
if (msg.status === "PENDING" || msg.status === "APPROVED") {
|
|
@@ -227,6 +252,13 @@ export async function orchestrateCommand() {
|
|
|
227
252
|
logger.debug("Hermes global loop failure", globalLoopErr);
|
|
228
253
|
}
|
|
229
254
|
|
|
255
|
+
iterationCount++;
|
|
256
|
+
// If maxIterations is set (e.g. in tests), stop after N iterations without sleeping
|
|
257
|
+
if (maxIterations !== undefined && iterationCount >= maxIterations) {
|
|
258
|
+
isLooping = false;
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
|
|
230
262
|
// Prevent 100% CPU and provide breathing room for I/O
|
|
231
263
|
await sleep(2000);
|
|
232
264
|
}
|
|
@@ -295,7 +327,12 @@ export async function sendMessage(args: {
|
|
|
295
327
|
|
|
296
328
|
try {
|
|
297
329
|
const defaultPriority = (args.category === "ALERT" || args.category === "ACTION") ? "HIGH" : "NORMAL";
|
|
298
|
-
|
|
330
|
+
// Only ALERT requires manager approval by default.
|
|
331
|
+
// ACTION messages flow freely unless the caller explicitly sets requiresApproval=true.
|
|
332
|
+
// This prevents workflow blockage on normal agent-to-agent task delegation.
|
|
333
|
+
const requiresApproval = args.requiresApproval !== undefined
|
|
334
|
+
? args.requiresApproval
|
|
335
|
+
: args.category === "ALERT";
|
|
299
336
|
|
|
300
337
|
const message: HermesMessage = {
|
|
301
338
|
timestamp: new Date().toISOString(),
|
package/src/cli/commands/plan.ts
CHANGED
|
@@ -2,6 +2,7 @@ import fs from "fs";
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
import { generateULID } from "../utils/time.js";
|
|
4
4
|
import { UI } from "../utils/ui.js";
|
|
5
|
+
import { writeJsonFile } from "../utils/fs.js";
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Reads ALL markdown files from the docs/ directory and creates
|
|
@@ -92,7 +93,7 @@ export async function planCommand() {
|
|
|
92
93
|
tasks: taskCount,
|
|
93
94
|
preview: content.substring(0, 500),
|
|
94
95
|
};
|
|
95
|
-
|
|
96
|
+
writeJsonFile(taskFile, taskData);
|
|
96
97
|
}
|
|
97
98
|
|
|
98
99
|
// Log available standards
|
|
@@ -38,7 +38,7 @@ export const ADAPTER_CONFIGS: Record<AdapterId, AdapterConfig> = {
|
|
|
38
38
|
shimTemplate: "src/cli/shims/grok.md",
|
|
39
39
|
role: "researcher",
|
|
40
40
|
templateDir: ".enderun",
|
|
41
|
-
nestedDirs: ["rules"],
|
|
41
|
+
nestedDirs: ["agents", "rules"],
|
|
42
42
|
agentsDir: ".grok/agents",
|
|
43
43
|
agentsExt: ".md"
|
|
44
44
|
},
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import os from "os";
|
|
4
|
+
import { execSync } from "child_process";
|
|
4
5
|
import { writeJsonFile, writeTextFile } from "../../shared/fs.js";
|
|
5
6
|
import { ALL_AGENTS, toAntigravityJson } from "../agents/definitions.js";
|
|
6
7
|
import { CORE_SKILLS } from "../skills/definitions.js";
|
|
8
|
+
import { getPackageRoot } from "../../cli/utils/pkg.js";
|
|
7
9
|
|
|
8
10
|
export function registerGlobalAntigravityPlugins(mcpBlock: unknown): void {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
];
|
|
11
|
+
// Allow overriding via env var for different OS/Gemini CLI versions
|
|
12
|
+
const defaultGlobalDir = path.join(os.homedir(), ".gemini/antigravity-cli");
|
|
13
|
+
const customDir = process.env["ANTIGRAVITY_GLOBAL_DIR"];
|
|
14
|
+
const targets = [customDir ?? defaultGlobalDir];
|
|
15
|
+
const baseKnowledgeDir = path.join(getPackageRoot(), "templates/standards");
|
|
12
16
|
|
|
13
17
|
for (const globalDir of targets) {
|
|
14
18
|
try {
|
|
@@ -36,16 +40,31 @@ export function registerGlobalAntigravityPlugins(mcpBlock: unknown): void {
|
|
|
36
40
|
// Scaffold 13 agents
|
|
37
41
|
const agentsBaseDir = path.join(globalPluginDir, "agents");
|
|
38
42
|
fs.mkdirSync(agentsBaseDir, { recursive: true });
|
|
43
|
+
|
|
44
|
+
// Also write directly to ~/.gemini/antigravity-cli/agents/ so the CLI's
|
|
45
|
+
// workspace/global agent discovery finds them without the plugins/ prefix.
|
|
46
|
+
const globalAgentsDir = path.join(globalDir, "agents");
|
|
47
|
+
fs.mkdirSync(globalAgentsDir, { recursive: true });
|
|
48
|
+
|
|
39
49
|
for (const ag of ALL_AGENTS) {
|
|
40
|
-
const agentJson = toAntigravityJson(ag);
|
|
50
|
+
const agentJson = toAntigravityJson(ag, baseKnowledgeDir);
|
|
41
51
|
|
|
42
|
-
// 1. Nested format
|
|
52
|
+
// 1. Nested format inside plugin: plugins/agent-enderun/agents/{name}/agent.json
|
|
43
53
|
const nestedAgentDir = path.join(agentsBaseDir, ag.name);
|
|
44
54
|
fs.mkdirSync(nestedAgentDir, { recursive: true });
|
|
45
55
|
writeTextFile(path.join(nestedAgentDir, "agent.json"), agentJson);
|
|
46
56
|
|
|
47
|
-
// 2.
|
|
57
|
+
// 2. Flat format inside plugin: plugins/agent-enderun/agents/{name}.json
|
|
48
58
|
writeTextFile(path.join(agentsBaseDir, `${ag.name}.json`), agentJson);
|
|
59
|
+
|
|
60
|
+
// 3. Direct global agents root — THIS is what Antigravity CLI reads:
|
|
61
|
+
// ~/.gemini/antigravity-cli/agents/{name}/agent.json
|
|
62
|
+
const globalNestedDir = path.join(globalAgentsDir, ag.name);
|
|
63
|
+
fs.mkdirSync(globalNestedDir, { recursive: true });
|
|
64
|
+
writeTextFile(path.join(globalNestedDir, "agent.json"), agentJson);
|
|
65
|
+
|
|
66
|
+
// 4. Flat global format as fallback
|
|
67
|
+
writeTextFile(path.join(globalAgentsDir, `${ag.name}.json`), agentJson);
|
|
49
68
|
}
|
|
50
69
|
|
|
51
70
|
// Scaffold skills
|
|
@@ -82,13 +101,17 @@ ${ag.instructions.rules.map(r => `- ${r}`).join("\n")}
|
|
|
82
101
|
}
|
|
83
102
|
|
|
84
103
|
// Scaffold optional empty hooks.json
|
|
85
|
-
writeJsonFile(path.join(globalPluginDir, "hooks.json"), {
|
|
86
|
-
preTool: [],
|
|
87
|
-
postTool: []
|
|
88
|
-
});
|
|
104
|
+
writeJsonFile(path.join(globalPluginDir, "hooks.json"), {});
|
|
89
105
|
|
|
90
106
|
console.warn(`✅ Antigravity Plugin registered → ${globalPluginDir}/`);
|
|
91
107
|
|
|
108
|
+
try {
|
|
109
|
+
execSync(`agy plugin install "${globalPluginDir}"`, { stdio: "ignore" });
|
|
110
|
+
console.warn(`✅ Antigravity Plugin installed in CLI.`);
|
|
111
|
+
} catch {
|
|
112
|
+
// Ignore if agy is not in PATH or fails
|
|
113
|
+
}
|
|
114
|
+
|
|
92
115
|
} catch (e) {
|
|
93
116
|
console.warn(`⚠️ Failed to register plugin/MCP in ${globalDir}:`, e);
|
|
94
117
|
}
|