@turmind/halo 0.2.6 → 1.0.1

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 (34) hide show
  1. package/README.md +5 -5
  2. package/admin-out/404.html +1 -1
  3. package/admin-out/_next/static/chunks/app/page-19d5f2a0a3412b4a.js +1 -0
  4. package/admin-out/_next/static/css/9e7dadb24830255a.css +3 -0
  5. package/admin-out/index.html +1 -1
  6. package/admin-out/index.txt +3 -3
  7. package/bundled-docs/design/agent.md +12 -2
  8. package/bundled-docs/design/session.md +9 -0
  9. package/bundled-docs/design/ws.md +4 -0
  10. package/bundled-docs/dev/add-model-provider.md +17 -9
  11. package/bundled-docs/dev/api.md +4 -0
  12. package/bundled-docs/dev/deploy.md +4 -8
  13. package/bundled-docs/dev/env.md +9 -4
  14. package/bundled-docs/dev/tools.md +4 -3
  15. package/bundled-docs/guide/cli.md +1 -0
  16. package/bundled-docs/requirements/chat.md +8 -1
  17. package/bundled-docs/requirements/session.md +2 -2
  18. package/dist/index.js +499 -430
  19. package/package.json +1 -1
  20. package/templates/models/anthropic.yaml +1 -0
  21. package/templates/models/aws-bedrock-claude-invoke.yaml +7 -0
  22. package/templates/models/aws-bedrock-mantle.yaml +51 -11
  23. package/templates/models/deepseek.yaml +2 -0
  24. package/templates/models/doubao.yaml +4 -0
  25. package/templates/models/hunyuan.yaml +1 -0
  26. package/templates/models/kimi.yaml +49 -13
  27. package/templates/models/mimo-token-plan-china.yaml +2 -0
  28. package/templates/models/minimax.yaml +37 -5
  29. package/templates/models/openai.yaml +1 -0
  30. package/templates/models/qwen.yaml +2 -0
  31. package/admin-out/_next/static/chunks/app/page-635d9668d47a2b9e.js +0 -1
  32. package/admin-out/_next/static/css/57622245d7724ee0.css +0 -3
  33. /package/admin-out/_next/static/{TmICbj6oGkbeEcs8tFjd3 → aWThs2cmYntOEy-YdkDPD}/_buildManifest.js +0 -0
  34. /package/admin-out/_next/static/{TmICbj6oGkbeEcs8tFjd3 → aWThs2cmYntOEy-YdkDPD}/_ssgManifest.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@turmind/halo",
3
- "version": "0.2.6",
3
+ "version": "1.0.1",
4
4
  "description": "Halo — multi-agent collaborative workspace. CLI + TUI + HTTP/WS server in one package.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -27,6 +27,7 @@ models:
27
27
  - id: claude-sonnet-4-6
28
28
  displayName: Claude Sonnet 4.6 (placeholder)
29
29
  maxOutputTokens: 64000
30
+ contextWindow: 1000000
30
31
  capabilities:
31
32
  image: true
32
33
  video: false
@@ -38,6 +38,7 @@ models:
38
38
  - id: global.anthropic.claude-fable-5
39
39
  displayName: Claude Fable 5
40
40
  maxOutputTokens: 128000
41
+ contextWindow: 1000000
41
42
  capabilities:
42
43
  image: true
43
44
  video: false
@@ -65,6 +66,7 @@ models:
65
66
  - id: global.anthropic.claude-sonnet-4-6
66
67
  displayName: Claude Sonnet 4.6
67
68
  maxOutputTokens: 64000
69
+ contextWindow: 1000000
68
70
  capabilities:
69
71
  image: true
70
72
  video: false
@@ -91,6 +93,7 @@ models:
91
93
  - id: global.anthropic.claude-sonnet-5
92
94
  displayName: Claude Sonnet 5
93
95
  maxOutputTokens: 64000
