@code-yeongyu/senpi 2026.9.19 → 2026.9.20

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 (171) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/dist/bundle/chunks/{app-server-command-QK7Q6XK5.js → app-server-command-B35FQUTE.js} +1 -1
  3. package/dist/bundle/chunks/{bun-extension-importer-JQZRPNJH.js → bun-extension-importer-HHH4TV4B.js} +3 -3
  4. package/dist/bundle/chunks/{chunk-YRN3PCTM.js → chunk-DQZB4GVV.js} +4 -4
  5. package/dist/bundle/chunks/{chunk-KKDSBABY.js → chunk-E5R67F7G.js} +38 -38
  6. package/dist/bundle/chunks/{chunk-NARL7XFO.js → chunk-TWGC3TBR.js} +2 -2
  7. package/dist/bundle/chunks/{chunk-RLRLQRI2.js → chunk-V2ZB62DG.js} +1 -1
  8. package/dist/bundle/chunks/{chunk-3FRTRCR6.js → chunk-YXQG2SUX.js} +2 -2
  9. package/dist/bundle/chunks/{chunk-PLZK7ABD.js → chunk-Z4LHCTJ6.js} +1 -1
  10. package/dist/bundle/chunks/{chunk-3Q4WGKFA.js → chunk-ZMFHNH6U.js} +1 -1
  11. package/dist/bundle/chunks/{cli-main-7SG3K4K3.js → cli-main-USVT7JMN.js} +1 -1
  12. package/dist/bundle/chunks/{interactive-host-runtime-AITXUDCT.js → interactive-host-runtime-ELBAZ4LN.js} +1 -1
  13. package/dist/bundle/chunks/{interactive-mode-7MN6GGCG.js → interactive-mode-R6225BKI.js} +1 -1
  14. package/dist/bundle/chunks/{list-tips-KTDNGQUK.js → list-tips-Z7T2ACVU.js} +1 -1
  15. package/dist/bundle/chunks/{multi-session-host-WKX34SOP.js → multi-session-host-QNEBJW2P.js} +3 -3
  16. package/dist/bundle/chunks/{package-manager-cli-CB2X57TD.js → package-manager-cli-4MVJ3JSE.js} +1 -1
  17. package/dist/bundle/chunks/{rpc-mode-CI6V2SBW.js → rpc-mode-CXVDRIBU.js} +1 -1
  18. package/dist/bundle/chunks/{session-picker-DXCITGLS.js → session-picker-6N666KQZ.js} +1 -1
  19. package/dist/bundle/chunks/session-worker.js +67 -67
  20. package/dist/bundle/cli.js +1 -1
  21. package/dist/bundle/index.js +1 -1
  22. package/dist/bundle/rpc-entry.js +1 -1
  23. package/dist/core/agent-session-services.d.ts.map +1 -1
  24. package/dist/core/agent-session-services.js +14 -1
  25. package/dist/core/agent-session-services.js.map +1 -1
  26. package/dist/core/agent-session.d.ts +49 -0
  27. package/dist/core/agent-session.d.ts.map +1 -1
  28. package/dist/core/agent-session.js +290 -44
  29. package/dist/core/agent-session.js.map +1 -1
  30. package/dist/core/extensions/builtin/ask-user/extension.d.ts.map +1 -1
  31. package/dist/core/extensions/builtin/ask-user/extension.js +16 -5
  32. package/dist/core/extensions/builtin/ask-user/extension.js.map +1 -1
  33. package/dist/core/extensions/builtin/ask-user/format.d.ts +5 -0
  34. package/dist/core/extensions/builtin/ask-user/format.d.ts.map +1 -1
  35. package/dist/core/extensions/builtin/ask-user/format.js +4 -0
  36. package/dist/core/extensions/builtin/ask-user/format.js.map +1 -1
  37. package/dist/core/extensions/builtin/ask-user/notify.d.ts +2 -0
  38. package/dist/core/extensions/builtin/ask-user/notify.d.ts.map +1 -1
  39. package/dist/core/extensions/builtin/ask-user/notify.js +2 -0
  40. package/dist/core/extensions/builtin/ask-user/notify.js.map +1 -1
  41. package/dist/core/extensions/builtin/ask-user/registry.d.ts +15 -2
  42. package/dist/core/extensions/builtin/ask-user/registry.d.ts.map +1 -1
  43. package/dist/core/extensions/builtin/ask-user/registry.js +13 -0
  44. package/dist/core/extensions/builtin/ask-user/registry.js.map +1 -1
  45. package/dist/core/extensions/builtin/ask-user/render.d.ts +6 -0
  46. package/dist/core/extensions/builtin/ask-user/render.d.ts.map +1 -1
  47. package/dist/core/extensions/builtin/ask-user/render.js +9 -0
  48. package/dist/core/extensions/builtin/ask-user/render.js.map +1 -1
  49. package/dist/core/extensions/builtin/ask-user/resume.d.ts.map +1 -1
  50. package/dist/core/extensions/builtin/ask-user/resume.js +59 -24
  51. package/dist/core/extensions/builtin/ask-user/resume.js.map +1 -1
  52. package/dist/core/extensions/builtin/ask-user/tool.d.ts +1 -1
  53. package/dist/core/extensions/builtin/ask-user/tool.d.ts.map +1 -1
  54. package/dist/core/extensions/builtin/ask-user/tool.js +98 -17
  55. package/dist/core/extensions/builtin/ask-user/tool.js.map +1 -1
  56. package/dist/core/extensions/builtin/compaction/model-usability-budget.d.ts +18 -0
  57. package/dist/core/extensions/builtin/compaction/model-usability-budget.d.ts.map +1 -1
  58. package/dist/core/extensions/builtin/compaction/model-usability-budget.js +16 -8
  59. package/dist/core/extensions/builtin/compaction/model-usability-budget.js.map +1 -1
  60. package/dist/core/extensions/builtin/compaction/switch-admission.d.ts +23 -0
  61. package/dist/core/extensions/builtin/compaction/switch-admission.d.ts.map +1 -0
  62. package/dist/core/extensions/builtin/compaction/switch-admission.js +19 -0
  63. package/dist/core/extensions/builtin/compaction/switch-admission.js.map +1 -0
  64. package/dist/core/extensions/builtin/goal/index.d.ts.map +1 -1
  65. package/dist/core/extensions/builtin/goal/index.js +10 -0
  66. package/dist/core/extensions/builtin/goal/index.js.map +1 -1
  67. package/dist/core/extensions/bun-extension-commonjs.d.ts +1 -1
  68. package/dist/core/extensions/bun-extension-commonjs.d.ts.map +1 -1
  69. package/dist/core/extensions/bun-extension-commonjs.js +3 -3
  70. package/dist/core/extensions/bun-extension-commonjs.js.map +1 -1
  71. package/dist/core/extensions/bun-extension-importer.d.ts.map +1 -1
  72. package/dist/core/extensions/bun-extension-importer.js +4 -1
  73. package/dist/core/extensions/bun-extension-importer.js.map +1 -1
  74. package/dist/core/extensions/bun-extension-registry.d.ts.map +1 -1
  75. package/dist/core/extensions/bun-extension-registry.js +5 -9
  76. package/dist/core/extensions/bun-extension-registry.js.map +1 -1
  77. package/dist/core/resolved-paths-memo.d.ts +31 -0
  78. package/dist/core/resolved-paths-memo.d.ts.map +1 -0
  79. package/dist/core/resolved-paths-memo.js +57 -0
  80. package/dist/core/resolved-paths-memo.js.map +1 -0
  81. package/dist/core/resource-loader.d.ts +4 -1
  82. package/dist/core/resource-loader.d.ts.map +1 -1
  83. package/dist/core/resource-loader.js +25 -12
  84. package/dist/core/resource-loader.js.map +1 -1
  85. package/dist/core/retry-fallback/settings.d.ts +10 -2
  86. package/dist/core/retry-fallback/settings.d.ts.map +1 -1
  87. package/dist/core/retry-fallback/settings.js +28 -6
  88. package/dist/core/retry-fallback/settings.js.map +1 -1
  89. package/dist/core/skill-discovery.d.ts.map +1 -1
  90. package/dist/core/skill-discovery.js +11 -1
  91. package/dist/core/skill-discovery.js.map +1 -1
  92. package/dist/main.d.ts +10 -0
  93. package/dist/main.d.ts.map +1 -1
  94. package/dist/main.js +19 -2
  95. package/dist/main.js.map +1 -1
  96. package/dist/modes/interactive/components/ask-user-answer-chip.d.ts +2 -5
  97. package/dist/modes/interactive/components/ask-user-answer-chip.d.ts.map +1 -1
  98. package/dist/modes/interactive/components/ask-user-answer-chip.js +1 -4
  99. package/dist/modes/interactive/components/ask-user-answer-chip.js.map +1 -1
  100. package/dist/modes/interactive/components/assistant-message.d.ts +2 -0
  101. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  102. package/dist/modes/interactive/components/assistant-message.js +8 -0
  103. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  104. package/dist/modes/interactive/components/assistant-render-descriptors.d.ts +1 -0
  105. package/dist/modes/interactive/components/assistant-render-descriptors.d.ts.map +1 -1
  106. package/dist/modes/interactive/components/assistant-render-descriptors.js +4 -0
  107. package/dist/modes/interactive/components/assistant-render-descriptors.js.map +1 -1
  108. package/dist/modes/interactive/components/status-indicator.d.ts +3 -1
  109. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  110. package/dist/modes/interactive/components/status-indicator.js +15 -2
  111. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  112. package/dist/modes/interactive/interactive-mode.d.ts +2 -0
  113. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  114. package/dist/modes/interactive/interactive-mode.js +81 -6
  115. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  116. package/dist/modes/interactive/provider-error-presentation.d.ts +18 -0
  117. package/dist/modes/interactive/provider-error-presentation.d.ts.map +1 -0
  118. package/dist/modes/interactive/provider-error-presentation.js +100 -0
  119. package/dist/modes/interactive/provider-error-presentation.js.map +1 -0
  120. package/dist/modes/rpc/rpc-types.d.ts +18 -0
  121. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  122. package/dist/modes/rpc/rpc-types.js.map +1 -1
  123. package/dist/modes/rpc/session-command-router.d.ts.map +1 -1
  124. package/dist/modes/rpc/session-command-router.js +14 -0
  125. package/dist/modes/rpc/session-command-router.js.map +1 -1
  126. package/dist/modes/rpc/session-event-writer.d.ts +9 -1
  127. package/dist/modes/rpc/session-event-writer.d.ts.map +1 -1
  128. package/dist/modes/rpc/session-event-writer.js +21 -0
  129. package/dist/modes/rpc/session-event-writer.js.map +1 -1
  130. package/dist/modes/rpc/session-registry.d.ts.map +1 -1
  131. package/dist/modes/rpc/session-registry.js +9 -2
  132. package/dist/modes/rpc/session-registry.js.map +1 -1
  133. package/dist/modes/rpc/session-worker-requests.d.ts +10 -1
  134. package/dist/modes/rpc/session-worker-requests.d.ts.map +1 -1
  135. package/dist/modes/rpc/session-worker-requests.js +8 -2
  136. package/dist/modes/rpc/session-worker-requests.js.map +1 -1
  137. package/dist/modes/rpc/session-worker-requests.test.d.ts +2 -0
  138. package/dist/modes/rpc/session-worker-requests.test.d.ts.map +1 -0
  139. package/dist/modes/rpc/session-worker-requests.test.js +44 -0
  140. package/dist/modes/rpc/session-worker-requests.test.js.map +1 -0
  141. package/docs/rpc.md +7 -0
  142. package/docs/settings.md +1 -1
  143. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +24 -0
  144. package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
  145. package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
  146. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  147. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
  148. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
  149. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opengateway.json +1 -1
  150. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  151. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  152. package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai-coding-cn.json +1 -1
  153. package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai.json +1 -1
  154. package/node_modules/@earendil-works/pi-ai/package.json +2 -2
  155. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  156. package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
  157. package/node_modules/@earendil-works/pi-tui/dist/native-module-path.d.ts.map +1 -1
  158. package/node_modules/@earendil-works/pi-tui/dist/native-module-path.js +26 -3
  159. package/node_modules/@earendil-works/pi-tui/dist/native-module-path.js.map +1 -1
  160. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts.map +1 -1
  161. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js +13 -6
  162. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js.map +1 -1
  163. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.d.ts.map +1 -1
  164. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.js +11 -3
  165. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.js.map +1 -1
  166. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts +15 -2
  167. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  168. package/node_modules/@earendil-works/pi-tui/dist/tui.js +45 -2
  169. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  170. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  171. package/package.json +8 -8
