@deepseek-ai/dsh-api-session-controller 0.1.2-alpha.3 → 0.1.2-alpha.5
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.i18n.yaml +2 -2
- package/README.md +2 -0
- package/README.zh.md +2 -0
- package/lib/client.js +67 -14
- package/lib/index.js +47 -27
- package/lib/typert.host.js +112 -72
- package/lib/typert.remote-client.js +31 -31
- package/lib/types/agent.d.ts +3 -5
- package/lib/types/agent.js +5 -1
- package/lib/types/client/contract/session.d.ts +3 -3
- package/lib/types/client/sessions/manager.d.ts +2 -2
- package/lib/types/client/sessions/manager.js +10 -5
- package/lib/types/client/sessions/projection-store.d.ts +4 -3
- package/lib/types/client/sessions/service.d.ts +1 -1
- package/lib/types/client/sessions/service.js +2 -1
- package/lib/types/client/sessions/session.d.ts +3 -3
- package/lib/types/client/sessions/session.js +18 -9
- package/lib/types/commands.js +14 -9
- package/lib/types/history.js +45 -24
- package/lib/types/index.d.ts +3 -5
- package/lib/types/index.js +5 -1
- package/lib/types/list.js +4 -1
- package/lib/types/types.d.ts +22 -3
- package/package.json +57 -64
- package/lib/invariant.js +0 -13
- package/lib/types/invariant.d.ts +0 -9
- package/lib/types/invariant.js +0 -12
package/lib/types/history.js
CHANGED
|
@@ -52,7 +52,7 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
52
52
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
53
53
|
});
|
|
54
54
|
import { Deque } from '@deepseek-ai/dsh-deque';
|
|
55
|
-
import { isAppendSurfaceEvent } from '@deepseek-ai/dsh-session';
|
|
55
|
+
import { isAppendSurfaceEvent, SessionLogOffset, SessionSeq, } from '@deepseek-ai/dsh-session';
|
|
56
56
|
import { isChunkRow, packChunkRuns } from '@deepseek-ai/dsh-session/chunk-rows';
|
|
57
57
|
import { SessionQueryError } from '@deepseek-ai/dsh-session-query';
|
|
58
58
|
import { RemoteError } from '@deepseek-ai/dsh-typert-protocol';
|
|
@@ -86,18 +86,24 @@ export class SessionHistoryController {
|
|
|
86
86
|
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
87
87
|
try {
|
|
88
88
|
validatePageRequest(request);
|
|
89
|
+
const throughSeq = request.throughSeq === -1
|
|
90
|
+
? -1
|
|
91
|
+
: SessionSeq(request.throughSeq);
|
|
92
|
+
const beforeSeq = request.beforeSeq === undefined
|
|
93
|
+
? undefined
|
|
94
|
+
: SessionLogOffset(request.beforeSeq);
|
|
89
95
|
const source = __addDisposableResource(env_1, await this.sourceFor(request.address, signal, false), false);
|
|
90
96
|
signal.throwIfAborted();
|
|
91
97
|
const sourceLog = source.events;
|
|
92
98
|
const sourceCursor = sourceLog.at(-1)?.seq ?? -1;
|
|
93
|
-
if (
|
|
94
|
-
throw new RemoteError('gateway/bad-request', `session page through seq ${String(
|
|
99
|
+
if (throughSeq > sourceCursor) {
|
|
100
|
+
throw new RemoteError('gateway/bad-request', `session page through seq ${String(throughSeq)} is past cursor ${String(sourceCursor)}`, {});
|
|
95
101
|
}
|
|
96
102
|
/* v8 ignore next -- Session and persistence validation guarantee a dense zero-based event prefix. */
|
|
97
|
-
if (
|
|
98
|
-
throw new RemoteError('gateway/internal', `session log does not contain through seq ${String(
|
|
103
|
+
if (throughSeq >= 0 && sourceLog[throughSeq]?.seq !== throughSeq) {
|
|
104
|
+
throw new RemoteError('gateway/internal', `session log does not contain through seq ${String(throughSeq)}`, {});
|
|
99
105
|
}
|
|
100
|
-
const page = paginate(sourceLog,
|
|
106
|
+
const page = paginate(sourceLog, beforeSeq, request.maxMessages ?? DEFAULT_MAX_MESSAGES, throughSeq);
|
|
101
107
|
const records = pageRecords(page.events);
|
|
102
108
|
return {
|
|
103
109
|
records,
|
|
@@ -148,9 +154,9 @@ export class SessionHistoryController {
|
|
|
148
154
|
// Constructor seed events have no session/event notification. Normally
|
|
149
155
|
// only the end-seed suffix is new; if persistence advanced after the
|
|
150
156
|
// opening observation, replay everything beyond that snapshot cursor.
|
|
151
|
-
const suffix = session.
|
|
157
|
+
const suffix = session.snapshotEvents(snapshotCursor === undefined
|
|
152
158
|
? session.firstLiveSeq
|
|
153
|
-
: snapshotCursor + 1);
|
|
159
|
+
: SessionLogOffset(snapshotCursor + 1));
|
|
154
160
|
for (let index = suffix.length - 1; index >= 0; index -= 1) {
|
|
155
161
|
buffered.pushFront(suffix[index]);
|
|
156
162
|
}
|
|
@@ -169,7 +175,7 @@ export class SessionHistoryController {
|
|
|
169
175
|
const page = paginate(events, undefined, request.maxMessages ?? DEFAULT_MAX_MESSAGES);
|
|
170
176
|
yield {
|
|
171
177
|
type: 'snapshot',
|
|
172
|
-
header: source.header,
|
|
178
|
+
header: wireHeader(source.header, source.inheritedEventCount),
|
|
173
179
|
cursor,
|
|
174
180
|
records: pageRecords(page.events),
|
|
175
181
|
hasMore: page.hasMore,
|
|
@@ -187,19 +193,20 @@ export class SessionHistoryController {
|
|
|
187
193
|
throw error;
|
|
188
194
|
}
|
|
189
195
|
}
|
|
190
|
-
let
|
|
196
|
+
let nextOffset = SessionLogOffset(cursor + 1);
|
|
191
197
|
while (!follower.closed && !signal.aborted) {
|
|
192
198
|
const item = buffered.popFront();
|
|
193
199
|
if (item === undefined) {
|
|
194
200
|
await new Promise((resolve) => { wake = resolve; });
|
|
195
201
|
continue;
|
|
196
202
|
}
|
|
197
|
-
|
|
203
|
+
const expectedSeq = SessionSeq(nextOffset);
|
|
204
|
+
if (item.seq < expectedSeq)
|
|
198
205
|
continue;
|
|
199
|
-
if (item.seq !==
|
|
200
|
-
throw new RemoteError('gateway/internal', `session event stream skipped seq ${String(
|
|
206
|
+
if (item.seq !== expectedSeq) {
|
|
207
|
+
throw new RemoteError('gateway/internal', `session event stream skipped seq ${String(expectedSeq)}`, {});
|
|
201
208
|
}
|
|
202
|
-
|
|
209
|
+
nextOffset = SessionLogOffset(nextOffset + 1);
|
|
203
210
|
yield entryFor(item);
|
|
204
211
|
}
|
|
205
212
|
}
|
|
@@ -230,7 +237,7 @@ export class SessionHistoryController {
|
|
|
230
237
|
rejectNotFound(address);
|
|
231
238
|
}
|
|
232
239
|
try {
|
|
233
|
-
validateAddress(address, observation.header, observation.projections);
|
|
240
|
+
validateAddress(address, observation.header, observation.inheritedEventCount, observation.projections);
|
|
234
241
|
}
|
|
235
242
|
catch (error) {
|
|
236
243
|
observation[Symbol.dispose]();
|
|
@@ -254,11 +261,15 @@ function projectionBlock(snapshot) {
|
|
|
254
261
|
};
|
|
255
262
|
}
|
|
256
263
|
function validatePageRequest(request) {
|
|
257
|
-
if (!Number.isSafeInteger(request.throughSeq)
|
|
264
|
+
if (!Number.isSafeInteger(request.throughSeq)
|
|
265
|
+
|| request.throughSeq < -1
|
|
266
|
+
|| Object.is(request.throughSeq, -0)) {
|
|
258
267
|
throw new RemoteError('gateway/bad-request', 'throughSeq must be an integer greater than or equal to -1', {});
|
|
259
268
|
}
|
|
260
269
|
if (request.beforeSeq !== undefined
|
|
261
|
-
&& (!Number.isSafeInteger(request.beforeSeq)
|
|
270
|
+
&& (!Number.isSafeInteger(request.beforeSeq)
|
|
271
|
+
|| request.beforeSeq < 0
|
|
272
|
+
|| Object.is(request.beforeSeq, -0))) {
|
|
262
273
|
throw new RemoteError('gateway/bad-request', 'beforeSeq must be a non-negative safe integer', {});
|
|
263
274
|
}
|
|
264
275
|
if (request.maxMessages !== undefined
|
|
@@ -275,7 +286,7 @@ function validateFollowRequest(request) {
|
|
|
275
286
|
function addressId(address) {
|
|
276
287
|
return address.kind === 'session' ? address.sessionId : address.childSessionId;
|
|
277
288
|
}
|
|
278
|
-
function validateAddress(address, header, projections) {
|
|
289
|
+
function validateAddress(address, header, inheritedEventCount, projections) {
|
|
279
290
|
if (address.kind === 'session') {
|
|
280
291
|
if (header.origin === 'subagent') {
|
|
281
292
|
throw new RemoteError('session/agent-busy', 'subagent Sessions require their durable parent address', {
|
|
@@ -297,7 +308,7 @@ function validateAddress(address, header, projections) {
|
|
|
297
308
|
reason: 'corrupt',
|
|
298
309
|
});
|
|
299
310
|
}
|
|
300
|
-
if (identity === undefined || identity.seq <
|
|
311
|
+
if (identity === undefined || identity.seq < inheritedEventCount) {
|
|
301
312
|
throw new RemoteError('subagent/catalog-diagnostic', 'subagent descriptor is unavailable', {
|
|
302
313
|
parentSessionId: address.parentSessionId,
|
|
303
314
|
childSessionId: address.childSessionId,
|
|
@@ -320,9 +331,9 @@ function rejectNotFound(address) {
|
|
|
320
331
|
});
|
|
321
332
|
}
|
|
322
333
|
function paginate(events, beforeSeq, maxMessages, throughSeq = events.at(-1)?.seq ?? -1) {
|
|
323
|
-
const end = Math.min(throughSeq + 1, beforeSeq ?? throughSeq + 1);
|
|
334
|
+
const end = SessionLogOffset(Math.min(throughSeq + 1, beforeSeq ?? throughSeq + 1));
|
|
324
335
|
let count = 0;
|
|
325
|
-
let cut = 0;
|
|
336
|
+
let cut = SessionLogOffset(0);
|
|
326
337
|
for (let index = end - 1; index >= 0; index--) {
|
|
327
338
|
const event = events[index];
|
|
328
339
|
if (!MESSAGE_TYPES.has(event.type) || !isAppendSurfaceEvent(event))
|
|
@@ -331,16 +342,26 @@ function paginate(events, beforeSeq, maxMessages, throughSeq = events.at(-1)?.se
|
|
|
331
342
|
const sources = event.sourceEventSeqs;
|
|
332
343
|
let groupStart = event.seq;
|
|
333
344
|
if (sources !== undefined) {
|
|
334
|
-
for (const source of sources)
|
|
335
|
-
|
|
345
|
+
for (const source of sources) {
|
|
346
|
+
if (source < groupStart)
|
|
347
|
+
groupStart = source;
|
|
348
|
+
}
|
|
336
349
|
}
|
|
337
350
|
if (count >= maxMessages) {
|
|
338
|
-
cut = groupStart;
|
|
351
|
+
cut = SessionLogOffset(groupStart);
|
|
339
352
|
break;
|
|
340
353
|
}
|
|
341
354
|
}
|
|
342
355
|
return { events: events.slice(cut, end), hasMore: cut > 0 };
|
|
343
356
|
}
|
|
357
|
+
/** Translate logical Session metadata to the unchanged v0 browser wire. */
|
|
358
|
+
function wireHeader(header, inheritedEventCount) {
|
|
359
|
+
const { isSeeded, ...wire } = header;
|
|
360
|
+
return {
|
|
361
|
+
...wire,
|
|
362
|
+
...isSeeded ? { seedLength: inheritedEventCount } : {},
|
|
363
|
+
};
|
|
364
|
+
}
|
|
344
365
|
function entryFor(event) {
|
|
345
366
|
return {
|
|
346
367
|
type: 'event',
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/** Session Remote owner: cold reads, explicit Agent commands, and live control state. */
|
|
2
2
|
import { Context } from '@deepseek-ai/cordis';
|
|
3
3
|
import z from '@deepseek-ai/schemastery';
|
|
4
|
-
import type {
|
|
4
|
+
import type { SessionId } from '@deepseek-ai/dsh-session';
|
|
5
|
+
import type { SessionInspection } from '@deepseek-ai/dsh-session-persistence';
|
|
5
6
|
import { TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
|
|
6
7
|
import { type ApiSessionAgentResult } from './agent.ts';
|
|
7
8
|
import { buildModelCatalog } from './catalog.ts';
|
|
@@ -60,10 +61,7 @@ export declare class SessionController extends TypertRemoteService {
|
|
|
60
61
|
* @param signal - optional caller cancellation for persistence reads.
|
|
61
62
|
* @returns the current attached state or persisted header and event prefix.
|
|
62
63
|
*/
|
|
63
|
-
inspect(sessionId: SessionId, signal?: AbortSignal): Promise<
|
|
64
|
-
meta: SessionHeader;
|
|
65
|
-
events: SessionEvent[];
|
|
66
|
-
}>;
|
|
64
|
+
inspect(sessionId: SessionId, signal?: AbortSignal): Promise<SessionInspection>;
|
|
67
65
|
/**
|
|
68
66
|
* Read all visible Session rows without resuming an Agent.
|
|
69
67
|
* @param _request - reserved empty list request.
|
package/lib/types/index.js
CHANGED
|
@@ -266,7 +266,11 @@ let SessionController = (() => {
|
|
|
266
266
|
inspect(sessionId, signal) {
|
|
267
267
|
const attached = this.ctx.sessions.get(sessionId);
|
|
268
268
|
if (attached !== undefined) {
|
|
269
|
-
return Promise.resolve({
|
|
269
|
+
return Promise.resolve({
|
|
270
|
+
meta: attached.header,
|
|
271
|
+
inheritedEventCount: attached.inheritedEventCount,
|
|
272
|
+
events: attached.snapshotEvents(),
|
|
273
|
+
});
|
|
270
274
|
}
|
|
271
275
|
return inspectApiSession(this.ctx, sessionId, signal);
|
|
272
276
|
}
|
package/lib/types/list.js
CHANGED
|
@@ -52,6 +52,7 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
52
52
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
53
53
|
});
|
|
54
54
|
import { stat } from 'node:fs/promises';
|
|
55
|
+
import { SessionLogOffset } from '@deepseek-ai/dsh-session';
|
|
55
56
|
import { SessionQueryError } from '@deepseek-ai/dsh-session-query';
|
|
56
57
|
import { RemoteError } from '@deepseek-ai/dsh-typert-protocol';
|
|
57
58
|
import { z } from 'zod';
|
|
@@ -362,7 +363,9 @@ export class ApiSessionList {
|
|
|
362
363
|
projectionsFor(header, session) {
|
|
363
364
|
try {
|
|
364
365
|
const block = session === undefined
|
|
365
|
-
?
|
|
366
|
+
? header.isSeeded
|
|
367
|
+
? undefined
|
|
368
|
+
: this.ctx.get('sessionProjectionCache')?.cachedSnapshot(header, SessionLogOffset(0))
|
|
366
369
|
: this.ctx.sessionProjections.cachedSnapshot(session);
|
|
367
370
|
return block !== undefined && Object.keys(block.values).length > 0
|
|
368
371
|
? {
|
package/lib/types/types.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { Branded } from '@deepseek-ai/dsh-brand';
|
|
|
4
4
|
import type { MessageId } from '@deepseek-ai/dsh-llm/brand';
|
|
5
5
|
import type { ContentBlock } from '@deepseek-ai/dsh-llm/types';
|
|
6
6
|
import type { ChunkRow } from '@deepseek-ai/dsh-session/chunk-rows';
|
|
7
|
-
import type {
|
|
7
|
+
import type { SessionId } from '@deepseek-ai/dsh-session/types';
|
|
8
8
|
import type { SessionProjectionMap } from '@deepseek-ai/dsh-session-projection/types';
|
|
9
9
|
import type { JobId } from '@deepseek-ai/dsh-jobs/brand';
|
|
10
10
|
import type { JsonValue } from '@deepseek-ai/dsh-util-values';
|
|
@@ -358,6 +358,25 @@ export interface SessionEventEntry {
|
|
|
358
358
|
readonly type: 'event';
|
|
359
359
|
readonly event: SessionWireEvent;
|
|
360
360
|
}
|
|
361
|
+
/** v0-compatible Session metadata carried on the browser wire. */
|
|
362
|
+
export interface SessionWireHeader {
|
|
363
|
+
readonly version: number;
|
|
364
|
+
readonly id: SessionId;
|
|
365
|
+
readonly createdAt: number;
|
|
366
|
+
readonly cwd?: string;
|
|
367
|
+
readonly parentSession?: SessionId;
|
|
368
|
+
/** Exact inherited prefix length; absent for an unseeded Session. */
|
|
369
|
+
readonly seedLength?: number;
|
|
370
|
+
readonly origin?: 'subagent';
|
|
371
|
+
readonly delegationDepth?: number;
|
|
372
|
+
readonly agentPreset?: string;
|
|
373
|
+
}
|
|
374
|
+
/** Browser wire form of one Session surface operation. */
|
|
375
|
+
export type SessionWireSurfaceOp = 'append' | {
|
|
376
|
+
readonly op: 'replace';
|
|
377
|
+
readonly start: number;
|
|
378
|
+
readonly end: number;
|
|
379
|
+
};
|
|
361
380
|
/** Event-shaped wire representation of one packed chunk row. */
|
|
362
381
|
export type ChunkRowEvent = {
|
|
363
382
|
[Kind in ChunkRow['type']]: {
|
|
@@ -384,7 +403,7 @@ export interface SessionWireEvent {
|
|
|
384
403
|
readonly data: JsonValue;
|
|
385
404
|
readonly ignorable?: true;
|
|
386
405
|
readonly sourceEventSeqs?: number[];
|
|
387
|
-
readonly surfaceOp?:
|
|
406
|
+
readonly surfaceOp?: SessionWireSurfaceOp;
|
|
388
407
|
}
|
|
389
408
|
/** One message-aligned backwards-history request. */
|
|
390
409
|
export interface SessionPageRequest {
|
|
@@ -407,7 +426,7 @@ export interface SessionPage {
|
|
|
407
426
|
/** Complete opening window followed by ordered events appended after its cursor. */
|
|
408
427
|
export type SessionFollowFrame = {
|
|
409
428
|
readonly type: 'snapshot';
|
|
410
|
-
readonly header:
|
|
429
|
+
readonly header: SessionWireHeader;
|
|
411
430
|
readonly cursor: number;
|
|
412
431
|
readonly records: readonly SessionHistoryRecord[];
|
|
413
432
|
readonly hasMore: boolean;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-api-session-controller",
|
|
3
3
|
"description": "Session Remote commands, cold reads, and live control transport",
|
|
4
|
-
"version": "0.1.2-alpha.
|
|
4
|
+
"version": "0.1.2-alpha.5",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -18,10 +18,6 @@
|
|
|
18
18
|
"types": "./lib/types/index.d.ts",
|
|
19
19
|
"default": "./lib/index.js"
|
|
20
20
|
},
|
|
21
|
-
"./invariant": {
|
|
22
|
-
"types": "./lib/types/invariant.d.ts",
|
|
23
|
-
"default": "./lib/invariant.js"
|
|
24
|
-
},
|
|
25
21
|
"./types": {
|
|
26
22
|
"types": "./lib/types/types.d.ts",
|
|
27
23
|
"default": "./lib/types/types.js"
|
|
@@ -58,7 +54,6 @@
|
|
|
58
54
|
},
|
|
59
55
|
"files": [
|
|
60
56
|
"lib/index.js",
|
|
61
|
-
"lib/invariant.js",
|
|
62
57
|
"lib/client.js",
|
|
63
58
|
"lib/types/**/*.js",
|
|
64
59
|
"lib/types/**/*.d.ts",
|
|
@@ -70,37 +65,36 @@
|
|
|
70
65
|
"license": "MIT",
|
|
71
66
|
"dependencies": {
|
|
72
67
|
"zod": "^4.4.3",
|
|
73
|
-
"@deepseek-ai/dsh-brand": "^0.1.2-alpha.
|
|
74
|
-
"@deepseek-ai/dsh-deque": "^0.1.2-alpha.
|
|
68
|
+
"@deepseek-ai/dsh-brand": "^0.1.2-alpha.5",
|
|
69
|
+
"@deepseek-ai/dsh-deque": "^0.1.2-alpha.5",
|
|
75
70
|
"@deepseek-ai/schemastery": "^3.18.2"
|
|
76
71
|
},
|
|
77
72
|
"peerDependencies": {
|
|
78
73
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
79
|
-
"@deepseek-ai/dsh-agent": "^0.1.2-alpha.
|
|
80
|
-
"@deepseek-ai/dsh-agent-default-model": "^0.1.2-alpha.
|
|
81
|
-
"@deepseek-ai/dsh-agent-presets": "^0.1.2-alpha.
|
|
82
|
-
"@deepseek-ai/dsh-api-gateway": "^0.1.2-alpha.
|
|
83
|
-
"@deepseek-ai/dsh-attachment": "^0.1.2-alpha.
|
|
84
|
-
"@deepseek-ai/dsh-client-connection": "^0.1.2-alpha.
|
|
85
|
-
"@deepseek-ai/dsh-file-reference": "^0.1.2-alpha.
|
|
86
|
-
"@deepseek-ai/dsh-
|
|
87
|
-
"@deepseek-ai/dsh-
|
|
88
|
-
"@deepseek-ai/dsh-
|
|
89
|
-
"@deepseek-ai/dsh-
|
|
90
|
-
"@deepseek-ai/dsh-
|
|
91
|
-
"@deepseek-ai/dsh-session
|
|
92
|
-
"@deepseek-ai/dsh-session-
|
|
93
|
-
"@deepseek-ai/dsh-session-
|
|
94
|
-
"@deepseek-ai/dsh-skill": "^0.1.2-alpha.
|
|
95
|
-
"@deepseek-ai/dsh-
|
|
96
|
-
"@deepseek-ai/dsh-typert-protocol": "^0.1.2-alpha.
|
|
97
|
-
"@deepseek-ai/dsh-
|
|
98
|
-
"@deepseek-ai/dsh-
|
|
99
|
-
"@deepseek-ai/dsh-
|
|
100
|
-
"@deepseek-ai/dsh-
|
|
101
|
-
"@deepseek-ai/dsh-workspace": "^0.1.2-alpha.
|
|
102
|
-
"@deepseek-ai/dsh-
|
|
103
|
-
"@deepseek-ai/dsh-session-projection": "^0.1.2-alpha.3"
|
|
74
|
+
"@deepseek-ai/dsh-agent": "^0.1.2-alpha.5",
|
|
75
|
+
"@deepseek-ai/dsh-agent-default-model": "^0.1.2-alpha.5",
|
|
76
|
+
"@deepseek-ai/dsh-agent-presets": "^0.1.2-alpha.5",
|
|
77
|
+
"@deepseek-ai/dsh-api-gateway": "^0.1.2-alpha.5",
|
|
78
|
+
"@deepseek-ai/dsh-attachment": "^0.1.2-alpha.5",
|
|
79
|
+
"@deepseek-ai/dsh-client-connection": "^0.1.2-alpha.5",
|
|
80
|
+
"@deepseek-ai/dsh-file-reference": "^0.1.2-alpha.5",
|
|
81
|
+
"@deepseek-ai/dsh-jobs": "^0.1.2-alpha.5",
|
|
82
|
+
"@deepseek-ai/dsh-native-command": "^0.1.2-alpha.5",
|
|
83
|
+
"@deepseek-ai/dsh-scope": "^0.1.2-alpha.5",
|
|
84
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.2-alpha.5",
|
|
85
|
+
"@deepseek-ai/dsh-session-projection-cache": "^0.1.2-alpha.5",
|
|
86
|
+
"@deepseek-ai/dsh-session": "^0.1.2-alpha.5",
|
|
87
|
+
"@deepseek-ai/dsh-session-query": "^0.1.2-alpha.5",
|
|
88
|
+
"@deepseek-ai/dsh-session-title": "^0.1.2-alpha.5",
|
|
89
|
+
"@deepseek-ai/dsh-skill": "^0.1.2-alpha.5",
|
|
90
|
+
"@deepseek-ai/dsh-session-persistence": "^0.1.2-alpha.5",
|
|
91
|
+
"@deepseek-ai/dsh-typert-protocol": "^0.1.2-alpha.5",
|
|
92
|
+
"@deepseek-ai/dsh-llm": "^0.1.2-alpha.5",
|
|
93
|
+
"@deepseek-ai/dsh-subagent": "^0.1.2-alpha.5",
|
|
94
|
+
"@deepseek-ai/dsh-util-time": "^0.1.2-alpha.5",
|
|
95
|
+
"@deepseek-ai/dsh-typert-registry": "^0.1.2-alpha.5",
|
|
96
|
+
"@deepseek-ai/dsh-workspace": "^0.1.2-alpha.5",
|
|
97
|
+
"@deepseek-ai/dsh-util-workspace-path": "^0.1.2-alpha.5"
|
|
104
98
|
},
|
|
105
99
|
"peerDependenciesMeta": {
|
|
106
100
|
"@deepseek-ai/dsh-jobs": {
|
|
@@ -115,37 +109,36 @@
|
|
|
115
109
|
},
|
|
116
110
|
"devDependencies": {
|
|
117
111
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
118
|
-
"@deepseek-ai/dsh-agent": "^0.1.2-alpha.
|
|
119
|
-
"@deepseek-ai/dsh-agent-default-model": "^0.1.2-alpha.
|
|
120
|
-
"@deepseek-ai/dsh-agent-presets": "^0.1.2-alpha.
|
|
121
|
-
"@deepseek-ai/dsh-api-gateway": "^0.1.2-alpha.
|
|
122
|
-
"@deepseek-ai/dsh-
|
|
123
|
-
"@deepseek-ai/dsh-client-
|
|
124
|
-
"@deepseek-ai/dsh-
|
|
125
|
-
"@deepseek-ai/dsh-
|
|
126
|
-
"@deepseek-ai/dsh-
|
|
127
|
-
"@deepseek-ai/dsh-
|
|
128
|
-
"@deepseek-ai/dsh-
|
|
129
|
-
"@deepseek-ai/dsh-scope": "^0.1.2-alpha.
|
|
130
|
-
"@deepseek-ai/dsh-session": "^0.1.2-alpha.
|
|
131
|
-
"@deepseek-ai/dsh-session-
|
|
132
|
-
"@deepseek-ai/dsh-session-projection
|
|
133
|
-
"@deepseek-ai/dsh-session-
|
|
134
|
-
"@deepseek-ai/dsh-
|
|
135
|
-
"@deepseek-ai/dsh-
|
|
136
|
-
"@deepseek-ai/dsh-
|
|
137
|
-
"@deepseek-ai/dsh-storage": "^0.1.2-alpha.
|
|
138
|
-
"@deepseek-ai/dsh-
|
|
139
|
-
"@deepseek-ai/dsh-
|
|
140
|
-
"@deepseek-ai/dsh-
|
|
141
|
-
"@deepseek-ai/dsh-
|
|
142
|
-
"@deepseek-ai/dsh-
|
|
143
|
-
"@deepseek-ai/dsh-util-time": "^0.1.2-alpha.
|
|
144
|
-
"@deepseek-ai/dsh-
|
|
145
|
-
"@deepseek-ai/dsh-
|
|
146
|
-
"@deepseek-ai/dsh-
|
|
147
|
-
"@deepseek-ai/dsh-
|
|
148
|
-
"@deepseek-ai/dsh-util-crypto": "^0.1.2-alpha.3"
|
|
112
|
+
"@deepseek-ai/dsh-agent": "^0.1.2-alpha.5",
|
|
113
|
+
"@deepseek-ai/dsh-agent-default-model": "^0.1.2-alpha.5",
|
|
114
|
+
"@deepseek-ai/dsh-agent-presets": "^0.1.2-alpha.5",
|
|
115
|
+
"@deepseek-ai/dsh-api-gateway": "^0.1.2-alpha.5",
|
|
116
|
+
"@deepseek-ai/dsh-client-connection": "^0.1.2-alpha.5",
|
|
117
|
+
"@deepseek-ai/dsh-client-store": "^0.1.2-alpha.5",
|
|
118
|
+
"@deepseek-ai/dsh-file-reference": "^0.1.2-alpha.5",
|
|
119
|
+
"@deepseek-ai/dsh-jobs": "^0.1.2-alpha.5",
|
|
120
|
+
"@deepseek-ai/dsh-llm": "^0.1.2-alpha.5",
|
|
121
|
+
"@deepseek-ai/dsh-native-command": "^0.1.2-alpha.5",
|
|
122
|
+
"@deepseek-ai/dsh-permission-presets": "^0.1.2-alpha.5",
|
|
123
|
+
"@deepseek-ai/dsh-scope": "^0.1.2-alpha.5",
|
|
124
|
+
"@deepseek-ai/dsh-session": "^0.1.2-alpha.5",
|
|
125
|
+
"@deepseek-ai/dsh-session-persistence": "^0.1.2-alpha.5",
|
|
126
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.2-alpha.5",
|
|
127
|
+
"@deepseek-ai/dsh-session-query": "^0.1.2-alpha.5",
|
|
128
|
+
"@deepseek-ai/dsh-skill": "^0.1.2-alpha.5",
|
|
129
|
+
"@deepseek-ai/dsh-storage": "^0.1.2-alpha.5",
|
|
130
|
+
"@deepseek-ai/dsh-attachment": "^0.1.2-alpha.5",
|
|
131
|
+
"@deepseek-ai/dsh-storage-json": "^0.1.2-alpha.5",
|
|
132
|
+
"@deepseek-ai/dsh-subagent": "^0.1.2-alpha.5",
|
|
133
|
+
"@deepseek-ai/dsh-typert-registry": "^0.1.2-alpha.5",
|
|
134
|
+
"@deepseek-ai/dsh-session-projection-cache": "^0.1.2-alpha.5",
|
|
135
|
+
"@deepseek-ai/dsh-util-crypto": "^0.1.2-alpha.5",
|
|
136
|
+
"@deepseek-ai/dsh-storage-domain": "^0.1.2-alpha.5",
|
|
137
|
+
"@deepseek-ai/dsh-util-time": "^0.1.2-alpha.5",
|
|
138
|
+
"@deepseek-ai/dsh-util-workspace-path": "^0.1.2-alpha.5",
|
|
139
|
+
"@deepseek-ai/dsh-workspace": "^0.1.2-alpha.5",
|
|
140
|
+
"@deepseek-ai/dsh-session-title": "^0.1.2-alpha.5",
|
|
141
|
+
"@deepseek-ai/dsh-typert-protocol": "^0.1.2-alpha.5"
|
|
149
142
|
},
|
|
150
143
|
"scripts": {
|
|
151
144
|
"bundle": "tsdown",
|
package/lib/invariant.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
//#region lib/types/invariant.js
|
|
2
|
-
/** Package-owned invariant companion. @module @deepseek-ai/dsh-api-session-controller/invariant */
|
|
3
|
-
const PACKAGE_NAME = "@deepseek-ai/dsh-api-session-controller";
|
|
4
|
-
/** Cordis companion plugin name. */
|
|
5
|
-
const name = "api-session-controller-invariant";
|
|
6
|
-
/** Service required before the companion can reserve package ownership. */
|
|
7
|
-
const inject = ["invariants"];
|
|
8
|
-
/** No runtime invariant: every page and frame is checked against the addressed durable Session. */
|
|
9
|
-
const install = () => {};
|
|
10
|
-
/** Register this package's invariant companion. */
|
|
11
|
-
const apply = (ctx) => Promise.resolve(ctx.invariants.register(PACKAGE_NAME, install));
|
|
12
|
-
//#endregion
|
|
13
|
-
export { apply, inject, name };
|
package/lib/types/invariant.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/** Package-owned invariant companion. @module @deepseek-ai/dsh-api-session-controller/invariant */
|
|
2
|
-
import type { Context } from '@deepseek-ai/cordis';
|
|
3
|
-
/** Cordis companion plugin name. */
|
|
4
|
-
export declare const name = "api-session-controller-invariant";
|
|
5
|
-
/** Service required before the companion can reserve package ownership. */
|
|
6
|
-
export declare const inject: string[];
|
|
7
|
-
/** Register this package's invariant companion. */
|
|
8
|
-
export declare const apply: (ctx: Context) => Promise<() => void>;
|
|
9
|
-
//# sourceMappingURL=invariant.d.ts.map
|
package/lib/types/invariant.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/** Package-owned invariant companion. @module @deepseek-ai/dsh-api-session-controller/invariant */
|
|
2
|
-
const PACKAGE_NAME = '@deepseek-ai/dsh-api-session-controller';
|
|
3
|
-
/** Cordis companion plugin name. */
|
|
4
|
-
export const name = 'api-session-controller-invariant';
|
|
5
|
-
/** Service required before the companion can reserve package ownership. */
|
|
6
|
-
export const inject = ['invariants'];
|
|
7
|
-
/** No runtime invariant: every page and frame is checked against the addressed durable Session. */
|
|
8
|
-
const install = () => { };
|
|
9
|
-
/** Register this package's invariant companion. */
|
|
10
|
-
export const apply = (ctx) => Promise.resolve(ctx.invariants.register(PACKAGE_NAME, install));
|
|
11
|
-
/* jscpd:ignore-end */
|
|
12
|
-
//# sourceMappingURL=invariant.js.map
|