@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
@@ -1 +1 @@
1
- {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../src/onboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../src/onboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Start Tailscale Serve to expose the given port on your tailnet. Requires Tailscale CLI + tailnet. */
2
+ export declare function startTailscaleServe(port: number): void;
3
+ /** Reset Tailscale Serve on shutdown so the port is no longer exposed. Set SULALA_TAILSCALE_RESET_ON_EXIT=1. */
4
+ export declare function stopTailscaleServe(): void;
5
+ //# sourceMappingURL=tailscale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailscale.d.ts","sourceRoot":"","sources":["../src/tailscale.ts"],"names":[],"mappings":"AASA,wGAAwG;AACxG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAiBtD;AAED,gHAAgH;AAChH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Tailscale Serve integration (OpenClaw-style).
3
+ * Exposes the gateway on your tailnet so you can access it from any device without port forwarding.
4
+ * Set SULALA_TAILSCALE_SERVE=1 to enable.
5
+ */
6
+ import { spawn } from 'child_process';
7
+ let servedPort = null;
8
+ /** Start Tailscale Serve to expose the given port on your tailnet. Requires Tailscale CLI + tailnet. */
9
+ export function startTailscaleServe(port) {
10
+ if (process.env.SULALA_TAILSCALE_SERVE !== '1')
11
+ return;
12
+ servedPort = port;
13
+ const proc = spawn('tailscale', ['serve', '--bg', String(port)], {
14
+ stdio: ['ignore', 'pipe', 'pipe'],
15
+ });
16
+ let out = '';
17
+ let err = '';
18
+ proc.stdout?.on('data', (c) => { out += c; });
19
+ proc.stderr?.on('data', (c) => { err += c; });
20
+ proc.on('close', (code) => {
21
+ if (code === 0) {
22
+ console.log('[Sulala] Tailscale Serve started. Access via https://<your-device>.ts.net');
23
+ }
24
+ else {
25
+ console.warn('[Sulala] Tailscale Serve failed (install Tailscale + run `tailscale login`):', err.trim() || out.trim());
26
+ }
27
+ });
28
+ }
29
+ /** Reset Tailscale Serve on shutdown so the port is no longer exposed. Set SULALA_TAILSCALE_RESET_ON_EXIT=1. */
30
+ export function stopTailscaleServe() {
31
+ if (process.env.SULALA_TAILSCALE_RESET_ON_EXIT !== '1' || servedPort === null)
32
+ return;
33
+ spawn('tailscale', ['serve', 'off'], { stdio: 'ignore' });
34
+ servedPort = null;
35
+ }
36
+ //# sourceMappingURL=tailscale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailscale.js","sourceRoot":"","sources":["../src/tailscale.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,IAAI,UAAU,GAAkB,IAAI,CAAC;AAErC,wGAAwG;AACxG,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,GAAG;QAAE,OAAO;IACvD,UAAU,GAAG,IAAI,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;QAC/D,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;IACH,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;QAC3F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,8EAA8E,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACzH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gHAAgH;AAChH,MAAM,UAAU,kBAAkB;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,KAAK,GAAG,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO;IACtF,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D,UAAU,GAAG,IAAI,CAAC;AACpB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -198,6 +198,22 @@ export interface AppLocals {
198
198
  /** When true, server is shutting down; /ready returns 503. */
199
199
  draining?: boolean;
200
200
  }
201
+ /** Agent definition (stored in DB) */
202
+ export interface AgentRow {
203
+ id: string;
204
+ slug: string;
205
+ name: string;
206
+ description: string;
207
+ persona_prompt: string | null;
208
+ default_provider: string | null;
209
+ default_model: string | null;
210
+ default_tools: string | null;
211
+ default_skills: string | null;
212
+ workspace_root: string | null;
213
+ enabled: number;
214
+ created_at: number;
215
+ updated_at: number;
216
+ }
201
217
  /** Agent session (DB row) */
