@lobu/core 6.0.1 → 6.1.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/__tests__/errors.test.d.ts +2 -0
- package/dist/__tests__/errors.test.d.ts.map +1 -0
- package/dist/__tests__/errors.test.js +185 -0
- package/dist/__tests__/errors.test.js.map +1 -0
- package/dist/__tests__/lobu-toml-schema.test.d.ts +2 -0
- package/dist/__tests__/lobu-toml-schema.test.d.ts.map +1 -0
- package/dist/__tests__/lobu-toml-schema.test.js +65 -0
- package/dist/__tests__/lobu-toml-schema.test.js.map +1 -0
- package/dist/__tests__/retry.test.js +87 -0
- package/dist/__tests__/retry.test.js.map +1 -1
- package/dist/__tests__/utils-lock.test.d.ts +2 -0
- package/dist/__tests__/utils-lock.test.d.ts.map +1 -0
- package/dist/__tests__/utils-lock.test.js +82 -0
- package/dist/__tests__/utils-lock.test.js.map +1 -0
- package/dist/__tests__/worker-auth.test.d.ts +2 -0
- package/dist/__tests__/worker-auth.test.d.ts.map +1 -0
- package/dist/__tests__/worker-auth.test.js +277 -0
- package/dist/__tests__/worker-auth.test.js.map +1 -0
- package/dist/agent-store.d.ts +6 -16
- package/dist/agent-store.d.ts.map +1 -1
- package/dist/agent-store.js +2 -19
- package/dist/agent-store.js.map +1 -1
- package/dist/api-types.d.ts +1 -12
- package/dist/api-types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/instruction-provider.d.ts +20 -0
- package/dist/instruction-provider.d.ts.map +1 -0
- package/dist/instruction-provider.js +30 -0
- package/dist/instruction-provider.js.map +1 -0
- package/dist/integration-types.d.ts +1 -1
- package/dist/integration-types.js +1 -1
- package/dist/lobu-toml-schema.d.ts +19 -28
- package/dist/lobu-toml-schema.d.ts.map +1 -1
- package/dist/lobu-toml-schema.js +9 -5
- package/dist/lobu-toml-schema.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/utils/json.d.ts +12 -0
- package/dist/utils/json.d.ts.map +1 -1
- package/dist/utils/json.js +46 -0
- package/dist/utils/json.js.map +1 -1
- package/dist/utils/retry.d.ts +26 -16
- package/dist/utils/retry.d.ts.map +1 -1
- package/dist/utils/retry.js +33 -21
- package/dist/utils/retry.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction-provider.js","sourceRoot":"","sources":["../src/instruction-provider.ts"],"names":[],"mappings":";;;AAAA,qCAAwC;AAGxC,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,sBAAsB,CAAC,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,MAAsB,uBAAuB;IAI3C,KAAK,CAAC,eAAe,CAAC,OAA2B;QAC/C,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,IAAI,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACrE,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CAKF;AAhBD,0DAgBC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Shared types for the integration system.
|
|
3
3
|
*
|
|
4
4
|
* OAuth credential management for third-party APIs (GitHub, Google, etc.)
|
|
5
|
-
* is handled by
|
|
5
|
+
* is handled by Lobu.
|
|
6
6
|
*/
|
|
7
7
|
import type { ProviderConfigEntry } from "./provider-config-types";
|
|
8
8
|
export interface ProviderRegistryEntry {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Shared types for the integration system.
|
|
4
4
|
*
|
|
5
5
|
* OAuth credential management for third-party APIs (GitHub, Google, etc.)
|
|
6
|
-
* is handled by
|
|
6
|
+
* is handled by Lobu.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
//# sourceMappingURL=integration-types.js.map
|
|
@@ -185,7 +185,7 @@ declare const agentEntrySchema: z.ZodObject<{
|
|
|
185
185
|
nix_packages: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
186
186
|
}, z.core.$strip>>;
|
|
187
187
|
}, z.core.$strip>;
|
|
188
|
-
declare const
|
|
188
|
+
declare const memorySchema: z.ZodObject<{
|
|
189
189
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
190
190
|
org: z.ZodOptional<z.ZodString>;
|
|
191
191
|
name: z.ZodOptional<z.ZodString>;
|
|
@@ -196,21 +196,11 @@ declare const owlettoMemorySchema: z.ZodObject<{
|
|
|
196
196
|
}>>;
|
|
197
197
|
models: z.ZodOptional<z.ZodString>;
|
|
198
198
|
data: z.ZodOptional<z.ZodString>;
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
203
|
-
org: z.ZodOptional<z.ZodString>;
|
|
204
|
-
name: z.ZodOptional<z.ZodString>;
|
|
205
|
-
description: z.ZodOptional<z.ZodString>;
|
|
206
|
-
visibility: z.ZodOptional<z.ZodEnum<{
|
|
207
|
-
public: "public";
|
|
208
|
-
private: "private";
|
|
209
|
-
}>>;
|
|
210
|
-
models: z.ZodOptional<z.ZodString>;
|
|
211
|
-
data: z.ZodOptional<z.ZodString>;
|
|
199
|
+
schema: z.ZodOptional<z.ZodObject<{
|
|
200
|
+
entity_types: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
201
|
+
relationship_types: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
212
202
|
}, z.core.$strip>>;
|
|
213
|
-
}, z.core.$
|
|
203
|
+
}, z.core.$strict>;
|
|
214
204
|
export declare const lobuConfigSchema: z.ZodObject<{
|
|
215
205
|
agents: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
216
206
|
name: z.ZodString;
|
|
@@ -294,19 +284,21 @@ export declare const lobuConfigSchema: z.ZodObject<{
|
|
|
294
284
|
}, z.core.$strip>>;
|
|
295
285
|
}, z.core.$strip>>;
|
|
296
286
|
memory: z.ZodOptional<z.ZodObject<{
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
287
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
288
|
+
org: z.ZodOptional<z.ZodString>;
|
|
289
|
+
name: z.ZodOptional<z.ZodString>;
|
|
290
|
+
description: z.ZodOptional<z.ZodString>;
|
|
291
|
+
visibility: z.ZodOptional<z.ZodEnum<{
|
|
292
|
+
public: "public";
|
|
293
|
+
private: "private";
|
|
294
|
+
}>>;
|
|
295
|
+
models: z.ZodOptional<z.ZodString>;
|
|
296
|
+
data: z.ZodOptional<z.ZodString>;
|
|
297
|
+
schema: z.ZodOptional<z.ZodObject<{
|
|
298
|
+
entity_types: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
299
|
+
relationship_types: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
308
300
|
}, z.core.$strip>>;
|
|
309
|
-
}, z.core.$
|
|
301
|
+
}, z.core.$strict>>;
|
|
310
302
|
}, z.core.$strip>;
|
|
311
303
|
export type LobuTomlConfig = z.infer<typeof lobuConfigSchema>;
|
|
312
304
|
export type AgentEntry = z.infer<typeof agentEntrySchema>;
|
|
@@ -318,7 +310,6 @@ export type NetworkEntry = z.infer<typeof networkSchema>;
|
|
|
318
310
|
export type EgressEntry = z.infer<typeof egressSchema>;
|
|
319
311
|
export type ToolsEntry = z.infer<typeof toolsSchema>;
|
|
320
312
|
export type WorkerEntry = z.infer<typeof workerSchema>;
|
|
321
|
-
export type OwlettoMemoryEntry = z.infer<typeof owlettoMemorySchema>;
|
|
322
313
|
export type MemoryEntry = z.infer<typeof memorySchema>;
|
|
323
314
|
export {};
|
|
324
315
|
//# sourceMappingURL=lobu-toml-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lobu-toml-schema.d.ts","sourceRoot":"","sources":["../src/lobu-toml-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,QAAA,MAAM,cAAc;;;;;iBAWhB,CAAC;AAIL,QAAA,MAAM,cAAc;;;;iBAgBlB,CAAC;AAaH,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;iBAsBnB,CAAC;AAIH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;iBAEhB,CAAC;AAYH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;GA4Bd,CAAC;AAIN,QAAA,MAAM,YAAY;;;iBAKhB,CAAC;AAmBH,QAAA,MAAM,WAAW;;;;;iBAef,CAAC;AAIH,QAAA,MAAM,YAAY;;iBAEhB,CAAC;AAIH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBpB,CAAC;
|
|
1
|
+
{"version":3,"file":"lobu-toml-schema.d.ts","sourceRoot":"","sources":["../src/lobu-toml-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,QAAA,MAAM,cAAc;;;;;iBAWhB,CAAC;AAIL,QAAA,MAAM,cAAc;;;;iBAgBlB,CAAC;AAaH,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;iBAsBnB,CAAC;AAIH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;iBAEhB,CAAC;AAYH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;GA4Bd,CAAC;AAIN,QAAA,MAAM,YAAY;;;iBAKhB,CAAC;AAmBH,QAAA,MAAM,WAAW;;;;;iBAef,CAAC;AAIH,QAAA,MAAM,YAAY;;iBAEhB,CAAC;AAIH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBpB,CAAC;AASH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;kBAWP,CAAC;AAIZ,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAG3B,CAAC;AAIH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC3D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACzD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACvD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACrD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
package/dist/lobu-toml-schema.js
CHANGED
|
@@ -172,7 +172,12 @@ const agentEntrySchema = zod_1.z.object({
|
|
|
172
172
|
worker: workerSchema.optional(),
|
|
173
173
|
});
|
|
174
174
|
// ── Memory ─────────────────────────────────────────────────────────────────
|
|
175
|
-
const
|
|
175
|
+
const memoryInlineSchema = zod_1.z.object({
|
|
176
|
+
entity_types: zod_1.z.array(zod_1.z.unknown()).optional(),
|
|
177
|
+
relationship_types: zod_1.z.array(zod_1.z.unknown()).optional(),
|
|
178
|
+
});
|
|
179
|
+
const memorySchema = zod_1.z
|
|
180
|
+
.object({
|
|
176
181
|
enabled: zod_1.z.boolean().optional(),
|
|
177
182
|
org: zod_1.z.string().optional(),
|
|
178
183
|
name: zod_1.z.string().optional(),
|
|
@@ -180,10 +185,9 @@ const owlettoMemorySchema = zod_1.z.object({
|
|
|
180
185
|
visibility: zod_1.z.enum(["public", "private"]).optional(),
|
|
181
186
|
models: zod_1.z.string().optional(),
|
|
182
187
|
data: zod_1.z.string().optional(),
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
});
|
|
188
|
+
schema: memoryInlineSchema.optional(),
|
|
189
|
+
})
|
|
190
|
+
.strict();
|
|
187
191
|
// ── Top Level ───────────────────────────────────────────────────────────────
|
|
188
192
|
exports.lobuConfigSchema = zod_1.z.object({
|
|
189
193
|
agents: zod_1.z.record(zod_1.z.string().regex(/^[a-z0-9][a-z0-9-]*$/), agentEntrySchema),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lobu-toml-schema.js","sourceRoot":"","sources":["../src/lobu-toml-schema.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,6BAAwB;AACxB,6DAAkE;AAElE,+EAA+E;AAE/E,MAAM,cAAc,GAAG,OAAC;KACrB,MAAM,CAAC;IACN,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,uDAAuD;IACvD,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,4CAA4C;IAC5C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE;IACvC,OAAO,EAAE,wDAAwD;CAClE,CAAC,CAAC;AAEL,+EAA+E;AAE/E,MAAM,cAAc,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB;;;;;OAKG;IACH,IAAI,EAAE,OAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,sBAAsB,EAAE;QAC7B,OAAO,EAAE,2DAA2D;KACrE,CAAC;SACD,QAAQ,EAAE;IACb,oEAAoE;IACpE,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC;CACzC,CAAC,CAAC;AAEH,+EAA+E;AAE/E,MAAM,cAAc,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC,0BAA0B,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/B;;;;;OAKG;IACH,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5D,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,GAAG,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChD,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE;IAChC;;;;;;OAMG;IACH,UAAU,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC;AAEH,+EAA+E;AAE/E,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5B,GAAG,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAC;AAEH,+EAA+E;AAE/E,MAAM,gBAAgB,GAAG,OAAC,CAAC,KAAK,CAAC;IAC/B,OAAC,CAAC,MAAM,EAAE;IACV,OAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;QAClB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,OAAC;KACpB,MAAM,CAAC;IACN,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC;;;;OAIG;IACH,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IAC3C;;;OAGG;IACH,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC;KACD,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvB,OAAO,EAAE,IAAA,yCAAuB,EAAC,OAAO,CAAC,OAAO,CAAC;IACjD,MAAM,EAAE,IAAA,yCAAuB,EAAC,OAAO,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAClC,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;QACnB,CAAC,CAAC;YACE,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/C,CACN;IACD,MAAM,EAAE,OAAO,CAAC,MAAM;CACvB,CAAC,CAAC,CAAC;AAEN,+EAA+E;AAE/E,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5B,qEAAqE;IACrE,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,+DAA+D;IAC/D,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,qDAAqD,CAAC;AAC/E,MAAM,oBAAoB,GAAG,OAAC;KAC3B,MAAM,EAAE;KACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAC/C,OAAO,EACL,8FAA8F;CACjG,CAAC,CAAC;AAEL,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B;;;;OAIG;IACH,YAAY,EAAE,OAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;IACtD;;;OAGG;IACH,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC,6EAA6E;IAC7E,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,+EAA+E;AAE/E,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5B,YAAY,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC;AAEH,+EAA+E;AAE/E,MAAM,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,gFAAgF;IAChF,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE;IACf,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9C,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9C,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC7B;;;OAGG;IACH,UAAU,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,8EAA8E;AAE9E,MAAM,
|
|
1
|
+
{"version":3,"file":"lobu-toml-schema.js","sourceRoot":"","sources":["../src/lobu-toml-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -314,7 +314,7 @@ export interface ToolsConfig {
|
|
|
314
314
|
* - "tools" (default): each MCP tool is registered as a first-class
|
|
315
315
|
* function-call tool with its JSON Schema.
|
|
316
316
|
* - "cli": MCP servers are exposed as one `just-bash` command per server
|
|
317
|
-
* (e.g. `
|
|
317
|
+
* (e.g. `lobu search_memory <<<'{...}'`). Keeps the first-class
|
|
318
318
|
* tool list small; relies on the sandboxed bash to invoke MCP tools.
|
|
319
319
|
*/
|
|
320
320
|
mcpExposure?: "tools" | "cli";
|
package/dist/utils/json.d.ts
CHANGED
|
@@ -8,4 +8,16 @@ export declare function safeJsonParse<T = unknown>(data: string, fallback?: T |
|
|
|
8
8
|
* Returns null on stringify failure instead of throwing
|
|
9
9
|
*/
|
|
10
10
|
export declare function safeJsonStringify(value: unknown): string | null;
|
|
11
|
+
/**
|
|
12
|
+
* Round-trip a value through JSON serialization to convert bigint values
|
|
13
|
+
* to plain numbers or strings. Useful for REST API responses where the value
|
|
14
|
+
* must be a plain JSON-compatible object (not a string).
|
|
15
|
+
*/
|
|
16
|
+
export declare function toJsonSafe<T>(value: T): T;
|
|
17
|
+
/**
|
|
18
|
+
* Parse a value that may be a JSON-encoded object (e.g. a jsonb column returned
|
|
19
|
+
* as a string) into a plain object. Returns `{}` when the input is falsy,
|
|
20
|
+
* not valid JSON, or not a plain object.
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseJsonObject(value: unknown): Record<string, unknown>;
|
|
11
23
|
//# sourceMappingURL=json.d.ts.map
|
package/dist/utils/json.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,OAAO,EACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,CAAC,GAAG,IAAW,GACxB,CAAC,GAAG,IAAI,CAUV;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAS/D"}
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,OAAO,EACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,CAAC,GAAG,IAAW,GACxB,CAAC,GAAG,IAAI,CAUV;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAS/D;AAgBD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAevE"}
|
package/dist/utils/json.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.safeJsonParse = safeJsonParse;
|
|
4
4
|
exports.safeJsonStringify = safeJsonStringify;
|
|
5
|
+
exports.toJsonSafe = toJsonSafe;
|
|
6
|
+
exports.parseJsonObject = parseJsonObject;
|
|
5
7
|
const logger_1 = require("../logger");
|
|
6
8
|
const logger = (0, logger_1.createLogger)("json-utils");
|
|
7
9
|
/**
|
|
@@ -35,4 +37,48 @@ function safeJsonStringify(value) {
|
|
|
35
37
|
return null;
|
|
36
38
|
}
|
|
37
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Stringify a value to JSON, converting bigint values to numbers (when safe)
|
|
42
|
+
* or strings. Use this when serializing query results that may contain bigint columns.
|
|
43
|
+
*/
|
|
44
|
+
function stringifyBigIntSafe(value) {
|
|
45
|
+
return JSON.stringify(value, (_key, candidate) => {
|
|
46
|
+
if (typeof candidate === "bigint") {
|
|
47
|
+
const numeric = Number(candidate);
|
|
48
|
+
return Number.isSafeInteger(numeric) ? numeric : candidate.toString();
|
|
49
|
+
}
|
|
50
|
+
return candidate;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Round-trip a value through JSON serialization to convert bigint values
|
|
55
|
+
* to plain numbers or strings. Useful for REST API responses where the value
|
|
56
|
+
* must be a plain JSON-compatible object (not a string).
|
|
57
|
+
*/
|
|
58
|
+
function toJsonSafe(value) {
|
|
59
|
+
return JSON.parse(stringifyBigIntSafe(value));
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Parse a value that may be a JSON-encoded object (e.g. a jsonb column returned
|
|
63
|
+
* as a string) into a plain object. Returns `{}` when the input is falsy,
|
|
64
|
+
* not valid JSON, or not a plain object.
|
|
65
|
+
*/
|
|
66
|
+
function parseJsonObject(value) {
|
|
67
|
+
if (!value)
|
|
68
|
+
return {};
|
|
69
|
+
if (typeof value === "string") {
|
|
70
|
+
try {
|
|
71
|
+
const parsed = JSON.parse(value);
|
|
72
|
+
return parsed && typeof parsed === "object" && !Array.isArray(parsed)
|
|
73
|
+
? parsed
|
|
74
|
+
: {};
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return {};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return typeof value === "object" && !Array.isArray(value)
|
|
81
|
+
? value
|
|
82
|
+
: {};
|
|
83
|
+
}
|
|
38
84
|
//# sourceMappingURL=json.js.map
|
package/dist/utils/json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":";;AAQA,sCAaC;AAMD,8CASC;
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":";;AAQA,sCAaC;AAMD,8CASC;AAqBD,gCAEC;AAOD,0CAeC;AAjFD,sCAAyC;AAEzC,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,YAAY,CAAC,CAAC;AAE1C;;;GAGG;AACH,SAAgB,aAAa,CAC3B,IAAY,EACZ,WAAqB,IAAI;IAEzB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAChC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7D,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;SACpC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;YACpC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAC/C,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAClC,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAI,KAAQ;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAM,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBACnE,CAAC,CAAE,MAAkC;gBACrC,CAAC,CAAC,EAAE,CAAC;QACT,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACvD,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC"}
|
package/dist/utils/retry.d.ts
CHANGED
|
@@ -1,17 +1,32 @@
|
|
|
1
1
|
export interface RetryOptions {
|
|
2
2
|
maxRetries?: number;
|
|
3
3
|
baseDelay?: number;
|
|
4
|
+
/** Maximum delay between retries (caps the computed delay before jitter). */
|
|
5
|
+
maxDelay?: number;
|
|
4
6
|
strategy?: "exponential" | "linear";
|
|
5
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Jitter mode:
|
|
9
|
+
* - `false` (default): no jitter
|
|
10
|
+
* - `true`: add a uniform random 0-1000ms to each delay (additive jitter)
|
|
11
|
+
* - `"full"`: multiply the computed delay by a uniform random in [1, 2)
|
|
12
|
+
* (equivalent to p-retry's `randomize: true`)
|
|
13
|
+
*/
|
|
14
|
+
jitter?: boolean | "full";
|
|
15
|
+
/**
|
|
16
|
+
* Predicate to decide whether an error is retryable. If it returns `false`,
|
|
17
|
+
* the loop aborts immediately and rethrows the error. Defaults to retrying
|
|
18
|
+
* every error.
|
|
19
|
+
*/
|
|
20
|
+
shouldRetry?: (error: Error, attempt: number) => boolean;
|
|
6
21
|
onRetry?: (attempt: number, error: Error) => void;
|
|
7
22
|
}
|
|
8
23
|
/**
|
|
9
|
-
* Retry a function with configurable backoff strategy
|
|
24
|
+
* Retry a function with configurable backoff strategy.
|
|
10
25
|
*
|
|
11
26
|
* @param fn - The async function to retry
|
|
12
27
|
* @param options - Retry configuration
|
|
13
28
|
* @returns The result of the function
|
|
14
|
-
* @throws The last error if all retries fail
|
|
29
|
+
* @throws The last error if all retries fail or `shouldRetry` returns `false`.
|
|
15
30
|
*
|
|
16
31
|
* @example
|
|
17
32
|
* ```typescript
|
|
@@ -21,19 +36,14 @@ export interface RetryOptions {
|
|
|
21
36
|
* { maxRetries: 3, baseDelay: 1000 }
|
|
22
37
|
* );
|
|
23
38
|
*
|
|
24
|
-
* //
|
|
25
|
-
* const result = await retryWithBackoff(
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* onRetry: (attempt, error) => {
|
|
33
|
-
* logger.warn(`Attempt ${attempt} failed: ${error.message}`);
|
|
34
|
-
* }
|
|
35
|
-
* }
|
|
36
|
-
* );
|
|
39
|
+
* // HTTP-style retry with full jitter, max delay cap, and a predicate
|
|
40
|
+
* const result = await retryWithBackoff(() => fetch(url), {
|
|
41
|
+
* maxRetries: 5,
|
|
42
|
+
* baseDelay: 1000,
|
|
43
|
+
* maxDelay: 16000,
|
|
44
|
+
* jitter: "full",
|
|
45
|
+
* shouldRetry: (error) => !/(401|403|404)/.test(error.message),
|
|
46
|
+
* });
|
|
37
47
|
* ```
|
|
38
48
|
*/
|
|
39
49
|
export declare function retryWithBackoff<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAC;IACpC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACzD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CA+DZ"}
|
package/dist/utils/retry.js
CHANGED
|
@@ -4,12 +4,12 @@ exports.retryWithBackoff = retryWithBackoff;
|
|
|
4
4
|
const logger_1 = require("../logger");
|
|
5
5
|
const logger = (0, logger_1.createLogger)("retry");
|
|
6
6
|
/**
|
|
7
|
-
* Retry a function with configurable backoff strategy
|
|
7
|
+
* Retry a function with configurable backoff strategy.
|
|
8
8
|
*
|
|
9
9
|
* @param fn - The async function to retry
|
|
10
10
|
* @param options - Retry configuration
|
|
11
11
|
* @returns The result of the function
|
|
12
|
-
* @throws The last error if all retries fail
|
|
12
|
+
* @throws The last error if all retries fail or `shouldRetry` returns `false`.
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
15
|
* ```typescript
|
|
@@ -19,23 +19,18 @@ const logger = (0, logger_1.createLogger)("retry");
|
|
|
19
19
|
* { maxRetries: 3, baseDelay: 1000 }
|
|
20
20
|
* );
|
|
21
21
|
*
|
|
22
|
-
* //
|
|
23
|
-
* const result = await retryWithBackoff(
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* onRetry: (attempt, error) => {
|
|
31
|
-
* logger.warn(`Attempt ${attempt} failed: ${error.message}`);
|
|
32
|
-
* }
|
|
33
|
-
* }
|
|
34
|
-
* );
|
|
22
|
+
* // HTTP-style retry with full jitter, max delay cap, and a predicate
|
|
23
|
+
* const result = await retryWithBackoff(() => fetch(url), {
|
|
24
|
+
* maxRetries: 5,
|
|
25
|
+
* baseDelay: 1000,
|
|
26
|
+
* maxDelay: 16000,
|
|
27
|
+
* jitter: "full",
|
|
28
|
+
* shouldRetry: (error) => !/(401|403|404)/.test(error.message),
|
|
29
|
+
* });
|
|
35
30
|
* ```
|
|
36
31
|
*/
|
|
37
32
|
async function retryWithBackoff(fn, options = {}) {
|
|
38
|
-
const { maxRetries = 3, baseDelay = 1000, strategy = "exponential", jitter = false, onRetry, } = options;
|
|
33
|
+
const { maxRetries = 3, baseDelay = 1000, maxDelay, strategy = "exponential", jitter = false, shouldRetry, onRetry, } = options;
|
|
39
34
|
let lastError;
|
|
40
35
|
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
41
36
|
try {
|
|
@@ -43,14 +38,31 @@ async function retryWithBackoff(fn, options = {}) {
|
|
|
43
38
|
}
|
|
44
39
|
catch (error) {
|
|
45
40
|
lastError = error;
|
|
41
|
+
// Allow caller to abort on non-retryable errors.
|
|
42
|
+
if (shouldRetry && !shouldRetry(lastError, attempt + 1)) {
|
|
43
|
+
throw lastError;
|
|
44
|
+
}
|
|
46
45
|
if (attempt < maxRetries) {
|
|
47
|
-
// Calculate delay based on strategy
|
|
48
|
-
|
|
46
|
+
// Calculate base delay based on strategy
|
|
47
|
+
let delay = strategy === "exponential"
|
|
49
48
|
? baseDelay * 2 ** attempt
|
|
50
49
|
: baseDelay * (attempt + 1);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
if (maxDelay !== undefined) {
|
|
51
|
+
delay = Math.min(delay, maxDelay);
|
|
52
|
+
}
|
|
53
|
+
// Apply jitter
|
|
54
|
+
let finalDelay;
|
|
55
|
+
if (jitter === "full") {
|
|
56
|
+
// Multiplicative jitter: random in [1, 2) — matches p-retry randomize.
|
|
57
|
+
finalDelay = delay * (1 + Math.random());
|
|
58
|
+
}
|
|
59
|
+
else if (jitter === true) {
|
|
60
|
+
// Additive jitter: 0–1000ms.
|
|
61
|
+
finalDelay = delay + Math.random() * 1000;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
finalDelay = delay;
|
|
65
|
+
}
|
|
54
66
|
// Notify caller of retry
|
|
55
67
|
if (onRetry) {
|
|
56
68
|
onRetry(attempt + 1, lastError);
|
package/dist/utils/retry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":";;AAqDA,4CAkEC;AAvHD,sCAAyC;AAEzC,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,OAAO,CAAC,CAAC;AAyBrC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACI,KAAK,UAAU,gBAAgB,CACpC,EAAoB,EACpB,UAAwB,EAAE;IAE1B,MAAM,EACJ,UAAU,GAAG,CAAC,EACd,SAAS,GAAG,IAAI,EAChB,QAAQ,EACR,QAAQ,GAAG,aAAa,EACxB,MAAM,GAAG,KAAK,EACd,WAAW,EACX,OAAO,GACR,GAAG,OAAO,CAAC;IAEZ,IAAI,SAA4B,CAAC;IAEjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAc,CAAC;YAE3B,iDAAiD;YACjD,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;gBACxD,MAAM,SAAS,CAAC;YAClB,CAAC;YAED,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;gBACzB,yCAAyC;gBACzC,IAAI,KAAK,GACP,QAAQ,KAAK,aAAa;oBACxB,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,OAAO;oBAC1B,CAAC,CAAC,SAAS,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBAEhC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACpC,CAAC;gBAED,eAAe;gBACf,IAAI,UAAkB,CAAC;gBACvB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACtB,uEAAuE;oBACvE,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC3C,CAAC;qBAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBAC3B,6BAA6B;oBAC7B,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,KAAK,CAAC;gBACrB,CAAC;gBAED,yBAAyB;gBACzB,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,OAAO,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CACT,iBAAiB,OAAO,GAAG,CAAC,IAAI,UAAU,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAC9E,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,CAC7B,CAAC;gBACJ,CAAC;gBAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC"}
|