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.
Files changed (79) hide show
  1. package/.persona/harness.jsonc +2 -1
  2. package/CHANGELOG.md +29 -0
  3. package/README.md +21 -3
  4. package/dist/cli/cli-usage.js +4 -0
  5. package/dist/cli/cli-usage.js.map +1 -1
  6. package/dist/cli/doctor-output.js +10 -0
  7. package/dist/cli/doctor-output.js.map +1 -1
  8. package/dist/cli/doctor.js +1 -1
  9. package/dist/cli/doctor.js.map +1 -1
  10. package/dist/cli/host-plugin-command.d.ts +5 -0
  11. package/dist/cli/host-plugin-command.js +32 -0
  12. package/dist/cli/host-plugin-command.js.map +1 -0
  13. package/dist/cli/host-plugin-distribution.d.ts +21 -0
  14. package/dist/cli/host-plugin-distribution.js +309 -0
  15. package/dist/cli/host-plugin-distribution.js.map +1 -0
  16. package/dist/cli/index.js +4 -0
  17. package/dist/cli/index.js.map +1 -1
  18. package/dist/cli/init-harness-overlay.js +8 -1
  19. package/dist/cli/init-harness-overlay.js.map +1 -1
  20. package/dist/config/harness-config.d.ts +7 -0
  21. package/dist/config/harness-config.js +7 -0
  22. package/dist/config/harness-config.js.map +1 -1
  23. package/dist/runtime/hooks.js +24 -14
  24. package/dist/runtime/hooks.js.map +1 -1
  25. package/dist/runtime/opencode-shared-skill-routing-status.d.ts +1 -1
  26. package/dist/runtime/opencode-shared-skill-routing-status.js +1 -1
  27. package/dist/runtime/opencode-shared-skill-routing-status.js.map +1 -1
  28. package/dist/runtime/opencode-skill-adapter.js +1 -1
  29. package/dist/runtime/opencode-skill-adapter.js.map +1 -1
  30. package/dist/runtime/persona-setup.d.ts +12 -0
  31. package/dist/runtime/persona-setup.js +99 -0
  32. package/dist/runtime/persona-setup.js.map +1 -0
  33. package/docs/current/harness-default-audit.md +1 -0
  34. package/docs/current/persona-shared-skills-core.md +27 -8
  35. package/docs/current/portable-host-adapters.md +56 -4
  36. package/docs/current/release/consumer-authority-current-acceptance.json +1 -1
  37. package/docs/current/release/v0.10.0-release-notes.md +52 -0
  38. package/docs/current/release/v0.11.0-release-notes.md +50 -0
  39. package/package.json +7 -3
  40. package/packages/host-plugins/claude/.claude-plugin/plugin.json +19 -0
  41. package/packages/host-plugins/claude/skills/ast-grep/SKILL.md +22 -0
  42. package/packages/host-plugins/claude/skills/debug/SKILL.md +22 -0
  43. package/packages/host-plugins/claude/skills/deep-interview/SKILL.md +32 -0
  44. package/packages/host-plugins/claude/skills/frontend/SKILL.md +22 -0
  45. package/packages/host-plugins/claude/skills/git/SKILL.md +22 -0
  46. package/packages/host-plugins/claude/skills/grill-me/SKILL.md +38 -0
  47. package/packages/host-plugins/claude/skills/implementation/SKILL.md +23 -0
  48. package/packages/host-plugins/claude/skills/lsp-setup/SKILL.md +22 -0
  49. package/packages/host-plugins/claude/skills/philosophy-refinement/SKILL.md +41 -0
  50. package/packages/host-plugins/claude/skills/plan/SKILL.md +24 -0
  51. package/packages/host-plugins/claude/skills/programming/SKILL.md +28 -0
  52. package/packages/host-plugins/claude/skills/ralplan/SKILL.md +23 -0
  53. package/packages/host-plugins/claude/skills/refactor/SKILL.md +22 -0
  54. package/packages/host-plugins/claude/skills/review/SKILL.md +22 -0
  55. package/packages/host-plugins/claude/skills/tdd/SKILL.md +23 -0
  56. package/packages/host-plugins/claude/skills/technical-intake/SKILL.md +24 -0
  57. package/packages/host-plugins/claude/skills/visual-qa/SKILL.md +22 -0
  58. package/packages/host-plugins/codex/.agents/plugins/marketplace.json +20 -0
  59. package/packages/host-plugins/codex/plugins/persona-harness/.codex-plugin/plugin.json +30 -0
  60. package/packages/host-plugins/codex/plugins/persona-harness/skills/ast-grep/SKILL.md +22 -0
  61. package/packages/host-plugins/codex/plugins/persona-harness/skills/debug/SKILL.md +22 -0
  62. package/packages/host-plugins/codex/plugins/persona-harness/skills/deep-interview/SKILL.md +32 -0
  63. package/packages/host-plugins/codex/plugins/persona-harness/skills/frontend/SKILL.md +22 -0
  64. package/packages/host-plugins/codex/plugins/persona-harness/skills/git/SKILL.md +22 -0
  65. package/packages/host-plugins/codex/plugins/persona-harness/skills/grill-me/SKILL.md +38 -0
  66. package/packages/host-plugins/codex/plugins/persona-harness/skills/implementation/SKILL.md +23 -0
  67. package/packages/host-plugins/codex/plugins/persona-harness/skills/lsp-setup/SKILL.md +22 -0
  68. package/packages/host-plugins/codex/plugins/persona-harness/skills/philosophy-refinement/SKILL.md +41 -0
  69. package/packages/host-plugins/codex/plugins/persona-harness/skills/plan/SKILL.md +24 -0
  70. package/packages/host-plugins/codex/plugins/persona-harness/skills/programming/SKILL.md +28 -0
  71. package/packages/host-plugins/codex/plugins/persona-harness/skills/ralplan/SKILL.md +23 -0
  72. package/packages/host-plugins/codex/plugins/persona-harness/skills/refactor/SKILL.md +22 -0
  73. package/packages/host-plugins/codex/plugins/persona-harness/skills/review/SKILL.md +22 -0
  74. package/packages/host-plugins/codex/plugins/persona-harness/skills/tdd/SKILL.md +23 -0
  75. package/packages/host-plugins/codex/plugins/persona-harness/skills/technical-intake/SKILL.md +24 -0
  76. package/packages/host-plugins/codex/plugins/persona-harness/skills/visual-qa/SKILL.md +22 -0
  77. package/packages/shared-skills/README.md +2 -1
  78. package/packages/shared-skills/package.json +1 -1
  79. package/scripts/check-host-skill-plugins.mjs +14 -0