96
+ contextWindow: 1000000
94
97
  capabilities:
95
98
  image: true
96
99
  video: false
@@ -117,6 +120,7 @@ models:
117
120
  - id: global.anthropic.claude-opus-4-6-v1
118
121
  displayName: Claude Opus 4.6
119
122
  maxOutputTokens: 128000
123
+ contextWindow: 1000000
120
124
  capabilities:
121
125
  image: true
122
126
  video: false
@@ -139,6 +143,7 @@ models:
139
143
  - id: global.anthropic.claude-opus-4-7
140
144
  displayName: Claude Opus 4.7
141
145
  maxOutputTokens: 128000
146
+ contextWindow: 1000000
142
147
  capabilities:
143
148
  image: true
144
149
  video: false
@@ -162,6 +167,7 @@ models:
162
167
  - id: global.anthropic.claude-opus-4-8
163
168
  displayName: Claude Opus 4.8
164
169
  maxOutputTokens: 128000
170
+ contextWindow: 1000000
165
171
  capabilities:
166
172
  image: true
167
173
  video: false
@@ -187,6 +193,7 @@ models:
187
193
  - id: global.anthropic.claude-haiku-4-5-20251001-v1:0
188
194
  displayName: Claude Haiku 4.5
189
195
  maxOutputTokens: 64000
196
+ contextWindow: 200000
190
197
  capabilities:
191
198
  image: true
192
199
  video: false
@@ -1,16 +1,17 @@
1
1
  id: aws-bedrock-mantle
2
2
  displayName: AWS Bedrock Mantle (OpenAI GPT-5.x)
3
3
  displayName_zh: AWS Bedrock Mantle(OpenAI GPT-5.x)
4
- description: OpenAI GPT-5.5 / 5.4 on Amazon Bedrock via the bedrock-mantle endpoint (OpenAI Responses API only — not Converse/InvokeModel). us-east-2 only.
5
- description_zh: 通过 Bedrock Mantle 端点调用 OpenAI GPT-5.5 / 5.4(仅 OpenAI Responses API,不支持 Converse/InvokeModel)。仅 us-east-2。
4
+ description: OpenAI GPT-5.6 (Sol / Terra / Luna) on Amazon Bedrock via the bedrock-mantle endpoint (OpenAI Responses API only — not Converse/InvokeModel).
5
+ description_zh: 通过 Bedrock Mantle 端点调用 OpenAI GPT-5.6(Sol / Terra / Luna)(仅 OpenAI Responses API,不支持 Converse/InvokeModel)。
6
6
  # Mantle is a distinct endpoint from bedrock-runtime; the OpenAI surface lives
7
- # under /openai/v1. GPT-5.5 is us-east-2 only (GPT-5.4 also allows us-west-2,
8
- # but we ship the us-east-2 endpoint that serves both).
7
+ # under /openai/v1. Regions: us-east-2 serves ALL models below; us-west-2
8
+ # additionally serves Terra / Luna but NOT Sol. We ship the us-east-2
9
+ # endpoint that covers everything.
9
10
  defaultEndpoint: https://bedrock-mantle.us-east-2.api.aws/openai/v1
10
11
  endpointPresets:
11
12
  - https://bedrock-mantle.us-east-2.api.aws/openai/v1
12
13
 
13
- defaultModelId: openai.gpt-5.5
14
+ defaultModelId: openai.gpt-5.6-sol
14
15
 
15
16
  # Auth: a Bedrock long-term API key passed as a Bearer token. Generate at
16
17
  # console → Bedrock → API keys → long-term. The default placeholder reads the
@@ -30,11 +31,19 @@ secrets:
30
31
  # is sent and there's no 1h option — single 5m preset reflects reality, the
31
32
  # runtime never writes cache control, it only reads cached_tokens back.
32
33
  # - thinking: adaptive via reasoning.effort = low|medium|high (no budget_tokens
