@swarmclawai/swarmclaw 1.2.6 → 1.2.9

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 (269) hide show
  1. package/README.md +54 -23
  2. package/next.config.ts +1 -0
  3. package/package.json +4 -3
  4. package/scripts/easy-setup.mjs +1 -1
  5. package/scripts/postinstall.mjs +1 -1
  6. package/skills/swarmclaw.md +115 -0
  7. package/skills/tools/browser.md +131 -0
  8. package/skills/tools/execute.md +98 -0
  9. package/skills/tools/files.md +98 -0
  10. package/skills/tools/memory.md +104 -0
  11. package/skills/tools/platform.md +144 -0
  12. package/skills/tools/skills.md +83 -0
  13. package/src/app/agents/[id]/page.tsx +1 -18
  14. package/src/app/api/agents/thread-route.test.ts +0 -1
  15. package/src/app/api/approvals/route.test.ts +6 -22
  16. package/src/app/api/chats/[id]/messages/route.ts +23 -19
  17. package/src/app/api/chats/messages-route.test.ts +105 -51
  18. package/src/app/api/connectors/route.ts +2 -2
  19. package/src/app/api/mcp-servers/[id]/test/route.ts +3 -2
  20. package/src/app/api/openclaw/deploy/route.ts +2 -0
  21. package/src/app/api/portability/export/route.ts +8 -0
  22. package/src/app/api/portability/import/route.test.ts +80 -0
  23. package/src/app/api/portability/import/route.ts +28 -0
  24. package/src/app/api/settings/route.ts +0 -2
  25. package/src/app/api/setup/doctor/route.ts +4 -4
  26. package/src/app/api/wallets/[id]/route.ts +15 -157
  27. package/src/app/api/wallets/generate/route.ts +22 -0
  28. package/src/app/api/wallets/route.test.ts +147 -0
  29. package/src/app/api/wallets/route.ts +13 -95
  30. package/src/app/autonomy/page.tsx +2 -57
  31. package/src/app/protocols/page.tsx +2 -21
  32. package/src/app/settings/page.tsx +0 -9
  33. package/src/app/wallets/page.tsx +105 -5
  34. package/src/cli/index.js +21 -33
  35. package/src/cli/spec.js +19 -30
  36. package/src/components/agents/agent-chat-list.tsx +23 -1
  37. package/src/components/agents/agent-sheet.tsx +2 -40
  38. package/src/components/agents/inspector-panel.tsx +165 -131
  39. package/src/components/chat/chat-area.tsx +38 -9
  40. package/src/components/chat/chat-card.tsx +0 -31
  41. package/src/components/chat/message-bubble.tsx +1 -108
  42. package/src/components/chat/message-list.tsx +33 -19
  43. package/src/components/connectors/connector-sheet.tsx +25 -1
  44. package/src/components/gateways/gateway-sheet.tsx +5 -2
  45. package/src/components/layout/sidebar-rail.tsx +6 -10
  46. package/src/components/projects/project-detail.tsx +3 -35
  47. package/src/components/projects/tabs/overview-tab.tsx +3 -59
  48. package/src/components/projects/tabs/work-tab.tsx +7 -77
  49. package/src/components/protocols/structured-session-launcher.tsx +1 -22
  50. package/src/components/shared/connector-platform-icon.tsx +1 -0
  51. package/src/components/tasks/task-card.tsx +4 -34
  52. package/src/components/tasks/task-sheet.tsx +6 -36
  53. package/src/components/wallets/wallet-list.tsx +150 -0
  54. package/src/lib/agent-execute-defaults.test.ts +24 -0
  55. package/src/lib/agent-execute-defaults.ts +62 -0
  56. package/src/lib/app/navigation.test.ts +0 -13
  57. package/src/lib/app/navigation.ts +2 -7
  58. package/src/lib/app/view-constants.ts +14 -19
  59. package/src/lib/chat/queued-message-queue.test.ts +134 -1
  60. package/src/lib/chat/queued-message-queue.ts +77 -2
  61. package/src/lib/server/agents/agent-service.ts +5 -0
  62. package/src/lib/server/agents/agent-thread-session.ts +0 -1
  63. package/src/lib/server/agents/delegation-advisory.test.ts +0 -1
  64. package/src/lib/server/agents/delegation-jobs.test.ts +0 -69
  65. package/src/lib/server/agents/delegation-jobs.ts +0 -25
  66. package/src/lib/server/agents/main-agent-loop.ts +1 -49
  67. package/src/lib/server/agents/subagent-runtime.ts +0 -1
  68. package/src/lib/server/approval-match.ts +0 -85
  69. package/src/lib/server/approvals.test.ts +6 -6
  70. package/src/lib/server/approvals.ts +0 -6
  71. package/src/lib/server/autonomy/supervisor-reflection.test.ts +0 -1
  72. package/src/lib/server/builtin-extensions.ts +1 -2
  73. package/src/lib/server/capability-router.test.ts +0 -2
  74. package/src/lib/server/chat-execution/chat-execution-advanced.test.ts +1 -1
  75. package/src/lib/server/chat-execution/chat-execution-tool-events.test.ts +15 -14
  76. package/src/lib/server/chat-execution/chat-execution-types.ts +0 -2
  77. package/src/lib/server/chat-execution/chat-execution-utils.ts +2 -4
  78. package/src/lib/server/chat-execution/chat-streaming-utils.ts +2 -30
  79. package/src/lib/server/chat-execution/chat-turn-finalization.ts +1 -36
  80. package/src/lib/server/chat-execution/chat-turn-preparation.ts +81 -64
  81. package/src/lib/server/chat-execution/chat-turn-stream-execution.ts +4 -0
  82. package/src/lib/server/chat-execution/continuation-evaluator.ts +8 -0
  83. package/src/lib/server/chat-execution/iteration-event-handler.ts +0 -24
  84. package/src/lib/server/chat-execution/memory-mutation-tools.ts +1 -1
  85. package/src/lib/server/chat-execution/message-classifier.test.ts +0 -45
  86. package/src/lib/server/chat-execution/message-classifier.ts +11 -16
  87. package/src/lib/server/chat-execution/prompt-builder.test.ts +27 -0
  88. package/src/lib/server/chat-execution/prompt-builder.ts +14 -31
  89. package/src/lib/server/chat-execution/prompt-mode.test.ts +24 -0
  90. package/src/lib/server/chat-execution/prompt-mode.ts +5 -1
  91. package/src/lib/server/chat-execution/prompt-sections.ts +0 -1
  92. package/src/lib/server/chat-execution/situational-awareness.test.ts +2 -73
  93. package/src/lib/server/chat-execution/situational-awareness.ts +4 -38
  94. package/src/lib/server/chat-execution/stream-agent-chat.test.ts +13 -126
  95. package/src/lib/server/chat-execution/stream-agent-chat.ts +46 -21
  96. package/src/lib/server/chat-execution/stream-continuation.test.ts +4 -52
  97. package/src/lib/server/chat-execution/stream-continuation.ts +6 -48
  98. package/src/lib/server/chatrooms/chatroom-routing.test.ts +4 -0
  99. package/src/lib/server/chatrooms/session-mailbox.ts +0 -10
  100. package/src/lib/server/chats/chat-session-service.ts +3 -5
  101. package/src/lib/server/connectors/connector-inbound.ts +0 -1
  102. package/src/lib/server/connectors/connector-lifecycle.ts +19 -3
  103. package/src/lib/server/connectors/connector-service.ts +39 -9
  104. package/src/lib/server/connectors/discord.ts +2 -2
  105. package/src/lib/server/connectors/matrix.ts +3 -2
  106. package/src/lib/server/connectors/signal.ts +5 -4
  107. package/src/lib/server/connectors/slack.ts +10 -9
  108. package/src/lib/server/connectors/swarmdock-bidding.ts +74 -0
  109. package/src/lib/server/connectors/swarmdock-payloads.test.ts +85 -0
  110. package/src/lib/server/connectors/swarmdock-secret.test.ts +128 -0
  111. package/src/lib/server/connectors/swarmdock-secret.ts +152 -0
  112. package/src/lib/server/connectors/swarmdock-tasks.ts +119 -0
  113. package/src/lib/server/connectors/swarmdock.ts +255 -0
  114. package/src/lib/server/connectors/teams.ts +3 -2
  115. package/src/lib/server/connectors/telegram.ts +4 -4
  116. package/src/lib/server/connectors/whatsapp.ts +2 -2
  117. package/src/lib/server/daemon/controller.ts +7 -0
  118. package/src/lib/server/execution-brief.test.ts +2 -25
  119. package/src/lib/server/execution-brief.ts +12 -35
  120. package/src/lib/server/execution-engine/task-attempt.ts +0 -1
  121. package/src/lib/server/gateways/gateway-profile-service.ts +19 -1
  122. package/src/lib/server/messages/message-repository.test.ts +70 -0
  123. package/src/lib/server/messages/message-repository.ts +11 -6
  124. package/src/lib/server/openclaw/deploy.ts +32 -2
  125. package/src/lib/server/persistence/storage-context.ts +0 -5
  126. package/src/lib/server/plugins-advanced.test.ts +1 -2
  127. package/src/lib/server/portability/export.ts +109 -0
  128. package/src/lib/server/portability/import.ts +159 -0
  129. package/src/lib/server/protocols/protocol-normalization.ts +0 -4
  130. package/src/lib/server/protocols/protocol-queries.ts +0 -6
  131. package/src/lib/server/protocols/protocol-run-lifecycle.ts +4 -32
  132. package/src/lib/server/protocols/protocol-service.ts +0 -1
  133. package/src/lib/server/protocols/protocol-step-helpers.ts +0 -4
  134. package/src/lib/server/protocols/protocol-step-processors.ts +0 -6
  135. package/src/lib/server/protocols/protocol-swarm.ts +0 -2
  136. package/src/lib/server/protocols/protocol-types.ts +0 -2
  137. package/src/lib/server/provider-health.ts +1 -10
  138. package/src/lib/server/runtime/daemon-state/core.ts +0 -9
  139. package/src/lib/server/runtime/daemon-state.test.ts +0 -35
  140. package/src/lib/server/runtime/heartbeat-service.ts +3 -23
  141. package/src/lib/server/runtime/process-manager.ts +13 -9
  142. package/src/lib/server/runtime/queue/core.ts +11 -33
  143. package/src/lib/server/runtime/runtime-storage-write-paths.test.ts +6 -6
  144. package/src/lib/server/runtime/scheduler.ts +0 -13
  145. package/src/lib/server/runtime/session-run-manager/drain.ts +0 -24
  146. package/src/lib/server/runtime/session-run-manager/enqueue.ts +0 -1
  147. package/src/lib/server/runtime/session-run-manager/queries.ts +15 -1
  148. package/src/lib/server/runtime/session-run-manager/recovery.ts +0 -1
  149. package/src/lib/server/runtime/session-run-manager.test.ts +58 -28
  150. package/src/lib/server/sandbox/session-runtime.test.ts +18 -1
  151. package/src/lib/server/sandbox/session-runtime.ts +40 -28
  152. package/src/lib/server/session-tools/autonomy-tools.test.ts +7 -9
  153. package/src/lib/server/session-tools/context.ts +1 -1
  154. package/src/lib/server/session-tools/credential-env.ts +109 -0
  155. package/src/lib/server/session-tools/crud.ts +3 -17
  156. package/src/lib/server/session-tools/delegate.ts +0 -4
  157. package/src/lib/server/session-tools/edit_file.ts +3 -2
  158. package/src/lib/server/session-tools/execute.test.ts +58 -0
  159. package/src/lib/server/session-tools/execute.ts +334 -0
  160. package/src/lib/server/session-tools/files-tool.ts +635 -0
  161. package/src/lib/server/session-tools/index.ts +14 -8
  162. package/src/lib/server/session-tools/memory-tool.ts +242 -0
  163. package/src/lib/server/session-tools/memory.ts +1 -1
  164. package/src/lib/server/session-tools/openclaw-nodes.ts +3 -2
  165. package/src/lib/server/session-tools/openclaw-workspace.ts +3 -2
  166. package/src/lib/server/session-tools/platform-tool.ts +617 -0
  167. package/src/lib/server/session-tools/session-info.ts +3 -2
  168. package/src/lib/server/session-tools/session-tools-wiring.test.ts +3 -4
  169. package/src/lib/server/session-tools/shell.ts +7 -122
  170. package/src/lib/server/session-tools/skills-tool.ts +396 -0
  171. package/src/lib/server/session-tools/team-context.ts +0 -3
  172. package/src/lib/server/session-tools/web.ts +2 -2
  173. package/src/lib/server/storage-normalization.ts +10 -0
  174. package/src/lib/server/storage.ts +18 -45
  175. package/src/lib/server/tasks/task-checkout.ts +59 -0
  176. package/src/lib/server/tasks/task-lifecycle.ts +2 -0
  177. package/src/lib/server/tasks/task-route-service.ts +4 -26
  178. package/src/lib/server/tasks/task-service.ts +0 -7
  179. package/src/lib/server/tool-aliases.ts +2 -2
  180. package/src/lib/server/tool-capability-policy-advanced.test.ts +13 -6
  181. package/src/lib/server/tool-capability-policy.test.ts +2 -1
  182. package/src/lib/server/tool-capability-policy.ts +60 -35
  183. package/src/lib/server/tool-planning.ts +11 -12
  184. package/src/lib/server/universal-tool-access.ts +0 -1
  185. package/src/lib/server/wallets/wallet-crypto.ts +33 -0
  186. package/src/lib/server/wallets/wallet-repository.ts +24 -0
  187. package/src/lib/server/wallets/wallet-service.ts +119 -0
  188. package/src/lib/server/working-state/extraction.ts +8 -42
  189. package/src/lib/server/working-state/normalization.ts +10 -103
  190. package/src/lib/server/working-state/service.ts +12 -21
  191. package/src/lib/setup-defaults.ts +5 -0
  192. package/src/lib/strip-internal-metadata.test.ts +1 -1
  193. package/src/lib/strip-internal-metadata.ts +1 -1
  194. package/src/lib/tool-definitions.ts +1 -1
  195. package/src/lib/validation/schemas.test.ts +16 -0
  196. package/src/lib/validation/schemas.ts +49 -2
  197. package/src/stores/slices/data-slice.ts +5 -1
  198. package/src/stores/slices/ui-slice.ts +0 -4
  199. package/src/stores/use-chat-store.test.ts +231 -0
  200. package/src/stores/use-chat-store.ts +62 -13
  201. package/src/types/agent.ts +264 -0
  202. package/src/types/app-settings.ts +173 -0
  203. package/src/types/approval.ts +25 -0
  204. package/src/types/connector.ts +188 -0
  205. package/src/types/extension.ts +386 -0
  206. package/src/types/index.ts +16 -3555
  207. package/src/types/message.ts +56 -0
  208. package/src/types/misc.ts +737 -0
  209. package/src/types/protocol.ts +420 -0
  210. package/src/types/provider.ts +52 -0
  211. package/src/types/run.ts +180 -0
  212. package/src/types/schedule.ts +59 -0
  213. package/src/types/session.ts +215 -0
  214. package/src/types/skill.ts +157 -0
  215. package/src/types/swarmdock.ts +29 -0
  216. package/src/types/task.ts +144 -0
  217. package/src/types/working-state.ts +204 -0
  218. package/src/views/settings/section-heartbeat.tsx +2 -2
  219. package/src/views/settings/section-runtime-loop.tsx +0 -14
  220. package/src/app/api/canvas/[sessionId]/route.ts +0 -35
  221. package/src/app/api/missions/[id]/actions/route.ts +0 -31
  222. package/src/app/api/missions/[id]/events/route.ts +0 -14
  223. package/src/app/api/missions/[id]/route.ts +0 -10
  224. package/src/app/api/missions/route.test.ts +0 -244
  225. package/src/app/api/missions/route.ts +0 -57
  226. package/src/app/api/wallets/[id]/approve/route.ts +0 -79
  227. package/src/app/api/wallets/[id]/balance-history/route.ts +0 -18
  228. package/src/app/api/wallets/[id]/send/route.ts +0 -113
  229. package/src/app/api/wallets/[id]/transactions/route.ts +0 -18
  230. package/src/app/missions/[id]/page.tsx +0 -3
  231. package/src/app/missions/page.tsx +0 -685
  232. package/src/components/canvas/canvas-panel.tsx +0 -267
  233. package/src/components/wallets/wallet-approval-dialog.tsx +0 -107
  234. package/src/components/wallets/wallet-panel.tsx +0 -1010
  235. package/src/components/wallets/wallet-section.tsx +0 -260
  236. package/src/features/missions/queries.ts +0 -23
  237. package/src/lib/canvas-content.test.ts +0 -360
  238. package/src/lib/canvas-content.ts +0 -198
  239. package/src/lib/server/canvas-content.test.ts +0 -32
  240. package/src/lib/server/canvas-content.ts +0 -6
  241. package/src/lib/server/ethereum.ts +0 -591
  242. package/src/lib/server/evm-swap.ts +0 -476
  243. package/src/lib/server/missions/mission-intent.test.ts +0 -63
  244. package/src/lib/server/missions/mission-intent.ts +0 -569
  245. package/src/lib/server/missions/mission-repository.ts +0 -74
  246. package/src/lib/server/missions/mission-service/actions.ts +0 -6
  247. package/src/lib/server/missions/mission-service/bindings.ts +0 -9
  248. package/src/lib/server/missions/mission-service/context.ts +0 -4
  249. package/src/lib/server/missions/mission-service/core.ts +0 -2271
  250. package/src/lib/server/missions/mission-service/queries.ts +0 -12
  251. package/src/lib/server/missions/mission-service/recovery.ts +0 -5
  252. package/src/lib/server/missions/mission-service/ticks.ts +0 -9
  253. package/src/lib/server/missions/mission-service.test.ts +0 -888
  254. package/src/lib/server/missions/mission-service.ts +0 -6
  255. package/src/lib/server/session-tools/canvas.ts +0 -105
  256. package/src/lib/server/session-tools/sandbox.ts +0 -281
  257. package/src/lib/server/session-tools/wallet-tool.test.ts +0 -150
  258. package/src/lib/server/session-tools/wallet.ts +0 -1287
  259. package/src/lib/server/solana.ts +0 -327
  260. package/src/lib/server/wallet/wallet-execution.test.ts +0 -198
  261. package/src/lib/server/wallet/wallet-portfolio.test.ts +0 -98
  262. package/src/lib/server/wallet/wallet-portfolio.ts +0 -772
  263. package/src/lib/server/wallet/wallet-service.test.ts +0 -81
  264. package/src/lib/server/wallet/wallet-service.ts +0 -225
  265. package/src/lib/wallet/wallet-transactions.test.ts +0 -75
  266. package/src/lib/wallet/wallet-transactions.ts +0 -43
  267. package/src/lib/wallet/wallet.test.ts +0 -333
  268. package/src/lib/wallet/wallet.ts +0 -183
  269. package/src/views/settings/section-wallets.tsx +0 -35
