@dan-ai-studio/dshopencodego 0.1.40 → 0.1.41

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
@@ -562,7 +562,7 @@ if (!document.querySelector("style[data-plugin-css=" + JSON.stringify(id) + "]")
562
562
  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)}";
563
563
  document.head.appendChild(style);
564
564
  }
565
- var section_default = { "itemBody": "d7lz0W_itemBody", "list": "d7lz0W_list", "itemMeta": "d7lz0W_itemMeta", "mono": "d7lz0W_mono", "number": "d7lz0W_number", "root": "d7lz0W_root", "ok": "d7lz0W_ok", "itemModalities": "d7lz0W_itemModalities", "item": "d7lz0W_item", "name": "d7lz0W_name", "block": "d7lz0W_block", "warn": "d7lz0W_warn", "button": "d7lz0W_button", "hint": "d7lz0W_hint", "select": "d7lz0W_select", "input": "d7lz0W_input", "title": "d7lz0W_title", "badge": "d7lz0W_badge", "row": "d7lz0W_row", "itemMain": "d7lz0W_itemMain" };
565
+ var section_default = { "badge": "d7lz0W_badge", "block": "d7lz0W_block", "button": "d7lz0W_button", "hint": "d7lz0W_hint", "input": "d7lz0W_input", "item": "d7lz0W_item", "itemBody": "d7lz0W_itemBody", "itemMain": "d7lz0W_itemMain", "itemMeta": "d7lz0W_itemMeta", "itemModalities": "d7lz0W_itemModalities", "list": "d7lz0W_list", "mono": "d7lz0W_mono", "name": "d7lz0W_name", "number": "d7lz0W_number", "ok": "d7lz0W_ok", "root": "d7lz0W_root", "row": "d7lz0W_row", "select": "d7lz0W_select", "title": "d7lz0W_title", "warn": "d7lz0W_warn" };
566
566
 
567
567
  // src/client/Section.tsx
568
568
  var import_jsx_runtime = require("react/jsx-runtime");
@@ -1335,7 +1335,7 @@ if (!document.querySelector("style[data-plugin-css=" + JSON.stringify(id2) + "]"
1335
1335
  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}";
1336
1336
  document.head.appendChild(style);
1337
1337
  }
1338
- var pill_default = { "hint": "mMNkkW_hint", "local": "mMNkkW_local", "panel": "mMNkkW_panel", "warning": "mMNkkW_warning", "retry": "mMNkkW_retry", "trigger": "mMNkkW_trigger", "window": "mMNkkW_window", "limited": "mMNkkW_limited", "root": "mMNkkW_root", "row": "mMNkkW_row", "progress": "mMNkkW_progress" };
1338
+ var pill_default = { "hint": "mMNkkW_hint", "limited": "mMNkkW_limited", "local": "mMNkkW_local", "panel": "mMNkkW_panel", "progress": "mMNkkW_progress", "retry": "mMNkkW_retry", "root": "mMNkkW_root", "row": "mMNkkW_row", "trigger": "mMNkkW_trigger", "warning": "mMNkkW_warning", "window": "mMNkkW_window" };
1339
1339
 
1340
1340
  // src/client/UsagePill.tsx
1341
1341
  var import_jsx_runtime2 = require("react/jsx-runtime");
package/lib/index.js CHANGED
@@ -45505,7 +45505,7 @@ function createUpdateChecker(deps) {
45505
45505
  }
45506
45506
 
45507
45507
  // src/update/version.ts
45508
- var PLUGIN_VERSION = true ? "0.1.40" : "0.0.0-dev";
45508
+ var PLUGIN_VERSION = true ? "0.1.41" : "0.0.0-dev";
45509
45509
 
45510
45510
  // src/update/service.ts
45511
45511
  import { TypertRemoteService as TypertRemoteService2 } from "@deepseek-ai/dsh-typert-protocol";
@@ -70,12 +70,12 @@ import { getSupportedThinkingLevels } from '@earendil-works/pi-ai/models';
70
70
  import { normalizeContext } from '@earendil-works/pi-ai/utils/transcript';
71
71
  import { attributionHeaders, contentHasImage, LlmAdapter, LlmError, ReasoningEffortId, resolveRetryPolicy, } from '@deepseek-ai/dsh-llm';
72
72
  import { idleWatchdog, timeoutOf } from '@deepseek-ai/dsh-timeout';
