@xrkseek/harness-cli 0.0.4 → 0.0.6

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 (91) hide show
  1. package/README.md +3 -1
  2. package/dist/commands/plugin.d.ts +3 -0
  3. package/dist/commands/plugin.d.ts.map +1 -0
  4. package/dist/commands/plugin.js +100 -0
  5. package/dist/commands/plugin.js.map +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +3 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/parse-args.d.ts +3 -1
  10. package/dist/parse-args.d.ts.map +1 -1
  11. package/dist/parse-args.js +11 -0
  12. package/dist/parse-args.js.map +1 -1
  13. package/dist/plugin/classify.d.ts +18 -0
  14. package/dist/plugin/classify.d.ts.map +1 -0
  15. package/dist/plugin/classify.js +109 -0
  16. package/dist/plugin/classify.js.map +1 -0
  17. package/dist/plugin/fetch-pack.d.ts +16 -0
  18. package/dist/plugin/fetch-pack.d.ts.map +1 -0
  19. package/dist/plugin/fetch-pack.js +104 -0
  20. package/dist/plugin/fetch-pack.js.map +1 -0
  21. package/dist/plugin/index.d.ts +27 -0
  22. package/dist/plugin/index.d.ts.map +1 -0
  23. package/dist/plugin/index.js +109 -0
  24. package/dist/plugin/index.js.map +1 -0
  25. package/dist/plugin/install-client.d.ts +4 -0
  26. package/dist/plugin/install-client.d.ts.map +1 -0
  27. package/dist/plugin/install-client.js +34 -0
  28. package/dist/plugin/install-client.js.map +1 -0
  29. package/dist/plugin/install-process.d.ts +4 -0
  30. package/dist/plugin/install-process.d.ts.map +1 -0
  31. package/dist/plugin/install-process.js +46 -0
  32. package/dist/plugin/install-process.js.map +1 -0
  33. package/dist/plugin/inventory.d.ts +42 -0
  34. package/dist/plugin/inventory.d.ts.map +1 -0
  35. package/dist/plugin/inventory.js +105 -0
  36. package/dist/plugin/inventory.js.map +1 -0
  37. package/dist/plugin/remap-inject.d.ts +16 -0
  38. package/dist/plugin/remap-inject.d.ts.map +1 -0
  39. package/dist/plugin/remap-inject.js +52 -0
  40. package/dist/plugin/remap-inject.js.map +1 -0
  41. package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
  42. package/node_modules/@xrkseek/core-agent-loop/dist/index.js +8 -2
  43. package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
  44. package/node_modules/@xrkseek/core-system-prompt/README.md +2 -2
  45. package/node_modules/@xrkseek/core-system-prompt/dist/index.d.ts +1 -1
  46. package/node_modules/@xrkseek/core-system-prompt/dist/index.d.ts.map +1 -1
  47. package/node_modules/@xrkseek/core-system-prompt/dist/index.js +1 -1
  48. package/node_modules/@xrkseek/core-system-prompt/dist/index.js.map +1 -1
  49. package/node_modules/@xrkseek/core-system-prompt/dist/three-layer.d.ts +22 -4
  50. package/node_modules/@xrkseek/core-system-prompt/dist/three-layer.d.ts.map +1 -1
  51. package/node_modules/@xrkseek/core-system-prompt/dist/three-layer.js +21 -8
  52. package/node_modules/@xrkseek/core-system-prompt/dist/three-layer.js.map +1 -1
  53. package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  54. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  55. package/node_modules/@xrkseek/server-config/dist/home.d.ts +5 -0
  56. package/node_modules/@xrkseek/server-config/dist/home.d.ts.map +1 -1
  57. package/node_modules/@xrkseek/server-config/dist/home.js +7 -0
  58. package/node_modules/@xrkseek/server-config/dist/home.js.map +1 -1
  59. package/node_modules/@xrkseek/server-config/dist/index.d.ts +4 -2
  60. package/node_modules/@xrkseek/server-config/dist/index.d.ts.map +1 -1
  61. package/node_modules/@xrkseek/server-config/dist/index.js +10 -1
  62. package/node_modules/@xrkseek/server-config/dist/index.js.map +1 -1
  63. package/package.json +2 -2
  64. package/product-web/boot.json +1 -1
  65. package/product-web/plugins/@xrkseek/client-locale/client.js +2 -2
  66. package/product-web/plugins/@xrkseek/client-ui-agent-preset/client.js +36 -36
  67. package/product-web/plugins/@xrkseek/client-ui-commands/client.js +8 -8
  68. package/product-web/plugins/@xrkseek/client-ui-conversation/client.js +154 -154
  69. package/product-web/plugins/@xrkseek/client-ui-deliverables/client.js +5 -5
  70. package/product-web/plugins/@xrkseek/client-ui-directory-picker-browse/client.js +27 -27
  71. package/product-web/plugins/@xrkseek/client-ui-goal/client.js +7 -7
  72. package/product-web/plugins/@xrkseek/client-ui-input-trigger/client.js +6 -6
  73. package/product-web/plugins/@xrkseek/client-ui-jobs/client.js +9 -9
  74. package/product-web/plugins/@xrkseek/client-ui-layout/client.js +3 -3
  75. package/product-web/plugins/@xrkseek/client-ui-message-feedback/client.js +4 -4
  76. package/product-web/plugins/@xrkseek/client-ui-model-selection/client.js +17 -17
  77. package/product-web/plugins/@xrkseek/client-ui-permission-presets/client.js +3 -3
  78. package/product-web/plugins/@xrkseek/client-ui-plan/client.js +1 -1
  79. package/product-web/plugins/@xrkseek/client-ui-settings-general/client.js +15 -15
  80. package/product-web/plugins/@xrkseek/client-ui-settings-models/client.js +52 -52
  81. package/product-web/plugins/@xrkseek/client-ui-settings-plugin-inventory/client.js +12 -12
  82. package/product-web/plugins/@xrkseek/client-ui-settings-plugins/client.js +42 -42
  83. package/product-web/plugins/@xrkseek/client-ui-sidebar/client.js +15 -15
  84. package/product-web/plugins/@xrkseek/client-ui-skill/client.js +12 -12
  85. package/product-web/plugins/@xrkseek/client-ui-subagent/client.js +18 -18
  86. package/product-web/plugins/@xrkseek/client-ui-theme/client.js +3 -3
  87. package/product-web/plugins/@xrkseek/client-ui-tool/client.js +37 -37
  88. package/product-web/plugins/@xrkseek/client-ui-trajectory/client.js +145 -145
  89. package/product-web/plugins/@xrkseek/client-ui-user-questions/client.js +24 -24
  90. package/product-web/plugins/@xrkseek/client-ui-workflow-run/client.js +15 -15
  91. package/product-web/plugins/@xrkseek/client-ui-workspace/client.js +55 -55
