leedab 0.7.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. package/apps/console/.next/standalone/.next/BUILD_ID +1 -1
  2. package/apps/console/.next/standalone/.next/app-build-manifest.json +198 -177
  3. package/apps/console/.next/standalone/.next/app-path-routes-manifest.json +53 -50
  4. package/apps/console/.next/standalone/.next/build-manifest.json +2 -2
  5. package/apps/console/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  6. package/apps/console/.next/standalone/.next/server/app/_not-found.html +1 -1
  7. package/apps/console/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  8. package/apps/console/.next/standalone/.next/server/app/api/agent/route.js.nft.json +1 -1
  9. package/apps/console/.next/standalone/.next/server/app/api/agent/route_client-reference-manifest.js +1 -1
  10. package/apps/console/.next/standalone/.next/server/app/api/approvals/route.js.nft.json +1 -1
  11. package/apps/console/.next/standalone/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  12. package/apps/console/.next/standalone/.next/server/app/api/approvals/stream/route.js.nft.json +1 -1
  13. package/apps/console/.next/standalone/.next/server/app/api/approvals/stream/route_client-reference-manifest.js +1 -1
  14. package/apps/console/.next/standalone/.next/server/app/api/automation/workflow-blueprint/route.js.nft.json +1 -1
  15. package/apps/console/.next/standalone/.next/server/app/api/automation/workflow-blueprint/route_client-reference-manifest.js +1 -1
  16. package/apps/console/.next/standalone/.next/server/app/api/backend/endpoint-spec/route.js.nft.json +1 -1
  17. package/apps/console/.next/standalone/.next/server/app/api/backend/endpoint-spec/route_client-reference-manifest.js +1 -1
  18. package/apps/console/.next/standalone/.next/server/app/api/bootstrap-admin-token/route_client-reference-manifest.js +1 -1
  19. package/apps/console/.next/standalone/.next/server/app/api/brand/brand-audit/route.js.nft.json +1 -1
  20. package/apps/console/.next/standalone/.next/server/app/api/brand/brand-audit/route_client-reference-manifest.js +1 -1
  21. package/apps/console/.next/standalone/.next/server/app/api/campaigns/campaign-brief/route.js.nft.json +1 -1
  22. package/apps/console/.next/standalone/.next/server/app/api/campaigns/campaign-brief/route_client-reference-manifest.js +1 -1
  23. package/apps/console/.next/standalone/.next/server/app/api/champion/confidence/route.js.nft.json +1 -1
  24. package/apps/console/.next/standalone/.next/server/app/api/champion/confidence/route_client-reference-manifest.js +1 -1
  25. package/apps/console/.next/standalone/.next/server/app/api/champion/customer/route.js.nft.json +1 -1
  26. package/apps/console/.next/standalone/.next/server/app/api/champion/customer/route_client-reference-manifest.js +1 -1
  27. package/apps/console/.next/standalone/.next/server/app/api/champion/dispatches/route.js.nft.json +1 -1
  28. package/apps/console/.next/standalone/.next/server/app/api/champion/dispatches/route_client-reference-manifest.js +1 -1
  29. package/apps/console/.next/standalone/.next/server/app/api/champion/engagement/route.js.nft.json +1 -1
  30. package/apps/console/.next/standalone/.next/server/app/api/champion/engagement/route_client-reference-manifest.js +1 -1
  31. package/apps/console/.next/standalone/.next/server/app/api/champion/escalate/route.js.nft.json +1 -1
  32. package/apps/console/.next/standalone/.next/server/app/api/champion/escalate/route_client-reference-manifest.js +1 -1
  33. package/apps/console/.next/standalone/.next/server/app/api/champion/profile/route.js.nft.json +1 -1
  34. package/apps/console/.next/standalone/.next/server/app/api/champion/profile/route_client-reference-manifest.js +1 -1
  35. package/apps/console/.next/standalone/.next/server/app/api/champion/screenshare/route.js.nft.json +1 -1
  36. package/apps/console/.next/standalone/.next/server/app/api/champion/screenshare/route_client-reference-manifest.js +1 -1
  37. package/apps/console/.next/standalone/.next/server/app/api/champion/track-question/route.js.nft.json +1 -1
  38. package/apps/console/.next/standalone/.next/server/app/api/champion/track-question/route_client-reference-manifest.js +1 -1
  39. package/apps/console/.next/standalone/.next/server/app/api/champion/use-case-wiki/route_client-reference-manifest.js +1 -1
  40. package/apps/console/.next/standalone/.next/server/app/api/chat/route.js.nft.json +1 -1
  41. package/apps/console/.next/standalone/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
  42. package/apps/console/.next/standalone/.next/server/app/api/compliance/risk-register-seed/route.js.nft.json +1 -1
  43. package/apps/console/.next/standalone/.next/server/app/api/compliance/risk-register-seed/route_client-reference-manifest.js +1 -1
  44. package/apps/console/.next/standalone/.next/server/app/api/computer-use/[id]/route.js.nft.json +1 -1
  45. package/apps/console/.next/standalone/.next/server/app/api/computer-use/[id]/route_client-reference-manifest.js +1 -1
  46. package/apps/console/.next/standalone/.next/server/app/api/computer-use/route.js.nft.json +1 -1
  47. package/apps/console/.next/standalone/.next/server/app/api/computer-use/route_client-reference-manifest.js +1 -1
  48. package/apps/console/.next/standalone/.next/server/app/api/concierge/morning-brief/route.js.nft.json +1 -1
  49. package/apps/console/.next/standalone/.next/server/app/api/concierge/morning-brief/route_client-reference-manifest.js +1 -1
  50. package/apps/console/.next/standalone/.next/server/app/api/contacts/route.js.nft.json +1 -1
  51. package/apps/console/.next/standalone/.next/server/app/api/contacts/route_client-reference-manifest.js +1 -1
  52. package/apps/console/.next/standalone/.next/server/app/api/content/seo-brief/route.js.nft.json +1 -1
  53. package/apps/console/.next/standalone/.next/server/app/api/content/seo-brief/route_client-reference-manifest.js +1 -1
  54. package/apps/console/.next/standalone/.next/server/app/api/conversations/route.js.nft.json +1 -1
  55. package/apps/console/.next/standalone/.next/server/app/api/conversations/route_client-reference-manifest.js +1 -1
  56. package/apps/console/.next/standalone/.next/server/app/api/coo/roster/route.js +1 -0
  57. package/apps/console/.next/standalone/.next/server/app/api/coo/roster/route.js.nft.json +1 -0
  58. package/apps/console/.next/standalone/.next/server/app/api/coo/roster/route_client-reference-manifest.js +1 -0
  59. package/apps/console/.next/standalone/.next/server/app/api/coo/route.js.nft.json +1 -1
  60. package/apps/console/.next/standalone/.next/server/app/api/coo/route_client-reference-manifest.js +1 -1
  61. package/apps/console/.next/standalone/.next/server/app/api/cx/escalation-triage/route.js.nft.json +1 -1
  62. package/apps/console/.next/standalone/.next/server/app/api/cx/escalation-triage/route_client-reference-manifest.js +1 -1
  63. package/apps/console/.next/standalone/.next/server/app/api/cx/health-score/route.js.nft.json +1 -1
  64. package/apps/console/.next/standalone/.next/server/app/api/cx/health-score/route_client-reference-manifest.js +1 -1
  65. package/apps/console/.next/standalone/.next/server/app/api/data/cohort-brief/route.js.nft.json +1 -1
  66. package/apps/console/.next/standalone/.next/server/app/api/data/cohort-brief/route_client-reference-manifest.js +1 -1
  67. package/apps/console/.next/standalone/.next/server/app/api/delegate/route.js +1 -0
  68. package/apps/console/.next/standalone/.next/server/app/api/delegate/route.js.nft.json +1 -0
  69. package/apps/console/.next/standalone/.next/server/app/api/delegate/route_client-reference-manifest.js +1 -0
  70. package/apps/console/.next/standalone/.next/server/app/api/delegate/stream/route.js +4 -0
  71. package/apps/console/.next/standalone/.next/server/app/api/delegate/stream/route.js.nft.json +1 -0
  72. package/apps/console/.next/standalone/.next/server/app/api/delegate/stream/route_client-reference-manifest.js +1 -0
  73. package/apps/console/.next/standalone/.next/server/app/api/delivery/qbr-brief/route.js.nft.json +1 -1
  74. package/apps/console/.next/standalone/.next/server/app/api/delivery/qbr-brief/route_client-reference-manifest.js +1 -1
  75. package/apps/console/.next/standalone/.next/server/app/api/delivery/weekly-brief/route.js.nft.json +1 -1
  76. package/apps/console/.next/standalone/.next/server/app/api/delivery/weekly-brief/route_client-reference-manifest.js +1 -1
  77. package/apps/console/.next/standalone/.next/server/app/api/dev/invalidate-cache/route.js.nft.json +1 -1
  78. package/apps/console/.next/standalone/.next/server/app/api/dev/invalidate-cache/route_client-reference-manifest.js +1 -1
  79. package/apps/console/.next/standalone/.next/server/app/api/devops/runbook/route.js.nft.json +1 -1
  80. package/apps/console/.next/standalone/.next/server/app/api/devops/runbook/route_client-reference-manifest.js +1 -1
  81. package/apps/console/.next/standalone/.next/server/app/api/email/sequence-brief/route.js.nft.json +1 -1
  82. package/apps/console/.next/standalone/.next/server/app/api/email/sequence-brief/route_client-reference-manifest.js +1 -1
  83. package/apps/console/.next/standalone/.next/server/app/api/engineering/adr-draft/route.js.nft.json +1 -1
  84. package/apps/console/.next/standalone/.next/server/app/api/engineering/adr-draft/route_client-reference-manifest.js +1 -1
  85. package/apps/console/.next/standalone/.next/server/app/api/finance/runway-snapshot/route.js.nft.json +1 -1
  86. package/apps/console/.next/standalone/.next/server/app/api/finance/runway-snapshot/route_client-reference-manifest.js +1 -1
  87. package/apps/console/.next/standalone/.next/server/app/api/frontend/component-spec/route.js.nft.json +1 -1
  88. package/apps/console/.next/standalone/.next/server/app/api/frontend/component-spec/route_client-reference-manifest.js +1 -1
  89. package/apps/console/.next/standalone/.next/server/app/api/health/route.js.nft.json +1 -1
  90. package/apps/console/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  91. package/apps/console/.next/standalone/.next/server/app/api/implementation/brief/route.js.nft.json +1 -1
  92. package/apps/console/.next/standalone/.next/server/app/api/implementation/brief/route_client-reference-manifest.js +1 -1
  93. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-migration-script/route.js.nft.json +1 -1
  94. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-migration-script/route_client-reference-manifest.js +1 -1
  95. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-n8n-workflow/route.js.nft.json +1 -1
  96. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-n8n-workflow/route_client-reference-manifest.js +1 -1
  97. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-skill-override/route.js.nft.json +1 -1
  98. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-skill-override/route_client-reference-manifest.js +1 -1
  99. package/apps/console/.next/standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  100. package/apps/console/.next/standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  101. package/apps/console/.next/standalone/.next/server/app/api/inbox/stream/route.js.nft.json +1 -1
  102. package/apps/console/.next/standalone/.next/server/app/api/inbox/stream/route_client-reference-manifest.js +1 -1
  103. package/apps/console/.next/standalone/.next/server/app/api/investor/kpi-tracker/route.js.nft.json +1 -1
  104. package/apps/console/.next/standalone/.next/server/app/api/investor/kpi-tracker/route_client-reference-manifest.js +1 -1
  105. package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/status/route.js +1 -1
  106. package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/status/route_client-reference-manifest.js +1 -1
  107. package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/telegram/connect/route.js +1 -1
  108. package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/telegram/connect/route_client-reference-manifest.js +1 -1
  109. package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/whatsapp/connect/route_client-reference-manifest.js +1 -1
  110. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/route.js.nft.json +1 -1
  111. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/route_client-reference-manifest.js +1 -1
  112. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/status/route.js.nft.json +1 -1
  113. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/status/route_client-reference-manifest.js +1 -1
  114. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/templates/[name]/route.js.nft.json +1 -1
  115. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/templates/[name]/route_client-reference-manifest.js +1 -1
  116. package/apps/console/.next/standalone/.next/server/app/api/leedab/license/route_client-reference-manifest.js +1 -1
  117. package/apps/console/.next/standalone/.next/server/app/api/leedab/models/route_client-reference-manifest.js +1 -1
  118. package/apps/console/.next/standalone/.next/server/app/api/leedab/providers/route_client-reference-manifest.js +1 -1
  119. package/apps/console/.next/standalone/.next/server/app/api/leedab/sessions/[id]/route_client-reference-manifest.js +1 -1
  120. package/apps/console/.next/standalone/.next/server/app/api/leedab/sessions/route_client-reference-manifest.js +1 -1
  121. package/apps/console/.next/standalone/.next/server/app/api/leedab/team/[id]/route_client-reference-manifest.js +1 -1
  122. package/apps/console/.next/standalone/.next/server/app/api/leedab/team/route_client-reference-manifest.js +1 -1
  123. package/apps/console/.next/standalone/.next/server/app/api/leedab/vault/route_client-reference-manifest.js +1 -1
  124. package/apps/console/.next/standalone/.next/server/app/api/leedab/workflows/route_client-reference-manifest.js +1 -1
  125. package/apps/console/.next/standalone/.next/server/app/api/legal/clause-template/route.js.nft.json +1 -1
  126. package/apps/console/.next/standalone/.next/server/app/api/legal/clause-template/route_client-reference-manifest.js +1 -1
  127. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/draft/route.js.nft.json +1 -1
  128. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/draft/route_client-reference-manifest.js +1 -1
  129. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/route.js.nft.json +1 -1
  130. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/route_client-reference-manifest.js +1 -1
  131. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/route.js.nft.json +1 -1
  132. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/route_client-reference-manifest.js +1 -1
  133. package/apps/console/.next/standalone/.next/server/app/api/marketing/cadence-planner/route.js.nft.json +1 -1
  134. package/apps/console/.next/standalone/.next/server/app/api/marketing/cadence-planner/route_client-reference-manifest.js +1 -1
  135. package/apps/console/.next/standalone/.next/server/app/api/marketing/competitive-snapshot/route.js.nft.json +1 -1
  136. package/apps/console/.next/standalone/.next/server/app/api/marketing/competitive-snapshot/route_client-reference-manifest.js +1 -1
  137. package/apps/console/.next/standalone/.next/server/app/api/marketplace/catalogue/route.js.nft.json +1 -1
  138. package/apps/console/.next/standalone/.next/server/app/api/marketplace/catalogue/route_client-reference-manifest.js +1 -1
  139. package/apps/console/.next/standalone/.next/server/app/api/onboarding/engagement-plan/route.js.nft.json +1 -1
  140. package/apps/console/.next/standalone/.next/server/app/api/onboarding/engagement-plan/route_client-reference-manifest.js +1 -1
  141. package/apps/console/.next/standalone/.next/server/app/api/onboarding/kickoff-brief/route.js.nft.json +1 -1
  142. package/apps/console/.next/standalone/.next/server/app/api/onboarding/kickoff-brief/route_client-reference-manifest.js +1 -1
  143. package/apps/console/.next/standalone/.next/server/app/api/openclaw/status/route_client-reference-manifest.js +1 -1
  144. package/apps/console/.next/standalone/.next/server/app/api/ops/dispatch-brief/route.js.nft.json +1 -1
  145. package/apps/console/.next/standalone/.next/server/app/api/ops/dispatch-brief/route_client-reference-manifest.js +1 -1
  146. package/apps/console/.next/standalone/.next/server/app/api/pack/route.js +1 -1
  147. package/apps/console/.next/standalone/.next/server/app/api/pack/route.js.nft.json +1 -1
  148. package/apps/console/.next/standalone/.next/server/app/api/pack/route_client-reference-manifest.js +1 -1
  149. package/apps/console/.next/standalone/.next/server/app/api/people/job-brief/route.js.nft.json +1 -1
  150. package/apps/console/.next/standalone/.next/server/app/api/people/job-brief/route_client-reference-manifest.js +1 -1
  151. package/apps/console/.next/standalone/.next/server/app/api/preferences/route.js.nft.json +1 -1
  152. package/apps/console/.next/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  153. package/apps/console/.next/standalone/.next/server/app/api/procurement/po-brief/route.js.nft.json +1 -1
  154. package/apps/console/.next/standalone/.next/server/app/api/procurement/po-brief/route_client-reference-manifest.js +1 -1
  155. package/apps/console/.next/standalone/.next/server/app/api/product/prd-draft/route.js.nft.json +1 -1
  156. package/apps/console/.next/standalone/.next/server/app/api/product/prd-draft/route_client-reference-manifest.js +1 -1
  157. package/apps/console/.next/standalone/.next/server/app/api/research/prospect-intel/route.js.nft.json +1 -1
  158. package/apps/console/.next/standalone/.next/server/app/api/research/prospect-intel/route_client-reference-manifest.js +1 -1
  159. package/apps/console/.next/standalone/.next/server/app/api/research/search/route.js.nft.json +1 -1
  160. package/apps/console/.next/standalone/.next/server/app/api/research/search/route_client-reference-manifest.js +1 -1
  161. package/apps/console/.next/standalone/.next/server/app/api/routing/route.js.nft.json +1 -1
  162. package/apps/console/.next/standalone/.next/server/app/api/routing/route_client-reference-manifest.js +1 -1
  163. package/apps/console/.next/standalone/.next/server/app/api/runs/route.js +1 -1
  164. package/apps/console/.next/standalone/.next/server/app/api/runs/route.js.nft.json +1 -1
  165. package/apps/console/.next/standalone/.next/server/app/api/runs/route_client-reference-manifest.js +1 -1
  166. package/apps/console/.next/standalone/.next/server/app/api/sales/pipeline-summary/route.js.nft.json +1 -1
  167. package/apps/console/.next/standalone/.next/server/app/api/sales/pipeline-summary/route_client-reference-manifest.js +1 -1
  168. package/apps/console/.next/standalone/.next/server/app/api/sales/prospect-brief/route.js.nft.json +1 -1
  169. package/apps/console/.next/standalone/.next/server/app/api/sales/prospect-brief/route_client-reference-manifest.js +1 -1
  170. package/apps/console/.next/standalone/.next/server/app/api/solutions/build/route.js.nft.json +1 -1
  171. package/apps/console/.next/standalone/.next/server/app/api/solutions/build/route_client-reference-manifest.js +1 -1
  172. package/apps/console/.next/standalone/.next/server/app/api/solutions/quickstart-regenerate/route.js.nft.json +1 -1
  173. package/apps/console/.next/standalone/.next/server/app/api/solutions/quickstart-regenerate/route_client-reference-manifest.js +1 -1
  174. package/apps/console/.next/standalone/.next/server/app/api/solutions/refine/route.js.nft.json +1 -1
  175. package/apps/console/.next/standalone/.next/server/app/api/solutions/refine/route_client-reference-manifest.js +1 -1
  176. package/apps/console/.next/standalone/.next/server/app/api/strategy/market-pulse/route.js.nft.json +1 -1
  177. package/apps/console/.next/standalone/.next/server/app/api/strategy/market-pulse/route_client-reference-manifest.js +1 -1
  178. package/apps/console/.next/standalone/.next/server/app/api/telegram/[customerId]/route.js.nft.json +1 -1
  179. package/apps/console/.next/standalone/.next/server/app/api/telegram/[customerId]/route_client-reference-manifest.js +1 -1
  180. package/apps/console/.next/standalone/.next/server/app/api/templates/regenerate/route.js.nft.json +1 -1
  181. package/apps/console/.next/standalone/.next/server/app/api/templates/regenerate/route_client-reference-manifest.js +1 -1
  182. package/apps/console/.next/standalone/.next/server/app/api/templates/route.js.nft.json +1 -1
  183. package/apps/console/.next/standalone/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  184. package/apps/console/.next/standalone/.next/server/app/api/uploads/[id]/route.js.nft.json +1 -1
  185. package/apps/console/.next/standalone/.next/server/app/api/uploads/[id]/route_client-reference-manifest.js +1 -1
  186. package/apps/console/.next/standalone/.next/server/app/api/uploads/route.js.nft.json +1 -1
  187. package/apps/console/.next/standalone/.next/server/app/api/uploads/route_client-reference-manifest.js +1 -1
  188. package/apps/console/.next/standalone/.next/server/app/api/usage/route.js.nft.json +1 -1
  189. package/apps/console/.next/standalone/.next/server/app/api/usage/route_client-reference-manifest.js +1 -1
  190. package/apps/console/.next/standalone/.next/server/app/api/video/video-script/route.js.nft.json +1 -1
  191. package/apps/console/.next/standalone/.next/server/app/api/video/video-script/route_client-reference-manifest.js +1 -1
  192. package/apps/console/.next/standalone/.next/server/app/api/webhooks/workflow/[id]/route.js.nft.json +1 -1
  193. package/apps/console/.next/standalone/.next/server/app/api/webhooks/workflow/[id]/route_client-reference-manifest.js +1 -1
  194. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/[runId]/route.js.nft.json +1 -1
  195. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/[runId]/route_client-reference-manifest.js +1 -1
  196. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/route.js.nft.json +1 -1
  197. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/route_client-reference-manifest.js +1 -1
  198. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/route.js.nft.json +1 -1
  199. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/route_client-reference-manifest.js +1 -1
  200. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/run/route.js.nft.json +1 -1
  201. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/run/route_client-reference-manifest.js +1 -1
  202. package/apps/console/.next/standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  203. package/apps/console/.next/standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  204. package/apps/console/.next/standalone/.next/server/app/gtm/page.js.nft.json +1 -1
  205. package/apps/console/.next/standalone/.next/server/app/gtm/page_client-reference-manifest.js +1 -1
  206. package/apps/console/.next/standalone/.next/server/app/index.html +1 -1
  207. package/apps/console/.next/standalone/.next/server/app/index.rsc +2 -2
  208. package/apps/console/.next/standalone/.next/server/app/page.js +2 -2
  209. package/apps/console/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  210. package/apps/console/.next/standalone/.next/server/app-paths-manifest.json +53 -50
  211. package/apps/console/.next/standalone/.next/server/chunks/381.js +1 -1
  212. package/apps/console/.next/standalone/.next/server/chunks/4768.js +1 -1
  213. package/apps/console/.next/standalone/.next/server/chunks/6255.js +1 -1
  214. package/apps/console/.next/standalone/.next/server/functions-config-manifest.json +53 -50
  215. package/apps/console/.next/standalone/.next/server/pages/404.html +1 -1
  216. package/apps/console/.next/standalone/.next/server/pages/500.html +1 -1
  217. package/apps/console/.next/standalone/.next/server/pages/_error.js +2 -2
  218. package/apps/console/.next/standalone/.next/static/9Vdc730qexSZxzkAAgkcG/_buildManifest.js +1 -0
  219. package/apps/console/.next/standalone/.next/static/chunks/app/api/agent/route-734e01b852d6a51a.js +1 -0
  220. package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/route-734e01b852d6a51a.js +1 -0
  221. package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/stream/route-734e01b852d6a51a.js +1 -0
  222. package/apps/console/.next/standalone/.next/static/chunks/app/api/automation/workflow-blueprint/route-734e01b852d6a51a.js +1 -0
  223. package/apps/console/.next/standalone/.next/static/chunks/app/api/backend/endpoint-spec/route-734e01b852d6a51a.js +1 -0
  224. package/apps/console/.next/standalone/.next/static/chunks/app/api/bootstrap-admin-token/route-734e01b852d6a51a.js +1 -0
  225. package/apps/console/.next/standalone/.next/static/chunks/app/api/brand/brand-audit/route-734e01b852d6a51a.js +1 -0
  226. package/apps/console/.next/standalone/.next/static/chunks/app/api/campaigns/campaign-brief/route-734e01b852d6a51a.js +1 -0
  227. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/confidence/route-734e01b852d6a51a.js +1 -0
  228. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/customer/route-734e01b852d6a51a.js +1 -0
  229. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/dispatches/route-734e01b852d6a51a.js +1 -0
  230. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/engagement/route-734e01b852d6a51a.js +1 -0
  231. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/escalate/route-734e01b852d6a51a.js +1 -0
  232. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/profile/route-734e01b852d6a51a.js +1 -0
  233. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/screenshare/route-734e01b852d6a51a.js +1 -0
  234. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/track-question/route-734e01b852d6a51a.js +1 -0
  235. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/use-case-wiki/route-734e01b852d6a51a.js +1 -0
  236. package/apps/console/.next/standalone/.next/static/chunks/app/api/chat/route-734e01b852d6a51a.js +1 -0
  237. package/apps/console/.next/standalone/.next/static/chunks/app/api/compliance/risk-register-seed/route-734e01b852d6a51a.js +1 -0
  238. package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/[id]/route-734e01b852d6a51a.js +1 -0
  239. package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/route-734e01b852d6a51a.js +1 -0
  240. package/apps/console/.next/standalone/.next/static/chunks/app/api/concierge/morning-brief/route-734e01b852d6a51a.js +1 -0
  241. package/apps/console/.next/standalone/.next/static/chunks/app/api/contacts/route-734e01b852d6a51a.js +1 -0
  242. package/apps/console/.next/standalone/.next/static/chunks/app/api/content/seo-brief/route-734e01b852d6a51a.js +1 -0
  243. package/apps/console/.next/standalone/.next/static/chunks/app/api/conversations/route-734e01b852d6a51a.js +1 -0
  244. package/apps/console/.next/standalone/.next/static/chunks/app/api/coo/roster/route-734e01b852d6a51a.js +1 -0
  245. package/apps/console/.next/standalone/.next/static/chunks/app/api/coo/route-734e01b852d6a51a.js +1 -0
  246. package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/escalation-triage/route-734e01b852d6a51a.js +1 -0
  247. package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/health-score/route-734e01b852d6a51a.js +1 -0
  248. package/apps/console/.next/standalone/.next/static/chunks/app/api/data/cohort-brief/route-734e01b852d6a51a.js +1 -0
  249. package/apps/console/.next/standalone/.next/static/chunks/app/api/delegate/route-734e01b852d6a51a.js +1 -0
  250. package/apps/console/.next/standalone/.next/static/chunks/app/api/delegate/stream/route-734e01b852d6a51a.js +1 -0
  251. package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/qbr-brief/route-734e01b852d6a51a.js +1 -0
  252. package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/weekly-brief/route-734e01b852d6a51a.js +1 -0
  253. package/apps/console/.next/standalone/.next/static/chunks/app/api/dev/invalidate-cache/route-734e01b852d6a51a.js +1 -0
  254. package/apps/console/.next/standalone/.next/static/chunks/app/api/devops/runbook/route-734e01b852d6a51a.js +1 -0
  255. package/apps/console/.next/standalone/.next/static/chunks/app/api/email/sequence-brief/route-734e01b852d6a51a.js +1 -0
  256. package/apps/console/.next/standalone/.next/static/chunks/app/api/engineering/adr-draft/route-734e01b852d6a51a.js +1 -0
  257. package/apps/console/.next/standalone/.next/static/chunks/app/api/finance/runway-snapshot/route-734e01b852d6a51a.js +1 -0
  258. package/apps/console/.next/standalone/.next/static/chunks/app/api/frontend/component-spec/route-734e01b852d6a51a.js +1 -0
  259. package/apps/console/.next/standalone/.next/static/chunks/app/api/health/route-734e01b852d6a51a.js +1 -0
  260. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/brief/route-734e01b852d6a51a.js +1 -0
  261. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-734e01b852d6a51a.js +1 -0
  262. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-734e01b852d6a51a.js +1 -0
  263. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-734e01b852d6a51a.js +1 -0
  264. package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/route-734e01b852d6a51a.js +1 -0
  265. package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/stream/route-734e01b852d6a51a.js +1 -0
  266. package/apps/console/.next/standalone/.next/static/chunks/app/api/investor/kpi-tracker/route-734e01b852d6a51a.js +1 -0
  267. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/status/route-734e01b852d6a51a.js +1 -0
  268. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-734e01b852d6a51a.js +1 -0
  269. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-734e01b852d6a51a.js +1 -0
  270. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-734e01b852d6a51a.js +1 -0
  271. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-734e01b852d6a51a.js +1 -0
  272. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-734e01b852d6a51a.js +1 -0
  273. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/license/route-734e01b852d6a51a.js +1 -0
  274. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/models/route-734e01b852d6a51a.js +1 -0
  275. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/providers/route-734e01b852d6a51a.js +1 -0
  276. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/[id]/route-734e01b852d6a51a.js +1 -0
  277. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/route-734e01b852d6a51a.js +1 -0
  278. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/[id]/route-734e01b852d6a51a.js +1 -0
  279. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/route-734e01b852d6a51a.js +1 -0
  280. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/vault/route-734e01b852d6a51a.js +1 -0
  281. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/workflows/route-734e01b852d6a51a.js +1 -0
  282. package/apps/console/.next/standalone/.next/static/chunks/app/api/legal/clause-template/route-734e01b852d6a51a.js +1 -0
  283. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/draft/route-734e01b852d6a51a.js +1 -0
  284. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/route-734e01b852d6a51a.js +1 -0
  285. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/route-734e01b852d6a51a.js +1 -0
  286. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/cadence-planner/route-734e01b852d6a51a.js +1 -0
  287. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/competitive-snapshot/route-734e01b852d6a51a.js +1 -0
  288. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketplace/catalogue/route-734e01b852d6a51a.js +1 -0
  289. package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/engagement-plan/route-734e01b852d6a51a.js +1 -0
  290. package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/kickoff-brief/route-734e01b852d6a51a.js +1 -0
  291. package/apps/console/.next/standalone/.next/static/chunks/app/api/openclaw/status/route-734e01b852d6a51a.js +1 -0
  292. package/apps/console/.next/standalone/.next/static/chunks/app/api/ops/dispatch-brief/route-734e01b852d6a51a.js +1 -0
  293. package/apps/console/.next/standalone/.next/static/chunks/app/api/pack/route-734e01b852d6a51a.js +1 -0
  294. package/apps/console/.next/standalone/.next/static/chunks/app/api/people/job-brief/route-734e01b852d6a51a.js +1 -0
  295. package/apps/console/.next/standalone/.next/static/chunks/app/api/preferences/route-734e01b852d6a51a.js +1 -0
  296. package/apps/console/.next/standalone/.next/static/chunks/app/api/procurement/po-brief/route-734e01b852d6a51a.js +1 -0
  297. package/apps/console/.next/standalone/.next/static/chunks/app/api/product/prd-draft/route-734e01b852d6a51a.js +1 -0
  298. package/apps/console/.next/standalone/.next/static/chunks/app/api/research/prospect-intel/route-734e01b852d6a51a.js +1 -0
  299. package/apps/console/.next/standalone/.next/static/chunks/app/api/research/search/route-734e01b852d6a51a.js +1 -0
  300. package/apps/console/.next/standalone/.next/static/chunks/app/api/routing/route-734e01b852d6a51a.js +1 -0
  301. package/apps/console/.next/standalone/.next/static/chunks/app/api/runs/route-734e01b852d6a51a.js +1 -0
  302. package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/pipeline-summary/route-734e01b852d6a51a.js +1 -0
  303. package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/prospect-brief/route-734e01b852d6a51a.js +1 -0
  304. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/build/route-734e01b852d6a51a.js +1 -0
  305. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-734e01b852d6a51a.js +1 -0
  306. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/refine/route-734e01b852d6a51a.js +1 -0
  307. package/apps/console/.next/standalone/.next/static/chunks/app/api/strategy/market-pulse/route-734e01b852d6a51a.js +1 -0
  308. package/apps/console/.next/standalone/.next/static/chunks/app/api/telegram/[customerId]/route-734e01b852d6a51a.js +1 -0
  309. package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/regenerate/route-734e01b852d6a51a.js +1 -0
  310. package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/route-734e01b852d6a51a.js +1 -0
  311. package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/[id]/route-734e01b852d6a51a.js +1 -0
  312. package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/route-734e01b852d6a51a.js +1 -0
  313. package/apps/console/.next/standalone/.next/static/chunks/app/api/usage/route-734e01b852d6a51a.js +1 -0
  314. package/apps/console/.next/standalone/.next/static/chunks/app/api/video/video-script/route-734e01b852d6a51a.js +1 -0
  315. package/apps/console/.next/standalone/.next/static/chunks/app/api/webhooks/workflow/[id]/route-734e01b852d6a51a.js +1 -0
  316. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-734e01b852d6a51a.js +1 -0
  317. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/route-734e01b852d6a51a.js +1 -0
  318. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/route-734e01b852d6a51a.js +1 -0
  319. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/run/route-734e01b852d6a51a.js +1 -0
  320. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/route-734e01b852d6a51a.js +1 -0
  321. package/apps/console/.next/standalone/.next/static/chunks/app/page-f3050e38f4fe72a7.js +1 -0
  322. package/apps/console/.next/static/9Vdc730qexSZxzkAAgkcG/_buildManifest.js +1 -0
  323. package/apps/console/.next/static/chunks/app/api/agent/route-734e01b852d6a51a.js +1 -0
  324. package/apps/console/.next/static/chunks/app/api/approvals/route-734e01b852d6a51a.js +1 -0
  325. package/apps/console/.next/static/chunks/app/api/approvals/stream/route-734e01b852d6a51a.js +1 -0
  326. package/apps/console/.next/static/chunks/app/api/automation/workflow-blueprint/route-734e01b852d6a51a.js +1 -0
  327. package/apps/console/.next/static/chunks/app/api/backend/endpoint-spec/route-734e01b852d6a51a.js +1 -0
  328. package/apps/console/.next/static/chunks/app/api/bootstrap-admin-token/route-734e01b852d6a51a.js +1 -0
  329. package/apps/console/.next/static/chunks/app/api/brand/brand-audit/route-734e01b852d6a51a.js +1 -0
  330. package/apps/console/.next/static/chunks/app/api/campaigns/campaign-brief/route-734e01b852d6a51a.js +1 -0
  331. package/apps/console/.next/static/chunks/app/api/champion/confidence/route-734e01b852d6a51a.js +1 -0
  332. package/apps/console/.next/static/chunks/app/api/champion/customer/route-734e01b852d6a51a.js +1 -0
  333. package/apps/console/.next/static/chunks/app/api/champion/dispatches/route-734e01b852d6a51a.js +1 -0
  334. package/apps/console/.next/static/chunks/app/api/champion/engagement/route-734e01b852d6a51a.js +1 -0
  335. package/apps/console/.next/static/chunks/app/api/champion/escalate/route-734e01b852d6a51a.js +1 -0
  336. package/apps/console/.next/static/chunks/app/api/champion/profile/route-734e01b852d6a51a.js +1 -0
  337. package/apps/console/.next/static/chunks/app/api/champion/screenshare/route-734e01b852d6a51a.js +1 -0
  338. package/apps/console/.next/static/chunks/app/api/champion/track-question/route-734e01b852d6a51a.js +1 -0
  339. package/apps/console/.next/static/chunks/app/api/champion/use-case-wiki/route-734e01b852d6a51a.js +1 -0
  340. package/apps/console/.next/static/chunks/app/api/chat/route-734e01b852d6a51a.js +1 -0
  341. package/apps/console/.next/static/chunks/app/api/compliance/risk-register-seed/route-734e01b852d6a51a.js +1 -0
  342. package/apps/console/.next/static/chunks/app/api/computer-use/[id]/route-734e01b852d6a51a.js +1 -0
  343. package/apps/console/.next/static/chunks/app/api/computer-use/route-734e01b852d6a51a.js +1 -0
  344. package/apps/console/.next/static/chunks/app/api/concierge/morning-brief/route-734e01b852d6a51a.js +1 -0
  345. package/apps/console/.next/static/chunks/app/api/contacts/route-734e01b852d6a51a.js +1 -0
  346. package/apps/console/.next/static/chunks/app/api/content/seo-brief/route-734e01b852d6a51a.js +1 -0
  347. package/apps/console/.next/static/chunks/app/api/conversations/route-734e01b852d6a51a.js +1 -0
  348. package/apps/console/.next/static/chunks/app/api/coo/roster/route-734e01b852d6a51a.js +1 -0
  349. package/apps/console/.next/static/chunks/app/api/coo/route-734e01b852d6a51a.js +1 -0
  350. package/apps/console/.next/static/chunks/app/api/cx/escalation-triage/route-734e01b852d6a51a.js +1 -0
  351. package/apps/console/.next/static/chunks/app/api/cx/health-score/route-734e01b852d6a51a.js +1 -0
  352. package/apps/console/.next/static/chunks/app/api/data/cohort-brief/route-734e01b852d6a51a.js +1 -0
  353. package/apps/console/.next/static/chunks/app/api/delegate/route-734e01b852d6a51a.js +1 -0
  354. package/apps/console/.next/static/chunks/app/api/delegate/stream/route-734e01b852d6a51a.js +1 -0
  355. package/apps/console/.next/static/chunks/app/api/delivery/qbr-brief/route-734e01b852d6a51a.js +1 -0
  356. package/apps/console/.next/static/chunks/app/api/delivery/weekly-brief/route-734e01b852d6a51a.js +1 -0
  357. package/apps/console/.next/static/chunks/app/api/dev/invalidate-cache/route-734e01b852d6a51a.js +1 -0
  358. package/apps/console/.next/static/chunks/app/api/devops/runbook/route-734e01b852d6a51a.js +1 -0
  359. package/apps/console/.next/static/chunks/app/api/email/sequence-brief/route-734e01b852d6a51a.js +1 -0
  360. package/apps/console/.next/static/chunks/app/api/engineering/adr-draft/route-734e01b852d6a51a.js +1 -0
  361. package/apps/console/.next/static/chunks/app/api/finance/runway-snapshot/route-734e01b852d6a51a.js +1 -0
  362. package/apps/console/.next/static/chunks/app/api/frontend/component-spec/route-734e01b852d6a51a.js +1 -0
  363. package/apps/console/.next/static/chunks/app/api/health/route-734e01b852d6a51a.js +1 -0
  364. package/apps/console/.next/static/chunks/app/api/implementation/brief/route-734e01b852d6a51a.js +1 -0
  365. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-734e01b852d6a51a.js +1 -0
  366. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-734e01b852d6a51a.js +1 -0
  367. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-734e01b852d6a51a.js +1 -0
  368. package/apps/console/.next/static/chunks/app/api/inbox/route-734e01b852d6a51a.js +1 -0
  369. package/apps/console/.next/static/chunks/app/api/inbox/stream/route-734e01b852d6a51a.js +1 -0
  370. package/apps/console/.next/static/chunks/app/api/investor/kpi-tracker/route-734e01b852d6a51a.js +1 -0
  371. package/apps/console/.next/static/chunks/app/api/leedab/channels/status/route-734e01b852d6a51a.js +1 -0
  372. package/apps/console/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-734e01b852d6a51a.js +1 -0
  373. package/apps/console/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-734e01b852d6a51a.js +1 -0
  374. package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-734e01b852d6a51a.js +1 -0
  375. package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-734e01b852d6a51a.js +1 -0
  376. package/apps/console/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-734e01b852d6a51a.js +1 -0
  377. package/apps/console/.next/static/chunks/app/api/leedab/license/route-734e01b852d6a51a.js +1 -0
  378. package/apps/console/.next/static/chunks/app/api/leedab/models/route-734e01b852d6a51a.js +1 -0
  379. package/apps/console/.next/static/chunks/app/api/leedab/providers/route-734e01b852d6a51a.js +1 -0
  380. package/apps/console/.next/static/chunks/app/api/leedab/sessions/[id]/route-734e01b852d6a51a.js +1 -0
  381. package/apps/console/.next/static/chunks/app/api/leedab/sessions/route-734e01b852d6a51a.js +1 -0
  382. package/apps/console/.next/static/chunks/app/api/leedab/team/[id]/route-734e01b852d6a51a.js +1 -0
  383. package/apps/console/.next/static/chunks/app/api/leedab/team/route-734e01b852d6a51a.js +1 -0
  384. package/apps/console/.next/static/chunks/app/api/leedab/vault/route-734e01b852d6a51a.js +1 -0
  385. package/apps/console/.next/static/chunks/app/api/leedab/workflows/route-734e01b852d6a51a.js +1 -0
  386. package/apps/console/.next/static/chunks/app/api/legal/clause-template/route-734e01b852d6a51a.js +1 -0
  387. package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/draft/route-734e01b852d6a51a.js +1 -0
  388. package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/route-734e01b852d6a51a.js +1 -0
  389. package/apps/console/.next/static/chunks/app/api/manifest/agents/route-734e01b852d6a51a.js +1 -0
  390. package/apps/console/.next/static/chunks/app/api/marketing/cadence-planner/route-734e01b852d6a51a.js +1 -0
  391. package/apps/console/.next/static/chunks/app/api/marketing/competitive-snapshot/route-734e01b852d6a51a.js +1 -0
  392. package/apps/console/.next/static/chunks/app/api/marketplace/catalogue/route-734e01b852d6a51a.js +1 -0
  393. package/apps/console/.next/static/chunks/app/api/onboarding/engagement-plan/route-734e01b852d6a51a.js +1 -0
  394. package/apps/console/.next/static/chunks/app/api/onboarding/kickoff-brief/route-734e01b852d6a51a.js +1 -0
  395. package/apps/console/.next/static/chunks/app/api/openclaw/status/route-734e01b852d6a51a.js +1 -0
  396. package/apps/console/.next/static/chunks/app/api/ops/dispatch-brief/route-734e01b852d6a51a.js +1 -0
  397. package/apps/console/.next/static/chunks/app/api/pack/route-734e01b852d6a51a.js +1 -0
  398. package/apps/console/.next/static/chunks/app/api/people/job-brief/route-734e01b852d6a51a.js +1 -0
  399. package/apps/console/.next/static/chunks/app/api/preferences/route-734e01b852d6a51a.js +1 -0
  400. package/apps/console/.next/static/chunks/app/api/procurement/po-brief/route-734e01b852d6a51a.js +1 -0
  401. package/apps/console/.next/static/chunks/app/api/product/prd-draft/route-734e01b852d6a51a.js +1 -0
  402. package/apps/console/.next/static/chunks/app/api/research/prospect-intel/route-734e01b852d6a51a.js +1 -0
  403. package/apps/console/.next/static/chunks/app/api/research/search/route-734e01b852d6a51a.js +1 -0
  404. package/apps/console/.next/static/chunks/app/api/routing/route-734e01b852d6a51a.js +1 -0
  405. package/apps/console/.next/static/chunks/app/api/runs/route-734e01b852d6a51a.js +1 -0
  406. package/apps/console/.next/static/chunks/app/api/sales/pipeline-summary/route-734e01b852d6a51a.js +1 -0
  407. package/apps/console/.next/static/chunks/app/api/sales/prospect-brief/route-734e01b852d6a51a.js +1 -0
  408. package/apps/console/.next/static/chunks/app/api/solutions/build/route-734e01b852d6a51a.js +1 -0
  409. package/apps/console/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-734e01b852d6a51a.js +1 -0
  410. package/apps/console/.next/static/chunks/app/api/solutions/refine/route-734e01b852d6a51a.js +1 -0
  411. package/apps/console/.next/static/chunks/app/api/strategy/market-pulse/route-734e01b852d6a51a.js +1 -0
  412. package/apps/console/.next/static/chunks/app/api/telegram/[customerId]/route-734e01b852d6a51a.js +1 -0
  413. package/apps/console/.next/static/chunks/app/api/templates/regenerate/route-734e01b852d6a51a.js +1 -0
  414. package/apps/console/.next/static/chunks/app/api/templates/route-734e01b852d6a51a.js +1 -0
  415. package/apps/console/.next/static/chunks/app/api/uploads/[id]/route-734e01b852d6a51a.js +1 -0
  416. package/apps/console/.next/static/chunks/app/api/uploads/route-734e01b852d6a51a.js +1 -0
  417. package/apps/console/.next/static/chunks/app/api/usage/route-734e01b852d6a51a.js +1 -0
  418. package/apps/console/.next/static/chunks/app/api/video/video-script/route-734e01b852d6a51a.js +1 -0
  419. package/apps/console/.next/static/chunks/app/api/webhooks/workflow/[id]/route-734e01b852d6a51a.js +1 -0
  420. package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-734e01b852d6a51a.js +1 -0
  421. package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/route-734e01b852d6a51a.js +1 -0
  422. package/apps/console/.next/static/chunks/app/api/workflows/[id]/route-734e01b852d6a51a.js +1 -0
  423. package/apps/console/.next/static/chunks/app/api/workflows/[id]/run/route-734e01b852d6a51a.js +1 -0
  424. package/apps/console/.next/static/chunks/app/api/workflows/route-734e01b852d6a51a.js +1 -0
  425. package/apps/console/.next/static/chunks/app/page-f3050e38f4fe72a7.js +1 -0
  426. package/bin/leedab.js +245 -2
  427. package/dist/backup/index.d.ts +30 -0
  428. package/dist/backup/index.js +273 -0
  429. package/dist/gateway.js +58 -13
  430. package/dist/onboard/steps/provider.js +20 -4
  431. package/dist/paths.d.ts +9 -0
  432. package/dist/paths.js +9 -0
  433. package/dist/templates/workspace/AGENTS.md +4 -3
  434. package/dist/templates/workspace/COO.md +70 -0
  435. package/dist/templates/workspace/SOUL.md +71 -7
  436. package/package.json +3 -2
  437. package/apps/console/.next/standalone/.next/static/CLtH7rcbrrXTBpzawMULl/_buildManifest.js +0 -1
  438. package/apps/console/.next/standalone/.next/static/chunks/app/api/agent/route-2d8162b887d31980.js +0 -1
  439. package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/route-2d8162b887d31980.js +0 -1
  440. package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/stream/route-2d8162b887d31980.js +0 -1
  441. package/apps/console/.next/standalone/.next/static/chunks/app/api/automation/workflow-blueprint/route-2d8162b887d31980.js +0 -1
  442. package/apps/console/.next/standalone/.next/static/chunks/app/api/backend/endpoint-spec/route-2d8162b887d31980.js +0 -1
  443. package/apps/console/.next/standalone/.next/static/chunks/app/api/bootstrap-admin-token/route-2d8162b887d31980.js +0 -1
  444. package/apps/console/.next/standalone/.next/static/chunks/app/api/brand/brand-audit/route-2d8162b887d31980.js +0 -1
  445. package/apps/console/.next/standalone/.next/static/chunks/app/api/campaigns/campaign-brief/route-2d8162b887d31980.js +0 -1
  446. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/confidence/route-2d8162b887d31980.js +0 -1
  447. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/customer/route-2d8162b887d31980.js +0 -1
  448. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/dispatches/route-2d8162b887d31980.js +0 -1
  449. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/engagement/route-2d8162b887d31980.js +0 -1
  450. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/escalate/route-2d8162b887d31980.js +0 -1
  451. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/profile/route-2d8162b887d31980.js +0 -1
  452. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/screenshare/route-2d8162b887d31980.js +0 -1
  453. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/track-question/route-2d8162b887d31980.js +0 -1
  454. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/use-case-wiki/route-2d8162b887d31980.js +0 -1
  455. package/apps/console/.next/standalone/.next/static/chunks/app/api/chat/route-2d8162b887d31980.js +0 -1
  456. package/apps/console/.next/standalone/.next/static/chunks/app/api/compliance/risk-register-seed/route-2d8162b887d31980.js +0 -1
  457. package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/[id]/route-2d8162b887d31980.js +0 -1
  458. package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/route-2d8162b887d31980.js +0 -1
  459. package/apps/console/.next/standalone/.next/static/chunks/app/api/concierge/morning-brief/route-2d8162b887d31980.js +0 -1
  460. package/apps/console/.next/standalone/.next/static/chunks/app/api/contacts/route-2d8162b887d31980.js +0 -1
  461. package/apps/console/.next/standalone/.next/static/chunks/app/api/content/seo-brief/route-2d8162b887d31980.js +0 -1
  462. package/apps/console/.next/standalone/.next/static/chunks/app/api/conversations/route-2d8162b887d31980.js +0 -1
  463. package/apps/console/.next/standalone/.next/static/chunks/app/api/coo/route-2d8162b887d31980.js +0 -1
  464. package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/escalation-triage/route-2d8162b887d31980.js +0 -1
  465. package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/health-score/route-2d8162b887d31980.js +0 -1
  466. package/apps/console/.next/standalone/.next/static/chunks/app/api/data/cohort-brief/route-2d8162b887d31980.js +0 -1
  467. package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/qbr-brief/route-2d8162b887d31980.js +0 -1
  468. package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/weekly-brief/route-2d8162b887d31980.js +0 -1
  469. package/apps/console/.next/standalone/.next/static/chunks/app/api/dev/invalidate-cache/route-2d8162b887d31980.js +0 -1
  470. package/apps/console/.next/standalone/.next/static/chunks/app/api/devops/runbook/route-2d8162b887d31980.js +0 -1
  471. package/apps/console/.next/standalone/.next/static/chunks/app/api/email/sequence-brief/route-2d8162b887d31980.js +0 -1
  472. package/apps/console/.next/standalone/.next/static/chunks/app/api/engineering/adr-draft/route-2d8162b887d31980.js +0 -1
  473. package/apps/console/.next/standalone/.next/static/chunks/app/api/finance/runway-snapshot/route-2d8162b887d31980.js +0 -1
  474. package/apps/console/.next/standalone/.next/static/chunks/app/api/frontend/component-spec/route-2d8162b887d31980.js +0 -1
  475. package/apps/console/.next/standalone/.next/static/chunks/app/api/health/route-2d8162b887d31980.js +0 -1
  476. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/brief/route-2d8162b887d31980.js +0 -1
  477. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-2d8162b887d31980.js +0 -1
  478. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-2d8162b887d31980.js +0 -1
  479. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-2d8162b887d31980.js +0 -1
  480. package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/route-2d8162b887d31980.js +0 -1
  481. package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/stream/route-2d8162b887d31980.js +0 -1
  482. package/apps/console/.next/standalone/.next/static/chunks/app/api/investor/kpi-tracker/route-2d8162b887d31980.js +0 -1
  483. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/status/route-2d8162b887d31980.js +0 -1
  484. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-2d8162b887d31980.js +0 -1
  485. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-2d8162b887d31980.js +0 -1
  486. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-2d8162b887d31980.js +0 -1
  487. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-2d8162b887d31980.js +0 -1
  488. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-2d8162b887d31980.js +0 -1
  489. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/license/route-2d8162b887d31980.js +0 -1
  490. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/models/route-2d8162b887d31980.js +0 -1
  491. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/providers/route-2d8162b887d31980.js +0 -1
  492. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/[id]/route-2d8162b887d31980.js +0 -1
  493. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/route-2d8162b887d31980.js +0 -1
  494. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/[id]/route-2d8162b887d31980.js +0 -1
  495. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/route-2d8162b887d31980.js +0 -1
  496. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/vault/route-2d8162b887d31980.js +0 -1
  497. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/workflows/route-2d8162b887d31980.js +0 -1
  498. package/apps/console/.next/standalone/.next/static/chunks/app/api/legal/clause-template/route-2d8162b887d31980.js +0 -1
  499. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/draft/route-2d8162b887d31980.js +0 -1
  500. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/route-2d8162b887d31980.js +0 -1
  501. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/route-2d8162b887d31980.js +0 -1
  502. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/cadence-planner/route-2d8162b887d31980.js +0 -1
  503. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/competitive-snapshot/route-2d8162b887d31980.js +0 -1
  504. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketplace/catalogue/route-2d8162b887d31980.js +0 -1
  505. package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/engagement-plan/route-2d8162b887d31980.js +0 -1
  506. package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/kickoff-brief/route-2d8162b887d31980.js +0 -1
  507. package/apps/console/.next/standalone/.next/static/chunks/app/api/openclaw/status/route-2d8162b887d31980.js +0 -1
  508. package/apps/console/.next/standalone/.next/static/chunks/app/api/ops/dispatch-brief/route-2d8162b887d31980.js +0 -1
  509. package/apps/console/.next/standalone/.next/static/chunks/app/api/pack/route-2d8162b887d31980.js +0 -1
  510. package/apps/console/.next/standalone/.next/static/chunks/app/api/people/job-brief/route-2d8162b887d31980.js +0 -1
  511. package/apps/console/.next/standalone/.next/static/chunks/app/api/preferences/route-2d8162b887d31980.js +0 -1
  512. package/apps/console/.next/standalone/.next/static/chunks/app/api/procurement/po-brief/route-2d8162b887d31980.js +0 -1
  513. package/apps/console/.next/standalone/.next/static/chunks/app/api/product/prd-draft/route-2d8162b887d31980.js +0 -1
  514. package/apps/console/.next/standalone/.next/static/chunks/app/api/research/prospect-intel/route-2d8162b887d31980.js +0 -1
  515. package/apps/console/.next/standalone/.next/static/chunks/app/api/research/search/route-2d8162b887d31980.js +0 -1
  516. package/apps/console/.next/standalone/.next/static/chunks/app/api/routing/route-2d8162b887d31980.js +0 -1
  517. package/apps/console/.next/standalone/.next/static/chunks/app/api/runs/route-2d8162b887d31980.js +0 -1
  518. package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/pipeline-summary/route-2d8162b887d31980.js +0 -1
  519. package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/prospect-brief/route-2d8162b887d31980.js +0 -1
  520. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/build/route-2d8162b887d31980.js +0 -1
  521. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-2d8162b887d31980.js +0 -1
  522. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/refine/route-2d8162b887d31980.js +0 -1
  523. package/apps/console/.next/standalone/.next/static/chunks/app/api/strategy/market-pulse/route-2d8162b887d31980.js +0 -1
  524. package/apps/console/.next/standalone/.next/static/chunks/app/api/telegram/[customerId]/route-2d8162b887d31980.js +0 -1
  525. package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/regenerate/route-2d8162b887d31980.js +0 -1
  526. package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/route-2d8162b887d31980.js +0 -1
  527. package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/[id]/route-2d8162b887d31980.js +0 -1
  528. package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/route-2d8162b887d31980.js +0 -1
  529. package/apps/console/.next/standalone/.next/static/chunks/app/api/usage/route-2d8162b887d31980.js +0 -1
  530. package/apps/console/.next/standalone/.next/static/chunks/app/api/video/video-script/route-2d8162b887d31980.js +0 -1
  531. package/apps/console/.next/standalone/.next/static/chunks/app/api/webhooks/workflow/[id]/route-2d8162b887d31980.js +0 -1
  532. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-2d8162b887d31980.js +0 -1
  533. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/route-2d8162b887d31980.js +0 -1
  534. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/route-2d8162b887d31980.js +0 -1
  535. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/run/route-2d8162b887d31980.js +0 -1
  536. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/route-2d8162b887d31980.js +0 -1
  537. package/apps/console/.next/standalone/.next/static/chunks/app/page-efaf5b25f1b4bcdf.js +0 -1
  538. package/apps/console/.next/standalone/data/conversations/concierge.json +0 -33
  539. package/apps/console/.next/standalone/data/conversations/coo.json +0 -292
  540. package/apps/console/.next/standalone/data/conversations/cx.json +0 -21
  541. package/apps/console/.next/standalone/data/conversations/finance.json +0 -86
  542. package/apps/console/.next/standalone/data/conversations/people.json +0 -21
  543. package/apps/console/.next/standalone/data/conversations/procurement.json +0 -65
  544. package/apps/console/.next/standalone/data/conversations/product.json +0 -14
  545. package/apps/console/.next/standalone/data/conversations/sales.json +0 -21
  546. package/apps/console/.next/standalone/data/preferences.json +0 -7
  547. package/apps/console/.next/standalone/data/retry-queue.json +0 -1
  548. package/apps/console/.next/standalone/data/uploads/316e1ef7-870d-4666-93fa-e439548fc0b6.pdf +0 -0
  549. package/apps/console/.next/standalone/data/uploads/_index.json +0 -11
  550. package/apps/console/.next/standalone/data/usage.json +0 -362
  551. package/apps/console/.next/static/CLtH7rcbrrXTBpzawMULl/_buildManifest.js +0 -1
  552. package/apps/console/.next/static/chunks/app/api/agent/route-2d8162b887d31980.js +0 -1
  553. package/apps/console/.next/static/chunks/app/api/approvals/route-2d8162b887d31980.js +0 -1
  554. package/apps/console/.next/static/chunks/app/api/approvals/stream/route-2d8162b887d31980.js +0 -1
  555. package/apps/console/.next/static/chunks/app/api/automation/workflow-blueprint/route-2d8162b887d31980.js +0 -1
  556. package/apps/console/.next/static/chunks/app/api/backend/endpoint-spec/route-2d8162b887d31980.js +0 -1
  557. package/apps/console/.next/static/chunks/app/api/bootstrap-admin-token/route-2d8162b887d31980.js +0 -1
  558. package/apps/console/.next/static/chunks/app/api/brand/brand-audit/route-2d8162b887d31980.js +0 -1
  559. package/apps/console/.next/static/chunks/app/api/campaigns/campaign-brief/route-2d8162b887d31980.js +0 -1
  560. package/apps/console/.next/static/chunks/app/api/champion/confidence/route-2d8162b887d31980.js +0 -1
  561. package/apps/console/.next/static/chunks/app/api/champion/customer/route-2d8162b887d31980.js +0 -1
  562. package/apps/console/.next/static/chunks/app/api/champion/dispatches/route-2d8162b887d31980.js +0 -1
  563. package/apps/console/.next/static/chunks/app/api/champion/engagement/route-2d8162b887d31980.js +0 -1
  564. package/apps/console/.next/static/chunks/app/api/champion/escalate/route-2d8162b887d31980.js +0 -1
  565. package/apps/console/.next/static/chunks/app/api/champion/profile/route-2d8162b887d31980.js +0 -1
  566. package/apps/console/.next/static/chunks/app/api/champion/screenshare/route-2d8162b887d31980.js +0 -1
  567. package/apps/console/.next/static/chunks/app/api/champion/track-question/route-2d8162b887d31980.js +0 -1
  568. package/apps/console/.next/static/chunks/app/api/champion/use-case-wiki/route-2d8162b887d31980.js +0 -1
  569. package/apps/console/.next/static/chunks/app/api/chat/route-2d8162b887d31980.js +0 -1
  570. package/apps/console/.next/static/chunks/app/api/compliance/risk-register-seed/route-2d8162b887d31980.js +0 -1
  571. package/apps/console/.next/static/chunks/app/api/computer-use/[id]/route-2d8162b887d31980.js +0 -1
  572. package/apps/console/.next/static/chunks/app/api/computer-use/route-2d8162b887d31980.js +0 -1
  573. package/apps/console/.next/static/chunks/app/api/concierge/morning-brief/route-2d8162b887d31980.js +0 -1
  574. package/apps/console/.next/static/chunks/app/api/contacts/route-2d8162b887d31980.js +0 -1
  575. package/apps/console/.next/static/chunks/app/api/content/seo-brief/route-2d8162b887d31980.js +0 -1
  576. package/apps/console/.next/static/chunks/app/api/conversations/route-2d8162b887d31980.js +0 -1
  577. package/apps/console/.next/static/chunks/app/api/coo/route-2d8162b887d31980.js +0 -1
  578. package/apps/console/.next/static/chunks/app/api/cx/escalation-triage/route-2d8162b887d31980.js +0 -1
  579. package/apps/console/.next/static/chunks/app/api/cx/health-score/route-2d8162b887d31980.js +0 -1
  580. package/apps/console/.next/static/chunks/app/api/data/cohort-brief/route-2d8162b887d31980.js +0 -1
  581. package/apps/console/.next/static/chunks/app/api/delivery/qbr-brief/route-2d8162b887d31980.js +0 -1
  582. package/apps/console/.next/static/chunks/app/api/delivery/weekly-brief/route-2d8162b887d31980.js +0 -1
  583. package/apps/console/.next/static/chunks/app/api/dev/invalidate-cache/route-2d8162b887d31980.js +0 -1
  584. package/apps/console/.next/static/chunks/app/api/devops/runbook/route-2d8162b887d31980.js +0 -1
  585. package/apps/console/.next/static/chunks/app/api/email/sequence-brief/route-2d8162b887d31980.js +0 -1
  586. package/apps/console/.next/static/chunks/app/api/engineering/adr-draft/route-2d8162b887d31980.js +0 -1
  587. package/apps/console/.next/static/chunks/app/api/finance/runway-snapshot/route-2d8162b887d31980.js +0 -1
  588. package/apps/console/.next/static/chunks/app/api/frontend/component-spec/route-2d8162b887d31980.js +0 -1
  589. package/apps/console/.next/static/chunks/app/api/health/route-2d8162b887d31980.js +0 -1
  590. package/apps/console/.next/static/chunks/app/api/implementation/brief/route-2d8162b887d31980.js +0 -1
  591. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-2d8162b887d31980.js +0 -1
  592. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-2d8162b887d31980.js +0 -1
  593. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-2d8162b887d31980.js +0 -1
  594. package/apps/console/.next/static/chunks/app/api/inbox/route-2d8162b887d31980.js +0 -1
  595. package/apps/console/.next/static/chunks/app/api/inbox/stream/route-2d8162b887d31980.js +0 -1
  596. package/apps/console/.next/static/chunks/app/api/investor/kpi-tracker/route-2d8162b887d31980.js +0 -1
  597. package/apps/console/.next/static/chunks/app/api/leedab/channels/status/route-2d8162b887d31980.js +0 -1
  598. package/apps/console/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-2d8162b887d31980.js +0 -1
  599. package/apps/console/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-2d8162b887d31980.js +0 -1
  600. package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-2d8162b887d31980.js +0 -1
  601. package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-2d8162b887d31980.js +0 -1
  602. package/apps/console/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-2d8162b887d31980.js +0 -1
  603. package/apps/console/.next/static/chunks/app/api/leedab/license/route-2d8162b887d31980.js +0 -1
  604. package/apps/console/.next/static/chunks/app/api/leedab/models/route-2d8162b887d31980.js +0 -1
  605. package/apps/console/.next/static/chunks/app/api/leedab/providers/route-2d8162b887d31980.js +0 -1
  606. package/apps/console/.next/static/chunks/app/api/leedab/sessions/[id]/route-2d8162b887d31980.js +0 -1
  607. package/apps/console/.next/static/chunks/app/api/leedab/sessions/route-2d8162b887d31980.js +0 -1
  608. package/apps/console/.next/static/chunks/app/api/leedab/team/[id]/route-2d8162b887d31980.js +0 -1
  609. package/apps/console/.next/static/chunks/app/api/leedab/team/route-2d8162b887d31980.js +0 -1
  610. package/apps/console/.next/static/chunks/app/api/leedab/vault/route-2d8162b887d31980.js +0 -1
  611. package/apps/console/.next/static/chunks/app/api/leedab/workflows/route-2d8162b887d31980.js +0 -1
  612. package/apps/console/.next/static/chunks/app/api/legal/clause-template/route-2d8162b887d31980.js +0 -1
  613. package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/draft/route-2d8162b887d31980.js +0 -1
  614. package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/route-2d8162b887d31980.js +0 -1
  615. package/apps/console/.next/static/chunks/app/api/manifest/agents/route-2d8162b887d31980.js +0 -1
  616. package/apps/console/.next/static/chunks/app/api/marketing/cadence-planner/route-2d8162b887d31980.js +0 -1
  617. package/apps/console/.next/static/chunks/app/api/marketing/competitive-snapshot/route-2d8162b887d31980.js +0 -1
  618. package/apps/console/.next/static/chunks/app/api/marketplace/catalogue/route-2d8162b887d31980.js +0 -1
  619. package/apps/console/.next/static/chunks/app/api/onboarding/engagement-plan/route-2d8162b887d31980.js +0 -1
  620. package/apps/console/.next/static/chunks/app/api/onboarding/kickoff-brief/route-2d8162b887d31980.js +0 -1
  621. package/apps/console/.next/static/chunks/app/api/openclaw/status/route-2d8162b887d31980.js +0 -1
  622. package/apps/console/.next/static/chunks/app/api/ops/dispatch-brief/route-2d8162b887d31980.js +0 -1
  623. package/apps/console/.next/static/chunks/app/api/pack/route-2d8162b887d31980.js +0 -1
  624. package/apps/console/.next/static/chunks/app/api/people/job-brief/route-2d8162b887d31980.js +0 -1
  625. package/apps/console/.next/static/chunks/app/api/preferences/route-2d8162b887d31980.js +0 -1
  626. package/apps/console/.next/static/chunks/app/api/procurement/po-brief/route-2d8162b887d31980.js +0 -1
  627. package/apps/console/.next/static/chunks/app/api/product/prd-draft/route-2d8162b887d31980.js +0 -1
  628. package/apps/console/.next/static/chunks/app/api/research/prospect-intel/route-2d8162b887d31980.js +0 -1
  629. package/apps/console/.next/static/chunks/app/api/research/search/route-2d8162b887d31980.js +0 -1
  630. package/apps/console/.next/static/chunks/app/api/routing/route-2d8162b887d31980.js +0 -1
  631. package/apps/console/.next/static/chunks/app/api/runs/route-2d8162b887d31980.js +0 -1
  632. package/apps/console/.next/static/chunks/app/api/sales/pipeline-summary/route-2d8162b887d31980.js +0 -1
  633. package/apps/console/.next/static/chunks/app/api/sales/prospect-brief/route-2d8162b887d31980.js +0 -1
  634. package/apps/console/.next/static/chunks/app/api/solutions/build/route-2d8162b887d31980.js +0 -1
  635. package/apps/console/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-2d8162b887d31980.js +0 -1
  636. package/apps/console/.next/static/chunks/app/api/solutions/refine/route-2d8162b887d31980.js +0 -1
  637. package/apps/console/.next/static/chunks/app/api/strategy/market-pulse/route-2d8162b887d31980.js +0 -1
  638. package/apps/console/.next/static/chunks/app/api/telegram/[customerId]/route-2d8162b887d31980.js +0 -1
  639. package/apps/console/.next/static/chunks/app/api/templates/regenerate/route-2d8162b887d31980.js +0 -1
  640. package/apps/console/.next/static/chunks/app/api/templates/route-2d8162b887d31980.js +0 -1
  641. package/apps/console/.next/static/chunks/app/api/uploads/[id]/route-2d8162b887d31980.js +0 -1
  642. package/apps/console/.next/static/chunks/app/api/uploads/route-2d8162b887d31980.js +0 -1
  643. package/apps/console/.next/static/chunks/app/api/usage/route-2d8162b887d31980.js +0 -1
  644. package/apps/console/.next/static/chunks/app/api/video/video-script/route-2d8162b887d31980.js +0 -1
  645. package/apps/console/.next/static/chunks/app/api/webhooks/workflow/[id]/route-2d8162b887d31980.js +0 -1
  646. package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-2d8162b887d31980.js +0 -1
  647. package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/route-2d8162b887d31980.js +0 -1
  648. package/apps/console/.next/static/chunks/app/api/workflows/[id]/route-2d8162b887d31980.js +0 -1
  649. package/apps/console/.next/static/chunks/app/api/workflows/[id]/run/route-2d8162b887d31980.js +0 -1
  650. package/apps/console/.next/static/chunks/app/api/workflows/route-2d8162b887d31980.js +0 -1
  651. package/apps/console/.next/static/chunks/app/page-efaf5b25f1b4bcdf.js +0 -1
  652. /package/apps/console/.next/standalone/.next/static/{CLtH7rcbrrXTBpzawMULl → 9Vdc730qexSZxzkAAgkcG}/_ssgManifest.js +0 -0
  653. /package/apps/console/.next/static/{CLtH7rcbrrXTBpzawMULl → 9Vdc730qexSZxzkAAgkcG}/_ssgManifest.js +0 -0