package/src/cli/index.js CHANGED
@@ -105,14 +105,6 @@ const COMMAND_GROUPS = [
105
105
  cmd('moderate', 'POST', '/chatrooms/:id/moderate', 'Run moderation action on a chatroom', { expectsJsonBody: true }),
106
106
  ],
107
107
  },
108
- {
109
- name: 'canvas',
110
- description: 'Read/update per-session canvas content',
111
- commands: [
112
- cmd('get', 'GET', '/canvas/:sessionId', 'Get current canvas content for a session'),
113
- cmd('set', 'POST', '/canvas/:sessionId', 'Set/clear canvas content for a session', { expectsJsonBody: true }),
114
- ],
115
- },
116
108
  {
117
109
  name: 'connectors',
118
110
  description: 'Manage chat connectors',
@@ -307,16 +299,7 @@ const COMMAND_GROUPS = [
307
299
  cmd('get', 'GET', '/memory-images/:filename', 'Download memory image by filename', { responseType: 'binary' }),
308
300
  ],
309
301
  },
310
- {
311
- name: 'missions',
312
- description: 'Inspect and control durable missions',
313
- commands: [
314
- cmd('list', 'GET', '/missions', 'List missions (use --query status=, --query phase=, --query source=, --query sessionId=, --query agentId=, --query projectId=)'),
315
- cmd('get', 'GET', '/missions/:id', 'Get mission detail by id'),
316
- cmd('events', 'GET', '/missions/:id/events', 'Get mission event timeline', { expectsQueryHint: true }),
317
- cmd('action', 'POST', '/missions/:id/actions', 'Run a mission control action (resume, replan, retry_verification, wait, cancel)', { expectsJsonBody: true }),
318
- ],
319
- },
302
+
320
303
  {
321
304
  name: 'notifications',
322
305
  description: 'Manage in-app notifications',
@@ -696,21 +679,6 @@ const COMMAND_GROUPS = [
696
679
  }),