@@ -9,7 +9,8 @@
9
9
  "features": {
10
10
  "entrySteering": false,
11
11
  "projectPhilosophyInjection": true,
12
- "runtimeInjection": false
12
+ "runtimeInjection": false,
13
+ "sharedSkillRouting": true
13
14
  },
14
15
  "enforce": {
15
16
  "executeVerification": false,
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. See [Persona Shared Skills
210
- Core](docs/current/persona-shared-skills-core.md).
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
@@ -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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"}
@@ -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
- runtimeInjection: harnessConfig.features.runtimeInjection,
63
+ sharedSkillRouting: harnessConfig.features.sharedSkillRouting,
64
64
  });
65
65
  const packageVersionValue = packageVersion();
66
66
  const registryDetails = registrySummary(packageVersionValue, options);
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,kCAAkC,EAAE,MAAM,8BAA8B,CAAA;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAA;AACpF,OAAO,EAAE,oCAAoC,EAAE,MAAM,oDAAoD,CAAA;AACzG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,EAAE,kCAAkC,EAAE,MAAM,kCAAkC,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAExE,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,2BAA2B,EAC3B,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,yCAAyC,EAAE,MAAM,kCAAkC,CAAA;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAA;AAChF,OAAO,EACL,kCAAkC,EAClC,yCAAyC,GAC1C,MAAM,qCAAqC,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AAQrE,MAAM,UAAU,iBAAiB,CAAC,UAAyB,EAAE;IAC3D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IAC/D,MAAM,YAAY,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAA;IACxD,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAA;IACzC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI;QACjC,CAAC,CAAC,2BAA2B,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC;QACjE,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI;QACpC,CAAC,CAAC,2BAA2B,CAAC,UAAU,EAAE,aAAa,CAAC,WAAW,CAAC;QACpE,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,SAAS,GAAG,SAAS,EAAE,EAAE,KAAK,IAAI;QACtC,CAAC,CAAC,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,YAAY,IAAI,aAAa,CAAC,QAAQ,CAAC;QACrG,CAAC,CAAC;YACE,qBAAqB,EAAE,EAAE;YACzB,cAAc,EAAE,CAAC;YACjB,oBAAoB,EAAE,EAAE;SACzB,CAAA;IACL,MAAM,YAAY,GAAG,YAAY,EAAE,EAAE,KAAK,IAAI;QAC5C,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE;YAC9C,WAAW,EAAE,YAAY,CAAC,YAAY,IAAI,aAAa,CAAC,WAAW;YACnE,WAAW,EAAE,KAAK;SACnB,CAAC;QACJ,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,qBAAqB,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAA;IACvH,MAAM,qBAAqB,GAAG;QAC5B,GAAG,qBAAqB;QACxB,GAAG,SAAS,CAAC,qBAAqB;QAClC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;KACtG,CAAA;IACD,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAA;IAChE,MAAM,yBAAyB,GAAG,kCAAkC,CAAC,UAAU,CAAC,CAAA;IAChF,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IACzC,MAAM,YAAY,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAA;IACvD,MAAM,0BAA0B,GAAG,oCAAoC,CAAC;QACtE,UAAU,EAAE,YAAY,CAAC,IAAI;QAC7B,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,cAAc,EAAE,aAAa,CAAC,cAAc;QAC5C,gBAAgB,EAAE,YAAY,CAAC,kBAAkB,KAAK,YAAY;QAClE,gBAAgB,EAAE,aAAa,CAAC,QAAQ,CAAC,gBAAgB;KAC1D,CAAC,CAAA;IACF,MAAM,mBAAmB,GAAG,cAAc,EAAE,CAAA;IAC5C,MAAM,eAAe,GAAG,eAAe,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAA;IACrE,MAAM,WAAW,GAAG,yBAAyB,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC3F,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,KAAK,WAAW;QACtD,CAAC,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,sBAAsB,IAAI,yCAAyC,CAAC,CAAC,UAAU,CAAC,CAAC;QACzH,CAAC,CAAC,2BAA2B,EAAE,CAAA;IACjC,MAAM,iBAAiB,GAAG,CAAC,OAAO,CAAC,0BAA0B,IAAI,CAAC,CAAC,mBAAmB,EAAE,EAAE,CACxF,mBAAmB,CAAC;QAClB,WAAW,EAAE,0BAA0B,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QACnE,UAAU,EAAE,mBAAmB;QAC/B,SAAS,EAAE,OAAO,CAAC,kBAAkB;KACtC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IAClB,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,KAAK,WAAW;QACtD,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,IAAI,kCAAkC,CAAC,EAAE;QAC1E,CAAC,CAAC,yCAAyC,EAAE,CAAA;IAC/C,MAAM,qBAAqB,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAA;IACrE,MAAM,eAAe,GAAG;QACtB,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;QACzD,GAAG,CAAC,QAAQ,KAAK,SAAS;YACxB,CAAC,CAAC,CAAC,wFAAwF,CAAC;YAC5F,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC;YAClC,CAAC,CAAC,CAAC,+EAA+E,CAAC;YACnF,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,eAAe,CAAC,MAAM,KAAK,WAAW;YACxC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,kGAAkG,CAAC,CAAC;QACzG,GAAG,CAAC,WAAW,CAAC,MAAM,KAAK,WAAW;YACpC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,gEAAgE,0BAA0B,sCAAsC,CAAC,CAAC;QACvI,GAAG,CAAC,aAAa,CAAC,kBAAkB,KAAK,OAAO;YAC9C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,6CAA6C,aAAa,CAAC,KAAK,qCAAqC,CAAC,CAAC;KAC7G,CAAA;IACD,OAAO;QACL,UAAU;QACV,IAAI,EAAE,OAAO,CAAC,OAAO;QACrB,GAAG,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAClD,GAAG,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAClD,QAAQ;QACR,gBAAgB,EAAE,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAChE,oBAAoB,EAAE,kCAAkC,EAAE;YACxD,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,kBAAkB,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,iGAAiG;QACvJ,WAAW;QACX,eAAe;QACf,YAAY;QACZ,cAAc,EAAE,mBAAmB;QACnC,QAAQ,EAAE,eAAe,CAAC,IAAI;QAC9B,eAAe;QACf,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC;QACvE,UAAU,EACR,YAAY,CAAC,kBAAkB,KAAK,YAAY;YAC9C,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,YAAY,CAAC,kBAAkB,KAAK,YAAY;gBAChD,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,SAAS;QACjB,aAAa,EAAE,YAAY,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YAChD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QAC7D,KAAK,EAAE,SAAS,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC;YAC/C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,IAAI;gBACtB,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC5B,CAAC,CAAC,SAAS;QACf,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7E,QAAQ,EAAE,YAAY,EAAE,IAAI,KAAK,KAAK;YACpC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,YAAY,EAAE,EAAE,KAAK,IAAI;gBACzB,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC;gBAC/B,CAAC,CAAC,SAAS;QACf,iBAAiB,EAAE,YAAY,CAAC,WAAW;QAC3C,qBAAqB;QACrB,oBAAoB,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa;QAC1D,mBAAmB,EAAE,8BAA8B,CAAC,UAAU,EAAE,aAAa,CAAC;QAC9E,0BAA0B;QAC1B,aAAa;QACb,iBAAiB;QACjB,aAAa;QACb,qBAAqB;QACrB,sBAAsB,EAAE,SAAS,EAAE,EAAE,KAAK,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAChG,mBAAmB,EAAE,mBAAmB,CAAC,OAAO;QAChD,uBAAuB,EAAE,mBAAmB,CAAC,eAAe;QAC5D,yBAAyB,EAAE,mBAAmB,CAAC,WAAW;QAC1D,yBAAyB,EAAE,yBAAyB,CAAC,OAAO;QAC5D,gBAAgB,EAAE,iBAAiB,EAAE,KAAK,SAAS;QACnD,wBAAwB,EAAE,wBAAwB,CAAC,UAAU,CAAC;QAC9D,sBAAsB,EAAE,0BAA0B,EAAE;QACpD,6BAA6B,EAAE,yBAAyB,CAAC,eAAe;QACxE,+BAA+B,EAAE,yBAAyB,CAAC,WAAW;QACtE,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,oBAAoB,EAAE,SAAS,CAAC,oBAAoB;KACrD,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAuB,EAAE,UAAyB,EAAE;IACnF,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzG,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QAC9C,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACrD,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;AACzE,CAAC"}
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