@campfire-interactive/volume-intelligence-client 0.3.0 → 0.5.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.
package/dist/index.d.ts CHANGED
@@ -8,6 +8,6 @@ export { ValueAliasesResource } from './valueAliases';
8
8
  export { ConfigResource } from './config';
9
9
  export { UploadsResource } from './uploads';
10
10
  export { VolumeIntelligenceError, NotFoundError, UnauthorizedError, ForbiddenError, } from './errors';
11
- export type { VolumeIntelligenceClientConfig, ProgramView, ProgramWithVolumes, MonthlyVolume, ListActiveProgramsOptions, ListProgramsForMatchingOptions, ForecastEnvelope, ProgramList, } from './types';
11
+ export type { VolumeIntelligenceClientConfig, ProgramView, ProgramWithVolumes, MonthlyVolume, ListActiveProgramsOptions, ListProgramsForMatchingOptions, ForecastEnvelope, ProgramList, ProgramMode, } from './types';
12
12
  export type { SourceLayout, VolumeSourceKind, VolumeSource, VolumeSourceSegment, SourceWithSegments, TenantVolumeConfig, CreateSourceInput, UpdateSourceInput, CreateSegmentInput, DetectSegmentsResult, CreateUploadInput, SourceTemplateSummary, ActivateSourceResult, ClearSourceDataResult, SegmentMappingCategory, SegmentMappingRow, SegmentMappingCategoryKeys, SegmentMappingKeys, SegmentMappingEntry, SourceValueAlias, ValueAliasEntry, RelinkResult, UploadStatus, Upload, UploadError, UploadListParams, UploadListResponse, UploadErrorListParams, UploadErrorListResponse, UploadWithErrors, } from './adminTypes';
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,8BAA8B,EAC9B,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,8BAA8B,EAC9B,gBAAgB,EAChB,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,YAAY,EAEV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,8BAA8B,EAC9B,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,8BAA8B,EAC9B,gBAAgB,EAChB,WAAW,EACX,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,YAAY,EAEV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"programs.d.ts","sourceRoot":"","sources":["../src/programs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,EAG/B,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAEhD;mEAC+D;IACzD,UAAU,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAa7E;mFAC+E;IACzE,eAAe,CAAC,OAAO,CAAC,EAAE,8BAA8B,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;CAY/F"}
1
+ {"version":3,"file":"programs.d.ts","sourceRoot":"","sources":["../src/programs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,EAG/B,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAEhD;mEAC+D;IACzD,UAAU,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAc7E;mFAC+E;IACzE,eAAe,CAAC,OAAO,CAAC,EAAE,8BAA8B,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;CAa/F"}
package/dist/programs.js CHANGED
@@ -18,6 +18,8 @@ class ProgramsResource {
18
18
  if (options?.minForwardAnnual !== undefined) {
19
19
  query.minForwardAnnual = String(options.minForwardAnnual);
20
20
  }
21
+ if (options?.mode)
22
+ query.mode = options.mode;
21
23
  const res = await this.http.request({
22
24
  method: 'GET',
23
25
  path: '/v1/programs',
@@ -31,6 +33,7 @@ class ProgramsResource {
31
33
  const query = {
32
34
  nameplate: options?.nameplate,
33
35
  oem: options?.oem,
36
+ mode: options?.mode,
34
37
  };
35
38
  const res = await this.http.request({
36
39
  method: 'GET',
@@ -1 +1 @@
1
- {"version":3,"file":"programs.js","sourceRoot":"","sources":["../src/programs.ts"],"names":[],"mappings":";;;AAUA;;;;GAIG;AACH,MAAa,gBAAgB;IACE;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;mEAC+D;IAC/D,KAAK,CAAC,UAAU,CAAC,OAAmC;QAClD,MAAM,KAAK,GAAuC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QACzE,IAAI,OAAO,EAAE,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC5C,KAAK,CAAC,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAA6C;YAC9E,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,cAAc;YACpB,KAAK;SACN,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;IACxB,CAAC;IAED;mFAC+E;IAC/E,KAAK,CAAC,eAAe,CAAC,OAAwC;QAC5D,MAAM,KAAK,GAAuC;YAChD,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,GAAG,EAAE,OAAO,EAAE,GAAG;SAClB,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAoD;YACrF,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,yBAAyB;YAC/B,KAAK;SACN,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;IACxB,CAAC;CACF;AAhCD,4CAgCC"}
1
+ {"version":3,"file":"programs.js","sourceRoot":"","sources":["../src/programs.ts"],"names":[],"mappings":";;;AAUA;;;;GAIG;AACH,MAAa,gBAAgB;IACE;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;mEAC+D;IAC/D,KAAK,CAAC,UAAU,CAAC,OAAmC;QAClD,MAAM,KAAK,GAAuC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QACzE,IAAI,OAAO,EAAE,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC5C,KAAK,CAAC,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,OAAO,EAAE,IAAI;YAAE,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAA6C;YAC9E,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,cAAc;YACpB,KAAK;SACN,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;IACxB,CAAC;IAED;mFAC+E;IAC/E,KAAK,CAAC,eAAe,CAAC,OAAwC;QAC5D,MAAM,KAAK,GAAuC;YAChD,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,GAAG,EAAE,OAAO,EAAE,GAAG;YACjB,IAAI,EAAE,OAAO,EAAE,IAAI;SACpB,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAoD;YACrF,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,yBAAyB;YAC/B,KAAK;SACN,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;IACxB,CAAC;CACF;AAlCD,4CAkCC"}
package/dist/types.d.ts CHANGED
@@ -52,15 +52,31 @@ export interface ProgramWithVolumes {
52
52
  eop: string | null;
53
53
  monthlyVolumes: MonthlyVolume[];
54
54
  }
55
+ /**
56
+ * Projection mode (an OVERRIDE — most consumers should omit it and take the
57
+ * default). VI returns the best data it has per program:
58
+ * - `best` (default): per-criterion best-effort — reconciled (cfi-ai-hub
59
+ * identity + ML curve) where the criterion is bound + predicted, else the
60
+ * raw source projection (uploaded vendor volume + source identity). Never
61
+ * empty just because a tenant isn't fully reconciled.
62
+ * - `reconciled`: strict analytical — only cfi-ai-hub-bound programs (for VI's
63
+ * own analytical surfaces).
64
+ * - `raw`: force the source-only projection.
65
+ */
66
+ export type ProgramMode = 'best' | 'reconciled' | 'raw';
55
67
  export interface ListActiveProgramsOptions {
56
68
  /** Only return programs whose 12-month forward volume is at least this. */
57
69
  minForwardAnnual?: number;
70
+ /** Override the projection mode. Omit for `best` (recommended) — VI decides. */
71
+ mode?: ProgramMode;
58
72
  }
59
73
  export interface ListProgramsForMatchingOptions {
60
74
  /** Coarse server-side pre-filters to bound payload. Consumers still apply
61
75
  * their own match logic over the returned candidates. */
62
76
  nameplate?: string;
63
77
  oem?: string;
78
+ /** Override the projection mode. Omit for `best` (recommended). */
79
+ mode?: ProgramMode;
64
80
  }
65
81
  /** Forecast wraps every handler return in `{ data, meta }`. */
66
82
  export interface ForecastEnvelope<T> {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,8BAA8B;IAC7C;oDACgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB;;6BAEyB;IACzB,QAAQ,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,8BAA8B;IAC7C;8DAC0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAED,oDAAoD;AACpD,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,EAAE,CAAC;CACZ"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,8BAA8B;IAC7C;oDACgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB;;6BAEyB;IACzB,QAAQ,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,yBAAyB;IACxC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,8BAA8B;IAC7C;8DAC0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAED,oDAAoD;AACpD,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,EAAE,CAAC;CACZ"}
package/package.json CHANGED
@@ -1,29 +1,29 @@
1
- {
2
- "name": "@campfire-interactive/volume-intelligence-client",
3
- "version": "0.3.0",
4
- "description": "TypeScript client for Volume Intelligence (the platform's volume data plane)",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "files": [
8
- "dist"
9
- ],
10
- "scripts": {
11
- "build": "tsc",
12
- "clean": "rm -rf dist"
13
- },
14
- "repository": {
15
- "type": "git",
16
- "url": "https://github.com/Campfire-Interactive/packages.git"
17
- },
18
- "publishConfig": {
19
- "registry": "https://registry.npmjs.org",
20
- "access": "public"
21
- },
22
- "devDependencies": {
23
- "@types/node": "^25.5.0",
24
- "typescript": "^5.3.3"
25
- },
26
- "engines": {
27
- "node": ">=18.0.0"
28
- }
29
- }
1
+ {
2
+ "name": "@campfire-interactive/volume-intelligence-client",
3
+ "version": "0.5.0",
4
+ "description": "TypeScript client for Volume Intelligence (the platform's volume data plane)",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "clean": "rm -rf dist"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/Campfire-Interactive/packages.git"
17
+ },
18
+ "publishConfig": {
19
+ "registry": "https://registry.npmjs.org",
20
+ "access": "public"
21
+ },
22
+ "devDependencies": {
23
+ "@types/node": "^25.5.0",
24
+ "typescript": "^5.3.3"
25
+ },
26
+ "engines": {
27
+ "node": ">=18.0.0"
28
+ }
29
+ }