dsh-image-gen 0.8.7 β†’ 0.9.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/lib/client.js CHANGED
@@ -123363,9 +123363,33 @@ img.ProseMirror-separator {
123363
123363
  children: activeTab === "gallery" || activeTab === "favorites" ? items.length === 0 ? (0, react_jsx_runtime.jsxs)("div", {
123364
123364
  className: "dsh-ig-gallery-empty",
123365
123365
  children: [
123366
- (0, react_jsx_runtime.jsx)("div", {
123366
+ (0, react_jsx_runtime.jsxs)("svg", {
123367
123367
  className: "dsh-ig-gallery-empty-icon",
123368
- children: "πŸ–ΌοΈ"
123368
+ width: "44",
123369
+ height: "44",
123370
+ viewBox: "0 0 24 24",
123371
+ fill: "none",
123372
+ stroke: "currentColor",
123373
+ strokeWidth: "1.5",
123374
+ strokeLinecap: "round",
123375
+ strokeLinejoin: "round",
123376
+ "aria-hidden": "true",
123377
+ children: [
123378
+ (0, react_jsx_runtime.jsx)("rect", {
123379
+ x: "3",
123380
+ y: "3",
123381
+ width: "18",
123382
+ height: "18",
123383
+ rx: "2",
123384
+ ry: "2"
123385
+ }),
123386
+ (0, react_jsx_runtime.jsx)("circle", {
123387
+ cx: "9",
123388
+ cy: "9",
123389
+ r: "2"
123390
+ }),
123391
+ (0, react_jsx_runtime.jsx)("path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" })
123392
+ ]
123369
123393
  }),
123370
123394
  (0, react_jsx_runtime.jsx)("div", {
123371
123395
  className: "dsh-ig-gallery-empty-title",
@@ -123379,9 +123403,18 @@ img.ProseMirror-separator {
123379
123403
  }) : activeTab === "favorites" && filteredItems.length === 0 && search === "" && selectedProvider === "all" && selectedRatio === "all" ? (0, react_jsx_runtime.jsxs)("div", {
123380
123404
  className: "dsh-ig-gallery-empty",
123381
123405
  children: [
123382
- (0, react_jsx_runtime.jsx)("div", {
123406
+ (0, react_jsx_runtime.jsx)("svg", {
123383
123407
  className: "dsh-ig-gallery-empty-icon",
123384
- children: "🀍"
123408
+ width: "44",
123409
+ height: "44",
123410
+ viewBox: "0 0 24 24",
123411
+ fill: "none",
123412
+ stroke: "currentColor",
123413
+ strokeWidth: "1.5",
123414
+ strokeLinecap: "round",
123415
+ strokeLinejoin: "round",
123416
+ "aria-hidden": "true",
123417
+ children: (0, react_jsx_runtime.jsx)("path", { d: "M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z" })
123385
123418
  }),
123386
123419
  (0, react_jsx_runtime.jsx)("div", {
123387
123420
  className: "dsh-ig-gallery-empty-title",
@@ -123395,9 +123428,22 @@ img.ProseMirror-separator {
123395
123428
  }) : filteredItems.length === 0 ? (0, react_jsx_runtime.jsxs)("div", {
123396
123429
  className: "dsh-ig-gallery-empty",
123397
123430
  children: [
123398
- (0, react_jsx_runtime.jsx)("div", {
123431
+ (0, react_jsx_runtime.jsxs)("svg", {
123399
123432
  className: "dsh-ig-gallery-empty-icon",
123400
- children: "πŸ”"
123433
+ width: "44",
123434
+ height: "44",
123435
+ viewBox: "0 0 24 24",
123436
+ fill: "none",
123437
+ stroke: "currentColor",
123438
+ strokeWidth: "1.5",
123439
+ strokeLinecap: "round",
123440
+ strokeLinejoin: "round",
123441
+ "aria-hidden": "true",
123442
+ children: [(0, react_jsx_runtime.jsx)("circle", {
123443
+ cx: "11",
123444
+ cy: "11",
123445
+ r: "8"
123446
+ }), (0, react_jsx_runtime.jsx)("path", { d: "m21 21-4.3-4.3" })]
123401
123447
  }),
123402
123448
  (0, react_jsx_runtime.jsx)("div", {
123403
123449
  className: "dsh-ig-gallery-empty-title",
@@ -125175,7 +125221,7 @@ body[data-ds-dark-theme] .dsh-ig-workbench{--ig-danger:#f08c8c;--ig-warn:#e5b76a
125175
125221
  `;
125176
125222
  //#endregion
125177
125223
  //#region lib/types/client/index.js
125178
- console.info(`[dsh-image-gen] canvas bundle 2026-10-11T07:43:39.734Z`);
125224
+ console.info(`[dsh-image-gen] canvas bundle 2026-10-13T08:42:18.331Z`);
125179
125225
  /** Right-sidebar tab-type registration id (DSH 0.1.5 `sidebarRightTabs`). */
125180
125226
  const SIDEBAR_STUDIO_TAB_ID = "dsh-image-gen/studio";
125181
125227
  /** The tab kind: a page type opened by kind, recognizing no resource address. */
@@ -125513,20 +125559,16 @@ body[data-ds-dark-theme] .dsh-ig-workbench{--ig-danger:#f08c8c;--ig-warn:#e5b76a
125513
125559
  }
125514
125560
  };
125515
125561
  const STYLE = `
125516
- .dsh-ig-card{list-style:none;border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:12px;background:var(--dsw-alias-bg-layer-3,#fff);transition:border-color .16s,background .16s;overflow:hidden}
125517
- .dsh-ig-card:hover{border-color:var(--dsw-alias-label-dimmed,#9ca3af)}
125518
- .dsh-ig-card-open{background:var(--dsw-alias-bg-layer-2,#fff);border-color:var(--dsw-alias-label-dimmed,#9ca3af)}
125519
- .dsh-ig-head{width:100%;appearance:none;border:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-radius:12px}
125520
- .dsh-ig-head:focus-visible{outline:2px solid var(--dsw-alias-brand-primary,#4c78ff);outline-offset:-2px}
125562
+ .dsh-ig-card{list-style:none;border:0;background:none;padding:0}
125563
+ .dsh-ig-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 0 6px}
125521
125564
  .dsh-ig-head-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
125522
125565
  .dsh-ig-title{display:block;font-size:15px;font-weight:600;line-height:1.4;color:var(--dsw-alias-label-primary,inherit)}
125523
125566
  .dsh-ig-desc{display:block;font-size:13px;line-height:1.5;color:var(--dsw-alias-label-tertiary,#7b818b)}
125524
- .dsh-ig-chevron{flex:none;color:var(--dsw-alias-label-tertiary,#7b818b);transition:transform .16s;display:inline-flex;align-items:center}
125525
- .dsh-ig-chevron-open{transform:rotate(180deg)}
125526
- .dsh-ig-body{border-top:1px solid var(--dsw-alias-border-l2,#eee);padding:0 16px 16px}
125527
- .dsh-ig-field{display:grid;gap:6px;margin-top:14px}
125567
+ .dsh-ig-body{padding:0}
125568
+ .dsh-ig-field{display:flex;flex-direction:column;gap:6px;padding:12px 0}
125569
+ .dsh-ig-field + .dsh-ig-field{border-top:0.5px solid var(--dsw-alias-border-l2,#e8ebf0)}
125528
125570
  .dsh-ig-label{font-size:13px;font-weight:500;color:var(--dsw-alias-label-primary,inherit)}
125529
- .dsh-ig-input{box-sizing:border-box;width:100%;padding:8px 12px;font-size:13px;border:1px solid var(--dsw-alias-border-l2,#d7dbe0);border-radius:8px;background:var(--dsw-alias-bg-layer-3,transparent);color:inherit;outline:none;transition:border-color .15s}
125571
+ .dsh-ig-input{box-sizing:border-box;width:100%;height:34px;padding:0 12px;font-size:13px;border:0.5px solid var(--dsw-alias-border-l4,#d7dbe0);border-radius:var(--dsw-radius-md,6px);background:var(--dsw-alias-bg-layer-3,transparent);color:inherit;outline:none;transition:border-color .15s}
125530
125572
  .dsh-ig-input:focus{border-color:var(--dsw-alias-brand-primary,#4c78ff)}
125531
125573
  .dsh-ig-textarea{resize:vertical;min-height:56px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;line-height:1.5}
125532
125574
  .dsh-ig-input-group{display:flex;gap:8px;align-items:center}
@@ -125542,7 +125584,7 @@ body[data-ds-dark-theme] .dsh-ig-workbench{--ig-danger:#f08c8c;--ig-warn:#e5b76a
125542
125584
  .dsh-ig-workflow-active{display:inline-flex;align-items:center;cursor:pointer;flex:none}
125543
125585
  .dsh-ig-workflow-active input[type=radio]{width:15px;height:15px;accent-color:var(--dsw-alias-brand-primary,#4c78ff);margin:0;cursor:pointer}
125544
125586
  .dsh-ig-workflow-name{flex:1;min-width:0}
125545
- .dsh-ig-btn-reset{appearance:none;border:1px solid var(--dsw-alias-border-l2,#d7dbe0);border-radius:8px;padding:7px 12px;background:var(--dsw-alias-bg-layer-3,#f9fafb);color:var(--dsw-alias-label-secondary,inherit);font:inherit;font-size:13px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}
125587
+ .dsh-ig-btn-reset{appearance:none;border:0.5px solid var(--dsw-alias-border-l4,#d7dbe0);border-radius:var(--dsw-radius-md,6px);padding:5px 12px;background:var(--dsw-alias-bg-layer-3,#f9fafb);color:var(--dsw-alias-label-secondary,inherit);font:inherit;font-size:13px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}
125546
125588
  .dsh-ig-btn-reset:hover{background:var(--dsw-alias-bg-layer-2,#edf0f3);border-color:var(--dsw-alias-label-dimmed,#9ca3af)}
125547
125589
  .dsh-ig-hint,.dsh-ig-status{margin:0;color:var(--dsw-alias-label-tertiary,#7b818b);font-size:12px;line-height:1.4}
125548
125590
  .dsh-ig-hint-error{color:var(--dsw-alias-label-error,#d33)}
@@ -125551,19 +125593,20 @@ body[data-ds-dark-theme] .dsh-ig-workbench{--ig-danger:#f08c8c;--ig-warn:#e5b76a
125551
125593
  .dsh-ig-check-row{display:flex;align-items:center;gap:8px;cursor:pointer}
125552
125594
  .dsh-ig-check-row input[type=checkbox]{width:15px;height:15px;accent-color:var(--dsw-alias-brand-primary,#4c78ff);margin:0}
125553
125595
  .dsh-ig-savedto{font-size:12px;line-height:1.5;color:var(--dsw-alias-label-tertiary,#7b818b);word-break:break-all}
125554
- .dsh-ig-save{appearance:none;border:0;border-radius:8px;padding:6px 16px;background:var(--dsw-alias-label-primary,#111827);color:var(--dsw-alias-bg-layer-3,#fff);font:inherit;font-size:13px;font-weight:500;cursor:pointer;transition:opacity .15s}
125596
+ .dsh-ig-save{appearance:none;border:0;border-radius:var(--dsw-radius-md,6px);padding:5px 14px;background:var(--dsw-alias-label-primary,#111827);color:var(--dsw-alias-bg-layer-3,#fff);font:inherit;font-size:13px;font-weight:400;cursor:pointer;transition:opacity .15s}
125555
125597
  .dsh-ig-save:disabled{opacity:.4;cursor:default}
125556
125598
 
125557
125599
  /* Provider list: one expandable row per provider, each saving independently. */
125558
- .dsh-ig-providers{display:grid;gap:10px;margin-top:14px}
125559
- .dsh-ig-provider-row{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:10px;background:var(--dsw-alias-bg-layer-3,transparent);overflow:hidden;transition:border-color .16s}
125560
- .dsh-ig-provider-row-open{border-color:var(--dsw-alias-label-dimmed,#9ca3af)}
125561
- .dsh-ig-provider-head{width:100%;appearance:none;border:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;display:flex;align-items:center;gap:10px;padding:11px 12px}
125562
- .dsh-ig-provider-head:focus-visible{outline:2px solid var(--dsw-alias-brand-primary,#4c78ff);outline-offset:-2px}
125600
+ .dsh-ig-providers{display:flex;flex-direction:column;margin-top:6px}
125601
+ .dsh-ig-provider-row{border:0;background:none;padding:14px 0}
125602
+ .dsh-ig-provider-row + .dsh-ig-provider-row{border-top:0.5px solid var(--dsw-alias-border-l2,#e8ebf0)}
125603
+ .dsh-ig-provider-head{width:100%;appearance:none;border:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;display:flex;align-items:center;gap:10px;padding:0}
125604
+ .dsh-ig-provider-head:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary,#4c78ff);outline-offset:2px;border-radius:var(--dsw-radius-sm,4px)}
125605
+ .dsh-ig-provider-head:hover .dsh-ig-provider-name{color:var(--dsw-alias-label-secondary,inherit)}
125563
125606
  .dsh-ig-provider-name{flex:1;min-width:0;font-size:13.5px;font-weight:550;color:var(--dsw-alias-label-primary,inherit)}
125564
125607
  .dsh-ig-provider-chevron{flex:none;color:var(--dsw-alias-label-tertiary,#7b818b);transition:transform .16s;display:inline-flex;align-items:center}
125565
125608
  .dsh-ig-provider-chevron-open{transform:rotate(180deg)}
125566
- .dsh-ig-provider-body{border-top:1px solid var(--dsw-alias-border-l2,#eee);padding:2px 12px 14px}
125609
+ .dsh-ig-provider-body{border-top:0;padding:8px 0 2px}
125567
125610
  .dsh-ig-badge{flex:none;display:inline-flex;align-items:center;gap:5px;font-size:11.5px;line-height:1.6;padding:2px 9px;border-radius:999px;border:1px solid var(--dsw-alias-border-l2,#d7dbe0);color:var(--dsw-alias-label-secondary,inherit);white-space:nowrap;max-width:60%;overflow:hidden;text-overflow:ellipsis}
125568
125611
  .dsh-ig-badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
125569
125612
  .dsh-ig-badge-ok{border-color:rgba(34,197,94,.45);color:#15803d;background:rgba(34,197,94,.08)}
@@ -125582,15 +125625,15 @@ body[data-ds-dark-theme] .dsh-ig-workbench{--ig-danger:#f08c8c;--ig-warn:#e5b76a
125582
125625
  /* Row-level actions: test connection, clear key, save. */
125583
125626
  .dsh-ig-row-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;flex-wrap:wrap}
125584
125627
  .dsh-ig-row-buttons{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
125585
- .dsh-ig-btn-secondary{appearance:none;border:1px solid var(--dsw-alias-border-l2,#d7dbe0);border-radius:8px;padding:6px 14px;background:var(--dsw-alias-bg-layer-3,#f9fafb);color:var(--dsw-alias-label-secondary,inherit);font:inherit;font-size:13px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s,opacity .15s}
125628
+ .dsh-ig-btn-secondary{appearance:none;border:0.5px solid var(--dsw-alias-border-l4,#d7dbe0);border-radius:var(--dsw-radius-md,6px);padding:5px 14px;background:var(--dsw-alias-bg-layer-3,#f9fafb);color:var(--dsw-alias-label-secondary,inherit);font:inherit;font-size:13px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s,opacity .15s}
125586
125629
  .dsh-ig-btn-secondary:hover:not(:disabled){background:var(--dsw-alias-bg-layer-2,#edf0f3);border-color:var(--dsw-alias-label-dimmed,#9ca3af)}
125587
125630
  .dsh-ig-btn-secondary:disabled{opacity:.45;cursor:default}
125588
125631
  .dsh-ig-btn-danger{color:#b91c1c;border-color:rgba(239,68,68,.4)}
125589
125632
  .dsh-ig-btn-danger:hover:not(:disabled){background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.6)}
125590
125633
 
125591
125634
  /* Workspace section within the settings card. */
125592
- .dsh-ig-section{display:grid;gap:6px;margin-top:16px;padding-top:14px;border-top:1px solid var(--dsw-alias-border-l2,#eee)}
125593
- .dsh-ig-section-title{font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--dsw-alias-label-tertiary,#7b818b);text-transform:uppercase}
125635
+ .dsh-ig-section{display:flex;flex-direction:column;gap:6px;margin-top:20px;padding-top:14px;border-top:0.5px solid var(--dsw-alias-border-l2,#e8ebf0)}
125636
+ .dsh-ig-section-title{font-size:13px;font-weight:500;line-height:1.5;color:var(--dsw-alias-label-primary,inherit)}
125594
125637
  .dsh-ig-status-readonly{color:var(--dsw-alias-label-tertiary,#7b818b);font-style:italic}
125595
125638
 
125596
125639
  .dsh-ig-result{display:grid;gap:10px;max-width:520px}
@@ -125699,7 +125742,7 @@ body[data-ds-dark-theme] .dsh-ig-workbench{--ig-danger:#f08c8c;--ig-warn:#e5b76a
125699
125742
 
125700
125743
  /* Empty State */
125701
125744
  .dsh-ig-gallery-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:360px;text-align:center;color:var(--dsw-alias-label-tertiary,#94a3b8)}
125702
- .dsh-ig-gallery-empty-icon{font-size:44px;margin-bottom:10px}
125745
+ .dsh-ig-gallery-empty-icon{display:block;width:44px;height:44px;margin-bottom:10px;color:var(--dsw-alias-label-tertiary,#94a3b8);opacity:.7}
125703
125746
  .dsh-ig-gallery-empty-title{font-size:15px;font-weight:600;color:var(--dsw-alias-label-primary,inherit);margin-bottom:4px}
125704
125747
  .dsh-ig-gallery-empty-desc{font-size:13px;max-width:360px;line-height:1.5}
125705
125748
 
@@ -125891,11 +125934,9 @@ body[data-ds-dark-theme] .dsh-ig-workbench{--ig-danger:#f08c8c;--ig-warn:#e5b76a
125891
125934
  locale,
125892
125935
  credentialEvents
125893
125936
  });
125894
- owner.slots.inject("settings.plugins.tab", () => ownerRegister({
125895
- name: "settings.plugins.tab",
125896
- id: IMAGE_GENERATION_NAMESPACE,
125897
- order: 30,
125898
- label: () => locale?.getSnapshot?.()?.active?.startsWith("en") ? "Image generation" : "ε›Ύεƒη”Ÿζˆ",
125937
+ owner.slots.inject("plugins.bundle.config", () => ownerRegister({
125938
+ name: "plugins.bundle.config",
125939
+ key: "dsh-image-gen",
125899
125940
  locale,
125900
125941
  inject: injectSettingsFace
125901
125942
  }, ImageGenerationSettingsCard));
@@ -126171,7 +126212,7 @@ body[data-ds-dark-theme] .dsh-ig-workbench{--ig-danger:#f08c8c;--ig-warn:#e5b76a
126171
126212
  }
126172
126213
  /** Edit each provider independently, pick an explicit default, and verify keys inline. */
126173
126214
  function ImageGenerationSettingsCard(props) {
126174
- const [open, setOpen] = (0, react.useState)(false);
126215
+ const [open] = (0, react.useState)(true);
126175
126216
  const [snapshot, setSnapshot] = (0, react.useState)(() => props.scope.getSnapshot());
126176
126217
  const [health, setHealth] = (0, react.useState)();
126177
126218
  const state = settingsState(snapshot, health);
@@ -127604,7 +127645,7 @@ body[data-ds-dark-theme] .dsh-ig-workbench{--ig-danger:#f08c8c;--ig-warn:#e5b76a
127604
127645
  const row = rows[provider];
127605
127646
  const badge = badgeOf(provider);
127606
127647
  return (0, react_jsx_runtime.jsxs)("div", {
127607
- className: `dsh-ig-provider-row ${row.expanded ? "dsh-ig-provider-row-open" : ""}`,
127648
+ className: "dsh-ig-provider-row",
127608
127649
  children: [(0, react_jsx_runtime.jsxs)("button", {
127609
127650
  type: "button",
127610
127651
  className: "dsh-ig-provider-head",
@@ -127645,15 +127686,10 @@ body[data-ds-dark-theme] .dsh-ig-workbench{--ig-danger:#f08c8c;--ig-warn:#e5b76a
127645
127686
  }, provider);
127646
127687
  };
127647
127688
  return (0, react_jsx_runtime.jsxs)("li", {
127648
- className: `dsh-ig-card ${open ? "dsh-ig-card-open" : ""}`,
127649
- children: [(0, react_jsx_runtime.jsxs)("button", {
127650
- type: "button",
127689
+ className: "dsh-ig-card",
127690
+ children: [(0, react_jsx_runtime.jsx)("div", {
127651
127691
  className: "dsh-ig-head",
127652
- "aria-expanded": open,
127653
- onClick: () => {
127654
- setOpen((value) => !value);
127655
- },
127656
- children: [(0, react_jsx_runtime.jsxs)("span", {
127692
+ children: (0, react_jsx_runtime.jsxs)("span", {
127657
127693
  className: "dsh-ig-head-text",
127658
127694
  children: [(0, react_jsx_runtime.jsx)("span", {
127659
127695
  className: "dsh-ig-title",
@@ -127662,22 +127698,8 @@ body[data-ds-dark-theme] .dsh-ig-workbench{--ig-danger:#f08c8c;--ig-warn:#e5b76a
127662
127698
  className: "dsh-ig-desc",
127663
127699
  children: t("description")
127664
127700
  })]
127665
- }), (0, react_jsx_runtime.jsx)("span", {
127666
- className: `dsh-ig-chevron ${open ? "dsh-ig-chevron-open" : ""}`,
127667
- "aria-hidden": "true",
127668
- children: (0, react_jsx_runtime.jsx)("svg", {
127669
- width: "14",
127670
- height: "14",
127671
- viewBox: "0 0 16 16",
127672
- fill: "none",
127673
- stroke: "currentColor",
127674
- strokeWidth: "2",
127675
- strokeLinecap: "round",
127676
- strokeLinejoin: "round",
127677
- children: (0, react_jsx_runtime.jsx)("path", { d: "M4 6l4 4 4-4" })
127678
- })
127679
- })]
127680
- }), open ? (0, react_jsx_runtime.jsxs)("div", {
127701
+ })
127702
+ }), (0, react_jsx_runtime.jsxs)("div", {
127681
127703
  className: "dsh-ig-body",
127682
127704
  children: [
127683
127705
  settingsMessage !== void 0 ? (0, react_jsx_runtime.jsx)("p", {
@@ -127821,7 +127843,7 @@ body[data-ds-dark-theme] .dsh-ig-workbench{--ig-danger:#f08c8c;--ig-warn:#e5b76a
127821
127843
  })]
127822
127844
  })
127823
127845
  ]
127824
- }) : null]
127846
+ })]
127825
127847
  });
127826
127848
  }
127827
127849
  /** Keep the legacy Tool row for old DSH and hand modern results to the independent Chat node. */
package/package.json CHANGED
@@ -1,139 +1,139 @@
1
- {
2
- "name": "dsh-image-gen",
3
- "version": "0.8.7",
4
- "description": "Bring ChatGPT-like image generation to DeepSeek Harness β€” Gemini, OpenAI, Seedream, DashScope, local ComfyUI & more.",
5
- "type": "module",
6
- "author": "shanliuling",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/shanliuling/dsh-image-gen.git"
10
- },
11
- "bugs": {
12
- "url": "https://github.com/shanliuling/dsh-image-gen/issues"
13
- },
14
- "homepage": "https://github.com/shanliuling/dsh-image-gen#readme",
15
- "main": "lib/index.js",
16
- "types": "lib/types/index.d.ts",
17
- "exports": {
18
- ".": {
19
- "types": "./lib/types/index.d.ts",
20
- "default": "./lib/index.js"
21
- },
22
- "./client": {
23
- "types": "./lib/types/client/index.d.ts",
24
- "default": "./lib/client.js"
25
- },
26
- "./package.json": "./package.json"
27
- },
28
- "files": [
29
- "lib/index.js",
30
- "lib/client.js",
31
- "lib/types/**/*.d.ts",
32
- "skills/**/*.md",
33
- "cordis.patch.yml",
34
- "README.md",
35
- "README.en.md",
36
- "docs/assets/readme/*.webp",
37
- "LICENSE"
38
- ],
39
- "dsh": {
40
- "bundle": {
41
- "patch": "./cordis.patch.yml"
42
- },
43
- "client": {
44
- "inject": [
45
- "@deepseek-ai/dsh-client-connection",
46
- "@deepseek-ai/dsh-api-remotes",
47
- "@deepseek-ai/dsh-client-ui-conversation",
48
- "@deepseek-ai/dsh-client-ui-settings",
49
- "@deepseek-ai/dsh-client-ui-settings-plugins",
50
- "@deepseek-ai/dsh-client-ui-sidebar-right",
51
- "@deepseek-ai/dsh-client-ui-tool",
52
- "@deepseek-ai/dsh-client-locale"
53
- ],
54
- "platform": "web"
55
- }
56
- },
57
- "scripts": {
58
- "typecheck": "tsc --noEmit",
59
- "build": "tsc && tsdown",
60
- "prepare": "pnpm run build",
61
- "test": "vitest run",
62
- "test:package": "node scripts/check-package.mjs",
63
- "pack:check": "pnpm pack --dry-run"
64
- },
65
- "engines": {
66
- "node": "^22.19.0 || >=24.0.0"
67
- },
68
- "license": "Apache-2.0",
69
- "keywords": [
70
- "deepseek",
71
- "deepseek-harness",
72
- "dsh",
73
- "dsh-plugin",
74
- "ai-agent",
75
- "image-generation",
76
- "ai-image-generation",
77
- "multimodal",
78
- "gemini",
79
- "openai",
80
- "openai-compatible",
81
- "seedream",
82
- "dashscope",
83
- "comfyui",
84
- "local-image-generation",
85
- "wanx",
86
- "aliyun",
87
- "volcengine",
88
- "byok",
89
- "cordis"
90
- ],
91
- "peerDependencies": {
92
- "@deepseek-ai/cordis": ">=4.0.0 <5",
93
- "@deepseek-ai/schemastery": ">=3.18.4 <4",
94
- "react": ">=18.2.0 <19"
95
- },
96
- "peerDependenciesMeta": {
97
- "@deepseek-ai/cordis": {
98
- "optional": true
99
- },
100
- "@deepseek-ai/schemastery": {
101
- "optional": true
102
- },
103
- "react": {
104
- "optional": true
105
- }
106
- },
107
- "devDependencies": {
108
- "@deepseek-ai/cordis": "4.0.4",
109
- "@deepseek-ai/dsh-agent": "0.1.7-rc.2",
110
- "@deepseek-ai/dsh-api-remotes": "0.1.7-rc.2",
111
- "@deepseek-ai/dsh-attachment": "0.1.7-rc.2",
112
- "@deepseek-ai/dsh-client-connection": "0.1.7-rc.2",
113
- "@deepseek-ai/dsh-client-ui-conversation": "0.1.7-rc.2",
114
- "@deepseek-ai/dsh-client-ui-settings": "0.1.7-rc.2",
115
- "@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.7-rc.2",
116
- "@deepseek-ai/dsh-client-ui-sidebar-right": "0.1.7-rc.2",
117
- "@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.2",
118
- "@deepseek-ai/dsh-client-ui-tool": "0.1.7-rc.2",
119
- "@deepseek-ai/dsh-credentials": "0.1.7-rc.2",
120
- "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2",
121
- "@deepseek-ai/dsh-llm": "0.1.7-rc.2",
122
- "@deepseek-ai/dsh-session": "0.1.7-rc.2",
123
- "@deepseek-ai/dsh-settings": "0.1.7-rc.2",
124
- "@deepseek-ai/dsh-tools": "0.1.7-rc.2",
125
- "@deepseek-ai/dsh-workspace": "0.1.7-rc.2",
126
- "@deepseek-ai/schemastery": "3.18.4",
127
- "@types/node": "^22.20.0",
128
- "@types/react": "~18.3.1",
129
- "lucide-react": "^1.38.0",
130
- "react": "^18.2.0",
131
- "react-dom": "18.3.1",
132
- "tldraw": "5.3.0",
133
- "tsdown": "^0.22.2",
134
- "typescript": "^6.0.3",
135
- "unrun": "^0.3.1",
136
- "vitest": "^4.1.8"
137
- },
138
- "packageManager": "pnpm@11.7.0"
139
- }
1
+ {
2
+ "name": "dsh-image-gen",
3
+ "version": "0.9.0",
4
+ "description": "Bring ChatGPT-like image generation to DeepSeek Harness β€” Gemini, OpenAI, Seedream, DashScope, local ComfyUI & more.",
5
+ "type": "module",
6
+ "author": "shanliuling",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/shanliuling/dsh-image-gen.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/shanliuling/dsh-image-gen/issues"
13
+ },
14
+ "homepage": "https://github.com/shanliuling/dsh-image-gen#readme",
15
+ "main": "lib/index.js",
16
+ "types": "lib/types/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./lib/types/index.d.ts",
20
+ "default": "./lib/index.js"
21
+ },
22
+ "./client": {
23
+ "types": "./lib/types/client/index.d.ts",
24
+ "default": "./lib/client.js"
25
+ },
26
+ "./package.json": "./package.json"
27
+ },
28
+ "files": [
29
+ "lib/index.js",
30
+ "lib/client.js",
31
+ "lib/types/**/*.d.ts",
32
+ "skills/**/*.md",
33
+ "cordis.patch.yml",
34
+ "README.md",
35
+ "README.en.md",
36
+ "docs/assets/readme/*.webp",
37
+ "LICENSE"
38
+ ],
39
+ "dsh": {
40
+ "bundle": {
41
+ "patch": "./cordis.patch.yml"
42
+ },
43
+ "client": {
44
+ "inject": [
45
+ "@deepseek-ai/dsh-client-connection",
46
+ "@deepseek-ai/dsh-api-remotes",
47
+ "@deepseek-ai/dsh-client-ui-conversation",
48
+ "@deepseek-ai/dsh-client-ui-settings",
49
+ "@deepseek-ai/dsh-client-ui-settings-plugins",
50
+ "@deepseek-ai/dsh-client-ui-sidebar-right",
51
+ "@deepseek-ai/dsh-client-ui-tool",
52
+ "@deepseek-ai/dsh-client-locale"
53
+ ],
54
+ "platform": "web"
55
+ }
56
+ },
57
+ "scripts": {
58
+ "typecheck": "tsc --noEmit",
59
+ "build": "tsc && tsdown",
60
+ "prepare": "pnpm run build",
61
+ "test": "vitest run",
62
+ "test:package": "node scripts/check-package.mjs",
63
+ "pack:check": "pnpm pack --dry-run"
64
+ },
65
+ "engines": {
66
+ "node": "^22.19.0 || >=24.0.0"
67
+ },
68
+ "license": "Apache-2.0",
69
+ "keywords": [
70
+ "deepseek",
71
+ "deepseek-harness",
72
+ "dsh",
73
+ "dsh-plugin",
74
+ "ai-agent",
75
+ "image-generation",
76
+ "ai-image-generation",
77
+ "multimodal",
78
+ "gemini",
79
+ "openai",
80
+ "openai-compatible",
81
+ "seedream",
82
+ "dashscope",
83
+ "comfyui",
84
+ "local-image-generation",
85
+ "wanx",
86
+ "aliyun",
87
+ "volcengine",
88
+ "byok",
89
+ "cordis"
90
+ ],
91
+ "peerDependencies": {
92
+ "@deepseek-ai/cordis": ">=4.0.0 <5",
93
+ "@deepseek-ai/schemastery": ">=3.18.4 <4",
94
+ "react": ">=18.2.0 <19"
95
+ },
96
+ "peerDependenciesMeta": {
97
+ "@deepseek-ai/cordis": {
98
+ "optional": true
99
+ },
100
+ "@deepseek-ai/schemastery": {
101
+ "optional": true
102
+ },
103
+ "react": {
104
+ "optional": true
105
+ }
106
+ },
107
+ "devDependencies": {
108
+ "@deepseek-ai/cordis": "4.0.4",
109
+ "@deepseek-ai/dsh-agent": "0.1.7-rc.2",
110
+ "@deepseek-ai/dsh-api-remotes": "0.1.7-rc.2",
111
+ "@deepseek-ai/dsh-attachment": "0.1.7-rc.2",
112
+ "@deepseek-ai/dsh-client-connection": "0.1.7-rc.2",
113
+ "@deepseek-ai/dsh-client-ui-conversation": "0.1.7-rc.2",
114
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.7-rc.2",
115
+ "@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.7-rc.2",
116
+ "@deepseek-ai/dsh-client-ui-sidebar-right": "0.1.7-rc.2",
117
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.2",
118
+ "@deepseek-ai/dsh-client-ui-tool": "0.1.7-rc.2",
119
+ "@deepseek-ai/dsh-credentials": "0.1.7-rc.2",
120
+ "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2",
121
+ "@deepseek-ai/dsh-llm": "0.1.7-rc.2",
122
+ "@deepseek-ai/dsh-session": "0.1.7-rc.2",
123
+ "@deepseek-ai/dsh-settings": "0.1.7-rc.2",
124
+ "@deepseek-ai/dsh-tools": "0.1.7-rc.2",
125
+ "@deepseek-ai/dsh-workspace": "0.1.7-rc.2",
126
+ "@deepseek-ai/schemastery": "3.18.4",
127
+ "@types/node": "^22.20.0",
128
+ "@types/react": "~18.3.1",
129
+ "lucide-react": "^1.38.0",
130
+ "react": "^18.2.0",
131
+ "react-dom": "18.3.1",
132
+ "tldraw": "5.3.0",
133
+ "tsdown": "^0.22.2",
134
+ "typescript": "^6.0.3",
135
+ "unrun": "^0.3.1",
136
+ "vitest": "^4.1.8"
137
+ },
138
+ "packageManager": "pnpm@11.7.0"
139
+ }
@@ -1,22 +1,22 @@
1
- ---
2
- name: install-dsh-image-gen
3
- description: Install, configure, verify, or remove the dsh-image-gen Bundle in a DeepSeek Harness Web profile. Use when a user wants Google, OpenAI-compatible relay, Seedream, DashScope, or local ComfyUI image generation in DSH, cannot find the Image generation settings card, or needs help testing generate_image.
4
- ---
5
-
6
- # Install DSH Image Gen
7
-
8
- 1. Confirm `dsh` runs and record `dsh --version`.
9
- 2. Ask which Web profile to change if the user did not name one. Default to `web` only when that profile already exists.
10
- 3. Install the pinned package or repository spec the user provides:
11
-
12
- ```sh
13
- dsh plugin --profile <profile> add <package-or-git-spec>
14
- ```
15
-
16
- 4. If pnpm blocks the Git dependency's `prepare` script, explain that the allowance executes repository code during installation. Add only the exact package key pnpm reports to the profile's `pnpm-workspace.yaml`, then retry after the user approves.
17
- 5. Verify `dsh --profile <profile> --dump-config` contains the `dsh-image-gen` layer and `image-gen` row.
18
- 6. Start the profile. If port 3080 is already in use, identify the existing DSH process before stopping anything.
19
- 7. In Settings > Plugins > Image generation (DSH 0.1.5 and earlier: Settings > Plugins > Plugin Configuration > Image generation), select a cloud Provider and save its API key, or select Local ComfyUI, enter its URL, and import a ComfyUI API Format workflow JSON containing `{{prompt}}`. Never print, read back, or commit a key.
20
- 8. Test with β€œη”ŸζˆδΈ€εΌ ζˆ΄ε’¨ι•œηš„θ΅›εšζœ‹ε…‹ηŒ«ε›Ύη‰‡β€. Confirm one `generate_image` call succeeds and its image renders in the conversation.
21
-
22
- For removal, run `dsh plugin --profile <profile> remove dsh-image-gen`. Do not delete the user's credentials unless they explicitly request it.
1
+ ---
2
+ name: install-dsh-image-gen
3
+ description: Install, configure, verify, or remove the dsh-image-gen Bundle in a DeepSeek Harness Web profile. Use when a user wants Google, OpenAI-compatible relay, Seedream, DashScope, or local ComfyUI image generation in DSH, cannot find the Image generation settings card, or needs help testing generate_image.
4
+ ---
5
+
6
+ # Install DSH Image Gen
7
+
8
+ 1. Confirm `dsh` runs and record `dsh --version`.
9
+ 2. Ask which Web profile to change if the user did not name one. Default to `web` only when that profile already exists.
10
+ 3. Install the pinned package or repository spec the user provides:
11
+
12
+ ```sh
13
+ dsh plugin --profile <profile> add <package-or-git-spec>
14
+ ```
15
+
16
+ 4. If pnpm blocks the Git dependency's `prepare` script, explain that the allowance executes repository code during installation. Add only the exact package key pnpm reports to the profile's `pnpm-workspace.yaml`, then retry after the user approves.
17
+ 5. Verify `dsh --profile <profile> --dump-config` contains the `dsh-image-gen` layer and `image-gen` row.
18
+ 6. Start the profile. If port 3080 is already in use, identify the existing DSH process before stopping anything.
19
+ 7. Open the Plugins panel from the left sidebar, click dsh-image-gen under Installed, and configure Providers on the plugin's detail page (DSH 0.1.5 and earlier: Settings > Plugins > Plugin Configuration > Image generation). Select a cloud Provider and save its API key, or select Local ComfyUI, enter its URL, and import a ComfyUI API Format workflow JSON containing `{{prompt}}`. Never print, read back, or commit a key.
20
+ 8. Test with β€œη”ŸζˆδΈ€εΌ ζˆ΄ε’¨ι•œηš„θ΅›εšζœ‹ε…‹ηŒ«ε›Ύη‰‡β€. Confirm one `generate_image` call succeeds and its image renders in the conversation.
21
+
22
+ For removal, run `dsh plugin --profile <profile> remove dsh-image-gen`. Do not delete the user's credentials unless they explicitly request it.