@sayren/store-sdk 0.30.12 → 0.30.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -332,6 +332,335 @@ function createHttp(options) {
332
332
  };
333
333
  }
334
334
  //#endregion
335
+ //#region src/schemas/ai.ts
336
+ /**
337
+ * 상점 플랫폼 AI 채팅(이슈 #124) — 대화·메시지·실행과 실행 이벤트 스트림의 계약.
338
+ *
339
+ * 상점 플랫폼 전용이다(`@ConsoleOnly`, 공개 OpenAPI 문서 제외). 메시지를 보내면 api가 실행(run)을 만들어 202로 `streamId`를 돌려주고,
340
+ * 응답은 별도 중계(`streamUrl`, SSE)로 받는다. 실행은 브라우저와 무관하게 서버에서 끝까지 돈다 — 다시 열면 진행 중 실행의 스트림에
341
+ * 처음부터 다시 붙거나(보관 1시간) 확정된 메시지를 읽는다.
342
+ */
343
+ /** 첨부 하나 — 업로드(`POST /v1/uploads`, 목적 `ai-attachment`)가 돌려준 공개 주소 */
344
+ const aiAttachmentSchema = z.object({
345
+ url: z.string().url().max(2048),
346
+ name: z.string().trim().min(1).max(200),
347
+ mediaType: z.string().trim().min(1).max(100).describe("image/* 또는 application/pdf")
348
+ });
349
+ const AI_MESSAGE_MAX_CHARS = 8e3;
350
+ const AI_MESSAGE_MAX_ATTACHMENTS = 5;
351
+ /**
352
+ * 편집 미리보기에서 고른 요소(#65) — 미리보기 안 선택 스크립트가 만든 값이라 사이트 코드가 꾸밀 수 있다. api는 모델에 넘길 때 데이터로
353
+ * 감싼다. `source`는 그 컴포넌트를 **사용한** 위치다(작업 트리 상대 경로). React 개발 정보가 없으면 null이다
354
+ */
355
+ const aiPreviewSelectionSchema = z.object({
356
+ component: z.string().max(120).nullable(),
357
+ source: z.object({
358
+ path: z.string().max(300),
359
+ line: z.number().int().positive().max(1e6),
360
+ column: z.number().int().positive().max(1e5).optional()
361
+ }).nullable(),
362
+ tag: z.string().max(40),
363
+ text: z.string().max(200),
364
+ pagePath: z.string().max(500)
365
+ });
366
+ /** 실행 상태 — 끝난 상태는 `DONE`·`FAILED`·`CANCELLED`다 */
367
+ const aiRunStatusSchema = z.enum([
368
+ "QUEUED",
369
+ "RUNNING",
370
+ "CANCEL_REQUESTED",
371
+ "DONE",
372
+ "FAILED",
373
+ "CANCELLED"
374
+ ]);
375
+ const AI_RUN_ACTIVE_STATUSES = [
376
+ "QUEUED",
377
+ "RUNNING",
378
+ "CANCEL_REQUESTED"
379
+ ];
380
+ /** 진행 중 실행의 스트림 접속 정보. `streamToken`은 이 스트림 하나만 읽는 단기 자격(Bearer)이다 */
381
+ const aiStreamAccessSchema = z.object({
382
+ streamId: z.string(),
383
+ streamUrl: z.string().url(),
384
+ streamToken: z.string()
385
+ });
386
+ const aiRunSchema = z.object({
387
+ id: z.string().describe("실행 id = streamId"),
388
+ status: aiRunStatusSchema,
389
+ errorCode: z.string().nullable(),
390
+ createdAt: z.string(),
391
+ finishedAt: z.string().nullable()
392
+ });
393
+ /**
394
+ * 화면에 그리는 메시지 조각. 모델 원문(tool_use 블록 등)은 api가 보관하고 화면에는 이 형태만 준다.
395
+ * - `text`: 글
396
+ * - `tool`: 도구 호출 한 번(이름은 사람이 읽는 라벨, 결과 요약·링크)
397
+ * - `choices`: 선택지 버튼(가장 최근 것만 누를 수 있다)
398
+ * - `attachment`: 사용자가 올린 첨부
399
+ * - `approval`: 승인 대기로 남은 쓰기
400
+ */
401
+ const aiMessagePartSchema = z.discriminatedUnion("type", [
402
+ z.object({
403
+ type: z.literal("text"),
404
+ text: z.string()
405
+ }),
406
+ z.object({
407
+ type: z.literal("tool"),
408
+ toolCallId: z.string(),
409
+ name: z.string(),
410
+ label: z.string(),
411
+ status: z.enum([
412
+ "ok",
413
+ "error",
414
+ "unknown"
415
+ ]),
416
+ summary: z.string().nullable()
417
+ }),
418
+ z.object({
419
+ type: z.literal("choices"),
420
+ question: z.string(),
421
+ options: z.array(z.object({
422
+ label: z.string(),
423
+ value: z.string()
424
+ })).min(1).max(6)
425
+ }),
426
+ z.object({
427
+ type: z.literal("attachment"),
428
+ attachment: aiAttachmentSchema
429
+ }),
430
+ z.object({
431
+ type: z.literal("approval"),
432
+ approvalId: z.string(),
433
+ title: z.string()
434
+ }),
435
+ z.object({
436
+ type: z.literal("selection"),
437
+ selection: aiPreviewSelectionSchema
438
+ })
439
+ ]);
440
+ const aiMessageSchema = z.object({
441
+ id: z.string(),
442
+ role: z.enum(["user", "assistant"]),
443
+ parts: z.array(aiMessagePartSchema),
444
+ runId: z.string().nullable(),
445
+ createdAt: z.string()
446
+ });
447
+ const aiConversationSummarySchema = z.object({
448
+ id: z.string(),
449
+ title: z.string().nullable(),
450
+ createdAt: z.string(),
451
+ updatedAt: z.string()
452
+ });
453
+ const aiConversationSchema = aiConversationSummarySchema.extend({
454
+ messages: z.array(aiMessageSchema),
455
+ /** 진행 중 실행(없으면 null) — 스트림에 다시 붙을 때 쓴다 */
456
+ activeRun: aiRunSchema.extend({ stream: aiStreamAccessSchema }).nullable(),
457
+ /** 마지막 실행(진행 중이 아니면 결과 표시용) */
458
+ lastRun: aiRunSchema.nullable()
459
+ });
460
+ const createAiConversationRequestSchema = z.object({
461
+ /** 웹사이트에서 남긴 초안(#124 M2) — 연결한 사용자만 쓴다. 주면 첫 메시지로 실행을 시작한다 */
462
+ draftId: z.string().max(64).optional() });
463
+ const createAiConversationResponseSchema = z.object({
464
+ conversation: aiConversationSummarySchema,
465
+ /** `draftId`로 시작했으면 첫 실행 */
466
+ run: aiStreamAccessSchema.nullable()
467
+ });
468
+ const sendAiMessageRequestSchema = z.object({
469
+ text: z.string().trim().max(AI_MESSAGE_MAX_CHARS),
470
+ attachments: z.array(aiAttachmentSchema).max(5).default([]),
471
+ /** 선택지 버튼으로 보낸 답이면 그 값(화면 표시는 `text`) */
472
+ choice: z.string().max(200).optional(),
473
+ /** 편집 미리보기에서 고른 요소(#65) — 모델은 이 요소를 기준으로 고친다 */
474
+ selection: aiPreviewSelectionSchema.optional()
475
+ }).refine((body) => body.text.length > 0 || body.attachments.length > 0, { message: "내용이나 첨부가 있어야 합니다" });
476
+ const sendAiMessageResponseSchema = aiStreamAccessSchema.extend({ messageId: z.string() });
477
+ /**
478
+ * AI가 바꾸는 화면 영역 — 쓰기 도구가 시작되면 이벤트에 싣고, 패널이 그 화면으로 옮겨 반영된 데이터를 다시 읽는다(셀러가 AI가 하는 일을 같이 본다).
479
+ * 경로는 상점 플랫폼이 정한다(영역 → 라우트). `id`가 있으면 상세 화면이다
480
+ */
481
+ const aiFocusAreaSchema = z.enum([
482
+ "products",
483
+ "categories",
484
+ "collections",
485
+ "option_sets",
486
+ "coupons",
487
+ "points",
488
+ "orders",
489
+ "claims",
490
+ "customers",
491
+ "inquiries",
492
+ "customer_inquiries",
493
+ "store_settings",
494
+ "shipping",
495
+ "addresses",
496
+ "payments",
497
+ "login",
498
+ "members",
499
+ "order_flows",
500
+ "webhooks",
501
+ "storefront"
502
+ ]);
503
+ const aiFocusSchema = z.object({
504
+ area: aiFocusAreaSchema,
505
+ id: z.string().optional()
506
+ });
507
+ /** 변경 기록 보관 기간 — 지나면 내용을 비우고 되돌릴 수 없다(410 `AI_RUN_CHANGES_EXPIRED`) */
508
+ const AI_RUN_FILE_CHANGES_RETENTION_DAYS = 7;
509
+ /**
510
+ * 실행 하나의 변경 상태
511
+ * - `APPLIED`: 되돌릴 수 있다(진행 중 실행이 없을 때)
512
+ * - `INCOMPLETE`: 결과를 모르는 쓰기·이전 내용이 너무 큰 경로가 있다(되돌릴 수 없다)
513
+ * - `REVERTING`·`REVERTED`·`REVERT_UNKNOWN`(되돌리기 결과를 모름 — 다시 하지 않는다)·`EXPIRED`
514
+ */
515
+ const aiRunChangesStatusSchema = z.enum([
516
+ "APPLIED",
517
+ "INCOMPLETE",
518
+ "REVERTING",
519
+ "REVERTED",
520
+ "REVERT_UNKNOWN",
521
+ "EXPIRED"
522
+ ]);
523
+ const aiFileChangeKindSchema = z.enum([
524
+ "created",
525
+ "modified",
526
+ "deleted"
527
+ ]);
528
+ const aiRunChangesSchema = z.object({
529
+ runId: z.string(),
530
+ status: aiRunChangesStatusSchema,
531
+ files: z.array(z.object({
532
+ path: z.string(),
533
+ change: aiFileChangeKindSchema.describe("결과를 모르는 경로는 `modified`로 보인다")
534
+ }))
535
+ });
536
+ /** `GET /v1/ai/conversations/{id}/file-changes` — 대화의 실행별 변경(실행 만든 순) */
537
+ const aiConversationFileChangesSchema = z.object({ runs: z.array(aiRunChangesSchema) });
538
+ /** `GET /v1/ai/runs/{runId}/file-changes` — 변경 보기. 텍스트가 아닌 파일·보관이 끝난 내용은 null이다(diff는 화면이 계산한다) */
539
+ const aiRunFileDiffSchema = aiRunChangesSchema.extend({ files: z.array(z.object({
540
+ path: z.string(),
541
+ change: aiFileChangeKindSchema,
542
+ before: z.string().nullable(),
543
+ after: z.string().nullable(),
544
+ binary: z.boolean()
545
+ })) });
546
+ /**
547
+ * `POST /v1/ai/runs/{runId}/revert` — 실행이 바꾼 경로를 그 전 내용으로 한 번에 돌린다. 오류: 409 `AI_RUN_IN_PROGRESS`(대화에 진행 중 실행),
548
+ * 409 `AI_RUN_REVERT_CONFLICT`(`details.conflicts` — 그 뒤 바뀐 경로·결과를 모르는 쓰기), 409 `AI_RUN_ALREADY_REVERTED`,
549
+ * 410 `AI_RUN_CHANGES_EXPIRED`, 404 `AI_RUN_CHANGES_NOT_FOUND`, 502 `AI_RUN_REVERT_UNKNOWN`(결과를 모름 — 다시 하지 않는다)
550
+ */
551
+ const aiRunRevertResultSchema = z.object({
552
+ runId: z.string(),
553
+ status: z.literal("REVERTED"),
554
+ paths: z.array(z.string())
555
+ });
556
+ /** 409 `AI_RUN_REVERT_CONFLICT`의 `error.details` */
557
+ const aiRunRevertConflictDetailsSchema = z.object({ conflicts: z.array(z.object({
558
+ path: z.string(),
559
+ reason: z.enum(["CHANGED", "UNKNOWN"])
560
+ })) });
561
+ const aiStreamEventSchema = z.discriminatedUnion("type", [
562
+ z.object({
563
+ type: z.literal("delta"),
564
+ messageId: z.string(),
565
+ text: z.string()
566
+ }),
567
+ z.object({
568
+ type: z.literal("tool_start"),
569
+ messageId: z.string(),
570
+ toolCallId: z.string(),
571
+ name: z.string(),
572
+ label: z.string(),
573
+ /** 쓰기 도구가 바꾸는 화면(읽기 도구는 없다) */
574
+ focus: aiFocusSchema.optional()
575
+ }),
576
+ z.object({
577
+ type: z.literal("tool_result"),
578
+ messageId: z.string(),
579
+ toolCallId: z.string(),
580
+ status: z.enum([
581
+ "ok",
582
+ "error",
583
+ "unknown"
584
+ ]),
585
+ summary: z.string().nullable()
586
+ }),
587
+ z.object({
588
+ type: z.literal("choices"),
589
+ messageId: z.string(),
590
+ question: z.string(),
591
+ options: z.array(z.object({
592
+ label: z.string(),
593
+ value: z.string()
594
+ }))
595
+ }),
596
+ z.object({
597
+ type: z.literal("approval"),
598
+ messageId: z.string(),
599
+ approvalId: z.string(),
600
+ title: z.string()
601
+ }),
602
+ z.object({
603
+ type: z.literal("message"),
604
+ message: aiMessageSchema
605
+ }),
606
+ z.object({
607
+ type: z.literal("error"),
608
+ code: z.string(),
609
+ message: z.string()
610
+ }),
611
+ z.object({
612
+ type: z.literal("done"),
613
+ status: aiRunStatusSchema
614
+ })
615
+ ]);
616
+ /** 중계에 쌓이는 이벤트 한 건 — 실행기 → 중계 `POST /internal/streams/{id}/events` */
617
+ const aiStreamRecordSchema = z.object({
618
+ seq: z.number().int().positive(),
619
+ event: aiStreamEventSchema
620
+ });
621
+ const STORE_DRAFT_MAX_ATTACHMENTS = 5;
622
+ /** 초안 첨부 하나의 최대 크기(바이트) */
623
+ const STORE_DRAFT_ATTACHMENT_MAX_BYTES = 10485760;
624
+ /** 연결하지 않은 초안을 지우기까지 */
625
+ const STORE_DRAFT_RETENTION_DAYS = 7;
626
+ const createStoreDraftRequestSchema = z.object({
627
+ text: z.string().trim().min(1).max(AI_MESSAGE_MAX_CHARS),
628
+ attachments: z.array(z.object({
629
+ filename: z.string().trim().min(1).max(200),
630
+ size: z.number().int().positive().max(STORE_DRAFT_ATTACHMENT_MAX_BYTES)
631
+ })).max(5).default([])
632
+ });
633
+ const createStoreDraftResponseSchema = z.object({
634
+ draftId: z.string(),
635
+ /** 첨부마다 브라우저가 파일을 그대로 PUT할 자리(요청 순서와 같다) */
636
+ uploads: z.array(z.object({
637
+ uploadUrl: z.string().url(),
638
+ url: z.string().url()
639
+ })),
640
+ /** 다음 화면 — 상점 플랫폼 `/start?draft=…` */
641
+ continueUrl: z.string().url()
642
+ });
643
+ const storeDraftSchema = z.object({
644
+ id: z.string(),
645
+ text: z.string(),
646
+ attachments: z.array(aiAttachmentSchema),
647
+ createdAt: z.string(),
648
+ /** 이 초안으로 시작한 상점(없으면 null) */
649
+ storeId: z.string().nullable()
650
+ });
651
+ /** 로그인 전 초안 미리보기(`GET /v1/public/store-drafts/{id}`) — 로그인 화면이 「저장한 설명」을 보인다. 첨부는 이름만 */
652
+ const storeDraftPreviewSchema = z.object({
653
+ id: z.string(),
654
+ text: z.string(),
655
+ attachments: z.array(z.object({
656
+ name: z.string(),
657
+ mediaType: z.string()
658
+ })),
659
+ expiresAt: z.string(),
660
+ /** 이미 상점에서 쓴 초안이면 true(다시 시작할 수 없다) */
661
+ used: z.boolean()
662
+ });
663
+ //#endregion
335
664
  //#region src/schemas/analytics.ts
