@jsbot-tellus/core 2.0.3 → 2.2.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 (83) hide show
  1. package/README.md +23 -27
  2. package/dist/app.js +14 -40
  3. package/dist/app.js.map +1 -1
  4. package/dist/core/config/schema.d.ts +0 -2
  5. package/dist/core/config/schema.d.ts.map +1 -1
  6. package/dist/core/config/schema.js +0 -1
  7. package/dist/core/config/schema.js.map +1 -1
  8. package/dist/core/dispatch/command.d.ts +24 -2
  9. package/dist/core/dispatch/command.d.ts.map +1 -1
  10. package/dist/core/dispatch/command.js +297 -60
  11. package/dist/core/dispatch/command.js.map +1 -1
  12. package/dist/core/dispatch/router.d.ts +17 -3
  13. package/dist/core/dispatch/router.d.ts.map +1 -1
  14. package/dist/core/dispatch/router.js +38 -2
  15. package/dist/core/dispatch/router.js.map +1 -1
  16. package/dist/core/index.d.ts +2 -1
  17. package/dist/core/index.d.ts.map +1 -1
  18. package/dist/core/index.js.map +1 -1
  19. package/dist/core/kernel.d.ts.map +1 -1
  20. package/dist/core/kernel.js +5 -1
  21. package/dist/core/kernel.js.map +1 -1
  22. package/dist/core/plugin/command-params.d.ts +37 -0
  23. package/dist/core/plugin/command-params.d.ts.map +1 -0
  24. package/dist/core/plugin/command-params.js +427 -0
  25. package/dist/core/plugin/command-params.js.map +1 -0
  26. package/dist/core/plugin/context.d.ts.map +1 -1
  27. package/dist/core/plugin/context.js +27 -0
  28. package/dist/core/plugin/context.js.map +1 -1
  29. package/dist/core/plugin/install-dir.d.ts +6 -9
  30. package/dist/core/plugin/install-dir.d.ts.map +1 -1
  31. package/dist/core/plugin/install-dir.js +99 -79
  32. package/dist/core/plugin/install-dir.js.map +1 -1
  33. package/dist/core/plugin/install-validate.d.ts +2 -1
  34. package/dist/core/plugin/install-validate.d.ts.map +1 -1
  35. package/dist/core/plugin/install-validate.js +25 -17
  36. package/dist/core/plugin/install-validate.js.map +1 -1
  37. package/dist/core/plugin/installer.d.ts +3 -3
  38. package/dist/core/plugin/installer.d.ts.map +1 -1
  39. package/dist/core/plugin/installer.js +143 -140
  40. package/dist/core/plugin/installer.js.map +1 -1
  41. package/dist/core/plugin/loader.d.ts +13 -1
  42. package/dist/core/plugin/loader.d.ts.map +1 -1
  43. package/dist/core/plugin/loader.js +106 -2
  44. package/dist/core/plugin/loader.js.map +1 -1
  45. package/dist/core/plugin/types.d.ts +14 -5
  46. package/dist/core/plugin/types.d.ts.map +1 -1
  47. package/dist/core/plugin/types.js.map +1 -1
  48. package/dist/plugins/admin/index.d.ts.map +1 -1
  49. package/dist/plugins/admin/index.js +119 -86
  50. package/dist/plugins/admin/index.js.map +1 -1
  51. package/dist/plugins/core/index.d.ts.map +1 -1
  52. package/dist/plugins/core/index.js +5 -2
  53. package/dist/plugins/core/index.js.map +1 -1
  54. package/docs/architecture.md +22 -24
  55. package/docs/configuration.md +19 -23
  56. package/docs/feature-parity.md +4 -4
  57. package/docs/migration.md +13 -13
  58. package/docs/plugin-api.md +164 -27
  59. package/docs/plugin-development.md +400 -0
  60. package/docs/release.md +2 -2
  61. package/examples/plugins/hello/README.md +10 -5
  62. package/examples/plugins/hello/index.js +3 -6
  63. package/package.json +4 -1
  64. package/src/app.ts +18 -55
  65. package/src/core/config/schema.ts +0 -1
  66. package/src/core/dispatch/command.ts +478 -70
  67. package/src/core/dispatch/router.ts +77 -3
  68. package/src/core/index.ts +3 -0
  69. package/src/core/kernel.ts +8 -1
  70. package/src/core/plugin/command-params.ts +667 -0
  71. package/src/core/plugin/context.ts +51 -2
  72. package/src/core/plugin/install-dir.ts +117 -111
  73. package/src/core/plugin/install-validate.ts +36 -34
  74. package/src/core/plugin/installer.ts +228 -184
  75. package/src/core/plugin/loader.ts +180 -3
  76. package/src/core/plugin/types.ts +31 -5
  77. package/src/plugins/admin/index.ts +302 -233
  78. package/src/plugins/core/index.ts +6 -2
  79. package/dist/core/plugin/installed.d.ts +0 -9
  80. package/dist/core/plugin/installed.d.ts.map +0 -1
  81. package/dist/core/plugin/installed.js +0 -113
  82. package/dist/core/plugin/installed.js.map +0 -1
  83. package/src/core/plugin/installed.ts +0 -165
