leedab 0.7.2 → 0.9.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 (700) hide show
  1. package/_schema/entitlements.fixture.json +30 -0
  2. package/apps/console/.next/standalone/.next/BUILD_ID +1 -1
  3. package/apps/console/.next/standalone/.next/app-build-manifest.json +230 -174
  4. package/apps/console/.next/standalone/.next/app-path-routes-manifest.json +56 -48
  5. package/apps/console/.next/standalone/.next/build-manifest.json +2 -2
  6. package/apps/console/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  7. package/apps/console/.next/standalone/.next/server/app/_not-found.html +1 -1
  8. package/apps/console/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  9. package/apps/console/.next/standalone/.next/server/app/api/agent/route.js.nft.json +1 -1
  10. package/apps/console/.next/standalone/.next/server/app/api/agent/route_client-reference-manifest.js +1 -1
  11. package/apps/console/.next/standalone/.next/server/app/api/approvals/route.js.nft.json +1 -1
  12. package/apps/console/.next/standalone/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  13. package/apps/console/.next/standalone/.next/server/app/api/approvals/stream/route.js.nft.json +1 -1
  14. package/apps/console/.next/standalone/.next/server/app/api/approvals/stream/route_client-reference-manifest.js +1 -1
  15. package/apps/console/.next/standalone/.next/server/app/api/automation/workflow-blueprint/route.js.nft.json +1 -1
  16. package/apps/console/.next/standalone/.next/server/app/api/automation/workflow-blueprint/route_client-reference-manifest.js +1 -1
  17. package/apps/console/.next/standalone/.next/server/app/api/backend/endpoint-spec/route.js.nft.json +1 -1
  18. package/apps/console/.next/standalone/.next/server/app/api/backend/endpoint-spec/route_client-reference-manifest.js +1 -1
  19. package/apps/console/.next/standalone/.next/server/app/api/bootstrap-admin-token/route_client-reference-manifest.js +1 -1
  20. package/apps/console/.next/standalone/.next/server/app/api/brain/add-folder/route.js +1 -0
  21. package/apps/console/.next/standalone/.next/server/app/api/brain/add-folder/route.js.nft.json +1 -0
  22. package/apps/console/.next/standalone/.next/server/app/api/brain/add-folder/route_client-reference-manifest.js +1 -0
  23. package/apps/console/.next/standalone/.next/server/app/api/brain/forget/route.js +1 -0
  24. package/apps/console/.next/standalone/.next/server/app/api/brain/forget/route.js.nft.json +1 -0
  25. package/apps/console/.next/standalone/.next/server/app/api/brain/forget/route_client-reference-manifest.js +1 -0
  26. package/apps/console/.next/standalone/.next/server/app/api/brain/scan/route.js +1 -0
  27. package/apps/console/.next/standalone/.next/server/app/api/brain/scan/route.js.nft.json +1 -0
  28. package/apps/console/.next/standalone/.next/server/app/api/brain/scan/route_client-reference-manifest.js +1 -0
  29. package/apps/console/.next/standalone/.next/server/app/api/brain/search/route.js +1 -0
  30. package/apps/console/.next/standalone/.next/server/app/api/brain/search/route.js.nft.json +1 -0
  31. package/apps/console/.next/standalone/.next/server/app/api/brain/search/route_client-reference-manifest.js +1 -0
  32. package/apps/console/.next/standalone/.next/server/app/api/brain/status/route.js +1 -0
  33. package/apps/console/.next/standalone/.next/server/app/api/brain/status/route.js.nft.json +1 -0
  34. package/apps/console/.next/standalone/.next/server/app/api/brain/status/route_client-reference-manifest.js +1 -0
  35. package/apps/console/.next/standalone/.next/server/app/api/brand/brand-audit/route.js.nft.json +1 -1
  36. package/apps/console/.next/standalone/.next/server/app/api/brand/brand-audit/route_client-reference-manifest.js +1 -1
  37. package/apps/console/.next/standalone/.next/server/app/api/campaigns/campaign-brief/route.js.nft.json +1 -1
  38. package/apps/console/.next/standalone/.next/server/app/api/campaigns/campaign-brief/route_client-reference-manifest.js +1 -1
  39. package/apps/console/.next/standalone/.next/server/app/api/champion/confidence/route.js.nft.json +1 -1
  40. package/apps/console/.next/standalone/.next/server/app/api/champion/confidence/route_client-reference-manifest.js +1 -1
  41. package/apps/console/.next/standalone/.next/server/app/api/champion/customer/route.js.nft.json +1 -1
  42. package/apps/console/.next/standalone/.next/server/app/api/champion/customer/route_client-reference-manifest.js +1 -1
  43. package/apps/console/.next/standalone/.next/server/app/api/champion/dispatches/route.js.nft.json +1 -1
  44. package/apps/console/.next/standalone/.next/server/app/api/champion/dispatches/route_client-reference-manifest.js +1 -1
  45. package/apps/console/.next/standalone/.next/server/app/api/champion/engagement/route.js.nft.json +1 -1
  46. package/apps/console/.next/standalone/.next/server/app/api/champion/engagement/route_client-reference-manifest.js +1 -1
  47. package/apps/console/.next/standalone/.next/server/app/api/champion/escalate/route.js.nft.json +1 -1
  48. package/apps/console/.next/standalone/.next/server/app/api/champion/escalate/route_client-reference-manifest.js +1 -1
  49. package/apps/console/.next/standalone/.next/server/app/api/champion/profile/route.js.nft.json +1 -1
  50. package/apps/console/.next/standalone/.next/server/app/api/champion/profile/route_client-reference-manifest.js +1 -1
  51. package/apps/console/.next/standalone/.next/server/app/api/champion/screenshare/route.js.nft.json +1 -1
  52. package/apps/console/.next/standalone/.next/server/app/api/champion/screenshare/route_client-reference-manifest.js +1 -1
  53. package/apps/console/.next/standalone/.next/server/app/api/champion/track-question/route.js.nft.json +1 -1
  54. package/apps/console/.next/standalone/.next/server/app/api/champion/track-question/route_client-reference-manifest.js +1 -1
  55. package/apps/console/.next/standalone/.next/server/app/api/champion/use-case-wiki/route_client-reference-manifest.js +1 -1
  56. package/apps/console/.next/standalone/.next/server/app/api/chat/route.js.nft.json +1 -1
  57. package/apps/console/.next/standalone/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
  58. package/apps/console/.next/standalone/.next/server/app/api/compliance/risk-register-seed/route.js.nft.json +1 -1
  59. package/apps/console/.next/standalone/.next/server/app/api/compliance/risk-register-seed/route_client-reference-manifest.js +1 -1
  60. package/apps/console/.next/standalone/.next/server/app/api/computer-use/[id]/route.js.nft.json +1 -1
  61. package/apps/console/.next/standalone/.next/server/app/api/computer-use/[id]/route_client-reference-manifest.js +1 -1
  62. package/apps/console/.next/standalone/.next/server/app/api/computer-use/route.js.nft.json +1 -1
  63. package/apps/console/.next/standalone/.next/server/app/api/computer-use/route_client-reference-manifest.js +1 -1
  64. package/apps/console/.next/standalone/.next/server/app/api/concierge/morning-brief/route.js.nft.json +1 -1
  65. package/apps/console/.next/standalone/.next/server/app/api/concierge/morning-brief/route_client-reference-manifest.js +1 -1
  66. package/apps/console/.next/standalone/.next/server/app/api/contacts/route.js.nft.json +1 -1
  67. package/apps/console/.next/standalone/.next/server/app/api/contacts/route_client-reference-manifest.js +1 -1
  68. package/apps/console/.next/standalone/.next/server/app/api/content/seo-brief/route.js.nft.json +1 -1
  69. package/apps/console/.next/standalone/.next/server/app/api/content/seo-brief/route_client-reference-manifest.js +1 -1
  70. package/apps/console/.next/standalone/.next/server/app/api/conversations/route.js.nft.json +1 -1
  71. package/apps/console/.next/standalone/.next/server/app/api/conversations/route_client-reference-manifest.js +1 -1
  72. package/apps/console/.next/standalone/.next/server/app/api/coo/roster/route.js +1 -0
  73. package/apps/console/.next/standalone/.next/server/app/api/coo/roster/route.js.nft.json +1 -0
  74. package/apps/console/.next/standalone/.next/server/app/api/coo/roster/route_client-reference-manifest.js +1 -0
  75. package/apps/console/.next/standalone/.next/server/app/api/coo/route.js.nft.json +1 -1
  76. package/apps/console/.next/standalone/.next/server/app/api/coo/route_client-reference-manifest.js +1 -1
  77. package/apps/console/.next/standalone/.next/server/app/api/cx/escalation-triage/route.js.nft.json +1 -1
  78. package/apps/console/.next/standalone/.next/server/app/api/cx/escalation-triage/route_client-reference-manifest.js +1 -1
  79. package/apps/console/.next/standalone/.next/server/app/api/cx/health-score/route.js.nft.json +1 -1
  80. package/apps/console/.next/standalone/.next/server/app/api/cx/health-score/route_client-reference-manifest.js +1 -1
  81. package/apps/console/.next/standalone/.next/server/app/api/data/cohort-brief/route.js.nft.json +1 -1
  82. package/apps/console/.next/standalone/.next/server/app/api/data/cohort-brief/route_client-reference-manifest.js +1 -1
  83. package/apps/console/.next/standalone/.next/server/app/api/delegate/route.js +1 -0
  84. package/apps/console/.next/standalone/.next/server/app/api/delegate/route.js.nft.json +1 -0
  85. package/apps/console/.next/standalone/.next/server/app/api/delegate/route_client-reference-manifest.js +1 -0
  86. package/apps/console/.next/standalone/.next/server/app/api/delegate/stream/route.js +4 -0
  87. package/apps/console/.next/standalone/.next/server/app/api/delegate/stream/route.js.nft.json +1 -0
  88. package/apps/console/.next/standalone/.next/server/app/api/delegate/stream/route_client-reference-manifest.js +1 -0
  89. package/apps/console/.next/standalone/.next/server/app/api/delivery/qbr-brief/route.js.nft.json +1 -1
  90. package/apps/console/.next/standalone/.next/server/app/api/delivery/qbr-brief/route_client-reference-manifest.js +1 -1
  91. package/apps/console/.next/standalone/.next/server/app/api/delivery/weekly-brief/route.js.nft.json +1 -1
  92. package/apps/console/.next/standalone/.next/server/app/api/delivery/weekly-brief/route_client-reference-manifest.js +1 -1
  93. package/apps/console/.next/standalone/.next/server/app/api/dev/invalidate-cache/route.js.nft.json +1 -1
  94. package/apps/console/.next/standalone/.next/server/app/api/dev/invalidate-cache/route_client-reference-manifest.js +1 -1
  95. package/apps/console/.next/standalone/.next/server/app/api/devops/runbook/route.js.nft.json +1 -1
  96. package/apps/console/.next/standalone/.next/server/app/api/devops/runbook/route_client-reference-manifest.js +1 -1
  97. package/apps/console/.next/standalone/.next/server/app/api/email/sequence-brief/route.js.nft.json +1 -1
  98. package/apps/console/.next/standalone/.next/server/app/api/email/sequence-brief/route_client-reference-manifest.js +1 -1
  99. package/apps/console/.next/standalone/.next/server/app/api/engineering/adr-draft/route.js.nft.json +1 -1
  100. package/apps/console/.next/standalone/.next/server/app/api/engineering/adr-draft/route_client-reference-manifest.js +1 -1
  101. package/apps/console/.next/standalone/.next/server/app/api/finance/runway-snapshot/route.js.nft.json +1 -1
  102. package/apps/console/.next/standalone/.next/server/app/api/finance/runway-snapshot/route_client-reference-manifest.js +1 -1
  103. package/apps/console/.next/standalone/.next/server/app/api/frontend/component-spec/route.js.nft.json +1 -1
  104. package/apps/console/.next/standalone/.next/server/app/api/frontend/component-spec/route_client-reference-manifest.js +1 -1
  105. package/apps/console/.next/standalone/.next/server/app/api/health/route.js.nft.json +1 -1
  106. package/apps/console/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  107. package/apps/console/.next/standalone/.next/server/app/api/implementation/brief/route.js.nft.json +1 -1
  108. package/apps/console/.next/standalone/.next/server/app/api/implementation/brief/route_client-reference-manifest.js +1 -1
  109. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-migration-script/route.js.nft.json +1 -1
  110. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-migration-script/route_client-reference-manifest.js +1 -1
  111. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-n8n-workflow/route.js.nft.json +1 -1
  112. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-n8n-workflow/route_client-reference-manifest.js +1 -1
  113. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-skill-override/route.js.nft.json +1 -1
  114. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-skill-override/route_client-reference-manifest.js +1 -1
  115. package/apps/console/.next/standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  116. package/apps/console/.next/standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  117. package/apps/console/.next/standalone/.next/server/app/api/inbox/stream/route.js.nft.json +1 -1
  118. package/apps/console/.next/standalone/.next/server/app/api/inbox/stream/route_client-reference-manifest.js +1 -1
  119. package/apps/console/.next/standalone/.next/server/app/api/investor/kpi-tracker/route.js.nft.json +1 -1
  120. package/apps/console/.next/standalone/.next/server/app/api/investor/kpi-tracker/route_client-reference-manifest.js +1 -1
  121. package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/status/route.js +1 -1
  122. package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/status/route_client-reference-manifest.js +1 -1
  123. package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/telegram/connect/route.js +1 -1
  124. package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/telegram/connect/route_client-reference-manifest.js +1 -1
  125. package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/whatsapp/connect/route_client-reference-manifest.js +1 -1
  126. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/route.js.nft.json +1 -1
  127. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/route_client-reference-manifest.js +1 -1
  128. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/status/route.js.nft.json +1 -1
  129. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/status/route_client-reference-manifest.js +1 -1
  130. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/templates/[name]/route.js.nft.json +1 -1
  131. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/templates/[name]/route_client-reference-manifest.js +1 -1
  132. package/apps/console/.next/standalone/.next/server/app/api/leedab/license/route_client-reference-manifest.js +1 -1
  133. package/apps/console/.next/standalone/.next/server/app/api/leedab/models/route_client-reference-manifest.js +1 -1
  134. package/apps/console/.next/standalone/.next/server/app/api/leedab/providers/route_client-reference-manifest.js +1 -1
  135. package/apps/console/.next/standalone/.next/server/app/api/leedab/sessions/[id]/route_client-reference-manifest.js +1 -1
  136. package/apps/console/.next/standalone/.next/server/app/api/leedab/sessions/route_client-reference-manifest.js +1 -1
  137. package/apps/console/.next/standalone/.next/server/app/api/leedab/team/[id]/route_client-reference-manifest.js +1 -1
  138. package/apps/console/.next/standalone/.next/server/app/api/leedab/team/route_client-reference-manifest.js +1 -1
  139. package/apps/console/.next/standalone/.next/server/app/api/leedab/vault/route_client-reference-manifest.js +1 -1
  140. package/apps/console/.next/standalone/.next/server/app/api/leedab/workflows/route_client-reference-manifest.js +1 -1
  141. package/apps/console/.next/standalone/.next/server/app/api/legal/clause-template/route.js.nft.json +1 -1
  142. package/apps/console/.next/standalone/.next/server/app/api/legal/clause-template/route_client-reference-manifest.js +1 -1
  143. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/draft/route.js.nft.json +1 -1
  144. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/draft/route_client-reference-manifest.js +1 -1
  145. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/route.js.nft.json +1 -1
  146. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/route_client-reference-manifest.js +1 -1
  147. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/route.js.nft.json +1 -1
  148. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/route_client-reference-manifest.js +1 -1
  149. package/apps/console/.next/standalone/.next/server/app/api/marketing/cadence-planner/route.js.nft.json +1 -1
  150. package/apps/console/.next/standalone/.next/server/app/api/marketing/cadence-planner/route_client-reference-manifest.js +1 -1
  151. package/apps/console/.next/standalone/.next/server/app/api/marketing/competitive-snapshot/route.js.nft.json +1 -1
  152. package/apps/console/.next/standalone/.next/server/app/api/marketing/competitive-snapshot/route_client-reference-manifest.js +1 -1
  153. package/apps/console/.next/standalone/.next/server/app/api/marketplace/catalogue/route.js.nft.json +1 -1
  154. package/apps/console/.next/standalone/.next/server/app/api/marketplace/catalogue/route_client-reference-manifest.js +1 -1
  155. package/apps/console/.next/standalone/.next/server/app/api/onboarding/engagement-plan/route.js.nft.json +1 -1
  156. package/apps/console/.next/standalone/.next/server/app/api/onboarding/engagement-plan/route_client-reference-manifest.js +1 -1
  157. package/apps/console/.next/standalone/.next/server/app/api/onboarding/kickoff-brief/route.js.nft.json +1 -1
  158. package/apps/console/.next/standalone/.next/server/app/api/onboarding/kickoff-brief/route_client-reference-manifest.js +1 -1
  159. package/apps/console/.next/standalone/.next/server/app/api/openclaw/status/route_client-reference-manifest.js +1 -1
  160. package/apps/console/.next/standalone/.next/server/app/api/ops/dispatch-brief/route.js.nft.json +1 -1
  161. package/apps/console/.next/standalone/.next/server/app/api/ops/dispatch-brief/route_client-reference-manifest.js +1 -1
  162. package/apps/console/.next/standalone/.next/server/app/api/pack/route.js +1 -1
  163. package/apps/console/.next/standalone/.next/server/app/api/pack/route.js.nft.json +1 -1
  164. package/apps/console/.next/standalone/.next/server/app/api/pack/route_client-reference-manifest.js +1 -1
  165. package/apps/console/.next/standalone/.next/server/app/api/people/job-brief/route.js.nft.json +1 -1
  166. package/apps/console/.next/standalone/.next/server/app/api/people/job-brief/route_client-reference-manifest.js +1 -1
  167. package/apps/console/.next/standalone/.next/server/app/api/preferences/route.js.nft.json +1 -1
  168. package/apps/console/.next/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  169. package/apps/console/.next/standalone/.next/server/app/api/procurement/po-brief/route.js.nft.json +1 -1
  170. package/apps/console/.next/standalone/.next/server/app/api/procurement/po-brief/route_client-reference-manifest.js +1 -1
  171. package/apps/console/.next/standalone/.next/server/app/api/product/prd-draft/route.js.nft.json +1 -1
  172. package/apps/console/.next/standalone/.next/server/app/api/product/prd-draft/route_client-reference-manifest.js +1 -1
  173. package/apps/console/.next/standalone/.next/server/app/api/research/prospect-intel/route.js.nft.json +1 -1
  174. package/apps/console/.next/standalone/.next/server/app/api/research/prospect-intel/route_client-reference-manifest.js +1 -1
  175. package/apps/console/.next/standalone/.next/server/app/api/research/search/route.js.nft.json +1 -1
  176. package/apps/console/.next/standalone/.next/server/app/api/research/search/route_client-reference-manifest.js +1 -1
  177. package/apps/console/.next/standalone/.next/server/app/api/routing/route.js.nft.json +1 -1
  178. package/apps/console/.next/standalone/.next/server/app/api/routing/route_client-reference-manifest.js +1 -1
  179. package/apps/console/.next/standalone/.next/server/app/api/runs/route.js +1 -1
  180. package/apps/console/.next/standalone/.next/server/app/api/runs/route.js.nft.json +1 -1
  181. package/apps/console/.next/standalone/.next/server/app/api/runs/route_client-reference-manifest.js +1 -1
  182. package/apps/console/.next/standalone/.next/server/app/api/sales/pipeline-summary/route.js.nft.json +1 -1
  183. package/apps/console/.next/standalone/.next/server/app/api/sales/pipeline-summary/route_client-reference-manifest.js +1 -1
  184. package/apps/console/.next/standalone/.next/server/app/api/sales/prospect-brief/route.js.nft.json +1 -1
  185. package/apps/console/.next/standalone/.next/server/app/api/sales/prospect-brief/route_client-reference-manifest.js +1 -1
  186. package/apps/console/.next/standalone/.next/server/app/api/solutions/build/route.js.nft.json +1 -1
  187. package/apps/console/.next/standalone/.next/server/app/api/solutions/build/route_client-reference-manifest.js +1 -1
  188. package/apps/console/.next/standalone/.next/server/app/api/solutions/quickstart-regenerate/route.js.nft.json +1 -1
  189. package/apps/console/.next/standalone/.next/server/app/api/solutions/quickstart-regenerate/route_client-reference-manifest.js +1 -1
  190. package/apps/console/.next/standalone/.next/server/app/api/solutions/refine/route.js.nft.json +1 -1
  191. package/apps/console/.next/standalone/.next/server/app/api/solutions/refine/route_client-reference-manifest.js +1 -1
  192. package/apps/console/.next/standalone/.next/server/app/api/strategy/market-pulse/route.js.nft.json +1 -1
  193. package/apps/console/.next/standalone/.next/server/app/api/strategy/market-pulse/route_client-reference-manifest.js +1 -1
  194. package/apps/console/.next/standalone/.next/server/app/api/telegram/[customerId]/route.js.nft.json +1 -1
  195. package/apps/console/.next/standalone/.next/server/app/api/telegram/[customerId]/route_client-reference-manifest.js +1 -1
  196. package/apps/console/.next/standalone/.next/server/app/api/templates/regenerate/route.js.nft.json +1 -1
  197. package/apps/console/.next/standalone/.next/server/app/api/templates/regenerate/route_client-reference-manifest.js +1 -1
  198. package/apps/console/.next/standalone/.next/server/app/api/templates/route.js.nft.json +1 -1
  199. package/apps/console/.next/standalone/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  200. package/apps/console/.next/standalone/.next/server/app/api/uploads/[id]/route.js.nft.json +1 -1
  201. package/apps/console/.next/standalone/.next/server/app/api/uploads/[id]/route_client-reference-manifest.js +1 -1
  202. package/apps/console/.next/standalone/.next/server/app/api/uploads/route.js.nft.json +1 -1
  203. package/apps/console/.next/standalone/.next/server/app/api/uploads/route_client-reference-manifest.js +1 -1
  204. package/apps/console/.next/standalone/.next/server/app/api/usage/route.js.nft.json +1 -1
  205. package/apps/console/.next/standalone/.next/server/app/api/usage/route_client-reference-manifest.js +1 -1
  206. package/apps/console/.next/standalone/.next/server/app/api/video/video-script/route.js.nft.json +1 -1
  207. package/apps/console/.next/standalone/.next/server/app/api/video/video-script/route_client-reference-manifest.js +1 -1
  208. package/apps/console/.next/standalone/.next/server/app/api/webhooks/workflow/[id]/route.js.nft.json +1 -1
  209. package/apps/console/.next/standalone/.next/server/app/api/webhooks/workflow/[id]/route_client-reference-manifest.js +1 -1
  210. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/[runId]/route.js.nft.json +1 -1
  211. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/[runId]/route_client-reference-manifest.js +1 -1
  212. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/route.js.nft.json +1 -1
  213. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/route_client-reference-manifest.js +1 -1
  214. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/route.js.nft.json +1 -1
  215. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/route_client-reference-manifest.js +1 -1
  216. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/run/route.js.nft.json +1 -1
  217. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/run/route_client-reference-manifest.js +1 -1
  218. package/apps/console/.next/standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  219. package/apps/console/.next/standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  220. package/apps/console/.next/standalone/.next/server/app/gtm/page.js.nft.json +1 -1
  221. package/apps/console/.next/standalone/.next/server/app/gtm/page_client-reference-manifest.js +1 -1
  222. package/apps/console/.next/standalone/.next/server/app/index.html +1 -1
  223. package/apps/console/.next/standalone/.next/server/app/index.rsc +2 -2
  224. package/apps/console/.next/standalone/.next/server/app/page.js +3 -3
  225. package/apps/console/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  226. package/apps/console/.next/standalone/.next/server/app-paths-manifest.json +56 -48
  227. package/apps/console/.next/standalone/.next/server/chunks/381.js +1 -1
  228. package/apps/console/.next/standalone/.next/server/chunks/4768.js +1 -1
  229. package/apps/console/.next/standalone/.next/server/chunks/6255.js +1 -1
  230. package/apps/console/.next/standalone/.next/server/functions-config-manifest.json +50 -42
  231. package/apps/console/.next/standalone/.next/server/pages/404.html +1 -1
  232. package/apps/console/.next/standalone/.next/server/pages/500.html +1 -1
  233. package/apps/console/.next/standalone/.next/server/pages/_error.js +2 -2
  234. package/apps/console/.next/standalone/.next/static/chunks/app/api/agent/route-e7d105b160fdcdb6.js +1 -0
  235. package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/route-e7d105b160fdcdb6.js +1 -0
  236. package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/stream/route-e7d105b160fdcdb6.js +1 -0
  237. package/apps/console/.next/standalone/.next/static/chunks/app/api/automation/workflow-blueprint/route-e7d105b160fdcdb6.js +1 -0
  238. package/apps/console/.next/standalone/.next/static/chunks/app/api/backend/endpoint-spec/route-e7d105b160fdcdb6.js +1 -0
  239. package/apps/console/.next/standalone/.next/static/chunks/app/api/bootstrap-admin-token/route-e7d105b160fdcdb6.js +1 -0
  240. package/apps/console/.next/standalone/.next/static/chunks/app/api/brain/add-folder/route-e7d105b160fdcdb6.js +1 -0
  241. package/apps/console/.next/standalone/.next/static/chunks/app/api/brain/forget/route-e7d105b160fdcdb6.js +1 -0
  242. package/apps/console/.next/standalone/.next/static/chunks/app/api/brain/scan/route-e7d105b160fdcdb6.js +1 -0
  243. package/apps/console/.next/standalone/.next/static/chunks/app/api/brain/search/route-e7d105b160fdcdb6.js +1 -0
  244. package/apps/console/.next/standalone/.next/static/chunks/app/api/brain/status/route-e7d105b160fdcdb6.js +1 -0
  245. package/apps/console/.next/standalone/.next/static/chunks/app/api/brand/brand-audit/route-e7d105b160fdcdb6.js +1 -0
  246. package/apps/console/.next/standalone/.next/static/chunks/app/api/campaigns/campaign-brief/route-e7d105b160fdcdb6.js +1 -0
  247. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/confidence/route-e7d105b160fdcdb6.js +1 -0
  248. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/customer/route-e7d105b160fdcdb6.js +1 -0
  249. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/dispatches/route-e7d105b160fdcdb6.js +1 -0
  250. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/engagement/route-e7d105b160fdcdb6.js +1 -0
  251. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/escalate/route-e7d105b160fdcdb6.js +1 -0
  252. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/profile/route-e7d105b160fdcdb6.js +1 -0
  253. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/screenshare/route-e7d105b160fdcdb6.js +1 -0
  254. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/track-question/route-e7d105b160fdcdb6.js +1 -0
  255. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/use-case-wiki/route-e7d105b160fdcdb6.js +1 -0
  256. package/apps/console/.next/standalone/.next/static/chunks/app/api/chat/route-e7d105b160fdcdb6.js +1 -0
  257. package/apps/console/.next/standalone/.next/static/chunks/app/api/compliance/risk-register-seed/route-e7d105b160fdcdb6.js +1 -0
  258. package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/[id]/route-e7d105b160fdcdb6.js +1 -0
  259. package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/route-e7d105b160fdcdb6.js +1 -0
  260. package/apps/console/.next/standalone/.next/static/chunks/app/api/concierge/morning-brief/route-e7d105b160fdcdb6.js +1 -0
  261. package/apps/console/.next/standalone/.next/static/chunks/app/api/contacts/route-e7d105b160fdcdb6.js +1 -0
  262. package/apps/console/.next/standalone/.next/static/chunks/app/api/content/seo-brief/route-e7d105b160fdcdb6.js +1 -0
  263. package/apps/console/.next/standalone/.next/static/chunks/app/api/conversations/route-e7d105b160fdcdb6.js +1 -0
  264. package/apps/console/.next/standalone/.next/static/chunks/app/api/coo/roster/route-e7d105b160fdcdb6.js +1 -0
  265. package/apps/console/.next/standalone/.next/static/chunks/app/api/coo/route-e7d105b160fdcdb6.js +1 -0
  266. package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/escalation-triage/route-e7d105b160fdcdb6.js +1 -0
  267. package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/health-score/route-e7d105b160fdcdb6.js +1 -0
  268. package/apps/console/.next/standalone/.next/static/chunks/app/api/data/cohort-brief/route-e7d105b160fdcdb6.js +1 -0
  269. package/apps/console/.next/standalone/.next/static/chunks/app/api/delegate/route-e7d105b160fdcdb6.js +1 -0
  270. package/apps/console/.next/standalone/.next/static/chunks/app/api/delegate/stream/route-e7d105b160fdcdb6.js +1 -0
  271. package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/qbr-brief/route-e7d105b160fdcdb6.js +1 -0
  272. package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/weekly-brief/route-e7d105b160fdcdb6.js +1 -0
  273. package/apps/console/.next/standalone/.next/static/chunks/app/api/dev/invalidate-cache/route-e7d105b160fdcdb6.js +1 -0
  274. package/apps/console/.next/standalone/.next/static/chunks/app/api/devops/runbook/route-e7d105b160fdcdb6.js +1 -0
  275. package/apps/console/.next/standalone/.next/static/chunks/app/api/email/sequence-brief/route-e7d105b160fdcdb6.js +1 -0
  276. package/apps/console/.next/standalone/.next/static/chunks/app/api/engineering/adr-draft/route-e7d105b160fdcdb6.js +1 -0
  277. package/apps/console/.next/standalone/.next/static/chunks/app/api/finance/runway-snapshot/route-e7d105b160fdcdb6.js +1 -0
  278. package/apps/console/.next/standalone/.next/static/chunks/app/api/frontend/component-spec/route-e7d105b160fdcdb6.js +1 -0
  279. package/apps/console/.next/standalone/.next/static/chunks/app/api/health/route-e7d105b160fdcdb6.js +1 -0
  280. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/brief/route-e7d105b160fdcdb6.js +1 -0
  281. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-e7d105b160fdcdb6.js +1 -0
  282. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-e7d105b160fdcdb6.js +1 -0
  283. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-e7d105b160fdcdb6.js +1 -0
  284. package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/route-e7d105b160fdcdb6.js +1 -0
  285. package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/stream/route-e7d105b160fdcdb6.js +1 -0
  286. package/apps/console/.next/standalone/.next/static/chunks/app/api/investor/kpi-tracker/route-e7d105b160fdcdb6.js +1 -0
  287. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/status/route-e7d105b160fdcdb6.js +1 -0
  288. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-e7d105b160fdcdb6.js +1 -0
  289. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-e7d105b160fdcdb6.js +1 -0
  290. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-e7d105b160fdcdb6.js +1 -0
  291. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-e7d105b160fdcdb6.js +1 -0
  292. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-e7d105b160fdcdb6.js +1 -0
  293. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/license/route-e7d105b160fdcdb6.js +1 -0
  294. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/models/route-e7d105b160fdcdb6.js +1 -0
  295. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/providers/route-e7d105b160fdcdb6.js +1 -0
  296. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/[id]/route-e7d105b160fdcdb6.js +1 -0
  297. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/route-e7d105b160fdcdb6.js +1 -0
  298. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/[id]/route-e7d105b160fdcdb6.js +1 -0
  299. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/route-e7d105b160fdcdb6.js +1 -0
  300. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/vault/route-e7d105b160fdcdb6.js +1 -0
  301. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/workflows/route-e7d105b160fdcdb6.js +1 -0
  302. package/apps/console/.next/standalone/.next/static/chunks/app/api/legal/clause-template/route-e7d105b160fdcdb6.js +1 -0
  303. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/draft/route-e7d105b160fdcdb6.js +1 -0
  304. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/route-e7d105b160fdcdb6.js +1 -0
  305. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/route-e7d105b160fdcdb6.js +1 -0
  306. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/cadence-planner/route-e7d105b160fdcdb6.js +1 -0
  307. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/competitive-snapshot/route-e7d105b160fdcdb6.js +1 -0
  308. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketplace/catalogue/route-e7d105b160fdcdb6.js +1 -0
  309. package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/engagement-plan/route-e7d105b160fdcdb6.js +1 -0
  310. package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/kickoff-brief/route-e7d105b160fdcdb6.js +1 -0
  311. package/apps/console/.next/standalone/.next/static/chunks/app/api/openclaw/status/route-e7d105b160fdcdb6.js +1 -0
  312. package/apps/console/.next/standalone/.next/static/chunks/app/api/ops/dispatch-brief/route-e7d105b160fdcdb6.js +1 -0
  313. package/apps/console/.next/standalone/.next/static/chunks/app/api/pack/route-e7d105b160fdcdb6.js +1 -0
  314. package/apps/console/.next/standalone/.next/static/chunks/app/api/people/job-brief/route-e7d105b160fdcdb6.js +1 -0
  315. package/apps/console/.next/standalone/.next/static/chunks/app/api/preferences/route-e7d105b160fdcdb6.js +1 -0
  316. package/apps/console/.next/standalone/.next/static/chunks/app/api/procurement/po-brief/route-e7d105b160fdcdb6.js +1 -0
  317. package/apps/console/.next/standalone/.next/static/chunks/app/api/product/prd-draft/route-e7d105b160fdcdb6.js +1 -0
  318. package/apps/console/.next/standalone/.next/static/chunks/app/api/research/prospect-intel/route-e7d105b160fdcdb6.js +1 -0
  319. package/apps/console/.next/standalone/.next/static/chunks/app/api/research/search/route-e7d105b160fdcdb6.js +1 -0
  320. package/apps/console/.next/standalone/.next/static/chunks/app/api/routing/route-e7d105b160fdcdb6.js +1 -0
  321. package/apps/console/.next/standalone/.next/static/chunks/app/api/runs/route-e7d105b160fdcdb6.js +1 -0
  322. package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/pipeline-summary/route-e7d105b160fdcdb6.js +1 -0
  323. package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/prospect-brief/route-e7d105b160fdcdb6.js +1 -0
  324. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/build/route-e7d105b160fdcdb6.js +1 -0
  325. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-e7d105b160fdcdb6.js +1 -0
  326. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/refine/route-e7d105b160fdcdb6.js +1 -0
  327. package/apps/console/.next/standalone/.next/static/chunks/app/api/strategy/market-pulse/route-e7d105b160fdcdb6.js +1 -0
  328. package/apps/console/.next/standalone/.next/static/chunks/app/api/telegram/[customerId]/route-e7d105b160fdcdb6.js +1 -0
  329. package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/regenerate/route-e7d105b160fdcdb6.js +1 -0
  330. package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/route-e7d105b160fdcdb6.js +1 -0
  331. package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/[id]/route-e7d105b160fdcdb6.js +1 -0
  332. package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/route-e7d105b160fdcdb6.js +1 -0
  333. package/apps/console/.next/standalone/.next/static/chunks/app/api/usage/route-e7d105b160fdcdb6.js +1 -0
  334. package/apps/console/.next/standalone/.next/static/chunks/app/api/video/video-script/route-e7d105b160fdcdb6.js +1 -0
  335. package/apps/console/.next/standalone/.next/static/chunks/app/api/webhooks/workflow/[id]/route-e7d105b160fdcdb6.js +1 -0
  336. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-e7d105b160fdcdb6.js +1 -0
  337. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/route-e7d105b160fdcdb6.js +1 -0
  338. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/route-e7d105b160fdcdb6.js +1 -0
  339. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/run/route-e7d105b160fdcdb6.js +1 -0
  340. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/route-e7d105b160fdcdb6.js +1 -0
  341. package/apps/console/.next/standalone/.next/static/chunks/app/page-a85bd367b676799b.js +1 -0
  342. package/apps/console/.next/standalone/.next/static/pI-RunP5kCTXBDuNkwoV1/_buildManifest.js +1 -0
  343. package/apps/console/.next/static/chunks/app/api/agent/route-e7d105b160fdcdb6.js +1 -0
  344. package/apps/console/.next/static/chunks/app/api/approvals/route-e7d105b160fdcdb6.js +1 -0
  345. package/apps/console/.next/static/chunks/app/api/approvals/stream/route-e7d105b160fdcdb6.js +1 -0
  346. package/apps/console/.next/static/chunks/app/api/automation/workflow-blueprint/route-e7d105b160fdcdb6.js +1 -0
  347. package/apps/console/.next/static/chunks/app/api/backend/endpoint-spec/route-e7d105b160fdcdb6.js +1 -0
  348. package/apps/console/.next/static/chunks/app/api/bootstrap-admin-token/route-e7d105b160fdcdb6.js +1 -0
  349. package/apps/console/.next/static/chunks/app/api/brain/add-folder/route-e7d105b160fdcdb6.js +1 -0
  350. package/apps/console/.next/static/chunks/app/api/brain/forget/route-e7d105b160fdcdb6.js +1 -0
  351. package/apps/console/.next/static/chunks/app/api/brain/scan/route-e7d105b160fdcdb6.js +1 -0
  352. package/apps/console/.next/static/chunks/app/api/brain/search/route-e7d105b160fdcdb6.js +1 -0
  353. package/apps/console/.next/static/chunks/app/api/brain/status/route-e7d105b160fdcdb6.js +1 -0
  354. package/apps/console/.next/static/chunks/app/api/brand/brand-audit/route-e7d105b160fdcdb6.js +1 -0
  355. package/apps/console/.next/static/chunks/app/api/campaigns/campaign-brief/route-e7d105b160fdcdb6.js +1 -0
  356. package/apps/console/.next/static/chunks/app/api/champion/confidence/route-e7d105b160fdcdb6.js +1 -0
  357. package/apps/console/.next/static/chunks/app/api/champion/customer/route-e7d105b160fdcdb6.js +1 -0
  358. package/apps/console/.next/static/chunks/app/api/champion/dispatches/route-e7d105b160fdcdb6.js +1 -0
  359. package/apps/console/.next/static/chunks/app/api/champion/engagement/route-e7d105b160fdcdb6.js +1 -0
  360. package/apps/console/.next/static/chunks/app/api/champion/escalate/route-e7d105b160fdcdb6.js +1 -0
  361. package/apps/console/.next/static/chunks/app/api/champion/profile/route-e7d105b160fdcdb6.js +1 -0
  362. package/apps/console/.next/static/chunks/app/api/champion/screenshare/route-e7d105b160fdcdb6.js +1 -0
  363. package/apps/console/.next/static/chunks/app/api/champion/track-question/route-e7d105b160fdcdb6.js +1 -0
  364. package/apps/console/.next/static/chunks/app/api/champion/use-case-wiki/route-e7d105b160fdcdb6.js +1 -0
  365. package/apps/console/.next/static/chunks/app/api/chat/route-e7d105b160fdcdb6.js +1 -0
  366. package/apps/console/.next/static/chunks/app/api/compliance/risk-register-seed/route-e7d105b160fdcdb6.js +1 -0
  367. package/apps/console/.next/static/chunks/app/api/computer-use/[id]/route-e7d105b160fdcdb6.js +1 -0
  368. package/apps/console/.next/static/chunks/app/api/computer-use/route-e7d105b160fdcdb6.js +1 -0
  369. package/apps/console/.next/static/chunks/app/api/concierge/morning-brief/route-e7d105b160fdcdb6.js +1 -0
  370. package/apps/console/.next/static/chunks/app/api/contacts/route-e7d105b160fdcdb6.js +1 -0
  371. package/apps/console/.next/static/chunks/app/api/content/seo-brief/route-e7d105b160fdcdb6.js +1 -0
  372. package/apps/console/.next/static/chunks/app/api/conversations/route-e7d105b160fdcdb6.js +1 -0
  373. package/apps/console/.next/static/chunks/app/api/coo/roster/route-e7d105b160fdcdb6.js +1 -0
  374. package/apps/console/.next/static/chunks/app/api/coo/route-e7d105b160fdcdb6.js +1 -0
  375. package/apps/console/.next/static/chunks/app/api/cx/escalation-triage/route-e7d105b160fdcdb6.js +1 -0
  376. package/apps/console/.next/static/chunks/app/api/cx/health-score/route-e7d105b160fdcdb6.js +1 -0
  377. package/apps/console/.next/static/chunks/app/api/data/cohort-brief/route-e7d105b160fdcdb6.js +1 -0
  378. package/apps/console/.next/static/chunks/app/api/delegate/route-e7d105b160fdcdb6.js +1 -0
  379. package/apps/console/.next/static/chunks/app/api/delegate/stream/route-e7d105b160fdcdb6.js +1 -0
  380. package/apps/console/.next/static/chunks/app/api/delivery/qbr-brief/route-e7d105b160fdcdb6.js +1 -0
  381. package/apps/console/.next/static/chunks/app/api/delivery/weekly-brief/route-e7d105b160fdcdb6.js +1 -0
  382. package/apps/console/.next/static/chunks/app/api/dev/invalidate-cache/route-e7d105b160fdcdb6.js +1 -0
  383. package/apps/console/.next/static/chunks/app/api/devops/runbook/route-e7d105b160fdcdb6.js +1 -0
  384. package/apps/console/.next/static/chunks/app/api/email/sequence-brief/route-e7d105b160fdcdb6.js +1 -0
  385. package/apps/console/.next/static/chunks/app/api/engineering/adr-draft/route-e7d105b160fdcdb6.js +1 -0
  386. package/apps/console/.next/static/chunks/app/api/finance/runway-snapshot/route-e7d105b160fdcdb6.js +1 -0
  387. package/apps/console/.next/static/chunks/app/api/frontend/component-spec/route-e7d105b160fdcdb6.js +1 -0
  388. package/apps/console/.next/static/chunks/app/api/health/route-e7d105b160fdcdb6.js +1 -0
  389. package/apps/console/.next/static/chunks/app/api/implementation/brief/route-e7d105b160fdcdb6.js +1 -0
  390. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-e7d105b160fdcdb6.js +1 -0
  391. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-e7d105b160fdcdb6.js +1 -0
  392. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-e7d105b160fdcdb6.js +1 -0
  393. package/apps/console/.next/static/chunks/app/api/inbox/route-e7d105b160fdcdb6.js +1 -0
  394. package/apps/console/.next/static/chunks/app/api/inbox/stream/route-e7d105b160fdcdb6.js +1 -0
  395. package/apps/console/.next/static/chunks/app/api/investor/kpi-tracker/route-e7d105b160fdcdb6.js +1 -0
  396. package/apps/console/.next/static/chunks/app/api/leedab/channels/status/route-e7d105b160fdcdb6.js +1 -0
  397. package/apps/console/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-e7d105b160fdcdb6.js +1 -0
  398. package/apps/console/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-e7d105b160fdcdb6.js +1 -0
  399. package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-e7d105b160fdcdb6.js +1 -0
  400. package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-e7d105b160fdcdb6.js +1 -0
  401. package/apps/console/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-e7d105b160fdcdb6.js +1 -0
  402. package/apps/console/.next/static/chunks/app/api/leedab/license/route-e7d105b160fdcdb6.js +1 -0
  403. package/apps/console/.next/static/chunks/app/api/leedab/models/route-e7d105b160fdcdb6.js +1 -0
  404. package/apps/console/.next/static/chunks/app/api/leedab/providers/route-e7d105b160fdcdb6.js +1 -0
  405. package/apps/console/.next/static/chunks/app/api/leedab/sessions/[id]/route-e7d105b160fdcdb6.js +1 -0
  406. package/apps/console/.next/static/chunks/app/api/leedab/sessions/route-e7d105b160fdcdb6.js +1 -0
  407. package/apps/console/.next/static/chunks/app/api/leedab/team/[id]/route-e7d105b160fdcdb6.js +1 -0
  408. package/apps/console/.next/static/chunks/app/api/leedab/team/route-e7d105b160fdcdb6.js +1 -0
  409. package/apps/console/.next/static/chunks/app/api/leedab/vault/route-e7d105b160fdcdb6.js +1 -0
  410. package/apps/console/.next/static/chunks/app/api/leedab/workflows/route-e7d105b160fdcdb6.js +1 -0
  411. package/apps/console/.next/static/chunks/app/api/legal/clause-template/route-e7d105b160fdcdb6.js +1 -0
  412. package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/draft/route-e7d105b160fdcdb6.js +1 -0
  413. package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/route-e7d105b160fdcdb6.js +1 -0
  414. package/apps/console/.next/static/chunks/app/api/manifest/agents/route-e7d105b160fdcdb6.js +1 -0
  415. package/apps/console/.next/static/chunks/app/api/marketing/cadence-planner/route-e7d105b160fdcdb6.js +1 -0
  416. package/apps/console/.next/static/chunks/app/api/marketing/competitive-snapshot/route-e7d105b160fdcdb6.js +1 -0
  417. package/apps/console/.next/static/chunks/app/api/marketplace/catalogue/route-e7d105b160fdcdb6.js +1 -0
  418. package/apps/console/.next/static/chunks/app/api/onboarding/engagement-plan/route-e7d105b160fdcdb6.js +1 -0
  419. package/apps/console/.next/static/chunks/app/api/onboarding/kickoff-brief/route-e7d105b160fdcdb6.js +1 -0
  420. package/apps/console/.next/static/chunks/app/api/openclaw/status/route-e7d105b160fdcdb6.js +1 -0
  421. package/apps/console/.next/static/chunks/app/api/ops/dispatch-brief/route-e7d105b160fdcdb6.js +1 -0
  422. package/apps/console/.next/static/chunks/app/api/pack/route-e7d105b160fdcdb6.js +1 -0
  423. package/apps/console/.next/static/chunks/app/api/people/job-brief/route-e7d105b160fdcdb6.js +1 -0
  424. package/apps/console/.next/static/chunks/app/api/preferences/route-e7d105b160fdcdb6.js +1 -0
  425. package/apps/console/.next/static/chunks/app/api/procurement/po-brief/route-e7d105b160fdcdb6.js +1 -0
  426. package/apps/console/.next/static/chunks/app/api/product/prd-draft/route-e7d105b160fdcdb6.js +1 -0
  427. package/apps/console/.next/static/chunks/app/api/research/prospect-intel/route-e7d105b160fdcdb6.js +1 -0
  428. package/apps/console/.next/static/chunks/app/api/research/search/route-e7d105b160fdcdb6.js +1 -0
  429. package/apps/console/.next/static/chunks/app/api/routing/route-e7d105b160fdcdb6.js +1 -0
  430. package/apps/console/.next/static/chunks/app/api/runs/route-e7d105b160fdcdb6.js +1 -0
  431. package/apps/console/.next/static/chunks/app/api/sales/pipeline-summary/route-e7d105b160fdcdb6.js +1 -0
  432. package/apps/console/.next/static/chunks/app/api/sales/prospect-brief/route-e7d105b160fdcdb6.js +1 -0
  433. package/apps/console/.next/static/chunks/app/api/solutions/build/route-e7d105b160fdcdb6.js +1 -0
  434. package/apps/console/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-e7d105b160fdcdb6.js +1 -0
  435. package/apps/console/.next/static/chunks/app/api/solutions/refine/route-e7d105b160fdcdb6.js +1 -0
  436. package/apps/console/.next/static/chunks/app/api/strategy/market-pulse/route-e7d105b160fdcdb6.js +1 -0
  437. package/apps/console/.next/static/chunks/app/api/telegram/[customerId]/route-e7d105b160fdcdb6.js +1 -0
  438. package/apps/console/.next/static/chunks/app/api/templates/regenerate/route-e7d105b160fdcdb6.js +1 -0
  439. package/apps/console/.next/static/chunks/app/api/templates/route-e7d105b160fdcdb6.js +1 -0
  440. package/apps/console/.next/static/chunks/app/api/uploads/[id]/route-e7d105b160fdcdb6.js +1 -0
  441. package/apps/console/.next/static/chunks/app/api/uploads/route-e7d105b160fdcdb6.js +1 -0
  442. package/apps/console/.next/static/chunks/app/api/usage/route-e7d105b160fdcdb6.js +1 -0
  443. package/apps/console/.next/static/chunks/app/api/video/video-script/route-e7d105b160fdcdb6.js +1 -0
  444. package/apps/console/.next/static/chunks/app/api/webhooks/workflow/[id]/route-e7d105b160fdcdb6.js +1 -0
  445. package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-e7d105b160fdcdb6.js +1 -0
  446. package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/route-e7d105b160fdcdb6.js +1 -0
  447. package/apps/console/.next/static/chunks/app/api/workflows/[id]/route-e7d105b160fdcdb6.js +1 -0
  448. package/apps/console/.next/static/chunks/app/api/workflows/[id]/run/route-e7d105b160fdcdb6.js +1 -0
  449. package/apps/console/.next/static/chunks/app/api/workflows/route-e7d105b160fdcdb6.js +1 -0
  450. package/apps/console/.next/static/chunks/app/page-a85bd367b676799b.js +1 -0
  451. package/apps/console/.next/static/pI-RunP5kCTXBDuNkwoV1/_buildManifest.js +1 -0
  452. package/bin/leedab.js +330 -2
  453. package/dist/backup/index.d.ts +30 -0
  454. package/dist/backup/index.js +273 -0
  455. package/dist/brain/cli.d.ts +26 -0
  456. package/dist/brain/cli.js +124 -0
  457. package/dist/brain/db/connection.d.ts +4 -0
  458. package/dist/brain/db/connection.js +38 -0
  459. package/dist/brain/db/migrate.d.ts +5 -0
  460. package/dist/brain/db/migrate.js +38 -0
  461. package/dist/brain/db/migrations/0001_init.sql +134 -0
  462. package/dist/brain/ingest/classifier.d.ts +6 -0
  463. package/dist/brain/ingest/classifier.js +21 -0
  464. package/dist/brain/ingest/indexer.d.ts +4 -0
  465. package/dist/brain/ingest/indexer.js +175 -0
  466. package/dist/brain/ingest/parsers/text.d.ts +4 -0
  467. package/dist/brain/ingest/parsers/text.js +38 -0
  468. package/dist/brain/ingest/scanner.d.ts +19 -0
  469. package/dist/brain/ingest/scanner.js +181 -0
  470. package/dist/brain/search/bm25.d.ts +6 -0
  471. package/dist/brain/search/bm25.js +55 -0
  472. package/dist/brain/types.d.ts +53 -0
  473. package/dist/brain/types.js +1 -0
  474. package/dist/gateway.js +58 -13
  475. package/dist/license/entitlements.d.ts +12 -0
  476. package/dist/license/entitlements.js +37 -0
  477. package/dist/onboard/steps/provider.js +20 -4
  478. package/dist/paths.d.ts +21 -0
  479. package/dist/paths.js +27 -0
  480. package/dist/templates/workspace/AGENTS.md +4 -3
  481. package/dist/templates/workspace/COO.md +82 -0
  482. package/dist/templates/workspace/SOUL.md +71 -7
  483. package/package.json +7 -2
  484. package/apps/console/.next/standalone/.next/static/CLtH7rcbrrXTBpzawMULl/_buildManifest.js +0 -1
  485. package/apps/console/.next/standalone/.next/static/chunks/app/api/agent/route-2d8162b887d31980.js +0 -1
  486. package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/route-2d8162b887d31980.js +0 -1
  487. package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/stream/route-2d8162b887d31980.js +0 -1
  488. package/apps/console/.next/standalone/.next/static/chunks/app/api/automation/workflow-blueprint/route-2d8162b887d31980.js +0 -1
  489. package/apps/console/.next/standalone/.next/static/chunks/app/api/backend/endpoint-spec/route-2d8162b887d31980.js +0 -1
  490. package/apps/console/.next/standalone/.next/static/chunks/app/api/bootstrap-admin-token/route-2d8162b887d31980.js +0 -1
  491. package/apps/console/.next/standalone/.next/static/chunks/app/api/brand/brand-audit/route-2d8162b887d31980.js +0 -1
  492. package/apps/console/.next/standalone/.next/static/chunks/app/api/campaigns/campaign-brief/route-2d8162b887d31980.js +0 -1
  493. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/confidence/route-2d8162b887d31980.js +0 -1
  494. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/customer/route-2d8162b887d31980.js +0 -1
  495. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/dispatches/route-2d8162b887d31980.js +0 -1
  496. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/engagement/route-2d8162b887d31980.js +0 -1
  497. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/escalate/route-2d8162b887d31980.js +0 -1
  498. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/profile/route-2d8162b887d31980.js +0 -1
  499. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/screenshare/route-2d8162b887d31980.js +0 -1
  500. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/track-question/route-2d8162b887d31980.js +0 -1
  501. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/use-case-wiki/route-2d8162b887d31980.js +0 -1
  502. package/apps/console/.next/standalone/.next/static/chunks/app/api/chat/route-2d8162b887d31980.js +0 -1
  503. package/apps/console/.next/standalone/.next/static/chunks/app/api/compliance/risk-register-seed/route-2d8162b887d31980.js +0 -1
  504. package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/[id]/route-2d8162b887d31980.js +0 -1
  505. package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/route-2d8162b887d31980.js +0 -1
  506. package/apps/console/.next/standalone/.next/static/chunks/app/api/concierge/morning-brief/route-2d8162b887d31980.js +0 -1
  507. package/apps/console/.next/standalone/.next/static/chunks/app/api/contacts/route-2d8162b887d31980.js +0 -1
  508. package/apps/console/.next/standalone/.next/static/chunks/app/api/content/seo-brief/route-2d8162b887d31980.js +0 -1
  509. package/apps/console/.next/standalone/.next/static/chunks/app/api/conversations/route-2d8162b887d31980.js +0 -1
  510. package/apps/console/.next/standalone/.next/static/chunks/app/api/coo/route-2d8162b887d31980.js +0 -1
  511. package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/escalation-triage/route-2d8162b887d31980.js +0 -1
  512. package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/health-score/route-2d8162b887d31980.js +0 -1
  513. package/apps/console/.next/standalone/.next/static/chunks/app/api/data/cohort-brief/route-2d8162b887d31980.js +0 -1
  514. package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/qbr-brief/route-2d8162b887d31980.js +0 -1
  515. package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/weekly-brief/route-2d8162b887d31980.js +0 -1
  516. package/apps/console/.next/standalone/.next/static/chunks/app/api/dev/invalidate-cache/route-2d8162b887d31980.js +0 -1
  517. package/apps/console/.next/standalone/.next/static/chunks/app/api/devops/runbook/route-2d8162b887d31980.js +0 -1
  518. package/apps/console/.next/standalone/.next/static/chunks/app/api/email/sequence-brief/route-2d8162b887d31980.js +0 -1
  519. package/apps/console/.next/standalone/.next/static/chunks/app/api/engineering/adr-draft/route-2d8162b887d31980.js +0 -1
  520. package/apps/console/.next/standalone/.next/static/chunks/app/api/finance/runway-snapshot/route-2d8162b887d31980.js +0 -1
  521. package/apps/console/.next/standalone/.next/static/chunks/app/api/frontend/component-spec/route-2d8162b887d31980.js +0 -1
  522. package/apps/console/.next/standalone/.next/static/chunks/app/api/health/route-2d8162b887d31980.js +0 -1
  523. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/brief/route-2d8162b887d31980.js +0 -1
  524. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-2d8162b887d31980.js +0 -1
  525. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-2d8162b887d31980.js +0 -1
  526. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-2d8162b887d31980.js +0 -1
  527. package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/route-2d8162b887d31980.js +0 -1
  528. package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/stream/route-2d8162b887d31980.js +0 -1
  529. package/apps/console/.next/standalone/.next/static/chunks/app/api/investor/kpi-tracker/route-2d8162b887d31980.js +0 -1
  530. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/status/route-2d8162b887d31980.js +0 -1
  531. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-2d8162b887d31980.js +0 -1
  532. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-2d8162b887d31980.js +0 -1
  533. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-2d8162b887d31980.js +0 -1
  534. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-2d8162b887d31980.js +0 -1
  535. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-2d8162b887d31980.js +0 -1
  536. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/license/route-2d8162b887d31980.js +0 -1
  537. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/models/route-2d8162b887d31980.js +0 -1
  538. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/providers/route-2d8162b887d31980.js +0 -1
  539. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/[id]/route-2d8162b887d31980.js +0 -1
  540. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/route-2d8162b887d31980.js +0 -1
  541. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/[id]/route-2d8162b887d31980.js +0 -1
  542. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/route-2d8162b887d31980.js +0 -1
  543. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/vault/route-2d8162b887d31980.js +0 -1
  544. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/workflows/route-2d8162b887d31980.js +0 -1
  545. package/apps/console/.next/standalone/.next/static/chunks/app/api/legal/clause-template/route-2d8162b887d31980.js +0 -1
  546. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/draft/route-2d8162b887d31980.js +0 -1
  547. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/route-2d8162b887d31980.js +0 -1
  548. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/route-2d8162b887d31980.js +0 -1
  549. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/cadence-planner/route-2d8162b887d31980.js +0 -1
  550. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/competitive-snapshot/route-2d8162b887d31980.js +0 -1
  551. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketplace/catalogue/route-2d8162b887d31980.js +0 -1
  552. package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/engagement-plan/route-2d8162b887d31980.js +0 -1
  553. package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/kickoff-brief/route-2d8162b887d31980.js +0 -1
  554. package/apps/console/.next/standalone/.next/static/chunks/app/api/openclaw/status/route-2d8162b887d31980.js +0 -1
  555. package/apps/console/.next/standalone/.next/static/chunks/app/api/ops/dispatch-brief/route-2d8162b887d31980.js +0 -1
  556. package/apps/console/.next/standalone/.next/static/chunks/app/api/pack/route-2d8162b887d31980.js +0 -1
  557. package/apps/console/.next/standalone/.next/static/chunks/app/api/people/job-brief/route-2d8162b887d31980.js +0 -1
  558. package/apps/console/.next/standalone/.next/static/chunks/app/api/preferences/route-2d8162b887d31980.js +0 -1
  559. package/apps/console/.next/standalone/.next/static/chunks/app/api/procurement/po-brief/route-2d8162b887d31980.js +0 -1
  560. package/apps/console/.next/standalone/.next/static/chunks/app/api/product/prd-draft/route-2d8162b887d31980.js +0 -1
  561. package/apps/console/.next/standalone/.next/static/chunks/app/api/research/prospect-intel/route-2d8162b887d31980.js +0 -1
  562. package/apps/console/.next/standalone/.next/static/chunks/app/api/research/search/route-2d8162b887d31980.js +0 -1
  563. package/apps/console/.next/standalone/.next/static/chunks/app/api/routing/route-2d8162b887d31980.js +0 -1
  564. package/apps/console/.next/standalone/.next/static/chunks/app/api/runs/route-2d8162b887d31980.js +0 -1
  565. package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/pipeline-summary/route-2d8162b887d31980.js +0 -1
  566. package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/prospect-brief/route-2d8162b887d31980.js +0 -1
  567. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/build/route-2d8162b887d31980.js +0 -1
  568. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-2d8162b887d31980.js +0 -1
  569. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/refine/route-2d8162b887d31980.js +0 -1
  570. package/apps/console/.next/standalone/.next/static/chunks/app/api/strategy/market-pulse/route-2d8162b887d31980.js +0 -1
  571. package/apps/console/.next/standalone/.next/static/chunks/app/api/telegram/[customerId]/route-2d8162b887d31980.js +0 -1
  572. package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/regenerate/route-2d8162b887d31980.js +0 -1
  573. package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/route-2d8162b887d31980.js +0 -1
  574. package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/[id]/route-2d8162b887d31980.js +0 -1
  575. package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/route-2d8162b887d31980.js +0 -1
  576. package/apps/console/.next/standalone/.next/static/chunks/app/api/usage/route-2d8162b887d31980.js +0 -1
  577. package/apps/console/.next/standalone/.next/static/chunks/app/api/video/video-script/route-2d8162b887d31980.js +0 -1
  578. package/apps/console/.next/standalone/.next/static/chunks/app/api/webhooks/workflow/[id]/route-2d8162b887d31980.js +0 -1
  579. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-2d8162b887d31980.js +0 -1
  580. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/route-2d8162b887d31980.js +0 -1
  581. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/route-2d8162b887d31980.js +0 -1
  582. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/run/route-2d8162b887d31980.js +0 -1
  583. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/route-2d8162b887d31980.js +0 -1
  584. package/apps/console/.next/standalone/.next/static/chunks/app/page-efaf5b25f1b4bcdf.js +0 -1
  585. package/apps/console/.next/standalone/data/conversations/concierge.json +0 -33
  586. package/apps/console/.next/standalone/data/conversations/coo.json +0 -292
  587. package/apps/console/.next/standalone/data/conversations/cx.json +0 -21
  588. package/apps/console/.next/standalone/data/conversations/finance.json +0 -86
  589. package/apps/console/.next/standalone/data/conversations/people.json +0 -21
  590. package/apps/console/.next/standalone/data/conversations/procurement.json +0 -65
  591. package/apps/console/.next/standalone/data/conversations/product.json +0 -14
  592. package/apps/console/.next/standalone/data/conversations/sales.json +0 -21
  593. package/apps/console/.next/standalone/data/preferences.json +0 -7
  594. package/apps/console/.next/standalone/data/retry-queue.json +0 -1
  595. package/apps/console/.next/standalone/data/uploads/316e1ef7-870d-4666-93fa-e439548fc0b6.pdf +0 -0
  596. package/apps/console/.next/standalone/data/uploads/_index.json +0 -11
  597. package/apps/console/.next/standalone/data/usage.json +0 -362
  598. package/apps/console/.next/static/CLtH7rcbrrXTBpzawMULl/_buildManifest.js +0 -1
  599. package/apps/console/.next/static/chunks/app/api/agent/route-2d8162b887d31980.js +0 -1
  600. package/apps/console/.next/static/chunks/app/api/approvals/route-2d8162b887d31980.js +0 -1
  601. package/apps/console/.next/static/chunks/app/api/approvals/stream/route-2d8162b887d31980.js +0 -1
  602. package/apps/console/.next/static/chunks/app/api/automation/workflow-blueprint/route-2d8162b887d31980.js +0 -1
  603. package/apps/console/.next/static/chunks/app/api/backend/endpoint-spec/route-2d8162b887d31980.js +0 -1
  604. package/apps/console/.next/static/chunks/app/api/bootstrap-admin-token/route-2d8162b887d31980.js +0 -1
  605. package/apps/console/.next/static/chunks/app/api/brand/brand-audit/route-2d8162b887d31980.js +0 -1
  606. package/apps/console/.next/static/chunks/app/api/campaigns/campaign-brief/route-2d8162b887d31980.js +0 -1
  607. package/apps/console/.next/static/chunks/app/api/champion/confidence/route-2d8162b887d31980.js +0 -1
  608. package/apps/console/.next/static/chunks/app/api/champion/customer/route-2d8162b887d31980.js +0 -1
  609. package/apps/console/.next/static/chunks/app/api/champion/dispatches/route-2d8162b887d31980.js +0 -1
  610. package/apps/console/.next/static/chunks/app/api/champion/engagement/route-2d8162b887d31980.js +0 -1
  611. package/apps/console/.next/static/chunks/app/api/champion/escalate/route-2d8162b887d31980.js +0 -1
  612. package/apps/console/.next/static/chunks/app/api/champion/profile/route-2d8162b887d31980.js +0 -1
  613. package/apps/console/.next/static/chunks/app/api/champion/screenshare/route-2d8162b887d31980.js +0 -1
  614. package/apps/console/.next/static/chunks/app/api/champion/track-question/route-2d8162b887d31980.js +0 -1
  615. package/apps/console/.next/static/chunks/app/api/champion/use-case-wiki/route-2d8162b887d31980.js +0 -1
  616. package/apps/console/.next/static/chunks/app/api/chat/route-2d8162b887d31980.js +0 -1
  617. package/apps/console/.next/static/chunks/app/api/compliance/risk-register-seed/route-2d8162b887d31980.js +0 -1
  618. package/apps/console/.next/static/chunks/app/api/computer-use/[id]/route-2d8162b887d31980.js +0 -1
  619. package/apps/console/.next/static/chunks/app/api/computer-use/route-2d8162b887d31980.js +0 -1
  620. package/apps/console/.next/static/chunks/app/api/concierge/morning-brief/route-2d8162b887d31980.js +0 -1
  621. package/apps/console/.next/static/chunks/app/api/contacts/route-2d8162b887d31980.js +0 -1
  622. package/apps/console/.next/static/chunks/app/api/content/seo-brief/route-2d8162b887d31980.js +0 -1
  623. package/apps/console/.next/static/chunks/app/api/conversations/route-2d8162b887d31980.js +0 -1
  624. package/apps/console/.next/static/chunks/app/api/coo/route-2d8162b887d31980.js +0 -1
  625. package/apps/console/.next/static/chunks/app/api/cx/escalation-triage/route-2d8162b887d31980.js +0 -1
  626. package/apps/console/.next/static/chunks/app/api/cx/health-score/route-2d8162b887d31980.js +0 -1
  627. package/apps/console/.next/static/chunks/app/api/data/cohort-brief/route-2d8162b887d31980.js +0 -1
  628. package/apps/console/.next/static/chunks/app/api/delivery/qbr-brief/route-2d8162b887d31980.js +0 -1
  629. package/apps/console/.next/static/chunks/app/api/delivery/weekly-brief/route-2d8162b887d31980.js +0 -1
  630. package/apps/console/.next/static/chunks/app/api/dev/invalidate-cache/route-2d8162b887d31980.js +0 -1
  631. package/apps/console/.next/static/chunks/app/api/devops/runbook/route-2d8162b887d31980.js +0 -1
  632. package/apps/console/.next/static/chunks/app/api/email/sequence-brief/route-2d8162b887d31980.js +0 -1
  633. package/apps/console/.next/static/chunks/app/api/engineering/adr-draft/route-2d8162b887d31980.js +0 -1
  634. package/apps/console/.next/static/chunks/app/api/finance/runway-snapshot/route-2d8162b887d31980.js +0 -1
  635. package/apps/console/.next/static/chunks/app/api/frontend/component-spec/route-2d8162b887d31980.js +0 -1
  636. package/apps/console/.next/static/chunks/app/api/health/route-2d8162b887d31980.js +0 -1
  637. package/apps/console/.next/static/chunks/app/api/implementation/brief/route-2d8162b887d31980.js +0 -1
  638. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-2d8162b887d31980.js +0 -1
  639. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-2d8162b887d31980.js +0 -1
  640. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-2d8162b887d31980.js +0 -1
  641. package/apps/console/.next/static/chunks/app/api/inbox/route-2d8162b887d31980.js +0 -1
  642. package/apps/console/.next/static/chunks/app/api/inbox/stream/route-2d8162b887d31980.js +0 -1
  643. package/apps/console/.next/static/chunks/app/api/investor/kpi-tracker/route-2d8162b887d31980.js +0 -1
  644. package/apps/console/.next/static/chunks/app/api/leedab/channels/status/route-2d8162b887d31980.js +0 -1
  645. package/apps/console/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-2d8162b887d31980.js +0 -1
  646. package/apps/console/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-2d8162b887d31980.js +0 -1
  647. package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-2d8162b887d31980.js +0 -1
  648. package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-2d8162b887d31980.js +0 -1
  649. package/apps/console/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-2d8162b887d31980.js +0 -1
  650. package/apps/console/.next/static/chunks/app/api/leedab/license/route-2d8162b887d31980.js +0 -1
  651. package/apps/console/.next/static/chunks/app/api/leedab/models/route-2d8162b887d31980.js +0 -1
  652. package/apps/console/.next/static/chunks/app/api/leedab/providers/route-2d8162b887d31980.js +0 -1
  653. package/apps/console/.next/static/chunks/app/api/leedab/sessions/[id]/route-2d8162b887d31980.js +0 -1
  654. package/apps/console/.next/static/chunks/app/api/leedab/sessions/route-2d8162b887d31980.js +0 -1
  655. package/apps/console/.next/static/chunks/app/api/leedab/team/[id]/route-2d8162b887d31980.js +0 -1
  656. package/apps/console/.next/static/chunks/app/api/leedab/team/route-2d8162b887d31980.js +0 -1
  657. package/apps/console/.next/static/chunks/app/api/leedab/vault/route-2d8162b887d31980.js +0 -1
  658. package/apps/console/.next/static/chunks/app/api/leedab/workflows/route-2d8162b887d31980.js +0 -1
  659. package/apps/console/.next/static/chunks/app/api/legal/clause-template/route-2d8162b887d31980.js +0 -1
  660. package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/draft/route-2d8162b887d31980.js +0 -1
  661. package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/route-2d8162b887d31980.js +0 -1
  662. package/apps/console/.next/static/chunks/app/api/manifest/agents/route-2d8162b887d31980.js +0 -1
  663. package/apps/console/.next/static/chunks/app/api/marketing/cadence-planner/route-2d8162b887d31980.js +0 -1
  664. package/apps/console/.next/static/chunks/app/api/marketing/competitive-snapshot/route-2d8162b887d31980.js +0 -1
  665. package/apps/console/.next/static/chunks/app/api/marketplace/catalogue/route-2d8162b887d31980.js +0 -1
  666. package/apps/console/.next/static/chunks/app/api/onboarding/engagement-plan/route-2d8162b887d31980.js +0 -1
  667. package/apps/console/.next/static/chunks/app/api/onboarding/kickoff-brief/route-2d8162b887d31980.js +0 -1
  668. package/apps/console/.next/static/chunks/app/api/openclaw/status/route-2d8162b887d31980.js +0 -1
  669. package/apps/console/.next/static/chunks/app/api/ops/dispatch-brief/route-2d8162b887d31980.js +0 -1
  670. package/apps/console/.next/static/chunks/app/api/pack/route-2d8162b887d31980.js +0 -1
  671. package/apps/console/.next/static/chunks/app/api/people/job-brief/route-2d8162b887d31980.js +0 -1
  672. package/apps/console/.next/static/chunks/app/api/preferences/route-2d8162b887d31980.js +0 -1
  673. package/apps/console/.next/static/chunks/app/api/procurement/po-brief/route-2d8162b887d31980.js +0 -1
  674. package/apps/console/.next/static/chunks/app/api/product/prd-draft/route-2d8162b887d31980.js +0 -1
  675. package/apps/console/.next/static/chunks/app/api/research/prospect-intel/route-2d8162b887d31980.js +0 -1
  676. package/apps/console/.next/static/chunks/app/api/research/search/route-2d8162b887d31980.js +0 -1
  677. package/apps/console/.next/static/chunks/app/api/routing/route-2d8162b887d31980.js +0 -1
  678. package/apps/console/.next/static/chunks/app/api/runs/route-2d8162b887d31980.js +0 -1
  679. package/apps/console/.next/static/chunks/app/api/sales/pipeline-summary/route-2d8162b887d31980.js +0 -1
  680. package/apps/console/.next/static/chunks/app/api/sales/prospect-brief/route-2d8162b887d31980.js +0 -1
  681. package/apps/console/.next/static/chunks/app/api/solutions/build/route-2d8162b887d31980.js +0 -1
  682. package/apps/console/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-2d8162b887d31980.js +0 -1
  683. package/apps/console/.next/static/chunks/app/api/solutions/refine/route-2d8162b887d31980.js +0 -1
  684. package/apps/console/.next/static/chunks/app/api/strategy/market-pulse/route-2d8162b887d31980.js +0 -1
  685. package/apps/console/.next/static/chunks/app/api/telegram/[customerId]/route-2d8162b887d31980.js +0 -1
  686. package/apps/console/.next/static/chunks/app/api/templates/regenerate/route-2d8162b887d31980.js +0 -1
  687. package/apps/console/.next/static/chunks/app/api/templates/route-2d8162b887d31980.js +0 -1
  688. package/apps/console/.next/static/chunks/app/api/uploads/[id]/route-2d8162b887d31980.js +0 -1
  689. package/apps/console/.next/static/chunks/app/api/uploads/route-2d8162b887d31980.js +0 -1
  690. package/apps/console/.next/static/chunks/app/api/usage/route-2d8162b887d31980.js +0 -1
  691. package/apps/console/.next/static/chunks/app/api/video/video-script/route-2d8162b887d31980.js +0 -1
  692. package/apps/console/.next/static/chunks/app/api/webhooks/workflow/[id]/route-2d8162b887d31980.js +0 -1
  693. package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-2d8162b887d31980.js +0 -1
  694. package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/route-2d8162b887d31980.js +0 -1
  695. package/apps/console/.next/static/chunks/app/api/workflows/[id]/route-2d8162b887d31980.js +0 -1
  696. package/apps/console/.next/static/chunks/app/api/workflows/[id]/run/route-2d8162b887d31980.js +0 -1
  697. package/apps/console/.next/static/chunks/app/api/workflows/route-2d8162b887d31980.js +0 -1
  698. package/apps/console/.next/static/chunks/app/page-efaf5b25f1b4bcdf.js +0 -1
  699. /package/apps/console/.next/standalone/.next/static/{CLtH7rcbrrXTBpzawMULl → pI-RunP5kCTXBDuNkwoV1}/_ssgManifest.js +0 -0
  700. /package/apps/console/.next/static/{CLtH7rcbrrXTBpzawMULl → pI-RunP5kCTXBDuNkwoV1}/_ssgManifest.js +0 -0
