@yugoo-design/dsh-design-studio 0.2.8 → 0.3.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.
package/README.md CHANGED
@@ -56,6 +56,23 @@ Other incomplete or malformed definitions remain editable with locatable readine
56
56
  diagnostics. Imports get independent catalog identities and retain original bytes,
57
57
  methods, runtime names and resources. Repeated display names receive numeric suffixes.
58
58
  Kit imports preserve supplied Bundle trees; absent dependencies remain explicit.
59
+ Mount cards read titles and descriptions from the selected saved sources, including
60
+ imported trees without a separate library entry. Display metadata does not create
61
+ library records or change mount bindings.
62
+
63
+ Catalog discovery and import name collision checks use the owning catalog's
64
+ already loaded Bundle metadata. The trusted `listBundles` port supplies exact
65
+ pins, titles, runtime names and optional picker descriptions; it does not capture
66
+ or compile source trees. Selecting a Bundle captures and validates that source,
67
+ so an unrelated unavailable source cannot block an import.
68
+
69
+ Complete source capture and retention support up to 32 MiB per tree, matching
70
+ Core's Bundle resource budget. A portable archive supports 32 MiB of total source
71
+ bytes; its JSON allows 64 MiB for base64 and the envelope. Existing file, path,
72
+ composition and revision limits still apply.
73
+ Opaque resources retain their byte lengths during compilation, without text
74
+ conversion. The 1 MiB text editing limit is separate. Browser transports read
75
+ these limits from the pure `dsh-design-studio/types` entry.
59
76
 
60
77
  `exportArchive({id, expectedRevision})` exports the current complete saved source
61
78
  and mounted Bundle resources through the existing source-archive format. It supports
package/lib/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { A as StudioDiagnostic, C as StudioPanelPreviewRequest, D as DesignBundleVersionPin, E as loadStudioKit, M as StudioValidationReport, O as DesignKitVersionPin, S as StudioPanelPreview, T as prepareStudioPanelPreview, _ as StudioArchiveSource, a as StudioInstanceFileChange, b as exportStudioSourceArchive, c as normalizeStudioInstanceChanges, d as StudioPanelDraftRecord, f as StudioPanelDraftRepository, g as StudioArchivePin, h as StudioArchiveFile, i as StudioInstanceChangeRequest, j as StudioReadFs, k as StudioBinaryContentError, l as StudioDraftSources, m as StudioSourceSnapshot, n as StudioInstanceCandidate, o as StudioInstanceFileDiff, p as StudioPanelDraftSummary, r as StudioInstanceChangeReceipt, s as StudioInstanceSaveChanges, t as STUDIO_INSTANCE_CHANGE_LIMITS, u as StudioPanelDraftContent, v as StudioContentArchive, w as StudioPanelPreviewResult, x as readStudioContentArchive, y as exportStudioContentArchive } from "./instance-changes-CFLBPBdi.js";
1
+ import { a as StudioBinaryContentError, c as StudioValidationReport, i as STUDIO_SOURCE_MAX_BYTES, n as DesignKitVersionPin, o as StudioDiagnostic, r as STUDIO_ARCHIVE_MAX_JSON_BYTES, s as StudioReadFs, t as DesignBundleVersionPin } from "./types-B2R_HUZy.js";
2
+ import { C as StudioPanelPreviewRequest, E as loadStudioKit, S as StudioPanelPreview, T as prepareStudioPanelPreview, _ as StudioArchiveSource, a as StudioInstanceFileChange, b as exportStudioSourceArchive, c as normalizeStudioInstanceChanges, d as StudioPanelDraftRecord, f as StudioPanelDraftRepository, g as StudioArchivePin, h as StudioArchiveFile, i as StudioInstanceChangeRequest, l as StudioDraftSources, m as StudioSourceSnapshot, n as StudioInstanceCandidate, o as StudioInstanceFileDiff, p as StudioPanelDraftSummary, r as StudioInstanceChangeReceipt, s as StudioInstanceSaveChanges, t as STUDIO_INSTANCE_CHANGE_LIMITS, u as StudioPanelDraftContent, v as StudioContentArchive, w as StudioPanelPreviewResult, x as readStudioContentArchive, y as exportStudioContentArchive } from "./instance-changes-BIFP123O.js";
2
3
  import { DesignKit, DesignSkill } from "@yugoo-design/dsh-design-core";
3
4
  //#region src/snapshot.d.ts
4
5
  /** One Bundle addressed by its declared version. */
@@ -391,4 +392,4 @@ declare class StudioBundleSourceService {
391
392
  }): Promise<StudioBundleFileResult>;
392
393
  }
393
394
  //#endregion
394
- export { type DesignBundleSnapshot, type DesignBundleVersionPin, type DesignCatalogSnapshot, type DesignKitSnapshot, type DesignKitVersionPin, STUDIO_INSTANCE_CHANGE_LIMITS, type StudioArchiveFile, type StudioArchivePin, type StudioArchiveSource, StudioBinaryContentError, type StudioBundleFileRefView, type StudioBundleFileResult, type StudioBundleFileView, type StudioBundleMountView, type StudioBundlePanelView, type StudioBundleSourcePort, StudioBundleSourceService, type StudioBundleValidationSummary, type StudioBundleVersionEntry, type StudioBundleView, type StudioBundleWorkspaceResult, type StudioBundleWorkspaceView, type StudioCatalogSnapshotPort, type StudioCompositionCatalog, type StudioContentArchive, type StudioDiagnostic, type StudioDraftSources, type StudioInstanceCandidate, type StudioInstanceChangeReceipt, type StudioInstanceChangeRequest, type StudioInstanceFileChange, type StudioInstanceFileDiff, type StudioInstanceSaveChanges, type StudioKitView, type StudioKitWorkspaceResult, type StudioKitWorkspaceView, type StudioManagementFailure, StudioManagementService, type StudioPanelDraftContent, type StudioPanelDraftRecord, type StudioPanelDraftRepository, type StudioPanelDraftSummary, type StudioPanelPreview, type StudioPanelPreviewRequest, type StudioPanelPreviewResult, type StudioReadFs, type StudioRelationView, type StudioRelationVocabularyView, type StudioResourceRefView, type StudioSourceSnapshot, type StudioValidationReport, type StudioWorkspaceView, buildStudioCompositionCatalog, exportStudioContentArchive, exportStudioSourceArchive, loadStudioKit, normalizeStudioInstanceChanges, prepareStudioPanelPreview, readStudioContentArchive, searchStudioBundles, snapshotKit, validateBundle, validateKit };
395
+ export { type DesignBundleSnapshot, type DesignBundleVersionPin, type DesignCatalogSnapshot, type DesignKitSnapshot, type DesignKitVersionPin, STUDIO_ARCHIVE_MAX_JSON_BYTES, STUDIO_INSTANCE_CHANGE_LIMITS, STUDIO_SOURCE_MAX_BYTES, type StudioArchiveFile, type StudioArchivePin, type StudioArchiveSource, StudioBinaryContentError, type StudioBundleFileRefView, type StudioBundleFileResult, type StudioBundleFileView, type StudioBundleMountView, type StudioBundlePanelView, type StudioBundleSourcePort, StudioBundleSourceService, type StudioBundleValidationSummary, type StudioBundleVersionEntry, type StudioBundleView, type StudioBundleWorkspaceResult, type StudioBundleWorkspaceView, type StudioCatalogSnapshotPort, type StudioCompositionCatalog, type StudioContentArchive, type StudioDiagnostic, type StudioDraftSources, type StudioInstanceCandidate, type StudioInstanceChangeReceipt, type StudioInstanceChangeRequest, type StudioInstanceFileChange, type StudioInstanceFileDiff, type StudioInstanceSaveChanges, type StudioKitView, type StudioKitWorkspaceResult, type StudioKitWorkspaceView, type StudioManagementFailure, StudioManagementService, type StudioPanelDraftContent, type StudioPanelDraftRecord, type StudioPanelDraftRepository, type StudioPanelDraftSummary, type StudioPanelPreview, type StudioPanelPreviewRequest, type StudioPanelPreviewResult, type StudioReadFs, type StudioRelationView, type StudioRelationVocabularyView, type StudioResourceRefView, type StudioSourceSnapshot, type StudioValidationReport, type StudioWorkspaceView, buildStudioCompositionCatalog, exportStudioContentArchive, exportStudioSourceArchive, loadStudioKit, normalizeStudioInstanceChanges, prepareStudioPanelPreview, readStudioContentArchive, searchStudioBundles, snapshotKit, validateBundle, validateKit };
package/lib/index.js CHANGED
@@ -1,23 +1,7 @@
1
- import { c as prepareStudioPanelPreview, i as exportStudioSourceArchive, l as loadStudioKit, n as normalizeStudioInstanceChanges, o as readStudioContentArchive, r as exportStudioContentArchive, t as STUDIO_INSTANCE_CHANGE_LIMITS } from "./instance-changes-RvOGeBaE.js";
1
+ import { STUDIO_ARCHIVE_MAX_JSON_BYTES, STUDIO_SOURCE_MAX_BYTES, StudioBinaryContentError } from "./types.js";
2
+ import { c as prepareStudioPanelPreview, i as exportStudioSourceArchive, l as loadStudioKit, n as normalizeStudioInstanceChanges, o as readStudioContentArchive, r as exportStudioContentArchive, t as STUDIO_INSTANCE_CHANGE_LIMITS } from "./instance-changes-CAX1OjCg.js";
2
3
  import { basename, join, resolve } from "node:path";
