@jean.gnc/harness-kit 0.5.0 → 0.7.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 (141) hide show
  1. package/README.md +91 -86
  2. package/dist/agent/schema.d.ts.map +1 -1
  3. package/dist/agent/schema.js +3 -9
  4. package/dist/agent/schema.js.map +1 -1
  5. package/dist/build.d.ts +4 -1
  6. package/dist/build.d.ts.map +1 -1
  7. package/dist/build.js +19 -3
  8. package/dist/build.js.map +1 -1
  9. package/dist/check/index.d.ts +2 -1
  10. package/dist/check/index.d.ts.map +1 -1
  11. package/dist/check/index.js +1 -0
  12. package/dist/check/index.js.map +1 -1
  13. package/dist/cli.js +64 -31
  14. package/dist/cli.js.map +1 -1
  15. package/dist/command/schema.d.ts.map +1 -1
  16. package/dist/command/schema.js +3 -9
  17. package/dist/command/schema.js.map +1 -1
  18. package/dist/compile/emit.d.ts +1 -0
  19. package/dist/compile/emit.d.ts.map +1 -1
  20. package/dist/compile/emit.js +50 -17
  21. package/dist/compile/emit.js.map +1 -1
  22. package/dist/compile/frontmatter.d.ts +1 -1
  23. package/dist/compile/frontmatter.d.ts.map +1 -1
  24. package/dist/compile/frontmatter.js +3 -4
  25. package/dist/compile/frontmatter.js.map +1 -1
  26. package/dist/compile/index.d.ts +2 -0
  27. package/dist/compile/index.d.ts.map +1 -1
  28. package/dist/compile/index.js +33 -31
  29. package/dist/compile/index.js.map +1 -1
  30. package/dist/compile/validators.d.ts.map +1 -1
  31. package/dist/compile/validators.js +6 -0
  32. package/dist/compile/validators.js.map +1 -1
  33. package/dist/config/harness.d.ts +15 -0
  34. package/dist/config/harness.d.ts.map +1 -0
  35. package/dist/config/harness.js +41 -0
  36. package/dist/config/harness.js.map +1 -0
  37. package/dist/configs/emit.d.ts +7 -0
  38. package/dist/configs/emit.d.ts.map +1 -0
  39. package/dist/configs/emit.js +12 -0
  40. package/dist/configs/emit.js.map +1 -0
  41. package/dist/configs/manifest.d.ts +16 -0
  42. package/dist/configs/manifest.d.ts.map +1 -0
  43. package/dist/configs/manifest.js +49 -0
  44. package/dist/configs/manifest.js.map +1 -0
  45. package/dist/index.d.ts +8 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +4 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/init/index.d.ts +8 -0
  50. package/dist/init/index.d.ts.map +1 -0
  51. package/dist/init/index.js +35 -0
  52. package/dist/init/index.js.map +1 -0
  53. package/dist/install/discovery.d.ts +3 -8
  54. package/dist/install/discovery.d.ts.map +1 -1
  55. package/dist/install/discovery.js +12 -10
  56. package/dist/install/discovery.js.map +1 -1
  57. package/dist/install/index.d.ts +7 -20
  58. package/dist/install/index.d.ts.map +1 -1
  59. package/dist/install/index.js +86 -27
  60. package/dist/install/index.js.map +1 -1
  61. package/dist/install/links.d.ts +16 -0
  62. package/dist/install/links.d.ts.map +1 -0
  63. package/dist/install/links.js +108 -0
  64. package/dist/install/links.js.map +1 -0
  65. package/dist/installed.d.ts +3 -1
  66. package/dist/installed.d.ts.map +1 -1
  67. package/dist/installed.js +13 -25
  68. package/dist/installed.js.map +1 -1
  69. package/dist/layout/conventions.d.ts +4 -0
  70. package/dist/layout/conventions.d.ts.map +1 -0
  71. package/dist/layout/conventions.js +4 -0
  72. package/dist/layout/conventions.js.map +1 -0
  73. package/dist/layout/index.d.ts +1 -0
  74. package/dist/layout/index.d.ts.map +1 -1
  75. package/dist/layout/index.js +10 -14
  76. package/dist/layout/index.js.map +1 -1
  77. package/dist/link/applier.d.ts +6 -0
  78. package/dist/link/applier.d.ts.map +1 -0
  79. package/dist/link/applier.js +38 -0
  80. package/dist/link/applier.js.map +1 -0
  81. package/dist/lint.d.ts +3 -0
  82. package/dist/lint.d.ts.map +1 -1
  83. package/dist/lint.js +9 -6
  84. package/dist/lint.js.map +1 -1
  85. package/dist/marketplace/schema.d.ts +1707 -88
  86. package/dist/marketplace/schema.d.ts.map +1 -1
  87. package/dist/marketplace/schema.js +15 -7
  88. package/dist/marketplace/schema.js.map +1 -1
  89. package/dist/placeholders/source-position.d.ts.map +1 -1
  90. package/dist/placeholders/source-position.js +2 -1
  91. package/dist/placeholders/source-position.js.map +1 -1
  92. package/dist/plugin/index.d.ts +1 -1
  93. package/dist/plugin/index.d.ts.map +1 -1
  94. package/dist/plugin/schema.d.ts +186 -55
  95. package/dist/plugin/schema.d.ts.map +1 -1
  96. package/dist/plugin/schema.js +21 -15
  97. package/dist/plugin/schema.js.map +1 -1
  98. package/dist/readme/index.d.ts +1 -5
  99. package/dist/readme/index.d.ts.map +1 -1
  100. package/dist/readme/index.js.map +1 -1
  101. package/dist/schema-primitives.d.ts +5 -0
  102. package/dist/schema-primitives.d.ts.map +1 -0
  103. package/dist/schema-primitives.js +15 -0
  104. package/dist/schema-primitives.js.map +1 -0
  105. package/dist/skill/schema.d.ts +2 -2
  106. package/dist/skill/schema.d.ts.map +1 -1
  107. package/dist/skill/schema.js +4 -13
  108. package/dist/skill/schema.js.map +1 -1
  109. package/dist/vendor/builtins.d.ts +3 -0
  110. package/dist/vendor/builtins.d.ts.map +1 -0
  111. package/dist/vendor/builtins.js +6 -0
  112. package/dist/vendor/builtins.js.map +1 -0
  113. package/dist/vendor/registry.d.ts +4 -0
  114. package/dist/vendor/registry.d.ts.map +1 -0
  115. package/dist/vendor/registry.js +26 -0
  116. package/dist/vendor/registry.js.map +1 -0
  117. package/dist/vendor/schema.d.ts +43 -0
  118. package/dist/vendor/schema.d.ts.map +1 -0
  119. package/dist/vendor/schema.js +2 -0
  120. package/dist/vendor/schema.js.map +1 -0
  121. package/dist/vendors/claude/index.d.ts +4 -0
  122. package/dist/vendors/claude/index.d.ts.map +1 -0
  123. package/dist/vendors/claude/index.js +69 -0
  124. package/dist/vendors/claude/index.js.map +1 -0
  125. package/dist/vendors/codex/index.d.ts +4 -0
  126. package/dist/vendors/codex/index.d.ts.map +1 -0
  127. package/dist/vendors/codex/index.js +53 -0
  128. package/dist/vendors/codex/index.js.map +1 -0
  129. package/dist/vendors/shared.d.ts +4 -0
  130. package/dist/vendors/shared.d.ts.map +1 -0
  131. package/dist/vendors/shared.js +42 -0
  132. package/dist/vendors/shared.js.map +1 -0
  133. package/package.json +9 -3
  134. package/dist/install/claude.d.ts +0 -4
  135. package/dist/install/claude.d.ts.map +0 -1
  136. package/dist/install/claude.js +0 -37
  137. package/dist/install/claude.js.map +0 -1
  138. package/dist/install/codex.d.ts +0 -4
  139. package/dist/install/codex.d.ts.map +0 -1
  140. package/dist/install/codex.js +0 -29
  141. package/dist/install/codex.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/skill/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,4BAA4B,GAAwB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAE3F,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,OAAO,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,kBAAkB,EAAE,kDAAkD,CAAC;SAC7E,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,0DAA0D,EAAE,CAAC,CACtF;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,2CAA2C,CAAC;CACjF,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACzB,MAAM,CAAC;IACN,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,KAAK,CAAC,cAAc,EAAE,mCAAmC,CAAC;IAC7D,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,qCAAqC,CAAC;IAC1E,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,eAAe,CAAC;SACtB,QAAQ,EAAE;SACV,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EACpE,gCAAgC,CACjC;CACJ,CAAC;KACD,MAAM,EAAE,CAAC;AAIZ,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/skill/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEnF,MAAM,4BAA4B,GAAwB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAE3F,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,OAAO,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,kBAAkB,EAAE,kDAAkD,CAAC;SAC7E,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,0DAA0D,EAAE,CAAC,CACtF;IACH,OAAO,EAAE,gBAAgB,CAAC,mBAAmB,CAAC;CAC/C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACzB,MAAM,CAAC;IACN,IAAI,EAAE,SAAS;IACf,WAAW;IACX,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,eAAe,CAAC;SACtB,QAAQ,EAAE;SACV,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EACpE,gCAAgC,CACjC;CACJ,CAAC;KACD,MAAM,EAAE,CAAC;AAIZ,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Vendor } from "./schema.js";
