@ugm/desiagent 0.2.0 → 0.2.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 (65) hide show
  1. package/README.md +77 -3
  2. package/dist/core/execution/agents.d.ts.map +1 -1
  3. package/dist/core/execution/agents.js +18 -4
  4. package/dist/core/execution/agents.js.map +1 -1
  5. package/dist/core/execution/dagExecutor.d.ts +8 -1
  6. package/dist/core/execution/dagExecutor.d.ts.map +1 -1
  7. package/dist/core/execution/dagExecutor.js +156 -28
  8. package/dist/core/execution/dagExecutor.js.map +1 -1
  9. package/dist/core/execution/dags.d.ts +10 -0
  10. package/dist/core/execution/dags.d.ts.map +1 -1
  11. package/dist/core/execution/dags.js +152 -88
  12. package/dist/core/execution/dags.js.map +1 -1
  13. package/dist/core/execution/inference.d.ts +10 -10
  14. package/dist/core/providers/openrouter.d.ts.map +1 -1
  15. package/dist/core/providers/openrouter.js +13 -7
  16. package/dist/core/providers/openrouter.js.map +1 -1
  17. package/dist/core/providers/types.d.ts +9 -0
  18. package/dist/core/providers/types.d.ts.map +1 -1
  19. package/dist/core/skills/detector.d.ts +8 -0
  20. package/dist/core/skills/detector.d.ts.map +1 -0
  21. package/dist/core/skills/detector.js +60 -0
  22. package/dist/core/skills/detector.js.map +1 -0
  23. package/dist/core/skills/registry.d.ts +44 -0
  24. package/dist/core/skills/registry.d.ts.map +1 -0
  25. package/dist/core/skills/registry.js +149 -0
  26. package/dist/core/skills/registry.js.map +1 -0
  27. package/dist/core/tools/edit.d.ts +1 -1
  28. package/dist/core/tools/fetchPage.d.ts +1 -1
  29. package/dist/core/tools/llmExecute.d.ts +17 -16
  30. package/dist/core/tools/llmExecute.d.ts.map +1 -1
  31. package/dist/core/tools/llmExecute.js +1 -0
  32. package/dist/core/tools/llmExecute.js.map +1 -1
  33. package/dist/core/tools/readEmail.d.ts +1 -1
  34. package/dist/core/tools/sendEmail.d.ts +11 -11
  35. package/dist/core/tools/writeFile.d.ts +3 -3
  36. package/dist/core/workers/statsQueue.d.ts +69 -0
  37. package/dist/core/workers/statsQueue.d.ts.map +1 -0
  38. package/dist/core/workers/statsQueue.js +106 -0
  39. package/dist/core/workers/statsQueue.js.map +1 -0
  40. package/dist/core/workers/statsWorker.d.ts +11 -0
  41. package/dist/core/workers/statsWorker.d.ts.map +1 -0
  42. package/dist/core/workers/statsWorker.js +235 -0
  43. package/dist/core/workers/statsWorker.js.map +1 -0
  44. package/dist/index.d.ts +3 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +27 -2
  47. package/dist/index.js.map +1 -1
  48. package/dist/services/agentsSeedData.d.ts.map +1 -1
  49. package/dist/services/agentsSeedData.js +14 -0
  50. package/dist/services/agentsSeedData.js.map +1 -1
  51. package/dist/test/setup.d.ts +1 -0
  52. package/dist/test/setup.d.ts.map +1 -0
  53. package/dist/test/setup.js +3 -0
  54. package/dist/test/setup.js.map +1 -0
  55. package/dist/types/client.d.ts +1 -0
  56. package/dist/types/client.d.ts.map +1 -1
  57. package/dist/types/config.d.ts +7 -2
  58. package/dist/types/config.d.ts.map +1 -1
  59. package/dist/types/config.js +3 -0
  60. package/dist/types/config.js.map +1 -1
  61. package/dist/types/dag.d.ts +20 -20
  62. package/dist/types/dag.js +1 -1
  63. package/dist/types/dag.js.map +1 -1
  64. package/dist/util/sendEmailTool.d.ts +11 -11
  65. package/package.json +2 -1
