@oh-my-pi/pi-coding-agent 17.2.10 → 17.2.12

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 (247) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/{CHANGELOG-rhwzpexa.md → CHANGELOG-k9ghy5sn.md} +53 -0
  3. package/dist/cli.js +10775 -10762
  4. package/dist/types/advisor/runtime.d.ts +1 -1
  5. package/dist/types/capability/mcp.d.ts +11 -0
  6. package/dist/types/capability/skill.d.ts +6 -0
  7. package/dist/types/cli/command-help.d.ts +3 -0
  8. package/dist/types/commands/share.d.ts +25 -0
  9. package/dist/types/commit/agentic/index.d.ts +3 -1
  10. package/dist/types/commit/execute.d.ts +32 -0
  11. package/dist/types/commit/index.d.ts +2 -1
  12. package/dist/types/commit/pipeline.d.ts +7 -1
  13. package/dist/types/config/custom-models.d.ts +31 -0
  14. package/dist/types/config/model-config-values.d.ts +19 -0
  15. package/dist/types/config/model-patch.d.ts +93 -0
  16. package/dist/types/config/model-provider-discovery.d.ts +51 -0
  17. package/dist/types/config/model-registry.d.ts +9 -52
  18. package/dist/types/config/settings-schema.d.ts +1 -34
  19. package/dist/types/config/settings.d.ts +5 -3
  20. package/dist/types/debug/raw-sse-buffer.d.ts +9 -0
  21. package/dist/types/discovery/agent-plugin-format.d.ts +136 -0
  22. package/dist/types/discovery/agent-plugins.d.ts +1 -0
  23. package/dist/types/discovery/contained-path.d.ts +33 -0
  24. package/dist/types/discovery/index.d.ts +1 -0
  25. package/dist/types/eval/executor-base.d.ts +8 -2
  26. package/dist/types/eval/kernel-session-registry.d.ts +60 -0
  27. package/dist/types/export/share.d.ts +1 -1
  28. package/dist/types/extensibility/custom-tools/types.d.ts +2 -2
  29. package/dist/types/extensibility/extensions/loader.d.ts +7 -0
  30. package/dist/types/extensibility/extensions/types.d.ts +11 -0
  31. package/dist/types/extensibility/shared-events.d.ts +3 -2
  32. package/dist/types/extensibility/skills.d.ts +5 -0
  33. package/dist/types/lsp/diagnostics.d.ts +96 -0
  34. package/dist/types/lsp/index.d.ts +7 -128
  35. package/dist/types/lsp/servers.d.ts +72 -0
  36. package/dist/types/lsp/tool.d.ts +42 -0
  37. package/dist/types/lsp/workspace-diagnostics.d.ts +12 -0
  38. package/dist/types/lsp/writethrough.d.ts +33 -0
  39. package/dist/types/mcp/transports/header-policy.d.ts +46 -0
  40. package/dist/types/mcp/types.d.ts +15 -0
  41. package/dist/types/modes/components/agent-hub-projection.d.ts +2 -7
  42. package/dist/types/modes/components/agent-hub-renderer.d.ts +0 -7
  43. package/dist/types/modes/components/agent-hub.d.ts +2 -0
  44. package/dist/types/modes/components/agent-transcript-viewer.d.ts +2 -0
  45. package/dist/types/modes/components/chat-transcript-builder.d.ts +2 -0
  46. package/dist/types/modes/components/custom-editor.d.ts +1 -2
  47. package/dist/types/modes/components/status-line/types.d.ts +2 -0
  48. package/dist/types/modes/components/tool-execution.d.ts +2 -0
  49. package/dist/types/modes/theme/color.d.ts +19 -0
  50. package/dist/types/modes/theme/loader.d.ts +19 -0
  51. package/dist/types/modes/theme/schema.d.ts +175 -0
  52. package/dist/types/modes/theme/symbols.d.ts +28 -0
  53. package/dist/types/modes/theme/theme-class.d.ts +244 -0
  54. package/dist/types/modes/theme/theme.d.ts +9 -280
  55. package/dist/types/modes/theme/tui-adapters.d.ts +13 -0
  56. package/dist/types/modes/utils/transcript-render-helpers.d.ts +3 -2
  57. package/dist/types/registry/agent-registry.d.ts +1 -3
  58. package/dist/types/secrets/index.d.ts +26 -2
  59. package/dist/types/secrets/message-transform.d.ts +40 -0
  60. package/dist/types/secrets/obfuscator.d.ts +0 -108
  61. package/dist/types/secrets/placeholder-scan.d.ts +95 -0
  62. package/dist/types/secrets/placeholder.d.ts +94 -0
  63. package/dist/types/secrets/replacement.d.ts +82 -0
  64. package/dist/types/session/agent-session-events.d.ts +2 -2
  65. package/dist/types/session/agent-session-types.d.ts +6 -0
  66. package/dist/types/session/agent-session.d.ts +2 -2
  67. package/dist/types/session/messages.d.ts +1 -0
  68. package/dist/types/session/prewalk.d.ts +3 -1
  69. package/dist/types/session/session-handoff.d.ts +3 -3
  70. package/dist/types/session/session-manager.d.ts +32 -0
  71. package/dist/types/session/session-provider-boundary.d.ts +1 -1
  72. package/dist/types/session/session-tools.d.ts +8 -0
  73. package/dist/types/session/turn-recovery.d.ts +9 -4
  74. package/dist/types/slash-commands/builtin-collaboration.d.ts +2 -0
  75. package/dist/types/slash-commands/builtin-completions.d.ts +36 -0
  76. package/dist/types/slash-commands/builtin-control.d.ts +2 -0
  77. package/dist/types/slash-commands/builtin-lifecycle.d.ts +3 -0
  78. package/dist/types/slash-commands/builtin-marketplace.d.ts +11 -0
  79. package/dist/types/slash-commands/builtin-modes.d.ts +5 -0
  80. package/dist/types/slash-commands/builtin-registry.d.ts +1 -1
  81. package/dist/types/slash-commands/builtin-session.d.ts +2 -0
  82. package/dist/types/task/index.d.ts +2 -0
  83. package/dist/types/tools/gh-common.d.ts +69 -0
  84. package/dist/types/tools/gh-pr-checkout.d.ts +84 -0
  85. package/dist/types/tools/gh-pr-diff.d.ts +102 -0
  86. package/dist/types/tools/gh-run-watch.d.ts +78 -0
  87. package/dist/types/tools/gh-search.d.ts +61 -0
  88. package/dist/types/tools/gh-types.d.ts +340 -0
  89. package/dist/types/tools/gh-view.d.ts +88 -0
  90. package/dist/types/tools/gh.d.ts +4 -201
  91. package/dist/types/tools/read-archive.d.ts +16 -0
  92. package/dist/types/tools/read-format.d.ts +104 -0
  93. package/dist/types/tools/read-path-resolution.d.ts +19 -0
  94. package/dist/types/tools/read-pdf-images.d.ts +12 -0
  95. package/dist/types/tools/read-renderer.d.ts +24 -0
  96. package/dist/types/tools/read-selector.d.ts +27 -0
  97. package/dist/types/tools/read-sqlite.d.ts +16 -0
  98. package/dist/types/tools/read-summary.d.ts +19 -0
  99. package/dist/types/tools/read.d.ts +1 -23
  100. package/dist/types/tools/shell-tokenize.d.ts +18 -1
  101. package/dist/types/utils/changelog.d.ts +0 -5
  102. package/package.json +13 -13
  103. package/scripts/legacy-pi-virtual-module.ts +4 -1
  104. package/src/advisor/runtime.ts +12 -7
  105. package/src/capability/mcp.ts +11 -0
  106. package/src/capability/skill.ts +6 -0
  107. package/src/cli/command-help.ts +4 -0
  108. package/src/cli/gallery-cli.ts +1 -1
  109. package/src/cli-commands.ts +5 -0
  110. package/src/commands/commit.ts +16 -3
  111. package/src/commands/share.ts +71 -0
  112. package/src/commit/agentic/index.ts +39 -21
  113. package/src/commit/execute.ts +56 -0
  114. package/src/commit/index.ts +2 -1
  115. package/src/commit/pipeline.ts +20 -7
  116. package/src/config/custom-models.ts +188 -0
  117. package/src/config/model-config-values.ts +128 -0
  118. package/src/config/model-discovery.ts +1 -1
  119. package/src/config/model-patch.ts +252 -0
  120. package/src/config/model-provider-discovery.ts +132 -0
  121. package/src/config/model-registry.ts +84 -704
  122. package/src/config/settings-schema.ts +2 -33
  123. package/src/config/settings.ts +53 -3
  124. package/src/debug/raw-sse-buffer.ts +20 -0
  125. package/src/discovery/agent-plugin-format.ts +551 -0
  126. package/src/discovery/agent-plugins.ts +341 -0
  127. package/src/discovery/claude-plugins.ts +21 -5
  128. package/src/discovery/contained-path.ts +75 -0
  129. package/src/discovery/helpers.ts +23 -9
  130. package/src/discovery/index.ts +1 -0
  131. package/src/discovery/omp-plugins.ts +20 -7
  132. package/src/edit/hashline/diff.ts +5 -1
  133. package/src/eval/executor-base.ts +39 -6
  134. package/src/eval/jl/executor.ts +82 -371
  135. package/src/eval/kernel-session-registry.ts +398 -0
  136. package/src/eval/py/executor.ts +53 -261
  137. package/src/eval/rb/executor.ts +36 -279
  138. package/src/exec/non-interactive-env.ts +1 -0
  139. package/src/export/share.ts +2 -1
  140. package/src/extensibility/custom-tools/types.ts +2 -2
  141. package/src/extensibility/extensions/loader.ts +78 -14
  142. package/src/extensibility/extensions/runner.ts +6 -0
  143. package/src/extensibility/extensions/types.ts +12 -0
  144. package/src/extensibility/plugins/marketplace/manager.ts +2 -1
  145. package/src/extensibility/shared-events.ts +3 -2
  146. package/src/extensibility/skills.ts +9 -0
  147. package/src/internal-urls/skill-protocol.ts +14 -0
  148. package/src/internal-urls/vault-protocol.ts +2 -2
  149. package/src/launch/client.ts +11 -1
  150. package/src/launch/protocol.ts +7 -2
  151. package/src/lsp/diagnostics.ts +516 -0
  152. package/src/lsp/index.ts +20 -2819
  153. package/src/lsp/servers.ts +296 -0
  154. package/src/lsp/tool.ts +1352 -0
  155. package/src/lsp/workspace-diagnostics.ts +170 -0
  156. package/src/lsp/writethrough.ts +561 -0
  157. package/src/main.ts +3 -2
  158. package/src/mcp/config.ts +3 -0
  159. package/src/mcp/manager.ts +12 -9
  160. package/src/mcp/transports/header-policy.ts +95 -0
  161. package/src/mcp/transports/http.ts +35 -52
  162. package/src/mcp/transports/sse.ts +20 -27
  163. package/src/mcp/types.ts +15 -0
  164. package/src/modes/acp/acp-agent.ts +15 -4
  165. package/src/modes/components/agent-dashboard.ts +2 -0
  166. package/src/modes/components/agent-hub-projection.ts +2 -2
  167. package/src/modes/components/agent-hub-renderer.ts +3 -7
  168. package/src/modes/components/agent-hub.ts +5 -0
  169. package/src/modes/components/agent-transcript-viewer.ts +3 -0
  170. package/src/modes/components/chat-transcript-builder.ts +3 -0
  171. package/src/modes/components/custom-editor.ts +0 -9
  172. package/src/modes/components/status-line/component.ts +1 -0
  173. package/src/modes/components/status-line/segments.ts +6 -4
  174. package/src/modes/components/status-line/types.ts +2 -0
  175. package/src/modes/components/tool-execution.ts +13 -16
  176. package/src/modes/components/tree-selector.ts +62 -3
  177. package/src/modes/controllers/command-controller.ts +8 -2
  178. package/src/modes/controllers/event-controller.ts +15 -15
  179. package/src/modes/controllers/input-controller.ts +20 -2
  180. package/src/modes/controllers/selector-controller.ts +1 -0
  181. package/src/modes/theme/color.ts +133 -0
  182. package/src/modes/theme/loader.ts +178 -0
  183. package/src/modes/theme/schema.ts +263 -0
  184. package/src/modes/theme/symbols.ts +1000 -0
  185. package/src/modes/theme/theme-class.ts +611 -0
  186. package/src/modes/theme/theme.ts +27 -2453
  187. package/src/modes/theme/tui-adapters.ts +279 -0
  188. package/src/modes/utils/transcript-render-helpers.ts +4 -2
  189. package/src/modes/utils/ui-helpers.ts +1 -0
  190. package/src/registry/agent-registry.ts +2 -2
  191. package/src/sdk.ts +6 -49
  192. package/src/secrets/index.ts +51 -6
  193. package/src/secrets/message-transform.ts +287 -0
  194. package/src/secrets/obfuscator.ts +39 -1303
  195. package/src/secrets/placeholder-scan.ts +506 -0
  196. package/src/secrets/placeholder.ts +309 -0
  197. package/src/secrets/replacement.ts +216 -0
  198. package/src/session/agent-session-events.ts +2 -2
  199. package/src/session/agent-session-types.ts +6 -0
  200. package/src/session/agent-session.ts +146 -21
  201. package/src/session/indexed-session-storage.ts +7 -2
  202. package/src/session/messages.ts +1 -0
  203. package/src/session/prewalk.ts +57 -17
  204. package/src/session/session-advisors.ts +32 -34
  205. package/src/session/session-context.ts +3 -5
  206. package/src/session/session-handoff.ts +39 -16
  207. package/src/session/session-manager.ts +67 -3
  208. package/src/session/session-provider-boundary.ts +3 -6
  209. package/src/session/session-tools.ts +37 -3
  210. package/src/session/todo-tracker.ts +11 -1
  211. package/src/session/turn-recovery.ts +115 -84
  212. package/src/slash-commands/builtin-collaboration.ts +504 -0
  213. package/src/slash-commands/builtin-completions.ts +291 -0
  214. package/src/slash-commands/builtin-control.ts +78 -0
  215. package/src/slash-commands/builtin-lifecycle.ts +506 -0
  216. package/src/slash-commands/builtin-marketplace.ts +567 -0
  217. package/src/slash-commands/builtin-modes.ts +518 -0
  218. package/src/slash-commands/builtin-registry.ts +21 -2996
  219. package/src/slash-commands/builtin-session.ts +592 -0
  220. package/src/task/executor.ts +17 -14
  221. package/src/task/index.ts +21 -6
  222. package/src/tools/bash-skill-urls.ts +15 -0
  223. package/src/tools/bash.ts +10 -11
  224. package/src/tools/debug.ts +1 -1
  225. package/src/tools/gh-common.ts +288 -0
  226. package/src/tools/gh-pr-checkout.ts +679 -0
  227. package/src/tools/gh-pr-diff.ts +473 -0
  228. package/src/tools/gh-run-watch.ts +1015 -0
  229. package/src/tools/gh-search.ts +500 -0
  230. package/src/tools/gh-types.ts +379 -0
  231. package/src/tools/gh-view.ts +612 -0
  232. package/src/tools/gh.ts +109 -3821
  233. package/src/tools/jtd-to-json-schema.ts +123 -21
  234. package/src/tools/read-archive.ts +209 -0
  235. package/src/tools/read-format.ts +593 -0
  236. package/src/tools/read-path-resolution.ts +36 -0
  237. package/src/tools/read-pdf-images.ts +250 -0
  238. package/src/tools/read-renderer.ts +289 -0
  239. package/src/tools/read-selector.ts +84 -0
  240. package/src/tools/read-sqlite.ts +215 -0
  241. package/src/tools/read-summary.ts +199 -0
  242. package/src/tools/read.ts +82 -1824
  243. package/src/tools/shell-tokenize.ts +99 -1
  244. package/src/utils/changelog.ts +1 -1
  245. package/src/utils/title-generator.ts +3 -1
  246. package/src/web/search/providers/exa.ts +1 -1
  247. package/src/web/search/providers/zai.ts +12 -3