2
+ export declare function builtinVendors(): readonly Vendor[];
3
+ //# sourceMappingURL=builtins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/vendor/builtins.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,wBAAgB,cAAc,IAAI,SAAS,MAAM,EAAE,CAElD"}
@@ -0,0 +1,6 @@
1
+ import { claudeVendor } from "../vendors/claude/index.js";
2
+ import { codexVendor } from "../vendors/codex/index.js";
3
+ export function builtinVendors() {
4
+ return [claudeVendor, codexVendor];
5
+ }
6
+ //# sourceMappingURL=builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/vendor/builtins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Vendor } from "./schema.js";
2
+ export declare function resolveVendorsForRepo(repoRoot: string): Promise<readonly Vendor[]>;
3
+ export declare function resolveVendors(declared: readonly string[], available: readonly Vendor[]): readonly Vendor[];
4
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/vendor/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAGxF;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,SAAS,MAAM,EAAE,CAgBnB"}
@@ -0,0 +1,26 @@
1
+ import { loadHarnessConfig } from "../config/harness.js";
2
+ import { builtinVendors } from "./builtins.js";
3
+ export async function resolveVendorsForRepo(repoRoot) {
4
+ const config = await loadHarnessConfig(repoRoot);
5
+ return resolveVendors(config.vendors, builtinVendors());
6
+ }
7
+ export function resolveVendors(declared, available) {
8
+ if (declared.length === 0) {
9
+ throw new Error("harness.yaml must declare at least one vendor");
10
+ }
11
+ const seen = new Set();
12
+ for (const name of declared) {
13
+ if (seen.has(name))
14
+ throw new Error(`duplicate vendor "${name}" in harness.yaml`);
15
+ seen.add(name);
16
+ }
17
+ const byName = new Map(available.map((v) => [v.name, v]));
18
+ const known = available.map((v) => v.name).join(", ");
19
+ return declared.map((name) => {
20
+ const vendor = byName.get(name);
21
+ if (!vendor)
22
+ throw new Error(`unknown vendor "${name}" — known: ${known}`);
23
+ return vendor;
24
+ });
25
+ }
26
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/vendor/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IAC1D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,QAA2B,EAC3B,SAA4B;IAE5B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,mBAAmB,CAAC,CAAC;QAClF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,cAAc,KAAK,EAAE,CAAC,CAAC;QAC3E,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { CommandRunner } from "../install/runner.js";
2
+ import type { Marketplace } from "../marketplace/index.js";
3
+ import type { Plugin } from "../plugin/index.js";
4
+ export interface LinkedFile {
5
+ readonly srcAbs: string;
6
+ readonly destAbs: string;
7
+ readonly destRel: string;
8
+ readonly basename: string;
9
+ }
10
+ export interface DiscoveredVendorPlugin {
11
+ readonly name: string;
12
+ readonly path: string;
13
+ readonly version: string;
14
+ }
15
+ export interface VendorInstallContext {
16
+ readonly distRoot: string;
17
+ readonly marketplace: string;
18
+ readonly plugins: readonly DiscoveredVendorPlugin[];
19
+ readonly run: CommandRunner;
20
+ readonly log: (msg: string) => void;
21
+ }
22
+ export interface VendorEmitContext {
23
+ readonly manifest: Plugin;
24
+ readonly pluginOutDir: string;
25
+ }
26
+ export interface VendorMarketplaceEmitContext {
27
+ readonly outRoot: string;
28
+ readonly marketplace: Marketplace;
29
+ }
30
+ export interface Vendor {
31
+ readonly name: string;
32
+ readonly home: string;
33
+ readonly pluginManifestPath: string;
34
+ readonly marketplaceManifestPath: string;
35
+ readonly vendorOutDir: (outRoot: string) => string;
36
+ readonly pluginOutDir: (outRoot: string, pluginName: string) => string;
37
+ readonly aliases?: (linkedFile: LinkedFile) => readonly string[];
38
+ readonly emitPluginManifest: (ctx: VendorEmitContext) => Promise<void>;
39
+ readonly emitMarketplaceManifest: (ctx: VendorMarketplaceEmitContext) => Promise<void>;
40
+ readonly install: (ctx: VendorInstallContext) => Promise<void>;
41
+ readonly uninstall: (ctx: VendorInstallContext) => Promise<void>;
42
+ }
43
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/vendor/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACpD,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACnD,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,MAAM,EAAE,CAAC;IACjE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,QAAQ,CAAC,uBAAuB,EAAE,CAAC,GAAG,EAAE,4BAA4B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/vendor/schema.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { Vendor } from "../../vendor/schema.js";
2
+ export declare function makeClaudeVendor(home: string): Vendor;
3
+ export declare const claudeVendor: Vendor;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vendors/claude/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,MAAM,EAIP,MAAM,wBAAwB,CAAC;AAMhC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA2DrD;AAED,eAAO,MAAM,YAAY,EAAE,MAAqD,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { homedir } from "node:os";
2
+ import { rm } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { runIgnoreFailure } from "../../install/runner.js";
5
+ import { defaultEmitMarketplaceManifest, defaultEmitPluginManifest } from "../shared.js";
6
+ const VENDOR_DIR = "claude";
7
+ const PLUGIN_MANIFEST_REL = ".claude-plugin/plugin.json";
8
+ const MARKETPLACE_MANIFEST_REL = `${VENDOR_DIR}/.claude-plugin/marketplace.json`;
9
+ export function makeClaudeVendor(home) {
10
+ return {
11
+ name: "claude",
12
+ home,
13
+ pluginManifestPath: PLUGIN_MANIFEST_REL,
14
+ marketplaceManifestPath: MARKETPLACE_MANIFEST_REL,
15
+ vendorOutDir(outRoot) {
16
+ return join(outRoot, VENDOR_DIR);
17
+ },
18
+ pluginOutDir(outRoot, pluginName) {
19
+ return join(outRoot, VENDOR_DIR, pluginName);
20
+ },
21
+ aliases(file) {
22
+ return file.basename === "AGENTS.md" ? [join(home, "CLAUDE.md")] : [];
23
+ },
24
+ async emitPluginManifest(ctx) {
25
+ await defaultEmitPluginManifest(PLUGIN_MANIFEST_REL, ctx);
26
+ },
27
+ async emitMarketplaceManifest(ctx) {
28
+ await defaultEmitMarketplaceManifest(MARKETPLACE_MANIFEST_REL, ctx);
29
+ },
30
+ async install(ctx) {
31
+ if (ctx.plugins.length === 0)
32
+ return;
33
+ ctx.log(`[claude] refreshing ${ctx.plugins.length} plugin(s) on marketplace ${ctx.marketplace}`);
34
+ for (const plugin of ctx.plugins) {
35
+ await runIgnoreFailure(ctx.run, "claude", [
36
+ "plugin",
37
+ "uninstall",
38
+ `${plugin.name}@${ctx.marketplace}`,
39
+ ]);
40
+ await rm(join(home, "plugins/cache", ctx.marketplace, plugin.name), {
41
+ recursive: true,
42
+ force: true,
43
+ });
44
+ }
45
+ for (const plugin of ctx.plugins) {
46
+ await ctx.run("claude", ["plugin", "install", `${plugin.name}@${ctx.marketplace}`]);
47
+ ctx.log(`[claude] installed ${plugin.name}`);
48
+ }
49
+ },
50
+ async uninstall(ctx) {
51
+ for (const plugin of ctx.plugins) {
52
+ await runIgnoreFailure(ctx.run, "claude", [
53
+ "plugin",
54
+ "uninstall",
55
+ `${plugin.name}@${ctx.marketplace}`,
56
+ ]);
57
+ ctx.log(`[claude] uninstalled ${plugin.name}`);
58
+ }
59
+ await runIgnoreFailure(ctx.run, "claude", [
60
+ "plugin",
61
+ "marketplace",
62
+ "remove",
63
+ ctx.marketplace,
64
+ ]);
65
+ },
66
+ };
67
+ }
68
+ export const claudeVendor = makeClaudeVendor(join(homedir(), ".claude"));
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vendors/claude/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AASzF,MAAM,UAAU,GAAG,QAAQ,CAAC;AAC5B,MAAM,mBAAmB,GAAG,4BAA4B,CAAC;AACzD,MAAM,wBAAwB,GAAG,GAAG,UAAU,kCAAkC,CAAC;AAEjF,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,kBAAkB,EAAE,mBAAmB;QACvC,uBAAuB,EAAE,wBAAwB;QACjD,YAAY,CAAC,OAAO;YAClB,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnC,CAAC;QACD,YAAY,CAAC,OAAO,EAAE,UAAU;YAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,CAAC,IAAgB;YACtB,OAAO,IAAI,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,CAAC;QACD,KAAK,CAAC,kBAAkB,CAAC,GAAsB;YAC7C,MAAM,yBAAyB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC;QACD,KAAK,CAAC,uBAAuB,CAAC,GAAiC;YAC7D,MAAM,8BAA8B,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QACtE,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,GAAyB;YACrC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACrC,GAAG,CAAC,GAAG,CACL,uBAAuB,GAAG,CAAC,OAAO,CAAC,MAAM,6BAA6B,GAAG,CAAC,WAAW,EAAE,CACxF,CAAC;YACF,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjC,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE;oBACxC,QAAQ;oBACR,WAAW;oBACX,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBACH,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;oBAClE,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;YACL,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjC,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBACpF,GAAG,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,GAAyB;YACvC,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjC,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE;oBACxC,QAAQ;oBACR,WAAW;oBACX,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBACH,GAAG,CAAC,GAAG,CAAC,wBAAwB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE;gBACxC,QAAQ;gBACR,aAAa;gBACb,QAAQ;gBACR,GAAG,CAAC,WAAW;aAChB,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAW,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Vendor } from "../../vendor/schema.js";
2
+ export declare function makeCodexVendor(home: string): Vendor;
3
+ export declare const codexVendor: Vendor;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vendors/codex/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,MAAM,EAIP,MAAM,wBAAwB,CAAC;AAMhC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAyCpD;AAED,eAAO,MAAM,WAAW,EAAE,MAAmD,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { homedir } from "node:os";
2
+ import { cp, mkdir, rm } from "node:fs/promises";
3
+ import { dirname, join } from "node:path";
4
+ import { runIgnoreFailure } from "../../install/runner.js";
5
+ import { defaultEmitMarketplaceManifest, defaultEmitPluginManifest } from "../shared.js";
6
+ const VENDOR_DIR = "codex";
7
+ const PLUGIN_MANIFEST_REL = ".codex-plugin/plugin.json";
8
+ const MARKETPLACE_MANIFEST_REL = `${VENDOR_DIR}/.codex-plugin/marketplace.json`;
9
+ export function makeCodexVendor(home) {
10
+ return {
11
+ name: "codex",
12
+ home,
13
+ pluginManifestPath: PLUGIN_MANIFEST_REL,
14
+ marketplaceManifestPath: MARKETPLACE_MANIFEST_REL,
15
+ vendorOutDir(outRoot) {
16
+ return join(outRoot, VENDOR_DIR);
17
+ },
18
+ pluginOutDir(outRoot, pluginName) {
19
+ return join(outRoot, VENDOR_DIR, pluginName);
20
+ },
21
+ async emitPluginManifest(ctx) {
22
+ await defaultEmitPluginManifest(PLUGIN_MANIFEST_REL, ctx);
23
+ },
24
+ async emitMarketplaceManifest(ctx) {
25
+ await defaultEmitMarketplaceManifest(MARKETPLACE_MANIFEST_REL, ctx);
26
+ },
27
+ async install(ctx) {
28
+ if (ctx.plugins.length === 0)
29
+ return;
30
+ ctx.log(`[codex] priming ${ctx.plugins.length} plugin(s) on marketplace ${ctx.marketplace}`);
31
+ await rm(join(home, "plugins/cache", ctx.marketplace), { recursive: true, force: true });
32
+ await runIgnoreFailure(ctx.run, "codex", ["plugin", "marketplace", "add", ctx.distRoot]);
33
+ for (const plugin of ctx.plugins) {
34
+ const dest = join(home, "plugins/cache", ctx.marketplace, plugin.name, plugin.version);
35
+ await mkdir(dirname(dest), { recursive: true });
36
+ await cp(plugin.path, dest, { recursive: true });
37
+ ctx.log(`[codex] cached ${plugin.name}@${plugin.version}`);
38
+ }
39
+ },
40
+ async uninstall(ctx) {
41
+ await runIgnoreFailure(ctx.run, "codex", [
42
+ "plugin",
43
+ "marketplace",
44
+ "remove",
45
+ ctx.marketplace,
46
+ ]);
47
+ await rm(join(home, "plugins/cache", ctx.marketplace), { recursive: true, force: true });
48
+ ctx.log(`[codex] removed ${ctx.marketplace} cache`);
49
+ },
50
+ };
51
+ }
52
+ export const codexVendor = makeCodexVendor(join(homedir(), ".codex"));
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vendors/codex/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { VendorEmitContext, VendorMarketplaceEmitContext } from "../vendor/schema.js";
2
+ export declare function defaultEmitPluginManifest(manifestRelPath: string, ctx: VendorEmitContext): Promise<void>;
3
+ export declare function defaultEmitMarketplaceManifest(manifestRelPath: string, ctx: VendorMarketplaceEmitContext): Promise<void>;
4
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/vendors/shared.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAS3F,wBAAsB,yBAAyB,CAC7C,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,8BAA8B,CAClD,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,4BAA4B,GAChC,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -0,0 +1,42 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ function toVendorPluginManifest(plugin) {
4
+ const { context: _ctx, hookRequires: _hr, ...rest } = plugin;
5
+ return rest;
6
+ }
7
+ export async function defaultEmitPluginManifest(manifestRelPath, ctx) {
8
+ await writeJson(join(ctx.pluginOutDir, manifestRelPath), toVendorPluginManifest(ctx.manifest));
9
+ }
10
+ export async function defaultEmitMarketplaceManifest(manifestRelPath, ctx) {
11
+ await writeJson(join(ctx.outRoot, manifestRelPath), projectMarketplaceForVendor(ctx.marketplace));
12
+ }
13
+ async function writeJson(target, value) {
14
+ await mkdir(dirname(target), { recursive: true });
15
+ await writeFile(target, JSON.stringify(value, null, 2) + "\n");
16
+ }
17
+ function projectMarketplaceForVendor(marketplace) {
18
+ const { metadata, plugins, ...rest } = marketplace;
19
+ const metadataOut = stripPluginRoot(metadata);
20
+ return {
21
+ ...rest,
22
+ ...(metadataOut ? { metadata: metadataOut } : {}),
23
+ plugins: plugins.map(projectPluginEntry),
24
+ };
25
+ }
26
+ function stripPluginRoot(metadata) {
27
+ if (!metadata)
28
+ return undefined;
29
+ const { pluginRoot: _pr, ...rest } = metadata;
30
+ return Object.keys(rest).length > 0 ? rest : undefined;
31
+ }
32
+ function projectPluginEntry(entry) {
33
+ const { source, ...rest } = entry;
34
+ return { ...rest, source: projectSource(entry.name, source) };
35
+ }
36
+ function projectSource(pluginName, source) {
37
+ if (source.kind === "relative")
38
+ return `./${pluginName}`;
39
+ const { kind: _kind, ...rest } = source;
40
+ return rest;
41
+ }
42
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/vendors/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQ1C,SAAS,sBAAsB,CAAC,MAAc;IAC5C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAC7D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,eAAuB,EACvB,GAAsB;IAEtB,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,EAAE,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,eAAuB,EACvB,GAAiC;IAEjC,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,2BAA2B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,KAAc;IACrD,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACjE,CAAC;AAUD,SAAS,2BAA2B,CAAC,WAAwB;IAC3D,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC;IACnD,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO;QACL,GAAG,IAAI;QACP,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,QAAiC;IACxD,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;IAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAkB;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAClC,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,aAAa,CAAC,UAAkB,EAAE,MAAoB;IAC7D,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,UAAU,EAAE,CAAC;IACzD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@jean.gnc/harness-kit",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "type": "module",
5
- "description": "Typed framework for authoring Claude Code skills: schema, placeholder engine, and compile pipeline.",
5
+ "description": "Build your own multi-agent harness: typed toolkit for authoring plugins (skills, agents, commands, hooks) and shipping them to Claude Code and Codex from a single source tree.",
6
6
  "license": "MIT",
