dsh-ssh-tui 0.7.2 → 0.7.3
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 +16 -1
- package/README.md +14 -1
- package/cordis.patch.yml +15 -0
- package/docs/terminals.md +113 -0
- package/lib/diag.js +35 -0
- package/lib/diag.js.map +1 -1
- package/lib/display-sock.js +259 -42
- package/lib/display-sock.js.map +1 -1
- package/lib/doctor.js +71 -37
- package/lib/doctor.js.map +1 -1
- package/lib/dsh-compat.js +206 -88
- package/lib/dsh-compat.js.map +1 -1
- package/lib/footer.js +4 -2
- package/lib/footer.js.map +1 -1
- package/lib/i18n/en.js +18 -0
- package/lib/i18n/en.js.map +1 -1
- package/lib/i18n/index.js +13 -7
- package/lib/i18n/index.js.map +1 -1
- package/lib/i18n/zh.js +18 -0
- package/lib/i18n/zh.js.map +1 -1
- package/lib/index.js +36 -11
- package/lib/index.js.map +1 -1
- package/lib/paint.js +5 -2
- package/lib/paint.js.map +1 -1
- package/lib/picker.js +5 -3
- package/lib/picker.js.map +1 -1
- package/lib/platform.js +296 -11
- package/lib/platform.js.map +1 -1
- package/lib/preset-authoring.js +10 -14
- package/lib/preset-authoring.js.map +1 -1
- package/lib/preset-compat.js +100 -0
- package/lib/preset-compat.js.map +1 -0
- package/lib/preset-picker.js +5 -1
- package/lib/preset-picker.js.map +1 -1
- package/lib/preset-rows.js +83 -13
- package/lib/preset-rows.js.map +1 -1
- package/lib/provider-catalog.js +4 -4
- package/lib/route-memory.js +3 -3
- package/lib/route-memory.js.map +1 -1
- package/lib/session-index.js +5 -0
- package/lib/session-index.js.map +1 -1
- package/lib/session-lock.js +4 -1
- package/lib/session-lock.js.map +1 -1
- package/lib/session-route.js +3 -0
- package/lib/session-route.js.map +1 -1
- package/lib/settings-routes.js +10 -0
- package/lib/settings-routes.js.map +1 -0
- package/lib/settings-subagent.js +10 -0
- package/lib/settings-subagent.js.map +1 -0
- package/lib/subagent-model.js +5 -5
- package/lib/subagent-model.js.map +1 -1
- package/lib/supergrok-token.js +4 -0
- package/lib/supergrok-token.js.map +1 -1
- package/lib/terminal-caps.js +358 -0
- package/lib/terminal-caps.js.map +1 -0
- package/lib/tui.js +184 -120
- package/lib/tui.js.map +1 -1
- package/lib/types/diag.d.ts +18 -1
- package/lib/types/display-sock.d.ts +63 -22
- package/lib/types/doctor.d.ts +8 -1
- package/lib/types/dsh-compat.d.ts +141 -44
- package/lib/types/footer.d.ts +3 -1
- package/lib/types/i18n/index.d.ts +18 -12
- package/lib/types/index.d.ts +45 -0
- package/lib/types/picker.d.ts +3 -0
- package/lib/types/platform.d.ts +175 -10
- package/lib/types/preset-authoring.d.ts +8 -14
- package/lib/types/preset-compat.d.ts +58 -0
- package/lib/types/preset-picker.d.ts +1 -1
- package/lib/types/preset-rows.d.ts +51 -9
- package/lib/types/settings-routes.d.ts +16 -0
- package/lib/types/settings-subagent.d.ts +24 -0
- package/lib/types/subagent-model.d.ts +7 -7
- package/lib/types/terminal-caps.d.ts +105 -0
- package/lib/types/tui.d.ts +41 -7
- package/package.json +82 -55
package/lib/doctor.js
CHANGED
|
@@ -20,7 +20,7 @@ import { createRequire } from 'node:module';
|
|
|
20
20
|
import { dirname, join } from 'node:path';
|
|
21
21
|
import { fileURLToPath } from 'node:url';
|
|
22
22
|
import { t } from './i18n/index.js';
|
|
23
|
-
import { analyzePatch, duplicatePatchRows, missingRosterRows, patchNamesRow, rosterPatchPath, ROSTER_ROWS, } from './preset-rows.js';
|
|
23
|
+
import { analyzePatch, duplicatePatchRows, missingRosterRows, patchNamesRow, rosterPatchPath, rosterRows, ROSTER_ROWS, } from './preset-rows.js';
|
|
24
24
|
import { subagentModelMatchesProvider } from './subagent-model.js';
|
|
25
25
|
/** Where a row was found, as one detail line. */
|
|
26
26
|
function rowDetail(row) {
|
|
@@ -64,8 +64,30 @@ export function doctorChecks(facts) {
|
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
// 2. The roster service: without it /mode cannot switch and the preset-owned
|
|
67
|
-
// tools are absent from the catalog.
|
|
68
|
-
|
|
67
|
+
// tools are absent from the catalog. 0.1.7 deleted that service — the
|
|
68
|
+
// agent is composed process-wide — so there the patch text is the only
|
|
69
|
+
// evidence, and the rows that matter are the ones the shipped standard
|
|
70
|
+
// preset owns beyond the base (persona, ask_user_question, present).
|
|
71
|
+
const generation = facts.generation ?? 'legacy';
|
|
72
|
+
if (generation === 'forms') {
|
|
73
|
+
const missing = analysis.parseable ? missingRosterRows(analysis.rows, rosterRows(generation)) : [];
|
|
74
|
+
if (!analysis.parseable) {
|
|
75
|
+
checks.push({ id: 'agent-plane', status: 'warn', summary: t('doctor.forms.unknown'), details: [] });
|
|
76
|
+
}
|
|
77
|
+
else if (missing.length === 0) {
|
|
78
|
+
checks.push({ id: 'agent-plane', status: 'ok', summary: t('doctor.forms.ok'), details: [] });
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
checks.push({
|
|
82
|
+
id: 'agent-plane',
|
|
83
|
+
status: 'warn',
|
|
84
|
+
summary: t('doctor.forms.warn'),
|
|
85
|
+
details: missing.map(row => t('doctor.detail.missingRow', { id: row.id })),
|
|
86
|
+
fixable: true,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else if (facts.services.roster) {
|
|
69
91
|
checks.push({ id: 'roster', status: 'ok', summary: t('doctor.roster.ok'), details: [] });
|
|
70
92
|
}
|
|
71
93
|
else {
|
|
@@ -83,40 +105,44 @@ export function doctorChecks(facts) {
|
|
|
83
105
|
});
|
|
84
106
|
}
|
|
85
107
|
// 3. code-runtime: the PTC preset mounts it, so its absence is the second
|
|
86
|
-
// half of the same regression.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
:
|
|
99
|
-
? [
|
|
100
|
-
:
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
108
|
+
// half of the same regression. Both the row and the preset are 0.1.5
|
|
109
|
+
// things; 0.1.7's base mounts `ptc-runtime` itself.
|
|
110
|
+
if (generation === 'legacy') {
|
|
111
|
+
if (facts.services.codeRuntime) {
|
|
112
|
+
checks.push({ id: 'code-runtime', status: 'ok', summary: t('doctor.codeRuntime.ok'), details: [] });
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
const declared = codeRuntimeRow !== undefined && analysis.parseable && patchNamesRow(analysis.rows, codeRuntimeRow);
|
|
116
|
+
checks.push({
|
|
117
|
+
id: 'code-runtime',
|
|
118
|
+
status: 'fail',
|
|
119
|
+
summary: t('doctor.codeRuntime.fail'),
|
|
120
|
+
details: codeRuntimeRow === undefined
|
|
121
|
+
? []
|
|
122
|
+
: declared
|
|
123
|
+
? [t('doctor.detail.declaredNoService', { id: codeRuntimeRow.id })]
|
|
124
|
+
: [t('doctor.detail.missingRow', { id: codeRuntimeRow.id })],
|
|
125
|
+
fixable: !declared,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
// 4. The subagent settings row has no runtime service to probe, so the patch
|
|
129
|
+
// text is the only evidence. It is part of the 0.1.5 roster's host
|
|
130
|
+
// services; on 0.1.7 the TUI's own `ssh-tui-subagent` row replaces it.
|
|
131
|
+
if (!analysis.parseable) {
|
|
132
|
+
checks.push({ id: 'subagent-settings', status: 'warn', summary: t('doctor.subagentSettings.unknown'), details: [] });
|
|
133
|
+
}
|
|
134
|
+
else if (subagentRow === undefined || patchNamesRow(analysis.rows, subagentRow)) {
|
|
135
|
+
checks.push({ id: 'subagent-settings', status: 'ok', summary: t('doctor.subagentSettings.ok'), details: [] });
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
checks.push({
|
|
139
|
+
id: 'subagent-settings',
|
|
140
|
+
status: 'warn',
|
|
141
|
+
summary: t('doctor.subagentSettings.warn'),
|
|
142
|
+
details: [t('doctor.detail.missingRow', { id: subagentRow.id })],
|
|
143
|
+
fixable: true,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
120
146
|
}
|
|
121
147
|
// 5. Duplicate inserts fail at load time with "service has been registered".
|
|
122
148
|
const duplicates = duplicatePatchRows(analysis.rows);
|
|
@@ -350,12 +376,20 @@ export async function collectDoctor(options) {
|
|
|
350
376
|
}),
|
|
351
377
|
scopeCopies: findScopeCopies(options.anchors),
|
|
352
378
|
...(options.routing === undefined ? {} : { routing: options.routing }),
|
|
379
|
+
...(options.generation === undefined ? {} : { generation: options.generation }),
|
|
353
380
|
};
|
|
354
381
|
}
|
|
355
382
|
/** Rows `/doctor --fix` would mount, given the services the composition registered. */
|
|
356
383
|
export function rowsToRepair(facts) {
|
|
357
384
|
if (!facts.patch.analysis.parseable)
|
|
358
385
|
return [];
|
|
386
|
+
const generation = facts.generation ?? 'legacy';
|
|
387
|
+
// 0.1.7 has no roster service to probe and no PTC runtime row to add: the
|
|
388
|
+
// base composes the agent process-wide, and the three rows a terminal profile
|
|
389
|
+
// owns are the ones the patch text either declares or does not.
|
|
390
|
+
if (generation === 'forms') {
|
|
391
|
+
return missingRosterRows(facts.patch.analysis.rows, rosterRows(generation));
|
|
392
|
+
}
|
|
359
393
|
const missing = missingRosterRows(facts.patch.analysis.rows);
|
|
360
394
|
return missing.filter(row => (row.id === ROSTER_ROWS[0]?.id && !facts.services.roster)
|
|
361
395
|
|| (row.id === ROSTER_ROWS[1]?.id && !facts.services.codeRuntime)
|
package/lib/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
package/lib/dsh-compat.js
CHANGED
|
@@ -1,46 +1,192 @@
|
|
|
1
|
-
import * as dshSettings from '@deepseek-ai/dsh-settings';
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Settings namespaces are branded strings at the type level on both supported
|
|
3
|
+
* lines; this cast supplies the brand from a plain literal.
|
|
5
4
|
*/
|
|
6
5
|
export function settingsNamespace(value) {
|
|
7
6
|
return value;
|
|
8
7
|
}
|
|
8
|
+
function settingsService(ctx) {
|
|
9
|
+
return ctx.get('settings');
|
|
10
|
+
}
|
|
11
|
+
/** Generations already seen for a context, so an early caller cannot misread. */
|
|
12
|
+
const generationCache = new WeakMap();
|
|
13
|
+
/** Whether the 0.1.5 preset-roster package is installed beside this plugin. */
|
|
14
|
+
function presetRosterInstalled() {
|
|
15
|
+
try {
|
|
16
|
+
return typeof import.meta.resolve === 'function'
|
|
17
|
+
&& import.meta.resolve('@deepseek-ai/dsh-agent-presets') !== undefined;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// Not installed (0.1.7 dropped it) or resolution unavailable.
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
9
24
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
25
|
+
* The host's settings generation, as feature detection rather than a version.
|
|
26
|
+
*
|
|
27
|
+
* `legacy` (0.1.5) resolves a namespace through `settings.get`; `forms` (0.1.7)
|
|
28
|
+
* has no `get` and projects a form per loader entry. Callers that differ by
|
|
29
|
+
* generation — which profile rows a terminal profile must mount, for one — read
|
|
30
|
+
* it here instead of sniffing package versions.
|
|
31
|
+
*
|
|
32
|
+
* Before the service exists (a plugin applies before it is mounted) the same
|
|
33
|
+
* split shows up as the roster package's absence, and the answer is memoized as
|
|
34
|
+
* soon as the service is seen so a later call cannot disagree with an earlier
|
|
35
|
+
* one.
|
|
15
36
|
*/
|
|
16
|
-
export function
|
|
17
|
-
const
|
|
18
|
-
if (
|
|
19
|
-
|
|
20
|
-
|
|
37
|
+
export function hostSettingsGeneration(ctx) {
|
|
38
|
+
const cached = generationCache.get(ctx);
|
|
39
|
+
if (cached !== undefined)
|
|
40
|
+
return cached;
|
|
41
|
+
const service = settingsService(ctx);
|
|
42
|
+
if (service !== undefined) {
|
|
43
|
+
const generation = typeof service.get === 'function' ? 'legacy' : 'forms';
|
|
44
|
+
generationCache.set(ctx, generation);
|
|
45
|
+
return generation;
|
|
21
46
|
}
|
|
47
|
+
return presetRosterInstalled() ? 'legacy' : 'forms';
|
|
48
|
+
}
|
|
49
|
+
/** `describe()` re-projects every entry's schema, so one frame shares a walk. */
|
|
50
|
+
const DESCRIPTORS_TTL_MS = 250;
|
|
51
|
+
const descriptorCache = new WeakMap();
|
|
52
|
+
function descriptorsOf(service) {
|
|
53
|
+
if (typeof service.describe !== 'function')
|
|
54
|
+
return undefined;
|
|
55
|
+
const now = Date.now();
|
|
56
|
+
const cached = descriptorCache.get(service);
|
|
57
|
+
if (cached !== undefined && now - cached.at < DESCRIPTORS_TTL_MS)
|
|
58
|
+
return cached.rows;
|
|
59
|
+
const rows = service.describe();
|
|
60
|
+
descriptorCache.set(service, { at: now, rows });
|
|
61
|
+
return rows;
|
|
62
|
+
}
|
|
63
|
+
/** Forget the memoized descriptors so the next read re-walks the forms. */
|
|
64
|
+
export function invalidateSettingsCache(ctx) {
|
|
65
|
+
const service = settingsService(ctx);
|
|
66
|
+
if (service !== undefined)
|
|
67
|
+
descriptorCache.delete(service);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Read one settings section.
|
|
71
|
+
*
|
|
72
|
+
* 0.1.5 resolves it through `get(ns)`. 0.1.7 has no `get`, so the value comes
|
|
73
|
+
* from the entry's descriptor, which projects the live config — volatile fields
|
|
74
|
+
* only, i.e. exactly the fields its form exposes — and returns `undefined` when
|
|
75
|
+
* no entry carries that id.
|
|
76
|
+
*/
|
|
77
|
+
export function readSettingsSection(ctx, ns) {
|
|
78
|
+
const service = settingsService(ctx);
|
|
79
|
+
if (service === undefined)
|
|
80
|
+
return undefined;
|
|
81
|
+
if (typeof service.get === 'function')
|
|
82
|
+
return service.get(ns);
|
|
83
|
+
return descriptorsOf(service)?.find(row => row.ns === ns)?.value;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The user's own settings document, keyed by namespace, on either line.
|
|
87
|
+
*
|
|
88
|
+
* 0.1.5 publishes it as `settings.document`. 0.1.7 dropped the property — the
|
|
89
|
+
* document is the profile patch now — but each descriptor still carries the
|
|
90
|
+
* user layer it was built from, so the same view is reconstructible. Callers
|
|
91
|
+
* that ask "did the user configure this?" must use this, not
|
|
92
|
+
* {@link readSettingsSection}: a resolved read also carries the composition
|
|
93
|
+
* base and schema defaults, which is exactly what such a caller must not
|
|
94
|
+
* mistake for a user choice.
|
|
95
|
+
*/
|
|
96
|
+
export function settingsDocument(ctx) {
|
|
97
|
+
const service = settingsService(ctx);
|
|
98
|
+
if (service === undefined)
|
|
99
|
+
return undefined;
|
|
100
|
+
const raw = service.document;
|
|
101
|
+
if (raw !== null && typeof raw === 'object' && !Array.isArray(raw)) {
|
|
102
|
+
return raw;
|
|
103
|
+
}
|
|
104
|
+
const rows = descriptorsOf(service);
|
|
105
|
+
if (rows === undefined)
|
|
106
|
+
return undefined;
|
|
107
|
+
return Object.fromEntries(rows.filter(row => row.user !== undefined).map(row => [row.ns, row.user]));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Mark one schema field as form-writable on the 0.1.7 line.
|
|
111
|
+
*
|
|
112
|
+
* 0.1.7 projects only fields whose schema node carries the `volatile` meta, and
|
|
113
|
+
* refuses a settings write to any other path. The 0.1.5 schemastery (3.18.2)
|
|
114
|
+
* has no such builder, so the call is feature-detected rather than typed: on
|
|
115
|
+
* that line the marker means nothing and the schema is returned untouched.
|
|
116
|
+
*/
|
|
117
|
+
export function liveField(schema) {
|
|
118
|
+
const builder = schema;
|
|
119
|
+
return typeof builder.volatile === 'function' ? builder.volatile() : schema;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Register a settings section.
|
|
123
|
+
*
|
|
124
|
+
* 0.1.5 publishes the `settings` service with `installSection`, callable only
|
|
125
|
+
* once that service is injected (plugins apply before it, so `ctx.inject` must
|
|
126
|
+
* defer — same pattern the harness's own packages use).
|
|
127
|
+
*
|
|
128
|
+
* 0.1.7 removed it. The section is now the loader entry's own `Config`
|
|
129
|
+
* schema — this plugin's is `ssh-tui`, and the two auxiliary namespaces are
|
|
130
|
+
* carried by the `dsh-ssh-tui/settings-*` rows in `cordis.patch.yml` — so the
|
|
131
|
+
* only thing left for a consumer to wire is the live read (`setSource`) and the
|
|
132
|
+
* change notification (`onChange`).
|
|
133
|
+
*/
|
|
134
|
+
export function installSettingsSection(ctx, ns, schema, entry, hooks) {
|
|
22
135
|
const host = ctx;
|
|
23
136
|
if (typeof host.inject !== 'function') {
|
|
24
|
-
throw new Error('dsh-settings:
|
|
137
|
+
throw new Error('dsh-settings: ctx.inject is unavailable');
|
|
25
138
|
}
|
|
26
139
|
host.inject(['settings'], (injected) => {
|
|
27
140
|
const holder = injected;
|
|
28
|
-
const
|
|
29
|
-
if (typeof
|
|
141
|
+
const service = (holder.settings ?? injected);
|
|
142
|
+
if (typeof service.installSection === 'function') {
|
|
143
|
+
service.installSection(ctx, ns, schema, entry, hooks);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (typeof service.describe !== 'function') {
|
|
30
147
|
throw new Error('dsh-settings: settings service has no installSection');
|
|
31
148
|
}
|
|
32
|
-
|
|
149
|
+
hooks.setSource(() => readSettingsSection(ctx, ns));
|
|
150
|
+
// 0.1.7 emits `settings/document-updated` on the service's own context,
|
|
151
|
+
// which is where a consumer outside the root fiber has to listen. A host
|
|
152
|
+
// that does not expose it still gets the attach read below.
|
|
153
|
+
const owner = service.ctx;
|
|
154
|
+
if (typeof owner?.on === 'function') {
|
|
155
|
+
const off = owner.on('settings/document-updated', (changed) => {
|
|
156
|
+
if (changed !== ns)
|
|
157
|
+
return;
|
|
158
|
+
invalidateSettingsCache(ctx);
|
|
159
|
+
hooks.onChange();
|
|
160
|
+
});
|
|
161
|
+
if (typeof off === 'function')
|
|
162
|
+
ctx.effect(() => off);
|
|
163
|
+
}
|
|
164
|
+
hooks.onChange();
|
|
33
165
|
});
|
|
34
166
|
}
|
|
35
167
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
168
|
+
* Whether a tool result reports failure.
|
|
169
|
+
*
|
|
170
|
+
* 0.1.5 carries `isError` on the `tool-result` content block; 0.1.7 removed
|
|
171
|
+
* that block from `ContentBlockMap` and moved the flag onto the message
|
|
172
|
+
* itself. Both are read, so one build understands either host.
|
|
173
|
+
*/
|
|
174
|
+
export function toolResultFailed(message) {
|
|
175
|
+
if (message === null || typeof message !== 'object')
|
|
176
|
+
return false;
|
|
177
|
+
if (message.isError === true)
|
|
178
|
+
return true;
|
|
179
|
+
const first = message.content?.[0];
|
|
180
|
+
return first !== null && typeof first === 'object'
|
|
181
|
+
&& first.isError === true;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Read the full durable event log. Both supported lines read it on demand
|
|
185
|
+
* through `snapshotEvents()`.
|
|
38
186
|
*/
|
|
39
187
|
export function sessionEvents(session) {
|
|
40
188
|
const host = session;
|
|
41
|
-
|
|
42
|
-
return host.snapshotEvents();
|
|
43
|
-
return host.events ?? [];
|
|
189
|
+
return typeof host.snapshotEvents === 'function' ? host.snapshotEvents() : [];
|
|
44
190
|
}
|
|
45
191
|
/**
|
|
46
192
|
* Walk the durable log without copying it. Prefer `eventAt` so resume does
|
|
@@ -99,22 +245,21 @@ export async function forEachSessionEventAsync(session, visit, yieldEvery = REPL
|
|
|
99
245
|
await yieldToEventLoop();
|
|
100
246
|
}
|
|
101
247
|
}
|
|
248
|
+
/** The `header` of one `list()` snapshot, when it carries a plausible one. */
|
|
102
249
|
function asHeader(value) {
|
|
103
250
|
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
104
251
|
return undefined;
|
|
105
|
-
const
|
|
106
|
-
if (
|
|
107
|
-
return
|
|
108
|
-
|
|
109
|
-
if (record.
|
|
110
|
-
return
|
|
111
|
-
|
|
112
|
-
return asHeader(record.meta);
|
|
113
|
-
return undefined;
|
|
252
|
+
const header = value.header;
|
|
253
|
+
if (header === null || typeof header !== 'object' || Array.isArray(header))
|
|
254
|
+
return undefined;
|
|
255
|
+
const record = header;
|
|
256
|
+
if (typeof record.id !== 'string' || typeof record.createdAt !== 'number')
|
|
257
|
+
return undefined;
|
|
258
|
+
return record;
|
|
114
259
|
}
|
|
115
260
|
/**
|
|
116
|
-
*
|
|
117
|
-
*
|
|
261
|
+
* Both supported lines return `{ header, revision, … }` snapshots from
|
|
262
|
+
* `list()`; normalize to the header so the picker does not care which host
|
|
118
263
|
* it is talking to.
|
|
119
264
|
*/
|
|
120
265
|
export async function listPersistenceHeaders(persistence) {
|
|
@@ -133,37 +278,21 @@ export async function listPersistenceHeaders(persistence) {
|
|
|
133
278
|
return headers;
|
|
134
279
|
}
|
|
135
280
|
/**
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
281
|
+
* Read one session through `open(id, 'read')` + `handle.read()`, the access
|
|
282
|
+
* both supported lines expose. Close the handle so a listing pass does not pin
|
|
283
|
+
* write ownership.
|
|
139
284
|
*/
|
|
140
285
|
export async function inspectPersistenceSession(persistence, id) {
|
|
141
286
|
const host = persistence;
|
|
142
|
-
if (typeof host.inspect === 'function') {
|
|
143
|
-
const inspection = await host.inspect(id);
|
|
144
|
-
const events = inspection?.events;
|
|
145
|
-
if (!Array.isArray(events)) {
|
|
146
|
-
// Reporting an absent log as an empty one used to look like a blank
|
|
147
|
-
// session, and the picker deleted the session's artifacts on that
|
|
148
|
-
// verdict. An unreadable log stays visible instead.
|
|
149
|
-
throw new Error('dsh-session-persistence: inspect() returned no readable event log');
|
|
150
|
-
}
|
|
151
|
-
const state = inspection?.eventState;
|
|
152
|
-
return {
|
|
153
|
-
events,
|
|
154
|
-
meta: asHeader(inspection),
|
|
155
|
-
header: asHeader(inspection),
|
|
156
|
-
...(typeof state === 'string' ? { eventState: state } : {}),
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
287
|
if (typeof host.open !== 'function') {
|
|
160
|
-
throw new Error('dsh-session-persistence:
|
|
288
|
+
throw new Error('dsh-session-persistence: open is not available');
|
|
161
289
|
}
|
|
162
290
|
const handle = await host.open(id, 'read');
|
|
163
291
|
try {
|
|
164
292
|
if (typeof handle.read !== 'function') {
|
|
165
|
-
//
|
|
166
|
-
//
|
|
293
|
+
// Reporting an absent log as an empty one used to look like a blank
|
|
294
|
+
// session, and the picker deleted the session's artifacts on that
|
|
295
|
+
// verdict. An unreadable log stays visible instead.
|
|
167
296
|
throw new Error('dsh-session-persistence: read handle exposes no read(); refusing to report an empty log');
|
|
168
297
|
}
|
|
169
298
|
const slice = await handle.read();
|
|
@@ -173,7 +302,6 @@ export async function inspectPersistenceSession(persistence, id) {
|
|
|
173
302
|
return {
|
|
174
303
|
events: slice.events,
|
|
175
304
|
header: handle.header,
|
|
176
|
-
meta: handle.header,
|
|
177
305
|
...(typeof slice.eventState === 'string' ? { eventState: slice.eventState } : {}),
|
|
178
306
|
};
|
|
179
307
|
}
|
|
@@ -188,22 +316,22 @@ export async function inspectPersistenceSession(persistence, id) {
|
|
|
188
316
|
}
|
|
189
317
|
}
|
|
190
318
|
}
|
|
191
|
-
/**
|
|
319
|
+
/**
|
|
320
|
+
* A session's artifact path from its header. Both supported lines still
|
|
321
|
+
* implement `locate()` on the JSONL backend, but their typings keep it
|
|
322
|
+
* private, so the call stays feature-detected.
|
|
323
|
+
*/
|
|
192
324
|
export function persistenceLocate(persistence, meta) {
|
|
193
325
|
const locate = persistence.locate;
|
|
194
326
|
if (typeof locate !== 'function')
|
|
195
327
|
return undefined;
|
|
196
328
|
return locate(meta);
|
|
197
329
|
}
|
|
198
|
-
/**
|
|
199
|
-
* 0.1.2 command input advertised `images`; 0.1.5 renamed the flag to
|
|
200
|
-
* `attachments`. Either true means the slash command accepts composer files.
|
|
201
|
-
*/
|
|
330
|
+
/** Whether a command's input admits the composer's attachments. */
|
|
202
331
|
export function commandAcceptsAttachments(input) {
|
|
203
332
|
if (input === null || typeof input !== 'object')
|
|
204
333
|
return false;
|
|
205
|
-
|
|
206
|
-
return record.images === true || record.attachments === true;
|
|
334
|
+
return input.attachments === true;
|
|
207
335
|
}
|
|
208
336
|
/**
|
|
209
337
|
* Whether one chunk carries the model's first output token, matching the host's
|
|
@@ -293,20 +421,22 @@ export function streamFirstTokenTime(stream) {
|
|
|
293
421
|
return undefined;
|
|
294
422
|
}
|
|
295
423
|
/**
|
|
296
|
-
*
|
|
424
|
+
* A live `agent/assistant-stream` chunk frame's inner chunk plus its framing.
|
|
297
425
|
*
|
|
298
|
-
* `fallback` supplies the turn/step
|
|
299
|
-
*
|
|
426
|
+
* `fallback` supplies the turn/step, which chunk frames do not carry (see
|
|
427
|
+
* {@link streamFrameOwner}).
|
|
300
428
|
*/
|
|
301
|
-
export function streamChunkOf(
|
|
302
|
-
if (
|
|
429
|
+
export function streamChunkOf(frame, fallback) {
|
|
430
|
+
if (frame === null || typeof frame !== 'object')
|
|
303
431
|
return undefined;
|
|
304
|
-
const record =
|
|
305
|
-
|
|
432
|
+
const record = frame;
|
|
433
|
+
if (record.type !== 'chunk')
|
|
434
|
+
return undefined;
|
|
435
|
+
const chunk = record.chunk;
|
|
306
436
|
if (chunk === undefined || typeof chunk.type !== 'string')
|
|
307
437
|
return undefined;
|
|
308
|
-
const turn = record.
|
|
309
|
-
const step = record.
|
|
438
|
+
const turn = record.turn;
|
|
439
|
+
const step = record.step;
|
|
310
440
|
const time = record.time;
|
|
311
441
|
const explicit = typeof turn === 'number' && typeof step === 'number';
|
|
312
442
|
return {
|
|
@@ -317,22 +447,10 @@ export function streamChunkOf(eventOrFrame, fallback) {
|
|
|
317
447
|
stepKnown: explicit || fallback !== undefined,
|
|
318
448
|
};
|
|
319
449
|
}
|
|
320
|
-
/** Durable event type as a plain string so 0.1.5 hosts can omit `assistant/chunk`. */
|
|
321
|
-
export function sessionEventType(event) {
|
|
322
|
-
if (event === null || typeof event !== 'object')
|
|
323
|
-
return '';
|
|
324
|
-
const type = event.type;
|
|
325
|
-
return typeof type === 'string' ? type : '';
|
|
326
|
-
}
|
|
327
|
-
/** True when this event is a live-or-durable assistant token that replay should skip. */
|
|
328
|
-
export function isAssistantStreamEvent(event) {
|
|
329
|
-
const type = sessionEventType(event);
|
|
330
|
-
return type === 'assistant/chunk' || type === 'assistant/attempt';
|
|
331
|
-
}
|
|
332
450
|
/**
|
|
333
|
-
* Subscribe to a host event
|
|
334
|
-
* map.
|
|
335
|
-
*
|
|
451
|
+
* Subscribe to a host event whose scoped payload type does not match this
|
|
452
|
+
* build's `Events` map. Both supported lines emit `agent/assistant-stream`,
|
|
453
|
+
* and Cordis accepts the plain event name at runtime.
|
|
336
454
|
*/
|
|
337
455
|
export function listenHostEvent(ctx, event, handler) {
|
|
338
456
|
return ctx.on(event, handler);
|