package/README.md CHANGED
@@ -9,6 +9,7 @@ bin:`xrk-harness`。产品 UI:包内 `product-web/`(源码仓用 `apps/web
9
9
  | `run` | 单 turn(默认 minimal + replay) |
10
10
  | `serve` / `web` | HTTP host + 产品壳 |
11
11
  | `restart` | 释放监听端口后重新 serve |
12
+ | `plugin` | 安装 / 卸载 / 列出用户插件(`~/.xrk/plugins`) |
12
13
  | `doctor` | Node · workspace · 产品壳 |
13
14
  | `dump-config` | 打印 preset 配置 |
14
15
 
@@ -18,9 +19,10 @@ bin:`xrk-harness`。产品 UI:包内 `product-web/`(源码仓用 `apps/web
18
19
  npx @xrkseek/harness-cli web
19
20
  npx @xrkseek/harness-cli web --force --verbose
20
21
  npx @xrkseek/harness-cli restart
22
+ npx @xrkseek/harness-cli plugin add @huanlin/dsh-plugin-spur
21
23
  # 源码:
22
24
  pnpm build && pnpm web:build && pnpm client:bundle && pnpm web:assemble
23
25
  node apps/cli/dist/bin.js web --workspace .
24
26
  ```
25
27
 
26
- 静态根:`XRK_WEB_DIST` → `product-web/` → `apps/web/dist`。配置见 [docs/configuration.md](../../docs/configuration.md);发布见 [docs/publishing.md](../../docs/publishing.md)。
28
+ 静态根:`XRK_WEB_DIST` → `product-web/` → `apps/web/dist`。插件:[docs/plugin-loader.md](../../docs/plugin-loader.md)。配置见 [docs/configuration.md](../../docs/configuration.md);发布见 [docs/publishing.md](../../docs/publishing.md)。
@@ -0,0 +1,3 @@
1
+ export declare function pluginHelpText(): string;
2
+ export declare function runPlugin(argv: readonly string[]): Promise<number>;
3
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/commands/plugin.ts"],"names":[],"mappings":"AAWA,wBAAgB,cAAc,IAAI,MAAM,CAgCvC;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuExE"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * `xrk-harness plugin` — install / remove / list user plugins under
3
+ * `{XRK_HOME}/plugins` (or `XRK_PLUGINS_DIR`).
4
+ */
5
+ import { addPlugin, listPlugins, removePlugin, resolvePluginsDir, } from "../plugin/index.js";
6
+ export function pluginHelpText() {
7
+ return `xrk-harness plugin — manage user plugins
8
+
9
+ Usage:
10
+ xrk-harness plugin add <spec…>
11
+ xrk-harness plugin remove <name…>
12
+ xrk-harness plugin list
13
+ xrk-harness plugin path
14
+ xrk-harness plugin help
15
+
16
+ Specs (npm pack):
17
+ @scope/name registry package
18
+ github:user/repo git (npm-compatible)
19
+ ./path file:./path local checkout (anchored to cwd)
20
+ link:./path same as file: for local dirs
21
+
22
+ Kinds:
23
+ client xrk.client / dsh.client + lib/client.js → web/boot overlay
24
+ process xrk.plugin.json / xrkseek.plugin / dsh.plugin → discover
25
+ both both halves
26
+
27
+ Root:
28
+ default ~/.xrk/plugins (XRK_HOME / XRK_DSH_HOME / DSH_HOME)
29
+ override XRK_PLUGINS_DIR
30
+
31
+ After add/remove, restart \`xrk-harness web\` / \`serve\` to load changes.
32
+
33
+ Examples:
34
+ xrk-harness plugin add @huanlin/dsh-plugin-spur
35
+ xrk-harness plugin list
36
+ xrk-harness plugin remove @huanlin/dsh-plugin-spur
37
+ `;
38
+ }
39
+ export async function runPlugin(argv) {
40
+ const args = [...argv];
41
+ if (args.length === 0 ||
42
+ args[0] === "help" ||
43
+ args[0] === "--help" ||
44
+ args[0] === "-h") {
45
+ process.stdout.write(pluginHelpText());
46
+ return 0;
47
+ }
48
+ const sub = args.shift();
49
+ try {
50
+ switch (sub) {
51
+ case "add": {
52
+ if (args.length === 0) {
53
+ throw new Error("plugin add needs at least one <spec>");
54
+ }
55
+ for (const spec of args) {
56
+ addPlugin(spec);
57
+ }
58
+ process.stdout.write("xrk-harness: restart `web` / `serve` to load new plugins\n");
59
+ return 0;
60
+ }
61
+ case "remove":
62
+ case "rm": {
63
+ if (args.length === 0) {
64
+ throw new Error("plugin remove needs at least one <name>");
65
+ }
66
+ for (const name of args) {
67
+ removePlugin(name);
68
+ }
69
+ process.stdout.write("xrk-harness: restart `web` / `serve` to drop removed plugins\n");
70
+ return 0;
71
+ }
72
+ case "list":
73
+ case "ls": {
74
+ const pluginsDir = resolvePluginsDir();
75
+ const entries = listPlugins({ pluginsDir });
76
+ if (entries.length === 0) {
77
+ process.stdout.write(`(none) root=${pluginsDir}\n`);
78
+ return 0;
79
+ }
80
+ process.stdout.write(`root=${pluginsDir}\n`);
81
+ for (const e of entries) {
82
+ process.stdout.write(`${e.name}\t${e.version}\t${e.kind}\t${e.source}\n`);
83
+ }
84
+ return 0;
85
+ }
86
+ case "path": {
87
+ process.stdout.write(`${resolvePluginsDir()}\n`);
88
+ return 0;
89
+ }
90
+ default:
91
+ throw new Error(`unknown plugin subcommand: ${sub} (try: add | remove | list | path | help)`);
92
+ }
93
+ }
94
+ catch (err) {
95
+ const message = err instanceof Error ? err.message : String(err);
96
+ process.stderr.write(`error: ${message}\n`);
97
+ return 1;
98
+ }
99
+ }
100
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/commands/plugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,SAAS,EACT,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BR,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAuB;IACrD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,IACE,IAAI,CAAC,MAAM,KAAK,CAAC;QACjB,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM;QAClB,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QACpB,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAChB,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC;IAE1B,IAAI,CAAC;QACH,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBAC1D,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;oBACxB,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4DAA4D,CAC7D,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC7D,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;oBACxB,YAAY,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gEAAgE,CACjE,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,MAAM,CAAC;YACZ,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;gBACvC,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,UAAU,IAAI,CAAC,CAAC;oBACrD,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,UAAU,IAAI,CAAC,CAAC;gBAC7C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,CACpD,CAAC;gBACJ,CAAC;gBACD,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBACjD,OAAO,CAAC,CAAC;YACX,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CACb,8BAA8B,GAAG,2CAA2C,CAC7E,CAAC;QACN,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,OAAO,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AAE/C,wBAAsB,IAAI,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkDxE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AAE/C,wBAAsB,IAAI,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoDxE"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { runDoctor } from "./commands/doctor.js";
2
2
  import { runDumpConfig } from "./commands/dump-config.js";
