@amsterdamdatalabs/enact-extensions 0.1.57 → 0.1.61
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/dist/internal/file-ops.d.ts.map +1 -1
- package/dist/internal/file-ops.js +5 -1
- package/dist/internal/file-ops.js.map +1 -1
- package/dist/internal/platform.d.ts.map +1 -1
- package/dist/internal/platform.js +1 -0
- package/dist/internal/platform.js.map +1 -1
- package/extensions/enact-factory/.agents/plugin.json +58 -0
- package/extensions/enact-factory/agents/architect.toml +30 -0
- package/extensions/enact-factory/agents/code-reviewer.toml +27 -0
- package/extensions/enact-factory/agents/critic.toml +35 -0
- package/extensions/enact-factory/agents/executor.toml +28 -0
- package/extensions/enact-factory/agents/explore.toml +25 -0
- package/extensions/enact-factory/agents/planner.toml +29 -0
- package/extensions/enact-repo/.agents/plugin.json +4 -1
- package/extensions/enact-repo/README.md +8 -0
- package/package.json +3 -1
- package/scripts/enact-extensions.mjs +2 -1
- package/scripts/lib/run-repo-doctor.mjs +7 -1
- package/scripts/lib/run-repo-install.mjs +93 -15
- package/spec/enact.json +9 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-ops.d.ts","sourceRoot":"","sources":["../../src/internal/file-ops.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC;IAC/D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,4EAA4E;IAC5E,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvE,iDAAiD;IACjD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9C,4EAA4E;IAC5E,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3C,kDAAkD;IAClD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjD,gDAAgD;IAChD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2CAA2C;IAC3C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/D,iDAAiD;IACjD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtD;AAMD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"file-ops.d.ts","sourceRoot":"","sources":["../../src/internal/file-ops.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC;IAC/D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,4EAA4E;IAC5E,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvE,iDAAiD;IACjD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9C,4EAA4E;IAC5E,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3C,kDAAkD;IAClD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjD,gDAAgD;IAChD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2CAA2C;IAC3C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/D,iDAAiD;IACjD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtD;AAMD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAmFzF"}
|
|
@@ -39,8 +39,12 @@ export function makeFileOps(repo, dryRun, actions) {
|
|
|
39
39
|
if (!existsSync(path))
|
|
40
40
|
return false;
|
|
41
41
|
actions.push({ file: rel, action: "remove-dir", reason: reason ?? "directory" });
|
|
42
|
+
// macOS may create .DS_Store while Finder or a launched host observes a
|
|
43
|
+
// root being rebuilt. Retry Node's documented transient recursive-delete
|
|
44
|
+
// errors (including ENOTEMPTY) rather than leaving an owned root half
|
|
45
|
+
// removed.
|
|
42
46
|
if (!dryRun)
|
|
43
|
-
rmSync(path, { recursive: true, force: true });
|
|
47
|
+
rmSync(path, { recursive: true, force: true, maxRetries: 3, retryDelay: 100 });
|
|
44
48
|
return true;
|
|
45
49
|
},
|
|
46
50
|
rmdirIfEmpty(rel) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-ops.js","sourceRoot":"","sources":["../../src/internal/file-ops.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"file-ops.js","sourceRoot":"","sources":["../../src/internal/file-ops.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/internal/platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/E,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,QAAQ,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CA0C9G,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/internal/platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/E,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,QAAQ,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CA0C9G,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAsH/D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAO3E,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAAc,EAAmD,CAAC;AAEhG,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,EAA0C,CAAC;AAEtG,eAAO,MAAM,aAAa;aACxB,MAAM,EAAE,WAAW;aACnB,MAAM,EAAE,WAAW;aACnB,QAAQ,EAAE,aAAa;aACvB,KAAK,EAAE,oBAAoB;aAC3B,UAAU,EAAE,aAAa;aACzB,IAAI,EAAE,aAAa;CACX,CAAC;AAqCX,0EAA0E;AAC1E,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAGlE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWrH;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAG1D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,cAAc,CASvE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,kBAAkB,CAE/E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/internal/platform.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/internal/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "enact-factory",
|
|
3
|
+
"version": "0.8.1",
|
|
4
|
+
"description": "Enact Factory governance plugin for Goal and Stage workflows, external judgment contracts, and MCP registration.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "amsterdamdatalabs"
|
|
7
|
+
},
|
|
8
|
+
"homepage": "https://amsterdamdatalabs.com",
|
|
9
|
+
"repository": "https://dev.azure.com/amsterdamdatalabs/enact/_git/enact-os",
|
|
10
|
+
"license": "UNLICENSED",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"enact-factory",
|
|
13
|
+
"governance",
|
|
14
|
+
"workitem",
|
|
15
|
+
"goal",
|
|
16
|
+
"stage",
|
|
17
|
+
"stage-verifier",
|
|
18
|
+
"loop-grader",
|
|
19
|
+
"pipeline",
|
|
20
|
+
"mcp"
|
|
21
|
+
],
|
|
22
|
+
"targets": [
|
|
23
|
+
"claude",
|
|
24
|
+
"codex",
|
|
25
|
+
"cursor",
|
|
26
|
+
"enact",
|
|
27
|
+
"kimi"
|
|
28
|
+
],
|
|
29
|
+
"skills": "./skills/",
|
|
30
|
+
"agents": "./agents/",
|
|
31
|
+
"references": "./references/",
|
|
32
|
+
"hooks": "./hooks/hooks.json",
|
|
33
|
+
"mcpServers": "./.mcp.json",
|
|
34
|
+
"validate": "node scripts/validate.mjs",
|
|
35
|
+
"interface": {
|
|
36
|
+
"displayName": "Enact Factory",
|
|
37
|
+
"shortDescription": "Factory MCP server and Goal/Stage governance skills for WorkItem and Azure DevOps delivery.",
|
|
38
|
+
"longDescription": "Orchestrator plugin. Owns non-binding local agents (architect, code-reviewer, critic, executor, explore, planner), Goal and Stage workflow skills, and distinct external judgment contracts: stage-verify for StageVerifier and loop-grade for LoopGrader. No bundled Codex agent is an independent judgment seat.",
|
|
39
|
+
"developerName": "amsterdamdatalabs",
|
|
40
|
+
"category": "Developer Tools",
|
|
41
|
+
"composerIcon": "./assets/icon.png",
|
|
42
|
+
"logo": "./assets/logo.png",
|
|
43
|
+
"capabilities": [
|
|
44
|
+
"model-agnostic agents",
|
|
45
|
+
"goal and stage workflow skills",
|
|
46
|
+
"external StageVerifier contract",
|
|
47
|
+
"external LoopGrader contract",
|
|
48
|
+
"mcp tools",
|
|
49
|
+
"workitem management",
|
|
50
|
+
"pipeline governance",
|
|
51
|
+
"azure devops ci/cd strategy"
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
"factory": {
|
|
55
|
+
"firstParty": true,
|
|
56
|
+
"operatorScope": "global"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name = "architect"
|
|
2
|
+
description = "Non-binding architectural review with evidence pointers for planning and external judgment briefings"
|
|
3
|
+
model = "gpt-5.6-sol"
|
|
4
|
+
claude_model = "opus"
|
|
5
|
+
cursor_model = "default"
|
|
6
|
+
model_reasoning_effort = "xhigh"
|
|
7
|
+
sandbox_mode = "danger-full-access"
|
|
8
|
+
tools = "Read, Grep, Glob, Bash"
|
|
9
|
+
developer_instructions = """
|
|
10
|
+
Agent definition: non-binding read-only architectural reviewer with evidence pointers.
|
|
11
|
+
|
|
12
|
+
Role:
|
|
13
|
+
- Read-only architectural reviewer.
|
|
14
|
+
- Diagnose root causes from code and docs already on disk.
|
|
15
|
+
- Produce architectural findings and a recommendation with concrete evidence pointers.
|
|
16
|
+
|
|
17
|
+
Rules:
|
|
18
|
+
- Never edit files.
|
|
19
|
+
- Never speculate when you can read the source.
|
|
20
|
+
- Cite exact file paths and line references for material claims.
|
|
21
|
+
- Call out tradeoffs, not just the favored direction.
|
|
22
|
+
- Never act as StageVerifier or LoopGrader, claim external independence, or call loop judgment and closure tools.
|
|
23
|
+
|
|
24
|
+
Output contract:
|
|
25
|
+
- status: ADVISORY
|
|
26
|
+
- recommendation: PROCEED, REVISE, or ESCALATE
|
|
27
|
+
- reasons: concise bullet list
|
|
28
|
+
- evidencePointers: file references
|
|
29
|
+
- tradeoffs: short list
|
|
30
|
+
"""
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name = "code-reviewer"
|
|
2
|
+
description = "Non-binding local diff review that prepares findings for an external StageVerifier"
|
|
3
|
+
model = "gpt-5.6-sol"
|
|
4
|
+
claude_model = "opus"
|
|
5
|
+
cursor_model = "default"
|
|
6
|
+
model_reasoning_effort = "xhigh"
|
|
7
|
+
sandbox_mode = "danger-full-access"
|
|
8
|
+
tools = "Read, Grep, Glob, Bash"
|
|
9
|
+
developer_instructions = """
|
|
10
|
+
Agent definition: non-binding local diff reviewer that prepares findings for external judgment.
|
|
11
|
+
|
|
12
|
+
Role:
|
|
13
|
+
- Review an implementation batch before external StageVerifier dispatch.
|
|
14
|
+
- Prioritize correctness, regressions, and missing verification over style.
|
|
15
|
+
|
|
16
|
+
Rules:
|
|
17
|
+
- Never edit files.
|
|
18
|
+
- Review only from the actual diff and surrounding code.
|
|
19
|
+
- Every finding must cite a file reference and explain impact.
|
|
20
|
+
- If no actionable issues remain, report that no local findings were found; do not emit a binding approval token.
|
|
21
|
+
- Never act as StageVerifier or LoopGrader, claim external independence, or call loop judgment and closure tools.
|
|
22
|
+
|
|
23
|
+
Output contract:
|
|
24
|
+
- status: ADVISORY
|
|
25
|
+
- findings: severity-ordered list with evidence
|
|
26
|
+
- residual_risks: optional short list
|
|
27
|
+
"""
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name = "critic"
|
|
2
|
+
description = "Non-binding adversarial debate participant for high-risk planning decisions"
|
|
3
|
+
model = "gpt-5.6-sol"
|
|
4
|
+
claude_model = "opus"
|
|
5
|
+
cursor_model = "default"
|
|
6
|
+
model_reasoning_effort = "xhigh"
|
|
7
|
+
sandbox_mode = "danger-full-access"
|
|
8
|
+
tools = "Read, Grep, Glob, Bash"
|
|
9
|
+
developer_instructions = """
|
|
10
|
+
Agent definition: non-binding adversarial debate participant for high-risk planning decisions.
|
|
11
|
+
|
|
12
|
+
Role:
|
|
13
|
+
- Attack weak assumptions in plans, proposals, and risky implementation choices.
|
|
14
|
+
- Operate as an adversarial reviewer, not a collaborator trying to be agreeable.
|
|
15
|
+
|
|
16
|
+
Rules:
|
|
17
|
+
- Never edit files.
|
|
18
|
+
- Surface the strongest counterargument first.
|
|
19
|
+
- Prefer concrete failure modes over vague concern language.
|
|
20
|
+
- When a decision looks sound, say that plainly instead of inventing objections.
|
|
21
|
+
- Never act as StageVerifier or LoopGrader, claim external independence, or call loop judgment and closure tools.
|
|
22
|
+
|
|
23
|
+
Round protocol:
|
|
24
|
+
1. Independent critique.
|
|
25
|
+
2. Cross-attack on the competing argument.
|
|
26
|
+
3. Defend, refine, or concede.
|
|
27
|
+
|
|
28
|
+
Output contract:
|
|
29
|
+
- position
|
|
30
|
+
- strongest_objections
|
|
31
|
+
- failure_modes
|
|
32
|
+
- concessions
|
|
33
|
+
- final_recommendation
|
|
34
|
+
- status: ADVISORY
|
|
35
|
+
"""
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name = "executor"
|
|
2
|
+
description = "Focused implementation worker for small, reviewable diffs with verification"
|
|
3
|
+
model = "gpt-5.6-luna"
|
|
4
|
+
claude_model = "sonnet"
|
|
5
|
+
cursor_model = "composer-2.5"
|
|
6
|
+
model_reasoning_effort = "high"
|
|
7
|
+
sandbox_mode = "danger-full-access"
|
|
8
|
+
developer_instructions = """
|
|
9
|
+
Agent definition: focused implementation worker for small, reviewable diffs with verification.
|
|
10
|
+
|
|
11
|
+
Role:
|
|
12
|
+
- Implement the requested change with the smallest viable diff.
|
|
13
|
+
- Run focused verification before claiming completion.
|
|
14
|
+
|
|
15
|
+
Rules:
|
|
16
|
+
- Stay inside the stated scope.
|
|
17
|
+
- Match existing code patterns.
|
|
18
|
+
- Do not add abstractions unless the code clearly needs them.
|
|
19
|
+
- Do not stop at code changes; include the verification result.
|
|
20
|
+
- Before dispatching or relaying work, require Factory's exact { planPath, sha256, approvedBy, approvedAt } approval record and rehash planPath; missing approval or byte drift is blocking.
|
|
21
|
+
- Preserve remote System.State verbatim with separate execution, review, and PR axes; unknown remote state blocks rather than mapping to a local status.
|
|
22
|
+
- If blocked after repeated failed attempts, report the blocker clearly.
|
|
23
|
+
|
|
24
|
+
Output contract:
|
|
25
|
+
- changes_made
|
|
26
|
+
- verification
|
|
27
|
+
- blockers_or_followups
|
|
28
|
+
"""
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
name = "explore"
|
|
2
|
+
description = "Codebase sweep agent for absolute-path findings and quote-friendly evidence"
|
|
3
|
+
model = "gpt-5.6-luna"
|
|
4
|
+
claude_model = "haiku"
|
|
5
|
+
cursor_model = "default"
|
|
6
|
+
model_reasoning_effort = "high"
|
|
7
|
+
sandbox_mode = "danger-full-access"
|
|
8
|
+
developer_instructions = """
|
|
9
|
+
Agent definition: codebase sweep agent for absolute-path findings and quote-friendly evidence.
|
|
10
|
+
|
|
11
|
+
Role:
|
|
12
|
+
- Find relevant files, symbols, and relationships quickly.
|
|
13
|
+
- Return enough context for another agent to act without repeating the search.
|
|
14
|
+
|
|
15
|
+
Rules:
|
|
16
|
+
- Never edit files.
|
|
17
|
+
- Use absolute paths in results.
|
|
18
|
+
- Prefer breadth first: search multiple relevant areas before narrowing.
|
|
19
|
+
- Explain how the files connect instead of returning a raw list.
|
|
20
|
+
|
|
21
|
+
Output contract:
|
|
22
|
+
- findings
|
|
23
|
+
- relationships
|
|
24
|
+
- recommended_next_step
|
|
25
|
+
"""
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name = "planner"
|
|
2
|
+
description = "Structured implementation planner that never writes production code"
|
|
3
|
+
model = "gpt-5.6-terra"
|
|
4
|
+
claude_model = "opus"
|
|
5
|
+
cursor_model = "default"
|
|
6
|
+
model_reasoning_effort = "xhigh"
|
|
7
|
+
sandbox_mode = "danger-full-access"
|
|
8
|
+
developer_instructions = """
|
|
9
|
+
Agent definition: structured implementation planner that never writes production code.
|
|
10
|
+
|
|
11
|
+
Role:
|
|
12
|
+
- Turn a goal into a small, reviewable execution plan with clear acceptance criteria.
|
|
13
|
+
- You do not implement code.
|
|
14
|
+
|
|
15
|
+
Rules:
|
|
16
|
+
- Never write production code.
|
|
17
|
+
- Prefer 3 to 6 concrete steps.
|
|
18
|
+
- Include dependencies, risks, and verification expectations.
|
|
19
|
+
- After authorized review, emit the Factory-owned approval record exactly as { planPath, sha256, approvedBy, approvedAt }; sha256 is the exact plan-byte digest and changes invalidate approval.
|
|
20
|
+
- For board effects, preserve remote System.State verbatim, model execution, review, and PR as separate axes, and mark unknown remote states blocking.
|
|
21
|
+
- Escalate unresolved product-direction choices instead of guessing.
|
|
22
|
+
|
|
23
|
+
Output contract:
|
|
24
|
+
- plan_summary
|
|
25
|
+
- steps
|
|
26
|
+
- acceptance_criteria
|
|
27
|
+
- risks_and_open_questions
|
|
28
|
+
- plan_approval_record
|
|
29
|
+
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "enact-repo",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"description": "Baseline agent setup for any repository: the full Enact skill catalog plus guard, briefing, and code-review-graph hooks and MCP tooling, installed at repo scope.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "amsterdamdatalabs"
|
|
@@ -25,6 +25,9 @@
|
|
|
25
25
|
"opencode"
|
|
26
26
|
],
|
|
27
27
|
"skills": "./skills/",
|
|
28
|
+
"profileSources": [
|
|
29
|
+
"enact-factory"
|
|
30
|
+
],
|
|
28
31
|
"hooks": "./hooks/hooks.json",
|
|
29
32
|
"mcpServers": "./.mcp.json",
|
|
30
33
|
"assets": [
|
|
@@ -14,6 +14,10 @@ not global/user install — see `factory.operatorScope: "project"` in
|
|
|
14
14
|
- `skills/` — the full first-party Enact skill catalog (38 skills, copied verbatim from
|
|
15
15
|
`enact-m5`'s `.agents/skill-catalog/`), covering debugging, refactors, TDD, code review,
|
|
16
16
|
research, orchestration, and more.
|
|
17
|
+
- `profileSources` — the six canonical profiles declared by sibling `enact-factory`:
|
|
18
|
+
`architect`, `code-reviewer`, `critic`, `executor`, `explore`, and `planner`. Their TOML
|
|
19
|
+
sources remain in `extensions/enact-factory/agents/`; `enact-repo` projects them into each
|
|
20
|
+
host's documented native project directory rather than carrying copied profile bodies.
|
|
17
21
|
- `.mcp.json` — `code-review-graph` (`crg serve`), `lean-ctx` (stdio passthrough to
|
|
18
22
|
`lean-ctx mcp`, run via `enact-hook lean-ctx mcp` so repo-local `LEAN_CTX_*` dirs are
|
|
19
23
|
resolved at runtime from `cwd`), and `azure-devops` (`azure-devops-mcp`) MCP servers.
|
|
@@ -77,6 +81,10 @@ install is reconciliation, not enrollment. The command writes direct native proj
|
|
|
77
81
|
`.opencode/agents` and `.opencode/skills`. It also writes each host's
|
|
78
82
|
native MCP and hook configuration where supported. It never writes a plugin root, marketplace,
|
|
79
83
|
or plugin registration.
|
|
84
|
+
For every selected host it also projects the declared Factory profiles: Claude, Cursor, Kimi,
|
|
85
|
+
and OpenCode receive Markdown under their native `agents/` directory; Codex receives canonical
|
|
86
|
+
TOML under `.codex/agents/`. The source declaration is validated at install time and an invalid,
|
|
87
|
+
missing, symlinked, or colliding profile source stops reconciliation before owned roots change.
|
|
80
88
|
Kimi hooks are global-only and are installed by `enact-vps`, not by this bundle. OpenCode's
|
|
81
89
|
process-level hook carrier is separate from this repo-local installer; OpenCode bundles always
|
|
82
90
|
install their native local files and remove legacy plugin roots. The installer rebuilds the owned
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amsterdamdatalabs/enact-extensions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.61",
|
|
4
4
|
"description": "Create and validate Enact multi-platform plugin manifests",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
"scripts/enact-extensions.mjs",
|
|
20
20
|
"scripts/lib",
|
|
21
21
|
"extensions/enact-repo",
|
|
22
|
+
"extensions/enact-factory/.agents/plugin.json",
|
|
23
|
+
"extensions/enact-factory/agents",
|
|
22
24
|
"extensions/enact-loop"
|
|
23
25
|
],
|
|
24
26
|
"publishConfig": {
|
|
@@ -232,8 +232,9 @@ try {
|
|
|
232
232
|
if (!report.lock.valid) {
|
|
233
233
|
if (report.lock.missingFiles.length) console.log(` missing: ${report.lock.missingFiles.join(", ")}`);
|
|
234
234
|
if (report.lock.driftedFiles.length) console.log(` drifted: ${report.lock.driftedFiles.join(", ")}`);
|
|
235
|
-
if (report.lock.jsonIssues.length) console.log(` json: ${report.lock.jsonIssues.join(", ")}`);
|
|
236
235
|
if (report.lock.tomlIssues.length) console.log(` toml: ${report.lock.tomlIssues.join(", ")}`);
|
|
236
|
+
if (report.lock.symlinkIssues.length) console.log(` symlink: ${report.lock.symlinkIssues.join(", ")}`);
|
|
237
|
+
if (report.lock.rootIssues.length) console.log(` owned root: ${report.lock.rootIssues.join(", ")}`);
|
|
237
238
|
}
|
|
238
239
|
|
|
239
240
|
for (const [host, info] of Object.entries(report.hosts)) {
|
|
@@ -363,7 +363,13 @@ function checkLockIntegrity(repo, name, lock) {
|
|
|
363
363
|
rootIssues.push(`${rel} (foreign directory)`);
|
|
364
364
|
return;
|
|
365
365
|
}
|
|
366
|
-
for (const entry of readdirSync(path, { withFileTypes: true }))
|
|
366
|
+
for (const entry of readdirSync(path, { withFileTypes: true })) {
|
|
367
|
+
// Finder can recreate this metadata immediately after an authoritative
|
|
368
|
+
// install removes it. It is never installer-owned output, so doctor
|
|
369
|
+
// must not report an OS-generated entry as a managed-root violation.
|
|
370
|
+
if (entry.name === ".DS_Store") continue;
|
|
371
|
+
visit(`${rel}/${entry.name}`);
|
|
372
|
+
}
|
|
367
373
|
};
|
|
368
374
|
if (existsSync(abs(repo, root))) visit(root);
|
|
369
375
|
}
|
|
@@ -297,6 +297,76 @@ export function parseRepoHosts(host, manifest) {
|
|
|
297
297
|
return REPO_HOSTS.filter((h) => parts.includes(h));
|
|
298
298
|
}
|
|
299
299
|
|
|
300
|
+
function safeDeclaredProfileSource(name, manifestPath) {
|
|
301
|
+
if (typeof name !== "string" || !/^[a-z][a-z0-9-]*$/.test(name)) {
|
|
302
|
+
throw new Error(`${manifestPath} profileSources entries must be plugin names`);
|
|
303
|
+
}
|
|
304
|
+
return name;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
function assertRegularProfileSourceDirectory(path, label) {
|
|
308
|
+
const state = lstatSync(path, { throwIfNoEntry: false });
|
|
309
|
+
if (!state?.isDirectory() || state.isSymbolicLink()) {
|
|
310
|
+
throw new Error(`${label} must be a regular, non-symlink directory: ${path}`);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
function assertRegularProfileSourceFile(path, label) {
|
|
315
|
+
const state = lstatSync(path, { throwIfNoEntry: false });
|
|
316
|
+
if (!state?.isFile() || state.isSymbolicLink()) {
|
|
317
|
+
throw new Error(`${label} must be a regular, non-symlink file: ${path}`);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
function assertRegularProfileSourceTree(path) {
|
|
322
|
+
assertRegularProfileSourceDirectory(path, "profile source agents directory");
|
|
323
|
+
for (const entry of readdirSync(path, { withFileTypes: true })) {
|
|
324
|
+
const child = join(path, entry.name);
|
|
325
|
+
const state = lstatSync(child, { throwIfNoEntry: false });
|
|
326
|
+
if (state?.isSymbolicLink()) {
|
|
327
|
+
throw new Error(`profile source agent entry must not be a symlink: ${child}`);
|
|
328
|
+
}
|
|
329
|
+
if (state?.isDirectory()) {
|
|
330
|
+
assertRegularProfileSourceTree(child);
|
|
331
|
+
} else if (!state?.isFile()) {
|
|
332
|
+
throw new Error(`profile source agent entry must be a regular file: ${child}`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
function declaredProfileAgentDirs(pluginRoot, manifest, manifestPath) {
|
|
338
|
+
if (manifest.profileSources === undefined) return [];
|
|
339
|
+
if (!Array.isArray(manifest.profileSources) || manifest.profileSources.length === 0) {
|
|
340
|
+
throw new Error(`${manifestPath} profileSources must be a non-empty array of plugin names`);
|
|
341
|
+
}
|
|
342
|
+
const names = manifest.profileSources.map((name) => safeDeclaredProfileSource(name, manifestPath));
|
|
343
|
+
if (new Set(names).size !== names.length) throw new Error(`${manifestPath} profileSources must not repeat a plugin`);
|
|
344
|
+
|
|
345
|
+
return names.map((name) => {
|
|
346
|
+
const sourceRoot = resolve(pluginRoot, "..", name);
|
|
347
|
+
assertRegularProfileSourceDirectory(sourceRoot, "profile source root");
|
|
348
|
+
const sourceAgentsMetaDir = join(sourceRoot, ".agents");
|
|
349
|
+
assertRegularProfileSourceDirectory(sourceAgentsMetaDir, "profile source manifest directory");
|
|
350
|
+
const sourceManifestPath = join(sourceRoot, ".agents", "plugin.json");
|
|
351
|
+
assertRegularProfileSourceFile(sourceManifestPath, "profile source manifest");
|
|
352
|
+
const sourceManifest = readJsonStrict(sourceManifestPath, sourceManifestPath);
|
|
353
|
+
if (sourceManifest.name !== name) {
|
|
354
|
+
throw new Error(`${sourceManifestPath} must declare name ${JSON.stringify(name)}`);
|
|
355
|
+
}
|
|
356
|
+
const rawAgents = sourceManifest.agents;
|
|
357
|
+
if (typeof rawAgents !== "string" || !rawAgents.trim()) {
|
|
358
|
+
throw new Error(`${sourceManifestPath} must declare agents for profile source ${name}`);
|
|
359
|
+
}
|
|
360
|
+
const agentsRel = rawAgents.trim().replace(/^\.\//, "").replace(/\/+$/, "");
|
|
361
|
+
if (isAbsolute(agentsRel) || agentsRel.split("/").includes("..")) {
|
|
362
|
+
throw new Error(`${sourceManifestPath} agents must be a safe plugin-relative path`);
|
|
363
|
+
}
|
|
364
|
+
const agentsDir = resolve(sourceRoot, agentsRel);
|
|
365
|
+
assertRegularProfileSourceTree(agentsDir);
|
|
366
|
+
return { name, agentsDir };
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
|
|
300
370
|
export function readBundle(pluginRoot) {
|
|
301
371
|
const manifestPath = join(pluginRoot, ".agents", "plugin.json");
|
|
302
372
|
if (!existsSync(manifestPath)) {
|
|
@@ -322,6 +392,7 @@ export function readBundle(pluginRoot) {
|
|
|
322
392
|
name: manifest.name,
|
|
323
393
|
version: typeof manifest.version === "string" ? manifest.version : "0.0.0",
|
|
324
394
|
skillsDir: component("skills"),
|
|
395
|
+
profileAgentDirs: declaredProfileAgentDirs(pluginRoot, manifest, manifestPath),
|
|
325
396
|
hooks: hooksPath ? readJsonStrict(hooksPath, hooksPath) : null,
|
|
326
397
|
mcpServers,
|
|
327
398
|
};
|
|
@@ -395,23 +466,30 @@ function addNativeSkills(plan, bundle, host) {
|
|
|
395
466
|
});
|
|
396
467
|
}
|
|
397
468
|
|
|
398
|
-
function addNativeAgents(plan, pluginRoot, host) {
|
|
399
|
-
const
|
|
400
|
-
|
|
469
|
+
function addNativeAgents(plan, bundle, pluginRoot, host) {
|
|
470
|
+
const sources = [join(pluginRoot, "agents"), ...bundle.profileAgentDirs.map(({ agentsDir }) => agentsDir)].filter(
|
|
471
|
+
(source) => existsSync(source),
|
|
472
|
+
);
|
|
401
473
|
const targetRel = HOST_AGENTS_DIR[host];
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
474
|
+
for (const source of sources) {
|
|
475
|
+
stageDir(`enact-repo-${host}-agents-`, (staging) => {
|
|
476
|
+
const target = join(staging, "agents");
|
|
477
|
+
projectNativeAgentsDir(source, target, host);
|
|
478
|
+
for (const rel of listFilesRecursive(target)) {
|
|
479
|
+
const targetPath = `${targetRel}/${rel}`;
|
|
480
|
+
if (plan.files.has(targetPath)) {
|
|
481
|
+
throw new Error(`Native ${host} agent collision at ${targetPath}; profile sources must have distinct names`);
|
|
482
|
+
}
|
|
483
|
+
plan.files.set(targetPath, readFileSync(join(target, rel)));
|
|
484
|
+
}
|
|
485
|
+
});
|
|
486
|
+
}
|
|
409
487
|
}
|
|
410
488
|
|
|
411
489
|
// Host adapters write only documented native project files.
|
|
412
490
|
const HOST_ADAPTERS = {
|
|
413
491
|
claude(plan, bundle, pluginRoot) {
|
|
414
|
-
addNativeAgents(plan, pluginRoot, "claude");
|
|
492
|
+
addNativeAgents(plan, bundle, pluginRoot, "claude");
|
|
415
493
|
addNativeSkills(plan, bundle, "claude");
|
|
416
494
|
const mcp = jsonMerge(plan, ".mcp.json");
|
|
417
495
|
for (const [name, def] of Object.entries(bundle.mcpServers))
|
|
@@ -425,7 +503,7 @@ const HOST_ADAPTERS = {
|
|
|
425
503
|
},
|
|
426
504
|
|
|
427
505
|
codex(plan, bundle, pluginRoot) {
|
|
428
|
-
addNativeAgents(plan, pluginRoot, "codex");
|
|
506
|
+
addNativeAgents(plan, bundle, pluginRoot, "codex");
|
|
429
507
|
addNativeSkills(plan, bundle, "codex");
|
|
430
508
|
if (Object.keys(bundle.mcpServers).length > 0) plan.toml.set(".codex/config.toml", { tables: bundle.mcpServers });
|
|
431
509
|
if (bundle.hooks) {
|
|
@@ -444,7 +522,7 @@ const HOST_ADAPTERS = {
|
|
|
444
522
|
},
|
|
445
523
|
|
|
446
524
|
cursor(plan, bundle, pluginRoot) {
|
|
447
|
-
addNativeAgents(plan, pluginRoot, "cursor");
|
|
525
|
+
addNativeAgents(plan, bundle, pluginRoot, "cursor");
|
|
448
526
|
addNativeSkills(plan, bundle, "cursor");
|
|
449
527
|
if (bundle.hooks) {
|
|
450
528
|
const dropped = unmappedCursorHookEvents(bundle.hooks);
|
|
@@ -470,7 +548,7 @@ const HOST_ADAPTERS = {
|
|
|
470
548
|
},
|
|
471
549
|
|
|
472
550
|
kimi(plan, bundle, pluginRoot) {
|
|
473
|
-
addNativeAgents(plan, pluginRoot, "kimi");
|
|
551
|
+
addNativeAgents(plan, bundle, pluginRoot, "kimi");
|
|
474
552
|
addNativeSkills(plan, bundle, "kimi");
|
|
475
553
|
const mcp = jsonMerge(plan, ".kimi-code/mcp.json");
|
|
476
554
|
for (const [name, def] of Object.entries(bundle.mcpServers)) {
|
|
@@ -479,7 +557,7 @@ const HOST_ADAPTERS = {
|
|
|
479
557
|
},
|
|
480
558
|
|
|
481
559
|
opencode(plan, bundle, pluginRoot) {
|
|
482
|
-
addNativeAgents(plan, pluginRoot, "opencode");
|
|
560
|
+
addNativeAgents(plan, bundle, pluginRoot, "opencode");
|
|
483
561
|
addNativeSkills(plan, bundle, "opencode");
|
|
484
562
|
const mcp = jsonMerge(plan, "opencode.json");
|
|
485
563
|
for (const [name, def] of Object.entries(deriveOpenCodeMcp({ mcpServers: bundle.mcpServers }).mcp)) {
|
package/spec/enact.json
CHANGED
|
@@ -70,6 +70,15 @@
|
|
|
70
70
|
"description": "Relative path to the agents directory.",
|
|
71
71
|
"default": "./agents/"
|
|
72
72
|
},
|
|
73
|
+
"profileSources": {
|
|
74
|
+
"type": "array",
|
|
75
|
+
"description": "Named sibling plugins whose declared canonical agents directories are projected as native repo-local profiles by this bundle. This installer-only field is omitted from host manifests.",
|
|
76
|
+
"items": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"pattern": "^[a-z][a-z0-9-]*$"
|
|
79
|
+
},
|
|
80
|
+
"uniqueItems": true
|
|
81
|
+
},
|
|
73
82
|
"commands": {
|
|
74
83
|
"type": "string",
|
|
75
84
|
"description": "Relative path to the commands directory (flat Markdown files).",
|