dsh-ssh-tui 0.6.2 → 0.6.4
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 +67 -2
- package/README.md +56 -3
- package/lib/context-window.js +139 -0
- package/lib/context-window.js.map +1 -0
- package/lib/dialogs.js +13 -7
- package/lib/dialogs.js.map +1 -1
- package/lib/i18n/en.js +69 -3
- package/lib/i18n/en.js.map +1 -1
- package/lib/i18n/zh.js +69 -3
- package/lib/i18n/zh.js.map +1 -1
- package/lib/index.js +10 -4
- package/lib/index.js.map +1 -1
- package/lib/job-label.js +45 -0
- package/lib/job-label.js.map +1 -0
- package/lib/paint.js +3 -3
- package/lib/paint.js.map +1 -1
- package/lib/preset-label.js +73 -0
- package/lib/preset-label.js.map +1 -0
- package/lib/preset-rows.js +96 -0
- package/lib/preset-rows.js.map +1 -0
- package/lib/provider-catalog.js +12 -2
- package/lib/provider-catalog.js.map +1 -1
- package/lib/quota.js +149 -1
- package/lib/quota.js.map +1 -1
- package/lib/reasoning.js +9 -4
- package/lib/reasoning.js.map +1 -1
- package/lib/term-text.js +82 -11
- package/lib/term-text.js.map +1 -1
- package/lib/tool-present.js +14 -1
- package/lib/tool-present.js.map +1 -1
- package/lib/tui.js +363 -25
- package/lib/tui.js.map +1 -1
- package/lib/types/context-window.d.ts +46 -0
- package/lib/types/dialogs.d.ts +5 -4
- package/lib/types/job-label.d.ts +20 -0
- package/lib/types/preset-label.d.ts +38 -0
- package/lib/types/preset-rows.d.ts +47 -0
- package/lib/types/provider-catalog.d.ts +2 -0
- package/lib/types/quota.d.ts +49 -0
- package/lib/types/reasoning.d.ts +9 -4
- package/lib/types/term-text.d.ts +33 -4
- package/lib/types/tool-present.d.ts +1 -0
- package/lib/types/tui.d.ts +76 -1
- package/package.json +1 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The profile patch that mounts the agent-preset roster `/mode` needs.
|
|
3
|
+
*
|
|
4
|
+
* A terminal profile built on `dsh-base` composes no preset roster (only the
|
|
5
|
+
* Web bundle does), and this plugin's own bundle patch may not mount one: DSH
|
|
6
|
+
* STORE accepts additive rows with plugin-owned ids and no `@deepseek-ai/*`
|
|
7
|
+
* module names. The profile's user layer is the supported home for the row, so
|
|
8
|
+
* both the install script and the running TUI write the same block here — the
|
|
9
|
+
* TUI needs it because `dsh plugin add dsh-ssh-tui@latest` (the in-app update
|
|
10
|
+
* path) never runs `scripts/`, which npm installs do not ship.
|
|
11
|
+
*
|
|
12
|
+
* The roster is not cosmetic: without it `/mode` cannot switch, and the tools
|
|
13
|
+
* the shipped presets own (`ask_user_question`, `present`, PTC's presentation)
|
|
14
|
+
* are absent from the agent's catalog.
|
|
15
|
+
* @module dsh-ssh-tui/preset-rows
|
|
16
|
+
*/
|
|
17
|
+
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
18
|
+
import { dirname, join } from 'node:path';
|
|
19
|
+
/**
|
|
20
|
+
* The exact profile patch block that mounts the roster and the two host
|
|
21
|
+
* services the shipped presets need. `scripts/ensure-profile-rows.sh` carries
|
|
22
|
+
* the same text; a test compares the two so they cannot drift.
|
|
23
|
+
*/
|
|
24
|
+
export const ROSTER_PATCH_BLOCK = `# dsh-ssh-tui /mode: the agent-preset roster (standard / minimal / PTC /
|
|
25
|
+
# cordis, plus every preset under $DSH_HOME/.agent-presets) and the two host
|
|
26
|
+
# services the shipped presets need. dsh-base composes no roster in a terminal
|
|
27
|
+
# profile, and a third-party bundle patch may not mount an @deepseek-ai row, so
|
|
28
|
+
# the profile's user layer owns them.
|
|
29
|
+
- insert:
|
|
30
|
+
- id: agent-presets
|
|
31
|
+
name: '@deepseek-ai/dsh-agent-presets'
|
|
32
|
+
config:
|
|
33
|
+
default: standard
|
|
34
|
+
|
|
35
|
+
- id: code-runtime
|
|
36
|
+
name: '@deepseek-ai/dsh-code-runtime-worker-thread'
|
|
37
|
+
|
|
38
|
+
- id: subagent-model-selection-settings
|
|
39
|
+
name: '@deepseek-ai/dsh-tool-subagent/model-selection-settings'
|
|
40
|
+
`;
|
|
41
|
+
/** The profile patch file the roster block belongs in. */
|
|
42
|
+
export function rosterPatchPath(home, profile) {
|
|
43
|
+
return join(home, 'profiles', profile, 'cordis.patch.yml');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The patch text with the roster block appended, or `undefined` when the file
|
|
47
|
+
* already names the roster row.
|
|
48
|
+
*
|
|
49
|
+
* A file that is exactly `[]` (the profile template) is replaced, so the result
|
|
50
|
+
* stays a valid top-level patch list; anything else keeps its content and the
|
|
51
|
+
* block is appended after a blank line.
|
|
52
|
+
* @param existing - the patch file's current text.
|
|
53
|
+
* @returns the new text, or `undefined` when nothing has to change.
|
|
54
|
+
*/
|
|
55
|
+
export function rosterPatchText(existing) {
|
|
56
|
+
if (/name:\s*'@deepseek-ai\/dsh-agent-presets'/.test(existing))
|
|
57
|
+
return undefined;
|
|
58
|
+
if (/^\s*\[\s*\]\s*$/m.test(existing))
|
|
59
|
+
return existing.replace(/^\s*\[\s*\]\s*$/m, ROSTER_PATCH_BLOCK.trimEnd() + '\n');
|
|
60
|
+
return `${existing.endsWith('\n') ? existing : `${existing}\n`}\n${ROSTER_PATCH_BLOCK}`;
|
|
61
|
+
}
|
|
62
|
+
/** The template a missing profile patch starts from. */
|
|
63
|
+
const PATCH_TEMPLATE = `# Your patch layer for this dsh profile, applied after every bundle layer:
|
|
64
|
+
# a top-level YAML array of loader patch entries (id-targeted config
|
|
65
|
+
# overrides, disables, and insert lists; \`!!js\` expressions allowed).
|
|
66
|
+
[]
|
|
67
|
+
|
|
68
|
+
`;
|
|
69
|
+
/**
|
|
70
|
+
* Mount the roster in one profile, unless it is already composed.
|
|
71
|
+
*
|
|
72
|
+
* Idempotent: a profile whose patch already names the roster row (one bundling
|
|
73
|
+
* `@deepseek-ai/dsh-web-app`, for example) is left untouched. The write is a
|
|
74
|
+
* plain whole-file replace because the file is small and read once at boot; a
|
|
75
|
+
* half-written patch would only be seen by the next launch.
|
|
76
|
+
* @param home - the harness home carrying `profiles/`.
|
|
77
|
+
* @param profile - the profile to patch.
|
|
78
|
+
* @returns `present` when the row already exists, else `written`.
|
|
79
|
+
*/
|
|
80
|
+
export async function ensureRosterRows(home, profile) {
|
|
81
|
+
const path = rosterPatchPath(home, profile);
|
|
82
|
+
let existing = PATCH_TEMPLATE;
|
|
83
|
+
try {
|
|
84
|
+
existing = await readFile(path, 'utf8');
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Missing file: start from the template the launcher would have written.
|
|
88
|
+
}
|
|
89
|
+
const next = rosterPatchText(existing);
|
|
90
|
+
if (next === undefined)
|
|
91
|
+
return 'present';
|
|
92
|
+
await mkdir(dirname(path), { recursive: true });
|
|
93
|
+
await writeFile(path, next, 'utf8');
|
|
94
|
+
return 'written';
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=preset-rows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-rows.js","sourceRoot":"","sources":["../src/preset-rows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;CAgBjC,CAAA;AAED,0DAA0D;AAC1D,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,OAAe;IAC3D,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAA;AAC5D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,2CAA2C,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAA;IAChF,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAA;IACvH,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,kBAAkB,EAAE,CAAA;AACzF,CAAC;AAED,wDAAwD;AACxD,MAAM,cAAc,GAAG;;;;;CAKtB,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAe;IAClE,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC3C,IAAI,QAAQ,GAAG,cAAc,CAAA;IAC7B,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;IACD,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACxC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/C,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IACnC,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
package/lib/provider-catalog.js
CHANGED
|
@@ -56,6 +56,7 @@ export function mergeProviderEntries(templates, presets, dedupeIds, query) {
|
|
|
56
56
|
const CHILD_SCRIPT = `
|
|
57
57
|
import { existsSync } from 'node:fs'
|
|
58
58
|
import { dirname, join } from 'node:path'
|
|
59
|
+
import { pathToFileURL } from 'node:url'
|
|
59
60
|
const anchors = JSON.parse(process.env.DSH_CATALOG_ANCHORS ?? '[]')
|
|
60
61
|
const pkgCandidates = []
|
|
61
62
|
for (const anchor of anchors) {
|
|
@@ -80,14 +81,23 @@ for (const pkgPath of pkgCandidates) {
|
|
|
80
81
|
const presets = []
|
|
81
82
|
for (const provider of providers) {
|
|
82
83
|
let modelIds = []
|
|
84
|
+
let capacities = {}
|
|
83
85
|
try {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
+
const models = provider.getModels?.() ?? []
|
|
87
|
+
modelIds = models.map(m => m.id).filter(id => typeof id === 'string' && id !== '')
|
|
88
|
+
for (const model of models) {
|
|
89
|
+
if (typeof model?.id !== 'string' || model.id === '') continue
|
|
90
|
+
if (typeof model.contextWindow === 'number' && model.contextWindow > 0) {
|
|
91
|
+
capacities[model.id.toLowerCase()] = model.contextWindow
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
} catch { modelIds = []; capacities = {} }
|
|
86
95
|
presets.push({
|
|
87
96
|
id: provider.id,
|
|
88
97
|
name: typeof provider.name === 'string' && provider.name !== '' ? provider.name : provider.id,
|
|
89
98
|
baseUrl: typeof provider.baseUrl === 'string' ? provider.baseUrl : '',
|
|
90
99
|
modelIds,
|
|
100
|
+
...(Object.keys(capacities).length === 0 ? {} : { capacities }),
|
|
91
101
|
})
|
|
92
102
|
}
|
|
93
103
|
if (presets.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-catalog.js","sourceRoot":"","sources":["../src/provider-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"provider-catalog.js","sourceRoot":"","sources":["../src/provider-catalog.ts"],"names":[],"mappings":"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"}
|
package/lib/quota.js
CHANGED
|
@@ -15,6 +15,15 @@ export const OPENCODE_GO_USAGE_URL = 'https://opencode.ai/zen/go/v1/usage';
|
|
|
15
15
|
export const OPENCODE_ZEN_BASE_URL = 'https://opencode.ai/zen/v1';
|
|
16
16
|
export const SUPERGROK_BILLING_URL = 'https://cli-chat-proxy.grok.com/v1/billing?format=credits';
|
|
17
17
|
export const DEEPSEEK_PUBLIC_BASE_URL = 'https://api.deepseek.com';
|
|
18
|
+
/**
|
|
19
|
+
* Command Code's billing surface sits on the API root, not under the
|
|
20
|
+
* `/provider/v1` route its chat requests use, so these are fixed: a configured
|
|
21
|
+
* base URL only decides whether the canonical host is the right one to ask.
|
|
22
|
+
*/
|
|
23
|
+
export const COMMAND_CODE_BASE_URL = 'https://api.commandcode.ai';
|
|
24
|
+
export const COMMAND_CODE_CREDITS_URL = `${COMMAND_CODE_BASE_URL}/alpha/billing/credits`;
|
|
25
|
+
export const COMMAND_CODE_SUBSCRIPTIONS_URL = `${COMMAND_CODE_BASE_URL}/alpha/billing/subscriptions`;
|
|
26
|
+
export const COMMAND_CODE_USAGE_URL = `${COMMAND_CODE_BASE_URL}/alpha/usage/summary`;
|
|
18
27
|
/** OpenAI-completions gateways: probe these relative to the configured base URL. */
|
|
19
28
|
export const OPENAI_COMPAT_BALANCE_PATHS = [
|
|
20
29
|
'/user/balance',
|
|
@@ -57,6 +66,36 @@ export function openCodeSourceFor(provider, llmPiAiSection) {
|
|
|
57
66
|
...(baseURL === undefined ? {} : { baseURL }),
|
|
58
67
|
};
|
|
59
68
|
}
|
|
69
|
+
const COMMAND_CODE_PROVIDER_IDS = new Set(['command-code', 'commandcode']);
|
|
70
|
+
const COMMAND_CODE_CANONICAL_BASES = new Set([
|
|
71
|
+
COMMAND_CODE_BASE_URL,
|
|
72
|
+
`${COMMAND_CODE_BASE_URL}/provider/v1`,
|
|
73
|
+
]);
|
|
74
|
+
/**
|
|
75
|
+
* Classify one route as Command Code's quota surface.
|
|
76
|
+
*
|
|
77
|
+
* Recognized by provider id or by a canonical base URL. The billing requests
|
|
78
|
+
* always target the canonical host, so a lookalike base URL never receives the
|
|
79
|
+
* credential even when the route keeps Command Code's provider id.
|
|
80
|
+
* @param provider - the selected provider route.
|
|
81
|
+
* @param llmPiAiSection - the `llm-pi-ai` settings section, if readable.
|
|
82
|
+
* @returns the credential reference to use, or `null` for another provider.
|
|
83
|
+
*/
|
|
84
|
+
export function commandCodeSourceFor(provider, llmPiAiSection) {
|
|
85
|
+
const section = llmPiAiSection;
|
|
86
|
+
const profile = section?.providers?.[provider];
|
|
87
|
+
const rawBase = typeof profile?.baseURL === 'string' ? profile.baseURL.replace(/\/+$/u, '') : '';
|
|
88
|
+
if (!COMMAND_CODE_PROVIDER_IDS.has(provider) && !COMMAND_CODE_CANONICAL_BASES.has(rawBase.toLowerCase())) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
const apiKeyEnv = typeof profile?.apiKeyEnv === 'string' && profile.apiKeyEnv.trim() !== ''
|
|
92
|
+
? profile.apiKeyEnv.trim()
|
|
93
|
+
: 'COMMAND_CODE_API_KEY';
|
|
94
|
+
const label = typeof profile?.displayName === 'string' && profile.displayName.trim() !== ''
|
|
95
|
+
? profile.displayName.trim()
|
|
96
|
+
: 'Command Code';
|
|
97
|
+
return { provider, apiKeyEnv, label };
|
|
98
|
+
}
|
|
60
99
|
function openCodeGoUsageWindow(value) {
|
|
61
100
|
if (typeof value !== 'object' || value === null)
|
|
62
101
|
return undefined;
|
|
@@ -227,6 +266,114 @@ export function parseOpenCodeGoQuota(payload, provider) {
|
|
|
227
266
|
throw new Error(t('quota.unrecognized'));
|
|
228
267
|
return { provider, plan: 'OpenCode Go', windows };
|
|
229
268
|
}
|
|
269
|
+
/** One Command Code rolling window: `{ cap, used, resetAt }` off /alpha/billing/credits. */
|
|
270
|
+
function commandCodeRollingWindow(value) {
|
|
271
|
+
const row = recordOf(value);
|
|
272
|
+
const cap = commandCodeNumber(row?.cap);
|
|
273
|
+
const used = commandCodeNumber(row?.used);
|
|
274
|
+
if (cap === undefined || used === undefined || cap <= 0 || used < 0)
|
|
275
|
+
return undefined;
|
|
276
|
+
const resetsAt = commandCodeIso(row?.resetAt);
|
|
277
|
+
return {
|
|
278
|
+
remainingPercent: remainingPercentFromUsed(used / cap * 100),
|
|
279
|
+
...(resetsAt === undefined ? {} : { resetsAt }),
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
/** A finite number field, or `undefined`. */
|
|
283
|
+
function commandCodeNumber(value) {
|
|
284
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
|
|
285
|
+
}
|
|
286
|
+
/** Command Code reports reset times as epoch milliseconds; QuotaWindow carries ISO strings. */
|
|
287
|
+
function commandCodeIso(value) {
|
|
288
|
+
if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0)
|
|
289
|
+
return undefined;
|
|
290
|
+
const date = new Date(value);
|
|
291
|
+
return Number.isNaN(date.getTime()) ? undefined : date.toISOString();
|
|
292
|
+
}
|
|
293
|
+
/** Prefer the nested `data` shell when the outer object is only an envelope. */
|
|
294
|
+
function commandCodeBody(value) {
|
|
295
|
+
const root = recordOf(value);
|
|
296
|
+
return recordOf(root?.data) ?? root;
|
|
297
|
+
}
|
|
298
|
+
/** Sum the remaining credit pools Command Code reports, or undefined when none is numeric. */
|
|
299
|
+
function commandCodeRemainingCredits(pools) {
|
|
300
|
+
const values = [pools?.monthlyCredits, pools?.purchasedCredits, pools?.freeCredits]
|
|
301
|
+
.filter((value) => typeof value === 'number' && Number.isFinite(value));
|
|
302
|
+
if (values.length === 0)
|
|
303
|
+
return undefined;
|
|
304
|
+
return values.reduce((sum, value) => sum + Math.max(0, value), 0);
|
|
305
|
+
}
|
|
306
|
+
/** Period spend in USD credits from `/alpha/usage/summary`. */
|
|
307
|
+
function commandCodePeriodSpend(summary) {
|
|
308
|
+
const body = commandCodeBody(summary);
|
|
309
|
+
for (const key of ['totalCost', 'totalMonthlyCredits', 'totalCredits']) {
|
|
310
|
+
const value = commandCodeNumber(body?.[key]);
|
|
311
|
+
if (value !== undefined && value >= 0)
|
|
312
|
+
return value;
|
|
313
|
+
}
|
|
314
|
+
return undefined;
|
|
315
|
+
}
|
|
316
|
+
/** The billing-period start used to scope the spend query, when reported. */
|
|
317
|
+
export function commandCodePeriodStart(subscription) {
|
|
318
|
+
const value = commandCodeBody(subscription)?.currentPeriodStart;
|
|
319
|
+
return typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined;
|
|
320
|
+
}
|
|
321
|
+
/** The billing-period end, used as the credit window's reset time. */
|
|
322
|
+
function commandCodePeriodEnd(subscription) {
|
|
323
|
+
const value = commandCodeBody(subscription)?.currentPeriodEnd;
|
|
324
|
+
if (typeof value !== 'string' || value.trim() === '')
|
|
325
|
+
return undefined;
|
|
326
|
+
const date = new Date(value);
|
|
327
|
+
return Number.isNaN(date.getTime()) ? undefined : date.toISOString();
|
|
328
|
+
}
|
|
329
|
+
/** `/alpha/billing/subscriptions` planId as a footer-sized label. */
|
|
330
|
+
function commandCodePlanLabel(subscription) {
|
|
331
|
+
const planId = commandCodeBody(subscription)?.planId;
|
|
332
|
+
if (typeof planId !== 'string' || planId.trim() === '')
|
|
333
|
+
return 'Command Code';
|
|
334
|
+
const trimmed = planId.trim();
|
|
335
|
+
const tail = trimmed.slice(trimmed.lastIndexOf('-') + 1);
|
|
336
|
+
return tail === '' ? 'Command Code' : tail.toUpperCase();
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Parse Command Code's credits reply into the shared quota snapshot.
|
|
340
|
+
*
|
|
341
|
+
* The rolling five-hour and weekly windows report used/cap; the credit pool
|
|
342
|
+
* reports a remaining USD balance, which becomes a third window whose percent
|
|
343
|
+
* divides period spend by spend plus remaining balance.
|
|
344
|
+
* @param payload - the billing replies already fetched.
|
|
345
|
+
* @param provider - the route the snapshot is labeled with.
|
|
346
|
+
* @throws Error when no window could be read.
|
|
347
|
+
*/
|
|
348
|
+
export function parseCommandCodeQuota(payload, provider) {
|
|
349
|
+
const body = commandCodeBody(payload.credits);
|
|
350
|
+
if (body === undefined)
|
|
351
|
+
throw new Error(t('quota.unrecognized'));
|
|
352
|
+
const limits = recordOf(body.windowLimits);
|
|
353
|
+
const windows = [];
|
|
354
|
+
const fiveHour = commandCodeRollingWindow(limits?.fiveHour);
|
|
355
|
+
if (fiveHour !== undefined)
|
|
356
|
+
windows.push({ label: t('quota.windowHourly'), period: 'hourly', ...fiveHour });
|
|
357
|
+
const weekly = commandCodeRollingWindow(limits?.weekly);
|
|
358
|
+
if (weekly !== undefined)
|
|
359
|
+
windows.push({ label: t('quota.windowWeekly'), period: 'weekly', ...weekly });
|
|
360
|
+
const remainingCredits = commandCodeRemainingCredits(recordOf(body.credits));
|
|
361
|
+
if (remainingCredits !== undefined) {
|
|
362
|
+
const spent = commandCodePeriodSpend(payload.summary);
|
|
363
|
+
const limit = spent === undefined ? undefined : spent + remainingCredits;
|
|
364
|
+
const resetsAt = commandCodePeriodEnd(payload.subscription);
|
|
365
|
+
windows.push({
|
|
366
|
+
label: t('quota.windowCredits'),
|
|
367
|
+
period: 'monthly',
|
|
368
|
+
remainingPercent: limit === undefined || limit <= 0 ? 100 : remainingPercentFromUsed(spent / limit * 100),
|
|
369
|
+
detail: `$${remainingCredits.toFixed(2)}`,
|
|
370
|
+
...(resetsAt === undefined ? {} : { resetsAt }),
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
if (windows.length === 0)
|
|
374
|
+
throw new Error(t('quota.unrecognized'));
|
|
375
|
+
return { provider, plan: commandCodePlanLabel(payload.subscription), windows };
|
|
376
|
+
}
|
|
230
377
|
export function formatQuotaSnapshot(snapshot) {
|
|
231
378
|
const lines = [t('quota.snapshotHeader', { plan: snapshot.plan, provider: snapshot.provider })];
|
|
232
379
|
for (const window of snapshot.windows) {
|
|
@@ -234,12 +381,13 @@ export function formatQuotaSnapshot(snapshot) {
|
|
|
234
381
|
const barWidth = 16;
|
|
235
382
|
const filled = Math.round(remaining / 100 * barWidth);
|
|
236
383
|
const reset = window.resetsAt === undefined ? '' : ` · ${formatQuotaReset(window.resetsAt)}`;
|
|
384
|
+
const detail = window.detail === undefined ? '' : ` · ${window.detail}`;
|
|
237
385
|
const bar = `${'█'.repeat(filled)}${'░'.repeat(barWidth - filled)}`;
|
|
238
386
|
lines.push(t('quota.snapshotWindow', {
|
|
239
387
|
label: window.label,
|
|
240
388
|
bar,
|
|
241
389
|
percent: remaining.toFixed(1),
|
|
242
|
-
reset
|
|
390
|
+
reset: `${reset}${detail}`,
|
|
243
391
|
}));
|
|
244
392
|
}
|
|
245
393
|
return lines.join('\n');
|
package/lib/quota.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota.js","sourceRoot":"","sources":["../src/quota.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quota.js","sourceRoot":"","sources":["../src/quota.ts"],"names":[],"mappings":"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"}
|
package/lib/reasoning.js
CHANGED
|
@@ -2,11 +2,16 @@
|
|
|
2
2
|
* Shared reasoning-effort defaults for the SSH TUI.
|
|
3
3
|
*
|
|
4
4
|
* OpenCode / third-party (llm-pi-ai) routes carry no adapter-level reasoning
|
|
5
|
-
* default
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* needed to render the collapsible `思考中` block. This helper picks a
|
|
5
|
+
* default. Without an explicit effort the model streams its thinking as plain
|
|
6
|
+
* `text` chunks instead of `reasoning` blocks, so the TUI never receives the
|
|
7
|
+
* data needed to render the collapsible `思考中` block. This helper picks a
|
|
9
8
|
* supported default so the fold has data to show.
|
|
9
|
+
*
|
|
10
|
+
* `llm-deepseek` is not covered here: its adapter always reports a
|
|
11
|
+
* `defaultEffort`, which the LLM runtime materializes into the request on its
|
|
12
|
+
* own. Since the 0.5.1 STORE compliance trim dropped the bundle patch's
|
|
13
|
+
* `reasoningEffort: max` row override, that adapter default is `high` unless a
|
|
14
|
+
* deployment sets it (or `/effort` picks one, remembered per route).
|
|
10
15
|
*/
|
|
11
16
|
/**
|
|
12
17
|
* Pick a default reasoning effort for a provider/model when none is selected.
|
package/lib/reasoning.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reasoning.js","sourceRoot":"","sources":["../src/reasoning.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"reasoning.js","sourceRoot":"","sources":["../src/reasoning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,GAAe,EACf,QAAgB,EAChB,KAAa;IAEb,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QACxD,MAAM,OAAO,GAAG,IAAI,EAAE,SAAS,EAAE,OAAO,IAAI,EAAE,CAAA;QAC9C,IAAI,IAAI,EAAE,SAAS,EAAE,aAAa,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAA;QACrF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,CAAA;QAC5D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAA;QACzC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC;eACvD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC;eAC5C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC;eAC3C,MAAM,CAAC,CAAC,CAAC,CAAA;QACd,OAAO,SAAS,EAAE,EAAE,CAAA;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC"}
|
package/lib/term-text.js
CHANGED
|
@@ -156,14 +156,13 @@ export function wrapWaitDetails(detail, width, maxLines = WAIT_DETAIL_MAX_LINES)
|
|
|
156
156
|
return kept.map((line, index) => index === 0 ? `${WAIT_DETAIL_PREFIX}${line}` : `${' '.repeat(prefixWidth)}${line}`);
|
|
157
157
|
}
|
|
158
158
|
/**
|
|
159
|
-
* BMP symbols
|
|
160
|
-
* font draw
|
|
161
|
-
*
|
|
162
|
-
* they are only emoji
|
|
159
|
+
* BMP symbols carrying the Unicode `Emoji` property: a terminal with an emoji
|
|
160
|
+
* font may draw them with a colour glyph instead of the monospace one, so the
|
|
161
|
+
* painter has to decide which form it is budgeting cells for. Keycap bases
|
|
162
|
+
* (#, *, digits) are deliberately absent: they are only emoji after VS16.
|
|
163
163
|
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
* next row and punches the caret/glyphs through the card below.
|
|
164
|
+
* Which width each one gets is decided by {@link EMOJI_PRESENTATION_SYMBOLS},
|
|
165
|
+
* not by this membership list.
|
|
167
166
|
*/
|
|
168
167
|
const EMOJI_SYMBOL_RANGES = [
|
|
169
168
|
[0x203c, 0x2049], [0x2122, 0x2139], [0x2194, 0x21aa],
|
|
@@ -183,7 +182,32 @@ const EMOJI_SYMBOL_RANGES = [
|
|
|
183
182
|
[0x2763, 0x2764], [0x2795, 0x2797], [0x27a1, 0x27a1], [0x27b0, 0x27b0], [0x27bf, 0x27bf],
|
|
184
183
|
[0x2934, 0x2935], [0x2b05, 0x2b07], [0x2b1b, 0x2b1c], [0x2b50, 0x2b50], [0x2b55, 0x2b55],
|
|
185
184
|
];
|
|
185
|
+
/**
|
|
186
|
+
* The subset of {@link EMOJI_SYMBOL_RANGES} whose Unicode default presentation
|
|
187
|
+
* is emoji (`Emoji_Presentation=Yes` in `emoji-data.txt`, Unicode 17.0): every
|
|
188
|
+
* terminal draws these two cells wide with no variation selector, so they are
|
|
189
|
+
* budgeted two cells and left alone.
|
|
190
|
+
*
|
|
191
|
+
* Everything else in the table defaults to *text* presentation. Terminals with
|
|
192
|
+
* an emoji fallback font often substitute a colour glyph for those anyway — and
|
|
193
|
+
* that glyph is wider than the cell it advances, so it collides with its
|
|
194
|
+
* neighbours and, because the table used to budget two cells for it, every row
|
|
195
|
+
* containing one ended a cell short. Those symbols are budgeted one cell and the
|
|
196
|
+
* painter pins the text form with VS15.
|
|
197
|
+
*/
|
|
198
|
+
const EMOJI_PRESENTATION_RANGES = [
|
|
199
|
+
[0x231a, 0x231b], [0x23e9, 0x23ec], [0x23f0, 0x23f0], [0x23f3, 0x23f3],
|
|
200
|
+
[0x25fd, 0x25fe], [0x2614, 0x2615], [0x2648, 0x2653], [0x267f, 0x267f],
|
|
201
|
+
[0x2693, 0x2693], [0x26a1, 0x26a1], [0x26aa, 0x26ab], [0x26bd, 0x26be],
|
|
202
|
+
[0x26c4, 0x26c5], [0x26ce, 0x26ce], [0x26d4, 0x26d4], [0x26ea, 0x26ea],
|
|
203
|
+
[0x26f2, 0x26f3], [0x26f5, 0x26f5], [0x26fa, 0x26fa], [0x26fd, 0x26fd],
|
|
204
|
+
[0x2705, 0x2705], [0x270a, 0x270b], [0x2728, 0x2728], [0x274c, 0x274c],
|
|
205
|
+
[0x274e, 0x274e], [0x2753, 0x2755], [0x2757, 0x2757], [0x2795, 0x2797],
|
|
206
|
+
[0x27b0, 0x27b0], [0x27bf, 0x27bf], [0x2b1b, 0x2b1c], [0x2b50, 0x2b50],
|
|
207
|
+
[0x2b55, 0x2b55],
|
|
208
|
+
];
|
|
186
209
|
const EMOJI_SYMBOLS = new Set(EMOJI_SYMBOL_RANGES.flatMap(([start, end]) => Array.from({ length: end - start + 1 }, (_, index) => start + index)));
|
|
210
|
+
const EMOJI_PRESENTATION_SYMBOLS = new Set(EMOJI_PRESENTATION_RANGES.flatMap(([start, end]) => Array.from({ length: end - start + 1 }, (_, index) => start + index)));
|
|
187
211
|
/**
|
|
188
212
|
* Terminal cell width for one string.
|
|
189
213
|
*
|
|
@@ -193,10 +217,13 @@ const EMOJI_SYMBOLS = new Set(EMOJI_SYMBOL_RANGES.flatMap(([start, end]) => Arra
|
|
|
193
217
|
* those ambiguous glyphs as two made `repeatToWidth('─', cols)` paint a
|
|
194
218
|
* half-width rule and parked the input cursor half a cell past the text.
|
|
195
219
|
*
|
|
196
|
-
* Emoji-bearing symbols are the exception: an emoji font draws
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
* for the
|
|
220
|
+
* Emoji-bearing symbols are the exception: a terminal with an emoji font draws
|
|
221
|
+
* a symbol the monospace font lacks with a colour glyph that is wider than the
|
|
222
|
+
* cell it advances, so they are budgeted two cells. {@link pinEmojiCells} makes
|
|
223
|
+
* the terminal actually spend both: VS15 asks for the narrow text form, and a
|
|
224
|
+
* reserving space clears the second cell when the run does not already end in
|
|
225
|
+
* one. Budgeting two cells without clearing the second is what left `✖`
|
|
226
|
+
* overlapping the `|` beside it while every `▶` row came up a cell short.
|
|
200
227
|
*
|
|
201
228
|
* Overflow into the input box is handled by clipping/padding painted rows to
|
|
202
229
|
* the measured column count, not by inflating glyph width.
|
|
@@ -238,6 +265,50 @@ export function displayWidth(text) {
|
|
|
238
265
|
}
|
|
239
266
|
return width;
|
|
240
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* Make a painted row spend the two cells {@link displayWidth} budgets for every
|
|
270
|
+
* BMP emoji symbol.
|
|
271
|
+
*
|
|
272
|
+
* The monospace font of the terminal this was measured on covers `▶` but not
|
|
273
|
+
* `✖` or `ℹ`, so the two fall back to a colour emoji glyph about 1.6 cells wide
|
|
274
|
+
* while still advancing one cell: the `|` and `^` beside them were drawn under
|
|
275
|
+
* the glyph, and the row ended short because the second budgeted cell was never
|
|
276
|
+
* spent. The fix has two halves:
|
|
277
|
+
*
|
|
278
|
+
* - VS15 asks for the narrow text form (`emoji-variation-sequences.txt`,
|
|
279
|
+
* Unicode 17.0, lists `2139 FE0E` and `2716 FE0E` among 371 such sequences).
|
|
280
|
+
* Terminals that ignore it fall back to the colour glyph, which the next
|
|
281
|
+
* bullet still contains.
|
|
282
|
+
* - A reserving space supplies the second cell, always emitted even when the run
|
|
283
|
+
* already has one. That keeps the budget and the terminal in step for every
|
|
284
|
+
* shape: the table counts the symbol as two cells plus every space the text
|
|
285
|
+
* carries, and the terminal spends one cell of glyph advance, one for the
|
|
286
|
+
* reserving space, and one for each of those spaces.
|
|
287
|
+
*
|
|
288
|
+
* A symbol whose Unicode default presentation is emoji already advances two
|
|
289
|
+
* cells, so it is left untouched.
|
|
290
|
+
* @param text - one already-padded, already-clipped row.
|
|
291
|
+
* @returns the row with the text request and the second cell filled in.
|
|
292
|
+
*/
|
|
293
|
+
export function pinEmojiCells(text) {
|
|
294
|
+
let out = '';
|
|
295
|
+
let index = 0;
|
|
296
|
+
while (index < text.length) {
|
|
297
|
+
const cp = text.codePointAt(index);
|
|
298
|
+
if (cp === undefined)
|
|
299
|
+
break;
|
|
300
|
+
const char = String.fromCodePoint(cp);
|
|
301
|
+
index += char.length;
|
|
302
|
+
out += char;
|
|
303
|
+
if (!EMOJI_SYMBOLS.has(cp) || EMOJI_PRESENTATION_SYMBOLS.has(cp))
|
|
304
|
+
continue;
|
|
305
|
+
const selector = text.codePointAt(index);
|
|
306
|
+
if (selector === 0xfe0e || selector === 0xfe0f)
|
|
307
|
+
index += 1;
|
|
308
|
+
out += '\uFE0E ';
|
|
309
|
+
}
|
|
310
|
+
return out;
|
|
311
|
+
}
|
|
241
312
|
/** Pad or clip one already-sanitized line so it occupies exactly `width` cells. */
|
|
242
313
|
export function padToWidth(text, width) {
|
|
243
314
|
const safe = sanitizeTerminalText(text);
|