@@ -0,0 +1,149 @@
1
+ // SkillRegistry - Discovers and manages SKILL.md files from multiple locations.
2
+ //
3
+ // Discovery priority (first-match wins on name conflicts):
4
+ // 1. .agents/skills/<name>/SKILL.md (workspace)
5
+ // 2. skills/<name>/SKILL.md (workspace)
6
+ // 3. SKILL.md (workspace root)
7
+ // 4. ~/.config/agents/skills/<name>/SKILL.md (global)
8
+ // 5. ~/.desiAgent/skills/<name>/SKILL.md (global)
9
+ import { z } from 'zod';
10
+ import { resolve } from 'path';
11
+ import { homedir } from 'os';
12
+ import { readdir, readFile, stat } from 'fs/promises';
13
+ import matter from 'gray-matter';
14
+ import { getLogger } from '../../util/logger.js';
15
+ export const SkillFrontmatterSchema = z.object({
16
+ name: z.string().min(1),
17
+ description: z.string().min(10),
18
+ type: z.enum(['context', 'executable']).default('context'),
19
+ model: z.string().optional(),
20
+ provider: z.string().optional(),
21
+ });
22
+ export class SkillRegistry {
23
+ skills = new Map();
24
+ logger = getLogger();
25
+ workspaceRoot;
26
+ constructor(workspaceRoot) {
27
+ this.workspaceRoot = workspaceRoot;
28
+ }
29
+ async discover() {
30
+ const home = homedir();
31
+ const locations = [
32
+ { pattern: 'glob', dir: resolve(this.workspaceRoot, '.agents', 'skills'), source: 'workspace' },
33
+ { pattern: 'glob', dir: resolve(this.workspaceRoot, 'skills'), source: 'workspace' },
34
+ { pattern: 'root', dir: this.workspaceRoot, source: 'workspace' },
35
+ { pattern: 'glob', dir: resolve(home, '.config', 'agents', 'skills'), source: 'global' },
36
+ { pattern: 'glob', dir: resolve(home, '.desiAgent', 'skills'), source: 'global' },
37
+ ];
38
+ for (const loc of locations) {
39
+ try {
40
+ if (loc.pattern === 'root') {
41
+ await this.discoverRootSkill(loc.dir, loc.source);
42
+ }
43
+ else {
44
+ await this.discoverGlobSkills(loc.dir, loc.source);
45
+ }
46
+ }
47
+ catch {
48
+ // Directory doesn't exist or isn't readable — skip silently
49
+ }
50
+ }
51
+ this.logger.info({ count: this.skills.size }, 'Skill discovery complete');
52
+ }
53
+ async discoverGlobSkills(dir, source) {
54
+ let entries;
55
+ try {
56
+ entries = await readdir(dir);
57
+ }
58
+ catch {
59
+ return;
60
+ }
61
+ for (const entry of entries) {
62
+ const skillDir = resolve(dir, entry);
63
+ const skillFile = resolve(skillDir, 'SKILL.md');
64
+ try {
65
+ const st = await stat(skillDir);
66
+ if (!st.isDirectory())
67
+ continue;
68
+ }
69
+ catch {
70
+ continue;
71
+ }
72
+ try {
73
+ await stat(skillFile);
74
+ }
75
+ catch {
76
+ continue;
77
+ }
78
+ await this.parseAndRegister(skillFile, entry, source);
79
+ }
80
+ }
81
+ async discoverRootSkill(dir, source) {
82
+ const skillFile = resolve(dir, 'SKILL.md');
83
+ try {
84
+ await stat(skillFile);
85
+ }
86
+ catch {
87
+ return;
88
+ }
89
+ await this.parseAndRegister(skillFile, null, source);
90
+ }
91
+ async parseAndRegister(filePath, expectedDirName, source) {
92
+ try {
93
+ const raw = await readFile(filePath, 'utf-8');
94
+ const { data } = matter(raw);
95
+ const parsed = SkillFrontmatterSchema.safeParse(data);
96
+ if (!parsed.success) {
97
+ this.logger.warn({ filePath, errors: parsed.error.format() }, 'Invalid SKILL.md frontmatter — skipping');
98
+ return;
99
+ }
100
+ const meta = parsed.data;
101
+ // Enforce name === directory name (root SKILL.md is exempt)
102
+ if (expectedDirName !== null && meta.name !== expectedDirName) {
103
+ this.logger.warn({ filePath, expected: expectedDirName, got: meta.name }, 'Skill name does not match directory name — skipping');
104
+ return;
105
+ }
106
+ // First-match wins
107
+ if (this.skills.has(meta.name)) {
108
+ this.logger.debug({ name: meta.name, filePath }, 'Skill already registered — skipping lower-priority duplicate');
109
+ return;
110
+ }
111
+ this.skills.set(meta.name, {
112
+ name: meta.name,
113
+ description: meta.description,
114
+ type: meta.type,
115
+ filePath,
116
+ source,
117
+ model: meta.model,
118
+ provider: meta.provider,
119
+ });
120
+ this.logger.debug({ name: meta.name, source, filePath }, 'Registered skill');
121
+ }
122
+ catch (err) {
123
+ this.logger.warn({ filePath, err }, 'Failed to parse SKILL.md — skipping');
124
+ }
125
+ }
126
+ async loadContent(name) {
127
+ const skill = this.skills.get(name);
128
+ if (!skill)
129
+ return undefined;
130
+ const raw = await readFile(skill.filePath, 'utf-8');
131
+ const { content } = matter(raw);
132
+ return content;
133
+ }
134
+ getAll() {
135
+ return Array.from(this.skills.values());
136
+ }
137
+ getByName(name) {
138
+ return this.skills.get(name);
139
+ }
140
+ getFormattedList() {
141
+ const all = this.getAll();
142
+ if (all.length === 0)
143
+ return 'No skills available.';
144
+ return all
145
+ .map(s => `- **${s.name}** (${s.type}): ${s.description}`)
146
+ .join('\n');
147
+ }
148
+ }
149
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/skills/registry.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,8 @@ declare const editInputSchema: z.ZodObject<{
11
11
  newText: z.ZodString;
12
12
  replaceAll: z.ZodDefault<z.ZodBoolean>;
13
13
  }, "strip", z.ZodTypeAny, {
14
- replaceAll: boolean;
15
14
  path: string;
15
+ replaceAll: boolean;
16
16
  oldText: string;
17
17
  newText: string;
18
18
  }, {
@@ -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;
@@ -29,21 +29,21 @@ declare const llmExecuteInputSchema: z.ZodObject<{
29
29
  max_tokens: z.ZodOptional<z.ZodNumber>;
30
30
  temperature: z.ZodOptional<z.ZodNumber>;
31
31
  }, "strip", z.ZodTypeAny, {
32
- reasoning_effort?: "low" | "medium" | "high" | undefined;
32
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
33
33
  max_tokens?: number | undefined;
34
34
  temperature?: number | undefined;
35
35
  }, {
36
- reasoning_effort?: "low" | "medium" | "high" | undefined;
36
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
37
37
  max_tokens?: number | undefined;
38
38
  temperature?: number | undefined;
39
39
  }>>;
40
40
  }, "strip", z.ZodTypeAny, {
41
- provider: "openai" | "openrouter" | "ollama";
42
41
  model: string;
43
- prompt: string;
42
+ provider: "openai" | "openrouter" | "ollama";
44
43
  task: string;
44
+ prompt: string;
45
45
  params?: {
46
- reasoning_effort?: "low" | "medium" | "high" | undefined;
46
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
47
47
  max_tokens?: number | undefined;
48
48
  temperature?: number | undefined;
49
49
  } | undefined;
@@ -53,12 +53,12 @@ declare const llmExecuteInputSchema: z.ZodObject<{
53
53
  mimeType?: string | undefined;
54
54
  }[] | undefined;
55
55
  }, {
56
- provider: "openai" | "openrouter" | "ollama";
57
56
  model: string;
58
- prompt: string;
57
+ provider: "openai" | "openrouter" | "ollama";
59
58
  task: string;
59
+ prompt: string;
60
60
  params?: {
61
- reasoning_effort?: "low" | "medium" | "high" | undefined;
61
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
62
62
  max_tokens?: number | undefined;
63
63
  temperature?: number | undefined;
64
64
  } | undefined;
@@ -78,6 +78,7 @@ interface LlmExecuteOutput {
78
78
  };
79
79
  costUsd?: number;
80
80
  generationStats?: Record<string, any>;
81
+ generationId?: string;
81
82
  finishReason?: string;
82
83
  reasoning?: string;
83
84
  }