7
7
  "author": "Jean Gonçalves <jean.gnc@gmail.com>",
8
8
  "homepage": "https://github.com/jeangnc/harness-kit#readme",
@@ -16,8 +16,13 @@
16
16
  "keywords": [
17
17
  "claude",
18
18
  "claude-code",
19
- "skills",
19
+ "codex",
20
+ "agent",
21
+ "multi-agent",
22
+ "harness",
23
+ "marketplace",
20
24
  "plugin",
25
+ "skills",
21
26
  "markdown",
22
27
  "typescript"
23
28
  ],
@@ -30,6 +35,7 @@
30
35
  }
31
36
  },
32
37
  "bin": {
38
+ "harness": "dist/cli.js",
33
39
  "harness-kit": "dist/cli.js"
34
40
  },
35
41
  "files": [
@@ -1,4 +0,0 @@
1
- import type { InstallContext } from "./index.js";
2
- export declare function installClaude(ctx: InstallContext): Promise<void>;
3
- export declare function uninstallClaude(ctx: InstallContext): Promise<void>;
4
- //# sourceMappingURL=claude.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/install/claude.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAsB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBtE;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAWxE"}
@@ -1,37 +0,0 @@
1
- import { rm } from "node:fs/promises";
2
- import { join } from "node:path";
3
- import { runIgnoreFailure } from "./runner.js";
4
- export async function installClaude(ctx) {
5
- const claudePlugins = ctx.plugins.filter((p) => p.claudeManifest !== null);
6
- if (claudePlugins.length === 0)
7
- return;
8
- ctx.log(`[claude] refreshing ${claudePlugins.length} plugin(s) on marketplace ${ctx.marketplace}`);
9
- for (const plugin of claudePlugins) {
10
- await runIgnoreFailure(ctx.run, "claude", [
11
- "plugin",
12
- "uninstall",
13
- `${plugin.name}@${ctx.marketplace}`,
14
- ]);
15
- await rm(join(ctx.claudeHome, "plugins/cache", ctx.marketplace, plugin.name), {
16
- recursive: true,
17
- force: true,
18
- });
19
- }
20
- for (const plugin of claudePlugins) {
21
- await ctx.run("claude", ["plugin", "install", `${plugin.name}@${ctx.marketplace}`]);
22
- ctx.log(`[claude] installed ${plugin.name}`);
23
- }
24
- }
25
- export async function uninstallClaude(ctx) {
26
- const claudePlugins = ctx.plugins.filter((p) => p.claudeManifest !== null);
27
- for (const plugin of claudePlugins) {
28
- await runIgnoreFailure(ctx.run, "claude", [
29
- "plugin",
30
- "uninstall",
31
- `${plugin.name}@${ctx.marketplace}`,
32
- ]);
33
- ctx.log(`[claude] uninstalled ${plugin.name}`);
34
- }
35
- await runIgnoreFailure(ctx.run, "claude", ["plugin", "marketplace", "remove", ctx.marketplace]);
36
- }
37
- //# sourceMappingURL=claude.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/install/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAmB;IACrD,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC;IAC3E,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACvC,GAAG,CAAC,GAAG,CACL,uBAAuB,aAAa,CAAC,MAAM,6BAA6B,GAAG,CAAC,WAAW,EAAE,CAC1F,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE;YACxC,QAAQ;YACR,WAAW;YACX,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;YAC5E,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACpF,GAAG,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAmB;IACvD,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC;IAC3E,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE;YACxC,QAAQ;YACR,WAAW;YACX,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,GAAG,CAAC,GAAG,CAAC,wBAAwB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AAClG,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { InstallContext } from "./index.js";
2
- export declare function installCodex(ctx: InstallContext): Promise<void>;
3
- export declare function uninstallCodex(ctx: InstallContext): Promise<void>;
4
- //# sourceMappingURL=codex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/install/codex.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAsB,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBrE;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvE"}
@@ -1,29 +0,0 @@
1
- import { cp, mkdir, rm } from "node:fs/promises";
2
- import { dirname, join } from "node:path";
3
- import { runIgnoreFailure } from "./runner.js";
4
- export async function installCodex(ctx) {
5
- const codexPlugins = ctx.plugins.filter((p) => p.codexManifest !== null);
6
- if (codexPlugins.length === 0)
7
- return;
8
- ctx.log(`[codex] priming ${codexPlugins.length} plugin(s) on marketplace ${ctx.marketplace}`);
9
- await rm(join(ctx.codexHome, "plugins/cache", ctx.marketplace), {
10
- recursive: true,
11
- force: true,
12
- });
13
- await runIgnoreFailure(ctx.run, "codex", ["plugin", "marketplace", "add", ctx.distRoot]);
14
- for (const plugin of codexPlugins) {
15
- const dest = join(ctx.codexHome, "plugins/cache", ctx.marketplace, plugin.name, plugin.codexManifest.version);
16
- await mkdir(dirname(dest), { recursive: true });
17
- await cp(plugin.path, dest, { recursive: true });
18
- ctx.log(`[codex] cached ${plugin.name}@${plugin.codexManifest.version}`);
19
- }
20
- }
21
- export async function uninstallCodex(ctx) {
22
- await runIgnoreFailure(ctx.run, "codex", ["plugin", "marketplace", "remove", ctx.marketplace]);
23
- await rm(join(ctx.codexHome, "plugins/cache", ctx.marketplace), {
24
- recursive: true,
25
- force: true,
26
- });
27
- ctx.log(`[codex] removed ${ctx.marketplace} cache`);
28
- }
29
- //# sourceMappingURL=codex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/install/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAmB;IACpD,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CACrC,CAAC,CAAC,EAA6D,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,CAC3F,CAAC;IACF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACtC,GAAG,CAAC,GAAG,CAAC,mBAAmB,YAAY,CAAC,MAAM,6BAA6B,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9F,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE;QAC9D,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IACH,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzF,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CACf,GAAG,CAAC,SAAS,EACb,eAAe,EACf,GAAG,CAAC,WAAW,EACf,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,aAAa,CAAC,OAAO,CAC7B,CAAC;QACF,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,GAAG,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAmB;IACtD,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/F,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE;QAC9D,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,WAAW,QAAQ,CAAC,CAAC;AACtD,CAAC"}