stitchkit 0.89.0 → 0.90.1

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 (65) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/dist/agent-runtime/coding-tool-refusals.d.ts +31 -10
  3. package/dist/agent-runtime/coding-tool-refusals.d.ts.map +1 -1
  4. package/dist/agent-runtime/spill.d.ts.map +1 -1
  5. package/dist/agent-runtime-coding-tools.js +4 -4
  6. package/dist/agent-runtime-harness.js +5 -5
  7. package/dist/agent-runtime-sandbox.js +5 -5
  8. package/dist/agent-runtime.js +17 -29
  9. package/dist/application/watch-hub.d.ts +24 -2
  10. package/dist/application/watch-hub.d.ts.map +1 -1
  11. package/dist/application-grammy.js +1 -1
  12. package/dist/application.js +103 -13
  13. package/dist/cli.js +7 -7
  14. package/dist/contract/errors.d.ts +3 -0
  15. package/dist/contract/errors.d.ts.map +1 -1
  16. package/dist/contract/index.js +2 -2
  17. package/dist/{index-qmgs7y68.js → index-1txvygak.js} +1 -1
  18. package/dist/{index-8c3a7m4g.js → index-2hrfpw2c.js} +1 -1
  19. package/dist/{index-7evdsyez.js → index-2hryh65w.js} +1 -1
  20. package/dist/index-2na0qrfn.js +214 -0
  21. package/dist/{index-zyvby92n.js → index-44ht2790.js} +2 -2
  22. package/dist/{index-27gm3d6g.js → index-6q3zjwaz.js} +2 -2
  23. package/dist/{index-mnm4qp0p.js → index-79hb1wyh.js} +3 -3
  24. package/dist/{index-apn8repm.js → index-7gqx71yd.js} +2 -2
  25. package/dist/{index-7601qfg1.js → index-8dph3pw6.js} +4 -4
  26. package/dist/{index-90d7h2cr.js → index-bg8ypxzn.js} +3 -3
  27. package/dist/{index-vchzar7e.js → index-db51n3xr.js} +5 -5
  28. package/dist/{index-hw2chdvy.js → index-f475yj00.js} +1 -1
  29. package/dist/{index-q3ve2d1k.js → index-gbqjt8jz.js} +3 -3
  30. package/dist/index-gte38nbm.js +101 -0
  31. package/dist/{index-cp20z0n6.js → index-j7q0xj6d.js} +7 -55
  32. package/dist/{index-2bxcmqkb.js → index-kazec06k.js} +1 -1
  33. package/dist/{index-0w9abg87.js → index-scs3f1eg.js} +3 -0
  34. package/dist/{index-31jw8fjq.js → index-wb15909q.js} +1 -1
  35. package/dist/{index-p18f59zy.js → index-z78bjcxj.js} +1 -1
  36. package/dist/{index-t7fkyxcr.js → index-zkcqhxx8.js} +1 -1
  37. package/dist/index.js +6 -6
  38. package/dist/live/watch-client.d.ts +2 -1
  39. package/dist/live/watch-client.d.ts.map +1 -1
  40. package/dist/live/watch-contract.d.ts +70 -4
  41. package/dist/live/watch-contract.d.ts.map +1 -1
  42. package/dist/live/watch-delta.d.ts +110 -0
  43. package/dist/live/watch-delta.d.ts.map +1 -0
  44. package/dist/live.d.ts +2 -1
  45. package/dist/live.d.ts.map +1 -1
  46. package/dist/live.js +56 -4
  47. package/dist/node.js +6 -6
  48. package/dist/observability/changes.d.ts +55 -0
  49. package/dist/observability/changes.d.ts.map +1 -0
  50. package/dist/observability/index.d.ts +2 -0
  51. package/dist/observability/index.d.ts.map +1 -1
  52. package/dist/observability/index.js +130 -3
  53. package/dist/observability/spool.d.ts +53 -0
  54. package/dist/observability/spool.d.ts.map +1 -0
  55. package/dist/primitives.js +2 -2
  56. package/dist/remote.js +5 -5
  57. package/dist/server/index.js +8 -8
  58. package/dist/testing.js +6 -6
  59. package/dist/tool-invoker.js +6 -6
  60. package/dist/tools.js +11 -11
  61. package/dist/tracking.js +2 -2
  62. package/llms-full.txt +156 -15
  63. package/package.json +1 -1
  64. package/dist/index-dre2ywck.js +0 -48
  65. package/dist/index-gskm1k5a.js +0 -50