697
680
  ],
698
681
  },
699
- {
700
- name: 'wallets',
701
- description: 'Manage agent wallets and wallet transactions',
702
- commands: [
703
- cmd('list', 'GET', '/wallets', 'List wallets'),
704
- cmd('get', 'GET', '/wallets/:id', 'Get wallet by id'),
705
- cmd('create', 'POST', '/wallets', 'Create wallet', { expectsJsonBody: true }),
706
- cmd('update', 'PATCH', '/wallets/:id', 'Update wallet settings', { expectsJsonBody: true }),
707
- cmd('delete', 'DELETE', '/wallets/:id', 'Delete wallet'),
708
- cmd('send', 'POST', '/wallets/:id/send', 'Send funds from wallet', { expectsJsonBody: true }),
709
- cmd('approve', 'POST', '/wallets/:id/approve', 'Approve or deny a pending wallet transaction', { expectsJsonBody: true }),
710
- cmd('transactions', 'GET', '/wallets/:id/transactions', 'List wallet transactions'),
711
- cmd('balance-history', 'GET', '/wallets/:id/balance-history', 'Get wallet balance history'),
712
- ],
713
- },
714
682
  {
715
683
  name: 'upload',
716
684
  description: 'Upload raw file/blob',
@@ -769,6 +737,26 @@ const COMMAND_GROUPS = [
769
737
  cmd('history', 'GET', '/webhooks/:id/history', 'Get webhook delivery history'),
770
738
  ],
771
739
  },
