@ugm/desiagent 0.2.1 → 0.2.3

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 (82) hide show
  1. package/README.md +32 -0
  2. package/dist/core/execution/costs.d.ts +2 -0
  3. package/dist/core/execution/costs.d.ts.map +1 -1
  4. package/dist/core/execution/costs.js +1 -0
  5. package/dist/core/execution/costs.js.map +1 -1
  6. package/dist/core/execution/dagExecutor.d.ts +0 -1
  7. package/dist/core/execution/dagExecutor.d.ts.map +1 -1
  8. package/dist/core/execution/dagExecutor.js +32 -83
  9. package/dist/core/execution/dagExecutor.js.map +1 -1
  10. package/dist/core/execution/dagScheduler.d.ts +36 -0
  11. package/dist/core/execution/dagScheduler.d.ts.map +1 -0
  12. package/dist/core/execution/dagScheduler.js +101 -0
  13. package/dist/core/execution/dagScheduler.js.map +1 -0
  14. package/dist/core/execution/dags.d.ts +2 -1
  15. package/dist/core/execution/dags.d.ts.map +1 -1
  16. package/dist/core/execution/dags.js +48 -26
  17. package/dist/core/execution/dags.js.map +1 -1
  18. package/dist/core/execution/executions.d.ts +1 -0
  19. package/dist/core/execution/executions.d.ts.map +1 -1
  20. package/dist/core/execution/executions.js +1 -0
  21. package/dist/core/execution/executions.js.map +1 -1
  22. package/dist/core/execution/inference.d.ts +6 -6
  23. package/dist/core/execution/skills.d.ts +27 -0
  24. package/dist/core/execution/skills.d.ts.map +1 -0
  25. package/dist/core/execution/skills.js +127 -0
  26. package/dist/core/execution/skills.js.map +1 -0
  27. package/dist/core/execution/tools.d.ts.map +1 -1
  28. package/dist/core/execution/tools.js +11 -12
  29. package/dist/core/execution/tools.js.map +1 -1
  30. package/dist/core/providers/factory.d.ts.map +1 -1
  31. package/dist/core/providers/factory.js +23 -2
  32. package/dist/core/providers/factory.js.map +1 -1
  33. package/dist/core/skills/registry.d.ts +1 -0
  34. package/dist/core/skills/registry.d.ts.map +1 -1
  35. package/dist/core/skills/registry.js +4 -0
  36. package/dist/core/skills/registry.js.map +1 -1
  37. package/dist/core/tools/fetchPage.d.ts +1 -1
  38. package/dist/core/tools/llmExecute.d.ts +8 -8
  39. package/dist/core/tools/readEmail.d.ts +1 -1
  40. package/dist/core/tools/sendEmail.d.ts +7 -7
  41. package/dist/core/tools/writeFile.d.ts +1 -1
  42. package/dist/core/workers/statsQueue.d.ts +17 -4
  43. package/dist/core/workers/statsQueue.d.ts.map +1 -1
  44. package/dist/core/workers/statsQueue.js +43 -4
  45. package/dist/core/workers/statsQueue.js.map +1 -1
  46. package/dist/core/workers/statsWorker.js +143 -7
  47. package/dist/core/workers/statsWorker.js.map +1 -1
  48. package/dist/db/client.d.ts.map +1 -1
  49. package/dist/db/client.js +58 -1
  50. package/dist/db/client.js.map +1 -1
  51. package/dist/db/schema.d.ts +21 -0
  52. package/dist/db/schema.d.ts.map +1 -1
  53. package/dist/db/schema.js +8 -2
  54. package/dist/db/schema.js.map +1 -1
  55. package/dist/db/sqlite.d.ts +2 -0
  56. package/dist/db/sqlite.d.ts.map +1 -0
  57. package/dist/db/sqlite.js +77 -0
  58. package/dist/db/sqlite.js.map +1 -0
  59. package/dist/index.d.ts +3 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +109 -8
  62. package/dist/index.js.map +1 -1
  63. package/dist/services/initDB.d.ts +1 -2
  64. package/dist/services/initDB.d.ts.map +1 -1
  65. package/dist/services/initDB.js +1 -1
  66. package/dist/services/initDB.js.map +1 -1
  67. package/dist/types/client.d.ts +37 -0
  68. package/dist/types/client.d.ts.map +1 -1
  69. package/dist/types/config.d.ts +10 -0
  70. package/dist/types/config.d.ts.map +1 -1
  71. package/dist/types/config.js +10 -0
  72. package/dist/types/config.js.map +1 -1
  73. package/dist/types/execution.d.ts +1 -0
  74. package/dist/types/execution.d.ts.map +1 -1
  75. package/dist/types/execution.js.map +1 -1
  76. package/dist/types/index.d.ts +1 -1
  77. package/dist/types/index.d.ts.map +1 -1
  78. package/dist/util/logger.d.ts.map +1 -1
  79. package/dist/util/logger.js +8 -6
  80. package/dist/util/logger.js.map +1 -1
  81. package/dist/util/sendEmailTool.d.ts +7 -7
  82. package/package.json +2 -2
