@sulala/agent 0.1.39 → 0.1.40

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 (105) hide show
  1. package/README.md +7 -1
  2. package/dashboard/dist/assets/index-CpWzBXHV.js +88 -0
  3. package/dashboard/dist/assets/index-DUAWeMLm.css +1 -0
  4. package/dashboard/dist/index.html +2 -2
  5. package/dist/agent/content-writer-agent.d.ts +52 -0
  6. package/dist/agent/content-writer-agent.d.ts.map +1 -0
  7. package/dist/agent/content-writer-agent.js +271 -0
  8. package/dist/agent/content-writer-agent.js.map +1 -0
  9. package/dist/agent/execution-context.d.ts +45 -0
  10. package/dist/agent/execution-context.d.ts.map +1 -0
  11. package/dist/agent/execution-context.js +31 -0
  12. package/dist/agent/execution-context.js.map +1 -0
  13. package/dist/agent/lead-agent-schedule.d.ts +10 -0
  14. package/dist/agent/lead-agent-schedule.d.ts.map +1 -0
  15. package/dist/agent/lead-agent-schedule.js +49 -0
  16. package/dist/agent/lead-agent-schedule.js.map +1 -0
  17. package/dist/agent/lead-agent.d.ts +60 -0
  18. package/dist/agent/lead-agent.d.ts.map +1 -0
  19. package/dist/agent/lead-agent.js +205 -0
  20. package/dist/agent/lead-agent.js.map +1 -0
  21. package/dist/agent/loop.d.ts.map +1 -1
  22. package/dist/agent/loop.js +66 -21
  23. package/dist/agent/loop.js.map +1 -1
  24. package/dist/agent/news-social-agent-schedule.d.ts +5 -0
  25. package/dist/agent/news-social-agent-schedule.d.ts.map +1 -0
  26. package/dist/agent/news-social-agent-schedule.js +42 -0
  27. package/dist/agent/news-social-agent-schedule.js.map +1 -0
  28. package/dist/agent/news-social-agent.d.ts +52 -0
  29. package/dist/agent/news-social-agent.d.ts.map +1 -0
  30. package/dist/agent/news-social-agent.js +199 -0
  31. package/dist/agent/news-social-agent.js.map +1 -0
  32. package/dist/agent/run-cancel.d.ts +20 -0
  33. package/dist/agent/run-cancel.d.ts.map +1 -0
  34. package/dist/agent/run-cancel.js +38 -0
  35. package/dist/agent/run-cancel.js.map +1 -0
  36. package/dist/agent/skills.d.ts.map +1 -1
  37. package/dist/agent/skills.js +97 -118
  38. package/dist/agent/skills.js.map +1 -1
  39. package/dist/agent/social-agent.d.ts +46 -0
  40. package/dist/agent/social-agent.d.ts.map +1 -0
  41. package/dist/agent/social-agent.js +199 -0
  42. package/dist/agent/social-agent.js.map +1 -0
  43. package/dist/agent/tool/spec-loader.d.ts.map +1 -1
  44. package/dist/agent/tool/spec-loader.js +62 -8
  45. package/dist/agent/tool/spec-loader.js.map +1 -1
  46. package/dist/agent/tools.d.ts.map +1 -1
  47. package/dist/agent/tools.js +204 -4
  48. package/dist/agent/tools.js.map +1 -1
  49. package/dist/agent/workflow-agents-schedule.d.ts +14 -0
  50. package/dist/agent/workflow-agents-schedule.d.ts.map +1 -0
  51. package/dist/agent/workflow-agents-schedule.js +46 -0
  52. package/dist/agent/workflow-agents-schedule.js.map +1 -0
  53. package/dist/agent/workflow-agents.d.ts +38 -0
  54. package/dist/agent/workflow-agents.d.ts.map +1 -0
  55. package/dist/agent/workflow-agents.js +155 -0
  56. package/dist/agent/workflow-agents.js.map +1 -0
  57. package/dist/agent/workflow-folder.d.ts +18 -0
  58. package/dist/agent/workflow-folder.d.ts.map +1 -0
  59. package/dist/agent/workflow-folder.js +57 -0
  60. package/dist/agent/workflow-folder.js.map +1 -0
  61. package/dist/agent/workflow-runner.d.ts +16 -0
  62. package/dist/agent/workflow-runner.d.ts.map +1 -0
  63. package/dist/agent/workflow-runner.js +163 -0
  64. package/dist/agent/workflow-runner.js.map +1 -0
  65. package/dist/channels/telegram.d.ts +15 -0
  66. package/dist/channels/telegram.d.ts.map +1 -1
  67. package/dist/channels/telegram.js +100 -0
  68. package/dist/channels/telegram.js.map +1 -1
  69. package/dist/config.d.ts +11 -0
  70. package/dist/config.d.ts.map +1 -1
  71. package/dist/config.js +74 -2
  72. package/dist/config.js.map +1 -1
  73. package/dist/db/index.d.ts +78 -1
  74. package/dist/db/index.d.ts.map +1 -1
  75. package/dist/db/index.js +279 -0
  76. package/dist/db/index.js.map +1 -1
  77. package/dist/db/schema.sql +47 -0
  78. package/dist/gateway/server.d.ts.map +1 -1
  79. package/dist/gateway/server.js +1057 -13
  80. package/dist/gateway/server.js.map +1 -1
  81. package/dist/index.js +315 -2
  82. package/dist/index.js.map +1 -1
  83. package/dist/media/upload-handlers/dropbox.d.ts +2 -0
  84. package/dist/media/upload-handlers/dropbox.d.ts.map +1 -0
  85. package/dist/media/upload-handlers/dropbox.js +67 -0
  86. package/dist/media/upload-handlers/dropbox.js.map +1 -0
  87. package/dist/onboard-env.d.ts +9 -1
  88. package/dist/onboard-env.d.ts.map +1 -1
  89. package/dist/onboard-env.js +15 -1
  90. package/dist/onboard-env.js.map +1 -1
  91. package/dist/onboard.d.ts.map +1 -1
  92. package/dist/onboard.js +7 -0
  93. package/dist/onboard.js.map +1 -1
  94. package/dist/tailscale.d.ts +5 -0
  95. package/dist/tailscale.d.ts.map +1 -0
  96. package/dist/tailscale.js +36 -0
  97. package/dist/tailscale.js.map +1 -0
  98. package/dist/types.d.ts +16 -0
  99. package/dist/types.d.ts.map +1 -1
  100. package/package.json +16 -2
  101. package/src/db/schema.sql +47 -0
  102. package/src/index.ts +326 -2
  103. package/bin/sulala.mjs +0 -7
  104. package/dashboard/dist/assets/index-C-H2KUVU.js +0 -88
  105. package/dashboard/dist/assets/index-CG6dieHw.css +0 -1