740
+ {
741
+ name: 'portability',
742
+ description: 'Export and import agent configurations',
743
+ commands: [
744
+ cmd('export', 'GET', '/portability/export', 'Export agents, skills, and schedules as a portable JSON manifest'),
745
+ cmd('import', 'POST', '/portability/import', 'Import a portable JSON manifest', { expectsJsonBody: true }),
746
+ ],
747
+ },
748
+ {
749
+ name: 'wallets',
750
+ description: 'Manage agent wallets',
751
+ commands: [
752
+ cmd('list', 'GET', '/wallets', 'List wallets'),
753
+ cmd('get', 'GET', '/wallets/:id', 'Get wallet by id'),
754
+ cmd('create', 'POST', '/wallets', 'Create a wallet', { expectsJsonBody: true }),
755
+ cmd('generate', 'POST', '/wallets/generate', 'Generate a new wallet for an agent', { expectsJsonBody: true }),
756
+ cmd('update', 'PATCH', '/wallets/:id', 'Update wallet settings', { expectsJsonBody: true }),
757
+ cmd('delete', 'DELETE', '/wallets/:id', 'Delete a wallet'),
758
+ ],
759
+ },
772
760
  ]
773
761
 
774
762
  const GROUP_MAP = new Map(COMMAND_GROUPS.map((group) => [group.name, group]))