@@ -27,10 +27,10 @@ import {
27
27
  import"../index-f9mb610r.js";
28
28
  import {
29
29
  recordedErrorMessage
30
- } from "../index-7evdsyez.js";
31
- import"../index-2bxcmqkb.js";
30
+ } from "../index-2hryh65w.js";
31
+ import"../index-kazec06k.js";
32
32
  import"../index-6k1937bx.js";
33
- import"../index-0w9abg87.js";
33
+ import"../index-scs3f1eg.js";
34
34
  import {
35
35
  childSpan,
36
36
  createTraceContext,
@@ -364,6 +364,131 @@ function createBoundedLogger(options) {
364
364
  debug: (message, data) => write("debug", message, data)
365
365
  };
366
366
  }
367
+ // src/observability/changes.ts
368
+ var READ_METHODS = new Set(["GET", "HEAD", "OPTIONS"]);
369
+ var SECURITY_STATUSES = new Set([401, 403]);
370
+ function auditChanges(event) {
371
+ if (SECURITY_STATUSES.has(event.statusCode))
372
+ return true;
373
+ const verb = event.httpMethod ?? event.method;
374
+ return !READ_METHODS.has(verb.toUpperCase());
375
+ }
376
+ // src/observability/spool.ts
377
+ import { appendFile, mkdir, readFile, rename, writeFile } from "node:fs/promises";
378
+ import { dirname } from "node:path";
379
+ function reviveEvent(event) {
380
+ return { ...event, startedAt: new Date(event.startedAt) };
381
+ }
382
+ function createSpooledSink(config) {
383
+ const keyOf = config.key ?? ((event) => event.spanId);
384
+ const compactAfter = config.compactAfter ?? 512;
385
+ const undelivered = new Map;
386
+ let delivered = 0;
387
+ let tail = Promise.resolve();
388
+ function serialise(work) {
389
+ const next = tail.then(work, work);
390
+ tail = next.catch(() => {
391
+ return;
392
+ });
393
+ return next;
394
+ }
395
+ async function append(line, event) {
396
+ try {
397
+ await appendFile(config.path, `${JSON.stringify(line)}
398
+ `, "utf8");
399
+ } catch (error) {
400
+ if (isMissing(error)) {
401
+ await mkdir(dirname(config.path), { recursive: true });
402
+ await appendFile(config.path, `${JSON.stringify(line)}
403
+ `, "utf8");
404
+ return;
405
+ }
406
+ config.onSpoolError?.({ error, ...event !== undefined && { event } });
407
+ }
408
+ }
409
+ async function compact() {
410
+ const temporary = `${config.path}.compacting`;
411
+ const body = [...undelivered.entries()].map(([key, event]) => `${JSON.stringify({ k: key, e: event })}
412
+ `).join("");
413
+ try {
414
+ await writeFile(temporary, body, "utf8");
415
+ await rename(temporary, config.path);
416
+ delivered = 0;
417
+ } catch (error) {
418
+ config.onSpoolError?.({ error });
419
+ }
420
+ }
421
+ return {
422
+ async write(event) {
423
+ const key = keyOf(event);
424
+ await serialise(() => append({ k: key, e: event }, event));
425
+ undelivered.set(key, event);
426
+ await config.write(event);
427
+ undelivered.delete(key);
428
+ delivered += 1;
429
+ await serialise(async () => {
430
+ await append({ a: key });
431
+ if (delivered >= compactAfter)
432
+ await compact();
433
+ });
434
+ },
435
+ async recover() {
436
+ let body;
437
+ try {
438
+ body = await readFile(config.path, "utf8");
439
+ } catch (error) {
440
+ if (!isMissing(error))
441
+ config.onSpoolError?.({ error });
442
+ return { replayed: 0, failed: 0 };
443
+ }
444
+ const pending = new Map;
445
+ for (const line of body.split(`
446
+ `)) {
447
+ if (line.length === 0)
448
+ continue;
449
+ let parsed;
450
+ try {
451
+ parsed = JSON.parse(line);
452
+ } catch (error) {
453
+ config.onSpoolError?.({ error });
454
+ continue;
455
+ }
456
+ if (parsed.a !== undefined) {
457
+ pending.delete(parsed.a);
458
+ continue;
459
+ }
460
+ if (parsed.k !== undefined && parsed.e !== undefined) {
461
+ pending.set(parsed.k, reviveEvent(parsed.e));
462
+ }
463
+ }
464
+ const replayed = pending.size;
465
+ let failed = 0;
466
+ for (const [key, event] of pending) {
467
+ try {
468
+ await config.write(event);
469
+ pending.delete(key);
470
+ } catch (error) {
471
+ failed += 1;
472
+ config.onSpoolError?.({ error, event });
473
+ }
474
+ }
475
+ undelivered.clear();
476
+ for (const [key, event] of pending)
477
+ undelivered.set(key, event);
478
+ delivered = 0;
479
+ await serialise(compact);
480
+ return { replayed, failed };
481
+ },
482
+ pending: () => undelivered.size
483
+ };
484
+ }
485
+ function code(error) {
486
+ if (typeof error !== "object" || error === null)
487
+ return;
488
+ const value = Reflect.get(error, "code");
489
+ return typeof value === "string" ? value : undefined;
490
+ }
491
+ var isMissing = (error) => code(error) === "ENOENT";
367
492
  export {
368
493
  wrapInRequestContext,
369
494
  truncatePreview,
@@ -383,10 +508,12 @@ export {
383
508
  getRequestContext,
384
509
  formatTraceparent,
385
510
  createTraceContext,
511
+ createSpooledSink,
386
512
  createObservability,
387
513
  createDimensionsProjector,
388
514
  createBoundedLogger,
389
515
  childSpan,
516
+ auditChanges,
390
517
  ObservabilityStatusSchema,
391
518
  ObservabilitySinkStatusSchema,
392
519
  ObservabilityDrainReportSchema,
@@ -0,0 +1,53 @@
1
+ import type { RequestEvent } from './event.js';
2
+ export interface SpooledSinkConfig {
3
+ /** The real sink — normally the project's audit-table write. */
4
+ write: (event: RequestEvent) => void | Promise<void>;
5
+ /**
6
+ * The spool file. Created with its directory if missing.
7
+ *
8
+ * One process, one path: see the module header.
9
+ */
10
+ path: string;
11
+ /**
12
+ * The identity a replayed record is recognised by. Default: `event.spanId`,
13
+ * which is unique per call by construction.
14
+ *
15
+ * Whatever it returns is what the store must be idempotent on.
16
+ */
17
+ key?: (event: RequestEvent) => string;
18
+ /**
19
+ * Delivered records tolerated in the file before it is rewritten without
20
+ * them. Default 512. The rewrite is atomic — a temporary file and a rename —
21
+ * so a crash during it leaves either the old file or the new one.
22
+ */
23
+ compactAfter?: number;
24
+ /** Observe a spool-file failure. The event is still offered to the store. */
25
+ onSpoolError?: (failure: {
26
+ error: unknown;
27
+ event?: RequestEvent;
28
+ }) => void;
29
+ }
30
+ export interface SpoolRecovery {
31
+ /** Records found undelivered and offered to the store again. */
32
+ replayed: number;
33
+ /** Of those, the ones the store refused again. They stay in the file. */
34
+ failed: number;
35
+ }
36
+ export interface SpooledSink {
37
+ /** Spool, then deliver. Hand this to `RequestEventSinkConfig.write`. */
38
+ write(event: RequestEvent): Promise<void>;
39
+ /**
40
+ * Replay what a previous process left undelivered, then rewrite the file with
41
+ * whatever is still undelivered.
42
+ *
43
+ * Call it once at startup, **before** the sink is wired, and await it: a
44
+ * replay racing live writes can only make the file larger and the order
45
+ * stranger. Safe to call on a path that does not exist — that is the ordinary
46
+ * first run, and it reports zero rather than failing.
47
+ */
48
+ recover(): Promise<SpoolRecovery>;
49
+ /** Records spooled and not yet marked delivered, in this process. */
50
+ pending(): number;
51
+ }
52
+ export declare function createSpooledSink(config: SpooledSinkConfig): SpooledSink;
53
+ //# sourceMappingURL=spool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spool.d.ts","sourceRoot":"","sources":["../../src/observability/spool.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,KAAK,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,CAAC;IACtC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,YAAY,CAAA;KAAE,KAAK,IAAI,CAAC;CAC5E;AAED,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C;;;;;;;;OAQG;IACH,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC,qEAAqE;IACrE,OAAO,IAAI,MAAM,CAAC;CACnB;AAqBD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAuHxE"}
@@ -1,8 +1,8 @@
1
- import"./index-2bxcmqkb.js";
1
+ import"./index-kazec06k.js";
2
2
  import {
3
3
  ManagedFileRefSchema
4
4
  } from "./index-6k1937bx.js";
5
- import"./index-0w9abg87.js";
5
+ import"./index-scs3f1eg.js";
6
6
  import"./index-kzfs85xp.js";
7
7
  import"./index-77fekveh.js";
8
8
 
package/dist/remote.js CHANGED
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  createClient
3
- } from "./index-27gm3d6g.js";
4
- import"./index-qmgs7y68.js";
3
+ } from "./index-6q3zjwaz.js";
4
+ import"./index-1txvygak.js";
5
5
  import {
6
6
  ApiError
7
7
  } from "./index-3xwxfj4z.js";