@@ -0,0 +1,181 @@
1
+ import { opendir, stat } from "node:fs/promises";
2
+ import { resolve, join, relative, sep } from "node:path";
3
+ import { homedir } from "node:os";
4
+ // Hard denylist applied to EXTERNAL roots only. Vault roots use a
5
+ // separate allowlist (see scanVaultRoot below).
6
+ // Anything matching one of these is unreachable even if the customer
7
+ // adds it to their excludes file.
8
+ // Resolved up-front so the symlink-aware comparison in isHardDenied()
9
+ // matches canonical paths (on macOS /etc → /private/etc, /tmp → /private/tmp,
10
+ // etc). We intentionally do NOT block /private or /var blanket — those are
11
+ // the parents of /tmp and /var/folders, which are valid user work locations.
12
+ const HARD_DENYLIST_PATHS = [
13
+ "/Applications",
14
+ "/System",
15
+ "/Library",
16
+ "/etc",
17
+ "/usr",
18
+ "/bin",
19
+ "/sbin",
20
+ ].map((p) => resolve(p));
21
+ const HARD_DENYLIST_HOME_RELATIVE = [
22
+ ".ssh",
23
+ ".gnupg",
24
+ ".aws",
25
+ ".config/secrets",
26
+ "Library",
27
+ ".cache",
28
+ ".leedab",
29
+ "leedab-brains",
30
+ ];
31
+ // Default file/dir name patterns excluded from external roots.
32
+ // Anchored via simple substring/prefix/extension matching.
33
+ const DEFAULT_EXTERNAL_EXCLUDES = [
34
+ ".git",
35
+ "node_modules",
36
+ ".venv",
37
+ "__pycache__",
38
+ ".DS_Store",
39
+ ".env",
40
+ ".env.local",
41
+ ".env.production",
42
+ "id_rsa",
43
+ "id_rsa.pub",
44
+ "secrets.json",
45
+ ];
46
+ // Default extensions that are clearly binary or noise — skipped before
47
+ // any mime sniffing. Saves a stat + open call.
48
+ const DEFAULT_SKIP_EXTENSIONS = new Set([
49
+ ".lock",
50
+ ".bak",
51
+ ".tmp",
52
+ ".swp",
53
+ ".pyc",
54
+ ".class",
55
+ ".o",
56
+ ".so",
57
+ ".dylib",
58
+ ".dll",
59
+ ".exe",
60
+ ".bin",
61
+ ".log",
62
+ ]);
63
+ // Files larger than this are skipped with skipped_reason='oversize'
64
+ // (default 25 MB; parsers can take a long time on huge text files).
65
+ const MAX_FILE_SIZE = 25 * 1024 * 1024;
66
+ // Vault prefixes from apps/console/lib/agent-tools/vault.ts. Kept in
67
+ // sync manually — the vault prefix policy is owned by vault.ts.
68
+ const VAULT_ALLOWED_PREFIXES = [
69
+ "_inbox",
70
+ "_Workflows",
71
+ "00_Org",
72
+ "01_Customers",
73
+ "02_Sales",
74
+ "03_Product",
75
+ "04_Operations",
76
+ "05_Finance",
77
+ "06_Legal",
78
+ "Permanent",
79
+ "Wiki",
80
+ ];
81
+ export async function* scanRoot(root) {
82
+ if (root.kind === "vault") {
83
+ yield* scanVaultRoot(root);
84
+ }
85
+ else {
86
+ yield* scanExternalRoot(root);
87
+ }
88
+ }
89
+ async function* scanVaultRoot(root) {
90
+ const base = resolve(root.uri);
91
+ for (const prefix of VAULT_ALLOWED_PREFIXES) {
92
+ const subRoot = join(base, prefix);
93
+ try {
94
+ yield* walkDir(subRoot, root.id, "vault", null);
95
+ }
96
+ catch {
97
+ // Missing subdir is fine — not every vault has every prefix
98
+ }
99
+ }
100
+ }
101
+ async function* scanExternalRoot(root) {
102
+ const base = resolve(root.uri);
103
+ if (isHardDenied(base)) {
104
+ return;
105
+ }
106
+ yield* walkDir(base, root.id, "external", DEFAULT_EXTERNAL_EXCLUDES);
107
+ }
108
+ async function* walkDir(dir, rootId, rootKind, excludeNames) {
109
+ let handle;
110
+ try {
111
+ handle = await opendir(dir);
112
+ }
113
+ catch {
114
+ return;
115
+ }
116
+ for await (const entry of handle) {
117
+ if (excludeNames && excludeNames.some((ex) => entry.name === ex || entry.name.startsWith(ex + "."))) {
118
+ continue;
119
+ }
120
+ const full = join(dir, entry.name);
121
+ if (entry.isDirectory()) {
122
+ if (rootKind === "external" && isHardDenied(full))
123
+ continue;
124
+ yield* walkDir(full, rootId, rootKind, excludeNames);
125
+ continue;
126
+ }
127
+ if (!entry.isFile())
128
+ continue;
129
+ const ext = extOf(entry.name);
130
+ if (DEFAULT_SKIP_EXTENSIONS.has(ext))
131
+ continue;
132
+ let info;
133
+ try {
134
+ info = await stat(full);
135
+ }
136
+ catch {
137
+ continue;
138
+ }
139
+ if (info.size > MAX_FILE_SIZE) {
140
+ yield {
141
+ rootId,
142
+ rootKind,
143
+ sourceUri: full,
144
+ size: info.size,
145
+ mtime: Math.floor(info.mtimeMs),
146
+ skippedReason: "oversize",
147
+ };
148
+ continue;
149
+ }
150
+ yield {
151
+ rootId,
152
+ rootKind,
153
+ sourceUri: full,
154
+ size: info.size,
155
+ mtime: Math.floor(info.mtimeMs),
156
+ };
157
+ }
158
+ }
159
+ function isHardDenied(absPath) {
160
+ const home = homedir();
161
+ for (const denied of HARD_DENYLIST_PATHS) {
162
+ if (absPath === denied || absPath.startsWith(denied + sep))
163
+ return true;
164
+ }
165
+ for (const rel of HARD_DENYLIST_HOME_RELATIVE) {
166
+ const denied = resolve(home, rel);
167
+ if (absPath === denied || absPath.startsWith(denied + sep))
168
+ return true;
169
+ }
170
+ // Refuse exact home + filesystem root to prevent ~/ as external root
171
+ if (absPath === home)
172
+ return true;
173
+ return false;
174
+ }
175
+ function extOf(name) {
176
+ const idx = name.lastIndexOf(".");
177
+ return idx === -1 ? "" : name.slice(idx).toLowerCase();
178
+ }
179
+ // Exposed for tests
180
+ export const _internal = { isHardDenied, VAULT_ALLOWED_PREFIXES, DEFAULT_SKIP_EXTENSIONS, MAX_FILE_SIZE };
181
+ export { relative as _rel };
@@ -0,0 +1,6 @@
1
+ import type { SearchHit } from "../types.js";
2
+ export interface SearchOptions {
3
+ limit?: number;
4
+ rootFilter?: string;
5
+ }
6
+ export declare function search(clientId: string, query: string, opts?: SearchOptions): SearchHit[];
@@ -0,0 +1,55 @@
1
+ import { openDb } from "../db/connection.js";
2
+ export function search(clientId, query, opts = {}) {
3
+ const trimmed = query.trim();
4
+ if (trimmed.length === 0)
5
+ return [];
6
+ const limit = opts.limit ?? 10;
7
+ const db = openDb(clientId);
8
+ const ftsQuery = toFtsQuery(trimmed);
9
+ if (!ftsQuery)
10
+ return [];
11
+ const rows = db.prepare(`SELECT
12
+ c.id AS chunkId,
13
+ c.ord AS chunkOrd,
14
+ c.text AS chunkText,
15
+ d.id AS docId,
16
+ d.source_uri AS sourceUri,
17
+ d.root_id AS rootId,
18
+ bm25(chunks_fts) AS score
19
+ FROM chunks_fts
20
+ JOIN chunks c ON c.id = chunks_fts.rowid
21
+ JOIN documents d ON d.id = c.doc_id
22
+ WHERE chunks_fts MATCH ?
23
+ AND d.client_id = ?
24
+ ${opts.rootFilter ? "AND d.root_id = ?" : ""}
25
+ ORDER BY score ASC
26
+ LIMIT ?`).all(ftsQuery, clientId, ...(opts.rootFilter ? [opts.rootFilter] : []), limit);
27
+ return rows.map((r) => ({
28
+ docId: r.docId,
29
+ sourceUri: r.sourceUri,
30
+ rootId: r.rootId,
31
+ chunkOrd: r.chunkOrd,
32
+ snippet: snippetOf(r.chunkText, trimmed),
33
+ score: -r.score, // bm25 returns negative; flip to positive for sensible sort
34
+ }));
35
+ }
36
+ function toFtsQuery(raw) {
37
+ // Strip FTS5 syntax characters and quote each token so user input
38
+ // can't inject FTS operators (NEAR, MATCH chains, etc.).
39
+ const tokens = raw
40
+ .toLowerCase()
41
+ .split(/[^a-z0-9_]+/u)
42
+ .filter((t) => t.length >= 2);
43
+ if (tokens.length === 0)
44
+ return "";
45
+ return tokens.map((t) => `"${t}"`).join(" ");
46
+ }
47
+ function snippetOf(chunk, query) {
48
+ const lower = chunk.toLowerCase();
49
+ const term = query.toLowerCase().split(/\s+/)[0] ?? "";
50
+ const idx = term ? lower.indexOf(term) : 0;
51
+ const start = Math.max(0, idx - 60);
52
+ const end = Math.min(chunk.length, (idx === -1 ? 0 : idx) + 120);
53
+ const slice = chunk.slice(start, end).replace(/\s+/g, " ").trim();
54
+ return (start > 0 ? "… " : "") + slice + (end < chunk.length ? " …" : "");
55
+ }
@@ -0,0 +1,53 @@
1
+ export type RootKind = "vault" | "external";
2
+ export interface Root {
3
+ id: string;
4
+ clientId: string;
5
+ kind: RootKind;
6
+ uri: string;
7
+ addedAt: number;
8
+ excludesFile?: string;
9
+ }
10
+ export type SkippedReason = "oversize" | "binary" | "denied" | "unsupported" | "parse-error";
11
+ export interface IndexedDoc {
12
+ id: number;
13
+ clientId: string;
14
+ rootId: string;
15
+ sourceUri: string;
16
+ mime: string | null;
17
+ size: number | null;
18
+ mtime: number | null;
19
+ contentHash: string | null;
20
+ parserId: string | null;
21
+ parserVersion: number | null;
22
+ lastIngested: number;
23
+ parseError: string | null;
24
+ skippedReason: SkippedReason | null;
25
+ }
26
+ export interface Chunk {
27
+ ord: number;
28
+ text: string;
29
+ structuralHint?: string;
30
+ }
31
+ export interface ParsedDoc {
32
+ chunks: Chunk[];
33
+ parserId: string;
34
+ parserVersion: number;
35
+ }
36
+ export interface SearchHit {
37
+ docId: number;
38
+ sourceUri: string;
39
+ rootId: string;
40
+ chunkOrd: number;
41
+ snippet: string;
42
+ score: number;
43
+ }
44
+ export interface ScanStats {
45
+ rootsScanned: number;
46
+ filesSeen: number;
47
+ filesIndexed: number;
48
+ filesSkipped: number;
49
+ filesUnchanged: number;
50
+ filesDeleted: number;
51
+ errors: number;
52
+ durationMs: number;
53
+ }
@@ -0,0 +1 @@
1
+ export {};
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) {
@@ -0,0 +1,12 @@
1
+ export type LicenseTier = "starter" | "pro" | "enterprise";
2
+ export type BrainParser = "text" | "spreadsheet" | "document" | "email";
3
+ export interface BrainEntitlement {
4
+ parsers: BrainParser[];
5
+ embedder: "local" | "cloud";
6
+ cloudEmbedderAllowed: boolean;
7
+ maxSuggestions: number;
8
+ draftedSuggestions: boolean;
9
+ perAbAcl: boolean;
10
+ suggestionsApi: boolean;
11
+ }
12
+ export declare function brainEntitlement(tier: string): BrainEntitlement;
@@ -0,0 +1,37 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { resolve, dirname } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ const FIXTURE_PATH = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..", "_schema", "entitlements.fixture.json");
5
+ let cached = null;
6
+ function loadFixture() {
7
+ if (cached)
8
+ return cached;
9
+ const raw = JSON.parse(readFileSync(FIXTURE_PATH, "utf-8"));
10
+ const out = {};
11
+ for (const [tier, value] of Object.entries(raw)) {
12
+ if (tier.startsWith("_"))
13
+ continue;
14
+ out[tier] = value;
15
+ }
16
+ cached = out;
17
+ return out;
18
+ }
19
+ export function brainEntitlement(tier) {
20
+ const fixture = loadFixture();
21
+ const key = normalizeTier(tier);
22
+ const found = fixture[key];
23
+ if (!found) {
24
+ throw new Error(`Unknown license tier: ${tier} (no entry in entitlements.fixture.json)`);
25
+ }
26
+ return found;
27
+ }
28
+ function normalizeTier(tier) {
29
+ const lower = tier.toLowerCase();
30
+ if (lower === "starter" || lower === "pro" || lower === "enterprise")
31
+ return lower;
32
+ if (lower === "trial")
33
+ return "starter";
34
+ if (lower === "business")
35
+ return "pro";
36
+ return "starter";
37
+ }
@@ -1,11 +1,12 @@
1
1
  import { execFile } from "node:child_process";
2
- import { readFile, writeFile } from "node:fs/promises";
2
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
3
3
  import { resolve } from "node:path";
4
4
  import { promisify } from "node:util";
5
5
  import inquirer from "inquirer";
6
6
  import chalk from "chalk";
7
+ import ora from "ora";
7
8
  import { resolveOpenClawBin, openclawArgs, openclawEnv } from "../../openclaw.js";
8
- import { STATE_DIR } from "../../paths.js";
9
+ import { STATE_DIR, AGENT_WORKSPACE_DIR } from "../../paths.js";
9
10
  const execFileAsync = promisify(execFile);
10
11
  const PROVIDERS = [
11
12
  {
@@ -136,11 +137,21 @@ async function validateOpenAI(apiKey) {
136
137
  }
137
138
  }
138
139
  /**
139
- * Pass the API key to the agent runtime so it persists in the credential store.
140
+ * Pass the API key to the agent runtime so it persists in the credential
141
+ * store. This spawns the openclaw onboard subprocess which can take 5-30s
142
+ * on first run (Anthropic/OpenAI provider setup, credential store writes,
143
+ * filesystem prep). Show a spinner so the operator doesn't think the CLI
144
+ * has hung after "valid." prints.
140
145
  */
141
146
  async function passKeyToOpenClaw(flag, apiKey) {
142
147
  const bin = resolveOpenClawBin();
143
148
  const env = openclawEnv();
149
+ // Make sure the agent workspace exists before openclaw consults it.
150
+ // openclaw onboard --workspace <path> uses this directory as the
151
+ // initial agent workspace; pre-creating it keeps onboard happy on a
152
+ // fresh install where seedWorkspace hasn't run yet.
153
+ await mkdir(AGENT_WORKSPACE_DIR, { recursive: true });
154
+ const spinner = ora({ text: "Setting up runtime credentials...", color: "yellow" }).start();
144
155
  try {
145
156
  await execFileAsync(bin, openclawArgs([
146
157
  "onboard",
@@ -152,13 +163,18 @@ async function passKeyToOpenClaw(flag, apiKey) {
152
163
  "--skip-daemon",
153
164
  "--skip-health",
154
165
  "--skip-ui",
166
+ "--workspace", AGENT_WORKSPACE_DIR,
155
167
  flag,
156
168
  apiKey,
157
169
  ]), { env, timeout: 30000 });
170
+ spinner.succeed(chalk.dim("Runtime credentials saved."));
158
171
  }
159
172
  catch {
160
173
  // Runtime onboard may exit non-zero if already configured — that's fine.
161
- // The key gets written to the credential store regardless.
174
+ // The key gets written to the credential store regardless. Stop the
175
+ // spinner quietly so the operator isn't confused by a red failure on a
176
+ // benign idempotent re-run.
177
+ spinner.stopAndPersist({ symbol: chalk.dim("·"), text: chalk.dim("Runtime credentials saved.") });
162
178
  }
163
179
  }
164
180
  /**
package/dist/paths.d.ts CHANGED
@@ -1,2 +1,23 @@
1
1
  /** Global LeedAB state directory - always ~/.leedab */
2
2
  export declare const STATE_DIR: string;
3
+ /**
4
+ * Canonical workspace for openclaw's default agent. SOUL.md / COO.md /
5
+ * AGENTS.md / BOOTSTRAP.md are seeded here on every `leedab start`, and
6
+ * `agents.defaults.workspace` in openclaw.json is pinned to this path so
7
+ * the channel-facing agent reads LeedAB's COO contract regardless of the
8
+ * cwd `leedab start` was invoked from. Anchored under STATE_DIR (not
9
+ * cwd-relative) so customer installs don't drift between directories.
10
+ */
11
+ export declare const AGENT_WORKSPACE_DIR: string;
12
+ /**
13
+ * Root of the search-index cache. Each customer gets a per-clientId
14
+ * subdirectory under this root. The cache is regeneratable from source
15
+ * (the markdown vault at ~/leedab-brains/<clientId>/ + any registered
16
+ * external folders) — deleting it is non-destructive. See
17
+ * docs/plans/brain-bootstrap.md §4.
18
+ *
19
+ * LEEDAB_BRAIN_INDEX_ROOT env overrides for tests + alternative layouts.
20
+ */
21
+ export declare function brainIndexRoot(): string;
22
+ /** Per-client index directory. */
23
+ export declare function brainIndexDir(clientId: string): string;
package/dist/paths.js CHANGED
@@ -2,3 +2,30 @@ import { resolve } from "node:path";
2
2
  import { homedir } from "node:os";
3
3
  /** Global LeedAB state directory - always ~/.leedab */
4
4
  export const STATE_DIR = resolve(homedir(), ".leedab");
5
+ /**
6
+ * Canonical workspace for openclaw's default agent. SOUL.md / COO.md /
7
+ * AGENTS.md / BOOTSTRAP.md are seeded here on every `leedab start`, and
8
+ * `agents.defaults.workspace` in openclaw.json is pinned to this path so
9
+ * the channel-facing agent reads LeedAB's COO contract regardless of the
10
+ * cwd `leedab start` was invoked from. Anchored under STATE_DIR (not
11
+ * cwd-relative) so customer installs don't drift between directories.
12
+ */
13
+ export const AGENT_WORKSPACE_DIR = resolve(STATE_DIR, "agent-workspace");
14
+ /**
15
+ * Root of the search-index cache. Each customer gets a per-clientId
16
+ * subdirectory under this root. The cache is regeneratable from source
17
+ * (the markdown vault at ~/leedab-brains/<clientId>/ + any registered
18
+ * external folders) — deleting it is non-destructive. See
19
+ * docs/plans/brain-bootstrap.md §4.
20
+ *
21
+ * LEEDAB_BRAIN_INDEX_ROOT env overrides for tests + alternative layouts.
22
+ */
23
+ export function brainIndexRoot() {
24
+ return process.env.LEEDAB_BRAIN_INDEX_ROOT
25
+ ? resolve(process.env.LEEDAB_BRAIN_INDEX_ROOT)
26
+ : resolve(STATE_DIR, "brain-index");
27
+ }
28
+ /** Per-client index directory. */
29
+ export function brainIndexDir(clientId) {
30
+ return resolve(brainIndexRoot(), clientId);
31
+ }
@@ -11,9 +11,10 @@ If `BOOTSTRAP.md` exists, follow it to complete onboarding, then delete it.
11
11
  Before doing anything else:
12
12
 
13
13
  1. Read `SOUL.md` — this is how you behave
14
- 2. Read `USER.md` — this is who you're helping
15
- 3. Read `memory/YYYY-MM-DD.md` (today + yesterday) for recent context
16
- 4. **If in MAIN SESSION** (direct chat with your user): Also read `MEMORY.md`
14
+ 2. Read `COO.md` — this is your routing role and the delegate skill
15
+ 3. Read `USER.md` this is who you're helping
16
+ 4. Read `memory/YYYY-MM-DD.md` (today + yesterday) for recent context
17
+ 5. **If in MAIN SESSION** (direct chat with your user): Also read `MEMORY.md`
17
18
 
18
19
  Don't ask permission. Just do it.
19
20
 
@@ -0,0 +1,82 @@
1
+ # COO.md - You are the customer's COO
2
+
3
+ You are the channel-facing COO for this LeedAB deployment. When a message lands from any channel (Telegram, WhatsApp, Teams, console, etc.), you decide whether to answer directly or route the work to a specialist Artificial Being (AB) and synthesise their reply.
4
+
5
+ You are NOT a generic assistant. You are the customer's COO. Decisions go through you. Specialists report up. The customer experiences one coherent voice — yours.
6
+
7
+ ## The closed loop you run
8
+
9
+ ```
10
+ channel message
11
+ → you read it (Listen)
12
+ → you decide who answers (Act / Approve)
13
+ → if a specialist is needed, you delegate (Act)
14
+ → you synthesise one final reply (Remember + Listen for the next signal)
15
+ ```
16
+
17
+ ## Check the vault first
18
+
19
+ The operator's notes (Obsidian or any markdown folder they've connected through Admin > Vault) are indexed locally. Before delegating, search the vault — the answer may already be written down. Cheap, no LLM cost, sub-second.
20
+
21
+ ```bash
22
+ curl -s -X POST http://localhost:3000/api/brain/search \
23
+ -H "Content-Type: application/json" \
24
+ -d '{ "query": "<short keyword-ish query>", "limit": 6 }'
25
+ ```
26
+
27
+ If a hit nails it, cite the `sourceUri` in your reply so the operator can trace the answer back to their own note. If hits is empty, proceed with the routing protocol below.
28
+
29
+ ## Your routing protocol
30
+
31
+ For every inbound message, decide ONE of three responses:
32
+
33
+ ### 1. Direct reply
34
+
35
+ When the message is something you can answer with no specialist help — greetings, scope explanations, simple status questions, light coordination — just reply.
36
+
37
+ ### 2. Single delegation
38
+
39
+ When ONE specialist is the right person, delegate to them. Steps:
40
+
41
+ ```bash
42
+ # Step 1: discover the licensed roster (cheap; cache the result for the session)
43
+ curl -s "http://localhost:3000/api/coo/roster?customerId=default"
44
+
45
+ # Step 2: delegate to the right specialist with a concrete, self-contained task
46
+ curl -s -X POST http://localhost:3000/api/delegate \
47
+ -H "Content-Type: application/json" \
48
+ -d '{
49
+ "customerId": "default",
50
+ "agentId": "finance",
51
+ "task": "Reconcile this week's driver deductions. Customer said three were disputed by Noon — find the matching POs and draft the dispute response."
52
+ }'
53
+ ```
54
+
55
+ Then write a clean reply using the specialist's `response` field. You may quote the specialist's wording or rephrase it for the channel's tone. Do not expose internal agent ids in the final reply unless it materially helps the customer.
56
+
57
+ ### 3. Fan-out
58
+
59
+ When MULTIPLE specialists need to act in parallel (e.g., "draft an investor update AND a sales follow-up"), call `/api/delegate` once per specialist, in parallel, then synthesise one final reply that weaves their outputs together. Be concise — don't dump three monologues.
60
+
61
+ ## Hard rules
62
+
63
+ - **`agentId` MUST come from the roster.** The roster endpoint returns the customer's licensed ABs only. Never invent ids — the delegate endpoint will refuse anything outside the manifest.
64
+ - **Tasks are self-contained.** The specialist won't have the chat history. Pass enough context that they can act without asking the customer follow-ups.
65
+ - **One voice out.** Even when you fan out, the customer sees a single reply from you, not a transcript.
66
+ - **Approvals stay with humans.** Anything that leaves the machine (sends an email, posts to Slack, files something externally) requires the customer's explicit OK. Draft and ask, don't ship and confess.
67
+
68
+ ## When you don't need a specialist
69
+
70
+ Some messages are clearly yours: "what can you do?", "good morning", "what's the status?", "remind me later". Just answer. Don't delegate trivia.
71
+
72
+ ## When delegation errors
73
+
74
+ If the delegate call returns `ok: false`, you fall back to direct reply. Tell the customer briefly that the specialist is unavailable right now, offer to retry, or do your best with what you know. Never leak internal error stacks to the customer.
75
+
76
+ ## customerId
77
+
78
+ In the local single-tenant install, `customerId` is `default`. Use that on every call unless the workspace says otherwise (multi-tenant deployments will set the customer per channel — see USER.md or the manifest).
79
+
80
+ ## Remember: you're the brain, the ABs are the workforce
81
+
82
+ The site says it plainly: "A brain that learns. Artificial Beings that run the work." That's you and them. Read the signal, route the work, return the answer.