@norman-else/dsh-claude 0.1.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/INSTALL.md +58 -0
- package/LICENSE +21 -0
- package/README.md +184 -0
- package/cordis.patch.yml +5 -0
- package/lib/bin.d.mts +1 -0
- package/lib/bin.mjs +116 -0
- package/lib/bin.mjs.map +1 -0
- package/lib/client.d.ts +84 -0
- package/lib/client.js +1417 -0
- package/lib/client.js.map +1 -0
- package/lib/events-qlmU1KrH.mjs +186 -0
- package/lib/events-qlmU1KrH.mjs.map +1 -0
- package/lib/index.d.mts +230 -0
- package/lib/index.mjs +2272 -0
- package/lib/index.mjs.map +1 -0
- package/lib/presenters-DbfG-9KQ.mjs +302 -0
- package/lib/presenters-DbfG-9KQ.mjs.map +1 -0
- package/lib/preset-installer-DUVN1J6P.mjs +291 -0
- package/lib/preset-installer-DUVN1J6P.mjs.map +1 -0
- package/lib/preset-route.d.mts +11 -0
- package/lib/preset-route.mjs +24 -0
- package/lib/preset-route.mjs.map +1 -0
- package/package.json +124 -0
- package/preset/agent.cordis.yml +14 -0
- package/preset/preset.yml +4 -0
package/lib/index.d.mts
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import z from "@deepseek-ai/schemastery";
|
|
2
|
+
import { EffortLevel, Options, Query, SDKControlGetContextUsageResponse, SDKUserMessage, SlashCommand } from "@anthropic-ai/claude-agent-sdk";
|
|
3
|
+
import { SubprocessRuntime } from "@deepseek-ai/dsh-subprocess";
|
|
4
|
+
import { Context } from "@deepseek-ai/cordis";
|
|
5
|
+
import { Agent } from "@deepseek-ai/dsh-agent";
|
|
6
|
+
import { CommandDefinition, CommandDescriptor } from "@deepseek-ai/dsh-commands";
|
|
7
|
+
import { SessionEvent } from "@deepseek-ai/dsh-session";
|
|
8
|
+
import { ApprovalService } from "@deepseek-ai/dsh-user-approval";
|
|
9
|
+
//#region src/command-bridge.d.ts
|
|
10
|
+
/**
|
|
11
|
+
* Agent-scope command service contract. The commands service is unreachable
|
|
12
|
+
* from the host plugin's view of `agent.ctx` ("without inject"), but the
|
|
13
|
+
* preset route plugin runs INSIDE the agent's preset composition with
|
|
14
|
+
* `commands` injected. Registrations made through the provided service land
|
|
15
|
+
* in the agent's scope layer, which the command registry inherits into
|
|
16
|
+
* `list(agent)` for exactly that agent — invisible to every other session.
|
|
17
|
+
*/
|
|
18
|
+
interface ClaudeAgentCommandService {
|
|
19
|
+
list(agent: unknown): readonly Pick<CommandDescriptor, 'name'>[];
|
|
20
|
+
register(definition: CommandDefinition): () => void;
|
|
21
|
+
}
|
|
22
|
+
declare module '@deepseek-ai/cordis' {
|
|
23
|
+
interface Context {
|
|
24
|
+
claudeCommands?: ClaudeAgentCommandService;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region src/events.d.ts
|
|
29
|
+
type ClaudeActivityKind = 'status' | 'thinking' | 'tool-call' | 'tool-result' | 'permission' | 'subagent' | 'usage' | 'warning' | 'error';
|
|
30
|
+
type ClaudeActivityPhase = 'started' | 'updated' | 'completed' | 'denied' | 'failed';
|
|
31
|
+
interface ClaudeUsage {
|
|
32
|
+
inputTokens?: number;
|
|
33
|
+
outputTokens?: number;
|
|
34
|
+
cacheReadTokens?: number;
|
|
35
|
+
cacheCreationTokens?: number;
|
|
36
|
+
cumulativeCostUsd?: number;
|
|
37
|
+
}
|
|
38
|
+
interface ClaudeSessionBoundEvent {
|
|
39
|
+
claudeSessionId: string;
|
|
40
|
+
cliVersion?: string;
|
|
41
|
+
sdkVersion: string;
|
|
42
|
+
cwd: string;
|
|
43
|
+
}
|
|
44
|
+
interface ClaudeActivityEvent {
|
|
45
|
+
turn: number;
|
|
46
|
+
step: number;
|
|
47
|
+
ordinal: number;
|
|
48
|
+
kind: ClaudeActivityKind;
|
|
49
|
+
phase?: ClaudeActivityPhase;
|
|
50
|
+
/** Claude task-board identity for lifecycle activity; never a transcript path. */
|
|
51
|
+
taskId?: string;
|
|
52
|
+
toolUseId?: string;
|
|
53
|
+
/** Enclosing Claude tool call for subagent-nested activity. */
|
|
54
|
+
parentToolUseId?: string;
|
|
55
|
+
toolName?: string;
|
|
56
|
+
title?: string;
|
|
57
|
+
summary?: string;
|
|
58
|
+
detail?: string;
|
|
59
|
+
isError?: boolean;
|
|
60
|
+
usage?: ClaudeUsage;
|
|
61
|
+
}
|
|
62
|
+
interface ClaudeContextUsageCategory {
|
|
63
|
+
name: string;
|
|
64
|
+
tokens: number;
|
|
65
|
+
color: string;
|
|
66
|
+
isDeferred?: boolean;
|
|
67
|
+
}
|
|
68
|
+
interface ClaudeContextUsageEvent {
|
|
69
|
+
model: string;
|
|
70
|
+
totalTokens: number;
|
|
71
|
+
maxTokens: number;
|
|
72
|
+
percentage: number;
|
|
73
|
+
categories: readonly ClaudeContextUsageCategory[];
|
|
74
|
+
}
|
|
75
|
+
interface ClaudeContextUsageInput {
|
|
76
|
+
model: unknown;
|
|
77
|
+
totalTokens: unknown;
|
|
78
|
+
maxTokens: unknown;
|
|
79
|
+
percentage: unknown;
|
|
80
|
+
categories: readonly {
|
|
81
|
+
name?: unknown;
|
|
82
|
+
tokens?: unknown;
|
|
83
|
+
color?: unknown;
|
|
84
|
+
isDeferred?: unknown;
|
|
85
|
+
}[];
|
|
86
|
+
}
|
|
87
|
+
declare module '@deepseek-ai/dsh-session/types' {
|
|
88
|
+
interface SessionEventMap {
|
|
89
|
+
'claude-code/session-bound': ClaudeSessionBoundEvent;
|
|
90
|
+
'claude-code/activity': ClaudeActivityEvent;
|
|
91
|
+
'claude-code/context-usage': ClaudeContextUsageEvent;
|
|
92
|
+
'claude-code/tasks': ClaudeTasksEvent;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
type ClaudeTaskStatus = 'running' | 'completed' | 'failed' | 'stopped' | 'killed';
|
|
96
|
+
interface ClaudeTaskUsage {
|
|
97
|
+
totalTokens?: number;
|
|
98
|
+
toolUses?: number;
|
|
99
|
+
durationMs?: number;
|
|
100
|
+
}
|
|
101
|
+
interface ClaudeTaskInfo {
|
|
102
|
+
taskId: string;
|
|
103
|
+
description: string;
|
|
104
|
+
status: ClaudeTaskStatus;
|
|
105
|
+
/** DSH turn during which this task was first observed, when known. */
|
|
106
|
+
originTurn?: number;
|
|
107
|
+
subagentType?: string;
|
|
108
|
+
taskType?: string;
|
|
109
|
+
lastToolName?: string;
|
|
110
|
+
summary?: string;
|
|
111
|
+
usage?: ClaudeTaskUsage;
|
|
112
|
+
/** True while the task runs detached (background command/subagent). */
|
|
113
|
+
backgrounded?: boolean;
|
|
114
|
+
}
|
|
115
|
+
/** Level snapshot of one session's Claude task board, REPLACE semantics. */
|
|
116
|
+
interface ClaudeTasksEvent {
|
|
117
|
+
tasks: readonly ClaudeTaskInfo[];
|
|
118
|
+
}
|
|
119
|
+
type ClaudeActivityInput = Omit<ClaudeActivityEvent, 'turn' | 'step' | 'ordinal' | 'summary' | 'detail'> & {
|
|
120
|
+
summary?: unknown;
|
|
121
|
+
detail?: unknown;
|
|
122
|
+
};
|
|
123
|
+
//#endregion
|
|
124
|
+
//#region src/sidecar.d.ts
|
|
125
|
+
declare const SIDECAR_SCHEMA_VERSION = 1;
|
|
126
|
+
interface ClaudeSidecarProjection {
|
|
127
|
+
readonly schemaVersion: typeof SIDECAR_SCHEMA_VERSION;
|
|
128
|
+
readonly revision: number;
|
|
129
|
+
readonly binding?: ClaudeSessionBoundEvent;
|
|
130
|
+
readonly activities: readonly ClaudeActivityEvent[];
|
|
131
|
+
readonly contextUsage?: ClaudeContextUsageEvent;
|
|
132
|
+
readonly tasks?: ClaudeTasksEvent;
|
|
133
|
+
}
|
|
134
|
+
interface ClaudeSidecarRepositoryOptions {
|
|
135
|
+
readonly root?: string;
|
|
136
|
+
readonly legacyRoot?: string;
|
|
137
|
+
}
|
|
138
|
+
declare class ClaudeSidecarRepository {
|
|
139
|
+
#private;
|
|
140
|
+
readonly root: string;
|
|
141
|
+
readonly legacyRoot: string | undefined;
|
|
142
|
+
constructor(options?: ClaudeSidecarRepositoryOptions);
|
|
143
|
+
read(sessionId: string): Promise<ClaudeSidecarProjection>;
|
|
144
|
+
writeBinding(sessionId: string, value: Omit<ClaudeSessionBoundEvent, 'sdkVersion'> & {
|
|
145
|
+
sdkVersion?: string;
|
|
146
|
+
}): Promise<ClaudeSidecarProjection>;
|
|
147
|
+
appendActivity(sessionId: string, value: ClaudeActivityInput & {
|
|
148
|
+
turn: number;
|
|
149
|
+
step: number;
|
|
150
|
+
ordinal: number;
|
|
151
|
+
}): Promise<ClaudeSidecarProjection>;
|
|
152
|
+
writeContextUsage(sessionId: string, value: ClaudeContextUsageInput): Promise<ClaudeSidecarProjection>;
|
|
153
|
+
writeTasks(sessionId: string, value: readonly ClaudeTaskInfo[]): Promise<ClaudeSidecarProjection>;
|
|
154
|
+
importLegacy(sessionId: string, events: readonly SessionEvent[]): Promise<ClaudeSidecarProjection>;
|
|
155
|
+
}
|
|
156
|
+
//#endregion
|
|
157
|
+
//#region src/supervisor.d.ts
|
|
158
|
+
type ClaudeSupervisorState = 'starting' | 'idle' | 'running' | 'interrupting' | 'disconnected' | 'outcome-unknown' | 'disposed';
|
|
159
|
+
interface ClaudeSupervisorConfig {
|
|
160
|
+
executablePath: string;
|
|
161
|
+
idleTimeoutMs: number;
|
|
162
|
+
maxProcesses: number;
|
|
163
|
+
defaultModel: string;
|
|
164
|
+
}
|
|
165
|
+
type ClaudeTurnStreamEvent = {
|
|
166
|
+
type: 'text-delta';
|
|
167
|
+
text: string;
|
|
168
|
+
} | {
|
|
169
|
+
type: 'usage';
|
|
170
|
+
usage: ClaudeUsage;
|
|
171
|
+
} | {
|
|
172
|
+
type: 'complete';
|
|
173
|
+
text: string;
|
|
174
|
+
};
|
|
175
|
+
type ClaudeThinkingMode = 'off' | 'ultracode' | EffortLevel;
|
|
176
|
+
interface ClaudeTurnRequest {
|
|
177
|
+
agent: Agent;
|
|
178
|
+
prompt: string;
|
|
179
|
+
model?: string;
|
|
180
|
+
thinkingMode?: ClaudeThinkingMode;
|
|
181
|
+
signal?: AbortSignal;
|
|
182
|
+
}
|
|
183
|
+
interface ClaudeSupervisorSnapshot {
|
|
184
|
+
sessionId: string;
|
|
185
|
+
claudeSessionId?: string;
|
|
186
|
+
state: ClaudeSupervisorState;
|
|
187
|
+
cwd: string;
|
|
188
|
+
model: string;
|
|
189
|
+
thinkingMode?: ClaudeThinkingMode;
|
|
190
|
+
lastUsedAt: number;
|
|
191
|
+
pid?: number;
|
|
192
|
+
}
|
|
193
|
+
type ClaudeQueryFactory = (params: {
|
|
194
|
+
prompt: AsyncIterable<SDKUserMessage>;
|
|
195
|
+
options: Options;
|
|
196
|
+
}) => Query;
|
|
197
|
+
declare class ClaudeSupervisor {
|
|
198
|
+
#private;
|
|
199
|
+
constructor(dependencies: {
|
|
200
|
+
runtime: Pick<SubprocessRuntime, 'spawn'>;
|
|
201
|
+
approval: Pick<ApprovalService, 'request'>;
|
|
202
|
+
config: ClaudeSupervisorConfig;
|
|
203
|
+
queryFactory?: ClaudeQueryFactory;
|
|
204
|
+
runDetached?: <T>(operation: () => T) => T;
|
|
205
|
+
sidecar?: ClaudeSidecarRepository;
|
|
206
|
+
});
|
|
207
|
+
snapshots(): ClaudeSupervisorSnapshot[];
|
|
208
|
+
supportedCommands(agent: Agent, model?: string): Promise<readonly SlashCommand[]>;
|
|
209
|
+
contextUsage(agent: Agent, model?: string): Promise<SDKControlGetContextUsageResponse>;
|
|
210
|
+
contextWindow(model: string): number | undefined;
|
|
211
|
+
runTurn(request: ClaudeTurnRequest): Promise<AsyncIterable<ClaudeTurnStreamEvent>>;
|
|
212
|
+
disposeSession(sessionId: string): Promise<void>;
|
|
213
|
+
dispose(): Promise<void>;
|
|
214
|
+
}
|
|
215
|
+
//#endregion
|
|
216
|
+
//#region src/index.d.ts
|
|
217
|
+
declare const name = "llm-claude";
|
|
218
|
+
declare const inject: string[];
|
|
219
|
+
interface Config {
|
|
220
|
+
executablePath?: string;
|
|
221
|
+
model?: string;
|
|
222
|
+
idleTimeoutMs?: number;
|
|
223
|
+
maxProcesses?: number;
|
|
224
|
+
}
|
|
225
|
+
declare const Config: z<Config>;
|
|
226
|
+
declare function mountClaudeMetadata(ctx: Context, supervisor: ClaudeSupervisor, agent: Agent, model: string, sidecar: ClaudeSidecarRepository, resolveCommands?: () => ClaudeAgentCommandService | undefined): (() => Promise<void>) | undefined;
|
|
227
|
+
declare function apply(ctx: Context, config: Config): Promise<void>;
|
|
228
|
+
//#endregion
|
|
229
|
+
export { Config, apply, inject, mountClaudeMetadata, name };
|
|
230
|
+
//# sourceMappingURL=index.d.mts.map
|