dominds 1.28.1 → 1.29.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.
Files changed (50) hide show
  1. package/README.md +1 -0
  2. package/README.zh.md +1 -0
  3. package/dist/dialog-global-registry.d.ts +2 -0
  4. package/dist/dialog-global-registry.js +41 -0
  5. package/dist/dialog.d.ts +1 -0
  6. package/dist/dialog.js +5 -0
  7. package/dist/docs/codex-provider-auth-policy.md +59 -0
  8. package/dist/docs/codex-provider-auth-policy.zh.md +59 -0
  9. package/dist/docs/llm-provider-isolation.md +1 -1
  10. package/dist/docs/llm-provider-isolation.zh.md +1 -1
  11. package/dist/llm/api-quirks.d.ts +1 -0
  12. package/dist/llm/api-quirks.js +2 -1
  13. package/dist/llm/client.d.ts +2 -1
  14. package/dist/llm/defaults.yaml +163 -7
  15. package/dist/llm/gen/codex.d.ts +3 -2
  16. package/dist/llm/gen/codex.js +82 -10
  17. package/dist/llm/gen/google.d.ts +20 -0
  18. package/dist/llm/gen/google.js +735 -0
  19. package/dist/llm/gen/mock.js +8 -0
  20. package/dist/llm/gen/openai-compatible.js +5 -0
  21. package/dist/llm/gen/openai.js +9 -1
  22. package/dist/llm/gen/registry.js +4 -2
  23. package/dist/llm/gen/tool-output-limit.js +1 -0
  24. package/dist/llm/gen/tool-result-image-ingest.d.ts +1 -0
  25. package/dist/llm/gen/tool-result-image-ingest.js +2 -1
  26. package/dist/llm/kernel-driver/drive.js +21 -3
  27. package/dist/main-dialog-goal-reminder.d.ts +20 -0
  28. package/dist/main-dialog-goal-reminder.js +344 -0
  29. package/dist/minds/system-prompt-parts.js +14 -14
  30. package/dist/runtime/driver-messages.js +16 -16
  31. package/dist/server/setup-routes.js +3 -1
  32. package/dist/team.d.ts +12 -3
  33. package/dist/team.js +36 -4
  34. package/dist/tools/builtins.js +2 -0
  35. package/dist/tools/ctrl.d.ts +1 -0
  36. package/dist/tools/ctrl.js +65 -1
  37. package/dist/tools/prompts/control/en/index.md +4 -2
  38. package/dist/tools/prompts/control/en/principles.md +5 -4
  39. package/dist/tools/prompts/control/en/scenarios.md +9 -4
  40. package/dist/tools/prompts/control/en/tools.md +53 -9
  41. package/dist/tools/prompts/control/zh/index.md +4 -2
  42. package/dist/tools/prompts/control/zh/principles.md +5 -4
  43. package/dist/tools/prompts/control/zh/scenarios.md +9 -4
  44. package/dist/tools/prompts/control/zh/tools.md +53 -9
  45. package/dist/tools/team_mgmt-manual.js +10 -8
  46. package/dist/tools/team_mgmt.js +3 -0
  47. package/package.json +5 -4
  48. package/webapp/dist/assets/{main-YWP5PWOM.js → main-YWYVZGBW.js} +119 -60
  49. package/webapp/dist/assets/{main-YWP5PWOM.js.map → main-YWYVZGBW.js.map} +3 -3
  50. package/webapp/dist/index.html +1 -1