73
- import { DISPLAY_NAME, PROVIDER_ID, OpencodeGoCatalog } from "./catalog/index.js";
74
- import { toPiModel } from "./catalog/metadata.js";
75
- import { assertBaseURL } from "./config.js";
76
- import { toPiContext, toStreamChunks } from "./conversion/index.js";
77
- import { isModelEnabled, recommendedIds } from "./models.js";
78
- import { providerHeaders } from "./session-header.js";
73
+ import { DISPLAY_NAME, PROVIDER_ID, OpencodeGoCatalog } from './catalog/index.js';
74
+ import { toPiModel } from './catalog/metadata.js';
75
+ import { assertBaseURL } from './config.js';
76
+ import { toPiContext, toStreamChunks } from './conversion/index.js';
77
+ import { isModelEnabled, recommendedIds } from './models.js';
78
+ import { providerHeaders } from './session-header.js';
79
79
  /**
80
80
  * pi-ai thinking formats that answer an unset effort with an explicit disable.
81
81
  * Every other format omits the parameter and lets the provider decide, so only
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * @module @dan-ai-studio/dshopencodego/catalog/contract
11
11
  */
12
- import { INPUT_MODALITIES } from "./metadata.js";
12
+ import { INPUT_MODALITIES } from './metadata.js';
13
13
  function parseGoQuota(value) {
14
14
  if (value === null || typeof value !== 'object')
15
15
  throw new Error('invalid go quota');
@@ -8,8 +8,8 @@
8
8
  * @module @dan-ai-studio/dshopencodego/catalog/gateway
9
9
  */
10
10
  import { attributionHeaders, LlmError } from '@deepseek-ai/dsh-llm';
11
- import { MODEL_LISTING_MAX_BYTES, METADATA_FETCH_TIMEOUT_MS } from "./constants.js";
12
- import { readBoundedJson } from "./json-response.js";
11
+ import { MODEL_LISTING_MAX_BYTES, METADATA_FETCH_TIMEOUT_MS } from './constants.js';
12
+ import { readBoundedJson } from './json-response.js';
13
13
  /** Read the ids out of a model-listing body. */
14
14
  export function readModelIds(body) {
15
15
  const data = body?.data;
@@ -14,8 +14,8 @@
14
14
  * @module @dan-ai-studio/dshopencodego/catalog/go-doc
15
15
  */
16
16
  import { attributionHeaders, LlmError } from '@deepseek-ai/dsh-llm';
17
- import { METADATA_FETCH_TIMEOUT_MS } from "./constants.js";
18
- import { readBoundedText } from "./json-response.js";
17
+ import { METADATA_FETCH_TIMEOUT_MS } from './constants.js';
18
+ import { readBoundedText } from './json-response.js';
19
19
  /**
20
20
  * Documentation sources, tried in order.
21
21
  *
@@ -29,16 +29,16 @@ import { anthropicMessagesApi } from '@earendil-works/pi-ai/api/anthropic-messag
29
29
  import { openAICompletionsApi } from '@earendil-works/pi-ai/api/openai-completions.lazy';
30
30
  import { openAIResponsesApi } from '@earendil-works/pi-ai/api/openai-responses.lazy';
31
31
  import { attributionHeaders, LlmError } from '@deepseek-ai/dsh-llm';
32
- import { DISPLAY_NAME, MODEL_METADATA_MAX_BYTES, MODEL_METADATA_URL, PROVIDER_ID, METADATA_FETCH_TIMEOUT_MS, } from "./constants.js";
33
- import { fetchModelIds } from "./gateway.js";
34
- import { fetchGoDocument, GO_DOC_URLS } from "./go-doc.js";
35
- import { readBoundedJson } from "./json-response.js";
36
- import { readOnlineMetadata, toPiModel } from "./metadata.js";
37
- import { asWireProtocol } from "./protocol.js";
38
- export { PROVIDER_ID, DISPLAY_NAME, DEFAULT_BASE_URL, CONSOLE_BASE_URL } from "./constants.js";
39
- export { readModelIds, fetchModelIds } from "./gateway.js";
40
- export { readOnlineMetadata, toPiModel, modelBaseURL } from "./metadata.js";
41
- export { decideProtocol, inferProtocol, protocolOfNpm } from "./protocol.js";
32
+ import { DISPLAY_NAME, MODEL_METADATA_MAX_BYTES, MODEL_METADATA_URL, PROVIDER_ID, METADATA_FETCH_TIMEOUT_MS, } from './constants.js';
33
+ import { fetchModelIds } from './gateway.js';
34
+ import { fetchGoDocument, GO_DOC_URLS } from './go-doc.js';
35
+ import { readBoundedJson } from './json-response.js';
36
+ import { readOnlineMetadata, toPiModel } from './metadata.js';
37
+ import { asWireProtocol } from './protocol.js';
38
+ export { PROVIDER_ID, DISPLAY_NAME, DEFAULT_BASE_URL, CONSOLE_BASE_URL } from './constants.js';
39
+ export { readModelIds, fetchModelIds } from './gateway.js';
40
+ export { readOnlineMetadata, toPiModel, modelBaseURL } from './metadata.js';
41
+ export { decideProtocol, inferProtocol, protocolOfNpm } from './protocol.js';
42
42
  /**
43
43
  * The installed catalog, re-pointed at the configured gateway.
44
44
  *
@@ -17,7 +17,7 @@
17
17
  import type { Api, Model, ModelCost, ThinkingLevelMap } from '@earendil-works/pi-ai';
18
18
  import type { ProtocolSource, WireProtocol } from './protocol.ts';
19
19
  /** Input modalities this build can name, in display order. */
20
- export declare const INPUT_MODALITIES: readonly ["text", "image", "audio", "video", "pdf"];
20
+ export declare const INPUT_MODALITIES: readonly ['text', 'image', 'audio', 'video', 'pdf'];
21
21
  /** One input modality a model document may declare. */
22
22
  export type InputModality = (typeof INPUT_MODALITIES)[number];
23
23
  /** Everything this plugin knows about one advertised model. */
@@ -14,8 +14,8 @@
14
14
  *
15
15
  * @module @dan-ai-studio/dshopencodego/catalog/metadata
16
16
  */
17
- import { asWireProtocol, decideProtocol, protocolOfNpm } from "./protocol.js";
18
- import { MODEL_METADATA_PROVIDER } from "./constants.js";
17
+ import { asWireProtocol, decideProtocol, protocolOfNpm } from './protocol.js';
18
+ import { MODEL_METADATA_PROVIDER } from './constants.js';
19
19
  /** Input modalities this build can name, in display order. */
20
20
  export const INPUT_MODALITIES = ['text', 'image', 'audio', 'video', 'pdf'];
21
21
  const LEVELS = ['off', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'];
@@ -9,8 +9,8 @@
9
9
  *
10
10
  * @module @dan-ai-studio/dshopencodego/catalog/reading
11
11
  */
12
- import { isModelEnabled, recommendedIds, sortModels } from "../models.js";
13
- import { goQuotaFor } from "../go-limits.js";
12
+ import { isModelEnabled, recommendedIds, sortModels } from '../models.js';
13
+ import { goQuotaFor } from '../go-limits.js';
14
14
  /**
15
15
  * Project one snapshot for the settings page.
16
16
  * @param snapshot - the catalog snapshot, live or retained.
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import { RemoteError, TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
11
11
  import { LlmError } from '@deepseek-ai/dsh-llm';
12
- import { catalogReading } from "./reading.js";
12
+ import { catalogReading } from './reading.js';
13
13
  /** Catalog Remote: what the gateway serves, and how each model is called. */
14
14
  export class OpencodeGoCatalogService extends TypertRemoteService {
15
15
  options;
@@ -14,7 +14,7 @@
14
14
  import { RetryPolicySchema } from '@deepseek-ai/dsh-llm';
15
15
  import { MAX_TIMER_DELAY_MS } from '@deepseek-ai/dsh-timeout';
16
16
  import z from '@deepseek-ai/schemastery';
17
- import { DEFAULT_BASE_URL } from "./catalog/constants.js";
17
+ import { DEFAULT_BASE_URL } from './catalog/constants.js';
18
18
  /** Credential reference resolving the OpenCode Go API key. */
19
19
  export const DEFAULT_API_KEY_ENV = 'OPENCODE_GO_API_KEY';
20
20
  /** Requests and pickers share this cache lifetime; explicit discovery revalidates immediately. */
@@ -25,7 +25,7 @@ import { brandString } from '@deepseek-ai/dsh-brand';
25
25
  import * as llm from '@deepseek-ai/dsh-llm';
26
26
  import { contentHasImage, LlmError, requestImageHandleText } from '@deepseek-ai/dsh-llm';
27
27
  import { requestImageDimensions } from '@deepseek-ai/dsh-attachment';
28
- import { toPiAssistant } from "./replay.js";
28
+ import { toPiAssistant } from './replay.js';
29
29
  /** Join the text blocks of one Harness message. */
30
30
  function flattenText(message) {
31
31
  return message.content.filter(block => block.type === 'text').map(block => block.text).join('');
@@ -2,6 +2,6 @@
2
2
  * Harness ⇄ pi-ai conversion.
3
3
  * @module @dan-ai-studio/dshopencodego/conversion
4
4
  */
5
- export { toPiContext } from "./context.js";
6
- export { classifyPiAiError, mapStopReason, mapUsage, toStreamChunks } from "./stream.js";
7
- export { toPiAssistant, toPiReplayState } from "./replay.js";
5
+ export { toPiContext } from './context.js';
6
+ export { classifyPiAiError, mapStopReason, mapUsage, toStreamChunks } from './stream.js';
7
+ export { toPiAssistant, toPiReplayState } from './replay.js';
@@ -10,7 +10,7 @@
10
10
  import { brandString } from '@deepseek-ai/dsh-brand';
11
11
  import { CONTEXT_WINDOW_EXCEEDED_CODE, EMPTY_RESPONSE_CODE, isContextWindowExceededError, isQuotaExceededError, LlmError, } from '@deepseek-ai/dsh-llm';
12
12
  import { isContextOverflow } from '@earendil-works/pi-ai/utils/overflow';
13
- import { toPiReplayState } from "./replay.js";
13
+ import { toPiReplayState } from './replay.js';
14
14
  /**
15
15
  * Map pi-ai usage (reasoning already folded into output).
16
16
  * @param usage - the terminal event's cumulative usage.
@@ -31,19 +31,19 @@ import { credentialRef } from '@deepseek-ai/dsh-credentials';
31
31
  import { launchEnvironmentOf } from '@deepseek-ai/dsh-launch-environment';
32
32
  import * as llm from '@deepseek-ai/dsh-llm';
33
33
  import { LlmError } from '@deepseek-ai/dsh-llm';
34
- import { OpencodeGoAdapter } from "./adapter.js";
35
- import { DISPLAY_NAME, PROVIDER_ID, discoverCatalogModels } from "./catalog/index.js";
36
- import { assertBaseURL, PlainConfig, readConfig } from "./config.js";
37
- import { registerRemotes } from "./remotes.js";
38
- import { OpencodeGoCatalogService } from "./catalog/service.js";
39
- import { OpencodeGoUpdateService } from "./update/index.js";
40
- import { PLUGIN_VERSION } from "./update/index.js";
41
- import { OpencodeGoUsageService, UsageMeter } from "./usage/index.js";
42
- export { OpencodeGoAdapter } from "./adapter.js";
43
- export { DEFAULT_BASE_URL, CONSOLE_BASE_URL, DISPLAY_NAME, PROVIDER_ID, OpencodeGoCatalog, discoverCatalogModels } from "./catalog/index.js";
44
- export { Config, PlainConfig, assertBaseURL, DEFAULT_API_KEY_ENV } from "./config.js";
45
- export { SESSION_HEADER, SESSION_AFFINITY_HEADER, opencodeSessionValue, providerHeaders } from "./session-header.js";
46
- export { isModelEnabled, sortModels } from "./models.js";
34
+ import { OpencodeGoAdapter } from './adapter.js';
35
+ import { DISPLAY_NAME, PROVIDER_ID, discoverCatalogModels } from './catalog/index.js';
36
+ import { assertBaseURL, PlainConfig, readConfig } from './config.js';
37
+ import { registerRemotes } from './remotes.js';
38
+ import { OpencodeGoCatalogService } from './catalog/service.js';
39
+ import { OpencodeGoUpdateService } from './update/index.js';
40
+ import { PLUGIN_VERSION } from './update/index.js';
41
+ import { OpencodeGoUsageService, UsageMeter } from './usage/index.js';
42
+ export { OpencodeGoAdapter } from './adapter.js';
43
+ export { DEFAULT_BASE_URL, CONSOLE_BASE_URL, DISPLAY_NAME, PROVIDER_ID, OpencodeGoCatalog, discoverCatalogModels } from './catalog/index.js';
44
+ export { Config, PlainConfig, assertBaseURL, DEFAULT_API_KEY_ENV } from './config.js';
45
+ export { SESSION_HEADER, SESSION_AFFINITY_HEADER, opencodeSessionValue, providerHeaders } from './session-header.js';
46
+ export { isModelEnabled, sortModels } from './models.js';
47
47
  export const name = 'dshopencodego';
48
48
  export const inject = ['llm'];
49
49
  /** True when a loader handed this plugin its live field references. */
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * @module @dan-ai-studio/dshopencodego/models
10
10
  */
11
- import { goQuotaFor, monthlyRequestsRank } from "./go-limits.js";
11
+ import { goQuotaFor, monthlyRequestsRank } from './go-limits.js';
12
12
  /** How many models the default configuration keeps enabled. */
13
13
  export const DEFAULT_ENABLED_COUNT = 5;
14
14
  /**
@@ -7,9 +7,9 @@
7
7
  *
8
8
  * @module @dan-ai-studio/dshopencodego/remotes
9
9
  */
10
- import { catalogRemote } from "./catalog/contract.js";
11
- import { updateRemote } from "./update/contract.js";
12
- import { usageRemote } from "./usage/contract.js";
10
+ import { catalogRemote } from './catalog/contract.js';
11
+ import { updateRemote } from './update/contract.js';
12
+ import { usageRemote } from './usage/contract.js';
13
13
  /** Every Remote method this package owns, mounted as one contribution. */
14
14
  const contribution = {
15
15
  package: usageRemote.package,
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * @module @dan-ai-studio/dshopencodego/update
5
5
  */
6
- export { PACKAGE_NAME, REGISTRY_LATEST_URL, CHECK_CACHE_MS, CHECK_TIMEOUT_MS } from "./check.js";
7
- export { compareVersions, createUpdateChecker, isUpdateAvailable, parseLatestVersion, parseVersion } from "./check.js";
8
- export { PLUGIN_VERSION } from "./version.js";
9
- export { OpencodeGoUpdateService } from "./service.js";
10
- export { parseUpdateStatus, updateRemote } from "./contract.js";
6
+ export { PACKAGE_NAME, REGISTRY_LATEST_URL, CHECK_CACHE_MS, CHECK_TIMEOUT_MS } from './check.js';
7
+ export { compareVersions, createUpdateChecker, isUpdateAvailable, parseLatestVersion, parseVersion } from './check.js';
8
+ export { PLUGIN_VERSION } from './version.js';
9
+ export { OpencodeGoUpdateService } from './service.js';
10
+ export { parseUpdateStatus, updateRemote } from './contract.js';
@@ -12,7 +12,7 @@
12
12
  * @module @dan-ai-studio/dshopencodego/update/service
13
13
  */
14
14
  import { TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
15
- import { createUpdateChecker } from "./check.js";
15
+ import { createUpdateChecker } from './check.js';
16
16
  /** Update Remote: the cached registry reading for the settings page. */
17
17
  export class OpencodeGoUpdateService extends TypertRemoteService {
18
18
  check;
@@ -2,7 +2,7 @@
2
2
  * Usage readings for the `opencode-go` route.
3
3
  * @module @dan-ai-studio/dshopencodego/usage
4
4
  */
5
- export { UsageMeter } from "./meter.js";
6
- export { parseGoUsage, readUsageWindows } from "./windows.js";
7
- export { parseGoMeter, parseUsageWindows, usageRemote } from "./contract.js";
8
- export { OpencodeGoUsageService } from "./service.js";
5
+ export { UsageMeter } from './meter.js';
6
+ export { parseGoUsage, readUsageWindows } from './windows.js';
7
+ export { parseGoMeter, parseUsageWindows, usageRemote } from './contract.js';
8
+ export { OpencodeGoUsageService } from './service.js';
@@ -12,8 +12,8 @@
12
12
  import { randomUUID } from 'node:crypto';
13
13
  import { RemoteError, TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
14
14
  import { LlmError } from '@deepseek-ai/dsh-llm';
15
- import { assertBaseURL } from "../config.js";
16
- import { readUsageWindows } from "./windows.js";
15
+ import { assertBaseURL } from '../config.js';
16
+ import { readUsageWindows } from './windows.js';
17
17
  /**
18
18
  * Decide what one failed read means for the client.
19
19
  *
@@ -10,7 +10,7 @@
10
10
  * @module @dan-ai-studio/dshopencodego/usage/windows
11
11
  */
12
12
  import { attributionHeaders, LlmError } from '@deepseek-ai/dsh-llm';
13
- import { readBoundedJson } from "../catalog/json-response.js";
13
+ import { readBoundedJson } from '../catalog/json-response.js';
14
14
  /** Response cap: this document is a few hundred bytes. */
15
15
  const USAGE_MAX_BYTES = 1024 * 1024;
16
16
  /** Timeout for one usage read. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dan-ai-studio/dshopencodego",
3
- "version": "0.1.40",
3
+ "version": "0.1.41",
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",
@@ -145,7 +145,7 @@
145
145
  "oxlint": "^1.88.0",
146
146
  "react": "^18.3.1",
147
147
  "react-dom": "^18.3.1",
148
- "typescript": "^6.0.3",
148
+ "typescript": "^7.0.2",
149
149
  "vitest": "^5.0.5"
150
150
  },
151
151
  "keywords": [