@pilllesss/yorn 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +84 -0
  2. package/dist/modes/interactive/theme/dark.json +90 -0
  3. package/dist/modes/interactive/theme/light.json +89 -0
  4. package/dist/modes/interactive/theme/theme-schema.json +352 -0
  5. package/dist/providers/data/.manifest.json +1 -0
  6. package/dist/providers/data/amazon-bedrock.json +1 -0
  7. package/dist/providers/data/ant-ling.json +1 -0
  8. package/dist/providers/data/anthropic.json +1 -0
  9. package/dist/providers/data/azure-openai-responses.json +1 -0
  10. package/dist/providers/data/baseten.json +1 -0
  11. package/dist/providers/data/cerebras.json +1 -0
  12. package/dist/providers/data/cloudflare-ai-gateway.json +1 -0
  13. package/dist/providers/data/cloudflare-workers-ai.json +1 -0
  14. package/dist/providers/data/deepseek.json +1 -0
  15. package/dist/providers/data/fireworks.json +1 -0
  16. package/dist/providers/data/github-copilot.json +1 -0
  17. package/dist/providers/data/google-vertex.json +1 -0
  18. package/dist/providers/data/google.json +1 -0
  19. package/dist/providers/data/groq.json +1 -0
  20. package/dist/providers/data/huggingface.json +1 -0
  21. package/dist/providers/data/kimi-coding.json +1 -0
  22. package/dist/providers/data/minimax-cn.json +1 -0
  23. package/dist/providers/data/minimax.json +1 -0
  24. package/dist/providers/data/mistral.json +1 -0
  25. package/dist/providers/data/moonshotai-cn.json +1 -0
  26. package/dist/providers/data/moonshotai.json +1 -0
  27. package/dist/providers/data/nvidia.json +1 -0
  28. package/dist/providers/data/openai-codex.json +1 -0
  29. package/dist/providers/data/openai.json +1 -0
  30. package/dist/providers/data/opencode-go.json +1 -0
  31. package/dist/providers/data/opencode.json +1 -0
  32. package/dist/providers/data/openrouter.json +1 -0
  33. package/dist/providers/data/qwen-token-plan-cn.json +1 -0
  34. package/dist/providers/data/qwen-token-plan-individual.json +1 -0
  35. package/dist/providers/data/qwen-token-plan.json +1 -0
  36. package/dist/providers/data/together.json +1 -0
  37. package/dist/providers/data/vercel-ai-gateway.json +1 -0
  38. package/dist/providers/data/xai.json +1 -0
  39. package/dist/providers/data/xiaomi-token-plan-ams.json +1 -0
  40. package/dist/providers/data/xiaomi-token-plan-cn.json +1 -0
  41. package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -0
  42. package/dist/providers/data/xiaomi.json +1 -0
  43. package/dist/providers/data/zai-coding-cn.json +1 -0
  44. package/dist/providers/data/zai.json +1 -0
  45. package/dist/skills/add-provider/SKILL.md +151 -0
  46. package/dist/skills/agent-browser/SKILL.md +51 -0
  47. package/dist/skills/frontend-design/LICENSE.txt +177 -0
  48. package/dist/skills/frontend-design/SKILL.md +55 -0
  49. package/dist/skills/goal/SKILL.md +44 -0
  50. package/dist/skills/goal/pyproject.toml +17 -0
  51. package/dist/skills/goal/src/goal/__init__.py +52 -0
  52. package/dist/skills/graphify/SKILL.md +710 -0
  53. package/dist/skills/graphify/references/add-watch.md +56 -0
  54. package/dist/skills/graphify/references/exports.md +87 -0
  55. package/dist/skills/graphify/references/extraction-spec.md +70 -0
  56. package/dist/skills/graphify/references/github-and-merge.md +46 -0
  57. package/dist/skills/graphify/references/hooks.md +33 -0
  58. package/dist/skills/graphify/references/query.md +311 -0
  59. package/dist/skills/graphify/references/transcribe.md +52 -0
  60. package/dist/skills/graphify/references/update.md +210 -0
  61. package/dist/skills/screenshot/SKILL.md +267 -0
  62. package/dist/skills/screenshot/scripts/ensure_macos_permissions.sh +54 -0
  63. package/dist/skills/screenshot/scripts/macos_display_info.swift +22 -0
  64. package/dist/skills/screenshot/scripts/macos_permissions.swift +40 -0
  65. package/dist/skills/screenshot/scripts/macos_window_info.swift +126 -0
  66. package/dist/skills/screenshot/scripts/take_screenshot.ps1 +163 -0
  67. package/dist/skills/screenshot/scripts/take_screenshot.py +585 -0
  68. package/dist/skills/security-best-practices/LICENSE.txt +201 -0
  69. package/dist/skills/security-best-practices/SKILL.md +86 -0
  70. package/dist/skills/security-best-practices/agents/openai.yaml +4 -0
  71. package/dist/skills/security-best-practices/references/golang-general-backend-security.md +826 -0
  72. package/dist/skills/security-best-practices/references/javascript-express-web-server-security.md +1158 -0
  73. package/dist/skills/security-best-practices/references/javascript-general-web-frontend-security.md +747 -0
  74. package/dist/skills/security-best-practices/references/javascript-jquery-web-frontend-security.md +678 -0
  75. package/dist/skills/security-best-practices/references/javascript-typescript-nextjs-web-server-security.md +1144 -0
  76. package/dist/skills/security-best-practices/references/javascript-typescript-react-web-frontend-security.md +990 -0
  77. package/dist/skills/security-best-practices/references/javascript-typescript-vue-web-frontend-security.md +791 -0
  78. package/dist/skills/security-best-practices/references/python-django-web-server-security.md +882 -0
  79. package/dist/skills/security-best-practices/references/python-fastapi-web-server-security.md +1036 -0
  80. package/dist/skills/security-best-practices/references/python-flask-web-server-security.md +705 -0
  81. package/dist/skills/theme-factory/LICENSE.txt +202 -0
  82. package/dist/skills/theme-factory/SKILL.md +59 -0
  83. package/dist/skills/theme-factory/theme-showcase.pdf +0 -0
  84. package/dist/skills/theme-factory/themes/arctic-frost.md +19 -0
  85. package/dist/skills/theme-factory/themes/botanical-garden.md +19 -0
  86. package/dist/skills/theme-factory/themes/desert-rose.md +19 -0
  87. package/dist/skills/theme-factory/themes/forest-canopy.md +19 -0
  88. package/dist/skills/theme-factory/themes/golden-hour.md +19 -0
  89. package/dist/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  90. package/dist/skills/theme-factory/themes/modern-minimalist.md +19 -0
  91. package/dist/skills/theme-factory/themes/ocean-depths.md +19 -0
  92. package/dist/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  93. package/dist/skills/theme-factory/themes/tech-innovation.md +19 -0
  94. package/dist/yorn.cjs +1773 -0
  95. package/package.json +86 -0