@@ -107,21 +108,21 @@ export declare class LlmExecuteTool extends BaseTool<LlmExecuteInput, LlmExecute
107
108
  max_tokens: z.ZodOptional<z.ZodNumber>;
108
109
  temperature: z.ZodOptional<z.ZodNumber>;
109
110
  }, "strip", z.ZodTypeAny, {
110
- reasoning_effort?: "low" | "medium" | "high" | undefined;
111
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
111
112
  max_tokens?: number | undefined;
112
113
  temperature?: number | undefined;
113
114
  }, {
114
- reasoning_effort?: "low" | "medium" | "high" | undefined;
115
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
115
116
  max_tokens?: number | undefined;
116
117
  temperature?: number | undefined;
117
118
  }>>;
118
119
  }, "strip", z.ZodTypeAny, {
119
- provider: "openai" | "openrouter" | "ollama";
120
120
  model: string;
121
- prompt: string;
121
+ provider: "openai" | "openrouter" | "ollama";
122
122
  task: string;
123
+ prompt: string;
123
124
  params?: {
124
- reasoning_effort?: "low" | "medium" | "high" | undefined;
125
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
125
126
  max_tokens?: number | undefined;
126
127
  temperature?: number | undefined;
127
128
  } | undefined;
@@ -131,12 +132,12 @@ export declare class LlmExecuteTool extends BaseTool<LlmExecuteInput, LlmExecute
131
132
  mimeType?: string | undefined;
132
133
  }[] | undefined;