package/dist/config.js CHANGED
@@ -2,7 +2,7 @@ import 'dotenv/config';
2
2
  import { readFileSync, existsSync, readdirSync } from 'fs';
3
3
  import { join, dirname } from 'path';
4
4
  /** Use os.homedir() for cross-platform home (Unix: $HOME / Windows: USERPROFILE). */
5
- import { homedir } from 'os';
5
+ import { homedir, networkInterfaces } from 'os';
6
6
  function expandTilde(p) {
7
7
  if (!p || typeof p !== 'string')
8
8
  return undefined;
@@ -23,6 +23,8 @@ const SULALA_ENV_LOAD_KEYS = [
23
23
  'OPENAI_API_KEY', 'OPENROUTER_API_KEY', 'ANTHROPIC_API_KEY', 'GOOGLE_GEMINI_API_KEY', 'GEMINI_API_KEY',
24
24
  'OLLAMA_BASE_URL', 'AI_DEFAULT_PROVIDER', 'GATEWAY_API_KEY', 'PORTAL_GATEWAY_URL', 'PORTAL_API_KEY',
25
25
  'INTEGRATIONS_URL', 'STORE_PUBLISH_API_KEY', 'ALLOWED_BINARIES', 'STRIPE_SECRET_KEY', 'DISCORD_BOT_TOKEN',
26
+ 'SERPER_API_KEY', 'SULALA_BIND', 'SULALA_ALLOW_UNPROTECTED_BIND',
27
+ 'SULALA_TAILSCALE_SERVE', 'SULALA_TAILSCALE_RESET_ON_EXIT', 'SULALA_TAILSCALE_TRUST_TAILNET',
26
28
  ];
27
29
  (function loadSulalaEnv() {
28
30
  const path = join(homedir(), '.sulala', '.env');
@@ -173,9 +175,79 @@ function parseToolProfile(v) {
173
175
  return v;
174
176
  return 'full';
175
177
  }
178
+ /** Resolve bind mode: SULALA_BIND=all → 0.0.0.0, else use HOST. */
179
+ function resolveHost() {
180
+ const bind = (process.env.SULALA_BIND || '').toLowerCase().trim();
181
+ if (bind === 'all')
182
+ return '0.0.0.0';
183
+ return process.env.HOST || '127.0.0.1';
184
+ }
185
+ /** Return true if host is loopback (127.0.0.1 or localhost). */
186
+ export function isLoopbackBind(host) {
187
+ const h = (host || '').toLowerCase().trim();
188
+ return h === '127.0.0.1' || h === 'localhost' || h === '::1';
189
+ }
190
+ /** Return true if remoteAddress is a Tailscale tailnet IP (100.64.0.0/10). */
191
+ export function isTailnetRequest(remoteAddress) {
192
+ const addr = (remoteAddress || '').trim();
193
+ if (!addr)
194
+ return false;
195
+ const v4 = addr.startsWith('::ffff:') ? addr.slice(7) : addr;
196
+ if (v4.startsWith('100.'))
197
+ return true;
198
+ return false;
199
+ }
200
+ /** Return true if remoteAddress is loopback, a local interface IP, or (when SULALA_TAILSCALE_TRUST_TAILNET=1) a tailnet IP. */
201
+ export function isLocalRequest(remoteAddress) {
202
+ const addr = (remoteAddress || '').trim();
203
+ if (!addr)
204
+ return false;
205
+ if (isLoopbackBind(addr))
206
+ return true;
207
+ if (process.env.SULALA_TAILSCALE_TRUST_TAILNET === '1' && isTailnetRequest(addr))
208
+ return true;
209
+ const addrV4 = addr.startsWith('::ffff:') ? addr.slice(7) : addr;
210
+ try {
211
+ const nets = networkInterfaces();
212
+ for (const entries of Object.values(nets || {})) {
213
+ for (const n of entries || []) {
214
+ if (n.address === addr || n.address === addrV4)
215
+ return true;
216
+ }
217
+ }
218
+ }
219
+ catch {
220
+ /* ignore */
221
+ }
222
+ return false;
223
+ }
224
+ /**
225
+ * When binding beyond loopback, require GATEWAY_API_KEY unless SULALA_ALLOW_UNPROTECTED_BIND=1.
226
+ * Auto-generates and persists key if missing (like OpenClaw). Call before server.listen().
227
+ */
228
+ export async function ensureProtectedBindOrExit() {
229
+ const host = config.host;
230
+ if (isLoopbackBind(host))
231
+ return;
232
+ const allowUnprotected = process.env.SULALA_ALLOW_UNPROTECTED_BIND === '1';
233
+ if (allowUnprotected)
234
+ return;
235
+ let hasKey = !!config.gatewayApiKey?.trim();
236
+ if (!hasKey) {
237
+ const { ensureOrGenerateGatewayApiKey } = await import('./onboard-env.js');
238
+ const { key, generated } = ensureOrGenerateGatewayApiKey();
239
+ process.env.GATEWAY_API_KEY = key;
240
+ config.gatewayApiKey = key;
241
+ if (generated) {
242
+ console.log('[Sulala] Gateway API key auto-generated. Add to Settings → Remote Gateway or VITE_GATEWAY_API_KEY in dashboard/.env');
243
+ console.log(`GATEWAY_API_KEY=${key}`);
244
+ }
245
+ return;
246
+ }
247
+ }
176
248
  export const config = {
177
249
  port: parseInt(process.env.PORT || '2026', 10),
178
- host: process.env.HOST || '127.0.0.1',
250
+ host: resolveHost(),
179
251
  dbPath: process.env.DB_PATH || './data/sulala.db',
180
252
  watchFolders: loadWatchFolders(),
181
253
  debug: !!process.env.DEBUG,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { InsertTaskPayload, AgentSessionRow, AgentMessageRow } from '../types.js';
1
+ import type { InsertTaskPayload, AgentSessionRow, AgentMessageRow, AgentRow } from '../types.js';
2
2
  /** Wrapper that matches better-sqlite3-style API for drop-in replacement. */
3
3
  export interface SqliteDb {
4
4
  prepare(sql: string): {
@@ -38,6 +38,34 @@ export interface FileStateRow {
38
38
  meta: string | null;
39
39
  }
40
40
  export declare function getFileStates(limit?: number): FileStateRow[];
41
+ export declare function listAgents(enabledOnly?: boolean): AgentRow[];
42
+ export declare function getAgentById(id: string): AgentRow | null;
43
+ export declare function getAgentBySlug(slug: string): AgentRow | null;
44
+ export declare function upsertAgent(agent: {
45
+ id?: string;
46
+ slug: string;
47
+ name: string;
48
+ description?: string;
49
+ persona_prompt?: string | null;
50
+ default_provider?: string | null;
51
+ default_model?: string | null;
52
+ default_tools?: string[] | null;
53
+ default_skills?: string[] | null;
54
+ workspace_root?: string | null;
55
+ enabled?: boolean;
56
+ }): AgentRow;
57
+ export declare function ensureBuiltInAgents(): void;
58
+ export interface AgentMetricRow {
59
+ id?: number;
60
+ agent_id: string;
61
+ metric_name: string;
62
+ value: string | null;
63
+ numeric_value: number | null;
64
+ created_at: number;
65
+ updated_at: number;
66
+ }
67
+ export declare function recordAgentMetric(agentId: string, metricName: string, numericValue?: number, stringValue?: string): void;
68
+ export declare function getLatestAgentMetrics(agentId: string): Record<string, AgentMetricRow>;
41
69
  export declare function createAgentSession(sessionKey: string, meta?: Record<string, unknown> | null): AgentSessionRow;
42
70
  export declare function getAgentSessionById(id: string): AgentSessionRow | null;
43
71
  export declare function getAgentSessionByKey(sessionKey: string): AgentSessionRow | null;
@@ -118,6 +146,42 @@ export declare function updateScheduledJob(id: string, updates: {
118
146
  enabled?: number;
119
147
  }): void;
120
148
  export declare function deleteScheduledJob(id: string): void;
149
+ export interface WorkflowStep {
150
+ order: number;
151
+ agentSlug: string;
152
+ }
153
+ export interface WorkflowRow {
154
+ id: string;
155
+ name: string;
156
+ description: string;
157
+ steps: string;
158
+ cron_expression: string;
159
+ enabled: number;
160
+ approve_before_social_post: number;
161
+ created_at: number;
162
+ updated_at: number;
163
+ }
164
+ export declare function getScheduledJobIdForWorkflow(workflowId: string): string;
165
+ export declare function listWorkflows(): WorkflowRow[];
166
+ export declare function getWorkflow(id: string): WorkflowRow | null;
167
+ export declare function insertWorkflow(row: {
168
+ id: string;
169
+ name?: string;
170
+ description?: string;
171
+ steps: string;
172
+ cron_expression: string;
173
+ enabled?: number;
174
+ approve_before_social_post?: number;
175
+ }): WorkflowRow;
176
+ export declare function updateWorkflow(id: string, updates: {
177
+ name?: string;
178
+ description?: string;
179
+ steps?: string;
180
+ cron_expression?: string;
181
+ enabled?: number;
182
+ approve_before_social_post?: number;
183
+ }): void;
184
+ export declare function deleteWorkflow(id: string): void;
121
185
  export declare function getTasksForJob(jobId: string, limit?: number): Array<{
122
186
  id: string;
123
187
  type: string;
@@ -131,4 +195,17 @@ export declare function getTasksForJob(jobId: string, limit?: number): Array<{
131
195
  created_at: number;
132
196
  updated_at: number;
133
197
  }>;
198
+ export type UsageSummary = {
199
+ fromMs: number;
200
+ toMs: number;
201
+ totalMessages: number;
202
+ promptTokens: number;
203
+ completionTokens: number;
204
+ totalTokens: number;
205
+ costUsd: number;
206
+ };
207
+ export declare function getUsageSummary(options?: {
208
+ fromMs?: number;
209
+ toMs?: number;
210
+ }): UsageSummary;
134
211
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"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"}
package/dist/db/index.js CHANGED
@@ -158,6 +158,31 @@ export async function initDb(path = './data/sulala.db') {
158
158
  catch {
159
159
  // ignore
160
160
  }
161
+ // Migration: workflows table
162
+ try {
163
+ nativeDb.exec(`
164
+ CREATE TABLE IF NOT EXISTS workflows (
165
+ id TEXT PRIMARY KEY,
166
+ name TEXT NOT NULL DEFAULT '',
167
+ description TEXT NOT NULL DEFAULT '',
168
+ steps TEXT NOT NULL,
169
+ cron_expression TEXT NOT NULL,
170
+ enabled INTEGER NOT NULL DEFAULT 1,
171
+ approve_before_social_post INTEGER NOT NULL DEFAULT 1,
172
+ created_at INTEGER NOT NULL,
173
+ updated_at INTEGER NOT NULL
174
+ );
175
+ CREATE INDEX IF NOT EXISTS idx_workflows_enabled ON workflows(enabled);
176
+ `);
177
+ const wfInfo = nativeDb.exec('PRAGMA table_info(workflows)');
178
+ const wfCols = (wfInfo[0]?.values?.map((r) => r[1]) ?? []);
179
+ if (!wfCols.some((c) => c === 'approve_before_social_post')) {
180
+ nativeDb.exec('ALTER TABLE workflows ADD COLUMN approve_before_social_post INTEGER NOT NULL DEFAULT 1');
181
+ }
182
+ }
183
+ catch {
184
+ // ignore
185
+ }
161
186
  db = createWrapper(nativeDb);
162
187
  return db;
163
188
  }
@@ -253,6 +278,171 @@ export function getFileStates(limit = 200) {
253
278
  const d = getDb();
254
279
  return d.prepare('SELECT * FROM file_states ORDER BY last_seen DESC LIMIT ?').all(limit);
255
280
  }
281
+ // --- Agents (Agent OS v1) ---
282
+ export function listAgents(enabledOnly = false) {
283
+ const d = getDb();
284
+ if (enabledOnly) {
285
+ return d.prepare('SELECT * FROM agents WHERE enabled = 1 ORDER BY created_at ASC').all();
286
+ }
287
+ return d.prepare('SELECT * FROM agents ORDER BY created_at ASC').all();
288
+ }
289
+ export function getAgentById(id) {
290
+ const d = getDb();
291
+ const row = d.prepare('SELECT * FROM agents WHERE id = ?').get(id);
292
+ return row ?? null;
293
+ }
294
+ export function getAgentBySlug(slug) {
295
+ const d = getDb();
296
+ const row = d.prepare('SELECT * FROM agents WHERE slug = ?').get(slug);
297
+ return row ?? null;
298
+ }
299
+ export function upsertAgent(agent) {
300
+ const d = getDb();
301
+ const now = Date.now();
302
+ const existing = getAgentBySlug(agent.slug);
303
+ const id = agent.id ?? existing?.id ?? `agent_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
304
+ const description = agent.description ?? existing?.description ?? '';
305
+ const persona = agent.persona_prompt ?? existing?.persona_prompt ?? null;
306
+ const provider = agent.default_provider ?? existing?.default_provider ?? null;
307
+ const model = agent.default_model ?? existing?.default_model ?? null;
308
+ const toolsJson = agent.default_tools != null
309
+ ? JSON.stringify(agent.default_tools)
310
+ : existing?.default_tools ?? null;
311
+ const skillsJson = agent.default_skills != null
312
+ ? JSON.stringify(agent.default_skills)
313
+ : existing?.default_skills ?? null;
314
+ const workspace = agent.workspace_root ?? existing?.workspace_root ?? null;
315
+ const enabled = agent.enabled != null ? (agent.enabled ? 1 : 0) : existing?.enabled ?? 1;
316
+ if (existing) {
317
+ d.prepare(`UPDATE agents
318
+ SET name = ?, description = ?, persona_prompt = ?, default_provider = ?, default_model = ?,
319
+ default_tools = ?, default_skills = ?, workspace_root = ?, enabled = ?, updated_at = ?
320
+ WHERE id = ?`).run(agent.name, description, persona, provider, model, toolsJson, skillsJson, workspace, enabled, now, existing.id);
321
+ return getAgentById(existing.id);
322
+ }
323
+ d.prepare(`INSERT INTO agents
324
+ (id, slug, name, description, persona_prompt, default_provider, default_model,
325
+ default_tools, default_skills, workspace_root, enabled, created_at, updated_at)
326
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, agent.slug, agent.name, description, persona, provider, model, toolsJson, skillsJson, workspace, enabled, now, now);
327
+ return getAgentById(id);
328
+ }
329
+ export function ensureBuiltInAgents() {
330
+ // Remove deprecated General Assistant (no longer seeded)
331
+ // const deprecated = getAgentBySlug('general-assistant');
332
+ // if (deprecated) {
333
+ // const d = getDb();
334
+ // d.prepare('DELETE FROM agent_metrics WHERE agent_id = ?').run(deprecated.id);
335
+ // d.prepare('DELETE FROM agents WHERE slug = ?').run('general-assistant');
336
+ // log('db', 'info', 'Removed deprecated agent: general-assistant');
337
+ // }
338
+ const built = [
339
+ {
340
+ slug: 'lead-agent',
341
+ name: 'Lead Agent',
342
+ description: 'Autonomous lead generation — discovers, enriches, scores, and deduplicates qualified leads on a schedule, then delivers reports to the dashboard.',
343
+ persona_prompt: 'You are a lead generation specialist. Use your tools to discover, research, and score potential leads against ICP, then store them and generate reports.',
344
+ default_provider: 'openai',
345
+ default_model: 'gpt-4o-mini',
346
+ },
347
+ {
348
+ slug: 'news-social-agent',
349
+ name: 'News & Social Agent',
350
+ description: 'Finds hot news from the web, posts to connected social media (Bluesky, X), and reports results to Telegram.',
351
+ persona_prompt: 'You are a news curator and social media assistant. Find trending and relevant news, craft engaging posts, share to connected social platforms, and report summaries to the user via Telegram.',
352
+ default_provider: 'openai',
353
+ default_model: 'gpt-4o-mini',
354
+ },
355
+ {
356
+ slug: 'email-digest-agent',
357
+ name: 'Email Digest Agent',
358
+ description: 'Summarizes unread inbox daily, highlights important emails, and sends a digest to Telegram.',
359
+ persona_prompt: 'You are an email assistant. Summarize unread emails, highlight the most important ones with senders and subjects, and send a concise digest to the user via Telegram.',
360
+ default_provider: 'openai',
361
+ default_model: 'gpt-4o-mini',
362
+ },
363
+ {
364
+ slug: 'calendar-briefing-agent',
365
+ name: 'Calendar Briefing Agent',
366
+ description: 'Daily morning briefing: today\'s meetings, conflicts, and prep notes.',
367
+ persona_prompt: 'You are a calendar assistant. List today\'s events and the next 7 days, note any conflicts or back-to-back meetings, and send a concise briefing to the user via Telegram.',
368
+ default_provider: 'openai',
369
+ default_model: 'gpt-4o-mini',
370
+ },
371
+ {
372
+ slug: 'revenue-reporter-agent',
373
+ name: 'Revenue Reporter Agent',
374
+ description: 'Daily business metrics: revenue, MRR, failed payments, new customers from Stripe.',
375
+ persona_prompt: 'You are a business metrics assistant. Fetch Stripe data: recent customers, revenue this month, failed payments. Send a short overview to the user via Telegram.',
376
+ default_provider: 'openai',
377
+ default_model: 'gpt-4o-mini',
378
+ },
379
+ {
380
+ slug: 'task-digest-agent',
381
+ name: 'Task Digest Agent',
382
+ description: 'Summarizes Linear/Jira backlog: overdue items, blockers, sprint status.',
383
+ persona_prompt: 'You are a task management assistant. List open issues, overdue items, and blockers from Linear or Jira. Send a concise digest to the user via Telegram.',
384
+ default_provider: 'openai',
385
+ default_model: 'gpt-4o-mini',
386
+ },
387
+ {
388
+ slug: 'competitor-monitor-agent',
389
+ name: 'Competitor Monitor Agent',
390
+ description: 'Tracks competitors, market news, and keyword mentions via web search.',
391
+ persona_prompt: 'You are a market intelligence assistant. Search the web for competitor news, market trends, and configured keywords. Send a concise report to the user via Telegram.',
392
+ default_provider: 'openai',
393
+ default_model: 'gpt-4o-mini',
394
+ },
395
+ {
396
+ slug: 'news-agent',
397
+ name: 'News Agent',
398
+ description: 'Searches the web for hot and trending news. Perfect for workflows: News → Content Writer → Social.',
399
+ persona_prompt: 'You are a news research assistant. Search the web for hot, trending, or relevant news using web_search. Compile a report with titles, links, and short summaries. Send the report to Telegram or save to Google Doc if configured.',
400
+ default_provider: 'openai',
401
+ default_model: 'gpt-4o-mini',
402
+ },
403
+ {
404
+ slug: 'social-agent',
405
+ name: 'Social Agent',
406
+ description: 'Reads content from a Doc or Sheet and posts to Bluesky, X. Use in workflows after Content Writer.',
407
+ persona_prompt: 'You are a social media assistant. Read content from the configured source (Google Doc, Sheet, or file). Create engaging posts (under 300 chars for Bluesky) and publish to connected platforms.',
408
+ default_provider: 'openai',
409
+ default_model: 'gpt-4o-mini',
410
+ },
411
+ {
412
+ slug: 'content-writer-agent',
413
+ name: 'Content Writer Agent',
414
+ description: 'Reads from a content source (e.g. News Agent output), writes polished content, saves to Doc or Sheet.',
415
+ persona_prompt: 'You are a content writer. Read from the configured source, then write polished articles, summaries, or social post drafts. Save the output to the configured destination (Google Doc, Sheet) for the next step in the pipeline.',
416
+ default_provider: 'openai',
417
+ default_model: 'gpt-4o-mini',
418
+ },
419
+ ];
420
+ for (const agent of built) {
421
+ const existing = getAgentBySlug(agent.slug);
422
+ if (!existing) {
423
+ upsertAgent(agent);
424
+ log('db', 'info', `Seeded agent: ${agent.slug}`);
425
+ }
426
+ }
427
+ }
428
+ export function recordAgentMetric(agentId, metricName, numericValue, stringValue) {
429
+ const d = getDb();
430
+ const now = Date.now();
431
+ d.prepare(`INSERT INTO agent_metrics (agent_id, metric_name, value, numeric_value, created_at, updated_at)
432
+ VALUES (?, ?, ?, ?, ?, ?)`).run(agentId, metricName, stringValue ?? null, numericValue ?? null, now, now);
433
+ }
434
+ export function getLatestAgentMetrics(agentId) {
435
+ const d = getDb();
436
+ const rows = d.prepare(`SELECT * FROM agent_metrics WHERE agent_id = ?
437
+ ORDER BY metric_name, created_at DESC`).all(agentId);
438
+ const result = {};
439
+ for (const row of rows) {
440
+ if (!result[row.metric_name]) {
441
+ result[row.metric_name] = row;
442
+ }
443
+ }
444
+ return result;
445
+ }
256
446
  // --- Agent sessions ---
257
447
  export function createAgentSession(sessionKey, meta = null) {
258
448
  const d = getDb();
@@ -388,10 +578,99 @@ export function deleteScheduledJob(id) {
388
578
  const d = getDb();
389
579
  d.prepare('DELETE FROM scheduled_jobs WHERE id = ?').run(id);
390
580
  }
581
+ const WORKFLOW_SCHEDULE_ID_PREFIX = 'workflow_';
582
+ export function getScheduledJobIdForWorkflow(workflowId) {
583
+ return `${WORKFLOW_SCHEDULE_ID_PREFIX}${workflowId}`;
584
+ }
585
+ export function listWorkflows() {
586
+ const d = getDb();
587
+ return d.prepare('SELECT * FROM workflows ORDER BY created_at ASC').all();
588
+ }
589
+ export function getWorkflow(id) {
590
+ const d = getDb();
591
+ const row = d.prepare('SELECT * FROM workflows WHERE id = ?').get(id);
592
+ return row ?? null;
593
+ }
594
+ export function insertWorkflow(row) {
595
+ const d = getDb();
596
+ const now = Date.now();
597
+ const approveBeforeSocialPost = row.approve_before_social_post !== undefined ? row.approve_before_social_post : 1;
598
+ d.prepare(`
599
+ INSERT INTO workflows (id, name, description, steps, cron_expression, enabled, approve_before_social_post, created_at, updated_at)
600
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
601
+ `).run(row.id, row.name ?? '', row.description ?? '', row.steps, row.cron_expression, row.enabled ?? 1, approveBeforeSocialPost, now, now);
602
+ return getWorkflow(row.id);
603
+ }
604
+ export function updateWorkflow(id, updates) {
605
+ const d = getDb();
606
+ const now = Date.now();
607
+ const current = getWorkflow(id);
608
+ if (!current)
609
+ return;
610
+ const name = updates.name !== undefined ? updates.name : current.name;
611
+ const description = updates.description !== undefined ? updates.description : current.description;
612
+ const steps = updates.steps !== undefined ? updates.steps : current.steps;
613
+ const cron_expression = updates.cron_expression ?? current.cron_expression;
614
+ const enabled = updates.enabled !== undefined ? updates.enabled : current.enabled;
615
+ const approve_before_social_post = updates.approve_before_social_post !== undefined ? updates.approve_before_social_post : (current.approve_before_social_post ?? 1);
616
+ d.prepare(`
617
+ UPDATE workflows SET name = ?, description = ?, steps = ?, cron_expression = ?, enabled = ?, approve_before_social_post = ?, updated_at = ?
618
+ WHERE id = ?
619
+ `).run(name, description, steps, cron_expression, enabled, approve_before_social_post, now, id);
620
+ }
621
+ export function deleteWorkflow(id) {
622
+ const d = getDb();
623
+ d.prepare('DELETE FROM workflows WHERE id = ?').run(id);
624
+ }
391
625
  export function getTasksForJob(jobId, limit = 50) {
392
626
  const d = getDb();
393
627
  const pattern = `%"jobId":"${jobId.replace(/"/g, '""')}"%`;
394
628
  return d.prepare(`SELECT id, type, payload, status, scheduled_at, started_at, finished_at, retry_count, error, created_at, updated_at
395
629
  FROM tasks WHERE type = 'agent_job' AND payload LIKE ? ORDER BY created_at DESC LIMIT ?`).all(pattern, limit);
396
630
  }
631
+ export function getUsageSummary(options) {
632
+ const now = Date.now();
633
+ const defaultTo = options?.toMs && Number.isFinite(options.toMs) ? options.toMs : now;
634
+ const defaultFrom = options?.fromMs && Number.isFinite(options.fromMs)
635
+ ? options.fromMs
636
+ : defaultTo - 7 * 24 * 60 * 60 * 1000;
637
+ const fromMs = Math.min(defaultFrom, defaultTo);
638
+ const toMs = Math.max(defaultFrom, defaultTo);
639
+ const d = getDb();
640
+ const rows = d
641
+ .prepare('SELECT created_at, usage, cost_usd FROM agent_messages WHERE created_at BETWEEN ? AND ?')
642
+ .all(fromMs, toMs);
643
+ let promptTokens = 0;
644
+ let completionTokens = 0;
645
+ let totalTokens = 0;
646
+ let costUsd = 0;
647
+ for (const row of rows) {
648
+ if (row.usage) {
649
+ try {
650
+ const parsed = JSON.parse(row.usage);
651
+ const p = Number(parsed.prompt_tokens) || 0;
652
+ const c = Number(parsed.completion_tokens) || 0;
653
+ const t = Number(parsed.total_tokens) || p + c;
654
+ promptTokens += p;
655
+ completionTokens += c;
656
+ totalTokens += t;
657
+ }
658
+ catch {
659
+ // ignore malformed usage JSON
660
+ }
661
+ }
662
+ if (typeof row.cost_usd === 'number' && Number.isFinite(row.cost_usd)) {
663
+ costUsd += row.cost_usd;
664
+ }
665
+ }
666
+ return {
667
+ fromMs,
668
+ toMs,
669
+ totalMessages: rows.length,
670
+ promptTokens,
671
+ completionTokens,
672
+ totalTokens,
673
+ costUsd,
674
+ };
675
+ }
397
676
  //# sourceMappingURL=index.js.map