@stoneforge/smithy 1.0.3 → 1.2.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 (155) hide show
  1. package/README.md +100 -18
  2. package/dist/cli/commands/agent.js +10 -10
  3. package/dist/cli/commands/agent.js.map +1 -1
  4. package/dist/cli/commands/pool.d.ts.map +1 -1
  5. package/dist/cli/commands/pool.js +33 -16
  6. package/dist/cli/commands/pool.js.map +1 -1
  7. package/dist/git/merge.js +1 -1
  8. package/dist/git/merge.js.map +1 -1
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/prompts/director.md +2 -2
  14. package/dist/prompts/index.d.ts.map +1 -1
  15. package/dist/prompts/index.js +6 -3
  16. package/dist/prompts/index.js.map +1 -1
  17. package/dist/prompts/persistent-worker.md +1 -1
  18. package/dist/prompts/steward-base.md +4 -4
  19. package/dist/prompts/steward-recovery.md +113 -0
  20. package/dist/prompts/worker.md +12 -1
  21. package/dist/runtime/spawner.d.ts.map +1 -1
  22. package/dist/runtime/spawner.js +10 -0
  23. package/dist/runtime/spawner.js.map +1 -1
  24. package/dist/server/config.d.ts.map +1 -1
  25. package/dist/server/config.js +3 -1
  26. package/dist/server/config.js.map +1 -1
  27. package/dist/server/daemon-state.d.ts.map +1 -1
  28. package/dist/server/daemon-state.js +5 -3
  29. package/dist/server/daemon-state.js.map +1 -1
  30. package/dist/server/events-websocket.d.ts.map +1 -1
  31. package/dist/server/events-websocket.js +7 -5
  32. package/dist/server/events-websocket.js.map +1 -1
  33. package/dist/server/formatters.d.ts +16 -2
  34. package/dist/server/formatters.d.ts.map +1 -1
  35. package/dist/server/formatters.js +23 -2
  36. package/dist/server/formatters.js.map +1 -1
  37. package/dist/server/index.d.ts.map +1 -1
  38. package/dist/server/index.js +14 -11
  39. package/dist/server/index.js.map +1 -1
  40. package/dist/server/lsp-websocket.d.ts.map +1 -1
  41. package/dist/server/lsp-websocket.js +10 -8
  42. package/dist/server/lsp-websocket.js.map +1 -1
  43. package/dist/server/routes/agents.d.ts.map +1 -1
  44. package/dist/server/routes/agents.js +69 -15
  45. package/dist/server/routes/agents.js.map +1 -1
  46. package/dist/server/routes/daemon.d.ts.map +1 -1
  47. package/dist/server/routes/daemon.js +6 -4
  48. package/dist/server/routes/daemon.js.map +1 -1
  49. package/dist/server/routes/events.d.ts.map +1 -1
  50. package/dist/server/routes/events.js +4 -2
  51. package/dist/server/routes/events.js.map +1 -1
  52. package/dist/server/routes/extensions.d.ts.map +1 -1
  53. package/dist/server/routes/extensions.js +9 -7
  54. package/dist/server/routes/extensions.js.map +1 -1
  55. package/dist/server/routes/plugins.d.ts.map +1 -1
  56. package/dist/server/routes/plugins.js +6 -4
  57. package/dist/server/routes/plugins.js.map +1 -1
  58. package/dist/server/routes/pools.d.ts.map +1 -1
  59. package/dist/server/routes/pools.js +26 -7
  60. package/dist/server/routes/pools.js.map +1 -1
  61. package/dist/server/routes/scheduler.d.ts.map +1 -1
  62. package/dist/server/routes/scheduler.js +9 -7
  63. package/dist/server/routes/scheduler.js.map +1 -1
  64. package/dist/server/routes/sessions.d.ts.map +1 -1
  65. package/dist/server/routes/sessions.js +17 -15
  66. package/dist/server/routes/sessions.js.map +1 -1
  67. package/dist/server/routes/tasks.d.ts.map +1 -1
  68. package/dist/server/routes/tasks.js +54 -31
  69. package/dist/server/routes/tasks.js.map +1 -1
  70. package/dist/server/routes/upload.d.ts.map +1 -1
  71. package/dist/server/routes/upload.js +3 -1
  72. package/dist/server/routes/upload.js.map +1 -1
  73. package/dist/server/routes/workflows.d.ts.map +1 -1
  74. package/dist/server/routes/workflows.js +17 -15
  75. package/dist/server/routes/workflows.js.map +1 -1
  76. package/dist/server/routes/workspace-files.d.ts.map +1 -1
  77. package/dist/server/routes/workspace-files.js +11 -9
  78. package/dist/server/routes/workspace-files.js.map +1 -1
  79. package/dist/server/routes/worktrees.d.ts.map +1 -1
  80. package/dist/server/routes/worktrees.js +6 -4
  81. package/dist/server/routes/worktrees.js.map +1 -1
  82. package/dist/server/server.d.ts.map +1 -1
  83. package/dist/server/server.js +10 -8
  84. package/dist/server/server.js.map +1 -1
  85. package/dist/server/services/lsp-manager.d.ts.map +1 -1
  86. package/dist/server/services/lsp-manager.js +15 -13
  87. package/dist/server/services/lsp-manager.js.map +1 -1
  88. package/dist/server/services.d.ts +1 -2
  89. package/dist/server/services.d.ts.map +1 -1
  90. package/dist/server/services.js +37 -12
  91. package/dist/server/services.js.map +1 -1
  92. package/dist/server/static.d.ts.map +1 -1
  93. package/dist/server/static.js +3 -1
  94. package/dist/server/static.js.map +1 -1
  95. package/dist/server/websocket.d.ts.map +1 -1
  96. package/dist/server/websocket.js +6 -4
  97. package/dist/server/websocket.js.map +1 -1
  98. package/dist/services/agent-pool-service.d.ts.map +1 -1
  99. package/dist/services/agent-pool-service.js +7 -8
  100. package/dist/services/agent-pool-service.js.map +1 -1
  101. package/dist/services/agent-registry.d.ts +1 -1
  102. package/dist/services/agent-registry.d.ts.map +1 -1
  103. package/dist/services/agent-registry.js +2 -0
  104. package/dist/services/agent-registry.js.map +1 -1
  105. package/dist/services/dispatch-daemon.d.ts +64 -2
  106. package/dist/services/dispatch-daemon.d.ts.map +1 -1
  107. package/dist/services/dispatch-daemon.js +387 -59
  108. package/dist/services/dispatch-daemon.js.map +1 -1
  109. package/dist/services/index.d.ts +0 -2
  110. package/dist/services/index.d.ts.map +1 -1
  111. package/dist/services/index.js +0 -11
  112. package/dist/services/index.js.map +1 -1
  113. package/dist/services/merge-steward-service.d.ts.map +1 -1
  114. package/dist/services/merge-steward-service.js +6 -4
  115. package/dist/services/merge-steward-service.js.map +1 -1
  116. package/dist/services/steward-scheduler.d.ts +37 -5
  117. package/dist/services/steward-scheduler.d.ts.map +1 -1
  118. package/dist/services/steward-scheduler.js +224 -41
  119. package/dist/services/steward-scheduler.js.map +1 -1
  120. package/dist/services/task-assignment-service.d.ts.map +1 -1
  121. package/dist/services/task-assignment-service.js +3 -0
  122. package/dist/services/task-assignment-service.js.map +1 -1
  123. package/dist/testing/test-context.d.ts +1 -1
  124. package/dist/testing/test-context.d.ts.map +1 -1
  125. package/dist/types/agent-pool.d.ts +4 -0
  126. package/dist/types/agent-pool.d.ts.map +1 -1
  127. package/dist/types/agent-pool.js +8 -1
  128. package/dist/types/agent-pool.js.map +1 -1
  129. package/dist/types/agent.d.ts +29 -7
  130. package/dist/types/agent.d.ts.map +1 -1
  131. package/dist/types/agent.js +2 -2
  132. package/dist/types/agent.js.map +1 -1
  133. package/dist/types/role-definition.d.ts +1 -1
  134. package/dist/types/role-definition.js +1 -1
  135. package/dist/types/role-definition.js.map +1 -1
  136. package/dist/types/task-meta.d.ts +6 -0
  137. package/dist/types/task-meta.d.ts.map +1 -1
  138. package/dist/types/task-meta.js.map +1 -1
  139. package/dist/utils/logger.d.ts +66 -0
  140. package/dist/utils/logger.d.ts.map +1 -0
  141. package/dist/utils/logger.js +133 -0
  142. package/dist/utils/logger.js.map +1 -0
  143. package/package.json +7 -7
  144. package/web/assets/index-CNcjZKzg.css +32 -0
  145. package/web/assets/{index-R1cylSgw.js → index-CtkfxijF.js} +679 -435
  146. package/web/assets/{utils-vendor-DaJ2Dubl.js → utils-vendor-B7jOGaxP.js} +1 -1
  147. package/web/index.html +3 -3
  148. package/dist/prompts/steward-health.md +0 -39
  149. package/dist/prompts/steward-ops.md +0 -28
  150. package/dist/prompts/steward-reminder.md +0 -26
  151. package/dist/services/health-steward-service.d.ts +0 -446
  152. package/dist/services/health-steward-service.d.ts.map +0 -1
  153. package/dist/services/health-steward-service.js +0 -866
  154. package/dist/services/health-steward-service.js.map +0 -1
  155. package/web/assets/index-DqP-_E4F.css +0 -32