@@ -0,0 +1,263 @@
1
+ import { type } from "@oh-my-pi/omptype";
2
+ import type { SpinnerFramesOverride } from "./symbols";
3
+
4
+ // ============================================================================
5
+ // Types & Schema
6
+ // ============================================================================
7
+
8
+ export type ColorValue = string | number;
9
+
10
+ const themeColorsSchema = type({
11
+ accent: "string | number",
12
+ border: "string | number",
13
+ borderAccent: "string | number",
14
+ borderMuted: "string | number",
15
+ success: "string | number",
16
+ error: "string | number",
17
+ warning: "string | number",
18
+ muted: "string | number",
19
+ dim: "string | number",
20
+ text: "string | number",
21
+ thinkingText: "string | number",
22
+ selectedBg: "string | number",
23
+ userMessageBg: "string | number",
24
+ userMessageText: "string | number",
25
+ customMessageBg: "string | number",
26
+ customMessageText: "string | number",
27
+ customMessageLabel: "string | number",
28
+ toolPendingBg: "string | number",
29
+ toolSuccessBg: "string | number",
30
+ toolErrorBg: "string | number",
31
+ toolTitle: "string | number",
32
+ toolOutput: "string | number",
33
+ mdHeading: "string | number",
34
+ mdLink: "string | number",
35
+ mdLinkUrl: "string | number",
36
+ mdCode: "string | number",
37
+ mdCodeBlock: "string | number",
38
+ mdCodeBlockBorder: "string | number",
39
+ mdQuote: "string | number",
40
+ mdQuoteBorder: "string | number",
41
+ mdHr: "string | number",
42
+ mdListBullet: "string | number",
43
+ toolDiffAdded: "string | number",
44
+ toolDiffRemoved: "string | number",
45
+ toolDiffContext: "string | number",
46
+ syntaxComment: "string | number",
47
+ syntaxKeyword: "string | number",
48
+ syntaxFunction: "string | number",
49
+ syntaxVariable: "string | number",
50
+ syntaxString: "string | number",
51
+ syntaxNumber: "string | number",
52
+ syntaxType: "string | number",
53
+ syntaxOperator: "string | number",
54
+ syntaxPunctuation: "string | number",
55
+ thinkingOff: "string | number",
56
+ thinkingMinimal: "string | number",
57
+ thinkingLow: "string | number",
58
+ thinkingMedium: "string | number",
59
+ thinkingHigh: "string | number",
60
+ thinkingXhigh: "string | number",
61
+ "thinkingMax?": "string | number",
62
+ bashMode: "string | number",
63
+ pythonMode: "string | number",
64
+ statusLineBg: "string | number",
65
+ statusLineSep: "string | number",
66
+ statusLineModel: "string | number",
67
+ statusLinePath: "string | number",
68
+ statusLineGitClean: "string | number",
69
+ statusLineGitDirty: "string | number",
70
+ statusLineContext: "string | number",
71
+ statusLineSpend: "string | number",
72
+ statusLineStaged: "string | number",
73
+ statusLineDirty: "string | number",
74
+ statusLineUntracked: "string | number",
75
+ statusLineOutput: "string | number",
76
+ statusLineCost: "string | number",
77
+ statusLineSubagents: "string | number",
78
+ });
79
+ const spinnerFramesSchema = type("unknown").narrow((value): value is SpinnerFramesOverride => {
80
+ if (Array.isArray(value)) {
81
+ return value.length >= 1 && value.every(item => typeof item === "string");
82
+ }
83
+ if (value && typeof value === "object") {
84
+ const obj = value as Record<string, unknown>;
85
+ const status = obj.status;
86
+ const activity = obj.activity;
87
+ if (status === undefined && activity === undefined) return false;
88
+ if (status !== undefined) {
89
+ if (!Array.isArray(status) || status.length < 1 || !status.every(item => typeof item === "string")) {
90
+ return false;
91
+ }
92
+ }
93
+ if (activity !== undefined) {
94
+ if (!Array.isArray(activity) || activity.length < 1 || !activity.every(item => typeof item === "string")) {
95
+ return false;
96
+ }
97
+ }
98
+ return true;
99
+ }
100
+ return false;
101
+ });
102
+ export const themeJsonSchema = type({
103
+ "$schema?": "string",
104
+ name: "string",
105
+ "vars?": { "[string]": "string | number" },
106
+ colors: themeColorsSchema,
107
+ "export?": {
108
+ "pageBg?": "string | number",
109
+ "cardBg?": "string | number",
110
+ "infoBg?": "string | number",
111
+ },
112
+ "symbols?": {
113
+ "preset?": "'unicode' | 'nerd' | 'ascii'",
114
+ "overrides?": { "[string]": "string" },
115
+ "spinnerFrames?": spinnerFramesSchema,
116
+ },
117
+ });
118
+
119
+ export type ThemeJson = typeof themeJsonSchema.infer;
120
+
121
+ export type ThemeColor =
122
+ | "accent"
123
+ | "border"
124
+ | "borderAccent"
125
+ | "borderMuted"
126
+ | "success"
127
+ | "error"
128
+ | "warning"
129
+ | "muted"
130
+ | "dim"
131
+ | "text"
132
+ | "thinkingText"
133
+ | "userMessageText"
134
+ | "customMessageText"
135
+ | "customMessageLabel"
136
+ | "toolTitle"
137
+ | "toolOutput"
138
+ | "mdHeading"
139
+ | "mdLink"
140
+ | "mdLinkUrl"
141
+ | "mdCode"
142
+ | "mdCodeBlock"
143
+ | "mdCodeBlockBorder"
144
+ | "mdQuote"
145
+ | "mdQuoteBorder"
146
+ | "mdHr"
147
+ | "mdListBullet"
148
+ | "toolDiffAdded"
149
+ | "toolDiffRemoved"
150
+ | "toolDiffContext"
151
+ | "syntaxComment"
152
+ | "syntaxKeyword"
153
+ | "syntaxFunction"
154
+ | "syntaxVariable"
155
+ | "syntaxString"
156
+ | "syntaxNumber"
157
+ | "syntaxType"
158
+ | "syntaxOperator"
159
+ | "syntaxPunctuation"
160
+ | "thinkingOff"
161
+ | "thinkingMinimal"
162
+ | "thinkingLow"
163
+ | "thinkingMedium"
164
+ | "thinkingHigh"
165
+ | "thinkingXhigh"
166
+ | "thinkingMax"
167
+ | "bashMode"
168
+ | "pythonMode"
169
+ | "statusLineSep"
170
+ | "statusLineModel"
171
+ | "statusLinePath"
172
+ | "statusLineGitClean"
173
+ | "statusLineGitDirty"
174
+ | "statusLineContext"
175
+ | "statusLineSpend"
176
+ | "statusLineStaged"
177
+ | "statusLineDirty"
178
+ | "statusLineUntracked"
179
+ | "statusLineOutput"
180
+ | "statusLineCost"
181
+ | "statusLineSubagents";
182
+
183
+ /** Set of all valid ThemeColor string values for runtime validation */
184
+ const THEME_COLOR_RECORD = {
185
+ accent: true,
186
+ border: true,
187
+ borderAccent: true,
188
+ borderMuted: true,
189
+ success: true,
190
+ error: true,
191
+ warning: true,
192
+ muted: true,
193
+ dim: true,
194
+ text: true,
195
+ thinkingText: true,
196
+ userMessageText: true,
197
+ customMessageText: true,
198
+ customMessageLabel: true,
199
+ toolTitle: true,
200
+ toolOutput: true,
201
+ mdHeading: true,
202
+ mdLink: true,
203
+ mdLinkUrl: true,
204
+ mdCode: true,
205
+ mdCodeBlock: true,
206
+ mdCodeBlockBorder: true,
207
+ mdQuote: true,
208
+ mdQuoteBorder: true,
209
+ mdHr: true,
210
+ mdListBullet: true,
211
+ toolDiffAdded: true,
212
+ toolDiffRemoved: true,
213
+ toolDiffContext: true,
214
+ syntaxComment: true,
215
+ syntaxKeyword: true,
216
+ syntaxFunction: true,
217
+ syntaxVariable: true,
218
+ syntaxString: true,
219
+ syntaxNumber: true,
220
+ syntaxType: true,
221
+ syntaxOperator: true,
222
+ syntaxPunctuation: true,
223
+ thinkingOff: true,
224
+ thinkingMinimal: true,
225
+ thinkingLow: true,
226
+ thinkingMedium: true,
227
+ thinkingHigh: true,
228
+ thinkingXhigh: true,
229
+ thinkingMax: true,
230
+ bashMode: true,
231
+ pythonMode: true,
232
+ statusLineSep: true,
233
+ statusLineModel: true,
234
+ statusLinePath: true,
235
+ statusLineGitClean: true,
236
+ statusLineGitDirty: true,
237
+ statusLineContext: true,
238
+ statusLineSpend: true,
239
+ statusLineStaged: true,
240
+ statusLineDirty: true,
241
+ statusLineUntracked: true,
242
+ statusLineOutput: true,
243
+ statusLineCost: true,
244
+ statusLineSubagents: true,
245
+ } satisfies Record<ThemeColor, true>;
246
+
247
+ const VALID_THEME_COLORS: ReadonlySet<string> = new Set(Object.keys(THEME_COLOR_RECORD));
248
+
249
+ /** Check if a string is a valid ThemeColor value */
250
+ export function isValidThemeColor(color: string): color is ThemeColor {
251
+ return VALID_THEME_COLORS.has(color);
252
+ }
253
+
254
+ export type ThemeBg =
255
+ | "selectedBg"
256
+ | "userMessageBg"
257
+ | "customMessageBg"
258
+ | "toolPendingBg"
259
+ | "toolSuccessBg"
260
+ | "toolErrorBg"
261
+ | "statusLineBg";
262
+
263
+ export type ColorMode = "truecolor" | "256color";