@@ -53774,16 +53774,21 @@ function formatContextUsageTitle(language, args) {
53774
53774
  switch (language) {
53775
53775
  case "zh": {
53776
53776
  switch (args.kind) {
53777
- case "unknown":
53778
- return "\u4E0A\u4E0B\u6587\u60C5\u51B5\uFF1A\u672A\u77E5";
53777
+ case "unknown": {
53778
+ const promptLine = typeof args.promptTokens === "number" ? [`\u8F93\u5165\uFF1A${formatTokenCountCompact(args.promptTokens)}`] : [];
53779
+ const reasoningLine = typeof args.reasoningTokens === "number" ? [`\u63A8\u7406\uFF1A${formatTokenCountCompact(args.reasoningTokens)}`] : [];
53780
+ return ["\u4E0A\u4E0B\u6587\u60C5\u51B5\uFF1A\u672A\u77E5", ...promptLine, ...reasoningLine].join("\n");
53781
+ }
53779
53782
  case "known": {
53780
53783
  const optimalSource = args.optimalConfigured ? "\u914D\u7F6E" : "\u9ED8\u8BA4";
53781
53784
  const criticalSource = args.criticalConfigured ? "\u914D\u7F6E" : "\u9ED8\u8BA4";
53782
53785
  const levelText = args.level === "healthy" ? "\u5145\u88D5" : args.level === "caution" ? "\u5403\u7D27" : "\u544A\u6025";
53783
53786
  const limitText = typeof args.modelContextWindowText === "string" && args.modelContextWindowText.trim() !== "" ? args.modelContextWindowText.trim() : formatTokenCountCompact(args.modelContextLimitTokens);
53787
+ const reasoningLine = typeof args.reasoningTokens === "number" ? [`\u63A8\u7406\uFF1A${formatTokenCountCompact(args.reasoningTokens)}`] : [];
53784
53788
  return [
53785
53789
  `\u4E0A\u4E0B\u6587\u60C5\u51B5 \u2022 ${levelText}`,
53786
53790
  `\u8F93\u5165\uFF1A${formatTokenCountCompact(args.promptTokens)}\uFF08${args.hardPercentText}\uFF1B\u4E0A\u9650 ${limitText}\uFF09`,
53791
+ ...reasoningLine,
53787
53792
  `\u8F6F\u7EBF\uFF1A${formatTokenCountCompact(args.optimalTokens)}\uFF08${args.optimalPercentText}\uFF1B${optimalSource}\uFF09`,
53788
53793
  `\u7EA2\u7EBF\uFF1A${formatTokenCountCompact(args.criticalTokens)}\uFF08${args.criticalPercentText}\uFF1B${criticalSource}\uFF09`
53789
53794
  ].join("\n");
@@ -53796,16 +53801,21 @@ function formatContextUsageTitle(language, args) {
53796
53801
  }
53797
53802
  case "en": {
53798
53803
  switch (args.kind) {
53799
- case "unknown":
53800
- return "Context status: unknown";
53804
+ case "unknown": {
53805
+ const promptLine = typeof args.promptTokens === "number" ? [`Prompt: ${formatTokenCountCompact(args.promptTokens)}`] : [];
53806
+ const reasoningLine = typeof args.reasoningTokens === "number" ? [`Reasoning: ${formatTokenCountCompact(args.reasoningTokens)}`] : [];
53807
+ return ["Context status: unknown", ...promptLine, ...reasoningLine].join("\n");
53808
+ }
53801
53809
  case "known": {
53802
53810
  const optimalSource = args.optimalConfigured ? "config" : "default";
53803
53811
  const criticalSource = args.criticalConfigured ? "config" : "default";
53804
53812
  const levelText = args.level === "healthy" ? "healthy" : args.level === "caution" ? "caution" : "critical";
53805
53813
  const limitText = typeof args.modelContextWindowText === "string" && args.modelContextWindowText.trim() !== "" ? args.modelContextWindowText.trim() : formatTokenCountCompact(args.modelContextLimitTokens);
53814
+ const reasoningLine = typeof args.reasoningTokens === "number" ? [`Reasoning: ${formatTokenCountCompact(args.reasoningTokens)}`] : [];
53806
53815
  return [
53807
53816
  `Context status \u2022 ${levelText}`,
53808
53817
  `Prompt: ${formatTokenCountCompact(args.promptTokens)} (${args.hardPercentText}; limit ${limitText})`,
53818
+ ...reasoningLine,
53809
53819
  `Soft: ${formatTokenCountCompact(args.optimalTokens)} (${args.optimalPercentText}; ${optimalSource})`,
53810
53820
  `Critical: ${formatTokenCountCompact(args.criticalTokens)} (${args.criticalPercentText}; ${criticalSource})`
53811
53821
  ].join("\n");
@@ -56963,6 +56973,35 @@ if (!customElements.get("archived-dialog-list")) {
56963
56973
 
56964
56974
  // src/components/create-dialog-flow.ts
56965
56975
  var import_html = __toESM(require_html());
56976
+ function resolveCreateDialogPresetAgentTarget(params) {
56977
+ const presetAgentId = typeof params.presetAgentId === "string" && params.presetAgentId.trim() !== "" ? params.presetAgentId.trim() : null;
56978
+ if (presetAgentId === null) return { kind: "none" };
56979
+ if (params.visibleAgentIds.some((id33) => id33 === presetAgentId)) {
56980
+ return { kind: "visible", agentId: presetAgentId };
56981
+ }
56982
+ if (params.shadowAgentIds.some((id33) => id33 === presetAgentId)) {
56983
+ return { kind: "shadow", agentId: presetAgentId };
56984
+ }
56985
+ return { kind: "none" };
56986
+ }
56987
+ function resolveCreateDialogAgentSelection(params) {
56988
+ const presetTarget = resolveCreateDialogPresetAgentTarget({
56989
+ visibleAgentIds: params.visibleMembers.map((m) => m.id),
56990
+ shadowAgentIds: params.shadowMembers.map((m) => m.id),
56991
+ presetAgentId: params.presetAgentId
56992
+ });
56993
+ const preferredResponder = presetTarget.kind === "none" ? params.defaultResponder : presetTarget.agentId;
56994
+ const preferredIsVisible = typeof preferredResponder === "string" && params.visibleMembers.some((m) => m.id === preferredResponder);
56995
+ const preferredIsShadow = typeof preferredResponder === "string" && params.shadowMembers.some((m) => m.id === preferredResponder);
56996
+ const initialPickShadow = params.shadowMembers.length > 0 && (preferredIsShadow || !preferredIsVisible && params.visibleMembers.length === 0);
56997
+ const firstVisibleId = params.visibleMembers.length > 0 ? params.visibleMembers[0].id : null;
56998
+ const firstShadowId = params.shadowMembers.length > 0 ? params.shadowMembers[0].id : null;
56999
+ return {
57000
+ initialPickShadow,
57001
+ selectedVisibleAgentId: preferredIsVisible ? preferredResponder : initialPickShadow ? null : firstVisibleId,
57002
+ selectedShadowAgentId: preferredIsShadow ? preferredResponder : firstShadowId
57003
+ };
57004
+ }
56966
57005
  function formatRoutingCardEntries(card) {
56967
57006
  if (typeof card === "string") return [card];
56968
57007
  if (Array.isArray(card)) return card;
@@ -56971,6 +57010,7 @@ function formatRoutingCardEntries(card) {
56971
57010
  }
56972
57011
  return [];
56973
57012
  }
57013
+ var SHADOW_TEAMMATE_SELECT_VALUE = "__shadow__";
56974
57014
  var PRIMING_SELECTION_STORAGE_KEY = "dominds-create-dialog-priming-selection-v1";
56975
57015
  var TASKDOC_SUGGESTION_DEBOUNCE_MS = 120;
56976
57016
  var CreateDialogFlowController = class {
@@ -57075,11 +57115,27 @@ var CreateDialogFlowController = class {
57075
57115
  if (typeof intent.presetAgentId === "string" && intent.presetAgentId.trim() !== "") {
57076
57116
  const teammateSelect = this.modal.querySelector("#teammate-select");
57077
57117
  if (teammateSelect instanceof HTMLSelectElement) {
57078
- const nextAgentId = intent.presetAgentId.trim();
57079
- if (teammateSelect.value !== nextAgentId) {
57080
- teammateSelect.value = nextAgentId;
57118
+ const shadowSelect = this.modal.querySelector("#shadow-teammate-select");
57119
+ const target = resolveCreateDialogPresetAgentTarget({
57120
+ visibleAgentIds: Array.from(teammateSelect.options).map((option) => option.value).filter((value) => value !== SHADOW_TEAMMATE_SELECT_VALUE),
57121
+ shadowAgentIds: shadowSelect instanceof HTMLSelectElement ? Array.from(shadowSelect.options).map((option) => option.value) : [],
57122
+ presetAgentId: intent.presetAgentId
57123
+ });
57124
+ if (target.kind === "visible" && teammateSelect.value !== target.agentId) {
57125
+ teammateSelect.value = target.agentId;
57081
57126
  teammateSelect.dispatchEvent(new Event("change", { bubbles: true }));
57082
57127
  }
57128
+ if (target.kind === "shadow" && shadowSelect instanceof HTMLSelectElement) {
57129
+ const shadowChanged = shadowSelect.value !== target.agentId;
57130
+ const teammateChanged = teammateSelect.value !== SHADOW_TEAMMATE_SELECT_VALUE;
57131
+ shadowSelect.value = target.agentId;
57132
+ teammateSelect.value = SHADOW_TEAMMATE_SELECT_VALUE;
57133
+ if (teammateChanged) {
57134
+ teammateSelect.dispatchEvent(new Event("change", { bubbles: true }));
57135
+ } else if (shadowChanged) {
57136
+ shadowSelect.dispatchEvent(new Event("change", { bubbles: true }));
57137
+ }
57138
+ }
57083
57139
  }
57084
57140
  }
57085
57141
  }
@@ -57093,10 +57149,12 @@ var CreateDialogFlowController = class {
57093
57149
  renderModal(host, intent, visibleMembers, shadowMembers) {
57094
57150
  const t = getUiStrings(this.deps.getLanguage());
57095
57151
  const defaultResponder = this.deps.getDefaultResponder();
57096
- const defaultIsVisible = typeof defaultResponder === "string" && visibleMembers.some((m) => m.id === defaultResponder);
57097
- const defaultIsShadow = typeof defaultResponder === "string" && shadowMembers.some((m) => m.id === defaultResponder);
57098
- const initialPickShadow = shadowMembers.length > 0 && (defaultIsShadow || !defaultIsVisible && visibleMembers.length === 0);
57099
- const firstShadowId = shadowMembers.length > 0 ? shadowMembers[0].id : "";
57152
+ const selection = resolveCreateDialogAgentSelection({
57153
+ visibleMembers,
57154
+ shadowMembers,
57155
+ defaultResponder,
57156
+ presetAgentId: intent.presetAgentId
57157
+ });
57100
57158
  const taskPreset = typeof intent.presetTaskDocPath === "string" ? intent.presetTaskDocPath : "";
57101
57159
  const modal = document.createElement("div");
57102
57160
  modal.className = "dominds-modal create-dialog-modal";
@@ -57128,24 +57186,24 @@ var CreateDialogFlowController = class {
57128
57186
  ${visibleMembers.map((member) => {
57129
57187
  const isDefault = member.id === defaultResponder;
57130
57188
  const emoji = this.getAgentEmoji(member.icon);
57131
- const selected = typeof intent.presetAgentId === "string" && intent.presetAgentId === member.id || !intent.presetAgentId && isDefault;
57189
+ const selected = member.id === selection.selectedVisibleAgentId;
57132
57190
  return `<option value="${(0, import_html.escapeHtml)(member.id)}" ${selected ? "selected" : ""}>${(0, import_html.escapeHtml)(
57133
57191
  `${emoji} ${member.name} (@${member.id})${isDefault ? t.defaultMarker : ""}`
57134
57192
  )}</option>`;
57135
57193
  }).join("")}
57136
- ${shadowMembers.length > 0 ? `<option value="__shadow__" ${initialPickShadow ? "selected" : ""}>${(0, import_html.escapeHtml)(
57194
+ ${shadowMembers.length > 0 ? `<option value="${SHADOW_TEAMMATE_SELECT_VALUE}" ${selection.initialPickShadow ? "selected" : ""}>${(0, import_html.escapeHtml)(
57137
57195
  t.shadowMembersOption
57138
57196
  )}</option>` : ""}
57139
57197
  </select>
57140
57198
  </div>
57141
57199
  </div>
57142
- <div class="form-group form-group-vertical shadow-members-group${initialPickShadow ? "" : " hidden"}" id="shadow-members-group">
57200
+ <div class="form-group form-group-vertical shadow-members-group${selection.initialPickShadow ? "" : " hidden"}" id="shadow-members-group">
57143
57201
  <label for="shadow-teammate-select">${(0, import_html.escapeHtml)(t.shadowMembersLabel)}</label>
57144
57202
  <select id="shadow-teammate-select" class="teammate-dropdown">
57145
57203
  ${shadowMembers.map((member) => {
57146
57204
  const isDefault = member.id === defaultResponder;
57147
57205
  const emoji = this.getAgentEmoji(member.icon);
57148
- const selected = isDefault || !defaultIsShadow && firstShadowId === member.id || intent.presetAgentId === member.id;
57206
+ const selected = member.id === selection.selectedShadowAgentId;
57149
57207
  return `<option value="${(0, import_html.escapeHtml)(member.id)}" ${selected ? "selected" : ""}>${(0, import_html.escapeHtml)(
57150
57208
  `${emoji} ${member.name} (@${member.id})${isDefault ? t.defaultMarker : ""}`
57151
57209
  )}</option>`;
@@ -57610,7 +57668,7 @@ var CreateDialogFlowController = class {
57610
57668
  modal.addEventListener("keydown", modalKeydownListener, true);
57611
57669
  this.activeKeydownListener = modalKeydownListener;
57612
57670
  const resolveSelectedAgentId = () => {
57613
- if (select.value === "__shadow__") {
57671
+ if (select.value === SHADOW_TEAMMATE_SELECT_VALUE) {
57614
57672
  if (shadowSelect instanceof HTMLSelectElement) return shadowSelect.value || "";
57615
57673
  return "";
57616
57674
  }
@@ -57626,7 +57684,7 @@ var CreateDialogFlowController = class {
57626
57684
  };
57627
57685
  const showTeammateInfo = (selectedAgentId) => {
57628
57686
  let resolved = selectedAgentId;
57629
- if (selectedAgentId === "__shadow__") {
57687
+ if (selectedAgentId === SHADOW_TEAMMATE_SELECT_VALUE) {
57630
57688
  resolved = shadowSelect instanceof HTMLSelectElement ? shadowSelect.value : "";
57631
57689
  }
57632
57690
  if (!resolved) {
@@ -57656,7 +57714,7 @@ var CreateDialogFlowController = class {
57656
57714
  teammateInfo.style.display = "block";
57657
57715
  };
57658
57716
  select.addEventListener("change", () => {
57659
- const isShadow = select.value === "__shadow__";
57717
+ const isShadow = select.value === SHADOW_TEAMMATE_SELECT_VALUE;
57660
57718
  if (shadowGroup instanceof HTMLElement) {
57661
57719
  shadowGroup.classList.toggle("hidden", !isShadow);
57662
57720
  }
@@ -57665,7 +57723,7 @@ var CreateDialogFlowController = class {
57665
57723
  });
57666
57724
  if (shadowSelect instanceof HTMLSelectElement) {
57667
57725
  shadowSelect.addEventListener("change", () => {
57668
- showTeammateInfo("__shadow__");
57726
+ showTeammateInfo(SHADOW_TEAMMATE_SELECT_VALUE);
57669
57727
  void loadPrimingScriptsForSelectedAgent();
57670
57728
  });
57671
57729
  }
@@ -98873,6 +98931,37 @@ ${formatUiLanguageOptionLabel({
98873
98931
  </svg>
98874
98932
  `;
98875
98933
  }
98934
+ formatContextUsageTitleForSnapshot(snapshot) {
98935
+ if (!snapshot) {
98936
+ return formatContextUsageTitle(this.uiLanguage, { kind: "unknown" });
98937
+ }
98938
+ if (snapshot.kind !== "available") {
98939
+ return formatContextUsageTitle(this.uiLanguage, {
98940
+ kind: "unknown",
98941
+ ...typeof snapshot.promptTokens === "number" ? { promptTokens: snapshot.promptTokens } : {},
98942
+ ...typeof snapshot.reasoningTokens === "number" ? { reasoningTokens: snapshot.reasoningTokens } : {}
98943
+ });
98944
+ }
98945
+ return formatContextUsageTitle(this.uiLanguage, {
98946
+ kind: "known",
98947
+ promptTokens: snapshot.promptTokens,
98948
+ ...typeof snapshot.reasoningTokens === "number" ? { reasoningTokens: snapshot.reasoningTokens } : {},
98949
+ hardPercentText: this.formatPercent(snapshot.hardUtil),
98950
+ modelContextLimitTokens: snapshot.modelContextLimitTokens,
98951
+ modelContextWindowText: snapshot.modelContextWindowText,
98952
+ level: snapshot.level,
98953
+ optimalTokens: snapshot.effectiveOptimalMaxTokens,
98954
+ optimalPercentText: this.formatPercent(
98955
+ snapshot.effectiveOptimalMaxTokens / snapshot.modelContextLimitTokens
98956
+ ),
98957
+ optimalConfigured: snapshot.optimalMaxTokensConfigured !== void 0,
98958
+ criticalTokens: snapshot.effectiveCriticalMaxTokens,
98959
+ criticalPercentText: this.formatPercent(
98960
+ snapshot.effectiveCriticalMaxTokens / snapshot.modelContextLimitTokens
98961
+ ),
98962
+ criticalConfigured: snapshot.criticalMaxTokensConfigured !== void 0
98963
+ });
98964
+ }
98876
98965
  updateContextHealthUi() {
98877
98966
  const el = this.shadowRoot?.querySelector("#navibar-context-health");
98878
98967
  if (!(el instanceof HTMLElement)) return;
@@ -98880,7 +98969,7 @@ ${formatUiLanguageOptionLabel({
98880
98969
  const snapshot = this.toolbarContextHealth;
98881
98970
  if (!snapshot) {
98882
98971
  el.setAttribute("data-level", "unknown");
98883
- const label2 = formatContextUsageTitle(this.uiLanguage, { kind: "unknown" });
98972
+ const label2 = this.formatContextUsageTitleForSnapshot(null);
98884
98973
  el.setAttribute("aria-label", label2);
98885
98974
  el.innerHTML = this.renderContextUsageIcon(null);
98886
98975
  if (tooltip instanceof HTMLElement) {
@@ -98890,7 +98979,7 @@ ${formatUiLanguageOptionLabel({
98890
98979
  }
98891
98980
  if (snapshot.kind !== "available") {
98892
98981
  el.setAttribute("data-level", "unknown");
98893
- const label2 = formatContextUsageTitle(this.uiLanguage, { kind: "unknown" });
98982
+ const label2 = this.formatContextUsageTitleForSnapshot(snapshot);
98894
98983
  el.setAttribute("aria-label", label2);
98895
98984
  el.innerHTML = this.renderContextUsageIcon(snapshot);
98896
98985
  if (tooltip instanceof HTMLElement) {
@@ -98901,24 +98990,7 @@ ${formatUiLanguageOptionLabel({
98901
98990
  const level = snapshot.level;
98902
98991
  el.setAttribute("data-level", level);
98903
98992
  el.innerHTML = this.renderContextUsageIcon(snapshot);
98904
- const label = formatContextUsageTitle(this.uiLanguage, {
98905
- kind: "known",
98906
- promptTokens: snapshot.promptTokens,
98907
- hardPercentText: this.formatPercent(snapshot.hardUtil),
98908
- modelContextLimitTokens: snapshot.modelContextLimitTokens,
98909
- modelContextWindowText: snapshot.modelContextWindowText,
98910
- level,
98911
- optimalTokens: snapshot.effectiveOptimalMaxTokens,
98912
- optimalPercentText: this.formatPercent(
98913
- snapshot.effectiveOptimalMaxTokens / snapshot.modelContextLimitTokens
98914
- ),
98915
- optimalConfigured: snapshot.optimalMaxTokensConfigured !== void 0,
98916
- criticalTokens: snapshot.effectiveCriticalMaxTokens,
98917
- criticalPercentText: this.formatPercent(
98918
- snapshot.effectiveCriticalMaxTokens / snapshot.modelContextLimitTokens
98919
- ),
98920
- criticalConfigured: snapshot.criticalMaxTokensConfigured !== void 0
98921
- });
98993
+ const label = this.formatContextUsageTitleForSnapshot(snapshot);
98922
98994
  el.setAttribute("aria-label", label);
98923
98995
  if (tooltip instanceof HTMLElement) {
98924
98996
  tooltip.textContent = label;
@@ -102818,24 +102890,7 @@ ${formatUiLanguageOptionLabel({
102818
102890
  }
102819
102891
  getHTML() {
102820
102892
  const t = getUiStrings(this.uiLanguage);
102821
- const contextUsageTitle = this.toolbarContextHealth && this.toolbarContextHealth.kind === "available" ? formatContextUsageTitle(this.uiLanguage, {
102822
- kind: "known",
102823
- promptTokens: this.toolbarContextHealth.promptTokens,
102824
- hardPercentText: this.formatPercent(this.toolbarContextHealth.hardUtil),
102825
- modelContextLimitTokens: this.toolbarContextHealth.modelContextLimitTokens,
102826
- modelContextWindowText: this.toolbarContextHealth.modelContextWindowText,
102827
- level: this.toolbarContextHealth.level,
102828
- optimalTokens: this.toolbarContextHealth.effectiveOptimalMaxTokens,
102829
- optimalPercentText: this.formatPercent(
102830
- this.toolbarContextHealth.effectiveOptimalMaxTokens / this.toolbarContextHealth.modelContextLimitTokens
102831
- ),
102832
- optimalConfigured: this.toolbarContextHealth.optimalMaxTokensConfigured !== void 0,
102833
- criticalTokens: this.toolbarContextHealth.effectiveCriticalMaxTokens,
102834
- criticalPercentText: this.formatPercent(
102835
- this.toolbarContextHealth.effectiveCriticalMaxTokens / this.toolbarContextHealth.modelContextLimitTokens
102836
- ),
102837
- criticalConfigured: this.toolbarContextHealth.criticalMaxTokensConfigured !== void 0
102838
- }) : formatContextUsageTitle(this.uiLanguage, { kind: "unknown" });
102893
+ const contextUsageTitle = this.formatContextUsageTitleForSnapshot(this.toolbarContextHealth);
102839
102894
  const contextUsageTooltipText = (0, import_html2.escapeHtml)(contextUsageTitle);
102840
102895
  const uiLanguageMatch = getUiLanguageMatchState({
102841
102896
  uiLanguage: this.uiLanguage,
@@ -109650,6 +109705,8 @@ var DomindsSetup = class extends HTMLElement {
109650
109705
  return "Anthropic";
109651
109706
  case "anthropic-compatible":
109652
109707
  return "Anthropic-compatible";
109708
+ case "google":
109709
+ return "Google";
109653
109710
  default: {
109654
109711
  const _exhaustive = namespace;
109655
109712
  return String(_exhaustive);
@@ -109668,7 +109725,8 @@ var DomindsSetup = class extends HTMLElement {
109668
109725
  openai: [],
109669
109726
  "openai-compatible": [],
109670
109727
  anthropic: [],
109671
- "anthropic-compatible": []
109728
+ "anthropic-compatible": [],
109729
+ google: []
109672
109730
  };
109673
109731
  for (const p of prominent) {
109674
109732
  groups[p.namespace].push(p);
@@ -109678,7 +109736,8 @@ var DomindsSetup = class extends HTMLElement {
109678
109736
  "openai",
109679
109737
  "openai-compatible",
109680
109738
  "anthropic",
109681
- "anthropic-compatible"
109739
+ "anthropic-compatible",
109740
+ "google"
109682
109741
  ];
109683
109742
  const sections = groupOrder.map((ns) => {
109684
109743
  const items = groups[ns];
@@ -110199,4 +110258,4 @@ mermaid/dist/mermaid.core.mjs:
110199
110258
  * Wait for document loaded before starting the execution
110200
110259
  *)
110201
110260
  */
110202
- //# sourceMappingURL=/assets/main-YWP5PWOM.js.map
110261
+ //# sourceMappingURL=/assets/main-YWYVZGBW.js.map