@anvia/studio 1.3.2 → 1.3.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-CpxtfF0E.js","names":[],"sources":["../../../../client/dist/chunk-2KGXQZWA.js","../../../src/ui/app/app-errors.ts","../../../src/ui/app/modules/shared/request.ts"],"sourcesContent":["// src/transport/streams.ts\nasync function* readJsonlStream(stream) {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let completed = false;\n try {\n while (true) {\n const next = await reader.read();\n if (next.done) {\n completed = true;\n break;\n }\n buffer += decoder.decode(next.value, { stream: true });\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const value2 = line.trim();\n if (value2.length > 0) yield JSON.parse(value2);\n }\n }\n buffer += decoder.decode();\n const value = buffer.trim();\n if (value.length > 0) yield JSON.parse(value);\n } finally {\n if (!completed) await cancelReader(reader);\n reader.releaseLock();\n }\n}\nasync function* readSseStream(stream) {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let data = [];\n let completed = false;\n function parseLine(line) {\n if (line === \"\") {\n const complete = data.length === 0 ? void 0 : data.join(\"\\n\");\n data = [];\n return complete;\n }\n if (line.startsWith(\":\")) return void 0;\n const separator = line.indexOf(\":\");\n const field = separator === -1 ? line : line.slice(0, separator);\n const value = separator === -1 ? \"\" : line.slice(separator + 1).replace(/^ /, \"\");\n if (field === \"data\") data.push(value);\n return void 0;\n }\n try {\n while (true) {\n const next = await reader.read();\n if (next.done) {\n completed = true;\n break;\n }\n buffer += decoder.decode(next.value, { stream: true });\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const complete = parseLine(line);\n if (complete !== void 0) yield JSON.parse(complete);\n }\n }\n buffer += decoder.decode();\n if (buffer.length > 0) {\n const complete = parseLine(buffer);\n if (complete !== void 0) yield JSON.parse(complete);\n }\n if (data.length > 0) yield JSON.parse(data.join(\"\\n\"));\n } finally {\n if (!completed) await cancelReader(reader);\n reader.releaseLock();\n }\n}\nasync function cancelReader(reader) {\n try {\n await reader.cancel();\n } catch {\n }\n}\n\n// src/transport/fetch.ts\nvar EventStreamHttpError = class extends Error {\n constructor(response, body) {\n super(`Event stream request failed with status ${response.status}`);\n this.response = response;\n this.body = body;\n this.name = \"EventStreamHttpError\";\n }\n response;\n body;\n};\nasync function* fetchEventStream(options) {\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (fetchImpl === void 0) throw new Error(\"fetchEventStream requires a fetch implementation.\");\n const response = await fetchImpl(options.input, fetchOptions(options));\n if (!response.ok) throw new EventStreamHttpError(response, await response.text());\n options.validateResponse?.(response);\n if (response.body === null) throw new Error(\"Event stream response does not include a body.\");\n const format = options.format === void 0 || options.format === \"auto\" ? inferEventStreamFormat(response.headers.get(\"content-type\")) : options.format;\n if (format === \"sse\") {\n yield* readSseStream(response.body);\n } else {\n yield* readJsonlStream(response.body);\n }\n}\nfunction fetchOptions(options) {\n const {\n input: _input,\n format: _format,\n fetch: _fetch,\n validateResponse: _validate,\n ...init\n } = options;\n return init;\n}\nfunction inferEventStreamFormat(contentType) {\n return contentType?.toLowerCase().includes(\"text/event-stream\") ? \"sse\" : \"jsonl\";\n}\n\n// src/transport/event-transport.ts\nfunction createFetchEventTransport(options) {\n return {\n async *send(transportOptions) {\n const endpoint = typeof options.endpoint === \"function\" ? options.endpoint(transportOptions) : options.endpoint;\n const requestHeaders = await resolveHeaders(options.headers, transportOptions);\n const headers = mergeHeaders(requestHeaders, transportOptions.headers);\n const method = options.method ?? \"POST\";\n const body = await resolveBody(options.body, transportOptions, headers, method);\n const init = {\n ...options.init,\n input: endpoint,\n method,\n headers,\n format: options.format ?? \"auto\"\n };\n if (body !== void 0) init.body = body;\n if (transportOptions.abortSignal !== void 0) init.signal = transportOptions.abortSignal;\n if (options.fetch !== void 0) init.fetch = options.fetch;\n if (options.validateResponse !== void 0) init.validateResponse = options.validateResponse;\n for await (const event of fetchEventStream(init)) {\n yield options.mapEvent === void 0 ? event : options.mapEvent(event);\n }\n }\n };\n}\nfunction createDirectEventTransport(options) {\n return {\n async *send(context) {\n const iterator = options.handler(context)[Symbol.asyncIterator]();\n let closePromise;\n const close = () => {\n closePromise ??= Promise.resolve(iterator.return?.());\n return closePromise;\n };\n const onAbort = () => {\n void close();\n };\n context.abortSignal?.addEventListener(\"abort\", onAbort, { once: true });\n try {\n while (!context.abortSignal?.aborted) {\n const next = await iterator.next();\n if (next.done) break;\n yield next.value;\n }\n } finally {\n context.abortSignal?.removeEventListener(\"abort\", onAbort);\n await close();\n }\n }\n };\n}\nasync function resolveHeaders(headers, context) {\n return typeof headers === \"function\" ? headers(context) : headers;\n}\nasync function resolveBody(body, context, headers, method) {\n if (body !== void 0) return body({ ...context, headers });\n if (method.toUpperCase() === \"GET\" || method.toUpperCase() === \"HEAD\") return void 0;\n if (!headers.has(\"content-type\")) headers.set(\"content-type\", \"application/json\");\n return JSON.stringify(context.request);\n}\nfunction mergeHeaders(...values) {\n const headers = new Headers();\n for (const value of values) {\n if (value === void 0) continue;\n new Headers(value).forEach((headerValue, key) => {\n headers.set(key, headerValue);\n });\n }\n return headers;\n}\n\nexport {\n readJsonlStream,\n readSseStream,\n EventStreamHttpError,\n fetchEventStream,\n createFetchEventTransport,\n createDirectEventTransport\n};\n//# sourceMappingURL=chunk-2KGXQZWA.js.map","import { EventStreamHttpError } from \"@anvia/client/transport\";\nimport { errorMessage } from \"./modules/shared/format\";\n\nexport async function responseErrorMessage(response: Response, label: string): Promise<string> {\n let detail = \"\";\n try {\n const body = (await response.json()) as unknown;\n if (\n typeof body === \"object\" &&\n body !== null &&\n \"error\" in body &&\n typeof body.error === \"object\" &&\n body.error !== null &&\n \"message\" in body.error &&\n typeof body.error.message === \"string\"\n ) {\n detail = `: ${body.error.message}`;\n }\n } catch {\n // Ignore non-JSON error bodies.\n }\n return `${label} with HTTP ${response.status}${detail}`;\n}\n\nexport function agentRunErrorMessage(error: unknown): string {\n if (error instanceof EventStreamHttpError) {\n return error.response.status === 401\n ? \"Authentication required\"\n : `Run failed with HTTP ${error.response.status}`;\n }\n return errorMessage(error);\n}\n\nexport function eventStreamResponseErrorMessage(\n error: EventStreamHttpError,\n label: string,\n): string {\n let detail = \"\";\n try {\n const body = JSON.parse(error.body) as unknown;\n if (\n typeof body === \"object\" &&\n body !== null &&\n \"error\" in body &&\n typeof body.error === \"object\" &&\n body.error !== null &&\n \"message\" in body.error &&\n typeof body.error.message === \"string\"\n ) {\n detail = `: ${body.error.message}`;\n }\n } catch {\n // Ignore non-JSON error bodies.\n }\n return `${label} with HTTP ${error.response.status}${detail}`;\n}\n\nexport function serializedStreamErrorText(error: unknown): string {\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n try {\n return JSON.stringify(error) ?? String(error);\n } catch {\n return String(error);\n }\n}\n","import { responseErrorMessage } from \"../../app-errors\";\n\nexport async function requestJson<T>(\n url: string,\n label: string,\n signal?: AbortSignal,\n cache: RequestCache = \"default\",\n init: RequestInit = {},\n): Promise<T> {\n const request: RequestInit = {\n ...init,\n cache,\n };\n if (signal !== undefined) request.signal = signal;\n const response = await fetch(url, request);\n if (!response.ok) {\n throw new Error(await responseErrorMessage(response, label));\n }\n return (await response.json()) as T;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"request-CpxtfF0E.js","names":[],"sources":["../../../../client/dist/chunk-63JX2QNP.js","../../../../client/dist/chunk-HZZDET2H.js","../../../src/ui/app/app-errors.ts","../../../src/ui/app/modules/shared/request.ts"],"sourcesContent":["// src/transport/streams.ts\nasync function* readJsonlStream(stream) {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let completed = false;\n try {\n while (true) {\n const next = await reader.read();\n if (next.done) {\n completed = true;\n break;\n }\n buffer += decoder.decode(next.value, { stream: true });\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const value2 = line.trim();\n if (value2.length > 0) yield JSON.parse(value2);\n }\n }\n buffer += decoder.decode();\n const value = buffer.trim();\n if (value.length > 0) yield JSON.parse(value);\n } finally {\n if (!completed) await cancelReader(reader);\n reader.releaseLock();\n }\n}\nasync function* readSseStream(stream) {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let data = [];\n let completed = false;\n function parseLine(line) {\n if (line === \"\") {\n const complete = data.length === 0 ? void 0 : data.join(\"\\n\");\n data = [];\n return complete;\n }\n if (line.startsWith(\":\")) return void 0;\n const separator = line.indexOf(\":\");\n const field = separator === -1 ? line : line.slice(0, separator);\n const value = separator === -1 ? \"\" : line.slice(separator + 1).replace(/^ /, \"\");\n if (field === \"data\") data.push(value);\n return void 0;\n }\n try {\n while (true) {\n const next = await reader.read();\n if (next.done) {\n completed = true;\n break;\n }\n buffer += decoder.decode(next.value, { stream: true });\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const complete = parseLine(line);\n if (complete !== void 0) yield JSON.parse(complete);\n }\n }\n buffer += decoder.decode();\n if (buffer.length > 0) {\n const complete = parseLine(buffer);\n if (complete !== void 0) yield JSON.parse(complete);\n }\n if (data.length > 0) yield JSON.parse(data.join(\"\\n\"));\n } finally {\n if (!completed) await cancelReader(reader);\n reader.releaseLock();\n }\n}\nasync function cancelReader(reader) {\n try {\n await reader.cancel();\n } catch {\n }\n}\n\nexport {\n readJsonlStream,\n readSseStream\n};\n//# sourceMappingURL=chunk-63JX2QNP.js.map","import {\n readJsonlStream,\n readSseStream\n} from \"./chunk-63JX2QNP.js\";\n\n// src/transport/fetch.ts\nvar EventStreamHttpError = class extends Error {\n constructor(response, body) {\n super(`Event stream request failed with status ${response.status}`);\n this.response = response;\n this.body = body;\n this.name = \"EventStreamHttpError\";\n }\n response;\n body;\n};\nasync function* fetchEventStream(options) {\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (fetchImpl === void 0) throw new Error(\"fetchEventStream requires a fetch implementation.\");\n const response = await fetchImpl(options.input, fetchOptions(options));\n if (!response.ok) throw new EventStreamHttpError(response, await response.text());\n options.validateResponse?.(response);\n if (response.body === null) throw new Error(\"Event stream response does not include a body.\");\n const format = options.format === void 0 || options.format === \"auto\" ? inferEventStreamFormat(response.headers.get(\"content-type\")) : options.format;\n if (format === \"sse\") {\n yield* readSseStream(response.body);\n } else {\n yield* readJsonlStream(response.body);\n }\n}\nfunction fetchOptions(options) {\n const {\n input: _input,\n format: _format,\n fetch: _fetch,\n validateResponse: _validate,\n ...init\n } = options;\n return init;\n}\nfunction inferEventStreamFormat(contentType) {\n return contentType?.toLowerCase().includes(\"text/event-stream\") ? \"sse\" : \"jsonl\";\n}\n\n// src/transport/event-transport.ts\nfunction createFetchEventTransport(options) {\n return {\n async *send(transportOptions) {\n const endpoint = typeof options.endpoint === \"function\" ? options.endpoint(transportOptions) : options.endpoint;\n const requestHeaders = await resolveHeaders(options.headers, transportOptions);\n const headers = mergeHeaders(requestHeaders, transportOptions.headers);\n const method = options.method ?? \"POST\";\n const body = await resolveBody(options.body, transportOptions, headers, method);\n const init = {\n ...options.init,\n input: endpoint,\n method,\n headers,\n format: options.format ?? \"auto\"\n };\n if (body !== void 0) init.body = body;\n if (transportOptions.abortSignal !== void 0) init.signal = transportOptions.abortSignal;\n if (options.fetch !== void 0) init.fetch = options.fetch;\n if (options.validateResponse !== void 0) init.validateResponse = options.validateResponse;\n for await (const event of fetchEventStream(init)) {\n yield options.mapEvent === void 0 ? event : options.mapEvent(event);\n }\n }\n };\n}\nfunction createDirectEventTransport(options) {\n return {\n async *send(context) {\n const iterator = options.handler(context)[Symbol.asyncIterator]();\n let closePromise;\n const close = () => {\n closePromise ??= Promise.resolve(iterator.return?.());\n return closePromise;\n };\n const onAbort = () => {\n void close();\n };\n context.abortSignal?.addEventListener(\"abort\", onAbort, { once: true });\n try {\n while (!context.abortSignal?.aborted) {\n const next = await iterator.next();\n if (next.done) break;\n yield next.value;\n }\n } finally {\n context.abortSignal?.removeEventListener(\"abort\", onAbort);\n await close();\n }\n }\n };\n}\nasync function resolveHeaders(headers, context) {\n return typeof headers === \"function\" ? headers(context) : headers;\n}\nasync function resolveBody(body, context, headers, method) {\n if (body !== void 0) return body({ ...context, headers });\n if (method.toUpperCase() === \"GET\" || method.toUpperCase() === \"HEAD\") return void 0;\n if (!headers.has(\"content-type\")) headers.set(\"content-type\", \"application/json\");\n return JSON.stringify(context.request);\n}\nfunction mergeHeaders(...values) {\n const headers = new Headers();\n for (const value of values) {\n if (value === void 0) continue;\n new Headers(value).forEach((headerValue, key) => {\n headers.set(key, headerValue);\n });\n }\n return headers;\n}\n\nexport {\n EventStreamHttpError,\n fetchEventStream,\n createFetchEventTransport,\n createDirectEventTransport\n};\n//# sourceMappingURL=chunk-HZZDET2H.js.map","import { EventStreamHttpError } from \"@anvia/client/transport\";\nimport { errorMessage } from \"./modules/shared/format\";\n\nexport async function responseErrorMessage(response: Response, label: string): Promise<string> {\n let detail = \"\";\n try {\n const body = (await response.json()) as unknown;\n if (\n typeof body === \"object\" &&\n body !== null &&\n \"error\" in body &&\n typeof body.error === \"object\" &&\n body.error !== null &&\n \"message\" in body.error &&\n typeof body.error.message === \"string\"\n ) {\n detail = `: ${body.error.message}`;\n }\n } catch {\n // Ignore non-JSON error bodies.\n }\n return `${label} with HTTP ${response.status}${detail}`;\n}\n\nexport function agentRunErrorMessage(error: unknown): string {\n if (error instanceof EventStreamHttpError) {\n return error.response.status === 401\n ? \"Authentication required\"\n : `Run failed with HTTP ${error.response.status}`;\n }\n return errorMessage(error);\n}\n\nexport function eventStreamResponseErrorMessage(\n error: EventStreamHttpError,\n label: string,\n): string {\n let detail = \"\";\n try {\n const body = JSON.parse(error.body) as unknown;\n if (\n typeof body === \"object\" &&\n body !== null &&\n \"error\" in body &&\n typeof body.error === \"object\" &&\n body.error !== null &&\n \"message\" in body.error &&\n typeof body.error.message === \"string\"\n ) {\n detail = `: ${body.error.message}`;\n }\n } catch {\n // Ignore non-JSON error bodies.\n }\n return `${label} with HTTP ${error.response.status}${detail}`;\n}\n\nexport function serializedStreamErrorText(error: unknown): string {\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n try {\n return JSON.stringify(error) ?? String(error);\n } catch {\n return String(error);\n }\n}\n","import { responseErrorMessage } from \"../../app-errors\";\n\nexport async function requestJson<T>(\n url: string,\n label: string,\n signal?: AbortSignal,\n cache: RequestCache = \"default\",\n init: RequestInit = {},\n): Promise<T> {\n const request: RequestInit = {\n ...init,\n cache,\n };\n if (signal !== undefined) request.signal = signal;\n const response = await fetch(url, request);\n if (!response.ok) {\n throw new Error(await responseErrorMessage(response, label));\n }\n return (await response.json()) as T;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anvia/studio",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.3",
|
|
4
4
|
"description": "Studio UI and HTTP runtime for Anvia agents.",
|
|
5
5
|
"author": "anvia",
|
|
6
6
|
"license": "MIT",
|
|
@@ -45,11 +45,11 @@
|
|
|
45
45
|
"react-dom": "^19.3.0",
|
|
46
46
|
"tailwind-merge": "^3.7.0",
|
|
47
47
|
"ws": "^8.22.0",
|
|
48
|
+
"@anvia/client": "1.3.0",
|
|
48
49
|
"@anvia/graph": "1.1.5",
|
|
49
|
-
"@anvia/client": "1.2.1",
|
|
50
50
|
"@anvia/react": "1.1.4",
|
|
51
51
|
"@anvia/react-ui": "1.1.7",
|
|
52
|
-
"@anvia/server": "1.
|
|
52
|
+
"@anvia/server": "1.2.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@tailwindcss/typography": "^0.5.19",
|
|
@@ -66,10 +66,10 @@
|
|
|
66
66
|
"vite": "^8.2.2",
|
|
67
67
|
"vitest": "^4.1.11",
|
|
68
68
|
"zod": "^4.6.5",
|
|
69
|
-
"@anvia/core": "1.
|
|
69
|
+
"@anvia/core": "1.7.0"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
|
-
"@anvia/core": "^1.
|
|
72
|
+
"@anvia/core": "^1.7.0"
|
|
73
73
|
},
|
|
74
74
|
"engines": {
|
|
75
75
|
"node": ">=20.12.0"
|