@openviking/react 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/1~0.js +506 -0
  2. package/dist/2~0.js +122 -0
  3. package/dist/{g~0.js → 30~0.js} +292 -167
  4. package/dist/client/index.d.ts +2 -1
  5. package/dist/client/paths.d.ts +64 -0
  6. package/dist/client/response.d.ts +31 -0
  7. package/dist/client/sse.d.ts +39 -0
  8. package/dist/client/stream.d.ts +26 -0
  9. package/dist/client/types.d.ts +104 -0
  10. package/dist/client.js +1 -239
  11. package/dist/components/agent-connect/style.css +2 -2
  12. package/dist/components/file-browser-entries/file-browser-entries-icons.d.ts +18 -0
  13. package/dist/components/file-browser-entries/file-browser-entries.d.ts +14 -0
  14. package/dist/components/file-browser-entries/index.d.ts +1 -0
  15. package/dist/components/file-browser-entries/style.css +155 -0
  16. package/dist/components/file-browser-entries/style.js +0 -0
  17. package/dist/components/file-browser-entries/types.d.ts +45 -0
  18. package/dist/components/file-browser-entries.js +1 -0
  19. package/dist/components/file-preview/file-preview-directory.d.ts +32 -0
  20. package/dist/components/file-preview/file-preview-header.d.ts +21 -3
  21. package/dist/components/file-preview/file-preview-panels.d.ts +41 -0
  22. package/dist/components/file-preview/file-preview-state.d.ts +10 -3
  23. package/dist/components/file-preview/file-preview.d.ts +2 -1
  24. package/dist/components/file-preview/level-selection.d.ts +25 -0
  25. package/dist/components/file-preview/style.css +76 -3
  26. package/dist/components/file-preview/types.d.ts +100 -1
  27. package/dist/components/file-preview/use-directory-level.d.ts +30 -0
  28. package/dist/components/file-preview/use-file-preview-actions-context.d.ts +6 -2
  29. package/dist/components/file-preview/use-file-preview-actions.d.ts +1 -1
  30. package/dist/components/file-preview.js +1 -1
  31. package/dist/components/file-tree/file-tree-info-tooltip.d.ts +7 -7
  32. package/dist/components/file-tree/file-tree-row-context.d.ts +0 -5
  33. package/dist/components/file-tree/file-tree-row-shared.d.ts +9 -2
  34. package/dist/components/file-tree/file-tree-tooltip-surface.d.ts +8 -8
  35. package/dist/components/file-tree/style.css +71 -34
  36. package/dist/components/file-tree/types.d.ts +20 -0
  37. package/dist/components/scope-switcher/style.css +2 -2
  38. package/dist/components/style.css +312 -47
  39. package/dist/components/tui/style.css +2 -2
  40. package/dist/components/viking-bot/style.css +2 -2
  41. package/dist/file-preview-viewer~0.js +1 -1
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.js +1 -0
  44. package/dist/l~0.js +1464 -25
  45. package/dist/modules/console/style.css +2 -2
  46. package/dist/modules/file-browser/file-browser-detail-icons.d.ts +10 -0
  47. package/dist/modules/file-browser/file-browser-detail.d.ts +33 -0
  48. package/dist/modules/file-browser/file-browser-empty.d.ts +3 -0
  49. package/dist/modules/file-browser/file-browser-failure.d.ts +22 -0
  50. package/dist/modules/file-browser/file-browser-icons.d.ts +18 -0
  51. package/dist/modules/file-browser/file-browser-labels.d.ts +28 -0
  52. package/dist/modules/file-browser/file-browser-layout.d.ts +27 -0
  53. package/dist/modules/file-browser/file-browser-toolbar.d.ts +18 -0
  54. package/dist/modules/file-browser/file-browser-tree-pane.d.ts +30 -0
  55. package/dist/modules/file-browser/file-browser.d.ts +14 -5
  56. package/dist/modules/file-browser/find-result.d.ts +24 -0
  57. package/dist/modules/file-browser/fs-directories.d.ts +33 -0
  58. package/dist/modules/file-browser/fs-file-kind.d.ts +19 -0
  59. package/dist/modules/file-browser/fs-icon.d.ts +17 -0
  60. package/dist/modules/file-browser/fs-model.d.ts +106 -0
  61. package/dist/modules/file-browser/fs-page.d.ts +16 -0
  62. package/dist/modules/file-browser/fs-path.d.ts +16 -0
  63. package/dist/modules/file-browser/fs-read-directory.d.ts +20 -0
  64. package/dist/modules/file-browser/fs-scope.d.ts +22 -0
  65. package/dist/modules/file-browser/fs-stat.d.ts +25 -0
  66. package/dist/modules/file-browser/index.d.ts +3 -1
  67. package/dist/modules/file-browser/style.css +4927 -35
  68. package/dist/modules/file-browser/tree-info-copy.d.ts +15 -0
  69. package/dist/modules/file-browser/tree-info-copy.zh-CN.d.ts +15 -0
  70. package/dist/modules/file-browser/types.d.ts +189 -44
  71. package/dist/modules/file-browser/use-container-width.d.ts +17 -0
  72. package/dist/modules/file-browser/use-file-browser.d.ts +49 -0
  73. package/dist/modules/file-browser/use-fs-preview.d.ts +51 -0
  74. package/dist/modules/file-browser/use-fs-search.d.ts +35 -0
  75. package/dist/modules/file-browser/use-fs-tree.d.ts +43 -0
  76. package/dist/modules/file-browser/use-request-scope.d.ts +39 -0
  77. package/dist/modules/file-browser.js +1 -1
  78. package/dist/modules/scope-cascade/style.css +2 -2
  79. package/dist/modules/style.css +4933 -41
  80. package/dist/n~0.js +178 -74
  81. package/dist/o~0.js +103 -0
  82. package/dist/shared/components/divider/divider.d.ts +18 -0
  83. package/dist/shared/components/divider/index.d.ts +1 -0
  84. package/dist/shared/components/divider/types.d.ts +35 -0
  85. package/dist/shared/components/overlay/types.d.ts +7 -0
  86. package/dist/shared/components/{tooltip/use-tooltip-position.d.ts → overlay/use-overlay-position.d.ts} +6 -6
  87. package/dist/shared/components/popover/index.d.ts +1 -0
  88. package/dist/shared/components/popover/popover.d.ts +23 -0
  89. package/dist/shared/components/popover/types.d.ts +50 -0
  90. package/dist/shared/components/resizable/clamp.d.ts +13 -0
  91. package/dist/shared/components/resizable/index.d.ts +2 -0
  92. package/dist/shared/components/resizable/resizable-handle.d.ts +25 -0
  93. package/dist/shared/components/resizable/types.d.ts +48 -0
  94. package/dist/shared/components/tooltip/types.d.ts +5 -5
  95. package/dist/style.css +5345 -188
  96. package/package.json +6 -1
  97. package/dist/components/file-tree/file-tree-tooltip.d.ts +0 -17
  98. package/dist/modules/file-browser/file-browser-toolbar-button.d.ts +0 -10