@@ -1,6 +1,7 @@
1
- import { readFile, rm, writeFile } from 'node:fs/promises';
1
+ import { randomUUID } from 'node:crypto';
2
+ import { cp, mkdir, rename, rm, writeFile } from 'node:fs/promises';
2
3
  import { join } from 'node:path';
3
- import { CORE_PACKAGE_NAME, INSTALL_STATE_FILE, ensureCoreLink, ensureInstallDir, readDependencies, readInstallState, readInstalledVersion, writeInstallState, } from './install-dir.js';
4
+ import { ensureCoreLink, ensureInstallRoot, packageDirectoryName, pathExists, readInstallState, readJsonFile, readPackageVersion, VALIDATE_SCRIPT_FILE, writeInstallState, } from './install-dir.js';
4
5
  import { validateInstalledPackage, } from './install-validate.js';
5
6
  import { NpmCliRunner } from './npm-runner.js';
6
7
  import { isPackageAllowed, parsePackageSpec, PackageSpecError, } from './spec.js';
@@ -12,6 +13,12 @@ export class InstallerError extends Error {
12
13
  }
13
14
  const ID_PATTERN = /^[a-z0-9][a-z0-9._-]*$/i;
14
15
  const NPM_FLAGS = ['--no-audit', '--no-fund', '--loglevel=error'];
16
+ const STAGING_MANIFEST = {
17
+ name: '@jsbot-tellus/plugin-staging',
18
+ private: true,
19
+ version: '0.0.0',
20
+ type: 'module',
21
+ };
15
22
  function messageOf(error) {
16
23
  return error instanceof Error ? error.message : String(error);
17
24
  }
@@ -23,6 +30,10 @@ function asInstallerError(error) {
23
30
  }
24
31
  return new InstallerError(messageOf(error), { cause: error });
25
32
  }