8
- import"./index-7evdsyez.js";
8
+ import"./index-2hryh65w.js";
9
9
  import {
10
10
  mergeMeta,
11
11
  resolveRouteParamsSchema
12
- } from "./index-2bxcmqkb.js";
12
+ } from "./index-kazec06k.js";
13
13
  import"./index-6k1937bx.js";
14
14
  import {
15
15
  AppError
16
- } from "./index-0w9abg87.js";
16
+ } from "./index-scs3f1eg.js";
17
17
  import"./index-zcgf3gqf.js";
18
18
  import"./index-kzfs85xp.js";
19
19
  import {
@@ -13,7 +13,7 @@ import {
13
13
  sseRoute,
14
14
  streamingRoute,
15
15
  webSocketLane
16
- } from "../index-vchzar7e.js";
16
+ } from "../index-db51n3xr.js";
17
17
  import"../index-y91ry9h2.js";
18
18
  import {
19
19
  withDeadline
@@ -25,13 +25,13 @@ import {
25
25
  ShutdownStatusSchema,
26
26
  createServerLifecycle
27
27
  } from "../index-3z73fh2c.js";
28
- import"../index-apn8repm.js";
28
+ import"../index-7gqx71yd.js";
29
29
  import"../index-2qzskm8h.js";
30
30
  import {
31
31
  inputIsQuery,
32
32
  parseSSE,
33
33
  streamSSE
34
- } from "../index-qmgs7y68.js";
34
+ } from "../index-1txvygak.js";
35
35
  import {
36
36
  composeAuthHooks,
37
37
  createAuthHook,
@@ -45,7 +45,7 @@ import {
45
45
  signJwt,
46
46
  verifyJwt,
47
47
  verifyPkce
48
- } from "../index-90d7h2cr.js";
48
+ } from "../index-bg8ypxzn.js";
49
49
  import {
50
50
  DEFAULT_CORS_ALLOW_HEADERS,
51
51
  DEFAULT_CORS_EXPOSE_HEADERS,
@@ -59,7 +59,7 @@ import {
59
59
  defineMultipartStream,
60
60
  implement,
61
61
  implementRegistry
62
- } from "../index-p18f59zy.js";
62
+ } from "../index-z78bjcxj.js";
63
63
  import {
64
64
  isWithinDir,
65
65
  realPathWithinDir
@@ -80,12 +80,12 @@ import {
80
80
  formatZodError,
81
81
  normalizeError,
82
82
  zodIssues
83
- } from "../index-7evdsyez.js";
83
+ } from "../index-2hryh65w.js";
84
84
  import {
85
85
  DEFAULT_CONTRACT_STREAM_FRAME_BYTES,
86
86
  joinRoutePath,
87
87
  parseTrailingWildcard
88
- } from "../index-2bxcmqkb.js";
88
+ } from "../index-kazec06k.js";
89
89
  import"../index-6k1937bx.js";
