@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.
- package/README.md +70 -45
- package/next.config.ts +31 -6
- package/package.json +3 -2
- package/src/app/api/agents/[id]/thread/route.ts +1 -0
- package/src/app/api/agents/route.ts +18 -5
- package/src/app/api/approvals/route.ts +22 -0
- package/src/app/api/clawhub/install/route.ts +2 -2
- package/src/app/api/mcp-servers/[id]/conformance/route.ts +26 -0
- package/src/app/api/mcp-servers/[id]/invoke/route.ts +81 -0
- package/src/app/api/memory/route.ts +36 -5
- package/src/app/api/notifications/route.ts +3 -0
- package/src/app/api/plugins/install/route.ts +57 -5
- package/src/app/api/plugins/marketplace/route.ts +73 -22
- package/src/app/api/plugins/route.ts +61 -1
- package/src/app/api/plugins/ui/route.ts +34 -0
- package/src/app/api/settings/route.ts +62 -0
- package/src/app/api/setup/doctor/route.ts +22 -5
- package/src/app/api/tasks/[id]/approve/route.ts +4 -3
- package/src/app/api/tasks/[id]/route.ts +11 -3
- package/src/app/api/tasks/route.ts +8 -2
- package/src/app/globals.css +27 -0
- package/src/app/page.tsx +10 -5
- package/src/cli/index.js +13 -0
- package/src/components/activity/activity-feed.tsx +9 -2
- package/src/components/agents/agent-avatar.tsx +5 -1
- package/src/components/agents/agent-card.tsx +55 -9
- package/src/components/agents/agent-sheet.tsx +86 -29
- package/src/components/agents/inspector-panel.tsx +1 -1
- package/src/components/auth/access-key-gate.tsx +63 -54
- package/src/components/auth/user-picker.tsx +37 -32
- package/src/components/chat/chat-area.tsx +11 -0
- package/src/components/chat/chat-header.tsx +69 -25
- package/src/components/chat/chat-tool-toggles.tsx +2 -2
- package/src/components/chat/code-block.tsx +3 -1
- package/src/components/chat/exec-approval-card.tsx +8 -1
- package/src/components/chat/message-bubble.tsx +164 -4
- package/src/components/chat/message-list.tsx +30 -4
- package/src/components/chat/session-approval-card.tsx +80 -0
- package/src/components/chat/streaming-bubble.tsx +6 -5
- package/src/components/chat/thinking-indicator.tsx +48 -12
- package/src/components/chat/tool-request-banner.tsx +39 -20
- package/src/components/chatrooms/chatroom-list.tsx +11 -4
- package/src/components/chatrooms/chatroom-sheet.tsx +7 -2
- package/src/components/connectors/connector-list.tsx +33 -11
- package/src/components/connectors/connector-sheet.tsx +29 -6
- package/src/components/home/home-view.tsx +20 -14
- package/src/components/input/chat-input.tsx +22 -1
- package/src/components/knowledge/knowledge-list.tsx +17 -18
- package/src/components/knowledge/knowledge-sheet.tsx +9 -5
- package/src/components/layout/app-layout.tsx +73 -21
- package/src/components/mcp-servers/mcp-server-list.tsx +352 -50
- package/src/components/mcp-servers/mcp-server-sheet.tsx +25 -9
- package/src/components/memory/memory-list.tsx +20 -13
- package/src/components/plugins/plugin-list.tsx +213 -59
- package/src/components/plugins/plugin-sheet.tsx +119 -24
- package/src/components/projects/project-list.tsx +17 -9
- package/src/components/providers/provider-list.tsx +21 -6
- package/src/components/providers/provider-sheet.tsx +42 -25
- package/src/components/runs/run-list.tsx +17 -13
- package/src/components/schedules/schedule-card.tsx +10 -3
- package/src/components/schedules/schedule-list.tsx +2 -2
- package/src/components/schedules/schedule-sheet.tsx +19 -7
- package/src/components/secrets/secret-sheet.tsx +7 -2
- package/src/components/secrets/secrets-list.tsx +18 -5
- package/src/components/sessions/new-session-sheet.tsx +183 -376
- package/src/components/sessions/session-card.tsx +10 -2
- package/src/components/settings/gateway-connection-panel.tsx +9 -8
- package/src/components/shared/command-palette.tsx +13 -5
- package/src/components/shared/empty-state.tsx +20 -8
- package/src/components/shared/notification-center.tsx +134 -86
- package/src/components/shared/profile-sheet.tsx +4 -0
- package/src/components/shared/settings/plugin-manager.tsx +360 -135
- package/src/components/shared/settings/section-capability-policy.tsx +3 -3
- package/src/components/shared/settings/section-runtime-loop.tsx +144 -0
- package/src/components/skills/clawhub-browser.tsx +1 -0
- package/src/components/skills/skill-list.tsx +31 -12
- package/src/components/skills/skill-sheet.tsx +20 -7
- package/src/components/tasks/approvals-panel.tsx +170 -66
- package/src/components/tasks/task-board.tsx +20 -12
- package/src/components/tasks/task-card.tsx +21 -7
- package/src/components/tasks/task-column.tsx +4 -3
- package/src/components/tasks/task-list.tsx +1 -1
- package/src/components/tasks/task-sheet.tsx +130 -1
- package/src/components/ui/dialog.tsx +1 -0
- package/src/components/ui/sheet.tsx +1 -0
- package/src/components/usage/metrics-dashboard.tsx +66 -64
- package/src/components/wallets/wallet-panel.tsx +65 -41
- package/src/components/wallets/wallet-section.tsx +9 -3
- package/src/components/webhooks/webhook-list.tsx +21 -12
- package/src/components/webhooks/webhook-sheet.tsx +13 -3
- package/src/lib/approval-display.test.ts +45 -0
- package/src/lib/approval-display.ts +62 -0
- package/src/lib/clipboard.ts +38 -0
- package/src/lib/memory.ts +8 -0
- package/src/lib/providers/claude-cli.ts +5 -3
- package/src/lib/providers/index.ts +67 -21
- package/src/lib/runtime-loop.ts +3 -2
- package/src/lib/server/approvals.ts +150 -0
- package/src/lib/server/chat-execution.ts +223 -62
- package/src/lib/server/clawhub-client.ts +82 -6
- package/src/lib/server/connectors/manager.ts +27 -1
- package/src/lib/server/cost.test.ts +73 -0
- package/src/lib/server/cost.ts +165 -34
- package/src/lib/server/daemon-state.ts +42 -0
- package/src/lib/server/data-dir.ts +18 -1
- package/src/lib/server/integrity-monitor.ts +208 -0
- package/src/lib/server/llm-response-cache.test.ts +102 -0
- package/src/lib/server/llm-response-cache.ts +227 -0
- package/src/lib/server/main-agent-loop.ts +1 -1
- package/src/lib/server/main-session.ts +6 -3
- package/src/lib/server/mcp-conformance.test.ts +18 -0
- package/src/lib/server/mcp-conformance.ts +233 -0
- package/src/lib/server/memory-db.ts +180 -17
- package/src/lib/server/memory-retrieval.test.ts +56 -0
- package/src/lib/server/orchestrator-lg.ts +4 -1
- package/src/lib/server/orchestrator.ts +4 -3
- package/src/lib/server/plugins.ts +650 -142
- package/src/lib/server/process-manager.ts +18 -0
- package/src/lib/server/queue.ts +253 -11
- package/src/lib/server/runtime-settings.ts +9 -0
- package/src/lib/server/session-run-manager.test.ts +23 -0
- package/src/lib/server/session-run-manager.ts +11 -1
- package/src/lib/server/session-tools/canvas.ts +85 -50
- package/src/lib/server/session-tools/chatroom.ts +130 -127
- package/src/lib/server/session-tools/connector.ts +233 -454
- package/src/lib/server/session-tools/context-mgmt.ts +87 -105
- package/src/lib/server/session-tools/crud.ts +84 -7
- package/src/lib/server/session-tools/delegate.ts +351 -752
- package/src/lib/server/session-tools/discovery.ts +198 -0
- package/src/lib/server/session-tools/edit_file.ts +82 -0
- package/src/lib/server/session-tools/file-send.test.ts +39 -0
- package/src/lib/server/session-tools/file.ts +257 -425
- package/src/lib/server/session-tools/git.ts +87 -47
- package/src/lib/server/session-tools/http.ts +85 -33
- package/src/lib/server/session-tools/index.ts +205 -160
- package/src/lib/server/session-tools/memory.ts +152 -265
- package/src/lib/server/session-tools/monitor.ts +126 -0
- package/src/lib/server/session-tools/normalize-tool-args.test.ts +61 -0
- package/src/lib/server/session-tools/normalize-tool-args.ts +48 -0
- package/src/lib/server/session-tools/openclaw-nodes.ts +82 -99
- package/src/lib/server/session-tools/openclaw-workspace.ts +103 -93
- package/src/lib/server/session-tools/platform.ts +86 -0
- package/src/lib/server/session-tools/plugin-creator.ts +239 -0
- package/src/lib/server/session-tools/sample-ui.ts +97 -0
- package/src/lib/server/session-tools/sandbox.ts +175 -148
- package/src/lib/server/session-tools/schedule.ts +66 -31
- package/src/lib/server/session-tools/session-info.ts +104 -410
- package/src/lib/server/session-tools/shell-normalize.test.ts +43 -0
- package/src/lib/server/session-tools/shell.ts +171 -143
- package/src/lib/server/session-tools/subagent.ts +77 -77
- package/src/lib/server/session-tools/wallet.ts +182 -106
- package/src/lib/server/session-tools/web.ts +179 -349
- package/src/lib/server/storage.ts +24 -0
- package/src/lib/server/stream-agent-chat.ts +301 -244
- package/src/lib/server/task-quality-gate.test.ts +44 -0
- package/src/lib/server/task-quality-gate.ts +67 -0
- package/src/lib/server/task-validation.test.ts +78 -0
- package/src/lib/server/task-validation.ts +67 -2
- package/src/lib/server/tool-aliases.ts +68 -0
- package/src/lib/server/tool-capability-policy.ts +23 -5
- package/src/lib/tasks.ts +7 -1
- package/src/lib/tool-definitions.ts +23 -23
- package/src/lib/validation/schemas.ts +12 -0
- package/src/lib/view-routes.ts +2 -24
- package/src/stores/use-app-store.ts +23 -1
- package/src/types/index.ts +121 -7
package/src/types/index.ts
CHANGED
|
@@ -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
|
-
// ---
|
|
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
|
|
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
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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 ---
|