3
4
  import { diagnoseKnowledgeDeclarations } from "@yugoo-design/dsh-design-core";
4
- //#region src/types.ts
5
- /**
6
- * Thrown by a Bundle source port when a file exists but is not decodable
7
- * UTF-8 text. The Studio surfaces binary content as an explicit diagnostic
8
- * instead of lossy-decoding it into a text viewer.
9
- */
10
- var StudioBinaryContentError = class extends Error {
11
- /** The path whose content is not UTF-8 text. */
12
- path;
13
- /** @param path - absolute path of the non-text file. */
14
- constructor(path) {
15
- super(`design studio: ${JSON.stringify(path)} is not UTF-8 text`);
16
- this.name = "StudioBinaryContentError";
17
- this.path = path;
18
- }
19
- };
20
- //#endregion
21
5
  //#region src/snapshot.ts
22
6
  /**
23
7
  * Project one Core-compiled Kit into its version-addressed snapshot form.
@@ -547,4 +531,4 @@ var StudioBundleSourceService = class {
547
531
  }
548
532
  };
549
533
  //#endregion
550
- export { STUDIO_INSTANCE_CHANGE_LIMITS, StudioBinaryContentError, StudioBundleSourceService, StudioManagementService, buildStudioCompositionCatalog, exportStudioContentArchive, exportStudioSourceArchive, loadStudioKit, normalizeStudioInstanceChanges, prepareStudioPanelPreview, readStudioContentArchive, searchStudioBundles, snapshotKit, validateBundle, validateKit };
534
+ export { STUDIO_ARCHIVE_MAX_JSON_BYTES, STUDIO_INSTANCE_CHANGE_LIMITS, STUDIO_SOURCE_MAX_BYTES, StudioBinaryContentError, StudioBundleSourceService, StudioManagementService, buildStudioCompositionCatalog, exportStudioContentArchive, exportStudioSourceArchive, loadStudioKit, normalizeStudioInstanceChanges, prepareStudioPanelPreview, readStudioContentArchive, searchStudioBundles, snapshotKit, validateBundle, validateKit };
@@ -1,74 +1,5 @@
1
+ import { n as DesignKitVersionPin, o as StudioDiagnostic, s as StudioReadFs, t as DesignBundleVersionPin } from "./types-B2R_HUZy.js";
1
2
  import { DesignKit, DesignSkill, KitResourceContent } from "@yugoo-design/dsh-design-core";
2
- //#region src/types.d.ts
3
- /**
4
- * Host-neutral Design Studio ports and read-model vocabulary.
5
- *
6
- * The Studio is a pure domain library: every filesystem operation goes through
7
- * an injected port so each Agent Host adapter (DSH, Codex, Claude Code, SDK
8
- * Pilot) supplies its own native file operations. Nothing here imports an
9
- * Agent Host runtime, Cordis, or `node:fs`. Installed content remains read-only;
10
- * editable drafts use separate injected snapshot and persistence ports.
11
- */
12
- /**
13
- * Read-only filesystem surface the Studio needs to enumerate and validate
14
- * Kits. Structurally compatible with the Design Core `KitFsLike` loader port.
15
- */
16
- interface StudioReadFs {
17
- /** Read one UTF-8 text file; `undefined` when absent. */
18
- readText(path: string): Promise<string | undefined>;
19
- /** Optional attached-resource text/opaque projection; never used for definition slots. */
20
- readResource?(path: string): Promise<KitResourceContent | undefined>;
21
- /** List one directory's entry names. */
22
- listDir(path: string): Promise<string[]>;
23
- /** Whether a path is a directory; adapters without it fall back to read probes. */
24
- isDirectory?(path: string): Promise<boolean>;
25
- /** Resolve symlinks for confinement checks. */
26
- realPath?(path: string): Promise<string>;
27
- }
28
- /** One explicit Studio diagnostic (a stable code plus a locatable message). */
29
- interface StudioDiagnostic {
30
- /** Stable diagnostic code, e.g. `kit.load`. */
31
- readonly code: string;
32
- /** Human-readable, locatable message. */
33
- readonly message: string;
34
- /** The Kit or Bundle the diagnostic is about, when known. */
35
- readonly subject?: string;
36
- /** Omitted means error, preserving existing error-only consumers. */
37
- readonly severity?: 'warning';
38
- }
39
- /** The outcome of validating one Kit or Bundle definition. */
40
- interface StudioValidationReport {
41
- /** True when the definition loads without errors; warnings do not block use. */
42
- readonly valid: boolean;
43
- /** Definition errors or non-blocking authoring warnings. */
44
- readonly diagnostics: readonly StudioDiagnostic[];
45
- }
46
- /** Exact identity of one published Kit version. */
47
- interface DesignKitVersionPin {
48
- /** Published Kit name. */
49
- readonly name: string;
50
- /** Exact declared Kit version (`major.minor`). */
51
- readonly version: string;
52
- }
53
- /** Exact identity of one published Bundle version. */
54
- interface DesignBundleVersionPin {
55
- /** Published Bundle name. */
56
- readonly name: string;
57
- /** Explicit declared Bundle version (`major.minor`). */
58
- readonly version: string;
59
- }
60
- /**
61
- * Thrown by a Bundle source port when a file exists but is not decodable
62
- * UTF-8 text. The Studio surfaces binary content as an explicit diagnostic
63
- * instead of lossy-decoding it into a text viewer.
64
- */
65
- declare class StudioBinaryContentError extends Error {
66
- /** The path whose content is not UTF-8 text. */
67
- readonly path: string;
68
- /** @param path - absolute path of the non-text file. */
69
- constructor(path: string);
70
- }
71
- //#endregion
72
3
  //#region src/load.d.ts
73
4
  /**
74
5
  * Load a Kit with authority derived from the Studio-controlled directory.
@@ -277,4 +208,4 @@ interface StudioInstanceChangeReceipt {
277
208
  /** Copy before any asynchronous host work so callers cannot mutate an in-flight edit. */
278
209
  declare function normalizeStudioInstanceChanges(value: StudioInstanceChangeRequest): StudioInstanceChangeRequest;
279
210
  //#endregion
280
- export { StudioDiagnostic as A, StudioPanelPreviewRequest as C, DesignBundleVersionPin as D, loadStudioKit as E, StudioValidationReport as M, DesignKitVersionPin as O, StudioPanelPreview as S, prepareStudioPanelPreview as T, StudioArchiveSource as _, StudioInstanceFileChange as a, exportStudioSourceArchive as b, normalizeStudioInstanceChanges as c, StudioPanelDraftRecord as d, StudioPanelDraftRepository as f, StudioArchivePin as g, StudioArchiveFile as h, StudioInstanceChangeRequest as i, StudioReadFs as j, StudioBinaryContentError as k, StudioDraftSources as l, StudioSourceSnapshot as m, StudioInstanceCandidate as n, StudioInstanceFileDiff as o, StudioPanelDraftSummary as p, StudioInstanceChangeReceipt as r, StudioInstanceSaveChanges as s, STUDIO_INSTANCE_CHANGE_LIMITS as t, StudioPanelDraftContent as u, StudioContentArchive as v, StudioPanelPreviewResult as w, readStudioContentArchive as x, exportStudioContentArchive as y };
211
+ export { StudioPanelPreviewRequest as C, loadStudioKit as E, StudioPanelPreview as S, prepareStudioPanelPreview as T, StudioArchiveSource as _, StudioInstanceFileChange as a, exportStudioSourceArchive as b, normalizeStudioInstanceChanges as c, StudioPanelDraftRecord as d, StudioPanelDraftRepository as f, StudioArchivePin as g, StudioArchiveFile as h, StudioInstanceChangeRequest as i, StudioDraftSources as l, StudioSourceSnapshot as m, StudioInstanceCandidate as n, StudioInstanceFileDiff as o, StudioPanelDraftSummary as p, StudioInstanceChangeReceipt as r, StudioInstanceSaveChanges as s, STUDIO_INSTANCE_CHANGE_LIMITS as t, StudioPanelDraftContent as u, StudioContentArchive as v, StudioPanelPreviewResult as w, readStudioContentArchive as x, exportStudioContentArchive as y };
@@ -1,5 +1,6 @@
1
- import { extname, isAbsolute, relative, resolve, sep } from "node:path";
2
- import { DesignBundleVersion, DesignKitVersion, compileSchema, loadDesignBundle, loadDesignKit } from "@yugoo-design/dsh-design-core";
1
+ import { STUDIO_ARCHIVE_MAX_JSON_BYTES, STUDIO_SOURCE_MAX_BYTES } from "./types.js";
2
+ import { isAbsolute, relative, resolve, sep } from "node:path";
3
+ import { DesignBundleVersion, DesignKitVersion, compileSchema, loadDesignBundle, loadDesignKit, projectKitResource } from "@yugoo-design/dsh-design-core";
3
4
  import { createHash } from "node:crypto";
4
5
  //#region src/load.ts
5
6
  /** Studio-owned loading of a Kit from its directory source. */
@@ -146,38 +147,14 @@ async function prepareStudioPanelPreview(source, kitRoot, request, loadOptions =
146
147
  //#endregion
147
148
  //#region src/content-archive.ts
148
149
  /** Portable regular-file content, not a plugin installer or publication format. */
149
- const MAX_BYTES = 16777216;
150
- const MAX_JSON = 33554432;
150
+ const MAX_BYTES = STUDIO_SOURCE_MAX_BYTES;
151
+ const MAX_JSON = STUDIO_ARCHIVE_MAX_JSON_BYTES;
151
152
  const MAX_FILES = 4096;
152
153
  const HASH = /^[0-9a-f]{64}$/;
153
154
  const sha = (value) => createHash("sha256").update(value).digest("hex");
154
- const OPAQUE_RESOURCE_EXTENSIONS = /* @__PURE__ */ new Set([
155
- ".bin",
156
- ".png",
157
- ".jpg",
158
- ".jpeg",
159
- ".gif",
160
- ".webp",
161
- ".avif",
162
- ".ico",
163
- ".bmp",
164
- ".pdf",
165
- ".woff",
166
- ".woff2",
167
- ".ttf",
168
- ".otf",
169
- ".eot",
170
- ".wasm"
171
- ]);
172
- /** Shared by archive capture and virtual import; full bytes and directory entries remain intact. */
155
+ /** Core owns the shared text/opaque projection; retained bytes stay exact. */
173
156
  function readStudioArchiveResource(path, bytes) {
174
- return OPAQUE_RESOURCE_EXTENSIONS.has(extname(path).toLowerCase()) ? {
175
- kind: "opaque",
176
- byteLength: bytes.byteLength
177
- } : {
178
- kind: "text",
179
- content: new TextDecoder("utf-8", { fatal: true }).decode(bytes)
180
- };
157
+ return projectKitResource(path, bytes);
181
158
  }
182
159
  function object(value) {
183
160
  if (!value || typeof value !== "object" || Array.isArray(value)) throw Error("Invalid archive object.");
@@ -220,7 +197,7 @@ function canonical(data) {
220
197
  }
221
198
  /** Parse a bounded JSON envelope; hashes include metadata and every original byte. */
222
199
  function readStudioContentArchive(source) {
223
- if (typeof source !== "string" || Buffer.byteLength(source) > MAX_JSON) throw Error("Archive JSON exceeds 32 MiB.");
200
+ if (typeof source !== "string" || Buffer.byteLength(source) > MAX_JSON) throw Error("Archive JSON exceeds 64 MiB.");
224
201
  const raw = object(JSON.parse(source));
225
202
  keys(raw, [
226
203
  "format",
@@ -288,12 +265,12 @@ function readStudioContentArchive(source) {
288
265
  directories.add(parts.join("/"));
289
266
  parts.pop();
290
267
  }
291
- if (!Number.isSafeInteger(entry.bytes) || entry.bytes < 0 || entry.bytes > MAX_BYTES - total) throw Error("Archive content exceeds 16 MiB or has an invalid byte count.");
268
+ if (!Number.isSafeInteger(entry.bytes) || entry.bytes < 0 || entry.bytes > MAX_BYTES - total) throw Error("Archive content exceeds 32 MiB or has an invalid byte count.");
292
269
  if (typeof entry.base64 !== "string" || entry.base64.length > Math.ceil(MAX_BYTES / 3) * 4 || entry.base64.length % 4 || !/^[A-Za-z0-9+/]*={0,2}$/u.test(entry.base64)) throw Error("Invalid archive base64.");
293
270
  const bytes = Buffer.from(entry.base64, "base64");
294
271
  if (bytes.toString("base64") !== entry.base64 || entry.bytes !== bytes.length || typeof entry.sha256 !== "string" || !HASH.test(entry.sha256) || sha(bytes) !== entry.sha256) throw Error("Archive file integrity mismatch.");
295
272
  total += bytes.length;
296
- if (total > MAX_BYTES) throw Error("Archive content exceeds 16 MiB.");
273
+ if (total > MAX_BYTES) throw Error("Archive content exceeds 32 MiB.");
297
274
  return Object.freeze({
298
275
  path,
299
276
  base64: entry.base64,
@@ -584,7 +561,7 @@ async function exportArchive(snapshot, input, validateDefinition) {
584
561
  safePath(target);
585
562
  const bytes = await source.readBytes(resolve(source.root, path));
586
563
  total += bytes.byteLength;
587
- if (total > MAX_BYTES || files.length >= MAX_FILES) throw Error("Archive content exceeds 16 MiB or 4096 files.");
564
+ if (total > MAX_BYTES || files.length >= MAX_FILES) throw Error("Archive content exceeds 32 MiB or 4096 files.");
588
565
  files.push({
589
566
  path: target,
590
567
  base64: Buffer.from(bytes).toString("base64"),
package/lib/node.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { D as DesignBundleVersionPin, O as DesignKitVersionPin, a as StudioInstanceFileChange, f as StudioPanelDraftRepository, i as StudioInstanceChangeRequest, l as StudioDraftSources, m as StudioSourceSnapshot, n as StudioInstanceCandidate, r as StudioInstanceChangeReceipt, s as StudioInstanceSaveChanges, v as StudioContentArchive, w as StudioPanelPreviewResult } from "./instance-changes-CFLBPBdi.js";
1
+ import { n as DesignKitVersionPin, t as DesignBundleVersionPin } from "./types-B2R_HUZy.js";
2
+ import { a as StudioInstanceFileChange, f as StudioPanelDraftRepository, i as StudioInstanceChangeRequest, l as StudioDraftSources, m as StudioSourceSnapshot, n as StudioInstanceCandidate, r as StudioInstanceChangeReceipt, s as StudioInstanceSaveChanges, v as StudioContentArchive, w as StudioPanelPreviewResult } from "./instance-changes-BIFP123O.js";
2
3
  //#region src/node/types.d.ts
3
4
  type StudioAwaitable<T> = T | Promise<T>;
4
5
  interface StudioSourceEntry {
@@ -119,7 +120,11 @@ interface StudioInstanceBundleChoice extends DesignBundleVersionPin {
119
120
  readonly instanceId?: string;
120
121
  readonly revision?: number;
121
122
  }
122
- interface StudioInstanceDescription extends Omit<StudioInstanceStoredRecord, 'overlays' | 'importedFromSnapshot'> {
123
+ interface StudioInstanceDescription extends Omit<StudioInstanceStoredRecord, 'overlays' | 'importedFromSnapshot' | 'mounts'> {
124
+ /** Display-only metadata from the selected source; never persisted in mount pins. */
125
+ readonly mounts: readonly (StudioInstanceMount & {
126
+ readonly display?: Partial<Pick<StudioInstanceBundleChoice, 'title' | 'description' | 'displayDescription'>>;
127
+ })[];
123
128
  /** Same-identity editable projection of a catalog source. */
124
129
  readonly current?: boolean;
125
130
  readonly refs: readonly {
@@ -213,7 +218,8 @@ interface StudioInstanceComposition {
213
218
  preview?(input: StudioInstancePreviewInput): Promise<StudioPanelPreviewResult>;
214
219
  }
215
220
  interface StudioInstanceTrustedCaptures {
216
- listBundles(): StudioAwaitable<readonly DesignBundleVersionPin[]>;
221
+ /** Already loaded catalog metadata; discovery must not capture complete sources. */
222
+ listBundles(): StudioAwaitable<readonly StudioInstanceBundleChoice[]>;
217
223
  captureBundle(pin: DesignBundleVersionPin): StudioAwaitable<StudioBundleCapture>;
218
224
  captureKit(pin: DesignKitVersionPin): StudioAwaitable<{
219
225
  readonly files: readonly StudioSourceEntry[];
package/lib/node.js CHANGED
@@ -1,4 +1,5 @@
1
- import { a as readStudioArchiveResource, i as exportStudioSourceArchive, n as normalizeStudioInstanceChanges, s as finalizeStudioPanelPreview, t as STUDIO_INSTANCE_CHANGE_LIMITS } from "./instance-changes-RvOGeBaE.js";
1
+ import { STUDIO_SOURCE_MAX_BYTES } from "./types.js";
2
+ import { a as readStudioArchiveResource, i as exportStudioSourceArchive, n as normalizeStudioInstanceChanges, s as finalizeStudioPanelPreview, t as STUDIO_INSTANCE_CHANGE_LIMITS } from "./instance-changes-CAX1OjCg.js";
2
3
  import { isAbsolute, join, relative, resolve, sep } from "node:path";
3
4
  import { loadDesignBundle, loadDesignKit, parseFrontmatter, parseKitMounts, parseMindsetSkillNames } from "@yugoo-design/dsh-design-core";
4
5
  import { createHash, randomUUID } from "node:crypto";
@@ -8,7 +9,7 @@ import { isMap, isScalar, isSeq, parse, parseDocument, stringify } from "yaml";
8
9
  /** Atomic local source storage and retained trial captures. No project writes. */
9
10
  const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
10
11
  const HASH = /^[0-9a-f]{64}$/;
11
- const MAX_SOURCE_BYTES = 16777216;
12
+ const MAX_SOURCE_BYTES = STUDIO_SOURCE_MAX_BYTES;
12
13
  const MAX_DOCUMENT_BYTES = 2097152;
13
14
  const inside = (root, path) => {
14
15
  const rel = relative(root, path);
@@ -249,7 +250,7 @@ async function createStudioDraftPorts({ stateRoot, kitRoot, readInstalledKit, re
249
250
  ].includes(part)) || seen.has(path) || typeof base64 !== "string" || Buffer.from(base64, "base64").toString("base64") !== base64) throw new Error("Invalid source tree entry.");
250
251
  seen.add(path);
251
252
  bytes += Buffer.byteLength(base64, "base64");
252
- if (bytes > MAX_SOURCE_BYTES) throw new Error("Source tree exceeds 16 MiB.");
253
+ if (bytes > MAX_SOURCE_BYTES) throw new Error("Source tree exceeds 32 MiB.");
253
254
  return [path, base64];
254
255
  }).sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0);
255
256
  };
@@ -285,10 +286,10 @@ async function createStudioDraftPorts({ stateRoot, kitRoot, readInstalledKit, re
285
286
  if (info.isSymbolicLink()) throw new Error("Studio cannot snapshot source symlinks.");
286
287
  if (info.isDirectory()) await walk(file, base, prefix);
287
288
  else if (info.isFile()) {
288
- if (total + info.size > MAX_SOURCE_BYTES || entries.length >= 4096) throw new Error("Kit preview snapshot exceeds 16 MiB or 4096 files.");
289
+ if (total + info.size > MAX_SOURCE_BYTES || entries.length >= 4096) throw new Error("Kit preview snapshot exceeds 32 MiB or 4096 files.");
289
290
  const bytes = await readFile(file);
290
291
  total += bytes.length;
291
- if (total > MAX_SOURCE_BYTES) throw new Error("Kit preview snapshot exceeds 16 MiB.");
292
+ if (total > MAX_SOURCE_BYTES) throw new Error("Kit preview snapshot exceeds 32 MiB.");
292
293
  entries.push([prefix + relative(base, file).split(sep).join("/"), bytes.toString("base64")]);
293
294
  } else throw new Error("Studio sources must be regular files or directories.");
294
295
  }
@@ -557,13 +558,20 @@ async function createStudioInstances(options) {
557
558
  }
558
559
  return typeof value === "string" && Buffer.byteLength(value) <= MAX_TEXT ? value : void 0;
559
560
  };
560
- const source = await text(record.kind === "kit" ? "mindset.md" : "SKILL.md");
561
+ const { title: _sourceTitle, ...copy } = await sourceDisplayCopy(record.kind, text);
562
+ return copy;
563
+ };
564
+ const sourceDisplayCopy = async (kind, text) => {
565
+ const source = await text(kind === "kit" ? "mindset.md" : "SKILL.md");
561
566
  const frontmatter = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/.exec(source ?? "");
562
- let meta = {}, translated;
567
+ let meta = {}, manifest = {}, translated;
568
+ if (kind === "bundle") try {
569
+ manifest = parse(await text("skill.yaml") ?? "") ?? {};
570
+ } catch {}
563
571
  try {
564
572
  meta = frontmatter ? parse(frontmatter[1]) ?? {} : {};
565
573
  } catch {}
566
- if (record.kind === "kit") translated = meta.display_description;
574
+ if (kind === "kit") translated = meta.display_description;
567
575
  else {
568
576
  let locales = {};
569
577
  try {
@@ -582,11 +590,14 @@ async function createStudioInstances(options) {
582
590
  zh: await readLocale("zh-CN"),
583
591
  en: await readLocale("en-US")
584
592
  };
585
- if (translated.zh === void 0 && translated.en === void 0) try {
586
- translated = parse(await text("skill.yaml") ?? "")?.description;
587
- } catch {}
593
+ if (translated.zh === void 0 && translated.en === void 0) translated = manifest.description;
588
594
  }
595
+ let title;
596
+ try {
597
+ title = titleOf(manifest.title);
598
+ } catch {}
589
599
  return {
600
+ ...title ? { title } : {},
590
601
  ...typeof meta.description === "string" ? { description: meta.description } : {},
591
602
  ...translated && ["zh", "en"].every((language) => typeof translated[language] === "string" && translated[language].trim()) ? { displayDescription: {
592
603
  zh: translated.zh,
@@ -736,7 +747,10 @@ async function createStudioInstances(options) {
736
747
  ...await displayCopy(record),
737
748
  ...await readiness(record),
738
749
  files,
739
- ...record.kind === "kit" ? { availableBundles: await candidates(records) } : {}
750
+ ...record.kind === "kit" ? {
751
+ availableBundles: await candidates(records),
752
+ mounts: await describedMounts(record)
753
+ } : {}
740
754
  };
741
755
  };
742
756
  const read = async (input) => describe(active(await repository.read(typeof input === "string" ? input : input.id)));
@@ -748,18 +762,18 @@ async function createStudioInstances(options) {
748
762
  return mounts.map((mount) => pin(mount.bundle));
749
763
  }
750
764
  };
751
- const resolveMounts = (mounts, currentLibrary = false) => async (requested) => {
752
- const selected = mounts.find((mount) => same(mount.bundle, pin(requested)));
753
- if (!selected) throw new Error("Core requested a Bundle outside the selected exact mounts.");
765
+ const currentMountRecord = async (selected) => {
754
766
  if (selected.bundle.instanceId) {
755
767
  const current = modern(await repository.read(selected.bundle.instanceId));
756
768
  if (current.kind !== "bundle" || current.bundle.name !== selected.bundle.name) throw new Error("Mounted Bundle identity changed.");
757
- return {
758
- files: await filesOf(current),
759
- sourceId: current.sourceId
760
- };
769
+ return current;
761
770
  }
762
- const current = (await repository.list()).find((record) => !record.deletedAt && record.current === true && record.kind === "bundle" && record.bundle.name === selected.bundle.name);
771
+ return (await repository.list()).find((record) => !record.deletedAt && record.current === true && record.kind === "bundle" && record.bundle.name === selected.bundle.name);
772
+ };
773
+ const resolveMounts = (mounts, currentLibrary = false) => async (requested) => {
774
+ const selected = mounts.find((mount) => same(mount.bundle, pin(requested)));
775
+ if (!selected) throw new Error("Core requested a Bundle outside the selected exact mounts.");
776
+ const current = await currentMountRecord(selected);
763
777
  if (current) return {
764
778
  files: await filesOf(current),
765
779
  sourceId: current.sourceId
@@ -771,6 +785,26 @@ async function createStudioInstances(options) {
771
785
  sourceId: selected.bundle.source.sourceId
772
786
  };
773
787
  };
788
+ const describedMounts = async (record) => Promise.all(record.mounts.map(async (mount) => {
789
+ try {
790
+ const captured = await resolveMounts(record.mounts, record.current === true)(mount.bundle);
791
+ const display = await sourceDisplayCopy("bundle", async (path) => {
792
+ safePath(path);
793
+ const file = captured.files.find((file) => file.path === path);
794
+ return file && Buffer.byteLength(file.base64, "base64") <= MAX_TEXT ? decode$1(file.base64) : void 0;
795
+ });
796
+ const current = await currentMountRecord(mount);
797
+ return {
798
+ ...mount,
799
+ display: {
800
+ ...display,
801
+ ...current ? { title: current.title } : {}
802
+ }
803
+ };
804
+ } catch {
805
+ return mount;
806
+ }
807
+ }));
774
808
  const kitInput = async (record) => ({
775
809
  kit: record.kit,
776
810
  kitFiles: await filesOf(record),
@@ -853,7 +887,7 @@ async function createStudioInstances(options) {
853
887
  path,
854
888
  base64
855
889
  }));
856
- if (files.length > 4096 || files.reduce((bytes, file) => bytes + Buffer.byteLength(file.base64, "base64"), 0) > 16777216) throw new Error("Instance source tree exceeds 4096 files or 16 MiB.");
890
+ if (files.length > 4096 || files.reduce((bytes, file) => bytes + Buffer.byteLength(file.base64, "base64"), 0) > 33554432) throw new Error("Instance source tree exceeds 4096 files or 32 MiB.");
857
891
  const paths = new Set(entries.keys());
858
892
  for (const path of paths) {
859
893
  const parts = path.split("/");
@@ -1613,7 +1647,7 @@ async function createStudioInstances(options) {
1613
1647
  //#endregion
1614
1648
  //#region src/node/studio-instance-composition.mjs
1615
1649
  /** Core-backed Studio adapters over trusted captures; no filesystem, installation or execution port. */
1616
- const MAX_TREE_BYTES = 16777216;
1650
+ const MAX_TREE_BYTES = STUDIO_SOURCE_MAX_BYTES;
1617
1651
  const MAX_TREE_FILES = 4096;
1618
1652
  const MAX_CLOSURE_BYTES = 67108864;
1619
1653
  const MAX_CLOSURE_FILES = 16384;
@@ -1657,7 +1691,7 @@ function memorySource(entries, budget = {
1657
1691
  const bytes = Buffer.from(base64, "base64");
1658
1692
  if (bytes.toString("base64") !== base64) throw new Error("Studio source base64 is not canonical.");
1659
1693
  total += bytes.length;
1660
- if (total > MAX_TREE_BYTES) throw new Error("Studio source exceeds 16 MiB.");
1694
+ if (total > MAX_TREE_BYTES) throw new Error("Studio source exceeds 32 MiB.");
1661
1695
  files.set(path, bytes);
1662
1696
  const parts = path.split("/");
1663
1697
  for (let count = 1; count < parts.length; count++) directories.add(parts.slice(0, count).join("/"));
@@ -1682,6 +1716,10 @@ function memorySource(entries, budget = {
1682
1716
  const bytes = files.get(keyOf(path));
1683
1717
  return bytes === void 0 ? void 0 : Buffer.from(bytes);
1684
1718
  },
1719
+ async readResource(path) {
1720
+ const bytes = files.get(keyOf(path));
1721
+ return bytes === void 0 ? void 0 : readStudioArchiveResource(path, bytes);
1722
+ },
1685
1723
  async listDir(path) {
1686
1724
  const key = keyOf(path), prefix = key ? `${key}/` : "";
1687
1725
  return [...new Set([...files.keys()].filter((name) => name.startsWith(prefix)).map((name) => name.slice(prefix.length).split("/")[0]))].sort();
@@ -1928,13 +1966,13 @@ function createStudioInstanceAdapters(trusted) {
1928
1966
  const pin = pinOf(value), key = `${pin.name}@${pin.version}`;
1929
1967
  if (seen.has(key)) throw new Error(`Ambiguous exact Bundle ${key}.`);
1930
1968
  seen.add(key);
1931
- const captured = await catalog.captureBundle(pin);
1969
+ if (!value.title || typeof value.title.zh !== "string" || typeof value.title.en !== "string" || typeof value.runtimeName !== "string" || !/^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/.test(value.runtimeName) || value.description !== void 0 && typeof value.description !== "string" || value.displayDescription !== void 0 && (!value.displayDescription || typeof value.displayDescription.zh !== "string" || typeof value.displayDescription.en !== "string")) throw new Error("Trusted Bundle catalog metadata is missing or invalid.");
1932
1970
  result.push({
1933
1971
  ...pin,
1934
- title: captured.title,
1935
- runtimeName: captured.runtimeName,
1936
- ...captured.description === void 0 ? {} : { description: captured.description },
1937
- ...captured.displayDescription === void 0 ? {} : { displayDescription: { ...captured.displayDescription } }
1972
+ title: { ...value.title },
1973
+ runtimeName: value.runtimeName,
1974
+ ...value.description === void 0 ? {} : { description: value.description },
1975
+ ...value.displayDescription === void 0 ? {} : { displayDescription: { ...value.displayDescription } }
1938
1976
  });
1939
1977
  }
1940
1978
  return result;
@@ -0,0 +1,76 @@
1
+ import { KitResourceContent } from "@yugoo-design/dsh-design-core";
2
+ //#region src/types.d.ts
3
+ /** Complete source bytes, matching Core's Bundle resource budget. */
4
+ declare const STUDIO_SOURCE_MAX_BYTES: number;
5
+ /** Base64 plus the bounded source/archive envelope. Safe for browser transports. */
6
+ declare const STUDIO_ARCHIVE_MAX_JSON_BYTES: number;
7
+ /**
8
+ * Host-neutral Design Studio ports and read-model vocabulary.
9
+ *
10
+ * The Studio is a pure domain library: every filesystem operation goes through
11
+ * an injected port so each Agent Host adapter (DSH, Codex, Claude Code, SDK
12
+ * Pilot) supplies its own native file operations. Nothing here imports an
13
+ * Agent Host runtime, Cordis, or `node:fs`. Installed content remains read-only;
14
+ * editable drafts use separate injected snapshot and persistence ports.
15
+ */
16
+ /**
17
+ * Read-only filesystem surface the Studio needs to enumerate and validate
18
+ * Kits. Structurally compatible with the Design Core `KitFsLike` loader port.
19
+ */
20
+ interface StudioReadFs {
21
+ /** Read one UTF-8 text file; `undefined` when absent. */
22
+ readText(path: string): Promise<string | undefined>;
23
+ /** Optional attached-resource text/opaque projection; never used for definition slots. */
24
+ readResource?(path: string): Promise<KitResourceContent | undefined>;
25
+ /** List one directory's entry names. */
26
+ listDir(path: string): Promise<string[]>;
27
+ /** Whether a path is a directory; adapters without it fall back to read probes. */
28
+ isDirectory?(path: string): Promise<boolean>;
29
+ /** Resolve symlinks for confinement checks. */
30
+ realPath?(path: string): Promise<string>;
31
+ }
32
+ /** One explicit Studio diagnostic (a stable code plus a locatable message). */
33
+ interface StudioDiagnostic {
34
+ /** Stable diagnostic code, e.g. `kit.load`. */
35
+ readonly code: string;
36
+ /** Human-readable, locatable message. */
37
+ readonly message: string;
38
+ /** The Kit or Bundle the diagnostic is about, when known. */
39
+ readonly subject?: string;
40
+ /** Omitted means error, preserving existing error-only consumers. */
41
+ readonly severity?: 'warning';
42
+ }
43
+ /** The outcome of validating one Kit or Bundle definition. */
44
+ interface StudioValidationReport {
45
+ /** True when the definition loads without errors; warnings do not block use. */
46
+ readonly valid: boolean;
47
+ /** Definition errors or non-blocking authoring warnings. */
48
+ readonly diagnostics: readonly StudioDiagnostic[];
49
+ }
50
+ /** Exact identity of one published Kit version. */
51
+ interface DesignKitVersionPin {
52
+ /** Published Kit name. */
53
+ readonly name: string;
54
+ /** Exact declared Kit version (`major.minor`). */
55
+ readonly version: string;
56
+ }
57
+ /** Exact identity of one published Bundle version. */
58
+ interface DesignBundleVersionPin {
59
+ /** Published Bundle name. */
60
+ readonly name: string;
61
+ /** Explicit declared Bundle version (`major.minor`). */
62
+ readonly version: string;
63
+ }
64
+ /**
65
+ * Thrown by a Bundle source port when a file exists but is not decodable
66
+ * UTF-8 text. The Studio surfaces binary content as an explicit diagnostic
67
+ * instead of lossy-decoding it into a text viewer.
68
+ */
69
+ declare class StudioBinaryContentError extends Error {
70
+ /** The path whose content is not UTF-8 text. */
71
+ readonly path: string;
72
+ /** @param path - absolute path of the non-text file. */
73
+ constructor(path: string);
74
+ }
75
+ //#endregion
76
+ export { StudioBinaryContentError as a, StudioValidationReport as c, STUDIO_SOURCE_MAX_BYTES as i, DesignKitVersionPin as n, StudioDiagnostic as o, STUDIO_ARCHIVE_MAX_JSON_BYTES as r, StudioReadFs as s, DesignBundleVersionPin as t };
package/lib/types.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { a as StudioBinaryContentError, c as StudioValidationReport, i as STUDIO_SOURCE_MAX_BYTES, n as DesignKitVersionPin, o as StudioDiagnostic, r as STUDIO_ARCHIVE_MAX_JSON_BYTES, s as StudioReadFs, t as DesignBundleVersionPin } from "./types-B2R_HUZy.js";
2
+ export { DesignBundleVersionPin, DesignKitVersionPin, STUDIO_ARCHIVE_MAX_JSON_BYTES, STUDIO_SOURCE_MAX_BYTES, StudioBinaryContentError, StudioDiagnostic, StudioReadFs, StudioValidationReport };
package/lib/types.js ADDED
@@ -0,0 +1,22 @@
1
+ //#region src/types.ts
2
+ /** Complete source bytes, matching Core's Bundle resource budget. */
3
+ const STUDIO_SOURCE_MAX_BYTES = 33554432;
4
+ /** Base64 plus the bounded source/archive envelope. Safe for browser transports. */
5
+ const STUDIO_ARCHIVE_MAX_JSON_BYTES = STUDIO_SOURCE_MAX_BYTES * 2;
6
+ /**
7
+ * Thrown by a Bundle source port when a file exists but is not decodable
8
+ * UTF-8 text. The Studio surfaces binary content as an explicit diagnostic
9
+ * instead of lossy-decoding it into a text viewer.
10
+ */
11
+ var StudioBinaryContentError = class extends Error {
12
+ /** The path whose content is not UTF-8 text. */
13
+ path;
14
+ /** @param path - absolute path of the non-text file. */
15
+ constructor(path) {
16
+ super(`design studio: ${JSON.stringify(path)} is not UTF-8 text`);
17
+ this.name = "StudioBinaryContentError";
18
+ this.path = path;
19
+ }
20
+ };
21
+ //#endregion
22
+ export { STUDIO_ARCHIVE_MAX_JSON_BYTES, STUDIO_SOURCE_MAX_BYTES, StudioBinaryContentError };
@@ -4,24 +4,24 @@
4
4
  "scope": "observed-current-dsh-output-and-selected-original-materials",
5
5
  "sourceArchiveObserved": null,
6
6
  "outputSha256": {
7
- "lib/index.js": "0da54290b39a73d15bc1649af784f05aa8e70ff772aaef58689f5eeb4971dbb6",
8
- "lib/instance-changes-RvOGeBaE.js": "e9ed31b1c9d947b4d34172431a7aa2b5880135e3bfc0ec2c858f86035432759c",
9
- "lib/node.js": "a9057c0d5f11d23f9fb1bb4be7696c220536fac191c763e5287373a75bd334a6"
7
+ "lib/index.js": "ff934dd0775d14cea0e0d4021321ca19dd20325392676f73fd92763873d4cb2d",
8
+ "lib/instance-changes-CAX1OjCg.js": "140c939b82437d2b040398da5f32f9b547f9c0746d2b1f8b425821b549a38405",
9
+ "lib/node.js": "7089870a471028e9355e785728d24d23afc7a889bd06eecf900963b14b250e32",
10
+ "lib/types.js": "ab22180af3ebfb0dbb1e827b82f95ccd1492ae45e9080c1b792dd82d032ce9f4"
10
11
  },
11
12
  "normalBuildMaps": [
12
13
  {
13
14
  "output": "lib/index.js",
14
15
  "observation": "normal-build-done-module-membership",
15
16
  "evidenceFile": "dsh-release-studio-0-output-modules.json",
16
- "evidenceSha256": "aabbbd5ebacbb8247b53f8d1137606c83188ea6b9958d31b966bfc90d4fd2d24",
17
- "normalOutputSha256": "080de87c4980e16ce7950010e2e92ff213057587b11b980c5ba337437ba48db8",
18
- "packedOutputSha256": "0da54290b39a73d15bc1649af784f05aa8e70ff772aaef58689f5eeb4971dbb6",
17
+ "evidenceSha256": "01e5975f5b064dae4dc56fb31265e6f292ee4431126f263421ecad766c5059d4",
18
+ "normalOutputSha256": "591a7858cf8933dd03c46e7dde2fddcc9ffb029acddd4d1b205756a76f595b43",
19
+ "packedOutputSha256": "ff934dd0775d14cea0e0d4021321ca19dd20325392676f73fd92763873d4cb2d",
19
20
  "projectOwnedSources": [
20
21
  "packages/studio/src/bundle-source.ts",
21
22
  "packages/studio/src/composition.ts",
22
23
  "packages/studio/src/management.ts",
23
24
  "packages/studio/src/snapshot.ts",
24
- "packages/studio/src/types.ts",
25
25
  "packages/studio/src/validate.ts"
26
26
  ],
27
27
  "projectOwnedSourceSha256": {
@@ -29,22 +29,21 @@
29
29
  "packages/studio/src/composition.ts": "9bf73c460608b5f491a471348292f7917159595a3d9fbff96f5637efefe309ce",
30
30
  "packages/studio/src/management.ts": "81ead1c264f09ec82a1fff34ecfb96270081040175981f5d17188871f4570ad1",
31
31
  "packages/studio/src/snapshot.ts": "377f9234d7696a26809199b417462bdf9e16f8286a9cb524a2d422648c37bc9d",
32
- "packages/studio/src/types.ts": "7941c92f98810858297bee10048c64eb259c4748ba302c88032f32bd9f3fbadd",
33
32
  "packages/studio/src/validate.ts": "38005e8858a678c75cbb27fe53e7b2d8bd068acbf205196a4acf82a87d0faa0a"
34
33
  },
35
- "sourceCount": 6,
34
+ "sourceCount": 5,
36
35
  "sourceContentsVerified": false,
37
36
  "moduleInputsReadAndHashed": true,
38
37
  "actualArchiveOutputBindingVerified": false,
39
38
  "limitations": "Bundler-reported membership and current input bytes; no complete retained-code, nested prebundle or license acceptance claim"
40
39
  },
41
40
  {
42
- "output": "lib/instance-changes-RvOGeBaE.js",
41
+ "output": "lib/instance-changes-CAX1OjCg.js",
43
42
  "observation": "normal-build-done-module-membership",
44
43
  "evidenceFile": "dsh-release-studio-0-output-modules.json",
45
- "evidenceSha256": "aabbbd5ebacbb8247b53f8d1137606c83188ea6b9958d31b966bfc90d4fd2d24",
46
- "normalOutputSha256": "c602fc3fadb5d94e99bf713c86d606e96529cd04ec1f5848fe6c42d354350c8f",
47
- "packedOutputSha256": "e9ed31b1c9d947b4d34172431a7aa2b5880135e3bfc0ec2c858f86035432759c",
44
+ "evidenceSha256": "01e5975f5b064dae4dc56fb31265e6f292ee4431126f263421ecad766c5059d4",
45
+ "normalOutputSha256": "adfddefdfc955d55a0b9e2c1be05e5218b8ede4516f203437eedf51347d74c3a",
46
+ "packedOutputSha256": "140c939b82437d2b040398da5f32f9b547f9c0746d2b1f8b425821b549a38405",
48
47
  "projectOwnedSources": [
49
48
  "packages/studio/src/content-archive.ts",
50
49
  "packages/studio/src/instance-changes.ts",
@@ -52,7 +51,7 @@
52
51
  "packages/studio/src/panel-preview.ts"
53
52
  ],
54
53
  "projectOwnedSourceSha256": {
55
- "packages/studio/src/content-archive.ts": "926566aeda27176319fe61643f70341e5abf14c136ca95a828d036ab6636837d",
54
+ "packages/studio/src/content-archive.ts": "2b551470a52d8aa3f4dd0e2f9cc6124ac062d93b1be3f9937d780f9417be11ef",
56
55
  "packages/studio/src/instance-changes.ts": "164b78c06d359d899b4edb3bd6fe96c1f41072ec4739331d3d57d4b8a45505a2",
57
56
  "packages/studio/src/load.ts": "a2e334453a7efea7b7dd00e33dcd9b0d811fc100f919ee4f244662ce9ea835bf",
58
57
  "packages/studio/src/panel-preview.ts": "da59fa5ae7d47249148b1295a3517f2288e7079441c3d277d2e18720128e6d1b"
@@ -67,9 +66,9 @@
67
66
  "output": "lib/node.js",
68
67
  "observation": "normal-build-done-module-membership",
69
68
  "evidenceFile": "dsh-release-studio-0-output-modules.json",
70
- "evidenceSha256": "aabbbd5ebacbb8247b53f8d1137606c83188ea6b9958d31b966bfc90d4fd2d24",
71
- "normalOutputSha256": "05fe01bb839576a5aac5eba983047e050a2e9d07f8472e68a088ec6ac098e422",
72
- "packedOutputSha256": "a9057c0d5f11d23f9fb1bb4be7696c220536fac191c763e5287373a75bd334a6",
69
+ "evidenceSha256": "01e5975f5b064dae4dc56fb31265e6f292ee4431126f263421ecad766c5059d4",
70
+ "normalOutputSha256": "205e8ea2772ec3d0387fbcd79457eb64e98f391736efbb4cdb943cf8f33819c4",
71
+ "packedOutputSha256": "7089870a471028e9355e785728d24d23afc7a889bd06eecf900963b14b250e32",
73
72
  "projectOwnedSources": [
74
73
  "packages/studio/src/node/studio-authoring.mjs",
75
74
  "packages/studio/src/node/studio-instance-composition.mjs",
@@ -78,15 +77,34 @@
78
77
  ],
79
78
  "projectOwnedSourceSha256": {
80
79
  "packages/studio/src/node/studio-authoring.mjs": "c5466098ac3013441ff8b13f84b400d8364b1bc8a68ea35f8de4da8634abd169",
81
- "packages/studio/src/node/studio-instance-composition.mjs": "46bcf04640e329af1659a22e8b77530a782131cf211865bc092cae37c40cc0b8",
82
- "packages/studio/src/node/studio-instances.mjs": "d61c0a7ef565c5aa02ee1b9b49a45f1e9e5d45ad45d784cd7d54a2594a9ad5a8",
83
- "packages/studio/src/node/studio-panel-drafts.mjs": "acbbbdb5a5928097d5eb88d54d550ac05609c2c56295762ecfca1a3ebc605fcf"
80
+ "packages/studio/src/node/studio-instance-composition.mjs": "df1c85a15050dbf8e7b3e640d85f617bccdfe95ca89a87604b661bbdd42eb349",
81
+ "packages/studio/src/node/studio-instances.mjs": "df8796676b3d34f1299e2c0c10d5827838ec4ea61095cd9dcb5a8e518c8caa42",
82
+ "packages/studio/src/node/studio-panel-drafts.mjs": "4b95b77778e007683bc323f45b0bcbed3a6319e78a50c8e1c83a7903e1b7c3ee"
84
83
  },
85
84
  "sourceCount": 4,
86
85
  "sourceContentsVerified": false,
87
86
  "moduleInputsReadAndHashed": true,
88
87
  "actualArchiveOutputBindingVerified": false,
89
88
  "limitations": "Bundler-reported membership and current input bytes; no complete retained-code, nested prebundle or license acceptance claim"
89
+ },
90
+ {
91
+ "output": "lib/types.js",
92
+ "observation": "normal-build-done-module-membership",
93
+ "evidenceFile": "dsh-release-studio-0-output-modules.json",
94
+ "evidenceSha256": "01e5975f5b064dae4dc56fb31265e6f292ee4431126f263421ecad766c5059d4",
95
+ "normalOutputSha256": "ab22180af3ebfb0dbb1e827b82f95ccd1492ae45e9080c1b792dd82d032ce9f4",
96
+ "packedOutputSha256": "ab22180af3ebfb0dbb1e827b82f95ccd1492ae45e9080c1b792dd82d032ce9f4",
97
+ "projectOwnedSources": [
98
+ "packages/studio/src/types.ts"
99
+ ],
100
+ "projectOwnedSourceSha256": {
101
+ "packages/studio/src/types.ts": "8299f7135d792820d0d7501acbe65efd7c48dc27dc6cdfe0d173631eff09e7de"
102
+ },
103
+ "sourceCount": 1,
104
+ "sourceContentsVerified": false,
105
+ "moduleInputsReadAndHashed": true,
106
+ "actualArchiveOutputBindingVerified": false,
107
+ "limitations": "Bundler-reported membership and current input bytes; no complete retained-code, nested prebundle or license acceptance claim"
90
108
  }
91
109
  ],
92
110
  "currentBuildAssociation": {
@@ -98,14 +116,14 @@
98
116
  "sha256": "f877117fa40947596f6780e36a99036a16057ff20f6a91105fb00d254f866193",
99
117
  "name": "dsh-design-studio",
100
118
  "version": "0.0.0",
101
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
119
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
102
120
  "firstParty": true,
103
121
  "currentSourceIdentity": {
104
122
  "manifestPath": "packages/studio/package.json",
105
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
123
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
106
124
  "name": "dsh-design-studio",
107
125
  "version": "0.0.0",
108
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
126
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
109
127
  }
110
128
  },
111
129
  {
@@ -114,14 +132,14 @@
114
132
  "sha256": "9bf73c460608b5f491a471348292f7917159595a3d9fbff96f5637efefe309ce",
115
133
  "name": "dsh-design-studio",
116
134
  "version": "0.0.0",
117
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
135
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
118
136
  "firstParty": true,
119
137
  "currentSourceIdentity": {
120
138
  "manifestPath": "packages/studio/package.json",
121
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
139
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
122
140
  "name": "dsh-design-studio",
123
141
  "version": "0.0.0",
124
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
142
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
125
143
  }
126
144
  },
127
145
  {
@@ -130,14 +148,14 @@
130
148
  "sha256": "81ead1c264f09ec82a1fff34ecfb96270081040175981f5d17188871f4570ad1",
131
149
  "name": "dsh-design-studio",
132
150
  "version": "0.0.0",
133
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
151
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
134
152
  "firstParty": true,
135
153
  "currentSourceIdentity": {
136
154
  "manifestPath": "packages/studio/package.json",
137
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
155
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
138
156
  "name": "dsh-design-studio",
139
157
  "version": "0.0.0",
140
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
158
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
141
159
  }
142
160
  },
143
161
  {
@@ -146,30 +164,14 @@
146
164
  "sha256": "377f9234d7696a26809199b417462bdf9e16f8286a9cb524a2d422648c37bc9d",
147
165
  "name": "dsh-design-studio",
148
166
  "version": "0.0.0",
149
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
167
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
150
168
  "firstParty": true,
151
169
  "currentSourceIdentity": {
152
170
  "manifestPath": "packages/studio/package.json",
153
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
171
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
154
172
  "name": "dsh-design-studio",
155
173
  "version": "0.0.0",
156
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
157
- }
158
- },
159
- {
160
- "output": "lib/index.js",
161
- "path": "packages/studio/src/types.ts",
162
- "sha256": "7941c92f98810858297bee10048c64eb259c4748ba302c88032f32bd9f3fbadd",
163
- "name": "dsh-design-studio",
164
- "version": "0.0.0",
165
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
166
- "firstParty": true,
167
- "currentSourceIdentity": {
168
- "manifestPath": "packages/studio/package.json",
169
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
170
- "name": "dsh-design-studio",
171
- "version": "0.0.0",
172
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
174
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
173
175
  }
174
176
  },
175
177
  {
@@ -178,78 +180,78 @@
178
180
  "sha256": "38005e8858a678c75cbb27fe53e7b2d8bd068acbf205196a4acf82a87d0faa0a",
179
181
  "name": "dsh-design-studio",
180
182
  "version": "0.0.0",
181
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
183
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
182
184
  "firstParty": true,
183
185
  "currentSourceIdentity": {
184
186
  "manifestPath": "packages/studio/package.json",
185
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
187
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
186
188
  "name": "dsh-design-studio",
187
189
  "version": "0.0.0",
188
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
190
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
189
191
  }
190
192
  },
191
193
  {
192
- "output": "lib/instance-changes-RvOGeBaE.js",
194
+ "output": "lib/instance-changes-CAX1OjCg.js",
193
195
  "path": "packages/studio/src/content-archive.ts",
194
- "sha256": "926566aeda27176319fe61643f70341e5abf14c136ca95a828d036ab6636837d",
196
+ "sha256": "2b551470a52d8aa3f4dd0e2f9cc6124ac062d93b1be3f9937d780f9417be11ef",
195
197
  "name": "dsh-design-studio",
196
198
  "version": "0.0.0",
197
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
199
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
198
200
  "firstParty": true,
199
201
  "currentSourceIdentity": {
200
202
  "manifestPath": "packages/studio/package.json",
201
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
203
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
202
204
  "name": "dsh-design-studio",
203
205
  "version": "0.0.0",
204
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
206
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
205
207
  }
206
208
  },
207
209
  {
208
- "output": "lib/instance-changes-RvOGeBaE.js",
210
+ "output": "lib/instance-changes-CAX1OjCg.js",
209
211
  "path": "packages/studio/src/instance-changes.ts",
210
212
  "sha256": "164b78c06d359d899b4edb3bd6fe96c1f41072ec4739331d3d57d4b8a45505a2",
211
213
  "name": "dsh-design-studio",
212
214
  "version": "0.0.0",
213
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
215
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
214
216
  "firstParty": true,
215
217
  "currentSourceIdentity": {
216
218
  "manifestPath": "packages/studio/package.json",
217
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
219
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
218
220
  "name": "dsh-design-studio",
219
221
  "version": "0.0.0",
220
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
222
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
221
223
  }
222
224
  },
223
225
  {
224
- "output": "lib/instance-changes-RvOGeBaE.js",
226
+ "output": "lib/instance-changes-CAX1OjCg.js",
225
227
  "path": "packages/studio/src/load.ts",
226
228
  "sha256": "a2e334453a7efea7b7dd00e33dcd9b0d811fc100f919ee4f244662ce9ea835bf",
227
229
  "name": "dsh-design-studio",
228
230
  "version": "0.0.0",
229
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
231
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
230
232
  "firstParty": true,
231
233
  "currentSourceIdentity": {
232
234
  "manifestPath": "packages/studio/package.json",
233
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
235
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
234
236
  "name": "dsh-design-studio",
235
237
  "version": "0.0.0",
236
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
238
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
237
239
  }
238
240
  },
239
241
  {
240
- "output": "lib/instance-changes-RvOGeBaE.js",
242
+ "output": "lib/instance-changes-CAX1OjCg.js",
241
243
  "path": "packages/studio/src/panel-preview.ts",
242
244
  "sha256": "da59fa5ae7d47249148b1295a3517f2288e7079441c3d277d2e18720128e6d1b",
243
245
  "name": "dsh-design-studio",
244
246
  "version": "0.0.0",
245
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
247
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
246
248
  "firstParty": true,
247
249
  "currentSourceIdentity": {
248
250
  "manifestPath": "packages/studio/package.json",
249
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
251
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
250
252
  "name": "dsh-design-studio",
251
253
  "version": "0.0.0",
252
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
254
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
253
255
  }
254
256
  },
255
257
  {
@@ -258,62 +260,78 @@
258
260
  "sha256": "c5466098ac3013441ff8b13f84b400d8364b1bc8a68ea35f8de4da8634abd169",
259
261
  "name": "dsh-design-studio",
260
262
  "version": "0.0.0",
261
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
263
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
262
264
  "firstParty": true,
263
265
  "currentSourceIdentity": {
264
266
  "manifestPath": "packages/studio/package.json",
265
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
267
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
266
268
  "name": "dsh-design-studio",
267
269
  "version": "0.0.0",
268
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
270
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
269
271
  }
270
272
  },
271
273
  {
272
274
  "output": "lib/node.js",
273
275
  "path": "packages/studio/src/node/studio-instance-composition.mjs",
274
- "sha256": "46bcf04640e329af1659a22e8b77530a782131cf211865bc092cae37c40cc0b8",
276
+ "sha256": "df1c85a15050dbf8e7b3e640d85f617bccdfe95ca89a87604b661bbdd42eb349",
275
277
  "name": "dsh-design-studio",
276
278
  "version": "0.0.0",
277
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
279
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
278
280
  "firstParty": true,
279
281
  "currentSourceIdentity": {
280
282
  "manifestPath": "packages/studio/package.json",
281
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
283
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
282
284
  "name": "dsh-design-studio",
283
285
  "version": "0.0.0",
284
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
286
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
285
287
  }
286
288
  },
287
289
  {
288
290
  "output": "lib/node.js",
289
291
  "path": "packages/studio/src/node/studio-instances.mjs",
290
- "sha256": "d61c0a7ef565c5aa02ee1b9b49a45f1e9e5d45ad45d784cd7d54a2594a9ad5a8",
292
+ "sha256": "df8796676b3d34f1299e2c0c10d5827838ec4ea61095cd9dcb5a8e518c8caa42",
291
293
  "name": "dsh-design-studio",
292
294
  "version": "0.0.0",
293
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
295
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
294
296
  "firstParty": true,
295
297
  "currentSourceIdentity": {
296
298
  "manifestPath": "packages/studio/package.json",
297
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
299
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
298
300
  "name": "dsh-design-studio",
299
301
  "version": "0.0.0",
300
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
302
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
301
303
  }
302
304
  },
303
305
  {
304
306
  "output": "lib/node.js",
305
307
  "path": "packages/studio/src/node/studio-panel-drafts.mjs",
306
- "sha256": "acbbbdb5a5928097d5eb88d54d550ac05609c2c56295762ecfca1a3ebc605fcf",
308
+ "sha256": "4b95b77778e007683bc323f45b0bcbed3a6319e78a50c8e1c83a7903e1b7c3ee",
309
+ "name": "dsh-design-studio",
310
+ "version": "0.0.0",
311
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
312
+ "firstParty": true,
313
+ "currentSourceIdentity": {
314
+ "manifestPath": "packages/studio/package.json",
315
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
316
+ "name": "dsh-design-studio",
317
+ "version": "0.0.0",
318
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
319
+ }
320
+ },
321
+ {
322
+ "output": "lib/types.js",
323
+ "path": "packages/studio/src/types.ts",
324
+ "sha256": "8299f7135d792820d0d7501acbe65efd7c48dc27dc6cdfe0d173631eff09e7de",
307
325
  "name": "dsh-design-studio",
308
326
  "version": "0.0.0",
309
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae",
327
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab",
310
328
  "firstParty": true,
311
329
  "currentSourceIdentity": {
312
330
  "manifestPath": "packages/studio/package.json",
313
- "sourceCommit": "0b5bf3787553103454fb910fce6a9e964d18b8fa",
331
+ "sourceCommit": "3c92097b166b6e282a52dda91f6e086aff01be50",
314
332
  "name": "dsh-design-studio",
315
333
  "version": "0.0.0",
316
- "packageMetadataSha256": "5a27dcb60ce95be6cbe2d083b9cfd8a2c4012dda9b3a9541ff915f868d75c7ae"
334
+ "packageMetadataSha256": "a9756be17e31425c29e10ddf82937a7dab2febee72fa0c6d6f3f5c45822c3aab"
317
335
  }
318
336
  }
319
337
  ],
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "directory": "packages/studio"
6
6
  },
7
7
  "name": "@yugoo-design/dsh-design-studio",
8
- "version": "0.2.8",
8
+ "version": "0.3.0",
9
9
  "license": "Apache-2.0",
10
10
  "type": "module",
11
11
  "description": "Host-neutral Studio catalog and authoring domain with an optional Node storage and source-composition adapter.",
@@ -17,6 +17,10 @@
17
17
  "default": "./lib/index.js"
18
18
  },
19
19
  "./package.json": "./package.json",
20
+ "./types": {
21
+ "types": "./lib/types.d.ts",
22
+ "default": "./lib/types.js"
23
+ },
20
24
  "./node": {
21
25
  "types": "./lib/node.d.ts",
22
26
  "default": "./lib/node.js"
@@ -34,7 +38,7 @@
34
38
  "test:source-storage": "tsx --tsconfig tests/source-tsconfig.json --test tests/source-storage.test.mjs"
35
39
  },
36
40
  "peerDependencies": {
37
- "@yugoo-design/dsh-design-core": "0.2.8"
41
+ "@yugoo-design/dsh-design-core": "0.3.0"
38
42
  },
39
43
  "files": [
40
44
  "lib/**/*.js",