@fragno-dev/pi-harness 0.0.0-stage → 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.
Files changed (140) hide show
  1. package/LICENSE.md +16 -0
  2. package/README.md +181 -2
  3. package/dist/browser/agent-harness-event-protocol-CuKubox1.js +666 -0
  4. package/dist/browser/agent-harness-event-protocol-CuKubox1.js.map +1 -0
  5. package/dist/browser/agent-harness-event-protocol-d6mH_9n3.d.ts +261 -0
  6. package/dist/browser/agent-harness-event-protocol-d6mH_9n3.d.ts.map +1 -0
  7. package/dist/browser/client/clients.d.ts +2 -0
  8. package/dist/browser/client/clients.js +2 -0
  9. package/dist/browser/client/pi-workflow-emission-stream.d.ts +13 -0
  10. package/dist/browser/client/pi-workflow-emission-stream.d.ts.map +1 -0
  11. package/dist/browser/client/pi-workflow-emission-stream.js +29 -0
  12. package/dist/browser/client/pi-workflow-emission-stream.js.map +1 -0
  13. package/dist/browser/client/react.d.ts +147 -0
  14. package/dist/browser/client/react.d.ts.map +1 -0
  15. package/dist/browser/client/react.js +187 -0
  16. package/dist/browser/client/react.js.map +1 -0
  17. package/dist/browser/client/solid.d.ts +150 -0
  18. package/dist/browser/client/solid.d.ts.map +1 -0
  19. package/dist/browser/client/solid.js +130 -0
  20. package/dist/browser/client/solid.js.map +1 -0
  21. package/dist/browser/client/svelte.d.ts +150 -0
  22. package/dist/browser/client/svelte.d.ts.map +1 -0
  23. package/dist/browser/client/svelte.js +132 -0
  24. package/dist/browser/client/svelte.js.map +1 -0
  25. package/dist/browser/client/vanilla.d.ts +177 -0
  26. package/dist/browser/client/vanilla.d.ts.map +1 -0
  27. package/dist/browser/client/vanilla.js +159 -0
  28. package/dist/browser/client/vanilla.js.map +1 -0
  29. package/dist/browser/client/vue.d.ts +150 -0
  30. package/dist/browser/client/vue.d.ts.map +1 -0
  31. package/dist/browser/client/vue.js +128 -0
  32. package/dist/browser/client/vue.js.map +1 -0
  33. package/dist/browser/client/workflow-lofi-session-projection.d.ts +17 -0
  34. package/dist/browser/client/workflow-lofi-session-projection.d.ts.map +1 -0
  35. package/dist/browser/client/workflow-lofi-session-projection.js +107 -0
  36. package/dist/browser/client/workflow-lofi-session-projection.js.map +1 -0
  37. package/dist/browser/clients-DYXj19je.d.ts +247 -0
  38. package/dist/browser/clients-DYXj19je.d.ts.map +1 -0
  39. package/dist/browser/clients-pIAk6ClP.js +1853 -0
  40. package/dist/browser/clients-pIAk6ClP.js.map +1 -0
  41. package/dist/browser/pi/context-usage.d.ts +20 -0
  42. package/dist/browser/pi/context-usage.d.ts.map +1 -0
  43. package/dist/browser/pi/context-usage.js +84 -0
  44. package/dist/browser/pi/context-usage.js.map +1 -0
  45. package/dist/browser/pi/harness/agent-harness-event-protocol.d.ts +2 -0
  46. package/dist/browser/pi/harness/agent-harness-event-protocol.js +2 -0
  47. package/dist/browser/pi/route-schemas.d.ts +2 -0
  48. package/dist/browser/pi/route-schemas.js +130 -0
  49. package/dist/browser/pi/route-schemas.js.map +1 -0
  50. package/dist/browser/pi/workflow-session-projection.d.ts +2 -0
  51. package/dist/browser/pi/workflow-session-projection.js +2 -0
  52. package/dist/browser/route-schemas-DQB5ZR1E.d.ts +109 -0
  53. package/dist/browser/route-schemas-DQB5ZR1E.d.ts.map +1 -0
  54. package/dist/browser/types-8q4RWFXT.js +23 -0
  55. package/dist/browser/types-8q4RWFXT.js.map +1 -0
  56. package/dist/browser/types-Dk856kV1.d.ts +527 -0
  57. package/dist/browser/types-Dk856kV1.d.ts.map +1 -0
  58. package/dist/browser/workflow-session-projection-CJ4MUkpJ.js +443 -0
  59. package/dist/browser/workflow-session-projection-CJ4MUkpJ.js.map +1 -0
  60. package/dist/browser/workflow-session-projection-Dj_a79GF.d.ts +93 -0
  61. package/dist/browser/workflow-session-projection-Dj_a79GF.d.ts.map +1 -0
  62. package/dist/node/pi/compact-command-outcome-projection.js +41 -0
  63. package/dist/node/pi/compact-command-outcome-projection.js.map +1 -0
  64. package/dist/node/pi/context-usage.d.ts +20 -0
  65. package/dist/node/pi/context-usage.d.ts.map +1 -0
  66. package/dist/node/pi/context-usage.js +84 -0
  67. package/dist/node/pi/context-usage.js.map +1 -0
  68. package/dist/node/pi/definition.d.ts +535 -0
  69. package/dist/node/pi/definition.d.ts.map +1 -0
  70. package/dist/node/pi/definition.js +71 -0
  71. package/dist/node/pi/definition.js.map +1 -0
  72. package/dist/node/pi/factory.d.ts +142 -0
  73. package/dist/node/pi/factory.d.ts.map +1 -0
  74. package/dist/node/pi/factory.js +22 -0
  75. package/dist/node/pi/factory.js.map +1 -0
  76. package/dist/node/pi/harness/agent-harness-event-protocol.d.ts +261 -0
  77. package/dist/node/pi/harness/agent-harness-event-protocol.d.ts.map +1 -0
  78. package/dist/node/pi/harness/agent-harness-event-protocol.js +588 -0
  79. package/dist/node/pi/harness/agent-harness-event-protocol.js.map +1 -0
  80. package/dist/node/pi/harness/json-value.js +82 -0
  81. package/dist/node/pi/harness/json-value.js.map +1 -0
  82. package/dist/node/pi/harness/pi-operation-completed.d.ts +16 -0
  83. package/dist/node/pi/harness/pi-operation-completed.d.ts.map +1 -0
  84. package/dist/node/pi/harness/pi-operation-completed.js +71 -0
  85. package/dist/node/pi/harness/pi-operation-completed.js.map +1 -0
  86. package/dist/node/pi/harness/session-storage.d.ts +62 -0
  87. package/dist/node/pi/harness/session-storage.d.ts.map +1 -0
  88. package/dist/node/pi/harness/session-storage.js +174 -0
  89. package/dist/node/pi/harness/session-storage.js.map +1 -0
  90. package/dist/node/pi/pi-jsonl-export.d.ts +11 -0
  91. package/dist/node/pi/pi-jsonl-export.d.ts.map +1 -0
  92. package/dist/node/pi/pi-jsonl-export.js +31 -0
  93. package/dist/node/pi/pi-jsonl-export.js.map +1 -0
  94. package/dist/node/pi/route-schemas.d.ts +109 -0
  95. package/dist/node/pi/route-schemas.d.ts.map +1 -0
  96. package/dist/node/pi/route-schemas.js +130 -0
  97. package/dist/node/pi/route-schemas.js.map +1 -0
  98. package/dist/node/pi/session-command-protocol.d.ts +14 -0
  99. package/dist/node/pi/session-command-protocol.d.ts.map +1 -0
  100. package/dist/node/pi/session-command-protocol.js +25 -0
  101. package/dist/node/pi/session-command-protocol.js.map +1 -0
  102. package/dist/node/pi/session-entry-projection.js +79 -0
  103. package/dist/node/pi/session-entry-projection.js.map +1 -0
  104. package/dist/node/pi/skills.d.ts +70 -0
  105. package/dist/node/pi/skills.d.ts.map +1 -0
  106. package/dist/node/pi/skills.js +150 -0
  107. package/dist/node/pi/skills.js.map +1 -0
  108. package/dist/node/pi/tools.d.ts +12 -0
  109. package/dist/node/pi/tools.d.ts.map +1 -0
  110. package/dist/node/pi/tools.js +8 -0
  111. package/dist/node/pi/tools.js.map +1 -0
  112. package/dist/node/pi/types.d.ts +165 -0
  113. package/dist/node/pi/types.d.ts.map +1 -0
  114. package/dist/node/pi/types.js +49 -0
  115. package/dist/node/pi/types.js.map +1 -0
  116. package/dist/node/pi/wait-for-command-step.js +46 -0
  117. package/dist/node/pi/wait-for-command-step.js.map +1 -0
  118. package/dist/node/pi/workflow-session-live-projection.js +220 -0
  119. package/dist/node/pi/workflow-session-live-projection.js.map +1 -0
  120. package/dist/node/pi/workflow-session-projection.d.ts +84 -0
  121. package/dist/node/pi/workflow-session-projection.d.ts.map +1 -0
  122. package/dist/node/pi/workflow-session-projection.js +100 -0
  123. package/dist/node/pi/workflow-session-projection.js.map +1 -0
  124. package/dist/node/pi/workflows/interactive-chat-workflow.d.ts +37 -0
  125. package/dist/node/pi/workflows/interactive-chat-workflow.d.ts.map +1 -0
  126. package/dist/node/pi/workflows/interactive-chat-workflow.js +219 -0
  127. package/dist/node/pi/workflows/interactive-chat-workflow.js.map +1 -0
  128. package/dist/node/pi/workflows/workflow-agent-harness.d.ts +142 -0
  129. package/dist/node/pi/workflows/workflow-agent-harness.d.ts.map +1 -0
  130. package/dist/node/pi/workflows/workflow-agent-harness.js +450 -0
  131. package/dist/node/pi/workflows/workflow-agent-harness.js.map +1 -0
  132. package/dist/node/routes.d.ts +631 -0
  133. package/dist/node/routes.d.ts.map +1 -0
  134. package/dist/node/routes.js +355 -0
  135. package/dist/node/routes.js.map +1 -0
  136. package/dist/node/schema.d.ts +5 -0
  137. package/dist/node/schema.d.ts.map +1 -0
  138. package/dist/node/schema.js +7 -0
  139. package/dist/node/schema.js.map +1 -0
  140. package/package.json +175 -3