336
665
  /**
337
666
  * 방문 분석 조회 (관리 API `/v1/analytics/*`, 스코프 `analytics:r`).
@@ -1721,11 +2050,13 @@ const setCalendarRequestSchema = z.object({
1721
2050
  * - `product-image`: 상품 목록·상세의 상품 이미지. 목록 썸네일로 쓰이므로 정지 이미지만 받는다.
1722
2051
  * - `description`: 상세설명 본문에 삽입하는 미디어. 동영상과 svg도 받는다.
1723
2052
  * - `flow-attachment`: 주문 흐름 행동의 첨부(시안 등, 이슈 #115). 구매자에게 보이므로 정지 이미지와 PDF만 받는다.
2053
+ * - `ai-attachment`: 상점 플랫폼 AI 채팅에 붙이는 자료(이슈 #124). 모델이 읽는 정지 이미지와 PDF만 받는다.
1724
2054
  */
1725
2055
  const uploadPurposeSchema = z.enum([
1726
2056
  "product-image",
1727
2057
  "description",
1728
- "flow-attachment"
2058
+ "flow-attachment",
2059
+ "ai-attachment"
1729
2060
  ]);
1730
2061
  const MB = 1048576;
1731
2062
  /**
@@ -1772,6 +2103,17 @@ const UPLOAD_PURPOSE_LIMITS = {
1772
2103
  "pdf"
1773
2104
  ],
1774
2105
  maxBytes: 20 * MB
2106
+ },
2107
+ "ai-attachment": {
2108
+ extensions: [
2109
+ "jpg",
2110
+ "jpeg",
2111
+ "png",
2112
+ "webp",
2113
+ "gif",
2114
+ "pdf"
2115
+ ],
2116
+ maxBytes: 10 * MB
1775
2117
  }
1776
2118
  };
1777
2119
  /** 파일명의 소문자 확장자. 확장자가 없으면 `""` */
