subconscious-cli 6.0.1 → 6.1.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 (73) hide show
  1. package/README.md +119 -0
  2. package/bin/agent-data.js +242 -0
  3. package/bin/agent-help.js +106 -0
  4. package/bin/agent-install.js +354 -0
  5. package/bin/agent-launch.js +199 -0
  6. package/bin/agent-spawn.js +137 -0
  7. package/bin/agents.js +236 -932
  8. package/bin/auth.js +9 -1
  9. package/bin/claude-picker.js +143 -0
  10. package/bin/cli.js +60 -1
  11. package/bin/clipboard-image.js +2 -0
  12. package/bin/feedback.js +14 -3
  13. package/bin/harness-manifest.js +286 -0
  14. package/bin/headless-args.js +35 -0
  15. package/bin/launch-values.js +25 -0
  16. package/bin/model-capabilities.js +10 -9
  17. package/bin/models.js +13 -13
  18. package/bin/native/subc-tui-darwin-amd64 +0 -0
  19. package/bin/native/subc-tui-darwin-arm64 +0 -0
  20. package/bin/native/subc-tui-linux-amd64 +0 -0
  21. package/bin/native/subc-tui-linux-arm64 +0 -0
  22. package/bin/native/subc-tui-windows-amd64.exe +0 -0
  23. package/bin/native/subc-tui-windows-arm64.exe +0 -0
  24. package/bin/opencode-provider.js +21 -0
  25. package/bin/profile-settings.js +129 -0
  26. package/bin/profiles.js +29 -424
  27. package/bin/runbook/README.md +66 -23
  28. package/bin/runbook/claude-code/agent.json +300 -0
  29. package/bin/runbook/claude-code/install.sh +9 -252
  30. package/bin/runbook/codex/agent.json +461 -0
  31. package/bin/runbook/codex/hooks-lib.sh +17 -4
  32. package/bin/runbook/codex/install.sh +0 -4
  33. package/bin/runbook/codex/run.sh +16 -235
  34. package/bin/runbook/copilot/agent.json +185 -0
  35. package/bin/runbook/copilot/install.sh +45 -63
  36. package/bin/runbook/cursor/agent.json +137 -0
  37. package/bin/runbook/cursor/install.sh +8 -35
  38. package/bin/runbook/deepseek-harness/agent.json +163 -0
  39. package/bin/runbook/deepseek-harness/run.sh +20 -59
  40. package/bin/runbook/image-window/index.ts +14 -0
  41. package/bin/runbook/image-window/window.d.ts +19 -0
  42. package/bin/runbook/image-window/window.js +140 -0
  43. package/bin/runbook/lib.sh +41 -0
  44. package/bin/runbook/opencode/agent.json +158 -0
  45. package/bin/runbook/opencode/install.sh +9 -183
  46. package/bin/runbook/opencode/opencode-plugin.d.ts +10 -3
  47. package/bin/runbook/opencode/subconscious-image-window.ts +24 -0
  48. package/bin/runbook/pi/agent.json +216 -0
  49. package/bin/runbook/pi/install.sh +18 -44
  50. package/bin/runbook/pi/run.sh +6 -18
  51. package/bin/runbook/pi/subconscious-compaction.ts +3 -1
  52. package/bin/runbook/shared.json +58 -0
  53. package/bin/runbook/subconscious-code/agent.json +156 -0
  54. package/bin/sessions.js +52 -22
  55. package/bin/tui.js +13 -0
  56. package/bin/update-check.js +5 -1
  57. package/bin/upgrade.js +24 -31
  58. package/bin/usage.js +21 -10
  59. package/bin/windows/agents.js +18 -17
  60. package/bin/windows/common.js +2 -28
  61. package/bin/windows/install.js +11 -17
  62. package/bin/windows/launch.js +252 -231
  63. package/bin/windows/process.js +12 -1
  64. package/bin/windows/setup.js +29 -9
  65. package/package.json +2 -3
  66. package/bin/registry.generated.json +0 -406
  67. package/bin/runbook/claude-code/run.sh +0 -254
  68. package/bin/runbook/model-capabilities.generated.sh +0 -9
  69. package/bin/runbook/opencode/provider.sh +0 -93
  70. package/bin/runbook/opencode/run.sh +0 -99
  71. package/bin/runbook/opencode/subconscious-compaction.ts +0 -100
  72. package/bin/runbook/subconscious-code/run.sh +0 -21
  73. package/bin/windows/claude.js +0 -100
