openpond-sdk 0.6.7 → 0.8.0

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/MODEL_STARTERS.md +25 -0
  2. package/TASKSETS.md +8 -0
  3. package/dist/{chunk-EJYSXE4V.js → chunk-32H2EJRA.js} +292 -456
  4. package/dist/chunk-32H2EJRA.js.map +7 -0
  5. package/dist/chunk-3HV3G6DG.js +95 -0
  6. package/dist/chunk-3HV3G6DG.js.map +7 -0
  7. package/dist/{chunk-FPOW5PU7.js → chunk-CGIMLZE5.js} +7 -7
  8. package/dist/chunk-DNBAJUVR.js +380 -0
  9. package/dist/chunk-DNBAJUVR.js.map +7 -0
  10. package/dist/{chunk-YGCHXNPI.js → chunk-DT7FRNIZ.js} +3 -94
  11. package/dist/{chunk-YGCHXNPI.js.map → chunk-DT7FRNIZ.js.map} +4 -4
  12. package/dist/{chunk-ECTMEJ5N.js → chunk-IKTZ2CD4.js} +63 -42
  13. package/dist/chunk-IKTZ2CD4.js.map +7 -0
  14. package/dist/{chunk-DNEPLQXN.js → chunk-KYCQ7LZ4.js} +5 -5
  15. package/dist/{chunk-TXQHWOFM.js → chunk-LGEF4S5I.js} +2 -2
  16. package/dist/chunk-QABCKPW6.js +171 -0
  17. package/dist/chunk-QABCKPW6.js.map +7 -0
  18. package/dist/{chunk-42YOB36J.js → chunk-WOPM32SE.js} +7 -7
  19. package/dist/{chunk-EAEYAU4R.js → chunk-Y4NGWGTA.js} +23 -2
  20. package/dist/{chunk-EAEYAU4R.js.map → chunk-Y4NGWGTA.js.map} +4 -4
  21. package/dist/dataset-workspaces.js +122 -0
  22. package/dist/dataset-workspaces.js.map +7 -0
  23. package/dist/index.js +20 -15
  24. package/dist/index.js.map +2 -2
  25. package/dist/learning.js +4 -4
  26. package/dist/model-starter-attempts.js +5 -1
  27. package/dist/model-starter-catalog.js +5 -5
  28. package/dist/model-starters.js +5 -5
  29. package/dist/model-taskset-runs.js +14 -11
  30. package/dist/model-taskset-runs.js.map +2 -2
  31. package/dist/taskset-drafts.js +10 -8
  32. package/dist/taskset-drafts.js.map +1 -1
  33. package/dist/taskset-packages.js +42 -364
  34. package/dist/taskset-packages.js.map +4 -4
  35. package/dist/training-bundle.js +10 -8
  36. package/dist/training-bundle.js.map +1 -1
  37. package/dist/training-projects.js +134 -0
  38. package/dist/training-projects.js.map +7 -0
  39. package/dist/training.js +3 -3
  40. package/dist/types/packages/cloud/src/hosted-chat.d.ts +1 -0
  41. package/dist/types/packages/cloud/src/hosted-chat.d.ts.map +1 -1
  42. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +1631 -0
  43. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -0
  44. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts +1625 -0
  45. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts.map +1 -0
  46. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts +3 -0
  47. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts.map +1 -0
  48. package/dist/types/packages/sdk/src/evaluation-project-context.d.ts +19 -0
  49. package/dist/types/packages/sdk/src/evaluation-project-context.d.ts.map +1 -0
  50. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +2 -2
  51. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts +3 -3
  52. package/dist/types/packages/sdk/src/model-batch-review.d.ts +7 -7
  53. package/dist/types/packages/sdk/src/model-learning-intent.d.ts +1 -1
  54. package/dist/types/packages/sdk/src/model-learning-policy.d.ts +1 -1
  55. package/dist/types/packages/sdk/src/model-projects.d.ts +122 -122
  56. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +144 -29
  57. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
  58. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +23 -23
  59. package/dist/types/packages/sdk/src/model-starter-execution.d.ts +3 -3
  60. package/dist/types/packages/sdk/src/model-starters.d.ts +22 -22
  61. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts +91 -16
  62. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts.map +1 -1
  63. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +85 -15
  64. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
  65. package/dist/types/packages/sdk/src/task-inventory.d.ts +3 -3
  66. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +51 -51
  67. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +30 -30
  68. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +86 -86
  69. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +183 -183
  70. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +42 -42
  71. package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts +36 -36
  72. package/dist/types/packages/sdk/src/taskset-draft-dataset-sources.d.ts +34 -34
  73. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +43 -43
  74. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +1094 -48
  75. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -1
  76. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +71 -71
  77. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +84 -84
  78. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +671 -671
  79. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts +371 -371
  80. package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts +1 -1
  81. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts +5 -5
  82. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +87 -87
  83. package/dist/types/packages/sdk/src/training-evaluation-results.d.ts +1 -1
  84. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +64 -64
  85. package/dist/types/packages/sdk/src/training-project-client.d.ts +401 -0
  86. package/dist/types/packages/sdk/src/training-project-client.d.ts.map +1 -0
  87. package/dist/types/packages/sdk/src/training-project-contracts.d.ts +617 -0
  88. package/dist/types/packages/sdk/src/training-project-contracts.d.ts.map +1 -0
  89. package/dist/types/packages/sdk/src/training-projects.d.ts +3 -0
  90. package/dist/types/packages/sdk/src/training-projects.d.ts.map +1 -0
  91. package/dist/types/packages/sdk/src/training.d.ts +24 -24
  92. package/package.json +10 -1
  93. package/dist/chunk-ECTMEJ5N.js.map +0 -7
  94. package/dist/chunk-EJYSXE4V.js.map +0 -7
  95. /package/dist/{chunk-FPOW5PU7.js.map → chunk-CGIMLZE5.js.map} +0 -0
  96. /package/dist/{chunk-DNEPLQXN.js.map → chunk-KYCQ7LZ4.js.map} +0 -0
  97. /package/dist/{chunk-TXQHWOFM.js.map → chunk-LGEF4S5I.js.map} +0 -0
  98. /package/dist/{chunk-42YOB36J.js.map → chunk-WOPM32SE.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/taskset-package-client.ts"],
4
+ "sourcesContent": ["import { z } from \"zod\";\nimport { TasksetCatalogReleaseRefSchema } from \"./taskset-catalog.js\";\nimport { MAX_TASKSET_PACKAGE_BYTES, TasksetPackageSchema, tasksetPackageRewardBinding, validateTasksetPackage, type TasksetPackage } from \"./taskset-package-contracts.js\";\nimport { HostedModelProjectSummarySchema, HostedModelProjectSyncSchema, HostedModelProjectTrainingSetupSchema } from \"./model-projects.js\";\nimport { contentHash } from \"@openpond/harness\";\nimport { learningRef } from \"@openpond/evals/learning\";\n\nconst IdSchema = z.string().trim().min(1).max(500);\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\n/** Configuration and package selection share one hosted commit. Package-owned\n * references cannot accidentally contain a Desktop-local content hash. */\nexport const TasksetPackageModelConfigurationSchema = HostedModelProjectSyncSchema.pick({\n portableProjectId: true, name: true, objective: true, defaultBaseModel: true, defaultDestinationId: true,\n sourceRevision: true, sourceUpdatedAt: true,\n}).extend({ trainingSetup: HostedModelProjectTrainingSetupSchema.omit({ tasksetRef: true, rewardBindingRef: true, tasksetRelease: true }) }).strict();\nexport const TasksetPackagePublicationSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetPackagePublication.v1\"),\n operationId: IdSchema, modelProjectId: IdSchema, expectedProjectEtag: HashSchema.nullable(),\n name: z.string().trim().min(1).max(200), description: z.string().max(5_000),\n buildIntent: z.enum([\"demonstrations\", \"preferences\", \"verifiable_reward\", \"rubric\", \"discovery\"]),\n methodHint: z.enum([\"sft\", \"dpo\", \"grpo\", \"ppo\"]).nullable(), package: TasksetPackageSchema,\n modelConfiguration: TasksetPackageModelConfigurationSchema.optional(),\n evaluationPackage: TasksetPackageSchema.optional(),\n selection: z.enum([\"select\", \"attach\"]).optional(),\n}).strict().refine(value => value.selection !== \"attach\" || value.modelConfiguration === undefined, \"Attachment-only publication cannot replace Model configuration.\")\n .refine(value => !value.evaluationPackage || (value.modelConfiguration !== undefined\n && value.modelConfiguration.trainingSetup.evaluationTasksetRef != null\n && contentHash(value.modelConfiguration.trainingSetup.evaluationTasksetRef) === contentHash(learningRef(value.evaluationPackage.taskset))),\n \"Evaluation package must match the selected immutable evaluation in Model configuration.\");\nexport const TasksetPackageReceiptSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetPackageReceipt.v1\"),\n teamId: IdSchema, modelProjectId: IdSchema, operationId: IdSchema,\n taskset: TasksetCatalogReleaseRefSchema, packageHash: HashSchema,\n hostedTasksetId: IdSchema, projectEtag: HashSchema,\n project: HostedModelProjectSummarySchema.optional(),\n selection: z.enum([\"select\", \"attach\"]).optional(),\n evaluation: z.object({ taskset: TasksetCatalogReleaseRefSchema, packageHash: HashSchema, hostedTasksetId: IdSchema }).strict().optional(),\n}).strict();\nexport const TasksetPackageReadbackSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetPackageReadback.v1\"),\n teamId: IdSchema, modelProjectId: IdSchema, package: TasksetPackageSchema,\n}).strict();\nexport type TasksetPackagePublication = z.infer<typeof TasksetPackagePublicationSchema>;\nexport type TasksetPackageReceipt = z.infer<typeof TasksetPackageReceiptSchema>;\nexport type TasksetPackageModelConfiguration = z.infer<typeof TasksetPackageModelConfigurationSchema>;\n\nexport class OpenPondTasksetPackageError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"OpenPondTasksetPackageError\"; }\n}\n\n/** Private package operations are explicitly scoped to an authorized Model.\n * Catalog inventory remains metadata-only and never calls this client itself. */\nexport class OpenPondTasksetPackageClient {\n readonly #options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch };\n constructor(options: { baseUrl: string; apiKey: string; teamId: string; fetch?: typeof globalThis.fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim()) throw new Error(\"Taskset package client requires a clean HTTP(S) endpoint and workspace credentials.\");\n this.#options = { ...options, baseUrl: url.toString().replace(/\\/+$/, \"\") };\n }\n\n async publish(input: TasksetPackagePublication, options: { signal?: AbortSignal } = {}): Promise<TasksetPackageReceipt> {\n const request = TasksetPackagePublicationSchema.parse(input);\n validateTasksetPackage(request.package);\n if (request.evaluationPackage) validateTasksetPackage(request.evaluationPackage);\n const receipt = TasksetPackageReceiptSchema.parse(await this.#request(\"\", \"POST\", request, options.signal));\n const release = request.package.taskset;\n if (receipt.teamId !== this.#options.teamId || receipt.modelProjectId !== request.modelProjectId || receipt.operationId !== request.operationId\n || receipt.packageHash !== request.package.contentHash || receipt.taskset.id !== release.id || receipt.taskset.revision !== release.revision || receipt.taskset.contentHash !== release.contentHash) {\n throw new OpenPondTasksetPackageError(502, \"package_receipt_mismatch\", \"Taskset publication receipt did not match the requested package and owner.\");\n }\n if (request.selection !== undefined && receipt.selection !== request.selection) throw new OpenPondTasksetPackageError(502, \"package_receipt_mismatch\", \"Taskset publication did not retain its selection mode.\");\n if (request.evaluationPackage && (!receipt.evaluation\n || receipt.evaluation.packageHash !== request.evaluationPackage.contentHash\n || contentHash(receipt.evaluation.taskset) !== contentHash(learningRef(request.evaluationPackage.taskset)))) {\n throw new OpenPondTasksetPackageError(502, \"package_receipt_mismatch\", \"Taskset publication did not retain the complete selected evaluation package.\");\n }\n if (request.selection === \"attach\" && receipt.projectEtag !== request.expectedProjectEtag) throw new OpenPondTasksetPackageError(502, \"package_receipt_mismatch\", \"Attaching a historical Taskset changed the Model configuration.\");\n if (request.modelConfiguration) {\n const expected = request.modelConfiguration;\n const project = receipt.project;\n const binding = tasksetPackageRewardBinding(request.package);\n const setup = HostedModelProjectTrainingSetupSchema.parse({ ...expected.trainingSetup, tasksetRef: learningRef(release),\n rewardBindingRef: binding ? learningRef(binding) : null,\n tasksetRelease: null });\n if (!project || project.teamId !== this.#options.teamId || project.etag !== receipt.projectEtag\n || ![project.id, project.portableProjectId].includes(request.modelProjectId)\n || project.portableProjectId !== expected.portableProjectId || project.name !== expected.name || project.objective !== expected.objective\n || project.sourceRevision !== expected.sourceRevision || Date.parse(project.sourceUpdatedAt) !== Date.parse(expected.sourceUpdatedAt)\n || contentHash(project.defaultBaseModel) !== contentHash(expected.defaultBaseModel) || project.defaultDestinationId !== expected.defaultDestinationId\n || contentHash(project.trainingSetup) !== contentHash(setup)) {\n throw new OpenPondTasksetPackageError(502, \"package_receipt_mismatch\", \"Taskset publication did not retain the requested Model configuration.\");\n }\n }\n return receipt;\n }\n\n async get(modelProjectId: string, reference: z.infer<typeof TasksetCatalogReleaseRefSchema>, options: { signal?: AbortSignal; expectedPackageHash?: string } = {}): Promise<TasksetPackage> {\n const project = IdSchema.parse(modelProjectId);\n const ref = TasksetCatalogReleaseRefSchema.parse(reference);\n const expectedPackageHash = options.expectedPackageHash === undefined ? undefined : HashSchema.parse(options.expectedPackageHash);\n const response = TasksetPackageReadbackSchema.parse(await this.#request(`/${encodeURIComponent(project)}/${encodeURIComponent(ref.id)}/${ref.revision}/${ref.contentHash}`, \"GET\", undefined, options.signal));\n const taskset = response.package.taskset;\n if (response.teamId !== this.#options.teamId || response.modelProjectId !== project || taskset.id !== ref.id || taskset.revision !== ref.revision || taskset.contentHash !== ref.contentHash) throw new OpenPondTasksetPackageError(502, \"package_readback_mismatch\", \"Taskset package did not match the requested release and owner.\");\n if (expectedPackageHash !== undefined && response.package.contentHash !== expectedPackageHash) throw new OpenPondTasksetPackageError(502, \"package_readback_mismatch\", \"Taskset package did not match the saved publication receipt.\");\n return validateTasksetPackage(response.package);\n }\n\n async #request(path: string, method: string, body: unknown, signal?: AbortSignal): Promise<unknown> {\n const serialized = body === undefined ? undefined : JSON.stringify(body);\n if (serialized && new TextEncoder().encode(serialized).byteLength > MAX_TASKSET_PACKAGE_BYTES) throw new OpenPondTasksetPackageError(413, \"package_too_large\", \"Taskset publication exceeds the 64 MiB envelope.\");\n const response = await (this.#options.fetch ?? globalThis.fetch)(`${this.#options.baseUrl}/v1/taskset-packages${path}`, {\n method, headers: { Authorization: `Bearer ${this.#options.apiKey}`, \"X-OpenPond-Team-Id\": this.#options.teamId, Accept: \"application/json\", ...(serialized ? { \"Content-Type\": \"application/json\" } : {}) },\n body: serialized, signal, redirect: \"error\",\n });\n const reader = response.body?.getReader();\n if (!reader) throw new OpenPondTasksetPackageError(response.status, \"empty_response\", \"Taskset package response was empty.\");\n const decoder = new TextDecoder(\"utf-8\", { fatal: true });\n let bytes = 0;\n let text = \"\";\n try {\n while (true) {\n const chunk = await reader.read();\n if (chunk.done) break;\n bytes += chunk.value.byteLength;\n if (bytes > MAX_TASKSET_PACKAGE_BYTES) throw new OpenPondTasksetPackageError(413, \"package_too_large\", \"Taskset response exceeds the 64 MiB envelope.\");\n text += decoder.decode(chunk.value, { stream: true });\n }\n text += decoder.decode();\n } finally { await reader.cancel(); reader.releaseLock(); }\n const payload: unknown = JSON.parse(text);\n if (!response.ok) {\n const error = z.object({ code: z.string(), message: z.string() }).safeParse(payload);\n throw new OpenPondTasksetPackageError(response.status, error.success ? error.data.code : \"package_request_failed\", error.success ? error.data.message : `Taskset package request failed (${response.status}).`);\n }\n return payload;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  ModelTasksetAuthoringSchema
3
3
  } from "./chunk-2U54EOXJ.js";
4
+ import {
5
+ ModelProjectVersionedRefSchema,
6
+ canonicalJson
7
+ } from "./chunk-TCHAWJMB.js";
4
8
  import {
5
9
  ImmutableAssetRefSchema,
6
10
  contentHash,
7
11
  sha256
8
12
  } from "./chunk-QUOW6URQ.js";
9
- import {
10
- ModelProjectVersionedRefSchema,
11
- canonicalJson
12
- } from "./chunk-TCHAWJMB.js";
13
13
 
14
14
  // src/model-starter-execution.ts
15
15
  import { z } from "zod";
@@ -537,6 +537,8 @@ function same2(left, right) {
537
537
  }
538
538
 
539
539
  export {
540
+ modelAuthoredTasksetId,
541
+ assertModelTasksetAuthoring,
540
542
  ModelStarterEnvironmentAttemptSchema,
541
543
  verifyModelStarterEnvironmentAttempt,
542
544
  ModelStarterExecutionSchema,
@@ -557,8 +559,6 @@ export {
557
559
  TasksetPackageLearningResourcesSchema,
558
560
  learningPackageContextFiles,
559
561
  validateTasksetLearningResources,
560
- modelAuthoredTasksetId,
561
- assertModelTasksetAuthoring,
562
562
  MAX_TASKSET_PACKAGE_BYTES,
563
563
  TasksetPackageFileSchema,
564
564
  decodeTasksetPackageFile,
@@ -571,4 +571,4 @@ export {
571
571
  validateTasksetPackage,
572
572
  createTasksetPackage
573
573
  };
574
- //# sourceMappingURL=chunk-42YOB36J.js.map
574
+ //# sourceMappingURL=chunk-WOPM32SE.js.map
@@ -1558,7 +1558,7 @@ var ProfileWorkflowSchema = z10.object({
1558
1558
  description: z10.string().max(4e3),
1559
1559
  inputSchema: z10.record(z10.string(), z10.unknown()),
1560
1560
  invocation: z10.discriminatedUnion("kind", [
1561
- z10.object({ kind: z10.literal("instructions"), instructions: z10.string().trim().min(1).max(1e5) }).strict(),
1561
+ z10.object({ kind: z10.literal("instructions"), instructions: z10.string().min(1).max(1e5).refine((value) => Boolean(value.trim())) }).strict(),
1562
1562
  z10.object({ kind: z10.literal("agent_action"), actionId: z10.string().trim().min(1).max(240) }).strict()
1563
1563
  ]),
1564
1564
  skillPaths: z10.array(SourcePathSchema).max(100)
@@ -1597,6 +1597,27 @@ var ProfileComponentBindingSchema = z10.object({
1597
1597
  ])
1598
1598
  }).strict();
1599
1599
 
1600
+ // ../harness/dist/profile-workflow-source.js
1601
+ import { parseDocument } from "yaml";
1602
+ import { z as z11 } from "zod";
1603
+ var PortablePathSchema = z11.string().min(1).max(2e3).refine((value) => !value.includes("\\") && !value.includes(":") && !value.startsWith("/") && value.split("/").every((part) => part !== "" && part !== "." && part !== ".."), "source paths must be portable relative paths");
1604
+ var WorkflowIdSchema2 = z11.string().regex(/^[a-z][a-z0-9_-]{0,119}$/);
1605
+ var EmptyInputSchema = { type: "object", properties: {}, additionalProperties: false };
1606
+ var ProfileWorkflowPromptMetadataSchema = z11.object({
1607
+ name: z11.string().trim().min(1).max(240).optional(),
1608
+ description: z11.string().max(4e3).optional(),
1609
+ skillPaths: z11.array(PortablePathSchema).max(100).optional(),
1610
+ assetPaths: z11.array(PortablePathSchema).max(100).optional()
1611
+ }).strict();
1612
+ var ProfileWorkflowActionSourceSchema = z11.object({
1613
+ actionId: z11.string().trim().min(1).max(240),
1614
+ name: z11.string().trim().min(1).max(240),
1615
+ description: z11.string().max(4e3).default(""),
1616
+ inputSchema: z11.record(z11.string(), z11.unknown()).default(EmptyInputSchema),
1617
+ skillPaths: z11.array(PortablePathSchema).max(100).default([]),
1618
+ assetPaths: z11.array(PortablePathSchema).max(100).default([])
1619
+ }).strict();
1620
+
1600
1621
  export {
1601
1622
  ToolDeclarationSchema,
1602
1623
  CapabilityRequirementSchema,
@@ -1607,4 +1628,4 @@ export {
1607
1628
  validateHarnessPolicySourcePackage,
1608
1629
  validateHarnessSourcePackage
1609
1630
  };
1610
- //# sourceMappingURL=chunk-EAEYAU4R.js.map
1631
+ //# sourceMappingURL=chunk-Y4NGWGTA.js.map