@fragno-dev/pi-fragment 0.0.1 → 0.0.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 +39 -3
- package/dist/browser/client/react.d.ts +44 -36
- package/dist/browser/client/react.d.ts.map +1 -1
- package/dist/browser/client/react.js +105 -22
- package/dist/browser/client/react.js.map +1 -1
- package/dist/browser/client/solid.d.ts +42 -36
- package/dist/browser/client/solid.d.ts.map +1 -1
- package/dist/browser/client/solid.js +27 -13
- package/dist/browser/client/solid.js.map +1 -1
- package/dist/browser/client/svelte.d.ts +42 -36
- package/dist/browser/client/svelte.d.ts.map +1 -1
- package/dist/browser/client/svelte.js +14 -6
- package/dist/browser/client/svelte.js.map +1 -1
- package/dist/browser/client/vanilla.d.ts +99 -39
- package/dist/browser/client/vanilla.d.ts.map +1 -1
- package/dist/browser/client/vanilla.js +151 -3
- package/dist/browser/client/vanilla.js.map +1 -1
- package/dist/browser/client/vue.d.ts +54 -38
- package/dist/browser/client/vue.d.ts.map +1 -1
- package/dist/browser/client/vue.js +25 -17
- package/dist/browser/client/vue.js.map +1 -1
- package/dist/browser/{factory-DKoO_lRA.js → clients-BscY_HVe.js} +1051 -799
- package/dist/browser/clients-BscY_HVe.js.map +1 -0
- package/dist/browser/index.d.ts +3 -776
- package/dist/browser/index.js +801 -2
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/routes-CpL_YGWK.d.ts +1560 -0
- package/dist/browser/routes-CpL_YGWK.d.ts.map +1 -0
- package/dist/cli/mod.d.ts.map +1 -1
- package/dist/cli/mod.js +245 -7
- package/dist/cli/mod.js.map +1 -1
- package/dist/node/{pi → client}/clients.d.ts +46 -36
- package/dist/node/client/clients.d.ts.map +1 -0
- package/dist/node/client/clients.js +54 -0
- package/dist/node/client/clients.js.map +1 -0
- package/dist/node/client/session-controller.d.ts +31 -0
- package/dist/node/client/session-controller.d.ts.map +1 -0
- package/dist/node/client/session-controller.js +33 -0
- package/dist/node/client/session-controller.js.map +1 -0
- package/dist/node/client/session-store.d.ts +71 -0
- package/dist/node/client/session-store.d.ts.map +1 -0
- package/dist/node/client/session-store.js +637 -0
- package/dist/node/client/session-store.js.map +1 -0
- package/dist/node/debug-log.d.ts +9 -0
- package/dist/node/debug-log.d.ts.map +1 -0
- package/dist/node/debug-log.js +58 -0
- package/dist/node/debug-log.js.map +1 -0
- package/dist/node/index.d.ts +5 -4
- package/dist/node/index.js +5 -3
- package/dist/node/pi/definition.d.ts +1 -1
- package/dist/node/pi/definition.d.ts.map +1 -1
- package/dist/node/pi/dsl.d.ts +5 -2
- package/dist/node/pi/dsl.d.ts.map +1 -1
- package/dist/node/pi/dsl.js +22 -3
- package/dist/node/pi/dsl.js.map +1 -1
- package/dist/node/pi/factory.d.ts +37 -34
- package/dist/node/pi/factory.d.ts.map +1 -1
- package/dist/node/pi/factory.js.map +1 -1
- package/dist/node/pi/mappers.js +0 -1
- package/dist/node/pi/mappers.js.map +1 -1
- package/dist/node/pi/route-schemas.js +42 -10
- package/dist/node/pi/route-schemas.js.map +1 -1
- package/dist/node/pi/types.d.ts +155 -7
- package/dist/node/pi/types.d.ts.map +1 -1
- package/dist/node/pi/types.js +6 -0
- package/dist/node/pi/types.js.map +1 -0
- package/dist/node/pi/workflow/active-session.d.ts +2 -0
- package/dist/node/pi/workflow/active-session.js +107 -0
- package/dist/node/pi/workflow/active-session.js.map +1 -0
- package/dist/node/pi/workflow/agent-runner.d.ts +13 -0
- package/dist/node/pi/workflow/agent-runner.d.ts.map +1 -0
- package/dist/node/pi/workflow/agent-runner.js +228 -0
- package/dist/node/pi/workflow/agent-runner.js.map +1 -0
- package/dist/node/pi/workflow/tool-journal.js +157 -0
- package/dist/node/pi/workflow/tool-journal.js.map +1 -0
- package/dist/node/pi/workflow/workflow.d.ts +29 -0
- package/dist/node/pi/workflow/workflow.d.ts.map +1 -0
- package/dist/node/pi/workflow/workflow.js +219 -0
- package/dist/node/pi/workflow/workflow.js.map +1 -0
- package/dist/node/routes.d.ts +38 -35
- package/dist/node/routes.d.ts.map +1 -1
- package/dist/node/routes.js +203 -132
- package/dist/node/routes.js.map +1 -1
- package/dist/node/schema.js +1 -1
- package/dist/node/schema.js.map +1 -1
- package/package.json +30 -29
- package/dist/browser/client-Bk-J98pf.d.ts +0 -679
- package/dist/browser/client-Bk-J98pf.d.ts.map +0 -1
- package/dist/browser/factory-DKoO_lRA.js.map +0 -1
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/node/pi/clients.d.ts.map +0 -1
- package/dist/node/pi/clients.js +0 -18
- package/dist/node/pi/clients.js.map +0 -1
- package/dist/node/pi/workflow.d.ts +0 -31
- package/dist/node/pi/workflow.d.ts.map +0 -1
- package/dist/node/pi/workflow.js +0 -242
- package/dist/node/pi/workflow.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,12 +1,19 @@
|
|
|
1
|
+
import { PiActiveSessionProtocolMessage } from "../pi/types.js";
|
|
2
|
+
import { PiSessionStoreHookArgs, PiSessionStoreView } from "./session-controller.js";
|
|
3
|
+
import "../index.js";
|
|
1
4
|
import * as _fragno_dev_core_client0 from "@fragno-dev/core/client";
|
|
2
5
|
import { FragnoPublicClientConfig } from "@fragno-dev/core/client";
|
|
3
6
|
import * as zod from "zod";
|
|
7
|
+
import * as _mariozechner_pi_agent_core0 from "@mariozechner/pi-agent-core";
|
|
4
8
|
import * as zod_v4_core0 from "zod/v4/core";
|
|
5
9
|
import * as _fragno_dev_core_api0 from "@fragno-dev/core/api";
|
|
6
10
|
import * as _standard_schema_spec0 from "@standard-schema/spec";
|
|
7
11
|
|
|
8
|
-
//#region src/
|
|
9
|
-
|
|
12
|
+
//#region src/client/clients.d.ts
|
|
13
|
+
type PiFragmentClientConfig = FragnoPublicClientConfig & {
|
|
14
|
+
debugActiveSession?: boolean;
|
|
15
|
+
};
|
|
16
|
+
declare function createPiFragmentClients(fragnoConfig: PiFragmentClientConfig): {
|
|
10
17
|
useSessions: _fragno_dev_core_client0.FragnoClientHookData<"GET", "/sessions", zod.ZodArray<zod.ZodObject<{
|
|
11
18
|
id: zod.ZodString;
|
|
12
19
|
name: zod.ZodNullable<zod.ZodString>;
|
|
@@ -19,7 +26,6 @@ declare function createPiFragmentClients(fragnoConfig: FragnoPublicClientConfig)
|
|
|
19
26
|
waiting: "waiting";
|
|
20
27
|
}>;
|
|
21
28
|
agent: zod.ZodString;
|
|
22
|
-
workflowInstanceId: zod.ZodNullable<zod.ZodString>;
|
|
23
29
|
steeringMode: zod.ZodEnum<{
|
|
24
30
|
all: "all";
|
|
25
31
|
"one-at-a-time": "one-at-a-time";
|
|
@@ -29,7 +35,7 @@ declare function createPiFragmentClients(fragnoConfig: FragnoPublicClientConfig)
|
|
|
29
35
|
createdAt: zod.ZodDate;
|
|
30
36
|
updatedAt: zod.ZodDate;
|
|
31
37
|
}, zod_v4_core0.$strip>>, string, "limit">;
|
|
32
|
-
|
|
38
|
+
useSessionDetail: _fragno_dev_core_client0.FragnoClientHookData<"GET", "/sessions/:sessionId", zod.ZodObject<{
|
|
33
39
|
id: zod.ZodString;
|
|
34
40
|
name: zod.ZodNullable<zod.ZodString>;
|
|
35
41
|
status: zod.ZodEnum<{
|
|
@@ -41,7 +47,6 @@ declare function createPiFragmentClients(fragnoConfig: FragnoPublicClientConfig)
|
|
|
41
47
|
waiting: "waiting";
|
|
42
48
|
}>;
|
|
43
49
|
agent: zod.ZodString;
|
|
44
|
-
workflowInstanceId: zod.ZodNullable<zod.ZodString>;
|
|
45
50
|
steeringMode: zod.ZodEnum<{
|
|
46
51
|
all: "all";
|
|
47
52
|
"one-at-a-time": "one-at-a-time";
|
|
@@ -71,20 +76,10 @@ declare function createPiFragmentClients(fragnoConfig: FragnoPublicClientConfig)
|
|
|
71
76
|
type: zod.ZodLiteral<"text">;
|
|
72
77
|
text: zod.ZodString;
|
|
73
78
|
textSignature: zod.ZodOptional<zod.ZodString>;
|
|
74
|
-
}, zod_v4_core0.$strip>, zod.ZodObject<{
|
|
75
|
-
type: zod.ZodLiteral<"thinking">;
|
|
76
|
-
thinking: zod.ZodString;
|
|
77
|
-
thinkingSignature: zod.ZodOptional<zod.ZodString>;
|
|
78
79
|
}, zod_v4_core0.$strip>, zod.ZodObject<{
|
|
79
80
|
type: zod.ZodLiteral<"image">;
|
|
80
81
|
data: zod.ZodString;
|
|
81
82
|
mimeType: zod.ZodString;
|
|
82
|
-
}, zod_v4_core0.$strip>, zod.ZodObject<{
|
|
83
|
-
type: zod.ZodLiteral<"toolCall">;
|
|
84
|
-
id: zod.ZodString;
|
|
85
|
-
name: zod.ZodString;
|
|
86
|
-
arguments: zod.ZodRecord<zod.ZodString, zod.ZodUnknown>;
|
|
87
|
-
thoughtSignature: zod.ZodOptional<zod.ZodString>;
|
|
88
83
|
}, zod_v4_core0.$strip>]>>]>;
|
|
89
84
|
timestamp: zod.ZodNumber;
|
|
90
85
|
}, zod_v4_core0.$strip>, zod.ZodObject<{
|
|
@@ -97,10 +92,6 @@ declare function createPiFragmentClients(fragnoConfig: FragnoPublicClientConfig)
|
|
|
97
92
|
type: zod.ZodLiteral<"thinking">;
|
|
98
93
|
thinking: zod.ZodString;
|
|
99
94
|
thinkingSignature: zod.ZodOptional<zod.ZodString>;
|
|
100
|
-
}, zod_v4_core0.$strip>, zod.ZodObject<{
|
|
101
|
-
type: zod.ZodLiteral<"image">;
|
|
102
|
-
data: zod.ZodString;
|
|
103
|
-
mimeType: zod.ZodString;
|
|
104
95
|
}, zod_v4_core0.$strip>, zod.ZodObject<{
|
|
105
96
|
type: zod.ZodLiteral<"toolCall">;
|
|
106
97
|
id: zod.ZodString;
|
|
@@ -125,7 +116,13 @@ declare function createPiFragmentClients(fragnoConfig: FragnoPublicClientConfig)
|
|
|
125
116
|
total: zod.ZodNumber;
|
|
126
117
|
}, zod_v4_core0.$strip>;
|
|
127
118
|
}, zod_v4_core0.$strip>;
|
|
128
|
-
stopReason: zod.
|
|
119
|
+
stopReason: zod.ZodEnum<{
|
|
120
|
+
length: "length";
|
|
121
|
+
error: "error";
|
|
122
|
+
stop: "stop";
|
|
123
|
+
toolUse: "toolUse";
|
|
124
|
+
aborted: "aborted";
|
|
125
|
+
}>;
|
|
129
126
|
errorMessage: zod.ZodOptional<zod.ZodString>;
|
|
130
127
|
timestamp: zod.ZodNumber;
|
|
131
128
|
}, zod_v4_core0.$strip>, zod.ZodObject<{
|
|
@@ -136,38 +133,52 @@ declare function createPiFragmentClients(fragnoConfig: FragnoPublicClientConfig)
|
|
|
136
133
|
type: zod.ZodLiteral<"text">;
|
|
137
134
|
text: zod.ZodString;
|
|
138
135
|
textSignature: zod.ZodOptional<zod.ZodString>;
|
|
139
|
-
}, zod_v4_core0.$strip>, zod.ZodObject<{
|
|
140
|
-
type: zod.ZodLiteral<"thinking">;
|
|
141
|
-
thinking: zod.ZodString;
|
|
142
|
-
thinkingSignature: zod.ZodOptional<zod.ZodString>;
|
|
143
136
|
}, zod_v4_core0.$strip>, zod.ZodObject<{
|
|
144
137
|
type: zod.ZodLiteral<"image">;
|
|
145
138
|
data: zod.ZodString;
|
|
146
139
|
mimeType: zod.ZodString;
|
|
147
|
-
}, zod_v4_core0.$strip>, zod.ZodObject<{
|
|
148
|
-
type: zod.ZodLiteral<"toolCall">;
|
|
149
|
-
id: zod.ZodString;
|
|
150
|
-
name: zod.ZodString;
|
|
151
|
-
arguments: zod.ZodRecord<zod.ZodString, zod.ZodUnknown>;
|
|
152
|
-
thoughtSignature: zod.ZodOptional<zod.ZodString>;
|
|
153
140
|
}, zod_v4_core0.$strip>]>>;
|
|
154
141
|
details: zod.ZodOptional<zod.ZodUnknown>;
|
|
155
142
|
isError: zod.ZodBoolean;
|
|
156
143
|
timestamp: zod.ZodNumber;
|
|
157
144
|
}, zod_v4_core0.$strip>]>>;
|
|
158
|
-
|
|
145
|
+
events: zod.ZodArray<zod.ZodObject<{
|
|
146
|
+
id: zod.ZodString;
|
|
147
|
+
runNumber: zod.ZodOptional<zod.ZodNullable<zod.ZodNumber>>;
|
|
159
148
|
type: zod.ZodString;
|
|
160
|
-
|
|
149
|
+
payload: zod.ZodNullable<zod.ZodUnknown>;
|
|
150
|
+
createdAt: zod.ZodDate;
|
|
151
|
+
deliveredAt: zod.ZodNullable<zod.ZodDate>;
|
|
152
|
+
consumedByStepKey: zod.ZodNullable<zod.ZodString>;
|
|
161
153
|
}, zod_v4_core0.$strip>>;
|
|
154
|
+
trace: zod.ZodArray<zod.ZodType<_mariozechner_pi_agent_core0.AgentEvent, unknown, zod_v4_core0.$ZodTypeInternals<_mariozechner_pi_agent_core0.AgentEvent, unknown>>>;
|
|
155
|
+
turn: zod.ZodNumber;
|
|
156
|
+
phase: zod.ZodEnum<{
|
|
157
|
+
complete: "complete";
|
|
158
|
+
"waiting-for-user": "waiting-for-user";
|
|
159
|
+
"running-agent": "running-agent";
|
|
160
|
+
}>;
|
|
161
|
+
waitingFor: zod.ZodNullable<zod.ZodUnion<readonly [zod.ZodObject<{
|
|
162
|
+
type: zod.ZodLiteral<"user_message">;
|
|
163
|
+
turn: zod.ZodNumber;
|
|
164
|
+
stepKey: zod.ZodString;
|
|
165
|
+
timeoutMs: zod.ZodNullable<zod.ZodNumber>;
|
|
166
|
+
}, zod_v4_core0.$strip>, zod.ZodObject<{
|
|
167
|
+
type: zod.ZodLiteral<"assistant">;
|
|
168
|
+
turn: zod.ZodNumber;
|
|
169
|
+
stepKey: zod.ZodString;
|
|
170
|
+
}, zod_v4_core0.$strip>]>>;
|
|
162
171
|
summaries: zod.ZodArray<zod.ZodObject<{
|
|
163
172
|
turn: zod.ZodNumber;
|
|
164
173
|
assistant: zod.ZodNullable<zod.ZodAny>;
|
|
165
174
|
summary: zod.ZodNullable<zod.ZodString>;
|
|
166
175
|
}, zod_v4_core0.$strip>>;
|
|
167
|
-
}, zod_v4_core0.$strip>, "
|
|
176
|
+
}, zod_v4_core0.$strip>, "SESSION_NOT_FOUND" | "WORKFLOW_INSTANCE_MISSING", "events" | "trace" | "summaries">;
|
|
177
|
+
useSession: _fragno_dev_core_client0.FragnoStoreFactoryData<PiSessionStoreView, [args: PiSessionStoreHookArgs]>;
|
|
168
178
|
useCreateSession: _fragno_dev_core_client0.FragnoClientMutatorData<_fragno_dev_core_api0.NonGetHTTPMethod, "/sessions", _standard_schema_spec0.StandardSchemaV1<unknown, unknown> | zod.ZodObject<{
|
|
169
179
|
agent: zod.ZodString;
|
|
170
180
|
name: zod.ZodOptional<zod.ZodString>;
|
|
181
|
+
systemMessage: zod.ZodOptional<zod.ZodString>;
|
|
171
182
|
metadata: zod.ZodOptional<zod.ZodAny>;
|
|
172
183
|
tags: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
|
|
173
184
|
steeringMode: zod.ZodOptional<zod.ZodEnum<{
|
|
@@ -186,7 +197,6 @@ declare function createPiFragmentClients(fragnoConfig: FragnoPublicClientConfig)
|
|
|
186
197
|
waiting: "waiting";
|
|
187
198
|
}>;
|
|
188
199
|
agent: zod.ZodString;
|
|
189
|
-
workflowInstanceId: zod.ZodNullable<zod.ZodString>;
|
|
190
200
|
steeringMode: zod.ZodEnum<{
|
|
191
201
|
all: "all";
|
|
192
202
|
"one-at-a-time": "one-at-a-time";
|
|
@@ -207,7 +217,6 @@ declare function createPiFragmentClients(fragnoConfig: FragnoPublicClientConfig)
|
|
|
207
217
|
waiting: "waiting";
|
|
208
218
|
}>;
|
|
209
219
|
agent: zod.ZodString;
|
|
210
|
-
workflowInstanceId: zod.ZodNullable<zod.ZodString>;
|
|
211
220
|
steeringMode: zod.ZodEnum<{
|
|
212
221
|
all: "all";
|
|
213
222
|
"one-at-a-time": "one-at-a-time";
|
|
@@ -217,6 +226,7 @@ declare function createPiFragmentClients(fragnoConfig: FragnoPublicClientConfig)
|
|
|
217
226
|
createdAt: zod.ZodDate;
|
|
218
227
|
updatedAt: zod.ZodDate;
|
|
219
228
|
}, zod_v4_core0.$strip>> | undefined, string, string>;
|
|
229
|
+
useActiveSession: _fragno_dev_core_client0.FragnoClientHookData<"GET", "/sessions/:sessionId/active", zod.ZodArray<zod.ZodType<PiActiveSessionProtocolMessage, unknown, zod_v4_core0.$ZodTypeInternals<PiActiveSessionProtocolMessage, unknown>>>, "SESSION_NOT_FOUND" | "WORKFLOW_INSTANCE_MISSING", string>;
|
|
220
230
|
useSendMessage: _fragno_dev_core_client0.FragnoClientMutatorData<_fragno_dev_core_api0.NonGetHTTPMethod, "/sessions/:sessionId/messages", zod.ZodObject<{
|
|
221
231
|
text: zod.ZodString;
|
|
222
232
|
done: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -233,7 +243,7 @@ declare function createPiFragmentClients(fragnoConfig: FragnoPublicClientConfig)
|
|
|
233
243
|
complete: "complete";
|
|
234
244
|
waiting: "waiting";
|
|
235
245
|
}>;
|
|
236
|
-
}, zod_v4_core0.$strip> | undefined, "
|
|
246
|
+
}, zod_v4_core0.$strip> | undefined, "SESSION_NOT_FOUND" | "WORKFLOW_INSTANCE_MISSING" | "SESSION_NOT_READY", string>;
|
|
237
247
|
};
|
|
238
248
|
//#endregion
|
|
239
249
|
export { createPiFragmentClients };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clients.d.ts","names":[],"sources":["../../../src/client/clients.ts"],"mappings":";;;;;;;;;;;;KAOY,sBAAA,GAAyB,wBAAA;EACnC,kBAAA;AAAA;AAAA,iBAec,uBAAA,CAAwB,YAAA,EAAc,sBAAA;;QAAsB,GAAA,CAAA,SAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { piFragmentDefinition } from "../pi/definition.js";
|
|
2
|
+
import { piRoutesFactory } from "../routes.js";
|
|
3
|
+
import { createPiSessionControllerStore } from "./session-controller.js";
|
|
4
|
+
import { createClientBuilder } from "@fragno-dev/core/client";
|
|
5
|
+
|
|
6
|
+
//#region src/client/clients.ts
|
|
7
|
+
const createActiveSessionLogger = (enabled) => {
|
|
8
|
+
if (!enabled) return;
|
|
9
|
+
return (event, details) => {
|
|
10
|
+
console.log(`[pi-active] ${event}`, details ?? {});
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
function createPiFragmentClients(fragnoConfig) {
|
|
14
|
+
const builder = createClientBuilder(piFragmentDefinition, fragnoConfig, [piRoutesFactory]);
|
|
15
|
+
const useSessionDetail = builder.createHook("/sessions/:sessionId");
|
|
16
|
+
const useSendMessage = builder.createMutator("POST", "/sessions/:sessionId/messages", (invalidate, params) => {
|
|
17
|
+
const sessionId = params.pathParams.sessionId;
|
|
18
|
+
if (!sessionId) return;
|
|
19
|
+
invalidate("GET", "/sessions/:sessionId", { pathParams: { sessionId } });
|
|
20
|
+
invalidate("GET", "/sessions", {});
|
|
21
|
+
});
|
|
22
|
+
const { fetcher, defaultOptions } = builder.getFetcher();
|
|
23
|
+
const sessionStoreDependencies = {
|
|
24
|
+
createDetailStore: (sessionId) => useSessionDetail.store({ path: { sessionId } }),
|
|
25
|
+
sendMessage: ({ sessionId, text, done, steeringMode }) => useSendMessage.mutateQuery({
|
|
26
|
+
path: { sessionId },
|
|
27
|
+
body: {
|
|
28
|
+
text,
|
|
29
|
+
done,
|
|
30
|
+
steeringMode
|
|
31
|
+
}
|
|
32
|
+
}).then((result) => {
|
|
33
|
+
if (!result) throw new Error("The message mutation did not return a status response.");
|
|
34
|
+
return result;
|
|
35
|
+
}),
|
|
36
|
+
buildActiveUrl: (sessionId) => builder.buildUrl("/sessions/:sessionId/active", { path: { sessionId } }),
|
|
37
|
+
fetcher,
|
|
38
|
+
defaultOptions,
|
|
39
|
+
enableActiveStream: typeof window === "undefined" ? false : void 0,
|
|
40
|
+
activeLogger: createActiveSessionLogger(fragnoConfig.debugActiveSession)
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
useSessions: builder.createHook("/sessions"),
|
|
44
|
+
useSessionDetail,
|
|
45
|
+
useSession: builder.createStore(createPiSessionControllerStore(sessionStoreDependencies)),
|
|
46
|
+
useCreateSession: builder.createMutator("POST", "/sessions"),
|
|
47
|
+
useActiveSession: builder.createHook("/sessions/:sessionId/active"),
|
|
48
|
+
useSendMessage
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
//#endregion
|
|
53
|
+
export { createPiFragmentClients };
|
|
54
|
+
//# sourceMappingURL=clients.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clients.js","names":[],"sources":["../../../src/client/clients.ts"],"sourcesContent":["import { createClientBuilder, type FragnoPublicClientConfig } from \"@fragno-dev/core/client\";\n\nimport { piFragmentDefinition } from \"../pi/definition\";\nimport { piRoutesFactory } from \"../routes\";\nimport { createPiSessionControllerStore } from \"./session-controller\";\nimport type { CreatePiSessionStoreDependencies } from \"./session-store\";\n\nexport type PiFragmentClientConfig = FragnoPublicClientConfig & {\n debugActiveSession?: boolean;\n};\n\nconst createActiveSessionLogger = (\n enabled: boolean | undefined,\n): CreatePiSessionStoreDependencies[\"activeLogger\"] => {\n if (!enabled) {\n return undefined;\n }\n\n return (event, details) => {\n console.log(`[pi-active] ${event}`, details ?? {});\n };\n};\n\nexport function createPiFragmentClients(fragnoConfig: PiFragmentClientConfig) {\n const builder = createClientBuilder(piFragmentDefinition, fragnoConfig, [piRoutesFactory]);\n const useSessionDetail = builder.createHook(\"/sessions/:sessionId\");\n const useSendMessage = builder.createMutator(\n \"POST\",\n \"/sessions/:sessionId/messages\",\n (invalidate, params) => {\n const sessionId = params.pathParams.sessionId;\n if (!sessionId) {\n return;\n }\n\n invalidate(\"GET\", \"/sessions/:sessionId\", {\n pathParams: { sessionId },\n });\n invalidate(\"GET\", \"/sessions\", {});\n },\n );\n const { fetcher, defaultOptions } = builder.getFetcher();\n const sessionStoreDependencies = {\n createDetailStore: (sessionId) =>\n useSessionDetail.store({ path: { sessionId } }) as ReturnType<\n CreatePiSessionStoreDependencies[\"createDetailStore\"]\n >,\n sendMessage: ({ sessionId, text, done, steeringMode }) =>\n useSendMessage\n .mutateQuery({\n path: { sessionId },\n body: {\n text,\n done,\n steeringMode,\n },\n })\n .then((result) => {\n if (!result) {\n throw new Error(\"The message mutation did not return a status response.\");\n }\n return result;\n }),\n buildActiveUrl: (sessionId) =>\n builder.buildUrl(\"/sessions/:sessionId/active\", {\n path: { sessionId },\n }),\n fetcher,\n defaultOptions,\n enableActiveStream: typeof window === \"undefined\" ? false : undefined,\n activeLogger: createActiveSessionLogger(fragnoConfig.debugActiveSession),\n } satisfies CreatePiSessionStoreDependencies;\n return {\n useSessions: builder.createHook(\"/sessions\"),\n useSessionDetail,\n useSession: builder.createStore(createPiSessionControllerStore(sessionStoreDependencies)),\n useCreateSession: builder.createMutator(\"POST\", \"/sessions\"),\n useActiveSession: builder.createHook(\"/sessions/:sessionId/active\"),\n useSendMessage,\n };\n}\n"],"mappings":";;;;;;AAWA,MAAM,6BACJ,YACqD;AACrD,KAAI,CAAC,QACH;AAGF,SAAQ,OAAO,YAAY;AACzB,UAAQ,IAAI,eAAe,SAAS,WAAW,EAAE,CAAC;;;AAItD,SAAgB,wBAAwB,cAAsC;CAC5E,MAAM,UAAU,oBAAoB,sBAAsB,cAAc,CAAC,gBAAgB,CAAC;CAC1F,MAAM,mBAAmB,QAAQ,WAAW,uBAAuB;CACnE,MAAM,iBAAiB,QAAQ,cAC7B,QACA,kCACC,YAAY,WAAW;EACtB,MAAM,YAAY,OAAO,WAAW;AACpC,MAAI,CAAC,UACH;AAGF,aAAW,OAAO,wBAAwB,EACxC,YAAY,EAAE,WAAW,EAC1B,CAAC;AACF,aAAW,OAAO,aAAa,EAAE,CAAC;GAErC;CACD,MAAM,EAAE,SAAS,mBAAmB,QAAQ,YAAY;CACxD,MAAM,2BAA2B;EAC/B,oBAAoB,cAClB,iBAAiB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;EAGjD,cAAc,EAAE,WAAW,MAAM,MAAM,mBACrC,eACG,YAAY;GACX,MAAM,EAAE,WAAW;GACnB,MAAM;IACJ;IACA;IACA;IACD;GACF,CAAC,CACD,MAAM,WAAW;AAChB,OAAI,CAAC,OACH,OAAM,IAAI,MAAM,yDAAyD;AAE3E,UAAO;IACP;EACN,iBAAiB,cACf,QAAQ,SAAS,+BAA+B,EAC9C,MAAM,EAAE,WAAW,EACpB,CAAC;EACJ;EACA;EACA,oBAAoB,OAAO,WAAW,cAAc,QAAQ;EAC5D,cAAc,0BAA0B,aAAa,mBAAmB;EACzE;AACD,QAAO;EACL,aAAa,QAAQ,WAAW,YAAY;EAC5C;EACA,YAAY,QAAQ,YAAY,+BAA+B,yBAAyB,CAAC;EACzF,kBAAkB,QAAQ,cAAc,QAAQ,YAAY;EAC5D,kBAAkB,QAAQ,WAAW,8BAA8B;EACnE;EACD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { PiSessionDetail } from "../pi/types.js";
|
|
2
|
+
import { PiSessionStoreController, PiSessionStoreState } from "./session-store.js";
|
|
3
|
+
import { AgentEvent, AgentMessage } from "@mariozechner/pi-agent-core";
|
|
4
|
+
import { ReadableAtom } from "nanostores";
|
|
5
|
+
|
|
6
|
+
//#region src/client/session-controller.d.ts
|
|
7
|
+
type PiSessionStoreHookArgs = {
|
|
8
|
+
path: {
|
|
9
|
+
sessionId: string;
|
|
10
|
+
};
|
|
11
|
+
initialData?: PiSessionDetail | null;
|
|
12
|
+
};
|
|
13
|
+
type PiSessionStoreView = {
|
|
14
|
+
loading: ReadableAtom<PiSessionStoreState["loading"]>;
|
|
15
|
+
session: ReadableAtom<PiSessionStoreState["session"]>;
|
|
16
|
+
messages: ReadableAtom<AgentMessage[]>;
|
|
17
|
+
traceEvents: ReadableAtom<AgentEvent[]>;
|
|
18
|
+
runningTools: ReadableAtom<PiSessionStoreState["runningTools"]>;
|
|
19
|
+
connection: ReadableAtom<PiSessionStoreState["connection"]>;
|
|
20
|
+
statusText: ReadableAtom<PiSessionStoreState["statusText"]>;
|
|
21
|
+
readyForInput: ReadableAtom<PiSessionStoreState["readyForInput"]>;
|
|
22
|
+
sending: ReadableAtom<PiSessionStoreState["sending"]>;
|
|
23
|
+
error: ReadableAtom<PiSessionStoreState["error"]>;
|
|
24
|
+
sendError: ReadableAtom<PiSessionStoreState["sendError"]>;
|
|
25
|
+
sendMessage: PiSessionStoreController["sendMessage"];
|
|
26
|
+
refetch: PiSessionStoreController["refetch"];
|
|
27
|
+
[Symbol.dispose]: () => void;
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
export { PiSessionStoreHookArgs, PiSessionStoreView };
|
|
31
|
+
//# sourceMappingURL=session-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-controller.d.ts","names":[],"sources":["../../../src/client/session-controller.ts"],"mappings":";;;;;;KAYY,sBAAA;EACV,IAAA;IAAQ,SAAA;EAAA;EACR,WAAA,GAAc,eAAA;AAAA;AAAA,KAGJ,kBAAA;EACV,OAAA,EAAS,YAAA,CAAa,mBAAA;EACtB,OAAA,EAAS,YAAA,CAAa,mBAAA;EACtB,QAAA,EAAU,YAAA,CAAa,YAAA;EACvB,WAAA,EAAa,YAAA,CAAa,UAAA;EAC1B,YAAA,EAAc,YAAA,CAAa,mBAAA;EAC3B,UAAA,EAAY,YAAA,CAAa,mBAAA;EACzB,UAAA,EAAY,YAAA,CAAa,mBAAA;EACzB,aAAA,EAAe,YAAA,CAAa,mBAAA;EAC5B,OAAA,EAAS,YAAA,CAAa,mBAAA;EACtB,KAAA,EAAO,YAAA,CAAa,mBAAA;EACpB,SAAA,EAAW,YAAA,CAAa,mBAAA;EACxB,WAAA,EAAa,wBAAA;EACb,OAAA,EAAS,wBAAA;EAAA,CACR,MAAA,CAAO,OAAA;AAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createPiSessionStore } from "./session-store.js";
|
|
2
|
+
import { computed } from "nanostores";
|
|
3
|
+
|
|
4
|
+
//#region src/client/session-controller.ts
|
|
5
|
+
const select = (store, selector) => computed(store, selector);
|
|
6
|
+
function createPiSessionControllerStore(input) {
|
|
7
|
+
return ({ path, initialData }) => {
|
|
8
|
+
const controller = createPiSessionStore(input, {
|
|
9
|
+
sessionId: path.sessionId,
|
|
10
|
+
initialData
|
|
11
|
+
});
|
|
12
|
+
return {
|
|
13
|
+
loading: select(controller.store, (state) => state.loading),
|
|
14
|
+
session: select(controller.store, (state) => state.session),
|
|
15
|
+
messages: select(controller.store, (state) => state.messages),
|
|
16
|
+
traceEvents: select(controller.store, (state) => state.traceEvents),
|
|
17
|
+
runningTools: select(controller.store, (state) => state.runningTools),
|
|
18
|
+
connection: select(controller.store, (state) => state.connection),
|
|
19
|
+
statusText: select(controller.store, (state) => state.statusText),
|
|
20
|
+
readyForInput: select(controller.store, (state) => state.readyForInput),
|
|
21
|
+
sending: select(controller.store, (state) => state.sending),
|
|
22
|
+
error: select(controller.store, (state) => state.error),
|
|
23
|
+
sendError: select(controller.store, (state) => state.sendError),
|
|
24
|
+
sendMessage: controller.sendMessage,
|
|
25
|
+
refetch: controller.refetch,
|
|
26
|
+
[Symbol.dispose]: controller.deactivate
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
export { createPiSessionControllerStore };
|
|
33
|
+
//# sourceMappingURL=session-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-controller.js","names":[],"sources":["../../../src/client/session-controller.ts"],"sourcesContent":["import { computed, type ReadableAtom } from \"nanostores\";\n\nimport type { AgentEvent, AgentMessage } from \"@mariozechner/pi-agent-core\";\n\nimport type { PiSessionDetail } from \"../pi/types\";\nimport {\n createPiSessionStore,\n type CreatePiSessionStoreDependencies,\n type PiSessionStoreController,\n type PiSessionStoreState,\n} from \"./session-store\";\n\nexport type PiSessionStoreHookArgs = {\n path: { sessionId: string };\n initialData?: PiSessionDetail | null;\n};\n\nexport type PiSessionStoreView = {\n loading: ReadableAtom<PiSessionStoreState[\"loading\"]>;\n session: ReadableAtom<PiSessionStoreState[\"session\"]>;\n messages: ReadableAtom<AgentMessage[]>;\n traceEvents: ReadableAtom<AgentEvent[]>;\n runningTools: ReadableAtom<PiSessionStoreState[\"runningTools\"]>;\n connection: ReadableAtom<PiSessionStoreState[\"connection\"]>;\n statusText: ReadableAtom<PiSessionStoreState[\"statusText\"]>;\n readyForInput: ReadableAtom<PiSessionStoreState[\"readyForInput\"]>;\n sending: ReadableAtom<PiSessionStoreState[\"sending\"]>;\n error: ReadableAtom<PiSessionStoreState[\"error\"]>;\n sendError: ReadableAtom<PiSessionStoreState[\"sendError\"]>;\n sendMessage: PiSessionStoreController[\"sendMessage\"];\n refetch: PiSessionStoreController[\"refetch\"];\n [Symbol.dispose]: () => void;\n};\n\nconst select = <T>(\n store: ReadableAtom<PiSessionStoreState>,\n selector: (state: PiSessionStoreState) => T,\n) => computed(store, selector);\n\nexport function createPiSessionControllerStore(\n input: CreatePiSessionStoreDependencies,\n): (args: PiSessionStoreHookArgs) => PiSessionStoreView {\n return ({ path, initialData }) => {\n const controller = createPiSessionStore(input, {\n sessionId: path.sessionId,\n initialData,\n });\n\n return {\n loading: select(controller.store, (state) => state.loading),\n session: select(controller.store, (state) => state.session),\n messages: select(controller.store, (state) => state.messages),\n traceEvents: select(controller.store, (state) => state.traceEvents),\n runningTools: select(controller.store, (state) => state.runningTools),\n connection: select(controller.store, (state) => state.connection),\n statusText: select(controller.store, (state) => state.statusText),\n readyForInput: select(controller.store, (state) => state.readyForInput),\n sending: select(controller.store, (state) => state.sending),\n error: select(controller.store, (state) => state.error),\n sendError: select(controller.store, (state) => state.sendError),\n sendMessage: controller.sendMessage,\n refetch: controller.refetch,\n // React store factories may dispose during dev StrictMode or transitional rerenders.\n // Use the lighter controller cleanup here so live subscriptions are torn down without\n // permanently poisoning the session store instance.\n [Symbol.dispose]: controller.deactivate,\n };\n };\n}\n"],"mappings":";;;;AAkCA,MAAM,UACJ,OACA,aACG,SAAS,OAAO,SAAS;AAE9B,SAAgB,+BACd,OACsD;AACtD,SAAQ,EAAE,MAAM,kBAAkB;EAChC,MAAM,aAAa,qBAAqB,OAAO;GAC7C,WAAW,KAAK;GAChB;GACD,CAAC;AAEF,SAAO;GACL,SAAS,OAAO,WAAW,QAAQ,UAAU,MAAM,QAAQ;GAC3D,SAAS,OAAO,WAAW,QAAQ,UAAU,MAAM,QAAQ;GAC3D,UAAU,OAAO,WAAW,QAAQ,UAAU,MAAM,SAAS;GAC7D,aAAa,OAAO,WAAW,QAAQ,UAAU,MAAM,YAAY;GACnE,cAAc,OAAO,WAAW,QAAQ,UAAU,MAAM,aAAa;GACrE,YAAY,OAAO,WAAW,QAAQ,UAAU,MAAM,WAAW;GACjE,YAAY,OAAO,WAAW,QAAQ,UAAU,MAAM,WAAW;GACjE,eAAe,OAAO,WAAW,QAAQ,UAAU,MAAM,cAAc;GACvE,SAAS,OAAO,WAAW,QAAQ,UAAU,MAAM,QAAQ;GAC3D,OAAO,OAAO,WAAW,QAAQ,UAAU,MAAM,MAAM;GACvD,WAAW,OAAO,WAAW,QAAQ,UAAU,MAAM,UAAU;GAC/D,aAAa,WAAW;GACxB,SAAS,WAAW;IAInB,OAAO,UAAU,WAAW;GAC9B"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { PiSessionStatus } from "../pi/constants.js";
|
|
2
|
+
import { PiSessionDetail } from "../pi/types.js";
|
|
3
|
+
import { AgentEvent, AgentMessage } from "@mariozechner/pi-agent-core";
|
|
4
|
+
import { ReadableAtom } from "nanostores";
|
|
5
|
+
|
|
6
|
+
//#region src/client/session-store.d.ts
|
|
7
|
+
type QueryStoreValue<T> = {
|
|
8
|
+
loading: boolean;
|
|
9
|
+
data?: T;
|
|
10
|
+
error?: {
|
|
11
|
+
message?: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
type QueryStore<T> = ReadableAtom<QueryStoreValue<T>> & {
|
|
15
|
+
revalidate: () => void;
|
|
16
|
+
};
|
|
17
|
+
type PiLiveToolExecution = {
|
|
18
|
+
toolCallId: string;
|
|
19
|
+
toolName: string;
|
|
20
|
+
args: unknown;
|
|
21
|
+
partialResult: unknown | null;
|
|
22
|
+
};
|
|
23
|
+
type PiSessionConnectionState = "idle" | "connecting" | "listening" | "reconnecting" | "error";
|
|
24
|
+
type PiSessionStoreState = {
|
|
25
|
+
loading: boolean;
|
|
26
|
+
session: PiSessionDetail | null;
|
|
27
|
+
messages: AgentMessage[];
|
|
28
|
+
traceEvents: AgentEvent[];
|
|
29
|
+
runningTools: PiLiveToolExecution[];
|
|
30
|
+
connection: PiSessionConnectionState;
|
|
31
|
+
statusText: string | null;
|
|
32
|
+
readyForInput: boolean;
|
|
33
|
+
sending: boolean;
|
|
34
|
+
error: string | null;
|
|
35
|
+
sendError: string | null;
|
|
36
|
+
};
|
|
37
|
+
type CreatePiSessionStoreArgs = {
|
|
38
|
+
sessionId: string;
|
|
39
|
+
initialData?: PiSessionDetail | null;
|
|
40
|
+
};
|
|
41
|
+
type PiSessionStoreController = {
|
|
42
|
+
store: ReadableAtom<PiSessionStoreState>;
|
|
43
|
+
sendMessage: (input: {
|
|
44
|
+
text: string;
|
|
45
|
+
done?: boolean;
|
|
46
|
+
steeringMode?: "all" | "one-at-a-time";
|
|
47
|
+
}) => boolean;
|
|
48
|
+
refetch: () => void;
|
|
49
|
+
deactivate: () => void;
|
|
50
|
+
destroy: () => void;
|
|
51
|
+
};
|
|
52
|
+
type CreatePiSessionStoreDependencies = {
|
|
53
|
+
createDetailStore: (sessionId: string) => QueryStore<PiSessionDetail>;
|
|
54
|
+
sendMessage: (options: {
|
|
55
|
+
sessionId: string;
|
|
56
|
+
text: string;
|
|
57
|
+
done?: boolean;
|
|
58
|
+
steeringMode?: "all" | "one-at-a-time";
|
|
59
|
+
}) => Promise<{
|
|
60
|
+
status: PiSessionStatus;
|
|
61
|
+
}>;
|
|
62
|
+
buildActiveUrl: (sessionId: string) => string;
|
|
63
|
+
fetcher: typeof fetch;
|
|
64
|
+
defaultOptions?: RequestInit;
|
|
65
|
+
enableActiveStream?: boolean;
|
|
66
|
+
activeLogger?: (event: string, details?: Record<string, unknown>) => void;
|
|
67
|
+
};
|
|
68
|
+
declare function createPiSessionStore(deps: CreatePiSessionStoreDependencies, args: CreatePiSessionStoreArgs): PiSessionStoreController;
|
|
69
|
+
//#endregion
|
|
70
|
+
export { CreatePiSessionStoreArgs, PiLiveToolExecution, PiSessionConnectionState, PiSessionStoreController, PiSessionStoreState, createPiSessionStore };
|
|
71
|
+
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","names":[],"sources":["../../../src/client/session-store.ts"],"mappings":";;;;;;KAYK,eAAA;EACH,OAAA;EACA,IAAA,GAAO,CAAA;EACP,KAAA;IAAU,OAAA;EAAA;AAAA;AAAA,KAGP,UAAA,MAAgB,YAAA,CAAa,eAAA,CAAgB,CAAA;EAChD,UAAA;AAAA;AAAA,KAuBU,mBAAA;EACV,UAAA;EACA,QAAA;EACA,IAAA;EACA,aAAA;AAAA;AAAA,KAGU,wBAAA;AAAA,KAqCA,mBAAA;EACV,OAAA;EACA,OAAA,EAAS,eAAA;EACT,QAAA,EAAU,YAAA;EACV,WAAA,EAAa,UAAA;EACb,YAAA,EAAc,mBAAA;EACd,UAAA,EAAY,wBAAA;EACZ,UAAA;EACA,aAAA;EACA,OAAA;EACA,KAAA;EACA,SAAA;AAAA;AAAA,KAGU,wBAAA;EACV,SAAA;EACA,WAAA,GAAc,eAAA;AAAA;AAAA,KAGJ,wBAAA;EACV,KAAA,EAAO,YAAA,CAAa,mBAAA;EACpB,WAAA,GAAc,KAAA;IACZ,IAAA;IACA,IAAA;IACA,YAAA;EAAA;EAEF,OAAA;EACA,UAAA;EACA,OAAA;AAAA;AAAA,KAGU,gCAAA;EACV,iBAAA,GAAoB,SAAA,aAAsB,UAAA,CAAW,eAAA;EACrD,WAAA,GAAc,OAAA;IACZ,SAAA;IACA,IAAA;IACA,IAAA;IACA,YAAA;EAAA,MACI,OAAA;IAAU,MAAA,EAAQ,eAAA;EAAA;EACxB,cAAA,GAAiB,SAAA;EACjB,OAAA,SAAgB,KAAA;EAChB,cAAA,GAAiB,WAAA;EACjB,kBAAA;EACA,YAAA,IAAgB,KAAA,UAAe,OAAA,GAAU,MAAA;AAAA;AAAA,iBAogB3B,oBAAA,CACd,IAAA,EAAM,gCAAA,EACN,IAAA,EAAM,wBAAA,GACL,wBAAA"}
|