@swarmclawai/swarmclaw 0.6.8 → 0.7.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 (166) hide show
  1. package/README.md +70 -45
  2. package/next.config.ts +31 -6
  3. package/package.json +3 -2
  4. package/src/app/api/agents/[id]/thread/route.ts +1 -0
  5. package/src/app/api/agents/route.ts +18 -5
  6. package/src/app/api/approvals/route.ts +22 -0
  7. package/src/app/api/clawhub/install/route.ts +2 -2
  8. package/src/app/api/mcp-servers/[id]/conformance/route.ts +26 -0
  9. package/src/app/api/mcp-servers/[id]/invoke/route.ts +81 -0
  10. package/src/app/api/memory/route.ts +36 -5
  11. package/src/app/api/notifications/route.ts +3 -0
  12. package/src/app/api/plugins/install/route.ts +57 -5
  13. package/src/app/api/plugins/marketplace/route.ts +73 -22
  14. package/src/app/api/plugins/route.ts +61 -1
  15. package/src/app/api/plugins/ui/route.ts +34 -0
  16. package/src/app/api/settings/route.ts +62 -0
  17. package/src/app/api/setup/doctor/route.ts +22 -5
  18. package/src/app/api/tasks/[id]/approve/route.ts +4 -3
  19. package/src/app/api/tasks/[id]/route.ts +11 -3
  20. package/src/app/api/tasks/route.ts +8 -2
  21. package/src/app/globals.css +27 -0
  22. package/src/app/page.tsx +10 -5
  23. package/src/cli/index.js +13 -0
  24. package/src/components/activity/activity-feed.tsx +9 -2
  25. package/src/components/agents/agent-avatar.tsx +5 -1
  26. package/src/components/agents/agent-card.tsx +55 -9
  27. package/src/components/agents/agent-sheet.tsx +86 -29
  28. package/src/components/agents/inspector-panel.tsx +1 -1
  29. package/src/components/auth/access-key-gate.tsx +63 -54
  30. package/src/components/auth/user-picker.tsx +37 -32
  31. package/src/components/chat/chat-area.tsx +11 -0
  32. package/src/components/chat/chat-header.tsx +69 -25
  33. package/src/components/chat/chat-tool-toggles.tsx +2 -2
  34. package/src/components/chat/code-block.tsx +3 -1
  35. package/src/components/chat/exec-approval-card.tsx +8 -1
  36. package/src/components/chat/message-bubble.tsx +164 -4
  37. package/src/components/chat/message-list.tsx +30 -4
  38. package/src/components/chat/session-approval-card.tsx +80 -0
  39. package/src/components/chat/streaming-bubble.tsx +6 -5
  40. package/src/components/chat/thinking-indicator.tsx +48 -12
  41. package/src/components/chat/tool-request-banner.tsx +39 -20
  42. package/src/components/chatrooms/chatroom-list.tsx +11 -4
  43. package/src/components/chatrooms/chatroom-sheet.tsx +7 -2
  44. package/src/components/connectors/connector-list.tsx +33 -11
  45. package/src/components/connectors/connector-sheet.tsx +29 -6
  46. package/src/components/home/home-view.tsx +20 -14
  47. package/src/components/input/chat-input.tsx +22 -1
  48. package/src/components/knowledge/knowledge-list.tsx +17 -18
  49. package/src/components/knowledge/knowledge-sheet.tsx +9 -5
  50. package/src/components/layout/app-layout.tsx +73 -21
  51. package/src/components/mcp-servers/mcp-server-list.tsx +352 -50
  52. package/src/components/mcp-servers/mcp-server-sheet.tsx +25 -9
  53. package/src/components/memory/memory-list.tsx +20 -13
  54. package/src/components/plugins/plugin-list.tsx +213 -59
  55. package/src/components/plugins/plugin-sheet.tsx +119 -24
  56. package/src/components/projects/project-list.tsx +17 -9
  57. package/src/components/providers/provider-list.tsx +21 -6
  58. package/src/components/providers/provider-sheet.tsx +42 -25
  59. package/src/components/runs/run-list.tsx +17 -13
  60. package/src/components/schedules/schedule-card.tsx +10 -3
  61. package/src/components/schedules/schedule-list.tsx +2 -2
  62. package/src/components/schedules/schedule-sheet.tsx +19 -7
  63. package/src/components/secrets/secret-sheet.tsx +7 -2
  64. package/src/components/secrets/secrets-list.tsx +18 -5
  65. package/src/components/sessions/new-session-sheet.tsx +183 -376
  66. package/src/components/sessions/session-card.tsx +10 -2
  67. package/src/components/settings/gateway-connection-panel.tsx +9 -8
  68. package/src/components/shared/command-palette.tsx +13 -5
  69. package/src/components/shared/empty-state.tsx +20 -8
  70. package/src/components/shared/notification-center.tsx +134 -86
  71. package/src/components/shared/profile-sheet.tsx +4 -0
  72. package/src/components/shared/settings/plugin-manager.tsx +360 -135
  73. package/src/components/shared/settings/section-capability-policy.tsx +3 -3
  74. package/src/components/shared/settings/section-runtime-loop.tsx +144 -0
  75. package/src/components/skills/clawhub-browser.tsx +1 -0
  76. package/src/components/skills/skill-list.tsx +31 -12
  77. package/src/components/skills/skill-sheet.tsx +20 -7
  78. package/src/components/tasks/approvals-panel.tsx +170 -66
  79. package/src/components/tasks/task-board.tsx +20 -12
  80. package/src/components/tasks/task-card.tsx +21 -7
  81. package/src/components/tasks/task-column.tsx +4 -3
  82. package/src/components/tasks/task-list.tsx +1 -1
  83. package/src/components/tasks/task-sheet.tsx +130 -1
  84. package/src/components/ui/dialog.tsx +1 -0
  85. package/src/components/ui/sheet.tsx +1 -0
  86. package/src/components/usage/metrics-dashboard.tsx +66 -64
  87. package/src/components/wallets/wallet-panel.tsx +65 -41
  88. package/src/components/wallets/wallet-section.tsx +9 -3
  89. package/src/components/webhooks/webhook-list.tsx +21 -12
  90. package/src/components/webhooks/webhook-sheet.tsx +13 -3
  91. package/src/lib/approval-display.test.ts +45 -0
  92. package/src/lib/approval-display.ts +62 -0
  93. package/src/lib/clipboard.ts +38 -0
  94. package/src/lib/memory.ts +8 -0
  95. package/src/lib/providers/claude-cli.ts +5 -3
  96. package/src/lib/providers/index.ts +67 -21
  97. package/src/lib/runtime-loop.ts +3 -2
  98. package/src/lib/server/approvals.ts +150 -0
  99. package/src/lib/server/chat-execution.ts +223 -62
  100. package/src/lib/server/clawhub-client.ts +82 -6
  101. package/src/lib/server/connectors/manager.ts +27 -1
  102. package/src/lib/server/cost.test.ts +73 -0
  103. package/src/lib/server/cost.ts +165 -34
  104. package/src/lib/server/daemon-state.ts +42 -0
  105. package/src/lib/server/data-dir.ts +18 -1
  106. package/src/lib/server/integrity-monitor.ts +208 -0
  107. package/src/lib/server/llm-response-cache.test.ts +102 -0
  108. package/src/lib/server/llm-response-cache.ts +227 -0
  109. package/src/lib/server/main-agent-loop.ts +1 -1
  110. package/src/lib/server/main-session.ts +6 -3
  111. package/src/lib/server/mcp-conformance.test.ts +18 -0
  112. package/src/lib/server/mcp-conformance.ts +233 -0
  113. package/src/lib/server/memory-db.ts +180 -17
  114. package/src/lib/server/memory-retrieval.test.ts +56 -0
  115. package/src/lib/server/orchestrator-lg.ts +4 -1
  116. package/src/lib/server/orchestrator.ts +4 -3
  117. package/src/lib/server/plugins.ts +650 -142
  118. package/src/lib/server/process-manager.ts +18 -0
  119. package/src/lib/server/queue.ts +253 -11
  120. package/src/lib/server/runtime-settings.ts +9 -0
  121. package/src/lib/server/session-run-manager.test.ts +23 -0
  122. package/src/lib/server/session-run-manager.ts +11 -1
  123. package/src/lib/server/session-tools/canvas.ts +85 -50
  124. package/src/lib/server/session-tools/chatroom.ts +130 -127
  125. package/src/lib/server/session-tools/connector.ts +233 -454
  126. package/src/lib/server/session-tools/context-mgmt.ts +87 -105
  127. package/src/lib/server/session-tools/crud.ts +84 -7
  128. package/src/lib/server/session-tools/delegate.ts +351 -752
  129. package/src/lib/server/session-tools/discovery.ts +198 -0
  130. package/src/lib/server/session-tools/edit_file.ts +82 -0
  131. package/src/lib/server/session-tools/file-send.test.ts +39 -0
  132. package/src/lib/server/session-tools/file.ts +257 -425
  133. package/src/lib/server/session-tools/git.ts +87 -47
  134. package/src/lib/server/session-tools/http.ts +85 -33
  135. package/src/lib/server/session-tools/index.ts +205 -160
  136. package/src/lib/server/session-tools/memory.ts +152 -265
  137. package/src/lib/server/session-tools/monitor.ts +126 -0
  138. package/src/lib/server/session-tools/normalize-tool-args.test.ts +61 -0
  139. package/src/lib/server/session-tools/normalize-tool-args.ts +48 -0
  140. package/src/lib/server/session-tools/openclaw-nodes.ts +82 -99
  141. package/src/lib/server/session-tools/openclaw-workspace.ts +103 -93
  142. package/src/lib/server/session-tools/platform.ts +86 -0
  143. package/src/lib/server/session-tools/plugin-creator.ts +239 -0
  144. package/src/lib/server/session-tools/sample-ui.ts +97 -0
  145. package/src/lib/server/session-tools/sandbox.ts +175 -148
  146. package/src/lib/server/session-tools/schedule.ts +66 -31
  147. package/src/lib/server/session-tools/session-info.ts +104 -410
  148. package/src/lib/server/session-tools/shell-normalize.test.ts +43 -0
  149. package/src/lib/server/session-tools/shell.ts +171 -143
  150. package/src/lib/server/session-tools/subagent.ts +77 -77
  151. package/src/lib/server/session-tools/wallet.ts +182 -106
  152. package/src/lib/server/session-tools/web.ts +179 -349
  153. package/src/lib/server/storage.ts +24 -0
  154. package/src/lib/server/stream-agent-chat.ts +301 -244
  155. package/src/lib/server/task-quality-gate.test.ts +44 -0
  156. package/src/lib/server/task-quality-gate.ts +67 -0
  157. package/src/lib/server/task-validation.test.ts +78 -0
  158. package/src/lib/server/task-validation.ts +67 -2
  159. package/src/lib/server/tool-aliases.ts +68 -0
  160. package/src/lib/server/tool-capability-policy.ts +23 -5
  161. package/src/lib/tasks.ts +7 -1
  162. package/src/lib/tool-definitions.ts +23 -23
  163. package/src/lib/validation/schemas.ts +12 -0
  164. package/src/lib/view-routes.ts +2 -24
  165. package/src/stores/use-app-store.ts +23 -1
  166. package/src/types/index.ts +121 -7
