@dan-ai-studio/dshopencodego 0.1.23 → 0.1.25

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
@@ -186,6 +186,15 @@ var updateRemote = {
186
186
  invocation: { kind: "direct" },
187
187
  parameters: [],
188
188
  result: codec2("@dan-ai-studio/dshopencodego#UpdateStatus", parseUpdateStatus)
189
+ },
190
+ {
191
+ id: "@dan-ai-studio/dshopencodego#opencodeGoUpdate/refreshUpdate",
192
+ service: "opencodeGoUpdate",
193
+ namespace: "opencodeGoUpdate",
194
+ method: "refreshUpdate",
195
+ invocation: { kind: "direct" },
196
+ parameters: [],
197
+ result: codec2("@dan-ai-studio/dshopencodego#UpdateStatus", parseUpdateStatus)
189
198
  }
190
199
  ]
191
200
  };
@@ -343,6 +352,7 @@ var en = {
343
352
  usageLoading: "Loading\u2026",
344
353
  updateTitle: "Plugin update",
345
354
  updateChecking: "Checking for updates\u2026",
355
+ updateLatest: "Up to date:",
346
356
  updateAvailable: "New version available:",
347
357
  updateCurrent: "current",
348
358
  updateNow: "Update now",
@@ -427,6 +437,7 @@ var zh = {
427
437
  usageLoading: "\u52A0\u8F7D\u4E2D\u2026",
428
438
  updateTitle: "\u63D2\u4EF6\u66F4\u65B0",
429
439
  updateChecking: "\u6B63\u5728\u68C0\u67E5\u66F4\u65B0\u2026",
440
+ updateLatest: "\u5DF2\u662F\u6700\u65B0\u7248\u672C\uFF1A",
430
441
  updateAvailable: "\u53D1\u73B0\u65B0\u7248\u672C\uFF1A",
431
442
  updateCurrent: "\u5F53\u524D",
432
443
  updateNow: "\u7ACB\u5373\u66F4\u65B0",
@@ -539,7 +550,7 @@ if (!document.querySelector("style[data-plugin-css=" + JSON.stringify(id) + "]")
539
550
  style.textContent = ".d7lz0W_root{color:var(--dsw-alias-label-primary);flex-direction:column;gap:1.25rem;display:flex}.d7lz0W_title{margin:0;font-size:1.05rem}.d7lz0W_hint{color:var(--dsw-alias-label-secondary);margin:0;font-size:.8rem}.d7lz0W_warn{color:var(--dsw-alias-state-warn-primary);margin:0;font-size:.8rem}.d7lz0W_ok{color:var(--dsw-alias-state-success-primary);font-size:.8rem}.d7lz0W_block{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:.6rem;flex-direction:column;gap:.5rem;padding:.85rem;display:flex}.d7lz0W_row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.d7lz0W_row>strong{margin-right:auto}.d7lz0W_input{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);min-width:10rem;color:var(--dsw-alias-label-primary);font:inherit;border-radius:.35rem;flex:14rem;padding:.35rem .5rem;font-size:.85rem}.d7lz0W_button{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;border-radius:.35rem;padding:.35rem .7rem;font-size:.8rem}.d7lz0W_button:disabled{color:var(--dsw-alias-state-idle-primary);cursor:default}.d7lz0W_number{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:5rem;color:var(--dsw-alias-label-primary);font:inherit;border-radius:.35rem;padding:.25rem .4rem;font-size:.8rem}.d7lz0W_select{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:auto;max-width:100%;color:var(--dsw-alias-label-primary);font:inherit;border-radius:.35rem;padding:.25rem .4rem;font-size:.8rem}.d7lz0W_list{flex-direction:column;display:flex}.d7lz0W_item{border-top:1px solid var(--dsw-alias-border-l1);align-items:flex-start;gap:.5rem;padding:.45rem .15rem;display:flex}.d7lz0W_item input[type=checkbox]{accent-color:var(--dsw-alias-brand-primary);margin-top:.15rem}.d7lz0W_itemBody{flex-direction:column;gap:.15rem;min-width:0;display:flex}.d7lz0W_itemMain{flex-wrap:wrap;align-items:baseline;gap:.6rem;display:flex}.d7lz0W_itemMeta{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:.75rem;font-size:.75rem;display:flex}.d7lz0W_itemModalities{color:var(--dsw-alias-label-secondary);font-size:.75rem}.d7lz0W_name{color:var(--dsw-alias-label-primary)}.d7lz0W_mono{color:var(--dsw-alias-label-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.d7lz0W_badge{color:var(--dsw-alias-brand-primary)}";
540
551
  document.head.appendChild(style);
541
552
  }
542
- var section_default = { "button": "d7lz0W_button", "ok": "d7lz0W_ok", "list": "d7lz0W_list", "title": "d7lz0W_title", "root": "d7lz0W_root", "itemMeta": "d7lz0W_itemMeta", "input": "d7lz0W_input", "badge": "d7lz0W_badge", "number": "d7lz0W_number", "hint": "d7lz0W_hint", "itemMain": "d7lz0W_itemMain", "name": "d7lz0W_name", "select": "d7lz0W_select", "itemModalities": "d7lz0W_itemModalities", "block": "d7lz0W_block", "mono": "d7lz0W_mono", "item": "d7lz0W_item", "row": "d7lz0W_row", "itemBody": "d7lz0W_itemBody", "warn": "d7lz0W_warn" };
553
+ var section_default = { "root": "d7lz0W_root", "mono": "d7lz0W_mono", "warn": "d7lz0W_warn", "badge": "d7lz0W_badge", "select": "d7lz0W_select", "number": "d7lz0W_number", "itemModalities": "d7lz0W_itemModalities", "hint": "d7lz0W_hint", "itemMeta": "d7lz0W_itemMeta", "button": "d7lz0W_button", "block": "d7lz0W_block", "itemMain": "d7lz0W_itemMain", "ok": "d7lz0W_ok", "itemBody": "d7lz0W_itemBody", "item": "d7lz0W_item", "row": "d7lz0W_row", "input": "d7lz0W_input", "list": "d7lz0W_list", "title": "d7lz0W_title", "name": "d7lz0W_name" };
543
554
 
544
555
  // src/client/Section.tsx
545
556
  var import_jsx_runtime = require("react/jsx-runtime");
@@ -641,17 +652,23 @@ var SectionController = class _SectionController {
641
652
  * The Host answers from a cached registry reading and fails silent, so an
642
653
  * unreachable registry hides the panel instead of erroring the page. Runs
643
654
  * once with the page and again only on explicit refresh.
655
+ *
656
+ * Both wire methods take zero arguments: the gateway client rejects any
657
+ * call whose positional arity differs from the descriptor's `parameters`,
658
+ * so the cached read and the forced refresh are two methods (`readUpdate`
659
+ * / `refreshUpdate`), never one method with a flag.
644
660
  */
645
661
  async checkUpdate(force) {
646
662
  const previous = this.state.update;
647
663
  this.set({ update: { ...previous, phase: "checking", message: void 0 } });
648
664
  try {
649
- const result = await this.services.remote.opencodeGoUpdate.readUpdate(force);
665
+ const remote = this.services.remote.opencodeGoUpdate;
666
+ const result = force ? await remote.refreshUpdate() : await remote.readUpdate();
650
667
  if (!result.ok) throw result.error;
651
668
  const status = result.value;
652
669
  this.set({
653
670
  update: {
654
- phase: status.available && status.latest !== void 0 ? "ready" : "idle",
671
+ phase: status.available && status.latest !== void 0 ? "ready" : "current",
655
672
  status,
656
673
  message: void 0
657
674
  }
@@ -894,6 +911,23 @@ function UpdateBanner({ controller, t, busy, act, update }) {
894
911
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: section_default.block, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: section_default.row, children: [
895
912
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { children: t("updateTitle") }),
896
913
  update.phase === "checking" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: section_default.hint, children: t("updateChecking") }),
914
+ update.phase === "current" && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
915
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: section_default.hint, children: `${t("updateLatest")} ${status?.current ?? ""}`.trim() }),
916
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
917
+ "button",
918
+ {
919
+ type: "button",
920
+ className: section_default.button,
921
+ disabled: busy,
922
+ onClick: () => {
923
+ void act(async () => {
924
+ await controller.checkUpdate(true);
925
+ });
926
+ },
927
+ children: t("updateRecheck")
928
+ }
929
+ )
930
+ ] }),
897
931
  update.phase === "ready" && status?.latest !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