package/src/cli/spec.js CHANGED
@@ -59,13 +59,6 @@ const COMMAND_GROUPS = {
59
59
  pin: { description: 'Toggle pin on a chatroom message', method: 'POST', path: '/chatrooms/:id/pins', params: ['id'] },
60
60
  },
61
61
  },
62
- canvas: {
63
- description: 'Session canvas content',
64
- commands: {
65
- get: { description: 'Get current canvas content for a session', method: 'GET', path: '/canvas/:sessionId', params: ['sessionId'] },
66
- set: { description: 'Set/clear canvas content for a session', method: 'POST', path: '/canvas/:sessionId', params: ['sessionId'] },
67
- },
68
- },
69
62
  connectors: {
70
63
  description: 'Manage chat connectors',
71
64
  commands: {
@@ -214,15 +207,7 @@ const COMMAND_GROUPS = {
214
207
  clear: { description: 'Clear log file', method: 'DELETE', path: '/logs' },
215
208
  },
216
209
  },
217
- missions: {
218
- description: 'Inspect and control durable missions',
219
- commands: {
220
- list: { description: 'List missions (supports --query status=,phase=,source=,sessionId=,agentId=,projectId=)', method: 'GET', path: '/missions' },
221
- get: { description: 'Get mission detail by id', method: 'GET', path: '/missions/:id', params: ['id'] },
222
- events: { description: 'Get mission event timeline', method: 'GET', path: '/missions/:id/events', params: ['id'] },
223
- action: { description: 'Run a mission control action (resume, replan, retry_verification, wait, cancel)', method: 'POST', path: '/missions/:id/actions', params: ['id'] },
224
- },
225
- },
210
+
226
211
  memory: {
227
212
  description: 'Agent memory entries',
228
213
  commands: {
@@ -526,26 +511,30 @@ const COMMAND_GROUPS = {
526
511
  events: { description: 'Get run event history by run id', method: 'GET', path: '/runs/:id/events', params: ['id'] },
527
512
  },
528
513
  },
529
- wallets: {
530
- description: 'Agent wallet operations',
531
- commands: {
532
- list: { description: 'List wallets', method: 'GET', path: '/wallets' },
533
- get: { description: 'Get wallet by id', method: 'GET', path: '/wallets/:id', params: ['id'] },
534
- create: { description: 'Create wallet', method: 'POST', path: '/wallets' },
535
- update: { description: 'Update wallet settings', method: 'PATCH', path: '/wallets/:id', params: ['id'] },
536
- delete: { description: 'Delete wallet', method: 'DELETE', path: '/wallets/:id', params: ['id'] },
537
- send: { description: 'Send funds from wallet', method: 'POST', path: '/wallets/:id/send', params: ['id'] },
538
- approve: { description: 'Approve or deny pending wallet transaction', method: 'POST', path: '/wallets/:id/approve', params: ['id'] },
539
- transactions: { description: 'List wallet transactions', method: 'GET', path: '/wallets/:id/transactions', params: ['id'] },
540
- 'balance-history': { description: 'Get wallet balance history', method: 'GET', path: '/wallets/:id/balance-history', params: ['id'] },
541
- },
542
- },
543
514
  webhooks: {
544
515
  description: 'Inbound webhook triggers',
545
516
  commands: {
546
517
  trigger: { description: 'Trigger webhook by id', method: 'POST', path: '/webhooks/:id', params: ['id'], waitable: true },
547
518
  },
548
519
  },
520
+ portability: {
521
+ description: 'Export and import agent configurations',
522
+ commands: {
523
+ export: { description: 'Export agents, skills, and schedules as a portable JSON manifest', method: 'GET', path: '/portability/export' },
524
+ import: { description: 'Import a portable JSON manifest', method: 'POST', path: '/portability/import', body: true },
525
+ },
526
+ },
527
+ wallets: {
528
+ description: 'Manage agent wallets',
529
+ commands: {
530
+ list: { description: 'List wallets', method: 'GET', path: '/wallets' },
531
+ get: { description: 'Get wallet by id', method: 'GET', path: '/wallets/:id', params: ['id'] },
532
+ create: { description: 'Create a wallet', method: 'POST', path: '/wallets' },
533
+ generate: { description: 'Generate a new wallet for an agent', method: 'POST', path: '/wallets/generate', body: true },
534
+ update: { description: 'Update wallet settings', method: 'PATCH', path: '/wallets/:id', params: ['id'], body: true },
535
+ delete: { description: 'Delete a wallet', method: 'DELETE', path: '/wallets/:id', params: ['id'] },
536
+ },
537
+ },
549
538
  }
550
539
 
551
540
  const GROUP_NAMES = Object.keys(COMMAND_GROUPS)
@@ -193,9 +193,11 @@ export function AgentChatList({ inSidebar, onSelect }: Props) {
193
193
  // eslint-disable-next-line react-hooks/exhaustive-deps
194
194
  }, [filteredAgents.map((a) => a.id).join(',')])
