@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.
Files changed (48) hide show
  1. package/dist/__tests__/errors.test.d.ts +2 -0
  2. package/dist/__tests__/errors.test.d.ts.map +1 -0
  3. package/dist/__tests__/errors.test.js +185 -0
  4. package/dist/__tests__/errors.test.js.map +1 -0
  5. package/dist/__tests__/lobu-toml-schema.test.d.ts +2 -0
  6. package/dist/__tests__/lobu-toml-schema.test.d.ts.map +1 -0
  7. package/dist/__tests__/lobu-toml-schema.test.js +65 -0
  8. package/dist/__tests__/lobu-toml-schema.test.js.map +1 -0
  9. package/dist/__tests__/retry.test.js +87 -0
  10. package/dist/__tests__/retry.test.js.map +1 -1
  11. package/dist/__tests__/utils-lock.test.d.ts +2 -0
  12. package/dist/__tests__/utils-lock.test.d.ts.map +1 -0
  13. package/dist/__tests__/utils-lock.test.js +82 -0
  14. package/dist/__tests__/utils-lock.test.js.map +1 -0
  15. package/dist/__tests__/worker-auth.test.d.ts +2 -0
  16. package/dist/__tests__/worker-auth.test.d.ts.map +1 -0
  17. package/dist/__tests__/worker-auth.test.js +277 -0
  18. package/dist/__tests__/worker-auth.test.js.map +1 -0
  19. package/dist/agent-store.d.ts +6 -16
  20. package/dist/agent-store.d.ts.map +1 -1
  21. package/dist/agent-store.js +2 -19
  22. package/dist/agent-store.js.map +1 -1
  23. package/dist/api-types.d.ts +1 -12
  24. package/dist/api-types.d.ts.map +1 -1
  25. package/dist/index.d.ts +3 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +4 -2
  28. package/dist/index.js.map +1 -1
  29. package/dist/instruction-provider.d.ts +20 -0
  30. package/dist/instruction-provider.d.ts.map +1 -0
  31. package/dist/instruction-provider.js +30 -0
  32. package/dist/instruction-provider.js.map +1 -0
  33. package/dist/integration-types.d.ts +1 -1
  34. package/dist/integration-types.js +1 -1
  35. package/dist/lobu-toml-schema.d.ts +19 -28
  36. package/dist/lobu-toml-schema.d.ts.map +1 -1
  37. package/dist/lobu-toml-schema.js +9 -5
  38. package/dist/lobu-toml-schema.js.map +1 -1
  39. package/dist/types.d.ts +1 -1
  40. package/dist/utils/json.d.ts +12 -0
  41. package/dist/utils/json.d.ts.map +1 -1
  42. package/dist/utils/json.js +46 -0
  43. package/dist/utils/json.js.map +1 -1
  44. package/dist/utils/retry.d.ts +26 -16
  45. package/dist/utils/retry.d.ts.map +1 -1
  46. package/dist/utils/retry.js +33 -21
  47. package/dist/utils/retry.js.map +1 -1
  48. 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 Owletto.
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 Owletto.
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 owlettoMemorySchema: z.ZodObject<{
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
- }, z.core.$strip>;
200
- declare const memorySchema: z.ZodObject<{
201
- owletto: z.ZodOptional<z.ZodObject<{
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.$strip>;
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
- owletto: z.ZodOptional<z.ZodObject<{
298
- enabled: z.ZodOptional<z.ZodBoolean>;
299
- org: z.ZodOptional<z.ZodString>;
300
- name: z.ZodOptional<z.ZodString>;
301
- description: z.ZodOptional<z.ZodString>;
302
- visibility: z.ZodOptional<z.ZodEnum<{
303
- public: "public";
304
- private: "private";
305
- }>>;
306
- models: z.ZodOptional<z.ZodString>;
307
- data: z.ZodOptional<z.ZodString>;
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.$strip>>;
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;AAIH,QAAA,MAAM,mBAAmB;;;;;;;;;;;iBAQvB,CAAC;AAEH,QAAA,MAAM,YAAY;;;;;;;;;;;;;iBAEhB,CAAC;AAIH,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,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACrE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,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"}
@@ -172,7 +172,12 @@ const agentEntrySchema = zod_1.z.object({
172
172
  worker: workerSchema.optional(),
173
173
  });
174
174
  // ── Memory ─────────────────────────────────────────────────────────────────
175
- const owlettoMemorySchema = zod_1.z.object({
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
- const memorySchema = zod_1.z.object({
185
- owletto: owlettoMemorySchema.optional(),
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":"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"}
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. `owletto search_knowledge <<<'{...}'`). Keeps the first-class
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";
@@ -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
@@ -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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":";;AAQA,sCAaC;AAMD,8CASC;AApCD,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"}
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"}
@@ -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
- jitter?: boolean;
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
- * // Linear backoff with jitter
25
- * const result = await retryWithBackoff(
26
- * () => createDeployment(),
27
- * {
28
- * maxRetries: 3,
29
- * strategy: 'linear',
30
- * jitter: true,
31
- * baseDelay: 2000,
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;IACjB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CA4CZ"}
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"}
@@ -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
- * // Linear backoff with jitter
23
- * const result = await retryWithBackoff(
24
- * () => createDeployment(),
25
- * {
26
- * maxRetries: 3,
27
- * strategy: 'linear',
28
- * jitter: true,
29
- * baseDelay: 2000,
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
- const delay = strategy === "exponential"
46
+ // Calculate base delay based on strategy
47
+ let delay = strategy === "exponential"
49
48
  ? baseDelay * 2 ** attempt
50
49
  : baseDelay * (attempt + 1);
51
- // Add jitter if requested (0-1000ms random)
52
- const jitterMs = jitter ? Math.random() * 1000 : 0;
53
- const finalDelay = delay + jitterMs;
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);
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":";;AA2CA,4CA+CC;AA1FD,sCAAyC;AAEzC,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,OAAO,CAAC,CAAC;AAUrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACI,KAAK,UAAU,gBAAgB,CACpC,EAAoB,EACpB,UAAwB,EAAE;IAE1B,MAAM,EACJ,UAAU,GAAG,CAAC,EACd,SAAS,GAAG,IAAI,EAChB,QAAQ,GAAG,aAAa,EACxB,MAAM,GAAG,KAAK,EACd,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,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;gBACzB,oCAAoC;gBACpC,MAAM,KAAK,GACT,QAAQ,KAAK,aAAa;oBACxB,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,OAAO;oBAC1B,CAAC,CAAC,SAAS,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBAEhC,4CAA4C;gBAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnD,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC;gBAEpC,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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobu/core",
3
- "version": "6.0.1",
3
+ "version": "6.1.1",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Core types and utilities for Lobu agent platform",
6
6
  "repository": {