202
218
  export interface AgentSessionRow {
203
219
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sulala/agent",
3
- "version": "0.1.39",
3
+ "version": "0.1.40",
4
4
  "description": "Local AI orchestration platform — file watcher, task scheduler, AI layer, plugins",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -21,7 +21,11 @@
21
21
  "desktop:stage": "node desktop/copy-agent-app.cjs",
22
22
  "desktop:pack": "npm run build && npm run dashboard:build && npm run desktop:stage && cd desktop && npm install && electron-builder",
23
23
  "desktop:pack:mac": "npm run build && npm run dashboard:build && npm run desktop:stage && cd desktop && npm install && CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder --mac",
24
- "desktop:pack:win": "npm run build && npm run dashboard:build && npm run desktop:stage && cd desktop && npm install && electron-builder --win"
24
+ "desktop:pack:win": "npm run build && npm run dashboard:build && npm run desktop:stage && cd desktop && npm install && electron-builder --win",
25
+ "build:binary:mac": "npm run build && npm run dashboard:build && npx pkg dist/index.js --targets node18-macos-x64 --output bin/sulala-agent-macos",
26
+ "build:binary:win": "npm run build && npm run dashboard:build && npx pkg dist/index.js --targets node18-win-x64 --output bin/sulala-agent-win.exe",
27
+ "build:binary:linux": "npm run build && npm run dashboard:build && npx pkg dist/index.js --targets node18-linux-x64 --output bin/sulala-agent-linux",
28
+ "build:binary": "npm run build:binary:mac && npm run build:binary:win && npm run build:binary:linux"
25
29
  },
26
30
  "engines": {
27
31
  "node": ">=18"
@@ -81,8 +85,18 @@
81
85
  "electron-builder": "^25.1.8",
82
86
  "eslint": "^10.0.2",
83
87
  "globals": "^17.3.0",
88
+ "pkg": "^5.8.1",
84
89
  "tsx": "^4.21.0",
85
90
  "typescript": "^5.9.3",
86
91
  "vitest": "^4.0.18"
92
+ },
93
+ "pkg": {
94
+ "scripts": [
95
+ "dist/**/*.js"
96
+ ],
97
+ "assets": [
98
+ "dist/db/schema.sql",
99
+ "dashboard/dist/**/*"
100
+ ]
87
101
  }
88
102
  }
package/src/db/schema.sql CHANGED
@@ -54,6 +54,25 @@ CREATE TABLE IF NOT EXISTS agent_sessions (
54
54
  updated_at INTEGER NOT NULL
55
55
  );
56
56
 