195
195
 
196
+ const [enableAgentTarget, setEnableAgentTarget] = useState<Agent | null>(null)
197
+
196
198
  const handleSelect = async (agent: Agent) => {
197
199
  if (agent.disabled === true && !agent.threadSessionId) {
198
- toast.error(`${agent.name} is disabled. Re-enable it to start a new chat.`)
200
+ setEnableAgentTarget(agent)
199
201
  return
200
202
  }
201
203
  navigateTo('agents', agent.id)
@@ -547,6 +549,26 @@ export function AgentChatList({ inSidebar, onSelect }: Props) {
547
549
  onConfirm={() => { setConfirmBulkDelete(false); handleBulkDelete() }}
548
550
  onCancel={() => setConfirmBulkDelete(false)}
549
551
  />
552
+ <ConfirmDialog
553
+ open={!!enableAgentTarget}
554
+ title={`Enable ${enableAgentTarget?.name ?? 'Agent'}?`}
555
+ message={`${enableAgentTarget?.name ?? 'This agent'} is currently disabled. Enable it to start a new chat.`}
556
+ confirmLabel="Enable"
557
+ onConfirm={async () => {
558
+ if (!enableAgentTarget) return
559
+ try {
560
+ await api('PUT', `/agents/${enableAgentTarget.id}`, { disabled: false })
561
+ await loadAgents()
562
+ const agent = enableAgentTarget
563
+ setEnableAgentTarget(null)
564
+ handleSelect(agent)
565
+ } catch {
566
+ toast.error('Failed to enable agent')
567
+ setEnableAgentTarget(null)
568
+ }
569
+ }}
570
+ onCancel={() => setEnableAgentTarget(null)}
571
+ />
550
572
  </div>
551
573
  )
552
574
  }