@@ -0,0 +1,127 @@
1
+ import { resolve } from 'path';
2
+ import { LlmExecuteTool } from '../tools/llmExecute.js';
3
+ import { NotFoundError, ValidationError } from '../../errors/index.js';
4
+ import { getLogger } from '../../util/logger.js';
5
+ function isSkillProvider(value) {
6
+ return value === 'openai' || value === 'openrouter' || value === 'ollama';
7
+ }
8
+ export class SkillsService {
9
+ skillRegistry;
10
+ defaultProvider;
11
+ defaultModel;
12
+ artifactsDir;
13
+ apiKey;
14
+ ollamaBaseUrl;
15
+ skipGenerationStats;
16
+ logger = getLogger();
17
+ constructor(deps) {
18
+ this.skillRegistry = deps.skillRegistry;
19
+ this.defaultProvider = deps.defaultProvider;
20
+ this.defaultModel = deps.defaultModel;
21
+ this.artifactsDir = deps.artifactsDir;
22
+ this.apiKey = deps.apiKey;
23
+ this.ollamaBaseUrl = deps.ollamaBaseUrl;
24
+ this.skipGenerationStats = deps.skipGenerationStats;
25
+ }
26
+ async list(options) {
27
+ if (options?.reload) {
28
+ await this.skillRegistry.refresh();
29
+ }
30
+ return this.skillRegistry.getAll();
31
+ }
32
+ async test(input) {
33
+ if (!input.name?.trim()) {
34
+ throw new ValidationError('Skill name is required', 'name', input.name);
35
+ }
36
+ if (input.reload) {
37
+ await this.skillRegistry.refresh();
38
+ }
39
+ const skill = this.skillRegistry.getByName(input.name);
40
+ if (!skill) {
41
+ throw new NotFoundError('Skill', input.name);
42
+ }
43
+ const startedAt = Date.now();
44
+ if (skill.type === 'executable') {
45
+ const output = await this.executeExecutableSkill(skill, input.params ?? {});
46
+ return {
47
+ name: skill.name,
48
+ type: skill.type,
49
+ source: skill.source,
50
+ durationMs: Date.now() - startedAt,
51
+ output,
52
+ };
53
+ }
54
+ if (!input.prompt?.trim()) {
55
+ throw new ValidationError(`Context skill "${skill.name}" requires a prompt`, 'prompt', input.prompt);
56
+ }
57
+ const output = await this.executeContextSkill(skill, input);
58
+ return {
59
+ name: skill.name,
60
+ type: skill.type,
61
+ source: skill.source,
62
+ providerUsed: output.providerUsed,
63
+ modelUsed: output.modelUsed,
64
+ durationMs: Date.now() - startedAt,
65
+ output: output.content,
66
+ usage: output.usage,
67
+ costUsd: output.costUsd,
68
+ };
69
+ }
70
+ async executeExecutableSkill(skill, params) {
71
+ const handlerPath = resolve(skill.filePath, '..', 'handler.ts');
72
+ try {
73
+ const mod = await import(`file://${handlerPath}`);
74
+ const handler = mod.default ?? mod.handler;
75
+ if (typeof handler !== 'function') {
76
+ throw new ValidationError(`Skill "${skill.name}" is not executable or missing handler`, 'handler', handlerPath);
77
+ }
78
+ return handler(params);
79
+ }
80
+ catch (error) {
81
+ if (error instanceof ValidationError) {
82
+ throw error;
83
+ }
84
+ throw new ValidationError(`Skill "${skill.name}" is not executable or missing handler`, 'handler', handlerPath);
85
+ }
86
+ }
87
+ async executeContextSkill(skill, input) {
88
+ const skillBody = await this.skillRegistry.loadContent(skill.name);
89
+ if (!skillBody) {
90
+ throw new NotFoundError('Skill', skill.name);
91
+ }
92
+ const providerFromSkill = isSkillProvider(skill.provider) ? skill.provider : undefined;
93
+ const providerUsed = input.provider ?? providerFromSkill ?? this.defaultProvider;
94
+ const modelUsed = input.model ?? skill.model ?? this.defaultModel;
95
+ const llmExecuteTool = new LlmExecuteTool({
96
+ apiKey: this.apiKey,
97
+ baseUrl: this.ollamaBaseUrl,
98
+ skipGenerationStats: this.skipGenerationStats,
99
+ });
100
+ const toolParams = (input.temperature !== undefined || input.maxTokens !== undefined)
101
+ ? {
102
+ temperature: input.temperature,
103
+ max_tokens: input.maxTokens,
104
+ }
105
+ : undefined;
106
+ const result = await llmExecuteTool.execute({
107
+ provider: providerUsed,
108
+ model: modelUsed,
109
+ task: skillBody,
110
+ prompt: input.prompt,
111
+ params: toolParams,
112
+ }, {
113
+ logger: this.logger,
114
+ artifactsDir: this.artifactsDir,
115
+ executionId: 'skill_test',
116
+ subStepId: `skill_${skill.name}`,
117
+ });
118
+ return {
119
+ providerUsed,
120
+ modelUsed,
121
+ content: result.content,
122
+ usage: result.usage,
123
+ costUsd: result.costUsd,
124
+ };
125
+ }
126
+ }
127
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/core/execution/skills.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -33,6 +33,7 @@ export declare class SkillRegistry {
33
33
  private workspaceRoot;
34
34
  constructor(workspaceRoot: string);
35
35
  discover(): Promise<void>;
36
+ refresh(): Promise<void>;
36
37
  private discoverGlobSkills;
37
38
  private discoverRootSkill;
38
39
  private parseAndRegister;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/skills/registry.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;EAMjC,CAAC;AAEH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,GAAG,YAAY,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAS;gBAElB,aAAa,EAAE,MAAM;IAI3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YA0BjB,kBAAkB;YA6BlB,iBAAiB;YAUjB,gBAAgB;IAgDxB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAS5D,MAAM,IAAI,SAAS,EAAE;IAIrB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI9C,gBAAgB,IAAI,MAAM;CAQ3B"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/skills/registry.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;EAMjC,CAAC;AAEH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,GAAG,YAAY,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAS;gBAElB,aAAa,EAAE,MAAM;IAI3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAKhB,kBAAkB;YA6BlB,iBAAiB;YAUjB,gBAAgB;IAgDxB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAS5D,MAAM,IAAI,SAAS,EAAE;IAIrB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI9C,gBAAgB,IAAI,MAAM;CAQ3B"}