@@ -0,0 +1,147 @@
1
+ import { _ as QueryParamsHint, d as NonGetHTTPMethod, g as MaybeExtractPathParamsOrWiden, h as HasPathParams, m as ExtractPathParamsOrWiden, p as InferOr } from "../types-Dk856kV1.js";
2
+ import { a as FetcherValue, o as FragnoClientRequestError, t as PiFragmentClientConfig } from "../clients-DYXj19je.js";
3
+ import { d as PiHarnessFrontendAgentMessage } from "../agent-harness-event-protocol-d6mH_9n3.js";
4
+ import { ReadableAtom } from "nanostores";
5
+ import { StandardSchemaV1 } from "@standard-schema/spec";
6
+ //#region ../fragno/dist/client/react.d.ts
7
+ //#region src/client/react.d.ts
8
+ type FragnoReactHook<_TMethod extends "GET", TPath extends string, TOutputSchema extends StandardSchemaV1, TErrorCode extends string, TQueryParameters extends string> = (args?: {
9
+ path?: MaybeExtractPathParamsOrWiden<TPath, string | ReadableAtom<string>>;
10
+ query?: QueryParamsHint<TQueryParameters, string | ReadableAtom<string>>;
11
+ }) => FetcherValue<StandardSchemaV1.InferOutput<TOutputSchema>, FragnoClientRequestError<NonNullable<TErrorCode>>> & {
12
+ refetch: () => void;
13
+ };
14
+ type FragnoReactMutator<_TMethod extends NonGetHTTPMethod, TPath extends string, TInputSchema extends StandardSchemaV1 | undefined, TOutputSchema extends StandardSchemaV1 | undefined, TErrorCode extends string, TQueryParameters extends string> = () => {
15
+ mutate: ({ body, path, query }: {
16
+ body?: InferOr<TInputSchema, undefined>;
17
+ path?: HasPathParams<TPath> extends true ? ExtractPathParamsOrWiden<TPath, string | ReadableAtom<string>> : undefined;
18
+ query?: QueryParamsHint<TQueryParameters, string | ReadableAtom<string>>;
19
+ }) => Promise<InferOr<TOutputSchema, undefined>>;
20
+ loading?: boolean | undefined;
21
+ error?: FragnoClientRequestError<NonNullable<TErrorCode>[number]> | undefined;
22
+ data?: InferOr<TOutputSchema, undefined> | undefined;
23
+ };
24
+ //#endregion
25
+ //#region src/client/react.d.ts
26
+ declare function createPiFragmentClient(config?: PiFragmentClientConfig): {
27
+ useSessions: FragnoReactHook<"GET", "/workflows/:workflowName/sessions", import("zod").ZodArray<import("zod").ZodObject<{
28
+ id: import("zod").ZodString;
29
+ name: import("zod").ZodNullable<import("zod").ZodString>;
30
+ metadata: import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
31
+ workflowName: import("zod").ZodString;
32
+ createdAt: import("zod").ZodDate;
33
+ updatedAt: import("zod").ZodDate;
34
+ }, import("zod/v4/core").$strip>>, "SESSION_DATA_INTEGRITY_ERROR", "limit">;
35
+ useSessionDetail: FragnoReactHook<"GET", "/workflows/:workflowName/sessions/:sessionId", import("zod").ZodObject<{
36
+ id: import("zod").ZodString;
37
+ name: import("zod").ZodNullable<import("zod").ZodString>;
38
+ metadata: import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
39
+ workflowName: import("zod").ZodString;
40
+ createdAt: import("zod").ZodDate;
41
+ updatedAt: import("zod").ZodDate;
42
+ workflow: import("zod").ZodObject<{
43
+ status: import("zod").ZodEnum<{
44
+ active: "active";
45
+ paused: "paused";
46
+ errored: "errored";
47
+ terminated: "terminated";
48
+ complete: "complete";
49
+ waiting: "waiting";
50
+ }>;
51
+ error: import("zod").ZodOptional<import("zod").ZodObject<{
52
+ name: import("zod").ZodString;
53
+ message: import("zod").ZodString;
54
+ }, import("zod/v4/core").$strip>>;
55
+ output: import("zod").ZodOptional<import("zod").ZodAny>;
56
+ }, import("zod/v4/core").$strip>;
57
+ agent: import("zod").ZodObject<{
58
+ state: import("zod").ZodObject<{
59
+ messages: import("zod").ZodArray<import("zod").ZodType<PiHarnessFrontendAgentMessage, unknown, import("zod/v4/core").$ZodTypeInternals<PiHarnessFrontendAgentMessage, unknown>>>;
60
+ }, import("zod/v4/core").$strip>;
61
+ }, import("zod/v4/core").$strip>;
62
+ }, import("zod/v4/core").$strip>, "SESSION_DATA_INTEGRITY_ERROR" | "SESSION_NOT_FOUND" | "SESSION_DATA_UNAVAILABLE" | "WORKFLOW_INSTANCE_MISSING", string>;
63
+ useCreateSession: FragnoReactMutator<NonGetHTTPMethod, "/workflows/:workflowName/sessions", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | import("zod").ZodObject<{
64
+ name: import("zod").ZodOptional<import("zod").ZodString>;
65
+ metadata: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
66
+ input: import("zod").ZodOptional<import("zod").ZodUnknown>;
67
+ }, import("zod/v4/core").$strip> | undefined, import("zod").ZodObject<{
68
+ id: import("zod").ZodString;
69
+ name: import("zod").ZodNullable<import("zod").ZodString>;
70
+ metadata: import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
71
+ workflowName: import("zod").ZodString;
72
+ createdAt: import("zod").ZodDate;
73
+ updatedAt: import("zod").ZodDate;
74
+ }, import("zod/v4/core").$strip> | import("zod").ZodArray<import("zod").ZodObject<{
75
+ id: import("zod").ZodString;
76
+ name: import("zod").ZodNullable<import("zod").ZodString>;
77
+ metadata: import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
78
+ workflowName: import("zod").ZodString;
79
+ createdAt: import("zod").ZodDate;
80
+ updatedAt: import("zod").ZodDate;
81
+ }, import("zod/v4/core").$strip>> | undefined, "WORKFLOW_NOT_FOUND" | "WORKFLOW_PARAMS_INVALID" | "WORKFLOW_CREATE_FAILED" | "SESSION_DATA_INTEGRITY_ERROR", string>;
82
+ useCommandSession: FragnoReactMutator<NonGetHTTPMethod, "/workflows/:workflowName/sessions/:sessionId/command", import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
83
+ kind: import("zod").ZodLiteral<"prompt">;
84
+ input: import("zod").ZodObject<{
85
+ text: import("zod").ZodString;
86
+ images: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
87
+ type: import("zod").ZodLiteral<"image">;
88
+ data: import("zod").ZodBase64;
89
+ mimeType: import("zod").ZodString;
90
+ }, import("zod/v4/core").$strip>>>;
91
+ }, import("zod/v4/core").$strip>;
92
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
93
+ kind: import("zod").ZodLiteral<"skill">;
94
+ input: import("zod").ZodObject<{
95
+ name: import("zod").ZodString;
96
+ additionalInstructions: import("zod").ZodOptional<import("zod").ZodString>;
97
+ }, import("zod/v4/core").$strip>;
98
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
99
+ kind: import("zod").ZodLiteral<"promptFromTemplate">;
100
+ input: import("zod").ZodObject<{
101
+ name: import("zod").ZodString;
102
+ args: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
103
+ }, import("zod/v4/core").$strip>;
104
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
105
+ kind: import("zod").ZodLiteral<"compact">;
106
+ input: import("zod").ZodObject<{
107
+ customInstructions: import("zod").ZodOptional<import("zod").ZodString>;
108
+ }, import("zod/v4/core").$strip>;
109
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
110
+ kind: import("zod").ZodLiteral<"abort">;
111
+ reason: import("zod").ZodOptional<import("zod").ZodString>;
112
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
113
+ kind: import("zod").ZodLiteral<"steer">;
114
+ input: import("zod").ZodObject<{
115
+ text: import("zod").ZodString;
116
+ images: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
117
+ type: import("zod").ZodLiteral<"image">;
118
+ data: import("zod").ZodBase64;
119
+ mimeType: import("zod").ZodString;
120
+ }, import("zod/v4/core").$strip>>>;
121
+ }, import("zod/v4/core").$strip>;
122
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
123
+ kind: import("zod").ZodLiteral<"followUp">;
124
+ input: import("zod").ZodObject<{
125
+ text: import("zod").ZodString;
126
+ images: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
127
+ type: import("zod").ZodLiteral<"image">;
128
+ data: import("zod").ZodBase64;
129
+ mimeType: import("zod").ZodString;
130
+ }, import("zod/v4/core").$strip>>>;
131
+ }, import("zod/v4/core").$strip>;
132
+ }, import("zod/v4/core").$strip>], "kind"> | undefined, import("zod").ZodObject<{
133
+ accepted: import("zod").ZodLiteral<true>;
134
+ commandId: import("zod").ZodString;
135
+ status: import("zod").ZodEnum<{
136
+ active: "active";
137
+ paused: "paused";
138
+ errored: "errored";
139
+ terminated: "terminated";
140
+ complete: "complete";
141
+ waiting: "waiting";
142
+ }>;
143
+ }, import("zod/v4/core").$strip> | undefined, "SESSION_NOT_FOUND" | "WORKFLOW_INSTANCE_MISSING", string>;
144
+ };
145
+ //#endregion
146
+ export { createPiFragmentClient };
147
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","names":[],"sources":["../../../../fragno/dist/client/react.d.ts","../../../src/client/react.ts"],"mappings":";;;;;;;KASK,gBAAgB,wBAAwB,sBAAsB,sBAAsB,kBAAkB,2BAA2B,oCAAoC;EACxK,OAAO,8BAA8B,gBAAgB;EACrD,QAAQ,gBAAgB,2BAA2B;MAC/C,aAAa,iBAAiB,YAAY,gBAAgB,yBAAyB,YAAY;EACnG;;KAEG,mBAAmB,iBAAiB,kBAAkB,sBAAsB,qBAAqB,8BAA8B,sBAAsB,8BAA8B,2BAA2B;EACjN,WAAW,MAAM,MAAM;IACrB,OAAO,QAAQ;IACf,OAAO,cAAc,sBAAsB,yBAAyB,gBAAgB;IACpF,QAAQ,gBAAgB,2BAA2B;QAC/C,QAAQ,QAAQ;EACtB;EACA,QAAQ,yBAAyB,YAAY;EAC7C,OAAO,QAAQ;;;;iBCnBD,uBAAuB,SAAQ;eAAA"}
@@ -0,0 +1,187 @@
1
+ import { a as isReadableAtom, i as isStore, n as isGetHook, r as isMutatorHook, t as createPiFragmentClients } from "../clients-pIAk6ClP.js";
2
+ import { listenKeys } from "nanostores";
3
+ import { useCallback, useEffect, useMemo, useRef, useSyncExternalStore } from "react";
4
+ //#region ../fragno/dist/client/react.js
5
+ function createReactHook(hook) {
6
+ return ({ path, query } = {}) => {
7
+ const pathParamValues = path ? Object.values(path) : [];
8
+ const queryParamValues = query ? Object.values(query) : [];
9
+ const store = useMemoWithDependencies(() => hook.store({
10
+ path,
11
+ query
12
+ }), [
13
+ hook,
14
+ ...pathParamValues,
15
+ ...queryParamValues
16
+ ]);
17
+ const value = useStore(store);
18
+ const refetch = useCallback(() => {
19
+ store.revalidate();
20
+ }, [store]);
21
+ return useMemo(() => ({
22
+ ...value,
23
+ refetch
24
+ }), [refetch, value]);
25
+ };
26
+ }
27
+ function createReactMutator(hook) {
28
+ return () => {
29
+ return useStore(useMemo(() => hook.mutatorStore, [hook]));
30
+ };
31
+ }
32
+ function useMemoWithDependencies(factory, dependencies) {
33
+ return useMemo(factory, dependencies);
34
+ }
35
+ const isPlainObject = (value) => {
36
+ if (!value || typeof value !== "object") return false;
37
+ const prototype = Object.getPrototypeOf(value);
38
+ return prototype === Object.prototype || prototype === null;
39
+ };
40
+ function areStoreFactoryValuesEqual(left, right) {
41
+ if (Object.is(left, right)) return true;
42
+ if (Array.isArray(left) && Array.isArray(right)) return left.length === right.length && left.every((value, index) => areStoreFactoryValuesEqual(value, right[index]));
43
+ if (left instanceof Date && right instanceof Date) return left.getTime() === right.getTime();
44
+ if (isReadableAtom(left) || isReadableAtom(right)) return left === right;
45
+ if (typeof left === "function" || typeof right === "function") return left === right;
46
+ if (isPlainObject(left) && isPlainObject(right)) {
47
+ const leftKeys = Object.keys(left).toSorted();
48
+ const rightKeys = Object.keys(right).toSorted();
49
+ return leftKeys.length === rightKeys.length && leftKeys.every((key, index) => key === rightKeys[index] && areStoreFactoryValuesEqual(left[key], right[key]));
50
+ }
51
+ return false;
52
+ }
53
+ function areStoreFactoryArgsEqual(left, right) {
54
+ return left.length === right.length && left.every((value, index) => areStoreFactoryValuesEqual(value, right[index]));
55
+ }
56
+ const createReactStoreObjectView = (value, getAtomValue) => {
57
+ const atomValues = /* @__PURE__ */ new Map();
58
+ const boundMethods = /* @__PURE__ */ new Map();
59
+ return new Proxy(value, { get(target, property, _receiver) {
60
+ const propertyValue = target[property];
61
+ if (isReadableAtom(propertyValue)) {
62
+ if (atomValues.has(propertyValue)) return atomValues.get(propertyValue);
63
+ const atomValue = getAtomValue(propertyValue);
64
+ atomValues.set(propertyValue, atomValue);
65
+ return atomValue;
66
+ }
67
+ if (typeof propertyValue === "function") {
68
+ if (boundMethods.has(property)) return boundMethods.get(property);
69
+ const boundMethod = propertyValue.bind(target);
70
+ boundMethods.set(property, boundMethod);
71
+ return boundMethod;
72
+ }
73
+ return propertyValue;
74
+ } });
75
+ };
76
+ function useReactStoreValue(value) {
77
+ const atomEntries = useMemo(() => {
78
+ if (isReadableAtom(value)) return [[void 0, value]];
79
+ return Object.keys(value).flatMap((key) => {
80
+ const fieldValue = value[key];
81
+ return isReadableAtom(fieldValue) ? [[key, fieldValue]] : [];
82
+ });
83
+ }, [value]);
84
+ const snapshotRef = useRef(null);
85
+ if (snapshotRef.current === null) snapshotRef.current = atomEntries.map(([, store]) => store.get());
86
+ const getSnapshot = useCallback(() => {
87
+ const nextSnapshot = atomEntries.map(([, store]) => store.get());
88
+ const previousSnapshot = snapshotRef.current;
89
+ if (previousSnapshot !== null && previousSnapshot.length === nextSnapshot.length && previousSnapshot.every((entry, index) => Object.is(entry, nextSnapshot[index]))) return previousSnapshot;
90
+ snapshotRef.current = nextSnapshot;
91
+ return nextSnapshot;
92
+ }, [atomEntries]);
93
+ const atomValues = useSyncExternalStore(useCallback((onStoreChange) => {
94
+ const unsubscribes = atomEntries.map(([, store]) => store.listen(onStoreChange));
95
+ return () => {
96
+ for (const unsubscribe of unsubscribes) unsubscribe();
97
+ };
98
+ }, [atomEntries]), getSnapshot, getSnapshot);
99
+ return useMemo(() => {
100
+ if (isReadableAtom(value)) return atomValues[0];
101
+ return createReactStoreObjectView(value, (store) => {
102
+ const atomIndex = atomEntries.findIndex(([, entryStore]) => entryStore === store);
103
+ return atomIndex === -1 ? store.get() : atomValues[atomIndex];
104
+ });
105
+ }, [
106
+ value,
107
+ atomEntries,
108
+ atomValues
109
+ ]);
110
+ }
111
+ function createReactStore(hook) {
112
+ return (...args) => {
113
+ const pendingDisposalsRef = useRef(null);
114
+ if (pendingDisposalsRef.current === null) pendingDisposalsRef.current = /* @__PURE__ */ new Map();
115
+ const pendingDisposals = pendingDisposalsRef.current;
116
+ const stableArgsRef = useRef(args);
117
+ if (!areStoreFactoryArgsEqual(stableArgsRef.current, args)) stableArgsRef.current = args;
118
+ const stableArgs = stableArgsRef.current;
119
+ const value = useMemo(() => {
120
+ if ("factory" in hook) return hook.factory(...stableArgs);
121
+ return hook.obj;
122
+ }, [hook, stableArgs]);
123
+ useEffect(() => {
124
+ const dispose = value[Symbol.dispose];
125
+ const disposer = typeof dispose === "function" ? dispose.bind(value) : void 0;
126
+ const pendingTimeout = pendingDisposals.get(value);
127
+ if (pendingTimeout !== void 0) {
128
+ clearTimeout(pendingTimeout);
129
+ pendingDisposals.delete(value);
130
+ }
131
+ return () => {
132
+ if (!disposer) return;
133
+ const timeoutId = setTimeout(() => {
134
+ pendingDisposals.delete(value);
135
+ disposer();
136
+ }, 0);
137
+ pendingDisposals.set(value, timeoutId);
138
+ };
139
+ }, [pendingDisposals, value]);
140
+ return useReactStoreValue(value);
141
+ };
142
+ }
143
+ function createFragnoReactClient(clientObj) {
144
+ const result = {};
145
+ for (const key in clientObj) {
146
+ if (!Object.prototype.hasOwnProperty.call(clientObj, key)) continue;
147
+ const hook = clientObj[key];
148
+ if (isGetHook(hook)) result[key] = createReactHook(hook);
149
+ else if (isMutatorHook(hook)) result[key] = createReactMutator(hook);
150
+ else if (isStore(hook)) result[key] = createReactStore(hook);
151
+ else result[key] = hook;
152
+ }
153
+ return result;
154
+ }
155
+ function useStore(store, options = {}) {
156
+ const readStoreValue = useCallback(() => store.get(), [store]);
157
+ const snapshotRef = useRef(null);
158
+ if (snapshotRef.current === null) snapshotRef.current = { value: readStoreValue() };
159
+ const { keys } = options;
160
+ const subscribe = useCallback((onChange) => {
161
+ const emitChange = (value) => {
162
+ if (snapshotRef.current?.value === value) return;
163
+ snapshotRef.current = { value };
164
+ onChange();
165
+ };
166
+ emitChange(readStoreValue());
167
+ if (keys?.length) return listenKeys(store, keys, emitChange);
168
+ return store.listen(emitChange);
169
+ }, [
170
+ keys,
171
+ readStoreValue,
172
+ store
173
+ ]);
174
+ const get = () => snapshotRef.current.value;
175
+ return useSyncExternalStore(subscribe, get, () => {
176
+ return get();
177
+ });
178
+ }
179
+ //#endregion
180
+ //#region src/client/react.ts
181
+ function createPiFragmentClient(config = {}) {
182
+ return createFragnoReactClient(createPiFragmentClients(config));
183
+ }
184
+ //#endregion
185
+ export { createPiFragmentClient };
186
+
187
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","names":["isReadableAtom","hydrateFromWindow","isGetHook","isMutatorHook","isStore","listenKeys","useCallback","useEffect","useMemo","useRef","useSyncExternalStore","createReactHook","hook","path","query","pathParamValues","Object","values","queryParamValues","store","useMemoWithDependencies","value","useStore","refetch","revalidate","createReactMutator","mutatorStore","factory","dependencies","isPlainObject","prototype","getPrototypeOf","areStoreFactoryValuesEqual","left","right","is","Array","isArray","length","every","index","Date","getTime","leftKeys","keys","toSorted","rightKeys","key","areStoreFactoryArgsEqual","createReactStoreObjectView","getAtomValue","atomValues","Map","boundMethods","Proxy","get","target","property","_receiver","propertyValue","has","atomValue","set","boundMethod","bind","useReactStoreValue","atomEntries","flatMap","fieldValue","snapshotRef","current","map","getSnapshot","nextSnapshot","previousSnapshot","entry","onStoreChange","unsubscribes","listen","unsubscribe","atomIndex","findIndex","entryStore","createReactStore","args","pendingDisposalsRef","pendingDisposals","stableArgsRef","stableArgs","obj","dispose","Symbol","disposer","pendingTimeout","clearTimeout","delete","timeoutId","setTimeout","createFragnoReactClient","clientObj","result","hasOwnProperty","call","options","readStoreValue","subscribe","onChange","emitChange","FragnoHydrator","children","createFragnoReactClient","createPiFragmentClients","PiFragmentClientConfig","createPiFragmentClient","config"],"sources":["../../../../fragno/dist/client/react.js","../../../src/client/react.ts"],"sourcesContent":["import { isReadableAtom } from \"../util/nanostores.js\";\nimport { hydrateFromWindow } from \"../util/ssr.js\";\nimport { isGetHook, isMutatorHook, isStore } from \"./client.js\";\nimport { listenKeys } from \"nanostores\";\nimport { useCallback, useEffect, useMemo, useRef, useSyncExternalStore } from \"react\";\n//#region src/client/react.ts\nfunction createReactHook(hook) {\n\treturn ({ path, query } = {}) => {\n\t\tconst pathParamValues = path ? Object.values(path) : [];\n\t\tconst queryParamValues = query ? Object.values(query) : [];\n\t\tconst store = useMemoWithDependencies(() => hook.store({\n\t\t\tpath,\n\t\t\tquery\n\t\t}), [\n\t\t\thook,\n\t\t\t...pathParamValues,\n\t\t\t...queryParamValues\n\t\t]);\n\t\tconst value = useStore(store);\n\t\tconst refetch = useCallback(() => {\n\t\t\tstore.revalidate();\n\t\t}, [store]);\n\t\treturn useMemo(() => ({\n\t\t\t...value,\n\t\t\trefetch\n\t\t}), [refetch, value]);\n\t};\n}\nfunction createReactMutator(hook) {\n\treturn () => {\n\t\treturn useStore(useMemo(() => hook.mutatorStore, [hook]));\n\t};\n}\nfunction useMemoWithDependencies(factory, dependencies) {\n\treturn useMemo(factory, dependencies);\n}\nconst isPlainObject = (value) => {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === Object.prototype || prototype === null;\n};\nfunction areStoreFactoryValuesEqual(left, right) {\n\tif (Object.is(left, right)) return true;\n\tif (Array.isArray(left) && Array.isArray(right)) return left.length === right.length && left.every((value, index) => areStoreFactoryValuesEqual(value, right[index]));\n\tif (left instanceof Date && right instanceof Date) return left.getTime() === right.getTime();\n\tif (isReadableAtom(left) || isReadableAtom(right)) return left === right;\n\tif (typeof left === \"function\" || typeof right === \"function\") return left === right;\n\tif (isPlainObject(left) && isPlainObject(right)) {\n\t\tconst leftKeys = Object.keys(left).toSorted();\n\t\tconst rightKeys = Object.keys(right).toSorted();\n\t\treturn leftKeys.length === rightKeys.length && leftKeys.every((key, index) => key === rightKeys[index] && areStoreFactoryValuesEqual(left[key], right[key]));\n\t}\n\treturn false;\n}\nfunction areStoreFactoryArgsEqual(left, right) {\n\treturn left.length === right.length && left.every((value, index) => areStoreFactoryValuesEqual(value, right[index]));\n}\nconst createReactStoreObjectView = (value, getAtomValue) => {\n\tconst atomValues = /* @__PURE__ */ new Map();\n\tconst boundMethods = /* @__PURE__ */ new Map();\n\treturn new Proxy(value, { get(target, property, _receiver) {\n\t\tconst propertyValue = target[property];\n\t\tif (isReadableAtom(propertyValue)) {\n\t\t\tif (atomValues.has(propertyValue)) return atomValues.get(propertyValue);\n\t\t\tconst atomValue = getAtomValue(propertyValue);\n\t\t\tatomValues.set(propertyValue, atomValue);\n\t\t\treturn atomValue;\n\t\t}\n\t\tif (typeof propertyValue === \"function\") {\n\t\t\tif (boundMethods.has(property)) return boundMethods.get(property);\n\t\t\tconst boundMethod = propertyValue.bind(target);\n\t\t\tboundMethods.set(property, boundMethod);\n\t\t\treturn boundMethod;\n\t\t}\n\t\treturn propertyValue;\n\t} });\n};\nfunction useReactStoreValue(value) {\n\tconst atomEntries = useMemo(() => {\n\t\tif (isReadableAtom(value)) return [[void 0, value]];\n\t\treturn Object.keys(value).flatMap((key) => {\n\t\t\tconst fieldValue = value[key];\n\t\t\treturn isReadableAtom(fieldValue) ? [[key, fieldValue]] : [];\n\t\t});\n\t}, [value]);\n\tconst snapshotRef = useRef(null);\n\tif (snapshotRef.current === null) snapshotRef.current = atomEntries.map(([, store]) => store.get());\n\tconst getSnapshot = useCallback(() => {\n\t\tconst nextSnapshot = atomEntries.map(([, store]) => store.get());\n\t\tconst previousSnapshot = snapshotRef.current;\n\t\tif (previousSnapshot !== null && previousSnapshot.length === nextSnapshot.length && previousSnapshot.every((entry, index) => Object.is(entry, nextSnapshot[index]))) return previousSnapshot;\n\t\tsnapshotRef.current = nextSnapshot;\n\t\treturn nextSnapshot;\n\t}, [atomEntries]);\n\tconst atomValues = useSyncExternalStore(useCallback((onStoreChange) => {\n\t\tconst unsubscribes = atomEntries.map(([, store]) => store.listen(onStoreChange));\n\t\treturn () => {\n\t\t\tfor (const unsubscribe of unsubscribes) unsubscribe();\n\t\t};\n\t}, [atomEntries]), getSnapshot, getSnapshot);\n\treturn useMemo(() => {\n\t\tif (isReadableAtom(value)) return atomValues[0];\n\t\treturn createReactStoreObjectView(value, (store) => {\n\t\t\tconst atomIndex = atomEntries.findIndex(([, entryStore]) => entryStore === store);\n\t\t\treturn atomIndex === -1 ? store.get() : atomValues[atomIndex];\n\t\t});\n\t}, [\n\t\tvalue,\n\t\tatomEntries,\n\t\tatomValues\n\t]);\n}\nfunction createReactStore(hook) {\n\treturn ((...args) => {\n\t\tconst pendingDisposalsRef = useRef(null);\n\t\tif (pendingDisposalsRef.current === null) pendingDisposalsRef.current = /* @__PURE__ */ new Map();\n\t\tconst pendingDisposals = pendingDisposalsRef.current;\n\t\tconst stableArgsRef = useRef(args);\n\t\tif (!areStoreFactoryArgsEqual(stableArgsRef.current, args)) stableArgsRef.current = args;\n\t\tconst stableArgs = stableArgsRef.current;\n\t\tconst value = useMemo(() => {\n\t\t\tif (\"factory\" in hook) return hook.factory(...stableArgs);\n\t\t\treturn hook.obj;\n\t\t}, [hook, stableArgs]);\n\t\tuseEffect(() => {\n\t\t\tconst dispose = value[Symbol.dispose];\n\t\t\tconst disposer = typeof dispose === \"function\" ? dispose.bind(value) : void 0;\n\t\t\tconst pendingTimeout = pendingDisposals.get(value);\n\t\t\tif (pendingTimeout !== void 0) {\n\t\t\t\tclearTimeout(pendingTimeout);\n\t\t\t\tpendingDisposals.delete(value);\n\t\t\t}\n\t\t\treturn () => {\n\t\t\t\tif (!disposer) return;\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tpendingDisposals.delete(value);\n\t\t\t\t\tdisposer();\n\t\t\t\t}, 0);\n\t\t\t\tpendingDisposals.set(value, timeoutId);\n\t\t\t};\n\t\t}, [pendingDisposals, value]);\n\t\treturn useReactStoreValue(value);\n\t});\n}\nfunction createFragnoReactClient(clientObj) {\n\tconst result = {};\n\tfor (const key in clientObj) {\n\t\tif (!Object.prototype.hasOwnProperty.call(clientObj, key)) continue;\n\t\tconst hook = clientObj[key];\n\t\tif (isGetHook(hook)) result[key] = createReactHook(hook);\n\t\telse if (isMutatorHook(hook)) result[key] = createReactMutator(hook);\n\t\telse if (isStore(hook)) result[key] = createReactStore(hook);\n\t\telse result[key] = hook;\n\t}\n\treturn result;\n}\nfunction useStore(store, options = {}) {\n\tconst readStoreValue = useCallback(() => store.get(), [store]);\n\tconst snapshotRef = useRef(null);\n\tif (snapshotRef.current === null) snapshotRef.current = { value: readStoreValue() };\n\tconst { keys } = options;\n\tconst subscribe = useCallback((onChange) => {\n\t\tconst emitChange = (value) => {\n\t\t\tif (snapshotRef.current?.value === value) return;\n\t\t\tsnapshotRef.current = { value };\n\t\t\tonChange();\n\t\t};\n\t\temitChange(readStoreValue());\n\t\tif (keys?.length) return listenKeys(store, keys, emitChange);\n\t\treturn store.listen(emitChange);\n\t}, [\n\t\tkeys,\n\t\treadStoreValue,\n\t\tstore\n\t]);\n\tconst get = () => snapshotRef.current.value;\n\treturn useSyncExternalStore(subscribe, get, () => {\n\t\treturn get();\n\t});\n}\nfunction FragnoHydrator({ children }) {\n\tuseMemo(() => {\n\t\thydrateFromWindow();\n\t}, []);\n\treturn children;\n}\n//#endregion\nexport { FragnoHydrator, createFragnoReactClient, useStore };\n\n//# sourceMappingURL=react.js.map","import { createFragnoReactClient } from \"@fragno-dev/core/react\";\n\nimport { createPiFragmentClients, type PiFragmentClientConfig } from \"./clients\";\n\nexport function createPiFragmentClient(config: PiFragmentClientConfig = {}) {\n return createFragnoReactClient(createPiFragmentClients(config));\n}\n"],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import { _ as QueryParamsHint, d as NonGetHTTPMethod, g as MaybeExtractPathParamsOrWiden, p as InferOr } from "../types-Dk856kV1.js";
2
+ import { o as FragnoClientRequestError, t as PiFragmentClientConfig } from "../clients-DYXj19je.js";
3
+ import { d as PiHarnessFrontendAgentMessage } from "../agent-harness-event-protocol-d6mH_9n3.js";
4
+ import { ReadableAtom } from "nanostores";
5
+ import { Accessor } from "solid-js";
6
+ import { StandardSchemaV1 } from "@standard-schema/spec";
7
+ //#region ../fragno/dist/client/solid.d.ts
8
+ //#region src/client/solid.d.ts
9
+ type FragnoSolidHook<_TMethod extends "GET", TPath extends string, TOutputSchema extends StandardSchemaV1, TErrorCode extends string, TQueryParameters extends string> = (args?: {
10
+ path?: MaybeExtractPathParamsOrWiden<TPath, string | Accessor<string> | ReadableAtom<string>>;
11
+ query?: QueryParamsHint<TQueryParameters, string | Accessor<string> | ReadableAtom<string>>;
12
+ }) => {
13
+ data: Accessor<InferOr<TOutputSchema, undefined>>;
14
+ loading: Accessor<boolean>;
15
+ error: Accessor<FragnoClientRequestError<TErrorCode[number]> | undefined>;
16
+ };
17
+ type FragnoSolidMutator<_TMethod extends NonGetHTTPMethod, TPath extends string, TInputSchema extends StandardSchemaV1 | undefined, TOutputSchema extends StandardSchemaV1 | undefined, TErrorCode extends string, TQueryParameters extends string> = () => {
18
+ mutate: (args: {
19
+ body?: InferOr<TInputSchema, undefined>;
20
+ path?: MaybeExtractPathParamsOrWiden<TPath, string | Accessor<string> | ReadableAtom<string>>;
21
+ query?: QueryParamsHint<TQueryParameters, string | Accessor<string> | ReadableAtom<string>>;
22
+ }) => Promise<InferOr<TOutputSchema, undefined>>;
23
+ loading: Accessor<boolean | undefined>;
24
+ error: Accessor<FragnoClientRequestError<TErrorCode[number]> | undefined>;
25
+ data: Accessor<InferOr<TOutputSchema, undefined>>;
26
+ };
27
+ //#endregion
28
+ //#region src/client/solid.d.ts
29
+ declare function createPiFragmentClient(config?: PiFragmentClientConfig): {
30
+ useSessions: FragnoSolidHook<"GET", "/workflows/:workflowName/sessions", import("zod").ZodArray<import("zod").ZodObject<{
31
+ id: import("zod").ZodString;
32
+ name: import("zod").ZodNullable<import("zod").ZodString>;
33
+ metadata: import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
34
+ workflowName: import("zod").ZodString;
35
+ createdAt: import("zod").ZodDate;
36
+ updatedAt: import("zod").ZodDate;
37
+ }, import("zod/v4/core").$strip>>, "SESSION_DATA_INTEGRITY_ERROR", "limit">;
38
+ useSessionDetail: FragnoSolidHook<"GET", "/workflows/:workflowName/sessions/:sessionId", import("zod").ZodObject<{
39
+ id: import("zod").ZodString;
40
+ name: import("zod").ZodNullable<import("zod").ZodString>;
41
+ metadata: import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
42
+ workflowName: import("zod").ZodString;
43
+ createdAt: import("zod").ZodDate;
44
+ updatedAt: import("zod").ZodDate;
45
+ workflow: import("zod").ZodObject<{
46
+ status: import("zod").ZodEnum<{
47
+ active: "active";
48
+ paused: "paused";
49
+ errored: "errored";
50
+ terminated: "terminated";
51
+ complete: "complete";
52
+ waiting: "waiting";
53
+ }>;
54
+ error: import("zod").ZodOptional<import("zod").ZodObject<{
55
+ name: import("zod").ZodString;
56
+ message: import("zod").ZodString;
57
+ }, import("zod/v4/core").$strip>>;
58
+ output: import("zod").ZodOptional<import("zod").ZodAny>;
59
+ }, import("zod/v4/core").$strip>;
60
+ agent: import("zod").ZodObject<{
61
+ state: import("zod").ZodObject<{
62
+ messages: import("zod").ZodArray<import("zod").ZodType<PiHarnessFrontendAgentMessage, unknown, import("zod/v4/core").$ZodTypeInternals<PiHarnessFrontendAgentMessage, unknown>>>;
63
+ }, import("zod/v4/core").$strip>;
64
+ }, import("zod/v4/core").$strip>;
65
+ }, import("zod/v4/core").$strip>, "SESSION_DATA_INTEGRITY_ERROR" | "SESSION_NOT_FOUND" | "SESSION_DATA_UNAVAILABLE" | "WORKFLOW_INSTANCE_MISSING", string>;
66
+ useCreateSession: FragnoSolidMutator<NonGetHTTPMethod, "/workflows/:workflowName/sessions", import("@standard-schema/spec").StandardSchemaV1<unknown, unknown> | import("zod").ZodObject<{
67
+ name: import("zod").ZodOptional<import("zod").ZodString>;
68
+ metadata: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
69
+ input: import("zod").ZodOptional<import("zod").ZodUnknown>;
70
+ }, import("zod/v4/core").$strip> | undefined, import("zod").ZodObject<{
71
+ id: import("zod").ZodString;
72
+ name: import("zod").ZodNullable<import("zod").ZodString>;
73
+ metadata: import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
74
+ workflowName: import("zod").ZodString;
75
+ createdAt: import("zod").ZodDate;
76
+ updatedAt: import("zod").ZodDate;
77
+ }, import("zod/v4/core").$strip> | import("zod").ZodArray<import("zod").ZodObject<{
78
+ id: import("zod").ZodString;
79
+ name: import("zod").ZodNullable<import("zod").ZodString>;
80
+ metadata: import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
81
+ workflowName: import("zod").ZodString;
82
+ createdAt: import("zod").ZodDate;
83
+ updatedAt: import("zod").ZodDate;
84
+ }, import("zod/v4/core").$strip>> | undefined, "WORKFLOW_NOT_FOUND" | "WORKFLOW_PARAMS_INVALID" | "WORKFLOW_CREATE_FAILED" | "SESSION_DATA_INTEGRITY_ERROR", string>;
85
+ useCommandSession: FragnoSolidMutator<NonGetHTTPMethod, "/workflows/:workflowName/sessions/:sessionId/command", import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
86
+ kind: import("zod").ZodLiteral<"prompt">;
87
+ input: import("zod").ZodObject<{
88
+ text: import("zod").ZodString;
89
+ images: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
90
+ type: import("zod").ZodLiteral<"image">;
91
+ data: import("zod").ZodBase64;
92
+ mimeType: import("zod").ZodString;
93
+ }, import("zod/v4/core").$strip>>>;
94
+ }, import("zod/v4/core").$strip>;
95
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
96
+ kind: import("zod").ZodLiteral<"skill">;
97
+ input: import("zod").ZodObject<{
98
+ name: import("zod").ZodString;
99
+ additionalInstructions: import("zod").ZodOptional<import("zod").ZodString>;
100
+ }, import("zod/v4/core").$strip>;
101
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
102
+ kind: import("zod").ZodLiteral<"promptFromTemplate">;
103
+ input: import("zod").ZodObject<{
104
+ name: import("zod").ZodString;
105
+ args: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
106
+ }, import("zod/v4/core").$strip>;
107
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
108
+ kind: import("zod").ZodLiteral<"compact">;
109
+ input: import("zod").ZodObject<{
110
+ customInstructions: import("zod").ZodOptional<import("zod").ZodString>;
111
+ }, import("zod/v4/core").$strip>;
112
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
113
+ kind: import("zod").ZodLiteral<"abort">;
114
+ reason: import("zod").ZodOptional<import("zod").ZodString>;
115
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
116
+ kind: import("zod").ZodLiteral<"steer">;
117
+ input: import("zod").ZodObject<{
118
+ text: import("zod").ZodString;
119
+ images: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
120
+ type: import("zod").ZodLiteral<"image">;
121
+ data: import("zod").ZodBase64;
122
+ mimeType: import("zod").ZodString;
123
+ }, import("zod/v4/core").$strip>>>;
124
+ }, import("zod/v4/core").$strip>;
125
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
126
+ kind: import("zod").ZodLiteral<"followUp">;
127
+ input: import("zod").ZodObject<{
128
+ text: import("zod").ZodString;
129
+ images: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
130
+ type: import("zod").ZodLiteral<"image">;
131
+ data: import("zod").ZodBase64;
132
+ mimeType: import("zod").ZodString;
133
+ }, import("zod/v4/core").$strip>>>;
134
+ }, import("zod/v4/core").$strip>;
135
+ }, import("zod/v4/core").$strip>], "kind"> | undefined, import("zod").ZodObject<{
136
+ accepted: import("zod").ZodLiteral<true>;
137
+ commandId: import("zod").ZodString;
138
+ status: import("zod").ZodEnum<{
139
+ active: "active";
140
+ paused: "paused";
141
+ errored: "errored";
142
+ terminated: "terminated";
143
+ complete: "complete";
144
+ waiting: "waiting";
145
+ }>;
146
+ }, import("zod/v4/core").$strip> | undefined, "SESSION_NOT_FOUND" | "WORKFLOW_INSTANCE_MISSING", string>;
147
+ };
148
+ //#endregion
149
+ export { createPiFragmentClient };
150
+ //# sourceMappingURL=solid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid.d.ts","names":[],"sources":["../../../../fragno/dist/client/solid.d.ts","../../../src/client/solid.ts"],"mappings":";;;;;;;;KASK,gBAAgB,wBAAwB,sBAAsB,sBAAsB,kBAAkB,2BAA2B,oCAAoC;EACxK,OAAO,8BAA8B,gBAAgB,mBAAmB;EACxE,QAAQ,gBAAgB,2BAA2B,mBAAmB;;EAEtE,MAAM,SAAS,QAAQ;EACvB,SAAS;EACT,OAAO,SAAS,yBAAyB;;KAEtC,mBAAmB,iBAAiB,kBAAkB,sBAAsB,qBAAqB,8BAA8B,sBAAsB,8BAA8B,2BAA2B;EACjN,SAAS;IACP,OAAO,QAAQ;IACf,OAAO,8BAA8B,gBAAgB,mBAAmB;IACxE,QAAQ,gBAAgB,2BAA2B,mBAAmB;QAClE,QAAQ,QAAQ;EACtB,SAAS;EACT,OAAO,SAAS,yBAAyB;EACzC,MAAM,SAAS,QAAQ;;;;iBCrBT,uBAAuB,SAAQ;eAAA"}