@fortemi/core 2026.9.4 → 2026.9.5

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.js CHANGED
@@ -2,7 +2,7 @@ import { v7, v5 } from 'uuid';
2
2
  import { sha256 } from '@noble/hashes/sha256';
3
3
  import { blake3 } from '@noble/hashes/blake3';
4
4
  import { bytesToHex } from '@noble/hashes/utils';
5
- import Ajv20202 from 'ajv/dist/2020.js';
5
+ import Ajv20203 from 'ajv/dist/2020.js';
6
6
  import { gzipSync, gunzipSync } from 'fflate';
7
7
  import { z } from 'zod';
8
8
 
@@ -4215,6 +4215,479 @@ function compareAssertions(left, right) {
4215
4215
 
4216
4216
  // src/dataset-execution-capabilities.ts
4217
4217
  init_geometry_buffer();
4218
+
4219
+ // schemas/dataset-execution-capabilities/validation/1.0.1/schema.json
4220
+ var schema_default = {
4221
+ $schema: "https://json-schema.org/draft/2020-12/schema",
4222
+ $id: "https://fortemi.dev/schemas/dataset-execution-capabilities/validation/1.0.1.schema.json",
4223
+ title: "Dataset Capability Validation Revision 1.0.1 (v1 wire)",
4224
+ oneOf: [
4225
+ {
4226
+ $ref: "#/$defs/descriptor"
4227
+ },
4228
+ {
4229
+ $ref: "#/$defs/request"
4230
+ },
4231
+ {
4232
+ $ref: "#/$defs/result"
4233
+ }
4234
+ ],
4235
+ $defs: {
4236
+ capabilityId: {
4237
+ enum: [
4238
+ "ingest.full",
4239
+ "ingest.snapshot",
4240
+ "ingest.incremental",
4241
+ "ingest.stream",
4242
+ "schema.inspect",
4243
+ "identity.stable-revision",
4244
+ "identity.record",
4245
+ "mutation.upsert",
4246
+ "mutation.tombstone",
4247
+ "mutation.reconcile",
4248
+ "checkpoint.read",
4249
+ "checkpoint.write",
4250
+ "execution.cancel",
4251
+ "rejection.record",
4252
+ "index.lexical",
4253
+ "index.chunk",
4254
+ "index.vector",
4255
+ "index.hybrid",
4256
+ "index.rerank",
4257
+ "index.graph",
4258
+ "index.community",
4259
+ "lineage.dataset",
4260
+ "lineage.record",
4261
+ "lineage.field",
4262
+ "lineage.relationship-evidence",
4263
+ "transaction.atomic-batch",
4264
+ "privacy.pre-materialization-filter",
4265
+ "pagination.cursor",
4266
+ "ordering.deterministic"
4267
+ ]
4268
+ },
4269
+ semver: {
4270
+ type: "string",
4271
+ maxLength: 256,
4272
+ pattern: "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-((?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\+([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$(?![\\s\\S])"
4273
+ },
4274
+ digest: {
4275
+ type: "string",
4276
+ pattern: "^[a-z0-9]+:[a-f0-9]+$"
4277
+ },
4278
+ limits: {
4279
+ type: "object",
4280
+ additionalProperties: false,
4281
+ properties: {
4282
+ maxInputBytes: {
4283
+ type: "integer",
4284
+ minimum: 0,
4285
+ maximum: 9007199254740991
4286
+ },
4287
+ maxRecordBytes: {
4288
+ type: "integer",
4289
+ minimum: 0,
4290
+ maximum: 9007199254740991
4291
+ },
4292
+ maxBatchRecords: {
4293
+ type: "integer",
4294
+ minimum: 0,
4295
+ maximum: 9007199254740991
4296
+ },
4297
+ maxConcurrency: {
4298
+ type: "integer",
4299
+ minimum: 0,
4300
+ maximum: 9007199254740991
4301
+ },
4302
+ maxPageSize: {
4303
+ type: "integer",
4304
+ minimum: 0,
4305
+ maximum: 9007199254740991
4306
+ },
4307
+ maxTraversalDepth: {
4308
+ type: "integer",
4309
+ minimum: 0,
4310
+ maximum: 9007199254740991
4311
+ }
4312
+ }
4313
+ },
4314
+ evidence: {
4315
+ type: "object",
4316
+ additionalProperties: false,
4317
+ required: [
4318
+ "id",
4319
+ "kind",
4320
+ "uri"
4321
+ ],
4322
+ properties: {
4323
+ id: {
4324
+ type: "string",
4325
+ minLength: 1
4326
+ },
4327
+ kind: {
4328
+ enum: [
4329
+ "fixture",
4330
+ "conformance-report",
4331
+ "live-qualification"
4332
+ ]
4333
+ },
4334
+ uri: {
4335
+ type: "string",
4336
+ minLength: 1
4337
+ },
4338
+ digest: {
4339
+ $ref: "#/$defs/digest"
4340
+ }
4341
+ }
4342
+ },
4343
+ capability: {
4344
+ type: "object",
4345
+ additionalProperties: false,
4346
+ required: [
4347
+ "id",
4348
+ "version",
4349
+ "status",
4350
+ "evidence"
4351
+ ],
4352
+ properties: {
4353
+ id: {
4354
+ $ref: "#/$defs/capabilityId"
4355
+ },
4356
+ version: {
4357
+ $ref: "#/$defs/semver"
4358
+ },
4359
+ status: {
4360
+ enum: [
4361
+ "supported",
4362
+ "experimental",
4363
+ "unsupported"
4364
+ ]
4365
+ },
4366
+ limits: {
4367
+ $ref: "#/$defs/limits"
4368
+ },
4369
+ evidence: {
4370
+ type: "array",
4371
+ items: {
4372
+ type: "string",
4373
+ minLength: 1
4374
+ },
4375
+ uniqueItems: true
4376
+ }
4377
+ }
4378
+ },
4379
+ runtime: {
4380
+ type: "object",
4381
+ additionalProperties: false,
4382
+ required: [
4383
+ "id",
4384
+ "version",
4385
+ "plane",
4386
+ "dataClass",
4387
+ "maturity"
4388
+ ],
4389
+ properties: {
4390
+ id: {
4391
+ type: "string",
4392
+ minLength: 1
4393
+ },
4394
+ version: {
4395
+ $ref: "#/$defs/semver"
4396
+ },
4397
+ plane: {
4398
+ enum: [
4399
+ "browser-local-archive",
4400
+ "static-cache",
4401
+ "portable-shard",
4402
+ "server-process",
4403
+ "live-remote-persistence"
4404
+ ]
4405
+ },
4406
+ dataClass: {
4407
+ enum: [
4408
+ "canonical",
4409
+ "regenerable-index",
4410
+ "static-cache",
4411
+ "portable-projection",
4412
+ "remote-persistence"
4413
+ ]
4414
+ },
4415
+ maturity: {
4416
+ enum: [
4417
+ "experimental",
4418
+ "alpha",
4419
+ "beta",
4420
+ "stable"
4421
+ ]
4422
+ }
4423
+ }
4424
+ },
4425
+ guarantees: {
4426
+ type: "object",
4427
+ additionalProperties: false,
4428
+ required: [
4429
+ "transaction",
4430
+ "isolation",
4431
+ "durability",
4432
+ "availability",
4433
+ "ordering"
4434
+ ],
4435
+ properties: {
4436
+ transaction: {
4437
+ enum: [
4438
+ "none",
4439
+ "single-record",
4440
+ "atomic-batch"
4441
+ ]
4442
+ },
4443
+ isolation: {
4444
+ enum: [
4445
+ "none",
4446
+ "snapshot",
4447
+ "serializable"
4448
+ ]
4449
+ },
4450
+ durability: {
4451
+ enum: [
4452
+ "process",
4453
+ "memory",
4454
+ "filesystem",
4455
+ "wal",
4456
+ "replicated"
4457
+ ]
4458
+ },
4459
+ availability: {
4460
+ enum: [
4461
+ "local-process",
4462
+ "single-host",
4463
+ "remote-service"
4464
+ ]
4465
+ },
4466
+ ordering: {
4467
+ enum: [
4468
+ "unspecified",
4469
+ "stable-identity",
4470
+ "backend-cursor"
4471
+ ]
4472
+ }
4473
+ }
4474
+ },
4475
+ descriptor: {
4476
+ type: "object",
4477
+ additionalProperties: false,
4478
+ required: [
4479
+ "contract",
4480
+ "schemaVersion",
4481
+ "runtime",
4482
+ "guarantees",
4483
+ "capabilities",
4484
+ "evidence"
4485
+ ],
4486
+ properties: {
4487
+ contract: {
4488
+ const: "fortemi.dataset-execution-capabilities/v1"
4489
+ },
4490
+ schemaVersion: {
4491
+ $ref: "#/$defs/semver"
4492
+ },
4493
+ runtime: {
4494
+ $ref: "#/$defs/runtime"
4495
+ },
4496
+ guarantees: {
4497
+ $ref: "#/$defs/guarantees"
4498
+ },
4499
+ capabilities: {
4500
+ type: "array",
4501
+ items: {
4502
+ $ref: "#/$defs/capability"
4503
+ }
4504
+ },
4505
+ evidence: {
4506
+ type: "array",
4507
+ items: {
4508
+ $ref: "#/$defs/evidence"
4509
+ }
4510
+ }
4511
+ }
4512
+ },
4513
+ requirement: {
4514
+ type: "object",
4515
+ additionalProperties: false,
4516
+ required: [
4517
+ "id"
4518
+ ],
4519
+ properties: {
4520
+ id: {
4521
+ $ref: "#/$defs/capabilityId"
4522
+ },
4523
+ minimumVersion: {
4524
+ $ref: "#/$defs/semver"
4525
+ },
4526
+ minimumLimits: {
4527
+ $ref: "#/$defs/limits"
4528
+ }
4529
+ }
4530
+ },
4531
+ optionalRequirement: {
4532
+ type: "object",
4533
+ additionalProperties: false,
4534
+ required: [
4535
+ "id"
4536
+ ],
4537
+ properties: {
4538
+ id: {
4539
+ $ref: "#/$defs/capabilityId"
4540
+ },
4541
+ minimumVersion: {
4542
+ $ref: "#/$defs/semver"
4543
+ },
4544
+ minimumLimits: {
4545
+ $ref: "#/$defs/limits"
4546
+ },
4547
+ fallback: {
4548
+ type: "array",
4549
+ items: {
4550
+ $ref: "#/$defs/capabilityId"
4551
+ },
4552
+ uniqueItems: true
4553
+ }
4554
+ }
4555
+ },
4556
+ request: {
4557
+ type: "object",
4558
+ additionalProperties: false,
4559
+ required: [
4560
+ "contract",
4561
+ "required"
4562
+ ],
4563
+ properties: {
4564
+ contract: {
4565
+ const: "fortemi.dataset-execution-capabilities/v1"
4566
+ },
4567
+ required: {
4568
+ type: "array",
4569
+ items: {
4570
+ $ref: "#/$defs/requirement"
4571
+ }
4572
+ },
4573
+ optional: {
4574
+ type: "array",
4575
+ items: {
4576
+ $ref: "#/$defs/optionalRequirement"
4577
+ }
4578
+ }
4579
+ }
4580
+ },
4581
+ diagnostic: {
4582
+ type: "object",
4583
+ additionalProperties: false,
4584
+ required: [
4585
+ "code",
4586
+ "message"
4587
+ ],
4588
+ properties: {
4589
+ code: {
4590
+ enum: [
4591
+ "CONTRACT_MAJOR_UNSUPPORTED",
4592
+ "SCHEMA_VERSION_UNSUPPORTED",
4593
+ "DESCRIPTOR_INVALID",
4594
+ "CAPABILITY_DUPLICATE",
4595
+ "CAPABILITY_INCONSISTENT",
4596
+ "REQUIRED_CAPABILITY_MISSING",
4597
+ "CAPABILITY_VERSION_INSUFFICIENT",
4598
+ "CAPABILITY_LIMIT_INSUFFICIENT"
4599
+ ]
4600
+ },
4601
+ capability: {
4602
+ $ref: "#/$defs/capabilityId"
4603
+ },
4604
+ path: {
4605
+ type: "string"
4606
+ },
4607
+ message: {
4608
+ type: "string",
4609
+ minLength: 1
4610
+ }
4611
+ }
4612
+ },
4613
+ degradation: {
4614
+ type: "object",
4615
+ additionalProperties: false,
4616
+ required: [
4617
+ "requested",
4618
+ "reason",
4619
+ "changedGuarantees"
4620
+ ],
4621
+ properties: {
4622
+ requested: {
4623
+ $ref: "#/$defs/capabilityId"
4624
+ },
4625
+ selected: {
4626
+ $ref: "#/$defs/capabilityId"
4627
+ },
4628
+ reason: {
4629
+ enum: [
4630
+ "unsupported",
4631
+ "version-insufficient",
4632
+ "limit-insufficient"
4633
+ ]
4634
+ },
4635
+ changedGuarantees: {
4636
+ type: "array",
4637
+ minItems: 1,
4638
+ items: {
4639
+ type: "string",
4640
+ minLength: 1
4641
+ }
4642
+ }
4643
+ }
4644
+ },
4645
+ result: {
4646
+ type: "object",
4647
+ additionalProperties: false,
4648
+ required: [
4649
+ "contract",
4650
+ "accepted",
4651
+ "runtime",
4652
+ "selected",
4653
+ "degradations",
4654
+ "diagnostics"
4655
+ ],
4656
+ properties: {
4657
+ contract: {
4658
+ const: "fortemi.dataset-execution-capabilities/v1"
4659
+ },
4660
+ accepted: {
4661
+ type: "boolean"
4662
+ },
4663
+ runtime: {
4664
+ $ref: "#/$defs/runtime"
4665
+ },
4666
+ selected: {
4667
+ type: "array",
4668
+ items: {
4669
+ $ref: "#/$defs/capabilityId"
4670
+ },
4671
+ uniqueItems: true
4672
+ },
4673
+ degradations: {
4674
+ type: "array",
4675
+ items: {
4676
+ $ref: "#/$defs/degradation"
4677
+ }
4678
+ },
4679
+ diagnostics: {
4680
+ type: "array",
4681
+ items: {
4682
+ $ref: "#/$defs/diagnostic"
4683
+ }
4684
+ }
4685
+ }
4686
+ }
4687
+ }
4688
+ };
4689
+
4690
+ // src/dataset-execution-capabilities.ts
4218
4691
  var DATASET_EXECUTION_CONTRACT = "fortemi.dataset-execution-capabilities/v1";
4219
4692
  var DATASET_EXECUTION_SCHEMA_VERSION = "1.0.0";
4220
4693
  var DATASET_EXECUTION_CAPABILITY_IDS = [
@@ -4250,27 +4723,64 @@ var DATASET_EXECUTION_CAPABILITY_IDS = [
4250
4723
  ];
4251
4724
  var ID_SET = new Set(DATASET_EXECUTION_CAPABILITY_IDS);
4252
4725
  var LIMIT_KEYS = ["maxInputBytes", "maxRecordBytes", "maxBatchRecords", "maxConcurrency", "maxPageSize", "maxTraversalDepth"];
4726
+ var versionPattern = new RegExp(schema_default.$defs.semver.pattern);
4727
+ var ajv = new Ajv20203({ strict: true, allErrors: false });
4728
+ ajv.addSchema(schema_default);
4729
+ var descriptorStructure = ajv.compile({ $ref: schema_default.$id + "#/$defs/descriptor" });
4730
+ var requestStructure = ajv.compile({ $ref: schema_default.$id + "#/$defs/request" });
4731
+ function parseVersion(value) {
4732
+ if (typeof value !== "string" || value.length > 256) return null;
4733
+ const match = versionPattern.exec(value);
4734
+ if (!match || match[0] !== value) return null;
4735
+ const core = match.slice(1, 4).map(Number);
4736
+ if (!core.every(Number.isSafeInteger)) return null;
4737
+ return { core, prerelease: match[4]?.split(".") ?? [] };
4738
+ }
4253
4739
  function major(version) {
4254
- const match = /^(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/.exec(version);
4255
- return match ? Number(match[1]) : null;
4740
+ const parsed = parseVersion(version);
4741
+ return parsed && parsed.prerelease.length === 0 ? parsed.core[0] : null;
4256
4742
  }
4257
4743
  function compareVersions(left, right) {
4258
- const parse = (value) => {
4259
- const match = /^(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/.exec(value);
4260
- return match ? [Number(match[1]), Number(match[2]), Number(match[3])] : null;
4261
- };
4262
- const a = parse(left);
4263
- const b = parse(right);
4744
+ const a = parseVersion(left);
4745
+ const b = parseVersion(right);
4264
4746
  if (!a || !b) return null;
4265
4747
  for (let index = 0; index < 3; index++) {
4266
- if (a[index] !== b[index]) return a[index] > b[index] ? 1 : -1;
4748
+ if (a.core[index] !== b.core[index]) return a.core[index] > b.core[index] ? 1 : -1;
4749
+ }
4750
+ if (!a.prerelease.length || !b.prerelease.length) {
4751
+ return a.prerelease.length ? -1 : b.prerelease.length ? 1 : 0;
4752
+ }
4753
+ for (let index = 0; index < Math.max(a.prerelease.length, b.prerelease.length); index++) {
4754
+ const leftPart = a.prerelease[index];
4755
+ const rightPart = b.prerelease[index];
4756
+ if (leftPart === rightPart) continue;
4757
+ if (leftPart === void 0) return -1;
4758
+ if (rightPart === void 0) return 1;
4759
+ const leftNumeric = /^[0-9]+$/.test(leftPart);
4760
+ const rightNumeric = /^[0-9]+$/.test(rightPart);
4761
+ if (leftNumeric !== rightNumeric) return leftNumeric ? -1 : 1;
4762
+ if (leftNumeric && leftPart.length !== rightPart.length) return leftPart.length > rightPart.length ? 1 : -1;
4763
+ return leftPart > rightPart ? 1 : -1;
4267
4764
  }
4268
4765
  return 0;
4269
4766
  }
4270
4767
  function isSupported(capability) {
4271
- return capability !== void 0 && capability.status !== "unsupported";
4768
+ return capability !== void 0 && (capability.status === "supported" || capability.status === "experimental");
4769
+ }
4770
+ function structuralDiagnostics(validate3, prefix = "") {
4771
+ return (validate3.errors ?? []).slice(0, 8).map((error) => ({
4772
+ code: "DESCRIPTOR_INVALID",
4773
+ path: (prefix + error.instancePath).slice(0, 256),
4774
+ message: "Invalid capability wire structure: " + error.keyword
4775
+ }));
4272
4776
  }
4273
4777
  function validateDatasetExecutionDescriptor(descriptor) {
4778
+ if (!descriptorStructure(descriptor)) {
4779
+ if (descriptor && typeof descriptor === "object" && "contract" in descriptor && descriptor.contract !== DATASET_EXECUTION_CONTRACT) {
4780
+ return [{ code: "CONTRACT_MAJOR_UNSUPPORTED", path: "/contract", message: "Unsupported descriptor contract" }];
4781
+ }
4782
+ return structuralDiagnostics(descriptorStructure);
4783
+ }
4274
4784
  const diagnostics = [];
4275
4785
  if (descriptor.contract !== DATASET_EXECUTION_CONTRACT) {
4276
4786
  diagnostics.push({ code: "CONTRACT_MAJOR_UNSUPPORTED", path: "/contract", message: `Unsupported contract ${String(descriptor.contract)}` });
@@ -4278,6 +4788,9 @@ function validateDatasetExecutionDescriptor(descriptor) {
4278
4788
  if (major(descriptor.schemaVersion) !== 1) {
4279
4789
  diagnostics.push({ code: "SCHEMA_VERSION_UNSUPPORTED", path: "/schemaVersion", message: `Unsupported descriptor schema version ${descriptor.schemaVersion}` });
4280
4790
  }
4791
+ if (!parseVersion(descriptor.runtime.version)) {
4792
+ diagnostics.push({ code: "DESCRIPTOR_INVALID", path: "/runtime/version", message: "Invalid runtime semantic version" });
4793
+ }
4281
4794
  const capabilities = /* @__PURE__ */ new Map();
4282
4795
  descriptor.capabilities.forEach((capability, index) => {
4283
4796
  if (!ID_SET.has(capability.id) || compareVersions(capability.version, capability.version) === null) {
@@ -4299,7 +4812,7 @@ function validateDatasetExecutionDescriptor(descriptor) {
4299
4812
  }
4300
4813
  for (const evidenceId of capability.evidence) {
4301
4814
  if (!descriptor.evidence.some((evidence) => evidence.id === evidenceId)) {
4302
- diagnostics.push({ code: "DESCRIPTOR_INVALID", capability: capability.id, path: `/capabilities/${index}/evidence`, message: `Unknown evidence ${evidenceId}` });
4815
+ diagnostics.push({ code: "DESCRIPTOR_INVALID", capability: capability.id, path: `/capabilities/${index}/evidence`, message: "Capability references undeclared evidence" });
4303
4816
  }
4304
4817
  }
4305
4818
  });
@@ -4326,12 +4839,37 @@ function validateDatasetExecutionDescriptor(descriptor) {
4326
4839
  }
4327
4840
  return diagnostics;
4328
4841
  }
4842
+ function validateDatasetExecutionRequest(request) {
4843
+ if (!requestStructure(request)) {
4844
+ if (request && typeof request === "object" && "contract" in request && request.contract !== DATASET_EXECUTION_CONTRACT) {
4845
+ return [{ code: "CONTRACT_MAJOR_UNSUPPORTED", path: "/request/contract", message: "Unsupported request contract" }];
4846
+ }
4847
+ return structuralDiagnostics(requestStructure, "/request");
4848
+ }
4849
+ const diagnostics = [];
4850
+ for (const [group, requirements] of [["required", request.required], ["optional", request.optional ?? []]]) {
4851
+ requirements.forEach((requirement, index) => {
4852
+ if (requirement.minimumVersion !== void 0 && !parseVersion(requirement.minimumVersion)) {
4853
+ diagnostics.push({ code: "DESCRIPTOR_INVALID", path: "/request/" + group + "/" + index + "/minimumVersion", message: "Invalid required semantic version" });
4854
+ }
4855
+ });
4856
+ }
4857
+ return diagnostics;
4858
+ }
4859
+ function negotiateDatasetExecutionCapabilitiesFromWire(descriptor, request) {
4860
+ const diagnostics = [...validateDatasetExecutionDescriptor(descriptor), ...validateDatasetExecutionRequest(request)];
4861
+ if (diagnostics.length) return { valid: false, diagnostics };
4862
+ return {
4863
+ valid: true,
4864
+ result: negotiateDatasetExecutionCapabilities(descriptor, request)
4865
+ };
4866
+ }
4329
4867
  function assessRequirement(requirement, capabilities) {
4330
4868
  const capability = capabilities.get(requirement.id);
4331
4869
  if (!isSupported(capability)) {
4332
4870
  return { ok: false, reason: "unsupported", diagnostics: [{ code: "REQUIRED_CAPABILITY_MISSING", capability: requirement.id, message: `Capability ${requirement.id} is unsupported` }] };
4333
4871
  }
4334
- if (requirement.minimumVersion) {
4872
+ if (requirement.minimumVersion !== void 0) {
4335
4873
  const comparison = compareVersions(capability.version, requirement.minimumVersion);
4336
4874
  if (comparison === null || comparison < 0) {
4337
4875
  return { ok: false, reason: "version-insufficient", diagnostics: [{ code: "CAPABILITY_VERSION_INSUFFICIENT", capability: requirement.id, message: `${capability.version} does not satisfy ${requirement.minimumVersion}` }] };
@@ -4346,11 +4884,8 @@ function assessRequirement(requirement, capabilities) {
4346
4884
  return { ok: true, diagnostics: [] };
4347
4885
  }
4348
4886
  function negotiateDatasetExecutionCapabilities(descriptor, request) {
4349
- const diagnostics = validateDatasetExecutionDescriptor(descriptor);
4350
- if (request.contract !== DATASET_EXECUTION_CONTRACT) {
4351
- diagnostics.push({ code: "CONTRACT_MAJOR_UNSUPPORTED", path: "/contract", message: `Unsupported request contract ${String(request.contract)}` });
4352
- }
4353
- const capabilities = new Map(descriptor.capabilities.map((capability) => [capability.id, capability]));
4887
+ const diagnostics = [...validateDatasetExecutionDescriptor(descriptor), ...validateDatasetExecutionRequest(request)];
4888
+ const capabilities = new Map(diagnostics.length ? [] : descriptor.capabilities.map((capability) => [capability.id, capability]));
4354
4889
  const selected = [];
4355
4890
  const degradations = [];
4356
4891
  if (diagnostics.length === 0) {
@@ -4378,7 +4913,7 @@ function negotiateDatasetExecutionCapabilities(descriptor, request) {
4378
4913
  return {
4379
4914
  contract: DATASET_EXECUTION_CONTRACT,
4380
4915
  accepted: diagnostics.length === 0,
4381
- runtime: { ...descriptor.runtime },
4916
+ runtime: { ...descriptor?.runtime },
4382
4917
  selected: [...new Set(selected)],
4383
4918
  degradations,
4384
4919
  diagnostics
@@ -4542,7 +5077,7 @@ async function executeDatasetMaterialization(request, runtime, adapter, authoriz
4542
5077
  }
4543
5078
  const selected = [request.profile, ...options.fallbackProfiles ?? []].find((item) => item.id === negotiation.selectedProfile);
4544
5079
  try {
4545
- const validateConfiguration = new Ajv20202({ strict: true, allErrors: true }).compile(selected.configurationSchema);
5080
+ const validateConfiguration = new Ajv20203({ strict: true, allErrors: true }).compile(selected.configurationSchema);
4546
5081
  if (!validateConfiguration(request.configuration)) {
4547
5082
  throw new DatasetMaterializationError("CONFIGURATION_INVALID", `Configuration does not satisfy ${selected.id}: ${JSON.stringify(validateConfiguration.errors)}`);
4548
5083
  }
@@ -18704,15 +19239,15 @@ init_geometry_buffer();
18704
19239
  var CURRENT_SHARD_VERSION = "1.2.0";
18705
19240
  var MAX_SHARD_READER_VERSION = "2.0.0";
18706
19241
  var SHARD_FORMAT = "matric-shard";
18707
- function parseVersion(value) {
19242
+ function parseVersion2(value) {
18708
19243
  return value.split(".").map((segment) => {
18709
19244
  const match = segment.match(/^\d+/);
18710
19245
  return match ? Number.parseInt(match[0], 10) : 0;
18711
19246
  });
18712
19247
  }
18713
19248
  function compareShardVersions(left, right) {
18714
- const leftParts = parseVersion(left);
18715
- const rightParts = parseVersion(right);
19249
+ const leftParts = parseVersion2(left);
19250
+ const rightParts = parseVersion2(right);
18716
19251
  const length = Math.max(leftParts.length, rightParts.length);
18717
19252
  for (let index = 0; index < length; index += 1) {
18718
19253
  const leftValue = leftParts[index] ?? 0;
@@ -19004,13 +19539,13 @@ function getKnowledgeShardSchema() {
19004
19539
  function getKnowledgeShardContractReceipt() {
19005
19540
  return knowledge_shard_schema_receipt_default;
19006
19541
  }
19007
- function addCanonicalFormats(ajv) {
19008
- ajv.addFormat("uuid", /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i);
19009
- ajv.addFormat("date-time", {
19542
+ function addCanonicalFormats(ajv2) {
19543
+ ajv2.addFormat("uuid", /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i);
19544
+ ajv2.addFormat("date-time", {
19010
19545
  type: "string",
19011
19546
  validate: (value) => /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(value) && !Number.isNaN(Date.parse(value))
19012
19547
  });
19013
- ajv.addFormat("uri", {
19548
+ ajv2.addFormat("uri", {
19014
19549
  type: "string",
19015
19550
  validate: (value) => {
19016
19551
  try {
@@ -19023,7 +19558,7 @@ function addCanonicalFormats(ajv) {
19023
19558
  }
19024
19559
  function getLegacyAjv() {
19025
19560
  if (!legacyAjvInstance) {
19026
- legacyAjvInstance = new Ajv20202({
19561
+ legacyAjvInstance = new Ajv20203({
19027
19562
  allErrors: true,
19028
19563
  strict: true,
19029
19564
  validateFormats: false
@@ -19034,7 +19569,7 @@ function getLegacyAjv() {
19034
19569
  }
19035
19570
  function getCoreAjv() {
19036
19571
  if (!coreAjvInstance) {
19037
- coreAjvInstance = new Ajv20202({
19572
+ coreAjvInstance = new Ajv20203({
19038
19573
  allErrors: true,
19039
19574
  strict: true,
19040
19575
  validateFormats: true
@@ -19054,7 +19589,7 @@ function getCoreAjv() {
19054
19589
  }
19055
19590
  function getRecordAjv() {
19056
19591
  if (!recordAjvInstance) {
19057
- recordAjvInstance = new Ajv20202({
19592
+ recordAjvInstance = new Ajv20203({
19058
19593
  allErrors: true,
19059
19594
  strict: true,
19060
19595
  validateFormats: true
@@ -19074,7 +19609,7 @@ function getRecordAjv() {
19074
19609
  }
19075
19610
  function getFullAjv() {
19076
19611
  if (!fullAjvInstance) {
19077
- fullAjvInstance = new Ajv20202({
19612
+ fullAjvInstance = new Ajv20203({
19078
19613
  allErrors: true,
19079
19614
  strict: true,
19080
19615
  validateFormats: true
@@ -43361,7 +43896,7 @@ function getAiwgFortemiIndexExportSchema() {
43361
43896
  }
43362
43897
  function getAjv() {
43363
43898
  if (!ajvInstance) {
43364
- ajvInstance = new Ajv20202({
43899
+ ajvInstance = new Ajv20203({
43365
43900
  allErrors: true,
43366
43901
  strict: false,
43367
43902
  validateFormats: false
@@ -46917,7 +47452,7 @@ async function purgeRecordStoreGraph(store, selector, operationKey) {
46917
47452
  }
46918
47453
 
46919
47454
  // src/index.ts
46920
- var VERSION = "2026.9.4";
47455
+ var VERSION = "2026.9.5";
46921
47456
  /*! Bundled license information:
46922
47457
 
46923
47458
  ieee754/index.js:
@@ -46932,6 +47467,6 @@ buffer/index.js:
46932
47467
  *)
46933
47468
  */
46934
47469
 
46935
- export { AIWG_SCAN_REQUIRED_FIELDS, AllowlistTrustStore, ArchiveManager, AttachmentsRepository, BridgeInferenceProvider, CORE_V1_COMPONENTS, CURRENT_MIGRATION_HEAD, CURRENT_SHARD_VERSION, CanonicalAttachmentsRepository, CanonicalNotesRepository, CapabilityManager, CaptureKnowledgeInputSchema, CollectionsRepository, CommunitiesRepository, DATASET_EXECUTION_CAPABILITY_IDS, DATASET_EXECUTION_CONTRACT, DATASET_EXECUTION_SCHEMA_VERSION, DATASET_INGEST_CONTRACT, DATASET_INGEST_SCHEMA_VERSION, DATASET_LINEAGE_CONTRACT, DATASET_LINEAGE_SCHEMA_VERSION, DATASET_MATERIALIZATION_CONTRACT, DATASET_MATERIALIZATION_KINDS, DATASET_MATERIALIZATION_SCHEMA_VERSION, DB_SNAPSHOT_SCHEMA_VERSION, DEFAULT_LARGE_DOCUMENT_CHARS, DEFAULT_LARGE_DOCUMENT_CHUNKS, DatasetIngestError, DatasetIngestExecutor, DatasetLineageLedger, DatasetMaterializationError, DbSnapshotVersionError, EMBED_REQUEST_KIND, EMBED_RESPONSE_KIND, EmbeddingSetsRepository, FORTEMI_BROWSER_LOCAL_DATASET_EXECUTION_DESCRIPTOR, FORTEMI_COMPATIBILITY_PATH, FORTEMI_COMPATIBILITY_STATES, FORTEMI_PORTABLE_SHARD_DATASET_EXECUTION_DESCRIPTOR, FORTEMI_REQUIRED_COMPATIBILITY_CAPABILITIES, FORTEMI_SERVER_COMPATIBILITY_REVISION, FORTEMI_STATIC_CACHE_DATASET_EXECUTION_DESCRIPTOR, FallbackRouter, FortemiToolManifest, GetNoteInputSchema, GraphRepository, IdbRecordStore, JOB_CAPABILITIES, JOB_PRIORITIES, JobQueueWorker, LINEAGE_ENTITY_KINDS, LINEAGE_RELATIONSHIP_KINDS, LOCAL_ENDPOINTS, LifecyclePurgeRepository, LineageValidationError, LinksRepository, ListNotesInputSchema, ManageArchiveInputSchema, ManageAttachmentsInputSchema, ManageCapabilitiesInputSchema, ManageCollectionsInputSchema, ManageLinksInputSchema, ManageNoteInputSchema, ManageTagsInputSchema, MemoryBlobStore, MemoryDatasetIngestStore, MemoryRecordStore, MigrationRunner, NotesRepository, OpenAICompatibleProvider, PGliteStorageBackend, PGliteStorageBackendFactory, PGliteWorkerClient, PGliteWorkerStorageBackend, PGliteWorkerStorageBackendFactory, ProvenanceRepository, ProviderRegistry, RECORD_COLLECTIONS, RECORD_SCHEMA_VERSION, RECORD_STORE_CAPABILITIES, REGISTERED_METADATA_PATHS, RemoteBackendError, SHARD_FORMAT, SIGNATURE_ENTRY, SIGNING_ENVELOPE_VERSION, SOURCE_UPSERT_CONTRACT_VERSION, SOURCE_UPSERT_MAX_ITEMS, SUPPORTED_PGLITE_VERSION, SearchInputSchema, SearchRepository, SkosRepository, SourceUpsertRepository, TagsRepository, TemplatesRepository, TransactionProxy, TypedEventBus, VERSION, aiRevisionHandler, aiwgFortemiIndexFromKnowledgeShard, aiwgFortemiIndexToCommunityGraph, aiwgFortemiIndexToKnowledgeShard, aiwgFortemiIndexToKnowledgeShardWithReport, allMigrations, appendPluginScript, assertAiwgFortemiChunkManifest, assertAiwgFortemiChunkPart, assertAiwgFortemiIndexExport, assertAiwgStaticEmbeddingSet, assertShardComponentRecord, buildAiwgChunkedIndex, buildAiwgStaticEmbeddingSet, buildMetadataPredicateConditions, buildNoteConditions, buildPluginCsp, captureKnowledge, chunkText, classifyError, classifyModel, clearPrefetchedShard, collectionFromShard, collectionToShard, compareDatasetIncrementalParity, computeBlobHash, computeHash, computeLineageDigest, computeSri, conceptTaggingHandler, configureInferenceRuntime, cosineSimilarity, createAiwgFetchChunkLoader, createAiwgFetchDetailLoader, createAiwgIndexController, createAiwgReviewDecisionExport, createBlobStore, createBridgeInferenceProviders, createCosineSemanticProvider, createCspReportHandler, createFortemi, createLazyBlobStore, createLegacyProvider, createLocalProviderProfile, createPGliteBackend, createPGliteInstance, createRecordBackend, createRecordStore, createRemoteBackend, createRoutes, createShardBackend, createShardCapabilityReport, createWorkerEmbedFunction, datasetDestinationScopeKey, defaultStorageBackendFactory, defineInferenceProvider, defineInferenceRuntime, defineLegacyInferenceProvider, defineOpenAICompatibleProvider, deriveDatasetIngestIdempotencyKey, detectCommunities, detectGpuCapabilities, detectInferenceCapabilities, digestDatasetMaterializationValue, discoverLocalProviders, dropAttachmentProjection, dropNoteProjection, dumpDbSnapshot, embeddingConfigToShard, embeddingFromShard, embeddingGenerationHandler, embeddingSetFromShard, embeddingSetMemberToShard, embeddingSetToShard, embeddingToShard, enqueueFullWorkflow, enqueueJob, enqueueNoteCreationJobs, estimateModelFit, estimateVramMB, estimateVramTier, executeDatasetMaterialization, executeDatasetRetrieval, exportFullV1Snapshot, exportShard, exportShardFromRecords, exportShardFromRecordsWithReport, exportShardWithReport, fetchAndValidateFortemiCompatibility, fetchPluginScript, filterAiwgRecordsByPrivacy, findAiwgStaticDuplicatePairs, formatFortemiCompatibilitySummary, fortemiCompatibilityUrl, fortemiManifest, fromPrefetched, generateId, getAiwgFortemiFacets, getAiwgFortemiIndexExportSchema, getConfiguredInferenceProviderId, getEmbedFunction, getEmbeddingTaskSelectionOptions, getFortemiBridge, getFortemiSecretStore, getJobQueueStatus, getKnowledgeShardContractReceipt, getKnowledgeShardProfileRegistry, getKnowledgeShardSchema, getLlmFunction, getNote, getPrefetchedSha256, getProviderRouteRequirementIssue, handleEmbedRequests, hasFortemiSecureSecrets, importFullV1Snapshot, importShard, importShardToRecords, inferInferenceTaskCapability, inferLocalEmbeddingDimensions, isPluginScriptAllowed, isShardPrefetched, isShardSigningSupported, linkFromShard, linkToShard, linkingHandler, listNotes, manageArchive, manageAttachments, manageCapabilities, manageCollections, manageLinks, manageNote, manageTags, matchRoute, mergeInferenceRuntimeConfigs, migrateLegacyBlobStore, negotiateDatasetExecutionCapabilities, negotiateDatasetMaterializationProfile, noteFromShard, noteSkosTagToShard, noteToShard, openShard, packTarGz, parseCspReport, prefetchShard, previewRecordStorePurge, profileSupportError, projectAttachments, projectNotes, projectRecords, provenanceEdgeToShard, providerSatisfiesRouteRequirements, purgeRecordStoreGraph, queryAiwgFortemiIndex, queryAiwgHybridIndex, queryAiwgSemanticIndex, registerLlmCapability, registerSemanticCapability, registerSemanticCapabilityWorker, registerServiceWorker, restoreDbSnapshot, searchTool, selectBackend, selectEmbeddingTask, selectLlmModel, setEmbedFunction, setEmbeddingTaskSelectionOptions, setLlmFunction, sha256Hex, sidecarBlobDigests, signShard, skosConceptToShard, skosRelationToShard, skosSchemeToShard, suggestTags, tagsToShard, templateToShard, titleGenerationHandler, unpackTarGz, unregisterLlmCapability, unregisterSemanticCapability, upsertRecordStoreRequest, upsertRecordStoreSources, urlLinkToShard, validateAiwgFortemiChunkManifest, validateAiwgFortemiChunkPart, validateAiwgFortemiIndexExport, validateAiwgFortemiIndexExportSchema, validateAiwgFortemiProjectedRecordSchema, validateAiwgStaticEmbeddingSet, validateChecksums, validateCoreV1ShardArchive, validateDatasetBenchmarkEvidence, validateDatasetExecutionDescriptor, validateFortemiCompatibilityResponse, validateFullV1ShardArchive, validateProviderRoute, validateRecordV1ShardArchive, validateShardArchive, validateShardComponentRecord, validateShardManifest, verifyDbSnapshotMeta, verifyShardSignature, verifySri };
47470
+ export { AIWG_SCAN_REQUIRED_FIELDS, AllowlistTrustStore, ArchiveManager, AttachmentsRepository, BridgeInferenceProvider, CORE_V1_COMPONENTS, CURRENT_MIGRATION_HEAD, CURRENT_SHARD_VERSION, CanonicalAttachmentsRepository, CanonicalNotesRepository, CapabilityManager, CaptureKnowledgeInputSchema, CollectionsRepository, CommunitiesRepository, DATASET_EXECUTION_CAPABILITY_IDS, DATASET_EXECUTION_CONTRACT, DATASET_EXECUTION_SCHEMA_VERSION, DATASET_INGEST_CONTRACT, DATASET_INGEST_SCHEMA_VERSION, DATASET_LINEAGE_CONTRACT, DATASET_LINEAGE_SCHEMA_VERSION, DATASET_MATERIALIZATION_CONTRACT, DATASET_MATERIALIZATION_KINDS, DATASET_MATERIALIZATION_SCHEMA_VERSION, DB_SNAPSHOT_SCHEMA_VERSION, DEFAULT_LARGE_DOCUMENT_CHARS, DEFAULT_LARGE_DOCUMENT_CHUNKS, DatasetIngestError, DatasetIngestExecutor, DatasetLineageLedger, DatasetMaterializationError, DbSnapshotVersionError, EMBED_REQUEST_KIND, EMBED_RESPONSE_KIND, EmbeddingSetsRepository, FORTEMI_BROWSER_LOCAL_DATASET_EXECUTION_DESCRIPTOR, FORTEMI_COMPATIBILITY_PATH, FORTEMI_COMPATIBILITY_STATES, FORTEMI_PORTABLE_SHARD_DATASET_EXECUTION_DESCRIPTOR, FORTEMI_REQUIRED_COMPATIBILITY_CAPABILITIES, FORTEMI_SERVER_COMPATIBILITY_REVISION, FORTEMI_STATIC_CACHE_DATASET_EXECUTION_DESCRIPTOR, FallbackRouter, FortemiToolManifest, GetNoteInputSchema, GraphRepository, IdbRecordStore, JOB_CAPABILITIES, JOB_PRIORITIES, JobQueueWorker, LINEAGE_ENTITY_KINDS, LINEAGE_RELATIONSHIP_KINDS, LOCAL_ENDPOINTS, LifecyclePurgeRepository, LineageValidationError, LinksRepository, ListNotesInputSchema, ManageArchiveInputSchema, ManageAttachmentsInputSchema, ManageCapabilitiesInputSchema, ManageCollectionsInputSchema, ManageLinksInputSchema, ManageNoteInputSchema, ManageTagsInputSchema, MemoryBlobStore, MemoryDatasetIngestStore, MemoryRecordStore, MigrationRunner, NotesRepository, OpenAICompatibleProvider, PGliteStorageBackend, PGliteStorageBackendFactory, PGliteWorkerClient, PGliteWorkerStorageBackend, PGliteWorkerStorageBackendFactory, ProvenanceRepository, ProviderRegistry, RECORD_COLLECTIONS, RECORD_SCHEMA_VERSION, RECORD_STORE_CAPABILITIES, REGISTERED_METADATA_PATHS, RemoteBackendError, SHARD_FORMAT, SIGNATURE_ENTRY, SIGNING_ENVELOPE_VERSION, SOURCE_UPSERT_CONTRACT_VERSION, SOURCE_UPSERT_MAX_ITEMS, SUPPORTED_PGLITE_VERSION, SearchInputSchema, SearchRepository, SkosRepository, SourceUpsertRepository, TagsRepository, TemplatesRepository, TransactionProxy, TypedEventBus, VERSION, aiRevisionHandler, aiwgFortemiIndexFromKnowledgeShard, aiwgFortemiIndexToCommunityGraph, aiwgFortemiIndexToKnowledgeShard, aiwgFortemiIndexToKnowledgeShardWithReport, allMigrations, appendPluginScript, assertAiwgFortemiChunkManifest, assertAiwgFortemiChunkPart, assertAiwgFortemiIndexExport, assertAiwgStaticEmbeddingSet, assertShardComponentRecord, buildAiwgChunkedIndex, buildAiwgStaticEmbeddingSet, buildMetadataPredicateConditions, buildNoteConditions, buildPluginCsp, captureKnowledge, chunkText, classifyError, classifyModel, clearPrefetchedShard, collectionFromShard, collectionToShard, compareDatasetIncrementalParity, computeBlobHash, computeHash, computeLineageDigest, computeSri, conceptTaggingHandler, configureInferenceRuntime, cosineSimilarity, createAiwgFetchChunkLoader, createAiwgFetchDetailLoader, createAiwgIndexController, createAiwgReviewDecisionExport, createBlobStore, createBridgeInferenceProviders, createCosineSemanticProvider, createCspReportHandler, createFortemi, createLazyBlobStore, createLegacyProvider, createLocalProviderProfile, createPGliteBackend, createPGliteInstance, createRecordBackend, createRecordStore, createRemoteBackend, createRoutes, createShardBackend, createShardCapabilityReport, createWorkerEmbedFunction, datasetDestinationScopeKey, defaultStorageBackendFactory, defineInferenceProvider, defineInferenceRuntime, defineLegacyInferenceProvider, defineOpenAICompatibleProvider, deriveDatasetIngestIdempotencyKey, detectCommunities, detectGpuCapabilities, detectInferenceCapabilities, digestDatasetMaterializationValue, discoverLocalProviders, dropAttachmentProjection, dropNoteProjection, dumpDbSnapshot, embeddingConfigToShard, embeddingFromShard, embeddingGenerationHandler, embeddingSetFromShard, embeddingSetMemberToShard, embeddingSetToShard, embeddingToShard, enqueueFullWorkflow, enqueueJob, enqueueNoteCreationJobs, estimateModelFit, estimateVramMB, estimateVramTier, executeDatasetMaterialization, executeDatasetRetrieval, exportFullV1Snapshot, exportShard, exportShardFromRecords, exportShardFromRecordsWithReport, exportShardWithReport, fetchAndValidateFortemiCompatibility, fetchPluginScript, filterAiwgRecordsByPrivacy, findAiwgStaticDuplicatePairs, formatFortemiCompatibilitySummary, fortemiCompatibilityUrl, fortemiManifest, fromPrefetched, generateId, getAiwgFortemiFacets, getAiwgFortemiIndexExportSchema, getConfiguredInferenceProviderId, getEmbedFunction, getEmbeddingTaskSelectionOptions, getFortemiBridge, getFortemiSecretStore, getJobQueueStatus, getKnowledgeShardContractReceipt, getKnowledgeShardProfileRegistry, getKnowledgeShardSchema, getLlmFunction, getNote, getPrefetchedSha256, getProviderRouteRequirementIssue, handleEmbedRequests, hasFortemiSecureSecrets, importFullV1Snapshot, importShard, importShardToRecords, inferInferenceTaskCapability, inferLocalEmbeddingDimensions, isPluginScriptAllowed, isShardPrefetched, isShardSigningSupported, linkFromShard, linkToShard, linkingHandler, listNotes, manageArchive, manageAttachments, manageCapabilities, manageCollections, manageLinks, manageNote, manageTags, matchRoute, mergeInferenceRuntimeConfigs, migrateLegacyBlobStore, negotiateDatasetExecutionCapabilities, negotiateDatasetExecutionCapabilitiesFromWire, negotiateDatasetMaterializationProfile, noteFromShard, noteSkosTagToShard, noteToShard, openShard, packTarGz, parseCspReport, prefetchShard, previewRecordStorePurge, profileSupportError, projectAttachments, projectNotes, projectRecords, provenanceEdgeToShard, providerSatisfiesRouteRequirements, purgeRecordStoreGraph, queryAiwgFortemiIndex, queryAiwgHybridIndex, queryAiwgSemanticIndex, registerLlmCapability, registerSemanticCapability, registerSemanticCapabilityWorker, registerServiceWorker, restoreDbSnapshot, searchTool, selectBackend, selectEmbeddingTask, selectLlmModel, setEmbedFunction, setEmbeddingTaskSelectionOptions, setLlmFunction, sha256Hex, sidecarBlobDigests, signShard, skosConceptToShard, skosRelationToShard, skosSchemeToShard, suggestTags, tagsToShard, templateToShard, titleGenerationHandler, unpackTarGz, unregisterLlmCapability, unregisterSemanticCapability, upsertRecordStoreRequest, upsertRecordStoreSources, urlLinkToShard, validateAiwgFortemiChunkManifest, validateAiwgFortemiChunkPart, validateAiwgFortemiIndexExport, validateAiwgFortemiIndexExportSchema, validateAiwgFortemiProjectedRecordSchema, validateAiwgStaticEmbeddingSet, validateChecksums, validateCoreV1ShardArchive, validateDatasetBenchmarkEvidence, validateDatasetExecutionDescriptor, validateDatasetExecutionRequest, validateFortemiCompatibilityResponse, validateFullV1ShardArchive, validateProviderRoute, validateRecordV1ShardArchive, validateShardArchive, validateShardComponentRecord, validateShardManifest, verifyDbSnapshotMeta, verifyShardSignature, verifySri };
46936
47471
  //# sourceMappingURL=index.js.map
46937
47472
  //# sourceMappingURL=index.js.map