33
- # mode; xhigh/max would be mapped down to high by the runtime).
34
+ # mode; xhigh/max would be mapped down to high by the runtime). Note: Mantle
35
+ # never surfaces reasoning summaries — output[].reasoning.summary stays empty
36
+ # even with reasoning.summary=detailed (verified against the live endpoint;
37
+ # reasoning_tokens > 0 proves thinking runs). So no thinking text is shown in
38
+ # the UI; that's upstream behavior, not a parsing gap.
39
+ # - maxOutputTokens for the 5.6 variants: not disclosed in the 5.6 model card —
40
+ # conservatively carried over from GPT-5.5's 64000.
34
41
  models:
35
- - id: openai.gpt-5.5
36
- displayName: GPT-5.5
42
+ # GPT-5.6 flagship.
43
+ - id: openai.gpt-5.6-sol
44
+ displayName: GPT-5.6 Sol
37
45
  maxOutputTokens: 64000
46
+ contextWindow: 272000
38
47
  capabilities:
39
48
  image: true
40
49
  video: false
@@ -61,9 +70,11 @@ models:
61
70
  - { value: medium, label: Medium }
62
71
  - { value: high, label: High }
63
72
 
64
- - id: openai.gpt-5.4
65
- displayName: GPT-5.4
73
+ # GPT-5.6 balanced — official line: GPT-5.5-level performance at half the price.
74
+ - id: openai.gpt-5.6-terra
75
+ displayName: GPT-5.6 Terra
66
76
  maxOutputTokens: 64000
77
+ contextWindow: 272000
67
78
  capabilities:
68
79
  image: true
69
80
  video: false
@@ -80,7 +91,36 @@ models:
80
91
  - { value: low, label: Low }
81
92
  - { value: medium, label: Medium }
82
93
  - { value: high, label: High }
83
- # See GPT-5.5 above — final-answer length, default low, per-agent overridable.
94
+ # See GPT-5.6 Sol above — final-answer length, default low, per-agent overridable.
95
+ verbosity:
96
+ default: low
97
+ presets:
98
+ - { value: low, label: Low }
99
+ - { value: medium, label: Medium }
100
+ - { value: high, label: High }
101
+
102
+ # GPT-5.6 fast / low-cost.
103
+ - id: openai.gpt-5.6-luna
104
+ displayName: GPT-5.6 Luna
105
+ maxOutputTokens: 64000
106
+ contextWindow: 272000
107
+ capabilities:
108
+ image: true
109
+ video: false
110
+ audio: false
111
+ promptCaching:
112
+ default: 5m
113
+ ttlPresets:
114
+ - { value: 5m, label: 5min }
115
+ thinking:
116
+ mode: adaptive
117
+ defaultEnabled: true
118
+ default: medium
119
+ effortPresets:
120
+ - { value: low, label: Low }
121
+ - { value: medium, label: Medium }
122
+ - { value: high, label: High }
123
+ # See GPT-5.6 Sol above — final-answer length, default low, per-agent overridable.
84
124
  verbosity:
85
125
  default: low
86
126
  presets:
@@ -22,6 +22,7 @@ models:
22
22
  - id: deepseek-v4-pro
23
23
  displayName: DeepSeek V4 Pro
24
24
  maxOutputTokens: 65536
25
+ contextWindow: 1000000
25
26
  capabilities:
26
27
  image: false
27
28
  video: false
@@ -43,6 +44,7 @@ models:
43
44
  - id: deepseek-v4-flash
44
45
  displayName: DeepSeek V4 Flash
45
46
  maxOutputTokens: 65536
47
+ contextWindow: 1000000
46
48
  capabilities:
47
49
  image: false
48
50
  video: false
@@ -40,6 +40,7 @@ models:
40
40
  - id: doubao-seed-2-0-pro-260215
41
41
  displayName: Doubao Seed 2.0 Pro
42
42
  maxOutputTokens: 16384