133
134
  }, {
134
- provider: "openai" | "openrouter" | "ollama";
135
135
  model: string;
136
- prompt: string;
136
+ provider: "openai" | "openrouter" | "ollama";
137
137
  task: string;
138
+ prompt: string;
138
139
  params?: {
139
- reasoning_effort?: "low" | "medium" | "high" | undefined;
140
+ reasoning_effort?: "low" | "high" | "medium" | undefined;
140
141
  max_tokens?: number | undefined;
141
142
  temperature?: number | undefined;
142
143
  } | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"llmExecute.d.ts","sourceRoot":"","sources":["../../../src/core/tools/llmExecute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAgBvD,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,KAAK,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE7D,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAe,SAAQ,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC7E,IAAI,SAAgB;IACpB,WAAW,SAA2G;IACtH,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAyB;IAEpC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,mBAAmB,CAAC,CAAU;gBAE1B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE;IAO1F,OAAO,CAAC,WAAW;IAeb,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAwHnF"}
1
+ {"version":3,"file":"llmExecute.d.ts","sourceRoot":"","sources":["../../../src/core/tools/llmExecute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAgBvD,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,KAAK,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE7D,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAe,SAAQ,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC7E,IAAI,SAAgB;IACpB,WAAW,SAA2G;IACtH,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAyB;IAEpC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,mBAAmB,CAAC,CAAU;gBAE1B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE;IAO1F,OAAO,CAAC,WAAW;IAeb,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAyHnF"}
@@ -140,6 +140,7 @@ export class LlmExecuteTool extends BaseTool {
140
140
  usage: response.usage,
141
141
  costUsd: response.costUsd,
142
142
  generationStats: response.generationStats,
143
+ generationId: response.generationId,
143
144
  };
144
145
  }
145
146
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"llmExecute.js","sourceRoot":"","sources":["../../../src/core/tools/llmExecute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llmExecute.js","sourceRoot":"","sources":["../../../src/core/tools/llmExecute.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -20,45 +20,45 @@ declare const sendEmailInputSchema: z.ZodObject<{
20
20
  encoding: z.ZodOptional<z.ZodEnum<["base64", "utf-8"]>>;
21
21
  }, "strip", z.ZodTypeAny, {
22
22
  filename: string;
23
- content?: string | undefined;
24
23
  path?: string | undefined;
24
+ content?: string | undefined;
25
25
  contentType?: string | undefined;
26
26
  encoding?: "utf-8" | "base64" | undefined;
27
27
  }, {
28
28
  filename: string;
29
- content?: string | undefined;
30
29
  path?: string | undefined;
30
+ content?: string | undefined;
31
31
  contentType?: string | undefined;
32
32
  encoding?: "utf-8" | "base64" | undefined;
33
33
  }>, "many">>;
34
34
  }, "strip", z.ZodTypeAny, {
35
35
  body: string;
36
- subject: string;
37
36
  to: string | string[];
37
+ subject: string;
38
38
  html: boolean;
39
+ cc?: string | string[] | undefined;
40
+ bcc?: string | string[] | undefined;
39
41
  attachments?: {
40
42
  filename: string;
41
- content?: string | undefined;
42
43
  path?: string | undefined;
44
+ content?: string | undefined;
43
45
  contentType?: string | undefined;
44
46
  encoding?: "utf-8" | "base64" | undefined;
45
47
  }[] | undefined;
46
- cc?: string | string[] | undefined;
47
- bcc?: string | string[] | undefined;
48
48
  }, {
49
49
  body: string;
50
- subject: string;
51
50
  to: string | string[];
51
+ subject: string;
52
+ cc?: string | string[] | undefined;
53
+ bcc?: string | string[] | undefined;
54
+ html?: boolean | undefined;
52
55
  attachments?: {
53
56
  filename: string;
54
- content?: string | undefined;
55
57
  path?: string | undefined;
58
+ content?: string | undefined;
56
59
  contentType?: string | undefined;
57
60
  encoding?: "utf-8" | "base64" | undefined;
58
61
  }[] | 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 {
@@ -11,12 +11,12 @@ 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
- content: string;
16
14
  path: string;
17
- }, {
18
15
  content: string;
16
+ mode: "overwrite" | "append";
17
+ }, {
19
18
  path: string;
19
+ content: string;
20
20
  mode?: "overwrite" | "append" | undefined;
21
21
  }>;
22
22
  type WriteFileInput = z.infer<typeof writeFileInputSchema>;
@@ -0,0 +1,69 @@
1
+ /**
2
+ * StatsQueue - Main-thread interface for enqueueing generation stats updates
3
+ *
4
+ * Spawns a Bun Worker thread that fetches OpenRouter generation stats
5
+ * and updates the DB in the background, keeping the hot path fast.
6
+ */
7
+ /**
8
+ * A stats update job to be processed by the worker.
9
+ */
10
+ export interface StatsJob {
11
+ /** Which table to update */
12
+ table: 'sub_steps' | 'dag_executions' | 'dags';
13
+ /** Row ID in that table (dagId for 'dags', executionId for 'dag_executions') */
14
+ id: string;
15
+ /** OpenRouter generation ID for fetching stats */
16
+ generationId: string;
17
+ /**
18
+ * For 'sub_steps': the taskId used with executionId to locate the row.
19
+ */
20
+ taskId?: string;
21
+ /**
22
+ * For 'sub_steps': the executionId the sub-step belongs to.
23
+ */
24
+ executionId?: string;
25
+ /**
26
+ * For 'dags' table: which planning attempt index to annotate with costUsd/generationStats.
27
+ * The worker reads the current planningAttempts JSON, patches the entry, and recalculates totals.
28
+ */
29
+ attemptIndex?: number;
30
+ }
31
+ /**
32
+ * Message sent from main thread → worker
33
+ */
34
+ export interface WorkerInMessage {
35
+ type: 'job' | 'shutdown';
36
+ job?: StatsJob;
37
+ }
38
+ /**
39
+ * Message sent from worker → main thread
40
+ */
41
+ export interface WorkerOutMessage {
42
+ type: 'done' | 'error' | 'drained';
43
+ table?: string;
44
+ id?: string;
45
+ error?: string;
46
+ }
47
+ export declare class StatsQueue {
48
+ private worker;
49
+ private logger;
50
+ private dbPath;
51
+ private apiKey;
52
+ private pendingCount;
53
+ constructor(dbPath: string, apiKey: string);
54
+ /**
55
+ * Start the background worker. Safe to call multiple times (idempotent).
56
+ */
57
+ start(): void;
58
+ /**
59
+ * Enqueue a stats update job for background processing.
60
+ * If the worker isn't started, silently drops the job with a warning.
61
+ */
62
+ enqueue(job: StatsJob): void;
63
+ /**
64
+ * Gracefully terminate the worker after all pending jobs are processed.
65
+ * Waits up to DRAIN_TIMEOUT_MS for the worker to drain, then force-terminates.
66
+ */
67
+ terminate(): Promise<void>;
68
+ }
69
+ //# sourceMappingURL=statsQueue.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * StatsQueue - Main-thread interface for enqueueing generation stats updates
3
+ *
4
+ * Spawns a Bun Worker thread that fetches OpenRouter generation stats
5
+ * and updates the DB in the background, keeping the hot path fast.
6
+ */
7
+ import { getLogger } from '../../util/logger.js';
8
+ /** Max time (ms) to wait for the worker to drain before force-terminating */
9
+ const DRAIN_TIMEOUT_MS = 30_000;
10
+ export class StatsQueue {
11
+ worker = null;
12
+ logger = getLogger();
13
+ dbPath;
14
+ apiKey;
15
+ pendingCount = 0;
16
+ constructor(dbPath, apiKey) {
17
+ this.dbPath = dbPath;
18
+ this.apiKey = apiKey;
19
+ }
20
+ /**
21
+ * Start the background worker. Safe to call multiple times (idempotent).
22
+ */
23
+ start() {
24
+ if (this.worker)
25
+ return;
26
+ const workerUrl = new URL('./statsWorker.js', import.meta.url).href;
27
+ this.worker = new Worker(workerUrl);
28
+ // Send init config
29
+ this.worker.postMessage({
30
+ type: 'init',
31
+ dbPath: this.dbPath,
32
+ apiKey: this.apiKey,
33
+ });
34
+ this.worker.onmessage = (event) => {
35
+ const msg = event.data;
36
+ if (msg.type === 'done') {
37
+ this.pendingCount--;
38
+ this.logger.debug({ table: msg.table, id: msg.id }, 'StatsWorker: update complete');
39
+ }
40
+ else if (msg.type === 'error') {
41
+ this.pendingCount--;
42
+ this.logger.warn({ table: msg.table, id: msg.id, error: msg.error }, 'StatsWorker: update failed');
43
+ }
44
+ // 'drained' is handled by the terminate() promise listener
45
+ };
46
+ this.worker.onerror = (event) => {
47
+ this.logger.error({ error: event.message }, 'StatsWorker: worker error');
48
+ };
49
+ // Don't let the worker keep the process alive during normal operation
50
+ this.worker.unref();
51
+ this.logger.info('StatsQueue: background worker started');
52
+ }
53
+ /**
54
+ * Enqueue a stats update job for background processing.
55
+ * If the worker isn't started, silently drops the job with a warning.
56
+ */
57
+ enqueue(job) {
58
+ if (!this.worker) {
59
+ this.logger.warn({ job }, 'StatsQueue: worker not started, dropping job');
60
+ return;
61
+ }
62
+ this.pendingCount++;
63
+ const msg = { type: 'job', job };
64
+ this.worker.postMessage(msg);
65
+ this.logger.debug({ table: job.table, id: job.id, generationId: job.generationId }, 'StatsQueue: job enqueued');
66
+ }
67
+ /**
68
+ * Gracefully terminate the worker after all pending jobs are processed.
69
+ * Waits up to DRAIN_TIMEOUT_MS for the worker to drain, then force-terminates.
70
+ */
71
+ async terminate() {
72
+ if (!this.worker)
73
+ return;
74
+ // Fast path: no pending work
75
+ if (this.pendingCount <= 0) {
76
+ this.worker.terminate();
77
+ this.worker = null;
78
+ this.logger.info('StatsQueue: worker terminated (no pending jobs)');
79
+ return;
80
+ }
81
+ this.logger.info({ pendingCount: this.pendingCount }, 'StatsQueue: draining pending jobs before shutdown');
82
+ // Need to ref the worker so the process stays alive while draining
83
+ this.worker.ref();
84
+ const worker = this.worker;
85
+ await new Promise((resolve) => {
86
+ const timeout = setTimeout(() => {
87
+ this.logger.warn({ pendingCount: this.pendingCount }, 'StatsQueue: drain timeout reached, force-terminating');
88
+ worker.terminate();
89
+ resolve();
90
+ }, DRAIN_TIMEOUT_MS);
91
+ const onMessage = (event) => {
92
+ if (event.data.type === 'drained') {
93
+ clearTimeout(timeout);
94
+ worker.terminate();
95
+ this.logger.info('StatsQueue: worker drained and terminated');
96
+ resolve();
97
+ }
98
+ };
99
+ worker.addEventListener('message', onMessage);
100
+ worker.postMessage({ type: 'shutdown' });
101
+ });
102
+ this.worker = null;
103
+ this.pendingCount = 0;
104
+ }
105
+ }
106
+ //# sourceMappingURL=statsQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statsQueue.js","sourceRoot":"","sources":["../../../src/core/workers/statsQueue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * StatsWorker - Background Bun Worker thread
3
+ *
4
+ * Receives stats jobs from the main thread, fetches generation stats
5
+ * from OpenRouter, and updates the appropriate DB tables.
6
+ *
7
+ * Runs on a separate thread with its own DB connection.
8
+ * Supports graceful shutdown: drains all pending jobs before exiting.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=statsWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statsWorker.d.ts","sourceRoot":"","sources":["../../../src/core/workers/statsWorker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}