3
+ import { runPlugin } from "./commands/plugin.js";
3
4
  import { runCommand } from "./commands/run.js";
4
5
  import { runRestart } from "./commands/restart.js";
5
6
  import { runServe } from "./commands/serve.js";
@@ -43,6 +44,8 @@ export async function main(argv = process.argv.slice(2)) {
43
44
  return await runServe(args);
44
45
  case "restart":
45
46
  return await runRestart(args);
47
+ case "plugin":
48
+ return await runPlugin(args.pluginArgv);
46
49
  default:
47
50
  process.stdout.write(helpText());
48
51
  return 0;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,EAAE,IAAI,CAAC,CAAC;QAC9C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,KAAK,KAAK;gBACR,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,CACpD,CAAC;gBACJ,CAAC;gBACD,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;YACD,KAAK,aAAa;gBAChB,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC1B,OAAO,CAAC,CAAC;YACX,KAAK,OAAO;gBACV,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9B,KAAK,SAAS;gBACZ,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC;gBACE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjC,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
- export type CliCommand = "run" | "doctor" | "dump-config" | "serve" | "restart" | "help";
1
+ export type CliCommand = "run" | "doctor" | "dump-config" | "serve" | "restart" | "plugin" | "help";
2
2
  export interface ParsedArgs {
3
3
  readonly command: CliCommand;
4
+ /** Remaining argv after `plugin` (subcommand + specs). */
5
+ readonly pluginArgv: readonly string[];
4
6
  readonly preset: string;
5
7
  readonly prompt: string;
6
8
  readonly promptExplicit: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"parse-args.d.ts","sourceRoot":"","sources":["../src/parse-args.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,QAAQ,GACR,aAAa,GACb,OAAO,GACP,SAAS,GACT,MAAM,CAAC;AAEX,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAeD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAOjD;AA+BD,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAgL7D;AAED,wBAAgB,QAAQ,IAAI,MAAM,CA0CjC"}
1
+ {"version":3,"file":"parse-args.d.ts","sourceRoot":"","sources":["../src/parse-args.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,QAAQ,GACR,aAAa,GACb,OAAO,GACP,SAAS,GACT,QAAQ,GACR,MAAM,CAAC;AAEX,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAeD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAOjD;AAgCD,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAuL7D;AAED,wBAAgB,QAAQ,IAAI,MAAM,CA8CjC"}
@@ -29,6 +29,7 @@ function parsePort(raw) {
29
29
  }
30
30
  function emptyArgs(partial) {
31
31
  return {
32
+ pluginArgv: [],
32
33
  preset: "minimal",
33
34
  prompt: "ping",
34
35
  promptExplicit: false,
@@ -60,6 +61,7 @@ export function parseArgs(argv) {
60
61
  first === "dump-config" ||
61
62
  first === "serve" ||
62
63
  first === "restart" ||
64
+ first === "plugin" ||
63
65
  first === "help") {
64
66
  command = first;
65
67
  }
@@ -69,6 +71,10 @@ export function parseArgs(argv) {
69
71
  else {
70
72
  throw new Error(`unknown command: ${first}`);
71
73
  }
74
+ // `plugin` owns the rest of argv (add/remove/list/path + specs).
75
+ if (command === "plugin") {
76
+ return emptyArgs({ command: "plugin", pluginArgv: args });
77
+ }
72
78
  /** Product Host (`web`/`serve`) defaults to harness tools; `run` stays minimal for smoke. */
73
79
  let preset = command === "serve" || command === "restart" ? "harness" : "minimal";
74
80
  let promptFromFlag;
@@ -197,6 +203,7 @@ export function parseArgs(argv) {
197
203
  : "ping";
198
204
  return {
199
205
  command: help && command !== "help" ? command : help ? "help" : command,
206
+ pluginArgv: [],
200
207
  preset,
201
208
  prompt,
202
209
  promptExplicit,
@@ -225,6 +232,7 @@ Commands:
225
232
  serve HTTP host + product UI (apps/web/dist)
226
233
  web Alias for serve
227
234
  restart Free the listen port, then serve (same flags as web)
235
+ plugin Install / remove / list user plugins (~/.xrk/plugins)
228
236
  doctor Check node / workspace / product shell
229
237
  dump-config Print layered config JSON
230
238
  help Show this help
@@ -248,12 +256,15 @@ Options:
248
256
  Env:
249
257
  XRK_LOG / XRK_LOG_LEVEL silent|error|warn|info|debug (default info)
250
258
  XRK_MCP_ALLOW=1 Allow mcp.connect for configured / saved servers
259
+ XRK_PLUGINS_DIR Plugin root (default: ~/.xrk/plugins when present)
251
260
 
252
261
  Examples:
253
262
  xrk-harness serve --preset harness
254
263
  xrk-harness web --port 8080 --open --verbose
255
264
  xrk-harness web --force
256
265
  xrk-harness restart --workspace .
266
+ xrk-harness plugin add @huanlin/dsh-plugin-spur
267
+ xrk-harness plugin list
257
268
  xrk-harness run --preset minimal "ping"
258
269
  `;
259
270
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parse-args.js","sourceRoot":"","sources":["../src/parse-args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-args.js","sourceRoot":"","sources":["../src/parse-args.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export type PluginKind = "client" | "process" | "both";
2
+ export interface ClassifiedPackage {
3
+ readonly name: string;
4
+ readonly version: string;
5
+ readonly kind: PluginKind;
6
+ readonly root: string;
7
+ /** Absolute path to browser `client.js` when kind includes client. */
8
+ readonly clientJs?: string;
9
+ /** Raw inject from xrk.client / dsh.client (pre-remap). */
10
+ readonly clientInject: readonly string[];
11
+ readonly clientImmediately: boolean;
12
+ }
13
+ /**
14
+ * Classify an unpacked package directory (with package.json).
15
+ * @throws when the package is not an installable XRK plugin.
16
+ */
17
+ export declare function classifyPackage(root: string, pkg: Record<string, unknown>): ClassifiedPackage;
18
+ //# sourceMappingURL=classify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/plugin/classify.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;CACrC;AAmFD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,CA+C7F"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Classify an unpacked npm package as XRK client / process / both / reject.
3
+ */
4
+ import { existsSync } from "node:fs";
5
+ import path from "node:path";
6
+ function asRecord(value) {
7
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
8
+ return undefined;
9
+ }
10
+ return value;
11
+ }
12
+ function nestedField(pkg, ns, key) {
13
+ return asRecord(pkg[ns])?.[key];
14
+ }
15
+ function readClientMeta(pkg) {
16
+ const client = nestedField(pkg, "xrk", "client") ?? nestedField(pkg, "dsh", "client");
17
+ const rec = asRecord(client);
18
+ if (!rec)
19
+ return undefined;
20
+ const inject = Array.isArray(rec.inject)
21
+ ? rec.inject.filter((x) => typeof x === "string")
22
+ : [];
23
+ return {
24
+ inject,
25
+ immediately: rec.immediately === true,
26
+ };
27
+ }
28
+ function hasProcessManifest(root, pkg) {
29
+ if (existsSync(path.join(root, "xrk.plugin.json")))
30
+ return true;
31
+ if (nestedField(pkg, "xrkseek", "plugin") !== undefined)
32
+ return true;
33
+ if (nestedField(pkg, "dsh", "plugin") !== undefined)
34
+ return true;
35
+ if (nestedField(pkg, "deepseek", "plugin") !== undefined)
36
+ return true;
37
+ if (pkg["dsh.plugin"] !== undefined || pkg["deepseek.plugin"] !== undefined) {
38
+ return true;
39
+ }
40
+ return false;
41
+ }
42
+ function hasCordisDep(deps) {
43
+ const rec = asRecord(deps);
44
+ return Boolean(rec &&
45
+ ("@xrkseek/cordis" in rec ||
46
+ "@deepseek-ai/cordis" in rec));
47
+ }
48
+ function resolveClientJs(root, pkg) {
49
+ const candidates = [
50
+ path.join(root, "lib", "client.js"),
51
+ path.join(root, "dist", "client.js"),
52
+ path.join(root, "client.js"),
53
+ ];
54
+ for (const c of candidates) {
55
+ if (existsSync(c))
56
+ return c;
57
+ }
58
+ const exportsField = asRecord(pkg.exports);
59
+ const clientExport = asRecord(exportsField?.["./client"]);
60
+ const def = (typeof clientExport?.default === "string" && clientExport.default) ||
61
+ (typeof clientExport?.import === "string" && clientExport.import) ||
62
+ (typeof exportsField?.["./client"] === "string"
63
+ ? exportsField["./client"]
64
+ : undefined);
65
+ if (def) {
66
+ const abs = path.resolve(root, def);
67
+ if (existsSync(abs))
68
+ return abs;
69
+ }
70
+ return undefined;
71
+ }
72
+ /**
73
+ * Classify an unpacked package directory (with package.json).
74
+ * @throws when the package is not an installable XRK plugin.
75
+ */
76
+ export function classifyPackage(root, pkg) {
77
+ const name = typeof pkg.name === "string" ? pkg.name.trim() : "";
78
+ if (!name) {
79
+ throw new Error("package.json missing string name");
80
+ }
81
+ const version = typeof pkg.version === "string" && pkg.version.trim()
82
+ ? pkg.version.trim()
83
+ : "0.0.0";
84
+ const clientMeta = readClientMeta(pkg);
85
+ const clientJs = clientMeta ? resolveClientJs(root, pkg) : undefined;
86
+ const isClient = Boolean(clientMeta && clientJs);
87
+ const isProcess = hasProcessManifest(root, pkg);
88
+ if (!isClient && !isProcess) {
89
+ if (hasCordisDep(pkg.peerDependencies) ||
90
+ hasCordisDep(pkg.dependencies)) {
91
+ throw new Error(`${name}: Cordis host packages are not applied on XRK Host (inventory stub only). Ship tools/commands as process plugins (xrk.plugin.json / xrkseek.plugin) or a client half (xrk.client / dsh.client + lib/client.js).`);
92
+ }
93
+ throw new Error(`${name}: not an XRK plugin — need xrk.client / dsh.client (+ lib/client.js) and/or a process manifest (xrk.plugin.json / xrkseek.plugin / dsh.plugin).`);
94
+ }
95
+ if (clientMeta && !clientJs) {
96
+ throw new Error(`${name}: declares xrk/dsh.client but no lib/client.js (or exports ./client) was found`);
97
+ }
98
+ const kind = isClient && isProcess ? "both" : isClient ? "client" : "process";
99
+ return {
100
+ name,
101
+ version,
102
+ kind,
103
+ root,
104
+ ...(clientJs ? { clientJs } : {}),
105
+ clientInject: clientMeta?.inject ?? [],
106
+ clientImmediately: clientMeta?.immediately === true,
107
+ };
108
+ }
109
+ //# sourceMappingURL=classify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/plugin/classify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface UnpackedPackage {
2
+ readonly root: string;
3
+ readonly pkg: Record<string, unknown>;
4
+ readonly cleanup: () => void;
5
+ }
6
+ /**
7
+ * Rewrite relative filesystem specs against the invoking directory.
8
+ * Absolute specs, registry names, and github:/git URLs pass through.
9
+ */
10
+ export declare function anchorPathSpec(argument: string, cwd: string): string;
11
+ /**
12
+ * Prefer a local directory when the spec already points at an unpacked
13
+ * package (file:/link:/relative path with package.json). Otherwise npm pack.
14
+ */
15
+ export declare function fetchPackage(spec: string, cwd?: string): UnpackedPackage;
16
+ //# sourceMappingURL=fetch-pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-pack.d.ts","sourceRoot":"","sources":["../../src/plugin/fetch-pack.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMpE;AAoBD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAsB,GAC1B,eAAe,CAmFjB"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Fetch a package with `npm pack` and unpack it to a temp directory.
3
+ * Relative path / file: / link: specs are anchored to `cwd` (DSH posture).
4
+ */
5
+ import { spawnSync } from "node:child_process";
6
+ import { existsSync, mkdtempSync, mkdirSync, readFileSync, readdirSync, rmSync, } from "node:fs";
7
+ import { tmpdir } from "node:os";
8
+ import path from "node:path";
9
+ /**
10
+ * Rewrite relative filesystem specs against the invoking directory.
11
+ * Absolute specs, registry names, and github:/git URLs pass through.
12
+ */
13
+ export function anchorPathSpec(argument, cwd) {
14
+ const match = /^(?<prefix>(?:file|link):)?(?<path>\.{1,2}(?:[/\\].*)?)$/.exec(argument);
15
+ if (match?.groups?.path === undefined)
16
+ return argument;
17
+ const prefix = match.groups.prefix ?? "";
18
+ return `${prefix}${path.resolve(cwd, match.groups.path)}`;
19
+ }
20
+ function readPkgJson(dir) {
21
+ const text = readFileSync(path.join(dir, "package.json"), "utf8");
22
+ return JSON.parse(text);
23
+ }
24
+ function extractTarball(tgz, extractDir) {
25
+ mkdirSync(extractDir, { recursive: true });
26
+ const tarBin = process.platform === "win32" ? "tar.exe" : "tar";
27
+ const result = spawnSync(tarBin, ["-xzf", tgz, "-C", extractDir], {
28
+ encoding: "utf8",
29
+ });
30
+ if ((result.status ?? 1) !== 0) {
31
+ throw new Error(`failed to extract ${path.basename(tgz)}: ${(result.stderr || result.stdout || result.error?.message || "").trim()}`);
32
+ }
33
+ }
34
+ /**
35
+ * Prefer a local directory when the spec already points at an unpacked
36
+ * package (file:/link:/relative path with package.json). Otherwise npm pack.
37
+ */
38
+ export function fetchPackage(spec, cwd = process.cwd()) {
39
+ const anchored = anchorPathSpec(spec.trim(), cwd);
40
+ const bare = anchored.startsWith("file:") || anchored.startsWith("link:")
41
+ ? anchored.slice(anchored.indexOf(":") + 1)
42
+ : anchored;
43
+ const looksLikePath = !/^(git\+|github:|https?:|npm:)/i.test(anchored) &&
44
+ (path.isAbsolute(bare) ||
45
+ bare.startsWith(".") ||
46
+ /[/\\]/.test(bare));
47
+ if (looksLikePath) {
48
+ const abs = path.resolve(cwd, bare);
49
+ if (existsSync(path.join(abs, "package.json"))) {
50
+ return {
51
+ root: abs,
52
+ pkg: readPkgJson(abs),
53
+ cleanup: () => { },
54
+ };
55
+ }
56
+ }
57
+ const stage = mkdtempSync(path.join(tmpdir(), "xrk-plugin-pack-"));
58
+ const cleanup = () => {
59
+ try {
60
+ rmSync(stage, { recursive: true, force: true });
61
+ }
62
+ catch {
63
+ /* ignore */
64
+ }
65
+ };
66
+ try {
67
+ const result = spawnSync("npm", ["pack", anchored, "--pack-destination", stage], {
68
+ cwd,
69
+ encoding: "utf8",
70
+ shell: process.platform === "win32",
71
+ });
72
+ if (result.error) {
73
+ const code = result.error.code;
74
+ if (code === "ENOENT") {
75
+ throw new Error("npm not found on PATH — install Node.js (includes npm) to manage plugins");
76
+ }
77
+ throw result.error;
78
+ }
79
+ if ((result.status ?? 1) !== 0) {
80
+ const err = (result.stderr || result.stdout || "").trim();
81
+ throw new Error(`npm pack failed for ${JSON.stringify(anchored)}${err ? `: ${err}` : ""}`);
82
+ }
83
+ const tgz = readdirSync(stage).find((n) => n.endsWith(".tgz"));
84
+ if (!tgz) {
85
+ throw new Error(`npm pack produced no tarball for ${JSON.stringify(anchored)}`);
86
+ }
87
+ const extractDir = path.join(stage, "extract");
88
+ extractTarball(path.join(stage, tgz), extractDir);
89
+ const packageRoot = path.join(extractDir, "package");
90
+ if (!existsSync(path.join(packageRoot, "package.json"))) {
91
+ throw new Error(`unexpected pack layout for ${anchored}: missing package/`);
92
+ }
93
+ return {
94
+ root: packageRoot,
95
+ pkg: readPkgJson(packageRoot),
96
+ cleanup,
97
+ };
98
+ }
99
+ catch (err) {
100
+ cleanup();
101
+ throw err;
102
+ }
103
+ }
104
+ //# sourceMappingURL=fetch-pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-pack.js","sourceRoot":"","sources":["../../src/plugin/fetch-pack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { type InventoryEntry } from "./inventory.js";
2
+ export { anchorPathSpec, fetchPackage } from "./fetch-pack.js";
3
+ export { classifyPackage } from "./classify.js";
4
+ export { remapInjectId, remapInjectList } from "./remap-inject.js";
5
+ export { readInventory, reconcileBoot, type InventoryEntry, type PluginInventory, } from "./inventory.js";
6
+ export interface PluginIo {
7
+ readonly log: (line: string) => void;
8
+ readonly warn: (line: string) => void;
9
+ }
10
+ /** Resolve plugins root: `XRK_PLUGINS_DIR` or `{XRK_HOME}/plugins`. */
11
+ export declare function resolvePluginsDir(env?: NodeJS.ProcessEnv): string;
12
+ export declare function addPlugin(spec: string, options?: {
13
+ readonly pluginsDir?: string;
14
+ readonly cwd?: string;
15
+ readonly env?: NodeJS.ProcessEnv;
16
+ readonly io?: PluginIo;
17
+ }): InventoryEntry;
18
+ export declare function removePlugin(name: string, options?: {
19
+ readonly pluginsDir?: string;
20
+ readonly env?: NodeJS.ProcessEnv;
21
+ readonly io?: PluginIo;
22
+ }): void;
23
+ export declare function listPlugins(options?: {
24
+ readonly pluginsDir?: string;
25
+ readonly env?: NodeJS.ProcessEnv;
26
+ }): readonly InventoryEntry[];
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EACL,aAAa,EACb,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAmBD,uEAAuE;AACvE,wBAAgB,iBAAiB,CAC/B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAIR;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;CACnB,GACL,cAAc,CAgDhB;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;CACnB,GACL,IAAI,CAkBN;AAED,wBAAgB,WAAW,CACzB,OAAO,GAAE;IACP,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC7B,GACL,SAAS,cAAc,EAAE,CAO3B"}