@ugm/desiagent 0.2.2 → 0.2.4

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 (76) hide show
  1. package/dist/core/execution/costs.d.ts +2 -0
  2. package/dist/core/execution/costs.d.ts.map +1 -1
  3. package/dist/core/execution/costs.js +1 -0
  4. package/dist/core/execution/costs.js.map +1 -1
  5. package/dist/core/execution/dagExecutor.d.ts +5 -1
  6. package/dist/core/execution/dagExecutor.d.ts.map +1 -1
  7. package/dist/core/execution/dagExecutor.js +47 -83
  8. package/dist/core/execution/dagExecutor.js.map +1 -1
  9. package/dist/core/execution/dagScheduler.d.ts +36 -0
  10. package/dist/core/execution/dagScheduler.d.ts.map +1 -0
  11. package/dist/core/execution/dagScheduler.js +101 -0
  12. package/dist/core/execution/dagScheduler.js.map +1 -0
  13. package/dist/core/execution/dags.d.ts +7 -1
  14. package/dist/core/execution/dags.d.ts.map +1 -1
  15. package/dist/core/execution/dags.js +56 -26
  16. package/dist/core/execution/dags.js.map +1 -1
  17. package/dist/core/execution/executions.d.ts +1 -0
  18. package/dist/core/execution/executions.d.ts.map +1 -1
  19. package/dist/core/execution/executions.js +1 -0
  20. package/dist/core/execution/executions.js.map +1 -1
  21. package/dist/core/execution/inference.d.ts +12 -12
  22. package/dist/core/execution/tools.d.ts.map +1 -1
  23. package/dist/core/execution/tools.js +11 -12
  24. package/dist/core/execution/tools.js.map +1 -1
  25. package/dist/core/providers/factory.d.ts.map +1 -1
  26. package/dist/core/providers/factory.js +23 -2
  27. package/dist/core/providers/factory.js.map +1 -1
  28. package/dist/core/tools/fetchPage.d.ts +1 -1
  29. package/dist/core/tools/fetchPage.d.ts.map +1 -1
  30. package/dist/core/tools/fetchPage.js +3 -0
  31. package/dist/core/tools/fetchPage.js.map +1 -1
  32. package/dist/core/tools/llmExecute.d.ts +22 -22
  33. package/dist/core/tools/readEmail.d.ts +1 -1
  34. package/dist/core/tools/writeFile.d.ts +1 -1
  35. package/dist/core/workers/statsQueue.d.ts +17 -4
  36. package/dist/core/workers/statsQueue.d.ts.map +1 -1
  37. package/dist/core/workers/statsQueue.js +43 -4
  38. package/dist/core/workers/statsQueue.js.map +1 -1
  39. package/dist/core/workers/statsWorker.js +143 -7
  40. package/dist/core/workers/statsWorker.js.map +1 -1
  41. package/dist/db/client.d.ts.map +1 -1
  42. package/dist/db/client.js +58 -1
  43. package/dist/db/client.js.map +1 -1
  44. package/dist/db/schema.d.ts +21 -0
  45. package/dist/db/schema.d.ts.map +1 -1
  46. package/dist/db/schema.js +8 -2
  47. package/dist/db/schema.js.map +1 -1
  48. package/dist/db/sqlite.d.ts +2 -0
  49. package/dist/db/sqlite.d.ts.map +1 -0
  50. package/dist/db/sqlite.js +77 -0
  51. package/dist/db/sqlite.js.map +1 -0
  52. package/dist/index.d.ts +2 -0
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +98 -8
  55. package/dist/index.js.map +1 -1
  56. package/dist/services/initDB.d.ts +1 -2
  57. package/dist/services/initDB.d.ts.map +1 -1
  58. package/dist/services/initDB.js +1 -1
  59. package/dist/services/initDB.js.map +1 -1
  60. package/dist/types/client.d.ts +2 -0
  61. package/dist/types/client.d.ts.map +1 -1
  62. package/dist/types/config.d.ts +10 -0
  63. package/dist/types/config.d.ts.map +1 -1
  64. package/dist/types/config.js +10 -0
  65. package/dist/types/config.js.map +1 -1
  66. package/dist/types/execution.d.ts +1 -0
  67. package/dist/types/execution.d.ts.map +1 -1
  68. package/dist/types/execution.js.map +1 -1
  69. package/dist/util/formatEvent.d.ts +9 -0
  70. package/dist/util/formatEvent.d.ts.map +1 -0
  71. package/dist/util/formatEvent.js +84 -0
  72. package/dist/util/formatEvent.js.map +1 -0
  73. package/dist/util/logger.d.ts.map +1 -1
  74. package/dist/util/logger.js +8 -6
  75. package/dist/util/logger.js.map +1 -1
  76. package/package.json +2 -2