90
90
  import {
91
91
  AppError,
@@ -98,7 +98,7 @@ import {
98
98
  notFound,
99
99
  rateLimited,
100
100
  unauthorized
101
- } from "../index-0w9abg87.js";
101
+ } from "../index-scs3f1eg.js";
102
102
  import"../index-zcgf3gqf.js";
103
103
  import"../index-kzfs85xp.js";
104
104
  import {
package/dist/testing.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createApplication
3
- } from "./index-t7fkyxcr.js";
3
+ } from "./index-zkcqhxx8.js";
4
4
  import"./index-3gye9wzb.js";
5
5
  import"./index-2k4yrqkc.js";
6
6
  import"./index-3z73fh2c.js";
@@ -28,20 +28,20 @@ import {
28
28
  import {
29
29
  createClient,
30
30
  createClients
31
- } from "./index-27gm3d6g.js";
31
+ } from "./index-6q3zjwaz.js";
32
32
  import {
33
33
  RealtimeRequestDisconnectedError,
34
34
  RealtimeRequestInvalidAcknowledgementError,
35
35
  RealtimeRequestTimeoutError
36
36
  } from "./index-2qzskm8h.js";
37
- import"./index-qmgs7y68.js";
37
+ import"./index-1txvygak.js";
38
38
  import"./index-3xwxfj4z.js";
