@shidesheng0218/dsh-plugin-lint 0.0.0-stage → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/NOTICE +13 -0
- package/README.md +734 -2
- package/bin/dsh-plugin-analyze.mjs +378 -0
- package/bin/dsh-plugin-lint.mjs +381 -0
- package/bin/dsh-plugin-matrix.mjs +78 -0
- package/bin/dsh-plugin-upgrade-plan.mjs +180 -0
- package/package.json +62 -4
- package/schema/dsh-manifest.schema.json +134 -0
- package/scripts/lib/probe.mjs +34 -0
- package/scripts/probe-boot.mjs +123 -0
- package/src/composition.js +1 -0
- package/src/core/baseline.js +98 -0
- package/src/core/changed.js +41 -0
- package/src/core/load.js +145 -0
- package/src/core/mask.js +207 -0
- package/src/core/pack.js +95 -0
- package/src/core/packlist.js +186 -0
- package/src/core/peer.js +39 -0
- package/src/core/profile-scan.js +121 -0
- package/src/core/report.js +174 -0
- package/src/core/rules.js +581 -0
- package/src/core/semver.js +192 -0
- package/src/core/tarball.js +90 -0
- package/src/data/event-types.json +393 -0
- package/src/experimental/conflicts.js +315 -0
- package/src/experimental/index.js +4 -0
- package/src/experimental/performance.js +515 -0
- package/src/experimental/security.js +462 -0
- package/src/index.js +74 -0
- package/src/load.js +1 -0
- package/src/mask.js +1 -0
- package/src/matrix/cache.js +19 -0
- package/src/matrix/cell.js +79 -0
- package/src/matrix/cells.js +58 -0
- package/src/matrix/conflicts.js +210 -0
- package/src/matrix/export.js +155 -0
- package/src/matrix/index.js +71 -0
- package/src/matrix/manifest.js +17 -0
- package/src/matrix/migrate.js +41 -0
- package/src/matrix/run.js +241 -0
- package/src/matrix/sanitize.js +42 -0
- package/src/matrix/schema.js +178 -0
- package/src/matrix/site.js +61 -0
- package/src/matrix/sync.js +72 -0
- package/src/matrix/verify.js +152 -0
- package/src/performance.js +1 -0
- package/src/probe/artifact-resolver.js +161 -0
- package/src/probe/classify.js +8 -0
- package/src/probe/dsh-adapter.js +212 -0
- package/src/probe/environment/docker.js +270 -0
- package/src/probe/environment/host-unsafe.js +39 -0
- package/src/probe/environment/materialize.js +22 -0
- package/src/probe/environment.js +50 -0
- package/src/probe/installed-artifact.js +17 -0
- package/src/probe/probe.js +278 -0
- package/src/report.js +1 -0
- package/src/rules.js +1 -0
- package/src/security.js +1 -0
- package/src/shared/errors.js +7 -0
- package/src/shared/hash.js +31 -0
- package/src/shared/status.js +12 -0
- package/src/shared/validate.js +14 -0
- package/src/shared/version.js +4 -0
- package/src/upgrade/compatibility.js +14 -0
- package/src/upgrade/planner.js +119 -0
- package/src/upgrade/profile.js +82 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A deliberately small semver range evaluator for DSH peer admission.
|
|
3
|
+
*
|
|
4
|
+
* The host calls `semver.satisfies(runtime, range, { includePrerelease: true })`
|
|
5
|
+
* (dsh-app-boot README: "prereleases participate in range matching"). This
|
|
6
|
+
* module implements the subset of node-semver that appears in plugin peer
|
|
7
|
+
* declarations: exact/partial versions, = > >= < <=, ^, ~, hyphen ranges, x/*,
|
|
8
|
+
* and ||. Anything outside that grammar returns 'unknown' instead of guessing:
|
|
9
|
+
* a rule that cannot decide must not produce an error.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const VERSION_RE = /^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?$/;
|
|
13
|
+
const PARTIAL_RE = /^(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:-([0-9A-Za-z.-]+))?$/;
|
|
14
|
+
|
|
15
|
+
export function parseVersion(text) {
|
|
16
|
+
const match = VERSION_RE.exec(String(text ?? '').trim());
|
|
17
|
+
if (!match) return null;
|
|
18
|
+
return {
|
|
19
|
+
major: Number(match[1]),
|
|
20
|
+
minor: Number(match[2]),
|
|
21
|
+
patch: Number(match[3]),
|
|
22
|
+
prerelease: match[4] ? match[4].split('.') : [],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function compareIdentifiers(a, b) {
|
|
27
|
+
const aNumeric = /^\d+$/.test(a);
|
|
28
|
+
const bNumeric = /^\d+$/.test(b);
|
|
29
|
+
if (aNumeric && bNumeric) return Math.sign(Number(a) - Number(b));
|
|
30
|
+
if (aNumeric) return -1;
|
|
31
|
+
if (bNumeric) return 1;
|
|
32
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function compareVersions(a, b) {
|
|
36
|
+
for (const key of ['major', 'minor', 'patch']) {
|
|
37
|
+
if (a[key] !== b[key]) return Math.sign(a[key] - b[key]);
|
|
38
|
+
}
|
|
39
|
+
if (a.prerelease.length === 0 && b.prerelease.length === 0) return 0;
|
|
40
|
+
if (a.prerelease.length === 0) return 1;
|
|
41
|
+
if (b.prerelease.length === 0) return -1;
|
|
42
|
+
for (let index = 0; index < Math.max(a.prerelease.length, b.prerelease.length); index += 1) {
|
|
43
|
+
if (a.prerelease[index] === undefined) return -1;
|
|
44
|
+
if (b.prerelease[index] === undefined) return 1;
|
|
45
|
+
const diff = compareIdentifiers(a.prerelease[index], b.prerelease[index]);
|
|
46
|
+
if (diff !== 0) return diff;
|
|
47
|
+
}
|
|
48
|
+
return 0;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function version(major, minor = 0, patch = 0, prerelease = []) {
|
|
52
|
+
return { major, minor, patch, prerelease };
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function parsePartial(text) {
|
|
56
|
+
const match = PARTIAL_RE.exec(text);
|
|
57
|
+
if (!match) return null;
|
|
58
|
+
return {
|
|
59
|
+
major: Number(match[1]),
|
|
60
|
+
minor: match[2] === undefined ? undefined : Number(match[2]),
|
|
61
|
+
patch: match[3] === undefined ? undefined : Number(match[3]),
|
|
62
|
+
prerelease: match[4] ? match[4].split('.') : [],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function floor(partial) {
|
|
67
|
+
return version(partial.major, partial.minor ?? 0, partial.patch ?? 0, partial.prerelease);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function nextMajor(partial) { return version(partial.major + 1, 0, 0); }
|
|
71
|
+
function nextMinor(partial) { return version(partial.major, (partial.minor ?? 0) + 1, 0); }
|
|
72
|
+
function nextPatch(partial) { return version(partial.major, partial.minor ?? 0, (partial.patch ?? 0) + 1); }
|
|
73
|
+
|
|
74
|
+
function caretBounds(partial) {
|
|
75
|
+
const lower = { op: '>=', version: floor(partial) };
|
|
76
|
+
let upper;
|
|
77
|
+
if (partial.major > 0) upper = nextMajor(partial);
|
|
78
|
+
else if ((partial.minor ?? 0) > 0) upper = nextMinor(partial);
|
|
79
|
+
else upper = nextPatch(partial);
|
|
80
|
+
return [lower, { op: '<', version: upper }];
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function tildeBounds(partial) {
|
|
84
|
+
const lower = { op: '>=', version: floor(partial) };
|
|
85
|
+
const upper = partial.minor === undefined ? nextMajor(partial) : nextMinor(partial);
|
|
86
|
+
return [lower, { op: '<', version: upper }];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function bareBounds(partial) {
|
|
90
|
+
if (partial.major === undefined) return [];
|
|
91
|
+
// A full version is exact; a partial one is the usual x-range.
|
|
92
|
+
if (partial.minor !== undefined && partial.patch !== undefined) {
|
|
93
|
+
return [{ op: '=', version: floor(partial) }];
|
|
94
|
+
}
|
|
95
|
+
const lower = { op: '>=', version: floor(partial) };
|
|
96
|
+
const upper = partial.minor === undefined ? nextMajor(partial) : nextMinor(partial);
|
|
97
|
+
return [lower, { op: '<', version: upper }];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function operatorBounds(op, partial) {
|
|
101
|
+
if (partial.major === undefined) return [];
|
|
102
|
+
const exact = floor(partial);
|
|
103
|
+
if (op === '>=') return [{ op: '>=', version: exact }];
|
|
104
|
+
if (op === '>') {
|
|
105
|
+
if (partial.patch !== undefined) return [{ op: '>', version: exact }];
|
|
106
|
+
if (partial.minor !== undefined) return [{ op: '>=', version: nextMinor(partial) }];
|
|
107
|
+
return [{ op: '>=', version: nextMajor(partial) }];
|
|
108
|
+
}
|
|
109
|
+
if (op === '<') return [{ op: '<', version: exact }];
|
|
110
|
+
if (op === '<=') {
|
|
111
|
+
if (partial.patch !== undefined) return [{ op: '<=', version: exact }];
|
|
112
|
+
if (partial.minor !== undefined) return [{ op: '<', version: nextMinor(partial) }];
|
|
113
|
+
return [{ op: '<', version: nextMajor(partial) }];
|
|
114
|
+
}
|
|
115
|
+
if (op === '=') return bareBounds(partial);
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function parseComparator(token) {
|
|
120
|
+
if (token === '*' || token === 'x' || token === 'X') return [];
|
|
121
|
+
const match = /^(>=|<=|>|<|=|\^|~)?\s*(.+)$/.exec(token);
|
|
122
|
+
if (!match) return null;
|
|
123
|
+
const op = match[1] ?? '';
|
|
124
|
+
const text = match[2];
|
|
125
|
+
const partial = parsePartial(text);
|
|
126
|
+
if (!partial) return null;
|
|
127
|
+
if (op === '^') return caretBounds(partial);
|
|
128
|
+
if (op === '~') return tildeBounds(partial);
|
|
129
|
+
if (op === '') return bareBounds(partial);
|
|
130
|
+
return operatorBounds(op, partial);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function parseHyphen(left, right) {
|
|
134
|
+
const a = parsePartial(left);
|
|
135
|
+
const b = parsePartial(right);
|
|
136
|
+
if (!a || !b || a.major === undefined || b.major === undefined) return null;
|
|
137
|
+
const bounds = [{ op: '>=', version: floor(a) }];
|
|
138
|
+
if (b.patch !== undefined) bounds.push({ op: '<=', version: floor(b) });
|
|
139
|
+
else if (b.minor !== undefined) bounds.push({ op: '<', version: nextMinor(b) });
|
|
140
|
+
else bounds.push({ op: '<', version: nextMajor(b) });
|
|
141
|
+
return bounds;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function parseAlternative(text) {
|
|
145
|
+
const trimmed = text.trim();
|
|
146
|
+
if (trimmed === '') return null;
|
|
147
|
+
const hyphen = /^(\S+)\s+-\s+(\S+)$/.exec(trimmed);
|
|
148
|
+
if (hyphen) return parseHyphen(hyphen[1], hyphen[2]);
|
|
149
|
+
const tokens = trimmed.split(/\s+/);
|
|
150
|
+
const bounds = [];
|
|
151
|
+
for (const token of tokens) {
|
|
152
|
+
const parsed = parseComparator(token);
|
|
153
|
+
if (parsed === null) return null;
|
|
154
|
+
bounds.push(...parsed);
|
|
155
|
+
}
|
|
156
|
+
return bounds;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/** true / false / null (null = outside the supported grammar). */
|
|
160
|
+
export function evaluateRange(text) {
|
|
161
|
+
const raw = String(text ?? '').trim();
|
|
162
|
+
if (raw === '' || /^workspace:/.test(raw)) return null;
|
|
163
|
+
const alternatives = raw.split('||').map(parseAlternative);
|
|
164
|
+
if (alternatives.some((alt) => alt === null)) return null;
|
|
165
|
+
return alternatives;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export function satisfies(versionText, rangeText) {
|
|
169
|
+
const target = parseVersion(versionText);
|
|
170
|
+
if (!target) return null;
|
|
171
|
+
const alternatives = evaluateRange(rangeText);
|
|
172
|
+
if (alternatives === null) return null;
|
|
173
|
+
for (const bounds of alternatives) {
|
|
174
|
+
let ok = true;
|
|
175
|
+
for (const bound of bounds) {
|
|
176
|
+
const cmp = compareVersions(target, bound.version);
|
|
177
|
+
const pass = bound.op === '>' ? cmp > 0
|
|
178
|
+
: bound.op === '>=' ? cmp >= 0
|
|
179
|
+
: bound.op === '<' ? cmp < 0
|
|
180
|
+
: bound.op === '<=' ? cmp <= 0
|
|
181
|
+
: cmp === 0;
|
|
182
|
+
if (!pass) { ok = false; break; }
|
|
183
|
+
}
|
|
184
|
+
if (ok) return true;
|
|
185
|
+
}
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/** Whether a range uses only the supported grammar. */
|
|
190
|
+
export function isDecidableRange(text) {
|
|
191
|
+
return evaluateRange(text) !== null;
|
|
192
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join, normalize } from 'node:path';
|
|
3
|
+
import { gunzipSync } from 'node:zlib';
|
|
4
|
+
|
|
5
|
+
const BLOCK = 512;
|
|
6
|
+
const MAX_ENTRIES = 10000;
|
|
7
|
+
const MAX_BYTES = 256 * 1024 * 1024;
|
|
8
|
+
|
|
9
|
+
function text(buffer, start, length) {
|
|
10
|
+
return buffer.subarray(start, start + length).toString('utf8').replace(/\0.*$/, '').trim();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function safeRelative(name) {
|
|
14
|
+
const normalized = String(name).replace(/\\/g, '/').replace(/^\/+/, '');
|
|
15
|
+
if (!normalized || normalized.split('/').includes('..')) {
|
|
16
|
+
throw new Error('tarball entry escapes the extraction directory: ' + name);
|
|
17
|
+
}
|
|
18
|
+
return normalize(normalized);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function parsePax(body) {
|
|
22
|
+
const records = {};
|
|
23
|
+
let offset = 0;
|
|
24
|
+
while (offset < body.length) {
|
|
25
|
+
const space = body.indexOf(0x20, offset);
|
|
26
|
+
if (space < 0) break;
|
|
27
|
+
const length = Number(body.subarray(offset, space).toString('ascii'));
|
|
28
|
+
if (!Number.isFinite(length) || length <= 0) break;
|
|
29
|
+
const record = body.subarray(space + 1, offset + length - 1).toString('utf8');
|
|
30
|
+
const equals = record.indexOf('=');
|
|
31
|
+
if (equals > 0) records[record.slice(0, equals)] = record.slice(equals + 1);
|
|
32
|
+
offset += length;
|
|
33
|
+
}
|
|
34
|
+
return records;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Extract an npm tarball without dependencies. Only regular files and
|
|
39
|
+
* directories are written; symlinks, hardlinks, and path traversal are
|
|
40
|
+
* rejected. Returns the extracted file list.
|
|
41
|
+
*/
|
|
42
|
+
export function extractTarball(buffer, dest) {
|
|
43
|
+
const tar = gunzipSync(buffer);
|
|
44
|
+
let offset = 0;
|
|
45
|
+
let entries = 0;
|
|
46
|
+
let bytes = 0;
|
|
47
|
+
let pax = {};
|
|
48
|
+
let longName;
|
|
49
|
+
const files = [];
|
|
50
|
+
while (offset + BLOCK <= tar.length) {
|
|
51
|
+
const header = tar.subarray(offset, offset + BLOCK);
|
|
52
|
+
if (header.every((byte) => byte === 0)) break;
|
|
53
|
+
const name = text(header, 0, 100);
|
|
54
|
+
const size = parseInt(text(header, 124, 12) || '0', 8);
|
|
55
|
+
const type = String.fromCharCode(header[156] || 48);
|
|
56
|
+
const prefix = text(header, 345, 155);
|
|
57
|
+
const dataStart = offset + BLOCK;
|
|
58
|
+
const dataEnd = dataStart + size;
|
|
59
|
+
if (dataEnd > tar.length) throw new Error('tarball entry extends past the archive: ' + name);
|
|
60
|
+
const body = tar.subarray(dataStart, dataEnd);
|
|
61
|
+
offset = dataStart + Math.ceil(size / BLOCK) * BLOCK;
|
|
62
|
+
entries += 1;
|
|
63
|
+
if (entries > MAX_ENTRIES) throw new Error('tarball has too many entries');
|
|
64
|
+
bytes += size;
|
|
65
|
+
if (bytes > MAX_BYTES) throw new Error('tarball expands beyond the size limit');
|
|
66
|
+
|
|
67
|
+
if (type === 'x' || type === 'g') { pax = { ...pax, ...parsePax(body) }; continue; }
|
|
68
|
+
if (type === 'L') { longName = text(body, 0, body.length); continue; }
|
|
69
|
+
|
|
70
|
+
const rawPath = longName || pax.path || (prefix ? prefix + '/' + name : name);
|
|
71
|
+
longName = undefined;
|
|
72
|
+
pax = {};
|
|
73
|
+
|
|
74
|
+
if (type === '5') {
|
|
75
|
+
mkdirSync(join(dest, safeRelative(rawPath)), { recursive: true });
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (type === '0' || type === '\0' || type === '7') {
|
|
79
|
+
const path = join(dest, safeRelative(rawPath));
|
|
80
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
81
|
+
writeFileSync(path, body);
|
|
82
|
+
files.push(safeRelative(rawPath));
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (type === '1' || type === '2') {
|
|
86
|
+
throw new Error('tarball contains a link: ' + rawPath);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return files;
|
|
90
|
+
}
|
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "Session event types observed in the official DeepSeek Harness packages. Regenerate with scripts/harvest-event-types.mjs against an installed DSH.",
|
|
3
|
+
"source": "DeepSeek Harness (MIT); harvested from @deepseek-ai/* lib bundles",
|
|
4
|
+
"harvestedAt": "2026-11-06",
|
|
5
|
+
"filesScanned": 472,
|
|
6
|
+
"appendSiteTypes": 46,
|
|
7
|
+
"observedTypes": 379,
|
|
8
|
+
"types": [
|
|
9
|
+
"a/b",
|
|
10
|
+
"account/watch",
|
|
11
|
+
"agent-loop/config-start-failed",
|
|
12
|
+
"agent-preset/conflict",
|
|
13
|
+
"agent-preset/invalid",
|
|
14
|
+
"agent-preset/locked",
|
|
15
|
+
"agent-preset/not-found",
|
|
16
|
+
"agent-preset/selected",
|
|
17
|
+
"agent/assistant-stream",
|
|
18
|
+
"agent/created",
|
|
19
|
+
"agent/disposed",
|
|
20
|
+
"agent/error",
|
|
21
|
+
"agent/pre-step",
|
|
22
|
+
"agent/request",
|
|
23
|
+
"agent/request-error",
|
|
24
|
+
"agent/status",
|
|
25
|
+
"agent/turn-stopping",
|
|
26
|
+
"api-session/activity",
|
|
27
|
+
"api-session/added",
|
|
28
|
+
"api-session/error",
|
|
29
|
+
"api-session/removed",
|
|
30
|
+
"api-session/status",
|
|
31
|
+
"app-boot/config-reload",
|
|
32
|
+
"approval/asked",
|
|
33
|
+
"approval/decided",
|
|
34
|
+
"approval/policy",
|
|
35
|
+
"approval/request",
|
|
36
|
+
"assistant/attempt",
|
|
37
|
+
"assistant/chunk",
|
|
38
|
+
"assistant/live",
|
|
39
|
+
"assistant/live-chunk",
|
|
40
|
+
"assistant/message",
|
|
41
|
+
"authorization/settled",
|
|
42
|
+
"client-console/disable",
|
|
43
|
+
"client-console/enable",
|
|
44
|
+
"client-console/event",
|
|
45
|
+
"client-runtime/cancel",
|
|
46
|
+
"client-runtime/get-properties",
|
|
47
|
+
"client-runtime/request",
|
|
48
|
+
"client-runtime/response",
|
|
49
|
+
"client-runtime/response-acknowledged",
|
|
50
|
+
"client-runtime/session-closed",
|
|
51
|
+
"client-sources/request",
|
|
52
|
+
"client-sources/response",
|
|
53
|
+
"client-sources/session-closed",
|
|
54
|
+
"command/done",
|
|
55
|
+
"command/executed",
|
|
56
|
+
"command/run",
|
|
57
|
+
"commands/change",
|
|
58
|
+
"commands/execute",
|
|
59
|
+
"commands/list",
|
|
60
|
+
"compact/end",
|
|
61
|
+
"compact/prune",
|
|
62
|
+
"compact/start",
|
|
63
|
+
"compact/summary",
|
|
64
|
+
"compaction/end",
|
|
65
|
+
"compaction/prune",
|
|
66
|
+
"compaction/start",
|
|
67
|
+
"compaction/summary",
|
|
68
|
+
"compaction/summary-error",
|
|
69
|
+
"connection/request",
|
|
70
|
+
"connection/reset",
|
|
71
|
+
"cordis-tree/get",
|
|
72
|
+
"cordis/dynamic-package",
|
|
73
|
+
"cordis/dynamic-retract",
|
|
74
|
+
"cordis/inspect-query",
|
|
75
|
+
"cordis/inspect-query-resolved",
|
|
76
|
+
"cordis/request-run",
|
|
77
|
+
"cordis/request-run-resolved",
|
|
78
|
+
"cordis/tree",
|
|
79
|
+
"credential/rejected",
|
|
80
|
+
"credentials/describe",
|
|
81
|
+
"credentials/record-updated",
|
|
82
|
+
"credentials/reference-updated",
|
|
83
|
+
"credentials/set",
|
|
84
|
+
"credentials/unset",
|
|
85
|
+
"deepseek-account/model-sign-in-required",
|
|
86
|
+
"deepseek-account/session-expired",
|
|
87
|
+
"deepseek-account/signed-out",
|
|
88
|
+
"deliverables/presented",
|
|
89
|
+
"developer/message",
|
|
90
|
+
"directory-picker/create-failed",
|
|
91
|
+
"directory-picker/exists",
|
|
92
|
+
"directory-picker/unavailable",
|
|
93
|
+
"directory-picker/unreadable",
|
|
94
|
+
"document-render/failed",
|
|
95
|
+
"domain/changed",
|
|
96
|
+
"dsh-commands/brand",
|
|
97
|
+
"dsh-experimental-inspector/0",
|
|
98
|
+
"dsh-llm/brand",
|
|
99
|
+
"ecdsa/rsa",
|
|
100
|
+
"eventsource-parser/stream",
|
|
101
|
+
"f/aqlbg",
|
|
102
|
+
"f/gfp",
|
|
103
|
+
"feedback/committed",
|
|
104
|
+
"feedback/message-delete",
|
|
105
|
+
"feedback/message-put",
|
|
106
|
+
"feedback/record",
|
|
107
|
+
"fetch/end",
|
|
108
|
+
"fetch/error",
|
|
109
|
+
"fetch/request-body-chunk",
|
|
110
|
+
"fetch/request-body-end",
|
|
111
|
+
"fetch/response",
|
|
112
|
+
"fetch/response-body-chunk",
|
|
113
|
+
"fetch/start",
|
|
114
|
+
"fmwvqz/sqb",
|
|
115
|
+
"fmwvqz/sqlefppjlmbopmf",
|
|
116
|
+
"foo/bar",
|
|
117
|
+
"fs/edit-intent",
|
|
118
|
+
"fs/observed",
|
|
119
|
+
"fs/promises",
|
|
120
|
+
"fs/write-intent",
|
|
121
|
+
"gateway/ambiguous-endpoint",
|
|
122
|
+
"gateway/arguments-invalid",
|
|
123
|
+
"gateway/bad-request",
|
|
124
|
+
"gateway/binding-invalid",
|
|
125
|
+
"gateway/cancelled",
|
|
126
|
+
"gateway/context-failed",
|
|
127
|
+
"gateway/context-not-found",
|
|
128
|
+
"gateway/context-unavailable",
|
|
129
|
+
"gateway/definition-unavailable",
|
|
130
|
+
"gateway/input-invalid",
|
|
131
|
+
"gateway/interactions-forbidden",
|
|
132
|
+
"gateway/internal",
|
|
133
|
+
"gateway/invocation-unavailable",
|
|
134
|
+
"gateway/lookup-failed",
|
|
135
|
+
"gateway/lookup-not-found",
|
|
136
|
+
"gateway/lookup-unavailable",
|
|
137
|
+
"gateway/method-unavailable",
|
|
138
|
+
"gateway/peer-disposed",
|
|
139
|
+
"gateway/protocol",
|
|
140
|
+
"gateway/provider-mismatch",
|
|
141
|
+
"gateway/result-invalid",
|
|
142
|
+
"gateway/service-unavailable",
|
|
143
|
+
"gateway/signature-invalid",
|
|
144
|
+
"gateway/uplink-overflow",
|
|
145
|
+
"goal/activation-changed",
|
|
146
|
+
"goal/change",
|
|
147
|
+
"goal/changed",
|
|
148
|
+
"goals/clear",
|
|
149
|
+
"goals/complete",
|
|
150
|
+
"goals/create",
|
|
151
|
+
"goals/edit",
|
|
152
|
+
"goals/get",
|
|
153
|
+
"goals/pause",
|
|
154
|
+
"goals/resume",
|
|
155
|
+
"hmr/change",
|
|
156
|
+
"hmr/reload",
|
|
157
|
+
"hook/invoked",
|
|
158
|
+
"hook/result",
|
|
159
|
+
"image/offload",
|
|
160
|
+
"internal/config",
|
|
161
|
+
"internal/dispatch",
|
|
162
|
+
"internal/get",
|
|
163
|
+
"internal/listener",
|
|
164
|
+
"internal/plugin",
|
|
165
|
+
"internal/service",
|
|
166
|
+
"internal/set",
|
|
167
|
+
"internal/status",
|
|
168
|
+
"internal/update",
|
|
169
|
+
"job/follow",
|
|
170
|
+
"job/kill",
|
|
171
|
+
"job/list",
|
|
172
|
+
"job/not-found",
|
|
173
|
+
"job/registered",
|
|
174
|
+
"job/settled",
|
|
175
|
+
"kb/mqfbgj",
|
|
176
|
+
"llm/adapters-updated",
|
|
177
|
+
"llm/model-discovery-rejected",
|
|
178
|
+
"llm/retry",
|
|
179
|
+
"llm/retry-started",
|
|
180
|
+
"llm/stream",
|
|
181
|
+
"loader/config-update",
|
|
182
|
+
"loader/entry-init",
|
|
183
|
+
"loader/partial-dispose",
|
|
184
|
+
"loader/patch-context",
|
|
185
|
+
"loader/volatile-update",
|
|
186
|
+
"locale/change",
|
|
187
|
+
"m/h",
|
|
188
|
+
"m/hr",
|
|
189
|
+
"m/s",
|
|
190
|
+
"m/sec",
|
|
191
|
+
"mm/dd",
|
|
192
|
+
"mode/set",
|
|
193
|
+
"model/selection",
|
|
194
|
+
"permission-presets/catalog-changed",
|
|
195
|
+
"permission/preset",
|
|
196
|
+
"picomatch/posix",
|
|
197
|
+
"plan/invalid-address",
|
|
198
|
+
"plan/mode",
|
|
199
|
+
"plan/not-found",
|
|
200
|
+
"plan/read-failed",
|
|
201
|
+
"plan/unavailable",
|
|
202
|
+
"plugin-manager/changed",
|
|
203
|
+
"plugin-manager/install-log",
|
|
204
|
+
"plugin-manager/install-state",
|
|
205
|
+
"plugin-market/changed",
|
|
206
|
+
"plugin-market/fetch-failed",
|
|
207
|
+
"plugin-market/invalid-index",
|
|
208
|
+
"plugin-market/invalid-index-url",
|
|
209
|
+
"plugin-market/invalid-query",
|
|
210
|
+
"plugin-market/settings-unavailable",
|
|
211
|
+
"plugin-market/unknown-index",
|
|
212
|
+
"query/request",
|
|
213
|
+
"query/response",
|
|
214
|
+
"remote-access/denied",
|
|
215
|
+
"request/context",
|
|
216
|
+
"request/header",
|
|
217
|
+
"request/header-delta",
|
|
218
|
+
"resources/list",
|
|
219
|
+
"resources/read",
|
|
220
|
+
"sandbox/mode",
|
|
221
|
+
"schedule/catalog",
|
|
222
|
+
"schedule/change",
|
|
223
|
+
"schedule/changed",
|
|
224
|
+
"schedule/delete",
|
|
225
|
+
"schedule/history",
|
|
226
|
+
"schedule/list",
|
|
227
|
+
"schedule/update",
|
|
228
|
+
"session-log-deepseek/delivery-accepted",
|
|
229
|
+
"session-telemetry/record",
|
|
230
|
+
"session/agent-busy",
|
|
231
|
+
"session/attachment",
|
|
232
|
+
"session/attachment-invalid",
|
|
233
|
+
"session/cancel",
|
|
234
|
+
"session/conflict",
|
|
235
|
+
"session/control",
|
|
236
|
+
"session/create",
|
|
237
|
+
"session/created",
|
|
238
|
+
"session/disposed",
|
|
239
|
+
"session/end-seed",
|
|
240
|
+
"session/event",
|
|
241
|
+
"session/flush",
|
|
242
|
+
"session/follow",
|
|
243
|
+
"session/fork",
|
|
244
|
+
"session/fork-unavailable",
|
|
245
|
+
"session/invalid-time-zone",
|
|
246
|
+
"session/list",
|
|
247
|
+
"session/migration-required",
|
|
248
|
+
"session/model-unavailable",
|
|
249
|
+
"session/not-found",
|
|
250
|
+
"session/page",
|
|
251
|
+
"session/projections",
|
|
252
|
+
"session/projections-unavailable",
|
|
253
|
+
"session/prompt",
|
|
254
|
+
"session/provider-credentials-unavailable",
|
|
255
|
+
"session/provider-models-unavailable",
|
|
256
|
+
"session/queue-item-not-found",
|
|
257
|
+
"session/rename",
|
|
258
|
+
"session/resume",
|
|
259
|
+
"session/search",
|
|
260
|
+
"session/steer-unavailable",
|
|
261
|
+
"session/title",
|
|
262
|
+
"session/title-invalid",
|
|
263
|
+
"session/title-llm-request",
|
|
264
|
+
"session/wait",
|
|
265
|
+
"session/workspace-attach-failed",
|
|
266
|
+
"session/writer-held",
|
|
267
|
+
"settings/conflict",
|
|
268
|
+
"settings/describe",
|
|
269
|
+
"settings/document-updated",
|
|
270
|
+
"settings/mutate",
|
|
271
|
+
"settings/rejected",
|
|
272
|
+
"settings/replace",
|
|
273
|
+
"settings/update",
|
|
274
|
+
"skills/change",
|
|
275
|
+
"skills/list",
|
|
276
|
+
"slash/input-begin-command",
|
|
277
|
+
"slash/input-consume-token",
|
|
278
|
+
"slash/input-insert-reference",
|
|
279
|
+
"slash/input-insert-text",
|
|
280
|
+
"slots/changed",
|
|
281
|
+
"source/accepted",
|
|
282
|
+
"source/append",
|
|
283
|
+
"source/append-acknowledged",
|
|
284
|
+
"source/close",
|
|
285
|
+
"source/open",
|
|
286
|
+
"source/rejected",
|
|
287
|
+
"source/replace",
|
|
288
|
+
"source/resnapshot",
|
|
289
|
+
"speech/catalog",
|
|
290
|
+
"speech/configure",
|
|
291
|
+
"speech/follow",
|
|
292
|
+
"speech/invalid-audio",
|
|
293
|
+
"speech/prepare",
|
|
294
|
+
"speech/transcribe",
|
|
295
|
+
"speech/transcription-failed",
|
|
296
|
+
"steering/message",
|
|
297
|
+
"step/end",
|
|
298
|
+
"step/start",
|
|
299
|
+
"subagent/attachment-invalid",
|
|
300
|
+
"subagent/catalog",
|
|
301
|
+
"subagent/catalog-diagnostic",
|
|
302
|
+
"subagent/delivery-unavailable",
|
|
303
|
+
"subagent/descriptor",
|
|
304
|
+
"subagent/end",
|
|
305
|
+
"subagent/invalid-time-zone",
|
|
306
|
+
"subagent/model-selection-policy",
|
|
307
|
+
"subagent/not-found",
|
|
308
|
+
"subagent/not-resumable",
|
|
309
|
+
"subagent/parent-unavailable",
|
|
310
|
+
"subagent/provider-added",
|
|
311
|
+
"subagent/provider-removed",
|
|
312
|
+
"subagent/start",
|
|
313
|
+
"subagent/unauthorized",
|
|
314
|
+
"subagents/prompt",
|
|
315
|
+
"system-prompt/assemble",
|
|
316
|
+
"system-prompt/change",
|
|
317
|
+
"system/message",
|
|
318
|
+
"team/member",
|
|
319
|
+
"team/task",
|
|
320
|
+
"terminal/attach",
|
|
321
|
+
"terminal/close",
|
|
322
|
+
"terminal/control-unavailable",
|
|
323
|
+
"terminal/create",
|
|
324
|
+
"terminal/environment",
|
|
325
|
+
"terminal/limit-reached",
|
|
326
|
+
"terminal/list",
|
|
327
|
+
"terminal/rename",
|
|
328
|
+
"terminal/retain",
|
|
329
|
+
"terminal/shells",
|
|
330
|
+
"terminal/unavailable",
|
|
331
|
+
"terminal/view",
|
|
332
|
+
"theme/change",
|
|
333
|
+
"todo/write",
|
|
334
|
+
"tool-workflow/agent-end",
|
|
335
|
+
"tool-workflow/agent-start",
|
|
336
|
+
"tool-workflow/run-end",
|
|
337
|
+
"tool-workflow/run-start",
|
|
338
|
+
"tool/call",
|
|
339
|
+
"tool/code-dispatch",
|
|
340
|
+
"tool/code-dispatch-start",
|
|
341
|
+
"tool/ptc-dispatch",
|
|
342
|
+
"tool/ptc-dispatch-start",
|
|
343
|
+
"tool/result",
|
|
344
|
+
"tools/call",
|
|
345
|
+
"tools/change",
|
|
346
|
+
"tools/execute",
|
|
347
|
+
"tools/list",
|
|
348
|
+
"tools/post-execute",
|
|
349
|
+
"tools/pre-execute",
|
|
350
|
+
"tools/ptc-dispatch-log",
|
|
351
|
+
"tools/result",
|
|
352
|
+
"tsx/esm",
|
|
353
|
+
"turn/end",
|
|
354
|
+
"turn/start",
|
|
355
|
+
"user-questions/request",
|
|
356
|
+
"user/message",
|
|
357
|
+
"v3/opaque-released-event",
|
|
358
|
+
"web/deepseek-search-llm-request",
|
|
359
|
+
"webserver/index-inject",
|
|
360
|
+
"workflow/agent-end",
|
|
361
|
+
"workflow/agent-start",
|
|
362
|
+
"workflow/end",
|
|
363
|
+
"workflow/log",
|
|
364
|
+
"workflow/phase",
|
|
365
|
+
"workflow/start",
|
|
366
|
+
"working-directory/change",
|
|
367
|
+
"workspace-file/not-directory",
|
|
368
|
+
"workspace-file/not-found",
|
|
369
|
+
"workspace-file/not-regular-file",
|
|
370
|
+
"workspace-file/not-text",
|
|
371
|
+
"workspace-file/outside-workspace",
|
|
372
|
+
"workspace-file/too-large",
|
|
373
|
+
"workspace-file/unknown-workspace",
|
|
374
|
+
"workspace-file/unsupported-address",
|
|
375
|
+
"workspace-file/watch-unsupported",
|
|
376
|
+
"workspace/changes",
|
|
377
|
+
"workspace/create",
|
|
378
|
+
"workspace/delete",
|
|
379
|
+
"workspace/follow",
|
|
380
|
+
"workspace/invalid-path",
|
|
381
|
+
"workspace/move-invalid",
|
|
382
|
+
"workspace/name-conflict",
|
|
383
|
+
"workspace/not-found",
|
|
384
|
+
"workspace/rename",
|
|
385
|
+
"workspace/session-active",
|
|
386
|
+
"workspace/session-activity",
|
|
387
|
+
"workspace/session-stop",
|
|
388
|
+
"x/name"
|
|
389
|
+
],
|
|
390
|
+
"dshVersions": [
|
|
391
|
+
"0.2.1-rc.5"
|
|
392
|
+
]
|
|
393
|
+
}
|