@try-works/dsh-model-as-tool 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/extensions-service.d.ts +14 -0
- package/lib/extensions-service.d.ts.map +1 -1
- package/lib/extensions-service.js +89 -17
- package/lib/index.d.ts +8 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +100 -1
- package/package.json +1 -1
|
@@ -52,6 +52,14 @@ import { stagedInstallFromDirectory, type ExtensionLifecycle, type InstallDepend
|
|
|
52
52
|
import type { ExtensionInstallResult, ExtensionPrepareResult, ExtensionToggleResult, ExtensionsDescribeResult, ModelToolsRemote } from './extensions-api.ts';
|
|
53
53
|
import type { AcquisitionSource } from './asset-acquisition.ts';
|
|
54
54
|
import type { PrepareAssetsSurface } from './prepared-assets.ts';
|
|
55
|
+
/**
|
|
56
|
+
* The default dependency-graph depth bound for registry installs (task-116).
|
|
57
|
+
*
|
|
58
|
+
* The SDK default (3) is too shallow for real trees; onnxruntime-node reaches
|
|
59
|
+
* `define-data-property` at depth 4. Preinstalled packages are leaves, so this
|
|
60
|
+
* only bounds registry-resolved graphs.
|
|
61
|
+
*/
|
|
62
|
+
export declare const DEFAULT_REGISTRY_DEPENDENCY_DEPTH = 12;
|
|
55
63
|
/** What the host can report about the shared harness model provider (declarative extensions). */
|
|
56
64
|
export interface HarnessProviderStatus {
|
|
57
65
|
/** Whether a provider is composed and able to serve declarative extensions. */
|
|
@@ -200,6 +208,12 @@ export interface ExtensionsServiceOptions {
|
|
|
200
208
|
* when NO bytes arrive for this long; the byte cap remains the real bound.
|
|
201
209
|
*/
|
|
202
210
|
readonly registryTarballTimeoutMs?: number;
|
|
211
|
+
/**
|
|
212
|
+
* Dependency-graph depth bound for registry installs; defaults to
|
|
213
|
+
* {@link DEFAULT_REGISTRY_DEPENDENCY_DEPTH} (12). Configurable because real
|
|
214
|
+
* dependency trees vary; a refusal names the level and the package.
|
|
215
|
+
*/
|
|
216
|
+
readonly registryDependencyDepth?: number;
|
|
203
217
|
/** INTERNAL TEST SEAM: the directory installer, defaulting to the SDK's staged path. */
|
|
204
218
|
readonly installDirectory?: DirectoryInstaller;
|
|
205
219
|
/** INTERNAL TEST SEAM: the content digest, defaulting to the SDK's installed-content digest. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions-service.d.ts","sourceRoot":"","sources":["../src/extensions-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAKH,OAAO,EAQL,0BAA0B,EAC1B,KAAK,kBAAkB,EAEvB,KAAK,sBAAsB,EAG5B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,KAAK,EACV,sBAAsB,EAGtB,sBAAsB,EAMtB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;AAY5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/D,OAAO,KAAK,EAAsB,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"extensions-service.d.ts","sourceRoot":"","sources":["../src/extensions-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,14 @@ import { dirname, join, resolve } from 'node:path';
|
|
|
54
54
|
import { createTarGzipArchiveSource, digestInstalledContent, discoverExtension, ExtensionStore, installDependencyGraph, ManagementError, stagedInstall, stagedInstallFromDirectory, } from '@try-works/tool-mode-extension-sdk';
|
|
55
55
|
import { createFirstPartyDependencyGraph, createRegistryDependencyGraph, createRegistrySession, DEFAULT_REGISTRY_URL, MAX_DEPENDENCY_ARCHIVE_BYTES, RegistryError, resolveFirstPartyDependency, satisfiesRegistryRange, } from "./extension-dependencies.js";
|
|
56
56
|
import { createHttpSource } from "./http-acquisition.js";
|
|
57
|
+
/**
|
|
58
|
+
* The default dependency-graph depth bound for registry installs (task-116).
|
|
59
|
+
*
|
|
60
|
+
* The SDK default (3) is too shallow for real trees; onnxruntime-node reaches
|
|
61
|
+
* `define-data-property` at depth 4. Preinstalled packages are leaves, so this
|
|
62
|
+
* only bounds registry-resolved graphs.
|
|
63
|
+
*/
|
|
64
|
+
export const DEFAULT_REGISTRY_DEPENDENCY_DEPTH = 12;
|
|
57
65
|
/**
|
|
58
66
|
* The readiness values that permit activation (the SDK's callable set).
|
|
59
67
|
*
|
|
@@ -349,6 +357,56 @@ function replaceInstalledRecord(storeDir, updated) {
|
|
|
349
357
|
return false;
|
|
350
358
|
}
|
|
351
359
|
}
|
|
360
|
+
/**
|
|
361
|
+
* Directories to search for OPERATOR-PREINSTALLED packages, deepest-nested first.
|
|
362
|
+
*
|
|
363
|
+
* A preinstalled package is a LEAF: its transitive dependencies already sit in its
|
|
364
|
+
* OWN `node_modules` (npm nests them when versions conflict), so root-level lookup
|
|
365
|
+
* alone misses e.g. `@huggingface/transformers/node_modules/onnxruntime-web`. This
|
|
366
|
+
* enumerates the preinstalled root, each top-level package directory, and (bounded)
|
|
367
|
+
* their nested package directories; the resolver tries each in order.
|
|
368
|
+
* @param root - the operator-configured preinstalled root (its `node_modules` is searched).
|
|
369
|
+
* @param depth - how many nested package levels to enumerate (bounded).
|
|
370
|
+
* @returns candidate package roots, root first.
|
|
371
|
+
*/
|
|
372
|
+
function preinstalledSearchRoots(root, depth = 3) {
|
|
373
|
+
const candidates = [root];
|
|
374
|
+
const visit = (nodeModules, remaining) => {
|
|
375
|
+
if (remaining <= 0)
|
|
376
|
+
return;
|
|
377
|
+
let entries;
|
|
378
|
+
try {
|
|
379
|
+
entries = readdirSync(nodeModules);
|
|
380
|
+
}
|
|
381
|
+
catch {
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
for (const entry of entries) {
|
|
385
|
+
if (entry.startsWith('.'))
|
|
386
|
+
continue;
|
|
387
|
+
const entryPath = join(nodeModules, entry);
|
|
388
|
+
if (entry.startsWith('@')) {
|
|
389
|
+
let scoped;
|
|
390
|
+
try {
|
|
391
|
+
scoped = readdirSync(entryPath);
|
|
392
|
+
}
|
|
393
|
+
catch {
|
|
394
|
+
continue;
|
|
395
|
+
}
|
|
396
|
+
for (const name of scoped) {
|
|
397
|
+
const packageDir = join(entryPath, name);
|
|
398
|
+
candidates.push(packageDir);
|
|
399
|
+
visit(join(packageDir, 'node_modules'), remaining - 1);
|
|
400
|
+
}
|
|
401
|
+
continue;
|
|
402
|
+
}
|
|
403
|
+
candidates.push(entryPath);
|
|
404
|
+
visit(join(entryPath, 'node_modules'), remaining - 1);
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
visit(join(root, 'node_modules'), depth);
|
|
408
|
+
return candidates;
|
|
409
|
+
}
|
|
352
410
|
/**
|
|
353
411
|
* Every declared deployment whose recorded readiness does not permit activation.
|
|
354
412
|
*
|
|
@@ -1283,7 +1341,7 @@ export class ExtensionsService {
|
|
|
1283
1341
|
// Registry metadata recorded AS DATA, never as trust: the bytes are
|
|
1284
1342
|
// verified against the same sha512 before anything is extracted.
|
|
1285
1343
|
provenance: { registryIntegrity: resolved.integrity },
|
|
1286
|
-
dependencies:
|
|
1344
|
+
dependencies: this.#installGraph(session),
|
|
1287
1345
|
});
|
|
1288
1346
|
}
|
|
1289
1347
|
catch (error) {
|
|
@@ -1319,38 +1377,52 @@ export class ExtensionsService {
|
|
|
1319
1377
|
};
|
|
1320
1378
|
}
|
|
1321
1379
|
/**
|
|
1322
|
-
* The dependency graph
|
|
1380
|
+
* The dependency graph used on the REGISTRY install path (regular AND optional).
|
|
1381
|
+
*
|
|
1382
|
+
* PRECEDENCE: when the operator's preinstalled gate is ON and the host's own
|
|
1383
|
+
* tree holds a package satisfying the range, that operator-completed content is
|
|
1384
|
+
* preferred. The SDK copies it with provenance `preinstalled` and records that
|
|
1385
|
+
* no lifecycle script was run. Anything NOT preinstalled falls to the registry
|
|
1386
|
+
* arm, where EXT-10 still refuses script-declaring packages.
|
|
1323
1387
|
*
|
|
1324
|
-
*
|
|
1325
|
-
*
|
|
1326
|
-
*
|
|
1327
|
-
*
|
|
1328
|
-
* install is exactly what the gate exists for. The SDK records provenance
|
|
1329
|
-
* `preinstalled`, so the lock states the installer ran no lifecycle script.
|
|
1388
|
+
* DEPTH: preinstalled packages are LEAVES for graph purposes — their transitive
|
|
1389
|
+
* tree travels with them — but real registry trees (onnxruntime-node) exceed the
|
|
1390
|
+
* SDK's default 3-level bound, so the host raises the default to
|
|
1391
|
+
* {@link DEFAULT_REGISTRY_DEPENDENCY_DEPTH} and makes it configurable.
|
|
1330
1392
|
* @param session - the registry session.
|
|
1331
1393
|
* @returns the graph.
|
|
1332
1394
|
*/
|
|
1333
|
-
#
|
|
1334
|
-
const
|
|
1395
|
+
#installGraph(session) {
|
|
1396
|
+
const depth = this.#options.registryDependencyDepth ?? DEFAULT_REGISTRY_DEPENDENCY_DEPTH;
|
|
1397
|
+
const registryGraph = { ...createRegistryDependencyGraph(session), maxDepth: depth };
|
|
1335
1398
|
const preinstalledRoot = this.#options.preinstalledDependenciesRoot ?? '';
|
|
1336
1399
|
const allowPreinstalled = this.#options.allowPreinstalledDependencies === true && preinstalledRoot !== '';
|
|
1337
1400
|
if (!allowPreinstalled)
|
|
1338
1401
|
return registryGraph;
|
|
1402
|
+
const preinstalledRoots = preinstalledSearchRoots(preinstalledRoot);
|
|
1339
1403
|
return {
|
|
1340
1404
|
resolver: {
|
|
1341
1405
|
async resolve(name, range) {
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1406
|
+
// Prefer operator-completed content, root first and then nested package
|
|
1407
|
+
// trees: a preinstalled package's transitive deps live in ITS OWN
|
|
1408
|
+
// node_modules, so root-level lookup alone would fall through to the
|
|
1409
|
+
// registry and refuse a script-declaring leaf under EXT-10.
|
|
1410
|
+
for (const candidateRoot of preinstalledRoots) {
|
|
1411
|
+
try {
|
|
1412
|
+
const found = resolveFirstPartyDependency({ sourcePackageDir: candidateRoot }, name, range);
|
|
1413
|
+
return { name: found.name, version: found.version, dir: found.directory, provenance: 'preinstalled' };
|
|
1414
|
+
}
|
|
1415
|
+
catch {
|
|
1416
|
+
continue;
|
|
1417
|
+
}
|
|
1348
1418
|
}
|
|
1419
|
+
return registryGraph.resolver.resolve(name, range);
|
|
1349
1420
|
},
|
|
1350
1421
|
},
|
|
1351
1422
|
archive: registryGraph.archive,
|
|
1352
1423
|
allowPreinstalled: true,
|
|
1353
1424
|
preinstalledRoot,
|
|
1425
|
+
maxDepth: depth,
|
|
1354
1426
|
};
|
|
1355
1427
|
}
|
|
1356
1428
|
/**
|
|
@@ -1381,7 +1453,7 @@ export class ExtensionsService {
|
|
|
1381
1453
|
const scratch = mkdtempSync(join(tmpdir(), 'dsh-optional-runtime-'));
|
|
1382
1454
|
try {
|
|
1383
1455
|
writeFileSync(join(scratch, 'package.json'), `${JSON.stringify({ name: 'dsh-optional-runtime-host', version: '0.0.0', dependencies: { [dependency.name]: dependency.range } }, null, 2)}\n`, 'utf8');
|
|
1384
|
-
const materialized = await installDependencyGraph(scratch, this.#
|
|
1456
|
+
const materialized = await installDependencyGraph(scratch, this.#installGraph(session));
|
|
1385
1457
|
const sourceNodeModules = join(scratch, 'node_modules');
|
|
1386
1458
|
const targetNodeModules = join(installed.installPath, 'node_modules');
|
|
1387
1459
|
if (existsSync(sourceNodeModules)) {
|
package/lib/index.d.ts
CHANGED
|
@@ -158,6 +158,14 @@ export interface Config {
|
|
|
158
158
|
* Applies only when NO bytes arrive; a slow large download is not aborted.
|
|
159
159
|
*/
|
|
160
160
|
extensionTarballTimeoutMs?: number;
|
|
161
|
+
/**
|
|
162
|
+
* Dependency-graph depth bound for registry installs. Default 12.
|
|
163
|
+
*
|
|
164
|
+
* Preinstalled dependencies are leaves (their own tree travels with them);
|
|
165
|
+
* registry-resolved graphs are bounded by this, and a refusal names the level
|
|
166
|
+
* and the package.
|
|
167
|
+
*/
|
|
168
|
+
extensionDependencyDepth?: number;
|
|
161
169
|
/**
|
|
162
170
|
* Operator gate: allow dependency content that arrived already materialized.
|
|
163
171
|
*
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -109,6 +109,8 @@ export const Config = z.object({
|
|
|
109
109
|
* slowly is not aborted by the short package-metadata timeout.
|
|
110
110
|
*/
|
|
111
111
|
extensionTarballTimeoutMs: z.number().min(1000).default(10 * 60_000),
|
|
112
|
+
/** Depth bound for registry dependency graphs. Default 12 (SDK default is 3). */
|
|
113
|
+
extensionDependencyDepth: z.number().min(1).max(64).default(12),
|
|
112
114
|
allowPreinstalledDependencies: z.boolean().default(false),
|
|
113
115
|
preinstalledDependenciesRoot: z.string().default(''),
|
|
114
116
|
/**
|
|
@@ -343,6 +345,44 @@ export async function apply(ctx, config = {}) {
|
|
|
343
345
|
* install loop; the extension-store block assigns it.
|
|
344
346
|
*/
|
|
345
347
|
let extensionLifecycle;
|
|
348
|
+
/**
|
|
349
|
+
* TASK-117: the catalogue-vs-extension tool-name reconciliation.
|
|
350
|
+
*
|
|
351
|
+
* OWNERSHIP RULE: an INSTALLED extension that declares a tool with a given
|
|
352
|
+
* name OWNS that name — its activation registers the tool, so the catalogue
|
|
353
|
+
* must SKIP its own registration for a contract-backed entry with the same
|
|
354
|
+
* tool name (the live EXTENSION_FAULT was the catalogue winning the race at
|
|
355
|
+
* boot). The skip is recorded; when the owning extension deactivates, the
|
|
356
|
+
* catalogue registration is RESTORED. Deterministic in both orders: the
|
|
357
|
+
* probe reads the durable store, not an in-flight registry.
|
|
358
|
+
*/
|
|
359
|
+
const extensionStore = config.extensionStore !== undefined && config.extensionStore.length > 0
|
|
360
|
+
? new ExtensionStore(config.extensionStore)
|
|
361
|
+
: undefined;
|
|
362
|
+
const catalogueDeferred = new Set();
|
|
363
|
+
const extensionOwnsToolName = (toolName) => {
|
|
364
|
+
if (extensionStore === undefined)
|
|
365
|
+
return false;
|
|
366
|
+
try {
|
|
367
|
+
// Only an ACTIVE extension owns a name at runtime: a disabled (or
|
|
368
|
+
// failed) installation must not keep the catalogue from serving it.
|
|
369
|
+
const active = new Set(extensionStore.readProfileState('default').value
|
|
370
|
+
.filter(entry => entry.desiredActivation === 'active' && entry.observedActivation === 'active')
|
|
371
|
+
.map(entry => entry.extensionId));
|
|
372
|
+
for (const record of extensionStore.listInstalled().value) {
|
|
373
|
+
if (!active.has(record.extensionId))
|
|
374
|
+
continue;
|
|
375
|
+
const discovery = discoverExtension(record.installPath);
|
|
376
|
+
if (discovery.manifest.tools.some(tool => tool.name === toolName))
|
|
377
|
+
return true;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
catch {
|
|
381
|
+
// A broken package cannot own a tool name; the catalogue keeps it.
|
|
382
|
+
return false;
|
|
383
|
+
}
|
|
384
|
+
return false;
|
|
385
|
+
};
|
|
346
386
|
/**
|
|
347
387
|
* The extensions the contribution registrar currently admits.
|
|
348
388
|
*
|
|
@@ -380,6 +420,7 @@ export async function apply(ctx, config = {}) {
|
|
|
380
420
|
registryUrl: config.extensionRegistry ?? 'https://registry.npmjs.org/',
|
|
381
421
|
registryTarballMaxBytes: config.extensionTarballMaxBytes ?? 256 * 1024 * 1024,
|
|
382
422
|
registryTarballTimeoutMs: config.extensionTarballTimeoutMs ?? 10 * 60_000,
|
|
423
|
+
registryDependencyDepth: config.extensionDependencyDepth ?? 12,
|
|
383
424
|
/**
|
|
384
425
|
* The operator gate for already-materialized dependencies. OFF by default:
|
|
385
426
|
* a dependency whose package.json declares install-time scripts still
|
|
@@ -418,11 +459,28 @@ export async function apply(ctx, config = {}) {
|
|
|
418
459
|
onActivationChange: (extensionId, active) => {
|
|
419
460
|
if (active) {
|
|
420
461
|
activatedExtensions.add(extensionId);
|
|
462
|
+
// TASK-117: the extension now owns its tool names — withdraw the
|
|
463
|
+
// catalogue registrations for those names BEFORE the lifecycle
|
|
464
|
+
// publishes (the hook runs before activate), so the activation cannot
|
|
465
|
+
// collide with a catalogue tool. The names are deferred, not lost.
|
|
466
|
+
for (const item of resolved.filter(candidate => candidate.entry.contract !== null)) {
|
|
467
|
+
if (!extensionOwnsToolName(item.entry.tool.name))
|
|
468
|
+
continue;
|
|
469
|
+
if (!installed.has(item.entry.id))
|
|
470
|
+
continue;
|
|
471
|
+
uninstall(item.entry.id);
|
|
472
|
+
catalogueDeferred.add(item.entry.id);
|
|
473
|
+
ctx.logger.info(`model-tools: ${item.entry.name}'s tool ${item.entry.tool.name} is taken over by ${extensionId}; `
|
|
474
|
+
+ 'the catalogue registration is withdrawn and deferred');
|
|
475
|
+
}
|
|
421
476
|
return;
|
|
422
477
|
}
|
|
423
478
|
if (extensionLifecycle?.stateOf(extensionId)?.observedActivation !== 'active') {
|
|
424
479
|
activatedExtensions.delete(extensionId);
|
|
425
480
|
}
|
|
481
|
+
// TASK-117: the extension released its tool names — restore every
|
|
482
|
+
// deferred catalogue registration the release freed.
|
|
483
|
+
void restoreDeferredCatalogue();
|
|
426
484
|
},
|
|
427
485
|
/**
|
|
428
486
|
* The harness-model provider status seam (task-93): the thunk evaluates the
|
|
@@ -1117,6 +1175,18 @@ export async function apply(ctx, config = {}) {
|
|
|
1117
1175
|
toolName = existing.toolName;
|
|
1118
1176
|
dispose = () => { };
|
|
1119
1177
|
}
|
|
1178
|
+
else if (extensionOwnsToolName(entry.tool.name)) {
|
|
1179
|
+
/**
|
|
1180
|
+
* TASK-117: an installed extension OWNS this tool name — its
|
|
1181
|
+
* activation registers it, so the catalogue registration is SKIPPED
|
|
1182
|
+
* rather than racing it (the live EXTENSION_FAULT). The deferral is
|
|
1183
|
+
* recorded; the extension's deactivation restores the catalogue tool.
|
|
1184
|
+
*/
|
|
1185
|
+
catalogueDeferred.add(entry.id);
|
|
1186
|
+
ctx.logger.info(`model-tools: ${entry.name}'s tool ${entry.tool.name} is owned by an installed extension; `
|
|
1187
|
+
+ 'the catalogue registration is deferred until the extension releases the name');
|
|
1188
|
+
return false;
|
|
1189
|
+
}
|
|
1120
1190
|
else {
|
|
1121
1191
|
const registered = registerContractTool(ctx, binding, host);
|
|
1122
1192
|
registeredContracts.set(entry.contract, registered);
|
|
@@ -1218,6 +1288,33 @@ export async function apply(ctx, config = {}) {
|
|
|
1218
1288
|
const configuredIds = resolved
|
|
1219
1289
|
.filter(item => (wanted === undefined || wanted.has(item.entry.id)) && !excluded.has(item.entry.id))
|
|
1220
1290
|
.map(item => item.entry.id);
|
|
1291
|
+
/**
|
|
1292
|
+
* TASK-117: the deferred catalogue registrations, restored when the owning
|
|
1293
|
+
* extension releases a tool name (deactivation). Runs after `install` and
|
|
1294
|
+
* `resolved` exist; the onActivationChange hook fires it asynchronously.
|
|
1295
|
+
*/
|
|
1296
|
+
const restoreDeferredCatalogue = async () => {
|
|
1297
|
+
for (const modelId of [...catalogueDeferred]) {
|
|
1298
|
+
const item = resolved.find(candidate => candidate.entry.id === modelId);
|
|
1299
|
+
if (item === undefined) {
|
|
1300
|
+
catalogueDeferred.delete(modelId);
|
|
1301
|
+
continue;
|
|
1302
|
+
}
|
|
1303
|
+
if (extensionOwnsToolName(item.entry.tool.name))
|
|
1304
|
+
continue;
|
|
1305
|
+
catalogueDeferred.delete(modelId);
|
|
1306
|
+
ctx.logger.info(`model-tools: ${item.entry.name}'s tool ${item.entry.tool.name} is released; restoring the catalogue registration`);
|
|
1307
|
+
try {
|
|
1308
|
+
await install(item);
|
|
1309
|
+
}
|
|
1310
|
+
catch (error) {
|
|
1311
|
+
// A failed restore is reported, never swallowed silently: the operator
|
|
1312
|
+
// must see why the catalogue tool did not come back.
|
|
1313
|
+
ctx.logger.warn(`model-tools: could not restore the catalogue registration for ${item.entry.name}: `
|
|
1314
|
+
+ `${error instanceof Error ? error.message : String(error)}`);
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
};
|
|
1221
1318
|
for (const item of resolved) {
|
|
1222
1319
|
const { install: selection, disabled } = resolveSelection(configuredIds, persisted);
|
|
1223
1320
|
if (!selection.has(item.entry.id)) {
|
|
@@ -2360,7 +2457,9 @@ export async function apply(ctx, config = {}) {
|
|
|
2360
2457
|
*/
|
|
2361
2458
|
const extensionStoreDir = config.extensionStore ?? '';
|
|
2362
2459
|
if (extensionStoreDir.length > 0) {
|
|
2363
|
-
|
|
2460
|
+
// TASK-117: the store is the HOISTED instance (constructed at the apply
|
|
2461
|
+
// top so the catalogue-install loop can probe extension tool ownership).
|
|
2462
|
+
const store = extensionStore;
|
|
2364
2463
|
/**
|
|
2365
2464
|
* How dispatch reaches an ACTIVATED extension.
|
|
2366
2465
|
*
|