39
- import"./index-7evdsyez.js";
39
+ import"./index-2hryh65w.js";
40
40
  import {
41
41
  joinRoutePath
42
- } from "./index-2bxcmqkb.js";
42
+ } from "./index-kazec06k.js";
43
43
  import"./index-6k1937bx.js";
44
- import"./index-0w9abg87.js";
44
+ import"./index-scs3f1eg.js";
45
45
  import"./index-zcgf3gqf.js";
46
46
  import"./index-kzfs85xp.js";
47
47
  import {
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  createToolInvoker
3
- } from "./index-mnm4qp0p.js";
4
- import"./index-8c3a7m4g.js";
5
- import"./index-zyvby92n.js";
3
+ } from "./index-79hb1wyh.js";
4
+ import"./index-2hrfpw2c.js";
5
+ import"./index-44ht2790.js";
6
6
  import"./index-vsbzgd7b.js";
7
7
  import"./index-f9mb610r.js";
8
- import"./index-7evdsyez.js";
9
- import"./index-2bxcmqkb.js";
8
+ import"./index-2hryh65w.js";
9
+ import"./index-kazec06k.js";
10
10
  import"./index-6k1937bx.js";
11
- import"./index-0w9abg87.js";
11
+ import"./index-scs3f1eg.js";
12
12
  import"./index-zcgf3gqf.js";
13
13
  import"./index-7zbps32p.js";