43
+ contextWindow: 256000
43
44
  capabilities:
44
45
  image: false
45
46
  video: false
@@ -67,6 +68,7 @@ models:
67
68
  - id: doubao-seed-2-0-lite-260428
68
69
  displayName: Doubao Seed 2.0 Lite
69
70
  maxOutputTokens: 16384
71
+ contextWindow: 256000
70
72
  capabilities:
71
73
  image: false
72
74
  video: false
@@ -91,6 +93,7 @@ models:
91
93
  - id: doubao-seed-2-0-mini-260428
92
94
  displayName: Doubao Seed 2.0 Mini
93
95
  maxOutputTokens: 16384
96
+ contextWindow: 256000
94
97
  capabilities:
95
98
  image: false
96
99
  video: false
@@ -115,6 +118,7 @@ models:
115
118
  - id: doubao-seed-2-0-code-preview-260215
116
119
  displayName: Doubao Seed 2.0 Code Preview
117
120
  maxOutputTokens: 16384
121
+ contextWindow: 256000
118
122
  capabilities:
119
123
  image: false
120
124
  video: false
@@ -33,6 +33,7 @@ models:
33
33
  - id: hy3-preview
34
34
  displayName: Hunyuan Hy3 Preview
35
35
  maxOutputTokens: 16384
36
+ contextWindow: 256000
36
37
  capabilities:
37
38
  image: false
38
39
  video: false
@@ -1,8 +1,8 @@
1
1
  id: kimi
2
2
  displayName: Kimi (Moonshot AI)
3
3
  displayName_zh: Kimi(月之暗面)
4
- description: Kimi K2.6 via OpenAI-compatible chat completions API
5
- description_zh: Kimi K2.6,通过 OpenAI 兼容的 chat completions API 调用
4
+ description: Kimi K3 / K2.6 via OpenAI-compatible chat completions API
5
+ description_zh: Kimi K3 / K2.6,通过 OpenAI 兼容的 chat completions API 调用
6
6
  defaultEndpoint: https://api.moonshot.cn/v1
7
7
 
8
8
  secrets:
@@ -12,18 +12,53 @@ secrets:
12
12
  default: <<KIMI_API_KEY>>
13
13
  secret: true
14
14
 
15
- # Capabilities verified 2026-05-27 via live probes. Kimi-k2.6 returns
16
- # "prepare image failed" on image_url blocks despite past docs claiming
17
- # vision — set image:false until/unless a vision-specific model id is
18
- # tested here. reasoning_effort accepts { minimal, low, medium, high };
19
- # `max` errors with explicit message listing the four valid values.
20
- # Caching is automatic; cached_tokens shows up reliably from turn 2 once
21
- # the prompt is long enough (~2K+).
15
+ # Capability notes (per-model specifics live on each entry):
16
+ # - Caching is automatic on both models; cached_tokens shows up reliably
17
+ # from turn 2 once the prompt is long enough (~2K+).
18
+ # - Thinking control is TWO separate mechanisms depending on generation:
19
+ # K3 uses the top-level `reasoning_effort` field (enum currently only
20
+ # "max" per the official OpenAPI schema); K2.x uses the
21
+ # `thinking:{type:'enabled'|'disabled'}` toggle and has NO
22
+ # reasoning_effort field at all (OpenAPI marks it unsupported for
23
+ # k2.6). An earlier comment here claiming K2.6 accepts
24
+ # reasoning_effort { minimal, low, medium, high } was wrong.
22
25
  models:
26
+ - id: kimi-k3
27
+ displayName: Kimi K3
28
+ # Official default output cap; the model can go up to 1M but we don't max out.
29
+ maxOutputTokens: 131072
30
+ contextWindow: 1048576
31
+ capabilities:
32
+ # K3 itself also supports video input, but Halo has no video upload
33
+ # path yet — keep video:false until one exists. Image input is
34
+ # base64-only (public URLs are not supported); kimi-agent happens to
35
+ # send only base64 data URLs, so it's naturally compatible.
36
+ image: true
37
+ video: false
38
+ audio: false
39
+ promptCaching:
40
+ # Automatic caching, hint-only (prompt_cache_key) — same as K2.6.
41
+ default: 5m
42
+ ttlPresets:
43
+ - { value: 5m, label: 5min }
44
+ thinking:
45
+ # K3 thinking is ALWAYS ON server-side — there is no off switch.
46
+ # The only knob is the top-level `reasoning_effort` field, whose
47
+ # enum currently contains just "max" (confirmed in the official
48
+ # OpenAPI schema). Do NOT send the K2.x `thinking` parameter to K3.
49
+ defaultEnabled: true
50
+ default: max
51
+ effortPresets:
52
+ - { value: max, label: Max }
53
+
23
54
  - id: kimi-k2.6
24
55
  displayName: Kimi K2.6
25
56
  maxOutputTokens: 32768
57
+ contextWindow: 262144
26
58
  capabilities:
59
+ # Verified 2026-05-27 via live probes: kimi-k2.6 returns "prepare
60
+ # image failed" on image_url blocks despite past docs claiming
61
+ # vision — keep image:false.
27
62
  image: false
28
63
  video: false
29
64
  audio: false
@@ -32,10 +67,11 @@ models:
32
67
  ttlPresets:
33
68
  - { value: 5m, label: 5min }
34
69
  thinking:
70
+ # K2.6 has NO reasoning_effort field — its only reasoning control is
71
+ # the top-level `thinking:{type:'enabled'|'disabled'}` on/off toggle.
72
+ # The effort label below is Halo-side only (doubao precedent):
73
+ # kimi-agent just maps enabled → omit / disabled → thinking:disabled.
35
74
  defaultEnabled: true
36
75
  default: medium
37
76
  effortPresets:
38
- - { value: minimal, label: Minimal }
39
- - { value: low, label: Low }
40
- - { value: medium, label: Medium }
41
- - { value: high, label: High }
77
+ - { value: medium, label: On }
@@ -19,6 +19,7 @@ models:
19
19
  - id: mimo-v2.5-pro
20
20
  displayName: MiMo v2.5 Pro
21
21
  maxOutputTokens: 131072
22
+ contextWindow: 1048576
22
23
  capabilities:
23
24
  image: false
24
25
  video: false
@@ -41,6 +42,7 @@ models:
41
42
  - id: mimo-v2.5
42
43
  displayName: MiMo v2.5
43
44
  maxOutputTokens: 131072
45
+ contextWindow: 1048576
44
46
  capabilities:
45
47
  image: true
46
48
  video: false
@@ -1,10 +1,10 @@
1
1
  id: minimax
2
2
  displayName: MiniMax
3
3
  displayName_zh: MiniMax
4
- description: MiniMax M2.7 family via the Anthropic-compatible Messages API
5
- description_zh: MiniMax M2.7 系列,通过 Anthropic 兼容的 Messages API 调用
4
+ description: MiniMax M3 / M2.7 family via the Anthropic-compatible Messages API
5
+ description_zh: MiniMax M3 / M2.7 系列,通过 Anthropic 兼容的 Messages API 调用
6
6
  defaultEndpoint: https://api.minimaxi.com/anthropic
7
- defaultModelId: MiniMax-M2.7
7
+ defaultModelId: MiniMax-M3
8
8
 
9
9
  secrets:
10
10
  - key: api_key
@@ -16,11 +16,12 @@ secrets:
16
16
  # Capability notes for MiniMax M2.7 family — verified against
17
17
  # platform.minimaxi.com/docs/api-reference/text-anthropic-api on 2026-05-26
18
18
  # plus live probes against MiniMax-M2.7:
19
- # - image / video / audio: documented as not supported
19
+ # - image / video / audio: documented as not supported (M2.x; M3 differs —
20
+ # see its entry)
20
21
  # - thinking: forced on — `thinking:{type:'disabled'}` and omitting the
21
22
  # field both still produce thinking blocks; only budget_tokens influences
22
23
  # output. So we don't expose an off toggle.
23
- # - cache_control: both models support caching. Doc says TTL is 5min,
24
+ # - cache_control: both M2.7 models support caching. Doc says TTL is 5min,
24
25
  # refreshing automatically on each hit. cache_control:{type:'ephemeral'}
25
26
  # is the only shape — no longer-TTL knob exposed by MiniMax.
26
27
  # - MiniMax-M2.7-highspeed: turn 1 reports cache_creation_input_tokens=N,
@@ -35,9 +36,39 @@ secrets:
35
36
  # observed to truncate the run with stop=max_tokens before any thinking
36
37
  # completes — leaving it out of the preset list. medium/high are safe.
37
38
  models:
39
+ - id: MiniMax-M3
40
+ displayName: MiniMax M3
41
+ # Official recommended value; hard cap is 524288 but we don't max out.
42
+ maxOutputTokens: 131072
43
+ contextWindow: 1000000
44
+ capabilities:
45
+ # M3 also supports video input, but Halo has no video upload path yet —
46
+ # keep video:false until one exists. Image rides the Anthropic-compatible
47
+ # API's standard image blocks; minimax-agent passes this.messages
48
+ # straight through, so no agent code change is needed.
49
+ image: true
50
+ video: false
51
+ audio: false
52
+ # No promptCaching key on purpose: both official caching docs agree
53
+ # that explicit caching (cache_control) is only supported on the
54
+ # M2.7/M2.5/M2.1/M2 families — NOT M3. M3 only has passive automatic
55
+ # caching (no parameter; usage reports cache_read, which the agent
56
+ # already reads). Omitting the key keeps the UI toggle away so users
57
+ # can't configure the unsupported M3+cache_control combination.
58
+ thinking:
59
+ # M3 thinking is off by default; enabling sends
60
+ # thinking:{type:'adaptive'} — no low/medium/high grading and no
61
+ # budget_tokens. This is the opposite of M2.x's manual+budget scheme.
62
+ mode: adaptive
63
+ defaultEnabled: true
64
+ default: adaptive
65
+ effortPresets:
66
+ - { value: adaptive, label: Adaptive }
67
+
38
68
  - id: MiniMax-M2.7
39
69
  displayName: MiniMax M2.7
40
70
  maxOutputTokens: 16384
71
+ contextWindow: 204800
41
72
  capabilities:
42
73
  image: false
43
74
  video: false
@@ -62,6 +93,7 @@ models:
62
93
  - id: MiniMax-M2.7-highspeed
63
94
  displayName: MiniMax M2.7 Highspeed
64
95
  maxOutputTokens: 16384
96
+ contextWindow: 204800
65
97
  capabilities:
66
98
  image: false
67
99
  video: false
@@ -30,6 +30,7 @@ models:
30
30
  - id: gpt-4o
31
31
  displayName: GPT-4o (placeholder)
32
32
  maxOutputTokens: 16384
33
+ contextWindow: 128000
33
34
  capabilities:
34
35
  image: true
35
36
  video: true
@@ -38,6 +38,7 @@ models:
38
38
  - id: qwen3.7-max
39
39
  displayName: Qwen3.7 Max
40
40
  maxOutputTokens: 16384
41
+ contextWindow: 1000000
41
42
  capabilities:
42
43
  image: false
43
44
  video: false
@@ -60,6 +61,7 @@ models:
60
61
  - id: qwen3.6-plus
61
62
  displayName: Qwen3.6 Plus
62
63
  maxOutputTokens: 16384
64
+ contextWindow: 1000000
63
65
  capabilities:
64
66
  image: true
65
67
  video: false