898
932
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: section_default.hint, children: `${t("updateAvailable")} ${status.latest} (${t("updateCurrent")} ${status.current})` }),
899
933
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -1252,7 +1286,7 @@ if (!document.querySelector("style[data-plugin-css=" + JSON.stringify(id2) + "]"
1252
1286
  style.textContent = ".mMNkkW_root{align-items:center;display:inline-flex;position:relative}.mMNkkW_trigger{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;white-space:nowrap;border-radius:999px;padding:.35rem .6rem;font-size:.8rem;line-height:1}.mMNkkW_trigger:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l2)}.mMNkkW_panel{z-index:20;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-overlay);width:18rem;color:var(--dsw-alias-label-primary);border-radius:.6rem;flex-direction:column;gap:.6rem;padding:.75rem .85rem;display:flex;position:absolute;bottom:calc(100% + .5rem);right:0;box-shadow:0 8px 24px #0000002e}.mMNkkW_window{flex-direction:column;gap:.25rem;display:flex}.mMNkkW_row{justify-content:space-between;gap:.5rem;font-size:.85rem;display:flex}.mMNkkW_hint{color:var(--dsw-alias-label-secondary);margin:0;font-size:.75rem}.mMNkkW_progress{width:100%;height:.35rem;accent-color:var(--dsw-alias-brand-primary)}.mMNkkW_limited{color:var(--dsw-alias-state-warn-primary);font-size:.75rem}.mMNkkW_warning{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-label-primary);border-radius:.4rem;padding:.4rem .5rem;font-size:.75rem}.mMNkkW_retry{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;border-radius:.35rem;align-self:flex-start;padding:.25rem .5rem;font-size:.75rem}.mMNkkW_local{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;gap:.2rem;padding-top:.5rem;display:flex}";
1253
1287
  document.head.appendChild(style);
1254
1288
  }
1255
- var pill_default = { "warning": "mMNkkW_warning", "row": "mMNkkW_row", "root": "mMNkkW_root", "retry": "mMNkkW_retry", "window": "mMNkkW_window", "trigger": "mMNkkW_trigger", "hint": "mMNkkW_hint", "limited": "mMNkkW_limited", "local": "mMNkkW_local", "progress": "mMNkkW_progress", "panel": "mMNkkW_panel" };
1289
+ var pill_default = { "progress": "mMNkkW_progress", "panel": "mMNkkW_panel", "window": "mMNkkW_window", "hint": "mMNkkW_hint", "root": "mMNkkW_root", "limited": "mMNkkW_limited", "warning": "mMNkkW_warning", "retry": "mMNkkW_retry", "trigger": "mMNkkW_trigger", "row": "mMNkkW_row", "local": "mMNkkW_local" };
1256
1290
 
1257
1291
  // src/client/UsagePill.tsx
1258
1292
  var import_jsx_runtime2 = require("react/jsx-runtime");
package/lib/index.js CHANGED
@@ -1801,6 +1801,15 @@ var updateRemote = {
1801
1801
  invocation: { kind: "direct" },
1802
1802
  parameters: [],
1803
1803
  result: codec2("@dan-ai-studio/dshopencodego#UpdateStatus", parseUpdateStatus)
1804
+ },
1805
+ {
1806
+ id: "@dan-ai-studio/dshopencodego#opencodeGoUpdate/refreshUpdate",
1807
+ service: "opencodeGoUpdate",
1808
+ namespace: "opencodeGoUpdate",
1809
+ method: "refreshUpdate",
1810
+ invocation: { kind: "direct" },
1811
+ parameters: [],
1812
+ result: codec2("@dan-ai-studio/dshopencodego#UpdateStatus", parseUpdateStatus)
1804
1813
  }
1805
1814
  ]