package/bin/leedab.js CHANGED
@@ -15,6 +15,7 @@ import { loadConfig, initConfig } from "../dist/config/index.js";
15
15
  import { setupChannels } from "../dist/channels/index.js";
16
16
  import { runOnboard } from "../dist/onboard/index.js";
17
17
  import { ensureFirstRun } from "../dist/first-run/ensure.js";
18
+ import { createBackup, listBackups, restoreBackup, deleteBackup, humanBytes } from "../dist/backup/index.js";
18
19
  import { startConsole, stopConsole } from "../dist/console-launcher.js";
19
20
  import { execBranded } from "../dist/brand.js";
20
21
  import { resolveOpenClawBin, openclawArgs, openclawEnv } from "../dist/openclaw.js";
@@ -140,8 +141,8 @@ function ensureAdminToken() {
140
141
  // inline before any operations that depend on a configured workspace or
141
142
  // license; the project + license guards would bail too eagerly on a fresh
142
143
  // install otherwise.
143
- const NO_PROJECT_REQUIRED = new Set(["onboard", "init", "help", "start"]);
144
- const NO_LICENSE_REQUIRED = new Set(["onboard", "init", "help", "stop", "start"]);
144
+ const NO_PROJECT_REQUIRED = new Set(["onboard", "init", "help", "start", "reset", "backup"]);
145
+ const NO_LICENSE_REQUIRED = new Set(["onboard", "init", "help", "stop", "start", "reset", "backup"]);
145
146
 
146
147
  /**
147
148
  * Auto-recover from the "two-state-dirs" footgun. If the current working
@@ -555,6 +556,248 @@ program
555
556
  console.log(chalk.green("LeedAB agent stopped."));
556
557
  });
557
558
 
559
+ program
560
+ .command("reset")
561
+ .description("Wipe local state (~/.leedab including the agent workspace, ~/.openclaw, console data, plus any legacy ./workspace) and start fresh. Destructive.")
562
+ .option("-y, --yes", "Skip both prompts (backup + confirmation). NOT recommended outside CI.", false)
563
+ .option("--no-backup", "Skip the backup-before-reset prompt and reset directly.")
564
+ .action(async (opts) => {
565
+ // Targets. Each is independent — a missing path is a no-op, not a
566
+ // failure. The set covers everything the gateway, openclaw daemon, and
567
+ // Next.js console write to during a normal run, so a reset puts the
568
+ // box into the same state a brand new install would see.
569
+ //
570
+ // The console's data directory is critical — it holds runs.json,
571
+ // usage.json, conversations/, workflows/, retry-queue.json and lives
572
+ // under apps/console/.next/standalone/data/ (Next.js standalone build
573
+ // cwd). Earlier resets only wiped ~/.leedab and ~/.openclaw, which left
574
+ // the previous tenant's chat history and run records visible to the
575
+ // next licensee on the same machine.
576
+ const cwdState = resolve(process.cwd(), ".leedab");
577
+ const cwdWorkspace = resolve(process.cwd(), "workspace");
578
+ const homeOpenclaw = resolve(homedir(), ".openclaw");
579
+ const PACKAGE_ROOT = findPackageRoot();
580
+ // Both prod (next standalone, run via leedab start) and dev (next dev,
581
+ // run via `npm --prefix apps/console run dev`) end up with a `data/`
582
+ // directory next to the cwd the console was launched from. Wipe both.
583
+ const consoleStandaloneData = resolve(PACKAGE_ROOT, "apps", "console", ".next", "standalone", "data");
584
+ const consoleDevData = resolve(PACKAGE_ROOT, "apps", "console", "data");
585
+ const targets = [
586
+ { path: STATE_DIR, label: "~/.leedab" },
587
+ { path: homeOpenclaw, label: "~/.openclaw" },
588
+ { path: consoleStandaloneData, label: "apps/console/.next/standalone/data (runs, chats, usage)" },
589
+ { path: consoleDevData, label: "apps/console/data (dev-mode runs, chats, usage)" },
590
+ // Legacy: the agent workspace used to be cwd-relative. Newer installs
591
+ // keep it under ~/.leedab/agent-workspace/ (wiped by the STATE_DIR
592
+ // target above). Still wipe any stale cwd workspace so an operator
593
+ // upgrading from the old layout doesn't end up with two copies.
594
+ { path: cwdWorkspace, label: `${process.cwd()}/workspace (legacy)` },
595
+ { path: cwdState, label: `${process.cwd()}/.leedab` },
596
+ ];
597
+
598
+ const existing = targets.filter((t) => existsSync(t.path));
599
+ if (existing.length === 0) {
600
+ console.log(chalk.dim("\n Nothing to reset. State is already clean.\n"));
601
+ return;
602
+ }
603
+
604
+ console.log(chalk.bold("\n This will permanently delete:\n"));
605
+ for (const t of existing) console.log(chalk.red(` × ${t.label}`));
606
+ console.log();
607
+ console.log(chalk.yellow(" Includes: license, model config, vault, run history,"));
608
+ console.log(chalk.yellow(" chat transcripts, memory, seeded workspace."));
609
+ console.log(chalk.dim(" Run ") + chalk.cyan("leedab start") + chalk.dim(" after to re-enter your license and pick a model.\n"));
610
+
611
+ // Offer a backup-before-reset by default. The reset itself is the
612
+ // destructive moment; the backup is a soft-delete safety net that
613
+ // makes restore possible. Users running with --yes (CI, demo wipes)
614
+ // skip both prompts; --no-backup skips just the backup ask.
615
+ if (!opts.yes && opts.backup !== false) {
616
+ const { default: inquirer } = await import("inquirer");
617
+ let wantBackup = true;
618
+ try {
619
+ const ans = await inquirer.prompt([
620
+ {
621
+ type: "confirm",
622
+ name: "wantBackup",
623
+ message: "Back this up first so you can restore later?",
624
+ default: true,
625
+ },
626
+ ]);
627
+ wantBackup = ans.wantBackup;
628
+ } catch {
629
+ wantBackup = false;
630
+ }
631
+ if (wantBackup) {
632
+ const spinner = ora("Creating backup...").start();
633
+ try {
634
+ const result = await createBackup({ label: "pre-reset" });
635
+ spinner.succeed(
636
+ chalk.green(`Backup saved: ${result.archive} (${humanBytes(result.bytes)})`)
637
+ );
638
+ console.log(chalk.dim(` Restore later with: `) + chalk.cyan(`leedab backup restore ${result.archive}`));
639
+ console.log();
640
+ } catch (err) {
641
+ spinner.fail(chalk.red(`Backup failed: ${err.message}`));
642
+ console.log(chalk.yellow(" Reset aborted because the safety net failed."));
643
+ console.log(chalk.dim(" Re-run with ") + chalk.cyan("--no-backup") + chalk.dim(" to reset without a backup.\n"));
644
+ process.exit(1);
645
+ }
646
+ }
647
+ }
648
+
649
+ if (!opts.yes) {
650
+ const { default: inquirer } = await import("inquirer");
651
+ let confirmed;
652
+ try {
653
+ const ans = await inquirer.prompt([
654
+ { type: "confirm", name: "confirmed", message: "Wipe and reset?", default: false },
655
+ ]);
656
+ confirmed = ans.confirmed;
657
+ } catch {
658
+ // ctrl-c bails — treat as no
659
+ confirmed = false;
660
+ }
661
+ if (!confirmed) {
662
+ console.log(chalk.dim("\n Aborted. Nothing was deleted.\n"));
663
+ return;
664
+ }
665
+ }
666
+
667
+ // Best-effort shutdown. If nothing is running these silently no-op.
668
+ await stopConsole().catch(() => {});
669
+ await stopGateway().catch(() => {});
670
+
671
+ let removed = 0;
672
+ for (const t of existing) {
673
+ try {
674
+ rmSync(t.path, { recursive: true, force: true });
675
+ console.log(chalk.green(` ✓ removed ${t.label}`));
676
+ removed++;
677
+ } catch (err) {
678
+ console.error(chalk.red(` × failed to remove ${t.label}: ${err.message}`));
679
+ }
680
+ }
681
+
682
+ console.log();
683
+ console.log(chalk.bold(` ${removed} path${removed === 1 ? "" : "s"} wiped. Fresh slate.`));
684
+ console.log(chalk.dim(" Next step: ") + chalk.cyan("leedab start"));
685
+ console.log();
686
+ });
687
+
688
+ const backup = program
689
+ .command("backup")
690
+ .description("Snapshot runs, chats, memory, workspace, license + config to a tarball under ~/.leedab/backups/")
691
+ .option("--label <slug>", "Optional label appended to the archive name (e.g. before-pilot-demo)")
692
+ .action(async (opts) => {
693
+ const spinner = ora("Creating backup...").start();
694
+ try {
695
+ const result = await createBackup({ label: opts.label });
696
+ spinner.succeed(chalk.green(`Backup saved: ${result.archive} (${humanBytes(result.bytes)})`));
697
+ const present = result.manifest.items.filter((i) => i.present);
698
+ const skipped = result.manifest.items.filter((i) => !i.present);
699
+ console.log();
700
+ console.log(chalk.bold(" Included:"));
701
+ for (const i of present) {
702
+ console.log(chalk.dim(` ${i.archiveName.padEnd(18)} ${humanBytes(i.bytes).padStart(8)} ${i.absPath}`));
703
+ }
704
+ if (skipped.length > 0) {
705
+ console.log();
706
+ console.log(chalk.dim(" Skipped (absent on this machine):"));
707
+ for (const i of skipped) console.log(chalk.dim(` ${i.archiveName}`));
708
+ }
709
+ console.log();
710
+ console.log(chalk.dim(" Restore with: ") + chalk.cyan(`leedab backup restore ${result.archive}`));
711
+ console.log();
712
+ } catch (err) {
713
+ spinner.fail(chalk.red(`Backup failed: ${err.message}`));
714
+ process.exit(1);
715
+ }
716
+ });
717
+
718
+ backup
719
+ .command("list")
720
+ .description("List all local backups under ~/.leedab/backups/")
721
+ .action(async () => {
722
+ const backups = await listBackups();
723
+ if (backups.length === 0) {
724
+ console.log(chalk.dim("\n No backups yet. Run ") + chalk.cyan("leedab backup") + chalk.dim(" to create one.\n"));
725
+ return;
726
+ }
727
+ console.log();
728
+ console.log(chalk.bold(` ${backups.length} backup${backups.length === 1 ? "" : "s"}:`));
729
+ console.log();
730
+ for (const b of backups) {
731
+ const when = b.createdAt ? new Date(b.createdAt).toLocaleString() : "unknown";
732
+ console.log(` ${chalk.cyan(b.archive)}`);
733
+ console.log(chalk.dim(` ${when} · ${humanBytes(b.bytes)}` + (b.manifest?.leedabVersion ? ` · v${b.manifest.leedabVersion}` : "")));
734
+ }
735
+ console.log();
736
+ });
737
+
738
+ backup
739
+ .command("restore <archive>")
740
+ .description("Extract a backup tarball back over the current state. Overwrites existing files.")
741
+ .option("-y, --yes", "Skip the confirmation prompt", false)
742
+ .action(async (archive, opts) => {
743
+ const abs = resolve(archive);
744
+ if (!existsSync(abs)) {
745
+ console.error(chalk.red(`\n Backup not found: ${abs}\n`));
746
+ process.exit(1);
747
+ }
748
+ console.log(chalk.bold(`\n About to restore: ${chalk.cyan(abs)}`));
749
+ console.log(chalk.yellow(" This OVERWRITES existing runs, chats, memory, workspace, and state."));
750
+ console.log(chalk.dim(" Stop the agent first if it's running.\n"));
751
+
752
+ if (!opts.yes) {
753
+ const { default: inquirer } = await import("inquirer");
754
+ let confirmed;
755
+ try {
756
+ const ans = await inquirer.prompt([
757
+ { type: "confirm", name: "confirmed", message: "Continue?", default: false },
758
+ ]);
759
+ confirmed = ans.confirmed;
760
+ } catch {
761
+ confirmed = false;
762
+ }
763
+ if (!confirmed) {
764
+ console.log(chalk.dim("\n Aborted. Nothing was restored.\n"));
765
+ return;
766
+ }
767
+ }
768
+
769
+ await stopConsole().catch(() => {});
770
+ await stopGateway().catch(() => {});
771
+
772
+ const spinner = ora("Restoring...").start();
773
+ try {
774
+ const manifest = await restoreBackup(abs);
775
+ spinner.succeed(chalk.green("Restore complete."));
776
+ if (manifest?.createdAt) {
777
+ console.log(chalk.dim(` Snapshot from: ${new Date(manifest.createdAt).toLocaleString()}`));
778
+ if (manifest.leedabVersion) console.log(chalk.dim(` leedab v${manifest.leedabVersion}`));
779
+ }
780
+ console.log(chalk.dim(" Next step: ") + chalk.cyan("leedab start"));
781
+ console.log();
782
+ } catch (err) {
783
+ spinner.fail(chalk.red(`Restore failed: ${err.message}`));
784
+ process.exit(1);
785
+ }
786
+ });
787
+
788
+ backup
789
+ .command("delete <archive>")
790
+ .description("Delete a backup tarball")
791
+ .action((archive) => {
792
+ const abs = resolve(archive);
793
+ if (!existsSync(abs)) {
794
+ console.error(chalk.red(`\n Backup not found: ${abs}\n`));
795
+ process.exit(1);
796
+ }
797
+ deleteBackup(abs);
798
+ console.log(chalk.green(`\n Removed ${abs}\n`));
799
+ });
800
+
558
801
  const pairing = program
559
802
  .command("pairing")
560
803
  .description("Manage channel pairing (approve users to message the agent)");
@@ -0,0 +1,30 @@
1
+ export type BackupManifest = {
2
+ createdAt: string;
3
+ leedabVersion: string;
4
+ hostname: string;
5
+ items: Array<{
6
+ archiveName: string;
7
+ absPath: string;
8
+ bytes: number;
9
+ present: boolean;
10
+ }>;
11
+ };
12
+ export type CreateResult = {
13
+ archive: string;
14
+ manifest: BackupManifest;
15
+ bytes: number;
16
+ };
17
+ export declare function createBackup(opts?: {
18
+ label?: string;
19
+ }): Promise<CreateResult>;
20
+ export type BackupListing = {
21
+ archive: string;
22
+ bytes: number;
23
+ createdAt: string | null;
24
+ manifest: BackupManifest | null;
25
+ };
26
+ export declare function listBackups(): Promise<BackupListing[]>;
27
+ export declare function restoreBackup(archive: string): Promise<BackupManifest | null>;
28
+ export declare function deleteBackup(archive: string): void;
29
+ export declare function backupDir(): string;
30
+ export declare function humanBytes(n: number): string;
@@ -0,0 +1,273 @@
1
+ import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, unlinkSync, } from "node:fs";
2
+ import { cp, mkdir, readFile, rm, writeFile } from "node:fs/promises";
3
+ import { basename, dirname, resolve } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { hostname, tmpdir } from "node:os";
6
+ import { create as tarCreate, extract as tarExtract } from "tar";
7
+ import { STATE_DIR, AGENT_WORKSPACE_DIR } from "../paths.js";
8
+ // Backup helper used by `leedab backup` and by `leedab reset` (as the
9
+ // soft-delete safety net). Captures the data and configuration a tenant
10
+ // would lose on a reset: runs, usage, chats, workflows, memory, license,
11
+ // and the seeded workspace. Skips logs, the admin token, pid files, and
12
+ // anything regenerable. Produces a single .tar.gz at a predictable path
13
+ // so list + restore can find it without parsing names.
14
+ const BACKUP_DIR = resolve(STATE_DIR, "backups");
15
+ function timestampSlug() {
16
+ const d = new Date();
17
+ const pad = (n) => String(n).padStart(2, "0");
18
+ return (`${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}` +
19
+ `-${pad(d.getHours())}${pad(d.getMinutes())}${pad(d.getSeconds())}`);
20
+ }
21
+ function dirBytes(path) {
22
+ if (!existsSync(path))
23
+ return 0;
24
+ let total = 0;
25
+ const walk = (p) => {
26
+ const st = statSync(p);
27
+ if (st.isFile()) {
28
+ total += st.size;
29
+ return;
30
+ }
31
+ if (st.isDirectory()) {
32
+ for (const child of readdirSync(p))
33
+ walk(resolve(p, child));
34
+ }
35
+ };
36
+ walk(path);
37
+ return total;
38
+ }
39
+ function packageRoot() {
40
+ // Walk up from this module looking for the leedab package.json. Works
41
+ // for both source (src/backup/index.ts) and dist (dist/backup/index.js).
42
+ let dir = dirname(fileURLToPath(import.meta.url));
43
+ for (let i = 0; i < 10; i++) {
44
+ const candidate = resolve(dir, "package.json");
45
+ if (existsSync(candidate)) {
46
+ try {
47
+ const pkg = JSON.parse(readFileSync(candidate, "utf-8"));
48
+ if (pkg.name === "leedab")
49
+ return dir;
50
+ }
51
+ catch {
52
+ /* ignore */
53
+ }
54
+ }
55
+ const parent = resolve(dir, "..");
56
+ if (parent === dir)
57
+ break;
58
+ dir = parent;
59
+ }
60
+ throw new Error("Could not locate leedab package root from src/backup");
61
+ }
62
+ function leedabVersion() {
63
+ try {
64
+ const pkg = JSON.parse(readFileSync(resolve(packageRoot(), "package.json"), "utf-8"));
65
+ return pkg.version ?? "0.0.0";
66
+ }
67
+ catch {
68
+ return "0.0.0";
69
+ }
70
+ }
71
+ function captureSet() {
72
+ const PACKAGE_ROOT = packageRoot();
73
+ return [
74
+ {
75
+ absPath: resolve(PACKAGE_ROOT, "apps", "console", ".next", "standalone", "data"),
76
+ archiveName: "console-data",
77
+ },
78
+ {
79
+ absPath: resolve(PACKAGE_ROOT, "apps", "console", "data"),
80
+ archiveName: "console-data-dev",
81
+ },
82
+ {
83
+ absPath: resolve(STATE_DIR, "memory"),
84
+ archiveName: "memory",
85
+ },
86
+ {
87
+ absPath: AGENT_WORKSPACE_DIR,
88
+ archiveName: "workspace",
89
+ },
90
+ {
91
+ absPath: STATE_DIR,
92
+ archiveName: "state",
93
+ filter: (p) => {
94
+ const name = basename(p);
95
+ if (name === "logs")
96
+ return false;
97
+ if (name === "admin-token")
98
+ return false;
99
+ if (name === "console.pid")
100
+ return false;
101
+ if (name === "update-check.json")
102
+ return false;
103
+ if (name === "backups")
104
+ return false;
105
+ // The agent workspace is captured as its own top-level archive
106
+ // entry above; exclude it here so the state archive doesn't
107
+ // double-pack it.
108
+ if (name === "agent-workspace")
109
+ return false;
110
+ return true;
111
+ },
112
+ },
113
+ ];
114
+ }
115
+ export async function createBackup(opts = {}) {
116
+ await mkdir(BACKUP_DIR, { recursive: true });
117
+ const slug = timestampSlug() + (opts.label ? `-${opts.label}` : "");
118
+ const archive = resolve(BACKUP_DIR, `${slug}.tar.gz`);
119
+ const sidecarManifest = resolve(BACKUP_DIR, `.${slug}.manifest.json`);
120
+ const items = captureSet();
121
+ const manifestEntries = [];
122
+ const toArchive = [];
123
+ for (const item of items) {
124
+ const present = existsSync(item.absPath);
125
+ manifestEntries.push({
126
+ archiveName: item.archiveName,
127
+ absPath: item.absPath,
128
+ bytes: present ? dirBytes(item.absPath) : 0,
129
+ present,
130
+ });
131
+ if (present) {
132
+ toArchive.push({
133
+ src: item.absPath,
134
+ rename: item.archiveName,
135
+ filter: item.filter,
136
+ });
137
+ }
138
+ }
139
+ const manifest = {
140
+ createdAt: new Date().toISOString(),
141
+ leedabVersion: leedabVersion(),
142
+ hostname: hostname(),
143
+ items: manifestEntries,
144
+ };
145
+ await writeFile(sidecarManifest, JSON.stringify(manifest, null, 2) + "\n");
146
+ // Pre-stage with fs.cp so the archive contains clean rewritten top-
147
+ // level directory names regardless of where the sources live on disk.
148
+ // Cross-platform (tar's --transform syntax differs between GNU + BSD)
149
+ // and keeps the implementation small.
150
+ //
151
+ // Staging lives in the OS tmpdir, not inside BACKUP_DIR. Earlier versions
152
+ // staged at `BACKUP_DIR/.<slug>.staging`, which sits *inside* STATE_DIR.
153
+ // The state capture's source is STATE_DIR itself, so fs.cp refused with
154
+ // EINVAL ("cannot copy a directory to a subdirectory of itself") — the
155
+ // backups-folder filter would have skipped the nested copy, but Node's
156
+ // pre-flight check fires before the filter is consulted.
157
+ const stagingDir = resolve(tmpdir(), `leedab-backup-${slug}.staging`);
158
+ await mkdir(stagingDir, { recursive: true });
159
+ try {
160
+ const stagedNames = [];
161
+ for (const a of toArchive) {
162
+ const dest = resolve(stagingDir, a.rename);
163
+ await cp(a.src, dest, {
164
+ recursive: true,
165
+ filter: a.filter ? (src) => a.filter(src) : undefined,
166
+ });
167
+ stagedNames.push(a.rename);
168
+ }
169
+ // Include the manifest inside the archive so restore can verify
170
+ // without needing the sidecar sibling file.
171
+ await writeFile(resolve(stagingDir, "manifest.json"), JSON.stringify(manifest, null, 2) + "\n");
172
+ stagedNames.push("manifest.json");
173
+ await tarCreate({
174
+ file: archive,
175
+ cwd: stagingDir,
176
+ gzip: true,
177
+ portable: true,
178
+ }, stagedNames);
179
+ }
180
+ finally {
181
+ await rm(stagingDir, { recursive: true, force: true });
182
+ }
183
+ const bytes = statSync(archive).size;
184
+ return { archive, manifest, bytes };
185
+ }
186
+ export async function listBackups() {
187
+ if (!existsSync(BACKUP_DIR))
188
+ return [];
189
+ const files = readdirSync(BACKUP_DIR).filter((f) => f.endsWith(".tar.gz"));
190
+ const out = [];
191
+ for (const f of files) {
192
+ const archive = resolve(BACKUP_DIR, f);
193
+ const st = statSync(archive);
194
+ const slug = f.replace(/\.tar\.gz$/, "");
195
+ const sidecar = resolve(BACKUP_DIR, `.${slug}.manifest.json`);
196
+ let manifest = null;
197
+ if (existsSync(sidecar)) {
198
+ try {
199
+ manifest = JSON.parse(await readFile(sidecar, "utf-8"));
200
+ }
201
+ catch {
202
+ manifest = null;
203
+ }
204
+ }
205
+ out.push({
206
+ archive,
207
+ bytes: st.size,
208
+ createdAt: manifest?.createdAt ?? st.mtime.toISOString(),
209
+ manifest,
210
+ });
211
+ }
212
+ return out.sort((a, b) => (a.createdAt ?? "") < (b.createdAt ?? "") ? 1 : -1);
213
+ }
214
+ export async function restoreBackup(archive) {
215
+ if (!existsSync(archive)) {
216
+ throw new Error(`Backup not found at ${archive}`);
217
+ }
218
+ const stagingDir = resolve(BACKUP_DIR, `.restore-${timestampSlug()}`);
219
+ await mkdir(stagingDir, { recursive: true });
220
+ await tarExtract({ file: archive, cwd: stagingDir });
221
+ let manifest = null;
222
+ const manifestPath = resolve(stagingDir, "manifest.json");
223
+ if (existsSync(manifestPath)) {
224
+ try {
225
+ manifest = JSON.parse(await readFile(manifestPath, "utf-8"));
226
+ }
227
+ catch {
228
+ manifest = null;
229
+ }
230
+ }
231
+ const PACKAGE_ROOT = packageRoot();
232
+ const targetByName = {
233
+ "console-data": resolve(PACKAGE_ROOT, "apps", "console", ".next", "standalone", "data"),
234
+ "console-data-dev": resolve(PACKAGE_ROOT, "apps", "console", "data"),
235
+ memory: resolve(STATE_DIR, "memory"),
236
+ workspace: AGENT_WORKSPACE_DIR,
237
+ state: STATE_DIR,
238
+ };
239
+ for (const [name, dest] of Object.entries(targetByName)) {
240
+ if (!dest)
241
+ continue;
242
+ const src = resolve(stagingDir, name);
243
+ if (!existsSync(src))
244
+ continue;
245
+ await mkdir(dirname(dest), { recursive: true });
246
+ await cp(src, dest, { recursive: true, force: true });
247
+ }
248
+ await rm(stagingDir, { recursive: true, force: true });
249
+ return manifest;
250
+ }
251
+ export function deleteBackup(archive) {
252
+ if (!existsSync(archive))
253
+ return;
254
+ unlinkSync(archive);
255
+ const slug = basename(archive).replace(/\.tar\.gz$/, "");
256
+ const sidecar = resolve(dirname(archive), `.${slug}.manifest.json`);
257
+ if (existsSync(sidecar))
258
+ unlinkSync(sidecar);
259
+ }
260
+ export function backupDir() {
261
+ if (!existsSync(BACKUP_DIR))
262
+ mkdirSync(BACKUP_DIR, { recursive: true });
263
+ return BACKUP_DIR;
264
+ }
265
+ export function humanBytes(n) {
266
+ if (n < 1024)
267
+ return `${n}B`;
268
+ if (n < 1024 * 1024)
269
+ return `${(n / 1024).toFixed(1)}KB`;
270
+ if (n < 1024 * 1024 * 1024)
271
+ return `${(n / (1024 * 1024)).toFixed(1)}MB`;
272
+ return `${(n / (1024 * 1024 * 1024)).toFixed(2)}GB`;
273
+ }
package/dist/gateway.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { spawn, execFile } from "node:child_process";
2
2
  import { createWriteStream } from "node:fs";