@@ -6,6 +6,8 @@
6
6
  * real-time event updates from the EventBroadcaster.
7
7
  */
8
8
  import { parseClientMessage, getBroadcaster, shouldReceiveEvent, } from '@stoneforge/shared-routes';
9
+ import { createLogger } from '../utils/logger.js';
10
+ const logger = createLogger('orchestrator:events-ws');
9
11
  /**
10
12
  * Track active event-subscription WebSocket connections
11
13
  */
@@ -18,7 +20,7 @@ function sendToClient(ws, message) {
18
20
  ws.send(JSON.stringify(message));
19
21
  }
20
22
  catch (err) {
21
- console.error('[orchestrator:events-ws] Error sending message to client:', err);
23
+ logger.error('Error sending message to client:', err);
22
24
  }
23
25
  }
24
26
  /**
@@ -43,7 +45,7 @@ export function handleEventsWSOpen(ws) {
43
45
  broadcaster.addListener(eventListener);
44
46
  }
45
47
  eventsClients.set(clientId, ws);
46
- console.log(`[orchestrator:events-ws] Client connected: ${clientId}`);
48
+ logger.debug(`Client connected: ${clientId}`);
47
49
  }
48
50
  /**
49
51
  * Handle an event-subscription WebSocket message
@@ -68,7 +70,7 @@ export function handleEventsWSMessage(ws, message) {
68
70
  ws.data.subscriptions.add(channel);
69
71
  }
70
72
  sendToClient(ws, { type: 'subscribed', channels: parsed.channels });
71
- console.log(`[orchestrator:events-ws] Client ${ws.data.id} subscribed to: ${parsed.channels.join(', ')}`);
73
+ logger.debug(`Client ${ws.data.id} subscribed to: ${parsed.channels.join(', ')}`);
72
74
  break;
73
75
  }
74
76
  case 'unsubscribe': {
@@ -76,7 +78,7 @@ export function handleEventsWSMessage(ws, message) {
76
78
  ws.data.subscriptions.delete(channel);
77
79
  }
78
80
  sendToClient(ws, { type: 'unsubscribed', channels: parsed.channels });
79
- console.log(`[orchestrator:events-ws] Client ${ws.data.id} unsubscribed from: ${parsed.channels.join(', ')}`);
81
+ logger.debug(`Client ${ws.data.id} unsubscribed from: ${parsed.channels.join(', ')}`);
80
82
  break;
81
83
  }
82
84
  }
@@ -91,6 +93,6 @@ export function handleEventsWSClose(ws) {
91
93
  broadcaster.removeListener(eventListener);
92
94
  }
93
95
  eventsClients.delete(id);
94
- console.log(`[orchestrator:events-ws] Client disconnected: ${id}`);
96
+ logger.debug(`Client disconnected: ${id}`);
95
97
  }
96
98
  //# sourceMappingURL=events-websocket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events-websocket.js","sourceRoot":"","sources":["../../src/server/events-websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events-websocket.js","sourceRoot":"","sources":["../../src/server/events-websocket.ts"],"names":[],"mappings":"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"}
@@ -5,11 +5,25 @@
5
5
  */