@@ -2479,7 +2821,7 @@ function parseWebhookEvent(body) {
2479
2821
  //#endregion
2480
2822
  //#region src/schemas/app-manifest.ts
2481
2823
  /**
2482
- * 서드파티 앱 매니페스트 `sayren.app.json` (이슈 #22) — CLI(`sayren app`)·api(빌드 `VERIFY`·버전 판정·동의 화면 자료)·런타임이
2824
+ * 서드파티 앱 매니페스트 `manifest.json` (이슈 #22) — CLI(`sayren app`)·api(빌드 `VERIFY`·버전 판정·동의 화면 자료)·런타임이
2483
2825
  * 같은 원천을 쓴다. 매니페스트는 정적 JSON이고 빌드 없이 읽는다.
2484
2826
  *
2485
2827
  * 기능 하나는 **capability** 하나다(`APP_CAPABILITIES`). capability는 매니페스트 조각·동의 문단·넓어짐 판정(재동의 조건)을 한 곳에 둔다.
@@ -2658,6 +3000,45 @@ const APP_SCHEDULE_INTERVALS = {
2658
3000
  "12h": 720,
2659
3001
  "1d": 1440
2660
3002
  };
3003
+ /** 흐름 알림 이름 — 흐름 알림 채널 `app.<handle>.<이름>`의 마지막 마디(소문자·숫자·하이픈) */
3004
+ const APP_FLOW_NOTIFICATION_PATTERN = /^[a-z][a-z0-9-]{0,39}$/;
3005
+ /** 흐름 사건 이름 — 사건 키 `app.<handle>.<이름>`의 마지막 마디 */
3006
+ const APP_FLOW_EVENT_PATTERN = /^[A-Z][A-Z0-9_]{0,39}$/;
3007
+ const APP_FLOW_ITEMS_MAX = 20;
3008
+ /** 흐름 알림 매개변수 — 셀러가 편집기에서 식으로 값을 연결한다 */
3009
+ const appFlowParamSchema = z.strictObject({
3010
+ type: z.enum([
3011
+ "string",
3012
+ "number",
3013
+ "boolean"
3014
+ ]),
3015
+ label: z.string().trim().min(1).max(60),
3016
+ required: z.boolean().optional()
3017
+ });
3018
+ const appFlowNotificationSchema = z.strictObject({
3019
+ label: z.string().trim().min(1).max(60),
3020
+ description: z.string().trim().max(200).optional(),
3021
+ params: z.record(z.string().regex(/^[a-zA-Z][a-zA-Z0-9_]{0,39}$/), appFlowParamSchema).refine((params) => Object.keys(params).length <= 20, { message: `매개변수는 20개까지입니다` }).default({})
3022
+ });
3023
+ const appFlowEventSchema = z.strictObject({
3024
+ label: z.string().trim().min(1).max(60),
3025
+ description: z.string().trim().max(200).optional()
3026
+ });
3027
+ /** 에이전트 도구 이름 — 소문자·숫자·하이픈 */
3028
+ const APP_TOOL_NAME_PATTERN = /^[a-z][a-z0-9-]{0,39}$/;
3029
+ const appToolInputSchema = z.strictObject({
3030
+ type: z.enum([
3031
+ "string",
3032
+ "number",
3033
+ "boolean"
3034
+ ]),
3035
+ description: z.string().trim().max(200).optional(),
3036
+ required: z.boolean().optional()
3037
+ });
3038
+ const appToolSchema = z.strictObject({
3039
+ description: z.string().trim().min(1).max(500),
3040
+ input: z.record(z.string().regex(/^[a-zA-Z][a-zA-Z0-9_]{0,39}$/), appToolInputSchema).refine((input) => Object.keys(input).length <= 20, { message: `입력은 20개까지입니다` }).default({})
3041
+ });
2661
3042
  const APP_SCHEDULE_INTERVAL_KEYS = Object.keys(APP_SCHEDULE_INTERVALS);
2662
3043
  /** 앱 목록에 보이는 아이콘·README(#22 앱 목록 시안) — 앱 폴더의 파일을 `sayren app deploy`가 버전과 함께 올린다 */
2663
3044
  const APP_ICON_MAX_BYTES = 262144;
@@ -2701,8 +3082,12 @@ const appManifestSchema = z.strictObject({
2701
3082
  icon: z.string().regex(APP_FOLDER_FILE).refine((path) => /\.(png|svg)$/i.test(path), { message: "아이콘은 .png 또는 .svg 파일입니다" }).optional(),
2702
3083
  /** 앱 상세에 보일 README(마크다운, 64KB 이하). 적지 않으면 앱 폴더의 README.md를 쓴다 */
2703
3084
  readme: z.string().regex(APP_FOLDER_FILE).refine((path) => /\.md$/i.test(path), { message: "README는 .md 파일입니다" }).optional(),
2704
- /** 실행 위치 — A1은 코드 업로드 앱만. 외부 런타임(`external`)은 A3에서 연다 */
2705
- runtime: z.literal("code").default("code"),
3085
+ /** 실행 위치 — `code`(sayren이 실행) 또는 `external`(개발자 서버, 매뉴얼 「개발자 서버에서 실행」) */
3086
+ runtime: z.enum(["code", "external"]).default("code"),
3087
+ /** `runtime: external`의 호출 주소 */
3088
+ external: z.strictObject({ url: z.url().startsWith("https://") }).optional(),
3089
+ /** AI 에이전트 도구(매뉴얼 「에이전트 도구」) */
3090
+ mcp: z.strictObject({ tools: z.record(z.string().regex(APP_TOOL_NAME_PATTERN), appToolSchema).refine((tools) => Object.keys(tools).length <= 20, { message: `도구는 20개까지입니다` }).default({}) }).optional(),
2706
3091
  /** 설치 때 전체 동의하는 스코프 */
2707
3092
  scopes: z.array(appScopeSchema).max(32).default([]),
2708
3093
  network: z.strictObject({ hosts: z.array(appNetworkHostSchema).max(20) }).default({ hosts: [] }),
@@ -2715,6 +3100,11 @@ adminPage: z.strictObject({ entry: z.string().regex(/^ui\/[A-Za-z0-9._/-]+\.html
2715
3100
  http: z.strictObject({ public: z.array(z.string().regex(APP_HTTP_KEY_PATTERN)).max(20) }).optional(),
2716
3101
  /** 예약 작업 — 이름마다 실행 간격 */
2717
3102
  schedules: z.record(z.string().regex(APP_SCHEDULE_NAME_PATTERN), z.strictObject({ every: z.enum(APP_SCHEDULE_INTERVAL_KEYS) })).refine((schedules) => Object.keys(schedules).length <= 10, { message: `예약 작업은 10개까지입니다` }).default({}),
3103
+ /** 주문 흐름 연동(매뉴얼 「주문 흐름에서 앱 쓰기」) — 흐름 알림(흐름 → 앱)과 흐름 사건(앱 → 흐름) */
3104
+ flow: z.strictObject({
3105
+ notifications: z.record(z.string().regex(APP_FLOW_NOTIFICATION_PATTERN), appFlowNotificationSchema).refine((items) => Object.keys(items).length <= 20, { message: `흐름 알림은 20개까지입니다` }).default({}),
3106
+ events: z.record(z.string().regex(APP_FLOW_EVENT_PATTERN), appFlowEventSchema).refine((items) => Object.keys(items).length <= 20, { message: `흐름 사건은 20개까지입니다` }).default({})
3107
+ }).optional(),
2718
3108
  settings: z.record(z.string().regex(APP_SETTING_KEY_PATTERN), appSettingFieldSchema).refine((fields) => Object.keys(fields).length <= 30, { message: `설정 필드는 30개까지입니다` }).default({}),
2719
3109
  /** 개발자 비밀 값 이름 — 값은 CLI(`sayren app secret put`)로 따로 넣는다 */
2720
3110
  secrets: z.array(z.string().regex(APP_SECRET_NAME_PATTERN)).max(20).default([])
@@ -2749,6 +3139,25 @@ function appManifestProblems(manifest) {
2749
3139
  unique(manifest.network.hosts, "network.hosts", "호스트");
2750
3140
  unique(manifest.secrets, "secrets", "비밀 값 이름");
2751
3141
  unique(manifest.http?.public ?? [], "http.public", "공개 HTTP 핸들러");
3142
+ if (manifest.runtime === "external" !== Boolean(manifest.external)) problems.push({
3143
+ path: "external",
3144
+ code: "EXTERNAL_URL_REQUIRED",
3145
+ message: "runtime이 external이면 external.url이 필요하고, code면 external을 적지 않습니다"
3146
+ });
3147
+ if (manifest.runtime === "external" && manifest.network.hosts.length > 0) problems.push({
3148
+ path: "network.hosts",
3149
+ code: "EXTERNAL_NETWORK_HOSTS",
3150
+ message: "외부 런타임 앱은 network.hosts를 적지 않습니다"
3151
+ });
3152
+ if (manifest.external) {
3153
+ const host = new URL(manifest.external.url).hostname;
3154
+ const hostProblem = appNetworkHostProblem(host);
3155
+ if (hostProblem) problems.push({
3156
+ path: "external.url",
3157
+ code: "EXTERNAL_URL_INVALID",
3158
+ message: hostProblem
3159
+ });
3160
+ }
2752
3161
  for (const event of manifest.events) if (!scopesCoverEvent(manifest.scopes, event)) problems.push({
2753
3162
  path: `events.${event}`,
2754
3163
  code: "EVENT_SCOPE_MISSING",
@@ -2785,6 +3194,10 @@ function appCapabilitiesOf(manifest) {
2785
3194
  networkHosts: sorted(manifest.network.hosts),
2786
3195
  adminPage: Boolean(manifest.ui?.adminPage),
2787
3196
  publicHttp: sorted(manifest.http?.public ?? []),
3197
+ flowNotifications: manifest.flow?.notifications ?? {},
3198
+ flowEvents: manifest.flow?.events ?? {},
3199
+ externalHost: manifest.external ? new URL(manifest.external.url).hostname : null,
3200
+ tools: manifest.mcp?.tools ?? {},
2788
3201
  schedules: Object.fromEntries(Object.entries(manifest.schedules).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([name, schedule]) => [name, schedule.every])),
2789
3202
  requiredSettings: Object.entries(manifest.settings).filter(([, field]) => field.required).map(([key]) => key).sort(),
2790
3203
  secretSettings: Object.entries(manifest.settings).filter(([, field]) => field.secret).map(([key]) => key).sort()
@@ -2838,6 +3251,18 @@ const APP_CAPABILITIES = [
2838
3251
  const previous = p.schedules ?? {};
2839
3252
  return Object.entries(n.schedules ?? {}).some(([name, every]) => !previous[name] || APP_SCHEDULE_INTERVALS[every] < APP_SCHEDULE_INTERVALS[previous[name]]);
2840
3253
  }
3254
+ },
3255
+ {
3256
+ key: "runtime",
3257
+ title: "이 앱이 실행되는 곳",
3258
+ describe: (c) => c.externalHost ? [`개발자 서버 ${c.externalHost}`] : [],
3259
+ widens: (p, n) => Boolean(n.externalHost) && n.externalHost !== p.externalHost
3260
+ },
3261
+ {
3262
+ key: "tools",
3263
+ title: "AI 에이전트 도구",
3264
+ describe: (c) => Object.entries(c.tools ?? {}).map(([name, tool]) => `${name} · ${tool.description}`),
3265
+ widens: (p, n) => grew(Object.keys(p.tools ?? {}), Object.keys(n.tools ?? {}))
2841
3266
  }
2842
3267
  ];
2843
3268
  /** 요청(메서드·경로)이 HTTP 핸들러 키에 맞는가 — `:이름`은 경로 한 마디에 맞는다(`@sayren/app`의 핸들러 고르기와 같은 규칙) */
@@ -2856,6 +3281,33 @@ function appScheduleListOf(capabilities) {
2856
3281
  every
2857
3282
  }));
2858
3283
  }
3284
+ /** 응답용 흐름 알림·사건 목록(이름순) — 옛 버전 행은 빈 목록 */
3285
+ function appFlowSummaryOf(capabilities) {
3286
+ const byName = (entries) => entries.sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
3287
+ return {
3288
+ flowNotifications: byName(Object.entries(capabilities.flowNotifications ?? {})).map(([name, notice]) => ({
3289
+ name,
3290
+ label: notice.label,
3291
+ params: byName(Object.entries(notice.params ?? {})).map(([param, field]) => ({
3292
+ name: param,
3293
+ type: field.type,
3294
+ label: field.label,
3295
+ required: field.required ?? false
3296
+ }))
3297
+ })),
3298
+ flowEvents: byName(Object.entries(capabilities.flowEvents ?? {})).map(([name, event]) => ({
3299
+ name,
3300
+ label: event.label
3301
+ }))
3302
+ };
3303
+ }
3304
+ /** 응답용 도구 목록(이름순) — 옛 버전 행은 빈 목록 */
3305
+ function appToolListOf(capabilities) {
3306
+ return Object.entries(capabilities.tools ?? {}).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([name, tool]) => ({
3307
+ name,
3308
+ description: tool.description
3309
+ }));
3310
+ }
2859
3311
  /** 예약 간격의 표시 이름 — 동의 화면·상점 플랫폼이 같이 쓴다 */
2860
3312
  function appScheduleIntervalLabel(every) {
2861
3313
  const minutes = APP_SCHEDULE_INTERVALS[every];
@@ -3241,7 +3693,31 @@ const appScheduleSummarySchema = z.object({
3241
3693
  ])
3242
3694
  });
3243
3695
  const publicHttpField = z.array(z.string()).default([]).describe("외부에서 부를 수 있는 HTTP 핸들러(`GET /track/:id`)");
3696
+ /** 흐름 알림·사건(매뉴얼 「주문 흐름에서 앱 쓰기」) — 흐름 편집기가 알림 채널·매개변수와 사건 이름을 고른다 */
3697
+ const appFlowNotificationSummarySchema = z.object({
3698
+ name: z.string(),
3699
+ label: z.string(),
3700
+ params: z.array(z.object({
3701
+ name: z.string(),
3702
+ type: z.enum([
3703
+ "string",
3704
+ "number",
3705
+ "boolean"
3706
+ ]),
3707
+ label: z.string(),
3708
+ required: z.boolean()
3709
+ }))
3710
+ });
3711
+ const appFlowEventSummarySchema = z.object({
3712
+ name: z.string(),
3713
+ label: z.string()
3714
+ });
3244
3715
  const schedulesField = z.array(appScheduleSummarySchema).default([]).describe("주기적으로 실행되는 작업");
3716
+ const toolsField = z.array(z.object({
3717
+ name: z.string(),
3718
+ description: z.string()
3719
+ })).default([]).describe("AI 에이전트 도구");
3720
+ const externalHostField = z.string().nullable().default(null).describe("개발자 서버에서 실행하는 앱의 호출 호스트. sayren이 실행하면 null");
3245
3721
  const appInstallationSchema = z.object({
3246
3722
  installationId: z.string(),
3247
3723
  storeId: z.string(),
@@ -3255,7 +3731,9 @@ const appInstallationSchema = z.object({
3255
3731
  networkHosts: z.array(z.string()),
3256
3732
  events: z.array(appEventTypeSchema),
3257
3733
  publicHttp: publicHttpField,
3258
- schedules: schedulesField
3734
+ schedules: schedulesField,
3735
+ tools: toolsField,
3736
+ externalHost: externalHostField
3259
3737
  }).nullable().optional().describe("재동의가 필요한 새 버전이 요청하는 권한·외부 호스트·이벤트(전체). 없으면 null"),
3260
3738
  grantedScopes: z.array(z.string()).describe("동의한 스코프"),
3261
3739
  grantedNetworkHosts: z.array(z.string()).describe("동의한 외부 호출 호스트"),
@@ -3263,6 +3741,10 @@ const appInstallationSchema = z.object({
3263
3741
  adminPage: z.boolean().describe("상점 플랫폼 앱 화면이 있는가"),
3264
3742
  publicHttp: publicHttpField,
3265
3743
  schedules: schedulesField,
3744
+ tools: toolsField,
3745
+ externalHost: externalHostField,
3746
+ flowNotifications: z.array(appFlowNotificationSummarySchema).default([]).describe("주문 흐름에서 이 앱으로 보낼 수 있는 알림"),
3747
+ flowEvents: z.array(appFlowEventSummarySchema).default([]).describe("이 앱이 주문 흐름에 보내는 사건(`app.<handle>.<이름>`)"),
3266
3748
  /** 설치 결과의 캐시가 아니라 실행 버전 매니페스트의 요약 */
3267
3749
  settings: appInstallationSettingsSchema,
3268
3750
  installedBy: z.object({
@@ -3325,6 +3807,8 @@ const storeAppDetailSchema = storeAppSchema.extend({
3325
3807
  networkHosts: z.array(z.string()).describe("앱이 데이터를 보내는 외부 호스트"),
3326
3808
  publicHttp: publicHttpField,
3327
3809
  schedules: schedulesField,
3810
+ tools: toolsField,
3811
+ externalHost: externalHostField,
3328
3812
  settings: z.record(z.string(), appSettingFieldSchema).describe("설치 때 채우는 설정 필드"),
3329
3813
  updatedAt: z.string().nullable().describe("현재 버전을 release한 시각")
3330
3814
  });
@@ -3344,6 +3828,29 @@ const appInstallationSelfSchema = z.object({
3344
3828
  grantedScopes: z.array(z.string()),
3345
3829
  installedAt: z.string()
3346
3830
  });
3831
+ /** 에이전트 도구(매뉴얼 「에이전트 도구」) — `GET /v1/apps/tools` 한 줄 */
3832
+ const appToolSummarySchema = z.object({
3833
+ installationId: z.string(),
3834
+ app: z.object({
3835
+ appId: z.string(),
3836
+ handle: z.string(),
3837
+ name: z.string()
3838
+ }),
3839
+ name: z.string(),
3840
+ description: z.string(),
3841
+ input: z.array(z.object({
3842
+ name: z.string(),
3843
+ type: z.enum([
3844
+ "string",
3845
+ "number",
3846
+ "boolean"
3847
+ ]),
3848
+ description: z.string().nullable(),
3849
+ required: z.boolean()
3850
+ }))
3851
+ });
3852
+ const appToolCallSchema = z.object({ input: z.record(z.string(), z.unknown()).default({}) });
3853
+ const appToolResultSchema = z.object({ result: z.unknown().describe("앱 도구가 돌려준 값(JSON)") });
3347
3854
  /** 설치 저장소(`ctx.storage`, 매뉴얼 「앱 코드 › 저장소」) — 설치 토큰 전용 */
3348
3855
  const APP_STORAGE_KEY_PATTERN = /^[A-Za-z0-9._:-]{1,200}$/;
3349
3856
  const APP_STORAGE_MAX_KEYS = 1e3;
@@ -3470,7 +3977,7 @@ const developerAppCreateSchema = z.object({
3470
3977
  });
3471
3978
  /** `PUT /platform/v1/developer/apps/{appId}/versions` — CLI `app deploy`가 올리는 번들 */
3472
3979
  const appArtifactUploadSchema = z.object({
3473
- manifest: z.unknown().describe("sayren.app.json 원문(JSON)"),
3980
+ manifest: z.unknown().describe("manifest.json 원문(JSON)"),
3474
3981
  packageJson: z.string().max(262144),
3475
3982
  lockfile: z.string().max(4194304).nullable(),
3476
3983
  /** 서버 번들(ESM 한 파일) base64. gzip 3MB까지 */
@@ -3548,7 +4055,9 @@ const appInvocationSchema = z.object({
3548
4055
  kind: z.enum([
3549
4056
  "event",
3550
4057
  "http",
3551
- "schedule"
4058
+ "schedule",
4059
+ "flow",
4060
+ "tool"
3552
4061
  ]),
3553
4062
  eventType: z.string().nullable(),
3554
4063
  outcome: z.enum([
@@ -8361,7 +8870,8 @@ function createStoreClient(options) {
8361
8870
  }),
8362
8871
  /**
8363
8872
  * `POST /order-items/{id}/events/{key}` — 현장 단말·연동의 상점 사건(`custom.<이름>`)을 플로우에 넣는다(#115).
8364
- * 에러: 400 `FLOW_EVENT_KEY_INVALID`, 409 `FLOW_EVENT_NOT_ACCEPTED`
8873
+ * 앱 사건(`app.<handle>.<이름>`, #22)은 그 앱의 설치 토큰으로만 보낸다(`ctx.api`).
8874
+ * 에러: 400 `FLOW_EVENT_KEY_INVALID`, 403 `FLOW_EVENT_APP_FORBIDDEN`, 409 `FLOW_EVENT_NOT_ACCEPTED`
8365
8875
  */
8366
8876
  emitEvent: (orderItemId, key, input = {}, idempotencyKey) => storeHttp.request("POST", path`/order-items/${orderItemId}/events/${key}`, flowActionResultSchema, {
8367
8877
  body: flowActionRequestSchema.parse({ input }),
@@ -8655,6 +9165,11 @@ get: (params) => storeHttp.request("GET", "/sales-report", salesReportSchema, {
8655
9165
  verify: (provider, body) => storeHttp.request("POST", path`/store/payment-providers/${pgProviderSchema.parse(provider)}/verify`, paymentProviderVerificationSchema, { body: verifyPaymentProviderRequestSchema.parse(body ?? {}) })
8656
9166
  },
8657
9167
  /** 설치 앱(#22, 매뉴얼 「앱 설치와 관리 › 관리 API」) — 설치·설정·제거·세션은 상점 플랫폼 OWNER·ADMIN만 */
9168
+ /** 에이전트 도구(#22 「에이전트 도구」) — 설치된 앱이 제공하는 도구 목록·실행. 실행은 OWNER·ADMIN */
9169
+ appTools: {
9170
+ list: () => storeHttp.request("GET", "/apps/tools", z.array(appToolSummarySchema)),
9171
+ call: (installationId, name, input = {}) => storeHttp.request("POST", path`/apps/installations/${installationId}/tools/${name}`, appToolResultSchema, { body: { input } })
9172
+ },
8658
9173
  apps: {
8659
9174
  /** 이 상점에 설치할 수 있는 앱 — 앱 목록·상세(아이콘·README·Scope·Hook·설정 필드) */
8660
9175
  catalog: {
@@ -8783,6 +9298,28 @@ list: (params) => storeHttp.request("GET", "/audit-logs", auditLogPageSchema, {
8783
9298
  remove: (locationId) => storeHttp.requestVoid("DELETE", path`/pickup-locations/${locationId}`)
8784
9299
  },
8785
9300
  /**
9301
+ * 상점 플랫폼 AI 채팅 (이슈 #124) — 상점 플랫폼 전용(공개 문서 제외). 메시지는 202로 `streamId`를 돌려주고
9302
+ * 응답은 `streamUrl`(SSE, Bearer `streamToken`)로 받는다. 실행은 브라우저와 무관하게 서버에서 끝까지 돈다.
9303
+ */
9304
+ ai: {
9305
+ /** `GET /v1/ai/conversations` — 내 대화 목록(최근 순) */
9306
+ listConversations: () => storeHttp.request("GET", "/ai/conversations", z.array(aiConversationSummarySchema)),
9307
+ /** `POST /v1/ai/conversations` — 새 대화. `draftId`를 주면 그 초안을 첫 메시지로 실행을 시작한다 */
9308
+ createConversation: (body = {}) => storeHttp.request("POST", "/ai/conversations", createAiConversationResponseSchema, { body: createAiConversationRequestSchema.parse(body) }),
9309
+ /** `GET /v1/ai/conversations/{id}` — 메시지와 진행 중 실행 */
9310
+ getConversation: (conversationId) => storeHttp.request("GET", path`/ai/conversations/${conversationId}`, aiConversationSchema),
9311
+ /** `POST /v1/ai/conversations/{id}/messages` (202) — 진행 중 실행이 있으면 409 `AI_RUN_IN_PROGRESS` */
9312
+ sendMessage: (conversationId, body) => storeHttp.request("POST", path`/ai/conversations/${conversationId}/messages`, sendAiMessageResponseSchema, { body: sendAiMessageRequestSchema.parse(body) }),
9313
+ /** `POST /v1/ai/runs/{id}/cancel` (202) — 실행기가 다음 단계 전에 멈춘다 */
9314
+ cancelRun: (runId) => storeHttp.request("POST", path`/ai/runs/${runId}/cancel`, aiRunSchema, { body: {} }),
9315
+ /** `GET /v1/ai/conversations/{id}/file-changes` — 실행별 스토어프론트 작업 트리 변경(#65) */
9316
+ listFileChanges: (conversationId) => storeHttp.request("GET", path`/ai/conversations/${conversationId}/file-changes`, aiConversationFileChangesSchema),
9317
+ /** `GET /v1/ai/runs/{id}/file-changes` — 실행 하나의 변경 내용(이전·이후) */
9318
+ getRunFileDiff: (runId) => storeHttp.request("GET", path`/ai/runs/${runId}/file-changes`, aiRunFileDiffSchema),
9319
+ /** `POST /v1/ai/runs/{id}/revert` — 실행이 바꾼 파일을 한 번에 되돌린다(전부 아니면 전무) */
9320
+ revertRun: (runId) => storeHttp.request("POST", path`/ai/runs/${runId}/revert`, aiRunRevertResultSchema, { body: {} })
9321
+ },
9322
+ /**
8786
9323
  * 스토어프론트 호스팅 (이슈 #53) — 조회 `storefront:r`, 쓰기 `storefront:rw`(OWNER·ADMIN).
8787
9324
  * 쓰기 응답은 바뀐 사이트다. Cloudflare 반영은 커밋 뒤라 `provisioning.status`가 잠시 `PENDING`일 수 있다.
8788
9325
  * 에이전트 토큰의 발행·되돌리기·템플릿 변경·공개 전환·슬러그 변경·끄기는 승인 대기(`ApprovalPendingError`)다.
@@ -9395,4 +9932,4 @@ function createStoreSession(options) {
9395
9932
  };
9396
9933
  }
9397
9934
  //#endregion
9398
- export { APPROVAL_ALREADY_DECIDED_CODE, APPROVAL_REQUIRED_CODE, APP_CAPABILITIES, APP_DEPLOY_KEY_PATTERN, APP_DEPLOY_KEY_PREFIX, APP_EVENTS_MAX, APP_EVENT_SCOPES, APP_EVENT_TYPES, APP_HANDLE_PATTERN, APP_HTTP_KEY_PATTERN, APP_ICON_CONTENT_TYPES, APP_ICON_MAX_BYTES, APP_ICON_MIN_PX, APP_LIFECYCLE_EVENT_TYPES, APP_NETWORK_DENIED_SUFFIXES, APP_NETWORK_HOSTS_MAX, APP_PUBLIC_HTTP_MAX, APP_README_MAX_BYTES, APP_RESERVED_HANDLES, APP_SCHEDULES_MAX, APP_SCHEDULE_INTERVALS, APP_SCHEDULE_NAME_PATTERN, APP_SECRETS_MAX, APP_SECRET_NAME_PATTERN, APP_SECRET_PATTERNS, APP_SERVER_BUNDLE_MAX_GZIP_BYTES, APP_SETTINGS_MAX_FIELDS, APP_SETTING_FIELD_TYPES, APP_SETTING_KEY_PATTERN, APP_STORAGE_KEY_PATTERN, APP_STORAGE_MAX_BYTES, APP_STORAGE_MAX_KEYS, APP_UI_MAX_BYTES, APP_UI_MAX_FILES, ApiError, ApprovalPendingError, BRAND_BRIEF_MAX_REFERENCES, BUSINESS_INFO_MAX_LENGTH, BUSINESS_NUMBER_PATTERN, CASH_RECEIPT_STATUS_VALUES, COLLECTION_BEST_SELLING_DAYS, COLLECTION_PREVIEW_SIZE, COLLECTION_PRODUCT_SORTS, COLLECTION_SALES_SORT_DEFAULT_DAYS, COLLECTION_SLUG_PATTERN, COLLECTION_TYPES, COUPON_CODE_PATTERN, COUPON_CONDITIONS_DEFAULTS, COUPON_TARGET_ALL, COUPON_TARGET_LIST_MAX, CUSTOM_INPUT_FORBIDDEN_WORDS, CUSTOM_INPUT_TYPES, FULFILLMENT_METHODS, FULFILLMENT_METHODS_BY_TYPE, FULFILLMENT_METHOD_RULES, FULFILLMENT_RULES, INSTALLABLE_SCOPES, KNOWN_WEBHOOK_EVENT_TYPES, MAX_ADDON_GROUPS, MAX_ANALYTICS_ALLOWED_ORIGINS, MAX_AUTO_TRANSITION_DAYS, MAX_CALENDAR_DAYS, MAX_COLLECTIONS, MAX_COLLECTION_BEST_SELLING_TOP, MAX_COLLECTION_CREATED_WITHIN_DAYS, MAX_COLLECTION_DESCRIPTION, MAX_COLLECTION_PRODUCTS, MAX_COLLECTION_PRODUCTS_PER_ADD, MAX_COLLECTION_RULES, MAX_COLLECTION_RULE_CATEGORIES, MAX_COLLECTION_TITLE, MAX_CUSTOM_INPUTS, MAX_CUSTOM_INPUT_LENGTH, MAX_OPTION_GROUPS, MAX_PICKUP_LOCATIONS, MAX_PRODUCT_IMAGES, MAX_SAVED_OPTION_SETS, MAX_SAVED_OPTION_SET_NAME, MAX_STAY_NIGHTS, MAX_VALUES_PER_GROUP, MAX_VARIANTS, MCP_TELEMETRY_MAX_RESULTS, MIN_PAYMENT_AMOUNT, NON_INSTALLABLE_SCOPES, NO_COUPON_SETTLEMENT, NO_SHIPPING_BUNDLE_KEY, PAYMENT_ROUTING_EXCLUSION_CODES, POINT_ADJUSTMENT_MAX, POINT_EARN_RATE_BP_MAX, POINT_ENTRY_TYPES, POINT_EXPIRY_DAYS_MAX, POINT_EXPIRY_DAYS_MIN, POINT_LOT_SOURCES, POINT_POLICY_DEFAULTS, POINT_REVIEW_REWARD_MAX, POINT_USE_UNITS, PORTONE_CHANNEL_NAME_MAX_LENGTH, PORTONE_MAX_CHANNELS, PORTONE_MIN_CHANNELS, REFUND_POLICY_DEFAULTS, REFUND_POLICY_DELIVERY_FEE_KEYS, REMOTE_AREA_ZIP_RANGES, RESERVED_STOREFRONT_SLUGS, RESERVED_STORE_CODES, SCOPE_DESCRIPTIONS, SHIPPING_POLICY_DEFAULTS, STARTER_SELLER_TASKS, STARTER_STAGES, STOREFRONT_BLOCKED_PATH_SEGMENTS, STOREFRONT_BUILD_STAGES, STOREFRONT_BUILD_TERMINAL_STATUSES, STOREFRONT_CHECK_TERMINAL_STATUSES, STOREFRONT_CLOSED_SITE_HOLD_DAYS, STOREFRONT_CUSTOM_DOMAIN_LIMIT_DEFAULT, STOREFRONT_DOMAIN_DNS_GRACE_DAYS, STOREFRONT_DOMAIN_DNS_WAIT_DAYS, STOREFRONT_DOMAIN_TXT_LABEL, STOREFRONT_EDIT_ACTIVITY_TIMEOUT_MINUTES, STOREFRONT_EDIT_CAPACITY, STOREFRONT_EDIT_IDLE_MINUTES, STOREFRONT_EDIT_PREVIEW_SUFFIX, STOREFRONT_EDIT_START_STAGES, STOREFRONT_FILE_BATCH_MAX, STOREFRONT_FILE_MAX_BYTES, STOREFRONT_PATH_SEGMENT_PATTERN, STOREFRONT_PLATFORM_DOMAINS, STOREFRONT_PUBLIC_SUFFIXES, STOREFRONT_SEARCH_REGEX_MAX_LENGTH, STOREFRONT_SHOWCASE_SLUG_PREFIX, STOREFRONT_SITE_CREATE_LIMIT, STOREFRONT_SLUG_CHANGE_LIMIT, STOREFRONT_SLUG_CHANGE_WINDOW_DAYS, STOREFRONT_SLUG_HOLD_DAYS, STOREFRONT_SLUG_PATTERN, STOREFRONT_SOURCE_BLOB_BATCH_MAX, STOREFRONT_SOURCE_PART_BYTES, STOREFRONT_WORKSPACE_MAX_BYTES, STOREFRONT_WORKSPACE_MAX_FILES, STORE_CODE_PATTERN, STORE_ROLE_SCOPES, STORE_SCOPE_RESOURCES, STORE_SESSION_KEYS, TEMPLATE_STORE_LOCKED_BUSINESS_FIELDS, TOSS_WIDGET_CLIENT_KEY_PATTERN, TOSS_WIDGET_KEY_MESSAGE, TOSS_WIDGET_SECRET_KEY_PATTERN, UPLOAD_PURPOSE_LIMITS, VARIANT_COUNT_WARNING, VARIANT_STOCK_EXCLUSIVE_MESSAGE, WEBHOOK_DEFAULT_TOLERANCE_SEC, WEBHOOK_DELIVERY_ID_HEADER, WEBHOOK_EVENT_ID_HEADER, WEBHOOK_EVENT_TYPE_HEADER, WEBHOOK_FAILURE_REASONS, WEBHOOK_HEADERS, WEBHOOK_PAYLOAD_EXCERPT_MAX_BYTES, WEBHOOK_RESOURCE_TYPES, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_USER_AGENT, addStorefrontDomainRequestSchema, addonGroupRequestSchema, addonGroupSchema, addonValueRequestSchema, addonValueSchema, addressChangeRequestListSchema, addressTypeSchema, agentPolicyDecisionSchema, allocateByWeight, analyticsChannelSchema, analyticsCheckoutOutcomeSchema, analyticsCheckoutSchema, analyticsDeviceRowSchema, analyticsDevicesSchema, analyticsFunnelStepSchema, analyticsOriginSchema, analyticsOverviewSchema, analyticsPagesQuerySchema, analyticsPagesSchema, analyticsProductRowSchema, analyticsProductSortSchema, analyticsProductsQuerySchema, analyticsProductsSchema, analyticsRangeQuerySchema, analyticsRealtimeSchema, analyticsSearchQuerySchema, analyticsSearchSchema, analyticsSourceGroupBySchema, analyticsSourceRowSchema, analyticsSourcesQuerySchema, analyticsSourcesSchema, analyticsTotalsSchema, apiLogErrorSchema, apiLogListQuerySchema, apiLogPageSchema, apiLogPrincipalSchema, apiLogPrincipalTypeSchema, apiLogSchema, apiLogStatusFilterSchema, apiLogSummarySchema, appArtifactUploadSchema, appBuildSchema, appBuildStageSchema, appCapabilitiesOf, appDeployKeyCreateSchema, appDeployKeyCreatedSchema, appDeployKeySchema, appDevTokenSchema, appDistributionSchema, appEventTypeSchema, appHandleSchema, appHttpKeyMatches, appIconProblem, appInstallRequestSchema, appInstallationActivitySchema, appInstallationAppSchema, appInstallationRunSchema, appInstallationSchema, appInstallationSelfSchema, appInstallationSettingsSchema, appInstallationSettingsUpdateSchema, appInstallationStatusSchema, appInvocationSchema, appListingReviewSchema, appListingReviewStatusSchema, appListingSchema, appManifestProblems, appManifestSchema, appManifestWidens, appNetworkHostProblem, appNetworkHostSchema, appReleaseResultSchema, appRuntimeSchema, appScheduleIntervalLabel, appScheduleListOf, appScheduleSummarySchema, appScopeSchema, appSecretSummarySchema, appSessionSchema, appSettingFieldSchema, appStatusSchema, appStorageEntrySchema, appStorageKeysSchema, appStorageListQuerySchema, appStoragePutSchema, appVersionSchema, appVersionStatusSchema, appVisibilitySchema, approvalDecisionRequestSchema, approvalListQuerySchema, approvalPageSchema, approvalRequestSchema, approvalStatusSchema, approveClaimResultSchema, auditActorSchema, auditActorTypeSchema, auditLogListQuerySchema, auditLogOutcomeSchema, auditLogPageSchema, auditLogSchema, auditLogSourceSchema, bestSellingRuleOf, brandBriefProductSourceSchema, brandBriefReferenceSchema, brandBriefSchema, brandBriefViewSchema, buildAuthorizeUrl, buildQuery, bulkResultSchema, businessInfoPatchShape, businessInfoResponseShape, businessNumberSchema, calendarDateSchema, calendarDaySchema, calendarQuerySchema, cancelBySellerRequestSchema, cancelBySellerResultSchema, carrierSchema, cashReceiptSchema, categoryAttributeSchema, categoryCreateRequestSchema, categoryDeleteQuerySchema, categoryDeleteStrategySchema, categoryListQuerySchema, categoryPatchRequestSchema, categoryProductSortSchema, categorySchema, categorySearchResultSchema, categoryTreeNodeSchema, categoryWithPathSchema, changeStorefrontSlugRequestSchema, changeStorefrontTemplateRequestSchema, changeTypeSchema, claimDetailSchema, claimHoldResultSchema, claimListQuerySchema, claimReasonSchema, claimReturnAddressSchema, claimSchema, claimStatusSchema, claimTypeSchema, claimWebhookEventDataSchema, claimWebhookEventSchema, collectionCreateRequestSchema, collectionListQuerySchema, collectionPageSchema, collectionPatchRequestSchema, collectionPreviewRequestSchema, collectionPreviewSchema, collectionProductListQuerySchema, collectionProductSchema, collectionProductSortRequestSchema, collectionProductsAddRequestSchema, collectionProductsReplaceRequestSchema, collectionRuleCategoryIds, collectionRuleSchema, collectionRuleViewSchema, collectionRulesPredicate, collectionRulesSchema, collectionSchema, collectionStateCountsSchema, collectionStateOf, collectionStateSchema, commerceFlowCheckSchema, commerceFlowSchema, commerceFlowSummarySchema, commerceFlowVersionViewSchema, commerceNumberField, compareBySales, consentActionSchema, consentKindSchema, consentSourceSchema, couponBenefitSchema, couponConditionsInputSchema, couponConditionsSchema, couponDiscountOf, couponIssueListQuerySchema, couponIssueMethodSchema, couponIssueSchema, couponIssueStatusSchema, couponKindSchema, couponListQuerySchema, couponRedemptionListQuerySchema, couponRedemptionSchema, couponRejectReasonSchema, couponRuleSchema, couponSchema, couponStatsSchema, couponStatusSchema, couponTargetInputSchema, couponTargetSchema, createCommerceFlowRequestSchema, createCouponRequestSchema, createPkcePair, createStoreClient, createStoreSession, createStorefrontEditPreviewLinkRequestSchema, createStorefrontPreviewLinkRequestSchema, createStorefrontSiteRequestSchema, createStorefrontVersionRequestSchema, customInputLabelForbiddenWord, customInputRequestSchema, customInputSchema, customInputValueSchema, customerAddressSchema, customerConsentListQuerySchema, customerConsentSchema, customerConsentStateSchema, customerConsentsSchema, customerCouponSchema, customerDelegationRequestSchema, customerDelegationSchema, customerDetailSchema, customerInquiryCategorySchema, customerInquiryListQuerySchema, customerListQuerySchema, customerOrderSchema, customerPointsSchema, customerSortSchema, customerStatsSchema, customerSummarySchema, customerWithdrawalBlockedDetailsSchema, defaultFulfillmentMethodOf, deleteStorefrontFileRequestSchema, deliveryBundleKeyOf, deliveryFeeWaiverSchema, deliveryInfoSchema, deliveryMethodSchema, deliveryStatusSchema, deliveryTypeSchema, descendantCategoryIdsOf, describeScope, devStoreSchema, developerAppCreateSchema, developerAppSchema, developerInstallationSchema, developerOrgSchema, developerStoreSchema, disableStorefrontHostingRequestSchema, discountRequestSchema, discountSchema, dispatchRequestSchema, easyPayProviderResponseSchema, easyPayProviderSchema, eventTypeSchema, exchangeAuthorizationCode, flowActionRequestSchema, flowActionResultSchema, flowActionSchema, flowFieldValueSchema, flowInputFieldSchema, flowNodeTypesSchema, flowNotificationWebhookEventDataSchema, flowNotificationWebhookEventSchema, flowPresetDetailSchema, flowPresetSummarySchema, flowRunSchema, flowRunStepSchema, flowSecretNameSchema, flowSecretSchema, flowStateChangedWebhookEventDataSchema, flowStateChangedWebhookEventSchema, flowStateSchema, formatOrderNo, fulfillBulkRequestSchema, fulfillRequestSchema, fulfillmentMethodOf, fulfillmentMethodSchema, fulfillmentMethodsOf, fulfillmentRuleOf, fulfillmentTypeOf, fulfillmentTypeResponseSchema, fulfillmentTypeSchema, holdOrderItemRequestSchema, inquiryListQuerySchema, inquirySchema, inquiryWebhookEventDataSchema, inquiryWebhookEventSchema, inventoryModeSchema, invitationDeliveryStatusSchema, invitationListQuerySchema, invitationSchema, inviteMemberRequestSchema, isCouponTargetLine, isEditableStorefrontPath, isInstallableScope, isReservedStoreCode, isReservedStorefrontSlug, isShowcaseStorefrontSlug, isStoreScope, isWebOrigin, issueCouponRequestSchema, issueCouponResultSchema, liveGateConditionCodeSchema, liveGateConditionSchema, liveGateErrorDetailsSchema, liveGateSchema, loginProviderSchema, loginProviderStatusSchema, loginProviderTestSchema, loginSettingsSchema, maskedSecretSchema, matchesCollectionRules, mcpRuleResultSchema, mcpToolEventSchema, migrateFlowVersionRequestSchema, migrateFlowVersionResultSchema, moveFlowStateRequestSchema, moveStorefrontFileRequestSchema, myAccountSchema, myStoreSchema, nightsOf, normalizeBusinessNumber, normalizeCouponCode, normalizeStorefrontHostname, normalizeStorefrontPath, oauthTokenResponseSchema, openFulfillmentUnion, optionGroupKindSchema, optionGroupRequestSchema, optionGroupSchema, optionModelRequestSchema, optionModelSchema, optionSelectionSchema, optionSortSchema, optionValueRequestSchema, optionValueSchema, orderCanceledWebhookEventDataSchema, orderCanceledWebhookEventSchema, orderDiscountSchema, orderFlowActionResultSchema, orderFulfilledWebhookEventDataSchema, orderFulfilledWebhookEventSchema, orderItemFlowSchema, orderItemFulfillmentSchema, orderItemFulfillmentSnapshotResponseSchema, orderItemFulfillmentSnapshotSchema, orderItemListQuerySchema, orderItemMemoResultSchema, orderItemPageSchema, orderItemSchema, orderItemStatusSchema, orderListQuerySchema, orderSchema, orderSummaryPageSchema, orderSummarySchema, orderWebhookEventDataSchema, orderWebhookEventSchema, pageInfoSchema, pageQueryShape, pageSchema, parseOrderNo, parseWebhookEvent, paymentAttemptRecordSchema, paymentAttemptStatusSchema, paymentCredentialSetSchema, paymentFailureWarningSchema, paymentListQuerySchema, paymentProviderSchema, paymentProviderVerificationSchema, paymentRecordDetailSchema, paymentRecordPageSchema, paymentRecordSchema, paymentRecordStatusSchema, paymentRefundRecordSchema, paymentSettingsSchema, pgEnvironmentSchema, pgPaymentMethodSchema, pgProviderSchema, pgVerificationResultSchema, pickupLocationRequestSchema, pickupLocationSchema, pickupLocationSnapshotSchema, planCodeSchema, planEntitlementsSchema, planErrorDetailsSchema, pointAdjustmentRequestSchema, pointAdjustmentResultSchema, pointEarnOf, pointEarnRateBpSchema, pointEarningEnabled, pointEntrySchema, pointExpiresAtOf, pointHistoryQuerySchema, pointLotSchema, pointPolicyNoticeSchema, pointPolicySchema, pointRestoreExpiresAtOf, pointUseOf, pointUsePolicySchema, policyDocumentUrlSchema, policyVersionSchema, portOneChannelSchema, portOneCredentialsInputSchema, productCreateRequestSchema, productFulfillmentCreateSchema, productFulfillmentResponseSchema, productFulfillmentSchema, productFulfillmentUpdateSchema, productImageRejection, productImageUrlSchema, productListQuerySchema, productOutOfStockWebhookEventDataSchema, productOutOfStockWebhookEventSchema, productPatchRequestSchema, productRefundPolicyOverride, productRefundPolicyPatchSchema, productReplaceRequestSchema, productSchema, productSortSchema, productStatusSchema, productSummarySchema, productVariantRequestSchema, productVariantSchema, proratedPaidRefundBase, proratedPointRefund, proratedRefundBase, publicPlanSchema, publicPlansSchema, publishStorefrontVersionRequestSchema, purchaseDecisionExtendResultSchema, purchaseDecisionRequestResultSchema, purchaseEarnPolicySchema, purchaseEarnRateOf, putBrandBriefRequestSchema, quoteDelivery, quotePricing, rankBestSelling, refreshUserToken, refundPolicyPatchSchema, refundPolicySchema, rejectClaimRequestSchema, remoteAreaLabelOf, remoteAreaOf, remoteAreaSchema, remoteSurchargeOf, replaceStorefrontSourceRequestSchema, replayFlowRequestSchema, replayFlowResultSchema, requiresCollection, requiresShipping, resolvePointPolicy, resolveRefundPolicy, resolveShippingPolicy, resolvedFlowSchema, responsePlanCodeSchema, responsePointEntryTypeSchema, reviewListQuerySchema, reviewReportResultSchema, reviewRewardPointOf, reviewRewardPolicySchema, reviewSchema, reviewSortSchema, reviewWebhookEventDataSchema, reviewWebhookEventSchema, rollbackStorefrontRequestSchema, runStorefrontCheckRequestSchema, salesReportGroupBySchema, salesReportQuerySchema, salesReportRowSchema, salesReportSchema, salesTotalsSchema, saveFlowDraftRequestSchema, saveFlowSecretRequestSchema, saveLoginProviderRequestSchema, savedCustomInputRequestSchema, savedCustomInputSchema, savedOptionGroupRequestSchema, savedOptionGroupSchema, savedOptionSetCompositionSchema, savedOptionSetFromProductRequestSchema, savedOptionSetFromProductResultSchema, savedOptionSetListQuerySchema, savedOptionSetRequestSchema, savedOptionSetSchema, savedOptionSetSortSchema, savedOptionValueRequestSchema, savedOptionValueSchema, scopeAccessSchema, scopesCoverEvent, searchStorefrontFilesRequestSchema, sellerAddressListQuerySchema, sellerAddressRequestSchema, sellerAddressSchema, sellerCancelPreviewSchema, sellerCustomerInquirySchema, setCalendarRequestSchema, setStorefrontVisibilityRequestSchema, settleCouponShortfall, settlementDetailQuerySchema, settlementDetailSchema, settlementListQuerySchema, settlementStatusSchema, settlementSummarySchema, settlementWithDetailsSchema, shippingAddressSchema, shippingPolicyPatchSchema, shippingPolicySchema, simulateFlowRequestSchema, simulateFlowResultSchema, simulationStepSchema, splitRefund, starterSellerTaskSchema, starterStageSchema, starterStatusSchema, starterStoreInfoFieldSchema, stayRangeSchema, staySnapshotSchema, storeAppDetailSchema, storeAppSchema, storeCodeSchema, storeIndustrySchema, storeMemberRoleUpdatedSchema, storeMemberSchema, storePointPolicySchema, storeRoleSchema, storeSchema, storeScopeResourceSchema, storeSubscriptionSchema, storeTemplateSchema, storefrontBuildDependenciesSchema, storefrontBuildListQuerySchema, storefrontBuildSchema, storefrontBuildStatusSchema, storefrontCheckSchema, storefrontCheckStatusSchema, storefrontCustomDomainStatusSchema, storefrontCustomHostnameProblem, storefrontDependencyFindingSchema, storefrontDeploymentLogSchema, storefrontDeploymentSchema, storefrontDeploymentStepSchema, storefrontDnsRecordSchema, storefrontDomainSchema, storefrontDomainTxtNameOf, storefrontEditPreviewLabelOf, storefrontEditPreviewSchema, storefrontEditSessionSchema, storefrontEditSessionStatusSchema, storefrontEditingSchema, storefrontFileConflictDetailsSchema, storefrontFileContentQuerySchema, storefrontFileContentSchema, storefrontFileDeleteResultSchema, storefrontFileEncodingSchema, storefrontFileEntrySchema, storefrontFileHashSchema, storefrontFileListQuerySchema, storefrontFileListSchema, storefrontFileMoveResultSchema, storefrontFilePathSchema, storefrontFileSearchResultSchema, storefrontFileWriteResultSchema, storefrontHostingSchema, storefrontPreviewLinkSchema, storefrontProvisioningSchema, storefrontRuleResultSchema, storefrontRuleSeveritySchema, storefrontSiteDomainSchema, storefrontSiteDomainsSchema, storefrontSiteSchema, storefrontSiteSnapshotSchema, storefrontSiteStatusSchema, storefrontSlugAvailabilityQuerySchema, storefrontSlugAvailabilitySchema, storefrontSlugSchema, storefrontSourceArchivePartSchema, storefrontSourceArchiveQuerySchema, storefrontSourceBlobsResultSchema, storefrontSourceModeSchema, storefrontSourceRefSchema, storefrontSourceReplacedSchema, storefrontSourceSchema, storefrontSuspensionSchema, storefrontTemplateSchema, storefrontVerifyReportSchema, storefrontVersionCreatedSchema, storefrontVersionSchema, storefrontVersionStatusSchema, storefrontVisibilitySchema, subscriptionLimitsSchema, subscriptionStatusSchema, subscriptionUsageSchema, tossPaymentsCredentialsInputSchema, trackingStageResponseSchema, trackingUpdateResultSchema, unknownWebhookEventSchema, updateCouponRequestSchema, updateLoginProviderRequestSchema, updateLoginSettingsRequestSchema, updateMemberRoleRequestSchema, updatePaymentProviderRequestSchema, updatePaymentSettingsRequestSchema, updatePointPolicyRequestSchema, updateStoreRequestSchema, updateStoreTemplateRequestSchema, uploadExtensionOf, uploadPurposeSchema, uploadRejection, uploadRequestSchema, uploadStorefrontSourceBlobsRequestSchema, uploadTicketSchema, upsertPortOneProviderRequestSchema, upsertTossPaymentsProviderRequestSchema, variantStockRequestSchema, variantStockSchema, verifyPaymentProviderRequestSchema, webhookCreatedSchema, webhookDeliveryDetailSchema, webhookDeliveryErrorCodeSchema, webhookDeliveryListQuerySchema, webhookDeliveryResourceSchema, webhookDeliverySchema, webhookDeliveryStatusSchema, webhookEventSchema, webhookFailureReasonSchema, webhookRedeliverFailedResultSchema, webhookRequestHeaderSchema, webhookRequestSchema, webhookResourceTypeSchema, webhookSchema, webhookSecretRotatedSchema, webhookStatusSchema, webhookTestRequestSchema, webhookTestResultSchema, withdrawCustomerRequestSchema, writeDryRunResultSchema, writePreviewSchema, writeStorefrontFilesRequestSchema };
9935
+ export { AI_MESSAGE_MAX_ATTACHMENTS, AI_MESSAGE_MAX_CHARS, AI_RUN_ACTIVE_STATUSES, AI_RUN_FILE_CHANGES_RETENTION_DAYS, APPROVAL_ALREADY_DECIDED_CODE, APPROVAL_REQUIRED_CODE, APP_CAPABILITIES, APP_DEPLOY_KEY_PATTERN, APP_DEPLOY_KEY_PREFIX, APP_EVENTS_MAX, APP_EVENT_SCOPES, APP_EVENT_TYPES, APP_FLOW_EVENT_PATTERN, APP_FLOW_ITEMS_MAX, APP_FLOW_NOTIFICATION_PATTERN, APP_HANDLE_PATTERN, APP_HTTP_KEY_PATTERN, APP_ICON_CONTENT_TYPES, APP_ICON_MAX_BYTES, APP_ICON_MIN_PX, APP_LIFECYCLE_EVENT_TYPES, APP_NETWORK_DENIED_SUFFIXES, APP_NETWORK_HOSTS_MAX, APP_PUBLIC_HTTP_MAX, APP_README_MAX_BYTES, APP_RESERVED_HANDLES, APP_SCHEDULES_MAX, APP_SCHEDULE_INTERVALS, APP_SCHEDULE_NAME_PATTERN, APP_SECRETS_MAX, APP_SECRET_NAME_PATTERN, APP_SECRET_PATTERNS, APP_SERVER_BUNDLE_MAX_GZIP_BYTES, APP_SETTINGS_MAX_FIELDS, APP_SETTING_FIELD_TYPES, APP_SETTING_KEY_PATTERN, APP_STORAGE_KEY_PATTERN, APP_STORAGE_MAX_BYTES, APP_STORAGE_MAX_KEYS, APP_TOOL_NAME_PATTERN, APP_UI_MAX_BYTES, APP_UI_MAX_FILES, ApiError, ApprovalPendingError, BRAND_BRIEF_MAX_REFERENCES, BUSINESS_INFO_MAX_LENGTH, BUSINESS_NUMBER_PATTERN, CASH_RECEIPT_STATUS_VALUES, COLLECTION_BEST_SELLING_DAYS, COLLECTION_PREVIEW_SIZE, COLLECTION_PRODUCT_SORTS, COLLECTION_SALES_SORT_DEFAULT_DAYS, COLLECTION_SLUG_PATTERN, COLLECTION_TYPES, COUPON_CODE_PATTERN, COUPON_CONDITIONS_DEFAULTS, COUPON_TARGET_ALL, COUPON_TARGET_LIST_MAX, CUSTOM_INPUT_FORBIDDEN_WORDS, CUSTOM_INPUT_TYPES, FULFILLMENT_METHODS, FULFILLMENT_METHODS_BY_TYPE, FULFILLMENT_METHOD_RULES, FULFILLMENT_RULES, INSTALLABLE_SCOPES, KNOWN_WEBHOOK_EVENT_TYPES, MAX_ADDON_GROUPS, MAX_ANALYTICS_ALLOWED_ORIGINS, MAX_AUTO_TRANSITION_DAYS, MAX_CALENDAR_DAYS, MAX_COLLECTIONS, MAX_COLLECTION_BEST_SELLING_TOP, MAX_COLLECTION_CREATED_WITHIN_DAYS, MAX_COLLECTION_DESCRIPTION, MAX_COLLECTION_PRODUCTS, MAX_COLLECTION_PRODUCTS_PER_ADD, MAX_COLLECTION_RULES, MAX_COLLECTION_RULE_CATEGORIES, MAX_COLLECTION_TITLE, MAX_CUSTOM_INPUTS, MAX_CUSTOM_INPUT_LENGTH, MAX_OPTION_GROUPS, MAX_PICKUP_LOCATIONS, MAX_PRODUCT_IMAGES, MAX_SAVED_OPTION_SETS, MAX_SAVED_OPTION_SET_NAME, MAX_STAY_NIGHTS, MAX_VALUES_PER_GROUP, MAX_VARIANTS, MCP_TELEMETRY_MAX_RESULTS, MIN_PAYMENT_AMOUNT, NON_INSTALLABLE_SCOPES, NO_COUPON_SETTLEMENT, NO_SHIPPING_BUNDLE_KEY, PAYMENT_ROUTING_EXCLUSION_CODES, POINT_ADJUSTMENT_MAX, POINT_EARN_RATE_BP_MAX, POINT_ENTRY_TYPES, POINT_EXPIRY_DAYS_MAX, POINT_EXPIRY_DAYS_MIN, POINT_LOT_SOURCES, POINT_POLICY_DEFAULTS, POINT_REVIEW_REWARD_MAX, POINT_USE_UNITS, PORTONE_CHANNEL_NAME_MAX_LENGTH, PORTONE_MAX_CHANNELS, PORTONE_MIN_CHANNELS, REFUND_POLICY_DEFAULTS, REFUND_POLICY_DELIVERY_FEE_KEYS, REMOTE_AREA_ZIP_RANGES, RESERVED_STOREFRONT_SLUGS, RESERVED_STORE_CODES, SCOPE_DESCRIPTIONS, SHIPPING_POLICY_DEFAULTS, STARTER_SELLER_TASKS, STARTER_STAGES, STOREFRONT_BLOCKED_PATH_SEGMENTS, STOREFRONT_BUILD_STAGES, STOREFRONT_BUILD_TERMINAL_STATUSES, STOREFRONT_CHECK_TERMINAL_STATUSES, STOREFRONT_CLOSED_SITE_HOLD_DAYS, STOREFRONT_CUSTOM_DOMAIN_LIMIT_DEFAULT, STOREFRONT_DOMAIN_DNS_GRACE_DAYS, STOREFRONT_DOMAIN_DNS_WAIT_DAYS, STOREFRONT_DOMAIN_TXT_LABEL, STOREFRONT_EDIT_ACTIVITY_TIMEOUT_MINUTES, STOREFRONT_EDIT_CAPACITY, STOREFRONT_EDIT_IDLE_MINUTES, STOREFRONT_EDIT_PREVIEW_SUFFIX, STOREFRONT_EDIT_START_STAGES, STOREFRONT_FILE_BATCH_MAX, STOREFRONT_FILE_MAX_BYTES, STOREFRONT_PATH_SEGMENT_PATTERN, STOREFRONT_PLATFORM_DOMAINS, STOREFRONT_PUBLIC_SUFFIXES, STOREFRONT_SEARCH_REGEX_MAX_LENGTH, STOREFRONT_SHOWCASE_SLUG_PREFIX, STOREFRONT_SITE_CREATE_LIMIT, STOREFRONT_SLUG_CHANGE_LIMIT, STOREFRONT_SLUG_CHANGE_WINDOW_DAYS, STOREFRONT_SLUG_HOLD_DAYS, STOREFRONT_SLUG_PATTERN, STOREFRONT_SOURCE_BLOB_BATCH_MAX, STOREFRONT_SOURCE_PART_BYTES, STOREFRONT_WORKSPACE_MAX_BYTES, STOREFRONT_WORKSPACE_MAX_FILES, STORE_CODE_PATTERN, STORE_DRAFT_ATTACHMENT_MAX_BYTES, STORE_DRAFT_MAX_ATTACHMENTS, STORE_DRAFT_RETENTION_DAYS, STORE_ROLE_SCOPES, STORE_SCOPE_RESOURCES, STORE_SESSION_KEYS, TEMPLATE_STORE_LOCKED_BUSINESS_FIELDS, TOSS_WIDGET_CLIENT_KEY_PATTERN, TOSS_WIDGET_KEY_MESSAGE, TOSS_WIDGET_SECRET_KEY_PATTERN, UPLOAD_PURPOSE_LIMITS, VARIANT_COUNT_WARNING, VARIANT_STOCK_EXCLUSIVE_MESSAGE, WEBHOOK_DEFAULT_TOLERANCE_SEC, WEBHOOK_DELIVERY_ID_HEADER, WEBHOOK_EVENT_ID_HEADER, WEBHOOK_EVENT_TYPE_HEADER, WEBHOOK_FAILURE_REASONS, WEBHOOK_HEADERS, WEBHOOK_PAYLOAD_EXCERPT_MAX_BYTES, WEBHOOK_RESOURCE_TYPES, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_USER_AGENT, addStorefrontDomainRequestSchema, addonGroupRequestSchema, addonGroupSchema, addonValueRequestSchema, addonValueSchema, addressChangeRequestListSchema, addressTypeSchema, agentPolicyDecisionSchema, aiAttachmentSchema, aiConversationFileChangesSchema, aiConversationSchema, aiConversationSummarySchema, aiFileChangeKindSchema, aiFocusAreaSchema, aiFocusSchema, aiMessagePartSchema, aiMessageSchema, aiPreviewSelectionSchema, aiRunChangesSchema, aiRunChangesStatusSchema, aiRunFileDiffSchema, aiRunRevertConflictDetailsSchema, aiRunRevertResultSchema, aiRunSchema, aiRunStatusSchema, aiStreamAccessSchema, aiStreamEventSchema, aiStreamRecordSchema, allocateByWeight, analyticsChannelSchema, analyticsCheckoutOutcomeSchema, analyticsCheckoutSchema, analyticsDeviceRowSchema, analyticsDevicesSchema, analyticsFunnelStepSchema, analyticsOriginSchema, analyticsOverviewSchema, analyticsPagesQuerySchema, analyticsPagesSchema, analyticsProductRowSchema, analyticsProductSortSchema, analyticsProductsQuerySchema, analyticsProductsSchema, analyticsRangeQuerySchema, analyticsRealtimeSchema, analyticsSearchQuerySchema, analyticsSearchSchema, analyticsSourceGroupBySchema, analyticsSourceRowSchema, analyticsSourcesQuerySchema, analyticsSourcesSchema, analyticsTotalsSchema, apiLogErrorSchema, apiLogListQuerySchema, apiLogPageSchema, apiLogPrincipalSchema, apiLogPrincipalTypeSchema, apiLogSchema, apiLogStatusFilterSchema, apiLogSummarySchema, appArtifactUploadSchema, appBuildSchema, appBuildStageSchema, appCapabilitiesOf, appDeployKeyCreateSchema, appDeployKeyCreatedSchema, appDeployKeySchema, appDevTokenSchema, appDistributionSchema, appEventTypeSchema, appFlowEventSchema, appFlowEventSummarySchema, appFlowNotificationSchema, appFlowNotificationSummarySchema, appFlowParamSchema, appFlowSummaryOf, appHandleSchema, appHttpKeyMatches, appIconProblem, appInstallRequestSchema, appInstallationActivitySchema, appInstallationAppSchema, appInstallationRunSchema, appInstallationSchema, appInstallationSelfSchema, appInstallationSettingsSchema, appInstallationSettingsUpdateSchema, appInstallationStatusSchema, appInvocationSchema, appListingReviewSchema, appListingReviewStatusSchema, appListingSchema, appManifestProblems, appManifestSchema, appManifestWidens, appNetworkHostProblem, appNetworkHostSchema, appReleaseResultSchema, appRuntimeSchema, appScheduleIntervalLabel, appScheduleListOf, appScheduleSummarySchema, appScopeSchema, appSecretSummarySchema, appSessionSchema, appSettingFieldSchema, appStatusSchema, appStorageEntrySchema, appStorageKeysSchema, appStorageListQuerySchema, appStoragePutSchema, appToolCallSchema, appToolInputSchema, appToolListOf, appToolResultSchema, appToolSchema, appToolSummarySchema, appVersionSchema, appVersionStatusSchema, appVisibilitySchema, approvalDecisionRequestSchema, approvalListQuerySchema, approvalPageSchema, approvalRequestSchema, approvalStatusSchema, approveClaimResultSchema, auditActorSchema, auditActorTypeSchema, auditLogListQuerySchema, auditLogOutcomeSchema, auditLogPageSchema, auditLogSchema, auditLogSourceSchema, bestSellingRuleOf, brandBriefProductSourceSchema, brandBriefReferenceSchema, brandBriefSchema, brandBriefViewSchema, buildAuthorizeUrl, buildQuery, bulkResultSchema, businessInfoPatchShape, businessInfoResponseShape, businessNumberSchema, calendarDateSchema, calendarDaySchema, calendarQuerySchema, cancelBySellerRequestSchema, cancelBySellerResultSchema, carrierSchema, cashReceiptSchema, categoryAttributeSchema, categoryCreateRequestSchema, categoryDeleteQuerySchema, categoryDeleteStrategySchema, categoryListQuerySchema, categoryPatchRequestSchema, categoryProductSortSchema, categorySchema, categorySearchResultSchema, categoryTreeNodeSchema, categoryWithPathSchema, changeStorefrontSlugRequestSchema, changeStorefrontTemplateRequestSchema, changeTypeSchema, claimDetailSchema, claimHoldResultSchema, claimListQuerySchema, claimReasonSchema, claimReturnAddressSchema, claimSchema, claimStatusSchema, claimTypeSchema, claimWebhookEventDataSchema, claimWebhookEventSchema, collectionCreateRequestSchema, collectionListQuerySchema, collectionPageSchema, collectionPatchRequestSchema, collectionPreviewRequestSchema, collectionPreviewSchema, collectionProductListQuerySchema, collectionProductSchema, collectionProductSortRequestSchema, collectionProductsAddRequestSchema, collectionProductsReplaceRequestSchema, collectionRuleCategoryIds, collectionRuleSchema, collectionRuleViewSchema, collectionRulesPredicate, collectionRulesSchema, collectionSchema, collectionStateCountsSchema, collectionStateOf, collectionStateSchema, commerceFlowCheckSchema, commerceFlowSchema, commerceFlowSummarySchema, commerceFlowVersionViewSchema, commerceNumberField, compareBySales, consentActionSchema, consentKindSchema, consentSourceSchema, couponBenefitSchema, couponConditionsInputSchema, couponConditionsSchema, couponDiscountOf, couponIssueListQuerySchema, couponIssueMethodSchema, couponIssueSchema, couponIssueStatusSchema, couponKindSchema, couponListQuerySchema, couponRedemptionListQuerySchema, couponRedemptionSchema, couponRejectReasonSchema, couponRuleSchema, couponSchema, couponStatsSchema, couponStatusSchema, couponTargetInputSchema, couponTargetSchema, createAiConversationRequestSchema, createAiConversationResponseSchema, createCommerceFlowRequestSchema, createCouponRequestSchema, createPkcePair, createStoreClient, createStoreDraftRequestSchema, createStoreDraftResponseSchema, createStoreSession, createStorefrontEditPreviewLinkRequestSchema, createStorefrontPreviewLinkRequestSchema, createStorefrontSiteRequestSchema, createStorefrontVersionRequestSchema, customInputLabelForbiddenWord, customInputRequestSchema, customInputSchema, customInputValueSchema, customerAddressSchema, customerConsentListQuerySchema, customerConsentSchema, customerConsentStateSchema, customerConsentsSchema, customerCouponSchema, customerDelegationRequestSchema, customerDelegationSchema, customerDetailSchema, customerInquiryCategorySchema, customerInquiryListQuerySchema, customerListQuerySchema, customerOrderSchema, customerPointsSchema, customerSortSchema, customerStatsSchema, customerSummarySchema, customerWithdrawalBlockedDetailsSchema, defaultFulfillmentMethodOf, deleteStorefrontFileRequestSchema, deliveryBundleKeyOf, deliveryFeeWaiverSchema, deliveryInfoSchema, deliveryMethodSchema, deliveryStatusSchema, deliveryTypeSchema, descendantCategoryIdsOf, describeScope, devStoreSchema, developerAppCreateSchema, developerAppSchema, developerInstallationSchema, developerOrgSchema, developerStoreSchema, disableStorefrontHostingRequestSchema, discountRequestSchema, discountSchema, dispatchRequestSchema, easyPayProviderResponseSchema, easyPayProviderSchema, eventTypeSchema, exchangeAuthorizationCode, flowActionRequestSchema, flowActionResultSchema, flowActionSchema, flowFieldValueSchema, flowInputFieldSchema, flowNodeTypesSchema, flowNotificationWebhookEventDataSchema, flowNotificationWebhookEventSchema, flowPresetDetailSchema, flowPresetSummarySchema, flowRunSchema, flowRunStepSchema, flowSecretNameSchema, flowSecretSchema, flowStateChangedWebhookEventDataSchema, flowStateChangedWebhookEventSchema, flowStateSchema, formatOrderNo, fulfillBulkRequestSchema, fulfillRequestSchema, fulfillmentMethodOf, fulfillmentMethodSchema, fulfillmentMethodsOf, fulfillmentRuleOf, fulfillmentTypeOf, fulfillmentTypeResponseSchema, fulfillmentTypeSchema, holdOrderItemRequestSchema, inquiryListQuerySchema, inquirySchema, inquiryWebhookEventDataSchema, inquiryWebhookEventSchema, inventoryModeSchema, invitationDeliveryStatusSchema, invitationListQuerySchema, invitationSchema, inviteMemberRequestSchema, isCouponTargetLine, isEditableStorefrontPath, isInstallableScope, isReservedStoreCode, isReservedStorefrontSlug, isShowcaseStorefrontSlug, isStoreScope, isWebOrigin, issueCouponRequestSchema, issueCouponResultSchema, liveGateConditionCodeSchema, liveGateConditionSchema, liveGateErrorDetailsSchema, liveGateSchema, loginProviderSchema, loginProviderStatusSchema, loginProviderTestSchema, loginSettingsSchema, maskedSecretSchema, matchesCollectionRules, mcpRuleResultSchema, mcpToolEventSchema, migrateFlowVersionRequestSchema, migrateFlowVersionResultSchema, moveFlowStateRequestSchema, moveStorefrontFileRequestSchema, myAccountSchema, myStoreSchema, nightsOf, normalizeBusinessNumber, normalizeCouponCode, normalizeStorefrontHostname, normalizeStorefrontPath, oauthTokenResponseSchema, openFulfillmentUnion, optionGroupKindSchema, optionGroupRequestSchema, optionGroupSchema, optionModelRequestSchema, optionModelSchema, optionSelectionSchema, optionSortSchema, optionValueRequestSchema, optionValueSchema, orderCanceledWebhookEventDataSchema, orderCanceledWebhookEventSchema, orderDiscountSchema, orderFlowActionResultSchema, orderFulfilledWebhookEventDataSchema, orderFulfilledWebhookEventSchema, orderItemFlowSchema, orderItemFulfillmentSchema, orderItemFulfillmentSnapshotResponseSchema, orderItemFulfillmentSnapshotSchema, orderItemListQuerySchema, orderItemMemoResultSchema, orderItemPageSchema, orderItemSchema, orderItemStatusSchema, orderListQuerySchema, orderSchema, orderSummaryPageSchema, orderSummarySchema, orderWebhookEventDataSchema, orderWebhookEventSchema, pageInfoSchema, pageQueryShape, pageSchema, parseOrderNo, parseWebhookEvent, paymentAttemptRecordSchema, paymentAttemptStatusSchema, paymentCredentialSetSchema, paymentFailureWarningSchema, paymentListQuerySchema, paymentProviderSchema, paymentProviderVerificationSchema, paymentRecordDetailSchema, paymentRecordPageSchema, paymentRecordSchema, paymentRecordStatusSchema, paymentRefundRecordSchema, paymentSettingsSchema, pgEnvironmentSchema, pgPaymentMethodSchema, pgProviderSchema, pgVerificationResultSchema, pickupLocationRequestSchema, pickupLocationSchema, pickupLocationSnapshotSchema, planCodeSchema, planEntitlementsSchema, planErrorDetailsSchema, pointAdjustmentRequestSchema, pointAdjustmentResultSchema, pointEarnOf, pointEarnRateBpSchema, pointEarningEnabled, pointEntrySchema, pointExpiresAtOf, pointHistoryQuerySchema, pointLotSchema, pointPolicyNoticeSchema, pointPolicySchema, pointRestoreExpiresAtOf, pointUseOf, pointUsePolicySchema, policyDocumentUrlSchema, policyVersionSchema, portOneChannelSchema, portOneCredentialsInputSchema, productCreateRequestSchema, productFulfillmentCreateSchema, productFulfillmentResponseSchema, productFulfillmentSchema, productFulfillmentUpdateSchema, productImageRejection, productImageUrlSchema, productListQuerySchema, productOutOfStockWebhookEventDataSchema, productOutOfStockWebhookEventSchema, productPatchRequestSchema, productRefundPolicyOverride, productRefundPolicyPatchSchema, productReplaceRequestSchema, productSchema, productSortSchema, productStatusSchema, productSummarySchema, productVariantRequestSchema, productVariantSchema, proratedPaidRefundBase, proratedPointRefund, proratedRefundBase, publicPlanSchema, publicPlansSchema, publishStorefrontVersionRequestSchema, purchaseDecisionExtendResultSchema, purchaseDecisionRequestResultSchema, purchaseEarnPolicySchema, purchaseEarnRateOf, putBrandBriefRequestSchema, quoteDelivery, quotePricing, rankBestSelling, refreshUserToken, refundPolicyPatchSchema, refundPolicySchema, rejectClaimRequestSchema, remoteAreaLabelOf, remoteAreaOf, remoteAreaSchema, remoteSurchargeOf, replaceStorefrontSourceRequestSchema, replayFlowRequestSchema, replayFlowResultSchema, requiresCollection, requiresShipping, resolvePointPolicy, resolveRefundPolicy, resolveShippingPolicy, resolvedFlowSchema, responsePlanCodeSchema, responsePointEntryTypeSchema, reviewListQuerySchema, reviewReportResultSchema, reviewRewardPointOf, reviewRewardPolicySchema, reviewSchema, reviewSortSchema, reviewWebhookEventDataSchema, reviewWebhookEventSchema, rollbackStorefrontRequestSchema, runStorefrontCheckRequestSchema, salesReportGroupBySchema, salesReportQuerySchema, salesReportRowSchema, salesReportSchema, salesTotalsSchema, saveFlowDraftRequestSchema, saveFlowSecretRequestSchema, saveLoginProviderRequestSchema, savedCustomInputRequestSchema, savedCustomInputSchema, savedOptionGroupRequestSchema, savedOptionGroupSchema, savedOptionSetCompositionSchema, savedOptionSetFromProductRequestSchema, savedOptionSetFromProductResultSchema, savedOptionSetListQuerySchema, savedOptionSetRequestSchema, savedOptionSetSchema, savedOptionSetSortSchema, savedOptionValueRequestSchema, savedOptionValueSchema, scopeAccessSchema, scopesCoverEvent, searchStorefrontFilesRequestSchema, sellerAddressListQuerySchema, sellerAddressRequestSchema, sellerAddressSchema, sellerCancelPreviewSchema, sellerCustomerInquirySchema, sendAiMessageRequestSchema, sendAiMessageResponseSchema, setCalendarRequestSchema, setStorefrontVisibilityRequestSchema, settleCouponShortfall, settlementDetailQuerySchema, settlementDetailSchema, settlementListQuerySchema, settlementStatusSchema, settlementSummarySchema, settlementWithDetailsSchema, shippingAddressSchema, shippingPolicyPatchSchema, shippingPolicySchema, simulateFlowRequestSchema, simulateFlowResultSchema, simulationStepSchema, splitRefund, starterSellerTaskSchema, starterStageSchema, starterStatusSchema, starterStoreInfoFieldSchema, stayRangeSchema, staySnapshotSchema, storeAppDetailSchema, storeAppSchema, storeCodeSchema, storeDraftPreviewSchema, storeDraftSchema, storeIndustrySchema, storeMemberRoleUpdatedSchema, storeMemberSchema, storePointPolicySchema, storeRoleSchema, storeSchema, storeScopeResourceSchema, storeSubscriptionSchema, storeTemplateSchema, storefrontBuildDependenciesSchema, storefrontBuildListQuerySchema, storefrontBuildSchema, storefrontBuildStatusSchema, storefrontCheckSchema, storefrontCheckStatusSchema, storefrontCustomDomainStatusSchema, storefrontCustomHostnameProblem, storefrontDependencyFindingSchema, storefrontDeploymentLogSchema, storefrontDeploymentSchema, storefrontDeploymentStepSchema, storefrontDnsRecordSchema, storefrontDomainSchema, storefrontDomainTxtNameOf, storefrontEditPreviewLabelOf, storefrontEditPreviewSchema, storefrontEditSessionSchema, storefrontEditSessionStatusSchema, storefrontEditingSchema, storefrontFileConflictDetailsSchema, storefrontFileContentQuerySchema, storefrontFileContentSchema, storefrontFileDeleteResultSchema, storefrontFileEncodingSchema, storefrontFileEntrySchema, storefrontFileHashSchema, storefrontFileListQuerySchema, storefrontFileListSchema, storefrontFileMoveResultSchema, storefrontFilePathSchema, storefrontFileSearchResultSchema, storefrontFileWriteResultSchema, storefrontHostingSchema, storefrontPreviewLinkSchema, storefrontProvisioningSchema, storefrontRuleResultSchema, storefrontRuleSeveritySchema, storefrontSiteDomainSchema, storefrontSiteDomainsSchema, storefrontSiteSchema, storefrontSiteSnapshotSchema, storefrontSiteStatusSchema, storefrontSlugAvailabilityQuerySchema, storefrontSlugAvailabilitySchema, storefrontSlugSchema, storefrontSourceArchivePartSchema, storefrontSourceArchiveQuerySchema, storefrontSourceBlobsResultSchema, storefrontSourceModeSchema, storefrontSourceRefSchema, storefrontSourceReplacedSchema, storefrontSourceSchema, storefrontSuspensionSchema, storefrontTemplateSchema, storefrontVerifyReportSchema, storefrontVersionCreatedSchema, storefrontVersionSchema, storefrontVersionStatusSchema, storefrontVisibilitySchema, subscriptionLimitsSchema, subscriptionStatusSchema, subscriptionUsageSchema, tossPaymentsCredentialsInputSchema, trackingStageResponseSchema, trackingUpdateResultSchema, unknownWebhookEventSchema, updateCouponRequestSchema, updateLoginProviderRequestSchema, updateLoginSettingsRequestSchema, updateMemberRoleRequestSchema, updatePaymentProviderRequestSchema, updatePaymentSettingsRequestSchema, updatePointPolicyRequestSchema, updateStoreRequestSchema, updateStoreTemplateRequestSchema, uploadExtensionOf, uploadPurposeSchema, uploadRejection, uploadRequestSchema, uploadStorefrontSourceBlobsRequestSchema, uploadTicketSchema, upsertPortOneProviderRequestSchema, upsertTossPaymentsProviderRequestSchema, variantStockRequestSchema, variantStockSchema, verifyPaymentProviderRequestSchema, webhookCreatedSchema, webhookDeliveryDetailSchema, webhookDeliveryErrorCodeSchema, webhookDeliveryListQuerySchema, webhookDeliveryResourceSchema, webhookDeliverySchema, webhookDeliveryStatusSchema, webhookEventSchema, webhookFailureReasonSchema, webhookRedeliverFailedResultSchema, webhookRequestHeaderSchema, webhookRequestSchema, webhookResourceTypeSchema, webhookSchema, webhookSecretRotatedSchema, webhookStatusSchema, webhookTestRequestSchema, webhookTestResultSchema, withdrawCustomerRequestSchema, writeDryRunResultSchema, writePreviewSchema, writeStorefrontFilesRequestSchema };