@@ -47,35 +47,35 @@ export declare const CustomInferenceInputSchema: z.ZodObject<{
47
47
  model?: string | undefined;
48
48
  }>>;
49
49
  }, "strip", z.ZodTypeAny, {
50
- agentName: string;
51
50
  prompt: string;
52
- params?: {
53
- reasoning_effort?: "low" | "medium" | "high" | undefined;
54
- max_tokens?: number | undefined;
55
- temperature?: number | undefined;
56
- } | undefined;
51
+ agentName: string;
57
52
  attachments?: {
58
53
  content: string;
59
54
  filename: string;
60
55
  mimeType?: string | undefined;
61
56
  }[] | undefined;
57
+ params?: {
58
+ reasoning_effort?: "low" | "medium" | "high" | undefined;
59
+ max_tokens?: number | undefined;
60
+ temperature?: number | undefined;
61
+ } | undefined;
62
62
  overrides?: {
63
63
  provider?: "openai" | "openrouter" | "ollama" | undefined;
64
64
  model?: string | undefined;
65
65
  } | undefined;
66
66
  }, {
67
- agentName: string;
68
67
  prompt: string;
69
- params?: {
70
- reasoning_effort?: "low" | "medium" | "high" | undefined;
71
- max_tokens?: number | undefined;
72
- temperature?: number | undefined;
73
- } | undefined;
68
+ agentName: string;
74
69
  attachments?: {
75
70
  content: string;
76
71
  filename: string;
77
72
  mimeType?: string | undefined;
78
73
  }[] | undefined;
74
+ params?: {
75
+ reasoning_effort?: "low" | "medium" | "high" | undefined;
76
+ max_tokens?: number | undefined;
77
+ temperature?: number | undefined;
78
+ } | undefined;
79
79
  overrides?: {
80
80
  provider?: "openai" | "openrouter" | "ollama" | undefined;
81
81
  model?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,cAAc,CAAc;IAEpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAaxC;gBAEU,QAAQ,EAAE,YAAY,EAAE,cAAc,GAAE,MAAM,EAAoC;IAK9F;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBnE;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAMvD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQ3C;;OAEG;IAMH;;OAEG;IAMH;;OAEG;IAKH;;OAEG;IAKH;;OAEG;IAKH;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInC,SAAS,CAAC,IAAI,EAAC,MAAM,GAAE,OAAO;IAG9B;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAO5E"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,cAAc,CAAc;IAEpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAaxC;gBAEU,QAAQ,EAAE,YAAY,EAAE,cAAc,GAAE,MAAM,EAAoC;IAK9F;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAYnE;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAMvD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQ3C;;OAEG;IAMH;;OAEG;IAMH;;OAEG;IAKH;;OAEG;IAKH;;OAEG;IAKH;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInC,SAAS,CAAC,IAAI,EAAC,MAAM,GAAE,OAAO;IAG9B;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAO5E"}
@@ -11,15 +11,15 @@ export class ToolsService {
11
11
  registry;
12
12
  restrictedList;
13
13
  static DEFAULT_RESTRICTED = [
14
- 'bash',
14
+ // 'bash',
15
15
  // 'readFile',
16
16
  // 'writeFile',
17
- 'fetchPage',
18
- 'webSearch',
19
- 'fetchURLs',
20
- 'glob',
21
- 'grep',
22
- 'edit',
17
+ // 'fetchPage',
18
+ // 'webSearch',
19
+ // 'fetchURLs',
20
+ // 'glob',
21
+ // 'grep',
22
+ // 'edit',
23
23
  // 'sendEmail',
24
24
  // 'readEmail',
25
25
  'sendWebhook',
@@ -32,12 +32,11 @@ export class ToolsService {
32
32
  * List all available tools (with optional filtering)
33
33
  */
34
34
  async list(filter) {
35
- let tools = this.registry.getAllDefinitions();
35
+ let tools = this.registry
36
+ .getAllDefinitions()
37
+ .filter((t) => !this.isRestricted(t.function.name));
36
38
  if (filter?.name) {
37
- tools = tools.filter((t) => (t.function.name === filter.name && this.isRestricted(t.function.name)));
38
- }
39
- else {
40
- tools = tools.filter((t) => !this.isRestricted(t.function.name));
39
+ tools = tools.filter((t) => t.function.name === filter.name);
41
40
  }
42
41
  return tools;
43
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,QAAQ,CAAe;IACvB,cAAc,CAAc;IAE5B,MAAM,CAAU,kBAAkB,GAAa;QACvD,WAAW;QACX,eAAe;QACf,gBAAgB;QAChB,gBAAgB;QAChB,gBAAgB;QAChB,gBAAgB;QAChB,WAAW;QACX,WAAW;QACX,WAAW;QACX,gBAAgB;QAChB,gBAAgB;QACd,aAAa;KACd,CAAC;IAEF,YAAY,QAAsB,EAAE,iBAA2B,YAAY,CAAC,kBAAkB;QAC5F,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAA4B;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ;aACtB,iBAAiB,EAAE;aACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtD,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACjB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAErC,OAAO,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAE,CAAC,CAAC,IAAI,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAY;QACjB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACP,OAAO,SAAS,CAAC;QAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa;IACb,wBAAwB;IACxB,kCAAkC;IAClC,GAAG;IAEH;;OAEG;IACH,YAAY;IACZ,0CAA0C;IAC1C,8CAA8C;IAC9C,IAAI;IAEJ;;OAEG;IACH,mCAAmC;IACnC,wCAAwC;IACxC,IAAI;IAEJ;;OAEG;IACH,gDAAgD;IAChD,+CAA+C;IAC/C,IAAI;IAEJ;;OAEG;IACH,mCAAmC;IACnC,kCAAkC;IAClC,IAAI;IAEJ;;OAEG;IACH,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,SAAS,CAAC,IAAW;QACnB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,KAAU,EAAE,GAAgB;QAC1D,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAA;YACX,6EAA6E;QAC/E,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/core/providers/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAY9C;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE;IACN,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GACA,WAAW,CA+Cb;AAWD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAcf"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/core/providers/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAa9C;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE;IACN,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GACA,WAAW,CAgDb;AAqCD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAcf"}
@@ -6,10 +6,11 @@
6
6
  import { OpenAIProvider } from './openai.js';
7
7
  import { OllamaProvider } from './ollama.js';
8
8
  import { OpenRouterProvider } from './openrouter.js';
9
+ import { createHash } from 'crypto';
9
10
  import { getLogger } from '../../util/logger.js';
10
11
  /**
11
12
  * LLM Provider cache for reusing provider instances
12
- * Key format: "provider:model:maxTokens"
13
+ * Key format: "provider-scope:model:maxTokens:skipStats"
13
14
  */
14
15
  const providerCache = new Map();
15
16
  /**
@@ -26,7 +27,8 @@ export function createLLMProvider(config) {
26
27
  const model = config.model || getDefaultModel(config.provider);
27
28
  const maxTokens = config.maxTokens || 4096;
28
29
  const skipStats = config.skipGenerationStats ? 'skip' : 'stats';
29
- const cacheKey = `${config.provider}:${model}:${maxTokens}:${skipStats}`;
30
+ const providerScope = getProviderCacheScope(config);
31
+ const cacheKey = `${providerScope}:${model}:${maxTokens}:${skipStats}`;
30
32
  // Check cache first
31
33
  const cached = providerCache.get(cacheKey);
32
34
  if (cached) {
@@ -62,6 +64,25 @@ export function createLLMProvider(config) {
62
64
  providerCache.set(cacheKey, provider);
63
65
  return provider;
64
66
  }
67
+ function getProviderCacheScope(config) {
68
+ switch (config.provider) {
69
+ case 'openai':
70
+ return `openai:key=${fingerprint(config.apiKey)}`;
71
+ case 'openrouter':
72
+ return `openrouter:key=${fingerprint(config.apiKey)}:url=${normalizeBaseUrl(config.baseUrl)}`;
73
+ case 'ollama':
74
+ return `ollama:url=${normalizeBaseUrl(config.baseUrl || 'http://localhost:11434')}`;
75
+ default:
76
+ return `${config.provider}:default`;
77
+ }
78
+ }
79
+ function normalizeBaseUrl(baseUrl) {
80
+ const normalized = (baseUrl ?? '').trim().replace(/\/+$/, '');
81
+ return normalized || 'default';
82
+ }
83
+ function fingerprint(value) {
84
+ return createHash('sha256').update(value ?? '').digest('hex').slice(0, 12);
85
+ }
65
86
  function getDefaultModel(provider) {
66
87
  switch (provider) {
67
88
  case 'openai': return 'gpt-4o';
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/core/providers/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/core/providers/factory.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,8 @@ declare const fetchPageInputSchema: z.ZodObject<{
11
11
  maxLength: z.ZodDefault<z.ZodNumber>;
12
12
  timeout: z.ZodDefault<z.ZodNumber>;
13
13
  }, "strip", z.ZodTypeAny, {
14
- url: string;
15
14
  maxLength: number;
15
+ url: string;
16
16
  timeout: number;
17
17
  }, {
18
18
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"fetchPage.d.ts","sourceRoot":"","sources":["../../../src/core/tools/fetchPage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAGvD,QAAA,MAAM,oBAAoB;;;;;;;;;;;;EAWxB,CAAC;AAEH,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE3D,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC/D,IAAI,SAAe;IACnB,WAAW,SAA+C;IAC1D,WAAW,EAAE,GAAG,CAAwB;IAExC,OAAO,CAAC,MAAM,CAAe;IAE7B;;OAEG;IACG,OAAO,CACX,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,eAAe,CAAC;CAqF5B"}
1
+ {"version":3,"file":"fetchPage.d.ts","sourceRoot":"","sources":["../../../src/core/tools/fetchPage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAGvD,QAAA,MAAM,oBAAoB;;;;;;;;;;;;EAWxB,CAAC;AAEH,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE3D,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC/D,IAAI,SAAe;IACnB,WAAW,SAA+C;IAC1D,WAAW,EAAE,GAAG,CAAwB;IAExC,OAAO,CAAC,MAAM,CAAe;IAE7B;;OAEG;IACG,OAAO,CACX,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,eAAe,CAAC;CAyF5B"}
@@ -33,6 +33,9 @@ export class FetchPageTool extends BaseTool {
33
33
  */
34
34
  async execute(input, ctx) {
35
35
  this.logger.info(`Fetching page: ${input.url}`);
36
+ if (ctx.onEvent) {
37
+ ctx.onEvent('tool:fetchPage:started', { url: input.url });
38
+ }
36
39
  try {
37
40
  // Fetch with timeout using AbortController
38
41
  const controller = new AbortController();
@@ -1 +1 @@
1
- {"version":3,"file":"fetchPage.js","sourceRoot":"","sources":["../../../src/core/tools/fetchPage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAoB,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IAC9C,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,wBAAwB,CAAC;IACrC,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,iCAAiC,CAAC;CAC/C,CAAC,CAAC;AAaH;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,QAA8B;IAC/D,IAAI,GAAG,WAAW,CAAC;IACnB,WAAW,GAAG,2CAA2C,CAAC;IAC1D,WAAW,GAAQ,oBAAoB,CAAC;IAEhC,MAAM,GAAG,SAAS,EAAE,CAAC;IAE7B;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,KAAqB,EACrB,GAAgB;QAEhB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,2CAA2C;YAC3C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAEtE,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;oBACtC,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,OAAO,EAAE;wBACP,MAAM,EACJ,mFAAmF;wBACrF,YAAY,EACV,8DAA8D;qBACjE;iBACF,CAAC,CAAC;gBAEH,YAAY,CAAC,SAAS,CAAC,CAAC;gBAExB,MAAM,WAAW,GACf,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,YAAY,CAAC;gBAEvD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,uBAAuB,QAAQ,CAAC,MAAM,QAAQ,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,UAAU,EAAE,CAClF,CAAC;oBACF,OAAO;wBACL,GAAG,EAAE,KAAK,CAAC,GAAG;wBACd,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,WAAW;wBACX,OAAO,EAAE,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE;wBAC1D,aAAa,EAAE,CAAC;wBAChB,SAAS,EAAE,KAAK;qBACjB,CAAC;gBACJ,CAAC;gBAED,IAAI,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEpC,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC1D,MAAM,SAAS,GAAG,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC;gBAElD,IAAI,SAAS,EAAE,CAAC;oBACd,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9C,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,WAAW,aAAa,eAAe,KAAK,CAAC,GAAG,aAAa,QAAQ,CAAC,MAAM,GAAG,CAChF,CAAC;gBAEF,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBAChB,GAAG,CAAC,OAAO,CAAC,0BAA0B,EAAE;wBACtC,GAAG,EAAE,KAAK,CAAC,GAAG;wBACd,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,aAAa;wBACb,SAAS;qBACV,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO;oBACL,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,WAAW;oBACX,OAAO;oBACP,aAAa;oBACb,SAAS;iBACV,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC,CAAC;YAC9D,OAAO;gBACL,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,MAAM,EAAE,CAAC;gBACT,WAAW,EAAE,YAAY;gBACzB,OAAO,EAAE,iBAAiB,OAAO,EAAE;gBACnC,aAAa,EAAE,CAAC;gBAChB,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"fetchPage.js","sourceRoot":"","sources":["../../../src/core/tools/fetchPage.ts"],"names":[],"mappings":"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"}
@@ -39,34 +39,34 @@ declare const llmExecuteInputSchema: z.ZodObject<{
39
39
  }>>;
40
40
  }, "strip", z.ZodTypeAny, {
41
41
  provider: "openai" | "openrouter" | "ollama";
42
- model: string;
43
42
  prompt: string;
43
+ model: string;
44
44
  task: string;
45
- params?: {
46
- reasoning_effort?: "low" | "medium" | "high" | undefined;
47
- max_tokens?: number | undefined;
48
- temperature?: number | undefined;
49
- } | undefined;
50
45
  attachments?: {
51
46
  content: string;
52
47
  filename: string;
53
48
  mimeType?: string | undefined;
54
49
  }[] | undefined;
55
- }, {
56
- provider: "openai" | "openrouter" | "ollama";
57
- model: string;
58
- prompt: string;
59
- task: string;
60
50
  params?: {
61
51
  reasoning_effort?: "low" | "medium" | "high" | undefined;
62
52
  max_tokens?: number | undefined;
63
53
  temperature?: number | undefined;
64
54
  } | undefined;
55
+ }, {
56
+ provider: "openai" | "openrouter" | "ollama";
57
+ prompt: string;
58
+ model: string;
59
+ task: string;
65
60
  attachments?: {
66
61
  content: string;
67
62
  filename: string;
68
63
  mimeType?: string | undefined;
69
64
  }[] | undefined;
65
+ params?: {
66
+ reasoning_effort?: "low" | "medium" | "high" | undefined;
67
+ max_tokens?: number | undefined;
68
+ temperature?: number | undefined;
69
+ } | undefined;
70
70
  }>;
71
71
  type LlmExecuteInput = z.infer<typeof llmExecuteInputSchema>;
72
72
  interface LlmExecuteOutput {
@@ -118,34 +118,34 @@ export declare class LlmExecuteTool extends BaseTool<LlmExecuteInput, LlmExecute
118
118
  }>>;
119
119
  }, "strip", z.ZodTypeAny, {
120
120
  provider: "openai" | "openrouter" | "ollama";
121
- model: string;
122
121
  prompt: string;
122
+ model: string;
123
123
  task: string;
124
- params?: {
125
- reasoning_effort?: "low" | "medium" | "high" | undefined;
126
- max_tokens?: number | undefined;
127
- temperature?: number | undefined;
128
- } | undefined;
129
124
  attachments?: {
130
125
  content: string;
131
126
  filename: string;
132
127
  mimeType?: string | undefined;
133
128
  }[] | undefined;
134
- }, {
135
- provider: "openai" | "openrouter" | "ollama";
136
- model: string;
137
- prompt: string;
138
- task: string;
139
129
  params?: {
140
130
  reasoning_effort?: "low" | "medium" | "high" | undefined;
141
131
  max_tokens?: number | undefined;
142
132
  temperature?: number | undefined;
143
133
  } | undefined;
134
+ }, {
135
+ provider: "openai" | "openrouter" | "ollama";
136
+ prompt: string;
137
+ model: string;
138
+ task: string;
144
139
  attachments?: {
145
140
  content: string;
146
141
  filename: string;
147
142
  mimeType?: string | undefined;
148
143
  }[] | undefined;
144
+ params?: {
145
+ reasoning_effort?: "low" | "medium" | "high" | undefined;
146
+ max_tokens?: number | undefined;
147
+ temperature?: number | undefined;
148
+ } | undefined;
149
149
  }>;
150
150
  private apiKey?;
151
151
  private baseUrl?;
@@ -27,8 +27,8 @@ declare const readEmailInputSchema: z.ZodObject<{
27
27
  }, {
28
28
  search?: string | undefined;
29
29
  maxResults?: number | undefined;
30
- unreadOnly?: boolean | undefined;
31
30
  sender?: string | undefined;
31
+ unreadOnly?: boolean | undefined;
32
32
  mailbox?: string | undefined;
33
33
  markAsRead?: boolean | undefined;
34
34
  snippets?: boolean | undefined;
@@ -11,8 +11,8 @@ declare const writeFileInputSchema: z.ZodObject<{
11
11
  content: z.ZodString;
12
12
  mode: z.ZodDefault<z.ZodEnum<["overwrite", "append"]>>;
13
13
  }, "strip", z.ZodTypeAny, {
14
- mode: "overwrite" | "append";
15
14
  content: string;
15
+ mode: "overwrite" | "append";
16
16
  path: string;
17
17
  }, {
18
18
  content: string;
@@ -9,11 +9,11 @@
9
9
  */
10
10
  export interface StatsJob {
11
11
  /** Which table to update */
12
- table: 'sub_steps' | 'dag_executions' | 'dags';
12
+ table: 'sub_steps' | 'dag_executions' | 'dags' | 'reconcile';
13
13
  /** Row ID in that table (dagId for 'dags', executionId for 'dag_executions') */
14
14
  id: string;
15
15
  /** OpenRouter generation ID for fetching stats */
16
- generationId: string;
16
+ generationId?: string;
17
17
  /**
18
18
  * For 'sub_steps': the taskId used with executionId to locate the row.
19
19
  */
@@ -32,7 +32,11 @@ export interface StatsJob {
32
32
  * Message sent from main thread → worker
33
33
  */
34
34
  export interface WorkerInMessage {
35
- type: 'job' | 'shutdown';
35
+ type: 'init' | 'job' | 'shutdown';
36
+ dbPath?: string;
37
+ apiKey?: string;
38
+ reconcileIntervalMs?: number;
39
+ reconcileBatchSize?: number;
36
40
  job?: StatsJob;
37
41
  }
38
42
  /**
@@ -44,17 +48,26 @@ export interface WorkerOutMessage {
44
48
  id?: string;
45
49
  error?: string;
46
50
  }
51
+ export interface StatsQueueOptions {
52
+ reconcileIntervalMs?: number;
53
+ reconcileBatchSize?: number;
54
+ }
47
55
  export declare class StatsQueue {
48
56
  private worker;
49
57
  private logger;
50
58
  private dbPath;
51
59
  private apiKey;
52
60
  private pendingCount;
53
- constructor(dbPath: string, apiKey: string);
61
+ private reconcileInFlight;
62
+ private reconcileTimer;
63
+ private reconcileIntervalMs;
64
+ private reconcileBatchSize;
65
+ constructor(dbPath: string, apiKey: string, options?: StatsQueueOptions);
54
66
  /**
55
67
  * Start the background worker. Safe to call multiple times (idempotent).
56
68
  */
57
69
  start(): void;
70
+ private enqueueReconcileTick;
58
71
  /**
59
72
  * Enqueue a stats update job for background processing.
60
73
  * If the worker isn't started, silently drops the job with a warning.
@@ -1 +1 @@
1
- {"version":3,"file":"statsQueue.d.ts","sourceRoot":"","sources":["../../../src/core/workers/statsQueue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,4BAA4B;IAC5B,KAAK,EAAE,WAAW,GAAG,gBAAgB,GAAG,MAAM,CAAC;IAC/C,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC;IACzB,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK1C;;OAEG;IACH,KAAK,IAAI,IAAI;IAmCb;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAY5B;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAyCjC"}
1
+ {"version":3,"file":"statsQueue.d.ts","sourceRoot":"","sources":["../../../src/core/workers/statsQueue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,4BAA4B;IAC5B,KAAK,EAAE,WAAW,GAAG,gBAAgB,GAAG,MAAM,GAAG,WAAW,CAAC;IAC7D,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB;IAOvE;;OAEG;IACH,KAAK,IAAI,IAAI;IAqDb,OAAO,CAAC,oBAAoB;IAY5B;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAY5B;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CA+CjC"}
@@ -7,15 +7,23 @@
7
7
  import { getLogger } from '../../util/logger.js';
8
8
  /** Max time (ms) to wait for the worker to drain before force-terminating */
9
9
  const DRAIN_TIMEOUT_MS = 30_000;
10
+ const DEFAULT_RECONCILE_INTERVAL_MS = 30_000;
11
+ const DEFAULT_RECONCILE_BATCH_SIZE = 50;
10
12
  export class StatsQueue {
11
13
  worker = null;
12
14
  logger = getLogger();
13
15
  dbPath;
14
16
  apiKey;
15
17
  pendingCount = 0;
16
- constructor(dbPath, apiKey) {
18
+ reconcileInFlight = false;
19
+ reconcileTimer = null;
20
+ reconcileIntervalMs;
21
+ reconcileBatchSize;
22
+ constructor(dbPath, apiKey, options) {
17
23
  this.dbPath = dbPath;
18
24
  this.apiKey = apiKey;
25
+ this.reconcileIntervalMs = options?.reconcileIntervalMs ?? DEFAULT_RECONCILE_INTERVAL_MS;
26
+ this.reconcileBatchSize = options?.reconcileBatchSize ?? DEFAULT_RECONCILE_BATCH_SIZE;
19
27
  }
20
28
  /**
21
29
  * Start the background worker. Safe to call multiple times (idempotent).
@@ -30,15 +38,23 @@ export class StatsQueue {
30
38
  type: 'init',
31
39
  dbPath: this.dbPath,
32
40
  apiKey: this.apiKey,
41
+ reconcileIntervalMs: this.reconcileIntervalMs,
42
+ reconcileBatchSize: this.reconcileBatchSize,
33
43
  });
34
44
  this.worker.onmessage = (event) => {
35
45
  const msg = event.data;
36
46
  if (msg.type === 'done') {
37
- this.pendingCount--;
47
+ this.pendingCount = Math.max(0, this.pendingCount - 1);
48
+ if (msg.table === 'reconcile') {
49
+ this.reconcileInFlight = false;
50
+ }
38
51
  this.logger.debug({ table: msg.table, id: msg.id }, 'StatsWorker: update complete');
39
52
  }
40
53
  else if (msg.type === 'error') {
41
- this.pendingCount--;
54
+ this.pendingCount = Math.max(0, this.pendingCount - 1);
55
+ if (msg.table === 'reconcile') {
56
+ this.reconcileInFlight = false;
57
+ }
42
58
  this.logger.warn({ table: msg.table, id: msg.id, error: msg.error }, 'StatsWorker: update failed');
43
59
  }
44
60
  // 'drained' is handled by the terminate() promise listener
@@ -48,7 +64,25 @@ export class StatsQueue {
48
64
  };
49
65
  // Don't let the worker keep the process alive during normal operation
50
66
  this.worker.unref();
51
- this.logger.info('StatsQueue: background worker started');
67
+ this.reconcileTimer = setInterval(() => {
68
+ this.enqueueReconcileTick();
69
+ }, this.reconcileIntervalMs);
70
+ this.reconcileTimer.unref?.();
71
+ this.enqueueReconcileTick();
72
+ this.logger.info({
73
+ reconcileIntervalMs: this.reconcileIntervalMs,
74
+ reconcileBatchSize: this.reconcileBatchSize,
75
+ }, 'StatsQueue: background worker started');
76
+ }
77
+ enqueueReconcileTick() {
78
+ if (!this.worker || this.reconcileInFlight) {
79
+ return;
80
+ }
81
+ this.reconcileInFlight = true;
82
+ this.enqueue({
83
+ table: 'reconcile',
84
+ id: `reconcile_${Date.now()}`,
85
+ });
52
86
  }
53
87
  /**
54
88
  * Enqueue a stats update job for background processing.
@@ -71,6 +105,10 @@ export class StatsQueue {
71
105
  async terminate() {
72
106
  if (!this.worker)
73
107
  return;
108
+ if (this.reconcileTimer) {
109
+ clearInterval(this.reconcileTimer);
110
+ this.reconcileTimer = null;
111
+ }
74
112
  // Fast path: no pending work
75
113
  if (this.pendingCount <= 0) {
76
114
  this.worker.terminate();
@@ -101,6 +139,7 @@ export class StatsQueue {
101
139
  });
102
140
  this.worker = null;
103
141
  this.pendingCount = 0;
142
+ this.reconcileInFlight = false;
104
143
  }
105
144
  }
106
145
  //# sourceMappingURL=statsQueue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"statsQueue.js","sourceRoot":"","sources":["../../../src/core/workers/statsQueue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statsQueue.js","sourceRoot":"","sources":["../../../src/core/workers/statsQueue.ts"],"names":[],"mappings":"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"}