@dotsetlabs/dotclaw 1.3.0 → 1.5.0

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 (79) hide show
  1. package/README.md +9 -0
  2. package/config-examples/runtime.json +106 -3
  3. package/container/agent-runner/package-lock.json +2 -2
  4. package/container/agent-runner/package.json +1 -1
  5. package/container/agent-runner/src/agent-config.ts +20 -2
  6. package/container/agent-runner/src/container-protocol.ts +11 -0
  7. package/container/agent-runner/src/index.ts +128 -11
  8. package/container/agent-runner/src/tools.ts +84 -5
  9. package/dist/agent-context.d.ts +5 -0
  10. package/dist/agent-context.d.ts.map +1 -1
  11. package/dist/agent-context.js +19 -8
  12. package/dist/agent-context.js.map +1 -1
  13. package/dist/agent-execution.d.ts +6 -0
  14. package/dist/agent-execution.d.ts.map +1 -1
  15. package/dist/agent-execution.js +61 -4
  16. package/dist/agent-execution.js.map +1 -1
  17. package/dist/background-job-classifier.d.ts +4 -0
  18. package/dist/background-job-classifier.d.ts.map +1 -1
  19. package/dist/background-job-classifier.js +36 -15
  20. package/dist/background-job-classifier.js.map +1 -1
  21. package/dist/background-jobs.d.ts.map +1 -1
  22. package/dist/background-jobs.js +81 -4
  23. package/dist/background-jobs.js.map +1 -1
  24. package/dist/cli.js +343 -11
  25. package/dist/cli.js.map +1 -1
  26. package/dist/config.d.ts +0 -2
  27. package/dist/config.d.ts.map +1 -1
  28. package/dist/config.js +0 -3
  29. package/dist/config.js.map +1 -1
  30. package/dist/container-protocol.d.ts +11 -0
  31. package/dist/container-protocol.d.ts.map +1 -1
  32. package/dist/container-runner.d.ts.map +1 -1
  33. package/dist/container-runner.js +9 -1
  34. package/dist/container-runner.js.map +1 -1
  35. package/dist/dashboard.d.ts +5 -0
  36. package/dist/dashboard.d.ts.map +1 -1
  37. package/dist/dashboard.js +58 -8
  38. package/dist/dashboard.js.map +1 -1
  39. package/dist/db.d.ts +11 -0
  40. package/dist/db.d.ts.map +1 -1
  41. package/dist/db.js +36 -0
  42. package/dist/db.js.map +1 -1
  43. package/dist/index.js +300 -37
  44. package/dist/index.js.map +1 -1
  45. package/dist/json-helpers.d.ts +6 -0
  46. package/dist/json-helpers.d.ts.map +1 -0
  47. package/dist/json-helpers.js +17 -0
  48. package/dist/json-helpers.js.map +1 -0
  49. package/dist/logger.d.ts +0 -1
  50. package/dist/logger.d.ts.map +1 -1
  51. package/dist/logger.js +1 -1
  52. package/dist/logger.js.map +1 -1
  53. package/dist/metrics.d.ts +3 -0
  54. package/dist/metrics.d.ts.map +1 -1
  55. package/dist/metrics.js +35 -1
  56. package/dist/metrics.js.map +1 -1
  57. package/dist/planner-probe.d.ts +14 -0
  58. package/dist/planner-probe.d.ts.map +1 -0
  59. package/dist/planner-probe.js +97 -0
  60. package/dist/planner-probe.js.map +1 -0
  61. package/dist/progress.d.ts +27 -0
  62. package/dist/progress.d.ts.map +1 -1
  63. package/dist/progress.js +151 -0
  64. package/dist/progress.js.map +1 -1
  65. package/dist/request-router.d.ts +34 -0
  66. package/dist/request-router.d.ts.map +1 -0
  67. package/dist/request-router.js +148 -0
  68. package/dist/request-router.js.map +1 -0
  69. package/dist/runtime-config.d.ts +67 -0
  70. package/dist/runtime-config.d.ts.map +1 -1
  71. package/dist/runtime-config.js +177 -14
  72. package/dist/runtime-config.js.map +1 -1
  73. package/dist/task-scheduler.d.ts.map +1 -1
  74. package/dist/task-scheduler.js +56 -9
  75. package/dist/task-scheduler.js.map +1 -1
  76. package/dist/trace-writer.d.ts +1 -0
  77. package/dist/trace-writer.d.ts.map +1 -1
  78. package/dist/trace-writer.js.map +1 -1
  79. package/package.json +1 -1
