@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.
@@ -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,CA+EzF"}
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,CAqH/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
+ {"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"}
@@ -56,6 +56,7 @@ export const MANIFEST_FIELDS = {
56
56
  "targets",
57
57
  "skills",
58
58
  "agents",
59
+ "profileSources",
59
60
  "commands",
60
61
  "hooks",
61
62
  "mcpServers",
@@ -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.9",
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.57",
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 })) visit(`${rel}/${entry.name}`);
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 source = join(pluginRoot, "agents");
400
- if (!existsSync(source)) return;
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
- stageDir(`enact-repo-${host}-agents-`, (staging) => {
403
- const target = join(staging, "agents");
404
- projectNativeAgentsDir(source, target, host);
405
- for (const rel of listFilesRecursive(target)) {
406
- plan.files.set(`${targetRel}/${rel}`, readFileSync(join(target, rel)));
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).",