@@ -10,8 +10,7 @@ import { sleep } from '@/lib/shared-utils'
10
10
  import { BottomSheet } from '@/components/shared/bottom-sheet'
11
11
  import { toast } from 'sonner'
12
12
  import { ModelCombobox } from '@/components/shared/model-combobox'
13
- import type { ProviderType, ClaudeSkill, AgentWallet, AgentPackManifest, AgentRoutingStrategy, AgentRoutingTarget } from '@/types'
14
- import { WalletSection } from '@/components/wallets/wallet-section'
13
+ import type { ProviderType, ClaudeSkill, AgentPackManifest, AgentRoutingStrategy, AgentRoutingTarget } from '@/types'
15
14
  import { AVAILABLE_TOOLS, PLATFORM_TOOLS } from '@/lib/tool-definitions'
16
15
  import { NATIVE_CAPABILITY_PROVIDER_IDS, NON_LANGGRAPH_PROVIDER_IDS, WORKER_ONLY_PROVIDER_IDS } from '@/lib/provider-sets'
17
16
  import { isOrchestratorProviderEligible } from '@/lib/orchestrator-config'
@@ -49,14 +48,6 @@ const AUTO_SYNC_MODEL_PROVIDER_IDS = new Set<ProviderType>([
49
48
  const CONNECTION_TEST_TIMEOUT_MS = 40_000
50
49
  type AgentProviderId = string
51
50
 
52
- type SafeAgentWallet = Omit<AgentWallet, 'encryptedPrivateKey'> & {
53
- balanceAtomic?: string
54
- balanceLamports?: number
55
- balanceFormatted?: string
56
- balanceSymbol?: string
57
- isActive?: boolean
58
- }
59
-
60
51
  function SectionCard({
61
52
  title,
62
53
  description,
@@ -266,7 +257,6 @@ export function AgentSheet() {
266
257
  const [dailyBudget, setDailyBudget] = useState('')
267
258
  const [monthlyBudget, setMonthlyBudget] = useState('')
268
259
  const [budgetAction, setBudgetAction] = useState<'warn' | 'block'>('warn')
269
- const [agentWallets, setAgentWallets] = useState<SafeAgentWallet[]>([])
270
260
  const [addingKey, setAddingKey] = useState(false)
271
261
  const [newKeyName, setNewKeyName] = useState('')
272
262
  const [newKeyValue, setNewKeyValue] = useState('')
@@ -297,21 +287,6 @@ export function AgentSheet() {
297
287
  e.target.value = ''
298
288
  }
299
289
 
300
- const loadAgentWallets = useCallback(async (agentId: string) => {
301
- try {
302
- const wallets = await api<Record<string, SafeAgentWallet>>('GET', `/wallets?agentId=${encodeURIComponent(agentId)}`)
303
- const matches = Object.values(wallets)
304
- .filter((wallet) => wallet.agentId === agentId)
305
- .sort((a, b) => {
306
- if ((a.isActive ? 1 : 0) !== (b.isActive ? 1 : 0)) return a.isActive ? -1 : 1
307
- return a.chain.localeCompare(b.chain)
308
- })
309
- setAgentWallets(matches)
310
- } catch {
311
- setAgentWallets([])
312
- }
313
- }, [])
314
-
315
290
  const agentSelectableProviders = useMemo(
316
291
  () => buildAgentSelectableProviders(providers, providerConfigs),
317
292
  [providers, providerConfigs],
@@ -487,7 +462,6 @@ export function AgentSheet() {
487
462
  setDailyBudget(typeof editing.dailyBudget === 'number' && editing.dailyBudget > 0 ? String(editing.dailyBudget) : '')
488
463
  setMonthlyBudget(typeof editing.monthlyBudget === 'number' && editing.monthlyBudget > 0 ? String(editing.monthlyBudget) : '')
489
464
  setBudgetAction(editing.budgetAction || 'warn')
490
- void loadAgentWallets(editing.id)
491
465
  } else if (useAppStore.getState().agentPrefill) {
492
466
  // Duplicate mode — prefill from source agent, then clear
493
467
  const src = useAppStore.getState().agentPrefill!
@@ -567,7 +541,6 @@ export function AgentSheet() {
567
541
  setDailyBudget(typeof src.dailyBudget === 'number' && src.dailyBudget > 0 ? String(src.dailyBudget) : '')
568
542
  setMonthlyBudget(typeof src.monthlyBudget === 'number' && src.monthlyBudget > 0 ? String(src.monthlyBudget) : '')
569
543
  setBudgetAction(src.budgetAction || 'warn')
570
- setAgentWallets([])
571
544
  } else {
572
545
  setName('')
573
546
  setDescription('')
@@ -634,7 +607,6 @@ export function AgentSheet() {
634
607
  setDailyBudget('')
635
608
  setMonthlyBudget('')
636
609
  setBudgetAction('warn')
637
- setAgentWallets([])
638
610
  }
639
611
  }
640
612
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -2657,7 +2629,7 @@ export function AgentSheet() {
2657
2629
 
2658
2630
  <SectionCard
2659
2631
  title="Utilities"
2660
- description="Import and export agents, and manage any attached wallets."
2632
+ description="Import and export agents."
2661
2633
  className="mb-0 border-white/[0.05] bg-white/[0.01]"
2662
2634
  >
2663
2635
  <div className="flex flex-wrap gap-3">
@@ -2681,16 +2653,6 @@ export function AgentSheet() {
2681
2653
  </button>
2682
2654
  )}
2683
2655
  </div>
2684
- {editing && (
2685
- <div className="mt-6">
2686
- <WalletSection
2687
- agentId={editing.id}
2688
- wallets={agentWallets}
2689
- activeWalletId={editing.activeWalletId || null}
2690
- onWalletCreated={() => loadAgentWallets(editing.id)}
2691
- />
2692
- </div>
2693
- )}
2694
2656
  </SectionCard>
2695
2657
  </AdvancedSettingsSection>
2696
2658
  )}