@cat-factory/integrations 0.90.0 → 0.91.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/modules/compose/compose-environment.logic.d.ts.map +1 -1
- package/dist/modules/compose/compose-environment.logic.js +50 -40
- package/dist/modules/compose/compose-environment.logic.js.map +1 -1
- package/dist/modules/environments/EnvironmentConnectionService.d.ts +0 -7
- package/dist/modules/environments/EnvironmentConnectionService.d.ts.map +1 -1
- package/dist/modules/environments/EnvironmentConnectionService.js +17 -91
- package/dist/modules/environments/EnvironmentConnectionService.js.map +1 -1
- package/dist/modules/environments/config-bootstrap.logic.d.ts +54 -0
- package/dist/modules/environments/config-bootstrap.logic.d.ts.map +1 -0
- package/dist/modules/environments/config-bootstrap.logic.js +112 -0
- package/dist/modules/environments/config-bootstrap.logic.js.map +1 -0
- package/dist/modules/environments/provision-detect.logic.d.ts.map +1 -1
- package/dist/modules/environments/provision-detect.logic.js +20 -5
- package/dist/modules/environments/provision-detect.logic.js.map +1 -1
- package/dist/modules/github/WebhookService.d.ts +2 -0
- package/dist/modules/github/WebhookService.d.ts.map +1 -1
- package/dist/modules/github/WebhookService.js +57 -54
- package/dist/modules/github/WebhookService.js.map +1 -1
- package/dist/modules/providers/ApiKeyService.d.ts +11 -0
- package/dist/modules/providers/ApiKeyService.d.ts.map +1 -1
- package/dist/modules/providers/ApiKeyService.js +28 -1
- package/dist/modules/providers/ApiKeyService.js.map +1 -1
- package/dist/modules/providers/ProviderSubscriptionService.d.ts +12 -0
- package/dist/modules/providers/ProviderSubscriptionService.d.ts.map +1 -1
- package/dist/modules/providers/ProviderSubscriptionService.js +32 -2
- package/dist/modules/providers/ProviderSubscriptionService.js.map +1 -1
- package/dist/modules/providers/providers.logic.d.ts +9 -3
- package/dist/modules/providers/providers.logic.d.ts.map +1 -1
- package/dist/modules/providers/providers.logic.js +16 -8
- package/dist/modules/providers/providers.logic.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderSubscriptionService.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/ProviderSubscriptionService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EAEX,mCAAmC,EACnC,YAAY,EACZ,kBAAkB,EACnB,MAAM,qBAAqB,CAAA;AAI5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAyB9D,MAAM,WAAW,uCAAuC;IACtD,mCAAmC,EAAE,mCAAmC,CAAA;IACxE,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,YAAY,EAAE,YAAY,CAAA;IAC1B,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,2DAA2D;AAC3D,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,kBAAkB,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"ProviderSubscriptionService.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/ProviderSubscriptionService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EAEX,mCAAmC,EACnC,YAAY,EACZ,kBAAkB,EACnB,MAAM,qBAAqB,CAAA;AAI5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAyB9D,MAAM,WAAW,uCAAuC;IACtD,mCAAmC,EAAE,mCAAmC,CAAA;IACxE,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,YAAY,EAAE,YAAY,CAAA;IAC1B,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,2DAA2D;AAC3D,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,kBAAkB,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,yFAAyF;AACzF,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,kBAAkB,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,2BAA2B;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,uCAAuC,EAAI;IAE9E,OAAO,KAAK,QAAQ,GAEnB;IAED;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAStB,wDAAwD;IAClD,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE;QAAE,MAAM,EAAE,kBAAkB,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAClE,OAAO,CAAC,uBAAuB,CAAC,CAiClC;IAED,sFAAsF;IAChF,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAQpC;IAED;;;;OAIG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAShF;IAED;;;;;OAKG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAChD,OAAO,CAAC,uBAAuB,CAAC,CAgBlC;IAED,oCAAoC;IAC9B,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhE;IAED;;;;;;;;;;;;OAYG;IACG,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAmBlC;IAED,oFAAoF;IAC9E,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GACnD,OAAO,CAAC,IAAI,CAAC,CAQf;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConflictError } from '@cat-factory/kernel';
|
|
1
|
+
import { ConflictError, NotFoundError } from '@cat-factory/kernel';
|
|
2
2
|
import { requireWorkspace } from '@cat-factory/kernel';
|
|
3
3
|
import { SUBSCRIPTION_VENDORS, isIndividualVendor } from '@cat-factory/kernel';
|
|
4
4
|
import { DEFAULT_USAGE_WINDOW_MS, chooseToken } from './providers.logic.js';
|
|
@@ -55,6 +55,8 @@ export class ProviderSubscriptionService {
|
|
|
55
55
|
inputTokens: 0,
|
|
56
56
|
outputTokens: 0,
|
|
57
57
|
requestCount: 0,
|
|
58
|
+
enabled: true,
|
|
59
|
+
isDefault: false,
|
|
58
60
|
deletedAt: null,
|
|
59
61
|
};
|
|
60
62
|
await this.deps.providerSubscriptionTokenRepository.add(record);
|
|
@@ -80,7 +82,33 @@ export class ProviderSubscriptionService {
|
|
|
80
82
|
if (isIndividualVendor(vendor))
|
|
81
83
|
return false;
|
|
82
84
|
const rows = await this.deps.providerSubscriptionTokenRepository.listByVendor(workspaceId, vendor);
|
|
83
|
-
|
|
85
|
+
// Only ENABLED tokens make a vendor "configured": an all-disabled pool would fail
|
|
86
|
+
// the lease, so it must not report as available to the executor's routing.
|
|
87
|
+
return rows.some((r) => r.enabled);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Enable/disable and/or (un)pin the default of a pool token. Both flags are optional;
|
|
91
|
+
* pinning a default clears any prior default of the same vendor, and un-pinning clears
|
|
92
|
+
* it only when THIS token was the default (so toggling an unrelated token off never
|
|
93
|
+
* disturbs the group's default). Returns the updated metadata.
|
|
94
|
+
*/
|
|
95
|
+
async updateToken(workspaceId, id, patch) {
|
|
96
|
+
const repo = this.deps.providerSubscriptionTokenRepository;
|
|
97
|
+
const existing = await repo.getById(workspaceId, id);
|
|
98
|
+
if (!existing) {
|
|
99
|
+
throw new NotFoundError('Subscription token', id);
|
|
100
|
+
}
|
|
101
|
+
if (patch.enabled !== undefined) {
|
|
102
|
+
await repo.setEnabled(workspaceId, id, patch.enabled);
|
|
103
|
+
}
|
|
104
|
+
if (patch.isDefault === true) {
|
|
105
|
+
await repo.setDefault(workspaceId, existing.vendor, id);
|
|
106
|
+
}
|
|
107
|
+
else if (patch.isDefault === false && existing.isDefault) {
|
|
108
|
+
await repo.setDefault(workspaceId, existing.vendor, null);
|
|
109
|
+
}
|
|
110
|
+
const updated = await repo.getById(workspaceId, id);
|
|
111
|
+
return toSummary(updated ?? existing);
|
|
84
112
|
}
|
|
85
113
|
/** Remove a token from the pool. */
|
|
86
114
|
async removeToken(workspaceId, id) {
|
|
@@ -125,6 +153,8 @@ function toSummary(record) {
|
|
|
125
153
|
inputTokens: record.inputTokens,
|
|
126
154
|
outputTokens: record.outputTokens,
|
|
127
155
|
requestCount: record.requestCount,
|
|
156
|
+
enabled: record.enabled,
|
|
157
|
+
isDefault: record.isDefault,
|
|
128
158
|
};
|
|
129
159
|
}
|
|
130
160
|
//# sourceMappingURL=ProviderSubscriptionService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderSubscriptionService.js","sourceRoot":"","sources":["../../../src/modules/providers/ProviderSubscriptionService.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"ProviderSubscriptionService.js","sourceRoot":"","sources":["../../../src/modules/providers/ProviderSubscriptionService.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,15 +9,21 @@ export interface PoolRotationRecord {
|
|
|
9
9
|
windowStartedAt: number | null;
|
|
10
10
|
lastUsedAt: number | null;
|
|
11
11
|
createdAt: number;
|
|
12
|
+
/** A disabled row is never leased. */
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
/** A pinned default (when enabled) is preferred over usage-aware rotation. */
|
|
15
|
+
isDefault: boolean;
|
|
12
16
|
}
|
|
13
17
|
/** Default rolling usage window (~5h) — mirrors subscription quota windows. */
|
|
14
18
|
export declare const DEFAULT_USAGE_WINDOW_MS: number;
|
|
15
19
|
/** Effective window usage for a row: counters reset once the window ages out. */
|
|
16
20
|
export declare function windowUsage(record: PoolRotationRecord, now: number, windowMs: number): number;
|
|
17
21
|
/**
|
|
18
|
-
* Choose the next row to lease from a
|
|
19
|
-
*
|
|
20
|
-
*
|
|
22
|
+
* Choose the next row to lease from a list of live pool rows. Disabled rows are
|
|
23
|
+
* ignored. A pinned default (an enabled `isDefault` row) wins outright — the oldest
|
|
24
|
+
* one if somehow several are flagged. Otherwise least window usage wins; ties break by
|
|
25
|
+
* least-recently-leased (nulls first = never leased), then oldest created. Returns null
|
|
26
|
+
* when no enabled row exists.
|
|
21
27
|
*/
|
|
22
28
|
export declare function chooseToken<T extends PoolRotationRecord>(records: T[], now: number, windowMs: number): T | null;
|
|
23
29
|
//# sourceMappingURL=providers.logic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/providers.logic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"providers.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/providers.logic.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,QAAqB,CAAA;AAEzD,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG7F;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,kBAAkB,EACtD,OAAO,EAAE,CAAC,EAAE,EACZ,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,CAAC,GAAG,IAAI,CAgBV"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// Pure rotation logic for usage-aware credential pools (subscription tokens AND
|
|
2
2
|
// direct-provider API keys), kept separate from the services so it can be
|
|
3
|
-
// unit-tested without a repository.
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
3
|
+
// unit-tested without a repository. Disabled rows are never chosen. A pinned default
|
|
4
|
+
// (an enabled `isDefault` row) always wins; otherwise the policy is usage-aware:
|
|
5
|
+
// prefer the row that has consumed the fewest tokens in the current rolling window,
|
|
6
|
+
// falling back to least-recently-leased (round-robin) and then oldest-created for ties
|
|
7
|
+
// and cold-start rows.
|
|
7
8
|
/** Default rolling usage window (~5h) — mirrors subscription quota windows. */
|
|
8
9
|
export const DEFAULT_USAGE_WINDOW_MS = 5 * 60 * 60 * 1000;
|
|
9
10
|
/** Effective window usage for a row: counters reset once the window ages out. */
|
|
@@ -13,14 +14,21 @@ export function windowUsage(record, now, windowMs) {
|
|
|
13
14
|
return record.inputTokens + record.outputTokens;
|
|
14
15
|
}
|
|
15
16
|
/**
|
|
16
|
-
* Choose the next row to lease from a
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* Choose the next row to lease from a list of live pool rows. Disabled rows are
|
|
18
|
+
* ignored. A pinned default (an enabled `isDefault` row) wins outright — the oldest
|
|
19
|
+
* one if somehow several are flagged. Otherwise least window usage wins; ties break by
|
|
20
|
+
* least-recently-leased (nulls first = never leased), then oldest created. Returns null
|
|
21
|
+
* when no enabled row exists.
|
|
19
22
|
*/
|
|
20
23
|
export function chooseToken(records, now, windowMs) {
|
|
24
|
+
const enabled = records.filter((r) => r.enabled);
|
|
25
|
+
const defaults = enabled.filter((r) => r.isDefault);
|
|
26
|
+
if (defaults.length > 0) {
|
|
27
|
+
return defaults.reduce((a, b) => (a.createdAt <= b.createdAt ? a : b));
|
|
28
|
+
}
|
|
21
29
|
let best = null;
|
|
22
30
|
let bestUsage = Number.POSITIVE_INFINITY;
|
|
23
|
-
for (const record of
|
|
31
|
+
for (const record of enabled) {
|
|
24
32
|
const usage = windowUsage(record, now, windowMs);
|
|
25
33
|
if (best === null || usage < bestUsage || (usage === bestUsage && isFresher(record, best))) {
|
|
26
34
|
best = record;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.logic.js","sourceRoot":"","sources":["../../../src/modules/providers/providers.logic.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"providers.logic.js","sourceRoot":"","sources":["../../../src/modules/providers/providers.logic.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0EAA0E;AAC1E,qFAAqF;AACrF,iFAAiF;AACjF,oFAAoF;AACpF,uFAAuF;AACvF,uBAAuB;AAmBvB,+EAA+E;AAC/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAEzD,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,MAA0B,EAAE,GAAW,EAAE,QAAgB;IACnF,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,eAAe,IAAI,QAAQ;QAAE,OAAO,CAAC,CAAA;IACxF,OAAO,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAA;AACjD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,OAAY,EACZ,GAAW,EACX,QAAgB;IAEhB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACnD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxE,CAAC;IACD,IAAI,IAAI,GAAa,IAAI,CAAA;IACzB,IAAI,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAA;IACxC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;QAChD,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,GAAG,SAAS,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YAC3F,IAAI,GAAG,MAAM,CAAA;YACb,SAAS,GAAG,KAAK,CAAA;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,6EAA6E;AAC7E,2DAA2D;AAC3D,SAAS,SAAS,CAAC,SAA6B,EAAE,OAA2B;IAC3E,MAAM,CAAC,GAAG,SAAS,CAAC,UAAU,CAAA;IAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAA;IAC5B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAA;QAC1B,IAAI,CAAC,IAAI,IAAI;YAAE,OAAO,KAAK,CAAA;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IACD,OAAO,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;AAChD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/integrations",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.91.1",
|
|
4
4
|
"description": "External-system integration domain logic for the Agent Architecture Board (GitHub, documents, tasks, environments, runners).",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -27,15 +27,15 @@
|
|
|
27
27
|
"ai": "^6.0.230",
|
|
28
28
|
"p-map": "^7.0.5",
|
|
29
29
|
"yaml": "^2.9.0",
|
|
30
|
-
"@cat-factory/contracts": "0.
|
|
31
|
-
"@cat-factory/kernel": "0.
|
|
30
|
+
"@cat-factory/contracts": "0.158.0",
|
|
31
|
+
"@cat-factory/kernel": "0.152.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"typescript": "7.0.2",
|
|
35
35
|
"undici": "^8.7.0",
|
|
36
36
|
"valibot": "^1.4.2",
|
|
37
37
|
"vitest": "^4.1.10",
|
|
38
|
-
"@cat-factory/caching": "0.10.
|
|
38
|
+
"@cat-factory/caching": "0.10.31"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "tsc -b tsconfig.build.json",
|