package/README.md ADDED
@@ -0,0 +1,84 @@
1
+ # Yorn
2
+
3
+ Yorn is a terminal AI coding agent. It runs in your terminal, reads and edits your files, executes commands, and helps you get real work done in your codebase.
4
+
5
+ ## Install
6
+
7
+ ```sh
8
+ npm install -g @pilllesss/yorn
9
+ ```
10
+
11
+ This installs the global `yorn` command, usable from any directory.
12
+
13
+ ## Quick start
14
+
15
+ ```sh
16
+ # Interactive mode in the current directory
17
+ yorn
18
+
19
+ # One-shot (print) mode
20
+ yorn -p "explain this project"
21
+
22
+ # Show version
23
+ yorn --version
24
+ ```
25
+
26
+ On first run, yorn walks you through picking a theme and configuring a model provider. API keys are stored in `~/.yorn/agent/auth.json`.
27
+
28
+ ## Commands
29
+
30
+ | Command | Description |
31
+ | --- | --- |
32
+ | `yorn` | Start the interactive TUI |
33
+ | `yorn -p "<message>"` | Print mode (single response, scriptable) |
34
+ | `yorn --list-models` | List available models |
35
+ | `yorn auth <command>` | Print credentials or check provider readiness |
36
+ | `yorn update` | Update yorn itself from npm |
37
+ | `yorn update --models` | Refresh model catalogs |
38
+ | `yorn config` | Resource configuration TUI |
39
+
40
+ Run `yorn --help` for the full reference.
41
+
42
+ ## Self-update
43
+
44
+ Every interactive start, yorn compares its own version with the latest published version of `@siwatfa/yorn` on the npm registry. When a newer version exists, yorn opens a new terminal window that runs the global install (for example `npm install -g @pilllesss/yorn@latest`) and exits the outdated instance. Once the install finishes, start `yorn` again.
45
+
46
+ You can also update manually at any time:
47
+
48
+ ```sh
49
+ yorn update # or: npm install -g @pilllesss/yorn@latest
50
+ ```
51
+
52
+ Set `YORN_OFFLINE=1` or `YORN_SKIP_VERSION_CHECK=1` to disable all update checks.
53
+
54
+ ## Configuration
55
+
56
+ User configuration lives in `~/.yorn/agent/`:
57
+
58
+ - `settings.json` — global settings (theme, model defaults, package lists)
59
+ - `auth.json` — provider API keys and OAuth tokens
60
+ - `models.json` — custom provider/model definitions
61
+ - `sessions/` — session transcripts
62
+ - `themes/` — custom themes
63
+ - `skills/`, `tools/`, `prompts/` — user resources
64
+
65
+ Project-local overrides live in `.yorn/settings.json` inside a trusted project.
66
+
67
+ ## Environment variables
68
+
69
+ - `YORN_CODING_AGENT_DIR` — override the agent config directory (default: `~/.yorn/agent`)
70
+ - `YORN_OFFLINE` — disable all network checks (model refresh, version check)
71
+ - `YORN_SKIP_VERSION_CHECK` — disable the startup version check
72
+ - `YORN_MODEL` — default model selection (or use `--model` / interactive model picker)
73
+
74
+ ## Development
75
+
76
+ ```sh
77
+ npm install
78
+ npm run build # generate models and bundle the CLI to dist/yorn.cjs
79
+ npm run yorn # run from source with tsx
80
+ ```
81
+
82
+ ## License
83
+
84
+ MIT
@@ -0,0 +1,90 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/siwat/yorn/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
3
+ "name": "dark",
4
+ "vars": {
5
+ "cyan": "#ffaa00",
6
+ "blue": "#ff5500",
7
+ "green": "#9ece6a",
8
+ "red": "#f7768e",
9
+ "yellow": "#ffb703",
10
+ "text": "#f1f5f9",
11
+ "gray": "#94a3b8",
12
+ "dimGray": "#64748b",
13
+ "darkGray": "#334155",
14
+ "accent": "#ff6a00",
15
+ "selectedBg": "#3c1b06",
16
+ "userMsgBg": "#221206",
17
+ "toolPendingBg": "#2b1607",
18
+ "toolSuccessBg": "#122917",
19
+ "toolErrorBg": "#371616",
20
+ "customMsgBg": "#281407"
21
+ },
22
+ "colors": {
23
+ "accent": "accent",
24
+ "border": "blue",
25
+ "borderAccent": "cyan",
26
+ "borderMuted": "darkGray",
27
+ "success": "green",
28
+ "error": "red",
29
+ "warning": "yellow",
30
+ "muted": "gray",
31
+ "dim": "dimGray",
32
+ "text": "text",
33
+ "thinkingText": "gray",
34
+
35
+ "selectedBg": "selectedBg",
36
+ "scrollbarThumb": "selectedBg",
37
+ "searchMatchBg": "selectedBg",
38
+ "searchMatchText": "text",
39
+ "userMessageBg": "userMsgBg",
40
+ "userMessageText": "text",
41
+ "customMessageBg": "customMsgBg",
42
+ "customMessageText": "text",
43
+ "customMessageLabel": "#9575cd",
44
+ "toolPendingBg": "toolPendingBg",
45
+ "toolSuccessBg": "toolSuccessBg",
46
+ "toolErrorBg": "toolErrorBg",
47
+ "toolTitle": "text",
48
+ "toolOutput": "gray",
49
+
50
+ "mdHeading": "#f0c674",
51
+ "mdLink": "#81a2be",
52
+ "mdLinkUrl": "dimGray",
53
+ "mdCode": "accent",
54
+ "mdCodeBlock": "green",
55
+ "mdCodeBlockBorder": "gray",
56
+ "mdQuote": "gray",
57
+ "mdQuoteBorder": "gray",
58
+ "mdHr": "gray",
59
+ "mdListBullet": "accent",
60
+
61
+ "toolDiffAdded": "green",
62
+ "toolDiffRemoved": "red",
63
+ "toolDiffContext": "gray",
64
+
65
+ "syntaxComment": "#6A9955",
66
+ "syntaxKeyword": "#569CD6",
67
+ "syntaxFunction": "#DCDCAA",
68
+ "syntaxVariable": "#9CDCFE",
69
+ "syntaxString": "#CE9178",
70
+ "syntaxNumber": "#B5CEA8",
71
+ "syntaxType": "#4EC9B0",
72
+ "syntaxOperator": "#D4D4D4",
73
+ "syntaxPunctuation": "#D4D4D4",
74
+
75
+ "thinkingOff": "darkGray",
76
+ "thinkingMinimal": "#6e6e6e",
77
+ "thinkingLow": "#5f87af",
78
+ "thinkingMedium": "#81a2be",
79
+ "thinkingHigh": "#b294bb",
80
+ "thinkingXhigh": "#d183e8",
81
+ "thinkingMax": "#ff5fff",
82
+
83
+ "bashMode": "green"
84
+ },
85
+ "export": {
86
+ "pageBg": "#18181e",
87
+ "cardBg": "#1e1e24",
88
+ "infoBg": "#3c3728"
89
+ }
90
+ }
@@ -0,0 +1,89 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/siwat/yorn/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
3
+ "name": "light",
4
+ "vars": {
5
+ "teal": "#5a8080",
6
+ "blue": "#547da7",
7
+ "green": "#588458",
8
+ "red": "#aa5555",
9
+ "yellow": "#9a7326",
10
+ "text": "#1f2328",
11
+ "mediumGray": "#6c6c6c",
12
+ "dimGray": "#767676",
13
+ "lightGray": "#b0b0b0",
14
+ "selectedBg": "#d0d0e0",
15
+ "userMsgBg": "#e8e8e8",
16
+ "toolPendingBg": "#e8e8f0",
17
+ "toolSuccessBg": "#e8f0e8",
18
+ "toolErrorBg": "#f0e8e8",
19
+ "customMsgBg": "#ede7f6"
20
+ },
21
+ "colors": {
22
+ "accent": "teal",
23
+ "border": "blue",
24
+ "borderAccent": "teal",
25
+ "borderMuted": "lightGray",
26
+ "success": "green",
27
+ "error": "red",
28
+ "warning": "yellow",
29
+ "muted": "mediumGray",
30
+ "dim": "dimGray",
31
+ "text": "text",
32
+ "thinkingText": "mediumGray",
33
+
34
+ "selectedBg": "selectedBg",
35
+ "scrollbarThumb": "selectedBg",
36
+ "searchMatchBg": "selectedBg",
37
+ "searchMatchText": "text",
38
+ "userMessageBg": "userMsgBg",
39
+ "userMessageText": "text",
40
+ "customMessageBg": "customMsgBg",
41
+ "customMessageText": "text",
42
+ "customMessageLabel": "#7e57c2",
43
+ "toolPendingBg": "toolPendingBg",
44
+ "toolSuccessBg": "toolSuccessBg",
45
+ "toolErrorBg": "toolErrorBg",
46
+ "toolTitle": "text",
47
+ "toolOutput": "mediumGray",
48
+
49
+ "mdHeading": "yellow",
50
+ "mdLink": "blue",
51
+ "mdLinkUrl": "dimGray",
52
+ "mdCode": "teal",
53
+ "mdCodeBlock": "green",
54
+ "mdCodeBlockBorder": "mediumGray",
55
+ "mdQuote": "mediumGray",
56
+ "mdQuoteBorder": "mediumGray",
57
+ "mdHr": "mediumGray",
58
+ "mdListBullet": "green",
59
+
60
+ "toolDiffAdded": "green",
61
+ "toolDiffRemoved": "red",
62
+ "toolDiffContext": "mediumGray",
63
+
64
+ "syntaxComment": "#008000",
65
+ "syntaxKeyword": "#0000FF",
66
+ "syntaxFunction": "#795E26",
67
+ "syntaxVariable": "#001080",
68
+ "syntaxString": "#A31515",
69
+ "syntaxNumber": "#098658",
70
+ "syntaxType": "#267F99",
71
+ "syntaxOperator": "#000000",
72
+ "syntaxPunctuation": "#000000",
73
+
74
+ "thinkingOff": "lightGray",
75
+ "thinkingMinimal": "#767676",
76
+ "thinkingLow": "blue",
77
+ "thinkingMedium": "teal",
78
+ "thinkingHigh": "#875f87",
79
+ "thinkingXhigh": "#8b008b",
80
+ "thinkingMax": "#af005f",
81
+
82
+ "bashMode": "green"
83
+ },
84
+ "export": {
85
+ "pageBg": "#f8f8f8",
86
+ "cardBg": "#ffffff",
87
+ "infoBg": "#fffae6"
88
+ }
89
+ }
@@ -0,0 +1,352 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Yorn Coding Agent Theme",
4
+ "description": "Theme schema for Yorn coding agent",
5
+ "type": "object",
6
+ "required": ["name", "colors"],
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "description": "JSON schema reference"
11
+ },
12
+ "name": {
13
+ "type": "string",
14
+ "pattern": "^[^/]+$",
15
+ "description": "Theme name. Must not contain '/' because it is reserved for automatic light/dark theme settings."
16
+ },
17
+ "vars": {
18
+ "type": "object",
19
+ "description": "Reusable color variables",
20
+ "additionalProperties": {
21
+ "oneOf": [
22
+ {
23
+ "type": "string",
24
+ "description": "Hex color (#RRGGBB), variable reference, or empty string for terminal default"
25
+ },
26
+ {
27
+ "type": "integer",
28
+ "minimum": 0,
29
+ "maximum": 255,
30
+ "description": "256-color palette index (0-255)"
31
+ }
32
+ ]
33
+ }
34
+ },
35
+ "colors": {
36
+ "type": "object",
37
+ "description": "Theme color definitions (thinkingMax, scrollbarThumb, and search highlight colors are optional and use compatible fallbacks)",
38
+ "required": [
39
+ "accent",
40
+ "border",
41
+ "borderAccent",
42
+ "borderMuted",
43
+ "success",
44
+ "error",
45
+ "warning",
46
+ "muted",
47
+ "dim",
48
+ "text",
49
+ "thinkingText",
50
+ "selectedBg",
51
+ "userMessageBg",
52
+ "userMessageText",
53
+ "customMessageBg",
54
+ "customMessageText",
55
+ "customMessageLabel",
56
+ "toolPendingBg",
57
+ "toolSuccessBg",
58
+ "toolErrorBg",
59
+ "toolTitle",
60
+ "toolOutput",
61
+ "mdHeading",
62
+ "mdLink",
63
+ "mdLinkUrl",
64
+ "mdCode",
65
+ "mdCodeBlock",
66
+ "mdCodeBlockBorder",
67
+ "mdQuote",
68
+ "mdQuoteBorder",
69
+ "mdHr",
70
+ "mdListBullet",
71
+ "toolDiffAdded",
72
+ "toolDiffRemoved",
73
+ "toolDiffContext",
74
+ "syntaxComment",
75
+ "syntaxKeyword",
76
+ "syntaxFunction",
77
+ "syntaxVariable",
78
+ "syntaxString",
79
+ "syntaxNumber",
80
+ "syntaxType",
81
+ "syntaxOperator",
82
+ "syntaxPunctuation",
83
+ "thinkingOff",
84
+ "thinkingMinimal",
85
+ "thinkingLow",
86
+ "thinkingMedium",
87
+ "thinkingHigh",
88
+ "thinkingXhigh",
89
+ "bashMode"
90
+ ],
91
+ "properties": {
92
+ "accent": {
93
+ "$ref": "#/$defs/colorValue",
94
+ "description": "Primary accent color (logo, selected items, cursor)"
95
+ },
96
+ "border": {
97
+ "$ref": "#/$defs/colorValue",
98
+ "description": "Normal borders"
99
+ },
100
+ "borderAccent": {
101
+ "$ref": "#/$defs/colorValue",
102
+ "description": "Highlighted borders"
103
+ },
104
+ "borderMuted": {
105
+ "$ref": "#/$defs/colorValue",
106
+ "description": "Subtle borders"
107
+ },
108
+ "success": {
109
+ "$ref": "#/$defs/colorValue",
110
+ "description": "Success states"
111
+ },
112
+ "error": {
113
+ "$ref": "#/$defs/colorValue",
114
+ "description": "Error states"
115
+ },
116
+ "warning": {
117
+ "$ref": "#/$defs/colorValue",
118
+ "description": "Warning states"
119
+ },
120
+ "muted": {
121
+ "$ref": "#/$defs/colorValue",
122
+ "description": "Secondary/dimmed text"
123
+ },
124
+ "dim": {
125
+ "$ref": "#/$defs/colorValue",
126
+ "description": "Very dimmed text (more subtle than muted)"
127
+ },
128
+ "text": {
129
+ "$ref": "#/$defs/colorValue",
130
+ "description": "Default text color (usually empty string)"
131
+ },
132
+ "thinkingText": {
133
+ "$ref": "#/$defs/colorValue",
134
+ "description": "Thinking block text color"
135
+ },
136
+ "selectedBg": {
137
+ "$ref": "#/$defs/colorValue",
138
+ "description": "Selected item background"
139
+ },
140
+ "scrollbarThumb": {
141
+ "$ref": "#/$defs/colorValue",
142
+ "description": "Fullscreen scrollbar thumb background (falls back to selectedBg when omitted)"
143
+ },
144
+ "searchMatchBg": {
145
+ "$ref": "#/$defs/colorValue",
146
+ "description": "Transcript search match background and current-match text (falls back to selectedBg when omitted)"
147
+ },
148
+ "searchMatchText": {
149
+ "$ref": "#/$defs/colorValue",
150
+ "description": "Transcript search match text and current-match background (falls back to text when omitted)"
151
+ },
152
+ "userMessageBg": {
153
+ "$ref": "#/$defs/colorValue",
154
+ "description": "User message background"
155
+ },
156
+ "userMessageText": {
157
+ "$ref": "#/$defs/colorValue",
158
+ "description": "User message text color"
159
+ },
160
+ "customMessageBg": {
161
+ "$ref": "#/$defs/colorValue",
162
+ "description": "Custom message background (hook-injected messages)"
163
+ },
164
+ "customMessageText": {
165
+ "$ref": "#/$defs/colorValue",
166
+ "description": "Custom message text color"
167
+ },
168
+ "customMessageLabel": {
169
+ "$ref": "#/$defs/colorValue",
170
+ "description": "Custom message type label color"
171
+ },
172
+ "toolPendingBg": {
173
+ "$ref": "#/$defs/colorValue",
174
+ "description": "Tool execution box (pending state)"
175
+ },
176
+ "toolSuccessBg": {
177
+ "$ref": "#/$defs/colorValue",
178
+ "description": "Tool execution box (success state)"
179
+ },
180
+ "toolErrorBg": {
181
+ "$ref": "#/$defs/colorValue",
182
+ "description": "Tool execution box (error state)"
183
+ },
184
+ "toolTitle": {
185
+ "$ref": "#/$defs/colorValue",
186
+ "description": "Tool execution box title color"
187
+ },
188
+ "toolOutput": {
189
+ "$ref": "#/$defs/colorValue",
190
+ "description": "Tool execution box output text color"
191
+ },
192
+ "mdHeading": {
193
+ "$ref": "#/$defs/colorValue",
194
+ "description": "Markdown heading text"
195
+ },
196
+ "mdLink": {
197
+ "$ref": "#/$defs/colorValue",
198
+ "description": "Markdown link text"
199
+ },
200
+ "mdLinkUrl": {
201
+ "$ref": "#/$defs/colorValue",
202
+ "description": "Markdown link URL"
203
+ },
204
+ "mdCode": {
205
+ "$ref": "#/$defs/colorValue",
206
+ "description": "Markdown inline code"
207
+ },
208
+ "mdCodeBlock": {
209
+ "$ref": "#/$defs/colorValue",
210
+ "description": "Markdown code block content"
211
+ },
212
+ "mdCodeBlockBorder": {
213
+ "$ref": "#/$defs/colorValue",
214
+ "description": "Markdown code block fences"
215
+ },
216
+ "mdQuote": {
217
+ "$ref": "#/$defs/colorValue",
218
+ "description": "Markdown blockquote text"
219
+ },
220
+ "mdQuoteBorder": {
221
+ "$ref": "#/$defs/colorValue",
222
+ "description": "Markdown blockquote border"
223
+ },
224
+ "mdHr": {
225
+ "$ref": "#/$defs/colorValue",
226
+ "description": "Markdown horizontal rule"
227
+ },
228
+ "mdListBullet": {
229
+ "$ref": "#/$defs/colorValue",
230
+ "description": "Markdown list bullets/numbers"
231
+ },
232
+ "toolDiffAdded": {
233
+ "$ref": "#/$defs/colorValue",
234
+ "description": "Added lines in tool diffs"
235
+ },
236
+ "toolDiffRemoved": {
237
+ "$ref": "#/$defs/colorValue",
238
+ "description": "Removed lines in tool diffs"
239
+ },
240
+ "toolDiffContext": {
241
+ "$ref": "#/$defs/colorValue",
242
+ "description": "Context lines in tool diffs"
243
+ },
244
+ "syntaxComment": {
245
+ "$ref": "#/$defs/colorValue",
246
+ "description": "Syntax highlighting: comments"
247
+ },
248
+ "syntaxKeyword": {
249
+ "$ref": "#/$defs/colorValue",
250
+ "description": "Syntax highlighting: keywords"
251
+ },
252
+ "syntaxFunction": {
253
+ "$ref": "#/$defs/colorValue",
254
+ "description": "Syntax highlighting: function names"
255
+ },
256
+ "syntaxVariable": {
257
+ "$ref": "#/$defs/colorValue",
258
+ "description": "Syntax highlighting: variable names"
259
+ },
260
+ "syntaxString": {
261
+ "$ref": "#/$defs/colorValue",
262
+ "description": "Syntax highlighting: string literals"
263
+ },
264
+ "syntaxNumber": {
265
+ "$ref": "#/$defs/colorValue",
266
+ "description": "Syntax highlighting: number literals"
267
+ },
268
+ "syntaxType": {
269
+ "$ref": "#/$defs/colorValue",
270
+ "description": "Syntax highlighting: type names"
271
+ },
272
+ "syntaxOperator": {
273
+ "$ref": "#/$defs/colorValue",
274
+ "description": "Syntax highlighting: operators"
275
+ },
276
+ "syntaxPunctuation": {
277
+ "$ref": "#/$defs/colorValue",
278
+ "description": "Syntax highlighting: punctuation"
279
+ },
280
+ "thinkingOff": {
281
+ "$ref": "#/$defs/colorValue",
282
+ "description": "Thinking level border: off"
283
+ },
284
+ "thinkingMinimal": {
285
+ "$ref": "#/$defs/colorValue",
286
+ "description": "Thinking level border: minimal"
287
+ },
288
+ "thinkingLow": {
289
+ "$ref": "#/$defs/colorValue",
290
+ "description": "Thinking level border: low"
291
+ },
292
+ "thinkingMedium": {
293
+ "$ref": "#/$defs/colorValue",
294
+ "description": "Thinking level border: medium"
295
+ },
296
+ "thinkingHigh": {
297
+ "$ref": "#/$defs/colorValue",
298
+ "description": "Thinking level border: high"
299
+ },
300
+ "thinkingXhigh": {
301
+ "$ref": "#/$defs/colorValue",
302
+ "description": "Thinking level border: xhigh"
303
+ },
304
+ "thinkingMax": {
305
+ "$ref": "#/$defs/colorValue",
306
+ "description": "Thinking level border: max (falls back to thinkingXhigh when omitted)"
307
+ },
308
+ "bashMode": {
309
+ "$ref": "#/$defs/colorValue",
310
+ "description": "Editor border color in bash mode"
311
+ }
312
+ },
313
+ "additionalProperties": false
314
+ },
315
+ "export": {
316
+ "type": "object",
317
+ "description": "Optional colors for HTML export (defaults derived from userMessageBg if not specified)",
318
+ "properties": {
319
+ "pageBg": {
320
+ "$ref": "#/$defs/colorValue",
321
+ "description": "Page background color"
322
+ },
323
+ "cardBg": {
324
+ "$ref": "#/$defs/colorValue",
325
+ "description": "Card/container background color"
326
+ },
327
+ "infoBg": {
328
+ "$ref": "#/$defs/colorValue",
329
+ "description": "Info sections background (system prompt, notices)"
330
+ }
331
+ },
332
+ "additionalProperties": false
333
+ }
334
+ },
335
+ "additionalProperties": false,
336
+ "$defs": {
337
+ "colorValue": {
338
+ "oneOf": [
339
+ {
340
+ "type": "string",
341
+ "description": "Hex color (#RRGGBB), variable reference, or empty string for terminal default"
342
+ },
343
+ {
344
+ "type": "integer",
345
+ "minimum": 0,
346
+ "maximum": 255,
347
+ "description": "256-color palette index (0-255)"
348
+ }
349
+ ]
350
+ }
351
+ }
352
+ }
@@ -0,0 +1 @@
1
+ {"schemaVersion":3,"generatedAt":"2026-08-20T15:14:02.982Z","structureHash":"cd67987c6d043ddcad3c73389e71154baf189e8460528074eb889921f1c8872e","files":{"amazon-bedrock.json":"71441520503c82d14c788a16fdbd5314adc5b7b34abd65a3f260b96f493c2e90","ant-ling.json":"4979fe79d99ed97382d7ce40170c6132e932e77906de1eb54464c042e7d63633","anthropic.json":"e22c277e3a1ffddc3d2701b72787c9e0bd67b835de6b4cb806677b6b6a89a2f7","azure-openai-responses.json":"5315b6a2299fefbdbb6cc13a720544077c9498132ad5e3a7d76a8c1daa8e9335","baseten.json":"950433e7fcf9357ae3423b27fc0d32568b6e0990bb35c6e961dcb9740a6bba1b","cerebras.json":"38272a7525d6680c71bb4bb3c4085e871768b400832e2013b0e7fd92f8fd4f05","cloudflare-ai-gateway.json":"f8d54b2d4c8583194d87b48e31d85adc97156cc861db198ea173414fc835231a","cloudflare-workers-ai.json":"89e63a18886ecedd1d995cc90e4bfe06f73e2a79117b2f54f58fe60cdcf63df5","deepseek.json":"e3106724723fd82d48a3ff685da9908a3a7b7b4fd84cc3cfe97a6a23067b6029","fireworks.json":"2c85d89cd04288b15ff8a23af5eba72779cae9221f4bcfed1720ce6d41629fcc","github-copilot.json":"18f7c5ebf0fc29f14754615057c19b366e2c5f0f1e2828466fd2624362822825","google-vertex.json":"1f2fb67e61815616f5a243912622b373cb61fe1310c63e620c17b8e86899ce18","google.json":"c6d9822f7eda23cfeb7d29caee0baa7d2fa7bf3561252734a17428937fbcbfd1","groq.json":"f1eb899453e70b5e4479fe6eb78869ee99121fa6d4a019a5a05ab42d2ada8992","huggingface.json":"b2f15353177738beb5c0865ffcd92cc470e1c8ba6b6a4d2707cda12212a6043b","kimi-coding.json":"ba42a26a69e5cb2122c0b384ba572efae93f42239ad86f26c2b7320a14aa75a1","minimax-cn.json":"8ccd71ff838f4b78bb88809babb0dc32a4fcfaec2bc4f4083841000428df4f77","minimax.json":"253edd4c910a41c8bb252400ba099f3a4de0a8900ce154319288ab091b372987","mistral.json":"4f9d84bf1ba10cb14ff2c9e23e77d63441756ef3500375dd4ad10094614b215b","moonshotai-cn.json":"1e6146ff3477883636448c0f44222f0a52b3c4562ef8f4eecf7e941cdd59d12e","moonshotai.json":"d8d5209873058ddccd37c1f026833e2ea3f9476c3dc9628b4a940d407acc0b2e","nvidia.json":"3a550a8698ffe2cec3ebbfcd86ee21503c4a80d6af9419e5b41a52eabfa76b9a","openai-codex.json":"2712c2924a4a75213dddc743c0e5f08d50a781fe807f16d5afb5fb65b41c64c7","openai.json":"47746dfe79d92a7da58d7fae2c02a5d481b2eba2f5a914a42792552940b78b78","opencode-go.json":"08bfd78ca86621cf93b3e7811be6fd849d6e121b7120607a0231bab43fafaac6","opencode.json":"c148e42fe954c62d6de9cf8d815613ef659cc21d4a8dfd453d358548994df92f","openrouter.json":"bf785e67b0400cb22e72a128d0235a79b025e00adc8f8ee7888b518ba9e6b061","qwen-token-plan-cn.json":"700cb41cdee4c0ae2a5159eb3ab43f4cedc9d43e87c6fd1bcd410d71431f9856","qwen-token-plan-individual.json":"0e1578a5c0e11d65644bb42d1d6efee5af97a55a4881d0421ab68bd970d4d4ef","qwen-token-plan.json":"f85715f7f2023a162c47d1a84ba73747e2580d0a9aa33799b3232ce19527c1ab","together.json":"f7c9ba0441c1cbb8af41aaea3cfaa12559e1235a7335898e705d5918dc308c97","vercel-ai-gateway.json":"1e54819ea7eb4ed1fdb5d32bd8c4b81c356e0a69c20ba23c204ffa09919e4ea3","xai.json":"282838b0546d63106c81f1703cdf5ed31ebfe0c5f13a4bec0d590472cbbe03f2","xiaomi-token-plan-ams.json":"7ce8ed244672c45737d286ff3ca9c3a2686a5d4b2f0c5f71ab9348c14b14daf3","xiaomi-token-plan-cn.json":"684892b5fe6fa371d6040d2011c0fa33facd650d2eaf19f5dbee8efb33016200","xiaomi-token-plan-sgp.json":"b19e79b82ac4fdcb080e6d220106797504c885ed70b27fc2b3c1aa4810f32963","xiaomi.json":"810368d3828c8bb9498012a0d48639030c0c216b8c13e79da02daa515aa23448","zai-coding-cn.json":"663466fef5cca84909b9929671a48fefb3721c0990c61bbec05d8b1692247310","zai.json":"fd81b25003c3e653ee319c2ba0ce353a4f02df1a409246c8d0f96d13dd0ec592"}}