@@ -14,12 +14,14 @@ export interface Message {
14
14
  attachedFiles?: string[]
15
15
  toolEvents?: MessageToolEvent[]
16
16
  thinking?: string
17
- kind?: 'chat' | 'heartbeat' | 'system' | 'context-clear'
17
+ kind?: 'chat' | 'heartbeat' | 'system' | 'context-clear' | 'plugin-ui'
18
18
  suppressed?: boolean
19
19
  bookmarked?: boolean
20
20
  suggestions?: string[]
21
21
  replyToId?: string
22
22
  source?: MessageSource
23
+ /** True while the message is still being streamed — cleared on final persist. */
24
+ streaming?: boolean
23
25
  }
24
26
 
25
27
  export type ProviderType = 'claude-cli' | 'codex-cli' | 'opencode-cli' | 'openai' | 'ollama' | 'anthropic' | 'openclaw' | 'google' | 'deepseek' | 'groq' | 'together' | 'mistral' | 'xai' | 'fireworks'
@@ -145,7 +147,25 @@ export type SessionTool =
145
147
  | 'http_request'
146
148
  | 'git'
147
149
 
148
- // --- Cost Tracking ---
150
+ // --- Approvals ---
151
+
152
+ export type ApprovalCategory = 'tool_access' | 'wallet_transfer' | 'plugin_scaffold' | 'plugin_install' | 'task_tool'
153
+
154
+ export interface ApprovalRequest {
155
+ id: string
156
+ category: ApprovalCategory
157
+ agentId?: string | null
158
+ sessionId?: string | null
159
+ taskId?: string | null
160
+ title: string
161
+ description?: string
162
+ data: Record<string, unknown>
163
+ createdAt: number
164
+ updatedAt: number
165
+ status: 'pending' | 'approved' | 'rejected'
166
+ }
167
+
168
+ export type Approvals = Record<string, ApprovalRequest>
149
169
 
