persona-harness 0.9.2 → 0.11.0
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/.persona/harness.jsonc +2 -1
- package/CHANGELOG.md +29 -0
- package/README.md +21 -3
- package/dist/cli/cli-usage.js +4 -0
- package/dist/cli/cli-usage.js.map +1 -1
- package/dist/cli/doctor-output.js +10 -0
- package/dist/cli/doctor-output.js.map +1 -1
- package/dist/cli/doctor.js +1 -1
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/host-plugin-command.d.ts +5 -0
- package/dist/cli/host-plugin-command.js +32 -0
- package/dist/cli/host-plugin-command.js.map +1 -0
- package/dist/cli/host-plugin-distribution.d.ts +21 -0
- package/dist/cli/host-plugin-distribution.js +309 -0
- package/dist/cli/host-plugin-distribution.js.map +1 -0
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init-harness-overlay.js +8 -1
- package/dist/cli/init-harness-overlay.js.map +1 -1
- package/dist/config/harness-config.d.ts +7 -0
- package/dist/config/harness-config.js +7 -0
- package/dist/config/harness-config.js.map +1 -1
- package/dist/runtime/hooks.js +24 -14
- package/dist/runtime/hooks.js.map +1 -1
- package/dist/runtime/opencode-shared-skill-routing-status.d.ts +1 -1
- package/dist/runtime/opencode-shared-skill-routing-status.js +1 -1
- package/dist/runtime/opencode-shared-skill-routing-status.js.map +1 -1
- package/dist/runtime/opencode-skill-adapter.js +1 -1
- package/dist/runtime/opencode-skill-adapter.js.map +1 -1
- package/dist/runtime/persona-setup.d.ts +12 -0
- package/dist/runtime/persona-setup.js +99 -0
- package/dist/runtime/persona-setup.js.map +1 -0
- package/docs/current/harness-default-audit.md +1 -0
- package/docs/current/persona-shared-skills-core.md +27 -8
- package/docs/current/portable-host-adapters.md +56 -4
- package/docs/current/release/consumer-authority-current-acceptance.json +1 -1
- package/docs/current/release/v0.10.0-release-notes.md +52 -0
- package/docs/current/release/v0.11.0-release-notes.md +50 -0
- package/package.json +7 -3
- package/packages/host-plugins/claude/.claude-plugin/plugin.json +19 -0
- package/packages/host-plugins/claude/skills/ast-grep/SKILL.md +22 -0
- package/packages/host-plugins/claude/skills/debug/SKILL.md +22 -0
- package/packages/host-plugins/claude/skills/deep-interview/SKILL.md +32 -0
- package/packages/host-plugins/claude/skills/frontend/SKILL.md +22 -0
- package/packages/host-plugins/claude/skills/git/SKILL.md +22 -0
- package/packages/host-plugins/claude/skills/grill-me/SKILL.md +38 -0
- package/packages/host-plugins/claude/skills/implementation/SKILL.md +23 -0
- package/packages/host-plugins/claude/skills/lsp-setup/SKILL.md +22 -0
- package/packages/host-plugins/claude/skills/philosophy-refinement/SKILL.md +41 -0
- package/packages/host-plugins/claude/skills/plan/SKILL.md +24 -0
- package/packages/host-plugins/claude/skills/programming/SKILL.md +28 -0
- package/packages/host-plugins/claude/skills/ralplan/SKILL.md +23 -0
- package/packages/host-plugins/claude/skills/refactor/SKILL.md +22 -0
- package/packages/host-plugins/claude/skills/review/SKILL.md +22 -0
- package/packages/host-plugins/claude/skills/tdd/SKILL.md +23 -0
- package/packages/host-plugins/claude/skills/technical-intake/SKILL.md +24 -0
- package/packages/host-plugins/claude/skills/visual-qa/SKILL.md +22 -0
- package/packages/host-plugins/codex/.agents/plugins/marketplace.json +20 -0
- package/packages/host-plugins/codex/plugins/persona-harness/.codex-plugin/plugin.json +30 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/ast-grep/SKILL.md +22 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/debug/SKILL.md +22 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/deep-interview/SKILL.md +32 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/frontend/SKILL.md +22 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/git/SKILL.md +22 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/grill-me/SKILL.md +38 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/implementation/SKILL.md +23 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/lsp-setup/SKILL.md +22 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/philosophy-refinement/SKILL.md +41 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/plan/SKILL.md +24 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/programming/SKILL.md +28 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/ralplan/SKILL.md +23 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/refactor/SKILL.md +22 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/review/SKILL.md +22 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/tdd/SKILL.md +23 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/technical-intake/SKILL.md +24 -0
- package/packages/host-plugins/codex/plugins/persona-harness/skills/visual-qa/SKILL.md +22 -0
- package/packages/shared-skills/README.md +2 -1
- package/packages/shared-skills/package.json +1 -1
- package/scripts/check-host-skill-plugins.mjs +14 -0
package/.persona/harness.jsonc
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,35 @@ preparation alone does not establish stable support or channel state.
|
|
|
8
8
|
|
|
9
9
|
## Unreleased
|
|
10
10
|
|
|
11
|
+
## [0.11.0] - 2026-09-02
|
|
12
|
+
|
|
13
|
+
- Ship the canonical shared-skill catalog as package-contained plugin artifacts
|
|
14
|
+
for Codex and Claude Code. `ph plugin path <host>` verifies the installed
|
|
15
|
+
artifact tree before returning its path.
|
|
16
|
+
- Keep host registration explicit: Persona Harness does not add a Codex
|
|
17
|
+
marketplace, enable a plugin, or change a Claude Code configuration by
|
|
18
|
+
inference.
|
|
19
|
+
- Use Codex's `.agents/plugins/marketplace.json` package layout and a
|
|
20
|
+
Claude-compatible baseline manifest so the packaged directories validate in
|
|
21
|
+
the supported local host CLIs.
|
|
22
|
+
- Keep tarball packing fail-closed while leaving `npm pack --json` machine
|
|
23
|
+
readable; the host-plugin check is quiet on success and reports only bounded
|
|
24
|
+
failures.
|
|
25
|
+
|
|
26
|
+
## [0.10.0] - 2026-09-01
|
|
27
|
+
|
|
28
|
+
- Add a separate, default-on `features.sharedSkillRouting` boundary for the
|
|
29
|
+
compact OpenCode `(PH)` advisory route. It no longer depends on legacy
|
|
30
|
+
`runtimeInjection`, which remains default-off.
|
|
31
|
+
- In a new project where an installed host integration is already available,
|
|
32
|
+
show one `(PH) Setup` recommendation for a relevant Persona request before
|
|
33
|
+
starting an interview or workflow route. The proposal cannot write files or
|
|
34
|
+
run commands; only an explicit later acceptance can authorize the existing
|
|
35
|
+
`npx ph init` command.
|
|
36
|
+
- Preserve explicit `sharedSkillRouting: false` through managed init updates,
|
|
37
|
+
and report its configuration separately from unobserved OpenCode catalog
|
|
38
|
+
selection and host delivery in `ph doctor`.
|
|
39
|
+
|
|
11
40
|
## [0.9.2] - 2026-08-31
|
|
12
41
|
|
|
13
42
|
- Make portable host skills immediately recognizable as Persona Harness: their
|
package/README.md
CHANGED
|
@@ -42,7 +42,9 @@ npx ph workflow finish implement
|
|
|
42
42
|
**What has actually been observed:** a simple forged-evidence fixture is
|
|
43
43
|
ignored and `finish` exits `1`; the opt-in TDD rail blocked green-only
|
|
44
44
|
completion in 5/5 measured runs. Runtime injection did not improve the paired
|
|
45
|
-
OpenCode measurements and added cost, so it remains default-off.
|
|
45
|
+
OpenCode measurements and added cost, so it remains default-off. Compact
|
|
46
|
+
shared-skill routing is separate, defaults on after `ph init`, and can be
|
|
47
|
+
disabled with `features.sharedSkillRouting: false`.
|
|
46
48
|
|
|
47
49
|
**Built for:** Java/Spring/Gradle projects with explicit workflow gates and
|
|
48
50
|
evidence checks. `ph init` materializes portable, project-local skill adapters
|
|
@@ -106,6 +108,10 @@ Persona Harness exposes two deliberately separate tracks:
|
|
|
106
108
|
verification authority.
|
|
107
109
|
- **Isolation:** Context-only paths do not execute project commands or contact
|
|
108
110
|
GitHub/network.
|
|
111
|
+
- **No inferred skill route:** a Context-only or partial `.persona` directory
|
|
112
|
+
without the regular manifest created by `ph init` does not enable automatic
|
|
113
|
+
shared-skill routing or an interview. Resolve the project state explicitly
|
|
114
|
+
before enabling those routes.
|
|
109
115
|
- **Host:** `ph init` installs static skill adapters for Codex, Claude Code,
|
|
110
116
|
OpenCode, and Antigravity. Context delivery is currently implemented only by
|
|
111
117
|
the optional OpenCode adapter and remains a separate, unobserved boundary.
|
|
@@ -206,8 +212,12 @@ OpenCode release remains a separate host-observation boundary.
|
|
|
206
212
|
`ph init` materializes the bundled Persona-owned shared-skill catalog at each
|
|
207
213
|
host's project-local discovery path. Product ideas start with a one-question
|
|
208
214
|
interview and explicit brief approval; adapters advise only and never create
|
|
209
|
-
workflow state or invoke host agents automatically.
|
|
210
|
-
|
|
215
|
+
workflow state or invoke host agents automatically. When an installed host
|
|
216
|
+
integration sees a relevant request in a new project, it may first show a
|
|
217
|
+
single `(PH) Setup` recommendation instead of starting a skill. The proposal
|
|
218
|
+
does not write files or run commands; only a later explicit acceptance permits
|
|
219
|
+
the existing `npx ph init` command to create `.persona` and its managed host
|
|
220
|
+
registration. See [Persona Shared Skills Core](docs/current/persona-shared-skills-core.md).
|
|
211
221
|
|
|
212
222
|
It is **not** a code-quality guarantee, a token-saving product, a broad linter,
|
|
213
223
|
proof that generated apps are production-ready, or a strong completion-integrity
|
|
@@ -426,6 +436,14 @@ discovery so an OpenCode project receives one native candidate rather than
|
|
|
426
436
|
duplicates. For the full ownership, upgrade, and non-claim boundary, read the
|
|
427
437
|
[portable host adapter guide](docs/current/portable-host-adapters.md).
|
|
428
438
|
|
|
439
|
+
The npm package also ships verified, versioned Codex and Claude Code plugin
|
|
440
|
+
directories. `npx ph plugin path codex` prints the package-local Codex
|
|
441
|
+
marketplace root, and `npx ph plugin path claude` prints the Claude plugin root.
|
|
442
|
+
Those commands are read-only; adding a marketplace or loading a plugin remains
|
|
443
|
+
an explicit host command. See the [portable host adapter guide](docs/current/portable-host-adapters.md#install-packaged-host-plugins)
|
|
444
|
+
for the exact commands and the boundary between static readiness and live host
|
|
445
|
+
selection.
|
|
446
|
+
|
|
429
447
|
### Node runtime floor
|
|
430
448
|
|
|
431
449
|
The packaged CLI and its product-owned Sigstore authority verifiers require
|
package/dist/cli/cli-usage.js
CHANGED
|
@@ -13,6 +13,7 @@ function englishUsage(invocationName) {
|
|
|
13
13
|
" go <goal> | --stdin Host-neutral single entry from a concrete goal to the current ticket and implementation rail.",
|
|
14
14
|
" doctor Diagnose local OpenCode and Persona Harness installation state.",
|
|
15
15
|
" update Control opt-in project-local automatic Persona Harness updates.",
|
|
16
|
+
" plugin path <host> Print a verified Codex marketplace or Claude plugin path.",
|
|
16
17
|
" observe <path> Report Java/Spring observer findings for a file or directory.",
|
|
17
18
|
" context Inspect the experimental default-off Context track.",
|
|
18
19
|
" authority Inspect or enroll bounded external consumer authority.",
|
|
@@ -29,6 +30,7 @@ function englishUsage(invocationName) {
|
|
|
29
30
|
` ${invocationName} doctor`,
|
|
30
31
|
` ${invocationName} update enable --yes`,
|
|
31
32
|
` ${invocationName} update repair --yes`,
|
|
33
|
+
` ${invocationName} plugin path codex`,
|
|
32
34
|
` ${invocationName} observe src/main/java`,
|
|
33
35
|
` ${invocationName} context status`,
|
|
34
36
|
` ${invocationName} authority status`,
|
|
@@ -51,6 +53,7 @@ function koreanUsage(invocationName) {
|
|
|
51
53
|
" go <goal> | --stdin 구체적인 목표를 현재 ticket과 구현 rail로 연결하는 단일 진입점입니다.",
|
|
52
54
|
" doctor 로컬 OpenCode 및 Persona Harness 설치 상태를 진단합니다.",
|
|
53
55
|
" update 프로젝트별 자동 Persona Harness 업데이트를 제어합니다.",
|
|
56
|
+
" plugin path <host> 검증된 Codex marketplace 또는 Claude 플러그인 경로를 출력합니다.",
|
|
54
57
|
" observe <path> 파일 또는 디렉터리의 Java/Spring observer 관측 결과를 보고합니다.",
|
|
55
58
|
" context 실험적 기본 비활성 Context 트랙을 확인합니다.",
|
|
56
59
|
" authority 제한된 외부 consumer authority 상태를 확인하거나 등록합니다.",
|
|
@@ -69,6 +72,7 @@ function koreanUsage(invocationName) {
|
|
|
69
72
|
` ${invocationName} doctor`,
|
|
70
73
|
` ${invocationName} update enable --yes`,
|
|
71
74
|
` ${invocationName} update repair --yes`,
|
|
75
|
+
` ${invocationName} plugin path codex`,
|
|
72
76
|
` ${invocationName} observe src/main/java`,
|
|
73
77
|
` ${invocationName} context status`,
|
|
74
78
|
` ${invocationName} authority status`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-usage.js","sourceRoot":"","sources":["../../src/cli/cli-usage.ts"],"names":[],"mappings":"AAEA,SAAS,YAAY,CAAC,cAAsB;IAC1C,OAAO;QACL,UAAU,cAAc,sBAAsB;QAC9C,EAAE;QACF,iBAAiB;QACjB,qEAAqE;QACrE,gFAAgF;QAChF,EAAE;QACF,kBAAkB;QAClB,4EAA4E;QAC5E,2FAA2F;QAC3F,iGAAiG;QACjG,+HAA+H;QAC/H,gGAAgG;QAChG,gGAAgG;QAChG,8FAA8F;QAC9F,oFAAoF;QACpF,uFAAuF;QACvF,4GAA4G;QAC5G,uFAAuF;QACvF,EAAE;QACF,WAAW;QACX,KAAK,cAAc,UAAU;QAC7B,KAAK,cAAc,YAAY;QAC/B,KAAK,cAAc,OAAO;QAC1B,KAAK,cAAc,eAAe;QAClC,KAAK,cAAc,qCAAqC;QACxD,mCAAmC,cAAc,aAAa;QAC9D,KAAK,cAAc,SAAS;QAC5B,KAAK,cAAc,sBAAsB;QACzC,KAAK,cAAc,sBAAsB;QACzC,KAAK,cAAc,wBAAwB;QAC3C,KAAK,cAAc,iBAAiB;QACpC,KAAK,cAAc,mBAAmB;QACtC,KAAK,cAAc,mDAAmD;QACtE,KAAK,cAAc,oBAAoB;KACxC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,WAAW,CAAC,cAAsB;IACzC,OAAO;QACL,QAAQ,cAAc,eAAe;QACrC,EAAE;QACF,QAAQ;QACR,qDAAqD;QACrD,oEAAoE;QACpE,EAAE;QACF,QAAQ;QACR,gEAAgE;QAChE,6EAA6E;QAC7E,6EAA6E;QAC7E,8EAA8E;QAC9E,4EAA4E;QAC5E,sEAAsE;QACtE,+EAA+E;QAC/E,8DAA8D;QAC9D,2EAA2E;QAC3E,qFAAqF;QACrF,0EAA0E;QAC1E,EAAE;QACF,mCAAmC;QACnC,EAAE;QACF,KAAK;QACL,KAAK,cAAc,UAAU;QAC7B,KAAK,cAAc,YAAY;QAC/B,KAAK,cAAc,OAAO;QAC1B,KAAK,cAAc,eAAe;QAClC,KAAK,cAAc,6BAA6B;QAChD,sCAAsC,cAAc,aAAa;QACjE,KAAK,cAAc,SAAS;QAC5B,KAAK,cAAc,sBAAsB;QACzC,KAAK,cAAc,sBAAsB;QACzC,KAAK,cAAc,wBAAwB;QAC3C,KAAK,cAAc,iBAAiB;QACpC,KAAK,cAAc,mBAAmB;QACtC,KAAK,cAAc,mDAAmD;QACtE,KAAK,cAAc,oBAAoB;KACxC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,cAAsB,EAAE,SAAwB,IAAI;IAClF,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;AACrF,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli-usage.js","sourceRoot":"","sources":["../../src/cli/cli-usage.ts"],"names":[],"mappings":"AAEA,SAAS,YAAY,CAAC,cAAsB;IAC1C,OAAO;QACL,UAAU,cAAc,sBAAsB;QAC9C,EAAE;QACF,iBAAiB;QACjB,qEAAqE;QACrE,gFAAgF;QAChF,EAAE;QACF,kBAAkB;QAClB,4EAA4E;QAC5E,2FAA2F;QAC3F,iGAAiG;QACjG,+HAA+H;QAC/H,gGAAgG;QAChG,gGAAgG;QAChG,0FAA0F;QAC1F,8FAA8F;QAC9F,oFAAoF;QACpF,uFAAuF;QACvF,4GAA4G;QAC5G,uFAAuF;QACvF,EAAE;QACF,WAAW;QACX,KAAK,cAAc,UAAU;QAC7B,KAAK,cAAc,YAAY;QAC/B,KAAK,cAAc,OAAO;QAC1B,KAAK,cAAc,eAAe;QAClC,KAAK,cAAc,qCAAqC;QACxD,mCAAmC,cAAc,aAAa;QAC9D,KAAK,cAAc,SAAS;QAC5B,KAAK,cAAc,sBAAsB;QACzC,KAAK,cAAc,sBAAsB;QACzC,KAAK,cAAc,oBAAoB;QACvC,KAAK,cAAc,wBAAwB;QAC3C,KAAK,cAAc,iBAAiB;QACpC,KAAK,cAAc,mBAAmB;QACtC,KAAK,cAAc,mDAAmD;QACtE,KAAK,cAAc,oBAAoB;KACxC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,WAAW,CAAC,cAAsB;IACzC,OAAO;QACL,QAAQ,cAAc,eAAe;QACrC,EAAE;QACF,QAAQ;QACR,qDAAqD;QACrD,oEAAoE;QACpE,EAAE;QACF,QAAQ;QACR,gEAAgE;QAChE,6EAA6E;QAC7E,6EAA6E;QAC7E,8EAA8E;QAC9E,4EAA4E;QAC5E,sEAAsE;QACtE,gFAAgF;QAChF,+EAA+E;QAC/E,8DAA8D;QAC9D,2EAA2E;QAC3E,qFAAqF;QACrF,0EAA0E;QAC1E,EAAE;QACF,mCAAmC;QACnC,EAAE;QACF,KAAK;QACL,KAAK,cAAc,UAAU;QAC7B,KAAK,cAAc,YAAY;QAC/B,KAAK,cAAc,OAAO;QAC1B,KAAK,cAAc,eAAe;QAClC,KAAK,cAAc,6BAA6B;QAChD,sCAAsC,cAAc,aAAa;QACjE,KAAK,cAAc,SAAS;QAC5B,KAAK,cAAc,sBAAsB;QACzC,KAAK,cAAc,sBAAsB;QACzC,KAAK,cAAc,oBAAoB;QACvC,KAAK,cAAc,wBAAwB;QAC3C,KAAK,cAAc,iBAAiB;QACpC,KAAK,cAAc,mBAAmB;QACtC,KAAK,cAAc,mDAAmD;QACtE,KAAK,cAAc,oBAAoB;KACxC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,cAAsB,EAAE,SAAwB,IAAI;IAClF,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;AACrF,CAAC"}
|
|
@@ -57,6 +57,7 @@ export function formatDoctorSummary(summary) {
|
|
|
57
57
|
`Project-local OpenCode plugin registration: ${summary.reachability.projectPluginState}`,
|
|
58
58
|
`OpenCode native shared-skill metadata: ${formatNativeCatalog(summary)}`,
|
|
59
59
|
"OpenCode plugin adapter reachability: UNOBSERVED (doctor does not inspect a running host session)",
|
|
60
|
+
`OpenCode shared-skill routing configuration: ${formatSharedSkillRouting(summary)}`,
|
|
60
61
|
`OpenCode automatic advisory route: ${summary.opencodeSharedSkillRouting.automaticRoute === "configured" ? "CONFIGURED (not host-observed)" : summary.opencodeSharedSkillRouting.automaticRoute === "disabled" ? "OFF" : "UNAVAILABLE"}`,
|
|
61
62
|
"OpenCode current skill selection: UNOBSERVED (doctor does not inspect a running host session)",
|
|
62
63
|
"OpenCode host route delivery: UNOBSERVED (doctor does not inspect a running host session)",
|
|
@@ -139,6 +140,7 @@ export function doctorJson(summary) {
|
|
|
139
140
|
preview: {
|
|
140
141
|
entrySteering: summary.entrySteeringEnabled,
|
|
141
142
|
runtimeInjection: config.config.features.runtimeInjection,
|
|
143
|
+
sharedSkillRouting: config.config.features.sharedSkillRouting,
|
|
142
144
|
},
|
|
143
145
|
privacy: {
|
|
144
146
|
diagnostics: "bounded",
|
|
@@ -172,6 +174,14 @@ function formatNativeCatalog(summary) {
|
|
|
172
174
|
? `READY (${catalog.describedSkillCount}/${catalog.skillCount} described)`
|
|
173
175
|
: catalog.state.toUpperCase();
|
|
174
176
|
}
|
|
177
|
+
function formatSharedSkillRouting(summary) {
|
|
178
|
+
const state = summary.opencodeSharedSkillRouting.automaticRoute;
|
|
179
|
+
return state === "configured"
|
|
180
|
+
? "ON (not host-observed)"
|
|
181
|
+
: state === "disabled"
|
|
182
|
+
? "OFF"
|
|
183
|
+
: "UNAVAILABLE";
|
|
184
|
+
}
|
|
175
185
|
function formatRulePackDiagnostic(item) {
|
|
176
186
|
const field = item.diagnostic.field === undefined ? "-" : item.diagnostic.field;
|
|
177
187
|
return `- ${item.path} [${item.diagnostic.code}/${field}]: ${item.diagnostic.message}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-output.js","sourceRoot":"","sources":["../../src/cli/doctor-output.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"doctor-output.js","sourceRoot":"","sources":["../../src/cli/doctor-output.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/doctor.js
CHANGED
|
@@ -60,7 +60,7 @@ export function readDoctorSummary(options = {}) {
|
|
|
60
60
|
enabled: harnessConfig.enabled,
|
|
61
61
|
enabledDomains: harnessConfig.enabledDomains,
|
|
62
62
|
pluginConfigured: reachability.projectPluginState === "configured",
|
|
63
|
-
|
|
63
|
+
sharedSkillRouting: harnessConfig.features.sharedSkillRouting,
|
|
64
64
|
});
|
|
65
65
|
const packageVersionValue = packageVersion();
|
|
66
66
|
const registryDetails = registrySummary(packageVersionValue, options);
|
package/dist/cli/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CliRunResult } from "./bearshell.js";
|
|
2
|
+
export type HostPluginCommandOptions = {
|
|
3
|
+
readonly packageRoot?: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function runHostPluginCommand(args: readonly string[], options?: HostPluginCommandOptions, invocationName?: string): CliRunResult;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { HOST_PLUGIN_HOSTS, HostPluginDistributionError, hostPluginDistributionPath, } from "./host-plugin-distribution.js";
|
|
3
|
+
function hostPluginUsage(invocationName) {
|
|
4
|
+
return [
|
|
5
|
+
`Usage: ${invocationName} plugin path <codex|claude>`,
|
|
6
|
+
"",
|
|
7
|
+
"Print a verified, read-only installed plugin path. This command never registers a marketplace or edits host configuration.",
|
|
8
|
+
].join("\n");
|
|
9
|
+
}
|
|
10
|
+
function parseHost(value) {
|
|
11
|
+
return HOST_PLUGIN_HOSTS.find((host) => host === value);
|
|
12
|
+
}
|
|
13
|
+
export function runHostPluginCommand(args, options = {}, invocationName = "ph") {
|
|
14
|
+
if (args.length === 1 && (args[0] === "--help" || args[0] === "-h" || args[0] === "help")) {
|
|
15
|
+
return { status: 0, stdout: `${hostPluginUsage(invocationName)}\n`, stderr: "" };
|
|
16
|
+
}
|
|
17
|
+
const host = parseHost(args[1]);
|
|
18
|
+
if (args.length !== 2 || args[0] !== "path" || host === undefined) {
|
|
19
|
+
return { status: 1, stdout: "", stderr: `${hostPluginUsage(invocationName)}\n` };
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const root = options.packageRoot ?? process.cwd();
|
|
23
|
+
return { status: 0, stdout: `${hostPluginDistributionPath(root, host)}\n`, stderr: "" };
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
if (error instanceof HostPluginDistributionError) {
|
|
27
|
+
return { status: 1, stdout: "", stderr: `${error.code}\n` };
|
|
28
|
+
}
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=host-plugin-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-plugin-command.js","sourceRoot":"","sources":["../../src/cli/host-plugin-command.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAA;AAGlC,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,0BAA0B,GAE3B,MAAM,+BAA+B,CAAA;AAMtC,SAAS,eAAe,CAAC,cAAsB;IAC7C,OAAO;QACL,UAAU,cAAc,6BAA6B;QACrD,EAAE;QACF,4HAA4H;KAC7H,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,SAAS,CAAC,KAAyB;IAC1C,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAuB,EACvB,UAAoC,EAAE,EACtC,cAAc,GAAG,IAAI;IAErB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC;QAC1F,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;IAClF,CAAC;IACD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAClE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;IAClF,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;QACjD,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;IACzF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,2BAA2B,EAAE,CAAC;YACjD,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAA;QAC7D,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const HOST_PLUGIN_HOSTS: readonly ["codex", "claude"];
|
|
2
|
+
export type HostPluginHost = typeof HOST_PLUGIN_HOSTS[number];
|
|
3
|
+
export type HostPluginDistributionTarget = {
|
|
4
|
+
readonly nextBytes: Buffer;
|
|
5
|
+
readonly relativePath: string;
|
|
6
|
+
};
|
|
7
|
+
export type HostPluginDistributionPaths = {
|
|
8
|
+
readonly claudePluginRoot: string;
|
|
9
|
+
readonly codexMarketplaceRoot: string;
|
|
10
|
+
};
|
|
11
|
+
export type HostPluginWriteOptions = {
|
|
12
|
+
readonly replace?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare class HostPluginDistributionError extends Error {
|
|
15
|
+
readonly code: string;
|
|
16
|
+
constructor(code: string);
|
|
17
|
+
}
|
|
18
|
+
export declare function buildHostPluginDistributionTargets(packageRoot: string): readonly HostPluginDistributionTarget[];
|
|
19
|
+
export declare function verifyHostPluginDistribution(packageRoot: string): HostPluginDistributionPaths;
|
|
20
|
+
export declare function hostPluginDistributionPath(packageRoot: string, host: HostPluginHost): string;
|
|
21
|
+
export declare function writeHostPluginDistribution(packageRoot: string, options?: HostPluginWriteOptions): HostPluginDistributionPaths;
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
import { existsSync, lstatSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import { dirname, join, relative, resolve, sep } from "node:path";
|
|
3
|
+
import { HOST_SKILL_LAYOUTS, buildHostSkillAdapterTargets, } from "./host-skill-materializer.js";
|
|
4
|
+
import { listPersonaSharedSkillsFromPackageRoot } from "../runtime/persona-shared-skill-catalog.js";
|
|
5
|
+
const PACKAGE_NAME = "persona-harness";
|
|
6
|
+
const HOST_PLUGIN_ROOT = "packages/host-plugins";
|
|
7
|
+
const REPOSITORY_URL = "https://github.com/jyt6640/persona-harness";
|
|
8
|
+
export const HOST_PLUGIN_HOSTS = ["codex", "claude"];
|
|
9
|
+
const HOST_PLUGIN_LAYOUTS = [
|
|
10
|
+
{
|
|
11
|
+
host: "codex",
|
|
12
|
+
sourceLayout: "agents",
|
|
13
|
+
skillRoot: "packages/host-plugins/codex/plugins/persona-harness/skills",
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
host: "claude",
|
|
17
|
+
sourceLayout: "claude",
|
|
18
|
+
skillRoot: "packages/host-plugins/claude/skills",
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
export class HostPluginDistributionError extends Error {
|
|
22
|
+
code;
|
|
23
|
+
constructor(code) {
|
|
24
|
+
super(code);
|
|
25
|
+
this.code = code;
|
|
26
|
+
this.name = "HostPluginDistributionError";
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function isRecord(value) {
|
|
30
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
31
|
+
}
|
|
32
|
+
function safeStat(path, code) {
|
|
33
|
+
try {
|
|
34
|
+
return lstatSync(path);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
throw new HostPluginDistributionError(code);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function packageRootPath(packageRoot) {
|
|
41
|
+
const root = resolve(packageRoot);
|
|
42
|
+
const stat = safeStat(root, "host-plugin-distribution-package-root");
|
|
43
|
+
if (!stat.isDirectory() || stat.isSymbolicLink()) {
|
|
44
|
+
throw new HostPluginDistributionError("host-plugin-distribution-package-root");
|
|
45
|
+
}
|
|
46
|
+
return root;
|
|
47
|
+
}
|
|
48
|
+
function packagePath(root, relativePath) {
|
|
49
|
+
const path = resolve(root, relativePath);
|
|
50
|
+
const escaped = relative(root, path);
|
|
51
|
+
if (escaped === ".." || escaped.startsWith(`..${sep}`) || escaped.startsWith(sep)) {
|
|
52
|
+
throw new HostPluginDistributionError("host-plugin-distribution-path");
|
|
53
|
+
}
|
|
54
|
+
return path;
|
|
55
|
+
}
|
|
56
|
+
function assertNoFollowSegments(root, relativePath, allowMissing) {
|
|
57
|
+
let current = root;
|
|
58
|
+
for (const segment of relativePath.split("/")) {
|
|
59
|
+
current = join(current, segment);
|
|
60
|
+
if (!existsSync(current)) {
|
|
61
|
+
if (allowMissing)
|
|
62
|
+
return;
|
|
63
|
+
throw new HostPluginDistributionError("host-plugin-distribution-missing");
|
|
64
|
+
}
|
|
65
|
+
const stat = safeStat(current, "host-plugin-distribution-path");
|
|
66
|
+
if (stat.isSymbolicLink()) {
|
|
67
|
+
throw new HostPluginDistributionError("host-plugin-distribution-symlink");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function readPackageIdentity(root) {
|
|
72
|
+
const relativePath = "package.json";
|
|
73
|
+
assertNoFollowSegments(root, relativePath, false);
|
|
74
|
+
const path = packagePath(root, relativePath);
|
|
75
|
+
const stat = safeStat(path, "host-plugin-distribution-package");
|
|
76
|
+
if (!stat.isFile() || stat.isSymbolicLink()) {
|
|
77
|
+
throw new HostPluginDistributionError("host-plugin-distribution-package");
|
|
78
|
+
}
|
|
79
|
+
let parsed;
|
|
80
|
+
try {
|
|
81
|
+
parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
throw new HostPluginDistributionError("host-plugin-distribution-package");
|
|
85
|
+
}
|
|
86
|
+
if (!isRecord(parsed) || parsed.name !== PACKAGE_NAME || typeof parsed.version !== "string" || !/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/u.test(parsed.version)) {
|
|
87
|
+
throw new HostPluginDistributionError("host-plugin-distribution-package");
|
|
88
|
+
}
|
|
89
|
+
return { name: PACKAGE_NAME, version: parsed.version };
|
|
90
|
+
}
|
|
91
|
+
function serializeJson(value) {
|
|
92
|
+
return Buffer.from(`${JSON.stringify(value, null, 2)}\n`, "utf8");
|
|
93
|
+
}
|
|
94
|
+
function hostAdapterBytes(packageRoot, skills, sourceLayout) {
|
|
95
|
+
const layout = HOST_SKILL_LAYOUTS.find((candidate) => candidate.id === sourceLayout);
|
|
96
|
+
if (layout === undefined)
|
|
97
|
+
throw new HostPluginDistributionError("host-plugin-distribution-layout");
|
|
98
|
+
const adapters = buildHostSkillAdapterTargets(packageRoot);
|
|
99
|
+
const bySkill = new Map();
|
|
100
|
+
for (const skill of skills) {
|
|
101
|
+
const expectedPath = `${layout.root}/${layout.namePrefix}-${skill.id}/SKILL.md`;
|
|
102
|
+
const adapter = adapters.find((candidate) => candidate.relativePath === expectedPath);
|
|
103
|
+
if (adapter === undefined || bySkill.has(skill.id)) {
|
|
104
|
+
throw new HostPluginDistributionError("host-plugin-distribution-canonical-binding");
|
|
105
|
+
}
|
|
106
|
+
bySkill.set(skill.id, adapter.nextBytes);
|
|
107
|
+
}
|
|
108
|
+
return bySkill;
|
|
109
|
+
}
|
|
110
|
+
function codexPluginManifest(identity) {
|
|
111
|
+
return serializeJson({
|
|
112
|
+
name: PACKAGE_NAME,
|
|
113
|
+
version: identity.version,
|
|
114
|
+
description: "Portable Persona Harness shared skills for Codex.",
|
|
115
|
+
author: {
|
|
116
|
+
name: "Persona Harness",
|
|
117
|
+
url: REPOSITORY_URL,
|
|
118
|
+
},
|
|
119
|
+
homepage: `${REPOSITORY_URL}#portable-host-adapters`,
|
|
120
|
+
repository: REPOSITORY_URL,
|
|
121
|
+
license: "Apache-2.0",
|
|
122
|
+
keywords: ["ai-coding", "codex", "persona-harness", "skills"],
|
|
123
|
+
skills: "./skills/",
|
|
124
|
+
interface: {
|
|
125
|
+
displayName: "Persona Harness",
|
|
126
|
+
shortDescription: "Portable engineering skills for Codex.",
|
|
127
|
+
longDescription: "A versioned, canonical Persona Harness skill catalog for Codex project workflows.",
|
|
128
|
+
developerName: "Persona Harness",
|
|
129
|
+
category: "Productivity",
|
|
130
|
+
capabilities: ["Skills"],
|
|
131
|
+
websiteURL: REPOSITORY_URL,
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
function codexMarketplaceManifest() {
|
|
136
|
+
return serializeJson({
|
|
137
|
+
name: PACKAGE_NAME,
|
|
138
|
+
interface: {
|
|
139
|
+
displayName: "Persona Harness",
|
|
140
|
+
},
|
|
141
|
+
plugins: [
|
|
142
|
+
{
|
|
143
|
+
name: PACKAGE_NAME,
|
|
144
|
+
source: {
|
|
145
|
+
source: "local",
|
|
146
|
+
path: "./plugins/persona-harness",
|
|
147
|
+
},
|
|
148
|
+
policy: {
|
|
149
|
+
installation: "AVAILABLE",
|
|
150
|
+
authentication: "ON_INSTALL",
|
|
151
|
+
},
|
|
152
|
+
category: "Productivity",
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
function claudePluginManifest(identity) {
|
|
158
|
+
return serializeJson({
|
|
159
|
+
$schema: "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
160
|
+
name: PACKAGE_NAME,
|
|
161
|
+
version: identity.version,
|
|
162
|
+
description: "Portable Persona Harness shared skills for Claude Code.",
|
|
163
|
+
author: {
|
|
164
|
+
name: "Persona Harness",
|
|
165
|
+
url: REPOSITORY_URL,
|
|
166
|
+
},
|
|
167
|
+
homepage: `${REPOSITORY_URL}#portable-host-adapters`,
|
|
168
|
+
repository: REPOSITORY_URL,
|
|
169
|
+
license: "Apache-2.0",
|
|
170
|
+
keywords: ["ai-coding", "claude-code", "persona-harness", "skills"],
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
function pluginManifestPath(host) {
|
|
174
|
+
return host === "codex"
|
|
175
|
+
? "packages/host-plugins/codex/plugins/persona-harness/.codex-plugin/plugin.json"
|
|
176
|
+
: "packages/host-plugins/claude/.claude-plugin/plugin.json";
|
|
177
|
+
}
|
|
178
|
+
function pluginSkillPath(layout, skill) {
|
|
179
|
+
return `${layout.skillRoot}/${skill.id}/SKILL.md`;
|
|
180
|
+
}
|
|
181
|
+
export function buildHostPluginDistributionTargets(packageRoot) {
|
|
182
|
+
const root = packageRootPath(packageRoot);
|
|
183
|
+
const identity = readPackageIdentity(root);
|
|
184
|
+
let skills;
|
|
185
|
+
try {
|
|
186
|
+
skills = listPersonaSharedSkillsFromPackageRoot(root);
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
throw new HostPluginDistributionError("host-plugin-distribution-catalog");
|
|
190
|
+
}
|
|
191
|
+
const uniqueSkills = new Set(skills.map((skill) => skill.id));
|
|
192
|
+
if (uniqueSkills.size !== skills.length || skills.length === 0) {
|
|
193
|
+
throw new HostPluginDistributionError("host-plugin-distribution-catalog");
|
|
194
|
+
}
|
|
195
|
+
const targets = [
|
|
196
|
+
{
|
|
197
|
+
relativePath: "packages/host-plugins/codex/.agents/plugins/marketplace.json",
|
|
198
|
+
nextBytes: codexMarketplaceManifest(),
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
relativePath: pluginManifestPath("codex"),
|
|
202
|
+
nextBytes: codexPluginManifest(identity),
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
relativePath: pluginManifestPath("claude"),
|
|
206
|
+
nextBytes: claudePluginManifest(identity),
|
|
207
|
+
},
|
|
208
|
+
];
|
|
209
|
+
for (const layout of HOST_PLUGIN_LAYOUTS) {
|
|
210
|
+
const adapters = hostAdapterBytes(root, skills, layout.sourceLayout);
|
|
211
|
+
for (const skill of skills) {
|
|
212
|
+
const adapter = adapters.get(skill.id);
|
|
213
|
+
if (adapter === undefined) {
|
|
214
|
+
throw new HostPluginDistributionError("host-plugin-distribution-canonical-binding");
|
|
215
|
+
}
|
|
216
|
+
targets.push({ relativePath: pluginSkillPath(layout, skill), nextBytes: adapter });
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
const paths = new Set();
|
|
220
|
+
for (const target of targets) {
|
|
221
|
+
if (!target.relativePath.startsWith(`${HOST_PLUGIN_ROOT}/`) || paths.has(target.relativePath)) {
|
|
222
|
+
throw new HostPluginDistributionError("host-plugin-distribution-targets");
|
|
223
|
+
}
|
|
224
|
+
paths.add(target.relativePath);
|
|
225
|
+
}
|
|
226
|
+
return targets.sort((left, right) => left.relativePath.localeCompare(right.relativePath));
|
|
227
|
+
}
|
|
228
|
+
function listArtifactFiles(root, current = root) {
|
|
229
|
+
const entries = readdirSync(current, { withFileTypes: true }).sort((left, right) => left.name.localeCompare(right.name));
|
|
230
|
+
const files = [];
|
|
231
|
+
for (const entry of entries) {
|
|
232
|
+
const path = join(current, entry.name);
|
|
233
|
+
const stat = safeStat(path, "host-plugin-distribution-artifact");
|
|
234
|
+
if (stat.isSymbolicLink()) {
|
|
235
|
+
throw new HostPluginDistributionError("host-plugin-distribution-symlink");
|
|
236
|
+
}
|
|
237
|
+
if (stat.isDirectory()) {
|
|
238
|
+
files.push(...listArtifactFiles(root, path));
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
if (!stat.isFile()) {
|
|
242
|
+
throw new HostPluginDistributionError("host-plugin-distribution-artifact");
|
|
243
|
+
}
|
|
244
|
+
files.push(relative(root, path).replace(/\\/g, "/"));
|
|
245
|
+
}
|
|
246
|
+
return files;
|
|
247
|
+
}
|
|
248
|
+
function assertExactArtifactTree(root, targets) {
|
|
249
|
+
const artifactRoot = packagePath(root, HOST_PLUGIN_ROOT);
|
|
250
|
+
assertNoFollowSegments(root, HOST_PLUGIN_ROOT, false);
|
|
251
|
+
const rootStat = safeStat(artifactRoot, "host-plugin-distribution-missing");
|
|
252
|
+
if (!rootStat.isDirectory() || rootStat.isSymbolicLink()) {
|
|
253
|
+
throw new HostPluginDistributionError("host-plugin-distribution-missing");
|
|
254
|
+
}
|
|
255
|
+
const actual = new Set(listArtifactFiles(artifactRoot));
|
|
256
|
+
const expected = new Set(targets.map((target) => target.relativePath.slice(`${HOST_PLUGIN_ROOT}/`.length)));
|
|
257
|
+
if (actual.size !== expected.size || [...actual].some((path) => !expected.has(path))) {
|
|
258
|
+
throw new HostPluginDistributionError("host-plugin-distribution-artifact-set");
|
|
259
|
+
}
|
|
260
|
+
for (const target of targets) {
|
|
261
|
+
assertNoFollowSegments(root, target.relativePath, false);
|
|
262
|
+
const path = packagePath(root, target.relativePath);
|
|
263
|
+
const stat = safeStat(path, "host-plugin-distribution-missing");
|
|
264
|
+
if (!stat.isFile() || stat.isSymbolicLink() || !readFileSync(path).equals(target.nextBytes)) {
|
|
265
|
+
throw new HostPluginDistributionError("host-plugin-distribution-artifact");
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
function distributionPaths(root) {
|
|
270
|
+
return {
|
|
271
|
+
claudePluginRoot: packagePath(root, "packages/host-plugins/claude"),
|
|
272
|
+
codexMarketplaceRoot: packagePath(root, "packages/host-plugins/codex"),
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
export function verifyHostPluginDistribution(packageRoot) {
|
|
276
|
+
const root = packageRootPath(packageRoot);
|
|
277
|
+
assertExactArtifactTree(root, buildHostPluginDistributionTargets(root));
|
|
278
|
+
return distributionPaths(root);
|
|
279
|
+
}
|
|
280
|
+
export function hostPluginDistributionPath(packageRoot, host) {
|
|
281
|
+
const paths = verifyHostPluginDistribution(packageRoot);
|
|
282
|
+
return host === "codex" ? paths.codexMarketplaceRoot : paths.claudePluginRoot;
|
|
283
|
+
}
|
|
284
|
+
export function writeHostPluginDistribution(packageRoot, options = {}) {
|
|
285
|
+
const root = packageRootPath(packageRoot);
|
|
286
|
+
const targets = buildHostPluginDistributionTargets(root);
|
|
287
|
+
const artifactRoot = packagePath(root, HOST_PLUGIN_ROOT);
|
|
288
|
+
if (existsSync(artifactRoot)) {
|
|
289
|
+
if (options.replace !== true) {
|
|
290
|
+
return verifyHostPluginDistribution(root);
|
|
291
|
+
}
|
|
292
|
+
assertNoFollowSegments(root, HOST_PLUGIN_ROOT, false);
|
|
293
|
+
const stat = safeStat(artifactRoot, "host-plugin-distribution-artifact");
|
|
294
|
+
if (!stat.isDirectory() || stat.isSymbolicLink()) {
|
|
295
|
+
throw new HostPluginDistributionError("host-plugin-distribution-artifact");
|
|
296
|
+
}
|
|
297
|
+
rmSync(artifactRoot, { force: true, recursive: true });
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
assertNoFollowSegments(root, "packages", false);
|
|
301
|
+
}
|
|
302
|
+
for (const target of targets) {
|
|
303
|
+
const path = packagePath(root, target.relativePath);
|
|
304
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
305
|
+
writeFileSync(path, target.nextBytes, { mode: 0o644 });
|
|
306
|
+
}
|
|
307
|
+
return verifyHostPluginDistribution(root);
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=host-plugin-distribution.js.map
|