@try-works/dsh-model-as-tool 0.3.6 → 0.4.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.
@@ -349,6 +349,28 @@ window.__ModuleLoader__.load({
349
349
  },
350
350
  "active": {
351
351
  "kind": "boolean"
352
+ },
353
+ "source": {
354
+ "kind": "optional",
355
+ "of": {
356
+ "kind": "union",
357
+ "of": [
358
+ {
359
+ "kind": "literal",
360
+ "value": "registry"
361
+ },
362
+ {
363
+ "kind": "literal",
364
+ "value": "directory"
365
+ }
366
+ ]
367
+ }
368
+ },
369
+ "resolvedVersion": {
370
+ "kind": "optional",
371
+ "of": {
372
+ "kind": "string"
373
+ }
352
374
  }
353
375
  }
354
376
  }
package/client/index.js CHANGED
@@ -1085,6 +1085,29 @@ window.__ModuleLoader__.load({
1085
1085
  return text
1086
1086
  }
1087
1087
 
1088
+ /**
1089
+ * The row note for a successful install.
1090
+ *
1091
+ * The wire result may carry `source` ('registry' | 'directory') and the exact
1092
+ * `resolvedVersion`. Both are OPTIONAL: an older host returns only
1093
+ * {id, version, active}, in which case this returns null and the describe()
1094
+ * row keeps showing today's "installed v<version>" text — provenance is never
1095
+ * invented from an absent or unknown source.
1096
+ *
1097
+ * @param result - the ExtensionInstallResult (any host version).
1098
+ * @returns the note, or null when the result does not name a known source.
1099
+ */
1100
+ function installResultNote(result) {
1101
+ if (result === null || result === undefined || typeof result !== 'object') return null
1102
+ const version = typeof result.resolvedVersion === 'string' && result.resolvedVersion.length > 0
1103
+ ? result.resolvedVersion
1104
+ : typeof result.version === 'string' && result.version.length > 0 ? result.version : null
1105
+ if (version === null) return null
1106
+ if (result.source === 'registry') return 'installed v' + version + ' from npm'
1107
+ if (result.source === 'directory') return 'installed v' + version + ' from the local package directory'
1108
+ return null
1109
+ }
1110
+
1088
1111
  /**
1089
1112
  * The config-only row: the switch records a `disabledExtensions` preference
1090
1113
  * and cannot observe or change the store. Used when the Remote is absent.
@@ -1123,7 +1146,7 @@ window.__ModuleLoader__.load({
1123
1146
  *
1124
1147
  * @param entry - the generated extension entry.
1125
1148
  * @param state - the describe() row for it, or null when not reported.
1126
- * @param ui - { writable, canInstall, listed, busy, pending, error, prepareNote, onAction }.
1149
+ * @param ui - { writable, canInstall, listed, busy, pending, error, prepareNote, installNote, onAction }.
1127
1150
  */
1128
1151
  function extensionRemoteRow(entry, state, ui) {
1129
1152
  const installed = state !== null && state.installed === true
@@ -1158,6 +1181,9 @@ window.__ModuleLoader__.load({
1158
1181
  if (ui.prepareNote !== null && ui.prepareNote !== undefined && ui.prepareNote.id === entry.id) {
1159
1182
  addNote(ui.prepareNote.text)
1160
1183
  }
1184
+ if (ui.installNote !== null && ui.installNote !== undefined && ui.installNote.id === entry.id) {
1185
+ addNote(ui.installNote.text)
1186
+ }
1161
1187
  // Every unmet requirement gets its exact reason on the row. A requirement
1162
1188
  // whose reason is the row reason already is not repeated; the hint comes
1163
1189
  // from `action` only, never from the wording.
@@ -1268,6 +1294,10 @@ window.__ModuleLoader__.load({
1268
1294
  // The last prepare() disclosure/refusal, per row. It is rendered beside the
1269
1295
  // host's reason so a RES-02 refusal or plan is shown verbatim.
1270
1296
  const [extPrepareNote, setExtPrepareNote] = React.useState(null)
1297
+ // The provenance note from the last successful install, per row ("installed
1298
+ // v<resolvedVersion> from npm / from the local package directory"). Null for
1299
+ // a legacy host result that carries neither source nor resolvedVersion.
1300
+ const [extInstallNote, setExtInstallNote] = React.useState(null)
1271
1301
 
1272
1302
  /** This mount's namespace status, or null when the wire chunk is absent. */
1273
1303
  const mounted = () => (remoteSlot === null || remoteSlot === undefined ? null : remoteSlot.get())
@@ -1431,6 +1461,7 @@ window.__ModuleLoader__.load({
1431
1461
  setExtRowError(null)
1432
1462
  setExtConfigNote(null)
1433
1463
  setExtPrepareNote(null)
1464
+ setExtInstallNote(null)
1434
1465
  setExtRemote({ kind: 'loading' })
1435
1466
  const namespace = modelToolsRemote(ctx, mounted())
1436
1467
  if (namespace === null) {
@@ -1456,6 +1487,7 @@ window.__ModuleLoader__.load({
1456
1487
  setExtRowError(null)
1457
1488
  setExtConfigNote(null)
1458
1489
  setExtPrepareNote(null)
1490
+ setExtInstallNote(null)
1459
1491
  setExtPending({ id, action })
1460
1492
  try {
1461
1493
  const namespace = modelToolsRemote(ctx, mounted())
@@ -1471,7 +1503,11 @@ window.__ModuleLoader__.load({
1471
1503
  // its positional slot. Passing only the id is refused by the gateway
1472
1504
  // ("expected 2 business argument(s) ... got 1"), so pass undefined to
1473
1505
  // mean "use the configured first-party source".
1474
- unwrapRemoteResult(await install.call(namespace, id, undefined))
1506
+ const installed = unwrapRemoteResult(await install.call(namespace, id, undefined))
1507
+ // Provenance note when the host names the route; null on a legacy
1508
+ // result, in which case describe()'s "installed v<version>" stands.
1509
+ const note = installResultNote(installed)
1510
+ if (note !== null) setExtInstallNote({ id, text: note })
1475
1511
  } else if (action === 'prepare') {
1476
1512
  if (typeof namespace.prepare !== 'function') {
1477
1513
  throw new Error('This host does not expose the extension prepare action.')
@@ -1550,6 +1586,7 @@ window.__ModuleLoader__.load({
1550
1586
  pending: extPending,
1551
1587
  error: extRowError,
1552
1588
  prepareNote: extPrepareNote,
1589
+ installNote: extInstallNote,
1553
1590
  onAction: runExtensionAction,
1554
1591
  })))
1555
1592
  } else if (extRemote.kind === 'error') {
@@ -1673,6 +1710,7 @@ window.__ModuleLoader__.load({
1673
1710
  extensionRequirementControls,
1674
1711
  extensionNeedsPreparation,
1675
1712
  prepareResultNote,
1713
+ installResultNote,
1676
1714
  }
1677
1715
  return module.exports
1678
1716
  },
@@ -39,7 +39,7 @@
39
39
  *
40
40
  * @module @try-works/dsh-model-as-tool/extension-dependencies
41
41
  */
42
- import { DEFAULT_ARCHIVE_LIMITS, type ArchiveSource, type DependencyResolver, type InstallDependencyGraph } from '@try-works/tool-mode-extension-sdk';
42
+ import { DEFAULT_ARCHIVE_LIMITS, type ArchiveSource, type DependencyResolver, type InstallDependencyGraph, type InstallSource } from '@try-works/tool-mode-extension-sdk';
43
43
  /**
44
44
  * The dependency archive byte cap.
45
45
  *
@@ -194,4 +194,132 @@ export type DependencySupply = {
194
194
  export declare function createFirstPartyDependencyGraph(options: FirstPartyDependencyGraphOptions): FirstPartyDependencyGraph;
195
195
  /** Re-export for callers that want the size bound wording. */
196
196
  export { DEFAULT_ARCHIVE_LIMITS };
197
+ /** The default npm registry. */
198
+ export declare const DEFAULT_REGISTRY_URL = "https://registry.npmjs.org/";
199
+ /** How a registry operation failed. Every code is host-facing and stable. */
200
+ export type RegistryErrorCode =
201
+ /** No registry URL is configured. */
202
+ 'registry-not-configured'
203
+ /** The registry has no such package, version, or dist-tag. */
204
+ | 'registry-not-found'
205
+ /** Transport failure or 5xx: the registry did not answer usefully. This is the ONLY fallback-eligible failure. */
206
+ | 'registry-unavailable'
207
+ /** The metadata did not have the npm shape this client can verify. */
208
+ | 'registry-invalid-metadata'
209
+ /** `dist.integrity` is absent or not a sha512 SRI string: installs are refused, never unverified. */
210
+ | 'registry-integrity-missing'
211
+ /** The tarball did not download (non-2xx, truncated, aborted). */
212
+ | 'registry-tarball-fetch-failed'
213
+ /** The tarball is over the configured byte cap. */
214
+ | 'registry-tarball-too-large'
215
+ /** No published version satisfies the requested range. */
216
+ | 'registry-no-matching-version';
217
+ /** A named registry failure. */
218
+ export declare class RegistryError extends Error {
219
+ readonly name = "RegistryError";
220
+ readonly code: RegistryErrorCode;
221
+ /** Whether a directory fallback may be considered under `auto`. */
222
+ readonly transport: boolean;
223
+ constructor(code: RegistryErrorCode, message: string, options?: {
224
+ readonly cause?: unknown;
225
+ readonly transport?: boolean;
226
+ });
227
+ }
228
+ /** One package version resolved from the registry. */
229
+ export interface RegistryPackageResolution {
230
+ /** The package name, exactly as requested. */
231
+ readonly name: string;
232
+ /** The EXACT published version selected. */
233
+ readonly version: string;
234
+ /** The tarball URL from `dist.tarball`. */
235
+ readonly tarball: string;
236
+ /** The registry's sha512 SRI string from `dist.integrity` (verified before extraction). */
237
+ readonly integrity: string;
238
+ /** The dist-tag that selected this version, when the request named one. */
239
+ readonly distTag?: string;
240
+ }
241
+ /** What a registry session needs. */
242
+ export interface RegistrySessionOptions {
243
+ /** Registry base URL, e.g. `https://registry.npmjs.org/`. Empty is allowed and refuses at resolve time. */
244
+ readonly registryUrl: string;
245
+ /**
246
+ * The container decoder for the bytes the registry serves.
247
+ *
248
+ * npm serves `.tgz`; the host passes the SDK's tar-gzip ArchiveSource factory.
249
+ * Injectable so the session (resolution, bounds, integrity plumbing) can be
250
+ * tested independently of the container implementation.
251
+ */
252
+ readonly archiveFactory: (fetcher: (source: InstallSource) => Promise<Uint8Array>) => ArchiveSource;
253
+ /** Hard cap on one downloaded package tarball; defaults to the SDK archive bound. */
254
+ readonly maxTarballBytes?: number;
255
+ /** Request timeout; default 30 s. */
256
+ readonly timeoutMs?: number;
257
+ /** Injected fetch, for tests. Defaults to the global fetch. */
258
+ readonly fetchImpl?: typeof fetch;
259
+ }
260
+ /** A registry session: version resolution plus the tarball archive over the SAME registry. */
261
+ export interface RegistrySession {
262
+ /** The normalized registry base URL ('' when unconfigured). */
263
+ readonly registryUrl: string;
264
+ /** The ArchiveSource the install/dependency pipelines fetch through. */
265
+ readonly archive: ArchiveSource;
266
+ /**
267
+ * Resolve `<name>@<spec>` to one exact published version.
268
+ * @param name - the package name.
269
+ * @param spec - a dist-tag (`latest`), an exact version, or a semver range.
270
+ * @param signal - cancellation.
271
+ * @returns the exact version, tarball URL and sha512 integrity.
272
+ */
273
+ resolve(name: string, spec: string, signal?: AbortSignal): Promise<RegistryPackageResolution>;
274
+ /**
275
+ * Download the bytes registered for one archive source, bounded.
276
+ * @param source - the source returned by a previous resolve.
277
+ * @param signal - cancellation.
278
+ * @returns the tarball bytes (NOT yet digest-verified; the caller verifies).
279
+ */
280
+ download(source: InstallSource, signal?: AbortSignal): Promise<Uint8Array>;
281
+ }
282
+ /**
283
+ * Whether one published version satisfies a semver range.
284
+ *
285
+ * Supported: exact versions, `^`, `~`, x-ranges (`1.x`, `1.2`), comparison
286
+ * operators (`>=`, `>`, `<=`, `<`, `=`), hyphen ranges, `||`, and `*`. NOT
287
+ * supported (refused rather than guessed): prerelease-only ranges and npm's
288
+ * `tag:` protocol. A prerelease version only matches a range that itself names a
289
+ * prerelease.
290
+ * @param versionText - the published version.
291
+ * @param rangeText - the requested range.
292
+ * @returns whether the version satisfies the range.
293
+ */
294
+ export declare function satisfiesRegistryRange(versionText: string, rangeText: string): boolean;
295
+ /**
296
+ * The highest published version satisfying a range.
297
+ * @param versions - the published version strings.
298
+ * @param rangeText - the requested range.
299
+ * @returns the highest satisfying version exactly as published, or undefined.
300
+ */
301
+ export declare function highestSatisfyingVersion(versions: readonly string[], rangeText: string): string | undefined;
302
+ /**
303
+ * Create a registry session over one npm registry.
304
+ *
305
+ * The same session serves the extension package and every runtime dependency, so
306
+ * the tarball map (key → URL) the resolver registers is the map the archive
307
+ * fetches through. Nothing is downloaded until a caller fetches; nothing is
308
+ * verified here (the SDK verifies the sha512 before extraction, and this module
309
+ * refuses metadata without one).
310
+ * @param options - registry URL, archive factory, bounds and fetch seam.
311
+ * @returns the session.
312
+ */
313
+ export declare function createRegistrySession(options: RegistrySessionOptions): RegistrySession;
314
+ /**
315
+ * Wire a registry session into the SDK dependency-graph contract.
316
+ *
317
+ * Every declared dependency is resolved to one exact published version with its
318
+ * sha512 integrity; the SAME session archive fetches the bytes, so the manifest
319
+ * the graph verifies is the manifest that was resolved. EXT-10's script refusal is
320
+ * the SDK's own, unchanged.
321
+ * @param session - the registry session.
322
+ * @returns the install-dependency graph.
323
+ */
324
+ export declare function createRegistryDependencyGraph(session: RegistrySession): InstallDependencyGraph;
197
325
  //# sourceMappingURL=extension-dependencies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension-dependencies.d.ts","sourceRoot":"","sources":["../src/extension-dependencies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-dependencies.d.ts","sourceRoot":"","sources":["../src/extension-dependencies.ts"],"names":[],"mappings":"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"}