@@ -50,6 +50,10 @@ export class SkillRegistry {
50
50
  }
51
51
  this.logger.info({ count: this.skills.size }, 'Skill discovery complete');
52
52
  }
53
+ async refresh() {
54
+ this.skills.clear();
55
+ await this.discover();
56
+ }
53
57
  async discoverGlobSkills(dir, source) {
54
58
  let entries;
55
59
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/skills/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/skills/registry.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,2DAA2D;AAC3D,mDAAmD;AACnD,mDAAmD;AACnD,wDAAwD;AACxD,wDAAwD;AACxD,wDAAwD;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAYH,MAAM,OAAO,aAAa;IAChB,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IACtC,MAAM,GAAG,SAAS,EAAE,CAAC;IACrB,aAAa,CAAS;IAE9B,YAAY,aAAqB;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QAEvB,MAAM,SAAS,GAAqF;YAClG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;YAC/F,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;YACpF,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE;YACjE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE;YACxF,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE;SAClF,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;oBAC3B,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,4DAA4D;YAC9D,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,0BAA0B,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,GAAW,EAAE,MAA8B;QAC1E,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAEhD,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;oBAAE,SAAS;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,GAAW,EAAE,MAA8B;QACzE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,QAAgB,EAChB,eAA8B,EAC9B,MAA8B;QAE9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAE7B,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,yCAAyC,CAAC,CAAC;gBACzG,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAEzB,4DAA4D;YAC5D,IAAI,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC9D,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,EACvD,qDAAqD,CACtD,CAAC;gBACF,OAAO;YACT,CAAC;YAED,mBAAmB;YACnB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,8DAA8D,CAAC,CAAC;gBACjH,OAAO;YACT,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ;gBACR,MAAM;gBACN,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,qCAAqC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,gBAAgB;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,sBAAsB,CAAC;QAEpD,OAAO,GAAG;aACP,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;aACzD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;CACF"}
@@ -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
- maxLength: number;
15
14
  url: string;
15
+ maxLength: number;
16
16
  timeout: number;
17
17
  }, {
18
18
  url: string;
@@ -38,10 +38,10 @@ declare const llmExecuteInputSchema: z.ZodObject<{
38
38
  temperature?: number | undefined;
39
39
  }>>;
40
40
  }, "strip", z.ZodTypeAny, {
41
- model: string;
42
41
  provider: "openai" | "openrouter" | "ollama";
43
- task: string;
42
+ model: string;
44
43
  prompt: string;
44
+ task: string;
45
45
  params?: {
46
46
  reasoning_effort?: "low" | "high" | "medium" | undefined;
47
47
  max_tokens?: number | undefined;
@@ -53,10 +53,10 @@ declare const llmExecuteInputSchema: z.ZodObject<{
53
53
  mimeType?: string | undefined;
54
54
  }[] | undefined;
55
55
  }, {
56
- model: string;
57
56
  provider: "openai" | "openrouter" | "ollama";
58
- task: string;
57
+ model: string;
59
58
  prompt: string;
59
+ task: string;
60
60
  params?: {
61
61
  reasoning_effort?: "low" | "high" | "medium" | undefined;
62
62
  max_tokens?: number | undefined;
@@ -117,10 +117,10 @@ export declare class LlmExecuteTool extends BaseTool<LlmExecuteInput, LlmExecute
117
117
  temperature?: number | undefined;
118
118
  }>>;
119
119
  }, "strip", z.ZodTypeAny, {
120
- model: string;
121
120
  provider: "openai" | "openrouter" | "ollama";
122
- task: string;
121
+ model: string;
123
122
  prompt: string;
123
+ task: string;
124
124
  params?: {
125
125
  reasoning_effort?: "low" | "high" | "medium" | undefined;
126
126
  max_tokens?: number | undefined;
@@ -132,10 +132,10 @@ export declare class LlmExecuteTool extends BaseTool<LlmExecuteInput, LlmExecute
132
132
  mimeType?: string | undefined;
133
133
  }[] | undefined;
134
134
  }, {
135
- model: string;
136
135
  provider: "openai" | "openrouter" | "ollama";
137
- task: string;
136
+ model: string;
138
137
  prompt: string;
138
+ task: string;
139
139
  params?: {
140
140
  reasoning_effort?: "low" | "high" | "medium" | undefined;
141
141
  max_tokens?: number | undefined;
@@ -27,8 +27,8 @@ declare const readEmailInputSchema: z.ZodObject<{
27
27
  }, {
28
28
  search?: string | undefined;
29
29
  maxResults?: number | undefined;
30
- sender?: string | undefined;
31
30
  unreadOnly?: boolean | undefined;
31
+ sender?: string | undefined;
32
32
  mailbox?: string | undefined;
33
33
  markAsRead?: boolean | undefined;
34
34
  snippets?: boolean | undefined;
@@ -32,12 +32,10 @@ declare const sendEmailInputSchema: z.ZodObject<{
32
32
  encoding?: "utf-8" | "base64" | undefined;
33
33
  }>, "many">>;
34
34
  }, "strip", z.ZodTypeAny, {
35
- body: string;
36
35
  to: string | string[];
36
+ body: string;
37
37
  subject: string;
38
38
  html: boolean;
39
- cc?: string | string[] | undefined;
40
- bcc?: string | string[] | undefined;
41
39
  attachments?: {
42
40
  filename: string;
43
41
  path?: string | undefined;
@@ -45,13 +43,12 @@ declare const sendEmailInputSchema: z.ZodObject<{
45
43
  contentType?: string | undefined;
46
44
  encoding?: "utf-8" | "base64" | undefined;
47
45
  }[] | undefined;
46
+ cc?: string | string[] | undefined;
47
+ bcc?: string | string[] | undefined;
48
48
  }, {
49
- body: string;
50
49
  to: string | string[];
50
+ body: string;
51
51
  subject: string;
52
- cc?: string | string[] | undefined;
53
- bcc?: string | string[] | undefined;
54
- html?: boolean | undefined;
55
52
  attachments?: {
56
53
  filename: string;
57
54
  path?: string | undefined;
@@ -59,6 +56,9 @@ declare const sendEmailInputSchema: z.ZodObject<{
59
56
  contentType?: string | undefined;
60
57
  encoding?: "utf-8" | "base64" | undefined;
61
58
  }[] | undefined;
59
+ cc?: string | string[] | undefined;
60
+ bcc?: string | string[] | undefined;
61
+ html?: boolean | undefined;
62
62
  }>;
63
63
  type SendEmailInput = z.infer<typeof sendEmailInputSchema>;
64
64
  interface SendEmailOutput {
@@ -12,8 +12,8 @@ declare const writeFileInputSchema: z.ZodObject<{
12
12
  mode: z.ZodDefault<z.ZodEnum<["overwrite", "append"]>>;
13
13
  }, "strip", z.ZodTypeAny, {
14
14
  path: string;
15
- content: string;
16
15
  mode: "overwrite" | "append";
16
+ content: string;
17
17
  }, {
18
18
  path: string;
19
19
  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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"}