@amsterdamdatalabs/enact-extensions 0.1.10 → 0.1.24
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 +11 -12
- package/dist/create/claude.d.ts.map +1 -1
- package/dist/create/claude.js +6 -2
- package/dist/create/claude.js.map +1 -1
- package/dist/create/cursor.d.ts.map +1 -1
- package/dist/create/cursor.js +6 -2
- package/dist/create/cursor.js.map +1 -1
- package/dist/create/enact.js +1 -1
- package/dist/create/enact.js.map +1 -1
- package/dist/create/index.d.ts +4 -3
- package/dist/create/index.d.ts.map +1 -1
- package/dist/create/index.js +9 -2
- package/dist/create/index.js.map +1 -1
- package/dist/index.d.ts +9 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts +5 -0
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +91 -11
- package/dist/install.js.map +1 -1
- package/dist/internal/agents.d.ts +25 -1
- package/dist/internal/agents.d.ts.map +1 -1
- package/dist/internal/agents.js +81 -4
- package/dist/internal/agents.js.map +1 -1
- package/dist/internal/claude.d.ts +49 -0
- package/dist/internal/claude.d.ts.map +1 -1
- package/dist/internal/claude.js +166 -1
- package/dist/internal/claude.js.map +1 -1
- package/dist/internal/platform.d.ts +11 -1
- package/dist/internal/platform.d.ts.map +1 -1
- package/dist/internal/platform.js +58 -1
- package/dist/internal/platform.js.map +1 -1
- package/dist/internal/types.d.ts +2 -1
- package/dist/internal/types.d.ts.map +1 -1
- package/dist/principles.d.ts +28 -0
- package/dist/principles.d.ts.map +1 -0
- package/dist/principles.js +159 -0
- package/dist/principles.js.map +1 -0
- package/extensions/dev-state/.agents/plugin.json +2 -1
- package/extensions/enact-context/.agents/plugin.json +2 -1
- package/extensions/enact-context/hooks/hooks.json +0 -10
- package/extensions/enact-context/skills/enact-context/SKILL.md +14 -12
- package/extensions/enact-context/skills/enact-context/scripts/install.sh +7 -7
- package/extensions/enact-core/.agents/plugin.json +2 -1
- package/extensions/enact-core/OPERATING-PRINCIPLES.md +7 -0
- package/extensions/enact-core/hooks/hooks.json +12 -0
- package/extensions/enact-evolve/.agents/plugin.json +47 -0
- package/extensions/enact-evolve/agents/evolve-session-analyst.toml +37 -0
- package/extensions/enact-evolve/skills/session-analysis/SKILL.md +98 -0
- package/extensions/enact-evolve/skills/session-analysis/scripts/run-evolve-analysis.sh +343 -0
- package/extensions/enact-factory/.agents/plugin.json +2 -1
- package/extensions/enact-factory/agents/architect.toml +9 -5
- package/extensions/enact-factory/agents/code-reviewer.toml +9 -5
- package/extensions/enact-factory/agents/critic.toml +9 -5
- package/extensions/enact-factory/agents/executor.toml +4 -1
- package/extensions/enact-factory/agents/explore.toml +4 -1
- package/extensions/enact-factory/agents/planner.toml +4 -1
- package/extensions/enact-factory/agents/verifier.toml +9 -5
- package/extensions/enact-factory/skills/advisor/SKILL.md +82 -0
- package/extensions/enact-factory/skills/ai-slop-cleaner/SKILL.md +6 -1
- package/extensions/enact-factory/skills/autonomous-runner/SKILL.md +347 -0
- package/extensions/enact-factory/skills/azdo-ci-strategy/SKILL.md +62 -15
- package/extensions/enact-factory/skills/committee/SKILL.md +80 -0
- package/extensions/enact-factory/skills/deep-interview/SKILL.md +9 -13
- package/extensions/enact-factory/skills/drive-loop/SKILL.md +161 -31
- package/extensions/enact-factory/skills/drive-loop/references/contract-schema.md +26 -6
- package/extensions/enact-factory/skills/handoff/SKILL.md +72 -0
- package/extensions/enact-factory/skills/hyperplan/SKILL.md +11 -3
- package/extensions/enact-factory/skills/looplan/SKILL.md +34 -17
- package/extensions/enact-factory/skills/plan/SKILL.md +40 -8
- package/extensions/enact-factory/skills/remove-deadcode/SKILL.md +6 -1
- package/extensions/enact-factory/skills/research/SKILL.md +14 -4
- package/extensions/enact-factory/skills/review/SKILL.md +21 -2
- package/extensions/enact-factory/skills/security-research/SKILL.md +5 -2
- package/extensions/enact-factory/skills/tdd/SKILL.md +7 -1
- package/extensions/enact-factory/skills/testing-strategy/SKILL.md +5 -0
- package/extensions/enact-factory/skills/trace/SKILL.md +5 -0
- package/extensions/enact-factory/skills/ultraqa/SKILL.md +21 -15
- package/extensions/enact-factory/skills/work-with-workitem/SKILL.md +5 -0
- package/extensions/enact-factory/skills/workitem-triage/SKILL.md +5 -0
- package/extensions/enact-loop/.agents/plugin.json +5 -4
- package/extensions/enact-loop/scripts/validate.mjs +123 -0
- package/extensions/enact-loop/skills/enact-loop/SKILL.md +189 -30
- package/extensions/enact-wiki/.agents/plugin.json +2 -1
- package/extensions/net-revenue-management/.agents/plugin.json +2 -1
- package/extensions/plugin-dev/.agents/plugin.json +2 -1
- package/extensions/plugin-dev/skills/start/SKILL.md +3 -3
- package/package.json +1 -1
- package/scripts/check-hooks.mjs +5 -5
- package/scripts/check-principles.mjs +19 -4
- package/scripts/enact-extensions.mjs +237 -90
- package/scripts/lib/hooks.mjs +61 -217
- package/scripts/lib/migrate-artifacts.mjs +144 -0
- package/scripts/lib/principles.mjs +109 -0
- package/scripts/lib/provision-mcp.mjs +1 -1
- package/scripts/lib/run-install.mjs +72 -2
- package/scripts/lib/run-prune.mjs +23 -2
- package/scripts/lib/run-sync.mjs +4 -1
- package/scripts/postinstall.mjs +6 -6
- package/scripts/setup-enact-context.sh +20 -15
- package/spec/codex.json +5 -0
- package/spec/enact.json +3 -3
- package/spec/enact.md +1 -4
- package/spec/index.json +1 -1
- package/extensions/enact-operator/.agents/plugin.json +0 -56
- package/extensions/enact-operator/.app.json +0 -3
- package/extensions/enact-operator/.mcp.json +0 -10
- package/extensions/enact-operator/_taxonomy.md +0 -86
- package/extensions/enact-operator/agents/README.md +0 -5
- package/extensions/enact-operator/agents/architect.toml +0 -25
- package/extensions/enact-operator/agents/code-reviewer.toml +0 -24
- package/extensions/enact-operator/agents/critic.toml +0 -30
- package/extensions/enact-operator/agents/executor.toml +0 -24
- package/extensions/enact-operator/agents/explore.toml +0 -23
- package/extensions/enact-operator/agents/planner.toml +0 -24
- package/extensions/enact-operator/agents/verifier.toml +0 -24
- package/extensions/enact-operator/docs/skill-variants.md +0 -44
- package/extensions/enact-operator/hooks/hooks.json +0 -91
- package/extensions/enact-operator/skills/ai-slop-cleaner/SKILL.md +0 -50
- package/extensions/enact-operator/skills/analyze/SKILL.md +0 -91
- package/extensions/enact-operator/skills/ask/SKILL.md +0 -47
- package/extensions/enact-operator/skills/autopilot/SKILL.md +0 -170
- package/extensions/enact-operator/skills/autoresearch-goal/SKILL.md +0 -79
- package/extensions/enact-operator/skills/cancel/SKILL.md +0 -99
- package/extensions/enact-operator/skills/configure-notifications/SKILL.md +0 -77
- package/extensions/enact-operator/skills/deep-interview/SKILL.md +0 -80
- package/extensions/enact-operator/skills/doctor/SKILL.md +0 -48
- package/extensions/enact-operator/skills/hud/SKILL.md +0 -49
- package/extensions/enact-operator/skills/hyperplan/SKILL.md +0 -47
- package/extensions/enact-operator/skills/plan/SKILL.md +0 -78
- package/extensions/enact-operator/skills/ralph/SKILL.md +0 -201
- package/extensions/enact-operator/skills/ralph/gemini.md +0 -18
- package/extensions/enact-operator/skills/ralplan/SKILL.md +0 -151
- package/extensions/enact-operator/skills/remove-deadcode/SKILL.md +0 -45
- package/extensions/enact-operator/skills/research/SKILL.md +0 -74
- package/extensions/enact-operator/skills/review/SKILL.md +0 -58
- package/extensions/enact-operator/skills/security-research/SKILL.md +0 -54
- package/extensions/enact-operator/skills/setup/SKILL.md +0 -91
- package/extensions/enact-operator/skills/setup/scripts/install.sh +0 -50
- package/extensions/enact-operator/skills/skill/SKILL.md +0 -82
- package/extensions/enact-operator/skills/tdd/SKILL.md +0 -59
- package/extensions/enact-operator/skills/team/SKILL.md +0 -199
- package/extensions/enact-operator/skills/trace/SKILL.md +0 -41
- package/extensions/enact-operator/skills/ultragoal/SKILL.md +0 -99
- package/extensions/enact-operator/skills/ultraqa/SKILL.md +0 -113
- package/extensions/enact-operator/skills/ultrawork/SKILL.md +0 -145
- package/extensions/enact-operator/skills/ultrawork/planner.md +0 -28
- package/extensions/enact-operator/skills/wiki/SKILL.md +0 -41
- package/extensions/enact-operator/skills/work-with-workitem/SKILL.md +0 -51
- /package/extensions/{enact-operator → enact-evolve}/assets/icon.png +0 -0
- /package/extensions/{enact-operator → enact-evolve}/assets/logo.png +0 -0
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ This repo is the manifest tooling package (`@amsterdamdatalabs/enact-extensions`
|
|
|
12
12
|
|
|
13
13
|
- `spec/` — JSON schemas (canonical: `enact.json`) + per-host schemas (`claude-plugin.json`, `codex-plugin.json`, `cursor-plugin.json`) + `index.json` (discovery index schema)
|
|
14
14
|
- `src/` — `create/*`, `validate/*`, and `install` TypeScript library
|
|
15
|
-
- `scripts/` — CLI: `enact-extensions` (`validate` | `sync` | `install` | `uninstall` | `list` | `index` | `log` | `outdated` | `update` | `serve
|
|
15
|
+
- `scripts/` — CLI: `enact-extensions` (`validate` | `sync` | `install` | `uninstall` | `list` | `index` | `log` | `outdated` | `update` | `serve`, path defaults to cwd)
|
|
16
16
|
- `extensions/<plugin>/` — one self-contained bundle per plugin (e.g. `plugin-dev`, `cmux`, `devops`, `dev-state`, `net-revenue-management`), each with a canonical `.agents/plugin.json` + skills/agents/hooks
|
|
17
17
|
- `web/` — vendored ADL design assets (`web/assets/tokens/*.css`, `web/assets/logo-*.png`) + `web/index.html` (the management UI served by `serve`)
|
|
18
18
|
|
|
@@ -88,10 +88,9 @@ node scripts/enact-extensions.mjs update --all
|
|
|
88
88
|
node scripts/enact-extensions.mjs update net-revenue-management
|
|
89
89
|
node scripts/enact-extensions.mjs update --all --dry-run
|
|
90
90
|
|
|
91
|
-
# Install the
|
|
92
|
-
node scripts/enact-extensions.mjs
|
|
93
|
-
node scripts/enact-extensions.mjs
|
|
94
|
-
node scripts/enact-extensions.mjs hooks setup --all --remove
|
|
91
|
+
# Install/update enact-core so the drift-check hook is bundle-owned
|
|
92
|
+
node scripts/enact-extensions.mjs install enact-core --platform all
|
|
93
|
+
node scripts/enact-extensions.mjs install enact-core --platform claude,codex
|
|
95
94
|
|
|
96
95
|
# Start the localhost management UI + API
|
|
97
96
|
node scripts/enact-extensions.mjs serve
|
|
@@ -108,7 +107,7 @@ enact-extensions validate
|
|
|
108
107
|
enact-extensions sync
|
|
109
108
|
```
|
|
110
109
|
|
|
111
|
-
Subcommands: `validate` | `sync` | `install` | `uninstall` | `list` | `index` | `log` | `outdated` | `update` | `serve
|
|
110
|
+
Subcommands: `validate` | `sync` | `install` | `uninstall` | `list` | `index` | `log` | `outdated` | `update` | `serve`.
|
|
112
111
|
|
|
113
112
|
Link locally:
|
|
114
113
|
|
|
@@ -123,9 +122,9 @@ The freshness loop keeps installed plugins in sync with their canonical source w
|
|
|
123
122
|
1. **Install records a content hash** — `enact-extensions install` writes a sha256 hash of the canonical bundle into the ledger entry alongside the version.
|
|
124
123
|
2. **`outdated` detects drift per surface** — compares the recorded hash against the current canonical source hash for each `(plugin, surface)` pair. Status values: `fresh` / `outdated` / `orphaned`. Exit 0 always (report only).
|
|
125
124
|
3. **`update` refreshes the installed surfaces** — driven by the ledger; only the surfaces a plugin is actually installed on are updated. `--all` refreshes every outdated surface; `<name>` refreshes that plugin's outdated surfaces; `--dry-run` shows what would change without touching anything.
|
|
126
|
-
4. **Session-start hook (optional)** — `enact-
|
|
125
|
+
4. **Session-start hook (optional)** — `enact-core` owns the advisory `SessionStart` hook (`enact-extensions hook session-start`). Installing `enact-core` on a surface makes the drift check bundle-owned and removes stale pre-bundle standalone drift-hook entries there.
|
|
127
126
|
|
|
128
|
-
**npm postinstall
|
|
127
|
+
**npm postinstall:** when you `npm install @amsterdamdatalabs/enact-extensions` in an interactive terminal, a TTY-aware postinstall script installs `enact-core` on all host surfaces. In non-interactive terminals and CI environments it prints a one-line notice (`Run enact-extensions install enact-core --platform all …`) and exits immediately — it never blocks installs or hangs pipelines.
|
|
129
128
|
|
|
130
129
|
## Web UI (`serve`)
|
|
131
130
|
|
|
@@ -146,18 +145,18 @@ enact-extensions log --json # raw JSON array
|
|
|
146
145
|
|
|
147
146
|
```text
|
|
148
147
|
enact-extensions/ # @amsterdamdatalabs/enact-extensions package root
|
|
149
|
-
├── src/ spec/ scripts/ # manifest library + CLI (validate | sync | install | uninstall | list | index | log | outdated | update | serve
|
|
148
|
+
├── src/ spec/ scripts/ # manifest library + CLI (validate | sync | install | uninstall | list | index | log | outdated | update | serve)
|
|
150
149
|
├── web/ # management UI — web/index.html + web/assets/tokens/*.css + web/assets/logo-*.png
|
|
151
150
|
├── generated/ # gitignored — local discovery artifacts (e.g. index.json)
|
|
152
151
|
└── extensions/ # self-contained plugin bundles
|
|
153
152
|
├── plugin-dev/ # plugin authoring toolkit
|
|
154
153
|
├── cmux/ devops/ dev-state/ # first-party skill bundles
|
|
155
|
-
├── enact-context/ enact-factory/ enact-loop/ enact-
|
|
154
|
+
├── enact-context/ enact-factory/ enact-loop/ enact-wiki/
|
|
156
155
|
└── net-revenue-management/ # product and platform bundles
|
|
157
156
|
```
|
|
158
157
|
|
|
159
158
|
## enact-os integration
|
|
160
159
|
|
|
161
|
-
`enact-os` submodules **this** repo at `enact-extensions/` for manifest tooling, and separately submodules the product packages (`enact-context`, `enact-factory`, `enact-
|
|
160
|
+
`enact-os` submodules **this** repo at `enact-extensions/` for manifest tooling, and separately submodules the product packages (`enact-context`, `enact-factory`, `enact-wiki`) at top level. Factory and config paths in `enact-os/config.toml` target each product package by its top-level path.
|
|
162
161
|
|
|
163
|
-
Host plugin delivery now lives in this repo for the shipped bundles under `extensions/`, including `enact-context`, `enact-factory`, `enact-loop`,
|
|
162
|
+
Host plugin delivery now lives in this repo for the shipped bundles under `extensions/`, including `enact-context`, `enact-factory`, `enact-loop`, and `enact-wiki`. **enact-loop is the default/recommended loop and contract-runner product.** Product runtimes still live in their own repos; use `enact-extensions install <name> --platform <surface>` for host registration, while repo-local commands such as `enact-factory setup` or `enact-factory plugins delivery` persist local runtime state.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/create/claude.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/create/claude.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAgB1E"}
|
package/dist/create/claude.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
import { MANIFEST_FIELDS } from "../internal/platform.js";
|
|
1
|
+
import { MANIFEST_FIELDS, stripDefaultPathFields } from "../internal/platform.js";
|
|
2
2
|
import { pickManifestFields, withPlatformKeyword } from "../internal/pick.js";
|
|
3
3
|
export function deriveClaudeManifest(enact) {
|
|
4
4
|
const picked = pickManifestFields(enact, MANIFEST_FIELDS.claude);
|
|
5
|
-
|
|
5
|
+
const manifest = {
|
|
6
6
|
...picked,
|
|
7
7
|
description: (typeof picked.description === "string" ? picked.description : undefined) ??
|
|
8
8
|
`${enact.name} plugin for Claude Code.`,
|
|
9
9
|
keywords: withPlatformKeyword(Array.isArray(picked.keywords) ? picked.keywords : undefined, "claude"),
|
|
10
10
|
};
|
|
11
|
+
// Claude auto-discovers skills/agents/hooks/mcpServers from default dirs.
|
|
12
|
+
// Listing those default paths breaks install (Duplicate hooks / Invalid
|
|
13
|
+
// input), so omit them; non-default overrides are kept.
|
|
14
|
+
return stripDefaultPathFields("claude", manifest);
|
|
11
15
|
}
|
|
12
16
|
//# sourceMappingURL=claude.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/create/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/create/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,MAAM,UAAU,oBAAoB,CAAC,KAAqB;IACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAmB;QAC/B,GAAG,MAAM;QACT,WAAW,EACT,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACzE,GAAG,KAAK,CAAC,IAAI,0BAA0B;QACzC,QAAQ,EAAE,mBAAmB,CAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,QAAqB,CAAC,CAAC,CAAC,SAAS,EAC1E,QAAQ,CACT;KACF,CAAC;IACF,0EAA0E;IAC1E,wEAAwE;IACxE,wDAAwD;IACxD,OAAO,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/create/cursor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/create/cursor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CA0B1E"}
|
package/dist/create/cursor.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MANIFEST_FIELDS } from "../internal/platform.js";
|
|
1
|
+
import { MANIFEST_FIELDS, stripDefaultPathFields } from "../internal/platform.js";
|
|
2
2
|
import { pickManifestFields, withPlatformKeyword } from "../internal/pick.js";
|
|
3
3
|
export function deriveCursorManifest(enact) {
|
|
4
4
|
const picked = pickManifestFields(enact, MANIFEST_FIELDS.cursor);
|
|
@@ -9,12 +9,16 @@ export function deriveCursorManifest(enact) {
|
|
|
9
9
|
typeof iface.logo === "string"
|
|
10
10
|
? iface.logo
|
|
11
11
|
: undefined;
|
|
12
|
-
|
|
12
|
+
const manifest = {
|
|
13
13
|
...picked,
|
|
14
14
|
description: (typeof picked.description === "string" ? picked.description : undefined) ??
|
|
15
15
|
`${enact.name} plugin for Cursor.`,
|
|
16
16
|
keywords: withPlatformKeyword(Array.isArray(picked.keywords) ? picked.keywords : undefined, "cursor"),
|
|
17
17
|
...(logo ? { logo } : {}),
|
|
18
18
|
};
|
|
19
|
+
// Cursor auto-discovers skills/agents/hooks/mcp from default locations and the
|
|
20
|
+
// MCP file is `mcp.json` (no dot). Drop the default-path fields; the install
|
|
21
|
+
// projector renames `.mcp.json` → `mcp.json` and remaps the hooks schema.
|
|
22
|
+
return stripDefaultPathFields("cursor", manifest);
|
|
19
23
|
}
|
|
20
24
|
//# sourceMappingURL=cursor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/create/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/create/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,MAAM,UAAU,oBAAoB,CAAC,KAAqB;IACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;IAC9B,MAAM,IAAI,GACR,KAAK;QACL,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,IAAI,KAAK;QACf,OAAQ,KAA2B,CAAC,IAAI,KAAK,QAAQ;QACnD,CAAC,CAAE,KAA0B,CAAC,IAAI;QAClC,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,QAAQ,GAAmB;QAC/B,GAAG,MAAM;QACT,WAAW,EACT,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACzE,GAAG,KAAK,CAAC,IAAI,qBAAqB;QACpC,QAAQ,EAAE,mBAAmB,CAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,QAAqB,CAAC,CAAC,CAAC,SAAS,EAC1E,QAAQ,CACT;QACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1B,CAAC;IACF,+EAA+E;IAC/E,6EAA6E;IAC7E,0EAA0E;IAC1E,OAAO,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC"}
|
package/dist/create/enact.js
CHANGED
|
@@ -2,7 +2,7 @@ import { DEFAULT_PATHS, DEFAULT_TARGETS } from "../internal/platform.js";
|
|
|
2
2
|
export function createEnactManifest(input) {
|
|
3
3
|
const name = input.name.trim();
|
|
4
4
|
if (!/^[a-z][a-z0-9-]*$/.test(name)) {
|
|
5
|
-
throw new Error(`Invalid plugin name "${name}". Use lowercase kebab-case (e.g.
|
|
5
|
+
throw new Error(`Invalid plugin name "${name}". Use lowercase kebab-case (e.g. code-review-assistant).`);
|
|
6
6
|
}
|
|
7
7
|
const manifest = {
|
|
8
8
|
name,
|
package/dist/create/enact.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enact.js","sourceRoot":"","sources":["../../src/create/enact.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,
|
|
1
|
+
{"version":3,"file":"enact.js","sourceRoot":"","sources":["../../src/create/enact.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,2DAA2D,CACxF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAmB;QAC/B,IAAI;QACJ,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,OAAO;QACjC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,GAAG,IAAI,2BAA2B;QACpE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE;QACrD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,YAAY;QACtC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,GAAG,eAAe,CAAC;QAC9C,MAAM,EAAE,aAAa,CAAC,MAAM;QAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;KAC5C,CAAC;IAEF,IAAI,KAAK,CAAC,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACvD,IAAI,KAAK,CAAC,UAAU;QAAE,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAC7D,IAAI,KAAK,CAAC,SAAS;QAAE,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAC1D,IAAI,KAAK,CAAC,OAAO;QAAE,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACpD,IAAI,KAAK,CAAC,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEvD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/create/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { CreateEnactInput, Platform, PluginManifest, SyncResult, TargetPlatform } from "../internal/types.js";
|
|
1
|
+
import type { CreateEnactInput, Platform, PluginManifest, ProjectionPlatform, SyncResult, TargetPlatform } from "../internal/types.js";
|
|
2
2
|
export { createEnactManifest } from "./enact.js";
|
|
3
3
|
export { deriveClaudeManifest } from "./claude.js";
|
|
4
4
|
export { deriveCodexManifest } from "./codex.js";
|
|
5
5
|
export { deriveCursorManifest } from "./cursor.js";
|
|
6
|
-
export declare function deriveManifest(platform:
|
|
6
|
+
export declare function deriveManifest(platform: ProjectionPlatform, enact: PluginManifest): PluginManifest;
|
|
7
7
|
export declare function resolveTargets(enact: PluginManifest): TargetPlatform[];
|
|
8
|
+
export declare function resolveProjectionTargets(enact: PluginManifest): ProjectionPlatform[];
|
|
8
9
|
export type ScaffoldOptions = CreateEnactInput & {
|
|
9
10
|
pluginRoot: string;
|
|
10
11
|
scaffoldDirs?: boolean;
|
|
@@ -13,6 +14,6 @@ export declare function scaffoldPlugin(options: ScaffoldOptions): {
|
|
|
13
14
|
enact: PluginManifest;
|
|
14
15
|
sync: SyncResult[];
|
|
15
16
|
};
|
|
16
|
-
export declare function syncPlatformManifests(pluginRoot: string, enact: PluginManifest, targets?:
|
|
17
|
+
export declare function syncPlatformManifests(pluginRoot: string, enact: PluginManifest, targets?: ProjectionPlatform[]): SyncResult[];
|
|
17
18
|
export declare function manifestForPlatform(platform: Platform, enact: PluginManifest): PluginManifest;
|
|
18
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,UAAU,EACV,cAAc,EACf,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,cAAc,EACf,MAAM,sBAAsB,CAAC;AAa9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAWnD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,cAAc,GACpB,cAAc,CAEhB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,EAAE,CAMtE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,kBAAkB,EAAE,CAMpF;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAIF,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG;IACxD,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,UAAU,EAAE,CAAC;CACpB,CASA;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,kBAAkB,EAAE,GAC7B,UAAU,EAAE,CASd;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,cAAc,GACpB,cAAc,CAKhB"}
|
package/dist/create/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mkdirSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import { DEFAULT_TARGETS, isTargetPlatform } from "../internal/platform.js";
|
|
3
|
+
import { DEFAULT_PROJECTION_TARGETS, DEFAULT_TARGETS, isProjectionPlatform, isTargetPlatform, } from "../internal/platform.js";
|
|
4
4
|
import { writePlatformManifest } from "../internal/io.js";
|
|
5
5
|
import { createEnactManifest } from "./enact.js";
|
|
6
6
|
import { deriveClaudeManifest } from "./claude.js";
|
|
@@ -25,6 +25,13 @@ export function resolveTargets(enact) {
|
|
|
25
25
|
}
|
|
26
26
|
return raw.filter((t) => typeof t === "string" && isTargetPlatform(t));
|
|
27
27
|
}
|
|
28
|
+
export function resolveProjectionTargets(enact) {
|
|
29
|
+
const raw = enact.targets;
|
|
30
|
+
if (!Array.isArray(raw)) {
|
|
31
|
+
return [...DEFAULT_PROJECTION_TARGETS];
|
|
32
|
+
}
|
|
33
|
+
return raw.filter((t) => typeof t === "string" && isProjectionPlatform(t));
|
|
34
|
+
}
|
|
28
35
|
const COMPONENT_DIRS = ["skills", "commands", "hooks", "assets"];
|
|
29
36
|
export function scaffoldPlugin(options) {
|
|
30
37
|
const enact = createEnactManifest(options);
|
|
@@ -39,7 +46,7 @@ export function scaffoldPlugin(options) {
|
|
|
39
46
|
export function syncPlatformManifests(pluginRoot, enact, targets) {
|
|
40
47
|
const results = [];
|
|
41
48
|
results.push(writePlatformManifest(pluginRoot, "enact", enact));
|
|
42
|
-
const selected = targets ??
|
|
49
|
+
const selected = targets ?? resolveProjectionTargets(enact);
|
|
43
50
|
for (const platform of selected) {
|
|
44
51
|
results.push(writePlatformManifest(pluginRoot, platform, deriveManifest(platform, enact)));
|
|
45
52
|
}
|
package/dist/create/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
export type { Platform, TargetPlatform, PluginManifest, ValidationResult, CreateEnactInput, SyncResult, } from "./internal/types.js";
|
|
1
|
+
export type { Platform, ProjectionPlatform, TargetPlatform, PluginManifest, ValidationResult, CreateEnactInput, SyncResult, } from "./internal/types.js";
|
|
2
2
|
export type { CodexConfig, CodexConfigProbe, CodexFeatureStatus, CodexInstallHomesOptions, } from "./internal/codex.js";
|
|
3
3
|
export { codexFeatureEnabled, readCodexFeatures } from "./internal/codex.js";
|
|
4
|
-
export { defaultClaudeHome, readKnownMarketplaces, writeKnownMarketplaces, registerLocalMarketplace, } from "./internal/claude.js";
|
|
4
|
+
export { defaultClaudeHome, readKnownMarketplaces, readEnabledPlugins, writeKnownMarketplaces, registerLocalMarketplace, claudeMarketplaceManifestPath, upsertClaudeMarketplaceEntry, removeClaudeMarketplaceEntry, claudeCliScope, listClaudePlugins, activateClaudePlugin, } from "./internal/claude.js";
|
|
5
|
+
export type { ClaudeMarketplaceManifest, ClaudeMarketplacePluginEntry, ClaudeCliExec, ClaudeCliExecResult, } from "./internal/claude.js";
|
|
5
6
|
export { defaultCursorHome } from "./internal/cursor.js";
|
|
6
|
-
export { parseTomlAgent, emitMarkdownAgent, projectAgentsDir } from "./internal/agents.js";
|
|
7
|
-
export type { AgentDef } from "./internal/agents.js";
|
|
8
|
-
export { MANIFEST_BY_PLATFORM, MANIFEST_FIELDS, manifestRelPath, DEFAULT_TARGETS, DEFAULT_PATHS, } from "./internal/platform.js";
|
|
7
|
+
export { parseTomlAgent, emitMarkdownAgent, projectAgentsDir, projectCursorHooks, writeCursorHooksFile, } from "./internal/agents.js";
|
|
8
|
+
export type { AgentDef, MarkdownAgentPlatform } from "./internal/agents.js";
|
|
9
|
+
export { MANIFEST_BY_PLATFORM, MANIFEST_FIELDS, manifestRelPath, DEFAULT_TARGETS, DEFAULT_PROJECTION_TARGETS, DEFAULT_PATHS, DEFAULT_MCP_FILENAME, isProjectionPlatform, isTargetPlatform, stripDefaultPathFields, } from "./internal/platform.js";
|
|
9
10
|
export { defaultCodexHome, defaultEnactHome, ensureMarketplace, ensureMcpServer, isPluginEnabled, readCodexConfig, readCodexConfigProbe, resolveCodexInstallHomes, removeMcpServer, removePluginConfig, setPluginEnabled, writeCodexConfig, } from "./internal/codex.js";
|
|
10
|
-
export { createEnactManifest, deriveClaudeManifest, deriveCodexManifest, deriveCursorManifest, deriveManifest, resolveTargets, scaffoldPlugin, syncPlatformManifests, manifestForPlatform, } from "./create/index.js";
|
|
11
|
+
export { createEnactManifest, deriveClaudeManifest, deriveCodexManifest, deriveCursorManifest, deriveManifest, resolveProjectionTargets, resolveTargets, scaffoldPlugin, syncPlatformManifests, manifestForPlatform, } from "./create/index.js";
|
|
11
12
|
export { validateEnactManifest, assertEnactManifest, validateClaudeManifest, validateCodexManifest, validateCursorManifest, validateManifest, validatePluginManifest, validatePluginBundle, validatePluginBundleFromCanonical, checkComponentPaths, checkPluginBundleComponentPaths, checkPluginBundleComponentPathsFromCanonical, checkHookEvents, assertSupportedHookEvents, SUPPORTED_HOOK_EVENTS, readManifestFile, } from "./validate/index.js";
|
|
12
13
|
export type { PluginValidationReport } from "./validate/index.js";
|
|
13
14
|
export type { ScaffoldOptions } from "./create/index.js";
|
|
@@ -15,4 +16,6 @@ export { installCodexPluginBundle, installCodexPluginBundleWithProvision, instal
|
|
|
15
16
|
export type { CodexPluginInstallOptions, CodexPluginInstallResult, CodexPluginInstallWithProvisionOptions, CodexPluginInstallWithProvisionResult, MultiCodexPluginInstallOptions, MultiCodexPluginInstallResult, MultiCodexPluginInstallWithProvisionOptions, MultiCodexPluginInstallWithProvisionResult, CodexPluginDoctorReport, CodexInstalledPluginStatus, ClaudePluginInstallOptions, ClaudePluginInstallResult, ClaudePluginInstallWithProvisionOptions, ClaudePluginInstallWithProvisionResult, ClaudePluginDoctorReport, ClaudeInstalledPluginStatus, CursorPluginInstallOptions, CursorPluginInstallResult, SharedPluginInstallOptions, SharedPluginInstallResult, CodexPluginUninstallOptions, CodexPluginUninstallResult, ClaudePluginUninstallOptions, ClaudePluginUninstallResult, CursorPluginUninstallOptions, CursorPluginUninstallResult, SharedPluginUninstallOptions, SharedPluginUninstallResult, } from "./install.js";
|
|
16
17
|
export type { McpServerDefinition, ProvisionExec, ProvisionExecResult, ProvisionMcpOptions, ProvisionMcpResult, } from "./provision.js";
|
|
17
18
|
export { readMcpServers, provisionMcp, summarizeProvision, } from "./provision.js";
|
|
19
|
+
export { PRINCIPLES_START_MARKER, PRINCIPLES_END_MARKER, SUPPORTED_PRINCIPLES_SURFACES, defaultDoctrinePath, renderBlock, applyBlock, removeBlock, checkBlock, resolveHostFile, } from "./principles.js";
|
|
20
|
+
export type { PrinciplesSurface, BlockStatus, ApplyAction, ResolveHostFileOptions, ApplyBlockResult, RemoveBlockResult, } from "./principles.js";
|
|
18
21
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,QAAQ,EACR,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
export { codexFeatureEnabled, readCodexFeatures } from "./internal/codex.js";
|
|
2
|
-
export { defaultClaudeHome, readKnownMarketplaces, writeKnownMarketplaces, registerLocalMarketplace, } from "./internal/claude.js";
|
|
2
|
+
export { defaultClaudeHome, readKnownMarketplaces, readEnabledPlugins, writeKnownMarketplaces, registerLocalMarketplace, claudeMarketplaceManifestPath, upsertClaudeMarketplaceEntry, removeClaudeMarketplaceEntry, claudeCliScope, listClaudePlugins, activateClaudePlugin, } from "./internal/claude.js";
|
|
3
3
|
export { defaultCursorHome } from "./internal/cursor.js";
|
|
4
|
-
export { parseTomlAgent, emitMarkdownAgent, projectAgentsDir } from "./internal/agents.js";
|
|
5
|
-
export { MANIFEST_BY_PLATFORM, MANIFEST_FIELDS, manifestRelPath, DEFAULT_TARGETS, DEFAULT_PATHS, } from "./internal/platform.js";
|
|
4
|
+
export { parseTomlAgent, emitMarkdownAgent, projectAgentsDir, projectCursorHooks, writeCursorHooksFile, } from "./internal/agents.js";
|
|
5
|
+
export { MANIFEST_BY_PLATFORM, MANIFEST_FIELDS, manifestRelPath, DEFAULT_TARGETS, DEFAULT_PROJECTION_TARGETS, DEFAULT_PATHS, DEFAULT_MCP_FILENAME, isProjectionPlatform, isTargetPlatform, stripDefaultPathFields, } from "./internal/platform.js";
|
|
6
6
|
export { defaultCodexHome, defaultEnactHome, ensureMarketplace, ensureMcpServer, isPluginEnabled, readCodexConfig, readCodexConfigProbe, resolveCodexInstallHomes, removeMcpServer, removePluginConfig, setPluginEnabled, writeCodexConfig, } from "./internal/codex.js";
|
|
7
|
-
export { createEnactManifest, deriveClaudeManifest, deriveCodexManifest, deriveCursorManifest, deriveManifest, resolveTargets, scaffoldPlugin, syncPlatformManifests, manifestForPlatform, } from "./create/index.js";
|
|
7
|
+
export { createEnactManifest, deriveClaudeManifest, deriveCodexManifest, deriveCursorManifest, deriveManifest, resolveProjectionTargets, resolveTargets, scaffoldPlugin, syncPlatformManifests, manifestForPlatform, } from "./create/index.js";
|
|
8
8
|
export { validateEnactManifest, assertEnactManifest, validateClaudeManifest, validateCodexManifest, validateCursorManifest, validateManifest, validatePluginManifest, validatePluginBundle, validatePluginBundleFromCanonical, checkComponentPaths, checkPluginBundleComponentPaths, checkPluginBundleComponentPathsFromCanonical, checkHookEvents, assertSupportedHookEvents, SUPPORTED_HOOK_EVENTS, readManifestFile, } from "./validate/index.js";
|
|
9
9
|
export { installCodexPluginBundle, installCodexPluginBundleWithProvision, installPluginBundle, installPluginBundleWithProvision, installClaudePluginBundle, installClaudePluginBundleWithProvision, installCursorPluginBundle, installSharedPluginBundle, codexMarketplaceRoot, codexMarketplacePath, codexMarketplacePluginPath, codexInstalledPluginPath, codexPluginCacheRoot, codexPluginCachePath, readCodexPluginManifest, claudeMarketplaceDir, claudeInstalledPluginPath, claudeKnownMarketplacesPath, readClaudePluginManifest, codexPluginStatus, claudePluginStatus, setInstalledCodexPluginEnabled, runCodexPluginsDoctor, runClaudePluginsDoctor, defaultSharedHome, uninstallCodexPluginBundle, uninstallClaudePluginBundle, uninstallCursorPluginBundle, uninstallSharedPluginBundle, } from "./install.js";
|
|
10
10
|
export { readMcpServers, provisionMcp, summarizeProvision, } from "./provision.js";
|
|
11
|
+
export { PRINCIPLES_START_MARKER, PRINCIPLES_END_MARKER, SUPPORTED_PRINCIPLES_SURFACES, defaultDoctrinePath, renderBlock, applyBlock, removeBlock, checkBlock, resolveHostFile, } from "./principles.js";
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,0BAA0B,EAC1B,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,iCAAiC,EACjC,mBAAmB,EACnB,+BAA+B,EAC/B,4CAA4C,EAC5C,eAAe,EACf,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EACL,wBAAwB,EACxB,qCAAqC,EACrC,mBAAmB,EACnB,gCAAgC,EAChC,yBAAyB,EACzB,sCAAsC,EACtC,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,8BAA8B,EAC9B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAsCtB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,eAAe,GAChB,MAAM,iBAAiB,CAAC"}
|
package/dist/install.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { PluginManifest, SyncResult } from "./internal/types.js";
|
|
2
|
+
import { type ClaudeCliExec } from "./internal/claude.js";
|
|
2
3
|
import type { ProvisionExec, ProvisionMcpResult } from "./provision.js";
|
|
3
4
|
export interface CodexPluginInstallOptions {
|
|
4
5
|
pluginRoot: string;
|
|
@@ -67,6 +68,8 @@ export interface ClaudePluginInstallOptions {
|
|
|
67
68
|
claudeHome?: string;
|
|
68
69
|
marketplaceName?: string;
|
|
69
70
|
sync?: boolean;
|
|
71
|
+
scope?: "global" | "local" | "project";
|
|
72
|
+
claudeExec?: ClaudeCliExec;
|
|
70
73
|
}
|
|
71
74
|
export interface ClaudePluginInstallResult {
|
|
72
75
|
name: string;
|
|
@@ -84,11 +87,13 @@ export interface ClaudePluginDoctorReport {
|
|
|
84
87
|
marketplaceRegistered: boolean;
|
|
85
88
|
marketplacePlugins: string[];
|
|
86
89
|
installedPlugins: string[];
|
|
90
|
+
enabledPlugins: string[];
|
|
87
91
|
warnings: string[];
|
|
88
92
|
}
|
|
89
93
|
export interface ClaudeInstalledPluginStatus {
|
|
90
94
|
name: string;
|
|
91
95
|
installed: boolean;
|
|
96
|
+
enabled: boolean;
|
|
92
97
|
manifest: PluginManifest | null;
|
|
93
98
|
marketplaceName: string;
|
|
94
99
|
marketplaceDir: string;
|
package/dist/install.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/dist/install.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { dirname, join, resolve } from "node:path";
|
|
3
|
-
import { projectAgentsDir } from "./internal/agents.js";
|
|
3
|
+
import { projectAgentsDir, writeCursorHooksFile } from "./internal/agents.js";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
import { defaultCodexHome, ensureMarketplace, isPluginEnabled, readCodexConfig, removePluginConfig, resolveCodexInstallHomes, setPluginEnabled, writeCodexConfig, } from "./internal/codex.js";
|
|
6
6
|
import { manifestForPlatform } from "./create/index.js";
|
|
7
|
-
import { PROJECTION_COMPONENT_FIELDS } from "./internal/platform.js";
|
|
7
|
+
import { DEFAULT_MCP_FILENAME, DEFAULT_PATHS, PROJECTION_COMPONENT_FIELDS } from "./internal/platform.js";
|
|
8
8
|
import { checkComponentPaths, readManifestFile, validateClaudeManifest, validateCodexManifest, validateCursorManifest, } from "./validate/index.js";
|
|
9
|
-
import { defaultClaudeHome, readKnownMarketplaces, registerLocalMarketplace } from "./internal/claude.js";
|
|
9
|
+
import { defaultClaudeHome, readEnabledPlugins, readKnownMarketplaces, registerLocalMarketplace, removeClaudeMarketplaceEntry, upsertClaudeMarketplaceEntry, } from "./internal/claude.js";
|
|
10
10
|
import { defaultCursorHome } from "./internal/cursor.js";
|
|
11
11
|
import { provisionMcp } from "./provision.js";
|
|
12
12
|
function readJson(path, fallback) {
|
|
@@ -41,20 +41,48 @@ function pathFieldsFromManifest(platform, manifest) {
|
|
|
41
41
|
}
|
|
42
42
|
return results;
|
|
43
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Component path candidates to COPY for a surface. Derived per-surface manifests
|
|
46
|
+
* may OMIT default-path fields (claude/cursor auto-discover from default dirs),
|
|
47
|
+
* so we cannot rely on the manifest alone to know what to copy. We therefore
|
|
48
|
+
* union the manifest's declared paths with the canonical default paths for each
|
|
49
|
+
* auto-discovered component — the on-disk-existence check downstream filters out
|
|
50
|
+
* components the bundle doesn't actually ship.
|
|
51
|
+
*/
|
|
52
|
+
function copyPathCandidates(platform, manifest) {
|
|
53
|
+
const candidates = [...pathFieldsFromManifest(platform, manifest)];
|
|
54
|
+
// Fall back to canonical defaults for auto-discovered components that the
|
|
55
|
+
// derived manifest may have stripped (claude/cursor). Only consider fields the
|
|
56
|
+
// platform actually projects; codex/enact project canonical TOML agents while
|
|
57
|
+
// claude/cursor transform them to Markdown.
|
|
58
|
+
const projected = new Set(PROJECTION_COMPONENT_FIELDS[platform]);
|
|
59
|
+
for (const field of ["skills", "agents", "hooks", "mcpServers"]) {
|
|
60
|
+
if (!projected.has(field))
|
|
61
|
+
continue;
|
|
62
|
+
if (typeof manifest[field] === "string" && manifest[field].trim())
|
|
63
|
+
continue;
|
|
64
|
+
const def = DEFAULT_PATHS[field];
|
|
65
|
+
if (def)
|
|
66
|
+
candidates.push(def);
|
|
67
|
+
}
|
|
68
|
+
return candidates;
|
|
69
|
+
}
|
|
44
70
|
function normalizedProjectionEntries(platform, manifest, platformDir) {
|
|
45
71
|
const entries = new Set([platformDir, "README.md"]);
|
|
46
|
-
for (const raw of
|
|
72
|
+
for (const raw of copyPathCandidates(platform, manifest)) {
|
|
47
73
|
const cleaned = raw.replace(/^\.\//, "").replace(/\/+$/, "");
|
|
48
74
|
if (!cleaned || cleaned.startsWith("../"))
|
|
49
75
|
continue;
|
|
50
76
|
entries.add(cleaned);
|
|
51
77
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
78
|
+
for (const hooksValue of [manifest.hooks, DEFAULT_PATHS.hooks]) {
|
|
79
|
+
if (typeof hooksValue === "string" && hooksValue.trim()) {
|
|
80
|
+
const cleaned = hooksValue.replace(/^\.\//, "").replace(/\/+$/, "");
|
|
81
|
+
if (cleaned.endsWith("/hooks.json")) {
|
|
82
|
+
const parentDir = dirname(cleaned);
|
|
83
|
+
if (parentDir !== ".")
|
|
84
|
+
entries.add(parentDir);
|
|
85
|
+
}
|
|
58
86
|
}
|
|
59
87
|
}
|
|
60
88
|
return [...entries];
|
|
@@ -68,7 +96,12 @@ function cleanRel(value) {
|
|
|
68
96
|
function projectBundle(sourceRoot, targetRoot, platform, manifest, platformDir) {
|
|
69
97
|
rmSync(targetRoot, { recursive: true, force: true });
|
|
70
98
|
mkdirSync(targetRoot, { recursive: true });
|
|
71
|
-
|
|
99
|
+
// Resolve the agents source dir even when the derived manifest omits the field
|
|
100
|
+
// (claude/cursor auto-discover agents/ from the default location).
|
|
101
|
+
const agentsEntry = cleanRel(manifest.agents) ?? cleanRel(DEFAULT_PATHS.agents);
|
|
102
|
+
// The on-disk hooks file we project from (default path; bundles use it).
|
|
103
|
+
const hooksFileRel = (cleanRel(manifest.hooks) ?? cleanRel(DEFAULT_PATHS.hooks)) ?? "hooks/hooks.json";
|
|
104
|
+
const hooksDirRel = hooksFileRel.endsWith("/hooks.json") ? dirname(hooksFileRel) : null;
|
|
72
105
|
for (const entry of normalizedProjectionEntries(platform, manifest, platformDir)) {
|
|
73
106
|
const sourcePath = resolve(sourceRoot, entry);
|
|
74
107
|
if (!existsSync(sourcePath))
|
|
@@ -79,8 +112,41 @@ function projectBundle(sourceRoot, targetRoot, platform, manifest, platformDir)
|
|
|
79
112
|
projectAgentsDir(sourcePath, join(targetRoot, entry), platform);
|
|
80
113
|
continue;
|
|
81
114
|
}
|
|
115
|
+
// Cursor uses a different hooks schema (flat camelCase). Skip the raw hooks
|
|
116
|
+
// dir copy here; the projected hooks.json is written below instead.
|
|
117
|
+
if (platform === "cursor" && hooksDirRel && entry === hooksDirRel) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
82
120
|
cpSync(sourcePath, join(targetRoot, entry), { recursive: true, force: true });
|
|
83
121
|
}
|
|
122
|
+
if (platform === "cursor") {
|
|
123
|
+
// Project the canonical hooks.json into Cursor's flat camelCase schema,
|
|
124
|
+
// preserving any non-hooks files alongside it (e.g. hook scripts).
|
|
125
|
+
const hooksSource = resolve(sourceRoot, hooksFileRel);
|
|
126
|
+
if (existsSync(hooksSource) && hooksDirRel) {
|
|
127
|
+
const targetHooksDir = join(targetRoot, hooksDirRel);
|
|
128
|
+
const sourceHooksDir = resolve(sourceRoot, hooksDirRel);
|
|
129
|
+
// Copy sibling files (scripts) verbatim, then overwrite the hooks.json.
|
|
130
|
+
if (existsSync(sourceHooksDir) && statSync(sourceHooksDir).isDirectory()) {
|
|
131
|
+
for (const f of readdirSync(sourceHooksDir, { withFileTypes: true })) {
|
|
132
|
+
if (f.name === "hooks.json")
|
|
133
|
+
continue;
|
|
134
|
+
cpSync(join(sourceHooksDir, f.name), join(targetHooksDir, f.name), {
|
|
135
|
+
recursive: true,
|
|
136
|
+
force: true,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
writeCursorHooksFile(hooksSource, join(targetRoot, hooksFileRel));
|
|
141
|
+
}
|
|
142
|
+
// Cursor convention: the MCP config file is `mcp.json` (no leading dot).
|
|
143
|
+
const cursorMcp = DEFAULT_MCP_FILENAME.cursor;
|
|
144
|
+
const dottedMcp = resolve(sourceRoot, ".mcp.json");
|
|
145
|
+
if (cursorMcp && existsSync(dottedMcp)) {
|
|
146
|
+
cpSync(dottedMcp, join(targetRoot, cursorMcp), { force: true });
|
|
147
|
+
rmSync(join(targetRoot, ".mcp.json"), { force: true });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
84
150
|
writeJson(join(targetRoot, platformDir, "plugin.json"), manifest);
|
|
85
151
|
}
|
|
86
152
|
/**
|
|
@@ -346,6 +412,10 @@ export function installClaudePluginBundle(options) {
|
|
|
346
412
|
const marketplaceDir = join(claudeHome, "plugins", "marketplaces", marketplaceName);
|
|
347
413
|
const installedPath = join(marketplaceDir, "plugins", name);
|
|
348
414
|
projectBundle(options.pluginRoot, installedPath, "claude", claudeManifest, ".claude-plugin");
|
|
415
|
+
// Claude discovers a directory marketplace's plugins from
|
|
416
|
+
// <marketplaceDir>/.claude-plugin/marketplace.json. Add/refresh this plugin's
|
|
417
|
+
// entry (mirrors the codex marketplace.json maintenance).
|
|
418
|
+
upsertClaudeMarketplaceEntry(marketplaceDir, marketplaceName, name, stringField(claudeManifest, "description"));
|
|
349
419
|
registerLocalMarketplace(claudeHome, marketplaceName, marketplaceDir);
|
|
350
420
|
return {
|
|
351
421
|
name,
|
|
@@ -373,9 +443,11 @@ export function claudePluginStatus(claudeHome, pluginName, marketplaceName = "en
|
|
|
373
443
|
const knownMarketplaces = readKnownMarketplaces(claudeHome);
|
|
374
444
|
const installedPath = claudeInstalledPluginPath(claudeHome, marketplaceName, pluginName);
|
|
375
445
|
const manifest = existsSync(installedPath) ? readClaudePluginManifest(installedPath) : null;
|
|
446
|
+
const enabledPlugins = readEnabledPlugins(claudeHome);
|
|
376
447
|
return {
|
|
377
448
|
name: pluginName,
|
|
378
449
|
installed: existsSync(installedPath),
|
|
450
|
+
enabled: Boolean(enabledPlugins[`${pluginName}@${marketplaceName}`]),
|
|
379
451
|
manifest,
|
|
380
452
|
marketplaceName,
|
|
381
453
|
marketplaceDir,
|
|
@@ -387,6 +459,7 @@ export function claudePluginStatus(claudeHome, pluginName, marketplaceName = "en
|
|
|
387
459
|
export function runClaudePluginsDoctor(claudeHome = defaultClaudeHome(), marketplaceName = "enact-os-plugins") {
|
|
388
460
|
const marketplaceDir = claudeMarketplaceDir(claudeHome, marketplaceName);
|
|
389
461
|
const knownMarketplaces = readKnownMarketplaces(claudeHome);
|
|
462
|
+
const enabledPlugins = readEnabledPlugins(claudeHome);
|
|
390
463
|
const installedPluginsDir = join(marketplaceDir, "plugins");
|
|
391
464
|
const installedPlugins = existsSync(installedPluginsDir)
|
|
392
465
|
? readdirSync(installedPluginsDir, { withFileTypes: true })
|
|
@@ -407,6 +480,10 @@ export function runClaudePluginsDoctor(claudeHome = defaultClaudeHome(), marketp
|
|
|
407
480
|
marketplaceRegistered: Boolean(knownMarketplaces[marketplaceName]),
|
|
408
481
|
marketplacePlugins: installedPlugins.slice().sort(),
|
|
409
482
|
installedPlugins: installedPlugins.sort(),
|
|
483
|
+
enabledPlugins: Object.entries(enabledPlugins)
|
|
484
|
+
.filter(([pluginId, enabled]) => enabled && pluginId.endsWith(`@${marketplaceName}`))
|
|
485
|
+
.map(([pluginId]) => pluginId.slice(0, -(`@${marketplaceName}`).length))
|
|
486
|
+
.sort(),
|
|
410
487
|
warnings,
|
|
411
488
|
};
|
|
412
489
|
}
|
|
@@ -525,6 +602,9 @@ export function uninstallClaudePluginBundle(name, options = {}) {
|
|
|
525
602
|
rmSync(installedPath, { recursive: true, force: true });
|
|
526
603
|
removedPaths.push(installedPath);
|
|
527
604
|
}
|
|
605
|
+
// Remove this plugin's entry from the marketplace.json (leave the file, the
|
|
606
|
+
// marketplace registration, and other plugin entries intact).
|
|
607
|
+
removeClaudeMarketplaceEntry(marketplaceDir, mktName, name);
|
|
528
608
|
return { name, removedPaths, noop };
|
|
529
609
|
}
|
|
530
610
|
/**
|