leedab 0.8.0 → 0.9.1

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 (601) 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 +229 -187
  4. package/apps/console/.next/standalone/.next/app-path-routes-manifest.json +63 -57
  5. package/apps/console/.next/standalone/.next/build-manifest.json +2 -2
  6. package/apps/console/.next/standalone/.next/prerender-manifest.json +9 -9
  7. package/apps/console/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/apps/console/.next/standalone/.next/server/app/_not-found.html +1 -1
  9. package/apps/console/.next/standalone/.next/server/app/_not-found.rsc +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_client-reference-manifest.js +1 -1
  12. package/apps/console/.next/standalone/.next/server/app/api/approvals/stream/route_client-reference-manifest.js +1 -1
  13. package/apps/console/.next/standalone/.next/server/app/api/automation/workflow-blueprint/route_client-reference-manifest.js +1 -1
  14. package/apps/console/.next/standalone/.next/server/app/api/backend/endpoint-spec/route_client-reference-manifest.js +1 -1
  15. package/apps/console/.next/standalone/.next/server/app/api/bootstrap-admin-token/route_client-reference-manifest.js +1 -1
  16. package/apps/console/.next/standalone/.next/server/app/api/brain/add-folder/route.js +1 -0
  17. package/apps/console/.next/standalone/.next/server/app/api/brain/add-folder/route.js.nft.json +1 -0
  18. package/apps/console/.next/standalone/.next/server/app/api/brain/add-folder/route_client-reference-manifest.js +1 -0
  19. package/apps/console/.next/standalone/.next/server/app/api/brain/forget/route.js +1 -0
  20. package/apps/console/.next/standalone/.next/server/app/api/brain/forget/route.js.nft.json +1 -0
  21. package/apps/console/.next/standalone/.next/server/app/api/brain/forget/route_client-reference-manifest.js +1 -0
  22. package/apps/console/.next/standalone/.next/server/app/api/brain/pick-folder/route.js +9 -0
  23. package/apps/console/.next/standalone/.next/server/app/api/brain/pick-folder/route.js.nft.json +1 -0
  24. package/apps/console/.next/standalone/.next/server/app/api/brain/pick-folder/route_client-reference-manifest.js +1 -0
  25. package/apps/console/.next/standalone/.next/server/app/api/brain/scan/route.js +1 -0
  26. package/apps/console/.next/standalone/.next/server/app/api/brain/scan/route.js.nft.json +1 -0
  27. package/apps/console/.next/standalone/.next/server/app/api/brain/scan/route_client-reference-manifest.js +1 -0
  28. package/apps/console/.next/standalone/.next/server/app/api/brain/search/route.js +1 -0
  29. package/apps/console/.next/standalone/.next/server/app/api/brain/search/route.js.nft.json +1 -0
  30. package/apps/console/.next/standalone/.next/server/app/api/brain/search/route_client-reference-manifest.js +1 -0
  31. package/apps/console/.next/standalone/.next/server/app/api/brain/status/route.js +1 -0
  32. package/apps/console/.next/standalone/.next/server/app/api/brain/status/route.js.nft.json +1 -0
  33. package/apps/console/.next/standalone/.next/server/app/api/brain/status/route_client-reference-manifest.js +1 -0
  34. package/apps/console/.next/standalone/.next/server/app/api/brand/brand-audit/route_client-reference-manifest.js +1 -1
  35. package/apps/console/.next/standalone/.next/server/app/api/campaigns/campaign-brief/route_client-reference-manifest.js +1 -1
  36. package/apps/console/.next/standalone/.next/server/app/api/champion/confidence/route_client-reference-manifest.js +1 -1
  37. package/apps/console/.next/standalone/.next/server/app/api/champion/customer/route_client-reference-manifest.js +1 -1
  38. package/apps/console/.next/standalone/.next/server/app/api/champion/dispatches/route_client-reference-manifest.js +1 -1
  39. package/apps/console/.next/standalone/.next/server/app/api/champion/engagement/route_client-reference-manifest.js +1 -1
  40. package/apps/console/.next/standalone/.next/server/app/api/champion/escalate/route_client-reference-manifest.js +1 -1
  41. package/apps/console/.next/standalone/.next/server/app/api/champion/profile/route_client-reference-manifest.js +1 -1
  42. package/apps/console/.next/standalone/.next/server/app/api/champion/screenshare/route_client-reference-manifest.js +1 -1
  43. package/apps/console/.next/standalone/.next/server/app/api/champion/track-question/route_client-reference-manifest.js +1 -1
  44. package/apps/console/.next/standalone/.next/server/app/api/champion/use-case-wiki/route_client-reference-manifest.js +1 -1
  45. package/apps/console/.next/standalone/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
  46. package/apps/console/.next/standalone/.next/server/app/api/compliance/risk-register-seed/route_client-reference-manifest.js +1 -1
  47. package/apps/console/.next/standalone/.next/server/app/api/computer-use/[id]/route_client-reference-manifest.js +1 -1
  48. package/apps/console/.next/standalone/.next/server/app/api/computer-use/route_client-reference-manifest.js +1 -1
  49. package/apps/console/.next/standalone/.next/server/app/api/concierge/morning-brief/route_client-reference-manifest.js +1 -1
  50. package/apps/console/.next/standalone/.next/server/app/api/contacts/route_client-reference-manifest.js +1 -1
  51. package/apps/console/.next/standalone/.next/server/app/api/content/seo-brief/route_client-reference-manifest.js +1 -1
  52. package/apps/console/.next/standalone/.next/server/app/api/conversations/route_client-reference-manifest.js +1 -1
  53. package/apps/console/.next/standalone/.next/server/app/api/coo/roster/route_client-reference-manifest.js +1 -1
  54. package/apps/console/.next/standalone/.next/server/app/api/coo/route_client-reference-manifest.js +1 -1
  55. package/apps/console/.next/standalone/.next/server/app/api/cx/escalation-triage/route_client-reference-manifest.js +1 -1
  56. package/apps/console/.next/standalone/.next/server/app/api/cx/health-score/route_client-reference-manifest.js +1 -1
  57. package/apps/console/.next/standalone/.next/server/app/api/data/cohort-brief/route_client-reference-manifest.js +1 -1
  58. package/apps/console/.next/standalone/.next/server/app/api/delegate/route_client-reference-manifest.js +1 -1
  59. package/apps/console/.next/standalone/.next/server/app/api/delegate/stream/route.js +2 -2
  60. package/apps/console/.next/standalone/.next/server/app/api/delegate/stream/route_client-reference-manifest.js +1 -1
  61. package/apps/console/.next/standalone/.next/server/app/api/delivery/qbr-brief/route_client-reference-manifest.js +1 -1
  62. package/apps/console/.next/standalone/.next/server/app/api/delivery/weekly-brief/route_client-reference-manifest.js +1 -1
  63. package/apps/console/.next/standalone/.next/server/app/api/dev/invalidate-cache/route_client-reference-manifest.js +1 -1
  64. package/apps/console/.next/standalone/.next/server/app/api/devops/runbook/route_client-reference-manifest.js +1 -1
  65. package/apps/console/.next/standalone/.next/server/app/api/email/sequence-brief/route_client-reference-manifest.js +1 -1
  66. package/apps/console/.next/standalone/.next/server/app/api/engineering/adr-draft/route_client-reference-manifest.js +1 -1
  67. package/apps/console/.next/standalone/.next/server/app/api/finance/runway-snapshot/route_client-reference-manifest.js +1 -1
  68. package/apps/console/.next/standalone/.next/server/app/api/frontend/component-spec/route_client-reference-manifest.js +1 -1
  69. package/apps/console/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  70. package/apps/console/.next/standalone/.next/server/app/api/implementation/brief/route_client-reference-manifest.js +1 -1
  71. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-migration-script/route_client-reference-manifest.js +1 -1
  72. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-n8n-workflow/route_client-reference-manifest.js +1 -1
  73. package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-skill-override/route_client-reference-manifest.js +1 -1
  74. package/apps/console/.next/standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  75. package/apps/console/.next/standalone/.next/server/app/api/inbox/stream/route_client-reference-manifest.js +1 -1
  76. package/apps/console/.next/standalone/.next/server/app/api/investor/kpi-tracker/route_client-reference-manifest.js +1 -1
  77. package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/status/route_client-reference-manifest.js +1 -1
  78. package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/telegram/connect/route_client-reference-manifest.js +1 -1
  79. package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/whatsapp/connect/route_client-reference-manifest.js +1 -1
  80. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/route_client-reference-manifest.js +1 -1
  81. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/status/route_client-reference-manifest.js +1 -1
  82. package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/templates/[name]/route_client-reference-manifest.js +1 -1
  83. package/apps/console/.next/standalone/.next/server/app/api/leedab/license/route_client-reference-manifest.js +1 -1
  84. package/apps/console/.next/standalone/.next/server/app/api/leedab/models/route_client-reference-manifest.js +1 -1
  85. package/apps/console/.next/standalone/.next/server/app/api/leedab/providers/route_client-reference-manifest.js +1 -1
  86. package/apps/console/.next/standalone/.next/server/app/api/leedab/sessions/[id]/route_client-reference-manifest.js +1 -1
  87. package/apps/console/.next/standalone/.next/server/app/api/leedab/sessions/route_client-reference-manifest.js +1 -1
  88. package/apps/console/.next/standalone/.next/server/app/api/leedab/team/[id]/route_client-reference-manifest.js +1 -1
  89. package/apps/console/.next/standalone/.next/server/app/api/leedab/team/route_client-reference-manifest.js +1 -1
  90. package/apps/console/.next/standalone/.next/server/app/api/leedab/vault/route_client-reference-manifest.js +1 -1
  91. package/apps/console/.next/standalone/.next/server/app/api/leedab/workflows/route_client-reference-manifest.js +1 -1
  92. package/apps/console/.next/standalone/.next/server/app/api/legal/clause-template/route_client-reference-manifest.js +1 -1
  93. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/draft/route_client-reference-manifest.js +1 -1
  94. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/route_client-reference-manifest.js +1 -1
  95. package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/route_client-reference-manifest.js +1 -1
  96. package/apps/console/.next/standalone/.next/server/app/api/marketing/cadence-planner/route_client-reference-manifest.js +1 -1
  97. package/apps/console/.next/standalone/.next/server/app/api/marketing/competitive-snapshot/route_client-reference-manifest.js +1 -1
  98. package/apps/console/.next/standalone/.next/server/app/api/marketplace/catalogue/route_client-reference-manifest.js +1 -1
  99. package/apps/console/.next/standalone/.next/server/app/api/onboarding/engagement-plan/route_client-reference-manifest.js +1 -1
  100. package/apps/console/.next/standalone/.next/server/app/api/onboarding/kickoff-brief/route_client-reference-manifest.js +1 -1
  101. package/apps/console/.next/standalone/.next/server/app/api/openclaw/status/route_client-reference-manifest.js +1 -1
  102. package/apps/console/.next/standalone/.next/server/app/api/ops/dispatch-brief/route_client-reference-manifest.js +1 -1
  103. package/apps/console/.next/standalone/.next/server/app/api/pack/route_client-reference-manifest.js +1 -1
  104. package/apps/console/.next/standalone/.next/server/app/api/people/job-brief/route_client-reference-manifest.js +1 -1
  105. package/apps/console/.next/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
  106. package/apps/console/.next/standalone/.next/server/app/api/procurement/po-brief/route_client-reference-manifest.js +1 -1
  107. package/apps/console/.next/standalone/.next/server/app/api/product/prd-draft/route_client-reference-manifest.js +1 -1
  108. package/apps/console/.next/standalone/.next/server/app/api/research/prospect-intel/route_client-reference-manifest.js +1 -1
  109. package/apps/console/.next/standalone/.next/server/app/api/research/search/route_client-reference-manifest.js +1 -1
  110. package/apps/console/.next/standalone/.next/server/app/api/routing/route_client-reference-manifest.js +1 -1
  111. package/apps/console/.next/standalone/.next/server/app/api/runs/route_client-reference-manifest.js +1 -1
  112. package/apps/console/.next/standalone/.next/server/app/api/sales/pipeline-summary/route_client-reference-manifest.js +1 -1
  113. package/apps/console/.next/standalone/.next/server/app/api/sales/prospect-brief/route_client-reference-manifest.js +1 -1
  114. package/apps/console/.next/standalone/.next/server/app/api/solutions/build/route_client-reference-manifest.js +1 -1
  115. package/apps/console/.next/standalone/.next/server/app/api/solutions/quickstart-regenerate/route_client-reference-manifest.js +1 -1
  116. package/apps/console/.next/standalone/.next/server/app/api/solutions/refine/route_client-reference-manifest.js +1 -1
  117. package/apps/console/.next/standalone/.next/server/app/api/strategy/market-pulse/route_client-reference-manifest.js +1 -1
  118. package/apps/console/.next/standalone/.next/server/app/api/telegram/[customerId]/route_client-reference-manifest.js +1 -1
  119. package/apps/console/.next/standalone/.next/server/app/api/templates/regenerate/route_client-reference-manifest.js +1 -1
  120. package/apps/console/.next/standalone/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  121. package/apps/console/.next/standalone/.next/server/app/api/uploads/[id]/route_client-reference-manifest.js +1 -1
  122. package/apps/console/.next/standalone/.next/server/app/api/uploads/route_client-reference-manifest.js +1 -1
  123. package/apps/console/.next/standalone/.next/server/app/api/usage/route_client-reference-manifest.js +1 -1
  124. package/apps/console/.next/standalone/.next/server/app/api/video/video-script/route_client-reference-manifest.js +1 -1
  125. package/apps/console/.next/standalone/.next/server/app/api/webhooks/workflow/[id]/route_client-reference-manifest.js +1 -1
  126. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/[runId]/route_client-reference-manifest.js +1 -1
  127. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/route_client-reference-manifest.js +1 -1
  128. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/route_client-reference-manifest.js +1 -1
  129. package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/run/route_client-reference-manifest.js +1 -1
  130. package/apps/console/.next/standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  131. package/apps/console/.next/standalone/.next/server/app/gtm/page_client-reference-manifest.js +1 -1
  132. package/apps/console/.next/standalone/.next/server/app/index.html +1 -1
  133. package/apps/console/.next/standalone/.next/server/app/index.rsc +2 -2
  134. package/apps/console/.next/standalone/.next/server/app/page.js +2 -2
  135. package/apps/console/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  136. package/apps/console/.next/standalone/.next/server/app-paths-manifest.json +63 -57
  137. package/apps/console/.next/standalone/.next/server/chunks/381.js +1 -1
  138. package/apps/console/.next/standalone/.next/server/chunks/4768.js +1 -1
  139. package/apps/console/.next/standalone/.next/server/functions-config-manifest.json +53 -47
  140. package/apps/console/.next/standalone/.next/server/next-font-manifest.js +1 -1
  141. package/apps/console/.next/standalone/.next/server/next-font-manifest.json +1 -1
  142. package/apps/console/.next/standalone/.next/server/pages/404.html +1 -1
  143. package/apps/console/.next/standalone/.next/server/pages/500.html +1 -1
  144. package/apps/console/.next/standalone/.next/server/pages/_error.js +2 -2
  145. package/apps/console/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  146. package/apps/console/.next/standalone/.next/static/NMX49PyJUVvU7h4ilJIeH/_buildManifest.js +1 -0
  147. package/apps/console/.next/standalone/.next/static/chunks/app/api/agent/route-2c497fd3a9a57cbd.js +1 -0
  148. package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/route-2c497fd3a9a57cbd.js +1 -0
  149. package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/stream/route-2c497fd3a9a57cbd.js +1 -0
  150. package/apps/console/.next/standalone/.next/static/chunks/app/api/automation/workflow-blueprint/route-2c497fd3a9a57cbd.js +1 -0
  151. package/apps/console/.next/standalone/.next/static/chunks/app/api/backend/endpoint-spec/route-2c497fd3a9a57cbd.js +1 -0
  152. package/apps/console/.next/standalone/.next/static/chunks/app/api/bootstrap-admin-token/route-2c497fd3a9a57cbd.js +1 -0
  153. package/apps/console/.next/standalone/.next/static/chunks/app/api/brain/add-folder/route-2c497fd3a9a57cbd.js +1 -0
  154. package/apps/console/.next/standalone/.next/static/chunks/app/api/brain/forget/route-2c497fd3a9a57cbd.js +1 -0
  155. package/apps/console/.next/standalone/.next/static/chunks/app/api/brain/pick-folder/route-2c497fd3a9a57cbd.js +1 -0
  156. package/apps/console/.next/standalone/.next/static/chunks/app/api/brain/scan/route-2c497fd3a9a57cbd.js +1 -0
  157. package/apps/console/.next/standalone/.next/static/chunks/app/api/brain/search/route-2c497fd3a9a57cbd.js +1 -0
  158. package/apps/console/.next/standalone/.next/static/chunks/app/api/brain/status/route-2c497fd3a9a57cbd.js +1 -0
  159. package/apps/console/.next/standalone/.next/static/chunks/app/api/brand/brand-audit/route-2c497fd3a9a57cbd.js +1 -0
  160. package/apps/console/.next/standalone/.next/static/chunks/app/api/campaigns/campaign-brief/route-2c497fd3a9a57cbd.js +1 -0
  161. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/confidence/route-2c497fd3a9a57cbd.js +1 -0
  162. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/customer/route-2c497fd3a9a57cbd.js +1 -0
  163. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/dispatches/route-2c497fd3a9a57cbd.js +1 -0
  164. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/engagement/route-2c497fd3a9a57cbd.js +1 -0
  165. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/escalate/route-2c497fd3a9a57cbd.js +1 -0
  166. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/profile/route-2c497fd3a9a57cbd.js +1 -0
  167. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/screenshare/route-2c497fd3a9a57cbd.js +1 -0
  168. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/track-question/route-2c497fd3a9a57cbd.js +1 -0
  169. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/use-case-wiki/route-2c497fd3a9a57cbd.js +1 -0
  170. package/apps/console/.next/standalone/.next/static/chunks/app/api/chat/route-2c497fd3a9a57cbd.js +1 -0
  171. package/apps/console/.next/standalone/.next/static/chunks/app/api/compliance/risk-register-seed/route-2c497fd3a9a57cbd.js +1 -0
  172. package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/[id]/route-2c497fd3a9a57cbd.js +1 -0
  173. package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/route-2c497fd3a9a57cbd.js +1 -0
  174. package/apps/console/.next/standalone/.next/static/chunks/app/api/concierge/morning-brief/route-2c497fd3a9a57cbd.js +1 -0
  175. package/apps/console/.next/standalone/.next/static/chunks/app/api/contacts/route-2c497fd3a9a57cbd.js +1 -0
  176. package/apps/console/.next/standalone/.next/static/chunks/app/api/content/seo-brief/route-2c497fd3a9a57cbd.js +1 -0
  177. package/apps/console/.next/standalone/.next/static/chunks/app/api/conversations/route-2c497fd3a9a57cbd.js +1 -0
  178. package/apps/console/.next/standalone/.next/static/chunks/app/api/coo/roster/route-2c497fd3a9a57cbd.js +1 -0
  179. package/apps/console/.next/standalone/.next/static/chunks/app/api/coo/route-2c497fd3a9a57cbd.js +1 -0
  180. package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/escalation-triage/route-2c497fd3a9a57cbd.js +1 -0
  181. package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/health-score/route-2c497fd3a9a57cbd.js +1 -0
  182. package/apps/console/.next/standalone/.next/static/chunks/app/api/data/cohort-brief/route-2c497fd3a9a57cbd.js +1 -0
  183. package/apps/console/.next/standalone/.next/static/chunks/app/api/delegate/route-2c497fd3a9a57cbd.js +1 -0
  184. package/apps/console/.next/standalone/.next/static/chunks/app/api/delegate/stream/route-2c497fd3a9a57cbd.js +1 -0
  185. package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/qbr-brief/route-2c497fd3a9a57cbd.js +1 -0
  186. package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/weekly-brief/route-2c497fd3a9a57cbd.js +1 -0
  187. package/apps/console/.next/standalone/.next/static/chunks/app/api/dev/invalidate-cache/route-2c497fd3a9a57cbd.js +1 -0
  188. package/apps/console/.next/standalone/.next/static/chunks/app/api/devops/runbook/route-2c497fd3a9a57cbd.js +1 -0
  189. package/apps/console/.next/standalone/.next/static/chunks/app/api/email/sequence-brief/route-2c497fd3a9a57cbd.js +1 -0
  190. package/apps/console/.next/standalone/.next/static/chunks/app/api/engineering/adr-draft/route-2c497fd3a9a57cbd.js +1 -0
  191. package/apps/console/.next/standalone/.next/static/chunks/app/api/finance/runway-snapshot/route-2c497fd3a9a57cbd.js +1 -0
  192. package/apps/console/.next/standalone/.next/static/chunks/app/api/frontend/component-spec/route-2c497fd3a9a57cbd.js +1 -0
  193. package/apps/console/.next/standalone/.next/static/chunks/app/api/health/route-2c497fd3a9a57cbd.js +1 -0
  194. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/brief/route-2c497fd3a9a57cbd.js +1 -0
  195. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-2c497fd3a9a57cbd.js +1 -0
  196. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-2c497fd3a9a57cbd.js +1 -0
  197. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-2c497fd3a9a57cbd.js +1 -0
  198. package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/route-2c497fd3a9a57cbd.js +1 -0
  199. package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/stream/route-2c497fd3a9a57cbd.js +1 -0
  200. package/apps/console/.next/standalone/.next/static/chunks/app/api/investor/kpi-tracker/route-2c497fd3a9a57cbd.js +1 -0
  201. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/status/route-2c497fd3a9a57cbd.js +1 -0
  202. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-2c497fd3a9a57cbd.js +1 -0
  203. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-2c497fd3a9a57cbd.js +1 -0
  204. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-2c497fd3a9a57cbd.js +1 -0
  205. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-2c497fd3a9a57cbd.js +1 -0
  206. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-2c497fd3a9a57cbd.js +1 -0
  207. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/license/route-2c497fd3a9a57cbd.js +1 -0
  208. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/models/route-2c497fd3a9a57cbd.js +1 -0
  209. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/providers/route-2c497fd3a9a57cbd.js +1 -0
  210. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/[id]/route-2c497fd3a9a57cbd.js +1 -0
  211. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/route-2c497fd3a9a57cbd.js +1 -0
  212. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/[id]/route-2c497fd3a9a57cbd.js +1 -0
  213. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/route-2c497fd3a9a57cbd.js +1 -0
  214. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/vault/route-2c497fd3a9a57cbd.js +1 -0
  215. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/workflows/route-2c497fd3a9a57cbd.js +1 -0
  216. package/apps/console/.next/standalone/.next/static/chunks/app/api/legal/clause-template/route-2c497fd3a9a57cbd.js +1 -0
  217. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/draft/route-2c497fd3a9a57cbd.js +1 -0
  218. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/route-2c497fd3a9a57cbd.js +1 -0
  219. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/route-2c497fd3a9a57cbd.js +1 -0
  220. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/cadence-planner/route-2c497fd3a9a57cbd.js +1 -0
  221. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/competitive-snapshot/route-2c497fd3a9a57cbd.js +1 -0
  222. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketplace/catalogue/route-2c497fd3a9a57cbd.js +1 -0
  223. package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/engagement-plan/route-2c497fd3a9a57cbd.js +1 -0
  224. package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/kickoff-brief/route-2c497fd3a9a57cbd.js +1 -0
  225. package/apps/console/.next/standalone/.next/static/chunks/app/api/openclaw/status/route-2c497fd3a9a57cbd.js +1 -0
  226. package/apps/console/.next/standalone/.next/static/chunks/app/api/ops/dispatch-brief/route-2c497fd3a9a57cbd.js +1 -0
  227. package/apps/console/.next/standalone/.next/static/chunks/app/api/pack/route-2c497fd3a9a57cbd.js +1 -0
  228. package/apps/console/.next/standalone/.next/static/chunks/app/api/people/job-brief/route-2c497fd3a9a57cbd.js +1 -0
  229. package/apps/console/.next/standalone/.next/static/chunks/app/api/preferences/route-2c497fd3a9a57cbd.js +1 -0
  230. package/apps/console/.next/standalone/.next/static/chunks/app/api/procurement/po-brief/route-2c497fd3a9a57cbd.js +1 -0
  231. package/apps/console/.next/standalone/.next/static/chunks/app/api/product/prd-draft/route-2c497fd3a9a57cbd.js +1 -0
  232. package/apps/console/.next/standalone/.next/static/chunks/app/api/research/prospect-intel/route-2c497fd3a9a57cbd.js +1 -0
  233. package/apps/console/.next/standalone/.next/static/chunks/app/api/research/search/route-2c497fd3a9a57cbd.js +1 -0
  234. package/apps/console/.next/standalone/.next/static/chunks/app/api/routing/route-2c497fd3a9a57cbd.js +1 -0
  235. package/apps/console/.next/standalone/.next/static/chunks/app/api/runs/route-2c497fd3a9a57cbd.js +1 -0
  236. package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/pipeline-summary/route-2c497fd3a9a57cbd.js +1 -0
  237. package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/prospect-brief/route-2c497fd3a9a57cbd.js +1 -0
  238. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/build/route-2c497fd3a9a57cbd.js +1 -0
  239. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-2c497fd3a9a57cbd.js +1 -0
  240. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/refine/route-2c497fd3a9a57cbd.js +1 -0
  241. package/apps/console/.next/standalone/.next/static/chunks/app/api/strategy/market-pulse/route-2c497fd3a9a57cbd.js +1 -0
  242. package/apps/console/.next/standalone/.next/static/chunks/app/api/telegram/[customerId]/route-2c497fd3a9a57cbd.js +1 -0
  243. package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/regenerate/route-2c497fd3a9a57cbd.js +1 -0
  244. package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/route-2c497fd3a9a57cbd.js +1 -0
  245. package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/[id]/route-2c497fd3a9a57cbd.js +1 -0
  246. package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/route-2c497fd3a9a57cbd.js +1 -0
  247. package/apps/console/.next/standalone/.next/static/chunks/app/api/usage/route-2c497fd3a9a57cbd.js +1 -0
  248. package/apps/console/.next/standalone/.next/static/chunks/app/api/video/video-script/route-2c497fd3a9a57cbd.js +1 -0
  249. package/apps/console/.next/standalone/.next/static/chunks/app/api/webhooks/workflow/[id]/route-2c497fd3a9a57cbd.js +1 -0
  250. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-2c497fd3a9a57cbd.js +1 -0
  251. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/route-2c497fd3a9a57cbd.js +1 -0
  252. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/route-2c497fd3a9a57cbd.js +1 -0
  253. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/run/route-2c497fd3a9a57cbd.js +1 -0
  254. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/route-2c497fd3a9a57cbd.js +1 -0
  255. package/apps/console/.next/standalone/.next/static/chunks/app/{page-f3050e38f4fe72a7.js → page-117393cb77865729.js} +1 -1
  256. package/apps/console/.next/static/NMX49PyJUVvU7h4ilJIeH/_buildManifest.js +1 -0
  257. package/apps/console/.next/static/chunks/app/api/agent/route-2c497fd3a9a57cbd.js +1 -0
  258. package/apps/console/.next/static/chunks/app/api/approvals/route-2c497fd3a9a57cbd.js +1 -0
  259. package/apps/console/.next/static/chunks/app/api/approvals/stream/route-2c497fd3a9a57cbd.js +1 -0
  260. package/apps/console/.next/static/chunks/app/api/automation/workflow-blueprint/route-2c497fd3a9a57cbd.js +1 -0
  261. package/apps/console/.next/static/chunks/app/api/backend/endpoint-spec/route-2c497fd3a9a57cbd.js +1 -0
  262. package/apps/console/.next/static/chunks/app/api/bootstrap-admin-token/route-2c497fd3a9a57cbd.js +1 -0
  263. package/apps/console/.next/static/chunks/app/api/brain/add-folder/route-2c497fd3a9a57cbd.js +1 -0
  264. package/apps/console/.next/static/chunks/app/api/brain/forget/route-2c497fd3a9a57cbd.js +1 -0
  265. package/apps/console/.next/static/chunks/app/api/brain/pick-folder/route-2c497fd3a9a57cbd.js +1 -0
  266. package/apps/console/.next/static/chunks/app/api/brain/scan/route-2c497fd3a9a57cbd.js +1 -0
  267. package/apps/console/.next/static/chunks/app/api/brain/search/route-2c497fd3a9a57cbd.js +1 -0
  268. package/apps/console/.next/static/chunks/app/api/brain/status/route-2c497fd3a9a57cbd.js +1 -0
  269. package/apps/console/.next/static/chunks/app/api/brand/brand-audit/route-2c497fd3a9a57cbd.js +1 -0
  270. package/apps/console/.next/static/chunks/app/api/campaigns/campaign-brief/route-2c497fd3a9a57cbd.js +1 -0
  271. package/apps/console/.next/static/chunks/app/api/champion/confidence/route-2c497fd3a9a57cbd.js +1 -0
  272. package/apps/console/.next/static/chunks/app/api/champion/customer/route-2c497fd3a9a57cbd.js +1 -0
  273. package/apps/console/.next/static/chunks/app/api/champion/dispatches/route-2c497fd3a9a57cbd.js +1 -0
  274. package/apps/console/.next/static/chunks/app/api/champion/engagement/route-2c497fd3a9a57cbd.js +1 -0
  275. package/apps/console/.next/static/chunks/app/api/champion/escalate/route-2c497fd3a9a57cbd.js +1 -0
  276. package/apps/console/.next/static/chunks/app/api/champion/profile/route-2c497fd3a9a57cbd.js +1 -0
  277. package/apps/console/.next/static/chunks/app/api/champion/screenshare/route-2c497fd3a9a57cbd.js +1 -0
  278. package/apps/console/.next/static/chunks/app/api/champion/track-question/route-2c497fd3a9a57cbd.js +1 -0
  279. package/apps/console/.next/static/chunks/app/api/champion/use-case-wiki/route-2c497fd3a9a57cbd.js +1 -0
  280. package/apps/console/.next/static/chunks/app/api/chat/route-2c497fd3a9a57cbd.js +1 -0
  281. package/apps/console/.next/static/chunks/app/api/compliance/risk-register-seed/route-2c497fd3a9a57cbd.js +1 -0
  282. package/apps/console/.next/static/chunks/app/api/computer-use/[id]/route-2c497fd3a9a57cbd.js +1 -0
  283. package/apps/console/.next/static/chunks/app/api/computer-use/route-2c497fd3a9a57cbd.js +1 -0
  284. package/apps/console/.next/static/chunks/app/api/concierge/morning-brief/route-2c497fd3a9a57cbd.js +1 -0
  285. package/apps/console/.next/static/chunks/app/api/contacts/route-2c497fd3a9a57cbd.js +1 -0
  286. package/apps/console/.next/static/chunks/app/api/content/seo-brief/route-2c497fd3a9a57cbd.js +1 -0
  287. package/apps/console/.next/static/chunks/app/api/conversations/route-2c497fd3a9a57cbd.js +1 -0
  288. package/apps/console/.next/static/chunks/app/api/coo/roster/route-2c497fd3a9a57cbd.js +1 -0
  289. package/apps/console/.next/static/chunks/app/api/coo/route-2c497fd3a9a57cbd.js +1 -0
  290. package/apps/console/.next/static/chunks/app/api/cx/escalation-triage/route-2c497fd3a9a57cbd.js +1 -0
  291. package/apps/console/.next/static/chunks/app/api/cx/health-score/route-2c497fd3a9a57cbd.js +1 -0
  292. package/apps/console/.next/static/chunks/app/api/data/cohort-brief/route-2c497fd3a9a57cbd.js +1 -0
  293. package/apps/console/.next/static/chunks/app/api/delegate/route-2c497fd3a9a57cbd.js +1 -0
  294. package/apps/console/.next/static/chunks/app/api/delegate/stream/route-2c497fd3a9a57cbd.js +1 -0
  295. package/apps/console/.next/static/chunks/app/api/delivery/qbr-brief/route-2c497fd3a9a57cbd.js +1 -0
  296. package/apps/console/.next/static/chunks/app/api/delivery/weekly-brief/route-2c497fd3a9a57cbd.js +1 -0
  297. package/apps/console/.next/static/chunks/app/api/dev/invalidate-cache/route-2c497fd3a9a57cbd.js +1 -0
  298. package/apps/console/.next/static/chunks/app/api/devops/runbook/route-2c497fd3a9a57cbd.js +1 -0
  299. package/apps/console/.next/static/chunks/app/api/email/sequence-brief/route-2c497fd3a9a57cbd.js +1 -0
  300. package/apps/console/.next/static/chunks/app/api/engineering/adr-draft/route-2c497fd3a9a57cbd.js +1 -0
  301. package/apps/console/.next/static/chunks/app/api/finance/runway-snapshot/route-2c497fd3a9a57cbd.js +1 -0
  302. package/apps/console/.next/static/chunks/app/api/frontend/component-spec/route-2c497fd3a9a57cbd.js +1 -0
  303. package/apps/console/.next/static/chunks/app/api/health/route-2c497fd3a9a57cbd.js +1 -0
  304. package/apps/console/.next/static/chunks/app/api/implementation/brief/route-2c497fd3a9a57cbd.js +1 -0
  305. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-2c497fd3a9a57cbd.js +1 -0
  306. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-2c497fd3a9a57cbd.js +1 -0
  307. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-2c497fd3a9a57cbd.js +1 -0
  308. package/apps/console/.next/static/chunks/app/api/inbox/route-2c497fd3a9a57cbd.js +1 -0
  309. package/apps/console/.next/static/chunks/app/api/inbox/stream/route-2c497fd3a9a57cbd.js +1 -0
  310. package/apps/console/.next/static/chunks/app/api/investor/kpi-tracker/route-2c497fd3a9a57cbd.js +1 -0
  311. package/apps/console/.next/static/chunks/app/api/leedab/channels/status/route-2c497fd3a9a57cbd.js +1 -0
  312. package/apps/console/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-2c497fd3a9a57cbd.js +1 -0
  313. package/apps/console/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-2c497fd3a9a57cbd.js +1 -0
  314. package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-2c497fd3a9a57cbd.js +1 -0
  315. package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-2c497fd3a9a57cbd.js +1 -0
  316. package/apps/console/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-2c497fd3a9a57cbd.js +1 -0
  317. package/apps/console/.next/static/chunks/app/api/leedab/license/route-2c497fd3a9a57cbd.js +1 -0
  318. package/apps/console/.next/static/chunks/app/api/leedab/models/route-2c497fd3a9a57cbd.js +1 -0
  319. package/apps/console/.next/static/chunks/app/api/leedab/providers/route-2c497fd3a9a57cbd.js +1 -0
  320. package/apps/console/.next/static/chunks/app/api/leedab/sessions/[id]/route-2c497fd3a9a57cbd.js +1 -0
  321. package/apps/console/.next/static/chunks/app/api/leedab/sessions/route-2c497fd3a9a57cbd.js +1 -0
  322. package/apps/console/.next/static/chunks/app/api/leedab/team/[id]/route-2c497fd3a9a57cbd.js +1 -0
  323. package/apps/console/.next/static/chunks/app/api/leedab/team/route-2c497fd3a9a57cbd.js +1 -0
  324. package/apps/console/.next/static/chunks/app/api/leedab/vault/route-2c497fd3a9a57cbd.js +1 -0
  325. package/apps/console/.next/static/chunks/app/api/leedab/workflows/route-2c497fd3a9a57cbd.js +1 -0
  326. package/apps/console/.next/static/chunks/app/api/legal/clause-template/route-2c497fd3a9a57cbd.js +1 -0
  327. package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/draft/route-2c497fd3a9a57cbd.js +1 -0
  328. package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/route-2c497fd3a9a57cbd.js +1 -0
  329. package/apps/console/.next/static/chunks/app/api/manifest/agents/route-2c497fd3a9a57cbd.js +1 -0
  330. package/apps/console/.next/static/chunks/app/api/marketing/cadence-planner/route-2c497fd3a9a57cbd.js +1 -0
  331. package/apps/console/.next/static/chunks/app/api/marketing/competitive-snapshot/route-2c497fd3a9a57cbd.js +1 -0
  332. package/apps/console/.next/static/chunks/app/api/marketplace/catalogue/route-2c497fd3a9a57cbd.js +1 -0
  333. package/apps/console/.next/static/chunks/app/api/onboarding/engagement-plan/route-2c497fd3a9a57cbd.js +1 -0
  334. package/apps/console/.next/static/chunks/app/api/onboarding/kickoff-brief/route-2c497fd3a9a57cbd.js +1 -0
  335. package/apps/console/.next/static/chunks/app/api/openclaw/status/route-2c497fd3a9a57cbd.js +1 -0
  336. package/apps/console/.next/static/chunks/app/api/ops/dispatch-brief/route-2c497fd3a9a57cbd.js +1 -0
  337. package/apps/console/.next/static/chunks/app/api/pack/route-2c497fd3a9a57cbd.js +1 -0
  338. package/apps/console/.next/static/chunks/app/api/people/job-brief/route-2c497fd3a9a57cbd.js +1 -0
  339. package/apps/console/.next/static/chunks/app/api/preferences/route-2c497fd3a9a57cbd.js +1 -0
  340. package/apps/console/.next/static/chunks/app/api/procurement/po-brief/route-2c497fd3a9a57cbd.js +1 -0
  341. package/apps/console/.next/static/chunks/app/api/product/prd-draft/route-2c497fd3a9a57cbd.js +1 -0
  342. package/apps/console/.next/static/chunks/app/api/research/prospect-intel/route-2c497fd3a9a57cbd.js +1 -0
  343. package/apps/console/.next/static/chunks/app/api/research/search/route-2c497fd3a9a57cbd.js +1 -0
  344. package/apps/console/.next/static/chunks/app/api/routing/route-2c497fd3a9a57cbd.js +1 -0
  345. package/apps/console/.next/static/chunks/app/api/runs/route-2c497fd3a9a57cbd.js +1 -0
  346. package/apps/console/.next/static/chunks/app/api/sales/pipeline-summary/route-2c497fd3a9a57cbd.js +1 -0
  347. package/apps/console/.next/static/chunks/app/api/sales/prospect-brief/route-2c497fd3a9a57cbd.js +1 -0
  348. package/apps/console/.next/static/chunks/app/api/solutions/build/route-2c497fd3a9a57cbd.js +1 -0
  349. package/apps/console/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-2c497fd3a9a57cbd.js +1 -0
  350. package/apps/console/.next/static/chunks/app/api/solutions/refine/route-2c497fd3a9a57cbd.js +1 -0
  351. package/apps/console/.next/static/chunks/app/api/strategy/market-pulse/route-2c497fd3a9a57cbd.js +1 -0
  352. package/apps/console/.next/static/chunks/app/api/telegram/[customerId]/route-2c497fd3a9a57cbd.js +1 -0
  353. package/apps/console/.next/static/chunks/app/api/templates/regenerate/route-2c497fd3a9a57cbd.js +1 -0
  354. package/apps/console/.next/static/chunks/app/api/templates/route-2c497fd3a9a57cbd.js +1 -0
  355. package/apps/console/.next/static/chunks/app/api/uploads/[id]/route-2c497fd3a9a57cbd.js +1 -0
  356. package/apps/console/.next/static/chunks/app/api/uploads/route-2c497fd3a9a57cbd.js +1 -0
  357. package/apps/console/.next/static/chunks/app/api/usage/route-2c497fd3a9a57cbd.js +1 -0
  358. package/apps/console/.next/static/chunks/app/api/video/video-script/route-2c497fd3a9a57cbd.js +1 -0
  359. package/apps/console/.next/static/chunks/app/api/webhooks/workflow/[id]/route-2c497fd3a9a57cbd.js +1 -0
  360. package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-2c497fd3a9a57cbd.js +1 -0
  361. package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/route-2c497fd3a9a57cbd.js +1 -0
  362. package/apps/console/.next/static/chunks/app/api/workflows/[id]/route-2c497fd3a9a57cbd.js +1 -0
  363. package/apps/console/.next/static/chunks/app/api/workflows/[id]/run/route-2c497fd3a9a57cbd.js +1 -0
  364. package/apps/console/.next/static/chunks/app/api/workflows/route-2c497fd3a9a57cbd.js +1 -0
  365. package/apps/console/.next/static/chunks/app/{page-f3050e38f4fe72a7.js → page-117393cb77865729.js} +1 -1
  366. package/bin/leedab.js +85 -0
  367. package/clients/default/manifest.json +7 -1
  368. package/dist/brain/cli.d.ts +26 -0
  369. package/dist/brain/cli.js +124 -0
  370. package/dist/brain/db/connection.d.ts +4 -0
  371. package/dist/brain/db/connection.js +38 -0
  372. package/dist/brain/db/migrate.d.ts +5 -0
  373. package/dist/brain/db/migrate.js +38 -0
  374. package/dist/brain/db/migrations/0001_init.sql +134 -0
  375. package/dist/brain/ingest/classifier.d.ts +6 -0
  376. package/dist/brain/ingest/classifier.js +21 -0
  377. package/dist/brain/ingest/indexer.d.ts +4 -0
  378. package/dist/brain/ingest/indexer.js +175 -0
  379. package/dist/brain/ingest/parsers/text.d.ts +4 -0
  380. package/dist/brain/ingest/parsers/text.js +38 -0
  381. package/dist/brain/ingest/scanner.d.ts +19 -0
  382. package/dist/brain/ingest/scanner.js +181 -0
  383. package/dist/brain/search/bm25.d.ts +6 -0
  384. package/dist/brain/search/bm25.js +55 -0
  385. package/dist/brain/types.d.ts +53 -0
  386. package/dist/brain/types.js +1 -0
  387. package/dist/license/entitlements.d.ts +12 -0
  388. package/dist/license/entitlements.js +37 -0
  389. package/dist/paths.d.ts +12 -0
  390. package/dist/paths.js +18 -0
  391. package/dist/templates/workspace/COO.md +12 -0
  392. package/dist/templates/workspace/SOUL.md +12 -0
  393. package/package.json +5 -1
  394. package/apps/console/.next/standalone/.next/static/9Vdc730qexSZxzkAAgkcG/_buildManifest.js +0 -1
  395. package/apps/console/.next/standalone/.next/static/chunks/app/api/agent/route-734e01b852d6a51a.js +0 -1
  396. package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/route-734e01b852d6a51a.js +0 -1
  397. package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/stream/route-734e01b852d6a51a.js +0 -1
  398. package/apps/console/.next/standalone/.next/static/chunks/app/api/automation/workflow-blueprint/route-734e01b852d6a51a.js +0 -1
  399. package/apps/console/.next/standalone/.next/static/chunks/app/api/backend/endpoint-spec/route-734e01b852d6a51a.js +0 -1
  400. package/apps/console/.next/standalone/.next/static/chunks/app/api/bootstrap-admin-token/route-734e01b852d6a51a.js +0 -1
  401. package/apps/console/.next/standalone/.next/static/chunks/app/api/brand/brand-audit/route-734e01b852d6a51a.js +0 -1
  402. package/apps/console/.next/standalone/.next/static/chunks/app/api/campaigns/campaign-brief/route-734e01b852d6a51a.js +0 -1
  403. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/confidence/route-734e01b852d6a51a.js +0 -1
  404. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/customer/route-734e01b852d6a51a.js +0 -1
  405. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/dispatches/route-734e01b852d6a51a.js +0 -1
  406. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/engagement/route-734e01b852d6a51a.js +0 -1
  407. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/escalate/route-734e01b852d6a51a.js +0 -1
  408. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/profile/route-734e01b852d6a51a.js +0 -1
  409. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/screenshare/route-734e01b852d6a51a.js +0 -1
  410. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/track-question/route-734e01b852d6a51a.js +0 -1
  411. package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/use-case-wiki/route-734e01b852d6a51a.js +0 -1
  412. package/apps/console/.next/standalone/.next/static/chunks/app/api/chat/route-734e01b852d6a51a.js +0 -1
  413. package/apps/console/.next/standalone/.next/static/chunks/app/api/compliance/risk-register-seed/route-734e01b852d6a51a.js +0 -1
  414. package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/[id]/route-734e01b852d6a51a.js +0 -1
  415. package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/route-734e01b852d6a51a.js +0 -1
  416. package/apps/console/.next/standalone/.next/static/chunks/app/api/concierge/morning-brief/route-734e01b852d6a51a.js +0 -1
  417. package/apps/console/.next/standalone/.next/static/chunks/app/api/contacts/route-734e01b852d6a51a.js +0 -1
  418. package/apps/console/.next/standalone/.next/static/chunks/app/api/content/seo-brief/route-734e01b852d6a51a.js +0 -1
  419. package/apps/console/.next/standalone/.next/static/chunks/app/api/conversations/route-734e01b852d6a51a.js +0 -1
  420. package/apps/console/.next/standalone/.next/static/chunks/app/api/coo/roster/route-734e01b852d6a51a.js +0 -1
  421. package/apps/console/.next/standalone/.next/static/chunks/app/api/coo/route-734e01b852d6a51a.js +0 -1
  422. package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/escalation-triage/route-734e01b852d6a51a.js +0 -1
  423. package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/health-score/route-734e01b852d6a51a.js +0 -1
  424. package/apps/console/.next/standalone/.next/static/chunks/app/api/data/cohort-brief/route-734e01b852d6a51a.js +0 -1
  425. package/apps/console/.next/standalone/.next/static/chunks/app/api/delegate/route-734e01b852d6a51a.js +0 -1
  426. package/apps/console/.next/standalone/.next/static/chunks/app/api/delegate/stream/route-734e01b852d6a51a.js +0 -1
  427. package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/qbr-brief/route-734e01b852d6a51a.js +0 -1
  428. package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/weekly-brief/route-734e01b852d6a51a.js +0 -1
  429. package/apps/console/.next/standalone/.next/static/chunks/app/api/dev/invalidate-cache/route-734e01b852d6a51a.js +0 -1
  430. package/apps/console/.next/standalone/.next/static/chunks/app/api/devops/runbook/route-734e01b852d6a51a.js +0 -1
  431. package/apps/console/.next/standalone/.next/static/chunks/app/api/email/sequence-brief/route-734e01b852d6a51a.js +0 -1
  432. package/apps/console/.next/standalone/.next/static/chunks/app/api/engineering/adr-draft/route-734e01b852d6a51a.js +0 -1
  433. package/apps/console/.next/standalone/.next/static/chunks/app/api/finance/runway-snapshot/route-734e01b852d6a51a.js +0 -1
  434. package/apps/console/.next/standalone/.next/static/chunks/app/api/frontend/component-spec/route-734e01b852d6a51a.js +0 -1
  435. package/apps/console/.next/standalone/.next/static/chunks/app/api/health/route-734e01b852d6a51a.js +0 -1
  436. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/brief/route-734e01b852d6a51a.js +0 -1
  437. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-734e01b852d6a51a.js +0 -1
  438. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-734e01b852d6a51a.js +0 -1
  439. package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-734e01b852d6a51a.js +0 -1
  440. package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/route-734e01b852d6a51a.js +0 -1
  441. package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/stream/route-734e01b852d6a51a.js +0 -1
  442. package/apps/console/.next/standalone/.next/static/chunks/app/api/investor/kpi-tracker/route-734e01b852d6a51a.js +0 -1
  443. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/status/route-734e01b852d6a51a.js +0 -1
  444. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-734e01b852d6a51a.js +0 -1
  445. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-734e01b852d6a51a.js +0 -1
  446. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-734e01b852d6a51a.js +0 -1
  447. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-734e01b852d6a51a.js +0 -1
  448. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-734e01b852d6a51a.js +0 -1
  449. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/license/route-734e01b852d6a51a.js +0 -1
  450. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/models/route-734e01b852d6a51a.js +0 -1
  451. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/providers/route-734e01b852d6a51a.js +0 -1
  452. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/[id]/route-734e01b852d6a51a.js +0 -1
  453. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/route-734e01b852d6a51a.js +0 -1
  454. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/[id]/route-734e01b852d6a51a.js +0 -1
  455. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/route-734e01b852d6a51a.js +0 -1
  456. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/vault/route-734e01b852d6a51a.js +0 -1
  457. package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/workflows/route-734e01b852d6a51a.js +0 -1
  458. package/apps/console/.next/standalone/.next/static/chunks/app/api/legal/clause-template/route-734e01b852d6a51a.js +0 -1
  459. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/draft/route-734e01b852d6a51a.js +0 -1
  460. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/route-734e01b852d6a51a.js +0 -1
  461. package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/route-734e01b852d6a51a.js +0 -1
  462. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/cadence-planner/route-734e01b852d6a51a.js +0 -1
  463. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/competitive-snapshot/route-734e01b852d6a51a.js +0 -1
  464. package/apps/console/.next/standalone/.next/static/chunks/app/api/marketplace/catalogue/route-734e01b852d6a51a.js +0 -1
  465. package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/engagement-plan/route-734e01b852d6a51a.js +0 -1
  466. package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/kickoff-brief/route-734e01b852d6a51a.js +0 -1
  467. package/apps/console/.next/standalone/.next/static/chunks/app/api/openclaw/status/route-734e01b852d6a51a.js +0 -1
  468. package/apps/console/.next/standalone/.next/static/chunks/app/api/ops/dispatch-brief/route-734e01b852d6a51a.js +0 -1
  469. package/apps/console/.next/standalone/.next/static/chunks/app/api/pack/route-734e01b852d6a51a.js +0 -1
  470. package/apps/console/.next/standalone/.next/static/chunks/app/api/people/job-brief/route-734e01b852d6a51a.js +0 -1
  471. package/apps/console/.next/standalone/.next/static/chunks/app/api/preferences/route-734e01b852d6a51a.js +0 -1
  472. package/apps/console/.next/standalone/.next/static/chunks/app/api/procurement/po-brief/route-734e01b852d6a51a.js +0 -1
  473. package/apps/console/.next/standalone/.next/static/chunks/app/api/product/prd-draft/route-734e01b852d6a51a.js +0 -1
  474. package/apps/console/.next/standalone/.next/static/chunks/app/api/research/prospect-intel/route-734e01b852d6a51a.js +0 -1
  475. package/apps/console/.next/standalone/.next/static/chunks/app/api/research/search/route-734e01b852d6a51a.js +0 -1
  476. package/apps/console/.next/standalone/.next/static/chunks/app/api/routing/route-734e01b852d6a51a.js +0 -1
  477. package/apps/console/.next/standalone/.next/static/chunks/app/api/runs/route-734e01b852d6a51a.js +0 -1
  478. package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/pipeline-summary/route-734e01b852d6a51a.js +0 -1
  479. package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/prospect-brief/route-734e01b852d6a51a.js +0 -1
  480. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/build/route-734e01b852d6a51a.js +0 -1
  481. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-734e01b852d6a51a.js +0 -1
  482. package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/refine/route-734e01b852d6a51a.js +0 -1
  483. package/apps/console/.next/standalone/.next/static/chunks/app/api/strategy/market-pulse/route-734e01b852d6a51a.js +0 -1
  484. package/apps/console/.next/standalone/.next/static/chunks/app/api/telegram/[customerId]/route-734e01b852d6a51a.js +0 -1
  485. package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/regenerate/route-734e01b852d6a51a.js +0 -1
  486. package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/route-734e01b852d6a51a.js +0 -1
  487. package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/[id]/route-734e01b852d6a51a.js +0 -1
  488. package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/route-734e01b852d6a51a.js +0 -1
  489. package/apps/console/.next/standalone/.next/static/chunks/app/api/usage/route-734e01b852d6a51a.js +0 -1
  490. package/apps/console/.next/standalone/.next/static/chunks/app/api/video/video-script/route-734e01b852d6a51a.js +0 -1
  491. package/apps/console/.next/standalone/.next/static/chunks/app/api/webhooks/workflow/[id]/route-734e01b852d6a51a.js +0 -1
  492. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-734e01b852d6a51a.js +0 -1
  493. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/route-734e01b852d6a51a.js +0 -1
  494. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/route-734e01b852d6a51a.js +0 -1
  495. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/run/route-734e01b852d6a51a.js +0 -1
  496. package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/route-734e01b852d6a51a.js +0 -1
  497. package/apps/console/.next/static/9Vdc730qexSZxzkAAgkcG/_buildManifest.js +0 -1
  498. package/apps/console/.next/static/chunks/app/api/agent/route-734e01b852d6a51a.js +0 -1
  499. package/apps/console/.next/static/chunks/app/api/approvals/route-734e01b852d6a51a.js +0 -1
  500. package/apps/console/.next/static/chunks/app/api/approvals/stream/route-734e01b852d6a51a.js +0 -1
  501. package/apps/console/.next/static/chunks/app/api/automation/workflow-blueprint/route-734e01b852d6a51a.js +0 -1
  502. package/apps/console/.next/static/chunks/app/api/backend/endpoint-spec/route-734e01b852d6a51a.js +0 -1
  503. package/apps/console/.next/static/chunks/app/api/bootstrap-admin-token/route-734e01b852d6a51a.js +0 -1
  504. package/apps/console/.next/static/chunks/app/api/brand/brand-audit/route-734e01b852d6a51a.js +0 -1
  505. package/apps/console/.next/static/chunks/app/api/campaigns/campaign-brief/route-734e01b852d6a51a.js +0 -1
  506. package/apps/console/.next/static/chunks/app/api/champion/confidence/route-734e01b852d6a51a.js +0 -1
  507. package/apps/console/.next/static/chunks/app/api/champion/customer/route-734e01b852d6a51a.js +0 -1
  508. package/apps/console/.next/static/chunks/app/api/champion/dispatches/route-734e01b852d6a51a.js +0 -1
  509. package/apps/console/.next/static/chunks/app/api/champion/engagement/route-734e01b852d6a51a.js +0 -1
  510. package/apps/console/.next/static/chunks/app/api/champion/escalate/route-734e01b852d6a51a.js +0 -1
  511. package/apps/console/.next/static/chunks/app/api/champion/profile/route-734e01b852d6a51a.js +0 -1
  512. package/apps/console/.next/static/chunks/app/api/champion/screenshare/route-734e01b852d6a51a.js +0 -1
  513. package/apps/console/.next/static/chunks/app/api/champion/track-question/route-734e01b852d6a51a.js +0 -1
  514. package/apps/console/.next/static/chunks/app/api/champion/use-case-wiki/route-734e01b852d6a51a.js +0 -1
  515. package/apps/console/.next/static/chunks/app/api/chat/route-734e01b852d6a51a.js +0 -1
  516. package/apps/console/.next/static/chunks/app/api/compliance/risk-register-seed/route-734e01b852d6a51a.js +0 -1
  517. package/apps/console/.next/static/chunks/app/api/computer-use/[id]/route-734e01b852d6a51a.js +0 -1
  518. package/apps/console/.next/static/chunks/app/api/computer-use/route-734e01b852d6a51a.js +0 -1
  519. package/apps/console/.next/static/chunks/app/api/concierge/morning-brief/route-734e01b852d6a51a.js +0 -1
  520. package/apps/console/.next/static/chunks/app/api/contacts/route-734e01b852d6a51a.js +0 -1
  521. package/apps/console/.next/static/chunks/app/api/content/seo-brief/route-734e01b852d6a51a.js +0 -1
  522. package/apps/console/.next/static/chunks/app/api/conversations/route-734e01b852d6a51a.js +0 -1
  523. package/apps/console/.next/static/chunks/app/api/coo/roster/route-734e01b852d6a51a.js +0 -1
  524. package/apps/console/.next/static/chunks/app/api/coo/route-734e01b852d6a51a.js +0 -1
  525. package/apps/console/.next/static/chunks/app/api/cx/escalation-triage/route-734e01b852d6a51a.js +0 -1
  526. package/apps/console/.next/static/chunks/app/api/cx/health-score/route-734e01b852d6a51a.js +0 -1
  527. package/apps/console/.next/static/chunks/app/api/data/cohort-brief/route-734e01b852d6a51a.js +0 -1
  528. package/apps/console/.next/static/chunks/app/api/delegate/route-734e01b852d6a51a.js +0 -1
  529. package/apps/console/.next/static/chunks/app/api/delegate/stream/route-734e01b852d6a51a.js +0 -1
  530. package/apps/console/.next/static/chunks/app/api/delivery/qbr-brief/route-734e01b852d6a51a.js +0 -1
  531. package/apps/console/.next/static/chunks/app/api/delivery/weekly-brief/route-734e01b852d6a51a.js +0 -1
  532. package/apps/console/.next/static/chunks/app/api/dev/invalidate-cache/route-734e01b852d6a51a.js +0 -1
  533. package/apps/console/.next/static/chunks/app/api/devops/runbook/route-734e01b852d6a51a.js +0 -1
  534. package/apps/console/.next/static/chunks/app/api/email/sequence-brief/route-734e01b852d6a51a.js +0 -1
  535. package/apps/console/.next/static/chunks/app/api/engineering/adr-draft/route-734e01b852d6a51a.js +0 -1
  536. package/apps/console/.next/static/chunks/app/api/finance/runway-snapshot/route-734e01b852d6a51a.js +0 -1
  537. package/apps/console/.next/static/chunks/app/api/frontend/component-spec/route-734e01b852d6a51a.js +0 -1
  538. package/apps/console/.next/static/chunks/app/api/health/route-734e01b852d6a51a.js +0 -1
  539. package/apps/console/.next/static/chunks/app/api/implementation/brief/route-734e01b852d6a51a.js +0 -1
  540. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-734e01b852d6a51a.js +0 -1
  541. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-734e01b852d6a51a.js +0 -1
  542. package/apps/console/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-734e01b852d6a51a.js +0 -1
  543. package/apps/console/.next/static/chunks/app/api/inbox/route-734e01b852d6a51a.js +0 -1
  544. package/apps/console/.next/static/chunks/app/api/inbox/stream/route-734e01b852d6a51a.js +0 -1
  545. package/apps/console/.next/static/chunks/app/api/investor/kpi-tracker/route-734e01b852d6a51a.js +0 -1
  546. package/apps/console/.next/static/chunks/app/api/leedab/channels/status/route-734e01b852d6a51a.js +0 -1
  547. package/apps/console/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-734e01b852d6a51a.js +0 -1
  548. package/apps/console/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-734e01b852d6a51a.js +0 -1
  549. package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-734e01b852d6a51a.js +0 -1
  550. package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-734e01b852d6a51a.js +0 -1
  551. package/apps/console/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-734e01b852d6a51a.js +0 -1
  552. package/apps/console/.next/static/chunks/app/api/leedab/license/route-734e01b852d6a51a.js +0 -1
  553. package/apps/console/.next/static/chunks/app/api/leedab/models/route-734e01b852d6a51a.js +0 -1
  554. package/apps/console/.next/static/chunks/app/api/leedab/providers/route-734e01b852d6a51a.js +0 -1
  555. package/apps/console/.next/static/chunks/app/api/leedab/sessions/[id]/route-734e01b852d6a51a.js +0 -1
  556. package/apps/console/.next/static/chunks/app/api/leedab/sessions/route-734e01b852d6a51a.js +0 -1
  557. package/apps/console/.next/static/chunks/app/api/leedab/team/[id]/route-734e01b852d6a51a.js +0 -1
  558. package/apps/console/.next/static/chunks/app/api/leedab/team/route-734e01b852d6a51a.js +0 -1
  559. package/apps/console/.next/static/chunks/app/api/leedab/vault/route-734e01b852d6a51a.js +0 -1
  560. package/apps/console/.next/static/chunks/app/api/leedab/workflows/route-734e01b852d6a51a.js +0 -1
  561. package/apps/console/.next/static/chunks/app/api/legal/clause-template/route-734e01b852d6a51a.js +0 -1
  562. package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/draft/route-734e01b852d6a51a.js +0 -1
  563. package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/route-734e01b852d6a51a.js +0 -1
  564. package/apps/console/.next/static/chunks/app/api/manifest/agents/route-734e01b852d6a51a.js +0 -1
  565. package/apps/console/.next/static/chunks/app/api/marketing/cadence-planner/route-734e01b852d6a51a.js +0 -1
  566. package/apps/console/.next/static/chunks/app/api/marketing/competitive-snapshot/route-734e01b852d6a51a.js +0 -1
  567. package/apps/console/.next/static/chunks/app/api/marketplace/catalogue/route-734e01b852d6a51a.js +0 -1
  568. package/apps/console/.next/static/chunks/app/api/onboarding/engagement-plan/route-734e01b852d6a51a.js +0 -1
  569. package/apps/console/.next/static/chunks/app/api/onboarding/kickoff-brief/route-734e01b852d6a51a.js +0 -1
  570. package/apps/console/.next/static/chunks/app/api/openclaw/status/route-734e01b852d6a51a.js +0 -1
  571. package/apps/console/.next/static/chunks/app/api/ops/dispatch-brief/route-734e01b852d6a51a.js +0 -1
  572. package/apps/console/.next/static/chunks/app/api/pack/route-734e01b852d6a51a.js +0 -1
  573. package/apps/console/.next/static/chunks/app/api/people/job-brief/route-734e01b852d6a51a.js +0 -1
  574. package/apps/console/.next/static/chunks/app/api/preferences/route-734e01b852d6a51a.js +0 -1
  575. package/apps/console/.next/static/chunks/app/api/procurement/po-brief/route-734e01b852d6a51a.js +0 -1
  576. package/apps/console/.next/static/chunks/app/api/product/prd-draft/route-734e01b852d6a51a.js +0 -1
  577. package/apps/console/.next/static/chunks/app/api/research/prospect-intel/route-734e01b852d6a51a.js +0 -1
  578. package/apps/console/.next/static/chunks/app/api/research/search/route-734e01b852d6a51a.js +0 -1
  579. package/apps/console/.next/static/chunks/app/api/routing/route-734e01b852d6a51a.js +0 -1
  580. package/apps/console/.next/static/chunks/app/api/runs/route-734e01b852d6a51a.js +0 -1
  581. package/apps/console/.next/static/chunks/app/api/sales/pipeline-summary/route-734e01b852d6a51a.js +0 -1
  582. package/apps/console/.next/static/chunks/app/api/sales/prospect-brief/route-734e01b852d6a51a.js +0 -1
  583. package/apps/console/.next/static/chunks/app/api/solutions/build/route-734e01b852d6a51a.js +0 -1
  584. package/apps/console/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-734e01b852d6a51a.js +0 -1
  585. package/apps/console/.next/static/chunks/app/api/solutions/refine/route-734e01b852d6a51a.js +0 -1
  586. package/apps/console/.next/static/chunks/app/api/strategy/market-pulse/route-734e01b852d6a51a.js +0 -1
  587. package/apps/console/.next/static/chunks/app/api/telegram/[customerId]/route-734e01b852d6a51a.js +0 -1
  588. package/apps/console/.next/static/chunks/app/api/templates/regenerate/route-734e01b852d6a51a.js +0 -1
  589. package/apps/console/.next/static/chunks/app/api/templates/route-734e01b852d6a51a.js +0 -1
  590. package/apps/console/.next/static/chunks/app/api/uploads/[id]/route-734e01b852d6a51a.js +0 -1
  591. package/apps/console/.next/static/chunks/app/api/uploads/route-734e01b852d6a51a.js +0 -1
  592. package/apps/console/.next/static/chunks/app/api/usage/route-734e01b852d6a51a.js +0 -1
  593. package/apps/console/.next/static/chunks/app/api/video/video-script/route-734e01b852d6a51a.js +0 -1
  594. package/apps/console/.next/static/chunks/app/api/webhooks/workflow/[id]/route-734e01b852d6a51a.js +0 -1
  595. package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-734e01b852d6a51a.js +0 -1
  596. package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/route-734e01b852d6a51a.js +0 -1
  597. package/apps/console/.next/static/chunks/app/api/workflows/[id]/route-734e01b852d6a51a.js +0 -1
  598. package/apps/console/.next/static/chunks/app/api/workflows/[id]/run/route-734e01b852d6a51a.js +0 -1
  599. package/apps/console/.next/static/chunks/app/api/workflows/route-734e01b852d6a51a.js +0 -1
  600. /package/apps/console/.next/standalone/.next/static/{9Vdc730qexSZxzkAAgkcG → NMX49PyJUVvU7h4ilJIeH}/_ssgManifest.js +0 -0
  601. /package/apps/console/.next/static/{9Vdc730qexSZxzkAAgkcG → NMX49PyJUVvU7h4ilJIeH}/_ssgManifest.js +0 -0
