@yugoo-design/dsh-design-studio-dsh 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +13 -2
  2. package/lib/authoring/studio-creators/material.json +1 -1
  3. package/lib/{authoring-agent-Ci08ifdJ.js → authoring-agent-vc786tS0.js} +16 -2
  4. package/lib/authoring-agent.d.ts +1 -1
  5. package/lib/authoring-agent.js +1 -1
  6. package/lib/{authoring-agent.types-QLa61eE6.d.ts → authoring-agent.types-0S0xnlDW.d.ts} +2 -3
  7. package/lib/authoring-entry.js +1 -1
  8. package/lib/{authoring-host-BlsA6wXz.js → authoring-host-m8-GmXIx.js} +1 -0
  9. package/lib/authoring-host.d.ts +1 -1
  10. package/lib/authoring-host.js +1 -1
  11. package/lib/{authoring-host.types-d5UT0WEk.d.ts → authoring-host.types-BZt9l0xK.d.ts} +2 -2
  12. package/lib/authoring-reference-store.d.ts +1 -1
  13. package/lib/{authoring-service-qGEk-IE_.js → authoring-service-WClXJGik.js} +11 -6
  14. package/lib/authoring-service.d.ts +15 -6
  15. package/lib/authoring-service.js +1 -1
  16. package/lib/authoring-session.d.ts +1 -1
  17. package/lib/authoring-session.js +2 -1
  18. package/lib/{authoring-session.types-MHEaEFkO.d.ts → authoring-session.types-C6HosIWU.d.ts} +2 -2
  19. package/lib/authoring-sources.js +16 -6
  20. package/lib/authoring-workbench.d.ts +2 -2
  21. package/lib/authoring-workbench.js +1 -1
  22. package/lib/{authoring.page-rpc-Bg6VAT0Z.d.ts → authoring.page-rpc-CYYWsmxc.d.ts} +4 -4
  23. package/lib/authoring.page-rpc.d.ts +1 -1
  24. package/lib/{client-adapter-BgD1mpCC.d.ts → client-adapter-BmIzQcMT.d.ts} +1 -1
  25. package/lib/client-adapter.d.ts +2 -2
  26. package/lib/page-client.js +2 -2
  27. package/lib/{page-path-Bj5jO20L.d.ts → page-path-BkPiqrUH.d.ts} +1 -1
  28. package/lib/page-path.d.ts +1 -1
  29. package/lib/{page-rpc-DiazVY00.d.ts → page-rpc-DXbf4seT.d.ts} +1 -1
  30. package/lib/page-rpc.d.ts +1 -1
  31. package/lib/page.d.ts +1 -1
  32. package/licenses/dsh-distribution.json +136 -136
  33. package/package.json +5 -5
@@ -355,12 +355,26 @@ function createStudioAuthoringAgent(ctx) {
355
355
  };
356
356
  register(defineTool({
357
357
  name: "studio_authoring_read",
358
- description: "Read the exact bound Studio source, packaged creator methods with authoring:{resource?,offset?}, or actual component references with components:{name?,reference?,type?,offset?}. Read authoring:{} for the index first and follow nextOffset. Discover components:{}, then read an exact name with reference contract/docs/examples; type selects a referenced contract declaration only. Large references are JSON text pages; follow nextOffset with the same selectors and components.offset. These are read-only guidance, not editable source. Scope is fixed by the Host; no project or arbitrary filesystem access.",
358
+ description: "Read the exact bound Studio source with paths. The source receipt lists availableFiles and Kit mounts. For a listed mount, use mount:{bindingKey} to discover its current saved files, then mount:{bindingKey,paths:[...]} to read them. Mounted Bundle content is read-only; it grants no writes outside the bound Kit. Packaged creator methods use authoring:{resource?,offset?}; these are guidance, not the mounted current source. Read authoring:{} for the index first and follow nextOffset. Discover actual components:{}, then an exact component name with reference contract/docs/examples; a Bundle bindingKey is not a component. type selects a referenced contract declaration only. Large references are JSON text pages; follow nextOffset with the same selectors and components.offset. Scope is fixed by the Host; no project or arbitrary filesystem access.",
359
359
  parameters: {
360
360
  paths: {
361
361
  type: "array",
362
362
  items: { type: "string" }
363
363
  },
364
+ mount: {
365
+ type: "object",
366
+ properties: {
367
+ bindingKey: {
368
+ type: "string",
369
+ required: true
370
+ },
371
+ paths: {
372
+ type: "array",
373
+ items: { type: "string" }
374
+ }
375
+ },
376
+ additionalProperties: false
377
+ },
364
378
  authoring: {
365
379
  type: "object",
366
380
  properties: {
@@ -455,7 +469,7 @@ function createStudioAuthoringAgent(ctx) {
455
469
  childCtx.systemPrompt.section({
456
470
  name: "studio:customization-methods",
457
471
  order: 550,
458
- text: `Work only on this Host-bound Studio source scope: ${encode(scope)}. ${manifestIdentity} ${STUDIO_AUTHORING_METHOD_GUIDANCE} Use studio_authoring_read with {authoring:{}} for the creator index, then {authoring:{resource,offset}} for its exact resources. Read bound source and the actual component catalog separately with {paths:[...]}. Use studio_authoring_prepare for full-file candidates, including new source files in this working copy; allowedPaths names the initial read only, and validation/preview diagnostics come from S1. ${PREPARE_REPLACEMENT_GUIDANCE} No filesystem, shell, project/GRA, save, publication, or delegation is granted. A prepared candidate is for human review, not saved content. Finish your native turn after preparing the requested candidate.`
472
+ text: `Work only on this Host-bound Studio source scope: ${encode(scope)}. ${manifestIdentity} ${STUDIO_AUTHORING_METHOD_GUIDANCE} Use studio_authoring_read with {authoring:{}} for the creator index, then {authoring:{resource,offset}} for its exact resources. Read bound source with {paths:[...]}; its receipt discovers availableFiles and Kit mounts. Read a listed Bundle's current saved source separately with {mount:{bindingKey}} for its file list, then {mount:{bindingKey,paths:[...]}}. These read-only dependencies do not expand the Kit write scope; do not substitute packaged examples, mindset projections or component references for their current methods. Discover actual components separately with {components:{}}. Use studio_authoring_prepare for full-file candidates, including new source files in this working copy; allowedPaths names the initial read only, and validation/preview diagnostics come from S1. ${PREPARE_REPLACEMENT_GUIDANCE} No filesystem, shell, project/GRA, save, publication, or delegation is granted. A prepared candidate is for human review, not saved content. Finish your native turn after preparing the requested candidate.`
459
473
  });
460
474
  };
461
475
  try {
@@ -1,4 +1,4 @@
1
- import { a as StudioAuthoringResumeRequest, i as StudioAuthoringRequest, n as StudioAuthoringPorts, o as StudioAuthoringRun, r as StudioAuthoringReference, s as StudioAuthoringScope, t as StudioAuthoringObservation } from "./authoring-agent.types-QLa61eE6.js";
1
+ import { a as StudioAuthoringResumeRequest, i as StudioAuthoringRequest, n as StudioAuthoringPorts, o as StudioAuthoringRun, r as StudioAuthoringReference, s as StudioAuthoringScope, t as StudioAuthoringObservation } from "./authoring-agent.types-0S0xnlDW.js";
2
2
  import { Context } from "@deepseek-ai/cordis";
3
3
  //#region src/authoring-agent.d.ts
4
4
  declare module '@deepseek-ai/dsh-llm' {
@@ -1,2 +1,2 @@
1
- import { t as createStudioAuthoringAgent } from "./authoring-agent-Ci08ifdJ.js";
1
+ import { t as createStudioAuthoringAgent } from "./authoring-agent-vc786tS0.js";
2
2
  export { createStudioAuthoringAgent };
@@ -1,4 +1,5 @@
1
1
  import { Agent } from "@deepseek-ai/dsh-agent";
2
+ import { StudioAuthoringRead } from "@yugoo-design/dsh-design-studio/node";
2
3
  //#region src/authoring-agent.types.d.ts
3
4
  interface StudioAuthoringScope {
4
5
  readonly id: string;
@@ -12,9 +13,7 @@ interface StudioAuthoringScope {
12
13
  }
13
14
  /** The existing S3 capability. Its receipt remains the sole candidate source. */
14
15
  interface StudioAuthoringPorts {
15
- read(input?: {
16
- paths?: string[];
17
- }): Promise<unknown>;
16
+ read(input?: StudioAuthoringRead): Promise<unknown>;
18
17
  prepare(input: {
19
18
  changes: {
20
19
  path: string;
@@ -1,5 +1,5 @@
1
1
  import { prepareStudioAuthoringDirectory } from "./authoring-reference-store.js";
2
- import { t as DshStudioAuthoringService } from "./authoring-service-qGEk-IE_.js";
2
+ import { t as DshStudioAuthoringService } from "./authoring-service-WClXJGik.js";
3
3
  import { dshHomePath } from "@deepseek-ai/dsh-home-paths";
4
4
  //#region src/authoring-entry.ts
5
5
  const name = "studio-authoring";
@@ -41,6 +41,7 @@ const INSTANCE_METHODS = [
41
41
  "rename",
42
42
  "remove",
43
43
  "readFile",
44
+ "readMountedBundle",
44
45
  "saveFile",
45
46
  "prepareChanges",
46
47
  "saveChanges",
@@ -1,4 +1,4 @@
1
- import { a as StudioPreparedLocator, i as StudioAuthoringAddress, n as DshStudioAuthoringHostOptions, o as StudioPreparedProjection, r as DshStudioAuthoringParent, t as DshStudioAuthoringHost } from "./authoring-host.types-d5UT0WEk.js";
1
+ import { a as StudioPreparedLocator, i as StudioAuthoringAddress, n as DshStudioAuthoringHostOptions, o as StudioPreparedProjection, r as DshStudioAuthoringParent, t as DshStudioAuthoringHost } from "./authoring-host.types-BZt9l0xK.js";
2
2
  //#region src/authoring-host.d.ts
3
3
  declare function createDshStudioAuthoringHost(options: DshStudioAuthoringHostOptions): Promise<DshStudioAuthoringHost>;
4
4
  //#endregion
@@ -1,2 +1,2 @@
1
- import { t as createDshStudioAuthoringHost } from "./authoring-host-BlsA6wXz.js";
1
+ import { t as createDshStudioAuthoringHost } from "./authoring-host-m8-GmXIx.js";
2
2
  export { createDshStudioAuthoringHost };
@@ -1,5 +1,5 @@
1
- import { r as StudioAuthoringReference, t as StudioAuthoringObservation } from "./authoring-agent.types-QLa61eE6.js";
2
- import { a as StudioSessionRun, n as StudioAuthoringSessionOptions, o as StudioSessionStart, r as StudioSessionPrepared } from "./authoring-session.types-MHEaEFkO.js";
1
+ import { r as StudioAuthoringReference, t as StudioAuthoringObservation } from "./authoring-agent.types-0S0xnlDW.js";
2
+ import { a as StudioSessionRun, n as StudioAuthoringSessionOptions, o as StudioSessionStart, r as StudioSessionPrepared } from "./authoring-session.types-C6HosIWU.js";
3
3
  import { t as DshStudioInstanceSources } from "./authoring-sources-BzRuEuub.js";
4
4
  import { Context } from "@deepseek-ai/cordis";
5
5
  import DesignService from "@yugoo-design/dsh-design-core";
@@ -1,4 +1,4 @@
1
- import { r as StudioAuthoringReference } from "./authoring-agent.types-QLa61eE6.js";
1
+ import { r as StudioAuthoringReference } from "./authoring-agent.types-0S0xnlDW.js";
2
2
  //#region src/authoring-reference-store.d.ts
3
3
  interface StudioAuthoringReferenceKey {
4
4
  readonly parentSessionId: string;
@@ -1,8 +1,8 @@
1
1
  import { t as markStudioRemote } from "./remote-method-ab_lHwWN.js";
2
- import { i as readStudioPanelComponents, n as STUDIO_AUTHORING_METHOD_GUIDANCE, r as readStudioAuthoringMaterial } from "./authoring-agent-Ci08ifdJ.js";
2
+ import { i as readStudioPanelComponents, n as STUDIO_AUTHORING_METHOD_GUIDANCE, r as readStudioAuthoringMaterial } from "./authoring-agent-vc786tS0.js";
3
3
  import { STUDIO_AUTHORING_RPC_SCHEMAS } from "./authoring.remote-client.js";
4
4
  import { studioPreparedUrl } from "./page-path.js";
5
- import { t as createDshStudioAuthoringHost } from "./authoring-host-BlsA6wXz.js";
5
+ import { t as createDshStudioAuthoringHost } from "./authoring-host-m8-GmXIx.js";
6
6
  import { Service } from "@deepseek-ai/cordis";
7
7
  import { TypertRemoteService } from "@deepseek-ai/dsh-typert-protocol";
8
8
  import { defineTool } from "@deepseek-ai/dsh-tools";
@@ -28,7 +28,7 @@ function registerStudioCustomizationTool(ctx, service) {
28
28
  });
29
29
  ctx.tools.register(defineTool({
30
30
  name: "studio_customize",
31
- description: "Customize reusable Kit/Bundle methods and Panels in the SAME working copies shown in Studio. This edits authoring content, not a Design Project. Before editing, use read request {authoring:{}} for creator methods; for Panel changes discover {components:{}} then exact {components:{name,reference:\"contract\"}} and docs/examples before choosing parameters. Use catalog to discover exact installed pins; list/read to reopen a working copy; copy with kind and an exact kit or bundle {name,version}; readFile for source; rename requires id, expectedRevision and title {zh,en}. Read the current copy before selecting its revision. prepareChanges with id, expectedRevision and complete-file changes to inspect the diff, diagnostics and Panel preview before saving. Preparation never saves. Call saveChanges only when the user explicitly requests saving; pass the same changes, revision and candidate digest, using mode validated for a validated candidate or draft when the user wants to retain incomplete work. Kit mount changes use updateMounts. Saves do not publish, export or change installed content. After a conflict or an uncertain response, read the current working copy before proposing a new save; never blindly retry. request is the existing Studio operation input; it never accepts an agent identity, filesystem root or model configuration.",
31
+ description: "Customize reusable Kit/Bundle methods and Panels in the SAME working copies shown in Studio. This edits authoring content, not a Design Project. Before editing, use read request {authoring:{}} for creator methods; for Panel changes discover {components:{}} then exact {components:{name,reference:\"contract\"}} and docs/examples before choosing parameters. catalog.currentKits lists available installed and local Kits for project selection; catalog.kits/bundles inspect installed source pins only, so absence there does not mean a local Kit is unavailable. Use list/read to reopen current local source; copy with kind and an exact kit or bundle {name,version}; readFile for source; rename requires id, expectedRevision and title {zh,en}. Read the current copy before selecting its revision. prepareChanges with id, expectedRevision and complete-file changes to inspect the diff, diagnostics and Panel preview before saving. Preparation never saves. Call saveChanges only when the user explicitly requests saving; pass the same changes, revision and candidate digest, using mode validated for a validated candidate or draft when the user wants to retain incomplete work. Kit mount changes use updateMounts. Saves do not publish, export or change installed content. After a conflict or an uncertain response, read the current working copy before proposing a new save; never blindly retry. request is the existing Studio operation input; it never accepts an agent identity, filesystem root or model configuration.",
32
32
  parameters: {
33
33
  action: {
34
34
  type: "string",
@@ -212,14 +212,19 @@ var DshStudioAuthoringService = class extends TypertRemoteService {
212
212
  run.result.catch(() => {});
213
213
  return structuredClone(run.reference);
214
214
  }
215
- /** Conversation discovery reuses the page's existing read-only catalog. */
215
+ /** Installed-source inspection plus the same current Kit choices as project selection. */
216
216
  catalog(agent, request) {
217
217
  if (!request || typeof request !== "object" || Array.isArray(request) || Object.keys(request).some((key) => key !== "query") || request.query !== void 0 && (typeof request.query !== "string" || request.query.length > 4096)) return Promise.reject(/* @__PURE__ */ new Error("Studio catalog accepts only an optional search query"));
218
218
  const query = request.query;
219
- return this.invoke(agent, () => {
219
+ return this.invoke(agent, async () => {
220
220
  const catalog = this.owner.get("studioManagement");
221
221
  if (!catalog) throw new Error("Studio catalog service is unavailable");
222
- return catalog.workspace(query ?? "");
222
+ const [installed, current] = await Promise.all([catalog.workspace(query ?? ""), this.owner.design.listCurrentKits()]);
223
+ const search = query?.trim().toLocaleLowerCase() ?? "";
224
+ return {
225
+ ...installed,
226
+ currentKits: current.filter((kit) => !search || `${kit.name} ${kit.description ?? ""}`.toLocaleLowerCase().includes(search))
227
+ };
223
228
  });
224
229
  }
225
230
  list(agent, request) {
@@ -1,7 +1,7 @@
1
- import { r as StudioAuthoringReference, t as StudioAuthoringObservation } from "./authoring-agent.types-QLa61eE6.js";
2
- import { r as StudioSessionPrepared } from "./authoring-session.types-MHEaEFkO.js";
3
- import { a as StudioPreparedLocator, i as StudioAuthoringAddress, r as DshStudioAuthoringParent } from "./authoring-host.types-d5UT0WEk.js";
4
- import { r as StudioPageAuthoringStart } from "./authoring.page-rpc-Bg6VAT0Z.js";
1
+ import { r as StudioAuthoringReference, t as StudioAuthoringObservation } from "./authoring-agent.types-0S0xnlDW.js";
2
+ import { r as StudioSessionPrepared } from "./authoring-session.types-C6HosIWU.js";
3
+ import { a as StudioPreparedLocator, i as StudioAuthoringAddress, r as DshStudioAuthoringParent } from "./authoring-host.types-BZt9l0xK.js";
4
+ import { r as StudioPageAuthoringStart } from "./authoring.page-rpc-CYYWsmxc.js";
5
5
  import { Context, Service } from "@deepseek-ai/cordis";
6
6
  import { TypertRemoteService } from "@deepseek-ai/dsh-typert-protocol";
7
7
  import { Agent } from "@deepseek-ai/dsh-agent";
@@ -31,8 +31,17 @@ declare class DshStudioAuthoringService extends TypertRemoteService {
31
31
  /** Preserve call-time JSON intent before invoke queues its admission check. */
32
32
  private request;
33
33
  private reference;
34
- /** Conversation discovery reuses the page's existing read-only catalog. */
35
- catalog(agent: Agent, request: Record<string, unknown>): Promise<import("@yugoo-design/dsh-design-studio").StudioWorkspaceView>;
34
+ /** Installed-source inspection plus the same current Kit choices as project selection. */
35
+ catalog(agent: Agent, request: Record<string, unknown>): Promise<{
36
+ currentKits: {
37
+ readonly name: string;
38
+ readonly version: string;
39
+ readonly description?: string;
40
+ }[];
41
+ query: string;
42
+ kits: readonly import("@yugoo-design/dsh-design-studio").StudioKitView[];
43
+ bundles: readonly import("@yugoo-design/dsh-design-studio").StudioBundleView[];
44
+ }>;
36
45
  list(agent: Agent, request?: Parameters<StudioInstances['list']>[0]): Promise<readonly import("@yugoo-design/dsh-design-studio/node").StudioInstanceDescription[]>;
37
46
  read(agent: Agent, request: {
38
47
  readonly id: string;
@@ -1,2 +1,2 @@
1
- import { t as DshStudioAuthoringService } from "./authoring-service-qGEk-IE_.js";
1
+ import { t as DshStudioAuthoringService } from "./authoring-service-WClXJGik.js";
2
2
  export { DshStudioAuthoringService, DshStudioAuthoringService as default };
@@ -1,4 +1,4 @@
1
- import { a as StudioSessionRun, i as StudioSessionResume, n as StudioAuthoringSessionOptions, o as StudioSessionStart, r as StudioSessionPrepared, t as StudioAuthoringSession } from "./authoring-session.types-MHEaEFkO.js";
1
+ import { a as StudioSessionRun, i as StudioSessionResume, n as StudioAuthoringSessionOptions, o as StudioSessionStart, r as StudioSessionPrepared, t as StudioAuthoringSession } from "./authoring-session.types-C6HosIWU.js";
2
2
  //#region src/authoring-session.d.ts
3
3
  declare function createStudioAuthoringSession(options: StudioAuthoringSessionOptions): StudioAuthoringSession;
4
4
  //#endregion
@@ -1,4 +1,4 @@
1
- import { t as createStudioAuthoringAgent } from "./authoring-agent-Ci08ifdJ.js";
1
+ import { t as createStudioAuthoringAgent } from "./authoring-agent-vc786tS0.js";
2
2
  import { normalizeStudioInstanceChanges } from "@yugoo-design/dsh-design-studio";
3
3
  import { isAbsolute } from "node:path";
4
4
  import assert from "node:assert/strict";
@@ -43,6 +43,7 @@ function createStudioAuthoringSession(options) {
43
43
  const source = {
44
44
  read: instances.read.bind(instances),
45
45
  readFile: instances.readFile.bind(instances),
46
+ ...instances.readMountedBundle ? { readMountedBundle: instances.readMountedBundle.bind(instances) } : {},
46
47
  prepareChanges: instances.prepareChanges.bind(instances)
47
48
  };
48
49
  const native = createStudioAuthoringAgent(ctx), lifetime = new AbortController();
@@ -1,4 +1,4 @@
1
- import { r as StudioAuthoringReference, t as StudioAuthoringObservation } from "./authoring-agent.types-QLa61eE6.js";
1
+ import { r as StudioAuthoringReference, t as StudioAuthoringObservation } from "./authoring-agent.types-0S0xnlDW.js";
2
2
  import { Context } from "@deepseek-ai/cordis";
3
3
  import { DesignBundleVersionPin, StudioInstanceCandidate, StudioInstanceChangeRequest } from "@yugoo-design/dsh-design-studio";
4
4
  import { Agent } from "@deepseek-ai/dsh-agent";
@@ -12,7 +12,7 @@ interface StudioSessionPrepared {
12
12
  interface StudioAuthoringSessionOptions {
13
13
  readonly ctx: Context;
14
14
  readonly parent: Agent;
15
- readonly instances: Pick<StudioInstances, 'read' | 'readFile' | 'prepareChanges'>;
15
+ readonly instances: Pick<StudioInstances, 'read' | 'readFile' | 'prepareChanges'> & Partial<Pick<StudioInstances, 'readMountedBundle'>>;
16
16
  readonly readComponents: () => StudioAwaitable<StudioAuthoringComponentCatalog>;
17
17
  /** Host-selected isolated workspace, never a browser-supplied path. */
18
18
  readonly workspaceRoot: string;
@@ -4,7 +4,10 @@ import { createStudioInstanceAdapters } from "@yugoo-design/dsh-design-studio/no
4
4
  //#region src/authoring-sources.ts
5
5
  /** A trusted library source for initial project copies, never a project registry. */
6
6
  function registerDshStudioCurrentKitSource(design, instances) {
7
- const records = async () => (await instances.list({ kind: "kit" })).filter((record) => record.kit);
7
+ const records = async () => (await instances.list({
8
+ kind: "kit",
9
+ includeReadiness: false
10
+ })).filter((record) => record.kit);
8
11
  return design.registerCurrentKitSource({
9
12
  async load(name) {
10
13
  const matches = (await records()).filter((record) => record.kit.name === name);
@@ -28,11 +31,18 @@ function registerDshStudioCurrentKitSource(design, instances) {
28
31
  });
29
32
  },
30
33
  async list() {
31
- return (await records()).map((record) => ({
32
- name: record.kit.name,
33
- version: record.kit.version,
34
- ...record.description ? { description: record.description } : {}
35
- }));
34
+ return (await records()).map((record) => {
35
+ const description = [...new Set([
36
+ record.title?.zh,
37
+ record.title?.en,
38
+ record.description
39
+ ].filter(Boolean))].join(" · ");
40
+ return {
41
+ name: record.kit.name,
42
+ version: record.kit.version,
43
+ ...description ? { description } : {}
44
+ };
45
+ });
36
46
  }
37
47
  });
38
48
  }
@@ -1,5 +1,5 @@
1
- import { a as StudioPreparedLocator } from "./authoring-host.types-d5UT0WEk.js";
2
- import { n as StudioPageAuthoringClient } from "./authoring.page-rpc-Bg6VAT0Z.js";
1
+ import { a as StudioPreparedLocator } from "./authoring-host.types-BZt9l0xK.js";
2
+ import { n as StudioPageAuthoringClient } from "./authoring.page-rpc-CYYWsmxc.js";
3
3
  import { InstanceWorkbenchProps } from "@yugoo-design/dsh-design-studio-ui";
4
4
  //#region src/authoring-workbench.d.ts
5
5
  interface StudioAuthoringWorkbenchProps extends Omit<InstanceWorkbenchProps, 'client' | 'renderSupplement' | 'embedded' | 'initialView' | 'sourceChanges'> {
@@ -115,7 +115,7 @@ function Workbench({ client, id, locale, onBack, onChanged, onDirtyChange, rende
115
115
  const extraDirty = useRef(false);
116
116
  extraDirty.current = !!intent || !!attempt && !reviewSaved || !!review && !reviewSaved;
117
117
  const reportDirty = useCallback(() => {
118
- if (live.current) notify.current?.(dirty.current || extraDirty.current);
118
+ if (live.current) notify.current?.(dirty.current || extraDirty.current, { sourceDirty: dirty.current });
119
119
  }, []);
120
120
  const editorDirty = useCallback((value) => {
121
121
  dirty.current = value;
@@ -1,7 +1,7 @@
1
- import { r as StudioAuthoringReference, t as StudioAuthoringObservation } from "./authoring-agent.types-QLa61eE6.js";
2
- import { o as StudioSessionStart, r as StudioSessionPrepared } from "./authoring-session.types-MHEaEFkO.js";
3
- import { a as StudioPreparedLocator } from "./authoring-host.types-d5UT0WEk.js";
4
- import { t as StudioPageFetch } from "./page-rpc-DiazVY00.js";
1
+ import { r as StudioAuthoringReference, t as StudioAuthoringObservation } from "./authoring-agent.types-0S0xnlDW.js";
2
+ import { o as StudioSessionStart, r as StudioSessionPrepared } from "./authoring-session.types-C6HosIWU.js";
3
+ import { a as StudioPreparedLocator } from "./authoring-host.types-BZt9l0xK.js";
4
+ import { t as StudioPageFetch } from "./page-rpc-DXbf4seT.js";
5
5
  import { StudioContentClient, StudioInstanceClient } from "@yugoo-design/dsh-design-studio-ui";
6
6
  //#region src/authoring.page-rpc.d.ts
7
7
  type StudioAuthoringAddress = Pick<StudioAuthoringReference, 'sessionId' | 'epoch'>;
@@ -1,2 +1,2 @@
1
- import { i as createSameOriginStudioAuthoringClient, n as StudioPageAuthoringClient, r as StudioPageAuthoringStart, t as StudioAuthoringAddress } from "./authoring.page-rpc-Bg6VAT0Z.js";
1
+ import { i as createSameOriginStudioAuthoringClient, n as StudioPageAuthoringClient, r as StudioPageAuthoringStart, t as StudioAuthoringAddress } from "./authoring.page-rpc-CYYWsmxc.js";
2
2
  export { StudioAuthoringAddress, StudioPageAuthoringClient, StudioPageAuthoringStart, createSameOriginStudioAuthoringClient };
@@ -1,4 +1,4 @@
1
- import "./page-path-Bj5jO20L.js";
1
+ import "./page-path-BkPiqrUH.js";
2
2
  import { ReactElement } from "react";
3
3
  import { StudioManagementClient } from "@yugoo-design/dsh-design-studio-ui";
4
4
  import { SettingsSectionOwnerProps } from "@deepseek-ai/dsh-client-ui-settings/client";
@@ -1,3 +1,3 @@
1
- import { t as STUDIO_PAGE_BASE } from "./page-path-Bj5jO20L.js";
2
- import { a as DshStudioSlots, c as renderStudioLauncher, i as DshStudioSettingsSection, l as renderStudioReturnNavigation, n as DshStudioRemote, o as createDshStudioClient, r as DshStudioSettingsRuntime, s as registerDshStudioSettings, t as DshRemoteResult } from "./client-adapter-BgD1mpCC.js";
1
+ import { t as STUDIO_PAGE_BASE } from "./page-path-BkPiqrUH.js";
2
+ import { a as DshStudioSlots, c as renderStudioLauncher, i as DshStudioSettingsSection, l as renderStudioReturnNavigation, n as DshStudioRemote, o as createDshStudioClient, r as DshStudioSettingsRuntime, s as registerDshStudioSettings, t as DshRemoteResult } from "./client-adapter-BmIzQcMT.js";
3
3
  export { DshRemoteResult, DshStudioRemote, DshStudioSettingsRuntime, DshStudioSettingsSection, DshStudioSlots, STUDIO_PAGE_BASE as STUDIO_PAGE_URL, createDshStudioClient, registerDshStudioSettings, renderStudioLauncher, renderStudioReturnNavigation };
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: package/lib/page-client.js
3
- size: 38613701 bytes
4
- sha256: eea6f38fd567ece3689e660d3fbcc2524e63afc0c9d3050b66aca8085cc13fa5
3
+ size: 38615910 bytes
4
+ sha256: eaac301bb7cc3c4b92ee108166d4c380246944328a7ac8f1b0b67083b447b800
@@ -1,4 +1,4 @@
1
- import { a as StudioPreparedLocator } from "./authoring-host.types-d5UT0WEk.js";
1
+ import { a as StudioPreparedLocator } from "./authoring-host.types-BZt9l0xK.js";
2
2
  //#region src/page-path.d.ts
3
3
  /** Base path owned by the Studio page route. */
4
4
  declare const STUDIO_PAGE_BASE = "/design-studio/";
@@ -1,2 +1,2 @@
1
- import { a as isDshDesktopLocation, c as studioConversationReturnPath, i as StudioAuthoringLocation, l as studioPreparedUrl, n as STUDIO_PAGE_BUNDLE, o as studioAuthoringLocation, r as STUDIO_PAGE_PATH, s as studioAuthoringSessionLocator, t as STUDIO_PAGE_BASE } from "./page-path-Bj5jO20L.js";
1
+ import { a as isDshDesktopLocation, c as studioConversationReturnPath, i as StudioAuthoringLocation, l as studioPreparedUrl, n as STUDIO_PAGE_BUNDLE, o as studioAuthoringLocation, r as STUDIO_PAGE_PATH, s as studioAuthoringSessionLocator, t as STUDIO_PAGE_BASE } from "./page-path-BkPiqrUH.js";
2
2
  export { STUDIO_PAGE_BASE, STUDIO_PAGE_BUNDLE, STUDIO_PAGE_PATH, StudioAuthoringLocation, isDshDesktopLocation, studioAuthoringLocation, studioAuthoringSessionLocator, studioConversationReturnPath, studioPreparedUrl };
@@ -1,4 +1,4 @@
1
- import { n as DshStudioRemote } from "./client-adapter-BgD1mpCC.js";
1
+ import { n as DshStudioRemote } from "./client-adapter-BmIzQcMT.js";
2
2
  import { r as StudioStrictCodec } from "./typert.remote-client-CWz-anTr.js";
3
3
  //#region src/page-rpc.d.ts
4
4
  /** Page transport with the same signature as the global fetch. */
package/lib/page-rpc.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as createSameOriginStudioRemote, i as callStudioRemote, n as StudioPageRpcDescriptor, r as StudioRpcMethod, t as StudioPageFetch } from "./page-rpc-DiazVY00.js";
1
+ import { a as createSameOriginStudioRemote, i as callStudioRemote, n as StudioPageRpcDescriptor, r as StudioRpcMethod, t as StudioPageFetch } from "./page-rpc-DXbf4seT.js";
2
2
  export { StudioPageFetch, StudioPageRpcDescriptor, StudioRpcMethod, callStudioRemote, createSameOriginStudioRemote };
package/lib/page.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { r as STUDIO_PAGE_PATH, t as STUDIO_PAGE_BASE } from "./page-path-Bj5jO20L.js";
1
+ import { r as STUDIO_PAGE_PATH, t as STUDIO_PAGE_BASE } from "./page-path-BkPiqrUH.js";
2
2
  import { IncomingMessage, ServerResponse } from "node:http";
3
3
  //#region src/page.d.ts
4
4
  /** Minimal WebServer surface consumed by this plugin. */