@jiggai/kitchen 0.1.5 → 0.1.8
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +2 -2
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/[id]/route.js +1 -1
- package/.next/server/app/api/agents/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/add/route.js +1 -1
- package/.next/server/app/api/agents/add/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/file/route.js +1 -1
- package/.next/server/app/api/agents/file/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/files/route.js +1 -1
- package/.next/server/app/api/agents/files/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/skills/install/route.js +1 -1
- package/.next/server/app/api/agents/skills/install/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/skills/route.js +1 -1
- package/.next/server/app/api/agents/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/update/route.js +1 -1
- package/.next/server/app/api/agents/update/route.js.nft.json +1 -1
- package/.next/server/app/api/channels/bindings/route.js +1 -1
- package/.next/server/app/api/channels/bindings/route.js.nft.json +1 -1
- package/.next/server/app/api/cron/delete/route.js +1 -1
- package/.next/server/app/api/cron/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/cron/job/route.js +1 -1
- package/.next/server/app/api/cron/job/route.js.nft.json +1 -1
- package/.next/server/app/api/cron/jobs/route.js +1 -1
- package/.next/server/app/api/cron/jobs/route.js.nft.json +1 -1
- package/.next/server/app/api/cron/recipe-installed/route.js +1 -1
- package/.next/server/app/api/cron/recipe-installed/route.js.nft.json +1 -1
- package/.next/server/app/api/goals/[id]/promote/route.js +1 -1
- package/.next/server/app/api/goals/[id]/promote/route.js.nft.json +1 -1
- package/.next/server/app/api/goals/[id]/route.js +1 -1
- package/.next/server/app/api/goals/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/goals/route.js +1 -1
- package/.next/server/app/api/goals/route.js.nft.json +1 -1
- package/.next/server/app/api/ids/check/route.js +1 -1
- package/.next/server/app/api/ids/check/route.js.nft.json +1 -1
- package/.next/server/app/api/marketplace/recipes/[slug]/route.js +1 -1
- package/.next/server/app/api/marketplace/recipes/[slug]/route.js.nft.json +1 -1
- package/.next/server/app/api/marketplace/recipes/route.js +1 -1
- package/.next/server/app/api/marketplace/recipes/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/[id]/route.js +1 -1
- package/.next/server/app/api/recipes/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/clone/route.js +1 -1
- package/.next/server/app/api/recipes/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/delete/route.js +1 -1
- package/.next/server/app/api/recipes/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/recipes/team-agents/route.js +1 -1
- package/.next/server/app/api/recipes/team-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/scaffold/route.js +2 -2
- package/.next/server/app/api/scaffold/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/cron-installation/route.js +1 -1
- package/.next/server/app/api/settings/cron-installation/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/available/route.js +1 -1
- package/.next/server/app/api/skills/available/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/file/route.js +1 -1
- package/.next/server/app/api/teams/file/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/files/route.js +1 -1
- package/.next/server/app/api/teams/files/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/meta/route.js +1 -1
- package/.next/server/app/api/teams/meta/route.js.nft.json +1 -1
- package/.next/server/app/api/teams/skills/route.js +1 -1
- package/.next/server/app/api/teams/skills/route.js.nft.json +1 -1
- package/.next/server/app/channels.html +2 -2
- package/.next/server/app/channels.rsc +1 -1
- package/.next/server/app/channels.segments/_full.segment.rsc +1 -1
- package/.next/server/app/channels.segments/_head.segment.rsc +1 -1
- package/.next/server/app/channels.segments/_index.segment.rsc +1 -1
- package/.next/server/app/channels.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/channels.segments/channels/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/channels.segments/channels.segment.rsc +1 -1
- package/.next/server/app/cron-jobs.html +1 -1
- package/.next/server/app/cron-jobs.rsc +1 -1
- package/.next/server/app/cron-jobs.segments/_full.segment.rsc +1 -1
- package/.next/server/app/cron-jobs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/cron-jobs.segments/_index.segment.rsc +1 -1
- package/.next/server/app/cron-jobs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/cron-jobs.segments/cron-jobs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/cron-jobs.segments/cron-jobs.segment.rsc +1 -1
- package/.next/server/app/goals/new.html +2 -2
- package/.next/server/app/goals/new.rsc +1 -1
- package/.next/server/app/goals/new.segments/_full.segment.rsc +1 -1
- package/.next/server/app/goals/new.segments/_head.segment.rsc +1 -1
- package/.next/server/app/goals/new.segments/_index.segment.rsc +1 -1
- package/.next/server/app/goals/new.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/goals/new.segments/goals/new/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/goals/new.segments/goals/new.segment.rsc +1 -1
- package/.next/server/app/goals/new.segments/goals.segment.rsc +1 -1
- package/.next/server/app/goals.html +1 -1
- package/.next/server/app/goals.rsc +1 -1
- package/.next/server/app/goals.segments/_full.segment.rsc +1 -1
- package/.next/server/app/goals.segments/_head.segment.rsc +1 -1
- package/.next/server/app/goals.segments/_index.segment.rsc +1 -1
- package/.next/server/app/goals.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/goals.segments/goals/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/goals.segments/goals.segment.rsc +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +2 -2
- package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/tickets/[ticket]/page.js +1 -1
- package/.next/server/app/tickets/[ticket]/page.js.nft.json +1 -1
- package/.next/server/app/tickets/page.js +1 -1
- package/.next/server/app/tickets/page.js.nft.json +1 -1
- package/.next/server/app/tickets.html +1 -1
- package/.next/server/app/tickets.rsc +2 -2
- package/.next/server/app/tickets.segments/_full.segment.rsc +2 -2
- package/.next/server/app/tickets.segments/_head.segment.rsc +1 -1
- package/.next/server/app/tickets.segments/_index.segment.rsc +1 -1
- package/.next/server/app/tickets.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/tickets.segments/tickets/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/tickets.segments/tickets.segment.rsc +1 -1
- package/.next/server/chunks/{[root-of-the-server]__931fa945._.js → [root-of-the-server]__055885ce._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__86aa3d16._.js → [root-of-the-server]__0c01c5c7._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__71d7f4ae._.js → [root-of-the-server]__1398a33a._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__b51afda1._.js → [root-of-the-server]__159c002b._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__23c7d83c._.js → [root-of-the-server]__20c60fb7._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__2588560d._.js +6 -0
- package/.next/server/chunks/[root-of-the-server]__2588560d._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__27293e91._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__27293e91._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__29c85a51._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__29c85a51._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__26de3d48._.js → [root-of-the-server]__29fa8108._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__2bd44067._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__2bd44067._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__69be1758._.js → [root-of-the-server]__2dd1afff._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__401ab759._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__401ab759._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__0554d494._.js → [root-of-the-server]__422c7160._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__04d535a1._.js → [root-of-the-server]__4670294e._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__4eda99a9._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__4eda99a9._.js.map +1 -1
- package/.next/server/chunks/{[root-of-the-server]__149c6b90._.js → [root-of-the-server]__54478298._.js} +3 -3
- package/.next/server/chunks/[root-of-the-server]__54478298._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__6dbdb384._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__6dbdb384._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__dc6c67a5._.js → [root-of-the-server]__74b80ca4._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__94d68aa3._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__94d68aa3._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__9ecbb339._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__9ecbb339._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__a27f8405._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__a27f8405._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__786b2d5c._.js → [root-of-the-server]__a6ac3ddf._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__b11231a9._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__b11231a9._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__b59b3cdd._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__b59b3cdd._.js.map +1 -1
- package/.next/server/chunks/{[root-of-the-server]__94ebcd84._.js → [root-of-the-server]__b5c2b370._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__36e14ea6._.js → [root-of-the-server]__b955e35a._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__920d7db4._.js → [root-of-the-server]__be5f57b2._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__c4ff0427._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__c4ff0427._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__c4ffbb03._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__c4ffbb03._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__d737ca42._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__d737ca42._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__df7df3ac._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__df7df3ac._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__dfca6557._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__dfca6557._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__e6184ba3._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__e6184ba3._.js.map +1 -1
- package/.next/server/chunks/{[root-of-the-server]__6fb173c8._.js → [root-of-the-server]__ed0323e9._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__f585823b._.js +6 -0
- package/.next/server/chunks/[root-of-the-server]__f585823b._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__ff940674._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__ff940674._.js.map +1 -0
- package/.next/server/chunks/src_lib_d2210cbf._.js +1 -1
- package/.next/server/chunks/src_lib_d2210cbf._.js.map +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__b6de1782._.js → [root-of-the-server]__507d2fc9._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__72721a7e._.js → [root-of-the-server]__f75a61bf._.js} +2 -2
- package/.next/server/chunks/ssr/_1aad1d9b._.js +1 -1
- package/.next/server/chunks/ssr/_1aad1d9b._.js.map +1 -1
- package/.next/server/chunks/ssr/_da6f800e._.js +1 -1
- package/.next/server/chunks/ssr/_da6f800e._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_agents_[agentId]_agent-editor_tsx_f85bbe65._.js +1 -1
- package/.next/server/chunks/ssr/src_app_agents_[agentId]_agent-editor_tsx_f85bbe65._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_settings_settings-client_tsx_279084f8._.js +1 -1
- package/.next/server/chunks/ssr/src_app_settings_settings-client_tsx_279084f8._.js.map +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +2 -2
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/1ce21af6dfb18ee3.js +1 -0
- package/.next/static/chunks/55866d57aa2c7a9c.js +1 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -1
- package/src/app/agents/[agentId]/agent-editor.tsx +66 -23
- package/src/app/api/agents/[id]/route.ts +37 -0
- package/src/app/api/agents/files/route.ts +3 -1
- package/src/app/api/agents/skills/install/route.ts +27 -3
- package/src/app/api/agents/skills/route.ts +28 -12
- package/src/app/api/recipes/clone/route.ts +2 -2
- package/src/app/api/settings/cron-installation/route.ts +34 -20
- package/src/app/api/teams/skills/install/route.ts +3 -1
- package/src/app/settings/settings-client.tsx +4 -2
- package/src/lib/agent-workspace.ts +14 -0
- package/src/lib/openclaw.ts +21 -2
- package/.next/server/chunks/[root-of-the-server]__149c6b90._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__191c2791._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__191c2791._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1ba9b3f1._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1ba9b3f1._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1e295acc._.js +0 -6
- package/.next/server/chunks/[root-of-the-server]__1e295acc._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__226cf7eb._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__226cf7eb._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__2c08c2ff._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__2c08c2ff._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__30d68375._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__30d68375._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__4f241d56._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__4f241d56._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__6fac1c43._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__6fac1c43._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__7b948232._.js +0 -6
- package/.next/server/chunks/[root-of-the-server]__7b948232._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__92a5b56a._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__92a5b56a._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__97a9f492._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__97a9f492._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__a1497707._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__a1497707._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__d907380c._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__d907380c._.js.map +0 -1
- package/.next/static/chunks/1faff0d40127675e.js +0 -1
- package/.next/static/chunks/4fb7740933125c6a.js +0 -1
- /package/.next/server/chunks/{[root-of-the-server]__931fa945._.js.map → [root-of-the-server]__055885ce._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__86aa3d16._.js.map → [root-of-the-server]__0c01c5c7._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__71d7f4ae._.js.map → [root-of-the-server]__1398a33a._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__b51afda1._.js.map → [root-of-the-server]__159c002b._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__23c7d83c._.js.map → [root-of-the-server]__20c60fb7._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__26de3d48._.js.map → [root-of-the-server]__29fa8108._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__69be1758._.js.map → [root-of-the-server]__2dd1afff._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0554d494._.js.map → [root-of-the-server]__422c7160._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__04d535a1._.js.map → [root-of-the-server]__4670294e._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__dc6c67a5._.js.map → [root-of-the-server]__74b80ca4._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__786b2d5c._.js.map → [root-of-the-server]__a6ac3ddf._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__94ebcd84._.js.map → [root-of-the-server]__b5c2b370._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__36e14ea6._.js.map → [root-of-the-server]__b955e35a._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__920d7db4._.js.map → [root-of-the-server]__be5f57b2._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__6fb173c8._.js.map → [root-of-the-server]__ed0323e9._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{[root-of-the-server]__b6de1782._.js.map → [root-of-the-server]__507d2fc9._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{[root-of-the-server]__72721a7e._.js.map → [root-of-the-server]__f75a61bf._.js.map} +0 -0
- /package/.next/static/{-CtCgA0I7AqrxE21uMGGj → 2hgbnJUmLMe9COlc5rJd3}/_buildManifest.js +0 -0
- /package/.next/static/{-CtCgA0I7AqrxE21uMGGj → 2hgbnJUmLMe9COlc5rJd3}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{-CtCgA0I7AqrxE21uMGGj → 2hgbnJUmLMe9COlc5rJd3}/_ssgManifest.js +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
2:I[57915,["/_next/static/chunks/40f7fde35327d214.js","/_next/static/chunks/de9e30e86ef31e72.js"],"TicketsBoardClient"]
|
|
3
3
|
5:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"OutletBoundary"]
|
|
4
4
|
6:"$Sreact.suspense"
|
|
5
|
-
0:{"buildId":"-CtCgA0I7AqrxE21uMGGj","rsc":["$","$1","c",{"children":[["$","$L2",null,{"tickets":[{"number":0,"id":"0000-example-ticket.testing-verified","title":"verification — 0000-example-ticket","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0000-example-ticket.testing-verified.md","updatedAt":"2026-02-11T14:04:42.617Z","ageHours":232.93507963161892},{"number":1,"id":"0001-claw-kitchen-ui-update-design-to-match-mission-control-style","title":"Claw Kitchen UI Update Design To Match Mission Control Style","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0001-claw-kitchen-ui-update-design-to-match-mission-control-style.md","updatedAt":"2026-02-12T22:03:10.186Z","ageHours":200.96075523125543},{"number":1,"id":"0001-completion-report","title":"0001 — Completion Report","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0001-completion-report.md","updatedAt":"2026-02-10T17:32:43.000Z","ageHours":253.46830694444444},{"number":2,"id":"0002-p1-push-clawcipes-repo-tags-to-github-and-publish-latest-ver","title":"P1 Push Clawcipes Repo Tags To Github And Publish Latest Ver","owner":"devops","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0002-p1-push-clawcipes-repo-tags-to-github-and-publish-latest-ver.md","updatedAt":"2026-02-10T17:37:50.000Z","ageHours":253.38302916666666},{"number":3,"id":"0003-completion-report","title":"— completion report (docs consistency)","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0003-completion-report.md","updatedAt":"2026-02-11T12:09:35.808Z","ageHours":234.85363791707357},{"number":3,"id":"0003-p1-docs-consistency-pass-ensure-docs-reflect-testing-stage-d","title":"P1 Docs Consistency Pass Ensure Docs Reflect Testing Stage D","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0003-p1-docs-consistency-pass-ensure-docs-reflect-testing-stage-d.md","updatedAt":"2026-02-11T12:09:21.480Z","ageHours":234.85761844828286},{"number":4,"id":"0004-completion-report","title":"0004 — Completion Report","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0004-completion-report.md","updatedAt":"2026-02-11T00:41:13.000Z","ageHours":246.32664055555554},{"number":4,"id":"0004-p1-scaffold-sanity-verify-generated-team-md-and-tickets-md-m","title":"P1 Scaffold Sanity Verify Generated Team MD And Tickets MD M","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0004-p1-scaffold-sanity-verify-generated-team-md-and-tickets-md-m.md","updatedAt":"2026-02-11T01:07:17.000Z","ageHours":245.8921961111111},{"number":5,"id":"0005-p2-add-handoff-command-move-ticket-to-testing-assign-to-test","title":"P2 Add Handoff Command Move Ticket To Testing Assign To Test","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0005-p2-add-handoff-command-move-ticket-to-testing-assign-to-test.md","updatedAt":"2026-02-11T12:37:19.211Z","ageHours":234.3915820606825},{"number":6,"id":"0006-p2-add-automated-tests-for-recipes-plugin-core-behaviors-age","title":"P2 Add Automated Tests For Recipes Plugin Core Behaviors Age","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0006-p2-add-automated-tests-for-recipes-plugin-core-behaviors-age.md","updatedAt":"2026-02-11T13:09:39.453Z","ageHours":233.85262580417208},{"number":7,"id":"0007-p2-hardening-better-errors-ensure-work-testing-is-created-mi","title":"P2 Hardening Better Errors Ensure Work Testing Is Created Mi","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0007-p2-hardening-better-errors-ensure-work-testing-is-created-mi.md","updatedAt":"2026-02-11T13:41:04.958Z","ageHours":233.3288745553928},{"number":8,"id":"0008-completion-report","title":"— completion report (QA checklist + verification workflow)","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0008-completion-report.md","updatedAt":"2026-02-11T14:04:00.364Z","ageHours":232.94681733629014},{"number":8,"id":"0008-p1-qa-checklist-template-for-tester-define-verification-step","title":"P1 Qa Checklist Template For Tester Define Verification Step","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0008-p1-qa-checklist-template-for-tester-define-verification-step.md","updatedAt":"2026-02-11T14:03:46.156Z","ageHours":232.9507639783393},{"number":9,"id":"0009-completion-report","title":"0009 — Completion Report (Option A: recipe-defined cron jobs)","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0009-completion-report.md","updatedAt":"2026-02-10T20:26:16.000Z","ageHours":250.5758072222222},{"number":9,"id":"0009-implement-recipe-defined-cron-jobs-option-a-requirements-rec","title":"Implement Recipe Defined Cron Jobs Option A Requirements Rec","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0009-implement-recipe-defined-cron-jobs-option-a-requirements-rec.md","updatedAt":"2026-02-10T19:48:28.000Z","ageHours":251.2058075},{"number":9,"id":"0009-pr-body","title":"(untitled)","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0009-pr-body.md","updatedAt":"2026-02-10T19:10:48.000Z","ageHours":251.8335852777778},{"number":10,"id":"0010-implement-shared-context-best-practices-across-team-agents-w","title":"Implement Shared Context Best Practices Across Team Agents W","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0010-implement-shared-context-best-practices-across-team-agents-w.md","updatedAt":"2026-02-11T00:35:17.000Z","ageHours":246.42553},{"number":10,"id":"0010-pr-body","title":"(untitled)","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0010-pr-body.md","updatedAt":"2026-02-11T01:31:44.000Z","ageHours":245.48469666666668},{"number":10,"id":"0010-testing-verified","title":"Implement Shared Context Best Practices Across Team Agents W","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0010-testing-verified.md","updatedAt":"2026-02-11T01:07:17.000Z","ageHours":245.89219666666668},{"number":11,"id":"0011-add-cron-jobs-management-to-kitchen-ui-context-we-re-adding-","title":"Add Cron Jobs Management To Kitchen UI Context We Re Adding","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0011-add-cron-jobs-management-to-kitchen-ui-context-we-re-adding-.md","updatedAt":"2026-02-11T02:41:27.000Z","ageHours":244.32275222222222},{"number":11,"id":"0011-completion-report","title":"#0011 — Completion Report","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0011-completion-report.md","updatedAt":"2026-02-11T02:41:34.000Z","ageHours":244.3208077777778},{"number":11,"id":"0011-pr-body","title":"(untitled)","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0011-pr-body.md","updatedAt":"2026-02-11T02:38:19.000Z","ageHours":244.37497444444443},{"number":12,"id":"0012-add-lightweight-automated-scaffold-output-regression-test-fo","title":"Add Lightweight Automated Scaffold Output Regression Test Fo","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0012-add-lightweight-automated-scaffold-output-regression-test-fo.md","updatedAt":"2026-02-11T12:06:05.022Z","ageHours":234.9121906134033},{"number":12,"id":"0012-pr-body","title":"(untitled)","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0012-pr-body.md","updatedAt":"2026-02-11T12:05:26.648Z","ageHours":234.92284999206544},{"number":13,"id":"0013-add-proper-test-harness-vitest-jest-for-clawcipes-recipes-co","title":"Add Proper Test Harness Vitest Jest For Clawcipes Recipes Co","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0013-add-proper-test-harness-vitest-jest-for-clawcipes-recipes-co.md","updatedAt":"2026-02-11T14:37:41.152Z","ageHours":232.3854877226427},{"number":14,"id":"0014-completion-report","title":"0014 — Completion Report (P0)","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0014-completion-report.md","updatedAt":"2026-02-11T04:05:04.000Z","ageHours":242.9291411111111},{"number":14,"id":"0014-fix-kitchen-settings-and-plugin-schema","title":"— Fix Kitchen Settings Page + Plugin Schema","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0014-fix-kitchen-settings-and-plugin-schema.md","updatedAt":"2026-02-11T04:05:14.000Z","ageHours":242.92636333333334},{"number":15,"id":"0015-add-automatic-cleanup-for-scaffold-test-workspaces-we-accumu","title":"Add Automatic Cleanup For Scaffold Test Workspaces We Accumu","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0015-add-automatic-cleanup-for-scaffold-test-workspaces-we-accumu.md","updatedAt":"2026-02-11T17:44:51.366Z","ageHours":229.26598375820583},{"number":16,"id":"0016-add-tasks-to-update-the-other-builtin-team-recipes-product-t","title":"Add Tasks To Update The Other Builtin Team Recipes Product T","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0016-add-tasks-to-update-the-other-builtin-team-recipes-product-t.md","updatedAt":"2026-02-11T18:31:30.386Z","ageHours":228.48847822882757},{"number":16,"id":"0016-completion-report","title":"— completion report (breakdown + inventory)","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0016-completion-report.md","updatedAt":"2026-02-11T18:06:05.741Z","ageHours":228.91199111280653},{"number":17,"id":"0017-p2-parity-baseline-add-cronjobs-frontmatter-to-built-in-team-recipes","title":"P2 Parity Baseline Add Cronjobs Frontmatter To Built In Team Recipes","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0017-p2-parity-baseline-add-cronjobs-frontmatter-to-built-in-team-recipes.md","updatedAt":"2026-02-11T22:07:53.117Z","ageHours":224.88216433295355},{"number":18,"id":"0018-p2-update-product-team-recipe-parity-status-cron-role-templates","title":"P2 Update Product Team Recipe Parity Status Cron Role Templates","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0018-p2-update-product-team-recipe-parity-status-cron-role-templates.md","updatedAt":"2026-02-11T22:31:50.629Z","ageHours":224.48285542005752},{"number":19,"id":"0019-p2-update-research-team-recipe-parity-status-cron-role-templates","title":"P2 Update Research Team Recipe Parity Status Cron Role Templates","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0019-p2-update-research-team-recipe-parity-status-cron-role-templates.md","updatedAt":"2026-02-11T22:32:53.164Z","ageHours":224.46548469204373},{"number":20,"id":"0020-p2-update-writing-team-recipe-parity-status-cron-role-templates","title":"P2 Update Writing Team Recipe Parity Status Cron Role Templates","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0020-p2-update-writing-team-recipe-parity-status-cron-role-templates.md","updatedAt":"2026-02-11T23:02:15.923Z","ageHours":223.97582941453723},{"number":21,"id":"0021-p2-update-social-team-recipe-parity-status-cron-role-templates","title":"P2 Update Social Team Recipe Parity Status Cron Role Templates","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0021-p2-update-social-team-recipe-parity-status-cron-role-templates.md","updatedAt":"2026-02-11T23:32:35.506Z","ageHours":223.470389728597},{"number":22,"id":"0022-p2-update-customer-support-team-recipe-parity-status-cron-role-templates","title":"P2 Update Customer Support Team Recipe Parity Status Cron Role Templates","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0022-p2-update-customer-support-team-recipe-parity-status-cron-role-templates.md","updatedAt":"2026-02-12T00:05:15.352Z","ageHours":222.92598803853352},{"number":23,"id":"0023-move-g-009-into-backlog-build-clawcipes-public-website-marke","title":"Move G 009 Into Backlog Build Clawcipes Public Website Marke","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0023-move-g-009-into-backlog-build-clawcipes-public-website-marke.md","updatedAt":"2026-02-13T03:37:22.043Z","ageHours":195.390796232232},{"number":24,"id":"0024-clawkitchen-ui-update-layout-to-resemble-mission-control-top","title":"Clawkitchen UI Update Layout To Resemble Mission Control Top","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0024-clawkitchen-ui-update-layout-to-resemble-mission-control-top.md","updatedAt":"2026-02-12T22:37:39.721Z","ageHours":200.38588557325576},{"number":26,"id":"0026-add-openclaw-recipes-remove-team-uninstall-cleanup","title":"Add Openclaw Recipes Remove Team Uninstall Cleanup","owner":"devops","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0026-add-openclaw-recipes-remove-team-uninstall-cleanup.md","updatedAt":"2026-02-13T03:41:13.146Z","ageHours":195.32660078816733},{"number":27,"id":"0027-build-clawcipes-marketplace-backend-registry-search-install","title":"Build Clawcipes Marketplace Backend Registry Search Install","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0027-build-clawcipes-marketplace-backend-registry-search-install.md","updatedAt":"2026-02-13T01:04:35.458Z","ageHours":197.93706980529785},{"number":28,"id":"0028-kitchen-board-move-test","title":"Kitchen Board Move Test","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0028-kitchen-board-move-test.md","updatedAt":"2026-02-13T01:34:04.270Z","ageHours":197.44573298692492},{"number":29,"id":"0029-update-documentation-ui-copy-to-replace-clawcipes-branding-w","title":"Update Documentation UI Copy To Replace Clawcipes Branding W","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0029-update-documentation-ui-copy-to-replace-clawcipes-branding-w.md","updatedAt":"2026-02-13T04:34:21.431Z","ageHours":194.44096634446885},{"number":30,"id":"0030-clawkitchen-v2-requirements-1-home-page-remove-middle-pill-m","title":"Clawkitchen V2 Requirements 1 Home Page Remove Middle Pill M","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0030-clawkitchen-v2-requirements-1-home-page-remove-middle-pill-m.md","updatedAt":"2026-02-14T04:38:30.630Z","ageHours":170.37174457933213},{"number":31,"id":"0031-release-push-ship-remove-team-clawrecipes-rebrand-steps-merg","title":"Release Push Ship Remove Team Clawrecipes Rebrand Steps Merg","owner":"devops","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0031-release-push-ship-remove-team-clawrecipes-rebrand-steps-merg.md","updatedAt":"2026-02-13T12:39:32.240Z","ageHours":186.35463057617187},{"number":32,"id":"0032-fix-recipes-clawrecipes-plugin-to-avoid-openclaw-dangerous-c","title":"Fix Recipes Clawrecipes Plugin To Avoid Openclaw Dangerous C","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0032-fix-recipes-clawrecipes-plugin-to-avoid-openclaw-dangerous-c.md","updatedAt":"2026-02-13T19:34:27.517Z","ageHours":179.43927594563803},{"number":33,"id":"0033-publish-no-warning-package-name-jiggai-recipes-for-clawrecip","title":"Publish No Warning Package Name Jiggai Recipes For Clawrecip","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0033-publish-no-warning-package-name-jiggai-recipes-for-clawrecip.md","updatedAt":"2026-02-14T04:43:41.501Z","ageHours":170.28539146803115},{"number":34,"id":"0034-fix-openclaw-install-warning-plugin-recipes-has-suspicious-c","title":"Fix Openclaw Install Warning Plugin Recipes Has Suspicious C","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0034-fix-openclaw-install-warning-plugin-recipes-has-suspicious-c.md","updatedAt":"2026-02-14T04:49:43.975Z","ageHours":170.18470427286783},{"number":35,"id":"0035-finish-g-008-clawrecipes-close-remaining-gaps-ensure-missing","title":"Finish G 008 Clawrecipes Close Remaining Gaps Ensure Missing","owner":"devops","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0035-finish-g-008-clawrecipes-close-remaining-gaps-ensure-missing.md","updatedAt":"2026-02-14T04:05:56.098Z","ageHours":170.91467006829157},{"number":36,"id":"0036-clawkitchen-team-editor-save-semantics-bugs-clarify-and-fix-","title":"Clawkitchen Team Editor Save Semantics Bugs Clarify And Fix","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0036-clawkitchen-team-editor-save-semantics-bugs-clarify-and-fix-.md","updatedAt":"2026-02-14T12:08:12.549Z","ageHours":162.87676688897028},{"number":37,"id":"0037-clawkitchen-lock-builtin-source-team-recipes-in-team-editor-","title":"Clawkitchen Lock Builtin Source Team Recipes In Team Editor","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0037-clawkitchen-lock-builtin-source-team-recipes-in-team-editor-.md","updatedAt":"2026-02-14T14:33:51.475Z","ageHours":160.44928756612143},{"number":38,"id":"0038-clawkitchen-files-tab-too-many-missing-files-shown-for-some-","title":"Clawkitchen Files Tab Too Many Missing Files Shown For Some","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0038-clawkitchen-files-tab-too-many-missing-files-shown-for-some-.md","updatedAt":"2026-02-14T13:03:58.817Z","ageHours":161.9472480866835},{"number":39,"id":"0039-completion-report","title":"Completion Report","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0039-completion-report.md","updatedAt":"2026-02-14T12:35:11.929Z","ageHours":162.42693913248698},{"number":40,"id":"0040-clawkitchen-ui-polish-show-team-agent-display-names-identity","title":"Clawkitchen UI Polish Show Team Agent Display Names Identity","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0040-clawkitchen-ui-polish-show-team-agent-display-names-identity.md","updatedAt":"2026-02-14T15:02:41.805Z","ageHours":159.96864046875},{"number":41,"id":"0041-clawkitchen-ui-align-team-recipe-agent-editing-home-page-beh","title":"Clawkitchen UI Align Team Recipe Agent Editing Home Page Beh","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0041-clawkitchen-ui-align-team-recipe-agent-editing-home-page-beh.md","updatedAt":"2026-02-14T18:03:27.193Z","ageHours":156.95603288791233},{"number":42,"id":"0042-clawkitchen-persist-team-provenance-parent-recipe-and-lock-i","title":"Clawkitchen Persist Team Provenance Parent Recipe And Lock I","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0042-clawkitchen-persist-team-provenance-parent-recipe-and-lock-i.md","updatedAt":"2026-02-14T20:35:41.025Z","ageHours":154.41885725735133},{"number":43,"id":"0043-root-cause-fix-scaffold-team-must-persist-team-provenance-pa","title":"Root Cause Fix Scaffold Team Must Persist Team Provenance Pa","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0043-root-cause-fix-scaffold-team-must-persist-team-provenance-pa.md","updatedAt":"2026-02-14T20:03:08.642Z","ageHours":154.96118574028864},{"number":44,"id":"0044-implement-new-scaffold-team-behavior-create-workspace-recipe","title":"Implement New Scaffold Team Behavior Create Workspace Recipe","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0044-implement-new-scaffold-team-behavior-create-workspace-recipe.md","updatedAt":"2026-02-15T02:05:28.542Z","ageHours":148.92232463894314},{"number":45,"id":"0045-clawmarket-get-started-page-add-real-screenshots-of-user-pro","title":"Clawmarket Get Started Page Add Real Screenshots Of User Pro","owner":"devops","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0045-clawmarket-get-started-page-add-real-screenshots-of-user-pro.md","updatedAt":"2026-02-15T20:33:07.943Z","ageHours":130.46138013678657},{"number":46,"id":"0046-extend-recipes-scaffold-single-agent-to-also-create-a-worksp","title":"Extend Recipes Scaffold Single Agent To Also Create A Worksp","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0046-extend-recipes-scaffold-single-agent-to-also-create-a-worksp.md","updatedAt":"2026-02-15T20:04:33.329Z","ageHours":130.93766179117839},{"number":47,"id":"0047-overnight-propose-15-20-specialty-agents-business-focused-us","title":"Overnight Propose 15 20 Specialty Agents Business Focused Us","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0047-overnight-propose-15-20-specialty-agents-business-focused-us.md","updatedAt":"2026-02-15T21:11:10.265Z","ageHours":129.82740179897732},{"number":48,"id":"0048-expand-specialty-agent-catalog-beyond-generic-business-creat","title":"Expand Specialty Agent Catalog Beyond Generic Business Creat","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0048-expand-specialty-agent-catalog-beyond-generic-business-creat.md","updatedAt":"2026-02-15T22:34:15.032Z","ageHours":128.44274428894042},{"number":49,"id":"0049-marketplace-add-login-auth-to-clawkitchen-ai-marketplace-cla","title":"Marketplace Add Login Auth To Clawkitchen Ai Marketplace Cla","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0049-marketplace-add-login-auth-to-clawkitchen-ai-marketplace-cla.md","updatedAt":"2026-02-17T22:21:54.459Z","ageHours":80.64845886854384},{"number":50,"id":"0050-marketplace-add-recipe-submissions-ugc-flow-to-clawkitchen-a","title":"Marketplace Add Recipe Submissions Ugc Flow To Clawkitchen A","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0050-marketplace-add-recipe-submissions-ugc-flow-to-clawkitchen-a.md","updatedAt":"2026-02-19T03:06:49.980Z","ageHours":51.89970302747938},{"number":51,"id":"0051-clawkitchen-add-goals-feature-scope-ui-page-route-for-goals-","title":"Clawkitchen Add Goals Feature Scope UI Page Route For Goals","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0051-clawkitchen-add-goals-feature-scope-ui-page-route-for-goals-.md","updatedAt":"2026-02-17T02:09:16.383Z","ageHours":100.85903583129883},{"number":52,"id":"0052-create-a-new-bundled-team-recipe-marketing-team-add-5-roles-","title":"Create A New Bundled Team Recipe Marketing Team Add 5 Roles","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0052-create-a-new-bundled-team-recipe-marketing-team-add-5-roles-.md","updatedAt":"2026-02-16T23:30:56.819Z","ageHours":103.49780369384766},{"number":53,"id":"0053-expand-social-marketing-team-recipe-add-roles-for-1-social-m","title":"Expand Social Marketing Team Recipe Add Roles For 1 Social M","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0053-expand-social-marketing-team-recipe-add-roles-for-1-social-m.md","updatedAt":"2026-02-16T23:36:50.412Z","ageHours":103.39958325236003},{"number":54,"id":"0054-implement-team-recipe-template-standardization-across-bundle","title":"Implement Team Recipe Template Standardization Across Bundle","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0054-implement-team-recipe-template-standardization-across-bundle.md","updatedAt":"2026-02-16T23:36:50.418Z","ageHours":103.39958158569335},{"number":55,"id":"0055-ship-reliable-lead-wake-up-after-dispatch-enable-triage-auto","title":"Ship Reliable Lead Wake Up After Dispatch Enable Triage Auto","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0055-ship-reliable-lead-wake-up-after-dispatch-enable-triage-auto.md","updatedAt":"2026-02-17T02:09:18.105Z","ageHours":100.85855750183106},{"number":56,"id":"0056-publish-or-sync-the-jiggai-recipes-extension-so-openclaw-rec","title":"Publish Or Sync The Jiggai Recipes Extension So Openclaw Rec","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0056-publish-or-sync-the-jiggai-recipes-extension-so-openclaw-rec.md","updatedAt":"2026-02-16T23:36:50.423Z","ageHours":103.39958019680446},{"number":57,"id":"0057-publish-jiggai-recipes-bump-version-and-revert-local-link","title":"Publish Jiggai Recipes Bump Version And Revert Local Link","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0057-publish-jiggai-recipes-bump-version-and-revert-local-link.md","updatedAt":"2026-02-17T10:05:22.639Z","ageHours":92.92396474873861},{"number":58,"id":"0058-clawkitchen-add-channels-section-for-channel-bindings-crud","title":"Clawkitchen Add Channels Section For Channel Bindings Crud","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0058-clawkitchen-add-channels-section-for-channel-bindings-crud.md","updatedAt":"2026-02-17T06:07:01.696Z","ageHours":96.89644896809895},{"number":63,"id":"0063-clawkitchen-clone-should-scaffold-or-copy-workspace-files","title":"Clawkitchen Clone Should Scaffold Or Copy Workspace Files","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0063-clawkitchen-clone-should-scaffold-or-copy-workspace-files.md","updatedAt":"2026-02-20T00:32:58.746Z","ageHours":30.463935026787652},{"number":64,"id":"0064-clawmarket-recipe-detail-page-defaults-ugc","title":"Clawmarket Recipe Detail Page Defaults Ugc","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0064-clawmarket-recipe-detail-page-defaults-ugc.md","updatedAt":"2026-02-19T23:27:43.645Z","ageHours":31.551463109944663},{"number":65,"id":"0065-working-ticket-deep-review-clawrecipes-pr-35-after-fixes-rol","title":"Working Ticket Deep Review Clawrecipes PR 35 After Fixes Rol","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0065-working-ticket-deep-review-clawrecipes-pr-35-after-fixes-rol.md","updatedAt":"2026-02-18T00:06:07.038Z","ageHours":78.91163165344238},{"number":66,"id":"0066-clawmarket-replace-login-logout-button-with-profile-photo-dr","title":"Clawmarket Replace Login Logout Button With Profile Photo Dr","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0066-clawmarket-replace-login-logout-button-with-profile-photo-dr.md","updatedAt":"2026-02-19T23:40:53.761Z","ageHours":31.331986305338543},{"number":67,"id":"0067-rj-update-2026-02-18-1-mailgun-url-env-added-2-captcha-site-","title":"Rj Update 2026 02 18 1 Mailgun Url Env Added 2 Captcha Site","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0067-rj-update-2026-02-18-1-mailgun-url-env-added-2-captcha-site-.md","updatedAt":"2026-02-18T21:58:03.930Z","ageHours":57.045828566419814},{"number":68,"id":"0068-epic-update-builtin-development-team-team-recipe-to-match-cu","title":"Epic Update Builtin Development Team Team Recipe To Match Cu","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0068-epic-update-builtin-development-team-team-recipe-to-match-cu.md","updatedAt":"2026-02-19T23:39:43.547Z","ageHours":31.35149064127604},{"number":69,"id":"0069-split-from-0068-sync-builtin-development-team-role-templates","title":"Split From 0068 Sync Builtin Development Team Role Templates","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0069-split-from-0068-sync-builtin-development-team-role-templates.md","updatedAt":"2026-02-19T00:02:43.833Z","ageHours":54.96807767354329},{"number":70,"id":"0070-split-from-0068-cron-job-pack-inventory-product-decision-for","title":"Split From 0068 Cron Job Pack Inventory Product Decision For","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0070-split-from-0068-cron-job-pack-inventory-product-decision-for.md","updatedAt":"2026-02-18T22:32:14.886Z","ageHours":56.47611864596897},{"number":71,"id":"0071-split-from-0068-implement-cron-job-installation-for-builtin-","title":"Split From 0068 Implement Cron Job Installation For Builtin","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0071-split-from-0068-implement-cron-job-installation-for-builtin-.md","updatedAt":"2026-02-19T02:33:33.833Z","ageHours":52.45418888834635},{"number":72,"id":"0072-publish-a-new-jiggai-recipes-extension-release-that-includes","title":"Publish A New Jiggai Recipes Extension Release That Includes","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0072-publish-a-new-jiggai-recipes-extension-release-that-includes.md","updatedAt":"2026-02-19T23:39:29.457Z","ageHours":31.355404508327908},{"number":73,"id":"0073-clawmarket-recipe-detail-source-panel-white-bg-and-button-sizing","title":"Clawmarket Recipe Detail Source Panel White Bg And Button Sizing","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0073-clawmarket-recipe-detail-source-panel-white-bg-and-button-sizing.md","updatedAt":"2026-02-20T03:05:09.250Z","ageHours":27.927684086710613},{"number":74,"id":"0074-clawmarket-admin-users-section-list-users","title":"Clawmarket Admin Users Section List Users","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0074-clawmarket-admin-users-section-list-users.md","updatedAt":"2026-02-20T03:05:10.951Z","ageHours":27.9272115894911},{"number":75,"id":"0075-clawkitchen-ux-overhaul-for-recipe-team-agent-flows-release-","title":"Clawkitchen UX Overhaul For Recipe Team Agent Flows Release","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0075-clawkitchen-ux-overhaul-for-recipe-team-agent-flows-release-.md","updatedAt":"2026-02-20T21:33:24.777Z","ageHours":9.45670448465983},{"number":76,"id":"0076-fix-recipes-tickets-cli-config-workspace-default","title":"Fix Recipes Tickets CLI Config Workspace Default","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0076-fix-recipes-tickets-cli-config-workspace-default.md","updatedAt":"2026-02-20T22:38:13.327Z","ageHours":8.376551719970703}]}],["$L3"],"$L4"]}],"loading":null,"isPartial":false}
|
|
5
|
+
0:{"buildId":"2hgbnJUmLMe9COlc5rJd3","rsc":["$","$1","c",{"children":[["$","$L2",null,{"tickets":[{"number":0,"id":"0000-example-ticket.testing-verified","title":"verification — 0000-example-ticket","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0000-example-ticket.testing-verified.md","updatedAt":"2026-02-11T14:04:42.617Z","ageHours":294.53064213161895},{"number":1,"id":"0001-claw-kitchen-ui-update-design-to-match-mission-control-style","title":"Claw Kitchen UI Update Design To Match Mission Control Style","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0001-claw-kitchen-ui-update-design-to-match-mission-control-style.md","updatedAt":"2026-02-12T22:03:10.186Z","ageHours":262.5563174534777},{"number":1,"id":"0001-completion-report","title":"0001 — Completion Report","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0001-completion-report.md","updatedAt":"2026-02-10T17:32:43.000Z","ageHours":315.0638691666667},{"number":2,"id":"0002-p1-push-clawcipes-repo-tags-to-github-and-publish-latest-ver","title":"P1 Push Clawcipes Repo Tags To Github And Publish Latest Ver","owner":"devops","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0002-p1-push-clawcipes-repo-tags-to-github-and-publish-latest-ver.md","updatedAt":"2026-02-10T17:37:50.000Z","ageHours":314.9785913888889},{"number":3,"id":"0003-completion-report","title":"— completion report (docs consistency)","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0003-completion-report.md","updatedAt":"2026-02-11T12:09:35.808Z","ageHours":296.4492001392958},{"number":3,"id":"0003-p1-docs-consistency-pass-ensure-docs-reflect-testing-stage-d","title":"P1 Docs Consistency Pass Ensure Docs Reflect Testing Stage D","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0003-p1-docs-consistency-pass-ensure-docs-reflect-testing-stage-d.md","updatedAt":"2026-02-11T12:09:21.480Z","ageHours":296.45318039272735},{"number":4,"id":"0004-completion-report","title":"0004 — Completion Report","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0004-completion-report.md","updatedAt":"2026-02-11T00:41:13.000Z","ageHours":307.9222025},{"number":4,"id":"0004-p1-scaffold-sanity-verify-generated-team-md-and-tickets-md-m","title":"P1 Scaffold Sanity Verify Generated Team MD And Tickets MD M","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0004-p1-scaffold-sanity-verify-generated-team-md-and-tickets-md-m.md","updatedAt":"2026-02-11T01:07:17.000Z","ageHours":307.48775805555556},{"number":5,"id":"0005-p2-add-handoff-command-move-ticket-to-testing-assign-to-test","title":"P2 Add Handoff Command Move Ticket To Testing Assign To Test","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0005-p2-add-handoff-command-move-ticket-to-testing-assign-to-test.md","updatedAt":"2026-02-11T12:37:19.211Z","ageHours":295.98714428290475},{"number":6,"id":"0006-p2-add-automated-tests-for-recipes-plugin-core-behaviors-age","title":"P2 Add Automated Tests For Recipes Plugin Core Behaviors Age","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0006-p2-add-automated-tests-for-recipes-plugin-core-behaviors-age.md","updatedAt":"2026-02-11T13:09:39.453Z","ageHours":295.4481880263943},{"number":7,"id":"0007-p2-hardening-better-errors-ensure-work-testing-is-created-mi","title":"P2 Hardening Better Errors Ensure Work Testing Is Created Mi","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0007-p2-hardening-better-errors-ensure-work-testing-is-created-mi.md","updatedAt":"2026-02-11T13:41:04.958Z","ageHours":294.924436777615},{"number":8,"id":"0008-completion-report","title":"— completion report (QA checklist + verification workflow)","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0008-completion-report.md","updatedAt":"2026-02-11T14:04:00.364Z","ageHours":294.5423795585124},{"number":8,"id":"0008-p1-qa-checklist-template-for-tester-define-verification-step","title":"P1 Qa Checklist Template For Tester Define Verification Step","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0008-p1-qa-checklist-template-for-tester-define-verification-step.md","updatedAt":"2026-02-11T14:03:46.156Z","ageHours":294.5463262005615},{"number":9,"id":"0009-completion-report","title":"0009 — Completion Report (Option A: recipe-defined cron jobs)","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0009-completion-report.md","updatedAt":"2026-02-10T20:26:16.000Z","ageHours":312.17136944444445},{"number":9,"id":"0009-implement-recipe-defined-cron-jobs-option-a-requirements-rec","title":"Implement Recipe Defined Cron Jobs Option A Requirements Rec","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0009-implement-recipe-defined-cron-jobs-option-a-requirements-rec.md","updatedAt":"2026-02-10T19:48:28.000Z","ageHours":312.80136944444445},{"number":9,"id":"0009-pr-body","title":"(untitled)","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0009-pr-body.md","updatedAt":"2026-02-10T19:10:48.000Z","ageHours":313.42914722222224},{"number":10,"id":"0010-implement-shared-context-best-practices-across-team-agents-w","title":"Implement Shared Context Best Practices Across Team Agents W","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0010-implement-shared-context-best-practices-across-team-agents-w.md","updatedAt":"2026-02-11T00:35:17.000Z","ageHours":308.0210916666667},{"number":10,"id":"0010-pr-body","title":"(untitled)","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0010-pr-body.md","updatedAt":"2026-02-11T01:31:44.000Z","ageHours":307.08025833333335},{"number":10,"id":"0010-testing-verified","title":"Implement Shared Context Best Practices Across Team Agents W","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0010-testing-verified.md","updatedAt":"2026-02-11T01:07:17.000Z","ageHours":307.48775861111113},{"number":11,"id":"0011-add-cron-jobs-management-to-kitchen-ui-context-we-re-adding-","title":"Add Cron Jobs Management To Kitchen UI Context We Re Adding","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0011-add-cron-jobs-management-to-kitchen-ui-context-we-re-adding-.md","updatedAt":"2026-02-11T02:41:27.000Z","ageHours":305.9183141666667},{"number":11,"id":"0011-completion-report","title":"#0011 — Completion Report","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0011-completion-report.md","updatedAt":"2026-02-11T02:41:34.000Z","ageHours":305.9163697222222},{"number":11,"id":"0011-pr-body","title":"(untitled)","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0011-pr-body.md","updatedAt":"2026-02-11T02:38:19.000Z","ageHours":305.9705363888889},{"number":12,"id":"0012-add-lightweight-automated-scaffold-output-regression-test-fo","title":"Add Lightweight Automated Scaffold Output Regression Test Fo","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0012-add-lightweight-automated-scaffold-output-regression-test-fo.md","updatedAt":"2026-02-11T12:06:05.022Z","ageHours":296.50775255784777},{"number":12,"id":"0012-pr-body","title":"(untitled)","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0012-pr-body.md","updatedAt":"2026-02-11T12:05:26.648Z","ageHours":296.5184119365099},{"number":13,"id":"0013-add-proper-test-harness-vitest-jest-for-clawcipes-recipes-co","title":"Add Proper Test Harness Vitest Jest For Clawcipes Recipes Co","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0013-add-proper-test-harness-vitest-jest-for-clawcipes-recipes-co.md","updatedAt":"2026-02-11T14:37:41.152Z","ageHours":293.9810496670871},{"number":14,"id":"0014-completion-report","title":"0014 — Completion Report (P0)","owner":null,"stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0014-completion-report.md","updatedAt":"2026-02-11T04:05:04.000Z","ageHours":304.52470305555556},{"number":14,"id":"0014-fix-kitchen-settings-and-plugin-schema","title":"— Fix Kitchen Settings Page + Plugin Schema","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0014-fix-kitchen-settings-and-plugin-schema.md","updatedAt":"2026-02-11T04:05:14.000Z","ageHours":304.52192527777777},{"number":15,"id":"0015-add-automatic-cleanup-for-scaffold-test-workspaces-we-accumu","title":"Add Automatic Cleanup For Scaffold Test Workspaces We Accumu","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0015-add-automatic-cleanup-for-scaffold-test-workspaces-we-accumu.md","updatedAt":"2026-02-11T17:44:51.366Z","ageHours":290.8615457026503},{"number":16,"id":"0016-add-tasks-to-update-the-other-builtin-team-recipes-product-t","title":"Add Tasks To Update The Other Builtin Team Recipes Product T","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0016-add-tasks-to-update-the-other-builtin-team-recipes-product-t.md","updatedAt":"2026-02-11T18:31:30.386Z","ageHours":290.084040173272},{"number":16,"id":"0016-completion-report","title":"— completion report (breakdown + inventory)","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0016-completion-report.md","updatedAt":"2026-02-11T18:06:05.741Z","ageHours":290.50755305725096},{"number":17,"id":"0017-p2-parity-baseline-add-cronjobs-frontmatter-to-built-in-team-recipes","title":"P2 Parity Baseline Add Cronjobs Frontmatter To Built In Team Recipes","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0017-p2-parity-baseline-add-cronjobs-frontmatter-to-built-in-team-recipes.md","updatedAt":"2026-02-11T22:07:53.117Z","ageHours":286.477726277398},{"number":18,"id":"0018-p2-update-product-team-recipe-parity-status-cron-role-templates","title":"P2 Update Product Team Recipe Parity Status Cron Role Templates","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0018-p2-update-product-team-recipe-parity-status-cron-role-templates.md","updatedAt":"2026-02-11T22:31:50.629Z","ageHours":286.07841736450195},{"number":19,"id":"0019-p2-update-research-team-recipe-parity-status-cron-role-templates","title":"P2 Update Research Team Recipe Parity Status Cron Role Templates","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0019-p2-update-research-team-recipe-parity-status-cron-role-templates.md","updatedAt":"2026-02-11T22:32:53.164Z","ageHours":286.0610466364882},{"number":20,"id":"0020-p2-update-writing-team-recipe-parity-status-cron-role-templates","title":"P2 Update Writing Team Recipe Parity Status Cron Role Templates","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0020-p2-update-writing-team-recipe-parity-status-cron-role-templates.md","updatedAt":"2026-02-11T23:02:15.923Z","ageHours":285.57139135898166},{"number":21,"id":"0021-p2-update-social-team-recipe-parity-status-cron-role-templates","title":"P2 Update Social Team Recipe Parity Status Cron Role Templates","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0021-p2-update-social-team-recipe-parity-status-cron-role-templates.md","updatedAt":"2026-02-11T23:32:35.506Z","ageHours":285.06595167304147},{"number":22,"id":"0022-p2-update-customer-support-team-recipe-parity-status-cron-role-templates","title":"P2 Update Customer Support Team Recipe Parity Status Cron Role Templates","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0022-p2-update-customer-support-team-recipe-parity-status-cron-role-templates.md","updatedAt":"2026-02-12T00:05:15.352Z","ageHours":284.521549982978},{"number":23,"id":"0023-move-g-009-into-backlog-build-clawcipes-public-website-marke","title":"Move G 009 Into Backlog Build Clawcipes Public Website Marke","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0023-move-g-009-into-backlog-build-clawcipes-public-website-marke.md","updatedAt":"2026-02-13T03:37:22.043Z","ageHours":256.9863584544542},{"number":24,"id":"0024-clawkitchen-ui-update-layout-to-resemble-mission-control-top","title":"Clawkitchen UI Update Layout To Resemble Mission Control Top","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0024-clawkitchen-ui-update-layout-to-resemble-mission-control-top.md","updatedAt":"2026-02-12T22:37:39.721Z","ageHours":261.98144779547795},{"number":26,"id":"0026-add-openclaw-recipes-remove-team-uninstall-cleanup","title":"Add Openclaw Recipes Remove Team Uninstall Cleanup","owner":"devops","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0026-add-openclaw-recipes-remove-team-uninstall-cleanup.md","updatedAt":"2026-02-13T03:41:13.146Z","ageHours":256.92216301038957},{"number":27,"id":"0027-build-clawcipes-marketplace-backend-registry-search-install","title":"Build Clawcipes Marketplace Backend Registry Search Install","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0027-build-clawcipes-marketplace-backend-registry-search-install.md","updatedAt":"2026-02-13T01:04:35.458Z","ageHours":259.5326320275201},{"number":28,"id":"0028-kitchen-board-move-test","title":"Kitchen Board Move Test","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0028-kitchen-board-move-test.md","updatedAt":"2026-02-13T01:34:04.270Z","ageHours":259.0412952091471},{"number":29,"id":"0029-update-documentation-ui-copy-to-replace-clawcipes-branding-w","title":"Update Documentation UI Copy To Replace Clawcipes Branding W","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0029-update-documentation-ui-copy-to-replace-clawcipes-branding-w.md","updatedAt":"2026-02-13T04:34:21.431Z","ageHours":256.0365282889133},{"number":30,"id":"0030-clawkitchen-v2-requirements-1-home-page-remove-middle-pill-m","title":"Clawkitchen V2 Requirements 1 Home Page Remove Middle Pill M","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0030-clawkitchen-v2-requirements-1-home-page-remove-middle-pill-m.md","updatedAt":"2026-02-14T04:38:30.630Z","ageHours":231.96730652377659},{"number":31,"id":"0031-release-push-ship-remove-team-clawrecipes-rebrand-steps-merg","title":"Release Push Ship Remove Team Clawrecipes Rebrand Steps Merg","owner":"devops","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0031-release-push-ship-remove-team-clawrecipes-rebrand-steps-merg.md","updatedAt":"2026-02-13T12:39:32.240Z","ageHours":247.95019252061633},{"number":32,"id":"0032-fix-recipes-clawrecipes-plugin-to-avoid-openclaw-dangerous-c","title":"Fix Recipes Clawrecipes Plugin To Avoid Openclaw Dangerous C","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0032-fix-recipes-clawrecipes-plugin-to-avoid-openclaw-dangerous-c.md","updatedAt":"2026-02-13T19:34:27.517Z","ageHours":241.03483789008246},{"number":33,"id":"0033-publish-no-warning-package-name-jiggai-recipes-for-clawrecip","title":"Publish No Warning Package Name Jiggai Recipes For Clawrecip","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0033-publish-no-warning-package-name-jiggai-recipes-for-clawrecip.md","updatedAt":"2026-02-14T04:43:41.501Z","ageHours":231.88095341247558},{"number":34,"id":"0034-fix-openclaw-install-warning-plugin-recipes-has-suspicious-c","title":"Fix Openclaw Install Warning Plugin Recipes Has Suspicious C","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0034-fix-openclaw-install-warning-plugin-recipes-has-suspicious-c.md","updatedAt":"2026-02-14T04:49:43.975Z","ageHours":231.7802662173123},{"number":35,"id":"0035-finish-g-008-clawrecipes-close-remaining-gaps-ensure-missing","title":"Finish G 008 Clawrecipes Close Remaining Gaps Ensure Missing","owner":"devops","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0035-finish-g-008-clawrecipes-close-remaining-gaps-ensure-missing.md","updatedAt":"2026-02-14T04:05:56.098Z","ageHours":232.51023229051378},{"number":36,"id":"0036-clawkitchen-team-editor-save-semantics-bugs-clarify-and-fix-","title":"Clawkitchen Team Editor Save Semantics Bugs Clarify And Fix","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0036-clawkitchen-team-editor-save-semantics-bugs-clarify-and-fix-.md","updatedAt":"2026-02-14T12:08:12.549Z","ageHours":224.4723291111925},{"number":37,"id":"0037-clawkitchen-lock-builtin-source-team-recipes-in-team-editor-","title":"Clawkitchen Lock Builtin Source Team Recipes In Team Editor","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0037-clawkitchen-lock-builtin-source-team-recipes-in-team-editor-.md","updatedAt":"2026-02-14T14:33:51.475Z","ageHours":222.04484978834364},{"number":38,"id":"0038-clawkitchen-files-tab-too-many-missing-files-shown-for-some-","title":"Clawkitchen Files Tab Too Many Missing Files Shown For Some","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0038-clawkitchen-files-tab-too-many-missing-files-shown-for-some-.md","updatedAt":"2026-02-14T13:03:58.817Z","ageHours":223.5428103089057},{"number":39,"id":"0039-completion-report","title":"Completion Report","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0039-completion-report.md","updatedAt":"2026-02-14T12:35:11.929Z","ageHours":224.0225013547092},{"number":40,"id":"0040-clawkitchen-ui-polish-show-team-agent-display-names-identity","title":"Clawkitchen UI Polish Show Team Agent Display Names Identity","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0040-clawkitchen-ui-polish-show-team-agent-display-names-identity.md","updatedAt":"2026-02-14T15:02:41.805Z","ageHours":221.56420241319444},{"number":41,"id":"0041-clawkitchen-ui-align-team-recipe-agent-editing-home-page-beh","title":"Clawkitchen UI Align Team Recipe Agent Editing Home Page Beh","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0041-clawkitchen-ui-align-team-recipe-agent-editing-home-page-beh.md","updatedAt":"2026-02-14T18:03:27.193Z","ageHours":218.55159483235678},{"number":42,"id":"0042-clawkitchen-persist-team-provenance-parent-recipe-and-lock-i","title":"Clawkitchen Persist Team Provenance Parent Recipe And Lock I","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0042-clawkitchen-persist-team-provenance-parent-recipe-and-lock-i.md","updatedAt":"2026-02-14T20:35:41.025Z","ageHours":216.0144192017958},{"number":43,"id":"0043-root-cause-fix-scaffold-team-must-persist-team-provenance-pa","title":"Root Cause Fix Scaffold Team Must Persist Team Provenance Pa","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0043-root-cause-fix-scaffold-team-must-persist-team-provenance-pa.md","updatedAt":"2026-02-14T20:03:08.642Z","ageHours":216.55674768473307},{"number":44,"id":"0044-implement-new-scaffold-team-behavior-create-workspace-recipe","title":"Implement New Scaffold Team Behavior Create Workspace Recipe","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0044-implement-new-scaffold-team-behavior-create-workspace-recipe.md","updatedAt":"2026-02-15T02:05:28.542Z","ageHours":210.5178865833876},{"number":45,"id":"0045-clawmarket-get-started-page-add-real-screenshots-of-user-pro","title":"Clawmarket Get Started Page Add Real Screenshots Of User Pro","owner":"devops","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0045-clawmarket-get-started-page-add-real-screenshots-of-user-pro.md","updatedAt":"2026-02-15T20:33:07.943Z","ageHours":192.056942081231},{"number":46,"id":"0046-extend-recipes-scaffold-single-agent-to-also-create-a-worksp","title":"Extend Recipes Scaffold Single Agent To Also Create A Worksp","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0046-extend-recipes-scaffold-single-agent-to-also-create-a-worksp.md","updatedAt":"2026-02-15T20:04:33.329Z","ageHours":192.53322373562284},{"number":47,"id":"0047-overnight-propose-15-20-specialty-agents-business-focused-us","title":"Overnight Propose 15 20 Specialty Agents Business Focused Us","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0047-overnight-propose-15-20-specialty-agents-business-focused-us.md","updatedAt":"2026-02-15T21:11:10.265Z","ageHours":191.42296374342178},{"number":48,"id":"0048-expand-specialty-agent-catalog-beyond-generic-business-creat","title":"Expand Specialty Agent Catalog Beyond Generic Business Creat","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0048-expand-specialty-agent-catalog-beyond-generic-business-creat.md","updatedAt":"2026-02-15T22:34:15.032Z","ageHours":190.03830651116266},{"number":49,"id":"0049-marketplace-add-login-auth-to-clawkitchen-ai-marketplace-cla","title":"Marketplace Add Login Auth To Clawkitchen Ai Marketplace Cla","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0049-marketplace-add-login-auth-to-clawkitchen-ai-marketplace-cla.md","updatedAt":"2026-02-17T22:21:54.459Z","ageHours":142.24402109076607},{"number":50,"id":"0050-marketplace-add-recipe-submissions-ugc-flow-to-clawkitchen-a","title":"Marketplace Add Recipe Submissions Ugc Flow To Clawkitchen A","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0050-marketplace-add-recipe-submissions-ugc-flow-to-clawkitchen-a.md","updatedAt":"2026-02-23T00:42:42.790Z","ageHours":19.897262508680555},{"number":51,"id":"0051-clawkitchen-add-goals-feature-scope-ui-page-route-for-goals-","title":"Clawkitchen Add Goals Feature Scope UI Page Route For Goals","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0051-clawkitchen-add-goals-feature-scope-ui-page-route-for-goals-.md","updatedAt":"2026-02-17T02:09:16.383Z","ageHours":162.45459777574328},{"number":52,"id":"0052-create-a-new-bundled-team-recipe-marketing-team-add-5-roles-","title":"Create A New Bundled Team Recipe Marketing Team Add 5 Roles","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0052-create-a-new-bundled-team-recipe-marketing-team-add-5-roles-.md","updatedAt":"2026-02-16T23:30:56.819Z","ageHours":165.0933656382921},{"number":53,"id":"0053-expand-social-marketing-team-recipe-add-roles-for-1-social-m","title":"Expand Social Marketing Team Recipe Add Roles For 1 Social M","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0053-expand-social-marketing-team-recipe-add-roles-for-1-social-m.md","updatedAt":"2026-02-16T23:36:50.412Z","ageHours":164.99514519680446},{"number":54,"id":"0054-implement-team-recipe-template-standardization-across-bundle","title":"Implement Team Recipe Template Standardization Across Bundle","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0054-implement-team-recipe-template-standardization-across-bundle.md","updatedAt":"2026-02-16T23:36:50.418Z","ageHours":164.9951435301378},{"number":55,"id":"0055-ship-reliable-lead-wake-up-after-dispatch-enable-triage-auto","title":"Ship Reliable Lead Wake Up After Dispatch Enable Triage Auto","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0055-ship-reliable-lead-wake-up-after-dispatch-enable-triage-auto.md","updatedAt":"2026-02-17T02:09:18.105Z","ageHours":162.4541194462755},{"number":56,"id":"0056-publish-or-sync-the-jiggai-recipes-extension-so-openclaw-rec","title":"Publish Or Sync The Jiggai Recipes Extension So Openclaw Rec","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0056-publish-or-sync-the-jiggai-recipes-extension-so-openclaw-rec.md","updatedAt":"2026-02-16T23:36:50.423Z","ageHours":164.99514214124892},{"number":57,"id":"0057-publish-jiggai-recipes-bump-version-and-revert-local-link","title":"Publish Jiggai Recipes Bump Version And Revert Local Link","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0057-publish-jiggai-recipes-bump-version-and-revert-local-link.md","updatedAt":"2026-02-17T10:05:22.639Z","ageHours":154.51952669318305},{"number":58,"id":"0058-clawkitchen-add-channels-section-for-channel-bindings-crud","title":"Clawkitchen Add Channels Section For Channel Bindings Crud","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0058-clawkitchen-add-channels-section-for-channel-bindings-crud.md","updatedAt":"2026-02-17T06:07:01.696Z","ageHours":158.4920109125434},{"number":63,"id":"0063-clawkitchen-clone-should-scaffold-or-copy-workspace-files","title":"Clawkitchen Clone Should Scaffold Or Copy Workspace Files","owner":"test","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0063-clawkitchen-clone-should-scaffold-or-copy-workspace-files.md","updatedAt":"2026-02-23T05:34:13.905Z","ageHours":15.038619379136827},{"number":64,"id":"0064-clawmarket-recipe-detail-page-defaults-ugc","title":"Clawmarket Recipe Detail Page Defaults Ugc","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0064-clawmarket-recipe-detail-page-defaults-ugc.md","updatedAt":"2026-02-23T00:43:00.621Z","ageHours":19.892309764065214},{"number":65,"id":"0065-working-ticket-deep-review-clawrecipes-pr-35-after-fixes-rol","title":"Working Ticket Deep Review Clawrecipes PR 35 After Fixes Rol","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0065-working-ticket-deep-review-clawrecipes-pr-35-after-fixes-rol.md","updatedAt":"2026-02-23T06:32:10.609Z","ageHours":14.07286874098036},{"number":66,"id":"0066-marketplace-ugc-submissions-ui-moderation-followup","title":"Marketplace Ugc Submissions UI Moderation Followup","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0066-marketplace-ugc-submissions-ui-moderation-followup.md","updatedAt":"2026-02-23T16:49:26.479Z","ageHours":3.7851270166015625},{"number":67,"id":"0067-rj-update-2026-02-18-1-mailgun-url-env-added-2-captcha-site-","title":"Rj Update 2026 02 18 1 Mailgun Url Env Added 2 Captcha Site","owner":"lead","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0067-rj-update-2026-02-18-1-mailgun-url-env-added-2-captcha-site-.md","updatedAt":"2026-02-23T06:04:04.301Z","ageHours":14.541287561102973},{"number":77,"id":"0077-archive-assignment-stubs-on-ticket-completion","title":"Archive Assignment Stubs On Ticket Completion","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0077-archive-assignment-stubs-on-ticket-completion.md","updatedAt":"2026-02-23T00:08:45.774Z","ageHours":20.463100671454537},{"number":78,"id":"0078-assignment-archive-smoke","title":"Assignment Archive Smoke","owner":"dev","stage":"done","file":"/home/control/.openclaw/workspace-development-team/work/done/0078-assignment-archive-smoke.md","updatedAt":"2026-02-23T00:13:09.415Z","ageHours":20.38986704820421},{"number":79,"id":"0079-add-two-new-top-level-menu-items-in-clawkitchen-ui-clawkitch","title":"Add Two New Top Level Menu Items In Clawkitchen UI Clawkitch","owner":"lead","stage":"in-progress","file":"/home/control/.openclaw/workspace-development-team/work/in-progress/0079-add-two-new-top-level-menu-items-in-clawkitchen-ui-clawkitch.md","updatedAt":"2026-02-23T20:32:16.794Z","ageHours":0.07114826775444878},{"number":80,"id":"0080-enhance-clawmarket-recipe-detail-pages-marketplace-recipes-s","title":"Enhance Clawmarket Recipe Detail Pages Marketplace Recipes S","owner":"lead","stage":"backlog","file":"/home/control/.openclaw/workspace-development-team/work/backlog/0080-enhance-clawmarket-recipe-detail-pages-marketplace-recipes-s.md","updatedAt":"2026-02-23T19:48:28.355Z","ageHours":0.8012698964436848}]}],["$L3"],"$L4"]}],"loading":null,"isPartial":false}
|
|
6
6
|
3:["$","script","script-0",{"src":"/_next/static/chunks/de9e30e86ef31e72.js","async":true}]
|
|
7
7
|
4:["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]
|
|
8
8
|
7:null
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:I[39756,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"default"]
|
|
3
3
|
3:I[37457,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/d2be314c3ece3fbe.js"],"default"]
|
|
4
|
-
0:{"buildId":"
|
|
4
|
+
0:{"buildId":"2hgbnJUmLMe9COlc5rJd3","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},7367,e=>{"use strict";var t=e.i(12714),r=e.i(60526),n=e.i(50227);async function a(){let e=n.default.join(r.default.homedir(),".openclaw","openclaw.json");return JSON.parse(await t.default.readFile(e,"utf8"))}async function s(){let e=await a(),t=e.agents?.defaults?.workspace;if(!t)throw Error("agents.defaults.workspace is not set in ~/.openclaw/openclaw.json");return t}async function o(){let e=await s();return n.default.join(e,"recipes")}async function i(){let e=await s();return n.default.join(e,"notes","goals")}async function l(e){let t=r.default.homedir();if(!t)throw Error("Could not resolve home directory");return n.default.join(t,".openclaw",`workspace-${e}`)}async function u(){let e=await a(),t=e.plugins?.installs?.recipes?.installPath||e.plugins?.installs?.recipes?.sourcePath||e.plugins?.load?.paths?.[0];if(!t)throw Error("Could not determine recipes plugin install path from ~/.openclaw/openclaw.json");return n.default.join(t,"recipes","default")}e.s(["getBuiltinRecipesDir",()=>u,"getTeamWorkspaceDir",()=>l,"getWorkspaceDir",()=>s,"getWorkspaceGoalsDir",()=>i,"getWorkspaceRecipesDir",()=>o,"readOpenClawConfig",()=>a])},38858,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),s=e.i(61916),o=e.i(74677),i=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),p=e.i(47587),c=e.i(66012),f=e.i(70101),x=e.i(26937),h=e.i(10372),g=e.i(93695);e.i(52474);var w=e.i(220),m=e.i(12714),R=e.i(50227),v=e.i(89171),E=e.i(7367);function y(e,t){return R.default.resolve(e,"..",`workspace-${t}`)}function k(e){let t=e.replace(/\\/g,"/");if(!t||t.startsWith("/")||t.includes(".."))throw Error("Invalid file name");return t}async function C(e){let{searchParams:t}=new URL(e.url),r=String(t.get("teamId")??"").trim(),n=String(t.get("name")??"").trim();if(!r)return v.NextResponse.json({ok:!1,error:"teamId is required"},{status:400});if(!n)return v.NextResponse.json({ok:!1,error:"name is required"},{status:400});let a=await (0,E.readOpenClawConfig)(),s=String(a.agents?.defaults?.workspace??"").trim();if(!s)return v.NextResponse.json({ok:!1,error:"agents.defaults.workspace not set"},{status:500});let o=k(n),i=y(s,r),l=R.default.join(i,o);try{let e=await m.default.readFile(l,"utf8");return v.NextResponse.json({ok:!0,teamId:r,name:o,filePath:l,content:e})}catch(e){return v.NextResponse.json({ok:!1,error:e instanceof Error?e.message:String(e)},{status:404})}}async function j(e){let t=await e.json(),r=String(t.teamId??"").trim(),n=String(t.name??"").trim(),a="string"==typeof t.content?t.content:null;if(!r)return v.NextResponse.json({ok:!1,error:"teamId is required"},{status:400});if(!n)return v.NextResponse.json({ok:!1,error:"name is required"},{status:400});if(null===a)return v.NextResponse.json({ok:!1,error:"content is required"},{status:400});let s=await (0,E.readOpenClawConfig)(),o=String(s.agents?.defaults?.workspace??"").trim();if(!o)return v.NextResponse.json({ok:!1,error:"agents.defaults.workspace not set"},{status:500});let i=k(n),l=y(o,r),u=R.default.join(l,i);return await m.default.mkdir(R.default.dirname(u),{recursive:!0}),await m.default.writeFile(u,a,"utf8"),v.NextResponse.json({ok:!0,teamId:r,name:i,filePath:u})}e.s(["GET",()=>C,"PUT",()=>j],85706);var N=e.i(85706);let A=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/teams/file/route",pathname:"/api/teams/file",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/teams/file/route.ts",nextConfigOutput:"standalone",userland:N}),{workAsyncStorage:q,workUnitAsyncStorage:b,serverHooks:S}=A;function T(){return(0,n.patchFetch)({workAsyncStorage:q,workUnitAsyncStorage:b})}async function P(e,t,n){A.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/teams/file/route";m=m.replace(/\/index$/,"")||"/";let R=await A.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:v,params:E,nextConfig:y,parsedUrl:k,isDraftMode:C,prerenderManifest:j,routerServerContext:N,isOnDemandRevalidate:q,revalidateOnlyGenerated:b,resolvedPathname:S,clientReferenceManifest:T,serverActionsManifest:P}=R,O=(0,i.normalizeAppPath)(m),I=!!(j.dynamicRoutes[O]||j.routes[S]),_=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,k,!1):t.end("This page could not be found"),null);if(I&&!C){let e=!!j.routes[S],t=j.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(y.experimental.adapterPath)return await _();throw new g.NoFallbackError}}let D=null;!I||A.isDev||C||(D="/index"===(D=S)?"/":D);let U=!0===A.isDev||!I,H=I&&!U;P&&T&&(0,o.setManifestsSingleton)({page:m,clientReferenceManifest:T,serverActionsManifest:P});let M=e.method||"GET",F=(0,s.getTracer)(),$=F.getActiveScopeSpan(),K={params:E,prerenderManifest:j,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:U,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:y.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>A.onRequestError(e,t,n,a,N)},sharedContext:{buildId:v}},W=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),L=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let o=async e=>A.handle(L,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${M} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${m}`)}),i=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var s,l;let u=async({previousCacheEntry:r})=>{try{if(!i&&q&&b&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(a);e.fetchMetrics=K.renderOpts.fetchMetrics;let l=K.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let u=K.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(W,B,s,K.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);u&&(t[h.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,n=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:m,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:q})},!1,N),t}},d=await A.handleResponse({req:e,nextConfig:y,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:j,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:b,responseGenerator:u,waitUntil:n.waitUntil,isMinimalMode:i});if(!I)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",q?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return i&&I||g.delete(h.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,x.getCacheControlHeader)(d.cacheControl)),await (0,c.sendResponse)(W,B,new Response(d.value.body,{headers:g,status:d.value.status||200})),null};$?await l($):await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${m}`,kind:s.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:q})},!1,N),I)throw t;return await (0,c.sendResponse)(W,B,new Response(null,{status:500})),null}}e.s(["handler",()=>P,"patchFetch",()=>T,"routeModule",()=>A,"serverHooks",()=>S,"workAsyncStorage",()=>q,"workUnitAsyncStorage",()=>b],38858)}];
|
|
1
|
+
module.exports=[70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},7367,e=>{"use strict";var t=e.i(12714),r=e.i(60526),n=e.i(50227);async function a(){let e=n.default.join(r.default.homedir(),".openclaw","openclaw.json");return JSON.parse(await t.default.readFile(e,"utf8"))}async function s(){let e=await a(),t=e.agents?.defaults?.workspace;if(!t)throw Error("agents.defaults.workspace is not set in ~/.openclaw/openclaw.json");return t}async function o(){let e=await s();return n.default.join(e,"recipes")}async function i(){let e=await s();return n.default.join(e,"notes","goals")}async function l(e){let t=r.default.homedir();if(!t)throw Error("Could not resolve home directory");return n.default.join(t,".openclaw",`workspace-${e}`)}async function u(){let e=await a(),t=e.plugins?.installs?.recipes?.installPath||e.plugins?.installs?.recipes?.sourcePath||e.plugins?.load?.paths?.[0];if(!t)throw Error("Could not determine recipes plugin install path from ~/.openclaw/openclaw.json");return n.default.join(t,"recipes","default")}e.s(["getBuiltinRecipesDir",()=>u,"getTeamWorkspaceDir",()=>l,"getWorkspaceDir",()=>s,"getWorkspaceGoalsDir",()=>i,"getWorkspaceRecipesDir",()=>o,"readOpenClawConfig",()=>a])},38858,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),s=e.i(61916),o=e.i(74677),i=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),p=e.i(47587),c=e.i(66012),f=e.i(70101),x=e.i(26937),h=e.i(10372),g=e.i(93695);e.i(52474);var w=e.i(220),m=e.i(12714),R=e.i(50227),v=e.i(89171),E=e.i(7367);function y(e,t){return R.default.resolve(e,"..",`workspace-${t}`)}function k(e){let t=e.replace(/\\/g,"/");if(!t||t.startsWith("/")||t.includes(".."))throw Error("Invalid file name");return t}async function C(e){let{searchParams:t}=new URL(e.url),r=String(t.get("teamId")??"").trim(),n=String(t.get("name")??"").trim();if(!r)return v.NextResponse.json({ok:!1,error:"teamId is required"},{status:400});if(!n)return v.NextResponse.json({ok:!1,error:"name is required"},{status:400});let a=await (0,E.readOpenClawConfig)(),s=String(a.agents?.defaults?.workspace??"").trim();if(!s)return v.NextResponse.json({ok:!1,error:"agents.defaults.workspace not set"},{status:500});let o=k(n),i=y(s,r),l=R.default.join(i,o);try{let e=await m.default.readFile(l,"utf8");return v.NextResponse.json({ok:!0,teamId:r,name:o,filePath:l,content:e})}catch(e){return v.NextResponse.json({ok:!1,error:e instanceof Error?e.message:String(e)},{status:404})}}async function j(e){let t=await e.json(),r=String(t.teamId??"").trim(),n=String(t.name??"").trim(),a="string"==typeof t.content?t.content:null;if(!r)return v.NextResponse.json({ok:!1,error:"teamId is required"},{status:400});if(!n)return v.NextResponse.json({ok:!1,error:"name is required"},{status:400});if(null===a)return v.NextResponse.json({ok:!1,error:"content is required"},{status:400});let s=await (0,E.readOpenClawConfig)(),o=String(s.agents?.defaults?.workspace??"").trim();if(!o)return v.NextResponse.json({ok:!1,error:"agents.defaults.workspace not set"},{status:500});let i=k(n),l=y(o,r),u=R.default.join(l,i);return await m.default.mkdir(R.default.dirname(u),{recursive:!0}),await m.default.writeFile(u,a,"utf8"),v.NextResponse.json({ok:!0,teamId:r,name:i,filePath:u})}e.s(["GET",()=>C,"PUT",()=>j],85706);var N=e.i(85706);let A=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/teams/file/route",pathname:"/api/teams/file",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/teams/file/route.ts",nextConfigOutput:"standalone",userland:N}),{workAsyncStorage:q,workUnitAsyncStorage:b,serverHooks:S}=A;function T(){return(0,n.patchFetch)({workAsyncStorage:q,workUnitAsyncStorage:b})}async function P(e,t,n){A.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/teams/file/route";m=m.replace(/\/index$/,"")||"/";let R=await A.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:v,params:E,nextConfig:y,parsedUrl:k,isDraftMode:C,prerenderManifest:j,routerServerContext:N,isOnDemandRevalidate:q,revalidateOnlyGenerated:b,resolvedPathname:S,clientReferenceManifest:T,serverActionsManifest:P}=R,O=(0,i.normalizeAppPath)(m),I=!!(j.dynamicRoutes[O]||j.routes[S]),_=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,k,!1):t.end("This page could not be found"),null);if(I&&!C){let e=!!j.routes[S],t=j.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(y.experimental.adapterPath)return await _();throw new g.NoFallbackError}}let D=null;!I||A.isDev||C||(D="/index"===(D=S)?"/":D);let U=!0===A.isDev||!I,H=I&&!U;P&&T&&(0,o.setManifestsSingleton)({page:m,clientReferenceManifest:T,serverActionsManifest:P});let M=e.method||"GET",F=(0,s.getTracer)(),$=F.getActiveScopeSpan(),K={params:E,prerenderManifest:j,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:U,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:y.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>A.onRequestError(e,t,n,a,N)},sharedContext:{buildId:v}},W=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),L=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let o=async e=>A.handle(L,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${M} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${m}`)}),i=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var s,l;let u=async({previousCacheEntry:r})=>{try{if(!i&&q&&b&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(a);e.fetchMetrics=K.renderOpts.fetchMetrics;let l=K.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let u=K.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(W,B,s,K.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);u&&(t[h.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,n=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:m,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:q})},!1,N),t}},d=await A.handleResponse({req:e,nextConfig:y,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:j,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:b,responseGenerator:u,waitUntil:n.waitUntil,isMinimalMode:i});if(!I)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",q?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return i&&I||g.delete(h.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,x.getCacheControlHeader)(d.cacheControl)),await (0,c.sendResponse)(W,B,new Response(d.value.body,{headers:g,status:d.value.status||200})),null};$?await l($):await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${m}`,kind:s.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:q})},!1,N),I)throw t;return await (0,c.sendResponse)(W,B,new Response(null,{status:500})),null}}e.s(["handler",()=>P,"patchFetch",()=>T,"routeModule",()=>A,"serverHooks",()=>S,"workAsyncStorage",()=>q,"workUnitAsyncStorage",()=>b],38858)}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__055885ce._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[59494,e=>{"use strict";function t(){let e=globalThis.__clawkitchen_api;if(!e)throw Error("ClawKitchen: OpenClaw plugin API not available. (This should only happen if Kitchen is started outside the gateway process.)");return e}e.s(["getKitchenApi",()=>t])},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},
|
|
1
|
+
module.exports=[59494,e=>{"use strict";function t(){let e=globalThis.__clawkitchen_api;if(!e)throw Error("ClawKitchen: OpenClaw plugin API not available. (This should only happen if Kitchen is started outside the gateway process.)");return e}e.s(["getKitchenApi",()=>t])},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},47407,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),i=e.i(61916),s=e.i(74677),o=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),p=e.i(47587),c=e.i(66012),m=e.i(70101),h=e.i(26937),g=e.i(10372),f=e.i(93695);e.i(52474);var x=e.i(220),w=e.i(12714),v=e.i(60526),R=e.i(50227),y=e.i(89171),E=e.i(59494);async function C(e){try{let t=await e.json(),r=function(e){let t=e.trim();if(!t)throw Error("agent id is required");if(!/^[a-z0-9][a-z0-9-]{0,62}$/i.test(t))throw Error("agent id must match /^[a-z0-9][a-z0-9-]{0,62}$/i");return t}(String(t.newAgentId??t.agentId??"")),a=!!t.overwrite,n=R.default.join(v.default.homedir(),".openclaw","openclaw.json");if(!n.trim())return y.NextResponse.json({ok:!1,error:"Could not resolve config path"},{status:500});let i=await w.default.readFile(n,"utf8"),s=JSON.parse(i),o=String(s?.agents?.defaults?.workspace??"").trim();if(!o)return y.NextResponse.json({ok:!1,error:"agents.defaults.workspace not set"},{status:500});let l=R.default.resolve(o,"..",`workspace-${r}`),d=Array.isArray(s?.agents?.list)?s.agents?.list:[],u=d.some(e=>String(e?.id??"").toLowerCase()===r.toLowerCase());if(u&&!a)return y.NextResponse.json({ok:!1,error:`Agent already exists: ${r}`},{status:409});let p={id:r,workspace:l,...t.model?{model:t.model}:{},identity:{..."string"==typeof t.name&&t.name.trim()?{name:t.name.trim()}:{},..."string"==typeof t.theme&&t.theme.trim()?{theme:t.theme.trim()}:{},..."string"==typeof t.emoji&&t.emoji.trim()?{emoji:t.emoji.trim()}:{},..."string"==typeof t.avatar&&t.avatar.trim()?{avatar:t.avatar.trim()}:{}}},c=u?d.map(e=>String(e?.id??"").toLowerCase()===r.toLowerCase()?p:e):[...d,p];await w.default.mkdir(l,{recursive:!0});let m=`# IDENTITY.md
|
|
2
2
|
|
|
3
3
|
- **Name:** ${String(t.name??"").trim()||r}
|
|
4
4
|
- **Creature:**
|
|
@@ -7,4 +7,4 @@ module.exports=[59494,e=>{"use strict";function t(){let e=globalThis.__clawkitch
|
|
|
7
7
|
- **Avatar:** ${String(t.avatar??"").trim()}
|
|
8
8
|
`;await w.default.writeFile(R.default.join(l,"IDENTITY.md"),m,"utf8");let h={...s,agents:{...s.agents??{},list:c}},g=`${n}.tmp`,f=`${n}.bak.${new Date().toISOString().replace(/[:.]/g,"-")}`;await w.default.writeFile(g,JSON.stringify(h,null,2)+"\n","utf8"),await w.default.copyFile(n,f).catch(()=>{}),await w.default.rename(g,n);let x=(0,E.getKitchenApi)();return await x.runtime.system.runCommandWithTimeout(["openclaw","gateway","restart"],{timeoutMs:12e4}),y.NextResponse.json({ok:!0,agentId:r,workspace:l,restarted:!0})}catch(r){let e=r instanceof Error?r.message:String(r),t=/required|match \//i.test(e)?400:500;return y.NextResponse.json({ok:!1,error:e},{status:t})}}e.s(["POST",()=>C],85539);var A=e.i(85539);let k=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/agents/add/route",pathname:"/api/agents/add",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agents/add/route.ts",nextConfigOutput:"standalone",userland:A}),{workAsyncStorage:N,workUnitAsyncStorage:j,serverHooks:S}=k;function T(){return(0,a.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:j})}async function b(e,t,a){k.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/agents/add/route";w=w.replace(/\/index$/,"")||"/";let v=await k.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:R,params:y,nextConfig:E,parsedUrl:C,isDraftMode:A,prerenderManifest:N,routerServerContext:j,isOnDemandRevalidate:S,revalidateOnlyGenerated:T,resolvedPathname:b,clientReferenceManifest:O,serverActionsManifest:q}=v,P=(0,o.normalizeAppPath)(w),I=!!(N.dynamicRoutes[P]||N.routes[b]),_=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,C,!1):t.end("This page could not be found"),null);if(I&&!A){let e=!!N.routes[b],t=N.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await _();throw new f.NoFallbackError}}let $=null;!I||k.isDev||A||($="/index"===($=b)?"/":$);let H=!0===k.isDev||!I,D=I&&!H;q&&O&&(0,s.setManifestsSingleton)({page:w,clientReferenceManifest:O,serverActionsManifest:q});let U=e.method||"GET",M=(0,i.getTracer)(),F=M.getActiveScopeSpan(),K={params:y,prerenderManifest:N,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>k.onRequestError(e,t,a,n,j)},sharedContext:{buildId:R}},L=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),B=d.NextRequestAdapter.fromNodeNextRequest(L,(0,d.signalFromNodeResponse)(t));try{let s=async e=>k.handle(B,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${U} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${U} ${w}`)}),o=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var i,l;let d=async({previousCacheEntry:r})=>{try{if(!o&&S&&T&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let l=K.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let d=K.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(L,z,i,K.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);d&&(t[g.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await k.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:S})},!1,j),t}},u=await k.handleResponse({req:e,nextConfig:E,cacheKey:$,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:T,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:o});if(!I)return null;if((null==u||null==(i=u.value)?void 0:i.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",S?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,m.fromNodeOutgoingHttpHeaders)(u.value.headers);return o&&I||f.delete(g.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(L,z,new Response(u.value.body,{headers:f,status:u.value.status||200})),null};F?await l(F):await M.withPropagatedContext(e.headers,()=>M.trace(u.BaseServerSpan.handleRequest,{spanName:`${U} ${w}`,kind:i.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},l))}catch(t){if(t instanceof f.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:S})},!1,j),I)throw t;return await (0,c.sendResponse)(L,z,new Response(null,{status:500})),null}}e.s(["handler",()=>b,"patchFetch",()=>T,"routeModule",()=>k,"serverHooks",()=>S,"workAsyncStorage",()=>N,"workUnitAsyncStorage",()=>j],47407)}];
|
|
9
9
|
|
|
10
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
10
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0c01c5c7._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},7367,e=>{"use strict";var t=e.i(12714),r=e.i(60526),a=e.i(50227);async function n(){let e=a.default.join(r.default.homedir(),".openclaw","openclaw.json");return JSON.parse(await t.default.readFile(e,"utf8"))}async function o(){let e=await n(),t=e.agents?.defaults?.workspace;if(!t)throw Error("agents.defaults.workspace is not set in ~/.openclaw/openclaw.json");return t}async function i(){let e=await o();return a.default.join(e,"recipes")}async function s(){let e=await o();return a.default.join(e,"notes","goals")}async function l(e){let t=r.default.homedir();if(!t)throw Error("Could not resolve home directory");return a.default.join(t,".openclaw",`workspace-${e}`)}async function u(){let e=await n(),t=e.plugins?.installs?.recipes?.installPath||e.plugins?.installs?.recipes?.sourcePath||e.plugins?.load?.paths?.[0];if(!t)throw Error("Could not determine recipes plugin install path from ~/.openclaw/openclaw.json");return a.default.join(t,"recipes","default")}e.s(["getBuiltinRecipesDir",()=>u,"getTeamWorkspaceDir",()=>l,"getWorkspaceDir",()=>o,"getWorkspaceGoalsDir",()=>s,"getWorkspaceRecipesDir",()=>i,"readOpenClawConfig",()=>n])},76509,e=>{"use strict";var t=e.i(7367);async function r(){let e=await (0,t.readOpenClawConfig)(),r=e.gateway?.port??18789,a=e.gateway?.auth?.token;if(!a)throw Error("Missing gateway token (gateway.auth.token in ~/.openclaw/openclaw.json)");return{baseUrl:`http://127.0.0.1:${r}`,token:a}}async function a(e){let{baseUrl:t,token:a}=await r(),n=await fetch(`${t}/tools/invoke`,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${a}`},body:JSON.stringify(e)}),o=await n.json();if(!n.ok||!o.ok)throw Error("object"==typeof o.error&&o.error?.message||("string"==typeof o.error?o.error:null)||`tools/invoke failed (${n.status})`);return o.result}async function n(){let e=await a({tool:"gateway",args:{action:"config.get",raw:"{}"}}),t=e?.content?.find(e=>"text"===e.type)?.text;if(!t)throw Error("gateway config.get: missing text payload");let r=JSON.parse(t),n=String(r?.result?.raw??""),o=String(r?.result?.hash??"");if(!n)throw Error("gateway config.get: missing result.raw");if(!o)throw Error("gateway config.get: missing result.hash");return{raw:n,hash:o}}async function o(e,t){let{hash:r}=await n();return a({tool:"gateway",args:{action:"config.patch",raw:JSON.stringify(e,null,2),baseHash:r,note:t??"ClawKitchen settings update",restartDelayMs:1e3}})}e.s(["gatewayConfigGet",()=>n,"gatewayConfigPatch",()=>o,"toolsInvoke",()=>a])},34166,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),o=e.i(61916),i=e.i(74677),s=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(26937),g=e.i(10372),w=e.i(93695);e.i(52474);var x=e.i(220),y=e.i(89171),m=e.i(76509),v=e.i(12714),R=e.i(50227);async function E(e){let t=String((await e.json()).id??"").trim();if(!t)return y.NextResponse.json({ok:!1,error:"id is required"},{status:400});let r=await (0,m.toolsInvoke)({tool:"cron",args:{action:"remove",jobId:t}}),a=[];try{let e=await (0,m.toolsInvoke)({tool:"gateway",args:{action:"config.get",raw:"{}"}}),r=e?.content?.find(e=>"text"===e.type)?.text??"",n=r?JSON.parse(r):null,o=String(n?.result?.raw??""),i=o?JSON.parse(o):null,s=String(i?.agents?.defaults?.workspace??"").trim();if(s){let e=R.default.resolve(s,"..");for(let r of(await v.default.readdir(e,{withFileTypes:!0}))){if(!r.isDirectory()||!r.name.startsWith("workspace-"))continue;let n=r.name.replace(/^workspace-/,""),o=R.default.join(e,r.name,"team.json"),i=R.default.join(e,r.name,"notes","cron-jobs.json");try{await v.default.stat(o)}catch{continue}let s=!1,l=[];try{let e=await v.default.readFile(i,"utf8"),r=JSON.parse(e);if(!r||1!==r.version||!r.entries)continue;for(let[e,a]of Object.entries(r.entries))String(a?.installedCronId??"").trim()!==t||a.orphaned||(r.entries[e]={...a,orphaned:!0},s=!0,l.push(e));s&&(await v.default.writeFile(i,JSON.stringify(r,null,2)+"\n","utf8"),a.push({teamId:n,mappingPath:i,keys:l}))}catch{}}}}catch{}return y.NextResponse.json({ok:!0,id:t,result:r,orphanedIn:a})}e.s(["POST",()=>E],45040);var C=e.i(45040);let k=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/cron/delete/route",pathname:"/api/cron/delete",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cron/delete/route.ts",nextConfigOutput:"standalone",userland:C}),{workAsyncStorage:j,workUnitAsyncStorage:S,serverHooks:b}=k;function O(){return(0,a.patchFetch)({workAsyncStorage:j,workUnitAsyncStorage:S})}async function N(e,t,a){k.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/cron/delete/route";y=y.replace(/\/index$/,"")||"/";let m=await k.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!m)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:v,params:R,nextConfig:E,parsedUrl:C,isDraftMode:j,prerenderManifest:S,routerServerContext:b,isOnDemandRevalidate:O,revalidateOnlyGenerated:N,resolvedPathname:A,clientReferenceManifest:P,serverActionsManifest:T}=m,q=(0,s.normalizeAppPath)(y),D=!!(S.dynamicRoutes[q]||S.routes[A]),I=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,C,!1):t.end("This page could not be found"),null);if(D&&!j){let e=!!S.routes[A],t=S.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await I();throw new w.NoFallbackError}}let _=null;!D||k.isDev||j||(_="/index"===(_=A)?"/":_);let H=!0===k.isDev||!D,U=D&&!H;T&&P&&(0,i.setManifestsSingleton)({page:y,clientReferenceManifest:P,serverActionsManifest:T});let M=e.method||"GET",$=(0,o.getTracer)(),F=$.getActiveScopeSpan(),K={params:R,prerenderManifest:S,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>k.onRequestError(e,t,a,n,b)},sharedContext:{buildId:v}},J=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),W=u.NextRequestAdapter.fromNodeNextRequest(J,(0,u.signalFromNodeResponse)(t));try{let i=async e=>k.handle(W,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${y}`)}),s=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var o,l;let u=async({previousCacheEntry:r})=>{try{if(!s&&O&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let l=K.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let u=K.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(J,B,o,K.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(o.headers);u&&(t[g.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await k.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:O})},!1,b),t}},d=await k.handleResponse({req:e,nextConfig:E,cacheKey:_,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:N,responseGenerator:u,waitUntil:a.waitUntil,isMinimalMode:s});if(!D)return null;if((null==d||null==(o=d.value)?void 0:o.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",O?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),j&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let w=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return s&&D||w.delete(g.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||w.get("Cache-Control")||w.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(J,B,new Response(d.value.body,{headers:w,status:d.value.status||200})),null};F?await l(F):await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${y}`,kind:o.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof w.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:O})},!1,b),D)throw t;return await (0,p.sendResponse)(J,B,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>O,"routeModule",()=>k,"serverHooks",()=>b,"workAsyncStorage",()=>j,"workUnitAsyncStorage",()=>S],34166)}];
|
|
1
|
+
module.exports=[70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},7367,e=>{"use strict";var t=e.i(12714),r=e.i(60526),a=e.i(50227);async function n(){let e=a.default.join(r.default.homedir(),".openclaw","openclaw.json");return JSON.parse(await t.default.readFile(e,"utf8"))}async function o(){let e=await n(),t=e.agents?.defaults?.workspace;if(!t)throw Error("agents.defaults.workspace is not set in ~/.openclaw/openclaw.json");return t}async function i(){let e=await o();return a.default.join(e,"recipes")}async function s(){let e=await o();return a.default.join(e,"notes","goals")}async function l(e){let t=r.default.homedir();if(!t)throw Error("Could not resolve home directory");return a.default.join(t,".openclaw",`workspace-${e}`)}async function u(){let e=await n(),t=e.plugins?.installs?.recipes?.installPath||e.plugins?.installs?.recipes?.sourcePath||e.plugins?.load?.paths?.[0];if(!t)throw Error("Could not determine recipes plugin install path from ~/.openclaw/openclaw.json");return a.default.join(t,"recipes","default")}e.s(["getBuiltinRecipesDir",()=>u,"getTeamWorkspaceDir",()=>l,"getWorkspaceDir",()=>o,"getWorkspaceGoalsDir",()=>s,"getWorkspaceRecipesDir",()=>i,"readOpenClawConfig",()=>n])},76509,e=>{"use strict";var t=e.i(7367);async function r(){let e=await (0,t.readOpenClawConfig)(),r=e.gateway?.port??18789,a=e.gateway?.auth?.token;if(!a)throw Error("Missing gateway token (gateway.auth.token in ~/.openclaw/openclaw.json)");return{baseUrl:`http://127.0.0.1:${r}`,token:a}}async function a(e){let{baseUrl:t,token:a}=await r(),n=await fetch(`${t}/tools/invoke`,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${a}`},body:JSON.stringify(e)}),o=await n.json();if(!n.ok||!o.ok)throw Error("object"==typeof o.error&&o.error?.message||("string"==typeof o.error?o.error:null)||`tools/invoke failed (${n.status})`);return o.result}async function n(){let e=await a({tool:"gateway",args:{action:"config.get",raw:"{}"}}),t=e?.content?.find(e=>"text"===e.type)?.text;if(!t)throw Error("gateway config.get: missing text payload");let r=JSON.parse(t),n=String(r?.result?.raw??""),o=String(r?.result?.hash??"");if(!n)throw Error("gateway config.get: missing result.raw");if(!o)throw Error("gateway config.get: missing result.hash");return{raw:n,hash:o}}async function o(e,t){let{hash:r}=await n();return a({tool:"gateway",args:{action:"config.patch",raw:JSON.stringify(e,null,2),baseHash:r,note:t??"ClawKitchen settings update",restartDelayMs:1e3}})}e.s(["gatewayConfigGet",()=>n,"gatewayConfigPatch",()=>o,"toolsInvoke",()=>a])},34166,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),o=e.i(61916),i=e.i(74677),s=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(26937),g=e.i(10372),w=e.i(93695);e.i(52474);var x=e.i(220),y=e.i(89171),m=e.i(76509),v=e.i(12714),R=e.i(50227);async function E(e){let t=String((await e.json()).id??"").trim();if(!t)return y.NextResponse.json({ok:!1,error:"id is required"},{status:400});let r=await (0,m.toolsInvoke)({tool:"cron",args:{action:"remove",jobId:t}}),a=[];try{let e=await (0,m.toolsInvoke)({tool:"gateway",args:{action:"config.get",raw:"{}"}}),r=e?.content?.find(e=>"text"===e.type)?.text??"",n=r?JSON.parse(r):null,o=String(n?.result?.raw??""),i=o?JSON.parse(o):null,s=String(i?.agents?.defaults?.workspace??"").trim();if(s){let e=R.default.resolve(s,"..");for(let r of(await v.default.readdir(e,{withFileTypes:!0}))){if(!r.isDirectory()||!r.name.startsWith("workspace-"))continue;let n=r.name.replace(/^workspace-/,""),o=R.default.join(e,r.name,"team.json"),i=R.default.join(e,r.name,"notes","cron-jobs.json");try{await v.default.stat(o)}catch{continue}let s=!1,l=[];try{let e=await v.default.readFile(i,"utf8"),r=JSON.parse(e);if(!r||1!==r.version||!r.entries)continue;for(let[e,a]of Object.entries(r.entries))String(a?.installedCronId??"").trim()!==t||a.orphaned||(r.entries[e]={...a,orphaned:!0},s=!0,l.push(e));s&&(await v.default.writeFile(i,JSON.stringify(r,null,2)+"\n","utf8"),a.push({teamId:n,mappingPath:i,keys:l}))}catch{}}}}catch{}return y.NextResponse.json({ok:!0,id:t,result:r,orphanedIn:a})}e.s(["POST",()=>E],45040);var C=e.i(45040);let k=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/cron/delete/route",pathname:"/api/cron/delete",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cron/delete/route.ts",nextConfigOutput:"standalone",userland:C}),{workAsyncStorage:j,workUnitAsyncStorage:S,serverHooks:b}=k;function O(){return(0,a.patchFetch)({workAsyncStorage:j,workUnitAsyncStorage:S})}async function N(e,t,a){k.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/cron/delete/route";y=y.replace(/\/index$/,"")||"/";let m=await k.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!m)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:v,params:R,nextConfig:E,parsedUrl:C,isDraftMode:j,prerenderManifest:S,routerServerContext:b,isOnDemandRevalidate:O,revalidateOnlyGenerated:N,resolvedPathname:A,clientReferenceManifest:P,serverActionsManifest:T}=m,q=(0,s.normalizeAppPath)(y),D=!!(S.dynamicRoutes[q]||S.routes[A]),I=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,C,!1):t.end("This page could not be found"),null);if(D&&!j){let e=!!S.routes[A],t=S.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await I();throw new w.NoFallbackError}}let _=null;!D||k.isDev||j||(_="/index"===(_=A)?"/":_);let H=!0===k.isDev||!D,U=D&&!H;T&&P&&(0,i.setManifestsSingleton)({page:y,clientReferenceManifest:P,serverActionsManifest:T});let M=e.method||"GET",$=(0,o.getTracer)(),F=$.getActiveScopeSpan(),K={params:R,prerenderManifest:S,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>k.onRequestError(e,t,a,n,b)},sharedContext:{buildId:v}},J=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),W=u.NextRequestAdapter.fromNodeNextRequest(J,(0,u.signalFromNodeResponse)(t));try{let i=async e=>k.handle(W,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${y}`)}),s=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var o,l;let u=async({previousCacheEntry:r})=>{try{if(!s&&O&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await i(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let l=K.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let u=K.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(J,B,o,K.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(o.headers);u&&(t[g.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await k.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:O})},!1,b),t}},d=await k.handleResponse({req:e,nextConfig:E,cacheKey:_,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:N,responseGenerator:u,waitUntil:a.waitUntil,isMinimalMode:s});if(!D)return null;if((null==d||null==(o=d.value)?void 0:o.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",O?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),j&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let w=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return s&&D||w.delete(g.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||w.get("Cache-Control")||w.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(J,B,new Response(d.value.body,{headers:w,status:d.value.status||200})),null};F?await l(F):await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${y}`,kind:o.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof w.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:O})},!1,b),D)throw t;return await (0,p.sendResponse)(J,B,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>O,"routeModule",()=>k,"serverHooks",()=>b,"workAsyncStorage",()=>j,"workUnitAsyncStorage",()=>S],34166)}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__1398a33a._.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
module.exports=[70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},
|
|
1
|
+
module.exports=[70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},7367,e=>{"use strict";var t=e.i(12714),r=e.i(60526),a=e.i(50227);async function n(){let e=a.default.join(r.default.homedir(),".openclaw","openclaw.json");return JSON.parse(await t.default.readFile(e,"utf8"))}async function s(){let e=await n(),t=e.agents?.defaults?.workspace;if(!t)throw Error("agents.defaults.workspace is not set in ~/.openclaw/openclaw.json");return t}async function i(){let e=await s();return a.default.join(e,"recipes")}async function o(){let e=await s();return a.default.join(e,"notes","goals")}async function l(e){let t=r.default.homedir();if(!t)throw Error("Could not resolve home directory");return a.default.join(t,".openclaw",`workspace-${e}`)}async function u(){let e=await n(),t=e.plugins?.installs?.recipes?.installPath||e.plugins?.installs?.recipes?.sourcePath||e.plugins?.load?.paths?.[0];if(!t)throw Error("Could not determine recipes plugin install path from ~/.openclaw/openclaw.json");return a.default.join(t,"recipes","default")}e.s(["getBuiltinRecipesDir",()=>u,"getTeamWorkspaceDir",()=>l,"getWorkspaceDir",()=>s,"getWorkspaceGoalsDir",()=>o,"getWorkspaceRecipesDir",()=>i,"readOpenClawConfig",()=>n])},5365,(e,t,r)=>{t.exports=e.x("process",()=>require("process"))},874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},25092,e=>{"use strict";var t=e.i(12714),r=e.i(50227),a=e.i(23008),n=e.i(7367);let s=/^[a-z0-9][a-z0-9-]{1,63}$/;function i(e){if(e.startsWith("---\n")){let t=e.indexOf("\n---\n",4);if(-1!==t){let r=e.slice(4,t+1),n=e.slice(t+5);return{fm:a.default.parse(r)??{},body:n}}}return{fm:{},body:e}}function o(e,t,r){let a=new Date().toISOString(),n=e&&"object"==typeof e?e:{},s=String(n.id??t).trim(),i=String(n.title??r??s).trim()||s,o=String(n.status??"planned").trim(),l=Array.isArray(n.tags)?n.tags.map(String):[];return{id:s,title:i,status:"active"===o||"done"===o?o:"planned",tags:l,teams:Array.isArray(n.teams)?n.teams.map(String):[],updatedAt:String(n.updatedAt??a)}}async function l(){let e=await (0,n.getWorkspaceGoalsDir)();return await t.default.mkdir(e,{recursive:!0}),e}async function u(e){if(!s.test(e))throw Error(`Invalid goal id "${e}". Use 2-64 chars: lowercase letters, numbers, hyphens. Example: "increase-trial-activation".`);let t=await l(),a=r.default.join(t,`${e}.md`),n=r.default.resolve(t)+r.default.sep;if(!r.default.resolve(a).startsWith(n))throw Error("Path traversal rejected");return{root:t,full:a}}async function d(){let e=await l(),a=(await t.default.readdir(e)).filter(e=>e.endsWith(".md")),n=[];for(let s of a){let a=r.default.join(e,s),l=await t.default.readFile(a,"utf8"),u=s.replace(/\.md$/,""),{fm:d}=i(l),c=o(d,u,u);n.push({...c,filename:s})}let s={active:0,planned:1,done:2};return n.sort((e,t)=>{let r=s[e.status],a=s[t.status];return r!==a?r-a:String(t.updatedAt).localeCompare(String(e.updatedAt))}),n}async function c(e){let{full:r}=await u(e);try{let a=await t.default.readFile(r,"utf8"),{fm:n,body:s}=i(a),l=n&&"object"==typeof n?n:{};return{frontmatter:o(n,e,String(l.title??e)),body:s,raw:a}}catch(e){if("object"==typeof e&&e&&"ENOENT"===e.code)return null;throw e}}async function p(e){let{id:r}=e,{full:n}=await u(r),s=new Date().toISOString(),i={id:r,title:e.title,status:e.status??"planned",tags:e.tags??[],teams:e.teams??[],updatedAt:s},o=`---
|
|
2
2
|
${a.default.stringify(i).trim()}
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
${(e.body??"").trim()}
|
|
6
6
|
`;return await t.default.writeFile(n,o,"utf8"),{frontmatter:i,raw:o}}async function f(e){let{full:r}=await u(e);try{return await t.default.unlink(r),{ok:!0}}catch(e){if("object"==typeof e&&e&&"ENOENT"===e.code)return{ok:!1,reason:"not_found"};throw e}}e.s(["deleteGoal",()=>f,"listGoals",()=>d,"readGoal",()=>c,"writeGoal",()=>p])},19682,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),s=e.i(61916),i=e.i(74677),o=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(26937),g=e.i(10372),w=e.i(93695);e.i(52474);var m=e.i(220),x=e.i(89171),y=e.i(25092);async function v(){try{let e=await (0,y.listGoals)();return x.NextResponse.json({goals:e})}catch(t){let e=t instanceof Error?t.message:String(t);return x.NextResponse.json({error:e},{status:500})}}async function R(e){try{let t=await e.json(),r=String(t?.id??"").trim(),a=String(t?.title??"").trim();if(!r||!a)return x.NextResponse.json({error:"id and title are required"},{status:400});let n=await (0,y.writeGoal)({id:r,title:a,status:t?.status,tags:Array.isArray(t?.tags)?t.tags:[],teams:Array.isArray(t?.teams)?t.teams:[],body:String(t?.body??"")});return x.NextResponse.json({goal:n.frontmatter})}catch(r){let e=r instanceof Error?r.message:String(r),t=/Invalid goal id|Path traversal/.test(e)?400:500;return x.NextResponse.json({error:e},{status:t})}}e.s(["GET",()=>v,"POST",()=>R],42709);var E=e.i(42709);let A=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/goals/route",pathname:"/api/goals",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/goals/route.ts",nextConfigOutput:"standalone",userland:E}),{workAsyncStorage:C,workUnitAsyncStorage:S,serverHooks:b}=A;function j(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:S})}async function k(e,t,a){A.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/goals/route";x=x.replace(/\/index$/,"")||"/";let y=await A.prepare(e,t,{srcPage:x,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:v,params:R,nextConfig:E,parsedUrl:C,isDraftMode:S,prerenderManifest:b,routerServerContext:j,isOnDemandRevalidate:k,revalidateOnlyGenerated:N,resolvedPathname:O,clientReferenceManifest:T,serverActionsManifest:P}=y,q=(0,o.normalizeAppPath)(x),D=!!(b.dynamicRoutes[q]||b.routes[O]),_=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,C,!1):t.end("This page could not be found"),null);if(D&&!S){let e=!!b.routes[O],t=b.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await _();throw new w.NoFallbackError}}let I=null;!D||A.isDev||S||(I="/index"===(I=O)?"/":I);let H=!0===A.isDev||!D,U=D&&!H;P&&T&&(0,i.setManifestsSingleton)({page:x,clientReferenceManifest:T,serverActionsManifest:P});let $=e.method||"GET",F=(0,s.getTracer)(),G=F.getActiveScopeSpan(),M={params:R,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>A.onRequestError(e,t,a,n,j)},sharedContext:{buildId:v}},W=new l.NodeNextRequest(e),K=new l.NodeNextResponse(t),B=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let i=async e=>A.handle(B,M).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${$} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${$} ${x}`)}),o=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var s,l;let u=async({previousCacheEntry:r})=>{try{if(!o&&k&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=M.renderOpts.fetchMetrics;let l=M.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let u=M.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(W,K,s,M.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);u&&(t[g.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,a=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:k})},!1,j),t}},d=await A.handleResponse({req:e,nextConfig:E,cacheKey:I,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:k,revalidateOnlyGenerated:N,responseGenerator:u,waitUntil:a.waitUntil,isMinimalMode:o});if(!D)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==m.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",k?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let w=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return o&&D||w.delete(g.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||w.get("Cache-Control")||w.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(W,K,new Response(d.value.body,{headers:w,status:d.value.status||200})),null};G?await l(G):await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${$} ${x}`,kind:s.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},l))}catch(t){if(t instanceof w.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:k})},!1,j),D)throw t;return await (0,p.sendResponse)(W,K,new Response(null,{status:500})),null}}e.s(["handler",()=>k,"patchFetch",()=>j,"routeModule",()=>A,"serverHooks",()=>b,"workAsyncStorage",()=>C,"workUnitAsyncStorage",()=>S],19682)}];
|
|
7
7
|
|
|
8
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
8
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__159c002b._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},
|
|
1
|
+
module.exports=[70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},7367,e=>{"use strict";var t=e.i(12714),r=e.i(60526),a=e.i(50227);async function n(){let e=a.default.join(r.default.homedir(),".openclaw","openclaw.json");return JSON.parse(await t.default.readFile(e,"utf8"))}async function s(){let e=await n(),t=e.agents?.defaults?.workspace;if(!t)throw Error("agents.defaults.workspace is not set in ~/.openclaw/openclaw.json");return t}async function o(){let e=await s();return a.default.join(e,"recipes")}async function i(){let e=await s();return a.default.join(e,"notes","goals")}async function l(e){let t=r.default.homedir();if(!t)throw Error("Could not resolve home directory");return a.default.join(t,".openclaw",`workspace-${e}`)}async function u(){let e=await n(),t=e.plugins?.installs?.recipes?.installPath||e.plugins?.installs?.recipes?.sourcePath||e.plugins?.load?.paths?.[0];if(!t)throw Error("Could not determine recipes plugin install path from ~/.openclaw/openclaw.json");return a.default.join(t,"recipes","default")}e.s(["getBuiltinRecipesDir",()=>u,"getTeamWorkspaceDir",()=>l,"getWorkspaceDir",()=>s,"getWorkspaceGoalsDir",()=>i,"getWorkspaceRecipesDir",()=>o,"readOpenClawConfig",()=>n])},77155,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),s=e.i(61916),o=e.i(74677),i=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),p=e.i(47587),c=e.i(66012),f=e.i(70101),h=e.i(26937),x=e.i(10372),w=e.i(93695);e.i(52474);var g=e.i(220),m=e.i(12714),R=e.i(50227),v=e.i(89171),y=e.i(7367);function E(e,t){return R.default.resolve(e,"..",`workspace-${t}`)}async function C(e){let{searchParams:t}=new URL(e.url),r=String(t.get("teamId")??"").trim();if(!r)return v.NextResponse.json({ok:!1,error:"teamId is required"},{status:400});let a=await (0,y.readOpenClawConfig)(),n=String(a.agents?.defaults?.workspace??"").trim();if(!n)return v.NextResponse.json({ok:!1,error:"agents.defaults.workspace not set"},{status:500});let s=E(n,r),o=R.default.join(s,"team.json");try{let e=await m.default.readFile(o,"utf8"),t=JSON.parse(e);return v.NextResponse.json({ok:!0,teamId:r,teamDir:s,metaPath:o,meta:t})}catch{return v.NextResponse.json({ok:!0,teamId:r,teamDir:s,metaPath:o,meta:null,missing:!0})}}async function k(e){let t=await e.json(),r=String(t.teamId??"").trim(),a=String(t.recipeId??"").trim(),n="string"==typeof t.recipeName?t.recipeName:"";if(!r)return v.NextResponse.json({ok:!1,error:"teamId is required"},{status:400});if(!a)return v.NextResponse.json({ok:!1,error:"recipeId is required"},{status:400});let s=await (0,y.readOpenClawConfig)(),o=String(s.agents?.defaults?.workspace??"").trim();if(!o)return v.NextResponse.json({ok:!1,error:"agents.defaults.workspace not set"},{status:500});let i=E(o,r),l=R.default.join(i,"team.json"),u={teamId:r,recipeId:a,recipeName:n,attachedAt:new Date().toISOString()};return await m.default.mkdir(i,{recursive:!0}),await m.default.writeFile(l,JSON.stringify(u,null,2)+"\n","utf8"),v.NextResponse.json({ok:!0,teamId:r,teamDir:i,metaPath:l,meta:u})}e.s(["GET",()=>C,"POST",()=>k],14566);var j=e.i(14566);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/teams/meta/route",pathname:"/api/teams/meta",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/teams/meta/route.ts",nextConfigOutput:"standalone",userland:j}),{workAsyncStorage:A,workUnitAsyncStorage:S,serverHooks:O}=N;function b(){return(0,a.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:S})}async function T(e,t,a){N.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/teams/meta/route";m=m.replace(/\/index$/,"")||"/";let R=await N.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:v,params:y,nextConfig:E,parsedUrl:C,isDraftMode:k,prerenderManifest:j,routerServerContext:A,isOnDemandRevalidate:S,revalidateOnlyGenerated:O,resolvedPathname:b,clientReferenceManifest:T,serverActionsManifest:q}=R,P=(0,i.normalizeAppPath)(m),I=!!(j.dynamicRoutes[P]||j.routes[b]),_=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,C,!1):t.end("This page could not be found"),null);if(I&&!k){let e=!!j.routes[b],t=j.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await _();throw new w.NoFallbackError}}let D=null;!I||N.isDev||k||(D="/index"===(D=b)?"/":D);let H=!0===N.isDev||!I,U=I&&!H;q&&T&&(0,o.setManifestsSingleton)({page:m,clientReferenceManifest:T,serverActionsManifest:q});let M=e.method||"GET",F=(0,s.getTracer)(),$=F.getActiveScopeSpan(),K={params:y,prerenderManifest:j,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>N.onRequestError(e,t,a,n,A)},sharedContext:{buildId:v}},B=new l.NodeNextRequest(e),L=new l.NodeNextResponse(t),W=u.NextRequestAdapter.fromNodeNextRequest(B,(0,u.signalFromNodeResponse)(t));try{let o=async e=>N.handle(W,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${m}`)}),i=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var s,l;let u=async({previousCacheEntry:r})=>{try{if(!i&&S&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let l=K.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let u=K.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(B,L,s,K.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);u&&(t[x.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=x.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:m,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:S})},!1,A),t}},d=await N.handleResponse({req:e,nextConfig:E,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:j,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:O,responseGenerator:u,waitUntil:a.waitUntil,isMinimalMode:i});if(!I)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",S?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let w=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return i&&I||w.delete(x.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||w.get("Cache-Control")||w.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,c.sendResponse)(B,L,new Response(d.value.body,{headers:w,status:d.value.status||200})),null};$?await l($):await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${m}`,kind:s.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof w.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:S})},!1,A),I)throw t;return await (0,c.sendResponse)(B,L,new Response(null,{status:500})),null}}e.s(["handler",()=>T,"patchFetch",()=>b,"routeModule",()=>N,"serverHooks",()=>O,"workAsyncStorage",()=>A,"workUnitAsyncStorage",()=>S],77155)}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__20c60fb7._.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
module.exports=[59494,e=>{"use strict";function t(){let e=globalThis.__clawkitchen_api;if(!e)throw Error("ClawKitchen: OpenClaw plugin API not available. (This should only happen if Kitchen is started outside the gateway process.)");return e}e.s(["getKitchenApi",()=>t])},5003,e=>{"use strict";var t=e.i(59494);async function r(e){let r=(0,t.getKitchenApi)();try{let t=await r.runtime.system.runCommandWithTimeout(["openclaw",...e],{timeoutMs:12e4}),n=String(t.stdout??""),a=String(t.stderr??""),i="number"==typeof t.exitCode?t.exitCode:"number"==typeof t.code?t.code:"number"==typeof t.status?t.status:0;if(0!==i)return{ok:!1,exitCode:i,stdout:n,stderr:a};return{ok:!0,exitCode:0,stdout:n,stderr:a}}catch(t){let e="number"==typeof t.code?t.code:1;return{ok:!1,exitCode:e,stdout:"string"==typeof t.stdout?t.stdout:"",stderr:"string"==typeof t.stderr?t.stderr:"string"==typeof t.message?t.message:String(t)}}}e.s(["runOpenClaw",()=>r])},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},7367,e=>{"use strict";var t=e.i(12714),r=e.i(60526),n=e.i(50227);async function a(){let e=n.default.join(r.default.homedir(),".openclaw","openclaw.json");return JSON.parse(await t.default.readFile(e,"utf8"))}async function i(){let e=await a(),t=e.agents?.defaults?.workspace;if(!t)throw Error("agents.defaults.workspace is not set in ~/.openclaw/openclaw.json");return t}async function o(){let e=await i();return n.default.join(e,"recipes")}async function s(){let e=await i();return n.default.join(e,"notes","goals")}async function l(e){let t=r.default.homedir();if(!t)throw Error("Could not resolve home directory");return n.default.join(t,".openclaw",`workspace-${e}`)}async function d(){let e=await a(),t=e.plugins?.installs?.recipes?.installPath||e.plugins?.installs?.recipes?.sourcePath||e.plugins?.load?.paths?.[0];if(!t)throw Error("Could not determine recipes plugin install path from ~/.openclaw/openclaw.json");return n.default.join(t,"recipes","default")}e.s(["getBuiltinRecipesDir",()=>d,"getTeamWorkspaceDir",()=>l,"getWorkspaceDir",()=>i,"getWorkspaceGoalsDir",()=>s,"getWorkspaceRecipesDir",()=>o,"readOpenClawConfig",()=>a])},5365,(e,t,r)=>{t.exports=e.x("process",()=>require("process"))},874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},72420,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),i=e.i(61916),o=e.i(74677),s=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),p=e.i(47587),c=e.i(66012),f=e.i(70101),h=e.i(26937),m=e.i(10372),x=e.i(93695);e.i(52474);var g=e.i(220),w=e.i(12714),R=e.i(50227),v=e.i(23008),y=e.i(89171),C=e.i(7367),E=e.i(5003);async function k(e){let t=await e.json(),r=String(t.fromId??"").trim(),n=String(t.toId??"").trim(),a="string"==typeof t.toName?t.toName:void 0,i=!!t.overwrite,o=!!t.scaffold;if(!r)return y.NextResponse.json({ok:!1,error:"Missing fromId"},{status:400});if(!n)return y.NextResponse.json({ok:!1,error:"Missing toId"},{status:400});let s=await (0,E.runOpenClaw)(["recipes","show",r]);if(!s.ok)return y.NextResponse.json({ok:!1,error:s.stderr.trim()||`openclaw recipes show ${r} failed (exit=${s.exitCode}). Is the recipes plugin enabled?`},{status:400});let l=String(s.stdout??"");if(!l.startsWith("---\n"))throw Error("Recipe markdown must start with YAML frontmatter (---)");let d=l.indexOf("\n---\n",4);if(-1===d)throw Error("Recipe frontmatter not terminated (---)");let u=l.slice(4,d+1),p=v.default.parse(u)??{},c=String(p.kind??"").trim().toLowerCase(),f={...p,id:n,...a?{name:a}:{},..."team"===c?{team:{..."object"==typeof p.team&&p.team?p.team:{},teamId:n}}:{}},h=v.default.stringify(f).trimEnd(),m=`---
|
|
2
|
+
${h}
|
|
3
|
+
---
|
|
4
|
+
${l.slice(d+5)}`;function x(e){let t=String(e||"recipe").trim();return[`custom-${t}`,`my-${t}`,`${t}-2`,`${t}-alt`]}let g=await (0,C.getWorkspaceRecipesDir)(),k=R.default.join(g,`${n}.md`);try{if(await w.default.stat(k),!i)return y.NextResponse.json({ok:!1,error:`Recipe id already exists: ${n}. Choose a different id (e.g. ${x(n).join(", ")}).`,code:"RECIPE_ID_TAKEN",recipeId:n,suggestions:x(n),filePath:k},{status:409})}catch{}await w.default.mkdir(R.default.dirname(k),{recursive:!0}),await w.default.writeFile(k,m,"utf8");let b=null;if(o){let e="team"===c?["recipes","scaffold-team",n,"--team-id",n,"--overwrite","--overwrite-recipe"]:"agent"===c?["recipes","scaffold",n,"--agent-id",n,"--overwrite","--overwrite-recipe"]:null;if(e){let t=await (0,E.runOpenClaw)(e);b=t.ok?{ok:!0,stdout:String(t.stdout??""),stderr:String(t.stderr??""),exitCode:t.exitCode}:{ok:!1,error:t.stderr.trim()||`openclaw ${e.join(" ")} failed (exit=${t.exitCode})`,stdout:String(t.stdout??""),stderr:String(t.stderr??""),exitCode:t.exitCode}}else b={ok:!1,error:`Unsupported recipe kind for scaffold: ${c||"(missing kind)"}`,stdout:"",stderr:"",exitCode:null}}return y.NextResponse.json({ok:!0,filePath:k,recipeId:n,content:m,scaffold:b})}e.s(["POST",()=>k],78983);var b=e.i(78983);let j=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/recipes/clone/route",pathname:"/api/recipes/clone",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/recipes/clone/route.ts",nextConfigOutput:"standalone",userland:b}),{workAsyncStorage:A,workUnitAsyncStorage:S,serverHooks:N}=j;function T(){return(0,n.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:S})}async function O(e,t,n){j.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/recipes/clone/route";w=w.replace(/\/index$/,"")||"/";let R=await j.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:v,params:y,nextConfig:C,parsedUrl:E,isDraftMode:k,prerenderManifest:b,routerServerContext:A,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,resolvedPathname:T,clientReferenceManifest:O,serverActionsManifest:P}=R,I=(0,s.normalizeAppPath)(w),q=!!(b.dynamicRoutes[I]||b.routes[T]),_=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,E,!1):t.end("This page could not be found"),null);if(q&&!k){let e=!!b.routes[T],t=b.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await _();throw new x.NoFallbackError}}let $=null;!q||j.isDev||k||($="/index"===($=T)?"/":$);let D=!0===j.isDev||!q,H=q&&!D;P&&O&&(0,o.setManifestsSingleton)({page:w,clientReferenceManifest:O,serverActionsManifest:P});let U=e.method||"GET",M=(0,i.getTracer)(),K=M.getActiveScopeSpan(),F={params:y,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>j.onRequestError(e,t,n,a,A)},sharedContext:{buildId:v}},W=new l.NodeNextRequest(e),L=new l.NodeNextResponse(t),B=d.NextRequestAdapter.fromNodeNextRequest(W,(0,d.signalFromNodeResponse)(t));try{let o=async e=>j.handle(B,F).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${U} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${U} ${w}`)}),s=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var i,l;let d=async({previousCacheEntry:r})=>{try{if(!s&&S&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await o(a);e.fetchMetrics=F.renderOpts.fetchMetrics;let l=F.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let d=F.renderOpts.collectedTags;if(!q)return await (0,c.sendResponse)(W,L,i,F.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(i.headers);d&&(t[m.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==F.renderOpts.collectedRevalidate&&!(F.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&F.renderOpts.collectedRevalidate,n=void 0===F.renderOpts.collectedExpire||F.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:F.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await j.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})},!1,A),t}},u=await j.handleResponse({req:e,nextConfig:C,cacheKey:$,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:N,responseGenerator:d,waitUntil:n.waitUntil,isMinimalMode:s});if(!q)return null;if((null==u||null==(i=u.value)?void 0:i.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});s||t.setHeader("x-nextjs-cache",S?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let x=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return s&&q||x.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||x.get("Cache-Control")||x.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(W,L,new Response(u.value.body,{headers:x,status:u.value.status||200})),null};K?await l(K):await M.withPropagatedContext(e.headers,()=>M.trace(u.BaseServerSpan.handleRequest,{spanName:`${U} ${w}`,kind:i.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},l))}catch(t){if(t instanceof x.NoFallbackError||await j.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})},!1,A),q)throw t;return await (0,c.sendResponse)(W,L,new Response(null,{status:500})),null}}e.s(["handler",()=>O,"patchFetch",()=>T,"routeModule",()=>j,"serverHooks",()=>N,"workAsyncStorage",()=>A,"workUnitAsyncStorage",()=>S],72420)}];
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__2588560d._.js.map
|