33
+ function installDirectoryName(packageName, pluginIds) {
34
+ const only = pluginIds.length === 1 ? pluginIds[0] : undefined;
35
+ return only ?? packageDirectoryName(packageName);
36
+ }
26
37
  export class NpmPluginInstaller {
27
38
  enabled;
28
39
  dir;
@@ -47,26 +58,23 @@ export class NpmPluginInstaller {
47
58
  this.now = options.now ?? (() => new Date());
48
59
  }
49
60
  async list() {
50
- const dependencies = await readDependencies(this.dir);
51
61
  const state = await readInstallState(this.dir);
52
62
  const loadedIds = this.reservedIds();
53
63
  const result = [];
54
- for (const name of Object.keys(dependencies).sort()) {
55
- if (name === CORE_PACKAGE_NAME)
56
- continue;
64
+ for (const name of Object.keys(state.packages).sort()) {
57
65
  const record = state.packages[name];
58
- const version = (await readInstalledVersion(this.dir, name)) ??
59
- record?.version ??
60
- '';
61
- const pluginIds = record?.pluginIds ?? [];
66
+ if (!record)
67
+ continue;
68
+ const version = (await readPackageVersion(join(this.dir, record.dir))) ??
69
+ record.version;
62
70
  result.push({
63
71
  packageName: name,
64
72
  version,
65
- spec: record?.spec ?? dependencies[name] ?? name,
66
- pluginIds,
67
- installedAt: record?.installedAt ?? '',
68
- loaded: pluginIds.length > 0 &&
69
- pluginIds.every((id) => loadedIds.has(id)),
73
+ spec: record.spec,
74
+ pluginIds: [...record.pluginIds],
75
+ installedAt: record.installedAt,
76
+ loaded: record.pluginIds.length > 0 &&
77
+ record.pluginIds.every((id) => loadedIds.has(id)),
70
78
  });
71
79
  }
72
80
  return result;
@@ -89,12 +97,12 @@ export class NpmPluginInstaller {
89
97
  return Promise.reject(asInstallerError(error));
90
98
  }
91
99
  return this.serialize(async () => {
92
- await ensureInstallDir(this.dir);
93
- const dependencies = await readDependencies(this.dir);
94
100
  const state = await readInstallState(this.dir);
95
- this.assertStateCovers(dependencies, state);
96
- const name = this.resolveTarget(target, dependencies, state);
101
+ const name = this.resolveTarget(target, state);
97
102
  const record = state.packages[name];
103
+ if (!record) {
104
+ throw new InstallerError(`未找到已安装的插件包: ${name}`);
105
+ }
98
106
  const warnings = this.removalWarnings(name, record, state);
99
107
  const dependents = this.dependentWarnings(name, record, state);
100
108
  if (dependents.length > 0 && options?.force !== true) {
@@ -104,30 +112,39 @@ export class NpmPluginInstaller {
104
112
  '确认要卸载时请使用强制卸载(/plugin remove <目标> --force)。',
105
113
  ].join('\n'));
106
114
  }
107
- const backup = await this.backup();
115
+ const destination = join(this.dir, record.dir);
116
+ const backup = this.temporaryPath('backup');
117
+ const existed = await pathExists(destination);
108
118
  try {
109
- await this.runner.run([
110
- 'uninstall',
111
- name,
112
- '--prefix',
113
- this.dir,
114
- ...NPM_FLAGS,
115
- '--ignore-scripts',
116
- ], { timeoutMs: this.config.timeoutMs, signal });
117
- await ensureCoreLink(this.dir);
118
- delete state.packages[name];
119
- await writeInstallState(this.dir, state);
120
- this.logger.info(`removed plugin package ${name}`);
121
- return {
122
- packageName: name,
123
- pluginIds: record?.pluginIds ?? [],
124
- warnings,
125
- };
119
+ if (existed)
120
+ await rename(destination, backup);
121
+ try {
122
+ delete state.packages[name];
123
+ await writeInstallState(this.dir, state);
124
+ }
125
+ catch (error) {
126
+ if (existed) {
127
+ await rename(backup, destination).catch((restoreError) => {
128
+ this.logger.error('failed to restore plugin directory', restoreError);
129
+ });
130
+ }
131
+ throw error;
132
+ }
126
133
  }
127
134
  catch (error) {
128
- await this.rollback(backup, error);
129
135
  throw asInstallerError(error);
130
136
  }
137
+ if (existed) {
138
+ await rm(backup, { recursive: true, force: true }).catch((error) => {
139
+ this.logger.warn(`failed to remove backup directory ${backup}`, error);
140
+ });
141
+ }
142
+ this.logger.info(`removed plugin package ${name}`);
143
+ return {
144
+ packageName: name,
145
+ pluginIds: [...record.pluginIds],
146
+ warnings,
147
+ };
131
148
  });
132
149
  }
133
150
  update(target, signal) {
@@ -138,20 +155,12 @@ export class NpmPluginInstaller {
138
155
  return Promise.reject(asInstallerError(error));
139
156
  }
140
157
  return this.serialize(async () => {
141
- await ensureInstallDir(this.dir);
142
- const dependencies = await readDependencies(this.dir);
143
158
  const state = await readInstallState(this.dir);
144
- this.assertStateCovers(dependencies, state);
145
159
  const names = target === undefined || target.trim().length === 0
146
- ? Object.keys(dependencies)
147
- .filter((name) => name !== CORE_PACKAGE_NAME)
148
- .sort()
149
- : [this.resolveTarget(target, dependencies, state)];
160
+ ? Object.keys(state.packages).sort()
161
+ : [this.resolveTarget(target, state)];
150
162
  const updated = [];
151
163
  const failed = [];
152
- if (names.length === 0) {
153
- return { updated, failed };
154
- }
155
164
  for (const name of names) {
156
165
  if (signal?.aborted) {
157
166
  failed.push({ packageName: name, message: '操作已取消' });
@@ -176,44 +185,83 @@ export class NpmPluginInstaller {
176
185
  });
177
186
  }
178
187
  async installSpec(spec, signal) {
179
- await ensureInstallDir(this.dir);
180
- const previousState = await readInstallState(this.dir);
181
- const dependencies = await readDependencies(this.dir);
182
- this.assertStateCovers(dependencies, previousState);
183
- const backup = await this.backup();
188
+ await ensureInstallRoot(this.dir);
189
+ const state = await readInstallState(this.dir);
190
+ const previous = state.packages[spec.name];
191
+ const staging = this.temporaryPath('staging');
192
+ const backup = this.temporaryPath('backup');
193
+ let target = null;
194
+ let movedTarget = false;
195
+ let movedBackup = false;
184
196
  try {
197
+ await mkdir(staging, { recursive: true });
198
+ await writeFile(join(staging, 'package.json'), `${JSON.stringify(STAGING_MANIFEST, null, 4)}\n`, 'utf8');
185
199
  await this.runner.run([
186
200
  'install',
187
201
  spec.raw,
188
202
  '--prefix',
189
- this.dir,
203
+ staging,
190
204
  '--save-exact',
191
205
  ...NPM_FLAGS,
192
206
  ...(this.config.allowScripts ? [] : ['--ignore-scripts']),
193
207
  `--registry=${this.config.registry}`,
194
208
  ], { timeoutMs: this.config.timeoutMs, signal });
195
- await ensureCoreLink(this.dir);
196
- const validated = await this.validate(this.dir, spec.name, {
209
+ const packagePath = join(staging, 'node_modules', spec.name);
210
+ const manifest = await readJsonFile(join(packagePath, 'package.json'));
211
+ if (typeof manifest !== 'object' ||
212
+ manifest === null ||
213
+ Array.isArray(manifest)) {
214
+ throw new InstallerError(`npm 没有安装插件包: ${spec.name}`);
215
+ }
216
+ const flat = join(staging, 'flat');
217
+ await cp(packagePath, flat, {
218
+ recursive: true,
219
+ dereference: true,
220
+ });
221
+ await rename(join(staging, 'node_modules'), join(flat, 'node_modules'));
222
+ await rm(join(flat, 'node_modules', spec.name), {
223
+ recursive: true,
224
+ force: true,
225
+ });
226
+ await ensureCoreLink(flat);
227
+ const validated = await this.validate(flat, spec.name, {
197
228
  timeoutMs: this.config.timeoutMs,
198
229
  signal,
230
+ script: join(this.dir, '.jsbot', VALIDATE_SCRIPT_FILE),
199
231
  });
200
- this.checkPlugins(spec.name, validated, previousState);
201
- const version = await readInstalledVersion(this.dir, spec.name);
232
+ this.checkPlugins(spec.name, validated, state);
233
+ const version = await readPackageVersion(flat);
202
234
  if (version === undefined) {
203
235
  throw new InstallerError(`无法读取已安装包的版本: ${spec.name}`);
204
236
  }
205
237
  const pluginIds = validated.map((plugin) => plugin.id);
206
- const state = previousState;
207
- const warnings = this.configuredWarnings((previousState.packages[spec.name]?.pluginIds ?? []).filter((id) => !pluginIds.includes(id)));
238
+ const directory = previous?.dir ?? installDirectoryName(spec.name, pluginIds);
239
+ target = join(this.dir, directory);
240
+ await this.assertTargetAvailable(state, spec.name, directory, target, previous);
241
+ const warnings = this.configuredWarnings((previous?.pluginIds ?? []).filter((id) => !pluginIds.includes(id)));
242
+ if (await pathExists(target)) {
243
+ await rename(target, backup);
244
+ movedBackup = true;
245
+ }
246
+ await rename(flat, target);
247
+ movedTarget = true;
208
248
  state.packages[spec.name] = {
209
249
  spec: spec.raw,
210
250
  version,
211
251
  pluginIds,
212
252
  dependencies: Object.fromEntries(validated.map((plugin) => [plugin.id, plugin.dependencies])),
213
253
  installedAt: this.now().toISOString(),
254
+ dir: directory,
214
255
  };
215
256
  await writeInstallState(this.dir, state);
216
- this.logger.info(`installed plugin package ${spec.name}@${version}`);
257
+ movedTarget = false;
258
+ if (movedBackup) {
259
+ await rm(backup, { recursive: true, force: true }).catch((error) => {
260
+ this.logger.warn(`failed to remove backup directory ${backup}`, error);
261
+ });
262
+ movedBackup = false;
263
+ }
264
+ this.logger.info(`installed plugin package ${spec.name}@${version} into ${target}`);
217
265
  return {
218
266
  packageName: spec.name,
219
267
  version,
@@ -222,9 +270,38 @@ export class NpmPluginInstaller {
222
270
  };
223
271
  }
224
272
  catch (error) {
225
- await this.rollback(backup, error);
273
+ if (movedTarget && target !== null) {
274
+ await rm(target, { recursive: true, force: true }).catch((cleanupError) => {
275
+ this.logger.error('failed to remove partially installed plugin', cleanupError);
276
+ });
277
+ }
278
+ if (movedBackup && target !== null) {
279
+ await rename(backup, target).catch((restoreError) => {
280
+ this.logger.error('failed to restore previous plugin directory', restoreError);
281
+ });
282
+ movedBackup = false;
283
+ }
226
284
  throw asInstallerError(error);
227
285
  }
286
+ finally {
287
+ await rm(staging, { recursive: true, force: true }).catch((error) => {
288
+ this.logger.warn(`failed to remove staging directory ${staging}`, error);
289
+ });
290
+ }
291
+ }
292
+ async assertTargetAvailable(state, packageName, directory, target, previous) {
293
+ for (const [name, record] of Object.entries(state.packages)) {
294
+ if (name === packageName)
295
+ continue;
296
+ if (record.dir !== directory)
297
+ continue;
298
+ throw new InstallerError(`插件目录已被其它已安装包使用: ${record.dir}(${name})`);
299
+ }
300
+ if (previous !== undefined)
301
+ return;
302
+ if (await pathExists(target)) {
303
+ throw new InstallerError(`安装目录已存在且不是由安装器管理: ${target}。请先移除该本地插件或为其改名。`);
304
+ }
228
305
  }
229
306
  checkPlugins(packageName, plugins, state) {
230
307
  const ownIds = new Set(state.packages[packageName]?.pluginIds ?? []);
@@ -295,12 +372,12 @@ export class NpmPluginInstaller {
295
372
  for (const id of graph.keys())
296
373
  visit(id);
297
374
  }
298
- resolveTarget(target, dependencies, state) {
375
+ resolveTarget(target, state) {
299
376
  const value = target.trim();
300
377
  if (value.length === 0) {
301
378
  throw new InstallerError('请提供包名或插件 id');
302
379
  }
303
- if (dependencies[value] !== undefined)
380
+ if (state.packages[value] !== undefined)
304
381
  return value;
305
382
  for (const [name, record] of Object.entries(state.packages)) {
306
383
  if (record.pluginIds.includes(value))
@@ -343,88 +420,14 @@ export class NpmPluginInstaller {
343
420
  }
344
421
  return parsed;
345
422
  }
346
- assertStateCovers(dependencies, state) {
347
- const missing = Object.keys(dependencies)
348
- .filter((name) => name !== CORE_PACKAGE_NAME)
349
- .filter((name) => state.packages[name] === undefined)
350
- .sort();
351
- if (missing.length === 0)
352
- return;
353
- throw new InstallerError([
354
- '安装状态与 package.json 不一致,以下依赖缺少安装记录:',
355
- ...missing.map((name) => `- ${name}`),
356
- `请检查安装目录中的 ${INSTALL_STATE_FILE},或手动清理后重新安装。`,
357
- ].join('\n'));
423
+ temporaryPath(kind) {
424
+ return join(this.dir, `.${kind}-${randomUUID()}`);
358
425
  }
359
426
  assertEnabled() {
360
427
  if (!this.enabled) {
361
428
  throw new InstallerError('插件安装功能未启用(installer.enabled=false)');
362
429
  }
363
430
  }
364
- async backup() {
365
- const files = [];
366
- for (const name of [
367
- 'package.json',
368
- 'package-lock.json',
369
- INSTALL_STATE_FILE,
370
- ]) {
371
- const path = join(this.dir, name);
372
- try {
373
- files.push({ path, content: await readFile(path, 'utf8') });
374
- }
375
- catch (error) {
376
- if (error.code !== 'ENOENT') {
377
- throw error;
378
- }
379
- files.push({ path, content: null });
380
- }
381
- }
382
- return files;
383
- }
384
- async rollback(files, cause) {
385
- try {
386
- for (const file of files) {
387
- if (file.content === null) {
388
- await rm(file.path, { force: true });
389
- }
390
- else {
391
- await writeFile(file.path, file.content, 'utf8');
392
- }
393
- }
394
- const manifest = files.find((file) => file.path.endsWith('package.json'));
395
- const lock = files.find((file) => file.path.endsWith('package-lock.json'));
396
- if (manifest?.content === null) {
397
- await rm(join(this.dir, 'node_modules'), {
398
- recursive: true,
399
- force: true,
400
- });
401
- return;
402
- }
403
- if (lock?.content !== null && lock !== undefined) {
404
- await this.runner.run([
405
- 'ci',
406
- '--prefix',
407
- this.dir,
408
- ...NPM_FLAGS,
409
- '--ignore-scripts',
410
- ], { timeoutMs: this.config.timeoutMs });
411
- }
412
- else {
413
- await this.runner.run([
414
- 'install',
415
- '--prefix',
416
- this.dir,
417
- ...NPM_FLAGS,
418
- '--ignore-scripts',
419
- ], { timeoutMs: this.config.timeoutMs });
420
- }
421
- await ensureCoreLink(this.dir);
422
- }
423
- catch (error) {
424
- this.logger.error('plugin install rollback failed', error);
425
- throw new InstallerError(`安装失败且回滚失败:${messageOf(cause)}`, { cause });
426
- }
427
- }
428
431
  serialize(task) {
429
432
  const run = this.tail.then(task, task);
430
433
  this.tail = run.then(() => undefined, () => undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/core/plugin/installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/core/plugin/installer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,18 @@
1
1
  import type { Logger } from '../logging/logger.js';
2
+ import { type NpmRunner } from './npm-runner.js';
2
3
  import type { AnyPluginDefinition } from './types.js';
3
- type LoaderLogger = Pick<Logger, 'warn' | 'error'>;
4
+ type LoaderLogger = Pick<Logger, 'warn' | 'error'> & {
5
+ info?: Logger['info'] | undefined;
6
+ };
7
+ export interface LocalPluginLoaderOptions {
8
+ /** Build local plugins that have a build script but no dist. Defaults to true. */
9
+ autoBuild?: boolean | undefined;
10
+ /** Timeout for a single local plugin build. Defaults to 120 seconds. */
11
+ buildTimeoutMs?: number | undefined;
12
+ /** npm runner override, mainly for tests. */
13
+ runner?: NpmRunner | undefined;
14
+ }
4
15
  export declare function loadPluginsFromDirectory(directory: string, logger?: LoaderLogger | undefined): Promise<AnyPluginDefinition[]>;
16
+ export declare function loadLocalPlugins(root: string, logger?: LoaderLogger | undefined, options?: LocalPluginLoaderOptions): Promise<AnyPluginDefinition[]>;
5
17
  export {};
6
18
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/plugin/loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErD,KAAK,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAA;AAElD,wBAAsB,wBAAwB,CAC1C,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,GAClC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAgDhC"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/plugin/loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAGlD,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErD,KAAK,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;CACpC,CAAA;AAED,MAAM,WAAW,wBAAwB;IACrC,kFAAkF;IAClF,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC/B,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CACjC;AAmFD,wBAAsB,wBAAwB,CAC1C,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,GAClC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAgDhC;AAED,wBAAsB,gBAAgB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,EACjC,OAAO,GAAE,wBAA6B,GACvC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA6EhC"}
@@ -1,8 +1,61 @@
1
- import { stat } from 'node:fs/promises';
2
- import { resolve } from 'node:path';
1
+ import { readdir, stat } from 'node:fs/promises';
2
+ import { join, resolve } from 'node:path';
3
3
  import { pathToFileURL } from 'node:url';
4
4
  import fg from 'fast-glob';
5
5
  import { collectPluginExports } from './exports.js';
6
+ import { readInstallState, readJsonFile } from './install-dir.js';
7
+ import { NpmCliRunner } from './npm-runner.js';
8
+ const DEFAULT_BUILD_TIMEOUT_MS = 120_000;
9
+ function isRecord(value) {
10
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
11
+ }
12
+ async function directoryExists(path) {
13
+ const info = await stat(path).catch(() => null);
14
+ return info?.isDirectory() ?? false;
15
+ }
16
+ async function readBuildScript(directory) {
17
+ const manifest = await readJsonFile(join(directory, 'package.json')).catch(() => undefined);
18
+ if (!isRecord(manifest) || !isRecord(manifest['scripts'])) {
19
+ return undefined;
20
+ }
21
+ const build = manifest['scripts']['build'];
22
+ return typeof build === 'string' && build.trim().length > 0
23
+ ? build
24
+ : undefined;
25
+ }
26
+ async function readManagedDirectories(root) {
27
+ try {
28
+ const state = await readInstallState(root);
29
+ return new Set(Object.values(state.packages).map((record) => record.dir));
30
+ }
31
+ catch {
32
+ return null;
33
+ }
34
+ }
35
+ async function buildLocalPlugin(directory, name, logger, runner, timeoutMs) {
36
+ if ((await readBuildScript(directory)) === undefined) {
37
+ logger?.warn(`skipping local plugin ${name}: dist directory not found and package.json has no build script`);
38
+ return false;
39
+ }
40
+ if (!(await directoryExists(join(directory, 'node_modules')))) {
41
+ logger?.warn(`skipping local plugin ${name}: dist directory not found and node_modules is missing; run npm install --prefix ${directory}`);
42
+ return false;
43
+ }
44
+ logger?.info?.(`building local plugin ${name}: dist directory not found`);
45
+ try {
46
+ await runner.run(['run', 'build'], {
47
+ cwd: directory,
48
+ timeoutMs,
49
+ });
50
+ }
51
+ catch (error) {
52
+ logger?.error(`failed to build local plugin ${name}`, error);
53
+ logger?.warn(`skipping local plugin ${name}: build failed`);
54
+ return false;
55
+ }
56
+ logger?.info?.(`built local plugin ${name}`);
57
+ return true;
58
+ }
6
59
  export async function loadPluginsFromDirectory(directory, logger) {
7
60
  const absolute = resolve(directory);
8
61
  const info = await stat(absolute).catch(() => null);
@@ -39,4 +92,55 @@ export async function loadPluginsFromDirectory(directory, logger) {
39
92
  }
40
93
  return plugins;
41
94
  }
95
+ export async function loadLocalPlugins(root, logger, options = {}) {
96
+ const absolute = resolve(root);
97
+ const info = await stat(absolute).catch(() => null);
98
+ if (!info?.isDirectory())
99
+ return [];
100
+ const entries = (await readdir(absolute, { withFileTypes: true })).sort((a, b) => a.name.localeCompare(b.name));
101
+ const plugins = [];
102
+ let autoBuild = options.autoBuild !== false;
103
+ let managed = new Set();
104
+ if (autoBuild) {
105
+ const directories = await readManagedDirectories(absolute);
106
+ if (directories === null) {
107
+ logger?.warn('cannot read plugin install state; automatic local plugin build is disabled');
108
+ autoBuild = false;
109
+ }
110
+ else {
111
+ managed = directories;
112
+ }
113
+ }
114
+ const runner = options.runner ?? new NpmCliRunner();
115
+ const timeoutMs = options.buildTimeoutMs ?? DEFAULT_BUILD_TIMEOUT_MS;
116
+ for (const entry of entries) {
117
+ if (!entry.isDirectory() || entry.name.startsWith('.'))
118
+ continue;
119
+ if (entry.name === 'node_modules')
120
+ continue;
121
+ const directory = join(absolute, entry.name);
122
+ const dist = join(directory, 'dist');
123
+ let distInfo = await stat(dist).catch(() => null);
124
+ if (!distInfo?.isDirectory()) {
125
+ if (!autoBuild) {
126
+ logger?.warn(`skipping local plugin ${entry.name}: dist directory not found`);
127
+ continue;
128
+ }
129
+ if (managed.has(entry.name)) {
130
+ logger?.warn(`skipping local plugin ${entry.name}: dist directory not found (installed package is expected to include dist)`);
131
+ continue;
132
+ }
133
+ const built = await buildLocalPlugin(directory, entry.name, logger, runner, timeoutMs);
134
+ if (!built)
135
+ continue;
136
+ distInfo = await stat(dist).catch(() => null);
137
+ if (!distInfo?.isDirectory()) {
138
+ logger?.warn(`skipping local plugin ${entry.name}: build finished but dist directory not found`);
139
+ continue;
140
+ }
141
+ }
142
+ plugins.push(...(await loadPluginsFromDirectory(dist, logger)));
143
+ }
144
+ return plugins;
145
+ }
42
146
  //# sourceMappingURL=loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/plugin/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,MAAM,WAAW,CAAA;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAKnD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC1C,SAAiB,EACjB,MAAiC;IAEjC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAEnD,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAA;IAC9D,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,8BAA8B,EAAE;QACnD,GAAG,EAAE,QAAQ;QACb,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,CAAC;KAC1E,CAAC,CAAA;IAEF,MAAM,OAAO,GAA0B,EAAE,CAAA;IACzC,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,IAAI,QAAiB,CAAA;QAErB,IAAI,CAAC;YACD,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,EAAE,KAAK,CAAC,iCAAiC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAA;YAC7D,OAAO,CAAC,IAAI,CACR,oBAAoB,IAAI,KACpB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACzD,EAAE,CACL,CAAA;YACD,SAAQ;QACZ,CAAC;QAED,OAAO,CAAC,IAAI,CACR,GAAG,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE;YACpC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACnB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;gBACrB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACzB,CAAC;SACJ,CAAC,CACL,CAAA;IACL,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;IAED,OAAO,OAAO,CAAA;AAClB,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/plugin/loader.ts"],"names":[],"mappings":"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"}