@kaoruisaac/pedelec 0.1.0 → 0.1.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.md +594 -2
- package/dist/index.d.ts +159 -19
- package/dist/index.js +398 -66
- package/dist/index.type-test.d.ts +1 -0
- package/dist/index.type-test.js +101 -0
- package/package.json +4 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1,92 @@
|
|
|
1
1
|
export type PedelecOptions = {
|
|
2
2
|
bridgeTimeoutMs?: number;
|
|
3
3
|
};
|
|
4
|
-
export type ProviderCode = "codex" | "gemini" | "opencode" | "cursor" | "claude";
|
|
5
|
-
type
|
|
4
|
+
export type ProviderCode = "codex" | "gemini" | "opencode" | "cursor" | "claude" | "ollama";
|
|
5
|
+
export type JsonPrimitive = string | number | boolean | null;
|
|
6
|
+
export type JsonValue = JsonPrimitive | JsonValue[] | {
|
|
7
|
+
[key: string]: JsonValue;
|
|
8
|
+
};
|
|
9
|
+
export type ToolArgsSchemaMeta<TDefault extends JsonValue = JsonValue> = {
|
|
10
|
+
description?: string;
|
|
11
|
+
default?: TDefault;
|
|
12
|
+
examples?: TDefault[];
|
|
13
|
+
};
|
|
14
|
+
export type ToolArgsStringSchema = ToolArgsSchemaMeta<string> & {
|
|
15
|
+
type: "string";
|
|
16
|
+
enum?: string[];
|
|
17
|
+
minLength?: number;
|
|
18
|
+
maxLength?: number;
|
|
19
|
+
pattern?: string;
|
|
20
|
+
};
|
|
21
|
+
export type ToolArgsNumberSchema = ToolArgsSchemaMeta<number> & {
|
|
22
|
+
type: "number";
|
|
23
|
+
enum?: number[];
|
|
24
|
+
minimum?: number;
|
|
25
|
+
maximum?: number;
|
|
26
|
+
};
|
|
27
|
+
export type ToolArgsIntegerSchema = ToolArgsSchemaMeta<number> & {
|
|
28
|
+
type: "integer";
|
|
29
|
+
enum?: number[];
|
|
30
|
+
minimum?: number;
|
|
31
|
+
maximum?: number;
|
|
32
|
+
};
|
|
33
|
+
export type ToolArgsBooleanSchema = ToolArgsSchemaMeta<boolean> & {
|
|
34
|
+
type: "boolean";
|
|
35
|
+
enum?: boolean[];
|
|
36
|
+
};
|
|
37
|
+
export type ToolArgsArraySchema = ToolArgsSchemaMeta<JsonValue[]> & {
|
|
38
|
+
type: "array";
|
|
39
|
+
items: ToolArgsSchemaNode;
|
|
40
|
+
minItems?: number;
|
|
41
|
+
maxItems?: number;
|
|
42
|
+
uniqueItems?: boolean;
|
|
43
|
+
};
|
|
44
|
+
export type ToolArgsObjectSchema = ToolArgsSchemaMeta<Record<string, JsonValue>> & {
|
|
45
|
+
type: "object";
|
|
46
|
+
properties?: Record<string, ToolArgsSchemaNode>;
|
|
47
|
+
required?: string[];
|
|
48
|
+
};
|
|
49
|
+
export type ToolArgsOneOfSchema = ToolArgsSchemaMeta & {
|
|
50
|
+
oneOf: ToolArgsSchemaNode[];
|
|
51
|
+
};
|
|
52
|
+
export type ToolArgsSchemaNode = ToolArgsStringSchema | ToolArgsNumberSchema | ToolArgsIntegerSchema | ToolArgsBooleanSchema | ToolArgsArraySchema | ToolArgsObjectSchema | ToolArgsOneOfSchema;
|
|
53
|
+
export type ToolArgsSchema = ToolArgsObjectSchema;
|
|
54
|
+
export type ToolSpecificHandler<TArgs = unknown, TResult = unknown> = (args: TArgs, ctx: ToolCallContext) => TResult | Promise<TResult>;
|
|
55
|
+
export type ToolDefinition<TArgs = unknown, TResult = unknown, TName extends string = string> = {
|
|
56
|
+
name: TName;
|
|
57
|
+
description: string;
|
|
58
|
+
argsSchema: ToolArgsSchema;
|
|
59
|
+
timeoutMs?: number;
|
|
60
|
+
handler?: ToolSpecificHandler<TArgs, TResult>;
|
|
61
|
+
};
|
|
62
|
+
export type SkillsInput<TTools extends readonly ToolDefinition[] = readonly ToolDefinition[]> = {
|
|
63
|
+
guidance: string;
|
|
64
|
+
tools: TTools;
|
|
65
|
+
};
|
|
66
|
+
export type ToolNameOf<TTools extends readonly ToolDefinition[]> = Extract<TTools[number]["name"], string>;
|
|
67
|
+
export type SerializableToolManifest = {
|
|
68
|
+
name: string;
|
|
69
|
+
description: string;
|
|
70
|
+
argsSchema: ToolArgsSchema;
|
|
71
|
+
timeoutMs?: number;
|
|
72
|
+
};
|
|
73
|
+
export type SerializableSkillsManifest = {
|
|
74
|
+
guidance: string;
|
|
75
|
+
tools: SerializableToolManifest[];
|
|
76
|
+
};
|
|
77
|
+
type CreateSessionInputWithProvider<TTools extends readonly ToolDefinition[] = readonly ToolDefinition[]> = {
|
|
6
78
|
provider: ProviderCode;
|
|
7
79
|
model?: string;
|
|
8
|
-
|
|
80
|
+
skills?: SkillsInput<TTools>;
|
|
81
|
+
autoEndOnDisconnect?: boolean;
|
|
9
82
|
};
|
|
10
|
-
type CreateSessionInputWithDefaults = {
|
|
83
|
+
type CreateSessionInputWithDefaults<TTools extends readonly ToolDefinition[] = readonly ToolDefinition[]> = {
|
|
11
84
|
provider?: undefined;
|
|
12
85
|
model?: never;
|
|
13
|
-
|
|
86
|
+
skills?: SkillsInput<TTools>;
|
|
87
|
+
autoEndOnDisconnect?: boolean;
|
|
14
88
|
};
|
|
15
|
-
export type CreateSessionInput = CreateSessionInputWithProvider | CreateSessionInputWithDefaults
|
|
89
|
+
export type CreateSessionInput<TTools extends readonly ToolDefinition[] = readonly ToolDefinition[]> = CreateSessionInputWithProvider<TTools> | CreateSessionInputWithDefaults<TTools>;
|
|
16
90
|
export type ProviderInfo = {
|
|
17
91
|
name: string;
|
|
18
92
|
code: ProviderCode;
|
|
@@ -22,7 +96,7 @@ export type ProviderInfo = {
|
|
|
22
96
|
};
|
|
23
97
|
export type PedelecSettings = {
|
|
24
98
|
defaultProvider: ProviderCode | null;
|
|
25
|
-
|
|
99
|
+
defaultModels: Partial<Record<ProviderCode, string>>;
|
|
26
100
|
};
|
|
27
101
|
export type ApprovalStatus = {
|
|
28
102
|
installed: boolean;
|
|
@@ -35,6 +109,43 @@ export type PedelecError = {
|
|
|
35
109
|
details?: unknown;
|
|
36
110
|
};
|
|
37
111
|
export type PedelecSessionStatus = "idle" | "running" | "waiting_tool_result" | "ended" | "error";
|
|
112
|
+
export type PedelecEventContext = {
|
|
113
|
+
sessionId: string;
|
|
114
|
+
provider: string;
|
|
115
|
+
model?: string;
|
|
116
|
+
sessionCreatedAt: number;
|
|
117
|
+
eventReceivedAt?: number;
|
|
118
|
+
eventEmittedAt: number;
|
|
119
|
+
turnId?: string;
|
|
120
|
+
turnStartedAt?: number;
|
|
121
|
+
turnKind?: "user" | "prepare";
|
|
122
|
+
source: "core" | "sdk";
|
|
123
|
+
};
|
|
124
|
+
export type ChatEventContext = PedelecEventContext & {
|
|
125
|
+
type: "chat_delta";
|
|
126
|
+
turnId: string;
|
|
127
|
+
turnStartedAt: number;
|
|
128
|
+
eventReceivedAt: number;
|
|
129
|
+
};
|
|
130
|
+
export type ToolCallContext = PedelecEventContext & {
|
|
131
|
+
type: "tool_call";
|
|
132
|
+
toolRequestId: string;
|
|
133
|
+
tool: string;
|
|
134
|
+
turnId: string;
|
|
135
|
+
turnStartedAt: number;
|
|
136
|
+
eventReceivedAt: number;
|
|
137
|
+
};
|
|
138
|
+
export type StatusEventContext = PedelecEventContext & {
|
|
139
|
+
type: "status_changed" | "sdk_status_changed";
|
|
140
|
+
status: PedelecSessionStatus;
|
|
141
|
+
previousStatus: PedelecSessionStatus;
|
|
142
|
+
};
|
|
143
|
+
export type ErrorEventContext = PedelecEventContext & {
|
|
144
|
+
type: "error" | "sdk_error";
|
|
145
|
+
};
|
|
146
|
+
export type EndedEventContext = PedelecEventContext & {
|
|
147
|
+
type: "ended" | "sdk_ended";
|
|
148
|
+
};
|
|
38
149
|
type SessionEvent = {
|
|
39
150
|
type: "chat_delta";
|
|
40
151
|
channelId: string;
|
|
@@ -72,11 +183,16 @@ type SessionEvent = {
|
|
|
72
183
|
sessionId: string;
|
|
73
184
|
seq?: number;
|
|
74
185
|
};
|
|
75
|
-
type
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
type
|
|
186
|
+
type EventDispatchMeta = {
|
|
187
|
+
source: "core" | "sdk";
|
|
188
|
+
eventReceivedAt?: number;
|
|
189
|
+
};
|
|
190
|
+
type ChatHandler = (text: string, ctx: ChatEventContext) => void;
|
|
191
|
+
type GenericToolHandler<TToolName extends string = string> = (tool: TToolName, args: unknown, ctx: ToolCallContext) => unknown | Promise<unknown>;
|
|
192
|
+
type ErrorHandler = (error: PedelecError, ctx: ErrorEventContext) => void;
|
|
193
|
+
type StatusHandler = (status: PedelecSessionStatus, ctx: StatusEventContext) => void;
|
|
194
|
+
type EndedHandler = (ctx: EndedEventContext) => void;
|
|
195
|
+
export declare function defineTool<TArgs = unknown, TResult = unknown, const TName extends string = string>(tool: ToolDefinition<TArgs, TResult, TName>): ToolDefinition<TArgs, TResult, TName>;
|
|
80
196
|
export declare class Pedelec {
|
|
81
197
|
private readonly pageWindow;
|
|
82
198
|
private readonly channelId;
|
|
@@ -88,11 +204,12 @@ export declare class Pedelec {
|
|
|
88
204
|
private disconnectedError;
|
|
89
205
|
private port;
|
|
90
206
|
constructor(options?: PedelecOptions);
|
|
91
|
-
createSession(
|
|
207
|
+
createSession(): Promise<PedelecSession<string>>;
|
|
208
|
+
createSession<const TTools extends readonly ToolDefinition[]>(input: CreateSessionInput<TTools>): Promise<PedelecSession<ToolNameOf<TTools>>>;
|
|
92
209
|
listProviders(): Promise<ProviderInfo[]>;
|
|
93
210
|
getSettings(): Promise<PedelecSettings>;
|
|
94
211
|
getApprovalStatus(): Promise<ApprovalStatus>;
|
|
95
|
-
resumeSession(sessionId: string): Promise<PedelecSession
|
|
212
|
+
resumeSession(sessionId: string): Promise<PedelecSession<string>>;
|
|
96
213
|
request<T>(type: string, payload?: Record<string, unknown>): Promise<T>;
|
|
97
214
|
unregisterSession(sessionId: string): void;
|
|
98
215
|
private resolveCreateSessionInput;
|
|
@@ -107,34 +224,57 @@ export declare class Pedelec {
|
|
|
107
224
|
private handleDisconnect;
|
|
108
225
|
private broadcastError;
|
|
109
226
|
}
|
|
110
|
-
export declare class PedelecSession {
|
|
227
|
+
export declare class PedelecSession<TToolName extends string = string> {
|
|
111
228
|
private readonly client;
|
|
112
229
|
readonly sessionId: string;
|
|
113
230
|
readonly provider: string;
|
|
114
231
|
readonly model?: string;
|
|
232
|
+
readonly sessionCreatedAt: number;
|
|
115
233
|
private status;
|
|
116
234
|
private pendingSend;
|
|
117
|
-
private
|
|
235
|
+
private pendingPrepare;
|
|
236
|
+
private preparePromise;
|
|
237
|
+
private prepared;
|
|
238
|
+
private activeTurn;
|
|
239
|
+
private genericToolHandler;
|
|
240
|
+
private inlineToolHandlers;
|
|
241
|
+
private readonly namedToolHandlers;
|
|
118
242
|
private readonly chatHandlers;
|
|
119
243
|
private readonly errorHandlers;
|
|
120
244
|
private readonly statusHandlers;
|
|
121
245
|
private readonly endedHandlers;
|
|
122
|
-
constructor(client: Pedelec, sessionId: string, provider: string, model?: string);
|
|
246
|
+
constructor(client: Pedelec, sessionId: string, provider: string, model?: string, inlineToolHandlers?: Map<string, ToolSpecificHandler>);
|
|
247
|
+
prepare(): Promise<void>;
|
|
123
248
|
sendText(text: string): Promise<void>;
|
|
124
249
|
onChat(handler: ChatHandler): () => void;
|
|
125
|
-
onTool(handler:
|
|
250
|
+
onTool(handler: GenericToolHandler<TToolName>): () => void;
|
|
251
|
+
onTool<TArgs = unknown, TResult = unknown>(toolName: TToolName, handler: ToolSpecificHandler<TArgs, TResult>): () => void;
|
|
126
252
|
onError(handler: ErrorHandler): () => void;
|
|
127
253
|
onStatus(handler: StatusHandler): () => void;
|
|
128
254
|
onEnded(handler: EndedHandler): () => void;
|
|
129
255
|
getStatus(): PedelecSessionStatus;
|
|
130
256
|
end(): Promise<void>;
|
|
131
|
-
handleEvent(event: SessionEvent): void;
|
|
257
|
+
handleEvent(event: SessionEvent, meta?: EventDispatchMeta): void;
|
|
258
|
+
replaceInlineToolHandlers(handlers: Map<string, ToolSpecificHandler>): void;
|
|
132
259
|
private handleToolCall;
|
|
133
260
|
private resolvePendingSend;
|
|
261
|
+
private resolvePendingPrepare;
|
|
262
|
+
private resolveActivePending;
|
|
134
263
|
private rejectPendingSend;
|
|
264
|
+
private rejectPendingPrepare;
|
|
265
|
+
private rejectActivePending;
|
|
135
266
|
private clearPendingSend;
|
|
267
|
+
private clearPendingPrepare;
|
|
136
268
|
private markEnded;
|
|
137
269
|
private emitError;
|
|
138
270
|
private setStatus;
|
|
271
|
+
private requireActiveTurn;
|
|
272
|
+
private finishActiveTurn;
|
|
273
|
+
private createBaseContext;
|
|
274
|
+
private createChatContext;
|
|
275
|
+
private createToolCallContext;
|
|
276
|
+
private createStatusContext;
|
|
277
|
+
private createErrorContext;
|
|
278
|
+
private createEndedContext;
|
|
139
279
|
}
|
|
140
280
|
export {};
|