14
14
  import"./index-kzfs85xp.js";
package/dist/tools.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  signJwt,
6
6
  verifyPkce
7
- } from "./index-90d7h2cr.js";
7
+ } from "./index-bg8ypxzn.js";
8
8
  import {
9
9
  DEFAULT_CORS_ALLOW_HEADERS,
10
10
  DEFAULT_PROCESS_SIGNALS,
@@ -13,7 +13,7 @@ import {
13
13
  guardSignalCallback,
14
14
  mediaTypeEssence,
15
15
  reportSignalError
16
- } from "./index-p18f59zy.js";
16
+ } from "./index-z78bjcxj.js";
17
17
  import {
18
18
  redact
19
19
  } from "./index-xbppf54a.js";
@@ -21,7 +21,7 @@ import {
21
21
  buildToolManifest,
22
22
  describeToolCatalog,
23
23
  mountAgent
24
- } from "./index-q3ve2d1k.js";
24
+ } from "./index-gbqjt8jz.js";
25
25
  import"./index-7rkhw9ec.js";
26
26
  import {
27
27
  argumentsDigest
@@ -37,7 +37,7 @@ import {
37
37
  } from "./index-4fpa9dy2.js";
38
38
  import {
39
39
  createToolInvoker
40
- } from "./index-mnm4qp0p.js";
40
+ } from "./index-79hb1wyh.js";
41
41
  import {
42
42
  WaitTimeoutError,
43
43
  createCli,
@@ -46,22 +46,22 @@ import {
46
46
  fetchPinnedDocument,
47
47
  readCapped,
48
48
  runWaitOperation
49
- } from "./index-7601qfg1.js";
49
+ } from "./index-8dph3pw6.js";
50
50
  import"./index-sbdmyz75.js";
51
51
  import {
52
52
  collectToolSurface
53
- } from "./index-31jw8fjq.js";
53
+ } from "./index-wb15909q.js";
54
54
  import {
55
55
  collectTools,
56
56
  createToolRunner,
57
57
  formatToolError
58
- } from "./index-8c3a7m4g.js";
58
+ } from "./index-2hrfpw2c.js";
59
59
  import {
60
60
  ToolExecutionControlError,
61
61
  executeToolMethod,
62
62
  isToolExecutionControlError,
63
63
  toolResultFromError
64
- } from "./index-zyvby92n.js";
64
+ } from "./index-44ht2790.js";
65
65
  import {
66
66
  getRequestContext,
67
67
  getTraceId,
@@ -70,10 +70,10 @@ import {
70
70
  import"./index-f9mb610r.js";
71
71
  import {
72
72
  normalizeError
73
- } from "./index-7evdsyez.js";
73
+ } from "./index-2hryh65w.js";
74
74
  import {
75
75
  defineContract
76
- } from "./index-2bxcmqkb.js";
76
+ } from "./index-kazec06k.js";
77
77
  import {
78
78
  ManagedFilePathSchema,
79
79
  ManagedFileRefSchema
@@ -81,7 +81,7 @@ import {
81
81
  import {
82
82
  AppError,
83
83
  STITCH_ERROR_STATUS
84
- } from "./index-0w9abg87.js";
84
+ } from "./index-scs3f1eg.js";
85
85
  import {
86
86
  resolvePropagationContext
87
87
  } from "./index-zcgf3gqf.js";
package/dist/tracking.js CHANGED
@@ -3,9 +3,9 @@ import {
3
3
  } from "./index-3xwxfj4z.js";
4
4
  import {
5
5
  defineContract
6
- } from "./index-2bxcmqkb.js";
6
+ } from "./index-kazec06k.js";
7
7
  import"./index-6k1937bx.js";
8
- import"./index-0w9abg87.js";
8
+ import"./index-scs3f1eg.js";
9
9
  import"./index-zcgf3gqf.js";
10
10
  import"./index-kzfs85xp.js";
11
11
  import"./index-77fekveh.js";