package/dist/db.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
package/dist/db.js CHANGED
@@ -379,6 +379,42 @@ export function createBackgroundJob(job) {
379
379
  export function getBackgroundJobById(id) {
380
380
  return db.prepare('SELECT * FROM background_jobs WHERE id = ?').get(id);
381
381
  }
382
+ export function getBackgroundJobQueuePosition(params) {
383
+ const job = getBackgroundJobById(params.jobId);
384
+ if (!job)
385
+ return null;
386
+ const groupClause = params.groupFolder ? 'AND group_folder = ?' : '';
387
+ const groupArgs = params.groupFolder ? [params.groupFolder] : [];
388
+ const aheadRow = db.prepare(`
389
+ SELECT COUNT(*) as count
390
+ FROM background_jobs
391
+ WHERE status = 'queued'
392
+ ${groupClause}
393
+ AND (priority > ? OR (priority = ? AND created_at < ?))
394
+ `).get(...groupArgs, job.priority ?? 0, job.priority ?? 0, job.created_at);
395
+ const totalRow = db.prepare(`
396
+ SELECT COUNT(*) as count
397
+ FROM background_jobs
398
+ WHERE status = 'queued'
399
+ ${groupClause}
400
+ `).get(...groupArgs);
401
+ const ahead = aheadRow?.count || 0;
402
+ const total = totalRow?.count || 0;
403
+ return { position: ahead + 1, total };
404
+ }
405
+ export function getBackgroundJobQueueDepth(params = {}) {
406
+ const statuses = params.includeRunning ? ['queued', 'running'] : ['queued'];
407
+ const placeholders = statuses.map(() => '?').join(', ');
408
+ const groupClause = params.groupFolder ? 'AND group_folder = ?' : '';
409
+ const args = params.groupFolder ? [...statuses, params.groupFolder] : statuses;
410
+ const row = db.prepare(`
411
+ SELECT COUNT(*) as count
412
+ FROM background_jobs
413
+ WHERE status IN (${placeholders})
414
+ ${groupClause}
415
+ `).get(...args);
416
+ return row?.count || 0;
417
+ }
382
418
  export function listBackgroundJobs(params = {}) {
383
419
  const clauses = [];
384
420
  const values = [];
package/dist/db.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import path from 'path';
6
6
  import { DATA_DIR, MAIN_GROUP_FOLDER, GROUPS_DIR, IPC_POLL_INTERVAL, TIMEZONE, CONTAINER_MODE, WARM_START_ENABLED, ENV_PATH } from './config.js';
7
7
  // Load .env from the canonical location (~/.dotclaw/.env)
8
8
  dotenv.config({ path: ENV_PATH });
9
- import { initDatabase, storeMessage, upsertChat, getMessagesSinceCursor, getChatState, updateChatState, createTask, updateTask, deleteTask, getTaskById, getAllGroupSessions, setGroupSession, deleteGroupSession, pauseTasksForGroup, linkMessageToTrace, getTraceIdForMessage, recordUserFeedback } from './db.js';
9
+ import { initDatabase, storeMessage, upsertChat, getMessagesSinceCursor, getChatState, updateChatState, createTask, updateTask, deleteTask, getTaskById, getAllGroupSessions, setGroupSession, deleteGroupSession, pauseTasksForGroup, getBackgroundJobQueuePosition, getBackgroundJobQueueDepth, linkMessageToTrace, getTraceIdForMessage, recordUserFeedback } from './db.js';
10
10
  import { startSchedulerLoop, runTaskNow } from './task-scheduler.js';
11
11
  import { startBackgroundJobLoop, spawnBackgroundJob, getBackgroundJobStatus, listBackgroundJobsForGroup, cancelBackgroundJob, recordBackgroundJobUpdate } from './background-jobs.js';
12
12
  import { loadJson, saveJson, isSafeGroupFolder } from './utils.js';
@@ -14,10 +14,10 @@ import { writeTrace } from './trace-writer.js';
14
14
  import { formatTelegramMessage, TELEGRAM_PARSE_MODE } from './telegram-format.js';
15
15
  import { initMemoryStore, getMemoryStats, upsertMemoryItems, searchMemories, listMemories, forgetMemories, cleanupExpiredMemories } from './memory-store.js';
16
16
  import { startEmbeddingWorker } from './memory-embeddings.js';
17
- import { createProgressNotifier, DEFAULT_PROGRESS_MESSAGES } from './progress.js';
17
+ import { createProgressManager, DEFAULT_PROGRESS_MESSAGES, DEFAULT_PROGRESS_STAGES, formatProgressWithPlan, formatPlanStepList } from './progress.js';
18
18
  import { parseAdminCommand } from './admin-commands.js';
19
19
  import { loadModelRegistry, saveModelRegistry } from './model-registry.js';
20
- import { startMetricsServer, recordMessage, recordError } from './metrics.js';
20
+ import { startMetricsServer, recordMessage, recordError, recordRoutingDecision, recordStageLatency } from './metrics.js';
21
21
  import { startMaintenanceLoop } from './maintenance.js';
22
22
  import { warmGroupContainer, startDaemonHealthCheckLoop } from './container-runner.js';
23
23
  import { loadRuntimeConfig } from './runtime-config.js';
@@ -26,6 +26,8 @@ import { logger } from './logger.js';
26
26
  import { startDashboard, setTelegramConnected, setLastMessageTime, setMessageQueueDepth } from './dashboard.js';
27
27
  import { humanizeError } from './error-messages.js';
28
28
  import { classifyBackgroundJob } from './background-job-classifier.js';
29
+ import { routeRequest, routePrompt } from './request-router.js';
30
+ import { probePlanner } from './planner-probe.js';
29
31
  const runtime = loadRuntimeConfig();
30
32
  function buildTriggerRegex(pattern) {
31
33
  if (!pattern)
@@ -146,13 +148,6 @@ const TELEGRAM_STREAM_MIN_CHARS = runtime.host.telegram.streamMinChars;
146
148
  const MEMORY_RECALL_MAX_RESULTS = runtime.host.memory.recall.maxResults;
147
149
  const MEMORY_RECALL_MAX_TOKENS = runtime.host.memory.recall.maxTokens;
148
150
  const INPUT_MESSAGE_MAX_CHARS = runtime.host.telegram.inputMessageMaxChars;
149
- const PROGRESS_ENABLED = runtime.host.progress.enabled;
150
- const PROGRESS_INITIAL_MS = runtime.host.progress.initialMs;
151
- const PROGRESS_INTERVAL_MS = runtime.host.progress.intervalMs;
152
- const PROGRESS_MAX_UPDATES = runtime.host.progress.maxUpdates;
153
- const PROGRESS_MESSAGES = runtime.host.progress.messages.length > 0
154
- ? runtime.host.progress.messages
155
- : DEFAULT_PROGRESS_MESSAGES;
156
151
  const HEARTBEAT_ENABLED = runtime.host.heartbeat.enabled;
157
152
  const HEARTBEAT_INTERVAL_MS = runtime.host.heartbeat.intervalMs;
158
153
  const HEARTBEAT_GROUP_FOLDER = (runtime.host.heartbeat.groupFolder || MAIN_GROUP_FOLDER).trim() || MAIN_GROUP_FOLDER;
@@ -176,6 +171,64 @@ let registeredGroups = {};
176
171
  const TELEGRAM_MAX_MESSAGE_LENGTH = 4000;
177
172
  const TELEGRAM_SEND_DELAY_MS = 250;
178
173
  const messageQueues = new Map();
174
+ const activeRuns = new Map();
175
+ function isCancelMessage(content) {
176
+ if (!content)
177
+ return false;
178
+ const normalized = content.trim().toLowerCase();
179
+ return normalized === 'cancel'
180
+ || normalized === 'stop'
181
+ || normalized === 'abort'
182
+ || normalized === 'cancel request'
183
+ || normalized === 'stop request';
184
+ }
185
+ function inferProgressStage(params) {
186
+ const content = params.content.toLowerCase();
187
+ const tools = params.plannerTools.map(tool => tool.toLowerCase());
188
+ const hasWebTool = tools.some(tool => tool.includes('web') || tool.includes('search') || tool.includes('fetch'));
189
+ const hasCodeTool = tools.some(tool => tool.includes('bash') || tool.includes('edit') || tool.includes('write') || tool.includes('git'));
190
+ if (params.enablePlanner)
191
+ return 'planning';
192
+ if (hasWebTool || /research|search|browse|web|site|docs/.test(content))
193
+ return 'searching';
194
+ if (hasCodeTool || /build|code|implement|refactor|fix|debug/.test(content))
195
+ return 'coding';
196
+ return 'drafting';
197
+ }
198
+ function estimateForegroundMs(params) {
199
+ if (typeof params.routing.estimatedMinutes === 'number' && Number.isFinite(params.routing.estimatedMinutes)) {
200
+ return Math.max(1000, params.routing.estimatedMinutes * 60_000);
201
+ }
202
+ const baseChars = params.content.length;
203
+ if (baseChars === 0)
204
+ return null;
205
+ const stepFactor = params.plannerSteps.length > 0 ? params.plannerSteps.length * 6000 : 0;
206
+ const toolFactor = params.plannerTools.length > 0 ? params.plannerTools.length * 8000 : 0;
207
+ const lengthFactor = Math.min(60_000, Math.max(3000, Math.round(baseChars / 3)));
208
+ const profileFactor = params.routing.profile === 'deep' ? 1.4 : 1;
209
+ return Math.round((lengthFactor + stepFactor + toolFactor) * profileFactor);
210
+ }
211
+ function inferPlanStepIndex(stage, totalSteps) {
212
+ if (!Number.isFinite(totalSteps) || totalSteps <= 0)
213
+ return null;
214
+ const normalized = stage.trim().toLowerCase();
215
+ if (!normalized)
216
+ return 1;
217
+ switch (normalized) {
218
+ case 'planning':
219
+ return 1;
220
+ case 'searching':
221
+ return Math.min(2, totalSteps);
222
+ case 'coding':
223
+ return Math.min(Math.max(2, Math.ceil(totalSteps * 0.6)), totalSteps);
224
+ case 'drafting':
225
+ return Math.min(Math.max(2, Math.ceil(totalSteps * 0.8)), totalSteps);
226
+ case 'finalizing':
227
+ return totalSteps;
228
+ default:
229
+ return 1;
230
+ }
231
+ }
179
232
  const draftSessions = new Map();
180
233
  function parseTelegramStreamMode(value) {
181
234
  const normalized = value.trim().toLowerCase();
@@ -566,6 +619,17 @@ async function finalizeStreamedMessage(msg, draftId, text) {
566
619
  clearDraftSession(msg.chatId, draftId);
567
620
  }
568
621
  function enqueueMessage(msg) {
622
+ if (isCancelMessage(msg.content)) {
623
+ const controller = activeRuns.get(msg.chatId);
624
+ if (controller) {
625
+ controller.abort();
626
+ activeRuns.delete(msg.chatId);
627
+ void sendMessage(msg.chatId, 'Canceled the current request.', { messageThreadId: msg.messageThreadId });
628
+ return;
629
+ }
630
+ void sendMessage(msg.chatId, 'There is no active request to cancel.', { messageThreadId: msg.messageThreadId });
631
+ return;
632
+ }
569
633
  const existing = messageQueues.get(msg.chatId);
570
634
  if (existing) {
571
635
  existing.pendingMessage = msg;
@@ -641,6 +705,20 @@ async function processMessage(msg) {
641
705
  ${lines.join('\n')}
642
706
  </messages>`;
643
707
  const lastMessage = missedMessages[missedMessages.length - 1];
708
+ const routingStartedAt = Date.now();
709
+ const routingDecision = routeRequest({
710
+ prompt,
711
+ lastMessage
712
+ });
713
+ recordRoutingDecision(routingDecision.profile);
714
+ const routerMs = Date.now() - routingStartedAt;
715
+ recordStageLatency('router', routerMs, 'telegram');
716
+ logger.info({
717
+ chatId: msg.chatId,
718
+ profile: routingDecision.profile,
719
+ reason: routingDecision.reason,
720
+ shouldBackground: routingDecision.shouldBackground
721
+ }, 'Routing decision');
644
722
  const traceBase = createTraceBase({
645
723
  chatId: msg.chatId,
646
724
  groupFolder: group.folder,
@@ -662,28 +740,65 @@ ${lines.join('\n')}
662
740
  return false;
663
741
  return /timed out|timeout/i.test(value);
664
742
  };
665
- const maybeAutoSpawn = async (reason, detail) => {
666
- if (!AUTO_SPAWN_ENABLED)
743
+ const shouldPlannerProbe = () => {
744
+ const config = runtime.host.routing.plannerProbe;
745
+ if (!config.enabled)
746
+ return false;
747
+ if (routingDecision.profile === 'fast' || routingDecision.shouldBackground)
748
+ return false;
749
+ const contentLength = lastMessage?.content?.length || 0;
750
+ return contentLength >= config.minChars;
751
+ };
752
+ const maybeAutoSpawn = async (reason, detail, overrides) => {
753
+ if (!BACKGROUND_JOBS_ENABLED)
754
+ return false;
755
+ if (reason !== 'router' && !AUTO_SPAWN_ENABLED)
667
756
  return false;
668
757
  if (reason === 'timeout' && !AUTO_SPAWN_ON_TIMEOUT)
669
758
  return false;
670
759
  if (reason === 'tool_limit' && !AUTO_SPAWN_ON_TOOL_LIMIT)
671
760
  return false;
761
+ const tags = ['auto-spawn', reason, `profile:${routingDecision.profile}`];
762
+ if (overrides?.tags && overrides.tags.length > 0) {
763
+ tags.push(...overrides.tags);
764
+ }
765
+ if (routingDecision.estimatedMinutes) {
766
+ tags.push(`eta:${routingDecision.estimatedMinutes}`);
767
+ }
768
+ const estimatedMs = typeof routingDecision.estimatedMinutes === 'number'
769
+ ? routingDecision.estimatedMinutes * 60_000
770
+ : null;
771
+ const computedTimeoutMs = estimatedMs
772
+ ? Math.min(runtime.host.backgroundJobs.maxRuntimeMs, Math.max(5 * 60_000, Math.round(estimatedMs * 2)))
773
+ : undefined;
672
774
  const result = spawnBackgroundJob({
673
775
  prompt,
674
776
  groupFolder: group.folder,
675
777
  chatJid: msg.chatId,
676
778
  contextMode: 'group',
677
- tags: ['auto-spawn', reason],
779
+ tags,
678
780
  parentTraceId: traceBase.trace_id,
679
- parentMessageId: msg.messageId
781
+ parentMessageId: msg.messageId,
782
+ modelOverride: overrides?.modelOverride ?? routingDecision.modelOverride,
783
+ maxToolSteps: overrides?.maxToolSteps ?? routingDecision.maxToolSteps,
784
+ toolAllow: routingDecision.toolAllow,
785
+ toolDeny: routingDecision.toolDeny,
786
+ timeoutMs: overrides?.timeoutMs ?? computedTimeoutMs
680
787
  });
681
788
  if (!result.ok || !result.jobId) {
682
789
  logger.warn({ chatId: msg.chatId, reason, error: result.error }, 'Auto-spawn background job failed');
683
790
  return false;
684
791
  }
792
+ const queuePosition = getBackgroundJobQueuePosition({ jobId: result.jobId, groupFolder: group.folder });
793
+ const eta = routingDecision.estimatedMinutes ? `${routingDecision.estimatedMinutes} min` : null;
685
794
  const detailLine = detail ? `\n\nReason: ${detail}` : '';
686
- await sendMessage(msg.chatId, `Queued this as background job ${result.jobId}. I'll report back when it's done. You can keep chatting while it runs.${detailLine}`, { messageThreadId: msg.messageThreadId });
795
+ const queueLine = queuePosition ? `\n\nQueue position: ${queuePosition.position} of ${queuePosition.total}` : '';
796
+ const etaLine = eta ? `\n\nEstimated time: ${eta}` : '';
797
+ const planPreview = plannerProbeSteps.length > 0
798
+ ? formatPlanStepList({ steps: plannerProbeSteps, currentStep: 1, maxSteps: 4 })
799
+ : '';
800
+ const planLine = planPreview ? `\n\nPlanned steps:\n${planPreview}` : '';
801
+ await sendMessage(msg.chatId, `Queued this as background job ${result.jobId}. I'll report back when it's done. You can keep chatting while it runs.${queueLine}${etaLine}${detailLine}${planLine}`, { messageThreadId: msg.messageThreadId });
687
802
  if (lastMessage) {
688
803
  updateChatState(msg.chatId, lastMessage.timestamp, lastMessage.id);
689
804
  }
@@ -692,14 +807,58 @@ ${lines.join('\n')}
692
807
  }
693
808
  return true;
694
809
  };
695
- if (AUTO_SPAWN_ENABLED && AUTO_SPAWN_CLASSIFIER_ENABLED && lastMessage) {
810
+ let plannerProbeTools = [];
811
+ let plannerProbeSteps = [];
812
+ let plannerProbeMs = null;
813
+ if (shouldPlannerProbe() && lastMessage) {
814
+ const probeStarted = Date.now();
815
+ const probeResult = await probePlanner({
816
+ lastMessage,
817
+ recentMessages: missedMessages
818
+ });
819
+ plannerProbeMs = Date.now() - probeStarted;
820
+ recordStageLatency('planner_probe', plannerProbeMs, 'telegram');
821
+ if (probeResult.steps.length > 0)
822
+ plannerProbeSteps = probeResult.steps;
823
+ if (probeResult.tools.length > 0)
824
+ plannerProbeTools = probeResult.tools;
825
+ logger.info({
826
+ chatId: msg.chatId,
827
+ shouldBackground: probeResult.shouldBackground,
828
+ steps: probeResult.steps.length,
829
+ tools: probeResult.tools.length,
830
+ latencyMs: probeResult.latencyMs,
831
+ model: probeResult.model,
832
+ error: probeResult.error
833
+ }, 'Planner probe decision');
834
+ if (probeResult.shouldBackground) {
835
+ const autoSpawned = await maybeAutoSpawn('planner', 'planner probe predicted multi-step work');
836
+ if (autoSpawned)
837
+ return true;
838
+ }
839
+ }
840
+ if (routingDecision.shouldBackground) {
841
+ const autoSpawned = await maybeAutoSpawn('router', routingDecision.reason);
842
+ if (autoSpawned) {
843
+ return true;
844
+ }
845
+ }
846
+ let classifierMs = null;
847
+ if (AUTO_SPAWN_ENABLED && AUTO_SPAWN_CLASSIFIER_ENABLED && lastMessage && routingDecision.shouldRunClassifier) {
696
848
  try {
849
+ const queueDepth = getBackgroundJobQueueDepth({ groupFolder: group.folder });
697
850
  const classifierResult = await classifyBackgroundJob({
698
851
  lastMessage,
699
852
  recentMessages: missedMessages,
700
853
  isGroup: msg.isGroup,
701
- chatType: msg.chatType
854
+ chatType: msg.chatType,
855
+ queueDepth,
856
+ metricsSource: 'telegram'
702
857
  });
858
+ if (classifierResult.latencyMs) {
859
+ classifierMs = classifierResult.latencyMs;
860
+ recordStageLatency('classifier', classifierResult.latencyMs, 'telegram');
861
+ }
703
862
  logger.info({
704
863
  chatId: msg.chatId,
705
864
  decision: classifierResult.shouldBackground,
@@ -710,7 +869,11 @@ ${lines.join('\n')}
710
869
  error: classifierResult.error
711
870
  }, 'Background job classifier decision');
712
871
  if (classifierResult.shouldBackground) {
713
- const autoSpawned = await maybeAutoSpawn('classifier');
872
+ const estimated = classifierResult.estimatedMinutes;
873
+ if (typeof estimated === 'number' && Number.isFinite(estimated) && estimated > 0) {
874
+ routingDecision.estimatedMinutes = Math.round(estimated);
875
+ }
876
+ const autoSpawned = await maybeAutoSpawn('classifier', classifierResult.reason);
714
877
  if (autoSpawned) {
715
878
  return true;
716
879
  }
@@ -720,17 +883,76 @@ ${lines.join('\n')}
720
883
  logger.warn({ chatId: msg.chatId, err }, 'Background job classifier failed');
721
884
  }
722
885
  }
723
- const progressNotifier = createProgressNotifier({
724
- enabled: PROGRESS_ENABLED && !streamingEnabled,
725
- initialDelayMs: PROGRESS_INITIAL_MS,
726
- intervalMs: PROGRESS_INTERVAL_MS,
727
- maxUpdates: PROGRESS_MAX_UPDATES,
728
- messages: PROGRESS_MESSAGES,
886
+ const predictedStage = inferProgressStage({
887
+ content: lastMessage?.content || prompt,
888
+ plannerTools: plannerProbeTools,
889
+ plannerSteps: plannerProbeSteps,
890
+ enablePlanner: routingDecision.enablePlanner
891
+ });
892
+ const predictedMs = estimateForegroundMs({
893
+ content: lastMessage?.content || prompt,
894
+ routing: routingDecision,
895
+ plannerSteps: plannerProbeSteps,
896
+ plannerTools: plannerProbeTools
897
+ });
898
+ const planStepIndex = inferPlanStepIndex(predictedStage, plannerProbeSteps.length);
899
+ const progressManager = createProgressManager({
900
+ enabled: routingDecision.progress.enabled && !streamingEnabled,
901
+ initialDelayMs: routingDecision.progress.initialMs,
902
+ intervalMs: routingDecision.progress.intervalMs,
903
+ maxUpdates: routingDecision.progress.maxUpdates,
904
+ messages: routingDecision.progress.messages.length > 0
905
+ ? routingDecision.progress.messages
906
+ : DEFAULT_PROGRESS_MESSAGES,
907
+ stageMessages: DEFAULT_PROGRESS_STAGES,
908
+ stageThrottleMs: 20_000,
729
909
  send: async (text) => { await sendMessage(msg.chatId, text, { messageThreadId: msg.messageThreadId }); },
730
910
  onError: (err) => logger.debug({ chatId: msg.chatId, err }, 'Failed to send progress update')
731
911
  });
732
- progressNotifier.start();
912
+ progressManager.start();
913
+ let sentPlan = false;
914
+ if (predictedMs && predictedMs >= 10_000 && routingDecision.progress.enabled && !streamingEnabled) {
915
+ if (plannerProbeSteps.length > 0) {
916
+ const planMessage = formatProgressWithPlan({
917
+ steps: plannerProbeSteps,
918
+ currentStep: planStepIndex ?? 1,
919
+ stage: predictedStage
920
+ });
921
+ progressManager.notify(planMessage);
922
+ sentPlan = true;
923
+ }
924
+ else {
925
+ progressManager.notify(DEFAULT_PROGRESS_STAGES.ack);
926
+ }
927
+ }
928
+ if (!(sentPlan && predictedStage === 'planning')) {
929
+ progressManager.setStage(predictedStage);
930
+ }
931
+ if (predictedStage === 'planning') {
932
+ const followUpStage = inferProgressStage({
933
+ content: lastMessage?.content || prompt,
934
+ plannerTools: plannerProbeTools,
935
+ plannerSteps: plannerProbeSteps,
936
+ enablePlanner: false
937
+ });
938
+ if (followUpStage !== 'planning') {
939
+ const delay = Math.min(15_000, Math.max(5_000, Math.floor(routingDecision.progress.initialMs / 2)));
940
+ setTimeout(() => progressManager.setStage(followUpStage), delay);
941
+ }
942
+ }
943
+ const abortController = new AbortController();
944
+ activeRuns.set(msg.chatId, abortController);
733
945
  try {
946
+ const recallMaxResults = routingDecision.enableMemoryRecall
947
+ ? (Number.isFinite(routingDecision.recallMaxResults)
948
+ ? Math.max(0, Math.floor(routingDecision.recallMaxResults))
949
+ : MEMORY_RECALL_MAX_RESULTS)
950
+ : 0;
951
+ const recallMaxTokens = routingDecision.enableMemoryRecall
952
+ ? (Number.isFinite(routingDecision.recallMaxTokens)
953
+ ? Math.max(0, Math.floor(routingDecision.recallMaxTokens))
954
+ : MEMORY_RECALL_MAX_TOKENS)
955
+ : 0;
734
956
  const execution = await executeAgentRun({
735
957
  group,
736
958
  prompt,
@@ -738,8 +960,10 @@ ${lines.join('\n')}
738
960
  userId: msg.senderId,
739
961
  userName: msg.senderName,
740
962
  recallQuery: recallQuery || msg.content,
741
- recallMaxResults: MEMORY_RECALL_MAX_RESULTS,
742
- recallMaxTokens: MEMORY_RECALL_MAX_TOKENS,
963
+ recallMaxResults,
964
+ recallMaxTokens,
965
+ toolAllow: routingDecision.toolAllow,
966
+ toolDeny: routingDecision.toolDeny,
743
967
  sessionId: sessions[group.folder],
744
968
  onSessionUpdate: (sessionId) => { sessions[group.folder] = sessionId; },
745
969
  streaming: streamingEnabled && draftId
@@ -751,12 +975,21 @@ ${lines.join('\n')}
751
975
  }
752
976
  : undefined,
753
977
  availableGroups: buildAvailableGroupsSnapshot(),
978
+ modelOverride: routingDecision.modelOverride,
979
+ modelMaxOutputTokens: routingDecision.maxOutputTokens,
980
+ maxToolSteps: routingDecision.maxToolSteps,
981
+ disablePlanner: !routingDecision.enablePlanner,
982
+ disableResponseValidation: !routingDecision.enableResponseValidation,
983
+ responseValidationMaxRetries: routingDecision.responseValidationMaxRetries,
984
+ disableMemoryExtraction: !routingDecision.enableMemoryExtraction,
985
+ abortSignal: abortController.signal,
754
986
  timeoutMs: AUTO_SPAWN_ENABLED && AUTO_SPAWN_FOREGROUND_TIMEOUT_MS > 0
755
987
  ? AUTO_SPAWN_FOREGROUND_TIMEOUT_MS
756
988
  : undefined
757
989
  });
758
990
  output = execution.output;
759
991
  context = execution.context;
992
+ progressManager.setStage('finalizing');
760
993
  if (output.status === 'error') {
761
994
  errorMessage = output.error || 'Unknown error';
762
995
  }
@@ -772,8 +1005,15 @@ ${lines.join('\n')}
772
1005
  logger.error({ group: group.name, err }, 'Agent error');
773
1006
  }
774
1007
  finally {
775
- progressNotifier.stop();
776
- }
1008
+ progressManager.stop();
1009
+ activeRuns.delete(msg.chatId);
1010
+ }
1011
+ const extraTimings = {};
1012
+ extraTimings.router_ms = routerMs;
1013
+ if (classifierMs !== null)
1014
+ extraTimings.classifier_ms = classifierMs;
1015
+ if (plannerProbeMs !== null)
1016
+ extraTimings.planner_probe_ms = plannerProbeMs;
777
1017
  if (!output) {
778
1018
  const message = errorMessage || 'No output from agent';
779
1019
  if (context) {
@@ -784,7 +1024,8 @@ ${lines.join('\n')}
784
1024
  metricsSource: 'telegram',
785
1025
  toolAuditSource: 'message',
786
1026
  errorMessage: message,
787
- errorType: 'agent'
1027
+ errorType: 'agent',
1028
+ extraTimings
788
1029
  });
789
1030
  }
790
1031
  else {
@@ -826,7 +1067,8 @@ ${lines.join('\n')}
826
1067
  metricsSource: 'telegram',
827
1068
  toolAuditSource: 'message',
828
1069
  errorMessage: errorMessage || output.error || 'Unknown error',
829
- errorType: 'agent'
1070
+ errorType: 'agent',
1071
+ extraTimings
830
1072
  });
831
1073
  }
832
1074
  logger.error({ group: group.name, error: output.error }, 'Container agent error');
@@ -878,7 +1120,8 @@ ${lines.join('\n')}
878
1120
  output,
879
1121
  context,
880
1122
  metricsSource: 'telegram',
881
- toolAuditSource: 'message'
1123
+ toolAuditSource: 'message',
1124
+ extraTimings
882
1125
  });
883
1126
  }
884
1127
  return true;
@@ -901,7 +1144,8 @@ ${lines.join('\n')}
901
1144
  output,
902
1145
  context,
903
1146
  metricsSource: 'telegram',
904
- toolAuditSource: 'message'
1147
+ toolAuditSource: 'message',
1148
+ extraTimings
905
1149
  });
906
1150
  }
907
1151
  return true;
@@ -1101,11 +1345,22 @@ async function runHeartbeatOnce() {
1101
1345
  inputText: prompt,
1102
1346
  source: 'dotclaw-heartbeat'
1103
1347
  });
1348
+ const routingStartedAt = Date.now();
1349
+ const routingDecision = routePrompt(prompt);
1350
+ recordRoutingDecision(routingDecision.profile);
1351
+ const routerMs = Date.now() - routingStartedAt;
1352
+ recordStageLatency('router', routerMs, 'scheduler');
1104
1353
  let output = null;
1105
1354
  let context = null;
1106
1355
  let errorMessage = null;
1107
- const recallMaxResults = Math.max(4, MEMORY_RECALL_MAX_RESULTS - 2);
1108
- const recallMaxTokens = Math.max(600, MEMORY_RECALL_MAX_TOKENS - 200);
1356
+ const baseRecallResults = Number.isFinite(routingDecision.recallMaxResults)
1357
+ ? Math.max(0, Math.floor(routingDecision.recallMaxResults))
1358
+ : MEMORY_RECALL_MAX_RESULTS;
1359
+ const baseRecallTokens = Number.isFinite(routingDecision.recallMaxTokens)
1360
+ ? Math.max(0, Math.floor(routingDecision.recallMaxTokens))
1361
+ : MEMORY_RECALL_MAX_TOKENS;
1362
+ const recallMaxResults = routingDecision.enableMemoryRecall ? Math.max(4, baseRecallResults - 2) : 0;
1363
+ const recallMaxTokens = routingDecision.enableMemoryRecall ? Math.max(600, baseRecallTokens - 200) : 0;
1109
1364
  try {
1110
1365
  const execution = await executeAgentRun({
1111
1366
  group,
@@ -1118,7 +1373,14 @@ async function runHeartbeatOnce() {
1118
1373
  sessionId: sessions[group.folder],
1119
1374
  onSessionUpdate: (sessionId) => { sessions[group.folder] = sessionId; },
1120
1375
  isScheduledTask: true,
1121
- availableGroups: buildAvailableGroupsSnapshot()
1376
+ availableGroups: buildAvailableGroupsSnapshot(),
1377
+ modelOverride: routingDecision.modelOverride,
1378
+ modelMaxOutputTokens: routingDecision.maxOutputTokens,
1379
+ maxToolSteps: routingDecision.maxToolSteps,
1380
+ disablePlanner: !routingDecision.enablePlanner,
1381
+ disableResponseValidation: !routingDecision.enableResponseValidation,
1382
+ responseValidationMaxRetries: routingDecision.responseValidationMaxRetries,
1383
+ disableMemoryExtraction: !routingDecision.enableMemoryExtraction
1122
1384
  });
1123
1385
  output = execution.output;
1124
1386
  context = execution.context;
@@ -1142,7 +1404,8 @@ async function runHeartbeatOnce() {
1142
1404
  output,
1143
1405
  context,
1144
1406
  toolAuditSource: 'heartbeat',
1145
- errorMessage: errorMessage ?? undefined
1407
+ errorMessage: errorMessage ?? undefined,
1408
+ extraTimings: { router_ms: routerMs }
1146
1409
  });
1147
1410
  }
1148
1411
  else if (errorMessage) {