package/dist/1~0.js ADDED
@@ -0,0 +1,506 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useMemo } from "react";
3
+ class OvClientError extends Error {
4
+ code;
5
+ statusCode;
6
+ details;
7
+ requestId;
8
+ responseBody;
9
+ constructor(options){
10
+ super(options.message, void 0 === options.cause ? void 0 : {
11
+ cause: options.cause
12
+ });
13
+ this.name = 'OvClientError';
14
+ this.code = options.code;
15
+ this.statusCode = options.statusCode;
16
+ this.details = options.details;
17
+ this.requestId = options.requestId;
18
+ this.responseBody = options.responseBody;
19
+ }
20
+ }
21
+ function isOvClientError(value) {
22
+ return value instanceof OvClientError;
23
+ }
24
+ const IDENTITY_HEADERS = {
25
+ apiKey: 'X-API-Key',
26
+ accountId: 'X-OpenViking-Account',
27
+ userId: 'X-OpenViking-User',
28
+ resourceId: 'V-Resource-Id'
29
+ };
30
+ async function evaluate(value) {
31
+ if (void 0 === value) return;
32
+ return 'function' == typeof value ? await value() : value;
33
+ }
34
+ async function resolveIdentityLayer(options) {
35
+ const layer = {};
36
+ for (const field of Object.keys(IDENTITY_HEADERS)){
37
+ const value = await evaluate(options?.[field]);
38
+ if (void 0 !== value) layer[field] = value;
39
+ }
40
+ return layer;
41
+ }
42
+ function mergeIdentityLayers(far, near) {
43
+ return {
44
+ ...far,
45
+ ...near
46
+ };
47
+ }
48
+ function toHeaders(layer) {
49
+ const out = {};
50
+ for (const field of Object.keys(IDENTITY_HEADERS)){
51
+ const value = layer[field]?.trim();
52
+ if (value) out[IDENTITY_HEADERS[field].toLowerCase()] = value;
53
+ }
54
+ return out;
55
+ }
56
+ function resolveClientOptions(options, identity) {
57
+ return {
58
+ baseURL: options.baseURL ?? '',
59
+ credentials: options.credentials ?? 'same-origin',
60
+ headers: toHeaders(identity),
61
+ signal: options.signal
62
+ };
63
+ }
64
+ function resolveRequestOptions(local, parent, mergedLayer) {
65
+ const headers = {
66
+ ...parent.headers
67
+ };
68
+ for (const field of Object.keys(IDENTITY_HEADERS)){
69
+ const value = mergedLayer[field];
70
+ if (void 0 === value) continue;
71
+ const name = IDENTITY_HEADERS[field].toLowerCase();
72
+ if (value.trim()) headers[name] = value;
73
+ else delete headers[name];
74
+ }
75
+ return {
76
+ baseURL: local?.baseURL ?? parent.baseURL,
77
+ credentials: parent.credentials,
78
+ headers,
79
+ signal: local?.signal ?? parent.signal
80
+ };
81
+ }
82
+ function joinUrl(baseURL, path) {
83
+ const prefix = baseURL.replace(/\/+$/, '');
84
+ return `${prefix}${path.startsWith('/') ? path : `/${path}`}`;
85
+ }
86
+ function buildQuery(query) {
87
+ if (!query) return '';
88
+ const params = new URLSearchParams();
89
+ for (const [key, value] of Object.entries(query))if (null != value) {
90
+ if (Array.isArray(value)) {
91
+ for (const item of value)params.append(key, String(item));
92
+ continue;
93
+ }
94
+ params.set(key, String(value));
95
+ }
96
+ const text = params.toString();
97
+ return text ? `?${text}` : '';
98
+ }
99
+ function mergeProviderConfig(inherited, local) {
100
+ const declared = {};
101
+ if (void 0 !== local.apiKey) declared.apiKey = local.apiKey;
102
+ if (void 0 !== local.accountId) declared.accountId = local.accountId;
103
+ if (void 0 !== local.userId) declared.userId = local.userId;
104
+ if (void 0 !== local.resourceId) declared.resourceId = local.resourceId;
105
+ return {
106
+ baseURL: local.baseURL ?? inherited?.baseURL,
107
+ credentials: local.credentials ?? inherited?.credentials,
108
+ signal: local.signal ?? inherited?.signal,
109
+ fetch: local.fetch ?? inherited?.fetch,
110
+ identity: {
111
+ ...inherited?.identity,
112
+ ...declared
113
+ }
114
+ };
115
+ }
116
+ function isRecord(value) {
117
+ return 'object' == typeof value && null !== value && !Array.isArray(value);
118
+ }
119
+ function readEnvelope(value) {
120
+ return isRecord(value) ? value : {};
121
+ }
122
+ function parseJson(raw) {
123
+ if (!raw.trim()) return;
124
+ try {
125
+ return JSON.parse(raw);
126
+ } catch {
127
+ return;
128
+ }
129
+ }
130
+ function isAbortError(error) {
131
+ return isRecord(error) && ('AbortError' === error.name || 'ABORT_ERR' === error.code);
132
+ }
133
+ function normalizeTransportError(error, signal) {
134
+ if (isAbortError(error) || signal?.aborted) throw error;
135
+ throw new OvClientError({
136
+ code: 'NETWORK_ERROR',
137
+ message: error instanceof Error ? error.message : 'Network request failed',
138
+ cause: error
139
+ });
140
+ }
141
+ async function readText(response, signal) {
142
+ try {
143
+ return await response.text();
144
+ } catch (error) {
145
+ normalizeTransportError(error, signal);
146
+ }
147
+ }
148
+ async function readBlob(response, signal) {
149
+ try {
150
+ return await response.blob();
151
+ } catch (error) {
152
+ normalizeTransportError(error, signal);
153
+ }
154
+ }
155
+ function toClientError(response, body, fallbackCode) {
156
+ const envelope = readEnvelope(body);
157
+ return new OvClientError({
158
+ code: envelope.error?.code ?? fallbackCode ?? `HTTP_${response.status}`,
159
+ message: envelope.error?.message ?? response.statusText,
160
+ statusCode: response.status,
161
+ details: envelope.error?.details,
162
+ requestId: response.headers.get('x-request-id') ?? void 0,
163
+ responseBody: body
164
+ });
165
+ }
166
+ function throwIfErrorEnvelope(response, body) {
167
+ const envelope = readEnvelope(body);
168
+ if ('error' !== envelope.status) return;
169
+ throw toClientError(response, body, 'UNKNOWN');
170
+ }
171
+ function parseEvent(lines) {
172
+ let data;
173
+ let event;
174
+ let id;
175
+ let retry;
176
+ for (const line of lines){
177
+ if (!line || line.startsWith(':')) continue;
178
+ const colon = line.indexOf(':');
179
+ const field = colon < 0 ? line : line.slice(0, colon);
180
+ let value = colon < 0 ? '' : line.slice(colon + 1);
181
+ if (value.startsWith(' ')) value = value.slice(1);
182
+ if ('data' === field) data = void 0 === data ? value : `${data}\n${value}`;
183
+ else if ('event' === field) event = value;
184
+ else if ('id' === field) id = value;
185
+ else if ('retry' === field) {
186
+ const parsed = Number.parseInt(value, 10);
187
+ if (Number.isFinite(parsed)) retry = parsed;
188
+ }
189
+ }
190
+ if (void 0 === data && void 0 === event && void 0 === id) return;
191
+ const result = {
192
+ data: data ?? ''
193
+ };
194
+ if (void 0 !== event) result.event = event;
195
+ if (void 0 !== id) result.id = id;
196
+ if (void 0 !== retry) result.retry = retry;
197
+ return result;
198
+ }
199
+ function createDecoder() {
200
+ if ("u" > typeof TextDecoderStream) return new TextDecoderStream();
201
+ const decoder = new TextDecoder('utf-8');
202
+ return new TransformStream({
203
+ transform (bytes, controller) {
204
+ controller.enqueue(decoder.decode(bytes, {
205
+ stream: true
206
+ }));
207
+ },
208
+ flush (controller) {
209
+ const rest = decoder.decode();
210
+ if (rest) controller.enqueue(rest);
211
+ }
212
+ });
213
+ }
214
+ function decodeEventStream(body) {
215
+ let line = '';
216
+ let block = [];
217
+ let skipLf = false;
218
+ return body.pipeThrough(createDecoder()).pipeThrough(new TransformStream({
219
+ transform (chunk, controller) {
220
+ const finishLine = ()=>{
221
+ if ('' === line) {
222
+ const parsed = parseEvent(block);
223
+ block = [];
224
+ if (parsed) controller.enqueue(parsed);
225
+ return;
226
+ }
227
+ block.push(line);
228
+ line = '';
229
+ };
230
+ for (const char of chunk)if ('\r' === char) {
231
+ finishLine();
232
+ skipLf = true;
233
+ } else if ('\n' === char) if (skipLf) skipLf = false;
234
+ else finishLine();
235
+ else {
236
+ skipLf = false;
237
+ line += char;
238
+ }
239
+ },
240
+ flush (controller) {
241
+ if ('' !== line) block.push(line);
242
+ line = '';
243
+ const parsed = parseEvent(block);
244
+ block = [];
245
+ if (parsed) controller.enqueue(parsed);
246
+ }
247
+ }));
248
+ }
249
+ const EVENT_STREAM = 'text/event-stream';
250
+ async function openStream(spec, { send, resolveFor, defaults }) {
251
+ const controller = new AbortController();
252
+ let releaseAbort;
253
+ const aborted = new Promise((resolve)=>{
254
+ releaseAbort = ()=>resolve('aborted');
255
+ });
256
+ const stop = ()=>{
257
+ releaseAbort?.();
258
+ controller.abort();
259
+ };
260
+ const resolved = await resolveFor(defaults, spec.options);
261
+ const callerSignals = [
262
+ resolved.signal,
263
+ spec.options?.signal
264
+ ].filter((candidate)=>Boolean(candidate));
265
+ let onCallerAbort = ()=>stop();
266
+ const forward = ()=>onCallerAbort();
267
+ for (const callerSignal of callerSignals){
268
+ if (callerSignal.aborted) {
269
+ forward();
270
+ break;
271
+ }
272
+ callerSignal.addEventListener('abort', forward, {
273
+ once: true
274
+ });
275
+ }
276
+ const detach = ()=>{
277
+ for (const callerSignal of callerSignals)callerSignal.removeEventListener('abort', forward);
278
+ };
279
+ let response;
280
+ try {
281
+ ({ response } = await send(spec, {
282
+ accept: EVENT_STREAM,
283
+ ...spec.headers
284
+ }, controller.signal, resolved));
285
+ } catch (error) {
286
+ detach();
287
+ throw error;
288
+ }
289
+ let body;
290
+ try {
291
+ if (!response.ok) {
292
+ const raw = await readText(response, controller.signal);
293
+ throw toClientError(response, parseJson(raw) ?? raw);
294
+ }
295
+ const contentType = response.headers.get('content-type') ?? '';
296
+ if (!contentType.includes(EVENT_STREAM) || !response.body) {
297
+ const envelope = parseJson(await readText(response, controller.signal));
298
+ if (void 0 !== envelope) throwIfErrorEnvelope(response, envelope);
299
+ throw new OvClientError({
300
+ code: 'UNEXPECTED_CONTENT_TYPE',
301
+ message: `Expected ${EVENT_STREAM}, got ${contentType || 'no content type'}`,
302
+ statusCode: response.status,
303
+ requestId: response.headers.get('x-request-id') ?? void 0,
304
+ responseBody: envelope
305
+ });
306
+ }
307
+ body = response.body;
308
+ } catch (error) {
309
+ detach();
310
+ throw error;
311
+ }
312
+ const reader = decodeEventStream(body).getReader();
313
+ let released = false;
314
+ const release = ()=>{
315
+ if (released) return;
316
+ released = true;
317
+ detach();
318
+ reader.cancel().catch(()=>{});
319
+ };
320
+ onCallerAbort = ()=>{
321
+ stop();
322
+ release();
323
+ };
324
+ if (controller.signal.aborted) release();
325
+ async function* iterate() {
326
+ try {
327
+ for(;;){
328
+ const next = await Promise.race([
329
+ reader.read(),
330
+ aborted
331
+ ]);
332
+ if ('aborted' === next) return;
333
+ if (next.done) return;
334
+ yield next.value;
335
+ }
336
+ } catch (error) {
337
+ if (isAbortError(error)) return;
338
+ throw error;
339
+ } finally{
340
+ release();
341
+ }
342
+ }
343
+ return {
344
+ abort: ()=>{
345
+ stop();
346
+ release();
347
+ },
348
+ [Symbol.asyncIterator]: iterate
349
+ };
350
+ }
351
+ async function client_resolveFor(defaults, override) {
352
+ const baseLayer = await resolveIdentityLayer(defaults);
353
+ const localLayer = await resolveIdentityLayer(override);
354
+ const parent = resolveClientOptions(defaults, baseLayer);
355
+ return resolveRequestOptions(override, parent, mergeIdentityLayers(baseLayer, localLayer));
356
+ }
357
+ function buildRequest(effective, spec, headers) {
358
+ const hasBody = void 0 !== spec.body;
359
+ return {
360
+ url: joinUrl(effective.baseURL, spec.path) + buildQuery(spec.query),
361
+ init: {
362
+ method: spec.method,
363
+ headers: hasBody ? {
364
+ 'content-type': 'application/json',
365
+ ...headers
366
+ } : headers,
367
+ body: hasBody ? JSON.stringify(spec.body) : void 0,
368
+ credentials: effective.credentials
369
+ }
370
+ };
371
+ }
372
+ function createOvClient(options = {}) {
373
+ const fetchImpl = options.fetch ?? globalThis.fetch;
374
+ if (!fetchImpl) throw new Error('createOvClient needs a fetch implementation. Pass `fetch` on platforms without a global one.');
375
+ const defaults = options;
376
+ async function send(spec, headers, signal, resolved) {
377
+ const effective = resolved ?? await client_resolveFor(defaults, spec.options);
378
+ const { url, init } = buildRequest(effective, spec, {
379
+ ...headers,
380
+ ...effective.headers
381
+ });
382
+ const active = signal ?? effective.signal;
383
+ try {
384
+ return {
385
+ response: await fetchImpl(url, {
386
+ ...init,
387
+ signal: active
388
+ }),
389
+ effective
390
+ };
391
+ } catch (error) {
392
+ normalizeTransportError(error, active);
393
+ }
394
+ }
395
+ async function requestJson(spec) {
396
+ const { response, effective } = await send(spec);
397
+ const raw = await readText(response, effective.signal);
398
+ const parsed = parseJson(raw);
399
+ const body = void 0 !== parsed ? parsed : raw.trim() ? raw : void 0;
400
+ if (!response.ok) throw toClientError(response, body);
401
+ throwIfErrorEnvelope(response, body);
402
+ const envelope = readEnvelope(body);
403
+ return {
404
+ result: 'result' in envelope ? envelope.result : body,
405
+ hasMore: true === envelope.has_more
406
+ };
407
+ }
408
+ const client = {
409
+ get baseURL () {
410
+ return defaults.baseURL ?? '';
411
+ },
412
+ async request (spec) {
413
+ if ('blob' === spec.responseType) {
414
+ const { response, effective } = await send(spec);
415
+ if (!response.ok) {
416
+ const raw = await readText(response, effective.signal);
417
+ throw toClientError(response, parseJson(raw) ?? raw);
418
+ }
419
+ return await readBlob(response, effective.signal);
420
+ }
421
+ const { result } = await requestJson(spec);
422
+ return result;
423
+ },
424
+ requestEnvelope (spec) {
425
+ if ('blob' === spec.responseType) return Promise.reject(new OvClientError({
426
+ code: 'INVALID_REQUEST',
427
+ message: 'requestEnvelope does not support responseType: blob'
428
+ }));
429
+ return requestJson(spec);
430
+ },
431
+ stream (spec) {
432
+ return openStream(spec, {
433
+ send,
434
+ resolveFor: client_resolveFor,
435
+ defaults
436
+ });
437
+ }
438
+ };
439
+ return client;
440
+ }
441
+ const OvClientContext = /*#__PURE__*/ createContext(null);
442
+ function OpenVikingProvider({ baseURL, apiKey, accountId, userId, resourceId, credentials, signal, fetch, children }) {
443
+ const parent = useContext(OvClientContext);
444
+ const value = useMemo(()=>{
445
+ const base = mergeProviderConfig(parent?.base, {
446
+ baseURL,
447
+ apiKey,
448
+ accountId,
449
+ userId,
450
+ resourceId,
451
+ credentials,
452
+ signal,
453
+ fetch
454
+ });
455
+ return {
456
+ base,
457
+ client: createOvClient({
458
+ ...base.identity,
459
+ baseURL: base.baseURL,
460
+ credentials: base.credentials,
461
+ signal: base.signal,
462
+ fetch: base.fetch
463
+ })
464
+ };
465
+ }, [
466
+ parent,
467
+ baseURL,
468
+ apiKey,
469
+ accountId,
470
+ userId,
471
+ resourceId,
472
+ credentials,
473
+ signal,
474
+ fetch
475
+ ]);
476
+ return /*#__PURE__*/ jsx(OvClientContext.Provider, {
477
+ value: value,
478
+ children: children
479
+ });
480
+ }
481
+ function useOvClient() {
482
+ return useContext(OvClientContext)?.client ?? null;
483
+ }
484
+ const OV_PATHS = {
485
+ fsLs: '/api/v1/fs/ls',
486
+ fsStat: '/api/v1/fs/stat',
487
+ fsTree: '/api/v1/fs/tree',
488
+ fsMkdir: '/api/v1/fs/mkdir',
489
+ fsMv: '/api/v1/fs/mv',
490
+ contentRead: '/api/v1/content/read',
491
+ contentAbstract: '/api/v1/content/abstract',
492
+ contentOverview: '/api/v1/content/overview',
493
+ contentDownload: '/api/v1/content/download',
494
+ contentWrite: '/api/v1/content/write',
495
+ searchGlob: '/api/v1/search/glob',
496
+ searchFind: '/api/v1/search/find',
497
+ searchGrep: '/api/v1/search/grep',
498
+ sessions: '/api/v1/sessions',
499
+ botChat: '/bot/v1/chat',
500
+ botChatStream: '/bot/v1/chat/stream'
501
+ };
502
+ const OV_PATH_BUILDERS = {
503
+ session: (sessionId)=>`${OV_PATHS.sessions}/${encodeURIComponent(sessionId)}`,
504
+ sessionMessages: (sessionId)=>`${OV_PATH_BUILDERS.session(sessionId)}/messages`
505
+ };
506
+ export { OV_PATHS, OV_PATH_BUILDERS, OpenVikingProvider, OvClientError, createOvClient, isOvClientError, useOvClient };
package/dist/2~0.js ADDED
@@ -0,0 +1,122 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ function Divider({ orientation = 'vertical', length, thickness = 1, color, className, style, ...rest }) {
3
+ const vertical = 'vertical' === orientation;
4
+ const size = vertical ? {
5
+ flex: 'none',
6
+ width: thickness,
7
+ height: length
8
+ } : {
9
+ flex: 'none',
10
+ width: length ?? '100%',
11
+ height: thickness
12
+ };
13
+ return /*#__PURE__*/ jsx("div", {
14
+ ...rest,
15
+ role: "separator",
16
+ "aria-orientation": orientation,
17
+ className: [
18
+ 'ov-divider',
19
+ className
20
+ ].filter(Boolean).join(' '),
21
+ style: {
22
+ background: color ?? 'var(--ov-ui-color-border-2, var(--ov-ui-border-2-default, #e1e4f2))',
23
+ ...size,
24
+ ...style
25
+ }
26
+ });
27
+ }
28
+ function ConnectAgentIcon() {
29
+ return /*#__PURE__*/ jsx("svg", {
30
+ width: "14",
31
+ height: "14",
32
+ viewBox: "0 0 14 14",
33
+ fill: "none",
34
+ stroke: "currentColor",
35
+ strokeWidth: "1.4",
36
+ strokeLinecap: "round",
37
+ strokeLinejoin: "round",
38
+ "aria-hidden": "true",
39
+ focusable: "false",
40
+ children: /*#__PURE__*/ jsx("path", {
41
+ d: "M5.187 1.75V3.736M8.876 1.75V3.736M7.031 10.547V12.25M4.052 3.736H10.011A1.135 1.135 0 0 1 11.147 4.872V8.277A2.27 2.27 0 0 1 8.876 10.547H5.187A2.27 2.27 0 0 1 2.917 8.277V4.872A1.135 1.135 0 0 1 4.052 3.736Z"
42
+ })
43
+ });
44
+ }
45
+ function ImportResourcesIcon() {
46
+ return /*#__PURE__*/ jsx("svg", {
47
+ width: "12",
48
+ height: "12",
49
+ viewBox: "0 0 12 12",
50
+ fill: "none",
51
+ stroke: "currentColor",
52
+ strokeWidth: "1.4",
53
+ strokeLinecap: "round",
54
+ strokeLinejoin: "round",
55
+ "aria-hidden": "true",
56
+ focusable: "false",
57
+ children: /*#__PURE__*/ jsx("path", {
58
+ d: "M10.5 7.5V8.1C10.5 8.94008 10.5 9.36012 10.3365 9.68099C10.1927 9.96323 9.96323 10.1927 9.68099 10.3365C9.36012 10.5 8.94008 10.5 8.1 10.5H3.9C3.05992 10.5 2.63988 10.5 2.31901 10.3365C2.03677 10.1927 1.8073 9.96323 1.66349 9.68099C1.5 9.36012 1.5 8.94008 1.5 8.1V7.5M3.5 4L6 1.5L8.5 4M6 1.5V7.5"
59
+ })
60
+ });
61
+ }
62
+ const DEFAULT_LABELS = {
63
+ connectAgent: 'Connect agent',
64
+ importResources: 'Import resources'
65
+ };
66
+ function FileBrowserEntries({ onConnectAgent, onImportResources, labels, className, ...rest }) {
67
+ const text = {
68
+ ...DEFAULT_LABELS,
69
+ ...labels
70
+ };
71
+ if (!onConnectAgent && !onImportResources) return null;
72
+ return /*#__PURE__*/ jsxs("div", {
73
+ ...rest,
74
+ className: [
75
+ 'ov-file-browser-entries',
76
+ className
77
+ ].filter(Boolean).join(' '),
78
+ children: [
79
+ onConnectAgent ? /*#__PURE__*/ jsxs("button", {
80
+ type: "button",
81
+ className: "ov-file-browser-entries__entry",
82
+ onClick: onConnectAgent,
83
+ children: [
84
+ /*#__PURE__*/ jsx("span", {
85
+ className: "ov-file-browser-entries__icon",
86
+ "aria-hidden": "true",
87
+ children: /*#__PURE__*/ jsx(ConnectAgentIcon, {})
88
+ }),
89
+ /*#__PURE__*/ jsx("span", {
90
+ className: "ov-file-browser-entries__label",
91
+ children: text.connectAgent
92
+ })
93
+ ]
94
+ }) : null,
95
+ onConnectAgent && onImportResources ? /*#__PURE__*/ jsx(Divider, {
96
+ className: "ov-file-browser-entries__divider",
97
+ length: 12,
98
+ color: "var(--ov-ui-color-primary, var(--ov-ui-primary-default, #5252ff))",
99
+ style: {
100
+ opacity: 0.5
101
+ }
102
+ }) : null,
103
+ onImportResources ? /*#__PURE__*/ jsxs("button", {
104
+ type: "button",
105
+ className: "ov-file-browser-entries__entry",
106
+ onClick: onImportResources,
107
+ children: [
108
+ /*#__PURE__*/ jsx("span", {
109
+ className: "ov-file-browser-entries__icon",
110
+ "aria-hidden": "true",
111
+ children: /*#__PURE__*/ jsx(ImportResourcesIcon, {})
112
+ }),
113
+ /*#__PURE__*/ jsx("span", {
114
+ className: "ov-file-browser-entries__label",
115
+ children: text.importResources
116
+ })
117
+ ]
118
+ }) : null
119
+ ]
120
+ });
121
+ }
122
+ export { FileBrowserEntries };