@ifi/pi-web-client 0.3.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 +21 -0
- package/dist/client.d.ts +41 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +216 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/reconnect.d.ts +13 -0
- package/dist/reconnect.d.ts.map +1 -0
- package/dist/reconnect.js +34 -0
- package/dist/reconnect.js.map +1 -0
- package/dist/types.d.ts +211 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/package.json +28 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Ifiok Jr.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { CommandInfo, CompactionResult, ConnectionState, ExtensionUIResponse, InstanceInfo, PiWebClientOptions, PromptOptions, SessionState, SessionStats, ThinkingLevel } from "./types.js";
|
|
2
|
+
type Unsubscribe = () => void;
|
|
3
|
+
type EventHandler = (event: unknown) => void;
|
|
4
|
+
export declare class PiWebClient {
|
|
5
|
+
private _options;
|
|
6
|
+
private _ws;
|
|
7
|
+
private _state;
|
|
8
|
+
private _instanceId;
|
|
9
|
+
private _listeners;
|
|
10
|
+
private _pendingRequests;
|
|
11
|
+
private _reconnect;
|
|
12
|
+
private _webSocketCtor;
|
|
13
|
+
constructor(options: PiWebClientOptions);
|
|
14
|
+
get state(): ConnectionState;
|
|
15
|
+
get instanceId(): string | undefined;
|
|
16
|
+
connect(): Promise<InstanceInfo>;
|
|
17
|
+
disconnect(): void;
|
|
18
|
+
prompt(message: string, options?: PromptOptions): Promise<void>;
|
|
19
|
+
steer(message: string): Promise<void>;
|
|
20
|
+
followUp(message: string): Promise<void>;
|
|
21
|
+
abort(): Promise<void>;
|
|
22
|
+
getState(): Promise<SessionState>;
|
|
23
|
+
getMessages(): Promise<unknown[]>;
|
|
24
|
+
getSessionStats(): Promise<SessionStats>;
|
|
25
|
+
getCommands(): Promise<CommandInfo[]>;
|
|
26
|
+
setModel(provider: string, modelId: string): Promise<unknown>;
|
|
27
|
+
getAvailableModels(): Promise<unknown[]>;
|
|
28
|
+
setThinkingLevel(level: ThinkingLevel): Promise<void>;
|
|
29
|
+
compact(instructions?: string): Promise<CompactionResult>;
|
|
30
|
+
newSession(): Promise<{
|
|
31
|
+
cancelled: boolean;
|
|
32
|
+
}>;
|
|
33
|
+
respondToUI(requestId: string, response: Omit<ExtensionUIResponse, "type" | "id">): void;
|
|
34
|
+
on(event: string, handler: EventHandler): Unsubscribe;
|
|
35
|
+
private _send;
|
|
36
|
+
private _request;
|
|
37
|
+
private _setState;
|
|
38
|
+
private _emit;
|
|
39
|
+
}
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEX,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EAEb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,MAAM,YAAY,CAAC;AAEpB,KAAK,WAAW,GAAG,MAAM,IAAI,CAAC;AAC9B,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAI7C,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,GAAG,CAAwB;IACnC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,gBAAgB,CAA8F;IACtH,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,cAAc,CAAmB;gBAE7B,OAAO,EAAE,kBAAkB;IAMvC,IAAI,KAAK,IAAI,eAAe,CAE3B;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;IAiGhC,UAAU,IAAI,IAAI;IASZ,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/D,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAIjC,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAKjC,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC;IAIxC,WAAW,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAKrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7D,kBAAkB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAKxC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIzD,UAAU,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAInD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI;IAMxF,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,WAAW;IAYrD,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,KAAK;CAYb"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { ReconnectManager } from "./reconnect.js";
|
|
2
|
+
let requestCounter = 0;
|
|
3
|
+
export class PiWebClient {
|
|
4
|
+
_options;
|
|
5
|
+
_ws;
|
|
6
|
+
_state = "disconnected";
|
|
7
|
+
_instanceId;
|
|
8
|
+
_listeners = new Map();
|
|
9
|
+
_pendingRequests = new Map();
|
|
10
|
+
_reconnect;
|
|
11
|
+
_webSocketCtor;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this._options = options;
|
|
14
|
+
this._reconnect = new ReconnectManager(options.reconnectInterval ?? 1000);
|
|
15
|
+
this._webSocketCtor = (options.webSocket ?? globalThis.WebSocket);
|
|
16
|
+
}
|
|
17
|
+
get state() {
|
|
18
|
+
return this._state;
|
|
19
|
+
}
|
|
20
|
+
get instanceId() {
|
|
21
|
+
return this._instanceId;
|
|
22
|
+
}
|
|
23
|
+
connect() {
|
|
24
|
+
if (this._state === "connected") {
|
|
25
|
+
throw new Error("Already connected");
|
|
26
|
+
}
|
|
27
|
+
this._setState("connecting");
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
try {
|
|
30
|
+
this._ws = new this._webSocketCtor(this._options.url);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
this._setState("disconnected");
|
|
34
|
+
reject(err instanceof Error ? err : new Error(String(err)));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
this._ws.onopen = () => {
|
|
38
|
+
this._setState("authenticating");
|
|
39
|
+
this._send({ type: "auth", token: this._options.token });
|
|
40
|
+
};
|
|
41
|
+
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: message handling branches by protocol message type.
|
|
42
|
+
this._ws.onmessage = (event) => {
|
|
43
|
+
let data;
|
|
44
|
+
try {
|
|
45
|
+
data = JSON.parse(typeof event.data === "string" ? event.data : String(event.data));
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Handle auth response
|
|
51
|
+
if (data.type === "auth_ok") {
|
|
52
|
+
const authOk = data;
|
|
53
|
+
this._instanceId = authOk.instanceId;
|
|
54
|
+
this._setState("connected");
|
|
55
|
+
this._reconnect.reset();
|
|
56
|
+
const info = {
|
|
57
|
+
instanceId: authOk.instanceId,
|
|
58
|
+
sessionId: authOk.session?.sessionId ?? "",
|
|
59
|
+
isStreaming: authOk.session?.isStreaming ?? false,
|
|
60
|
+
model: authOk.session?.model,
|
|
61
|
+
thinkingLevel: authOk.session?.thinkingLevel ?? "off",
|
|
62
|
+
};
|
|
63
|
+
resolve(info);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (data.type === "auth_error") {
|
|
67
|
+
this._setState("disconnected");
|
|
68
|
+
reject(new Error(`Authentication failed: ${data.reason}`));
|
|
69
|
+
this._ws?.close();
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
// Handle RPC responses (correlated by id)
|
|
73
|
+
if (data.type === "response") {
|
|
74
|
+
const response = data;
|
|
75
|
+
if (response.id && this._pendingRequests.has(response.id)) {
|
|
76
|
+
const pending = this._pendingRequests.get(response.id);
|
|
77
|
+
this._pendingRequests.delete(response.id);
|
|
78
|
+
if (!pending) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (response.success) {
|
|
82
|
+
pending.resolve(response.data);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
pending.reject(new Error(response.error ?? "Command failed"));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
// All other messages are events — dispatch to listeners
|
|
91
|
+
this._emit(data.type, data);
|
|
92
|
+
};
|
|
93
|
+
this._ws.onclose = () => {
|
|
94
|
+
const wasConnected = this._state === "connected";
|
|
95
|
+
this._setState("disconnected");
|
|
96
|
+
if (wasConnected && this._options.autoReconnect !== false) {
|
|
97
|
+
this._setState("reconnecting");
|
|
98
|
+
this._reconnect.schedule(() => {
|
|
99
|
+
this.connect().catch(() => {
|
|
100
|
+
// Reconnect will retry via schedule
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
this._ws.onerror = () => {
|
|
106
|
+
this._emit("error", new Error("WebSocket error"));
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
disconnect() {
|
|
111
|
+
this._reconnect.stop();
|
|
112
|
+
this._ws?.close();
|
|
113
|
+
this._ws = undefined;
|
|
114
|
+
this._setState("disconnected");
|
|
115
|
+
}
|
|
116
|
+
// RPC Commands
|
|
117
|
+
async prompt(message, options) {
|
|
118
|
+
await this._request({
|
|
119
|
+
type: "prompt",
|
|
120
|
+
message,
|
|
121
|
+
streamingBehavior: options?.streamingBehavior,
|
|
122
|
+
images: options?.images,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
async steer(message) {
|
|
126
|
+
await this._request({ type: "steer", message });
|
|
127
|
+
}
|
|
128
|
+
async followUp(message) {
|
|
129
|
+
await this._request({ type: "follow_up", message });
|
|
130
|
+
}
|
|
131
|
+
async abort() {
|
|
132
|
+
await this._request({ type: "abort" });
|
|
133
|
+
}
|
|
134
|
+
async getState() {
|
|
135
|
+
return (await this._request({ type: "get_state" }));
|
|
136
|
+
}
|
|
137
|
+
async getMessages() {
|
|
138
|
+
const data = (await this._request({ type: "get_messages" }));
|
|
139
|
+
return data.messages;
|
|
140
|
+
}
|
|
141
|
+
async getSessionStats() {
|
|
142
|
+
return (await this._request({ type: "get_session_stats" }));
|
|
143
|
+
}
|
|
144
|
+
async getCommands() {
|
|
145
|
+
const data = (await this._request({ type: "get_commands" }));
|
|
146
|
+
return data.commands;
|
|
147
|
+
}
|
|
148
|
+
async setModel(provider, modelId) {
|
|
149
|
+
return await this._request({ type: "set_model", provider, modelId });
|
|
150
|
+
}
|
|
151
|
+
async getAvailableModels() {
|
|
152
|
+
const data = (await this._request({ type: "get_available_models" }));
|
|
153
|
+
return data.models;
|
|
154
|
+
}
|
|
155
|
+
async setThinkingLevel(level) {
|
|
156
|
+
await this._request({ type: "set_thinking_level", level });
|
|
157
|
+
}
|
|
158
|
+
async compact(instructions) {
|
|
159
|
+
return (await this._request({ type: "compact", customInstructions: instructions }));
|
|
160
|
+
}
|
|
161
|
+
async newSession() {
|
|
162
|
+
return (await this._request({ type: "new_session" }));
|
|
163
|
+
}
|
|
164
|
+
respondToUI(requestId, response) {
|
|
165
|
+
this._send({ type: "extension_ui_response", id: requestId, ...response });
|
|
166
|
+
}
|
|
167
|
+
// Event subscription
|
|
168
|
+
on(event, handler) {
|
|
169
|
+
if (!this._listeners.has(event)) {
|
|
170
|
+
this._listeners.set(event, new Set());
|
|
171
|
+
}
|
|
172
|
+
this._listeners.get(event)?.add(handler);
|
|
173
|
+
return () => {
|
|
174
|
+
this._listeners.get(event)?.delete(handler);
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
// Internals
|
|
178
|
+
_send(data) {
|
|
179
|
+
if (this._ws?.readyState === 1) {
|
|
180
|
+
// OPEN = 1
|
|
181
|
+
this._ws.send(JSON.stringify(data));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
_request(cmd) {
|
|
185
|
+
return new Promise((resolve, reject) => {
|
|
186
|
+
const id = `req-${++requestCounter}`;
|
|
187
|
+
this._pendingRequests.set(id, { resolve, reject });
|
|
188
|
+
this._send({ ...cmd, id });
|
|
189
|
+
// Timeout after 30s
|
|
190
|
+
setTimeout(() => {
|
|
191
|
+
if (this._pendingRequests.has(id)) {
|
|
192
|
+
this._pendingRequests.delete(id);
|
|
193
|
+
reject(new Error(`Request timed out: ${cmd.type}`));
|
|
194
|
+
}
|
|
195
|
+
}, 30000);
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
_setState(state) {
|
|
199
|
+
this._state = state;
|
|
200
|
+
this._emit("connection", state);
|
|
201
|
+
}
|
|
202
|
+
_emit(event, data) {
|
|
203
|
+
const handlers = this._listeners.get(event);
|
|
204
|
+
if (handlers) {
|
|
205
|
+
for (const handler of handlers) {
|
|
206
|
+
try {
|
|
207
|
+
handler(data);
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
// Don't let handler errors break the client
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { PiWebClient } from "./client.js";
|
|
2
|
+
export { ReconnectManager } from "./reconnect.js";
|
|
3
|
+
export type { AgentEndEvent, AgentStartEvent, AuthErrorResponse, AuthOkResponse, CommandInfo, CompactionResult, ConnectionState, ExtensionUIRequest, ExtensionUIResponse, InstanceInfo, MessageEndEvent, MessageStartEvent, MessageUpdateEvent, PiWebClientOptions, PromptOptions, RpcCommand, RpcResponse, ServerEvent, SessionState, SessionStats, ThinkingLevel, ToolExecutionEndEvent, ToolExecutionStartEvent, ToolExecutionUpdateEvent, TurnEndEvent, TurnStartEvent, } from "./types.js";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,YAAY,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,YAAY,EACZ,cAAc,GACd,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare class ReconnectManager {
|
|
2
|
+
private _attempt;
|
|
3
|
+
private _timer;
|
|
4
|
+
private _maxInterval;
|
|
5
|
+
private _baseInterval;
|
|
6
|
+
private _stopped;
|
|
7
|
+
constructor(baseInterval?: number, maxInterval?: number);
|
|
8
|
+
schedule(fn: () => void): void;
|
|
9
|
+
reset(): void;
|
|
10
|
+
stop(): void;
|
|
11
|
+
get attempt(): number;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=reconnect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconnect.d.ts","sourceRoot":"","sources":["../src/reconnect.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAS;gBAEb,YAAY,SAAO,EAAE,WAAW,SAAQ;IAKpD,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAS9B,KAAK,IAAI,IAAI;IAQb,IAAI,IAAI,IAAI;IAKZ,IAAI,OAAO,IAAI,MAAM,CAEpB;CACD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export class ReconnectManager {
|
|
2
|
+
_attempt = 0;
|
|
3
|
+
_timer;
|
|
4
|
+
_maxInterval;
|
|
5
|
+
_baseInterval;
|
|
6
|
+
_stopped = false;
|
|
7
|
+
constructor(baseInterval = 1000, maxInterval = 30000) {
|
|
8
|
+
this._baseInterval = baseInterval;
|
|
9
|
+
this._maxInterval = maxInterval;
|
|
10
|
+
}
|
|
11
|
+
schedule(fn) {
|
|
12
|
+
if (this._stopped) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const delay = Math.min(this._baseInterval * 2 ** this._attempt, this._maxInterval);
|
|
16
|
+
this._attempt++;
|
|
17
|
+
this._timer = setTimeout(fn, delay);
|
|
18
|
+
}
|
|
19
|
+
reset() {
|
|
20
|
+
this._attempt = 0;
|
|
21
|
+
if (this._timer !== undefined) {
|
|
22
|
+
clearTimeout(this._timer);
|
|
23
|
+
this._timer = undefined;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
stop() {
|
|
27
|
+
this._stopped = true;
|
|
28
|
+
this.reset();
|
|
29
|
+
}
|
|
30
|
+
get attempt() {
|
|
31
|
+
return this._attempt;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=reconnect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconnect.js","sourceRoot":"","sources":["../src/reconnect.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAgB;IACpB,QAAQ,GAAG,CAAC,CAAC;IACb,MAAM,CAA4C;IAClD,YAAY,CAAS;IACrB,aAAa,CAAS;IACtB,QAAQ,GAAG,KAAK,CAAC;IAEzB,YAAY,YAAY,GAAG,IAAI,EAAE,WAAW,GAAG,KAAK;QACnD,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,QAAQ,CAAC,EAAc;QACtB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACR,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACnF,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACzB,CAAC;IACF,CAAC;IAED,IAAI;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;CACD"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
export type ThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
2
|
+
export type ConnectionState = "disconnected" | "connecting" | "authenticating" | "connected" | "reconnecting";
|
|
3
|
+
export interface InstanceInfo {
|
|
4
|
+
instanceId: string;
|
|
5
|
+
sessionId: string;
|
|
6
|
+
isStreaming: boolean;
|
|
7
|
+
model: unknown;
|
|
8
|
+
thinkingLevel: ThinkingLevel;
|
|
9
|
+
}
|
|
10
|
+
export interface SessionState {
|
|
11
|
+
model: unknown;
|
|
12
|
+
thinkingLevel: ThinkingLevel;
|
|
13
|
+
isStreaming: boolean;
|
|
14
|
+
sessionId: string;
|
|
15
|
+
sessionFile?: string;
|
|
16
|
+
messageCount: number;
|
|
17
|
+
}
|
|
18
|
+
export interface SessionStats {
|
|
19
|
+
sessionId: string;
|
|
20
|
+
messageCount: number;
|
|
21
|
+
isStreaming: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface CommandInfo {
|
|
24
|
+
name: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
source: "extension" | "prompt" | "skill";
|
|
27
|
+
location?: "user" | "project" | "path";
|
|
28
|
+
path?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface CompactionResult {
|
|
31
|
+
summary: string;
|
|
32
|
+
firstKeptEntryId: string;
|
|
33
|
+
tokensBefore: number;
|
|
34
|
+
details: Record<string, unknown>;
|
|
35
|
+
}
|
|
36
|
+
export interface PromptOptions {
|
|
37
|
+
streamingBehavior?: "steer" | "followUp";
|
|
38
|
+
images?: Array<{
|
|
39
|
+
type: "image";
|
|
40
|
+
data: string;
|
|
41
|
+
mimeType: string;
|
|
42
|
+
}>;
|
|
43
|
+
}
|
|
44
|
+
export interface AuthCommand {
|
|
45
|
+
type: "auth";
|
|
46
|
+
token: string;
|
|
47
|
+
}
|
|
48
|
+
export interface PromptCommand {
|
|
49
|
+
type: "prompt";
|
|
50
|
+
id?: string;
|
|
51
|
+
message: string;
|
|
52
|
+
streamingBehavior?: "steer" | "followUp";
|
|
53
|
+
images?: Array<{
|
|
54
|
+
type: "image";
|
|
55
|
+
data: string;
|
|
56
|
+
mimeType: string;
|
|
57
|
+
}>;
|
|
58
|
+
}
|
|
59
|
+
export interface SteerCommand {
|
|
60
|
+
type: "steer";
|
|
61
|
+
id?: string;
|
|
62
|
+
message: string;
|
|
63
|
+
}
|
|
64
|
+
export interface FollowUpCommand {
|
|
65
|
+
type: "follow_up";
|
|
66
|
+
id?: string;
|
|
67
|
+
message: string;
|
|
68
|
+
}
|
|
69
|
+
export interface AbortCommand {
|
|
70
|
+
type: "abort";
|
|
71
|
+
id?: string;
|
|
72
|
+
}
|
|
73
|
+
export interface GetStateCommand {
|
|
74
|
+
type: "get_state";
|
|
75
|
+
id?: string;
|
|
76
|
+
}
|
|
77
|
+
export interface GetMessagesCommand {
|
|
78
|
+
type: "get_messages";
|
|
79
|
+
id?: string;
|
|
80
|
+
}
|
|
81
|
+
export interface SetModelCommand {
|
|
82
|
+
type: "set_model";
|
|
83
|
+
id?: string;
|
|
84
|
+
provider: string;
|
|
85
|
+
modelId: string;
|
|
86
|
+
}
|
|
87
|
+
export interface SetThinkingLevelCommand {
|
|
88
|
+
type: "set_thinking_level";
|
|
89
|
+
id?: string;
|
|
90
|
+
level: ThinkingLevel;
|
|
91
|
+
}
|
|
92
|
+
export interface CompactCommand {
|
|
93
|
+
type: "compact";
|
|
94
|
+
id?: string;
|
|
95
|
+
customInstructions?: string;
|
|
96
|
+
}
|
|
97
|
+
export interface NewSessionCommand {
|
|
98
|
+
type: "new_session";
|
|
99
|
+
id?: string;
|
|
100
|
+
}
|
|
101
|
+
export type RpcCommand = AuthCommand | PromptCommand | SteerCommand | FollowUpCommand | AbortCommand | GetStateCommand | GetMessagesCommand | SetModelCommand | SetThinkingLevelCommand | CompactCommand | NewSessionCommand;
|
|
102
|
+
export interface RpcResponse {
|
|
103
|
+
type: "response";
|
|
104
|
+
command: string;
|
|
105
|
+
success: boolean;
|
|
106
|
+
data?: unknown;
|
|
107
|
+
error?: string;
|
|
108
|
+
id?: string;
|
|
109
|
+
}
|
|
110
|
+
export interface AuthOkResponse {
|
|
111
|
+
type: "auth_ok";
|
|
112
|
+
instanceId: string;
|
|
113
|
+
session: {
|
|
114
|
+
sessionId: string;
|
|
115
|
+
isStreaming: boolean;
|
|
116
|
+
model: unknown;
|
|
117
|
+
thinkingLevel: ThinkingLevel;
|
|
118
|
+
} | null;
|
|
119
|
+
}
|
|
120
|
+
export interface AuthErrorResponse {
|
|
121
|
+
type: "auth_error";
|
|
122
|
+
reason: string;
|
|
123
|
+
}
|
|
124
|
+
export interface AgentStartEvent {
|
|
125
|
+
type: "agent_start";
|
|
126
|
+
}
|
|
127
|
+
export interface AgentEndEvent {
|
|
128
|
+
type: "agent_end";
|
|
129
|
+
messages: unknown[];
|
|
130
|
+
}
|
|
131
|
+
export interface TurnStartEvent {
|
|
132
|
+
type: "turn_start";
|
|
133
|
+
}
|
|
134
|
+
export interface TurnEndEvent {
|
|
135
|
+
type: "turn_end";
|
|
136
|
+
message: unknown;
|
|
137
|
+
toolResults: unknown[];
|
|
138
|
+
}
|
|
139
|
+
export interface MessageStartEvent {
|
|
140
|
+
type: "message_start";
|
|
141
|
+
message: unknown;
|
|
142
|
+
}
|
|
143
|
+
export interface MessageUpdateEvent {
|
|
144
|
+
type: "message_update";
|
|
145
|
+
message: unknown;
|
|
146
|
+
assistantMessageEvent: {
|
|
147
|
+
type: string;
|
|
148
|
+
contentIndex?: number;
|
|
149
|
+
delta?: string;
|
|
150
|
+
content?: string;
|
|
151
|
+
partial?: unknown;
|
|
152
|
+
toolCall?: unknown;
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export interface MessageEndEvent {
|
|
156
|
+
type: "message_end";
|
|
157
|
+
message: unknown;
|
|
158
|
+
}
|
|
159
|
+
export interface ToolExecutionStartEvent {
|
|
160
|
+
type: "tool_execution_start";
|
|
161
|
+
toolCallId: string;
|
|
162
|
+
toolName: string;
|
|
163
|
+
args: unknown;
|
|
164
|
+
}
|
|
165
|
+
export interface ToolExecutionUpdateEvent {
|
|
166
|
+
type: "tool_execution_update";
|
|
167
|
+
toolCallId: string;
|
|
168
|
+
toolName: string;
|
|
169
|
+
args: unknown;
|
|
170
|
+
partialResult: unknown;
|
|
171
|
+
}
|
|
172
|
+
export interface ToolExecutionEndEvent {
|
|
173
|
+
type: "tool_execution_end";
|
|
174
|
+
toolCallId: string;
|
|
175
|
+
toolName: string;
|
|
176
|
+
result: unknown;
|
|
177
|
+
isError: boolean;
|
|
178
|
+
}
|
|
179
|
+
export interface ExtensionUIRequest {
|
|
180
|
+
type: "extension_ui_request";
|
|
181
|
+
id: string;
|
|
182
|
+
method: string;
|
|
183
|
+
title?: string;
|
|
184
|
+
options?: string[];
|
|
185
|
+
message?: string;
|
|
186
|
+
placeholder?: string;
|
|
187
|
+
prefill?: string;
|
|
188
|
+
notifyType?: "info" | "warning" | "error";
|
|
189
|
+
statusKey?: string;
|
|
190
|
+
statusText?: string;
|
|
191
|
+
widgetKey?: string;
|
|
192
|
+
widgetLines?: string[];
|
|
193
|
+
text?: string;
|
|
194
|
+
timeout?: number;
|
|
195
|
+
}
|
|
196
|
+
export interface ExtensionUIResponse {
|
|
197
|
+
type: "extension_ui_response";
|
|
198
|
+
id: string;
|
|
199
|
+
value?: string;
|
|
200
|
+
confirmed?: boolean;
|
|
201
|
+
cancelled?: boolean;
|
|
202
|
+
}
|
|
203
|
+
export type ServerEvent = AgentStartEvent | AgentEndEvent | TurnStartEvent | TurnEndEvent | MessageStartEvent | MessageUpdateEvent | MessageEndEvent | ToolExecutionStartEvent | ToolExecutionUpdateEvent | ToolExecutionEndEvent | ExtensionUIRequest;
|
|
204
|
+
export interface PiWebClientOptions {
|
|
205
|
+
url: string;
|
|
206
|
+
token: string;
|
|
207
|
+
autoReconnect?: boolean;
|
|
208
|
+
reconnectInterval?: number;
|
|
209
|
+
webSocket?: unknown;
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,4EAA4E"}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ifi/pi-web-client",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "Platform-agnostic TypeScript client for pi-web remote sessions. Zero dependencies.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md"
|
|
17
|
+
],
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=20.0.0"
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"clean": "node -e \"import('node:fs').then(fs => fs.rmSync('dist',{ recursive: true, force: true }))\"",
|
|
24
|
+
"build": "pnpm clean && tsc --project tsconfig.json",
|
|
25
|
+
"build:fast": "pnpm clean && tsgo --project tsconfig.json",
|
|
26
|
+
"typecheck": "tsgo --project tsconfig.json --noEmit"
|
|
27
|
+
}
|
|
28
|
+
}
|