@@ -1,406 +0,0 @@
1
- {
2
- "_generated": "Source of truth: agents/registry.json. Do not edit by hand.",
3
- "defaults": {
4
- "model": "subconscious/glm-5.3-marathon",
5
- "models": [
6
- "subconscious/glm-5.3-marathon",
7
- "subconscious/glm-5.2",
8
- "subconscious/tim-qwen3.6-27b",
9
- "subconscious/deepseek-v4-flash-marathon",
10
- "subconscious/deepseek-v4.1-flash-marathon"
11
- ],
12
- "baseUrl": "https://api.subconscious.dev",
13
- "baseUrlV1": "https://api.subconscious.dev/v1",
14
- "keyPlaceholder": "your_key",
15
- "platformUrl": "https://platform.subconscious.dev"
16
- },
17
- "modelCapabilities": {
18
- "subconscious/deepseek-v4.1-flash-marathon": {
19
- "vision": true
20
- }
21
- },
22
- "agents": [
23
- {
24
- "id": "subconscious-code",
25
- "command": "marathon",
26
- "name": "Marathon",
27
- "aliases": [
28
- "sc",
29
- "subconscious-code"
30
- ],
31
- "description": "Launch the native Subconscious coding agent with the active profile, gateway, and model.",
32
- "framework": "Subconscious Code",
33
- "language": "rust",
34
- "category": "coding-agent",
35
- "tags": [
36
- "local",
37
- "cli",
38
- "agents"
39
- ],
40
- "protocol": "openai",
41
- "homepage": "https://github.com/subconscious-systems/subconscious-code",
42
- "bin": "marathon",
43
- "install": {
44
- "darwin": "subc marathon install",
45
- "linux": "subc marathon install",
46
- "win32": "subc marathon install"
47
- },
48
- "runbook": {
49
- "mode": "launch",
50
- "script": "subconscious-code/run.sh",
51
- "setupScript": "subconscious-code/install.sh",
52
- "binaryInstallScript": "subconscious-code/install.sh",
53
- "installDirEnv": "SC_INSTALL_DIR",
54
- "installDir": ".local/bin",
55
- "setupActions": [
56
- "install"
57
- ],
58
- "setupNeedsAuth": false
59
- },
60
- "launch": "marathon",
61
- "env": {
62
- "SC_BASE_URL": "{baseUrlV1}",
63
- "SC_DLR_URL": "{baseUrl}",
64
- "SC_DLR_ENABLED": "true",
65
- "SC_API_KEY": "{apiKey}",
66
- "SC_MODEL": "{model}"
67
- }
68
- },
69
- {
70
- "id": "claude-code",
71
- "command": "claude",
72
- "exampleDir": "claude_code",
73
- "name": "Claude Code",
74
- "aliases": [
75
- "claude-code",
76
- "claudecode"
77
- ],
78
- "displayName": "Claude Code + Subconscious",
79
- "description": "Run Claude Code on your hosted Subconscious model with gateway env, context limits, and telemetry.",
80
- "framework": "Claude Code",
81
- "language": "shell",
82
- "category": "coding-agent",
83
- "tags": [
84
- "local",
85
- "cli",
86
- "agents"
87
- ],
88
- "protocol": "anthropic",
89
- "homepage": "https://docs.anthropic.com/en/docs/claude-code",
90
- "bin": "claude",
91
- "install": {
92
- "darwin": "curl -fsSL https://claude.ai/install.sh | bash",
93
- "linux": "curl -fsSL https://claude.ai/install.sh | bash",
94
- "win32": "powershell -ExecutionPolicy Bypass -Command \"irm https://claude.ai/install.ps1 | iex\"",
95
- "fallback": "npm i -g @anthropic-ai/claude-code"
96
- },
97
- "runbook": {
98
- "mode": "launch",
99
- "script": "claude-code/run.sh",
100
- "setupScript": "claude-code/install.sh",
101
- "setupActions": [
102
- "status",
103
- "uninstall"
104
- ]
105
- },
106
- "launch": "claude",
107
- "env": {
108
- "ANTHROPIC_BASE_URL": "{baseUrl}",
109
- "ANTHROPIC_AUTH_TOKEN": "{apiKey}",
110
- "ANTHROPIC_MODEL": "{model}",
111
- "ANTHROPIC_SMALL_FAST_MODEL": "{model}",
112
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "subconscious/glm-5.3-marathon",
113
- "ANTHROPIC_DEFAULT_OPUS_MODEL_NAME": "subconscious/glm-5.3-marathon",
114
- "ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION": "Subconscious default model",
115
- "ANTHROPIC_DEFAULT_SONNET_MODEL": "subconscious/tim-qwen3.6-27b",
116
- "ANTHROPIC_DEFAULT_SONNET_MODEL_NAME": "subconscious/tim-qwen3.6-27b",
117
- "ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION": "Subconscious TIM Qwen 3.6 27B",
118
- "ANTHROPIC_DEFAULT_HAIKU_MODEL": "subconscious/deepseek-v4-flash-marathon",
119
- "ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME": "subconscious/deepseek-v4-flash-marathon",
120
- "ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION": "Subconscious DeepSeek V4 Flash Marathon",
121
- "CLAUDE_CODE_SUBAGENT_MODEL": "{model}",
122
- "CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS": "4",
123
- "CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH": "1",
124
- "CLAUDE_CODE_AUTO_COMPACT_WINDOW": "1000000",
125
- "CLAUDE_CODE_MAX_CONTEXT_TOKENS": "3000000",
126
- "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
127
- "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
128
- "OTEL_LOGS_EXPORTER": "otlp",
129
- "OTEL_EXPORTER_OTLP_PROTOCOL": "http/json",
130
- "OTEL_EXPORTER_OTLP_LOGS_ENDPOINT": "{baseUrl}/v1/logs",
131
- "OTEL_EXPORTER_OTLP_HEADERS": "x-api-key={apiKey}",
132
- "OTEL_EXPORTER_OTLP_TIMEOUT": "2000",
133
- "OTEL_LOGS_EXPORT_INTERVAL": "2000"
134
- }
135
- },
136
- {
137
- "id": "codex",
138
- "command": "codex",
139
- "exampleDir": "codex",
140
- "name": "Codex CLI",
141
- "aliases": [],
142
- "displayName": "Codex + Subconscious",
143
- "description": "Run Codex on your hosted Subconscious model with a temporary provider catalog and compaction hooks.",
144
- "framework": "Codex",
145
- "language": "shell",
146
- "category": "coding-agent",
147
- "tags": [
148
- "local",
149
- "cli",
150
- "agents"
151
- ],
152
- "protocol": "openai",
153
- "homepage": "https://developers.openai.com/codex",
154
- "bin": "codex",
155
- "install": {
156
- "darwin": "npm i -g @openai/codex",
157
- "linux": "npm i -g @openai/codex",
158
- "win32": "npm i -g @openai/codex"
159
- },
160
- "runbook": {
161
- "mode": "launch",
162
- "script": "codex/run.sh",
163
- "setupScript": "codex/install.sh",
164
- "setupActions": [
165
- "install",
166
- "status",
167
- "uninstall"
168
- ]
169
- },
170
- "launch": "codex -c model={model} -c model_provider=subconscious -c web_search=disabled -c model_providers.subconscious.name=Subconscious -c model_providers.subconscious.base_url={baseUrlV1} -c model_providers.subconscious.wire_api=responses -c model_providers.subconscious.env_key=SUBCONSCIOUS_API_KEY -c model_providers.subconscious.stream_idle_timeout_ms=900000",
171
- "env": {
172
- "SUBCONSCIOUS_API_KEY": "{apiKey}",
173
- "SUBCONSCIOUS_GATEWAY_URL": "{baseUrl}"
174
- }
175
- },
176
- {
177
- "id": "opencode",
178
- "command": "opencode",
179
- "exampleDir": "opencode",
180
- "name": "OpenCode",
181
- "aliases": [
182
- "open-code"
183
- ],
184
- "displayName": "OpenCode + Subconscious",
185
- "description": "Run OpenCode on your hosted Subconscious model with the Subconscious provider and context settings.",
186
- "framework": "OpenCode",
187
- "language": "shell",
188
- "category": "coding-agent",
189
- "tags": [
190
- "local",
191
- "cli",
192
- "agents"
193
- ],
194
- "protocol": "openai",
195
- "homepage": "https://opencode.ai",
196
- "bin": "opencode",
197
- "install": {
198
- "darwin": "npm i -g opencode-ai",
199
- "linux": "npm i -g opencode-ai",
200
- "win32": "npm i -g opencode-ai"
201
- },
202
- "runbook": {
203
- "mode": "launch",
204
- "script": "opencode/run.sh",
205
- "setupScript": "opencode/install.sh",
206
- "installDir": ".opencode/bin",
207
- "setupActions": [
208
- "status",
209
- "uninstall"
210
- ]
211
- },
212
- "launch": "opencode",
213
- "configEnv": "OPENCODE_CONFIG_CONTENT",
214
- "env": {
215
- "SUBCONSCIOUS_API_KEY": "{apiKey}",
216
- "SUBCONSCIOUS_GATEWAY_URL": "{baseUrl}",
217
- "OPENCODE_CONFIG_CONTENT": {
218
- "$json": {
219
- "$schema": "https://opencode.ai/config.json",
220
- "provider": {
221
- "subconscious": {
222
- "npm": "@ai-sdk/openai-compatible",
223
- "name": "Subconscious Gateway",
224
- "options": {
225
- "baseURL": "{baseUrlV1}",
226
- "apiKey": "{env:SUBCONSCIOUS_API_KEY}",
227
- "headers": {
228
- "x-subconscious-client": "opencode"
229
- }
230
- },
231
- "models": {
232
- "subconscious/glm-5.3-marathon": {
233
- "name": "subconscious/glm-5.3-marathon",
234
- "tools": true,
235
- "limit": {
236
- "context": 5000000,
237
- "output": 65536
238
- }
239
- },
240
- "subconscious/glm-5.2": {
241
- "name": "subconscious/glm-5.2",
242
- "tools": true,
243
- "limit": {
244
- "context": 5000000,
245
- "output": 65536
246
- }
247
- },
248
- "subconscious/tim-qwen3.6-27b": {
249
- "name": "subconscious/tim-qwen3.6-27b",
250
- "tools": true,
251
- "limit": {
252
- "context": 5000000,
253
- "output": 65536
254
- }
255
- },
256
- "subconscious/deepseek-v4-flash-marathon": {
257
- "name": "subconscious/deepseek-v4-flash-marathon",
258
- "tools": true,
259
- "limit": {
260
- "context": 5000000,
261
- "output": 65536
262
- }
263
- },
264
- "subconscious/deepseek-v4.1-flash-marathon": {
265
- "name": "subconscious/deepseek-v4.1-flash-marathon",
266
- "tools": true,
267
- "attachment": true,
268
- "modalities": {
269
- "input": [
270
- "text",
271
- "image"
272
- ],
273
- "output": [
274
- "text"
275
- ]
276
- },
277
- "limit": {
278
- "context": 5000000,
279
- "output": 65536
280
- }
281
- }
282
- }
283
- }
284
- },
285
- "model": "subconscious/{model}"
286
- }
287
- }
288
- }
289
- },
290
- {
291
- "id": "cursor",
292
- "command": "cursor",
293
- "name": "Cursor",
294
- "aliases": [],
295
- "description": "Install Cursor conversation and compaction hooks, then finish model setup in Cursor Settings.",
296
- "framework": "Cursor",
297
- "language": "shell",
298
- "category": "coding-agent",
299
- "tags": [
300
- "local",
301
- "ide",
302
- "agents"
303
- ],
304
- "protocol": "openai",
305
- "homepage": "https://cursor.com",
306
- "runbook": {
307
- "mode": "setup",
308
- "script": "cursor/install.sh",
309
- "setupScript": "cursor/install.sh",
310
- "setupActions": [
311
- "install",
312
- "status",
313
- "uninstall"
314
- ]
315
- }
316
- },
317
- {
318
- "id": "copilot",
319
- "command": "copilot",
320
- "name": "GitHub Copilot (VS Code)",
321
- "aliases": [
322
- "vscode",
323
- "vs-code"
324
- ],
325
- "description": "Install the VS Code custom endpoint and Copilot conversation/compaction hooks.",
326
- "framework": "GitHub Copilot",
327
- "language": "shell",
328
- "category": "coding-agent",
329
- "tags": [
330
- "local",
331
- "ide",
332
- "agents"
333
- ],
334
- "protocol": "openai",
335
- "homepage": "https://code.visualstudio.com/docs/copilot/overview",
336
- "runbook": {
337
- "mode": "setup",
338
- "script": "copilot/install.sh",
339
- "setupScript": "copilot/install.sh",
340
- "setupActions": [
341
- "install",
342
- "status",
343
- "uninstall"
344
- ]
345
- }
346
- },
347
- {
348
- "id": "pi",
349
- "command": "pi",
350
- "name": "Pi",
351
- "aliases": [],
352
- "description": "Refresh Pi with the live Subconscious model catalog and launch the active profile model.",
353
- "framework": "Pi",
354
- "language": "shell",
355
- "category": "coding-agent",
356
- "tags": [
357
- "local",
358
- "cli",
359
- "agents"
360
- ],
361
- "protocol": "openai",
362
- "homepage": "https://pi.dev",
363
- "bin": "pi",
364
- "runbook": {
365
- "mode": "launch",
366
- "script": "pi/run.sh",
367
- "setupScript": "pi/install.sh",
368
- "setupActions": [
369
- "install",
370
- "status",
371
- "uninstall"
372
- ]
373
- }
374
- },
375
- {
376
- "id": "deepseek-harness",
377
- "command": "dsh",
378
- "name": "DeepSeek Harness",
379
- "aliases": [
380
- "deepseek-harness",
381
- "deepseek"
382
- ],
383
- "description": "Launch DeepSeek Harness with an ephemeral Subconscious provider populated from the live model catalog.",
384
- "framework": "DeepSeek Harness",
385
- "language": "shell",
386
- "category": "coding-agent",
387
- "tags": [
388
- "local",
389
- "web",
390
- "agents"
391
- ],
392
- "protocol": "openai",
393
- "homepage": "https://www.deepseek.com/harness/en/",
394
- "bin": "dsh",
395
- "install": {
396
- "darwin": "npm i -g @deepseek-ai/dsh",
397
- "linux": "npm i -g @deepseek-ai/dsh",
398
- "win32": "npm i -g @deepseek-ai/dsh"
399
- },
400
- "runbook": {
401
- "mode": "launch",
402
- "script": "deepseek-harness/run.sh"
403
- }
404
- }
405
- ]
406
- }
@@ -1,254 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Point the `claude` CLI at the Subconscious gateway — ephemerally.
3
- #
4
- # Uses env vars only (ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN) so nothing is
5
- # written to ~/.claude/ config files.
6
- #
7
- # Usage:
8
- # ./run.sh # uses GATEWAY_URL/API_KEY from ../.env
9
- # ./run.sh --continue # pass args through to claude
10
- # ./run.sh --compact-window 1000000 -- --continue
11
- # ./run.sh --model subconscious/glm-5.3-marathon -p "hi"
12
- #
13
- # Config: copy ../env.example to ../.env and edit. .env is gitignored.
14
- # Profile env is injected by subc. A sibling .env is only used when SUBC_ENV_FILE is unset.
15
- #
16
- # Or source it to just export the env:
17
- # source run.sh
18
-
19
- set -euo pipefail
20
-
21
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
22
-
23
- # Load shared env from SUBC_ENV_FILE, or a sibling .env / env.example.
24
- SHARED_ENV="${SUBC_ENV_FILE:-${SCRIPT_DIR}/../.env}"
25
- [[ -f "$SHARED_ENV" ]] || SHARED_ENV="${SCRIPT_DIR}/../env.example"
26
- if [[ -f "$SHARED_ENV" ]]; then set -a; source "$SHARED_ENV"; set +a; fi
27
-
28
- DEFAULT_MODEL="subconscious/glm-5.3-marathon"
29
- DEFAULT_COMPACT_WINDOW="1000000"
30
- DEFAULT_MAX_CONTEXT_TOKENS="3000000"
31
- DEFAULT_MAX_CONCURRENT_SUBAGENTS="4"
32
- DEFAULT_MAX_SUBAGENT_SPAWN_DEPTH="1"
33
-
34
- GATEWAY_URL="${GATEWAY_URL:-}"
35
- API_KEY="${CLAUDE_CODE_API_KEY:-${API_KEY:-}}"
36
- MODEL="${MODEL:-$DEFAULT_MODEL}"
37
- COMPACT_WINDOW="${CLAUDE_CODE_AUTO_COMPACT_WINDOW:-${COMPACT_WINDOW:-$DEFAULT_COMPACT_WINDOW}}"
38
- MAX_CONTEXT_TOKENS="${CLAUDE_CODE_MAX_CONTEXT_TOKENS:-${MAX_CONTEXT_TOKENS:-$DEFAULT_MAX_CONTEXT_TOKENS}}"
39
- MAX_CONCURRENT_SUBAGENTS="${MAX_CONCURRENT_SUBAGENTS:-$DEFAULT_MAX_CONCURRENT_SUBAGENTS}"
40
- MAX_SUBAGENT_SPAWN_DEPTH="${MAX_SUBAGENT_SPAWN_DEPTH:-$DEFAULT_MAX_SUBAGENT_SPAWN_DEPTH}"
41
-
42
- # Claude's Opus/Sonnet/Haiku/Fable/custom slots must follow the live catalog
43
- # (SUBCONSCIOUS_MODELS). Packaged DeepSeek/GLM defaults are not a capability.
44
- PICKER_MODELS=()
45
- if [[ -n "${SUBCONSCIOUS_MODELS:-}" ]]; then
46
- while IFS= read -r picker_model; do
47
- [[ -n "$picker_model" ]] && PICKER_MODELS+=("$picker_model")
48
- done <<< "$SUBCONSCIOUS_MODELS"
49
- fi
50
-
51
- picker_model_at() {
52
- local index="$1"
53
- local count="${#PICKER_MODELS[@]}"
54
- if [[ "$count" -eq 0 ]]; then
55
- printf '%s' "$MODEL"
56
- return
57
- fi
58
- if [[ "$index" -ge "$count" ]]; then
59
- index=$((count - 1))
60
- fi
61
- printf '%s' "${PICKER_MODELS[$index]}"
62
- }
63
-
64
- in_picker_catalog() {
65
- local candidate="$1" existing
66
- [[ -z "$candidate" ]] && return 1
67
- [[ "${#PICKER_MODELS[@]}" -eq 0 ]] && return 0
68
- for existing in "${PICKER_MODELS[@]}"; do
69
- [[ "$existing" == "$candidate" ]] && return 0
70
- done
71
- return 1
72
- }
73
-
74
- if [[ "${#PICKER_MODELS[@]}" -gt 0 ]]; then
75
- in_picker_catalog "${ANTHROPIC_DEFAULT_OPUS_MODEL:-}" || ANTHROPIC_DEFAULT_OPUS_MODEL=""
76
- in_picker_catalog "${ANTHROPIC_DEFAULT_SONNET_MODEL:-}" || ANTHROPIC_DEFAULT_SONNET_MODEL=""
77
- in_picker_catalog "${ANTHROPIC_DEFAULT_HAIKU_MODEL:-}" || ANTHROPIC_DEFAULT_HAIKU_MODEL=""
78
- in_picker_catalog "${ANTHROPIC_DEFAULT_FABLE_MODEL:-}" || unset ANTHROPIC_DEFAULT_FABLE_MODEL ANTHROPIC_DEFAULT_FABLE_MODEL_NAME ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION
79
- if [[ "${#PICKER_MODELS[@]}" -lt 5 ]] || ! in_picker_catalog "${ANTHROPIC_CUSTOM_MODEL_OPTION:-}"; then
80
- unset ANTHROPIC_CUSTOM_MODEL_OPTION ANTHROPIC_CUSTOM_MODEL_OPTION_NAME ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION
81
- fi
82
- fi
83
-
84
- DEFAULT_OPUS_MODEL="$(picker_model_at 0)"
85
- DEFAULT_SONNET_MODEL="$(picker_model_at 1)"
86
- DEFAULT_HAIKU_MODEL="$(picker_model_at 2)"
87
- DEFAULT_FABLE_MODEL="$(picker_model_at 3)"
88
- OPUS_MODEL="${ANTHROPIC_DEFAULT_OPUS_MODEL:-$DEFAULT_OPUS_MODEL}"
89
- OPUS_MODEL_NAME="${ANTHROPIC_DEFAULT_OPUS_MODEL_NAME:-$OPUS_MODEL}"
90
- OPUS_MODEL_DESCRIPTION="${ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION:-Subconscious model ${OPUS_MODEL}}"
91
- SONNET_MODEL="${ANTHROPIC_DEFAULT_SONNET_MODEL:-$DEFAULT_SONNET_MODEL}"
92
- SONNET_MODEL_NAME="${ANTHROPIC_DEFAULT_SONNET_MODEL_NAME:-$SONNET_MODEL}"
93
- SONNET_MODEL_DESCRIPTION="${ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION:-Subconscious model ${SONNET_MODEL}}"
94
- HAIKU_MODEL="${ANTHROPIC_DEFAULT_HAIKU_MODEL:-$DEFAULT_HAIKU_MODEL}"
95
- HAIKU_MODEL_NAME="${ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME:-$HAIKU_MODEL}"
96
- HAIKU_MODEL_DESCRIPTION="${ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION:-Subconscious model ${HAIKU_MODEL}}"
97
- FABLE_MODEL="${ANTHROPIC_DEFAULT_FABLE_MODEL:-$DEFAULT_FABLE_MODEL}"
98
- FABLE_MODEL_NAME="${ANTHROPIC_DEFAULT_FABLE_MODEL_NAME:-$FABLE_MODEL}"
99
- FABLE_MODEL_DESCRIPTION="${ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION:-Subconscious model ${FABLE_MODEL}}"
100
-
101
- # Model IDs are already restricted to [-A-Za-z0-9._:/+], so they are JSON-safe.
102
- build_claude_picker_settings() {
103
- local ids=() model_id first options allowlist
104
- if [[ "${#PICKER_MODELS[@]}" -gt 0 ]]; then
105
- ids=("${PICKER_MODELS[@]}")
106
- else
107
- ids=("$MODEL")
108
- fi
109
- options=""
110
- allowlist=""
111
- first=1
112
- for model_id in "${ids[@]}"; do
113
- [[ -n "$model_id" ]] || continue
114
- if [[ "$first" -eq 1 ]]; then
115
- first=0
116
- else
117
- options="${options},"
118
- allowlist="${allowlist},"
119
- fi
120
- options="${options}{\"model\":\"${model_id}\",\"label\":\"${model_id}\",\"description\":\"Subconscious model ${model_id}\"}"
121
- allowlist="${allowlist}\"${model_id}\""
122
- done
123
- printf '{"availableModels":[%s],"modelPicker":{"replaceBuiltInOptions":true,"options":[%s]}}' "$allowlist" "$options"
124
- }
125
-
126
- if [[ -z "${SUBC_CLAUDE_SETTINGS:-}" ]]; then
127
- SUBC_CLAUDE_SETTINGS="$(build_claude_picker_settings)"
128
- fi
129
-
130
- usage() {
131
- cat <<'EOF'
132
- Usage:
133
- run.sh [options] [-- CLAUDE_ARGS...]
134
- run.sh [options] CLAUDE_ARGS...
135
-
136
- Options (same as install.sh; flags override env for this run):
137
- --gateway-url URL Gateway origin (e.g. https://gateway.example)
138
- --api-key KEY Gateway API key (sk-gw-...)
139
- --model MODEL Model name (default: subconscious/glm-5.3-marathon)
140
- --compact-window N CLAUDE_CODE_AUTO_COMPACT_WINDOW (default: 1000000; Claude Code clamps to 100000–1000000)
141
- See https://code.claude.com/docs/en/env-vars and
142
- https://code.claude.com/docs/en/context-window#set-the-auto-compact-window
143
- --max-context-tokens N CLAUDE_CODE_MAX_CONTEXT_TOKENS (default: 3000000)
144
- See https://code.claude.com/docs/en/env-vars
145
- -h, --help Show this help
146
-
147
- Anything after --, or unrecognized flags/args, is passed through to `claude`.
148
- EOF
149
- }
150
-
151
- # Parse args (only when executed, not sourced)
152
- PASSTHRU=()
153
- if [[ "${BASH_SOURCE[0]:-$0}" == "${0}" ]]; then
154
- while [[ $# -gt 0 ]]; do
155
- case "$1" in
156
- --gateway-url)
157
- GATEWAY_URL="${2:-}"
158
- shift 2
159
- ;;
160
- --api-key)
161
- API_KEY="${2:-}"
162
- shift 2
163
- ;;
164
- --model)
165
- MODEL="${2:-}"
166
- shift 2
167
- ;;
168
- --compact-window)
169
- COMPACT_WINDOW="${2:-}"
170
- shift 2
171
- ;;
172
- --max-context-tokens)
173
- MAX_CONTEXT_TOKENS="${2:-}"
174
- shift 2
175
- ;;
176
- -h|--help)
177
- usage
178
- exit 0
179
- ;;
180
- --)
181
- shift
182
- PASSTHRU+=("$@")
183
- break
184
- ;;
185
- *)
186
- PASSTHRU+=("$1")
187
- shift
188
- ;;
189
- esac
190
- done
191
- fi
192
-
193
- if [[ -z "$GATEWAY_URL" || -z "$API_KEY" ]]; then
194
- echo "error: GATEWAY_URL and API_KEY must be set in ../.env (or pass --gateway-url / --api-key)" >&2
195
- exit 1
196
- fi
197
-
198
- # Optional CLAUDE_GATEWAY_URL in shared .env overrides GATEWAY_URL for Claude only
199
- # (CLI --gateway-url already updated GATEWAY_URL above).
200
- EFFECTIVE_GATEWAY_URL="${CLAUDE_GATEWAY_URL:-$GATEWAY_URL}"
201
-
202
- export ANTHROPIC_BASE_URL="$EFFECTIVE_GATEWAY_URL"
203
- export ANTHROPIC_AUTH_TOKEN="$API_KEY"
204
- export ANTHROPIC_MODEL="${ANTHROPIC_MODEL:-$MODEL}"
205
- export ANTHROPIC_SMALL_FAST_MODEL="${ANTHROPIC_SMALL_FAST_MODEL:-$MODEL}"
206
- export ANTHROPIC_DEFAULT_OPUS_MODEL="${ANTHROPIC_DEFAULT_OPUS_MODEL:-$OPUS_MODEL}"
207
- export ANTHROPIC_DEFAULT_OPUS_MODEL_NAME="${ANTHROPIC_DEFAULT_OPUS_MODEL_NAME:-$OPUS_MODEL_NAME}"
208
- export ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION="${ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION:-$OPUS_MODEL_DESCRIPTION}"
209
- export ANTHROPIC_DEFAULT_SONNET_MODEL="${ANTHROPIC_DEFAULT_SONNET_MODEL:-$SONNET_MODEL}"
210
- export ANTHROPIC_DEFAULT_SONNET_MODEL_NAME="${ANTHROPIC_DEFAULT_SONNET_MODEL_NAME:-$SONNET_MODEL_NAME}"
211
- export ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION="${ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION:-$SONNET_MODEL_DESCRIPTION}"
212
- export ANTHROPIC_DEFAULT_HAIKU_MODEL="${ANTHROPIC_DEFAULT_HAIKU_MODEL:-$HAIKU_MODEL}"
213
- export ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME="${ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME:-$HAIKU_MODEL_NAME}"
214
- export ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION="${ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION:-$HAIKU_MODEL_DESCRIPTION}"
215
- export ANTHROPIC_DEFAULT_FABLE_MODEL="${ANTHROPIC_DEFAULT_FABLE_MODEL:-$FABLE_MODEL}"
216
- export ANTHROPIC_DEFAULT_FABLE_MODEL_NAME="${ANTHROPIC_DEFAULT_FABLE_MODEL_NAME:-$FABLE_MODEL_NAME}"
217
- export ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION="${ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION:-$FABLE_MODEL_DESCRIPTION}"
218
- export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY="${CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY:-0}"
219
- # Gateway upstreams can't perform Anthropic's server-side auto mode classifier
220
- # checks; opting out avoids the "isn't eligible for no-charge classifier
221
- # requests" fallback and keeps classifier requests billed locally.
222
- # https://code.claude.com/docs/en/auto-mode-classifier-billing
223
- export CLAUDE_CODE_AUTO_MODE_SERVER="${CLAUDE_CODE_AUTO_MODE_SERVER:-0}"
224
- export CLAUDE_CODE_SUBAGENT_MODEL="${CLAUDE_CODE_SUBAGENT_MODEL:-$MODEL}"
225
- export CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS="${MAX_CONCURRENT_SUBAGENTS}"
226
- export CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH="${MAX_SUBAGENT_SPAWN_DEPTH}"
227
- export CLAUDE_CODE_AUTO_COMPACT_WINDOW="${COMPACT_WINDOW}"
228
- export CLAUDE_CODE_MAX_CONTEXT_TOKENS="${MAX_CONTEXT_TOKENS}"
229
- # Claude Code purpose attribution only: api_request logs → gateway POST /v1/logs
230
- # (not a general logs API). Docs:
231
- # https://code.claude.com/docs/en/monitoring-usage#api-request-event
232
- # Requires Claude Code >= 2.1.152.
233
- export CLAUDE_CODE_ENABLE_TELEMETRY="${CLAUDE_CODE_ENABLE_TELEMETRY:-1}"
234
- export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC="${CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:-1}"
235
- # claude.ai connectors require subscription OAuth and cannot be used while the
236
- # Subconscious bearer token and gateway URL are active.
237
- export ENABLE_CLAUDEAI_MCP_SERVERS=false
238
- export OTEL_LOGS_EXPORTER="${OTEL_LOGS_EXPORTER:-otlp}"
239
- export OTEL_EXPORTER_OTLP_PROTOCOL="${OTEL_EXPORTER_OTLP_PROTOCOL:-http/json}"
240
- export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT="${EFFECTIVE_GATEWAY_URL%/}/v1/logs"
241
- export OTEL_EXPORTER_OTLP_HEADERS="x-api-key=${API_KEY}"
242
- export OTEL_EXPORTER_OTLP_TIMEOUT="${OTEL_EXPORTER_OTLP_TIMEOUT:-2000}"
243
- export OTEL_LOGS_EXPORT_INTERVAL="${OTEL_LOGS_EXPORT_INTERVAL:-2000}"
244
- # Do not set OTEL_TRACES_EXPORTER / OTEL_METRICS_EXPORTER (including to "none") -
245
- # Claude's telemetry init can abort the whole pipeline on unknown exporter types.
246
- # If sourced, export env and return (caller can unset when done).
247
- if [[ "${BASH_SOURCE[0]:-$0}" != "${0}" ]]; then
248
- return 0 2>/dev/null || true
249
- fi
250
-
251
- # If executed, launch claude with any passed-through args.
252
- # --settings is additional JSON: it replaces the built-in Fable/Opus lineup
253
- # with the live catalog and allowlists only those models.
254
- exec claude --settings "${SUBC_CLAUDE_SETTINGS}" ${PASSTHRU[@]+"${PASSTHRU[@]}"}
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Generated from agents/registry.json. Do not edit by hand.
3
- # Exact IDs only: similarly named models do not inherit capabilities.
4
- subc_model_supports_vision() {
5
- case "${1:-}" in
6
- 'subconscious/deepseek-v4.1-flash-marathon') return 0 ;;
7
- *) return 1 ;;
8
- esac
9
- }