6
6
  import type { Task } from '@stoneforge/core';
7
7
  import type { SessionRecord, WorktreeInfo, StewardExecutionEntry, PluginExecutionResult } from '../index.js';
8
- export declare function formatTaskResponse(task: Task, hydratedDescription?: string | null): {
8
+ /**
9
+ * Compute the effective display status for a task.
10
+ *
11
+ * The `blocked` status is computed at display time, never stored directly.
12
+ * A task is considered blocked when it has unresolved blocking dependencies
13
+ * (i.e., it appears in the blocked_cache). Only tasks with an 'open' stored
14
+ * status are shown as 'blocked' — tasks already in_progress, closed, etc.
15
+ * retain their stored status.
16
+ *
17
+ * @param task - The task to compute the effective status for
18
+ * @param blockedIds - Set of element IDs that are currently blocked (from blocked_cache)
19
+ * @returns The effective display status
20
+ */
21
+ export declare function getEffectiveTaskStatus(task: Task, blockedIds?: Set<string>): string;
22
+ export declare function formatTaskResponse(task: Task, hydratedDescription?: string | null, blockedIds?: Set<string>): {
9
23
  id: import("@stoneforge/core").ElementId;
10
24
  title: string;
11
25
  description: string | undefined;
12
- status: import("@stoneforge/core").TaskStatus;
26
+ status: string;
13
27
  priority: import("@stoneforge/core").Priority;
14
28
  complexity: import("@stoneforge/core").Complexity;
15
29
  taskType: import("@stoneforge/core").TaskTypeValue;
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/server/formatters.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,EAEtB,MAAM,aAAa,CAAC;AAErB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCjF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa;;;;;;;;;;;;;;;EAiBzD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY;;;;;;;;;;EAYxD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB;;;;;;;;;;EAYhE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,qBAAqB;;;;;;;;;;;;EAcxE;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC1C,EACD,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAwCR"}
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/server/formatters.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,EAEtB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAKnF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwC3G;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa;;;;;;;;;;;;;;;EAiBzD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY;;;;;;;;;;EAYxD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB;;;;;;;;;;EAYhE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,qBAAqB;;;;;;;;;;;;EAcxE;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC1C,EACD,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAwCR"}
@@ -3,15 +3,36 @@
3
3
  *
4
4
  * Functions to format domain objects for JSON API responses.
5
5
  */
6
- export function formatTaskResponse(task, hydratedDescription) {
6
+ /**
7
+ * Compute the effective display status for a task.
8
+ *
9
+ * The `blocked` status is computed at display time, never stored directly.
10
+ * A task is considered blocked when it has unresolved blocking dependencies
11
+ * (i.e., it appears in the blocked_cache). Only tasks with an 'open' stored
12
+ * status are shown as 'blocked' — tasks already in_progress, closed, etc.
13
+ * retain their stored status.
14
+ *
15
+ * @param task - The task to compute the effective status for
16
+ * @param blockedIds - Set of element IDs that are currently blocked (from blocked_cache)
17
+ * @returns The effective display status
18
+ */
19
+ export function getEffectiveTaskStatus(task, blockedIds) {
20
+ if (blockedIds && blockedIds.has(task.id) && task.status === 'open') {
21
+ return 'blocked';
22
+ }
23
+ return task.status;
24
+ }
25
+ export function formatTaskResponse(task, hydratedDescription, blockedIds) {
7
26
  const meta = task.metadata?.orchestrator;
8
27
  // Use hydrated description from descriptionRef, or fall back to metadata.description
9
28
  const description = hydratedDescription ?? task.metadata?.description;
29
+ // Compute effective display status: show 'blocked' for open tasks with unresolved dependencies
30
+ const effectiveStatus = getEffectiveTaskStatus(task, blockedIds);
10
31
  return {
11
32
  id: task.id,
12
33
  title: task.title,
13
34
  description,
14
- status: task.status,
35
+ status: effectiveStatus,
15
36
  priority: task.priority,
16
37
  complexity: task.complexity,
17
38
  taskType: task.taskType,
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/server/formatters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/server/formatters.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAuClE,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkJ5F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAyClE,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmJ5F"}
@@ -7,6 +7,7 @@
7
7
  import { Hono } from 'hono';
8
8
  import { cors } from 'hono/cors';
9
9
  import { getAgentMetadata } from '../index.js';
10
+ import { createLogger, getLogLevel } from '../utils/logger.js';
10
11
  import { CORS_ORIGINS as DEFAULT_CORS_ORIGINS, PORT as DEFAULT_PORT, HOST as DEFAULT_HOST, PROJECT_ROOT as DEFAULT_PROJECT_ROOT, DB_PATH as DEFAULT_DB_PATH } from './config.js';
11
12
  import { initializeServices } from './services.js';
12
13
  import { createHealthRoutes, createTaskRoutes, createAgentRoutes, createSessionRoutes, createWorktreeRoutes, createSchedulerRoutes, createPluginRoutes, createEventRoutes, createUploadRoutes, createDaemonRoutes, createWorkflowRoutes, createPoolRoutes, createWorkspaceFilesRoutes, createExtensionsRoutes, markDaemonAsServerManaged, } from './routes/index.js';
@@ -21,7 +22,9 @@ import { createLspManager } from './services/lsp-manager.js';
21
22
  import { createLspRoutes } from './routes/lsp.js';
22
23
  import { initializeBroadcaster } from '@stoneforge/shared-routes';
23
24
  import { registerStaticMiddleware } from './static.js';
25
+ const logger = createLogger('orchestrator');
24
26
  export async function startSmithyServer(options = {}) {
27
+ logger.info('Log level: ' + getLogLevel());
25
28
  const port = options.port ?? DEFAULT_PORT;
26
29
  const host = options.host ?? DEFAULT_HOST;
27
30
  const corsOrigins = options.corsOrigins ?? [
@@ -41,16 +44,16 @@ export async function startSmithyServer(options = {}) {
41
44
  const meta = getAgentMetadata(director);
42
45
  if (meta?.sessionStatus === 'running' && meta?.sessionId) {
43
46
  directorSessionId = meta.sessionId;
44
- console.log(`[orchestrator] Director was running with session ${directorSessionId} before restart`);
47
+ logger.debug(`Director was running with session ${directorSessionId} before restart`);
45
48
  }
46
49
  }
47
50
  // Reconcile stale sessions: reset agents marked 'running' to 'idle' if process is dead
48
51
  const reconcileResult = await services.sessionManager.reconcileOnStartup();
49
52
  if (reconcileResult.reconciled > 0) {
50
- console.log(`[orchestrator] Reconciled ${reconcileResult.reconciled} stale agent session(s)`);
53
+ logger.info(`Reconciled ${reconcileResult.reconciled} stale agent session(s)`);
51
54
  }
52
55
  if (reconcileResult.errors.length > 0) {
53
- console.warn('[orchestrator] Reconciliation errors:', reconcileResult.errors);
56
+ logger.warn('Reconciliation errors:', reconcileResult.errors);
54
57
  }
55
58
  const app = new Hono();
56
59
  app.use('*', cors({
@@ -103,7 +106,7 @@ export async function startSmithyServer(options = {}) {
103
106
  // This must happen after startServer() so HTTP/WS infrastructure is ready for clients
104
107
  if (directorSessionId && director) {
105
108
  const directorId = director.id;
106
- console.log(`[orchestrator] Attempting to auto-resume director session ${directorSessionId}`);
109
+ logger.debug(`Attempting to auto-resume director session ${directorSessionId}`);
107
110
  try {
108
111
  const { session, events } = await services.sessionManager.resumeSession(directorId, {
109
112
  providerSessionId: directorSessionId,
@@ -120,12 +123,12 @@ export async function startSmithyServer(options = {}) {
120
123
  agentRole: session.agentRole || 'director',
121
124
  events,
122
125
  });
123
- console.log(`[orchestrator] Director session auto-resumed successfully (session: ${session.id})`);
126
+ logger.info(`Director session auto-resumed successfully (session: ${session.id})`);
124
127
  }
125
128
  catch (error) {
126
129
  // Resume failed - director will stay idle and can be started manually via UI
127
- console.warn('[orchestrator] Failed to auto-resume director session:', error instanceof Error ? error.message : String(error));
128
- console.log('[orchestrator] Director will remain idle - can be started manually via UI');
130
+ logger.warn('Failed to auto-resume director session:', error instanceof Error ? error.message : String(error));
131
+ logger.info('Director will remain idle - can be started manually via UI');
129
132
  }
130
133
  }
131
134
  // Auto-start dispatch daemon based on persisted state and environment variable
@@ -134,19 +137,19 @@ export async function startSmithyServer(options = {}) {
134
137
  const envDisabled = process.env.DAEMON_AUTO_START === 'false';
135
138
  const persistedShouldRun = shouldDaemonAutoStart();
136
139
  if (!services.dispatchDaemon) {
137
- console.log('[orchestrator] Dispatch daemon not available (no git repository)');
140
+ logger.info('Dispatch daemon not available (no git repository)');
138
141
  }
139
142
  else if (envDisabled) {
140
- console.log('[orchestrator] Dispatch daemon auto-start disabled (DAEMON_AUTO_START=false)');
143
+ logger.info('Dispatch daemon auto-start disabled (DAEMON_AUTO_START=false)');
141
144
  }
142
145
  else if (!persistedShouldRun) {
143
- console.log('[orchestrator] Dispatch daemon not started (was stopped by user, state persisted)');
146
+ logger.info('Dispatch daemon not started (was stopped by user, state persisted)');
144
147
  }
145
148
  else {
146
149
  services.dispatchDaemon.start();
147
150
  saveDaemonState(true, 'server-startup');
148
151
  markDaemonAsServerManaged();
149
- console.log('[orchestrator] Dispatch daemon auto-started');
152
+ logger.info('Dispatch daemon auto-started');
150
153
  }
151
154
  return services;
152
155
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-websocket.d.ts","sourceRoot":"","sources":["../../src/server/lsp-websocket.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAyCD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,eAAe,CAAC,eAAe,CAAC,EACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,GACrB,IAAI,CA0FN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,eAAe,CAAC,eAAe,CAAC,EACpC,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,IAAI,CAsBN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,IAAI,CAU3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
1
+ {"version":3,"file":"lsp-websocket.d.ts","sourceRoot":"","sources":["../../src/server/lsp-websocket.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAyCD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,eAAe,CAAC,eAAe,CAAC,EACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,GACrB,IAAI,CA0FN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,eAAe,CAAC,eAAe,CAAC,EACpC,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,IAAI,CAsBN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,IAAI,CAU3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
@@ -4,6 +4,8 @@
4
4
  * Bridges WebSocket connections to Language Server Protocol (LSP) processes.
5
5
  * Handles message formatting and bidirectional communication.
6
6
  */
7
+ import { createLogger } from '../utils/logger.js';
8
+ const logger = createLogger('lsp-ws');
7
9
  /**
8
10
  * Parse the Content-Length header from LSP message buffer
9
11
  */
@@ -45,7 +47,7 @@ export function handleLspWSOpen(ws, language, lspManager) {
45
47
  process: null,
46
48
  buffer: Buffer.alloc(0),
47
49
  });
48
- console.log(`[lsp-ws] Client ${clientId} connected for language: ${language}`);
50
+ logger.debug(`Client ${clientId} connected for language: ${language}`);
49
51
  // Start the language server for this language
50
52
  lspManager.startServer(language).then((process) => {
51
53
  const client = lspClients.get(clientId);
@@ -54,7 +56,7 @@ export function handleLspWSOpen(ws, language, lspManager) {
54
56
  return;
55
57
  }
56
58
  if (!process) {
57
- console.log(`[lsp-ws] No server available for language: ${language}`);
59
+ logger.debug(`No server available for language: ${language}`);
58
60
  ws.send(JSON.stringify({
59
61
  jsonrpc: '2.0',
60
62
  error: {
@@ -102,9 +104,9 @@ export function handleLspWSOpen(ws, language, lspManager) {
102
104
  client.cleanup = () => {
103
105
  process.stdout?.off('data', onData);
104
106
  };
105
- console.log(`[lsp-ws] Server connected for client ${clientId}`);
107
+ logger.debug(`Server connected for client ${clientId}`);
106
108
  }).catch((error) => {
107
- console.error(`[lsp-ws] Error starting server for ${language}:`, error);
109
+ logger.error(`Error starting server for ${language}:`, error);
108
110
  ws.send(JSON.stringify({
109
111
  jsonrpc: '2.0',
110
112
  error: {
@@ -120,12 +122,12 @@ export function handleLspWSOpen(ws, language, lspManager) {
120
122
  export function handleLspWSMessage(ws, message) {
121
123
  const client = lspClients.get(ws.data.id);
122
124
  if (!client) {
123
- console.error(`[lsp-ws] Unknown client: ${ws.data.id}`);
125
+ logger.error(`Unknown client: ${ws.data.id}`);
124
126
  return;
125
127
  }
126
128
  if (!client.process || !client.process.stdin) {
127
129
  // Server not ready yet, queue the message or send error
128
- console.log(`[lsp-ws] Server not ready for client ${ws.data.id}, message queued`);
130
+ logger.debug(`Server not ready for client ${ws.data.id}, message queued`);
129
131
  return;
130
132
  }
131
133
  try {
@@ -135,7 +137,7 @@ export function handleLspWSMessage(ws, message) {
135
137
  client.process.stdin.write(lspMessage);
136
138
  }
137
139
  catch (error) {
138
- console.error(`[lsp-ws] Error forwarding message:`, error);
140
+ logger.error(`Error forwarding message:`, error);
139
141
  }
140
142
  }
141
143
  /**
@@ -150,7 +152,7 @@ export function handleLspWSClose(ws) {
150
152
  // Note: We don't kill the language server process here because it can serve multiple clients
151
153
  lspClients.delete(ws.data.id);
152
154
  }
153
- console.log(`[lsp-ws] Client disconnected: ${ws.data.id}`);
155
+ logger.debug(`Client disconnected: ${ws.data.id}`);
154
156
  }
155
157
  /**
156
158
  * Get the number of active LSP WebSocket connections
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-websocket.js","sourceRoot":"","sources":["../../src/server/lsp-websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lsp-websocket.js","sourceRoot":"","sources":["../../src/server/lsp-websocket.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/server/routes/agents.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,8EAubnD"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/server/routes/agents.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM/C,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,8EAyfnD"}
@@ -6,8 +6,10 @@
6
6
  import { Hono } from 'hono';
7
7
  import { getProviderRegistry, ProviderError } from '@stoneforge/smithy/providers';
8
8
  import { formatSessionRecord } from '../formatters.js';
9
+ import { createLogger } from '../../utils/logger.js';
10
+ const logger = createLogger('orchestrator');
9
11
  export function createAgentRoutes(services) {
10
- const { agentRegistry, sessionManager, taskAssignmentService } = services;
12
+ const { agentRegistry, sessionManager, taskAssignmentService, stewardScheduler } = services;
11
13
  const app = new Hono();
12
14
  // GET /api/agents
13
15
  app.get('/api/agents', async (c) => {
@@ -18,7 +20,7 @@ export function createAgentRoutes(services) {
18
20
  return c.json({ agents });
19
21
  }
20
22
  catch (error) {
21
- console.error('[orchestrator] Failed to list agents:', error);
23
+ logger.error('Failed to list agents:', error);
22
24
  return c.json({ error: { code: 'INTERNAL_ERROR', message: String(error) } }, 500);
23
25
  }
24
26
  });
@@ -65,6 +67,8 @@ export function createAgentRoutes(services) {
65
67
  name: body.name,
66
68
  stewardFocus: body.stewardFocus,
67
69
  triggers: body.triggers,
70
+ playbook: body.stewardFocus === 'custom' ? body.playbook : undefined,
71
+ playbookId: body.stewardFocus === 'custom' ? body.playbookId : undefined,
68
72
  createdBy,
69
73
  tags: body.tags,
70
74
  maxConcurrentTasks: body.maxConcurrentTasks,
@@ -72,6 +76,14 @@ export function createAgentRoutes(services) {
72
76
  provider: body.provider,
73
77
  model: body.model,
74
78
  });
79
+ if (stewardScheduler.isRunning()) {
80
+ try {
81
+ await stewardScheduler.registerSteward(agent.id);
82
+ }
83
+ catch (err) {
84
+ logger.warn('Failed to auto-register steward with scheduler:', err);
85
+ }
86
+ }
75
87
  break;
76
88
  default:
77
89
  return c.json({ error: { code: 'INVALID_INPUT', message: `Invalid role: ${body.role}` } }, 400);
@@ -83,7 +95,7 @@ export function createAgentRoutes(services) {
83
95
  if (errorMessage.includes('already exists') || errorMessage.includes('duplicate')) {
84
96
  return c.json({ error: { code: 'ALREADY_EXISTS', message: errorMessage } }, 409);
85
97
  }
86
- console.error('[orchestrator] Failed to register agent:', error);
98
+ logger.error('Failed to register agent:', error);
87
99
  return c.json({ error: { code: 'INTERNAL_ERROR', message: errorMessage } }, 500);
88
100
  }
89
101
  });
@@ -107,7 +119,7 @@ export function createAgentRoutes(services) {
107
119
  if (errorMessage.includes('already exists') || errorMessage.includes('duplicate')) {
108
120
  return c.json({ error: { code: 'ALREADY_EXISTS', message: errorMessage } }, 409);
109
121
  }
110
- console.error('[orchestrator] Failed to register director:', error);
122
+ logger.error('Failed to register director:', error);
111
123
  return c.json({ error: { code: 'INTERNAL_ERROR', message: errorMessage } }, 500);
112
124
  }
113
125
  });
@@ -139,7 +151,7 @@ export function createAgentRoutes(services) {
139
151
  if (errorMessage.includes('already exists') || errorMessage.includes('duplicate')) {
140
152
  return c.json({ error: { code: 'ALREADY_EXISTS', message: errorMessage } }, 409);
141
153
  }
142
- console.error('[orchestrator] Failed to register worker:', error);
154
+ logger.error('Failed to register worker:', error);
143
155
  return c.json({ error: { code: 'INTERNAL_ERROR', message: errorMessage } }, 500);
144
156
  }
145
157
  });
@@ -153,10 +165,13 @@ export function createAgentRoutes(services) {
153
165
  if (!body.stewardFocus) {
154
166
  return c.json({ error: { code: 'INVALID_INPUT', message: 'stewardFocus is required' } }, 400);
155
167
  }
156
- const validFocuses = ['merge', 'health', 'reminder', 'ops'];
168
+ const validFocuses = ['merge', 'docs', 'recovery', 'custom'];
157
169
  if (!validFocuses.includes(body.stewardFocus)) {
158
170
  return c.json({ error: { code: 'INVALID_INPUT', message: `stewardFocus must be one of: ${validFocuses.join(', ')}` } }, 400);
159
171
  }
172
+ if (body.stewardFocus === 'custom' && !body.playbook?.trim() && !body.playbookId?.trim()) {
173
+ return c.json({ error: { code: 'INVALID_INPUT', message: 'Either playbook or playbookId is required for custom stewards' } }, 400);
174
+ }
160
175
  if (body.triggers) {
161
176
  for (const trigger of body.triggers) {
162
177
  if (trigger.type === 'cron' && !trigger.schedule) {
@@ -174,11 +189,21 @@ export function createAgentRoutes(services) {
174
189
  name: body.name,
175
190
  stewardFocus: body.stewardFocus,
176
191
  triggers: body.triggers,
192
+ playbook: body.stewardFocus === 'custom' ? body.playbook : undefined,
193
+ playbookId: body.stewardFocus === 'custom' ? body.playbookId : undefined,
177
194
  createdBy: (body.createdBy ?? 'el-0000'),
178
195
  tags: body.tags,
179
196
  maxConcurrentTasks: body.maxConcurrentTasks,
180
197
  reportsTo: body.reportsTo,
181
198
  });
199
+ if (stewardScheduler.isRunning()) {
200
+ try {
201
+ await stewardScheduler.registerSteward(agent.id);
202
+ }
203
+ catch (err) {
204
+ logger.warn('Failed to auto-register steward with scheduler:', err);
205
+ }
206
+ }
182
207
  return c.json({ agent }, 201);
183
208
  }
184
209
  catch (error) {
@@ -186,7 +211,7 @@ export function createAgentRoutes(services) {
186
211
  if (errorMessage.includes('already exists') || errorMessage.includes('duplicate')) {
187
212
  return c.json({ error: { code: 'ALREADY_EXISTS', message: errorMessage } }, 409);
188
213
  }
189
- console.error('[orchestrator] Failed to register steward:', error);
214
+ logger.error('Failed to register steward:', error);
190
215
  return c.json({ error: { code: 'INTERNAL_ERROR', message: errorMessage } }, 500);
191
216
  }
192
217
  });
@@ -201,7 +226,7 @@ export function createAgentRoutes(services) {
201
226
  return c.json({ agent });
202
227
  }
203
228
  catch (error) {
204
- console.error('[orchestrator] Failed to get agent:', error);
229
+ logger.error('Failed to get agent:', error);
205
230
  return c.json({ error: { code: 'INTERNAL_ERROR', message: String(error) } }, 500);
206
231
  }
207
232
  });
@@ -238,10 +263,39 @@ export function createAgentRoutes(services) {
238
263
  model: body.model === null ? undefined : body.model.trim(),
239
264
  });
240
265
  }
266
+ // Update triggers in agent metadata if provided (steward agents only)
267
+ if (body.triggers !== undefined) {
268
+ const agentMeta = updatedAgent.metadata?.agent;
269
+ if (!agentMeta || agentMeta.agentRole !== 'steward') {
270
+ return c.json({ error: { code: 'VALIDATION_ERROR', message: 'Triggers can only be set on steward agents' } }, 400);
271
+ }
272
+ // Validate each trigger
273
+ for (const trigger of body.triggers) {
274
+ if (trigger.type === 'cron' && !trigger.schedule) {
275
+ return c.json({ error: { code: 'VALIDATION_ERROR', message: 'Cron trigger requires a schedule' } }, 400);
276
+ }
277
+ if (trigger.type === 'event' && !trigger.event) {
278
+ return c.json({ error: { code: 'VALIDATION_ERROR', message: 'Event trigger requires an event name' } }, 400);
279
+ }
280
+ if (trigger.type !== 'cron' && trigger.type !== 'event') {
281
+ return c.json({ error: { code: 'VALIDATION_ERROR', message: 'Trigger type must be "cron" or "event"' } }, 400);
282
+ }
283
+ }
284
+ updatedAgent = await agentRegistry.updateAgentMetadata(agentId, { triggers: body.triggers });
285
+ // Re-register steward with scheduler to pick up new triggers
286
+ if (stewardScheduler.isRunning()) {
287
+ try {
288
+ await stewardScheduler.registerSteward(agentId);
289
+ }
290
+ catch (err) {
291
+ logger.warn('Failed to re-register steward with scheduler after trigger update:', err);
292
+ }
293
+ }
294
+ }
241
295
  return c.json({ agent: updatedAgent });
242
296
  }
243
297
  catch (error) {
244
- console.error('[orchestrator] Failed to update agent:', error);
298
+ logger.error('Failed to update agent:', error);
245
299
  return c.json({ error: { code: 'INTERNAL_ERROR', message: String(error) } }, 500);
246
300
  }
247
301
  });
@@ -262,7 +316,7 @@ export function createAgentRoutes(services) {
262
316
  return c.json({ success: true });
263
317
  }
264
318
  catch (error) {
265
- console.error('[orchestrator] Failed to delete agent:', error);
319
+ logger.error('Failed to delete agent:', error);
266
320
  return c.json({ error: { code: 'INTERNAL_ERROR', message: String(error) } }, 500);
267
321
  }
268
322
  });
@@ -284,7 +338,7 @@ export function createAgentRoutes(services) {
284
338
  });
285
339
  }
286
340
  catch (error) {
287
- console.error('[orchestrator] Failed to get agent status:', error);
341
+ logger.error('Failed to get agent status:', error);
288
342
  return c.json({ error: { code: 'INTERNAL_ERROR', message: String(error) } }, 500);
289
343
  }
290
344
  });
@@ -303,7 +357,7 @@ export function createAgentRoutes(services) {
303
357
  return c.json({ agentId, agentName: agent.name, workload, hasCapacity, maxConcurrentTasks });
304
358
  }
305
359
  catch (error) {
306
- console.error('[orchestrator] Failed to get agent workload:', error);
360
+ logger.error('Failed to get agent workload:', error);
307
361
  return c.json({ error: { code: 'INTERNAL_ERROR', message: String(error) } }, 500);
308
362
  }
309
363
  });
@@ -323,7 +377,7 @@ export function createAgentRoutes(services) {
323
377
  return c.json({ providers });
324
378
  }
325
379
  catch (error) {
326
- console.error('[orchestrator] Failed to list providers:', error);
380
+ logger.error('Failed to list providers:', error);
327
381
  return c.json({ error: { code: 'INTERNAL_ERROR', message: String(error) } }, 500);
328
382
  }
329
383
  });
@@ -352,7 +406,7 @@ export function createAgentRoutes(services) {
352
406
  // ProviderError indicates the provider SDK failed (auth, process crash, etc.)
353
407
  // — treat as 503 (service unavailable) rather than 500 (internal server error)
354
408
  if (error instanceof ProviderError) {
355
- console.warn('[orchestrator] Provider error listing models:', error.message);
409
+ logger.warn('Provider error listing models:', error.message);
356
410
  return c.json({
357
411
  error: {
358
412
  code: 'PROVIDER_UNAVAILABLE',
@@ -360,7 +414,7 @@ export function createAgentRoutes(services) {
360
414
  },
361
415
  }, 503);
362
416
  }
363
- console.error('[orchestrator] Failed to list provider models:', error);
417
+ logger.error('Failed to list provider models:', error);
364
418
  return c.json({ error: { code: 'INTERNAL_ERROR', message: String(error) } }, 500);
365
419
  }
366
420
  });