@jiggai/kitchen 0.3.1 → 0.3.3

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 (307) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/server/app/_global-error.html +2 -2
  4. package/.next/server/app/_global-error.rsc +1 -1
  5. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  6. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  10. package/.next/server/app/_not-found.html +1 -1
  11. package/.next/server/app/_not-found.rsc +1 -1
  12. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  14. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/channels.html +2 -2
  19. package/.next/server/app/channels.rsc +1 -1
  20. package/.next/server/app/channels.segments/_full.segment.rsc +1 -1
  21. package/.next/server/app/channels.segments/_head.segment.rsc +1 -1
  22. package/.next/server/app/channels.segments/_index.segment.rsc +1 -1
  23. package/.next/server/app/channels.segments/_tree.segment.rsc +1 -1
  24. package/.next/server/app/channels.segments/channels/__PAGE__.segment.rsc +1 -1
  25. package/.next/server/app/channels.segments/channels.segment.rsc +1 -1
  26. package/.next/server/app/cron-jobs.html +1 -1
  27. package/.next/server/app/cron-jobs.rsc +1 -1
  28. package/.next/server/app/cron-jobs.segments/_full.segment.rsc +1 -1
  29. package/.next/server/app/cron-jobs.segments/_head.segment.rsc +1 -1
  30. package/.next/server/app/cron-jobs.segments/_index.segment.rsc +1 -1
  31. package/.next/server/app/cron-jobs.segments/_tree.segment.rsc +1 -1
  32. package/.next/server/app/cron-jobs.segments/cron-jobs/__PAGE__.segment.rsc +1 -1
  33. package/.next/server/app/cron-jobs.segments/cron-jobs.segment.rsc +1 -1
  34. package/.next/server/app/goals/new.html +2 -2
  35. package/.next/server/app/goals/new.rsc +1 -1
  36. package/.next/server/app/goals/new.segments/_full.segment.rsc +1 -1
  37. package/.next/server/app/goals/new.segments/_head.segment.rsc +1 -1
  38. package/.next/server/app/goals/new.segments/_index.segment.rsc +1 -1
  39. package/.next/server/app/goals/new.segments/_tree.segment.rsc +1 -1
  40. package/.next/server/app/goals/new.segments/goals/new/__PAGE__.segment.rsc +1 -1
  41. package/.next/server/app/goals/new.segments/goals/new.segment.rsc +1 -1
  42. package/.next/server/app/goals/new.segments/goals.segment.rsc +1 -1
  43. package/.next/server/app/goals.html +1 -1
  44. package/.next/server/app/goals.rsc +1 -1
  45. package/.next/server/app/goals.segments/_full.segment.rsc +1 -1
  46. package/.next/server/app/goals.segments/_head.segment.rsc +1 -1
  47. package/.next/server/app/goals.segments/_index.segment.rsc +1 -1
  48. package/.next/server/app/goals.segments/_tree.segment.rsc +1 -1
  49. package/.next/server/app/goals.segments/goals/__PAGE__.segment.rsc +1 -1
  50. package/.next/server/app/goals.segments/goals.segment.rsc +1 -1
  51. package/.next/server/app/settings.html +1 -1
  52. package/.next/server/app/settings.rsc +1 -1
  53. package/.next/server/app/settings.segments/_full.segment.rsc +1 -1
  54. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  55. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  56. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  57. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  58. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  59. package/.next/server/pages/404.html +1 -1
  60. package/.next/server/pages/500.html +2 -2
  61. package/package.json +1 -2
  62. package/src/app/HomeClient.tsx +0 -207
  63. package/src/app/agents/[agentId]/agent-editor-tabs.tsx +0 -298
  64. package/src/app/agents/[agentId]/agent-editor.tsx +0 -468
  65. package/src/app/agents/[agentId]/page.tsx +0 -32
  66. package/src/app/api/__tests__/agents-add-route.test.ts +0 -143
  67. package/src/app/api/__tests__/agents-file-route.test.ts +0 -117
  68. package/src/app/api/__tests__/agents-files-route.test.ts +0 -61
  69. package/src/app/api/__tests__/agents-id-route.test.ts +0 -104
  70. package/src/app/api/__tests__/agents-identity-route.test.ts +0 -92
  71. package/src/app/api/__tests__/agents-route.test.ts +0 -54
  72. package/src/app/api/__tests__/agents-skills-install-route.test.ts +0 -131
  73. package/src/app/api/__tests__/agents-skills-route.test.ts +0 -64
  74. package/src/app/api/__tests__/agents-update-route.test.ts +0 -95
  75. package/src/app/api/__tests__/channels-bindings-route.test.ts +0 -143
  76. package/src/app/api/__tests__/cron-delete-route.test.ts +0 -93
  77. package/src/app/api/__tests__/cron-job-route.test.ts +0 -78
  78. package/src/app/api/__tests__/cron-jobs-route.test.ts +0 -116
  79. package/src/app/api/__tests__/cron-recipe-installed-route.test.ts +0 -114
  80. package/src/app/api/__tests__/gateway-restart-route.test.ts +0 -36
  81. package/src/app/api/__tests__/goals-promote-route.test.ts +0 -200
  82. package/src/app/api/__tests__/goals-route.test.ts +0 -184
  83. package/src/app/api/__tests__/ids-check-route.test.ts +0 -188
  84. package/src/app/api/__tests__/marketplace-recipes-route.test.ts +0 -123
  85. package/src/app/api/__tests__/recipes-clone-route.test.ts +0 -221
  86. package/src/app/api/__tests__/recipes-delete-route.test.ts +0 -248
  87. package/src/app/api/__tests__/recipes-id-route.test.ts +0 -166
  88. package/src/app/api/__tests__/recipes-route.test.ts +0 -57
  89. package/src/app/api/__tests__/recipes-team-agents-route.test.ts +0 -135
  90. package/src/app/api/__tests__/scaffold-route.test.ts +0 -173
  91. package/src/app/api/__tests__/settings-cron-installation-route.test.ts +0 -82
  92. package/src/app/api/__tests__/skills-available-route.test.ts +0 -47
  93. package/src/app/api/__tests__/swarms-start-route.test.ts +0 -79
  94. package/src/app/api/__tests__/swarms-status-route.test.ts +0 -42
  95. package/src/app/api/__tests__/teams-file-route.test.ts +0 -129
  96. package/src/app/api/__tests__/teams-files-route.test.ts +0 -57
  97. package/src/app/api/__tests__/teams-meta-route.test.ts +0 -113
  98. package/src/app/api/__tests__/teams-orchestrator-install-route.test.ts +0 -66
  99. package/src/app/api/__tests__/teams-orchestrator-route.test.ts +0 -59
  100. package/src/app/api/__tests__/teams-remove-team-route.test.ts +0 -122
  101. package/src/app/api/__tests__/teams-skills-install-route.test.ts +0 -78
  102. package/src/app/api/__tests__/teams-skills-route.test.ts +0 -73
  103. package/src/app/api/__tests__/teams-workflow-runs-route.test.ts +0 -85
  104. package/src/app/api/__tests__/teams-workflows-route.test.ts +0 -110
  105. package/src/app/api/__tests__/tickets-move-route.test.ts +0 -60
  106. package/src/app/api/agents/[id]/route.ts +0 -83
  107. package/src/app/api/agents/add/route.ts +0 -114
  108. package/src/app/api/agents/file/route.ts +0 -45
  109. package/src/app/api/agents/files/route.ts +0 -23
  110. package/src/app/api/agents/identity/route.ts +0 -41
  111. package/src/app/api/agents/route.ts +0 -22
  112. package/src/app/api/agents/skills/install/route.ts +0 -34
  113. package/src/app/api/agents/skills/route.ts +0 -39
  114. package/src/app/api/agents/update/route.ts +0 -52
  115. package/src/app/api/channels/bindings/route.ts +0 -63
  116. package/src/app/api/cron/__tests__/helpers.test.ts +0 -164
  117. package/src/app/api/cron/delete/route.ts +0 -23
  118. package/src/app/api/cron/helpers.ts +0 -172
  119. package/src/app/api/cron/job/route.ts +0 -22
  120. package/src/app/api/cron/jobs/route.ts +0 -52
  121. package/src/app/api/cron/recipe-installed/route.ts +0 -65
  122. package/src/app/api/gateway/restart/route.ts +0 -20
  123. package/src/app/api/goals/[id]/promote/route.ts +0 -119
  124. package/src/app/api/goals/[id]/route.ts +0 -54
  125. package/src/app/api/goals/route.ts +0 -44
  126. package/src/app/api/ids/check/route.ts +0 -113
  127. package/src/app/api/marketplace/recipes/[slug]/route.ts +0 -16
  128. package/src/app/api/marketplace/recipes/route.ts +0 -22
  129. package/src/app/api/recipes/[id]/route.ts +0 -62
  130. package/src/app/api/recipes/clone/route.ts +0 -106
  131. package/src/app/api/recipes/custom-team/route.ts +0 -193
  132. package/src/app/api/recipes/delete/helpers.ts +0 -65
  133. package/src/app/api/recipes/delete/route.ts +0 -73
  134. package/src/app/api/recipes/route.ts +0 -21
  135. package/src/app/api/recipes/team-agents/__tests__/helpers.test.ts +0 -156
  136. package/src/app/api/recipes/team-agents/helpers.ts +0 -151
  137. package/src/app/api/recipes/team-agents/route.ts +0 -80
  138. package/src/app/api/scaffold/__tests__/helpers.test.ts +0 -186
  139. package/src/app/api/scaffold/helpers.ts +0 -214
  140. package/src/app/api/scaffold/route.ts +0 -95
  141. package/src/app/api/settings/cron-installation/route.ts +0 -58
  142. package/src/app/api/skills/available/route.ts +0 -23
  143. package/src/app/api/swarms/start/route.ts +0 -100
  144. package/src/app/api/swarms/status/route.ts +0 -31
  145. package/src/app/api/teams/[teamId]/tickets/assign/route.ts +0 -105
  146. package/src/app/api/teams/[teamId]/tickets/assignees/route.ts +0 -27
  147. package/src/app/api/teams/[teamId]/tickets/delete/route.ts +0 -55
  148. package/src/app/api/teams/[teamId]/tickets/move/route.ts +0 -70
  149. package/src/app/api/teams/[teamId]/tickets/move-to-goals/route.ts +0 -56
  150. package/src/app/api/teams/file/route.ts +0 -46
  151. package/src/app/api/teams/files/route.ts +0 -63
  152. package/src/app/api/teams/memory/route.ts +0 -250
  153. package/src/app/api/teams/meta/route.ts +0 -43
  154. package/src/app/api/teams/orchestrator/install/route.ts +0 -129
  155. package/src/app/api/teams/orchestrator/route.ts +0 -216
  156. package/src/app/api/teams/remove-team/route.ts +0 -37
  157. package/src/app/api/teams/skills/install/route.ts +0 -18
  158. package/src/app/api/teams/skills/route.ts +0 -25
  159. package/src/app/api/teams/workflow-runs/route.ts +0 -534
  160. package/src/app/api/teams/workflow-templates/route.ts +0 -71
  161. package/src/app/api/teams/workflows/route.ts +0 -55
  162. package/src/app/api/tickets/assign/route.ts +0 -94
  163. package/src/app/api/tickets/assignees/route.ts +0 -24
  164. package/src/app/api/tickets/move/route.ts +0 -69
  165. package/src/app/channels/channels-client.tsx +0 -271
  166. package/src/app/channels/page.tsx +0 -5
  167. package/src/app/cron-jobs/cron-jobs-client.tsx +0 -243
  168. package/src/app/cron-jobs/page.tsx +0 -34
  169. package/src/app/favicon.ico +0 -0
  170. package/src/app/global-error.tsx +0 -50
  171. package/src/app/globals.css +0 -153
  172. package/src/app/goals/[id]/goal-editor.tsx +0 -162
  173. package/src/app/goals/[id]/page.tsx +0 -6
  174. package/src/app/goals/goals-client.tsx +0 -201
  175. package/src/app/goals/new/page.tsx +0 -81
  176. package/src/app/goals/page.tsx +0 -10
  177. package/src/app/layout.tsx +0 -53
  178. package/src/app/manifest.ts +0 -15
  179. package/src/app/not-found.tsx +0 -8
  180. package/src/app/page.tsx +0 -33
  181. package/src/app/recipes/CreateAgentModal.tsx +0 -156
  182. package/src/app/recipes/CreateCustomTeamModal.tsx +0 -375
  183. package/src/app/recipes/CreateModalShell.tsx +0 -55
  184. package/src/app/recipes/CreateTeamModal.tsx +0 -91
  185. package/src/app/recipes/[id]/RecipeEditor/RecipeEditorCreateModal.tsx +0 -72
  186. package/src/app/recipes/[id]/RecipeEditor/RecipeEditorPanel.tsx +0 -216
  187. package/src/app/recipes/[id]/RecipeEditor/index.tsx +0 -271
  188. package/src/app/recipes/[id]/RecipeEditor/recipe-editor-utils.ts +0 -46
  189. package/src/app/recipes/[id]/RecipeEditor/types.ts +0 -52
  190. package/src/app/recipes/[id]/page.tsx +0 -37
  191. package/src/app/recipes/page.tsx +0 -101
  192. package/src/app/recipes/recipes-client.tsx +0 -620
  193. package/src/app/settings/page.tsx +0 -26
  194. package/src/app/settings/settings-client.tsx +0 -91
  195. package/src/app/teams/[teamId]/CloneTeamModal.tsx +0 -116
  196. package/src/app/teams/[teamId]/OrchestratorPanel.tsx +0 -255
  197. package/src/app/teams/[teamId]/OrchestratorSetupModal.tsx +0 -184
  198. package/src/app/teams/[teamId]/PublishChangesModal.tsx +0 -43
  199. package/src/app/teams/[teamId]/page.tsx +0 -49
  200. package/src/app/teams/[teamId]/team-editor/TeamAgentsTab.tsx +0 -145
  201. package/src/app/teams/[teamId]/team-editor/TeamCronTab.tsx +0 -72
  202. package/src/app/teams/[teamId]/team-editor/TeamFilesTab.tsx +0 -74
  203. package/src/app/teams/[teamId]/team-editor/TeamMemoryTab.tsx +0 -349
  204. package/src/app/teams/[teamId]/team-editor/TeamRecipeTab.tsx +0 -151
  205. package/src/app/teams/[teamId]/team-editor/TeamSkillsTab.tsx +0 -68
  206. package/src/app/teams/[teamId]/team-editor/index.tsx +0 -558
  207. package/src/app/teams/[teamId]/team-editor/team-editor-data.ts +0 -255
  208. package/src/app/teams/[teamId]/team-editor/team-editor-utils.ts +0 -78
  209. package/src/app/teams/[teamId]/team-editor/types.ts +0 -34
  210. package/src/app/teams/[teamId]/tickets/[ticket]/page.tsx +0 -35
  211. package/src/app/teams/[teamId]/tickets/page.tsx +0 -15
  212. package/src/app/teams/[teamId]/workflows/[workflowId]/WorkflowCanvas.tsx +0 -111
  213. package/src/app/teams/[teamId]/workflows/[workflowId]/page.tsx +0 -27
  214. package/src/app/teams/[teamId]/workflows/[workflowId]/workflows-editor-client.tsx +0 -1608
  215. package/src/app/teams/[teamId]/workflows/page.tsx +0 -40
  216. package/src/app/teams/[teamId]/workflows/workflows-client.tsx +0 -494
  217. package/src/app/tickets/TicketDetailClient.tsx +0 -147
  218. package/src/app/tickets/TicketsBoardClient.tsx +0 -200
  219. package/src/app/tickets/[ticket]/TicketAssignControl.tsx +0 -112
  220. package/src/app/tickets/[ticket]/page.tsx +0 -36
  221. package/src/app/tickets/page.tsx +0 -10
  222. package/src/components/AppShell.tsx +0 -286
  223. package/src/components/ConfirmationModal.tsx +0 -81
  224. package/src/components/DeleteEntityModal.tsx +0 -41
  225. package/src/components/ErrorBoundary.tsx +0 -70
  226. package/src/components/FileListWithOptionalToggle.tsx +0 -86
  227. package/src/components/GoalFormFields.tsx +0 -163
  228. package/src/components/ScaffoldOverlay.tsx +0 -78
  229. package/src/components/ThemeToggle.tsx +0 -53
  230. package/src/components/ToastProvider.tsx +0 -163
  231. package/src/components/__tests__/ConfirmationModal.test.tsx +0 -109
  232. package/src/components/__tests__/ErrorBoundary.test.tsx +0 -39
  233. package/src/components/__tests__/FileListWithOptionalToggle.test.tsx +0 -109
  234. package/src/components/__tests__/GoalFormFields.test.tsx +0 -117
  235. package/src/components/delete-modals.tsx +0 -59
  236. package/src/components/icons.tsx +0 -48
  237. package/src/lib/__tests__/agent-workspace.test.ts +0 -44
  238. package/src/lib/__tests__/agents.test.ts +0 -36
  239. package/src/lib/__tests__/api-route-helpers.test.ts +0 -188
  240. package/src/lib/__tests__/cron.test.ts +0 -45
  241. package/src/lib/__tests__/editor-utils.test.ts +0 -38
  242. package/src/lib/__tests__/errors.test.ts +0 -15
  243. package/src/lib/__tests__/exec.test.ts +0 -13
  244. package/src/lib/__tests__/fetch-json.test.ts +0 -118
  245. package/src/lib/__tests__/gateway.test.ts +0 -234
  246. package/src/lib/__tests__/goal-promote.test.ts +0 -39
  247. package/src/lib/__tests__/goals-client.test.ts +0 -26
  248. package/src/lib/__tests__/goals.test.ts +0 -275
  249. package/src/lib/__tests__/json.test.ts +0 -15
  250. package/src/lib/__tests__/kitchen-api.test.ts +0 -32
  251. package/src/lib/__tests__/marketplace.test.ts +0 -116
  252. package/src/lib/__tests__/openclaw.test.ts +0 -129
  253. package/src/lib/__tests__/paths.test.ts +0 -136
  254. package/src/lib/__tests__/poll.test.ts +0 -26
  255. package/src/lib/__tests__/recipe-clone.test.ts +0 -85
  256. package/src/lib/__tests__/recipe-team-agents.test.ts +0 -70
  257. package/src/lib/__tests__/recipes.test.ts +0 -199
  258. package/src/lib/__tests__/scaffold-client.test.ts +0 -106
  259. package/src/lib/__tests__/scaffold.test.ts +0 -64
  260. package/src/lib/__tests__/slugify.test.ts +0 -23
  261. package/src/lib/__tests__/tickets.test.ts +0 -158
  262. package/src/lib/__tests__/type-guards.test.ts +0 -18
  263. package/src/lib/__tests__/use-slugified-id.test.tsx +0 -120
  264. package/src/lib/agent-workspace.ts +0 -14
  265. package/src/lib/agents.ts +0 -17
  266. package/src/lib/api-route-helpers.ts +0 -157
  267. package/src/lib/cron.ts +0 -40
  268. package/src/lib/editor-utils.ts +0 -18
  269. package/src/lib/errors.ts +0 -7
  270. package/src/lib/exec.ts +0 -4
  271. package/src/lib/fetch-json.ts +0 -29
  272. package/src/lib/gateway.ts +0 -100
  273. package/src/lib/goal-promote.ts +0 -27
  274. package/src/lib/goals-client.ts +0 -69
  275. package/src/lib/goals.ts +0 -171
  276. package/src/lib/json.ts +0 -10
  277. package/src/lib/kitchen-api.ts +0 -19
  278. package/src/lib/marketplace.ts +0 -46
  279. package/src/lib/openclaw.ts +0 -59
  280. package/src/lib/paths.ts +0 -69
  281. package/src/lib/poll.ts +0 -18
  282. package/src/lib/recipe-clone.ts +0 -42
  283. package/src/lib/recipe-team-agents.ts +0 -30
  284. package/src/lib/recipes.ts +0 -95
  285. package/src/lib/scaffold-client.ts +0 -31
  286. package/src/lib/scaffold.ts +0 -37
  287. package/src/lib/slugify.ts +0 -25
  288. package/src/lib/swarms.ts +0 -25
  289. package/src/lib/tickets.ts +0 -192
  290. package/src/lib/type-guards.ts +0 -3
  291. package/src/lib/use-slugified-id.ts +0 -35
  292. package/src/lib/workflows/README.md +0 -11
  293. package/src/lib/workflows/__tests__/storage.test.ts +0 -129
  294. package/src/lib/workflows/__tests__/validate.test.ts +0 -92
  295. package/src/lib/workflows/api-handlers.ts +0 -35
  296. package/src/lib/workflows/readdir.ts +0 -23
  297. package/src/lib/workflows/runs-storage.ts +0 -59
  298. package/src/lib/workflows/runs-types.ts +0 -42
  299. package/src/lib/workflows/storage.ts +0 -70
  300. package/src/lib/workflows/templates/index.ts +0 -1
  301. package/src/lib/workflows/templates/marketing-cadence-v1.ts +0 -142
  302. package/src/lib/workflows/types.ts +0 -48
  303. package/src/lib/workflows/validate.ts +0 -92
  304. package/src/proxy.ts +0 -28
  305. /package/.next/static/{z86RoqzzXXrWnpi229zP6 → Jrrrm9HH5bKkSrQhe1j93}/_buildManifest.js +0 -0
  306. /package/.next/static/{z86RoqzzXXrWnpi229zP6 → Jrrrm9HH5bKkSrQhe1j93}/_clientMiddlewareManifest.json +0 -0
  307. /package/.next/static/{z86RoqzzXXrWnpi229zP6 → Jrrrm9HH5bKkSrQhe1j93}/_ssgManifest.js +0 -0
@@ -1,43 +0,0 @@
1
- "use client";
2
-
3
- import { ConfirmationModal } from "@/components/ConfirmationModal";
4
-
5
- export function PublishChangesModal({
6
- open,
7
- teamId,
8
- recipeId,
9
- onClose,
10
- onConfirm,
11
- busy,
12
- }: {
13
- open: boolean;
14
- teamId: string;
15
- recipeId: string;
16
- busy?: boolean;
17
- onClose: () => void;
18
- onConfirm: () => void;
19
- }) {
20
- return (
21
- <ConfirmationModal
22
- open={open}
23
- onClose={onClose}
24
- title="Publish changes"
25
- confirmLabel="Publish changes"
26
- confirmBusyLabel="Publishing…"
27
- busy={busy}
28
- onConfirm={onConfirm}
29
- confirmButtonClassName="rounded-[var(--ck-radius-sm)] bg-emerald-600 px-3 py-2 text-sm font-medium text-white shadow-[var(--ck-shadow-1)] hover:bg-emerald-500 disabled:opacity-50"
30
- >
31
- <p className="mt-2 text-sm text-[color:var(--ck-text-secondary)]">
32
- This will re-scaffold team <code className="font-mono">{teamId}</code> from recipe <code className="font-mono">{recipeId}</code>.
33
- </p>
34
- <div className="mt-4 rounded-[var(--ck-radius-sm)] border border-amber-400/30 bg-amber-500/10 p-3 text-sm text-amber-100">
35
- <div className="font-medium">Complete overwrite</div>
36
- <div className="mt-1">
37
- All existing team workspace files managed by the recipe will be overwritten (for example: <code className="font-mono">AGENTS.md</code>,{" "}
38
- <code className="font-mono">SOUL.md</code>, role templates, and other scaffolded files). Any manual edits in those files will be lost.
39
- </div>
40
- </div>
41
- </ConfirmationModal>
42
- );
43
- }
@@ -1,49 +0,0 @@
1
- import Link from "next/link";
2
- import { unstable_noStore as noStore } from "next/cache";
3
-
4
- import { getTeamDisplayName } from "@/lib/recipes";
5
- import TeamEditor from "./team-editor";
6
-
7
- export const dynamic = "force-dynamic";
8
- export const revalidate = 0;
9
-
10
- export default async function TeamPage({
11
- params,
12
- searchParams,
13
- }: {
14
- params: Promise<{ teamId: string }>;
15
- searchParams?: Promise<Record<string, string | string[] | undefined>>;
16
- }) {
17
- // Team pages depend on live OpenClaw state; never serve cached HTML.
18
- noStore();
19
-
20
- const { teamId } = await params;
21
- const sp = (await searchParams) ?? {};
22
- const tabRaw = sp.tab;
23
- const tab = Array.isArray(tabRaw) ? tabRaw[0] : tabRaw;
24
- const name = await getTeamDisplayName(teamId);
25
-
26
- return (
27
- <div className="flex flex-col gap-4 p-6">
28
- <div className="flex flex-wrap items-start justify-between gap-4">
29
- <div>
30
- <div className="text-xl font-semibold tracking-tight text-[color:var(--ck-text-primary)]">
31
- {name || teamId}
32
- </div>
33
- <div className="text-xs text-[color:var(--ck-text-tertiary)]">{teamId}</div>
34
- </div>
35
-
36
- <div className="flex items-center gap-3">
37
- <Link
38
- href={`/goals?team=${encodeURIComponent(teamId)}`}
39
- className="text-sm font-medium text-[color:var(--ck-text-secondary)] hover:underline"
40
- >
41
- View goals →
42
- </Link>
43
- </div>
44
- </div>
45
-
46
- <TeamEditor teamId={teamId} initialTab={typeof tab === "string" ? tab : undefined} />
47
- </div>
48
- );
49
- }
@@ -1,145 +0,0 @@
1
- "use client";
2
-
3
- import type { TeamAgentEntry } from "./types";
4
-
5
- type RecipeAgent = { role: string; name?: string };
6
-
7
- type TeamAgentsTabProps = {
8
- teamId: string;
9
- toId: string;
10
- recipeAgents: RecipeAgent[];
11
- newRole: string;
12
- setNewRole: (v: string) => void;
13
- customRole: string;
14
- setCustomRole: (v: string) => void;
15
- newRoleName: string;
16
- setNewRoleName: (v: string) => void;
17
- derivedRole: string;
18
- saving: boolean;
19
- teamAgents: TeamAgentEntry[];
20
- teamAgentsLoading: boolean;
21
- onAddAgent: () => Promise<void>;
22
- };
23
-
24
- export function TeamAgentsTab(props: TeamAgentsTabProps) {
25
- const {
26
- teamId,
27
- toId,
28
- recipeAgents,
29
- newRole,
30
- setNewRole,
31
- customRole,
32
- setCustomRole,
33
- newRoleName,
34
- setNewRoleName,
35
- derivedRole,
36
- saving,
37
- teamAgents,
38
- teamAgentsLoading,
39
- onAddAgent,
40
- } = props;
41
-
42
- return (
43
- <div className="mt-6 ck-glass-strong p-4">
44
- <div className="text-sm font-medium text-[color:var(--ck-text-primary)]">Agents in this team</div>
45
- <p className="mt-2 text-sm text-[color:var(--ck-text-secondary)]">
46
- Add/remove agents by updating the <code>agents:</code> list in your custom team recipe (<code>{toId}</code>).
47
- </p>
48
-
49
- <div className="mt-4 grid grid-cols-1 gap-3 sm:grid-cols-3">
50
- <div>
51
- <label className="block text-xs font-medium text-[color:var(--ck-text-secondary)]">Role</label>
52
- <select
53
- value={newRole}
54
- onChange={(e) => {
55
- const v = e.target.value;
56
- setNewRole(v);
57
- if (v === "__custom__") {
58
- setCustomRole("");
59
- setNewRoleName("");
60
- return;
61
- }
62
- setCustomRole("");
63
- const match = recipeAgents.find((a) => a.role === v);
64
- setNewRoleName(match?.name || "");
65
- }}
66
- className="mt-1 w-full rounded-[var(--ck-radius-sm)] border border-white/10 bg-black/25 px-3 py-2 text-sm text-[color:var(--ck-text-primary)]"
67
- >
68
- <option value="">Select…</option>
69
- {recipeAgents.map((a) => (
70
- <option key={a.role} value={a.role}>
71
- {a.name || a.role}
72
- </option>
73
- ))}
74
- <option value="__custom__">Other…</option>
75
- </select>
76
-
77
- {newRole === "__custom__" ? (
78
- <input
79
- value={customRole}
80
- onChange={(e) => setCustomRole(e.target.value)}
81
- placeholder="role (e.g. researcher)"
82
- className="mt-2 w-full rounded-[var(--ck-radius-sm)] border border-white/10 bg-black/25 px-3 py-2 text-sm text-[color:var(--ck-text-primary)]"
83
- />
84
- ) : null}
85
-
86
- <div className="mt-1 text-xs text-[color:var(--ck-text-tertiary)]">
87
- This writes to the recipe&apos;s <code>agents:</code> list.
88
- </div>
89
- </div>
90
-
91
- <div className="sm:col-span-2">
92
- <div>
93
- <label className="block text-xs font-medium text-[color:var(--ck-text-secondary)]">Name (optional)</label>
94
- <input
95
- value={newRoleName}
96
- onChange={(e) => setNewRoleName(e.target.value)}
97
- placeholder="Onchain Researcher"
98
- className="mt-1 w-full rounded-[var(--ck-radius-sm)] border border-white/10 bg-black/25 px-3 py-2 text-sm text-[color:var(--ck-text-primary)]"
99
- />
100
- </div>
101
- </div>
102
- </div>
103
-
104
- <div className="mt-3 flex flex-wrap gap-2">
105
- <button
106
- disabled={saving || !derivedRole}
107
- onClick={onAddAgent}
108
- className="rounded-[var(--ck-radius-sm)] bg-[var(--ck-accent-red)] px-3 py-2 text-sm font-medium text-white shadow-[var(--ck-shadow-1)] disabled:opacity-50"
109
- >
110
- Add agent
111
- </button>
112
- </div>
113
-
114
- <div className="mt-6">
115
- <div className="text-xs font-medium text-[color:var(--ck-text-secondary)]">Detected installed team agents (read-only)</div>
116
- <ul className="mt-2 space-y-2">
117
- {teamAgents.length ? (
118
- teamAgents.map((a) => (
119
- <li key={a.id} className="flex items-center justify-between gap-3">
120
- <div className="min-w-0">
121
- <div className="truncate text-sm font-medium text-[color:var(--ck-text-primary)]">
122
- {a.identityName || a.id}
123
- </div>
124
- <div className="text-xs text-[color:var(--ck-text-secondary)]">{a.id}</div>
125
- </div>
126
- <a
127
- className="text-sm font-medium text-[var(--ck-accent-red)] hover:text-[color:var(--ck-accent-red-hover)]"
128
- href={"/agents/" + encodeURIComponent(a.id) + "?returnTo=" + encodeURIComponent("/teams/" + teamId + "?tab=agents")}
129
- >
130
- Edit
131
- </a>
132
- </li>
133
- ))
134
- ) : null}
135
- {teamAgents.length === 0 && !teamAgentsLoading && (
136
- <li className="text-sm text-[color:var(--ck-text-secondary)]">No team agents detected.</li>
137
- )}
138
- {teamAgents.length === 0 && teamAgentsLoading && (
139
- <li className="text-sm text-[color:var(--ck-text-secondary)]">Loading…</li>
140
- )}
141
- </ul>
142
- </div>
143
- </div>
144
- );
145
- }
@@ -1,72 +0,0 @@
1
- "use client";
2
-
3
- type CronJob = {
4
- id?: unknown;
5
- jobId?: unknown;
6
- name?: unknown;
7
- enabled?: unknown;
8
- state?: { enabled?: unknown };
9
- };
10
-
11
- type TeamCronTabProps = {
12
- cronJobs: unknown[];
13
- cronLoading: boolean;
14
- saving: boolean;
15
- onCronAction: (id: string, label: string, action: "enable" | "disable" | "run") => Promise<void>;
16
- };
17
-
18
- export function TeamCronTab(props: TeamCronTabProps) {
19
- const { cronJobs, cronLoading, saving, onCronAction } = props;
20
- return (
21
- <div className="mt-6 ck-glass-strong p-4">
22
- <div className="text-sm font-medium text-[color:var(--ck-text-primary)]">Cron jobs (filtered by team name)</div>
23
- <ul className="mt-3 space-y-3">
24
- {cronJobs.length ? (
25
- cronJobs.map((j) => {
26
- const job = j as CronJob;
27
- const id = String(job.id ?? job.jobId ?? "").trim();
28
- const key = id || String(job.name ?? "job");
29
- const label = String(job.name ?? job.id ?? job.jobId ?? "(unnamed)");
30
- const enabled = job.enabled ?? job.state?.enabled;
31
- return (
32
- <li key={key} className="rounded-[var(--ck-radius-sm)] border border-white/10 bg-black/20 p-3">
33
- <div className="font-medium text-[color:var(--ck-text-primary)]">{label}</div>
34
- <div className="mt-1 text-xs text-[color:var(--ck-text-secondary)]">Enabled: {String(enabled ?? "?")}</div>
35
- <div className="mt-2 flex flex-wrap gap-2">
36
- <button
37
- disabled={saving || !id}
38
- onClick={() => onCronAction(id, label, "run")}
39
- className="rounded-[var(--ck-radius-sm)] border border-white/10 bg-white/5 px-2.5 py-1.5 text-xs font-medium text-[color:var(--ck-text-primary)] hover:bg-white/10 disabled:opacity-50"
40
- >
41
- Run
42
- </button>
43
- <button
44
- disabled={saving || !id}
45
- onClick={() => onCronAction(id, label, "enable")}
46
- className="rounded-[var(--ck-radius-sm)] border border-white/10 bg-white/5 px-2.5 py-1.5 text-xs font-medium text-[color:var(--ck-text-primary)] hover:bg-white/10 disabled:opacity-50"
47
- >
48
- Enable
49
- </button>
50
- <button
51
- disabled={saving || !id}
52
- onClick={() => onCronAction(id, label, "disable")}
53
- className="rounded-[var(--ck-radius-sm)] border border-white/10 bg-white/5 px-2.5 py-1.5 text-xs font-medium text-[color:var(--ck-text-primary)] hover:bg-white/10 disabled:opacity-50"
54
- >
55
- Disable
56
- </button>
57
- {!id ? <div className="text-xs text-[color:var(--ck-text-tertiary)]">(missing id)</div> : null}
58
- </div>
59
- </li>
60
- );
61
- })
62
- ) : null}
63
- {cronJobs.length === 0 && cronLoading && (
64
- <li className="text-sm text-[color:var(--ck-text-secondary)]">Loading</li>
65
- )}
66
- {cronJobs.length === 0 && !cronLoading && (
67
- <li className="text-sm text-[color:var(--ck-text-secondary)]">No cron jobs detected for this team.</li>
68
- )}
69
- </ul>
70
- </div>
71
- );
72
- }
@@ -1,74 +0,0 @@
1
- "use client";
2
-
3
- import { FileListWithOptionalToggle } from "@/components/FileListWithOptionalToggle";
4
- import type { TeamFileEntry } from "./types";
5
-
6
- type TeamFilesTabProps = {
7
- teamFiles: TeamFileEntry[];
8
- teamFilesLoading: boolean;
9
- showOptionalFiles: boolean;
10
- setShowOptionalFiles: (v: boolean) => void;
11
- fileName: string;
12
- fileContent: string;
13
- setFileContent: (v: string) => void;
14
- teamFileError: string;
15
- saving: boolean;
16
- onLoadTeamFile: (name: string) => void;
17
- onSaveTeamFile: () => void;
18
- };
19
-
20
- export function TeamFilesTab(props: TeamFilesTabProps) {
21
- const {
22
- teamFiles,
23
- teamFilesLoading,
24
- showOptionalFiles,
25
- setShowOptionalFiles,
26
- fileName,
27
- fileContent,
28
- setFileContent,
29
- teamFileError,
30
- saving,
31
- onLoadTeamFile,
32
- onSaveTeamFile,
33
- } = props;
34
-
35
- return (
36
- <div className="mt-6 grid grid-cols-1 gap-4 lg:grid-cols-3">
37
- <FileListWithOptionalToggle
38
- title="Team files"
39
- files={teamFiles}
40
- loading={teamFilesLoading}
41
- showOptionalFiles={showOptionalFiles}
42
- onShowOptionalChange={setShowOptionalFiles}
43
- selectedFileName={fileName}
44
- onSelectFile={onLoadTeamFile}
45
- />
46
-
47
- <div className="ck-glass-strong p-4 lg:col-span-2">
48
- <div className="flex items-center justify-between gap-3">
49
- <div className="text-sm font-medium text-[color:var(--ck-text-primary)]">Edit: {fileName}</div>
50
- <button
51
- disabled={saving}
52
- onClick={onSaveTeamFile}
53
- className="rounded-[var(--ck-radius-sm)] bg-[var(--ck-accent-red)] px-3 py-2 text-sm font-medium text-white shadow-[var(--ck-shadow-1)] disabled:opacity-50"
54
- >
55
- {saving ? "Saving…" : "Save file"}
56
- </button>
57
- </div>
58
-
59
- {teamFileError ? (
60
- <div className="mt-3 rounded-[var(--ck-radius-sm)] border border-red-400/30 bg-red-500/10 p-3 text-sm text-red-100">
61
- {teamFileError}
62
- </div>
63
- ) : null}
64
-
65
- <textarea
66
- value={fileContent}
67
- onChange={(e) => setFileContent(e.target.value)}
68
- className="mt-3 h-[55vh] w-full resize-none rounded-[var(--ck-radius-sm)] border border-white/10 bg-black/25 p-3 font-mono text-xs text-[color:var(--ck-text-primary)]"
69
- spellCheck={false}
70
- />
71
- </div>
72
- </div>
73
- );
74
- }