1806
1815
  };
@@ -2070,7 +2079,7 @@ function createUpdateChecker(deps) {
2070
2079
  }
2071
2080
 
2072
2081
  // src/update/version.ts
2073
- var PLUGIN_VERSION = true ? "0.1.23" : "0.0.0-dev";
2082
+ var PLUGIN_VERSION = true ? "0.1.25" : "0.0.0-dev";
2074
2083
 
2075
2084
  // src/update/service.ts
2076
2085
  import { TypertRemoteService as TypertRemoteService2 } from "@deepseek-ai/dsh-typert-protocol";
@@ -2081,9 +2090,20 @@ var OpencodeGoUpdateService = class extends TypertRemoteService2 {
2081
2090
  const checker = createUpdateChecker({ currentVersion: options.currentVersion });
2082
2091
  this.check = (force) => checker.check(force);
2083
2092
  }
2084
- /** Whether a newer release is published; `force` bypasses the cache. */
2085
- readUpdate(force) {
2086
- return this.check(force);
2093
+ /**
2094
+ * Whether a newer release is published (cached reading).
2095
+ *
2096
+ * The wire method takes no arguments — the gateway client rejects any call
2097
+ * whose positional arity differs from the descriptor's `parameters`, so a
2098
+ * `force` flag cannot ride this call. Forced revalidation is the separate
2099
+ * `refreshUpdate` method below, mirroring the catalog's read/refresh pair.
2100
+ */
2101
+ readUpdate() {
2102
+ return this.check(false);
2103
+ }
2104
+ /** Revalidate against the registry, bypassing the cache. */
2105
+ refreshUpdate() {
2106
+ return this.check(true);
2087
2107
  }
2088
2108
  };