57
+ -- Agent definitions (Agent OS v1)
58
+ CREATE TABLE IF NOT EXISTS agents (
59
+ id TEXT PRIMARY KEY,
60
+ slug TEXT UNIQUE NOT NULL,
61
+ name TEXT NOT NULL,
62
+ description TEXT NOT NULL DEFAULT '',
63
+ persona_prompt TEXT,
64
+ default_provider TEXT,
65
+ default_model TEXT,
66
+ default_tools TEXT,
67
+ default_skills TEXT,
68
+ workspace_root TEXT,
69
+ enabled INTEGER NOT NULL DEFAULT 1,
70
+ created_at INTEGER NOT NULL,
71
+ updated_at INTEGER NOT NULL
72
+ );
73
+
74
+ CREATE INDEX IF NOT EXISTS idx_agents_enabled ON agents(enabled);
75
+
57
76
  CREATE TABLE IF NOT EXISTS agent_messages (
58
77
  id INTEGER PRIMARY KEY AUTOINCREMENT,
59
78
  session_id TEXT NOT NULL,
@@ -107,3 +126,31 @@ CREATE TABLE IF NOT EXISTS scheduled_jobs (
107
126
  updated_at INTEGER NOT NULL
108
127
  );
109
128
  CREATE INDEX IF NOT EXISTS idx_scheduled_jobs_enabled ON scheduled_jobs(enabled);
129
+
130
+ -- Agent metrics: per-agent run metrics for dashboard (e.g. leads found, reports generated)
131
+ CREATE TABLE IF NOT EXISTS agent_metrics (
132
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
133
+ agent_id TEXT NOT NULL,
134
+ metric_name TEXT NOT NULL,
135
+ value TEXT,
136
+ numeric_value REAL,
137
+ created_at INTEGER NOT NULL,
138
+ updated_at INTEGER NOT NULL,
139
+ FOREIGN KEY (agent_id) REFERENCES agents(id)
140
+ );
141
+ CREATE INDEX IF NOT EXISTS idx_agent_metrics_agent ON agent_metrics(agent_id, metric_name);
142
+ CREATE INDEX IF NOT EXISTS idx_agent_metrics_created ON agent_metrics(created_at DESC);
143
+
144
+ -- Workflows: multi-agent pipelines with schedule
145
+ CREATE TABLE IF NOT EXISTS workflows (
146
+ id TEXT PRIMARY KEY,
147
+ name TEXT NOT NULL DEFAULT '',
148
+ description TEXT NOT NULL DEFAULT '',
149
+ steps TEXT NOT NULL,
150
+ cron_expression TEXT NOT NULL,
151
+ enabled INTEGER NOT NULL DEFAULT 1,
152
+ approve_before_social_post INTEGER NOT NULL DEFAULT 1,
153
+ created_at INTEGER NOT NULL,
154
+ updated_at INTEGER NOT NULL
155
+ );
156
+ CREATE INDEX IF NOT EXISTS idx_workflows_enabled ON workflows(enabled);
package/src/index.ts CHANGED
@@ -5,9 +5,10 @@ import {
5
5
  runMatchingAutomations,
6
6
  } from './workspace-automations.js';
7
7
  import { loadFullConfig } from './agent/skills-config.js';
8
- import { config } from './config.js';
9
- import { initDb, log, getChannelConfig } from './db/index.js';
8
+ import { config, ensureProtectedBindOrExit } from './config.js';
9
+ import { initDb, log, getChannelConfig, ensureBuiltInAgents, getAgentBySlug, recordAgentMetric } from './db/index.js';
10
10
  import { createGateway, attachWebSocket } from './gateway/server.js';
11
+ import { startTailscaleServe, stopTailscaleServe } from './tailscale.js';
11
12
  import { startWatcher, setEventCallback, enqueueTaskOnEvent } from './watcher/index.js';
12
13
  import { setTaskHandler, loadPendingFromDb, enqueue } from './scheduler/queue.js';
13
14
  import { scheduleCronEphemeral, scheduleCronById } from './scheduler/cron.js';
@@ -22,6 +23,16 @@ import { startSkillsWatcher } from './agent/skills-watcher.js';
22
23
  import { ensureOllamaInstalled } from './ollama-setup.js';
23
24
  import { getOrCreateAgentSession } from './db/index.js';
24
25
  import { runAgentTurn } from './agent/loop.js';
26
+ import { runLeadAgentWorkflow } from './agent/lead-agent.js';
27
+ import { ensureLeadAgentSchedule } from './agent/lead-agent-schedule.js';
28
+ import { runNewsSocialAgentWorkflow } from './agent/news-social-agent.js';
29
+ import { ensureNewsSocialAgentSchedule } from './agent/news-social-agent-schedule.js';
30
+ import { runSocialAgentWorkflow } from './agent/social-agent.js';
31
+ import { runContentWriterAgentWorkflow } from './agent/content-writer-agent.js';
32
+ import { runWorkflowAgent, getWorkflowSlugFromTaskType } from './agent/workflow-agents.js';
33
+ import { ensureWorkflowAgentsSchedule } from './agent/workflow-agents-schedule.js';
34
+ import { runWorkflow as runWorkflowPipeline } from './agent/workflow-runner.js';
35
+ import { getOrCreateCancelSignal, unregisterCancelController } from './agent/run-cancel.js';
25
36
  import { sendTelegramNotification, startTelegramChannel, resolveDefaultProviderAndModel } from './channels/telegram.js';
26
37
  import type { AppLocals } from './types.js';
27
38
 
@@ -91,6 +102,7 @@ async function runAgentJobAndNotify(payload: unknown): Promise<void> {
91
102
 
92
103
  async function main(): Promise<void> {
93
104
  await initDb(config.dbPath);
105
+ ensureBuiltInAgents();
94
106
  if (process.env.SULALA_OLLAMA_AUTO_INSTALL === '1') {
95
107
  ensureOllamaInstalled();
96
108
  } else {
@@ -123,6 +135,8 @@ async function main(): Promise<void> {
123
135
  registerListMcpServersTool();
124
136
  registerTestMcpServerTool();
125
137
 
138
+ await ensureProtectedBindOrExit();
139
+
126
140
  const app = createGateway();
127
141
  (app.locals as AppLocals).enqueueTaskId = enqueue;
128
142
  (app.locals as AppLocals).draining = false;
@@ -131,10 +145,12 @@ async function main(): Promise<void> {
131
145
  (app.locals as AppLocals).wsBroadcast = broadcast;
132
146
  const server = http.listen(config.port, config.host, () => {
133
147
  console.log(`Gateway http://${config.host}:${config.port} (WS /ws)`);
148
+ startTailscaleServe(config.port);
134
149
  });
135
150
  const shutdown = () => {
136
151
  log('main', 'info', 'Shutting down');
137
152
  (app.locals as AppLocals).draining = true;
153
+ stopTailscaleServe();
138
154
  closeMemoryIndex();
139
155
  server.close(() => {
140
156
  log('main', 'info', 'Gateway closed');
@@ -172,6 +188,308 @@ async function main(): Promise<void> {
172
188
  }) => {
173
189
  const handled = await onTask(task);
174
190
  if (handled) return;
191
+
192
+ if (task.type === 'agent_run') {
193
+ // Generic agent run task (from POST /api/agents/:id/run-once)
194
+ try {
195
+ const p = task.payload as {
196
+ agentId?: string;
197
+ sessionId?: string;
198
+ userMessage?: string;
199
+ provider?: string;
200
+ model?: string;
201
+ } | null;
202
+ if (!p?.sessionId) {
203
+ log('worker', 'warn', 'agent_run missing sessionId', { payload: p });
204
+ throw new Error('agent_run requires sessionId');
205
+ }
206
+ const agentId = p.agentId;
207
+ if (agentId) {
208
+ recordAgentMetric(agentId, 'running', 1);
209
+ }
210
+ await runAgentTurn({
211
+ sessionId: p.sessionId,
212
+ userMessage: p.userMessage || '(No message)',
213
+ provider: p.provider || undefined,
214
+ model: p.model || undefined,
215
+ skipToolApproval: true,
216
+ });
217
+ if (agentId) {
218
+ recordAgentMetric(agentId, 'running', 0);
219
+ }
220
+ log('worker', 'info', `Agent run completed`, { taskId: task.id, sessionId: p.sessionId });
221
+ } catch (err) {
222
+ const p = task.payload as { agentId?: string };
223
+ if (p?.agentId) {
224
+ recordAgentMetric(p.agentId, 'running', 0);
225
+ }
226
+ log('worker', 'error', `Agent run failed: ${err instanceof Error ? err.message : String(err)}`);
227
+ throw err;
228
+ }
229
+ broadcast({ type: 'task_done', taskId: task.id });
230
+ fireWebhooks('task_done', { taskId: task.id, type: task.type });
231
+ return;
232
+ }
233
+
234
+ if (task.type === 'lead_agent_run') {
235
+ // Lead Agent scheduled run (supports cancel via AbortSignal)
236
+ const p = task.payload as {
237
+ agentId?: string;
238
+ sessionId?: string;
239
+ provider?: string;
240
+ model?: string;
241
+ } | null;
242
+ const leadAgent = getAgentBySlug('lead-agent');
243
+ const agentId = p?.agentId || leadAgent?.id || null;
244
+ if (!agentId) {
245
+ const msg = 'Lead Agent not found: run ensureBuiltInAgents or add lead-agent in DB';
246
+ log('worker', 'error', msg);
247
+ throw new Error(msg);
248
+ }
249
+ const signal = getOrCreateCancelSignal(task.id);
250
+ try {
251
+ recordAgentMetric(agentId, 'running', 1);
252
+ const sessionId = p?.sessionId || `lead_agent_run_${Date.now()}`;
253
+ const result = await runLeadAgentWorkflow('lead-agent', {
254
+ sessionId,
255
+ provider: p?.provider,
256
+ model: p?.model,
257
+ signal,
258
+ onStreamEvent: (ev) => {
259
+ broadcast({
260
+ type: 'agent_run_stream',
261
+ taskId: task.id,
262
+ agentId,
263
+ event: ev.type,
264
+ data: ev,
265
+ });
266
+ },
267
+ });
268
+ recordAgentMetric(agentId, 'running', 0);
269
+ log('worker', 'info', `Lead Agent workflow completed`, {
270
+ taskId: task.id,
271
+ success: result.success,
272
+ leadsFound: result.leadsFound,
273
+ });
274
+ if (!result.success) {
275
+ throw new Error(result.error || result.message || 'Lead Agent workflow returned success: false');
276
+ }
277
+ } catch (err) {
278
+ recordAgentMetric(agentId, 'running', 0);
279
+ log('worker', 'error', `Lead Agent workflow failed: ${err instanceof Error ? err.message : String(err)}`);
280
+ throw err;
281
+ } finally {
282
+ unregisterCancelController(task.id);
283
+ }
284
+ broadcast({ type: 'task_done', taskId: task.id });
285
+ fireWebhooks('task_done', { taskId: task.id, type: task.type });
286
+ return;
287
+ }
288
+
289
+ if (task.type === 'news_social_agent_run') {
290
+ const p = task.payload as { agentId?: string; sessionId?: string; provider?: string; model?: string } | null;
291
+ const newsAgent = getAgentBySlug('news-social-agent');
292
+ const agentId = p?.agentId || newsAgent?.id || null;
293
+ if (!agentId) {
294
+ log('worker', 'error', 'News & Social Agent not found');
295
+ throw new Error('News & Social Agent not found');
296
+ }
297
+ const signal = getOrCreateCancelSignal(task.id);
298
+ try {
299
+ recordAgentMetric(agentId, 'running', 1);
300
+ const sessionId = p?.sessionId || `news_social_agent_run_${Date.now()}`;
301
+ const result = await runNewsSocialAgentWorkflow(agentId, {
302
+ sessionId,
303
+ provider: p?.provider,
304
+ model: p?.model,
305
+ signal,
306
+ onStreamEvent: (ev) => {
307
+ broadcast({
308
+ type: 'agent_run_stream',
309
+ taskId: task.id,
310
+ agentId,
311
+ event: ev.type,
312
+ data: ev,
313
+ });
314
+ },
315
+ });
316
+ recordAgentMetric(agentId, 'running', 0);
317
+ log('worker', 'info', 'News & Social Agent workflow completed', {
318
+ taskId: task.id,
319
+ success: result.success,
320
+ postsPublished: result.postsPublished,
321
+ });
322
+ if (!result.success) {
323
+ throw new Error(result.error || result.message || 'News & Social Agent workflow failed');
324
+ }
325
+ } catch (err) {
326
+ recordAgentMetric(agentId, 'running', 0);
327
+ log('worker', 'error', `News & Social Agent workflow failed: ${err instanceof Error ? err.message : String(err)}`);
328
+ throw err;
329
+ } finally {
330
+ unregisterCancelController(task.id);
331
+ }
332
+ broadcast({ type: 'task_done', taskId: task.id });
333
+ fireWebhooks('task_done', { taskId: task.id, type: task.type });
334
+ return;
335
+ }
336
+
337
+ if (task.type === 'social_agent_run') {
338
+ const p = task.payload as { agentId?: string; sessionId?: string; provider?: string; model?: string } | null;
339
+ const socialAgent = getAgentBySlug('social-agent');
340
+ const agentId = p?.agentId || socialAgent?.id || null;
341
+ if (!agentId) {
342
+ log('worker', 'error', 'Social Agent not found');
343
+ throw new Error('Social Agent not found');
344
+ }
345
+ const signal = getOrCreateCancelSignal(task.id);
346
+ try {
347
+ recordAgentMetric(agentId, 'running', 1);
348
+ const sessionId = p?.sessionId || `social_agent_run_${Date.now()}`;
349
+ const result = await runSocialAgentWorkflow(agentId, {
350
+ sessionId,
351
+ provider: p?.provider,
352
+ model: p?.model,
353
+ signal,
354
+ onStreamEvent: (ev) => {
355
+ broadcast({
356
+ type: 'agent_run_stream',
357
+ taskId: task.id,
358
+ agentId,
359
+ event: ev.type,
360
+ data: ev,
361
+ });
362
+ },
363
+ });
364
+ recordAgentMetric(agentId, 'running', 0);
365
+ log('worker', 'info', 'Social Agent workflow completed', {
366
+ taskId: task.id,
367
+ success: result.success,
368
+ postsPublished: result.postsPublished,
369
+ });
370
+ if (!result.success) {
371
+ throw new Error(result.error || result.message || 'Social Agent workflow failed');
372
+ }
373
+ } catch (err) {
374
+ recordAgentMetric(agentId, 'running', 0);
375
+ log('worker', 'error', `Social Agent workflow failed: ${err instanceof Error ? err.message : String(err)}`);
376
+ throw err;
377
+ } finally {
378
+ unregisterCancelController(task.id);
379
+ }
380
+ broadcast({ type: 'task_done', taskId: task.id });
381
+ fireWebhooks('task_done', { taskId: task.id, type: task.type });
382
+ return;
383
+ }
384
+
385
+ if (task.type === 'content_writer_agent_run') {
386
+ const p = task.payload as { agentId?: string; sessionId?: string; provider?: string; model?: string } | null;
387
+ const contentWriterAgent = getAgentBySlug('content-writer-agent');
388
+ const agentId = p?.agentId || contentWriterAgent?.id || null;
389
+ if (!agentId) {
390
+ log('worker', 'error', 'Content Writer Agent not found');
391
+ throw new Error('Content Writer Agent not found');
392
+ }
393
+ const signal = getOrCreateCancelSignal(task.id);
394
+ try {
395
+ recordAgentMetric(agentId, 'running', 1);
396
+ const sessionId = p?.sessionId || `content_writer_agent_run_${Date.now()}`;
397
+ const result = await runContentWriterAgentWorkflow(agentId, {
398
+ sessionId,
399
+ provider: p?.provider,
400
+ model: p?.model,
401
+ signal,
402
+ onStreamEvent: (ev) => {
403
+ broadcast({
404
+ type: 'agent_run_stream',
405
+ taskId: task.id,
406
+ agentId,
407
+ event: ev.type,
408
+ data: ev,
409
+ });
410
+ },
411
+ });
412
+ recordAgentMetric(agentId, 'running', 0);
413
+ log('worker', 'info', 'Content Writer Agent workflow completed', {
414
+ taskId: task.id,
415
+ success: result.success,
416
+ });
417
+ if (!result.success) {
418
+ throw new Error(result.error || result.message || 'Content Writer Agent workflow failed');
419
+ }
420
+ } catch (err) {
421
+ recordAgentMetric(agentId, 'running', 0);
422
+ log('worker', 'error', `Content Writer Agent workflow failed: ${err instanceof Error ? err.message : String(err)}`);
423
+ throw err;
424
+ } finally {
425
+ unregisterCancelController(task.id);
426
+ }
427
+ broadcast({ type: 'task_done', taskId: task.id });
428
+ fireWebhooks('task_done', { taskId: task.id, type: task.type });
429
+ return;
430
+ }
431
+
432
+ if (task.type === 'workflow_run') {
433
+ const p = task.payload as { workflowId?: string } | null;
434
+ const workflowId = p?.workflowId;
435
+ if (!workflowId) {
436
+ log('worker', 'error', 'workflow_run missing workflowId');
437
+ throw new Error('workflow_run requires workflowId');
438
+ }
439
+ try {
440
+ const result = await runWorkflowPipeline(workflowId, {
441
+ sessionId: `workflow_run_${task.id}_${Date.now()}`,
442
+ });
443
+ log('worker', 'info', 'Workflow pipeline completed', {
444
+ taskId: task.id,
445
+ workflowId,
446
+ success: result.success,
447
+ stepsCompleted: result.stepsCompleted,
448
+ });
449
+ if (!result.success) {
450
+ throw new Error(result.lastError || result.message || 'Workflow failed');
451
+ }
452
+ } catch (err) {
453
+ log('worker', 'error', `Workflow pipeline failed: ${err instanceof Error ? err.message : String(err)}`, { workflowId });
454
+ throw err;
455
+ }
456
+ broadcast({ type: 'task_done', taskId: task.id });
457
+ fireWebhooks('task_done', { taskId: task.id, type: task.type });
458
+ return;
459
+ }
460
+
461
+ const workflowSlug = getWorkflowSlugFromTaskType(task.type);
462
+ if (workflowSlug) {
463
+ const p = task.payload as { agentId?: string; sessionId?: string; provider?: string; model?: string } | null;
464
+ const agent = getAgentBySlug(workflowSlug);
465
+ const agentId = p?.agentId || agent?.id || null;
466
+ if (!agentId) {
467
+ log('worker', 'error', `${workflowSlug} not found`);
468
+ throw new Error(`${workflowSlug} not found`);
469
+ }
470
+ try {
471
+ recordAgentMetric(agentId, 'running', 1);
472
+ const sessionId = p?.sessionId || `${task.type}_${Date.now()}`;
473
+ const result = await runWorkflowAgent(workflowSlug, agentId, {
474
+ sessionId,
475
+ provider: p?.provider,
476
+ model: p?.model,
477
+ });
478
+ recordAgentMetric(agentId, 'running', 0);
479
+ log('worker', 'info', `${workflowSlug} workflow completed`, { taskId: task.id, success: result.success });
480
+ if (!result.success) {
481
+ throw new Error(result.error || result.message || 'Workflow failed');
482
+ }
483
+ } catch (err) {
484
+ recordAgentMetric(agentId, 'running', 0);
485
+ log('worker', 'error', `${workflowSlug} workflow failed: ${err instanceof Error ? err.message : String(err)}`);
486
+ throw err;
487
+ }
488
+ broadcast({ type: 'task_done', taskId: task.id });
489
+ fireWebhooks('task_done', { taskId: task.id, type: task.type });
490
+ return;
491
+ }
492
+
175
493
  if (task.type === 'agent_job') {
176
494
  try {
177
495
  await runAgentJobAndNotify(task.payload);
@@ -183,6 +501,7 @@ async function main(): Promise<void> {
183
501
  fireWebhooks('task_done', { taskId: task.id, type: task.type });
184
502
  return;
185
503
  }
504
+
186
505
  if (task.type === 'file_event') {
187
506
  const payload = task.payload as { event?: string; path?: string } | null;
188
507
  log('worker', 'info', 'File event task', (task.payload ?? null) as Record<string, unknown> | null);
@@ -237,6 +556,11 @@ async function main(): Promise<void> {
237
556
  }
238
557
  });
239
558
 
559
+ // Ensure Lead Agent, News Social Agent, and Workflow Agents are scheduled
560
+ ensureLeadAgentSchedule();
561
+ ensureNewsSocialAgentSchedule();
562
+ ensureWorkflowAgentsSchedule();
563
+
240
564
  // Start Telegram bot if enabled and configured (so it stays connected without opening Settings)
241
565
  startTelegramChannel();
242
566
 
package/bin/sulala.mjs DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Production CLI entry. Runs the built dist/cli.js.
4
- * Install with: npm i -g @sulala/agent
5
- * Then: sulala skill install <slug>
6
- */
7
- import '../dist/cli.js';