3
3
  import { resolve, dirname, join } from "node:path";
4
- import { readFile, writeFile, readdir, copyFile, mkdir, access } from "node:fs/promises";
4
+ import { readFile, writeFile, readdir, copyFile, mkdir } from "node:fs/promises";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { promisify } from "node:util";
7
7
  import { resolveOpenClawBin, openclawArgs, openclawEnv } from "./openclaw.js";
8
8
  import { ensureLicense } from "./license.js";
9
- import { STATE_DIR } from "./paths.js";
9
+ import { STATE_DIR, AGENT_WORKSPACE_DIR } from "./paths.js";
10
10
  const execFileAsync = promisify(execFile);
11
11
  let gatewayProcess = null;
12
12
  /**
@@ -23,6 +23,11 @@ export async function startGateway(config) {
23
23
  const env = openclawEnv(stateDir);
24
24
  // Seed workspace templates (skip files that already exist)
25
25
  await seedWorkspace();
26
+ // Point openclaw's default agent at our seeded workspace. Without this,
27
+ // openclaw reads SOUL.md and friends from ~/.openclaw/workspace/ (its
28
+ // own default install location, with the generic openclaw SOUL) instead
29
+ // of LeedAB's COO contract in ./workspace/.
30
+ await pinAgentWorkspace(stateDir);
26
31
  // Auto-approve all tool executions (enterprise local deployment)
27
32
  await ensureAutoApprove(bin, env);
28
33
  // Make sure the OpenAI-compat /v1/chat/completions HTTP endpoint is on.
@@ -153,6 +158,44 @@ async function registerChannels(bin, stateDir, config) {
153
158
  }
154
159
  }
155
160
  }
161
+ /**
162
+ * Pin openclaw's default agent at the repo-local ./workspace/ instead of
163
+ * its own ~/.openclaw/workspace/. The "main" agent's workspace path is
164
+ * resolved from `agents.defaults.workspace` in openclaw.json. Openclaw's
165
+ * onboard sets that to ~/.openclaw/workspace/, which has the generic
166
+ * openclaw SOUL — so on Telegram the bot reads a generic-assistant
167
+ * identity and has no idea about LeedAB's COO routing or the licensed
168
+ * AB roster. Pointing it at ./workspace/ (where seedWorkspace just
169
+ * wrote SOUL.md + COO.md + AGENTS.md + BOOTSTRAP.md) makes the
170
+ * channel-facing agent IS the COO.
171
+ *
172
+ * Idempotent: no-op when the path is already correct or when
173
+ * openclaw.json doesn't exist yet (onboard hasn't run).
174
+ */
175
+ async function pinAgentWorkspace(stateDir) {
176
+ const workspacePath = AGENT_WORKSPACE_DIR;
177
+ const configPath = resolve(stateDir, "openclaw.json");
178
+ let raw;
179
+ try {
180
+ raw = await readFile(configPath, "utf-8");
181
+ }
182
+ catch {
183
+ return; // openclaw.json not created yet — onboard hasn't run
184
+ }
185
+ let cfg;
186
+ try {
187
+ cfg = JSON.parse(raw);
188
+ }
189
+ catch {
190
+ return;
191
+ }
192
+ cfg.agents = cfg.agents ?? {};
193
+ cfg.agents.defaults = cfg.agents.defaults ?? {};
194
+ if (cfg.agents.defaults.workspace === workspacePath)
195
+ return;
196
+ cfg.agents.defaults.workspace = workspacePath;
197
+ await writeFile(configPath, JSON.stringify(cfg, null, 2) + "\n");
198
+ }
156
199
  /**
157
200
  * Idempotently flip `gateway.http.endpoints.chatCompletions.enabled` to true
158
201
  * in ~/.leedab/openclaw.json. The console (Next.js, apps/console) proxies
@@ -265,24 +308,26 @@ async function ensureAutoApprove(bin, env, gateway = false) {
265
308
  console.warn("[leedab] auto-approve setup failed:", lastErr?.message ?? lastErr);
266
309
  }
267
310
  /**
268
- * Copy default workspace files (AGENTS.md, SOUL.md, etc.) into workspace/
269
- * on first run. Existing files are never overwritten.
311
+ * Copy the framework workspace files (AGENTS.md, SOUL.md, COO.md,
312
+ * BOOTSTRAP.md) into AGENT_WORKSPACE_DIR on every start. These four are
313
+ * framework-level identity files that define how the COO routes work
314
+ * across channels — they always reflect the templates the build ships
315
+ * with. Operator-specific content lives in USER.md and per-agent files,
316
+ * neither of which is templated.
317
+ *
318
+ * The destination is anchored under STATE_DIR (~/.leedab/agent-workspace/)
319
+ * rather than cwd-relative, so the path doesn't drift between directories
320
+ * across customer installs. pinAgentWorkspace points openclaw at this
321
+ * same path so the channel-facing agent reads from here.
270
322
  */
271
323
  async function seedWorkspace() {
272
324
  const srcDir = join(dirname(fileURLToPath(import.meta.url)), "templates", "workspace");
273
- const destDir = resolve("workspace");
325
+ const destDir = AGENT_WORKSPACE_DIR;
274
326
  await mkdir(destDir, { recursive: true });
275
327
  try {
276
328
  const files = await readdir(srcDir);
277
329
  for (const file of files) {
278
- const dest = join(destDir, file);
279
- try {
280
- await access(dest);
281
- // Already exists — don't overwrite
282
- }
283
- catch {
284
- await copyFile(join(srcDir, file), dest);
285
- }
330
+ await copyFile(join(srcDir, file), join(destDir, file));
286
331
  }
287
332
  }
288
333
  catch (err) {