@khorsheed/dsh-local-agent-dsh 0.2.0-rc.3 → 0.2.1
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/CHANGELOG.md +13 -1
- package/README.en.md +23 -139
- package/README.i18n.yaml +2 -2
- package/README.md +23 -139
- package/lib/client.js +139 -97
- package/lib/dsh-cli-provider-DYRuRpVz.js +1920 -0
- package/lib/dsh-cli-provider.js +1 -1
- package/lib/index.js +5 -49
- package/lib/tool.js +40 -0
- package/lib/types/client/SettingsCard.js +7 -3
- package/lib/types/client/icons.d.ts +1 -1
- package/lib/types/client/index.js +2 -2
- package/lib/types/client/locales.d.ts +0 -10
- package/lib/types/client/locales.js +0 -10
- package/lib/types/dsh-cli-provider.js +46 -24
- package/lib/types/index.js +10 -38
- package/lib/types/live-driver.js +47 -41
- package/lib/types/session-mirror.d.ts +55 -0
- package/lib/types/session-mirror.js +155 -1
- package/lib/types/tool.d.ts +52 -0
- package/lib/types/tool.js +34 -0
- package/package.json +9 -4
|
@@ -29,6 +29,19 @@
|
|
|
29
29
|
* passes never duplicate an identical snapshot and the child's `todos`
|
|
30
30
|
* projection (and the official TodoPanel in non-takeover views) reads the
|
|
31
31
|
* member's task list for free.
|
|
32
|
+
*
|
|
33
|
+
* Interrupted-tail closure: a sub-dsh that dies mid-step (the exec kill
|
|
34
|
+
* ladder, a live-runtime crash) leaves its log's step — and any advertised
|
|
35
|
+
* tool calls — OPEN, and the verbatim copy carries that open tail into the
|
|
36
|
+
* child session. The released-log reader (harness
|
|
37
|
+
* session-format-v3-to-v4/relationships.ts) rejects a `turn/end` over an open
|
|
38
|
+
* step on every cold read, so the provider's settle flow calls
|
|
39
|
+
* {@link closeMirroredOpenStep} after the settle mirror pass and before its
|
|
40
|
+
* own `turn/end`: each advertised-but-unresolved call receives a synthesized
|
|
41
|
+
* interrupted `tool/result` (the family's shared placeholder for a started
|
|
42
|
+
* call, the validator's exact TOOL_NOT_STARTED repair for one that never
|
|
43
|
+
* started) and the copied step receives its `step/end`. Mid-round the open
|
|
44
|
+
* pair still crosses as-is — the sub-dsh may yet write its end.
|
|
32
45
|
* @module @khorsheed/dsh-local-agent-dsh/session-mirror
|
|
33
46
|
*/
|
|
34
47
|
import type { DshSessionLog } from './session-log.ts';
|
|
@@ -98,6 +111,48 @@ export interface DshMirrorDelta {
|
|
|
98
111
|
}
|
|
99
112
|
/** How much of the live event stream crosses into the child session. */
|
|
100
113
|
export type DshLiveMirrorGranularity = 'event' | 'token';
|
|
114
|
+
/**
|
|
115
|
+
* The placeholder text of the synthesized result for a tool call the sub-dsh
|
|
116
|
+
* started but never resolved (its process died between `tool/call` and
|
|
117
|
+
* `tool/result`). Shared verbatim with the kimi family's fold.
|
|
118
|
+
*/
|
|
119
|
+
export declare const DSH_INTERRUPTED_TOOL_RESULT = "\uFF08\u5DE5\u5177\u8C03\u7528\u88AB\u4E2D\u65AD\uFF0C\u672A\u80FD\u8BB0\u5F55\u8FD4\u56DE\u7ED3\u679C\uFF09";
|
|
120
|
+
/** What {@link closeMirroredOpenStep} synthesized, when it closed anything. */
|
|
121
|
+
export interface DshMirrorTailClosure {
|
|
122
|
+
/** The copied open step this closure ended. */
|
|
123
|
+
readonly step: {
|
|
124
|
+
turn: number;
|
|
125
|
+
step: number;
|
|
126
|
+
};
|
|
127
|
+
/** The advertised calls that received a synthesized interrupted result, in advertisement order. */
|
|
128
|
+
readonly repairedCalls: readonly string[];
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* The child session's currently-open copied step: the (turn, step) of a
|
|
132
|
+
* `step/start` whose `step/end` has not crossed, inside a turn the provider
|
|
133
|
+
* has not closed. Undefined when nothing is open. The live driver's
|
|
134
|
+
* interrupted-stream fold consults it: the fold's assistant/message may land
|
|
135
|
+
* only while its step is still open (a graceful sub-dsh unwind writes its own
|
|
136
|
+
* message and step/end, and the fold must not append at the closed step).
|
|
137
|
+
*/
|
|
138
|
+
export declare function mirroredOpenStep(childSession: Session): {
|
|
139
|
+
turn: number;
|
|
140
|
+
step: number;
|
|
141
|
+
} | undefined;
|
|
142
|
+
/**
|
|
143
|
+
* Close the copied open tail of the child session's current turn at settle,
|
|
144
|
+
* before the provider's `turn/end`: the released-log reader rejects a
|
|
145
|
+
* `turn/end` over an open step ('turn/end does not match the open turn with
|
|
146
|
+
* no open step') and a step/end leaving an advertised call unresolved, so an
|
|
147
|
+
* interrupted sub-dsh's open step is ended here — each advertised-but-
|
|
148
|
+
* unresolved tool call first receiving its synthesized interrupted result
|
|
149
|
+
* (the family's placeholder for a started call; the validator's exact
|
|
150
|
+
* TOOL_NOT_STARTED repair for one that never started). Mid-round transports
|
|
151
|
+
* never call this: the sub-dsh may yet write its own end, and a synthesized
|
|
152
|
+
* step/end would collide with it on a later pass. Returns what it
|
|
153
|
+
* synthesized, or undefined when the copied tail was already balanced.
|
|
154
|
+
*/
|
|
155
|
+
export declare function closeMirroredOpenStep(childSession: Session): DshMirrorTailClosure | undefined;
|
|
101
156
|
/**
|
|
102
157
|
* Mirror ONE live-pushed sub-dsh session event (the serve mode's
|
|
103
158
|
* `session/event` wire notification) into the child session. This is the
|
|
@@ -29,6 +29,19 @@
|
|
|
29
29
|
* passes never duplicate an identical snapshot and the child's `todos`
|
|
30
30
|
* projection (and the official TodoPanel in non-takeover views) reads the
|
|
31
31
|
* member's task list for free.
|
|
32
|
+
*
|
|
33
|
+
* Interrupted-tail closure: a sub-dsh that dies mid-step (the exec kill
|
|
34
|
+
* ladder, a live-runtime crash) leaves its log's step — and any advertised
|
|
35
|
+
* tool calls — OPEN, and the verbatim copy carries that open tail into the
|
|
36
|
+
* child session. The released-log reader (harness
|
|
37
|
+
* session-format-v3-to-v4/relationships.ts) rejects a `turn/end` over an open
|
|
38
|
+
* step on every cold read, so the provider's settle flow calls
|
|
39
|
+
* {@link closeMirroredOpenStep} after the settle mirror pass and before its
|
|
40
|
+
* own `turn/end`: each advertised-but-unresolved call receives a synthesized
|
|
41
|
+
* interrupted `tool/result` (the family's shared placeholder for a started
|
|
42
|
+
* call, the validator's exact TOOL_NOT_STARTED repair for one that never
|
|
43
|
+
* started) and the copied step receives its `step/end`. Mid-round the open
|
|
44
|
+
* pair still crosses as-is — the sub-dsh may yet write its end.
|
|
32
45
|
* @module @khorsheed/dsh-local-agent-dsh/session-mirror
|
|
33
46
|
*/
|
|
34
47
|
import { readFile, readdir } from 'node:fs/promises';
|
|
@@ -247,7 +260,9 @@ function appendMirroredToolEvent(childSession, event) {
|
|
|
247
260
|
* index registers the same step the sub-dsh wrote. Shared by the file
|
|
248
261
|
* mirror's span loop and the live driver's per-event mirror. An interrupted
|
|
249
262
|
* step crosses as an OPEN pair (start without end): the location resolves to
|
|
250
|
-
* the step either way, and no boundary is
|
|
263
|
+
* the step either way, and mid-round no boundary is synthesized — the sub-dsh
|
|
264
|
+
* may yet write its end. At settle the provider closes the copied tail with
|
|
265
|
+
* {@link closeMirroredOpenStep} before its own `turn/end`.
|
|
251
266
|
*/
|
|
252
267
|
function appendMirroredStepBoundary(childSession, event) {
|
|
253
268
|
if (event.type === 'step/start') {
|
|
@@ -274,6 +289,145 @@ function appendMirroredMessageEvent(childSession, event) {
|
|
|
274
289
|
}
|
|
275
290
|
return mirroredEventText(event);
|
|
276
291
|
}
|
|
292
|
+
/**
|
|
293
|
+
* The placeholder text of the synthesized result for a tool call the sub-dsh
|
|
294
|
+
* started but never resolved (its process died between `tool/call` and
|
|
295
|
+
* `tool/result`). Shared verbatim with the kimi family's fold.
|
|
296
|
+
*/
|
|
297
|
+
export const DSH_INTERRUPTED_TOOL_RESULT = '(工具调用被中断,未能记录返回结果)';
|
|
298
|
+
/**
|
|
299
|
+
* The released-log reader's exact repair text for a call that was advertised
|
|
300
|
+
* but never recorded as started: relationships.ts's notStartedRepair admits
|
|
301
|
+
* only that shape (the `interrupted-tool-result-<callId>-<n>` id, the
|
|
302
|
+
* ToolNotStartedError/TOOL_NOT_STARTED error, no sourceEventSeqs, and this
|
|
303
|
+
* single text block) — no other wording resolves the call.
|
|
304
|
+
*/
|
|
305
|
+
const TOOL_NOT_STARTED_REPAIR_TEXT = 'The tool call was interrupted before the Harness recorded it as started. Retry it if it is still needed.';
|
|
306
|
+
/**
|
|
307
|
+
* The child session's currently-open copied step: the (turn, step) of a
|
|
308
|
+
* `step/start` whose `step/end` has not crossed, inside a turn the provider
|
|
309
|
+
* has not closed. Undefined when nothing is open. The live driver's
|
|
310
|
+
* interrupted-stream fold consults it: the fold's assistant/message may land
|
|
311
|
+
* only while its step is still open (a graceful sub-dsh unwind writes its own
|
|
312
|
+
* message and step/end, and the fold must not append at the closed step).
|
|
313
|
+
*/
|
|
314
|
+
export function mirroredOpenStep(childSession) {
|
|
315
|
+
const events = childSession.snapshotEvents();
|
|
316
|
+
// Backward: the latest boundary event says the state — a step/start opens,
|
|
317
|
+
// a step/end or any turn boundary closes the question.
|
|
318
|
+
for (let index = events.length - 1; index >= 0; index -= 1) {
|
|
319
|
+
const type = events[index]?.type;
|
|
320
|
+
if (type === 'step/start')
|
|
321
|
+
return events[index]?.data;
|
|
322
|
+
if (type === 'step/end' || type === 'turn/start' || type === 'turn/end')
|
|
323
|
+
return undefined;
|
|
324
|
+
}
|
|
325
|
+
return undefined;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Close the copied open tail of the child session's current turn at settle,
|
|
329
|
+
* before the provider's `turn/end`: the released-log reader rejects a
|
|
330
|
+
* `turn/end` over an open step ('turn/end does not match the open turn with
|
|
331
|
+
* no open step') and a step/end leaving an advertised call unresolved, so an
|
|
332
|
+
* interrupted sub-dsh's open step is ended here — each advertised-but-
|
|
333
|
+
* unresolved tool call first receiving its synthesized interrupted result
|
|
334
|
+
* (the family's placeholder for a started call; the validator's exact
|
|
335
|
+
* TOOL_NOT_STARTED repair for one that never started). Mid-round transports
|
|
336
|
+
* never call this: the sub-dsh may yet write its own end, and a synthesized
|
|
337
|
+
* step/end would collide with it on a later pass. Returns what it
|
|
338
|
+
* synthesized, or undefined when the copied tail was already balanced.
|
|
339
|
+
*/
|
|
340
|
+
export function closeMirroredOpenStep(childSession) {
|
|
341
|
+
const events = childSession.snapshotEvents();
|
|
342
|
+
// Only the current (last) turn can hold the copied open tail: an earlier
|
|
343
|
+
// turn closed with the provider's turn/end, which no valid prefix crossed
|
|
344
|
+
// with open state.
|
|
345
|
+
let turnStart = -1;
|
|
346
|
+
for (let index = events.length - 1; index >= 0; index -= 1) {
|
|
347
|
+
const type = events[index]?.type;
|
|
348
|
+
if (type === 'turn/end')
|
|
349
|
+
return undefined;
|
|
350
|
+
if (type === 'turn/start') {
|
|
351
|
+
turnStart = index;
|
|
352
|
+
break;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
if (turnStart < 0)
|
|
356
|
+
return undefined;
|
|
357
|
+
let openStep;
|
|
358
|
+
// The turn's tool-call ledger: an assistant/message's tool-call blocks
|
|
359
|
+
// advertise, a tool/call starts, a tool/result resolves — its message names
|
|
360
|
+
// the call at the top level (the V4 tool-role shape) or in its single
|
|
361
|
+
// content block (the pre-V4 user-role shape); read both, a mirrored log may
|
|
362
|
+
// predate the upgrade.
|
|
363
|
+
const advertised = new Set();
|
|
364
|
+
const started = new Map();
|
|
365
|
+
const resolved = new Set();
|
|
366
|
+
for (const event of events.slice(turnStart + 1)) {
|
|
367
|
+
if (event.type === 'step/start') {
|
|
368
|
+
openStep = event.data;
|
|
369
|
+
}
|
|
370
|
+
else if (event.type === 'step/end') {
|
|
371
|
+
openStep = undefined;
|
|
372
|
+
}
|
|
373
|
+
else if (event.type === 'assistant/message') {
|
|
374
|
+
const content = event.data.message?.content ?? [];
|
|
375
|
+
for (const block of content) {
|
|
376
|
+
if (block?.type === 'tool-call' && typeof block.id === 'string')
|
|
377
|
+
advertised.add(block.id);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
else if (event.type === 'tool/call') {
|
|
381
|
+
const callId = event.data.callId;
|
|
382
|
+
if (typeof callId === 'string')
|
|
383
|
+
started.set(callId, event.seq);
|
|
384
|
+
}
|
|
385
|
+
else if (event.type === 'tool/result') {
|
|
386
|
+
const message = event.data.message;
|
|
387
|
+
const id = message?.toolCallId ?? message?.content?.[0]?.toolCallId;
|
|
388
|
+
if (typeof id === 'string')
|
|
389
|
+
resolved.add(id);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
if (openStep === undefined)
|
|
393
|
+
return undefined;
|
|
394
|
+
const step = openStep;
|
|
395
|
+
const repaired = [];
|
|
396
|
+
// The seq the next appended event occupies (seq == log length), so the
|
|
397
|
+
// synthesized ids carry the harness's repair-id convention.
|
|
398
|
+
let nextSeq = events.length;
|
|
399
|
+
for (const callId of advertised) {
|
|
400
|
+
if (resolved.has(callId))
|
|
401
|
+
continue;
|
|
402
|
+
const callSeq = started.get(callId);
|
|
403
|
+
const message = {
|
|
404
|
+
id: `interrupted-tool-result-${callId}-${nextSeq}`,
|
|
405
|
+
role: 'tool',
|
|
406
|
+
toolCallId: callId,
|
|
407
|
+
isError: true,
|
|
408
|
+
source: { kind: 'tool', callId },
|
|
409
|
+
content: [{ type: 'text', text: callSeq === undefined ? TOOL_NOT_STARTED_REPAIR_TEXT : DSH_INTERRUPTED_TOOL_RESULT }],
|
|
410
|
+
};
|
|
411
|
+
nextSeq += 1;
|
|
412
|
+
childSession.append('tool/result', {
|
|
413
|
+
turn: step.turn,
|
|
414
|
+
step: step.step,
|
|
415
|
+
message,
|
|
416
|
+
error: callSeq === undefined
|
|
417
|
+
? { name: 'ToolNotStartedError', code: 'TOOL_NOT_STARTED' }
|
|
418
|
+
: { name: 'ToolOutcomeUnknownError', code: 'TOOL_OUTCOME_UNKNOWN' },
|
|
419
|
+
}, {
|
|
420
|
+
surfaceOp: 'append',
|
|
421
|
+
// The not-started repair must carry NO sourceEventSeqs (the reader
|
|
422
|
+
// admits exactly that shape); the started repair pairs with the copied
|
|
423
|
+
// call event, exactly as a real mirrored result does.
|
|
424
|
+
...callSeq === undefined ? {} : { sourceEventSeqs: [callSeq] },
|
|
425
|
+
});
|
|
426
|
+
repaired.push(callId);
|
|
427
|
+
}
|
|
428
|
+
childSession.append('step/end', { turn: step.turn, step: step.step });
|
|
429
|
+
return { step, repairedCalls: repaired };
|
|
430
|
+
}
|
|
277
431
|
/**
|
|
278
432
|
* Mirror ONE live-pushed sub-dsh session event (the serve mode's
|
|
279
433
|
* `session/event` wire notification) into the child session. This is the
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The session-granted `subagent_dsh` delegation tool — this package's
|
|
3
|
+
* `./tool` composition entry (the worktrees 0.3.0 / room 0.2.0 fold pattern)
|
|
4
|
+
* for agent-preset compositions. The row provides NO service (the
|
|
5
|
+
* preset-mount isolate-realm rule forbids service rows); it registers the
|
|
6
|
+
* model-facing tool into the host tools registry through the family factory
|
|
7
|
+
* (`@khorsheed/dsh-local-agent/tool-factory`), delegating to the `dsh-cli`
|
|
8
|
+
* provider this package's main row registers at the profile root — the
|
|
9
|
+
* official tool-row shape (the shipped `tool-bash` rows work the same way).
|
|
10
|
+
* Granting is therefore per-session: a preset names the row
|
|
11
|
+
* (`- id: tool-subagent-dsh / name: '@khorsheed/dsh-local-agent-dsh/tool'`),
|
|
12
|
+
* its sessions get the tool; every other preset's sessions do not.
|
|
13
|
+
*
|
|
14
|
+
* This row replaced the dsh package's own dynamic mount: the tool used to
|
|
15
|
+
* mount at the profile root while the card's 启用 switch was on, which granted
|
|
16
|
+
* every session. With the switch gone (the harness is always registered), the
|
|
17
|
+
* tool follows the other providers — a preset names the row to grant it.
|
|
18
|
+
*
|
|
19
|
+
* @module @khorsheed/dsh-local-agent-dsh/tool
|
|
20
|
+
*/
|
|
21
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
22
|
+
import type z from '@deepseek-ai/schemastery';
|
|
23
|
+
/** Cordis plugin name used by loader diagnostics. */
|
|
24
|
+
export declare const name = "local-agent-dsh-tool";
|
|
25
|
+
/**
|
|
26
|
+
* The family core's `localAgent` service is a declared inject (the
|
|
27
|
+
* owning-family companion exception to the community-service probe rule): a
|
|
28
|
+
* preset's standing scope mounts at registry-activation time, BEFORE the
|
|
29
|
+
* profile's later bundle rows provide the core, so a one-shot ctx.get probe
|
|
30
|
+
* at apply saw ABSENT there and nothing re-ran the row (rc.1 boot order; the
|
|
31
|
+
* worktrees `./tool` entry documents the incident). The declared inject pends
|
|
32
|
+
* the row until the core provides, then the body applies.
|
|
33
|
+
*/
|
|
34
|
+
export declare const inject: string[];
|
|
35
|
+
/** Config: every field optional, defaulting to THIS provider's own values. */
|
|
36
|
+
export interface Config {
|
|
37
|
+
/** The `ctx.subagents` provider name to delegate to (default `dsh-cli`). */
|
|
38
|
+
provider?: string;
|
|
39
|
+
/** Model-facing tool name (default `subagent_dsh`). */
|
|
40
|
+
toolName?: string;
|
|
41
|
+
}
|
|
42
|
+
export declare const Config: z;
|
|
43
|
+
/**
|
|
44
|
+
* Plugin body: mount the delegation tool through the family factory, stamped
|
|
45
|
+
* with THIS package as the tool-origin owner (AGENTS.md § Tool origin
|
|
46
|
+
* tagging — the shared factory never hardcodes an owner).
|
|
47
|
+
* @param ctx - Cordis context (the preset's agent-plane mount).
|
|
48
|
+
* @param config - row config (schema defaults already applied; the `??`
|
|
49
|
+
* fallbacks cover a direct ctx.plugin caller that bypassed validation).
|
|
50
|
+
*/
|
|
51
|
+
export declare function apply(ctx: Context, config: Config): void;
|
|
52
|
+
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { mountSubagentDelegationTool, subagentToolConfigSchema } from '@khorsheed/dsh-local-agent/tool-factory';
|
|
2
|
+
const PACKAGE_NAME = '@khorsheed/dsh-local-agent-dsh';
|
|
3
|
+
/** This entry's own defaults: a preset row needs no config. */
|
|
4
|
+
const DEFAULT_PROVIDER = 'dsh-cli';
|
|
5
|
+
const DEFAULT_TOOL_NAME = 'subagent_dsh';
|
|
6
|
+
/** Cordis plugin name used by loader diagnostics. */
|
|
7
|
+
export const name = 'local-agent-dsh-tool';
|
|
8
|
+
/**
|
|
9
|
+
* The family core's `localAgent` service is a declared inject (the
|
|
10
|
+
* owning-family companion exception to the community-service probe rule): a
|
|
11
|
+
* preset's standing scope mounts at registry-activation time, BEFORE the
|
|
12
|
+
* profile's later bundle rows provide the core, so a one-shot ctx.get probe
|
|
13
|
+
* at apply saw ABSENT there and nothing re-ran the row (rc.1 boot order; the
|
|
14
|
+
* worktrees `./tool` entry documents the incident). The declared inject pends
|
|
15
|
+
* the row until the core provides, then the body applies.
|
|
16
|
+
*/
|
|
17
|
+
export const inject = ['tools', 'subagents', 'localAgent'];
|
|
18
|
+
// Bare `z` annotation per the shared helper's variance note.
|
|
19
|
+
export const Config = subagentToolConfigSchema(DEFAULT_PROVIDER, DEFAULT_TOOL_NAME);
|
|
20
|
+
/**
|
|
21
|
+
* Plugin body: mount the delegation tool through the family factory, stamped
|
|
22
|
+
* with THIS package as the tool-origin owner (AGENTS.md § Tool origin
|
|
23
|
+
* tagging — the shared factory never hardcodes an owner).
|
|
24
|
+
* @param ctx - Cordis context (the preset's agent-plane mount).
|
|
25
|
+
* @param config - row config (schema defaults already applied; the `??`
|
|
26
|
+
* fallbacks cover a direct ctx.plugin caller that bypassed validation).
|
|
27
|
+
*/
|
|
28
|
+
export function apply(ctx, config) {
|
|
29
|
+
const resolved = {
|
|
30
|
+
provider: config.provider ?? DEFAULT_PROVIDER,
|
|
31
|
+
toolName: config.toolName ?? DEFAULT_TOOL_NAME,
|
|
32
|
+
};
|
|
33
|
+
mountSubagentDelegationTool(ctx, resolved, PACKAGE_NAME);
|
|
34
|
+
}
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"local-agent",
|
|
9
9
|
"subagent"
|
|
10
10
|
],
|
|
11
|
-
"version": "0.2.
|
|
11
|
+
"version": "0.2.1",
|
|
12
12
|
"type": "module",
|
|
13
13
|
"main": "lib/index.js",
|
|
14
14
|
"types": "lib/types/index.d.ts",
|
|
@@ -29,6 +29,10 @@
|
|
|
29
29
|
"types": "./lib/types/dsh-cli-provider.d.ts",
|
|
30
30
|
"default": "./lib/dsh-cli-provider.js"
|
|
31
31
|
},
|
|
32
|
+
"./tool": {
|
|
33
|
+
"types": "./lib/types/tool.d.ts",
|
|
34
|
+
"default": "./lib/tool.js"
|
|
35
|
+
},
|
|
32
36
|
"./client": {
|
|
33
37
|
"types": "./lib/types/client/index.d.ts",
|
|
34
38
|
"default": "./lib/client.js"
|
|
@@ -36,7 +40,8 @@
|
|
|
36
40
|
"./src/*": "./src/*",
|
|
37
41
|
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
38
42
|
"./package.json": "./package.json",
|
|
39
|
-
"./locale/*.json": "./locale/*.json"
|
|
43
|
+
"./locale/*.json": "./locale/*.json",
|
|
44
|
+
"./tool/locale/*.json": "./locale/*.json"
|
|
40
45
|
},
|
|
41
46
|
"dsh": {
|
|
42
47
|
"references": [
|
|
@@ -75,8 +80,8 @@
|
|
|
75
80
|
"dsh": ">=0.1.5-rc.1 <0.3.0-0"
|
|
76
81
|
},
|
|
77
82
|
"dependencies": {
|
|
78
|
-
"@khorsheed/dsh-local-agent": "^0.2.
|
|
79
|
-
"@khorsheed/dsh-local-agent-dsh-headless": "^0.2.
|
|
83
|
+
"@khorsheed/dsh-local-agent": "^0.2.1",
|
|
84
|
+
"@khorsheed/dsh-local-agent-dsh-headless": "^0.2.1",
|
|
80
85
|
"js-yaml": "^4.3.1"
|
|
81
86
|
},
|
|
82
87
|
"peerDependencies": {
|