2089
2109
 
@@ -15,7 +15,8 @@ export declare function parseUpdateStatus(value: unknown): UpdateStatus;
15
15
  declare module '@deepseek-ai/dsh-typert-protocol' {
16
16
  interface TypertRemoteNamespaceMap {
17
17
  opencodeGoUpdate: {
18
- readUpdate(force?: boolean): Promise<RemoteResult<UpdateStatus>>;
18
+ readUpdate(): Promise<RemoteResult<UpdateStatus>>;
19
+ refreshUpdate(): Promise<RemoteResult<UpdateStatus>>;
19
20
  };
20
21
  }
21
22
  }
@@ -48,5 +48,14 @@ export const updateRemote = {
48
48
  parameters: [],
49
49
  result: codec('@dan-ai-studio/dshopencodego#UpdateStatus', parseUpdateStatus),
50
50
  },
51
+ {
52
+ id: '@dan-ai-studio/dshopencodego#opencodeGoUpdate/refreshUpdate',
53
+ service: 'opencodeGoUpdate',
54
+ namespace: 'opencodeGoUpdate',
55
+ method: 'refreshUpdate',
56
+ invocation: { kind: 'direct' },
57
+ parameters: [],
58
+ result: codec('@dan-ai-studio/dshopencodego#UpdateStatus', parseUpdateStatus),
59
+ },
51
60
  ],
52
61
  };
@@ -23,6 +23,15 @@ export interface UpdateServiceOptions {
23
23
  export declare class OpencodeGoUpdateService extends TypertRemoteService {
24
24
  private readonly check;
25
25
  constructor(ctx: Context, options: UpdateServiceOptions);
26
- /** Whether a newer release is published; `force` bypasses the cache. */
27
- readUpdate(force?: boolean): Promise<UpdateStatus>;
26
+ /**
27
+ * Whether a newer release is published (cached reading).
28
+ *
29
+ * The wire method takes no arguments — the gateway client rejects any call
30
+ * whose positional arity differs from the descriptor's `parameters`, so a
31
+ * `force` flag cannot ride this call. Forced revalidation is the separate
32
+ * `refreshUpdate` method below, mirroring the catalog's read/refresh pair.
33
+ */
34
+ readUpdate(): Promise<UpdateStatus>;
35
+ /** Revalidate against the registry, bypassing the cache. */
36
+ refreshUpdate(): Promise<UpdateStatus>;
28
37
  }
@@ -21,8 +21,19 @@ export class OpencodeGoUpdateService extends TypertRemoteService {
21
21
  const checker = createUpdateChecker({ currentVersion: options.currentVersion });
22
22
  this.check = (force) => checker.check(force);
23
23
  }
24
- /** Whether a newer release is published; `force` bypasses the cache. */
25
- readUpdate(force) {
26
- return this.check(force);
24
+ /**
25
+ * Whether a newer release is published (cached reading).
26
+ *
27
+ * The wire method takes no arguments — the gateway client rejects any call
28
+ * whose positional arity differs from the descriptor's `parameters`, so a
29
+ * `force` flag cannot ride this call. Forced revalidation is the separate
30
+ * `refreshUpdate` method below, mirroring the catalog's read/refresh pair.
31
+ */
32
+ readUpdate() {
33
+ return this.check(false);
34
+ }
35
+ /** Revalidate against the registry, bypassing the cache. */
36
+ refreshUpdate() {
37
+ return this.check(true);
27
38
  }
28
39
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dan-ai-studio/dshopencodego",
3
- "version": "0.1.23",
3
+ "version": "0.1.25",
4
4
  "description": "OpenCode Go provider for DeepSeek Harness: live gateway catalog, per-conversation session header, usage",
5
5
  "type": "module",
6
6
  "license": "MIT",