150
170
  export interface UsageRecord {
151
171
  sessionId: string
@@ -172,6 +192,10 @@ export interface PluginHooks {
172
192
  // Orchestration & Swarm Hooks
173
193
  onTaskComplete?: (ctx: { taskId: string; result: unknown }) => Promise<void> | void
174
194
  onAgentDelegation?: (ctx: { sourceAgentId: string; targetAgentId: string; task: string }) => Promise<void> | void
195
+
196
+ // Chat Middleware (Transform messages)
197
+ transformInboundMessage?: (ctx: { session: Session; text: string }) => Promise<string> | string
198
+ transformOutboundMessage?: (ctx: { session: Session; text: string }) => Promise<string> | string
175
199
  }
176
200
 
177
201
  export interface PluginToolDef {
@@ -181,11 +205,58 @@ export interface PluginToolDef {
181
205
  execute: (args: Record<string, unknown>, ctx: { session: Session; message: string }) => Promise<string | object> | string | object
182
206
  }
183
207
 
208
+ export interface PluginUIExtension {
209
+ sidebarItems?: Array<{
210
+ id: string
211
+ label: string
212
+ icon?: string
213
+ href: string
214
+ position?: 'top' | 'bottom'
215
+ }>
216
+ headerWidgets?: Array<{
217
+ id: string
218
+ label: string
219
+ icon?: string
220
+ }>
221
+ chatInputActions?: Array<{
222
+ id: string
223
+ label: string
224
+ icon?: string
225
+ tooltip?: string
226
+ action: 'message' | 'link' | 'tool'
227
+ value: string
228
+ }>
229
+ }
230
+
231
+ export interface PluginProviderExtension {
232
+ id: string
233
+ name: string
234
+ models: string[]
235
+ requiresApiKey: boolean
236
+ requiresEndpoint: boolean
237
+ defaultEndpoint?: string
238
+ streamChat: (opts: any) => Promise<string>
239
+ }
240
+
241
+ export interface PluginConnectorExtension {
242
+ id: string
243
+ name: string
244
+ description: string
245
+ // For sending outbound
246
+ sendMessage?: (params: any) => Promise<any>
247
+ // For polling/listening
248
+ startListener?: (onMessage: (msg: any) => void) => Promise<() => void>
249
+ }
250
+
184
251
  export interface Plugin {
185
252
  name: string
253
+ version?: string
186
254
  description?: string
187
- hooks: PluginHooks
255
+ hooks?: PluginHooks
188
256
  tools?: PluginToolDef[]
257
+ ui?: PluginUIExtension
258
+ providers?: PluginProviderExtension[]
259
+ connectors?: PluginConnectorExtension[]
189
260
  }
190
261
 
191
262
  export interface PluginMeta {
@@ -197,8 +268,18 @@ export interface PluginMeta {
197
268
  version?: string
198
269
  source?: 'local' | 'marketplace'
199
270
  openclaw?: boolean
271
+ failureCount?: number
272
+ lastFailureAt?: number
273
+ lastFailureStage?: string
274
+ lastFailureError?: string
275
+ autoDisabled?: boolean
276
+ toolCount?: number
277
+ hookCount?: number
278
+ hasUI?: boolean
279
+ providerCount?: number
280
+ connectorCount?: number
281
+ createdByAgentId?: string | null
200
282
  }
201
-
202
283
  export interface MarketplacePlugin {
203
284
  id: string
204
285
  name: string
@@ -206,9 +287,10 @@ export interface MarketplacePlugin {
206
287
  author: string
207
288
  version: string
208
289
  url: string
209
- tags: string[]
210
- openclaw: boolean
211
- downloads: number
290
+ source?: 'swarmclaw' | 'clawhub'
291
+ tags?: string[]
292
+ openclaw?: boolean
293
+ downloads?: number
212
294
  }
213
295
 
214
296
  export interface SSEEvent {
@@ -300,11 +382,17 @@ export interface Agent {
300
382
  openclawAllowedSkills?: string[]
301
383
  walletId?: string | null
302
384
  monthlyBudget?: number | null
385
+ dailyBudget?: number | null
386
+ hourlyBudget?: number | null
303
387
  autoRecovery?: boolean
304
388
 
305
389
  budgetAction?: 'warn' | 'block'
306
390
  /** Runtime-enriched: current month's spend. Populated by GET /api/agents when monthlyBudget is set. */
307
391
  monthlySpend?: number
392
+ /** Runtime-enriched: current day's spend. Populated by GET /api/agents when dailyBudget is set. */
393
+ dailySpend?: number
394
+ /** Runtime-enriched: trailing 1-hour spend. Populated by GET /api/agents when hourlyBudget is set. */
395
+ hourlySpend?: number
308
396
  maxFollowupChain?: number
309
397
  createdAt: number
310
398
  updatedAt: number
@@ -609,6 +697,7 @@ export interface AppSettings {
609
697
  agentLoopRecursionLimit?: number
610
698
  orchestratorLoopRecursionLimit?: number
611
699
  legacyOrchestratorMaxTurns?: number
700
+ delegationMaxDepth?: number
612
701
  ongoingLoopMaxIterations?: number
613
702
  ongoingLoopMaxRuntimeMinutes?: number
614
703
  maxFollowupChain?: number
@@ -682,6 +771,19 @@ export interface AppSettings {
682
771
  alertWebhookUrl?: string | null
683
772
  alertWebhookType?: 'discord' | 'slack' | 'custom' | null
684
773
  alertWebhookEvents?: ('error' | 'warning')[]
774
+ // Deterministic LLM response cache
775
+ responseCacheEnabled?: boolean
776
+ responseCacheTtlSec?: number
777
+ responseCacheMaxEntries?: number
778
+ // Task quality gate defaults
779
+ taskQualityGateEnabled?: boolean
780
+ taskQualityGateMinResultChars?: number
781
+ taskQualityGateMinEvidenceItems?: number
782
+ taskQualityGateRequireVerification?: boolean
783
+ taskQualityGateRequireArtifact?: boolean
784
+ taskQualityGateRequireReport?: boolean
785
+ // Integrity monitor
786
+ integrityMonitorEnabled?: boolean
685
787
  }
686
788
 
687
789
  // --- Orchestrator Secrets ---
@@ -709,6 +811,15 @@ export interface TaskComment {
709
811
  createdAt: number
710
812
  }
711
813
 
814
+ export interface TaskQualityGateConfig {
815
+ enabled?: boolean
816
+ minResultChars?: number
817
+ minEvidenceItems?: number
818
+ requireVerification?: boolean
819
+ requireArtifact?: boolean
820
+ requireReport?: boolean
821
+ }
822
+
712
823
  // --- Custom Providers ---
713
824
 
714
825
  export interface ProviderConfig {
@@ -840,6 +951,8 @@ export interface BoardTask {
840
951
  createdByAgentId?: string | null
841
952
  createdInSessionId?: string | null
842
953
  delegatedByAgentId?: string | null
954
+ delegatedFromTaskId?: string | null
955
+ delegationDepth?: number | null
843
956
  createdAt: number
844
957
  updatedAt: number
845
958
  queuedAt?: number | null
@@ -893,6 +1006,7 @@ export interface BoardTask {
893
1006
  priority?: 'low' | 'medium' | 'high' | 'critical'
894
1007
  // Dedup fingerprint
895
1008
  fingerprint?: string
1009
+ qualityGate?: TaskQualityGateConfig | null
896
1010
  }
897
1011
 
898
1012
  // --- MCP Servers ---