dsh-ssh-tui 0.3.7 → 0.3.8
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.
- package/README.en.md +29 -17
- package/README.md +17 -8
- package/lib/index.js +58 -8
- package/lib/index.js.map +1 -1
- package/lib/route-memory.js +23 -4
- package/lib/route-memory.js.map +1 -1
- package/lib/subagent-model.js +37 -12
- package/lib/subagent-model.js.map +1 -1
- package/lib/supergrok-token.js +128 -0
- package/lib/supergrok-token.js.map +1 -0
- package/lib/tui.js +187 -71
- package/lib/tui.js.map +1 -1
- package/lib/types/route-memory.d.ts +10 -0
- package/lib/types/subagent-model.d.ts +4 -2
- package/lib/types/supergrok-token.d.ts +22 -0
- package/lib/types/tui.d.ts +10 -1
- package/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -72,10 +72,18 @@ because the manifest declares `dsh.bundle`.
|
|
|
72
72
|
Optional: reuse a SuperGrok / grok-bridge token already on the machine:
|
|
73
73
|
|
|
74
74
|
```sh
|
|
75
|
-
dsh plugin --profile tui add
|
|
76
|
-
dsh plugin --profile headless add
|
|
75
|
+
dsh plugin --profile tui add dsh-llm-xai-oauth
|
|
76
|
+
dsh plugin --profile headless add dsh-llm-xai-oauth
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
+
SuperGrok access tokens last about an hour. The TUI refreshes a due token on open, and `/usage` force-refreshes once after HTTP 401. If dsh is not running overnight, install the companion refresher or the next session starts with 401:
|
|
80
|
+
|
|
81
|
+
```sh
|
|
82
|
+
npx dsh-llm-xai-oauth daemon --install
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
See [dsh-llm-xai-oauth](https://github.com/cyjyyd/dsh-llm-xai-oauth).
|
|
86
|
+
|
|
79
87
|
Smoke the route before opening the TUI. The TUI exits immediately without a TTY:
|
|
80
88
|
|
|
81
89
|
```sh
|
|
@@ -249,11 +257,14 @@ configured catalog when the endpoint cannot be reached. Picking a model that
|
|
|
249
257
|
is not stored in the provider profile automatically adds it to
|
|
250
258
|
`llm-pi-ai.providers.<id>.models` so the harness can serve it.
|
|
251
259
|
|
|
252
|
-
Subagents follow the parent session's provider by default
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
260
|
+
Subagents follow the parent session's provider by default. Switching
|
|
261
|
+
provider/model persists the subagent model automatically (closest name to
|
|
262
|
+
the parent's, `flash`-suffixed ids first — `deepseek-v4-flash`,
|
|
263
|
+
`grok-4.5`); no dialog is shown, and `/submodel` still overrides it.
|
|
264
|
+
`/submodel [model-id]` picks (or directly sets) the subagent model, and
|
|
265
|
+
`/subeffort` picks the subagent reasoning effort or restores the provider
|
|
266
|
+
default. Both commands are remembered under `ssh-tui-subagent` in
|
|
267
|
+
`$DSH_HOME/settings.yaml`.
|
|
257
268
|
`/subagents` lists active subagents, and `/subagents kill <session-id> [more ids...]`
|
|
258
269
|
releases selected continuable children using the harness 0.1.1
|
|
259
270
|
`drainContinuableChildren` capability.
|
|
@@ -327,16 +338,17 @@ animated spinner plus `运行中 · 工具 N` while working, `✓ 已完成` for
|
|
|
327
338
|
seconds after completion, and `待命` when idle. A terminal bell rings on
|
|
328
339
|
completion (`DSH_TUI_NO_BELL=1` disables it).
|
|
329
340
|
|
|
330
|
-
Tool calls render as compact cards instead of raw argument JSON.
|
|
331
|
-
|
|
332
|
-
(a shell command with a non-zero exit or
|
|
333
|
-
`[退出码 N]` / `[信号 X]` suffix). Shell tools
|
|
334
|
-
`$ command`, file mutations (`edit` / `write` /
|
|
335
|
-
the applied change git-style: a path header,
|
|
336
|
-
|
|
337
|
-
footer. File-mutation diffs are shown in full
|
|
338
|
-
line) and their cards start expanded. Other
|
|
339
|
-
summary and start collapsed to a single line
|
|
341
|
+
Tool calls render as compact cards instead of raw argument JSON. The card
|
|
342
|
+
header and result text follow the execution state — yellow while running,
|
|
343
|
+
green on success, red on failure (a shell command with a non-zero exit or
|
|
344
|
+
signal also turns red, with a `[退出码 N]` / `[信号 X]` suffix). Shell tools
|
|
345
|
+
show the command as dim-grey `$ command`, file mutations (`edit` / `write` /
|
|
346
|
+
`str_replace_editor`) render the applied change git-style: a path header,
|
|
347
|
+
`-` lines on a dark-red background, `+` lines on a dark-green background,
|
|
348
|
+
and a `└ +N -M · K file(s)` footer. File-mutation diffs are shown in full
|
|
349
|
+
(never collapsed to a `… more` line) and their cards start expanded. Other
|
|
350
|
+
tools show a short argument summary and start collapsed to a single line
|
|
351
|
+
(the command, truncated with
|
|
340
352
|
`…` when long); expand to reveal output or the result body. Expanded generic
|
|
341
353
|
calls convert their JSON arguments and JSON results into readable indented
|
|
342
354
|
content — key/value fields, bullet lists, and multiline blocks for
|
package/README.md
CHANGED
|
@@ -51,9 +51,9 @@ dsh --profile tui
|
|
|
51
51
|
`▸ 已思考 · N 行`,可单独展开;思考过程中也能实时展开/收起查看原文;
|
|
52
52
|
- 工作区支持 markdown 渲染:多级标题(H1 放大/下划线、H2 下划线、H3 着色)、
|
|
53
53
|
粗体、斜体、行内代码、代码块、列表、引用与链接;模型最终回复以粗体白色显示;
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
diff 内容不截断)、JSON 参数与结果自动转可读内容;
|
|
54
|
+
- 工具调用卡片化:标题与结果文字跟随执行状态(运行黄 / 成功绿 / 失败红),
|
|
55
|
+
shell 命令浅灰显示、状态点同色;编辑工具 git 风格 diff(`-` 暗红底 / `+` 暗绿底 /
|
|
56
|
+
文件统计,编辑卡片默认展开且 diff 内容不截断)、JSON 参数与结果自动转可读内容;
|
|
57
57
|
- 转录区滚动回看(`PgUp`/`PgDn`、鼠标滚轮),点击思考/工具标题行直接展开收起;
|
|
58
58
|
- 输入框下方两行底栏:第一行链路芯片 + 按宽度丢组的会话数字(轮次、入/出 token、速度);
|
|
59
59
|
第二行只留一个活动词(运行中 / 工具 N / 子代理 N / 压缩中…),身份收到右侧;
|
|
@@ -79,10 +79,18 @@ dsh --profile tui
|
|
|
79
79
|
可选:本机已有 SuperGrok / grok-bridge token 时再装配套 OAuth:
|
|
80
80
|
|
|
81
81
|
```bash
|
|
82
|
-
dsh plugin --profile tui add
|
|
83
|
-
dsh plugin --profile headless add
|
|
82
|
+
dsh plugin --profile tui add dsh-llm-xai-oauth
|
|
83
|
+
dsh plugin --profile headless add dsh-llm-xai-oauth
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
+
SuperGrok 的 access token 大约 1 小时过期。TUI 打开时会刷新即将过期的 token,`/usage` 遇到 401 也会再刷一次。机器长时间不开 dsh 时,请另开刷新进程,否则一打开就是 401:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npx dsh-llm-xai-oauth daemon --install
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
说明见 [dsh-llm-xai-oauth](https://github.com/cyjyyd/dsh-llm-xai-oauth)。
|
|
93
|
+
|
|
86
94
|
先确认链路再开 TUI(无 TTY 时 TUI 会直接退出):
|
|
87
95
|
|
|
88
96
|
```bash
|
|
@@ -213,9 +221,10 @@ dsh --profile tui --no-color
|
|
|
213
221
|
每个提供商上次的模型和思考强度会分开记住。`/setup` 只新增或更新当前这条
|
|
214
222
|
API Key 提供商,不会冲掉其它路由。SuperGrok / X Premium 走本机 OAuth,不需要填 Key。
|
|
215
223
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
224
|
+
子代理默认跟随父会话的提供方,并尽量选同一家的轻量模型:按父会话所选模型名
|
|
225
|
+
近似匹配,`flash` 结尾的优先——DeepSeek 用 `deepseek-v4-flash`,xAI 用
|
|
226
|
+
`grok-4.5`。`/model` 或 `/provider` 换提供商(OAuth / API Key 都一样)时会
|
|
227
|
+
**自动落盘**子代理模型(不弹窗;想手动改再用 `/submodel`):
|
|
219
228
|
|
|
220
229
|
- `/submodel [model-id]`:打开子代理模型选择器;带参数时直接指定模型;
|
|
221
230
|
- `/subeffort`:选择子代理思考强度,或恢复为“跟随提供商默认”;
|
package/lib/index.js
CHANGED
|
@@ -5,15 +5,35 @@
|
|
|
5
5
|
* subagents, sandbox approvals) is the same one the web surface uses.
|
|
6
6
|
*/
|
|
7
7
|
import { installModelSelection } from '@deepseek-ai/dsh-agent';
|
|
8
|
-
import { errorChain } from '@deepseek-ai/dsh-llm';
|
|
8
|
+
import { errorChain, ReasoningEffortId } from '@deepseek-ai/dsh-llm';
|
|
9
9
|
import { SessionId } from '@deepseek-ai/dsh-session';
|
|
10
10
|
import { randomUUID } from 'node:crypto';
|
|
11
|
+
import { readFileSync } from 'node:fs';
|
|
12
|
+
import { homedir } from 'node:os';
|
|
13
|
+
import { join } from 'node:path';
|
|
14
|
+
import yaml from 'js-yaml';
|
|
15
|
+
/** Read the user's `agent-default-model` straight from `$DSH_HOME/settings.yaml`. */
|
|
16
|
+
function readAgentDefaultFromFile() {
|
|
17
|
+
const home = process.env.DSH_HOME ?? join(homedir(), '.dsh');
|
|
18
|
+
try {
|
|
19
|
+
const parsed = yaml.load(readFileSync(join(home, 'settings.yaml'), 'utf8'));
|
|
20
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
21
|
+
return undefined;
|
|
22
|
+
const section = parsed['agent-default-model'];
|
|
23
|
+
return section !== null && typeof section === 'object' && !Array.isArray(section)
|
|
24
|
+
? section
|
|
25
|
+
: undefined;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
11
31
|
import { showSessionPicker } from './picker.js';
|
|
12
32
|
import { mountTui } from './tui.js';
|
|
13
33
|
import { defaultReasoningEffort } from './reasoning.js';
|
|
14
34
|
import { createSubagentSelection } from './subagent-model.js';
|
|
15
35
|
import { acquireSessionLock, releaseSessionLock, sessionLockDisabled } from './session-lock.js';
|
|
16
|
-
import { installRouteMemory } from './route-memory.js';
|
|
36
|
+
import { installRouteMemory, latestRememberedRoute, parseRouteMemory } from './route-memory.js';
|
|
17
37
|
export const name = 'ssh-tui';
|
|
18
38
|
/** Core services required before the terminal channel can drive an agent. */
|
|
19
39
|
export const inject = ['agents', 'agentDefaultModel'];
|
|
@@ -73,27 +93,57 @@ export function apply(ctx, config) {
|
|
|
73
93
|
if (agents === undefined)
|
|
74
94
|
throw new Error('dsh-ssh-tui: agents service is unavailable');
|
|
75
95
|
const defaultModel = ctx.get('agentDefaultModel');
|
|
76
|
-
const
|
|
96
|
+
const serviceSaved = defaultModel?.currentSelection();
|
|
97
|
+
// The settings document / on-disk file is the authoritative source for a
|
|
98
|
+
// default that must survive a restart. The agentDefaultModel service
|
|
99
|
+
// (or a duplicate settings instance) can report a stale in-memory
|
|
100
|
+
// selection, so prefer the file when it carries a user section.
|
|
101
|
+
const settingsSvc = ctx.get('settings');
|
|
102
|
+
const doc = settingsSvc?.document;
|
|
103
|
+
const docSection = doc !== null && typeof doc === 'object' && !Array.isArray(doc)
|
|
104
|
+
? doc['agent-default-model']
|
|
105
|
+
: undefined;
|
|
106
|
+
const fileSection = readAgentDefaultFromFile();
|
|
107
|
+
const authoritative = (fileSection ?? docSection);
|
|
108
|
+
const savedSelection = authoritative !== undefined
|
|
109
|
+
&& typeof authoritative.provider === 'string'
|
|
110
|
+
&& typeof authoritative.model === 'string'
|
|
111
|
+
? {
|
|
112
|
+
provider: authoritative.provider,
|
|
113
|
+
model: authoritative.model,
|
|
114
|
+
...(typeof authoritative.reasoningEffort === 'string'
|
|
115
|
+
? { reasoningEffort: ReasoningEffortId(authoritative.reasoningEffort) }
|
|
116
|
+
: {}),
|
|
117
|
+
}
|
|
118
|
+
: serviceSaved;
|
|
119
|
+
const hasUserDefaultSection = fileSection !== undefined || docSection !== undefined;
|
|
120
|
+
const rememberedFallback = !hasUserDefaultSection
|
|
121
|
+
? latestRememberedRoute(parseRouteMemory(settingsSvc?.document?.['ssh-tui-routes']))
|
|
122
|
+
: undefined;
|
|
77
123
|
// An explicit in-process change (/setup or /model) wins over launch-time
|
|
78
124
|
// CLI overrides for every session created or resumed later in this process.
|
|
79
125
|
const provider = liveSelection?.provider
|
|
80
126
|
?? config.provider
|
|
81
127
|
?? savedSelection?.provider
|
|
128
|
+
?? rememberedFallback?.provider
|
|
82
129
|
?? 'deepseek-official';
|
|
83
130
|
const model = liveSelection?.model
|
|
84
131
|
?? config.model
|
|
85
132
|
?? savedSelection?.model
|
|
133
|
+
?? rememberedFallback?.model
|
|
86
134
|
?? 'deepseek-v4-flash';
|
|
87
135
|
// Reasoning effort is only meaningful for the exact provider/model it
|
|
88
136
|
// belongs to. CLI overrides that change either route must not inherit the
|
|
89
137
|
// saved effort of a different model.
|
|
90
138
|
let reasoningEffort = liveSelection?.reasoningEffort;
|
|
91
139
|
if (reasoningEffort === undefined && liveSelection === undefined) {
|
|
92
|
-
const sameSavedRoute = savedSelection !== undefined
|
|
93
|
-
&& (config.provider === undefined || config.provider === savedSelection
|
|
94
|
-
&& (config.model === undefined || config.model === savedSelection
|
|
95
|
-
if (sameSavedRoute)
|
|
96
|
-
|
|
140
|
+
const sameSavedRoute = (savedSelection ?? rememberedFallback) !== undefined
|
|
141
|
+
&& (config.provider === undefined || config.provider === (savedSelection ?? rememberedFallback)?.provider)
|
|
142
|
+
&& (config.model === undefined || config.model === (savedSelection ?? rememberedFallback)?.model);
|
|
143
|
+
if (sameSavedRoute) {
|
|
144
|
+
const rawEffort = (savedSelection ?? rememberedFallback)?.reasoningEffort;
|
|
145
|
+
reasoningEffort = rawEffort === undefined ? undefined : ReasoningEffortId(String(rawEffort));
|
|
146
|
+
}
|
|
97
147
|
}
|
|
98
148
|
// OpenCode / third-party (llm-pi-ai) routes carry no adapter-level
|
|
99
149
|
// reasoning default, so default a supported effort ourselves when none is
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,qBAAqB,EAAiE,MAAM,wBAAwB,CAAA;AAG7H,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAsB,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAA;AAE7B,6EAA6E;AAC7E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAA;AAqBrD;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,MAAc;IAChD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAA;IAChG,CAAC;IACD,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAA;IACtD,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACvB,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;QACd,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,IAAI,MAA+B,CAAA;QACnC,IAAI,UAAqC,CAAA;QACzC,IAAI,mBAAuC,CAAA;QAE3C,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;YAChD,MAAM,IAAI,GAAG,mBAAmB,CAAA;YAChC,mBAAmB,GAAG,SAAS,CAAA;YAC/B,IAAI,IAAI,KAAK,SAAS;gBAAE,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACxD,CAAC,CAAA;QAED,MAAM,eAAe,GAAG,KAAK,EAAE,SAAiB,EAAiB,EAAE;YACjE,IAAI,mBAAmB,EAAE;gBAAE,OAAM;YACjC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE;gBACnD,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG;aAC5C,CAAC,CAAA;YACF,mBAAmB,GAAG,IAAI,CAAA;QAC5B,CAAC,CAAA;QACD,yEAAyE;QACzE,4EAA4E;QAC5E,IAAI,aAAyC,CAAA;QAE7C,iEAAiE;QACjE,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAU,EAAE;YAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAuB,CAAA;YACnE,MAAM,MAAM,GAAG,WAAW,CAAA;YAC1B,MAAM,WAAW,GAAG,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YACvD,IAAI,QAAQ,KAAK,SAAS,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;gBACxD,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,CAAA;gBACxE,CAAC;YACH,CAAC;YACD,OAAO,sDAAsD,SAAS,EAAE,CAAA;QAC1E,CAAC,CAAA;QAED,MAAM,KAAK,GAAG,KAAK,EAAE,SAAoB,EAAE,MAAe,EAAiB,EAAE;YAC3E,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAA;YAChC,IAAI,QAAQ;gBAAE,OAAM;YACpB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAChC,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;YACvF,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;YACjD,MAAM,cAAc,GAAG,YAAY,EAAE,gBAAgB,EAAE,CAAA;YAEvD,yEAAyE;YACzE,4EAA4E;YAC5E,MAAM,QAAQ,GAAG,aAAa,EAAE,QAAQ;mBACnC,MAAM,CAAC,QAAQ;mBACf,cAAc,EAAE,QAAQ;mBACxB,mBAAmB,CAAA;YACxB,MAAM,KAAK,GAAG,aAAa,EAAE,KAAK;mBAC7B,MAAM,CAAC,KAAK;mBACZ,cAAc,EAAE,KAAK;mBACrB,mBAAmB,CAAA;YAExB,sEAAsE;YACtE,0EAA0E;YAC1E,qCAAqC;YACrC,IAAI,eAAe,GAAG,aAAa,EAAE,eAAe,CAAA;YACpD,IAAI,eAAe,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBACjE,MAAM,cAAc,GAAG,cAAc,KAAK,SAAS;uBAC9C,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,cAAc,CAAC,QAAQ,CAAC;uBAC9E,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK,CAAC,CAAA;gBAC1E,IAAI,cAAc;oBAAE,eAAe,GAAG,cAAc,CAAC,eAAe,CAAA;YACtE,CAAC;YACD,mEAAmE;YACnE,0EAA0E;YAC1E,wEAAwE;YACxE,iDAAiD;YACjD,IAAI,eAAe,KAAK,SAAS,IAAI,QAAQ,KAAK,mBAAmB,EAAE,CAAC;gBACtE,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBAC1B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACtB,eAAe,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;gBACtE,CAAC;YACH,CAAC;YAED,MAAM,kBAAkB,GAAmB;gBACzC,QAAQ;gBACR,KAAK;gBACL,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;aAC9D,CAAA;YACD,MAAM,YAAY,GAAsB;gBACtC,OAAO,EAAE,kBAAkB;gBAC3B,SAAS,EAAE,SAAS;aACrB,CAAA;YACD,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;YAC5C,MAAM,YAAY,GAAG;gBACnB,QAAQ;gBACR,KAAK;gBACL,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;aAC9D,CAAA;YACD,MAAM,KAAK,GAAG,KAAK,EAAE,QAAiB,EAAiB,EAAE;gBACvD,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;gBAC7C,MAAM,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;YACrC,CAAC,CAAA;YACD,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;YACxC,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM;oBACb,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;oBAC1E,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA;YAC3F,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,eAAe,EAAE,CAAA;gBACvB,MAAM,KAAK,CAAA;YACb,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;gBACtB,MAAM,eAAe,EAAE,CAAA;gBACvB,OAAM;YACR,CAAC;YACD,MAAM,QAAQ,GAAG,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,YAAY,EAAE,SAAS,CAAA;YAC1F,IAAI,UAAU,GAAG,QAAQ,CAAA;YACzB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;oBACpD,IAAI,MAAM,EAAE,IAAI,KAAK,SAAS;wBAAE,UAAU,GAAG,MAAM,CAAC,IAAI,CAAA;gBAC1D,CAAC;gBAAC,MAAM,CAAC;oBACP,uBAAuB;gBACzB,CAAC;YACH,CAAC;YACD,UAAU,GAAG,QAAQ,CAAC,GAAG,EAAE;gBACzB,GAAG,MAAM;gBACT,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;gBAC5B,MAAM;gBACN,QAAQ;gBACR,KAAK;gBACL,YAAY;gBACZ,iBAAiB;gBACjB,QAAQ;gBACR,UAAU;gBACV,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACtC,eAAe,EAAE,QAAQ;gBACzB,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC3B,aAAa,GAAG,IAAI,CAAA;gBACtB,CAAC;aACF,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,6EAA6E;QAC7E,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;YACvD,IAAI,SAAS,IAAI,QAAQ;gBAAE,OAAM;YACjC,SAAS,GAAG,IAAI,CAAA;YAChB,IAAI,CAAC;gBACH,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;oBAC1B,UAAU,GAAG,SAAS,CAAA;gBACxB,CAAC;gBACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;oBACtB,MAAM,GAAG,SAAS,CAAA;gBACpB,CAAC;gBACD,MAAM,eAAe,EAAE,CAAA;gBACvB,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;YACtC,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,MAAM,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACpG,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBAC/B,IAAI,IAAI,KAAK,SAAS;oBAAE,IAAI,CAAC,CAAC,CAAC,CAAA;;oBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACtB,CAAC;oBAAS,CAAC;gBACT,SAAS,GAAG,KAAK,CAAA;YACnB,CAAC;QACH,CAAC,CAAA;QAED,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAA;QACzC,IAAI,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAA;QACvC,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;YACrC,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;gBACjC,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAA;gBAChC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;gBACvF,IAAI,QAAQ;oBAAE,OAAM;gBACpB,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;oBAC/B,IAAI,IAAI,KAAK,SAAS;wBAAE,IAAI,CAAC,CAAC,CAAC,CAAA;;wBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBACpB,OAAM;gBACR,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAA;oBAC5B,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;gBACzC,CAAC;qBAAM,CAAC;oBACN,oEAAoE;oBACpE,mEAAmE;oBACnE,sBAAsB;oBACtB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,EAAE;wBACvC,CAAC,CAAC,gBAAgB,UAAU,EAAE,EAAE;wBAChC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAA;oBACpB,gBAAgB,GAAG,SAAS,CAAA;oBAC5B,MAAM,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAA;gBAC1C,CAAC;gBACD,OAAM;YACR,CAAC;YACD,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAA;QAClE,CAAC,CAAA;QAED,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB;gBAC5E,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,gBAAgB,uBAAuB,MAAM,IAAI,CAAC,CAAA;YAChG,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAC/B,IAAI,IAAI,KAAK,SAAS;gBAAE,IAAI,CAAC,CAAC,CAAC,CAAA;;gBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACtB,CAAC,CAAC,CAAA;QAEF,OAAO,KAAK,IAAmB,EAAE;YAC/B,QAAQ,GAAG,IAAI,CAAA;YACf,WAAW,CAAC,KAAK,EAAE,CAAA;YACnB,MAAM,UAAU,EAAE,OAAO,EAAE,CAAA;YAC3B,MAAM,MAAM,EAAE,OAAO,EAAE,CAAA;YACvB,MAAM,eAAe,EAAE,CAAA;QACzB,CAAC,CAAA;IACH,CAAC,EAAE,SAAS,CAAC,CAAA;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/route-memory.js
CHANGED
|
@@ -10,6 +10,7 @@ export const ROUTE_MEMORY_SCHEMA = z.object({
|
|
|
10
10
|
providers: z.dict(z.object({
|
|
11
11
|
model: z.string(),
|
|
12
12
|
reasoningEffort: z.string().default(''),
|
|
13
|
+
updatedAt: z.number(),
|
|
13
14
|
})).default({}),
|
|
14
15
|
});
|
|
15
16
|
export function parseRouteMemory(raw) {
|
|
@@ -25,13 +26,28 @@ export function parseRouteMemory(raw) {
|
|
|
25
26
|
if (model === '')
|
|
26
27
|
continue;
|
|
27
28
|
const effort = typeof row.reasoningEffort === 'string' ? row.reasoningEffort.trim() : '';
|
|
28
|
-
|
|
29
|
+
const updatedAt = typeof row.updatedAt === 'number' && Number.isFinite(row.updatedAt) ? row.updatedAt : 0;
|
|
30
|
+
out[id] = {
|
|
31
|
+
model,
|
|
32
|
+
...(effort === '' ? {} : { reasoningEffort: effort }),
|
|
33
|
+
...(updatedAt > 0 ? { updatedAt } : {}),
|
|
34
|
+
};
|
|
29
35
|
}
|
|
30
36
|
return out;
|
|
31
37
|
}
|
|
32
38
|
export function rememberedRouteFor(memory, provider) {
|
|
33
39
|
return memory[provider.trim()];
|
|
34
40
|
}
|
|
41
|
+
/** The most recently persisted route (highest updatedAt), or undefined. */
|
|
42
|
+
export function latestRememberedRoute(memory) {
|
|
43
|
+
let best;
|
|
44
|
+
for (const [provider, route] of Object.entries(memory)) {
|
|
45
|
+
if (best === undefined || (route.updatedAt ?? 0) > (best.updatedAt ?? 0)) {
|
|
46
|
+
best = { ...route, provider };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return best;
|
|
50
|
+
}
|
|
35
51
|
/** Register the route-memory settings section so /model and /provider can persist. */
|
|
36
52
|
export function installRouteMemory(ctx) {
|
|
37
53
|
installSettingsSection(ctx, ROUTE_MEMORY_NAMESPACE, ROUTE_MEMORY_SCHEMA, {
|
|
@@ -47,9 +63,12 @@ export function upsertRememberedRoute(memory, provider, route) {
|
|
|
47
63
|
return memory;
|
|
48
64
|
return {
|
|
49
65
|
...memory,
|
|
50
|
-
[id]:
|
|
51
|
-
|
|
52
|
-
|
|
66
|
+
[id]: {
|
|
67
|
+
...(route.reasoningEffort === undefined || route.reasoningEffort === ''
|
|
68
|
+
? { model: route.model }
|
|
69
|
+
: { model: route.model, reasoningEffort: route.reasoningEffort }),
|
|
70
|
+
updatedAt: Date.now(),
|
|
71
|
+
},
|
|
53
72
|
};
|
|
54
73
|
}
|
|
55
74
|
//# sourceMappingURL=route-memory.js.map
|
package/lib/route-memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-memory.js","sourceRoot":"","sources":["../src/route-memory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAExC,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAErF,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;AAEzE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"route-memory.js","sourceRoot":"","sources":["../src/route-memory.ts"],"names":[],"mappings":"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"}
|
package/lib/subagent-model.js
CHANGED
|
@@ -33,26 +33,50 @@ function modelLooksLike(model, markers) {
|
|
|
33
33
|
const id = model.trim().toLowerCase();
|
|
34
34
|
return markers.some(marker => id.includes(marker));
|
|
35
35
|
}
|
|
36
|
+
/** Length of the shared leading characters between two model ids. */
|
|
37
|
+
function commonPrefixLength(a, b) {
|
|
38
|
+
let index = 0;
|
|
39
|
+
while (index < a.length && index < b.length && a[index] === b[index])
|
|
40
|
+
index += 1;
|
|
41
|
+
return index;
|
|
42
|
+
}
|
|
43
|
+
function isFlashLike(id) {
|
|
44
|
+
return id.endsWith('flash') || /[-_]flash(?:[-_]|$)/u.test(id);
|
|
45
|
+
}
|
|
36
46
|
/**
|
|
37
47
|
* Rank a listed model for automatic subagent selection. Lower is better:
|
|
38
|
-
* exact
|
|
48
|
+
* exact provider default first, then the parent-selected model, then a
|
|
49
|
+
* flash-like id close to the parent's name (same series), then the rest.
|
|
39
50
|
*/
|
|
40
|
-
function scoreSubagentCandidate(model, preferred) {
|
|
51
|
+
function scoreSubagentCandidate(model, preferred, parentModel) {
|
|
41
52
|
const id = model.trim().toLowerCase();
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
53
|
+
const parent = parentModel?.trim().toLowerCase() ?? '';
|
|
54
|
+
const exactPreferred = preferred.findIndex(item => item.toLowerCase() === id);
|
|
55
|
+
if (exactPreferred >= 0)
|
|
56
|
+
return -100 + exactPreferred;
|
|
57
|
+
if (parent !== '' && id === parent)
|
|
58
|
+
return -88;
|
|
59
|
+
let score = isFlashLike(id) ? -70 : -50;
|
|
60
|
+
if (parent !== '') {
|
|
61
|
+
const shared = commonPrefixLength(id, parent);
|
|
62
|
+
if (shared >= 12)
|
|
63
|
+
score -= 10;
|
|
64
|
+
else if (shared >= 8)
|
|
65
|
+
score -= 4;
|
|
66
|
+
}
|
|
47
67
|
if (id.includes('vision'))
|
|
48
|
-
|
|
49
|
-
|
|
68
|
+
score += 6;
|
|
69
|
+
if (id.includes('pro') || id.includes('max') || id.includes('4.6'))
|
|
70
|
+
score += 12;
|
|
71
|
+
return score;
|
|
50
72
|
}
|
|
51
73
|
/**
|
|
52
74
|
* Choose the default subagent model for a parent provider, preferring a
|
|
53
|
-
* same-family listed model over a leftover DeepSeek flash id.
|
|
75
|
+
* same-family listed model over a leftover DeepSeek flash id. When the
|
|
76
|
+
* parent's own model id is supplied, candidates closest to that name win,
|
|
77
|
+
* with flash-like ids ranked first.
|
|
54
78
|
*/
|
|
55
|
-
export function defaultSubagentModelForProvider(provider, listed = []) {
|
|
79
|
+
export function defaultSubagentModelForProvider(provider, listed = [], parentModel) {
|
|
56
80
|
const family = providerFamily(provider);
|
|
57
81
|
const preferred = family === 'xai'
|
|
58
82
|
? [DEFAULT_XAI_SUBAGENT_MODEL, 'grok-4.5', 'grok-4.3', 'grok-4.6']
|
|
@@ -66,7 +90,8 @@ export function defaultSubagentModelForProvider(provider, listed = []) {
|
|
|
66
90
|
: true);
|
|
67
91
|
const pool = sameFamily.length > 0 ? sameFamily : unique;
|
|
68
92
|
return [...pool].sort((a, b) => {
|
|
69
|
-
const delta = scoreSubagentCandidate(a, preferred
|
|
93
|
+
const delta = scoreSubagentCandidate(a, preferred, parentModel)
|
|
94
|
+
- scoreSubagentCandidate(b, preferred, parentModel);
|
|
70
95
|
return delta !== 0 ? delta : a.localeCompare(b);
|
|
71
96
|
})[0] ?? (preferred[0] ?? unique[0] ?? DEFAULT_SUBAGENT_MODEL);
|
|
72
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-model.js","sourceRoot":"","sources":["../src/subagent-model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAExC,OAAO,EAAE,iBAAiB,EAA6C,MAAM,sBAAsB,CAAA;AACnG,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAErF,sEAAsE;AACtE,MAAM,CAAC,MAAM,2BAA2B,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAA;AAEhF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAA;AAEzD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAA;AAEpD,mDAAmD;AACnD,MAAM,sBAAsB,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAA;AAE1E,8CAA8C;AAC9C,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAU,CAAA;AAEnD,SAAS,cAAc,CAAC,QAAgB;IACtC,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACxC,IAAI,EAAE,KAAK,mBAAmB,IAAI,EAAE,KAAK,UAAU,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,UAAU,CAAA;IACpG,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IAClG,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,OAA0B;IAC/D,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACrC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;AACpD,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"subagent-model.js","sourceRoot":"","sources":["../src/subagent-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read and refresh SuperGrok / xAI OAuth tokens from disk.
|
|
3
|
+
*
|
|
4
|
+
* dsh-ssh-tui does not depend on dsh-llm-xai-oauth. Keep this file's wire
|
|
5
|
+
* format identical to grok-bridge / that plugin: ~/.grok-bridge/auth.json
|
|
6
|
+
* with access_token, refresh_token, expires_at.
|
|
7
|
+
*/
|
|
8
|
+
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
9
|
+
import { homedir } from 'node:os';
|
|
10
|
+
import { dirname, join } from 'node:path';
|
|
11
|
+
export const SUPERGROK_AUTH_PATHS = [
|
|
12
|
+
join(homedir(), '.grok-bridge', 'auth.json'),
|
|
13
|
+
join(homedir(), '.grok', 'auth.json'),
|
|
14
|
+
];
|
|
15
|
+
export const SUPERGROK_REFRESH_SKEW_MS = 5 * 60 * 1000;
|
|
16
|
+
const DEFAULT_CLIENT_ID = 'b1a00492-073a-47ea-816f-4c329264a828';
|
|
17
|
+
const DEFAULT_TOKEN_URL = 'https://auth.x.ai/oauth2/token';
|
|
18
|
+
const DEFAULT_LIFETIME_SECONDS = 3600;
|
|
19
|
+
function stringField(record, key) {
|
|
20
|
+
const value = record[key];
|
|
21
|
+
return typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined;
|
|
22
|
+
}
|
|
23
|
+
function expiresAtMs(record) {
|
|
24
|
+
const raw = record.expires_at ?? record.expiresAt;
|
|
25
|
+
if (typeof raw === 'string')
|
|
26
|
+
return Date.parse(raw) || null;
|
|
27
|
+
if (typeof raw === 'number' && Number.isFinite(raw))
|
|
28
|
+
return raw < 1e12 ? raw * 1000 : raw;
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
export function parseSuperGrokAuthFile(raw, path) {
|
|
32
|
+
if (raw === null || typeof raw !== 'object' || Array.isArray(raw))
|
|
33
|
+
return undefined;
|
|
34
|
+
const record = raw;
|
|
35
|
+
const accessToken = stringField(record, 'access_token') ?? stringField(record, 'accessToken');
|
|
36
|
+
if (accessToken === undefined)
|
|
37
|
+
return undefined;
|
|
38
|
+
return {
|
|
39
|
+
accessToken,
|
|
40
|
+
refreshToken: stringField(record, 'refresh_token') ?? stringField(record, 'refreshToken') ?? null,
|
|
41
|
+
expiresAt: expiresAtMs(record),
|
|
42
|
+
clientId: stringField(record, 'oidc_client_id') ?? stringField(record, 'clientId') ?? null,
|
|
43
|
+
path,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function superGrokTokenNeedsRefresh(token, now = Date.now(), skewMs = SUPERGROK_REFRESH_SKEW_MS) {
|
|
47
|
+
if (token.refreshToken === null)
|
|
48
|
+
return false;
|
|
49
|
+
if (token.expiresAt === null)
|
|
50
|
+
return false;
|
|
51
|
+
return token.expiresAt - now < skewMs;
|
|
52
|
+
}
|
|
53
|
+
async function readTokenFile(path) {
|
|
54
|
+
try {
|
|
55
|
+
return parseSuperGrokAuthFile(JSON.parse(await readFile(path, 'utf8')), path);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export async function loadSuperGrokToken(paths = SUPERGROK_AUTH_PATHS) {
|
|
62
|
+
for (const path of paths) {
|
|
63
|
+
const token = await readTokenFile(path);
|
|
64
|
+
if (token !== undefined)
|
|
65
|
+
return token;
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
async function postRefresh(refreshToken, clientId) {
|
|
70
|
+
const response = await fetch(DEFAULT_TOKEN_URL, {
|
|
71
|
+
method: 'POST',
|
|
72
|
+
headers: {
|
|
73
|
+
Accept: 'application/json',
|
|
74
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
75
|
+
},
|
|
76
|
+
body: new URLSearchParams({
|
|
77
|
+
grant_type: 'refresh_token',
|
|
78
|
+
refresh_token: refreshToken,
|
|
79
|
+
client_id: clientId,
|
|
80
|
+
}),
|
|
81
|
+
signal: AbortSignal.timeout(15_000),
|
|
82
|
+
});
|
|
83
|
+
const body = await response.json();
|
|
84
|
+
const access = stringField(body, 'access_token');
|
|
85
|
+
if (!response.ok || access === undefined) {
|
|
86
|
+
const error = stringField(body, 'error');
|
|
87
|
+
const description = stringField(body, 'error_description');
|
|
88
|
+
throw new Error(`SuperGrok token 刷新失败(HTTP ${response.status})${error || description ? `:${[error, description].filter(Boolean).join(': ')}` : ''}`);
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
access_token: access,
|
|
92
|
+
...stringField(body, 'refresh_token') === undefined ? {} : { refresh_token: stringField(body, 'refresh_token') },
|
|
93
|
+
...typeof body.expires_in === 'number' ? { expires_in: body.expires_in } : {},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
export async function persistSuperGrokToken(path, tokenResponse, previousRefreshToken, now = Date.now()) {
|
|
97
|
+
const record = {
|
|
98
|
+
access_token: tokenResponse.access_token,
|
|
99
|
+
refresh_token: tokenResponse.refresh_token ?? previousRefreshToken,
|
|
100
|
+
expires_at: now + (tokenResponse.expires_in ?? DEFAULT_LIFETIME_SECONDS) * 1000,
|
|
101
|
+
saved_at: new Date(now).toISOString(),
|
|
102
|
+
};
|
|
103
|
+
await mkdir(dirname(path), { recursive: true, mode: 0o700 });
|
|
104
|
+
await writeFile(path, `${JSON.stringify(record, null, 2)}\n`, { mode: 0o600 });
|
|
105
|
+
const stored = parseSuperGrokAuthFile(record, path);
|
|
106
|
+
if (stored === undefined)
|
|
107
|
+
throw new Error(`无法写入 SuperGrok token(${path})`);
|
|
108
|
+
return stored;
|
|
109
|
+
}
|
|
110
|
+
export async function resolveFreshSuperGrokToken(options = {}) {
|
|
111
|
+
const current = await loadSuperGrokToken(options.paths);
|
|
112
|
+
if (current === undefined)
|
|
113
|
+
return undefined;
|
|
114
|
+
const now = options.now ?? Date.now();
|
|
115
|
+
if (options.force !== true && !superGrokTokenNeedsRefresh(current, now)) {
|
|
116
|
+
return current.accessToken;
|
|
117
|
+
}
|
|
118
|
+
if (current.refreshToken === null) {
|
|
119
|
+
if (options.force === true || superGrokTokenNeedsRefresh({ ...current, refreshToken: 'x' }, now)) {
|
|
120
|
+
throw new Error(`SuperGrok token 没有 refresh_token,请运行 dsh-llm-xai-oauth login --force`);
|
|
121
|
+
}
|
|
122
|
+
return current.accessToken;
|
|
123
|
+
}
|
|
124
|
+
const next = await postRefresh(current.refreshToken, current.clientId ?? DEFAULT_CLIENT_ID);
|
|
125
|
+
const saved = await persistSuperGrokToken(current.path, next, current.refreshToken, now);
|
|
126
|
+
return saved.accessToken;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=supergrok-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supergrok-token.js","sourceRoot":"","sources":["../src/supergrok-token.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,WAAW,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC;CAC7B,CAAA;AAEV,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AACtD,MAAM,iBAAiB,GAAG,sCAAsC,CAAA;AAChE,MAAM,iBAAiB,GAAG,gCAAgC,CAAA;AAC1D,MAAM,wBAAwB,GAAG,IAAI,CAAA;AAUrC,SAAS,WAAW,CAAC,MAA+B,EAAE,GAAW;IAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACpF,CAAC;AAED,SAAS,WAAW,CAAC,MAA+B;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,CAAA;IACjD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;IAC3D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAA;IACzF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAY,EAAE,IAAY;IAC/D,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IACnF,MAAM,MAAM,GAAG,GAA8B,CAAA;IAC7C,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC7F,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC/C,OAAO;QACL,WAAW;QACX,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,IAAI;QACjG,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC;QAC9B,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,IAAI;QAC1F,IAAI;KACL,CAAA;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAA2B,EAC3B,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAChB,MAAM,GAAG,yBAAyB;IAElC,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7C,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC1C,OAAO,KAAK,CAAC,SAAS,GAAG,GAAG,GAAG,MAAM,CAAA;AACvC,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAY,EAAE,IAAI,CAAC,CAAA;IAC1F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAA2B,oBAAoB;IACtF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;IACvC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,YAAoB,EAAE,QAAgB;IAK/D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE;QAC9C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,mCAAmC;SACpD;QACD,IAAI,EAAE,IAAI,eAAe,CAAC;YACxB,UAAU,EAAE,eAAe;YAC3B,aAAa,EAAE,YAAY;YAC3B,SAAS,EAAE,QAAQ;SACpB,CAAC;QACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,CAAC,CAAA;IACF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA6B,CAAA;IAC7D,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACxC,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;QAC1D,MAAM,IAAI,KAAK,CACb,6BAA6B,QAAQ,CAAC,MAAM,IAAI,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACpI,CAAA;IACH,CAAC;IACD,OAAO;QACL,YAAY,EAAE,MAAM;QACpB,GAAG,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE;QAChH,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;KAC9E,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,aAAoF,EACpF,oBAA4B,EAC5B,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAEhB,MAAM,MAAM,GAAG;QACb,YAAY,EAAE,aAAa,CAAC,YAAY;QACxC,aAAa,EAAE,aAAa,CAAC,aAAa,IAAI,oBAAoB;QAClE,UAAU,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,UAAU,IAAI,wBAAwB,CAAC,GAAG,IAAI;QAC/E,QAAQ,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;KACtC,CAAA;IACD,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC5D,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9E,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnD,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,GAAG,CAAC,CAAA;IAC1E,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,UAI7C,EAAE;IACJ,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACvD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;IACrC,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;QACxE,OAAO,OAAO,CAAC,WAAW,CAAA;IAC5B,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,0BAA0B,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;YACjG,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;QACzF,CAAC;QACD,OAAO,OAAO,CAAC,WAAW,CAAA;IAC5B,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC,CAAA;IAC3F,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;IACxF,OAAO,KAAK,CAAC,WAAW,CAAA;AAC1B,CAAC"}
|