@@ -15,6 +15,7 @@ export class AssistantMessageComponent extends Container {
15
15
  this.renderDescriptors = [];
16
16
  this.hasToolCalls = false;
17
17
  this.expanded = false;
18
+ this.providerErrorOwned = false;
18
19
  this.isStreaming = false;
19
20
  this.thinkingVisibilityOverrides = new Map();
20
21
  this.hideThinkingBlock = hideThinkingBlock;
@@ -53,6 +54,12 @@ export class AssistantMessageComponent extends Container {
53
54
  this.expanded = expanded;
54
55
  this.refreshContent();
55
56
  }
57
+ setProviderErrorOwned(owned) {
58
+ if (this.providerErrorOwned === owned)
59
+ return;
60
+ this.providerErrorOwned = owned;
61
+ this.refreshContent();
62
+ }
56
63
  setOutputPad(padding) {
57
64
  this.outputPad = padding;
58
65
  this.renderDescriptors = [];
@@ -89,6 +96,7 @@ export class AssistantMessageComponent extends Container {
89
96
  this.hasToolCalls = message.content.some((content) => content.type === "toolCall");
90
97
  const descriptors = createAssistantRenderDescriptors(message, {
91
98
  expanded: this.expanded,
99
+ providerErrorOwned: this.providerErrorOwned,
92
100
  hiddenThinkingLabel: this.hiddenThinkingLabel,
93
101
  hideThinkingBlock: this.hideThinkingBlock,
94
102
  thinkingVisibilityOverrides: this.thinkingVisibilityOverrides,
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-message.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/assistant-message.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessage } from \"@earendil-works/pi-ai\";\nimport { type Component, Container, Markdown, type MarkdownTheme, Spacer, Text } from \"@earendil-works/pi-tui\";\nimport type { MarkdownTransformer } from \"../../../core/extensions/types.ts\";\nimport { getMarkdownTheme, theme } from \"../theme/theme.ts\";\nimport { type AssistantRenderDescriptor, createAssistantRenderDescriptors } from \"./assistant-render-descriptors.ts\";\nimport { createMarkdownTransform } from \"./markdown-transform.ts\";\nimport { createBoundedRenderSignature } from \"./render-signature.ts\";\n\nconst OSC133_ZONE_START = \"\\x1b]133;A\\x07\";\nconst OSC133_ZONE_END = \"\\x1b]133;B\\x07\";\nconst OSC133_ZONE_FINAL = \"\\x1b]133;C\\x07\";\n\nfunction assertNever(value: never): never {\n\tthrow new TypeError(`Unexpected assistant render variant: ${String(value)}`);\n}\n\nexport class AssistantMessageComponent extends Container {\n\tprivate renderCache?: { readonly lines: string[]; readonly signature: string; readonly width: number };\n\tprivate contentContainer: Container;\n\tprivate hideThinkingBlock: boolean;\n\tprivate markdownTheme: MarkdownTheme;\n\tprivate hiddenThinkingLabel: string;\n\tprivate outputPad: number;\n\tprivate markdownTransformers: readonly MarkdownTransformer[];\n\tprivate lastMessage?: AssistantMessage;\n\tprivate lastMessageSignature?: string;\n\tprivate renderDescriptors: readonly AssistantRenderDescriptor[] = [];\n\tprivate hasToolCalls = false;\n\tprivate expanded = false;\n\tprivate isStreaming = false;\n\tprivate thinkingVisibilityOverrides = new Map<number, boolean>();\n\n\tconstructor(\n\t\tmessage?: AssistantMessage,\n\t\thideThinkingBlock = false,\n\t\tmarkdownTheme: MarkdownTheme = getMarkdownTheme(),\n\t\thiddenThinkingLabel = \"Thinking...\",\n\t\toutputPad = 1,\n\t\tmarkdownTransformers: readonly MarkdownTransformer[] = [],\n\t) {\n\t\tsuper();\n\n\t\tthis.hideThinkingBlock = hideThinkingBlock;\n\t\tthis.markdownTheme = markdownTheme;\n\t\tthis.hiddenThinkingLabel = hiddenThinkingLabel;\n\t\tthis.outputPad = outputPad;\n\t\tthis.markdownTransformers = markdownTransformers;\n\n\t\t// Container for text/thinking content\n\t\tthis.contentContainer = new Container();\n\t\tthis.addChild(this.contentContainer);\n\n\t\tif (message) this.updateContent(message);\n\t}\n\n\toverride invalidate(): void {\n\t\tthis.renderCache = undefined;\n\t\tsuper.invalidate();\n\t\tthis.renderDescriptors = [];\n\t\tthis.refreshContent();\n\t}\n\n\tsetHideThinkingBlock(hide: boolean): void {\n\t\tif (this.hideThinkingBlock === hide) return;\n\t\tthis.hideThinkingBlock = hide;\n\t\tthis.thinkingVisibilityOverrides.clear();\n\t\tthis.refreshContent();\n\t}\n\n\tsetHiddenThinkingLabel(label: string): void {\n\t\tif (this.hiddenThinkingLabel === label) return;\n\t\tthis.hiddenThinkingLabel = label;\n\t\tthis.refreshContent();\n\t}\n\n\tsetExpanded(expanded: boolean): void {\n\t\tif (this.expanded === expanded) return;\n\t\tthis.expanded = expanded;\n\t\tthis.refreshContent();\n\t}\n\n\tsetOutputPad(padding: number): void {\n\t\tthis.outputPad = padding;\n\t\tthis.renderDescriptors = [];\n\t\tthis.refreshContent();\n\t}\n\n\toverride render(width: number): string[] {\n\t\tconst signature = this.lastMessageSignature ?? \"\";\n\t\tif (this.renderCache?.width === width && this.renderCache.signature === signature) {\n\t\t\treturn [...this.renderCache.lines];\n\t\t}\n\n\t\tconst lines = super.render(width);\n\t\tif (this.hasToolCalls || lines.length === 0) {\n\t\t\tthis.cacheRender(width, signature, lines);\n\t\t\treturn lines;\n\t\t}\n\n\t\tlines[0] = OSC133_ZONE_START + lines[0];\n\t\tlines[lines.length - 1] = OSC133_ZONE_END + OSC133_ZONE_FINAL + lines[lines.length - 1];\n\t\tthis.cacheRender(width, signature, lines);\n\t\treturn lines;\n\t}\n\n\tupdateContent(message: AssistantMessage, isStreaming = this.isStreaming): void {\n\t\tconst previousMessage = this.lastMessage;\n\t\tconst streamingChanged = this.isStreaming !== isStreaming;\n\t\tthis.isStreaming = isStreaming;\n\t\tthis.lastMessage = message;\n\t\tconst messageSignature = this.createMessageSignature(message);\n\t\tif (!streamingChanged && previousMessage === message && this.lastMessageSignature === messageSignature) {\n\t\t\treturn;\n\t\t}\n\t\tthis.lastMessageSignature = messageSignature;\n\t\tthis.renderCache = undefined;\n\t\tif (streamingChanged) this.renderDescriptors = [];\n\t\tthis.hasToolCalls = message.content.some((content) => content.type === \"toolCall\");\n\t\tconst descriptors = createAssistantRenderDescriptors(message, {\n\t\t\texpanded: this.expanded,\n\t\t\thiddenThinkingLabel: this.hiddenThinkingLabel,\n\t\t\thideThinkingBlock: this.hideThinkingBlock,\n\t\t\tthinkingVisibilityOverrides: this.thinkingVisibilityOverrides,\n\t\t\thasToolCalls: this.hasToolCalls,\n\t\t});\n\t\tthis.reconcileRenderDescriptors(descriptors);\n\t}\n\n\tprivate reconcileRenderDescriptors(descriptors: readonly AssistantRenderDescriptor[]): void {\n\t\tlet divergentIndex = 0;\n\t\tconst sharedLength = Math.min(this.renderDescriptors.length, descriptors.length);\n\t\twhile (divergentIndex < sharedLength) {\n\t\t\tconst previous = this.renderDescriptors[divergentIndex];\n\t\t\tconst next = descriptors[divergentIndex];\n\t\t\tconst child = this.contentContainer.children[divergentIndex];\n\t\t\tif (!previous || !next || !child || previous.kind !== next.kind) break;\n\t\t\tif (previous.text !== next.text) {\n\t\t\t\tif ((next.kind === \"text-md\" || next.kind === \"thinking-md\") && child instanceof Markdown) {\n\t\t\t\t\tchild.setText(next.text);\n\t\t\t\t} else break;\n\t\t\t}\n\t\t\tdivergentIndex++;\n\t\t}\n\t\tfor (const child of this.contentContainer.children.splice(divergentIndex)) child.dispose?.();\n\t\tfor (const descriptor of descriptors.slice(divergentIndex))\n\t\t\tthis.contentContainer.addChild(this.createRenderChild(descriptor));\n\t\tthis.renderDescriptors = descriptors;\n\t}\n\n\tprivate createRenderChild(descriptor: AssistantRenderDescriptor): Component {\n\t\tswitch (descriptor.kind) {\n\t\t\tcase \"spacer\":\n\t\t\t\treturn new Spacer(1);\n\t\t\tcase \"text-md\":\n\t\t\t\treturn new Markdown(descriptor.text, this.outputPad, 0, this.markdownTheme, undefined, {\n\t\t\t\t\ttransform: createMarkdownTransform(\"assistant\", this.isStreaming, this.markdownTransformers),\n\t\t\t\t});\n\t\t\tcase \"thinking-md\":\n\t\t\t\treturn this.withThinkingToggle(\n\t\t\t\t\tnew Markdown(\n\t\t\t\t\t\tdescriptor.text,\n\t\t\t\t\t\tthis.outputPad,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tthis.markdownTheme,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcolor: (text: string) => theme.fg(\"thinkingText\", text),\n\t\t\t\t\t\t\titalic: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttransform: createMarkdownTransform(\n\t\t\t\t\t\t\t\t\"assistant-thinking\",\n\t\t\t\t\t\t\t\tthis.isStreaming,\n\t\t\t\t\t\t\t\tthis.markdownTransformers,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t\tdescriptor,\n\t\t\t\t);\n\t\t\tcase \"thinking-label\":\n\t\t\t\treturn this.withThinkingToggle(new Text(descriptor.text, this.outputPad, 0), descriptor);\n\t\t\tcase \"error-text\":\n\t\t\t\treturn new Text(descriptor.text, this.outputPad, 0);\n\t\t\tcase \"provider-native-summary\":\n\t\t\t\treturn new Text(descriptor.text, 1, 0);\n\t\t\tcase \"provider-native-body\":\n\t\t\t\treturn new Text(descriptor.text, 3, 0);\n\t\t\tdefault:\n\t\t\t\treturn assertNever(descriptor.kind);\n\t\t}\n\t}\n\n\t/**\n\t * Left-clicking a thinking run toggles that run between its label and its body (upstream\n\t * 71026970a). The mouse handler is attached to the Markdown/Text child itself so the\n\t * incremental reconciler still sees the same child types it updates in place.\n\t */\n\tprivate withThinkingToggle(component: Component, descriptor: AssistantRenderDescriptor): Component {\n\t\tconst runIndex = descriptor.thinkingRun;\n\t\tif (runIndex === undefined) return component;\n\t\tcomponent.handleMouse = (event) => {\n\t\t\tif (event.type !== \"click\" || event.button !== \"left\") return undefined;\n\t\t\tconst hidden = this.thinkingVisibilityOverrides.get(runIndex) ?? this.hideThinkingBlock;\n\t\t\tthis.thinkingVisibilityOverrides.set(runIndex, !hidden);\n\t\t\tthis.refreshContent();\n\t\t\treturn { handled: true };\n\t\t};\n\t\treturn component;\n\t}\n\n\tprivate createMessageSignature(message: AssistantMessage): string {\n\t\treturn createBoundedRenderSignature({\n\t\t\tcontent: message.content,\n\t\t\thiddenThinkingLabel: this.hiddenThinkingLabel,\n\t\t\thideThinkingBlock: this.hideThinkingBlock,\n\t\t\tthinkingVisibilityOverrides: [...this.thinkingVisibilityOverrides],\n\t\t\terrorState: [message.diagnostics, message.errorMessage],\n\t\t\tstopReason: message.stopReason,\n\t\t});\n\t}\n\n\tprivate cacheRender(width: number, signature: string, lines: string[]): void {\n\t\tthis.renderCache = { lines: [...lines], signature, width };\n\t}\n\n\tprivate refreshContent(): void {\n\t\tif (!this.lastMessage) return;\n\t\tthis.lastMessageSignature = undefined;\n\t\tthis.updateContent(this.lastMessage);\n\t}\n}\n"]}
1
+ {"version":3,"file":"assistant-message.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/assistant-message.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessage } from \"@earendil-works/pi-ai\";\nimport { type Component, Container, Markdown, type MarkdownTheme, Spacer, Text } from \"@earendil-works/pi-tui\";\nimport type { MarkdownTransformer } from \"../../../core/extensions/types.ts\";\nimport { getMarkdownTheme, theme } from \"../theme/theme.ts\";\nimport { type AssistantRenderDescriptor, createAssistantRenderDescriptors } from \"./assistant-render-descriptors.ts\";\nimport { createMarkdownTransform } from \"./markdown-transform.ts\";\nimport { createBoundedRenderSignature } from \"./render-signature.ts\";\n\nconst OSC133_ZONE_START = \"\\x1b]133;A\\x07\";\nconst OSC133_ZONE_END = \"\\x1b]133;B\\x07\";\nconst OSC133_ZONE_FINAL = \"\\x1b]133;C\\x07\";\n\nfunction assertNever(value: never): never {\n\tthrow new TypeError(`Unexpected assistant render variant: ${String(value)}`);\n}\n\nexport class AssistantMessageComponent extends Container {\n\tprivate renderCache?: { readonly lines: string[]; readonly signature: string; readonly width: number };\n\tprivate contentContainer: Container;\n\tprivate hideThinkingBlock: boolean;\n\tprivate markdownTheme: MarkdownTheme;\n\tprivate hiddenThinkingLabel: string;\n\tprivate outputPad: number;\n\tprivate markdownTransformers: readonly MarkdownTransformer[];\n\tprivate lastMessage?: AssistantMessage;\n\tprivate lastMessageSignature?: string;\n\tprivate renderDescriptors: readonly AssistantRenderDescriptor[] = [];\n\tprivate hasToolCalls = false;\n\tprivate expanded = false;\n\tprivate providerErrorOwned = false;\n\tprivate isStreaming = false;\n\tprivate thinkingVisibilityOverrides = new Map<number, boolean>();\n\n\tconstructor(\n\t\tmessage?: AssistantMessage,\n\t\thideThinkingBlock = false,\n\t\tmarkdownTheme: MarkdownTheme = getMarkdownTheme(),\n\t\thiddenThinkingLabel = \"Thinking...\",\n\t\toutputPad = 1,\n\t\tmarkdownTransformers: readonly MarkdownTransformer[] = [],\n\t) {\n\t\tsuper();\n\n\t\tthis.hideThinkingBlock = hideThinkingBlock;\n\t\tthis.markdownTheme = markdownTheme;\n\t\tthis.hiddenThinkingLabel = hiddenThinkingLabel;\n\t\tthis.outputPad = outputPad;\n\t\tthis.markdownTransformers = markdownTransformers;\n\n\t\t// Container for text/thinking content\n\t\tthis.contentContainer = new Container();\n\t\tthis.addChild(this.contentContainer);\n\n\t\tif (message) this.updateContent(message);\n\t}\n\n\toverride invalidate(): void {\n\t\tthis.renderCache = undefined;\n\t\tsuper.invalidate();\n\t\tthis.renderDescriptors = [];\n\t\tthis.refreshContent();\n\t}\n\n\tsetHideThinkingBlock(hide: boolean): void {\n\t\tif (this.hideThinkingBlock === hide) return;\n\t\tthis.hideThinkingBlock = hide;\n\t\tthis.thinkingVisibilityOverrides.clear();\n\t\tthis.refreshContent();\n\t}\n\n\tsetHiddenThinkingLabel(label: string): void {\n\t\tif (this.hiddenThinkingLabel === label) return;\n\t\tthis.hiddenThinkingLabel = label;\n\t\tthis.refreshContent();\n\t}\n\n\tsetExpanded(expanded: boolean): void {\n\t\tif (this.expanded === expanded) return;\n\t\tthis.expanded = expanded;\n\t\tthis.refreshContent();\n\t}\n\n\tsetProviderErrorOwned(owned: boolean): void {\n\t\tif (this.providerErrorOwned === owned) return;\n\t\tthis.providerErrorOwned = owned;\n\t\tthis.refreshContent();\n\t}\n\n\tsetOutputPad(padding: number): void {\n\t\tthis.outputPad = padding;\n\t\tthis.renderDescriptors = [];\n\t\tthis.refreshContent();\n\t}\n\n\toverride render(width: number): string[] {\n\t\tconst signature = this.lastMessageSignature ?? \"\";\n\t\tif (this.renderCache?.width === width && this.renderCache.signature === signature) {\n\t\t\treturn [...this.renderCache.lines];\n\t\t}\n\n\t\tconst lines = super.render(width);\n\t\tif (this.hasToolCalls || lines.length === 0) {\n\t\t\tthis.cacheRender(width, signature, lines);\n\t\t\treturn lines;\n\t\t}\n\n\t\tlines[0] = OSC133_ZONE_START + lines[0];\n\t\tlines[lines.length - 1] = OSC133_ZONE_END + OSC133_ZONE_FINAL + lines[lines.length - 1];\n\t\tthis.cacheRender(width, signature, lines);\n\t\treturn lines;\n\t}\n\n\tupdateContent(message: AssistantMessage, isStreaming = this.isStreaming): void {\n\t\tconst previousMessage = this.lastMessage;\n\t\tconst streamingChanged = this.isStreaming !== isStreaming;\n\t\tthis.isStreaming = isStreaming;\n\t\tthis.lastMessage = message;\n\t\tconst messageSignature = this.createMessageSignature(message);\n\t\tif (!streamingChanged && previousMessage === message && this.lastMessageSignature === messageSignature) {\n\t\t\treturn;\n\t\t}\n\t\tthis.lastMessageSignature = messageSignature;\n\t\tthis.renderCache = undefined;\n\t\tif (streamingChanged) this.renderDescriptors = [];\n\t\tthis.hasToolCalls = message.content.some((content) => content.type === \"toolCall\");\n\t\tconst descriptors = createAssistantRenderDescriptors(message, {\n\t\t\texpanded: this.expanded,\n\t\t\tproviderErrorOwned: this.providerErrorOwned,\n\t\t\thiddenThinkingLabel: this.hiddenThinkingLabel,\n\t\t\thideThinkingBlock: this.hideThinkingBlock,\n\t\t\tthinkingVisibilityOverrides: this.thinkingVisibilityOverrides,\n\t\t\thasToolCalls: this.hasToolCalls,\n\t\t});\n\t\tthis.reconcileRenderDescriptors(descriptors);\n\t}\n\n\tprivate reconcileRenderDescriptors(descriptors: readonly AssistantRenderDescriptor[]): void {\n\t\tlet divergentIndex = 0;\n\t\tconst sharedLength = Math.min(this.renderDescriptors.length, descriptors.length);\n\t\twhile (divergentIndex < sharedLength) {\n\t\t\tconst previous = this.renderDescriptors[divergentIndex];\n\t\t\tconst next = descriptors[divergentIndex];\n\t\t\tconst child = this.contentContainer.children[divergentIndex];\n\t\t\tif (!previous || !next || !child || previous.kind !== next.kind) break;\n\t\t\tif (previous.text !== next.text) {\n\t\t\t\tif ((next.kind === \"text-md\" || next.kind === \"thinking-md\") && child instanceof Markdown) {\n\t\t\t\t\tchild.setText(next.text);\n\t\t\t\t} else break;\n\t\t\t}\n\t\t\tdivergentIndex++;\n\t\t}\n\t\tfor (const child of this.contentContainer.children.splice(divergentIndex)) child.dispose?.();\n\t\tfor (const descriptor of descriptors.slice(divergentIndex))\n\t\t\tthis.contentContainer.addChild(this.createRenderChild(descriptor));\n\t\tthis.renderDescriptors = descriptors;\n\t}\n\n\tprivate createRenderChild(descriptor: AssistantRenderDescriptor): Component {\n\t\tswitch (descriptor.kind) {\n\t\t\tcase \"spacer\":\n\t\t\t\treturn new Spacer(1);\n\t\t\tcase \"text-md\":\n\t\t\t\treturn new Markdown(descriptor.text, this.outputPad, 0, this.markdownTheme, undefined, {\n\t\t\t\t\ttransform: createMarkdownTransform(\"assistant\", this.isStreaming, this.markdownTransformers),\n\t\t\t\t});\n\t\t\tcase \"thinking-md\":\n\t\t\t\treturn this.withThinkingToggle(\n\t\t\t\t\tnew Markdown(\n\t\t\t\t\t\tdescriptor.text,\n\t\t\t\t\t\tthis.outputPad,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tthis.markdownTheme,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcolor: (text: string) => theme.fg(\"thinkingText\", text),\n\t\t\t\t\t\t\titalic: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttransform: createMarkdownTransform(\n\t\t\t\t\t\t\t\t\"assistant-thinking\",\n\t\t\t\t\t\t\t\tthis.isStreaming,\n\t\t\t\t\t\t\t\tthis.markdownTransformers,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t\tdescriptor,\n\t\t\t\t);\n\t\t\tcase \"thinking-label\":\n\t\t\t\treturn this.withThinkingToggle(new Text(descriptor.text, this.outputPad, 0), descriptor);\n\t\t\tcase \"error-text\":\n\t\t\t\treturn new Text(descriptor.text, this.outputPad, 0);\n\t\t\tcase \"provider-native-summary\":\n\t\t\t\treturn new Text(descriptor.text, 1, 0);\n\t\t\tcase \"provider-native-body\":\n\t\t\t\treturn new Text(descriptor.text, 3, 0);\n\t\t\tdefault:\n\t\t\t\treturn assertNever(descriptor.kind);\n\t\t}\n\t}\n\n\t/**\n\t * Left-clicking a thinking run toggles that run between its label and its body (upstream\n\t * 71026970a). The mouse handler is attached to the Markdown/Text child itself so the\n\t * incremental reconciler still sees the same child types it updates in place.\n\t */\n\tprivate withThinkingToggle(component: Component, descriptor: AssistantRenderDescriptor): Component {\n\t\tconst runIndex = descriptor.thinkingRun;\n\t\tif (runIndex === undefined) return component;\n\t\tcomponent.handleMouse = (event) => {\n\t\t\tif (event.type !== \"click\" || event.button !== \"left\") return undefined;\n\t\t\tconst hidden = this.thinkingVisibilityOverrides.get(runIndex) ?? this.hideThinkingBlock;\n\t\t\tthis.thinkingVisibilityOverrides.set(runIndex, !hidden);\n\t\t\tthis.refreshContent();\n\t\t\treturn { handled: true };\n\t\t};\n\t\treturn component;\n\t}\n\n\tprivate createMessageSignature(message: AssistantMessage): string {\n\t\treturn createBoundedRenderSignature({\n\t\t\tcontent: message.content,\n\t\t\thiddenThinkingLabel: this.hiddenThinkingLabel,\n\t\t\thideThinkingBlock: this.hideThinkingBlock,\n\t\t\tthinkingVisibilityOverrides: [...this.thinkingVisibilityOverrides],\n\t\t\terrorState: [message.diagnostics, message.errorMessage],\n\t\t\tstopReason: message.stopReason,\n\t\t});\n\t}\n\n\tprivate cacheRender(width: number, signature: string, lines: string[]): void {\n\t\tthis.renderCache = { lines: [...lines], signature, width };\n\t}\n\n\tprivate refreshContent(): void {\n\t\tif (!this.lastMessage) return;\n\t\tthis.lastMessageSignature = undefined;\n\t\tthis.updateContent(this.lastMessage);\n\t}\n}\n"]}
@@ -10,6 +10,7 @@ export type AssistantRenderDescriptor = {
10
10
  };
11
11
  type AssistantRenderDescriptorOptions = {
12
12
  readonly expanded: boolean;
13
+ readonly providerErrorOwned?: boolean;
13
14
  readonly hiddenThinkingLabel: string;
14
15
  readonly hideThinkingBlock: boolean;
15
16
  /** Per-run click overrides of `hideThinkingBlock`, keyed by thinking run index. */
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-render-descriptors.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/assistant-render-descriptors.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,gBAAgB,EAGrB,MAAM,uBAAuB,CAAC;AAK/B,KAAK,sBAAsB,GAAG,SAAS,GAAG,aAAa,CAAC;AACxD,KAAK,kBAAkB,GAAG,gBAAgB,GAAG,yBAAyB,GAAG,sBAAsB,GAAG,YAAY,CAAC;AAC/G,KAAK,6BAA6B,GAAG,QAAQ,GAAG,sBAAsB,GAAG,kBAAkB,CAAC;AAE5F,MAAM,MAAM,yBAAyB,GAAG;IACvC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+FAA+F;IAC/F,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACvC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,mFAAmF;IACnF,QAAQ,CAAC,2BAA2B,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAC/B,CAAC;AAuBF,wBAAgB,gCAAgC,CAC/C,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,gCAAgC,GACvC,SAAS,yBAAyB,EAAE,CAsHtC"}
1
+ {"version":3,"file":"assistant-render-descriptors.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/assistant-render-descriptors.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,gBAAgB,EAGrB,MAAM,uBAAuB,CAAC;AAK/B,KAAK,sBAAsB,GAAG,SAAS,GAAG,aAAa,CAAC;AACxD,KAAK,kBAAkB,GAAG,gBAAgB,GAAG,yBAAyB,GAAG,sBAAsB,GAAG,YAAY,CAAC;AAC/G,KAAK,6BAA6B,GAAG,QAAQ,GAAG,sBAAsB,GAAG,kBAAkB,CAAC;AAE5F,MAAM,MAAM,yBAAyB,GAAG;IACvC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+FAA+F;IAC/F,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACvC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,mFAAmF;IACnF,QAAQ,CAAC,2BAA2B,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAC/B,CAAC;AAuBF,wBAAgB,gCAAgC,CAC/C,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,gCAAgC,GACvC,SAAS,yBAAyB,EAAE,CAwHtC"}
@@ -113,6 +113,8 @@ export function createAssistantRenderDescriptors(message, options) {
113
113
  case "aborted": {
114
114
  if (options.hasToolCalls)
115
115
  break;
116
+ if (options.providerErrorOwned)
117
+ break;
116
118
  const abortMessage = message.errorMessage && message.errorMessage !== "Request was aborted"
117
119
  ? message.errorMessage
118
120
  : "Operation aborted";
@@ -122,6 +124,8 @@ export function createAssistantRenderDescriptors(message, options) {
122
124
  case "error": {
123
125
  if (options.hasToolCalls)
124
126
  break;
127
+ if (options.providerErrorOwned)
128
+ break;
125
129
  if (message.diagnostics?.some((entry) => entry.type === SERVER_FALLBACK_ABORTED_DIAGNOSTIC))
126
130
  break;
127
131
  // A provider-stream stall carries the watchdog's own wording so the retry
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-render-descriptors.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/assistant-render-descriptors.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype AssistantMessage,\n\tdescribeProviderStallForUser,\n\tSERVER_FALLBACK_ABORTED_DIAGNOSTIC,\n} from \"@earendil-works/pi-ai\";\nimport { formatDuration } from \"../../../utils/duration.ts\";\nimport { formatProviderNativeBody, formatProviderNativeSummary } from \"../../provider-native-rendering.ts\";\nimport { theme } from \"../theme/theme.ts\";\n\ntype MarkdownDescriptorKind = \"text-md\" | \"thinking-md\";\ntype TextDescriptorKind = \"thinking-label\" | \"provider-native-summary\" | \"provider-native-body\" | \"error-text\";\ntype AssistantRenderDescriptorKind = \"spacer\" | MarkdownDescriptorKind | TextDescriptorKind;\n\nexport type AssistantRenderDescriptor = {\n\treadonly kind: AssistantRenderDescriptorKind;\n\treadonly text: string;\n\t/** Index of the thinking run this label/body belongs to; set only for thinking descriptors. */\n\treadonly thinkingRun?: number;\n};\n\ntype AssistantRenderDescriptorOptions = {\n\treadonly expanded: boolean;\n\treadonly hiddenThinkingLabel: string;\n\treadonly hideThinkingBlock: boolean;\n\t/** Per-run click overrides of `hideThinkingBlock`, keyed by thinking run index. */\n\treadonly thinkingVisibilityOverrides?: ReadonlyMap<number, boolean>;\n\treadonly hasToolCalls: boolean;\n};\n\nconst SPACER_DESCRIPTOR = { kind: \"spacer\", text: \"\" } as const satisfies AssistantRenderDescriptor;\n\nfunction assertNever(value: never): never {\n\tthrow new TypeError(`Unexpected assistant render variant: ${String(value)}`);\n}\n\nfunction isVisibleContent(content: AssistantMessage[\"content\"][number], providerNativeVisible: boolean): boolean {\n\tswitch (content.type) {\n\t\tcase \"text\":\n\t\t\treturn Boolean(content.text.trim());\n\t\tcase \"thinking\":\n\t\t\treturn Boolean(content.thinking.trim());\n\t\tcase \"providerNative\":\n\t\t\treturn providerNativeVisible;\n\t\tcase \"toolCall\":\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn assertNever(content);\n\t}\n}\n\nexport function createAssistantRenderDescriptors(\n\tmessage: AssistantMessage,\n\toptions: AssistantRenderDescriptorOptions,\n): readonly AssistantRenderDescriptor[] {\n\tconst descriptors: AssistantRenderDescriptor[] = [];\n\tif (message.content.some((content) => isVisibleContent(content, true))) descriptors.push(SPACER_DESCRIPTOR);\n\tlet thinkingRunIndex = 0;\n\tfor (let i = 0; i < message.content.length; i++) {\n\t\tconst content = message.content[i];\n\t\tswitch (content.type) {\n\t\t\tcase \"text\": {\n\t\t\t\tconst text = content.text.trim();\n\t\t\t\tif (text) descriptors.push({ kind: \"text-md\", text });\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"thinking\": {\n\t\t\t\tconst thinkingBlocks: string[] = [];\n\t\t\t\tlet hasTiming = false;\n\t\t\t\tlet isDone = true;\n\t\t\t\tlet minStart = Number.POSITIVE_INFINITY;\n\t\t\t\tlet maxEnd = Number.NEGATIVE_INFINITY;\n\t\t\t\tfor (; i < message.content.length; i++) {\n\t\t\t\t\tconst thinkingContent = message.content[i];\n\t\t\t\t\tif (thinkingContent.type !== \"thinking\") break;\n\t\t\t\t\tconst startedAt = thinkingContent.startedAt;\n\t\t\t\t\tif (startedAt !== undefined) {\n\t\t\t\t\t\thasTiming = true;\n\t\t\t\t\t\tminStart = Math.min(minStart, startedAt);\n\t\t\t\t\t\tconst endedAt = thinkingContent.endedAt;\n\t\t\t\t\t\tif (endedAt === undefined) {\n\t\t\t\t\t\t\tisDone = false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmaxEnd = Math.max(maxEnd, endedAt);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst thinking = thinkingContent.thinking.trim();\n\t\t\t\t\tif (thinking) thinkingBlocks.push(thinking);\n\t\t\t\t}\n\t\t\t\ti--;\n\t\t\t\tif (thinkingBlocks.length === 0) break;\n\t\t\t\tconst thinkingRun = thinkingRunIndex++;\n\t\t\t\tconst hidden = options.thinkingVisibilityOverrides?.get(thinkingRun) ?? options.hideThinkingBlock;\n\t\t\t\tif (!hasTiming) {\n\t\t\t\t\tconst text = hidden\n\t\t\t\t\t\t? theme.italic(theme.fg(\"thinkingText\", options.hiddenThinkingLabel))\n\t\t\t\t\t\t: thinkingBlocks.join(\"\\n\\n\");\n\t\t\t\t\tdescriptors.push({ kind: hidden ? \"thinking-label\" : \"thinking-md\", text, thinkingRun });\n\t\t\t\t} else {\n\t\t\t\t\tconst label = isDone\n\t\t\t\t\t\t? theme.italic(theme.fg(\"thinkingText\", `Thought: ${formatDuration(Math.max(0, maxEnd - minStart))}`))\n\t\t\t\t\t\t: theme.italic(theme.fg(\"thinkingText\", options.hiddenThinkingLabel));\n\t\t\t\t\tif (hidden) {\n\t\t\t\t\t\tdescriptors.push({ kind: \"thinking-label\", text: label, thinkingRun });\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdescriptors.push(\n\t\t\t\t\t\t\t{ kind: \"thinking-label\", text: label, thinkingRun },\n\t\t\t\t\t\t\t{ kind: \"thinking-md\", text: thinkingBlocks.join(\"\\n\\n\"), thinkingRun },\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (message.content.slice(i + 1).some((following) => isVisibleContent(following, false)))\n\t\t\t\t\tdescriptors.push(SPACER_DESCRIPTOR);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"providerNative\":\n\t\t\t\tdescriptors.push(\n\t\t\t\t\t{\n\t\t\t\t\t\tkind: \"provider-native-summary\",\n\t\t\t\t\t\ttext: theme.fg(\"muted\", formatProviderNativeSummary(message, content, options.expanded)),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkind: \"provider-native-body\",\n\t\t\t\t\t\ttext: theme.fg(\"dim\", formatProviderNativeBody(content, options.expanded)),\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tif (message.content.slice(i + 1).some((following) => isVisibleContent(following, true)))\n\t\t\t\t\tdescriptors.push(SPACER_DESCRIPTOR);\n\t\t\t\tbreak;\n\t\t\tcase \"toolCall\":\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tassertNever(content);\n\t\t}\n\t}\n\tconst addError = (text: string): void => {\n\t\tdescriptors.push(SPACER_DESCRIPTOR, { kind: \"error-text\", text: theme.fg(\"error\", text) });\n\t};\n\tswitch (message.stopReason) {\n\t\tcase \"length\":\n\t\t\taddError(\n\t\t\t\t\"Error: Model stopped because it reached the maximum output token limit. The response may be incomplete.\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"aborted\": {\n\t\t\tif (options.hasToolCalls) break;\n\t\t\tconst abortMessage =\n\t\t\t\tmessage.errorMessage && message.errorMessage !== \"Request was aborted\"\n\t\t\t\t\t? message.errorMessage\n\t\t\t\t\t: \"Operation aborted\";\n\t\t\taddError(abortMessage);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"error\": {\n\t\t\tif (options.hasToolCalls) break;\n\t\t\tif (message.diagnostics?.some((entry) => entry.type === SERVER_FALLBACK_ABORTED_DIAGNOSTIC)) break;\n\t\t\t// A provider-stream stall carries the watchdog's own wording so the retry\n\t\t\t// engine can classify it; the transcript gets the plain-language version,\n\t\t\t// without the recovery advice a retry still in flight would contradict.\n\t\t\tconst stall = describeProviderStallForUser(message.errorMessage);\n\t\t\taddError(stall ?? `Error: ${message.errorMessage || \"Unknown error\"}`);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"pending\":\n\t\tcase \"stop\":\n\t\tcase \"toolUse\":\n\t\tcase \"deferred\":\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tassertNever(message.stopReason);\n\t}\n\treturn descriptors;\n}\n"]}
1
+ {"version":3,"file":"assistant-render-descriptors.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/assistant-render-descriptors.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype AssistantMessage,\n\tdescribeProviderStallForUser,\n\tSERVER_FALLBACK_ABORTED_DIAGNOSTIC,\n} from \"@earendil-works/pi-ai\";\nimport { formatDuration } from \"../../../utils/duration.ts\";\nimport { formatProviderNativeBody, formatProviderNativeSummary } from \"../../provider-native-rendering.ts\";\nimport { theme } from \"../theme/theme.ts\";\n\ntype MarkdownDescriptorKind = \"text-md\" | \"thinking-md\";\ntype TextDescriptorKind = \"thinking-label\" | \"provider-native-summary\" | \"provider-native-body\" | \"error-text\";\ntype AssistantRenderDescriptorKind = \"spacer\" | MarkdownDescriptorKind | TextDescriptorKind;\n\nexport type AssistantRenderDescriptor = {\n\treadonly kind: AssistantRenderDescriptorKind;\n\treadonly text: string;\n\t/** Index of the thinking run this label/body belongs to; set only for thinking descriptors. */\n\treadonly thinkingRun?: number;\n};\n\ntype AssistantRenderDescriptorOptions = {\n\treadonly expanded: boolean;\n\treadonly providerErrorOwned?: boolean;\n\treadonly hiddenThinkingLabel: string;\n\treadonly hideThinkingBlock: boolean;\n\t/** Per-run click overrides of `hideThinkingBlock`, keyed by thinking run index. */\n\treadonly thinkingVisibilityOverrides?: ReadonlyMap<number, boolean>;\n\treadonly hasToolCalls: boolean;\n};\n\nconst SPACER_DESCRIPTOR = { kind: \"spacer\", text: \"\" } as const satisfies AssistantRenderDescriptor;\n\nfunction assertNever(value: never): never {\n\tthrow new TypeError(`Unexpected assistant render variant: ${String(value)}`);\n}\n\nfunction isVisibleContent(content: AssistantMessage[\"content\"][number], providerNativeVisible: boolean): boolean {\n\tswitch (content.type) {\n\t\tcase \"text\":\n\t\t\treturn Boolean(content.text.trim());\n\t\tcase \"thinking\":\n\t\t\treturn Boolean(content.thinking.trim());\n\t\tcase \"providerNative\":\n\t\t\treturn providerNativeVisible;\n\t\tcase \"toolCall\":\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn assertNever(content);\n\t}\n}\n\nexport function createAssistantRenderDescriptors(\n\tmessage: AssistantMessage,\n\toptions: AssistantRenderDescriptorOptions,\n): readonly AssistantRenderDescriptor[] {\n\tconst descriptors: AssistantRenderDescriptor[] = [];\n\tif (message.content.some((content) => isVisibleContent(content, true))) descriptors.push(SPACER_DESCRIPTOR);\n\tlet thinkingRunIndex = 0;\n\tfor (let i = 0; i < message.content.length; i++) {\n\t\tconst content = message.content[i];\n\t\tswitch (content.type) {\n\t\t\tcase \"text\": {\n\t\t\t\tconst text = content.text.trim();\n\t\t\t\tif (text) descriptors.push({ kind: \"text-md\", text });\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"thinking\": {\n\t\t\t\tconst thinkingBlocks: string[] = [];\n\t\t\t\tlet hasTiming = false;\n\t\t\t\tlet isDone = true;\n\t\t\t\tlet minStart = Number.POSITIVE_INFINITY;\n\t\t\t\tlet maxEnd = Number.NEGATIVE_INFINITY;\n\t\t\t\tfor (; i < message.content.length; i++) {\n\t\t\t\t\tconst thinkingContent = message.content[i];\n\t\t\t\t\tif (thinkingContent.type !== \"thinking\") break;\n\t\t\t\t\tconst startedAt = thinkingContent.startedAt;\n\t\t\t\t\tif (startedAt !== undefined) {\n\t\t\t\t\t\thasTiming = true;\n\t\t\t\t\t\tminStart = Math.min(minStart, startedAt);\n\t\t\t\t\t\tconst endedAt = thinkingContent.endedAt;\n\t\t\t\t\t\tif (endedAt === undefined) {\n\t\t\t\t\t\t\tisDone = false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmaxEnd = Math.max(maxEnd, endedAt);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst thinking = thinkingContent.thinking.trim();\n\t\t\t\t\tif (thinking) thinkingBlocks.push(thinking);\n\t\t\t\t}\n\t\t\t\ti--;\n\t\t\t\tif (thinkingBlocks.length === 0) break;\n\t\t\t\tconst thinkingRun = thinkingRunIndex++;\n\t\t\t\tconst hidden = options.thinkingVisibilityOverrides?.get(thinkingRun) ?? options.hideThinkingBlock;\n\t\t\t\tif (!hasTiming) {\n\t\t\t\t\tconst text = hidden\n\t\t\t\t\t\t? theme.italic(theme.fg(\"thinkingText\", options.hiddenThinkingLabel))\n\t\t\t\t\t\t: thinkingBlocks.join(\"\\n\\n\");\n\t\t\t\t\tdescriptors.push({ kind: hidden ? \"thinking-label\" : \"thinking-md\", text, thinkingRun });\n\t\t\t\t} else {\n\t\t\t\t\tconst label = isDone\n\t\t\t\t\t\t? theme.italic(theme.fg(\"thinkingText\", `Thought: ${formatDuration(Math.max(0, maxEnd - minStart))}`))\n\t\t\t\t\t\t: theme.italic(theme.fg(\"thinkingText\", options.hiddenThinkingLabel));\n\t\t\t\t\tif (hidden) {\n\t\t\t\t\t\tdescriptors.push({ kind: \"thinking-label\", text: label, thinkingRun });\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdescriptors.push(\n\t\t\t\t\t\t\t{ kind: \"thinking-label\", text: label, thinkingRun },\n\t\t\t\t\t\t\t{ kind: \"thinking-md\", text: thinkingBlocks.join(\"\\n\\n\"), thinkingRun },\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (message.content.slice(i + 1).some((following) => isVisibleContent(following, false)))\n\t\t\t\t\tdescriptors.push(SPACER_DESCRIPTOR);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"providerNative\":\n\t\t\t\tdescriptors.push(\n\t\t\t\t\t{\n\t\t\t\t\t\tkind: \"provider-native-summary\",\n\t\t\t\t\t\ttext: theme.fg(\"muted\", formatProviderNativeSummary(message, content, options.expanded)),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkind: \"provider-native-body\",\n\t\t\t\t\t\ttext: theme.fg(\"dim\", formatProviderNativeBody(content, options.expanded)),\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tif (message.content.slice(i + 1).some((following) => isVisibleContent(following, true)))\n\t\t\t\t\tdescriptors.push(SPACER_DESCRIPTOR);\n\t\t\t\tbreak;\n\t\t\tcase \"toolCall\":\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tassertNever(content);\n\t\t}\n\t}\n\tconst addError = (text: string): void => {\n\t\tdescriptors.push(SPACER_DESCRIPTOR, { kind: \"error-text\", text: theme.fg(\"error\", text) });\n\t};\n\tswitch (message.stopReason) {\n\t\tcase \"length\":\n\t\t\taddError(\n\t\t\t\t\"Error: Model stopped because it reached the maximum output token limit. The response may be incomplete.\",\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"aborted\": {\n\t\t\tif (options.hasToolCalls) break;\n\t\t\tif (options.providerErrorOwned) break;\n\t\t\tconst abortMessage =\n\t\t\t\tmessage.errorMessage && message.errorMessage !== \"Request was aborted\"\n\t\t\t\t\t? message.errorMessage\n\t\t\t\t\t: \"Operation aborted\";\n\t\t\taddError(abortMessage);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"error\": {\n\t\t\tif (options.hasToolCalls) break;\n\t\t\tif (options.providerErrorOwned) break;\n\t\t\tif (message.diagnostics?.some((entry) => entry.type === SERVER_FALLBACK_ABORTED_DIAGNOSTIC)) break;\n\t\t\t// A provider-stream stall carries the watchdog's own wording so the retry\n\t\t\t// engine can classify it; the transcript gets the plain-language version,\n\t\t\t// without the recovery advice a retry still in flight would contradict.\n\t\t\tconst stall = describeProviderStallForUser(message.errorMessage);\n\t\t\taddError(stall ?? `Error: ${message.errorMessage || \"Unknown error\"}`);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"pending\":\n\t\tcase \"stop\":\n\t\tcase \"toolUse\":\n\t\tcase \"deferred\":\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tassertNever(message.stopReason);\n\t}\n\treturn descriptors;\n}\n"]}
@@ -13,7 +13,9 @@ export declare class WorkingStatusIndicator extends StatusIndicator {
13
13
  }
14
14
  export declare class RetryStatusIndicator extends StatusIndicator {
15
15
  private countdown;
16
- constructor(ui: TUI, attempt: number, maxAttempts: number, delayMs: number, indicator?: LoaderIndicatorOptions);
16
+ private compactMessage;
17
+ constructor(ui: TUI, attempt: number, maxAttempts: number, delayMs: number, indicator?: LoaderIndicatorOptions, providerTrouble?: boolean);
18
+ renderInBorder(width: number): string;
17
19
  dispose(): void;
18
20
  }
19
21
  export type CompactionStatusReason = "manual" | "threshold" | "overflow" | "pre_prompt" | "branch" | "extension";
@@ -1 +1 @@
1
- {"version":3,"file":"status-indicator.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/status-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,SAAS,EACd,MAAM,EACN,KAAK,sBAAsB,EAE3B,KAAK,GAAG,EAGR,MAAM,wBAAwB,CAAC;AAKhC,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,eAAe,CAAC;AAEvF,qBAAa,eAAgB,SAAQ,MAAM;IAC1C,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAEnC,YACC,IAAI,EAAE,mBAAmB,EACzB,EAAE,EAAE,GAAG,EACP,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EACvC,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EACvC,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,sBAAsB,EAIlC;IAED,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpC;IAED,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C;IAED,OAAO,IAAI,IAAI,CAEd;IAED,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAE3C;CACD;AAED,qBAAa,sBAAuB,SAAQ,eAAe;IAC1D,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAS3G;CACD;AAED,qBAAa,oBAAqB,SAAQ,eAAe;IACxD,OAAO,CAAC,SAAS,CAA6B;IAE9C,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,sBAAsB,EA4B7G;IAEQ,OAAO,IAAI,IAAI,CAIvB;CACD;AAED,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEjH,qBAAa,yBAA0B,SAAQ,eAAe;IAC7D,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,sBAAsB,EAsBlD;IAED,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAG1C;IAEQ,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI7C;IAEQ,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAwBvC;CACD;AAED,qBAAa,4BAA6B,SAAQ,eAAe;IAChE,YAAY,EAAE,EAAE,GAAG,EAQlB;CACD;AAED,qBAAa,UAAW,YAAW,SAAS;IAC3C,OAAO,CAAC,MAAM,CAAS;IAEvB,YAAY,MAAM,SAAI,EAErB;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9B;IAED,UAAU,IAAI,IAAI,CAEjB;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAG9B;CACD"}
1
+ {"version":3,"file":"status-indicator.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/status-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,SAAS,EACd,MAAM,EACN,KAAK,sBAAsB,EAE3B,KAAK,GAAG,EAGR,MAAM,wBAAwB,CAAC;AAKhC,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,eAAe,CAAC;AAEvF,qBAAa,eAAgB,SAAQ,MAAM;IAC1C,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAEnC,YACC,IAAI,EAAE,mBAAmB,EACzB,EAAE,EAAE,GAAG,EACP,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EACvC,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EACvC,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,sBAAsB,EAIlC;IAED,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpC;IAED,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C;IAED,OAAO,IAAI,IAAI,CAEd;IAED,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAE3C;CACD;AAED,qBAAa,sBAAuB,SAAQ,eAAe;IAC1D,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAS3G;CACD;AAED,qBAAa,oBAAqB,SAAQ,eAAe;IACxD,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,cAAc,CAAqB;IAE3C,YACC,EAAE,EAAE,GAAG,EACP,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,sBAAsB,EAClC,eAAe,UAAQ,EAmCvB;IAEQ,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK7C;IAEQ,OAAO,IAAI,IAAI,CAIvB;CACD;AAED,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEjH,qBAAa,yBAA0B,SAAQ,eAAe;IAC7D,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,sBAAsB,EAsBlD;IAED,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAG1C;IAEQ,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI7C;IAEQ,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAwBvC;CACD;AAED,qBAAa,4BAA6B,SAAQ,eAAe;IAChE,YAAY,EAAE,EAAE,GAAG,EAQlB;CACD;AAED,qBAAa,UAAW,YAAW,SAAS;IAC3C,OAAO,CAAC,MAAM,CAAS;IAEvB,YAAY,MAAM,SAAI,EAErB;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9B;IAED,UAAU,IAAI,IAAI,CAEjB;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAG9B;CACD"}
@@ -27,8 +27,11 @@ export class WorkingStatusIndicator extends StatusIndicator {
27
27
  }
28
28
  }
29
29
  export class RetryStatusIndicator extends StatusIndicator {
30
- constructor(ui, attempt, maxAttempts, delayMs, indicator) {
31
- const retryMessage = (seconds) => `Retrying (${attempt}/${maxAttempts}) in ${seconds}s... (${keyText("app.interrupt")} to cancel)`;
30
+ constructor(ui, attempt, maxAttempts, delayMs, indicator, providerTrouble = false) {
31
+ const retryMessage = (seconds) => providerTrouble
32
+ ? `The model provider may be having trouble. Retrying... (${attempt}/${maxAttempts}, ${seconds > 0 ? `in ${seconds}s` : "now"}; ${keyText("app.interrupt")} to cancel)`
33
+ : `Retrying (${attempt}/${maxAttempts}) in ${seconds}s... (${keyText("app.interrupt")} to cancel)`;
34
+ const compactMessage = (seconds) => `Retrying ${attempt}/${maxAttempts} ${seconds > 0 ? `in ${seconds}s` : "now"} (${keyText("app.interrupt")} cancel)`;
32
35
  const retryIndicator = indicator === undefined
33
36
  ? undefined
34
37
  : {
@@ -36,12 +39,22 @@ export class RetryStatusIndicator extends StatusIndicator {
36
39
  indicatorFormatter: indicator.indicatorFormatter ?? ((spinner) => theme.fg("warning", spinner)),
37
40
  };
38
41
  super("retry", ui, (spinner) => theme.fg("warning", spinner), (text) => theme.fg("muted", text), retryMessage(Math.ceil(delayMs / 1000)), retryIndicator);
42
+ if (providerTrouble)
43
+ this.compactMessage = compactMessage(Math.ceil(delayMs / 1000));
39
44
  this.countdown = new CountdownTimer(delayMs, ui, (seconds) => {
45
+ if (providerTrouble)
46
+ this.compactMessage = compactMessage(seconds);
40
47
  this.setMessage(retryMessage(seconds));
41
48
  }, () => {
42
49
  this.countdown = undefined;
43
50
  });
44
51
  }
52
+ renderInBorder(width) {
53
+ if (this.compactMessage && super.render(width + 2).length > 2) {
54
+ return truncateToWidth(`${this.getRenderedIndicator()} ${theme.fg("muted", this.compactMessage)}`, width, "");
55
+ }
56
+ return super.renderInBorder(width);
57
+ }
45
58
  dispose() {
46
59
  this.countdown?.dispose();
47
60
  this.countdown = undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"status-indicator.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/status-indicator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype Component,\n\tLoader,\n\ttype LoaderIndicatorOptions,\n\tsliceByColumn,\n\ttype TUI,\n\ttruncateToWidth,\n\tvisibleWidth,\n} from \"@earendil-works/pi-tui\";\nimport { theme } from \"../theme/theme.ts\";\nimport { CountdownTimer } from \"./countdown-timer.ts\";\nimport { keyText } from \"./keybinding-hints.ts\";\n\nexport type StatusIndicatorKind = \"working\" | \"retry\" | \"compaction\" | \"branchSummary\";\n\nexport class StatusIndicator extends Loader {\n\treadonly kind: StatusIndicatorKind;\n\n\tconstructor(\n\t\tkind: StatusIndicatorKind,\n\t\tui: TUI,\n\t\tspinnerColorFn: (str: string) => string,\n\t\tmessageColorFn: (str: string) => string,\n\t\tmessage: string,\n\t\tindicator?: LoaderIndicatorOptions,\n\t) {\n\t\tsuper(ui, spinnerColorFn, messageColorFn, message, indicator);\n\t\tthis.kind = kind;\n\t}\n\n\trenderInBorder(width: number): string {\n\t\tconst line = super.render(width + 2)[1] ?? \"\";\n\t\treturn truncateToWidth(line.startsWith(\" \") ? line.slice(1).trimEnd() : line.trimEnd(), width, \"\");\n\t}\n\n\trenderSpinnerInBorder(width: number): string {\n\t\treturn truncateToWidth(this.getRenderedIndicator(), width, \"\");\n\t}\n\n\tdispose(): void {\n\t\tthis.stop();\n\t}\n\n\tsetProgressText(_progressText: string): void {\n\t\t// Only compaction status renders progress.\n\t}\n}\n\nexport class WorkingStatusIndicator extends StatusIndicator {\n\tconstructor(ui: TUI, message: string, indicator?: LoaderIndicatorOptions, colorFn?: (text: string) => string) {\n\t\tsuper(\n\t\t\t\"working\",\n\t\t\tui,\n\t\t\tcolorFn ?? ((text) => theme.fg(\"accent\", text)),\n\t\t\tcolorFn ?? ((text) => theme.fg(\"muted\", text)),\n\t\t\tmessage,\n\t\t\tindicator,\n\t\t);\n\t}\n}\n\nexport class RetryStatusIndicator extends StatusIndicator {\n\tprivate countdown: CountdownTimer | undefined;\n\n\tconstructor(ui: TUI, attempt: number, maxAttempts: number, delayMs: number, indicator?: LoaderIndicatorOptions) {\n\t\tconst retryMessage = (seconds: number) =>\n\t\t\t`Retrying (${attempt}/${maxAttempts}) in ${seconds}s... (${keyText(\"app.interrupt\")} to cancel)`;\n\t\tconst retryIndicator =\n\t\t\tindicator === undefined\n\t\t\t\t? undefined\n\t\t\t\t: {\n\t\t\t\t\t\t...indicator,\n\t\t\t\t\t\tindicatorFormatter: indicator.indicatorFormatter ?? ((spinner) => theme.fg(\"warning\", spinner)),\n\t\t\t\t\t};\n\t\tsuper(\n\t\t\t\"retry\",\n\t\t\tui,\n\t\t\t(spinner) => theme.fg(\"warning\", spinner),\n\t\t\t(text) => theme.fg(\"muted\", text),\n\t\t\tretryMessage(Math.ceil(delayMs / 1000)),\n\t\t\tretryIndicator,\n\t\t);\n\t\tthis.countdown = new CountdownTimer(\n\t\t\tdelayMs,\n\t\t\tui,\n\t\t\t(seconds) => {\n\t\t\t\tthis.setMessage(retryMessage(seconds));\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis.countdown = undefined;\n\t\t\t},\n\t\t);\n\t}\n\n\toverride dispose(): void {\n\t\tthis.countdown?.dispose();\n\t\tthis.countdown = undefined;\n\t\tsuper.dispose();\n\t}\n}\n\nexport type CompactionStatusReason = \"manual\" | \"threshold\" | \"overflow\" | \"pre_prompt\" | \"branch\" | \"extension\";\n\nexport class CompactionStatusIndicator extends StatusIndicator {\n\tprivate progressText = \"\";\n\tprivate readonly progressLabel: string;\n\n\tconstructor(ui: TUI, reason: CompactionStatusReason) {\n\t\tconst cancelHint = `(${keyText(\"app.interrupt\")} to cancel)`;\n\t\tconst label =\n\t\t\treason === \"manual\"\n\t\t\t\t? `Compacting context... ${cancelHint}`\n\t\t\t\t: reason === \"overflow\"\n\t\t\t\t\t? `Context overflow detected, compacting... ${cancelHint}`\n\t\t\t\t\t: reason === \"pre_prompt\"\n\t\t\t\t\t\t? `Compacting before next prompt... ${cancelHint}`\n\t\t\t\t\t\t: reason === \"threshold\"\n\t\t\t\t\t\t\t? `Auto-compacting... ${cancelHint}`\n\t\t\t\t\t\t\t: `Compacting context... ${cancelHint}`;\n\t\tsuper(\n\t\t\t\"compaction\",\n\t\t\tui,\n\t\t\t(spinner) => theme.fg(\"accent\", spinner),\n\t\t\t(text) => theme.fg(\"muted\", text),\n\t\t\tlabel,\n\t\t);\n\t\t// Once a streamed preview needs room, the reason-specific label collapses to the\n\t\t// shortest form that still keeps the cancellation hint fully visible.\n\t\tthis.progressLabel = `Compacting... ${cancelHint}`;\n\t}\n\n\tsetProgressText(progressText: string): void {\n\t\tif (!this.progressText && progressText) this.setMessage(this.progressLabel);\n\t\tthis.progressText = progressText;\n\t}\n\n\toverride renderInBorder(width: number): string {\n\t\t// The embedded editor border goes through this hook, not render(), so route it through the\n\t\t// single-row render below to keep the cancellation hint and the streamed preview.\n\t\treturn truncateToWidth((this.render(width)[0] ?? \"\").trim(), width, \"\");\n\t}\n\n\toverride render(width: number): string[] {\n\t\t// Loader.render() prepends a spacer row; joining keeps this indicator a single row\n\t\t// whether or not a preview is present, so the composer never shifts between states.\n\t\t// Text pads rows to the full width, so trailing padding is stripped before measuring.\n\t\tlet status = super.render(width).join(\" \").trimEnd();\n\t\t// On narrow terminals the reason-specific label can wrap even before any preview\n\t\t// arrives, and head-truncating the joined rows would drop the cancellation hint.\n\t\t// Collapse to the compact label whenever the full status cannot fit on one row.\n\t\tif (visibleWidth(status) > width) {\n\t\t\tthis.setMessage(this.progressLabel);\n\t\t\tstatus = super.render(width).join(\" \").trimEnd();\n\t\t}\n\t\tif (!this.progressText) return [truncateToWidth(status, width)];\n\t\t// The status label (with its cancellation hint) is allocated first; the preview only\n\t\t// receives whatever width is left over instead of starving the hint out of the row.\n\t\tconst progressWidth = Math.min(visibleWidth(this.progressText), width - visibleWidth(status) - 1);\n\t\tif (progressWidth <= 0) return [truncateToWidth(status, width)];\n\t\t// The preview is accumulated summary text, so keep the newest trailing columns.\n\t\tconst totalProgressWidth = visibleWidth(this.progressText);\n\t\tconst progressTail =\n\t\t\ttotalProgressWidth > progressWidth\n\t\t\t\t? sliceByColumn(this.progressText, totalProgressWidth - progressWidth, progressWidth)\n\t\t\t\t: this.progressText;\n\t\treturn [truncateToWidth(`${status} ${theme.fg(\"muted\", progressTail)}`, width)];\n\t}\n}\n\nexport class BranchSummaryStatusIndicator extends StatusIndicator {\n\tconstructor(ui: TUI) {\n\t\tsuper(\n\t\t\t\"branchSummary\",\n\t\t\tui,\n\t\t\t(spinner) => theme.fg(\"accent\", spinner),\n\t\t\t(text) => theme.fg(\"muted\", text),\n\t\t\t`Summarizing branch... (${keyText(\"app.interrupt\")} to cancel)`,\n\t\t);\n\t}\n}\n\nexport class IdleStatus implements Component {\n\tprivate height: number;\n\n\tconstructor(height = 2) {\n\t\tthis.height = height;\n\t}\n\n\tsetHeight(height: number): void {\n\t\tthis.height = height;\n\t}\n\n\tinvalidate(): void {\n\t\t// No cached state to invalidate.\n\t}\n\n\trender(width: number): string[] {\n\t\tconst emptyLine = \" \".repeat(width);\n\t\treturn Array.from({ length: this.height }, () => emptyLine);\n\t}\n}\n"]}
1
+ {"version":3,"file":"status-indicator.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/status-indicator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype Component,\n\tLoader,\n\ttype LoaderIndicatorOptions,\n\tsliceByColumn,\n\ttype TUI,\n\ttruncateToWidth,\n\tvisibleWidth,\n} from \"@earendil-works/pi-tui\";\nimport { theme } from \"../theme/theme.ts\";\nimport { CountdownTimer } from \"./countdown-timer.ts\";\nimport { keyText } from \"./keybinding-hints.ts\";\n\nexport type StatusIndicatorKind = \"working\" | \"retry\" | \"compaction\" | \"branchSummary\";\n\nexport class StatusIndicator extends Loader {\n\treadonly kind: StatusIndicatorKind;\n\n\tconstructor(\n\t\tkind: StatusIndicatorKind,\n\t\tui: TUI,\n\t\tspinnerColorFn: (str: string) => string,\n\t\tmessageColorFn: (str: string) => string,\n\t\tmessage: string,\n\t\tindicator?: LoaderIndicatorOptions,\n\t) {\n\t\tsuper(ui, spinnerColorFn, messageColorFn, message, indicator);\n\t\tthis.kind = kind;\n\t}\n\n\trenderInBorder(width: number): string {\n\t\tconst line = super.render(width + 2)[1] ?? \"\";\n\t\treturn truncateToWidth(line.startsWith(\" \") ? line.slice(1).trimEnd() : line.trimEnd(), width, \"\");\n\t}\n\n\trenderSpinnerInBorder(width: number): string {\n\t\treturn truncateToWidth(this.getRenderedIndicator(), width, \"\");\n\t}\n\n\tdispose(): void {\n\t\tthis.stop();\n\t}\n\n\tsetProgressText(_progressText: string): void {\n\t\t// Only compaction status renders progress.\n\t}\n}\n\nexport class WorkingStatusIndicator extends StatusIndicator {\n\tconstructor(ui: TUI, message: string, indicator?: LoaderIndicatorOptions, colorFn?: (text: string) => string) {\n\t\tsuper(\n\t\t\t\"working\",\n\t\t\tui,\n\t\t\tcolorFn ?? ((text) => theme.fg(\"accent\", text)),\n\t\t\tcolorFn ?? ((text) => theme.fg(\"muted\", text)),\n\t\t\tmessage,\n\t\t\tindicator,\n\t\t);\n\t}\n}\n\nexport class RetryStatusIndicator extends StatusIndicator {\n\tprivate countdown: CountdownTimer | undefined;\n\tprivate compactMessage: string | undefined;\n\n\tconstructor(\n\t\tui: TUI,\n\t\tattempt: number,\n\t\tmaxAttempts: number,\n\t\tdelayMs: number,\n\t\tindicator?: LoaderIndicatorOptions,\n\t\tproviderTrouble = false,\n\t) {\n\t\tconst retryMessage = (seconds: number) =>\n\t\t\tproviderTrouble\n\t\t\t\t? `The model provider may be having trouble. Retrying... (${attempt}/${maxAttempts}, ${seconds > 0 ? `in ${seconds}s` : \"now\"}; ${keyText(\"app.interrupt\")} to cancel)`\n\t\t\t\t: `Retrying (${attempt}/${maxAttempts}) in ${seconds}s... (${keyText(\"app.interrupt\")} to cancel)`;\n\t\tconst compactMessage = (seconds: number) =>\n\t\t\t`Retrying ${attempt}/${maxAttempts} ${seconds > 0 ? `in ${seconds}s` : \"now\"} (${keyText(\"app.interrupt\")} cancel)`;\n\t\tconst retryIndicator =\n\t\t\tindicator === undefined\n\t\t\t\t? undefined\n\t\t\t\t: {\n\t\t\t\t\t\t...indicator,\n\t\t\t\t\t\tindicatorFormatter: indicator.indicatorFormatter ?? ((spinner) => theme.fg(\"warning\", spinner)),\n\t\t\t\t\t};\n\t\tsuper(\n\t\t\t\"retry\",\n\t\t\tui,\n\t\t\t(spinner) => theme.fg(\"warning\", spinner),\n\t\t\t(text) => theme.fg(\"muted\", text),\n\t\t\tretryMessage(Math.ceil(delayMs / 1000)),\n\t\t\tretryIndicator,\n\t\t);\n\t\tif (providerTrouble) this.compactMessage = compactMessage(Math.ceil(delayMs / 1000));\n\t\tthis.countdown = new CountdownTimer(\n\t\t\tdelayMs,\n\t\t\tui,\n\t\t\t(seconds) => {\n\t\t\t\tif (providerTrouble) this.compactMessage = compactMessage(seconds);\n\t\t\t\tthis.setMessage(retryMessage(seconds));\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis.countdown = undefined;\n\t\t\t},\n\t\t);\n\t}\n\n\toverride renderInBorder(width: number): string {\n\t\tif (this.compactMessage && super.render(width + 2).length > 2) {\n\t\t\treturn truncateToWidth(`${this.getRenderedIndicator()} ${theme.fg(\"muted\", this.compactMessage)}`, width, \"\");\n\t\t}\n\t\treturn super.renderInBorder(width);\n\t}\n\n\toverride dispose(): void {\n\t\tthis.countdown?.dispose();\n\t\tthis.countdown = undefined;\n\t\tsuper.dispose();\n\t}\n}\n\nexport type CompactionStatusReason = \"manual\" | \"threshold\" | \"overflow\" | \"pre_prompt\" | \"branch\" | \"extension\";\n\nexport class CompactionStatusIndicator extends StatusIndicator {\n\tprivate progressText = \"\";\n\tprivate readonly progressLabel: string;\n\n\tconstructor(ui: TUI, reason: CompactionStatusReason) {\n\t\tconst cancelHint = `(${keyText(\"app.interrupt\")} to cancel)`;\n\t\tconst label =\n\t\t\treason === \"manual\"\n\t\t\t\t? `Compacting context... ${cancelHint}`\n\t\t\t\t: reason === \"overflow\"\n\t\t\t\t\t? `Context overflow detected, compacting... ${cancelHint}`\n\t\t\t\t\t: reason === \"pre_prompt\"\n\t\t\t\t\t\t? `Compacting before next prompt... ${cancelHint}`\n\t\t\t\t\t\t: reason === \"threshold\"\n\t\t\t\t\t\t\t? `Auto-compacting... ${cancelHint}`\n\t\t\t\t\t\t\t: `Compacting context... ${cancelHint}`;\n\t\tsuper(\n\t\t\t\"compaction\",\n\t\t\tui,\n\t\t\t(spinner) => theme.fg(\"accent\", spinner),\n\t\t\t(text) => theme.fg(\"muted\", text),\n\t\t\tlabel,\n\t\t);\n\t\t// Once a streamed preview needs room, the reason-specific label collapses to the\n\t\t// shortest form that still keeps the cancellation hint fully visible.\n\t\tthis.progressLabel = `Compacting... ${cancelHint}`;\n\t}\n\n\tsetProgressText(progressText: string): void {\n\t\tif (!this.progressText && progressText) this.setMessage(this.progressLabel);\n\t\tthis.progressText = progressText;\n\t}\n\n\toverride renderInBorder(width: number): string {\n\t\t// The embedded editor border goes through this hook, not render(), so route it through the\n\t\t// single-row render below to keep the cancellation hint and the streamed preview.\n\t\treturn truncateToWidth((this.render(width)[0] ?? \"\").trim(), width, \"\");\n\t}\n\n\toverride render(width: number): string[] {\n\t\t// Loader.render() prepends a spacer row; joining keeps this indicator a single row\n\t\t// whether or not a preview is present, so the composer never shifts between states.\n\t\t// Text pads rows to the full width, so trailing padding is stripped before measuring.\n\t\tlet status = super.render(width).join(\" \").trimEnd();\n\t\t// On narrow terminals the reason-specific label can wrap even before any preview\n\t\t// arrives, and head-truncating the joined rows would drop the cancellation hint.\n\t\t// Collapse to the compact label whenever the full status cannot fit on one row.\n\t\tif (visibleWidth(status) > width) {\n\t\t\tthis.setMessage(this.progressLabel);\n\t\t\tstatus = super.render(width).join(\" \").trimEnd();\n\t\t}\n\t\tif (!this.progressText) return [truncateToWidth(status, width)];\n\t\t// The status label (with its cancellation hint) is allocated first; the preview only\n\t\t// receives whatever width is left over instead of starving the hint out of the row.\n\t\tconst progressWidth = Math.min(visibleWidth(this.progressText), width - visibleWidth(status) - 1);\n\t\tif (progressWidth <= 0) return [truncateToWidth(status, width)];\n\t\t// The preview is accumulated summary text, so keep the newest trailing columns.\n\t\tconst totalProgressWidth = visibleWidth(this.progressText);\n\t\tconst progressTail =\n\t\t\ttotalProgressWidth > progressWidth\n\t\t\t\t? sliceByColumn(this.progressText, totalProgressWidth - progressWidth, progressWidth)\n\t\t\t\t: this.progressText;\n\t\treturn [truncateToWidth(`${status} ${theme.fg(\"muted\", progressTail)}`, width)];\n\t}\n}\n\nexport class BranchSummaryStatusIndicator extends StatusIndicator {\n\tconstructor(ui: TUI) {\n\t\tsuper(\n\t\t\t\"branchSummary\",\n\t\t\tui,\n\t\t\t(spinner) => theme.fg(\"accent\", spinner),\n\t\t\t(text) => theme.fg(\"muted\", text),\n\t\t\t`Summarizing branch... (${keyText(\"app.interrupt\")} to cancel)`,\n\t\t);\n\t}\n}\n\nexport class IdleStatus implements Component {\n\tprivate height: number;\n\n\tconstructor(height = 2) {\n\t\tthis.height = height;\n\t}\n\n\tsetHeight(height: number): void {\n\t\tthis.height = height;\n\t}\n\n\tinvalidate(): void {\n\t\t// No cached state to invalidate.\n\t}\n\n\trender(width: number): string[] {\n\t\tconst emptyLine = \" \".repeat(width);\n\t\treturn Array.from({ length: this.height }, () => emptyLine);\n\t}\n}\n"]}
@@ -189,6 +189,7 @@ export declare class InteractiveMode {
189
189
  private externalOwnerCompactionNoticeShown;
190
190
  private autoCompactionProgressText;
191
191
  private retryEscapeHandler?;
192
+ private providerErrors;
192
193
  private fallbackAppliedBeforeRetryStart;
193
194
  private pendingZeroDelayRetryIndicator;
194
195
  private compactionQueuedMessages;
@@ -590,6 +591,7 @@ export declare class InteractiveMode {
590
591
  private handleOpenExternalEditor;
591
592
  clearEditor(): void;
592
593
  showError(errorMessage: string): void;
594
+ private getProviderErrors;
593
595
  showNoticeBox(spec: NoticeSpec): void;
594
596
  showWarning(warningMessage: string): void;
595
597
  showNewVersionNotification(newVersion: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEjF,OAAO,KAAK,EAAoB,YAAY,EAAW,KAAK,EAAsB,MAAM,8BAA8B,CAAC;AAsDvH,OAAO,EACN,KAAK,iBAAiB,EAItB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,KAAK,mBAAmB,EAAkC,MAAM,qCAAqC,CAAC;AAC/G,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AA2BrE,OAAO,EAAmC,KAAK,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAsBzG,OAAO,EAAqB,cAAc,EAAiC,MAAM,+BAA+B,CAAC;AACjH,OAAO,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAqGpF,OAAO,EAAc,KAAK,iBAAiB,EAA0B,MAAM,kBAAkB,CAAC;AAgE9F,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AA8ExF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,OAAO,CAE3F;AAwJD,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAatF;AAUD,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAuDjC,KAAK,8BAA8B,GAAG;IACrC,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IACrC,MAAM,IAAI,IAAI,CAAC;CACf,CAAC;AAmBF,yFAAyF;AACzF,qBAAa,4BAA4B;IACxC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;IAE1E,YAAY,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,8BAA8B,EAEnE;IAED,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI1B;IAED,0GAA0G;IAC1G,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG;QACtC,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;QAC5C,iBAAiB,EAAE,CAAC,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,KAAK,IAAI,CAAC;KAC3E,CAgBA;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAMnC;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEnC;IAED,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAO1C;CACD;AAED,6FAA6F;AAC7F,UAAU,oBAAoB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,8FAA8F;IAC9F,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAmFD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpF,4DAA4D;IAC5D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qGAAqG;IACrG,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iDAAiD;IACjD,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IACpC,uBAAuB;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC7B;AA+ED,qBAAa,eAAe;IAC3B,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAO9C,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,wBAAwB,CAAY;IAC5C,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,oBAAoB,CAAwB;IACpD,OAAO,CAAC,wBAAwB,CAAY;IAC5C,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IACxD,OAAO,CAAC,mBAAmB,CAAY;IACvC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,sBAAsB,CAA4B;IAC1D,OAAO,CAAC,oBAAoB,CAAmC;IAC/D,OAAO,CAAC,4BAA4B,CAAqC;IACzE,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,qBAAqB,CAAC,CAAa;IAC3C,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAwC;IAChE,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA+B;IACpE;;;;;;OAMG;IACH,OAAO,CAAC,aAAa,CAAmC;IACxD;;;;;;;;OAQG;IACH,OAAO,CAAC,2BAA2B,CAAC,CAAiB;IACrD,OAAO,CAAC,qBAAqB,CAA0C;IACvE,OAAO,CAAC,8BAA8B,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,uBAAuB,CAAkD;IACjF,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAa;IACnD,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAiB;IAC5D,OAAO,CAAC,mBAAmB,CAAmC;IAC9D,OAAO,CAAC,oBAAoB,CAA6B;IACzD,OAAO,CAAC,gCAAgC,CAAiC;IACzE,OAAO,CAAC,8BAA8B,CAAiC;IACvE,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,oBAAoB,CAAyC;IACrE,OAAO,CAAC,uBAAuB,CAAiC;IAChE,OAAO,CAAC,sBAAsB,CAAiC;IAE/D,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,iCAAiC,CAAS;IAGlD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,wBAAwB,CAAS;IAGzC,OAAO,CAAC,kBAAkB,CAAoD;IAC9E,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgD;IACtF,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2B;IAC1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAG9D,OAAO,CAAC,YAAY,CAA6C;IACjE,OAAO,CAAC,sBAAsB;IAG9B,OAAO,CAAC,6BAA6B;IAQrC,OAAO,CAAC,kBAAkB,CAAS;IAGnC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAGxC;IAGH,OAAO,CAAC,aAAa,CAA6B;IAGlD,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,qBAAqB,CAAyB;IAGtD,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,aAAa,CAAiD;IAGtE,OAAO,CAAC,qBAAqB,CAAgC;IAG7D,OAAO,CAAC,2BAA2B,CAAC,CAAa;IACjD,OAAO,CAAC,8BAA8B,CAAS;IAC/C;;;;OAIG;IACH,OAAO,CAAC,kCAAkC,CAAS;IACnD,OAAO,CAAC,0BAA0B,CAAM;IAGxC,OAAO,CAAC,kBAAkB,CAAC,CAAa;IACxC,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,+BAA+B,CAAS;IAChD,OAAO,CAAC,8BAA8B,CAAyD;IAG/F,OAAO,CAAC,wBAAwB,CAAiC;IACjE,OAAO,CAAC,0BAA0B,CAAiC;IACnE,OAAO,CAAC,kCAAkC,CAAuD;IACjG,OAAO,CAAC,wBAAwB,CAA4B;IAC5D,OAAO,CAAC,yBAAyB,CAAK;IAGtC,OAAO,CAAC,iBAAiB,CAAS;IAGlC,OAAO,CAAC,iBAAiB,CAAqD;IAC9E,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,gBAAgB,CAAyC;IACjE,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAkD;IACzE,OAAO,CAAC,mBAAmB,CAA8E;IACzG,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAc;IACrD,OAAO,CAAC,sBAAsB,CAAqB;IACnD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,OAAO,CAAC,uBAAuB,CAAC,CAAa;IAC7C,OAAO,CAAC,mBAAmB,CAAS;IAEpC,OAAO,KAAK,aAAa,GAExB;IACD,OAAO,CAAC,mCAAmC,CAGtC;IAGL,OAAO,CAAC,qBAAqB,CAAuD;IACpF,OAAO,CAAC,qBAAqB,CAAuD;IACpF,OAAO,CAAC,oBAAoB,CAAa;IACzC,OAAO,CAAC,oBAAoB,CAAa;IAGzC,OAAO,CAAC,YAAY,CAA6D;IAGjF,OAAO,CAAC,eAAe,CAAY;IAGnC,OAAO,CAAC,aAAa,CAAoC;IAGzD,OAAO,CAAC,YAAY,CAA6D;IAEjF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAEhC;IACF,OAAO,CAAC,oBAAoB,CAAqB;IACjD,OAAO,CAAC,eAAe,CAA6B;IAKpD,OAAO,KAAK,OAAO,GAElB;IACD,OAAO,KAAK,cAAc,GAEzB;IACD,OAAO,KAAK,eAAe,GAE1B;IAED,YAAY,WAAW,EAAE,mBAAmB,EAAE,OAAO,GAAE,sBAA2B,EA0GjF;IAED,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,6BAA6B;IAQrC,OAAO,CAAC,oCAAoC;IAe5C,OAAO,CAAC,8BAA8B;IAqFtC,OAAO,CAAC,yBAAyB;IAkBjC,OAAO,CAAC,0BAA0B;IA8BlC,OAAO,KAAK,iBAAiB,GAG5B;IAED,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,aAAa;IA2Df,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAyM1B;IAED;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,mBAAmB;IAI3B;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAmHzB;YAEa,sBAAsB;YAItB,cAAc;YAId,sBAAsB;IAoDpC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,4BAA4B;IAWpC,OAAO,CAAC,8BAA8B;IAItC,OAAO,CAAC,+BAA+B;IASvC,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,0BAA0B;IAMlC,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,wBAAwB;YAIlB,wBAAwB;IAiCtC,OAAO,CAAC,qBAAqB;IAkB7B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,cAAc;IAMtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqCpB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,4BAA4B;IAcpC,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,6BAA6B;IAOrC,OAAO,CAAC,kCAAkC;IA2B1C,OAAO,CAAC,yBAAyB;IA8BjC,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,iBAAiB;IAqDzB,OAAO,CAAC,mBAAmB;IA6O3B;;OAEG;YACW,4BAA4B;IA4F1C,OAAO,CAAC,+BAA+B;IAIvC,OAAO,CAAC,oBAAoB;YA6Bd,oBAAoB;YA6BpB,uBAAuB;IAQrC,OAAO,CAAC,yBAAyB;IAoBjC;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,uBAAuB;IAI/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;YA6EjB,qBAAqB;YASrB,mBAAmB;IAyHjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,uBAAuB;IA6B/B,OAAO,CAAC,yBAAyB;IAkCjC,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,8BAA8B;IAgBtC,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,0BAA0B;IAsClC,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,6BAA6B;IAMrC,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,sBAAsB;IAa9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA+C1B,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,gBAAgB;IA6CxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IAE9C;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,qBAAqB;IAuB7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,iCAAiC;IAczC,OAAO,CAAC,qCAAqC;IAO7C,OAAO,CAAC,oCAAoC;IAK5C;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,wBAAwB;IA0EhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA6C7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;YACW,oBAAoB;YASpB,0BAA0B;IAQxC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyC1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsD3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B,uFAAuF;IACvF,OAAO,CAAC,iBAAiB;IAqDzB,gFAAgF;IAChF,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,oBAAoB;IAQ5B,oFAAoF;IACpF,OAAO,CAAC,qBAAqB;IAwC7B,OAAO,CAAC,gBAAgB;YAcV,mBAAmB;IA+DjC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IA4C7B;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAWlC;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAkHhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B,oGAAoG;YACtF,mBAAmB;IAgFjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,gBAAgB;YAyGV,qBAAqB;YAcrB,oBAAoB;IAqClC,kFAAkF;IAClF,OAAO,CAAC,qBAAqB;IAkB7B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,sBAAsB;IAa9B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,mBAAmB;IAa3B;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,wBAAwB;IA4QhC,OAAO,CAAC,gBAAgB;YAMV,WAAW;IA4qBzB,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,qCAAqC;IAM7C,OAAO,CAAC,mCAAmC;IA0B3C,+CAA+C;IAC/C,OAAO,CAAC,kBAAkB;IAS1B,qDAAqD;IACrD,OAAO,CAAC,qBAAqB;IAa7B;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,qBAAqB;IAwC7B,OAAO,CAAC,gBAAgB;IA0HxB,OAAO,CAAC,yBAAyB;IAgEjC,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,4BAA4B;IA8BpC,OAAO,CAAC,kBAAkB;IA2F1B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,6BAA6B;IA0BrC;;;;OAIG;IACH,2FAA2F;IAC3F,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,kBAAkB;IAgB1B,qBAAqB,IAAI,IAAI,CAmB5B;IAED,OAAO,CAAC,iCAAiC;IAoBnC,YAAY,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAYlD;IAOD,OAAO,CAAC,0BAA0B;IAwBlC,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;IAKnB;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAAS;YAEjB,QAAQ;IA6CtB,OAAO,CAAC,qBAAqB;IAiB7B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,aAAa;IA0CrB;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAOhC;;OAEG;YACW,sBAAsB;IAKpC,OAAO,CAAC,sBAAsB;IAuD9B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,WAAW;YAyCL,cAAc;IAsE5B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,uBAAuB;YAgBjB,kBAAkB;YAWlB,UAAU;IAmCxB,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,6BAA6B;YAqBvB,wBAAwB;IA0BtC,WAAW,IAAI,IAAI,CAGlB;IAED,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CASpC;IAED,OAAO,CAAC,iBAAiB;IAKzB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAkBpC;IAED,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAIxC;IAED,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAUnD;IAED,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAI7D;IAED,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE;QAAE,IAAI,EAAE,0BAA0B,CAAA;KAAE,CAAC,GAAG,IAAI,CAExG;IAED,wBAAwB,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,aAAa,CAAA;KAAE,GAAG,IAAI,CAWzG;IAED,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAUtD;IAED;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAwDtB,OAAO,CAAC,4BAA4B;IAmBpC,OAAO,CAAC,6BAA6B;IAuBrC;;;;;;;;OAQG;YACW,0BAA0B;IAmBxC,OAAO,CAAC,sBAAsB;IAsB9B;;;;;;;OAOG;IACH,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,kBAAkB;YAUZ,oBAAoB;IA8GlC,6DAA6D;IAC7D,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,qBAAqB;IAO7B;;;OAGG;IACH,OAAO,CAAC,YAAY;YA6BN,oBAAoB;YAuQpB,kBAAkB;YAelB,mBAAmB;YAkCnB,iBAAiB;YAyBjB,0BAA0B;YAe1B,wBAAwB;YAcxB,8BAA8B;YAS9B,sBAAsB;IA+BpC,0GAA0G;IAC1G,OAAO,CAAC,4BAA4B;YAStB,uCAAuC;IA8BrD,OAAO,CAAC,wCAAwC;IA0BhD,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,iBAAiB;YAiCX,0BAA0B;IAuCxC,OAAO,CAAC,wBAAwB;YA0HlB,uBAAuB;YAuCvB,kBAAkB;IAqBhC,OAAO,CAAC,gBAAgB;YA6DV,4BAA4B;IA2C1C,8GAA8G;IAC9G,OAAO,CAAC,kCAAkC;YAe5B,yBAAyB;YAoBzB,iBAAiB;IAiF/B,OAAO,CAAC,mBAAmB;YAsCb,mBAAmB;IAqCjC,OAAO,CAAC,uBAAuB;YAgCjB,wBAAwB;IAetC,OAAO,CAAC,wBAAwB;YAalB,kBAAkB;YAuBlB,kBAAkB;IAUhC,OAAO,CAAC,yBAAyB;IA0DjC,OAAO,CAAC,yBAAyB;YA2CnB,iBAAiB;YA4DjB,8BAA8B;IA2G5C,OAAO,CAAC,qBAAqB;YA2Bf,qBAAqB;IA0CnC,OAAO,CAAC,cAAc;YAiCR,cAAc;IAwB5B,OAAO,CAAC,gBAAgB;YAaV,aAAa;YAYb,eAAe;IAyB7B,6FAA6F;IAC7F,OAAO,CAAC,gBAAgB;YASV,mBAAmB;YAwHnB,mBAAmB;IAkBjC,OAAO,CAAC,sBAAsB;YA6BhB,mBAAmB;YA4CnB,kBAAkB;YAoGlB,iBAAiB;IA+B/B,sFAAsF;YACxE,mBAAmB;IASjC,oEAAoE;YACtD,gBAAgB;IAW9B,iFAAiF;IACjF,OAAO,CAAC,sBAAsB;YAiBhB,mBAAmB;YAUnB,oBAAoB;IAgElC,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,oBAAoB;YAyHd,kBAAkB;IAehC,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,qBAAqB;YAMf,iBAAiB;YAuFjB,oBAAoB;IAkBlC,IAAI,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAiCvE;CACD"}