@@ -0,0 +1,175 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { createHash } from "node:crypto";
3
+ import { openDb } from "../db/connection.js";
4
+ import { scanRoot } from "./scanner.js";
5
+ import { classify } from "./classifier.js";
6
+ import { parseText, PARSER_VERSION as TEXT_PARSER_VERSION } from "./parsers/text.js";
7
+ export async function registerRoot(root) {
8
+ const db = openDb(root.clientId);
9
+ db.prepare(`INSERT INTO roots (id, client_id, kind, uri, added_at, excludes_file)
10
+ VALUES (?, ?, ?, ?, ?, ?)
11
+ ON CONFLICT(id) DO UPDATE SET
12
+ kind = excluded.kind,
13
+ uri = excluded.uri,
14
+ excludes_file = excluded.excludes_file`).run(root.id, root.clientId, root.kind, root.uri, root.addedAt, root.excludesFile ?? null);
15
+ }
16
+ export async function scanAndIndex(clientId, entitlement) {
17
+ const t0 = Date.now();
18
+ const db = openDb(clientId);
19
+ const ctx = { db, clientId, entitlement };
20
+ const stats = {
21
+ rootsScanned: 0,
22
+ filesSeen: 0,
23
+ filesIndexed: 0,
24
+ filesSkipped: 0,
25
+ filesUnchanged: 0,
26
+ filesDeleted: 0,
27
+ errors: 0,
28
+ durationMs: 0,
29
+ };
30
+ const roots = db.prepare("SELECT id, client_id, kind, uri, added_at, excludes_file FROM roots WHERE client_id = ?").all(clientId);
31
+ for (const row of roots) {
32
+ stats.rootsScanned++;
33
+ const seenUris = new Set();
34
+ const root = {
35
+ id: row.id,
36
+ clientId: row.client_id,
37
+ kind: row.kind,
38
+ uri: row.uri,
39
+ addedAt: row.added_at,
40
+ excludesFile: row.excludes_file ?? undefined,
41
+ };
42
+ for await (const scanned of scanRoot(root)) {
43
+ stats.filesSeen++;
44
+ seenUris.add(scanned.sourceUri);
45
+ try {
46
+ const outcome = await ingestOne(ctx, scanned);
47
+ if (outcome === "indexed")
48
+ stats.filesIndexed++;
49
+ else if (outcome === "unchanged")
50
+ stats.filesUnchanged++;
51
+ else
52
+ stats.filesSkipped++;
53
+ }
54
+ catch (err) {
55
+ stats.errors++;
56
+ recordParseError(ctx, scanned, err.message);
57
+ }
58
+ }
59
+ stats.filesDeleted += cleanupVanished(ctx, row.id, seenUris);
60
+ }
61
+ updateMeta(db, "last_full_scan_at", Date.now().toString());
62
+ stats.durationMs = Date.now() - t0;
63
+ return stats;
64
+ }
65
+ async function ingestOne(ctx, scanned) {
66
+ const { db, clientId, entitlement } = ctx;
67
+ if (scanned.skippedReason) {
68
+ upsertSkipped(db, clientId, scanned, scanned.skippedReason);
69
+ return "skipped";
70
+ }
71
+ const cls = classify(scanned.sourceUri);
72
+ if (!cls) {
73
+ upsertSkipped(db, clientId, scanned, "unsupported");
74
+ return "skipped";
75
+ }
76
+ if (!entitlement.parsers.includes(cls.parser)) {
77
+ upsertSkipped(db, clientId, scanned, "unsupported");
78
+ return "skipped";
79
+ }
80
+ if (cls.parser !== "text") {
81
+ // Phase 1 ships text parser only. Other parsers land in Phase 5+.
82
+ upsertSkipped(db, clientId, scanned, "unsupported");
83
+ return "skipped";
84
+ }
85
+ const bytes = await readFile(scanned.sourceUri);
86
+ const contentHash = sha256(bytes);
87
+ const existing = db.prepare(`SELECT id, content_hash, parser_version
88
+ FROM documents
89
+ WHERE client_id = ? AND root_id = ? AND source_uri = ?`).get(clientId, scanned.rootId, scanned.sourceUri);
90
+ if (existing &&
91
+ existing.content_hash === contentHash &&
92
+ existing.parser_version === TEXT_PARSER_VERSION) {
93
+ return "unchanged";
94
+ }
95
+ const parsed = await parseText(scanned.sourceUri);
96
+ const tx = db.transaction(() => {
97
+ let docId;
98
+ if (existing) {
99
+ db.prepare(`UPDATE documents
100
+ SET mime = ?, size = ?, mtime = ?, content_hash = ?,
101
+ parser_id = ?, parser_version = ?, last_ingested = ?,
102
+ parse_error = NULL, skipped_reason = NULL
103
+ WHERE id = ?`).run(cls.mime, scanned.size, scanned.mtime, contentHash, parsed.parserId, parsed.parserVersion, Date.now(), existing.id);
104
+ docId = existing.id;
105
+ db.prepare("DELETE FROM chunks WHERE doc_id = ?").run(docId);
106
+ }
107
+ else {
108
+ const info = db.prepare(`INSERT INTO documents
109
+ (client_id, root_id, source_uri, mime, size, mtime,
110
+ content_hash, parser_id, parser_version, last_ingested)
111
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(clientId, scanned.rootId, scanned.sourceUri, cls.mime, scanned.size, scanned.mtime, contentHash, parsed.parserId, parsed.parserVersion, Date.now());
112
+ docId = Number(info.lastInsertRowid);
113
+ }
114
+ if (parsed.chunks.length > 0) {
115
+ const insertChunk = db.prepare("INSERT INTO chunks (doc_id, ord, text) VALUES (?, ?, ?)");
116
+ for (const chunk of parsed.chunks) {
117
+ insertChunk.run(docId, chunk.ord, chunk.text);
118
+ }
119
+ }
120
+ });
121
+ tx();
122
+ return "indexed";
123
+ }
124
+ function upsertSkipped(db, clientId, scanned, reason) {
125
+ const existing = db.prepare(`SELECT id FROM documents WHERE client_id = ? AND root_id = ? AND source_uri = ?`).get(clientId, scanned.rootId, scanned.sourceUri);
126
+ if (existing) {
127
+ db.prepare(`UPDATE documents
128
+ SET mime = NULL, size = ?, mtime = ?, content_hash = NULL,
129
+ parser_id = NULL, parser_version = NULL, last_ingested = ?,
130
+ parse_error = NULL, skipped_reason = ?
131
+ WHERE id = ?`).run(scanned.size, scanned.mtime, Date.now(), reason, existing.id);
132
+ db.prepare("DELETE FROM chunks WHERE doc_id = ?").run(existing.id);
133
+ return;
134
+ }
135
+ db.prepare(`INSERT INTO documents
136
+ (client_id, root_id, source_uri, size, mtime, last_ingested, skipped_reason)
137
+ VALUES (?, ?, ?, ?, ?, ?, ?)`).run(clientId, scanned.rootId, scanned.sourceUri, scanned.size, scanned.mtime, Date.now(), reason);
138
+ }
139
+ function recordParseError(ctx, scanned, message) {
140
+ const { db, clientId } = ctx;
141
+ const existing = db.prepare(`SELECT id FROM documents WHERE client_id = ? AND root_id = ? AND source_uri = ?`).get(clientId, scanned.rootId, scanned.sourceUri);
142
+ if (existing) {
143
+ db.prepare(`UPDATE documents
144
+ SET parse_error = ?, skipped_reason = ?, last_ingested = ?,
145
+ content_hash = NULL, parser_id = NULL, parser_version = NULL
146
+ WHERE id = ?`).run(message.slice(0, 500), "parse-error", Date.now(), existing.id);
147
+ db.prepare("DELETE FROM chunks WHERE doc_id = ?").run(existing.id);
148
+ }
149
+ else {
150
+ db.prepare(`INSERT INTO documents
151
+ (client_id, root_id, source_uri, size, mtime, last_ingested,
152
+ parse_error, skipped_reason)
153
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(clientId, scanned.rootId, scanned.sourceUri, scanned.size, scanned.mtime, Date.now(), message.slice(0, 500), "parse-error");
154
+ }
155
+ }
156
+ function cleanupVanished(ctx, rootId, seen) {
157
+ const { db, clientId } = ctx;
158
+ const known = db.prepare("SELECT id, source_uri FROM documents WHERE client_id = ? AND root_id = ?").all(clientId, rootId);
159
+ let removed = 0;
160
+ const del = db.prepare("DELETE FROM documents WHERE id = ?");
161
+ for (const row of known) {
162
+ if (!seen.has(row.source_uri)) {
163
+ del.run(row.id);
164
+ removed++;
165
+ }
166
+ }
167
+ return removed;
168
+ }
169
+ function updateMeta(db, key, value) {
170
+ db.prepare(`INSERT INTO _meta (key, value) VALUES (?, ?)
171
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(key, value);
172
+ }
173
+ function sha256(bytes) {
174
+ return createHash("sha256").update(bytes).digest("hex");
175
+ }
@@ -0,0 +1,4 @@
1
+ import type { ParsedDoc } from "../../types.js";
2
+ export declare const PARSER_ID = "text";
3
+ export declare const PARSER_VERSION = 1;
4
+ export declare function parseText(path: string): Promise<ParsedDoc>;
@@ -0,0 +1,38 @@
1
+ import { readFile } from "node:fs/promises";
2
+ export const PARSER_ID = "text";
3
+ export const PARSER_VERSION = 1;
4
+ const TARGET_CHARS = 2048;
5
+ const OVERLAP_CHARS = 256;
6
+ export async function parseText(path) {
7
+ const buffer = await readFile(path);
8
+ const text = stripBom(buffer.toString("utf-8"));
9
+ const chunks = chunkText(text);
10
+ return { chunks, parserId: PARSER_ID, parserVersion: PARSER_VERSION };
11
+ }
12
+ function stripBom(s) {
13
+ return s.charCodeAt(0) === 0xfeff ? s.slice(1) : s;
14
+ }
15
+ function chunkText(text) {
16
+ if (text.trim().length === 0)
17
+ return [];
18
+ if (text.length <= TARGET_CHARS) {
19
+ return [{ ord: 0, text: text.trim() }];
20
+ }
21
+ const out = [];
22
+ let start = 0;
23
+ let ord = 0;
24
+ while (start < text.length) {
25
+ const end = Math.min(start + TARGET_CHARS, text.length);
26
+ const slice = text.slice(start, end).trim();
27
+ if (slice.length > 0) {
28
+ out.push({ ord, text: slice });
29
+ ord++;
30
+ }
31
+ if (end >= text.length)
32
+ break;
33
+ start = end - OVERLAP_CHARS;
34
+ if (start < 0)
35
+ start = 0;
36
+ }
37
+ return out;
38
+ }
@@ -0,0 +1,19 @@
1
+ import { relative } from "node:path";
2
+ import type { Root, RootKind } from "../types.js";
3
+ export interface ScannedFile {
4
+ rootId: string;
5
+ rootKind: RootKind;
6
+ sourceUri: string;
7
+ size: number;
8
+ mtime: number;
9
+ skippedReason?: "oversize" | "denied" | "binary";
10
+ }
11
+ export declare function scanRoot(root: Root): AsyncGenerator<ScannedFile>;
12
+ declare function isHardDenied(absPath: string): boolean;
13
+ export declare const _internal: {
14
+ isHardDenied: typeof isHardDenied;
15
+ VAULT_ALLOWED_PREFIXES: string[];
16
+ DEFAULT_SKIP_EXTENSIONS: Set<string>;
17
+ MAX_FILE_SIZE: number;
18
+ };
19
+ export { relative as _rel };
@@ -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 {};
@@ -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
+ }
package/dist/paths.d.ts CHANGED
@@ -9,3 +9,15 @@ export declare const STATE_DIR: string;
9
9
  * cwd-relative) so customer installs don't drift between directories.
10
10
  */
11
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
@@ -11,3 +11,21 @@ export const STATE_DIR = resolve(homedir(), ".leedab");
11
11
  * cwd-relative) so customer installs don't drift between directories.
12
12
  */
13
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
+ }
@@ -14,6 +14,18 @@ channel message
14
14
  → you synthesise one final reply (Remember + Listen for the next signal)
15
15
  ```
16
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
+
17
29
  ## Your routing protocol
18
30
 
19
31
  For every inbound message, decide ONE of three responses:
@@ -14,6 +14,18 @@ channel message
14
14
  -> you synthesise one final reply (Remember + Listen for the next signal)
15
15
  ```
16
16
 
17
+ ## Brain skill (check the vault before you reason from scratch)
18
+
19
+ The operator's notes — Obsidian vaults or any other markdown folder they've connected via Admin > Brain — are indexed locally. Before you delegate or fall back to general knowledge, search the vault for relevant context. Cheap, no LLM call, runs in milliseconds.
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
+ The response shape: `{ hits: [{ sourceUri, rootId, chunkOrd, score, snippet }] }`. Cite the `sourceUri` when you lean on a hit so the operator can trace your reasoning back to the note. If `hits` is empty, fall through to delegation or your own knowledge.
28
+
17
29
  ## Your routing protocol
18
30
 
19
31
  For every inbound message, decide ONE of three responses: