constella 0.1.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 (747) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +53 -0
  3. package/.next/build-manifest.json +20 -0
  4. package/.next/diagnostics/build-diagnostics.json +6 -0
  5. package/.next/diagnostics/framework.json +1 -0
  6. package/.next/export-marker.json +6 -0
  7. package/.next/images-manifest.json +68 -0
  8. package/.next/next-minimal-server.js.nft.json +1 -0
  9. package/.next/next-server.js.nft.json +1 -0
  10. package/.next/package.json +1 -0
  11. package/.next/prerender-manifest.json +36 -0
  12. package/.next/react-loadable-manifest.json +14 -0
  13. package/.next/required-server-files.js +343 -0
  14. package/.next/required-server-files.json +343 -0
  15. package/.next/routes-manifest.json +362 -0
  16. package/.next/server/app/(app)/activity/page.js +2 -0
  17. package/.next/server/app/(app)/activity/page.js.nft.json +1 -0
  18. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -0
  19. package/.next/server/app/(app)/agents/[handle]/page.js +18 -0
  20. package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -0
  21. package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -0
  22. package/.next/server/app/(app)/code/page.js +2 -0
  23. package/.next/server/app/(app)/code/page.js.nft.json +1 -0
  24. package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -0
  25. package/.next/server/app/(app)/config/page.js +2 -0
  26. package/.next/server/app/(app)/config/page.js.nft.json +1 -0
  27. package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -0
  28. package/.next/server/app/(app)/costs/page.js +2 -0
  29. package/.next/server/app/(app)/costs/page.js.nft.json +1 -0
  30. package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -0
  31. package/.next/server/app/(app)/cron/page.js +2 -0
  32. package/.next/server/app/(app)/cron/page.js.nft.json +1 -0
  33. package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -0
  34. package/.next/server/app/(app)/dashboard/page.js +2 -0
  35. package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -0
  36. package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -0
  37. package/.next/server/app/(app)/docs/[id]/page.js +2 -0
  38. package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -0
  39. package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -0
  40. package/.next/server/app/(app)/docs/page.js +2 -0
  41. package/.next/server/app/(app)/docs/page.js.nft.json +1 -0
  42. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -0
  43. package/.next/server/app/(app)/github/page.js +2 -0
  44. package/.next/server/app/(app)/github/page.js.nft.json +1 -0
  45. package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -0
  46. package/.next/server/app/(app)/goals/page.js +2 -0
  47. package/.next/server/app/(app)/goals/page.js.nft.json +1 -0
  48. package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -0
  49. package/.next/server/app/(app)/inbox/page.js +2 -0
  50. package/.next/server/app/(app)/inbox/page.js.nft.json +1 -0
  51. package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -0
  52. package/.next/server/app/(app)/knowledge/page.js +3 -0
  53. package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -0
  54. package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -0
  55. package/.next/server/app/(app)/models/page.js +2 -0
  56. package/.next/server/app/(app)/models/page.js.nft.json +1 -0
  57. package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -0
  58. package/.next/server/app/(app)/notifications/page.js +2 -0
  59. package/.next/server/app/(app)/notifications/page.js.nft.json +1 -0
  60. package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -0
  61. package/.next/server/app/(app)/org/page.js +2 -0
  62. package/.next/server/app/(app)/org/page.js.nft.json +1 -0
  63. package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -0
  64. package/.next/server/app/(app)/organizations/page.js +2 -0
  65. package/.next/server/app/(app)/organizations/page.js.nft.json +1 -0
  66. package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -0
  67. package/.next/server/app/(app)/page.js +3 -0
  68. package/.next/server/app/(app)/page.js.nft.json +1 -0
  69. package/.next/server/app/(app)/page_client-reference-manifest.js +1 -0
  70. package/.next/server/app/(app)/planner/page.js +2 -0
  71. package/.next/server/app/(app)/planner/page.js.nft.json +1 -0
  72. package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -0
  73. package/.next/server/app/(app)/plugins/page.js +2 -0
  74. package/.next/server/app/(app)/plugins/page.js.nft.json +1 -0
  75. package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -0
  76. package/.next/server/app/(app)/pm/page.js +2 -0
  77. package/.next/server/app/(app)/pm/page.js.nft.json +1 -0
  78. package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -0
  79. package/.next/server/app/(app)/prepare-deploy/page.js +19 -0
  80. package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -0
  81. package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -0
  82. package/.next/server/app/(app)/profile/page.js +2 -0
  83. package/.next/server/app/(app)/profile/page.js.nft.json +1 -0
  84. package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -0
  85. package/.next/server/app/(app)/pulse/page.js +2 -0
  86. package/.next/server/app/(app)/pulse/page.js.nft.json +1 -0
  87. package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -0
  88. package/.next/server/app/(app)/reports/[id]/page.js +3 -0
  89. package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -0
  90. package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -0
  91. package/.next/server/app/(app)/reports/page.js +5 -0
  92. package/.next/server/app/(app)/reports/page.js.nft.json +1 -0
  93. package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -0
  94. package/.next/server/app/(app)/routines/page.js +2 -0
  95. package/.next/server/app/(app)/routines/page.js.nft.json +1 -0
  96. package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -0
  97. package/.next/server/app/(app)/search/page.js +2 -0
  98. package/.next/server/app/(app)/search/page.js.nft.json +1 -0
  99. package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -0
  100. package/.next/server/app/(app)/security/page.js +2 -0
  101. package/.next/server/app/(app)/security/page.js.nft.json +1 -0
  102. package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -0
  103. package/.next/server/app/(app)/skills/page.js +18 -0
  104. package/.next/server/app/(app)/skills/page.js.nft.json +1 -0
  105. package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -0
  106. package/.next/server/app/(app)/tasks/page.js +2 -0
  107. package/.next/server/app/(app)/tasks/page.js.nft.json +1 -0
  108. package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -0
  109. package/.next/server/app/(app)/test-dev/page.js +2 -0
  110. package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -0
  111. package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -0
  112. package/.next/server/app/(app)/update/page.js +2 -0
  113. package/.next/server/app/(app)/update/page.js.nft.json +1 -0
  114. package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -0
  115. package/.next/server/app/(auth)/login/page.js +2 -0
  116. package/.next/server/app/(auth)/login/page.js.nft.json +1 -0
  117. package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -0
  118. package/.next/server/app/(auth)/onboarding/page.js +18 -0
  119. package/.next/server/app/(auth)/onboarding/page.js.nft.json +1 -0
  120. package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -0
  121. package/.next/server/app/_global-error/page.js +32 -0
  122. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  123. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
  124. package/.next/server/app/_global-error.html +1 -0
  125. package/.next/server/app/_global-error.meta +16 -0
  126. package/.next/server/app/_global-error.rsc +15 -0
  127. package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
  128. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
  129. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
  130. package/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
  131. package/.next/server/app/_global-error.segments/_index.segment.rsc +6 -0
  132. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  133. package/.next/server/app/_not-found/page.js +2 -0
  134. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  135. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  136. package/.next/server/app/api/auth/[...all]/route.js +1 -0
  137. package/.next/server/app/api/auth/[...all]/route.js.nft.json +1 -0
  138. package/.next/server/app/api/auth/[...all]/route_client-reference-manifest.js +1 -0
  139. package/.next/server/app/api/cron/tick/route.js +52 -0
  140. package/.next/server/app/api/cron/tick/route.js.nft.json +1 -0
  141. package/.next/server/app/api/cron/tick/route_client-reference-manifest.js +1 -0
  142. package/.next/server/app/api/dev-login/route.js +1 -0
  143. package/.next/server/app/api/dev-login/route.js.nft.json +1 -0
  144. package/.next/server/app/api/dev-login/route_client-reference-manifest.js +1 -0
  145. package/.next/server/app/api/locks/acquire/route.js +1 -0
  146. package/.next/server/app/api/locks/acquire/route.js.nft.json +1 -0
  147. package/.next/server/app/api/locks/acquire/route_client-reference-manifest.js +1 -0
  148. package/.next/server/app/api/models/progress/route.js +1 -0
  149. package/.next/server/app/api/models/progress/route.js.nft.json +1 -0
  150. package/.next/server/app/api/models/progress/route_client-reference-manifest.js +1 -0
  151. package/.next/server/app/api/passkey/authenticate/options/route.js +1 -0
  152. package/.next/server/app/api/passkey/authenticate/options/route.js.nft.json +1 -0
  153. package/.next/server/app/api/passkey/authenticate/options/route_client-reference-manifest.js +1 -0
  154. package/.next/server/app/api/passkey/authenticate/verify/route.js +1 -0
  155. package/.next/server/app/api/passkey/authenticate/verify/route.js.nft.json +1 -0
  156. package/.next/server/app/api/passkey/authenticate/verify/route_client-reference-manifest.js +1 -0
  157. package/.next/server/app/api/passkey/register/options/route.js +1 -0
  158. package/.next/server/app/api/passkey/register/options/route.js.nft.json +1 -0
  159. package/.next/server/app/api/passkey/register/options/route_client-reference-manifest.js +1 -0
  160. package/.next/server/app/api/passkey/register/verify/route.js +1 -0
  161. package/.next/server/app/api/passkey/register/verify/route.js.nft.json +1 -0
  162. package/.next/server/app/api/passkey/register/verify/route_client-reference-manifest.js +1 -0
  163. package/.next/server/app/api/stream/route.js +4 -0
  164. package/.next/server/app/api/stream/route.js.nft.json +1 -0
  165. package/.next/server/app/api/stream/route_client-reference-manifest.js +1 -0
  166. package/.next/server/app/api/sync/file/route.js +2 -0
  167. package/.next/server/app/api/sync/file/route.js.nft.json +1 -0
  168. package/.next/server/app/api/sync/file/route_client-reference-manifest.js +1 -0
  169. package/.next/server/app/api/telegram/poll/route.js +15 -0
  170. package/.next/server/app/api/telegram/poll/route.js.nft.json +1 -0
  171. package/.next/server/app/api/telegram/poll/route_client-reference-manifest.js +1 -0
  172. package/.next/server/app/api/upload/route.js +1 -0
  173. package/.next/server/app/api/upload/route.js.nft.json +1 -0
  174. package/.next/server/app/api/upload/route_client-reference-manifest.js +1 -0
  175. package/.next/server/app/api/v1/[[...path]]/route.js +1 -0
  176. package/.next/server/app/api/v1/[[...path]]/route.js.nft.json +1 -0
  177. package/.next/server/app/api/v1/[[...path]]/route_client-reference-manifest.js +1 -0
  178. package/.next/server/app-paths-manifest.json +53 -0
  179. package/.next/server/chunks/1003.js +1 -0
  180. package/.next/server/chunks/127.js +26 -0
  181. package/.next/server/chunks/1388.js +1 -0
  182. package/.next/server/chunks/1408.js +21 -0
  183. package/.next/server/chunks/1572.js +1 -0
  184. package/.next/server/chunks/1591.js +24 -0
  185. package/.next/server/chunks/1619.js +188 -0
  186. package/.next/server/chunks/162.js +1 -0
  187. package/.next/server/chunks/1881.js +1 -0
  188. package/.next/server/chunks/1968.js +1 -0
  189. package/.next/server/chunks/2297.js +348 -0
  190. package/.next/server/chunks/2341.js +1 -0
  191. package/.next/server/chunks/2517.js +1 -0
  192. package/.next/server/chunks/2549.js +1 -0
  193. package/.next/server/chunks/259.js +14 -0
  194. package/.next/server/chunks/2599.js +1 -0
  195. package/.next/server/chunks/260.js +1 -0
  196. package/.next/server/chunks/2867.js +147 -0
  197. package/.next/server/chunks/3018.js +1 -0
  198. package/.next/server/chunks/3050.js +18 -0
  199. package/.next/server/chunks/3085.js +12 -0
  200. package/.next/server/chunks/3131.js +1 -0
  201. package/.next/server/chunks/3242.js +1 -0
  202. package/.next/server/chunks/3266.js +15 -0
  203. package/.next/server/chunks/3524.js +1 -0
  204. package/.next/server/chunks/3527.js +479 -0
  205. package/.next/server/chunks/3533.js +869 -0
  206. package/.next/server/chunks/3550.js +1 -0
  207. package/.next/server/chunks/3609.js +2 -0
  208. package/.next/server/chunks/3667.js +462 -0
  209. package/.next/server/chunks/3760.js +4 -0
  210. package/.next/server/chunks/4679.js +1 -0
  211. package/.next/server/chunks/4804.js +1 -0
  212. package/.next/server/chunks/4832.js +2 -0
  213. package/.next/server/chunks/4853.js +1 -0
  214. package/.next/server/chunks/4979.js +67 -0
  215. package/.next/server/chunks/5060.js +1 -0
  216. package/.next/server/chunks/5278.js +1 -0
  217. package/.next/server/chunks/5614.js +1 -0
  218. package/.next/server/chunks/5818.js +1 -0
  219. package/.next/server/chunks/6479.js +1 -0
  220. package/.next/server/chunks/6658.js +1 -0
  221. package/.next/server/chunks/6706.js +1 -0
  222. package/.next/server/chunks/6719.js +1 -0
  223. package/.next/server/chunks/678.js +1 -0
  224. package/.next/server/chunks/683.js +1 -0
  225. package/.next/server/chunks/6862.js +1 -0
  226. package/.next/server/chunks/6882.js +1 -0
  227. package/.next/server/chunks/7037.js +1 -0
  228. package/.next/server/chunks/7107.js +741 -0
  229. package/.next/server/chunks/73.js +17 -0
  230. package/.next/server/chunks/7327.js +1 -0
  231. package/.next/server/chunks/7514.js +1 -0
  232. package/.next/server/chunks/7622.js +1 -0
  233. package/.next/server/chunks/7778.js +1 -0
  234. package/.next/server/chunks/7912.js +1 -0
  235. package/.next/server/chunks/7949.js +1 -0
  236. package/.next/server/chunks/7971.js +1 -0
  237. package/.next/server/chunks/7989.js +1 -0
  238. package/.next/server/chunks/842.js +22 -0
  239. package/.next/server/chunks/8762.js +15 -0
  240. package/.next/server/chunks/8823.js +77 -0
  241. package/.next/server/chunks/9146.js +4 -0
  242. package/.next/server/chunks/9676.js +1 -0
  243. package/.next/server/chunks/9783.js +22 -0
  244. package/.next/server/chunks/9969.js +3 -0
  245. package/.next/server/functions-config-manifest.json +18 -0
  246. package/.next/server/instrumentation.js +1 -0
  247. package/.next/server/instrumentation.js.nft.json +1 -0
  248. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  249. package/.next/server/middleware-build-manifest.js +1 -0
  250. package/.next/server/middleware-manifest.json +6 -0
  251. package/.next/server/middleware-react-loadable-manifest.js +1 -0
  252. package/.next/server/middleware.js +18 -0
  253. package/.next/server/middleware.js.nft.json +1 -0
  254. package/.next/server/next-font-manifest.js +1 -0
  255. package/.next/server/next-font-manifest.json +1 -0
  256. package/.next/server/pages/500.html +1 -0
  257. package/.next/server/pages-manifest.json +3 -0
  258. package/.next/server/prefetch-hints.json +1 -0
  259. package/.next/server/server-reference-manifest.js +1 -0
  260. package/.next/server/server-reference-manifest.json +1 -0
  261. package/.next/server/webpack-runtime.js +1 -0
  262. package/.next/static/chunks/1858-339516f78a4b00da.js +1 -0
  263. package/.next/static/chunks/2320-fc8b39380e69d465.js +2 -0
  264. package/.next/static/chunks/23550918-ff694f70f4b0648c.js +1 -0
  265. package/.next/static/chunks/3219-ebb3c23be38c838d.js +1 -0
  266. package/.next/static/chunks/4263-adecb5b466380b6e.js +1 -0
  267. package/.next/static/chunks/5479-0cceab68cd0ca9c7.js +1 -0
  268. package/.next/static/chunks/5701-665b927b06158b76.js +1 -0
  269. package/.next/static/chunks/5920.6451a68b63918988.js +1 -0
  270. package/.next/static/chunks/6575-5c9139720bb0f5bf.js +4 -0
  271. package/.next/static/chunks/6834-4759af1ce7d95fb6.js +32 -0
  272. package/.next/static/chunks/7509.721cd47a931c5518.js +1 -0
  273. package/.next/static/chunks/8264-1ca011989ee2b231.js +1 -0
  274. package/.next/static/chunks/9219-4a39a98b5502d9d1.js +1 -0
  275. package/.next/static/chunks/9690-53d5222618cbeddb.js +1 -0
  276. package/.next/static/chunks/app/(app)/activity/page-3973534281ecea81.js +1 -0
  277. package/.next/static/chunks/app/(app)/agents/[handle]/page-83662a175c098282.js +1 -0
  278. package/.next/static/chunks/app/(app)/code/page-33979545192cd137.js +1 -0
  279. package/.next/static/chunks/app/(app)/config/page-9933aed1ca8a85c1.js +1 -0
  280. package/.next/static/chunks/app/(app)/costs/page-131c4dc580efcc19.js +1 -0
  281. package/.next/static/chunks/app/(app)/cron/page-53ea1aff998a87ca.js +1 -0
  282. package/.next/static/chunks/app/(app)/dashboard/page-deed83aaa9d0d447.js +1 -0
  283. package/.next/static/chunks/app/(app)/docs/[id]/page-38c993d73c0eab4f.js +1 -0
  284. package/.next/static/chunks/app/(app)/docs/page-bf463b55d0554e86.js +1 -0
  285. package/.next/static/chunks/app/(app)/error-988cd28480809861.js +1 -0
  286. package/.next/static/chunks/app/(app)/github/page-62678b4e82dfecb6.js +1 -0
  287. package/.next/static/chunks/app/(app)/goals/page-4adb426fe1c96106.js +1 -0
  288. package/.next/static/chunks/app/(app)/inbox/page-e347dc55ab467310.js +1 -0
  289. package/.next/static/chunks/app/(app)/knowledge/page-65393a045b4349be.js +1 -0
  290. package/.next/static/chunks/app/(app)/layout-7f65675705b011d8.js +1 -0
  291. package/.next/static/chunks/app/(app)/models/page-e01f1dd7e49a2951.js +1 -0
  292. package/.next/static/chunks/app/(app)/notifications/page-56548ac87aef00da.js +1 -0
  293. package/.next/static/chunks/app/(app)/org/page-699e6a6dc0db7d81.js +1 -0
  294. package/.next/static/chunks/app/(app)/organizations/page-36051a380a7e8eb7.js +1 -0
  295. package/.next/static/chunks/app/(app)/page-7d1011a566f81520.js +1 -0
  296. package/.next/static/chunks/app/(app)/planner/page-dab7ced94083373a.js +1 -0
  297. package/.next/static/chunks/app/(app)/plugins/page-5b5a1f53389be42e.js +1 -0
  298. package/.next/static/chunks/app/(app)/pm/page-0de5c08c0b227bb0.js +1 -0
  299. package/.next/static/chunks/app/(app)/prepare-deploy/page-e426038552df8d41.js +1 -0
  300. package/.next/static/chunks/app/(app)/profile/page-608dfcaf8aae0a69.js +1 -0
  301. package/.next/static/chunks/app/(app)/pulse/page-309ccaca91de1faa.js +1 -0
  302. package/.next/static/chunks/app/(app)/reports/[id]/page-53ea1aff998a87ca.js +1 -0
  303. package/.next/static/chunks/app/(app)/reports/page-68cdc6dcfa472d86.js +1 -0
  304. package/.next/static/chunks/app/(app)/routines/page-bcc55550b197a9fa.js +1 -0
  305. package/.next/static/chunks/app/(app)/search/page-5c5f67558d0dbf0d.js +1 -0
  306. package/.next/static/chunks/app/(app)/security/page-a7d41e36aa366b45.js +1 -0
  307. package/.next/static/chunks/app/(app)/skills/page-c5b21e89593b8336.js +1 -0
  308. package/.next/static/chunks/app/(app)/tasks/page-08ae079e3e54d2ce.js +1 -0
  309. package/.next/static/chunks/app/(app)/test-dev/page-633f82dfd9c3ce23.js +1 -0
  310. package/.next/static/chunks/app/(app)/update/page-4be019054351bfac.js +1 -0
  311. package/.next/static/chunks/app/(auth)/login/page-6e85d3377062acae.js +1 -0
  312. package/.next/static/chunks/app/(auth)/onboarding/page-ebb10c175abf3b85.js +1 -0
  313. package/.next/static/chunks/app/_global-error/page-23fe50a6bf589c97.js +1 -0
  314. package/.next/static/chunks/app/_not-found/page-dc38b02aebeab535.js +1 -0
  315. package/.next/static/chunks/app/api/auth/[...all]/route-23fe50a6bf589c97.js +1 -0
  316. package/.next/static/chunks/app/api/cron/tick/route-23fe50a6bf589c97.js +1 -0
  317. package/.next/static/chunks/app/api/dev-login/route-23fe50a6bf589c97.js +1 -0
  318. package/.next/static/chunks/app/api/locks/acquire/route-23fe50a6bf589c97.js +1 -0
  319. package/.next/static/chunks/app/api/models/progress/route-23fe50a6bf589c97.js +1 -0
  320. package/.next/static/chunks/app/api/passkey/authenticate/options/route-23fe50a6bf589c97.js +1 -0
  321. package/.next/static/chunks/app/api/passkey/authenticate/verify/route-23fe50a6bf589c97.js +1 -0
  322. package/.next/static/chunks/app/api/passkey/register/options/route-23fe50a6bf589c97.js +1 -0
  323. package/.next/static/chunks/app/api/passkey/register/verify/route-23fe50a6bf589c97.js +1 -0
  324. package/.next/static/chunks/app/api/stream/route-23fe50a6bf589c97.js +1 -0
  325. package/.next/static/chunks/app/api/sync/file/route-23fe50a6bf589c97.js +1 -0
  326. package/.next/static/chunks/app/api/telegram/poll/route-23fe50a6bf589c97.js +1 -0
  327. package/.next/static/chunks/app/api/upload/route-23fe50a6bf589c97.js +1 -0
  328. package/.next/static/chunks/app/api/v1/[[...path]]/route-23fe50a6bf589c97.js +1 -0
  329. package/.next/static/chunks/app/error-09899a13c38b6e89.js +1 -0
  330. package/.next/static/chunks/app/global-error-b8050d4d886f448c.js +1 -0
  331. package/.next/static/chunks/app/layout-ab9deed1e7e2e9df.js +1 -0
  332. package/.next/static/chunks/framework-4b2c6b6043dd203f.js +1 -0
  333. package/.next/static/chunks/main-722e16032e7764d1.js +5 -0
  334. package/.next/static/chunks/main-app-761880af2b6f1962.js +1 -0
  335. package/.next/static/chunks/next/dist/client/components/builtin/app-error-23fe50a6bf589c97.js +1 -0
  336. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-23fe50a6bf589c97.js +1 -0
  337. package/.next/static/chunks/next/dist/client/components/builtin/not-found-23fe50a6bf589c97.js +1 -0
  338. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-23fe50a6bf589c97.js +1 -0
  339. package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  340. package/.next/static/chunks/webpack-222e3894b78c67db.js +1 -0
  341. package/.next/static/css/0a9b5805594444e3.css +1 -0
  342. package/.next/static/yztMvBwyrWWkSqP6jfXoa/_buildManifest.js +1 -0
  343. package/.next/static/yztMvBwyrWWkSqP6jfXoa/_ssgManifest.js +1 -0
  344. package/.next/trace-build +1 -0
  345. package/.next/types/app/(app)/activity/page.ts +87 -0
  346. package/.next/types/app/(app)/agents/[handle]/page.ts +87 -0
  347. package/.next/types/app/(app)/code/page.ts +87 -0
  348. package/.next/types/app/(app)/config/page.ts +87 -0
  349. package/.next/types/app/(app)/costs/page.ts +87 -0
  350. package/.next/types/app/(app)/cron/page.ts +87 -0
  351. package/.next/types/app/(app)/dashboard/page.ts +87 -0
  352. package/.next/types/app/(app)/docs/[id]/page.ts +87 -0
  353. package/.next/types/app/(app)/docs/page.ts +87 -0
  354. package/.next/types/app/(app)/github/page.ts +87 -0
  355. package/.next/types/app/(app)/goals/page.ts +87 -0
  356. package/.next/types/app/(app)/inbox/page.ts +87 -0
  357. package/.next/types/app/(app)/knowledge/page.ts +87 -0
  358. package/.next/types/app/(app)/models/page.ts +87 -0
  359. package/.next/types/app/(app)/notifications/page.ts +87 -0
  360. package/.next/types/app/(app)/org/page.ts +87 -0
  361. package/.next/types/app/(app)/organizations/page.ts +87 -0
  362. package/.next/types/app/(app)/page.ts +87 -0
  363. package/.next/types/app/(app)/planner/page.ts +87 -0
  364. package/.next/types/app/(app)/plugins/page.ts +87 -0
  365. package/.next/types/app/(app)/pm/page.ts +87 -0
  366. package/.next/types/app/(app)/prepare-deploy/page.ts +87 -0
  367. package/.next/types/app/(app)/profile/page.ts +87 -0
  368. package/.next/types/app/(app)/pulse/page.ts +87 -0
  369. package/.next/types/app/(app)/reports/[id]/page.ts +87 -0
  370. package/.next/types/app/(app)/reports/page.ts +87 -0
  371. package/.next/types/app/(app)/routines/page.ts +87 -0
  372. package/.next/types/app/(app)/search/page.ts +87 -0
  373. package/.next/types/app/(app)/security/page.ts +87 -0
  374. package/.next/types/app/(app)/skills/page.ts +87 -0
  375. package/.next/types/app/(app)/tasks/page.ts +87 -0
  376. package/.next/types/app/(app)/test-dev/page.ts +87 -0
  377. package/.next/types/app/(app)/update/page.ts +87 -0
  378. package/.next/types/app/(auth)/login/page.ts +87 -0
  379. package/.next/types/app/(auth)/onboarding/page.ts +87 -0
  380. package/.next/types/app/api/auth/[...all]/route.ts +351 -0
  381. package/.next/types/app/api/cron/tick/route.ts +351 -0
  382. package/.next/types/app/api/dev-login/route.ts +351 -0
  383. package/.next/types/app/api/locks/acquire/route.ts +351 -0
  384. package/.next/types/app/api/models/progress/route.ts +351 -0
  385. package/.next/types/app/api/passkey/authenticate/options/route.ts +351 -0
  386. package/.next/types/app/api/passkey/authenticate/verify/route.ts +351 -0
  387. package/.next/types/app/api/passkey/register/options/route.ts +351 -0
  388. package/.next/types/app/api/passkey/register/verify/route.ts +351 -0
  389. package/.next/types/app/api/stream/route.ts +351 -0
  390. package/.next/types/app/api/sync/file/route.ts +351 -0
  391. package/.next/types/app/api/telegram/poll/route.ts +351 -0
  392. package/.next/types/app/api/upload/route.ts +351 -0
  393. package/.next/types/app/api/v1/[[...path]]/route.ts +351 -0
  394. package/.next/types/cache-life.d.ts +145 -0
  395. package/.next/types/link.d.ts +210 -0
  396. package/.next/types/package.json +1 -0
  397. package/.next/types/routes.d.ts +120 -0
  398. package/.next/types/validator.ts +511 -0
  399. package/CHANGELOG.md +312 -0
  400. package/LICENSE +21 -0
  401. package/README.md +382 -0
  402. package/README.pt-BR.md +391 -0
  403. package/bin/constella.mjs +329 -0
  404. package/bin/guard-hook.mjs +44 -0
  405. package/bin/lock-hook.mjs +49 -0
  406. package/bin/worker.mjs +142 -0
  407. package/docs/assets/arch-orbit.svg +56 -0
  408. package/docs/assets/blackhole.svg +37 -0
  409. package/docs/assets/divider-orbit.svg +23 -0
  410. package/docs/assets/hero-constella.svg +72 -0
  411. package/docs/en/AGENTS.md +279 -0
  412. package/docs/en/AI_ARCHITECTURE.md +373 -0
  413. package/docs/en/ARCHITECTURE.md +334 -0
  414. package/docs/en/AUTH_MODE.md +247 -0
  415. package/docs/en/CHAT_COMMANDS.md +305 -0
  416. package/docs/en/CONFIGURATION.md +340 -0
  417. package/docs/en/DEPLOY.md +331 -0
  418. package/docs/en/DM.md +297 -0
  419. package/docs/en/FAQ.md +258 -0
  420. package/docs/en/GITHUB.md +341 -0
  421. package/docs/en/GOALS_SPECS_ISSUES.md +303 -0
  422. package/docs/en/INBOX.md +340 -0
  423. package/docs/en/INSTALLATION.md +329 -0
  424. package/docs/en/KB_AGENT.md +305 -0
  425. package/docs/en/KB_RAG.md +356 -0
  426. package/docs/en/MCP.md +313 -0
  427. package/docs/en/MEMORY_RAG.md +289 -0
  428. package/docs/en/MODELS.md +341 -0
  429. package/docs/en/ONBOARDING.md +327 -0
  430. package/docs/en/PLUGINS.md +290 -0
  431. package/docs/en/PORTABLE_MODE.md +387 -0
  432. package/docs/en/PO_AGENT.md +379 -0
  433. package/docs/en/PREPARE_DEPLOY.md +308 -0
  434. package/docs/en/PROJECT_STACKS.md +258 -0
  435. package/docs/en/PUBLIC_API.md +315 -0
  436. package/docs/en/PUBLISHING.md +343 -0
  437. package/docs/en/README.md +95 -0
  438. package/docs/en/SECURITY.md +280 -0
  439. package/docs/en/SKILLS.md +349 -0
  440. package/docs/en/START_MODE.md +340 -0
  441. package/docs/en/SYNCED_BLOCKS.md +320 -0
  442. package/docs/en/TEAM_ROOM.md +285 -0
  443. package/docs/en/TELEGRAM.md +294 -0
  444. package/docs/en/TEST_DEV.md +321 -0
  445. package/docs/en/TROUBLESHOOTING.md +294 -0
  446. package/docs/en/UPDATE.md +301 -0
  447. package/docs/en/VPS_MODE.md +334 -0
  448. package/docs/en/WORKFLOW.md +321 -0
  449. package/docs/pt/AGENTS.md +279 -0
  450. package/docs/pt/AI_ARCHITECTURE.md +373 -0
  451. package/docs/pt/ARCHITECTURE.md +334 -0
  452. package/docs/pt/AUTH_MODE.md +247 -0
  453. package/docs/pt/CHAT_COMMANDS.md +307 -0
  454. package/docs/pt/CONFIGURATION.md +340 -0
  455. package/docs/pt/DEPLOY.md +331 -0
  456. package/docs/pt/DM.md +297 -0
  457. package/docs/pt/FAQ.md +258 -0
  458. package/docs/pt/GITHUB.md +341 -0
  459. package/docs/pt/GOALS_SPECS_ISSUES.md +303 -0
  460. package/docs/pt/INBOX.md +340 -0
  461. package/docs/pt/INSTALLATION.md +329 -0
  462. package/docs/pt/KB_AGENT.md +305 -0
  463. package/docs/pt/KB_RAG.md +356 -0
  464. package/docs/pt/MCP.md +313 -0
  465. package/docs/pt/MEMORY_RAG.md +289 -0
  466. package/docs/pt/MODELS.md +341 -0
  467. package/docs/pt/ONBOARDING.md +327 -0
  468. package/docs/pt/PLUGINS.md +290 -0
  469. package/docs/pt/PORTABLE_MODE.md +387 -0
  470. package/docs/pt/PO_AGENT.md +379 -0
  471. package/docs/pt/PREPARE_DEPLOY.md +308 -0
  472. package/docs/pt/PROJECT_STACKS.md +258 -0
  473. package/docs/pt/PUBLIC_API.md +315 -0
  474. package/docs/pt/PUBLISHING.md +343 -0
  475. package/docs/pt/README.md +95 -0
  476. package/docs/pt/SECURITY.md +280 -0
  477. package/docs/pt/SKILLS.md +349 -0
  478. package/docs/pt/START_MODE.md +340 -0
  479. package/docs/pt/SYNCED_BLOCKS.md +320 -0
  480. package/docs/pt/TEAM_ROOM.md +285 -0
  481. package/docs/pt/TELEGRAM.md +294 -0
  482. package/docs/pt/TEST_DEV.md +321 -0
  483. package/docs/pt/TROUBLESHOOTING.md +294 -0
  484. package/docs/pt/UPDATE.md +301 -0
  485. package/docs/pt/VPS_MODE.md +334 -0
  486. package/docs/pt/WORKFLOW.md +321 -0
  487. package/drizzle/0000_regular_nightshade.sql +644 -0
  488. package/drizzle/0001_mixed_zombie.sql +106 -0
  489. package/drizzle/meta/0000_snapshot.json +4650 -0
  490. package/drizzle/meta/0001_snapshot.json +5418 -0
  491. package/drizzle/meta/_journal.json +20 -0
  492. package/drizzle.config.mjs +16 -0
  493. package/next.config.mjs +18 -0
  494. package/package.json +130 -0
  495. package/scripts/clean-repo.mjs +20 -0
  496. package/scripts/dev-all.mjs +46 -0
  497. package/scripts/i18n-parity.mjs +57 -0
  498. package/scripts/mcp-server.mjs +100 -0
  499. package/scripts/postbuild.mjs +11 -0
  500. package/scripts/publish-public.mjs +116 -0
  501. package/scripts/start-all.mjs +45 -0
  502. package/scripts/trim-next.mjs +23 -0
  503. package/scripts/vps-install.sh +39 -0
  504. package/skills/CONTRIBUTING.md +122 -0
  505. package/skills/COVERAGE.md +129 -0
  506. package/skills/INDEX.json +3443 -0
  507. package/skills/README.md +57 -0
  508. package/skills/design/animation-motion/SKILL.md +60 -0
  509. package/skills/design/color-and-typography/SKILL.md +60 -0
  510. package/skills/design/css-techniques/SKILL.md +58 -0
  511. package/skills/design/design-systems/SKILL.md +60 -0
  512. package/skills/design/gradients/SKILL.md +59 -0
  513. package/skills/design/graphic-design-basics/SKILL.md +55 -0
  514. package/skills/design/microinteractions/SKILL.md +58 -0
  515. package/skills/design/responsive-layout/SKILL.md +59 -0
  516. package/skills/design/ui-ux-principles/SKILL.md +58 -0
  517. package/skills/engineering/architecture/api-design-rest-graphql/SKILL.md +67 -0
  518. package/skills/engineering/architecture/caching-strategies/SKILL.md +59 -0
  519. package/skills/engineering/architecture/data-modeling/SKILL.md +64 -0
  520. package/skills/engineering/architecture/message-queues-async/SKILL.md +58 -0
  521. package/skills/engineering/architecture/scalability-reliability/SKILL.md +62 -0
  522. package/skills/engineering/architecture/software-architecture-patterns/SKILL.md +56 -0
  523. package/skills/engineering/architecture/system-design-fundamentals/SKILL.md +56 -0
  524. package/skills/engineering/backend/auth-and-authorization/SKILL.md +62 -0
  525. package/skills/engineering/backend/backend-fundamentals/SKILL.md +65 -0
  526. package/skills/engineering/backend/observability-logging/SKILL.md +60 -0
  527. package/skills/engineering/frontend/accessibility-wcag/SKILL.md +57 -0
  528. package/skills/engineering/frontend/frontend-architecture/SKILL.md +65 -0
  529. package/skills/engineering/frontend/rendering-strategies-ssr-csr/SKILL.md +60 -0
  530. package/skills/engineering/frontend/state-management/SKILL.md +69 -0
  531. package/skills/engineering/performance/backend-performance/SKILL.md +69 -0
  532. package/skills/engineering/performance/database-query-optimization/SKILL.md +64 -0
  533. package/skills/engineering/performance/profiling-and-benchmarking/SKILL.md +60 -0
  534. package/skills/engineering/performance/web-performance-core-vitals/SKILL.md +72 -0
  535. package/skills/engineering/practices/clean-code/SKILL.md +61 -0
  536. package/skills/engineering/practices/code-optimization/SKILL.md +60 -0
  537. package/skills/engineering/practices/code-review-practices/SKILL.md +58 -0
  538. package/skills/engineering/practices/git-workflow/SKILL.md +62 -0
  539. package/skills/engineering/practices/refactoring/SKILL.md +58 -0
  540. package/skills/engineering/security/appsec-fundamentals/SKILL.md +70 -0
  541. package/skills/engineering/security/dependency-supply-chain/SKILL.md +77 -0
  542. package/skills/engineering/security/owasp-asvs/SKILL.md +54 -0
  543. package/skills/engineering/security/owasp-top-10/SKILL.md +63 -0
  544. package/skills/engineering/security/secrets-management/SKILL.md +58 -0
  545. package/skills/engineering/security/secure-auth-sessions/SKILL.md +56 -0
  546. package/skills/engineering/testing/tdd-and-coverage/SKILL.md +62 -0
  547. package/skills/engineering/testing/testing-strategy-pyramid/SKILL.md +56 -0
  548. package/skills/engineering/testing/unit-integration-e2e/SKILL.md +75 -0
  549. package/skills/languages/c/SKILL.md +74 -0
  550. package/skills/languages/clojure/SKILL.md +73 -0
  551. package/skills/languages/cpp/SKILL.md +75 -0
  552. package/skills/languages/csharp/SKILL.md +75 -0
  553. package/skills/languages/dart/SKILL.md +82 -0
  554. package/skills/languages/elixir/SKILL.md +74 -0
  555. package/skills/languages/erlang/SKILL.md +76 -0
  556. package/skills/languages/go/SKILL.md +83 -0
  557. package/skills/languages/haskell/SKILL.md +70 -0
  558. package/skills/languages/java/SKILL.md +71 -0
  559. package/skills/languages/javascript/SKILL.md +62 -0
  560. package/skills/languages/kotlin/SKILL.md +68 -0
  561. package/skills/languages/lua/SKILL.md +79 -0
  562. package/skills/languages/objectivec/SKILL.md +83 -0
  563. package/skills/languages/php/SKILL.md +74 -0
  564. package/skills/languages/python/SKILL.md +68 -0
  565. package/skills/languages/r/SKILL.md +70 -0
  566. package/skills/languages/ruby/SKILL.md +67 -0
  567. package/skills/languages/rust/SKILL.md +72 -0
  568. package/skills/languages/scala/SKILL.md +73 -0
  569. package/skills/languages/swift/SKILL.md +73 -0
  570. package/skills/languages/typescript/SKILL.md +69 -0
  571. package/skills/meta/authoring-agent-skills/SKILL.md +73 -0
  572. package/skills/meta/progressive-disclosure/SKILL.md +65 -0
  573. package/skills/meta/skill-frontmatter-spec/SKILL.md +65 -0
  574. package/skills/process/adr-technical-decisions/SKILL.md +59 -0
  575. package/skills/process/app-planning/SKILL.md +63 -0
  576. package/skills/process/architecture-before-code/SKILL.md +52 -0
  577. package/skills/process/breaking-work-into-sprints/SKILL.md +53 -0
  578. package/skills/process/idea-to-product/SKILL.md +50 -0
  579. package/skills/process/mocks-and-screen-flows/SKILL.md +52 -0
  580. package/skills/process/prioritization-moscow-rice/SKILL.md +64 -0
  581. package/skills/process/problem-framing/SKILL.md +51 -0
  582. package/skills/process/product-discovery/SKILL.md +53 -0
  583. package/skills/process/readme-generation/SKILL.md +90 -0
  584. package/skills/process/requirements-to-specs/SKILL.md +53 -0
  585. package/skills/process/research-official-docs/SKILL.md +58 -0
  586. package/skills/process/review-code-perf-security/SKILL.md +65 -0
  587. package/skills/process/security-by-design/SKILL.md +68 -0
  588. package/skills/process/specs-to-issues/SKILL.md +53 -0
  589. package/skills/process/testing-before-done/SKILL.md +61 -0
  590. package/skills/process/validating-ux-navigation/SKILL.md +63 -0
  591. package/skills/references/ai-attachments-ui/SKILL.md +66 -0
  592. package/skills/references/ai-in-browser-webllm/SKILL.md +74 -0
  593. package/skills/references/ai-tool-ui-patterns/SKILL.md +63 -0
  594. package/skills/references/component-patterns-gallery/SKILL.md +62 -0
  595. package/skills/references/gradient-resources/SKILL.md +66 -0
  596. package/skills/references/react-component-libraries/SKILL.md +61 -0
  597. package/skills/references/saas-landing-patterns/SKILL.md +67 -0
  598. package/skills/references/shadcn-tailwind-theming/SKILL.md +74 -0
  599. package/skills/references/vercel-ai-sdk-elements/SKILL.md +66 -0
  600. package/skills/references/web-animation-codrops/SKILL.md +68 -0
  601. package/skills/stacks/aiml/jupyter/SKILL.md +68 -0
  602. package/skills/stacks/aiml/keras/SKILL.md +77 -0
  603. package/skills/stacks/aiml/numpy/SKILL.md +69 -0
  604. package/skills/stacks/aiml/pandas/SKILL.md +72 -0
  605. package/skills/stacks/aiml/pytorch/SKILL.md +77 -0
  606. package/skills/stacks/aiml/scikit-learn/SKILL.md +74 -0
  607. package/skills/stacks/aiml/tensorflow/SKILL.md +79 -0
  608. package/skills/stacks/auth/auth0/SKILL.md +63 -0
  609. package/skills/stacks/auth/authjs/SKILL.md +69 -0
  610. package/skills/stacks/auth/clerk/SKILL.md +72 -0
  611. package/skills/stacks/auth/keycloak/SKILL.md +63 -0
  612. package/skills/stacks/auth/lucia/SKILL.md +56 -0
  613. package/skills/stacks/auth/passport/SKILL.md +70 -0
  614. package/skills/stacks/auth/supabase-auth/SKILL.md +66 -0
  615. package/skills/stacks/baas/amplify/SKILL.md +71 -0
  616. package/skills/stacks/baas/appwrite/SKILL.md +79 -0
  617. package/skills/stacks/baas/firebase/SKILL.md +73 -0
  618. package/skills/stacks/baas/heroku/SKILL.md +71 -0
  619. package/skills/stacks/backend/actix/SKILL.md +77 -0
  620. package/skills/stacks/backend/adonisjs/SKILL.md +65 -0
  621. package/skills/stacks/backend/aspnet-core/SKILL.md +75 -0
  622. package/skills/stacks/backend/codeigniter/SKILL.md +76 -0
  623. package/skills/stacks/backend/django/SKILL.md +62 -0
  624. package/skills/stacks/backend/express/SKILL.md +65 -0
  625. package/skills/stacks/backend/fastapi/SKILL.md +64 -0
  626. package/skills/stacks/backend/fastify/SKILL.md +64 -0
  627. package/skills/stacks/backend/fiber/SKILL.md +68 -0
  628. package/skills/stacks/backend/flask/SKILL.md +71 -0
  629. package/skills/stacks/backend/gin/SKILL.md +68 -0
  630. package/skills/stacks/backend/graphql/SKILL.md +70 -0
  631. package/skills/stacks/backend/hono/SKILL.md +64 -0
  632. package/skills/stacks/backend/koa/SKILL.md +63 -0
  633. package/skills/stacks/backend/laravel/SKILL.md +73 -0
  634. package/skills/stacks/backend/nestjs/SKILL.md +70 -0
  635. package/skills/stacks/backend/nginx/SKILL.md +77 -0
  636. package/skills/stacks/backend/phoenix/SKILL.md +68 -0
  637. package/skills/stacks/backend/rails/SKILL.md +67 -0
  638. package/skills/stacks/backend/spring/SKILL.md +70 -0
  639. package/skills/stacks/backend/spring-boot/SKILL.md +70 -0
  640. package/skills/stacks/backend/symfony/SKILL.md +77 -0
  641. package/skills/stacks/container/containerd/SKILL.md +75 -0
  642. package/skills/stacks/container/docker/SKILL.md +90 -0
  643. package/skills/stacks/container/podman/SKILL.md +93 -0
  644. package/skills/stacks/database/cassandra/SKILL.md +74 -0
  645. package/skills/stacks/database/cockroachdb/SKILL.md +69 -0
  646. package/skills/stacks/database/dynamodb/SKILL.md +62 -0
  647. package/skills/stacks/database/mariadb/SKILL.md +71 -0
  648. package/skills/stacks/database/mongodb/SKILL.md +71 -0
  649. package/skills/stacks/database/mysql/SKILL.md +72 -0
  650. package/skills/stacks/database/neon/SKILL.md +68 -0
  651. package/skills/stacks/database/planetscale/SKILL.md +70 -0
  652. package/skills/stacks/database/postgresql/SKILL.md +81 -0
  653. package/skills/stacks/database/redis/SKILL.md +78 -0
  654. package/skills/stacks/database/sqlite/SKILL.md +70 -0
  655. package/skills/stacks/database/supabase/SKILL.md +79 -0
  656. package/skills/stacks/dataviz/chart-js/SKILL.md +72 -0
  657. package/skills/stacks/dataviz/d3/SKILL.md +77 -0
  658. package/skills/stacks/dataviz/grafana/SKILL.md +69 -0
  659. package/skills/stacks/dataviz/plotly/SKILL.md +71 -0
  660. package/skills/stacks/frontend/alpine/SKILL.md +75 -0
  661. package/skills/stacks/frontend/angular/SKILL.md +75 -0
  662. package/skills/stacks/frontend/backbone/SKILL.md +82 -0
  663. package/skills/stacks/frontend/ember/SKILL.md +85 -0
  664. package/skills/stacks/frontend/htmx/SKILL.md +73 -0
  665. package/skills/stacks/frontend/lit/SKILL.md +76 -0
  666. package/skills/stacks/frontend/preact/SKILL.md +74 -0
  667. package/skills/stacks/frontend/qwik/SKILL.md +65 -0
  668. package/skills/stacks/frontend/react/SKILL.md +77 -0
  669. package/skills/stacks/frontend/solidjs/SKILL.md +75 -0
  670. package/skills/stacks/frontend/svelte/SKILL.md +70 -0
  671. package/skills/stacks/frontend/vue/SKILL.md +69 -0
  672. package/skills/stacks/infra/ansible/SKILL.md +76 -0
  673. package/skills/stacks/infra/aws/SKILL.md +66 -0
  674. package/skills/stacks/infra/azure/SKILL.md +72 -0
  675. package/skills/stacks/infra/circleci/SKILL.md +78 -0
  676. package/skills/stacks/infra/cloudflare/SKILL.md +65 -0
  677. package/skills/stacks/infra/fly-io/SKILL.md +63 -0
  678. package/skills/stacks/infra/gcp/SKILL.md +66 -0
  679. package/skills/stacks/infra/jenkins/SKILL.md +73 -0
  680. package/skills/stacks/infra/kubernetes/SKILL.md +64 -0
  681. package/skills/stacks/infra/netlify/SKILL.md +60 -0
  682. package/skills/stacks/infra/railway/SKILL.md +63 -0
  683. package/skills/stacks/infra/tailscale/SKILL.md +65 -0
  684. package/skills/stacks/infra/terraform/SKILL.md +75 -0
  685. package/skills/stacks/infra/vagrant/SKILL.md +70 -0
  686. package/skills/stacks/infra/vercel/SKILL.md +60 -0
  687. package/skills/stacks/meta/astro/SKILL.md +64 -0
  688. package/skills/stacks/meta/docusaurus/SKILL.md +71 -0
  689. package/skills/stacks/meta/eleventy/SKILL.md +69 -0
  690. package/skills/stacks/meta/gatsby/SKILL.md +63 -0
  691. package/skills/stacks/meta/hugo/SKILL.md +73 -0
  692. package/skills/stacks/meta/jekyll/SKILL.md +70 -0
  693. package/skills/stacks/meta/nextjs/SKILL.md +62 -0
  694. package/skills/stacks/meta/nuxt/SKILL.md +66 -0
  695. package/skills/stacks/meta/remix/SKILL.md +67 -0
  696. package/skills/stacks/meta/sveltekit/SKILL.md +70 -0
  697. package/skills/stacks/meta/vite/SKILL.md +63 -0
  698. package/skills/stacks/mobile/android/SKILL.md +77 -0
  699. package/skills/stacks/mobile/flutter/SKILL.md +77 -0
  700. package/skills/stacks/mobile/ionic/SKILL.md +72 -0
  701. package/skills/stacks/mobile/nativescript/SKILL.md +71 -0
  702. package/skills/stacks/mobile/react-native/SKILL.md +75 -0
  703. package/skills/stacks/mobile/xamarin/SKILL.md +73 -0
  704. package/skills/stacks/orm/diesel/SKILL.md +72 -0
  705. package/skills/stacks/orm/django-orm/SKILL.md +58 -0
  706. package/skills/stacks/orm/drizzle/SKILL.md +67 -0
  707. package/skills/stacks/orm/gorm/SKILL.md +73 -0
  708. package/skills/stacks/orm/knex/SKILL.md +64 -0
  709. package/skills/stacks/orm/mongoose/SKILL.md +64 -0
  710. package/skills/stacks/orm/prisma/SKILL.md +64 -0
  711. package/skills/stacks/orm/sequelize/SKILL.md +65 -0
  712. package/skills/stacks/orm/sqlalchemy/SKILL.md +71 -0
  713. package/skills/stacks/orm/typeorm/SKILL.md +70 -0
  714. package/skills/stacks/queue/bullmq/SKILL.md +69 -0
  715. package/skills/stacks/queue/celery/SKILL.md +68 -0
  716. package/skills/stacks/queue/kafka/SKILL.md +66 -0
  717. package/skills/stacks/queue/nats/SKILL.md +66 -0
  718. package/skills/stacks/queue/rabbitmq/SKILL.md +64 -0
  719. package/skills/stacks/queue/redis/SKILL.md +66 -0
  720. package/skills/stacks/runtime/beam/SKILL.md +72 -0
  721. package/skills/stacks/runtime/bun/SKILL.md +80 -0
  722. package/skills/stacks/runtime/deno/SKILL.md +74 -0
  723. package/skills/stacks/runtime/dotnet/SKILL.md +64 -0
  724. package/skills/stacks/runtime/jvm/SKILL.md +66 -0
  725. package/skills/stacks/runtime/node/SKILL.md +70 -0
  726. package/skills/stacks/runtime/pypy/SKILL.md +69 -0
  727. package/skills/stacks/runtime/python3/SKILL.md +70 -0
  728. package/skills/stacks/styling/bootstrap/SKILL.md +74 -0
  729. package/skills/stacks/styling/bulma/SKILL.md +80 -0
  730. package/skills/stacks/styling/chakra-ui/SKILL.md +61 -0
  731. package/skills/stacks/styling/css-modules/SKILL.md +54 -0
  732. package/skills/stacks/styling/mui/SKILL.md +60 -0
  733. package/skills/stacks/styling/sass/SKILL.md +63 -0
  734. package/skills/stacks/styling/shadcn-ui/SKILL.md +58 -0
  735. package/skills/stacks/styling/styled-components/SKILL.md +62 -0
  736. package/skills/stacks/styling/tailwind/SKILL.md +59 -0
  737. package/skills/stacks/styling/unocss/SKILL.md +64 -0
  738. package/skills/stacks/styling/vanilla-extract/SKILL.md +64 -0
  739. package/skills/stacks/styling/vuetify/SKILL.md +89 -0
  740. package/skills/stacks/testing/cypress/SKILL.md +68 -0
  741. package/skills/stacks/testing/jasmine/SKILL.md +67 -0
  742. package/skills/stacks/testing/jest/SKILL.md +67 -0
  743. package/skills/stacks/testing/mocha/SKILL.md +71 -0
  744. package/skills/stacks/testing/playwright/SKILL.md +68 -0
  745. package/skills/stacks/testing/puppeteer/SKILL.md +70 -0
  746. package/skills/stacks/testing/selenium/SKILL.md +70 -0
  747. package/skills/stacks/testing/vitest/SKILL.md +68 -0
@@ -0,0 +1,356 @@
1
+ [← Índice](./README.md) · [🇬🇧 English](../en/KB_RAG.md) · [✦ Constella](../../README.pt-BR.md)
2
+
3
+ # Base de Conhecimento & RAG ✦ A Nebulosa de Memória 🌌
4
+
5
+ ![](../assets/divider-orbit.svg)
6
+
7
+ > A memória de longo prazo do plano de controle. Cada decisão, correção, padrão e descoberta que os agentes acumulam se condensa em uma nebulosa curada, classificada e ciente de estado — e a gravidade (recuperação semântica) traz o conhecimento certo de volta ao contexto quando ele é necessário.
8
+
9
+ A Constella roda **duas camadas cooperantes** sobre o mesmo armazenamento:
10
+
11
+ - **RAG** (`src/server/rag.ts`) — recuperação bruta sobre o Markdown do workspace + transcrições de chat. Embeddings quando há um modelo local no ar; heurística por palavra-chave caso contrário.
12
+ - **KB** (`src/server/kb.ts`) — a camada curada que o agente de Conhecimento (**Vannevar**) possui: entradas tipadas, deduplicação por hash de conteúdo, ciclo de vida (active → superseded → obsolete → archived), recuperação ciente de estado, um grafo de conhecimento multi-salto e curadoria por LLM controlada por orçamento.
13
+
14
+ Ambas escrevem em uma única tabela física — `rag_chunk` — e as entradas da KB simplesmente emitem seus próprios chunks (caminho `kb/<type>/<id>`), de modo que uma única passada de recuperação cobre docs, chat **e** conhecimento curado.
15
+
16
+ ---
17
+
18
+ ## 1. Quando usar 🪐
19
+
20
+ | Você quer… | Camada / ponto de entrada |
21
+ |---|---|
22
+ | Deixar os agentes lembrarem o que foi decidido/construído sem reler cada arquivo | RAG `retrieve()` + KB `kbQuery()` |
23
+ | Capturar um aprendizado reutilizável de forma determinística (sem LLM) | `ingestKnowledge()` |
24
+ | Fazer um agente registrar um fato durante a execução | token `[[REMEMBER type=<t>: <fact>]]` |
25
+ | Fazer um agente consultar a KB antes de agir | token `[[CONSULT: <question>]]` |
26
+ | Disparar reindex / re-index do chat / saúde do embed durante uma execução | token `[[KB: reindex|index-chat|health]]` |
27
+ | Perguntar à KB de forma limpa e curada (chat / `/kb`) | `kbAnswer()` |
28
+ | Percorrer conhecimento relacionado a um goal/spec/issue | `relatedKnowledge()` |
29
+ | Deduplicar, aposentar e enxugar a KB | `runKbCuration()` (Vannevar) |
30
+ | Destilar aprendizados recorrentes em novas skills (P3) | `proposeSkillsFromLearnings()` |
31
+
32
+ Veja também [KB_AGENT.md](./KB_AGENT.md) (persona e ritual do Vannevar), [MEMORY_RAG.md](./MEMORY_RAG.md), [SYNCED_BLOCKS.md](./SYNCED_BLOCKS.md) (blocos canônicos) e [MODELS.md](./MODELS.md) (os servidores locais de embed/chat).
33
+
34
+ ---
35
+
36
+ ## 2. Como funciona 🛰️
37
+
38
+ ### Armazenamento RAG (`rag.ts`)
39
+
40
+ - **Diretórios indexados** (`RAG_DIRS`): `.claude`, `DOCS`, `PO`, `Reports`, `specs`, `issues`. Mais o protótipo `mock/` anexado (arquivos de texto: `.md .html .css .js/jsx .ts/tsx .txt .json`).
41
+ - **Encanamento excluído**: `.claude/kb/` (o próprio prompt/taxonomia do agente de KB) e `.claude/skills/` nunca são indexados — caso contrário uma pergunta recuperaria as entranhas da Constella.
42
+ - **Chunking** (`chunksOf`): divide em cabeçalhos H1–H3 (`/\n(?=#{1,3}\s)/`); cada parte ≤ **1200 caracteres** (partes maiores são quebradas à força); **máximo de 40 chunks** por documento.
43
+ - **Embeddings** (`embed`): dois backends, tentados em ordem —
44
+ 1. **Ollama** (`OLLAMA_URL`, padrão `http://127.0.0.1:11434`) com o modelo `CONSTELLA_EMBED_MODEL` (padrão `nomic-embed-text`).
45
+ 2. **Servidor de embedding llama.cpp dedicado** (`CONSTELLA_EMBED_URL`, padrão `http://127.0.0.1:8083`), `/v1/embeddings` compatível com OpenAI.
46
+ - Retorna `null` se ambos estiverem fora do ar → o chamador cai na busca por palavra-chave.
47
+ - **Prefixos nomic assimétricos**: o nomic-embed-text foi treinado com prefixos de tarefa e *os exige*. Documentos são embeddados como `search_document: …`, consultas como `search_query: …`. Os lados de índice e de consulta precisam usar o mesmo modelo + prefixo correspondente, senão a similaridade de cosseno não tem sentido.
48
+ - **Transcrições de chat** (`indexChat`): a sala do time, DMs e Telegram são agrupados por canal, as **últimas 400 linhas** de cada um são embeddadas sob o caminho `chat/<channel>`, para que os agentes lembrem o que foi *dito*, não só o que está nos docs.
49
+
50
+ ### O servidor local de embed (`local-models.ts`)
51
+
52
+ `ensureEmbedServer()` sobe uma instância **separada** do llama.cpp servindo o GGUF nomic local com `--embeddings` na porta **:8083** (distinta do servidor de chat na **:8082**). Roda no boot e após o download de um modelo de embedding, então a recuperação fica semântica sem configuração manual:
53
+
54
+ ```bash
55
+ llama-server -m <nomic.gguf> --embeddings --host 127.0.0.1 --port 8083 -c 2048 --pooling mean [<args de offload GPU>]
56
+ ```
57
+
58
+ `embedServerUp()` checa `GET <EMBED_URL>/health`; `llamaServerStatus()` checa o `/v1/models` do servidor de chat.
59
+
60
+ ### Camada KB (`kb.ts`)
61
+
62
+ Uma `kb_entry` é **uma unidade de conhecimento reutilizável** — uma decisão, mudança de código, descoberta, spec, correção, padrão… Ela é:
63
+ - **classificada** por `type` + refs de trabalho/arquivo,
64
+ - **deduplicada** por um hash de conteúdo SHA-256,
65
+ - **rastreada por ciclo de vida** (`active → superseded → obsolete → archived`),
66
+ - e **emite seus próprios `rag_chunk(s)`** sob o caminho `kb/<type>/<id>` para recuperação semântica.
67
+
68
+ Toda a captura da KB é **best-effort e fire-and-forget**: um item ruim nunca aborta um lote, e o trabalho da KB nunca pode quebrar a execução de uma tarefa.
69
+
70
+ ---
71
+
72
+ ## 3. Fluxo principal 🌠
73
+
74
+ ```mermaid
75
+ flowchart TD
76
+ subgraph Ingest["Ingestão — determinística, sem LLM"]
77
+ A["Resposta do agente / saída da tarefa"] -->|"[[REMEMBER type=…: fact]]"| EX["extractRemembered()"]
78
+ EX --> IK["ingestKnowledge(items)"]
79
+ DOC["Doc / spec / decisão escrita"] --> IK
80
+ IK --> SCRUB{"scrubSecrets muda o texto?"}
81
+ SCRUB -- "sim (forma de segredo)" --> REFUSE["recusa · console.warn"]
82
+ SCRUB -- "não" --> HASH["hash sha256"]
83
+ HASH --> DUP{"hash existe?"}
84
+ DUP -- "sim" --> TOUCH["toca updatedAt · pula"]
85
+ DUP -- "não" --> SLOT{"mesmo slot type+source?"}
86
+ SLOT -- "sim" --> UPD["atualiza no lugar"]
87
+ SLOT -- "não" --> INS["insere kb_entry"]
88
+ UPD --> EMB["embedEntry → rag_chunk kb/<type>/<id>"]
89
+ INS --> EMB
90
+ EMB --> CUR["scheduleKbCuration (debounced)"]
91
+ end
92
+
93
+ subgraph Query["Consulta — recuperação ciente de estado"]
94
+ Q["[[CONSULT]] · /kb · kbQuery()"] --> SEL["select rag_chunk WHERE obsolete=0"]
95
+ SEL --> QV{"embed(query) disponível?"}
96
+ QV -- "sim + há vetores" --> COS["cosseno top-k · mode=semantic"]
97
+ QV -- "não" --> KW["sobreposição de palavras top-k · mode=heuristic"]
98
+ COS --> REFS["refsFor() → spec:/issue:/goal:/file:"]
99
+ KW --> REFS
100
+ REFS --> LOG["logQuery → kb_query_log"]
101
+ LOG --> ANS["KbAnswer{context, sources, refs, sufficient}"]
102
+ end
103
+
104
+ CUR -.->|"Vannevar (controlado por orçamento)"| RUNCUR["runKbCuration() · merge/aposenta/enxuga"]
105
+ ```
106
+
107
+ ---
108
+
109
+ ## 4. Conceitos-chave 🕳️
110
+
111
+ - **Captura determinística, curadoria por LLM** — o *caminho quente* (`ingestKnowledge`) nunca chama um modelo; o *caminho frio* (`runKbCuration`) chama, fora do caminho crítico, controlado por orçamento. A KB continua funcionando mesmo que a curadoria nunca rode.
112
+ - **Atualizar no lugar vs inserir** — um item com o mesmo slot `(type, sourceKind, sourceRef)` é tratado como uma *atualização* daquele conhecimento (reescreve a linha); um slot diferente insere uma nova entrada. Conteúdo idêntico (mesmo hash) apenas toca `updatedAt`.
113
+ - **Recuperação ciente de estado** — `kbQuery` só seleciona `rag_chunk WHERE obsolete = 0`. Entradas superseded/obsolete e os chunks de goals cancelados/arquivados são marcados `obsolete = 1`, então o conhecimento velho deixa de aparecer automaticamente.
114
+ - **Sinal de insuficiência** — `KbAnswer.sufficient` é honesto: quando nada relevante é encontrado, a resposta diz isso em vez de inventar.
115
+ - **Grafo de conhecimento** — `relatedKnowledge` percorre as colunas de link `goalId/specId/issueId` + a cadeia `supersedesId` até `hops` (padrão 2), agrupando por tipo o conhecimento *ativo* conectado. Decisões são elas próprias linhas `kb_entry` (`type="decision"`), então isso naturalmente liga decisões ↔ specs ↔ issues ↔ correções anteriores.
116
+ - **Segredos nunca entram na KB** — antes da ingestão, `scrubSecrets(blob)` roda; se o texto muda (havia uma forma de segredo), o item é **recusado**. Veja [SECURITY.md](./SECURITY.md).
117
+ - **Geração local-first** — *respostas* e *curadoria* da KB preferem o servidor de chat local llama.cpp (`LLAMACPP_URL`, padrão `:8082`); só se ele estiver fora é que caem na CLI (possivelmente paga) do agente. Blocos `<think>…</think>` de GGUFs de raciocínio são removidos.
118
+
119
+ ---
120
+
121
+ ## 5. A taxonomia de conhecimento 🌌
122
+
123
+ `KbType` — o conjunto completo (de `kb.ts`). `note` é o pega-tudo.
124
+
125
+ | type | O que captura |
126
+ |---|---|
127
+ | `decision` | Uma decisão arquitetural/de produto e sua justificativa |
128
+ | `spec` | Uma unidade de especificação |
129
+ | `issue` | Uma descoberta de issue/item de trabalho |
130
+ | `goal` | Conhecimento de nível de goal |
131
+ | `plan` | Conhecimento de planejamento |
132
+ | `architecture` | Conhecimento de sistema/estrutura |
133
+ | `business-rule` | Uma regra de domínio/negócio |
134
+ | `code-change` | Uma mudança de código relevante |
135
+ | `dependency` | Um fato de dependência / biblioteca |
136
+ | `integration` | Um detalhe de integração externa |
137
+ | `bug` | Um bug observado |
138
+ | `fix` | Uma correção aplicada |
139
+ | `test` | Conhecimento de teste / cobertura |
140
+ | `review` | Uma descoberta de revisão |
141
+ | `vuln` | Uma vulnerabilidade de segurança |
142
+ | `doc` | Conhecimento de documentação |
143
+ | `user-context` | Contexto do operador/usuário |
144
+ | `history` | Contexto histórico |
145
+ | `command` | Um comando útil |
146
+ | `file-structure` | Conhecimento de arquivo/layout |
147
+ | `ui-pattern` | Um padrão de UI reutilizável |
148
+ | `stack` | Fato da stack do projeto |
149
+ | `env-config` | Fato de ambiente/config |
150
+ | `note` | Pega-tudo (padrão) |
151
+
152
+ **Autocaptura do agente** (`[[REMEMBER type=…]]`) aceita um conjunto mais estreito — `KB_LEARN_TYPES` — e qualquer coisa fora dele cai para `note`:
153
+ `decision, architecture, business-rule, integration, dependency, bug, fix, test, review, vuln, ui-pattern, stack, env-config, command, note`.
154
+
155
+ ---
156
+
157
+ ## 6. Tokens de agente 🚀
158
+
159
+ Os agentes leem/escrevem na KB inline emitindo tokens entre colchetes duplos. O runner os interpreta e os remove da resposta visível.
160
+
161
+ | Token | Direção | Handler | Efeito |
162
+ |---|---|---|---|
163
+ | `[[REMEMBER type=<t>: <fact>]]` | produtor | `extractRemembered()` | Vira um `KbItem` tipado (fato ≥ 8 chars), ingerido via `ingestKnowledge` |
164
+ | `[[CONSULT: <question>]]` | consumidor | `answerConsults()` | Roda `kbQuery` (k=6), devolve a resposta ao thread para ficar no contexto no próximo turno (pergunta ≥ 4 chars) |
165
+ | `[[KB: reindex]]` | manutenção | `runKbTools()` | `indexRag(orgId)` → reporta contagem de chunks |
166
+ | `[[KB: index-chat]]` | manutenção | `runKbTools()` | `indexChat(orgId)` → re-embedda conversas |
167
+ | `[[KB: health]]` | manutenção | `runKbTools()` | `llamaServerStatus()` → servidor de embed no ar/fora |
168
+
169
+ Os três são **best-effort**: um verbo desconhecido, uma consulta falha ou um fato curto demais é silenciosamente ignorado.
170
+
171
+ ---
172
+
173
+ ## 7. Tabelas 🪐
174
+
175
+ ### `rag_chunk` — o armazenamento físico (RAG + KB compartilham)
176
+
177
+ | coluna | tipo | notas |
178
+ |---|---|---|
179
+ | `id` | text PK | |
180
+ | `workspace_id` | text → `workspace` | cascade delete |
181
+ | `path` | text | caminho de origem (`DOCS/…`, `chat/<channel>`, `kb/<type>/<id>`) |
182
+ | `chunk` | text | o texto do chunk |
183
+ | `vector` | text (JSON float[]) | `null` quando não embeddado (fallback por palavra-chave) |
184
+ | `kb_entry_id` | text | preenchido quando o chunk veio de uma `kb_entry` |
185
+ | `obsolete` | int(bool) | `1` → descartado pela recuperação ciente de estado |
186
+ | `updated_at` | timestamp | |
187
+
188
+ ### `kb_entry` — a unidade de conhecimento curado
189
+
190
+ | coluna | tipo | notas |
191
+ |---|---|---|
192
+ | `id` | text PK | |
193
+ | `workspace_id` | text → `workspace` | cascade delete |
194
+ | `type` | text | um de `KbType` (padrão `note`) |
195
+ | `title` | text | ≤ 200 chars |
196
+ | `summary` | text | resumo técnico (Vannevar cura), ≤ 1200 chars |
197
+ | `body` | text | ≤ 8000 chars |
198
+ | `status` | text | `active \| superseded \| obsolete \| archived` |
199
+ | `goal_id` / `spec_id` / `issue_id` / `task_id` | text | refs de trabalho anuláveis |
200
+ | `module` | text | ≤ 120 chars |
201
+ | `paths` | JSON string[] | arquivos que este conhecimento abrange (≤ 40) |
202
+ | `agent_handle` | text | quem o produziu |
203
+ | `source_kind` | text | `task \| goal \| review \| test \| decision \| spec \| issue \| note \| chat` |
204
+ | `source_ref` | text | id/chave de origem (jump-back); chave do slot de dedup junto a `type`+`source_kind` |
205
+ | `supersedes_id` | text | a entrada que esta substitui |
206
+ | `hash` | text | hash de conteúdo SHA-256 → dedup / atualização no lugar |
207
+ | `confidence` | int | 0..100 (padrão 70) |
208
+ | `created_at` / `updated_at` | timestamp | |
209
+
210
+ ### `kb_query_log` — toda consulta
211
+
212
+ | coluna | tipo | notas |
213
+ |---|---|---|
214
+ | `id` | text PK | |
215
+ | `workspace_id` | text → `workspace` | |
216
+ | `agent_handle` | text | quem perguntou (`operator` para `/kb`) |
217
+ | `query` | text | ≤ 500 chars |
218
+ | `hits` | int | número de caminhos de origem retornados |
219
+ | `mode` | text | `semantic \| heuristic \| none` |
220
+ | `refs` | JSON string[] | jump-backs `kind:ref` |
221
+ | `answered_at` | timestamp | indexado para a visão de recall recente |
222
+
223
+ ---
224
+
225
+ ## 8. Diagrama de embedding & recuperação 🛰️
226
+
227
+ ```mermaid
228
+ flowchart LR
229
+ T["chunk de texto / consulta"] --> O{"Ollama no ar?\n(OLLAMA_URL :11434)"}
230
+ O -- "sim" --> OE["prefixo nomic → /api/embeddings"]
231
+ O -- "não" --> L{"embed llama.cpp no ar?\n(CONSTELLA_EMBED_URL :8083)"}
232
+ L -- "sim" --> LE["prefixo nomic → /v1/embeddings"]
233
+ L -- "não" --> NULL["retorna null"]
234
+ OE --> VEC["vetor float[]"]
235
+ LE --> VEC
236
+ NULL --> KW["heurística por palavra-chave (sobreposição de termos)"]
237
+ VEC --> COS["similaridade cosine()"]
238
+ COS --> TOPK["top-k chunks"]
239
+ KW --> TOPK
240
+ ```
241
+
242
+ ---
243
+
244
+ ## 9. Passo a passo 🌠
245
+
246
+ ### Capturar um aprendizado (determinístico)
247
+ 1. Um doc é escrito **ou** um agente emite `[[REMEMBER type=decision: Escolhemos SQLite WAL para o índice]]`.
248
+ 2. `extractRemembered` transforma o token em um `KbItem`.
249
+ 3. `ingestKnowledge` roda `scrubSecrets` (recusa conteúdo com forma de segredo), faz hash do conteúdo, e ou toca um duplicado, ou atualiza o mesmo slot, ou insere uma nova `kb_entry`.
250
+ 4. `embedEntry` descarta os chunks antigos daquele caminho e re-embedda `# <title>\n<summary|body>` (≤ 6000 chars) em `rag_chunk` (caminho `kb/<type>/<id>`).
251
+ 5. `scheduleKbCuration` arma uma passada de curadoria debounced.
252
+
253
+ ### Consultar antes de agir
254
+ 1. Um agente emite `[[CONSULT: como armazenamos segredos?]]`.
255
+ 2. `answerConsults` chama `kbQuery(orgId, q, { k: 6 })`.
256
+ 3. `kbQuery` seleciona chunks ativos (`obsolete=0`), ranqueia por cosseno (semantic) ou sobreposição de termos (heuristic), monta refs internas, registra em `kb_query_log`.
257
+ 4. A resposta (contexto + fontes + um flag explícito de insuficiência) é devolvida ao thread para ficar no contexto do próximo turno do agente.
258
+
259
+ ### Curar (Vannevar)
260
+ 1. Após ingestões suficientes (≥ 4 entradas), o gatilho debounced (4 min) + com cooldown (30 min) dispara `runKbCuration`.
261
+ 2. Vannevar revisa ~60 entradas recentes ativas/superseded e retorna JSON: `merges`, `obsolete`, `summaries`, `gaps`.
262
+ 3. Merges → as descartadas viram `superseded` (+ `supersedesId`); obsolete → `obsolete`; resumos reescritos + re-embeddados; seus chunks marcados `obsolete=1`.
263
+ 4. Um relatório `Reports/kb-health.md` é escrito (RAG-indexado) e o operador é notificado.
264
+
265
+ ---
266
+
267
+ ## 10. Exemplos 🪐
268
+
269
+ **Pergunte à KB pelo chat ou `/kb`:**
270
+
271
+ ```text
272
+ /kb como autenticamos o processo worker?
273
+ ```
274
+
275
+ `kbAnswer` roteia perguntas meta/status ("como está a KB?", "cobertura", "lacunas") para um **card de overview** determinístico; perguntas de conteúdo recuperam e então ganham uma resposta curta escrita pelo Vannevar com uma linha de Fontes enxuta — nunca despeja chunks crus.
276
+
277
+ **Autocaptura + consulta em uma execução de agente:**
278
+
279
+ ```text
280
+ [[CONSULT: qual banco este projeto usa?]]
281
+ … trabalho …
282
+ [[REMEMBER type=stack: O projeto usa Drizzle ORM sobre better-sqlite3]]
283
+ [[KB: reindex]]
284
+ ```
285
+
286
+ **Cancelar um goal → seu conhecimento se aposenta automaticamente** (`markKbObsoleteForGoal`): as linhas `kb_entry` do goal viram `obsolete` e seus `rag_chunk`s viram `obsolete=1`, então a recuperação para de exibi-los.
287
+
288
+ ---
289
+
290
+ ## 11. Estados possíveis 🕳️
291
+
292
+ **`kb_entry.status`**
293
+
294
+ | estado | significado |
295
+ |---|---|
296
+ | `active` | atual, recuperável |
297
+ | `superseded` | fundido em uma entrada canônica (`supersedesId` setado); não recuperado |
298
+ | `obsolete` | contradito / aposentado (também: goal cancelado/arquivado); não recuperado |
299
+ | `archived` | estacionado (contado à parte na visão de ciclo de vida) |
300
+
301
+ **Modo de `kbQuery` / `retrieve`**
302
+
303
+ | modo | significado |
304
+ |---|---|
305
+ | `semantic` | cosseno sobre vetores reais (backend de embed no ar) |
306
+ | `heuristic` | fallback por sobreposição de palavras-chave (sem embeddings) |
307
+ | `none` | índice vazio / nada casou |
308
+
309
+ **`KbReply.mode`** (de `kbAnswer`): `overview` (o card estruturado da KB), `answer` (escrito por modelo), `none` (conhecimento insuficiente).
310
+
311
+ ---
312
+
313
+ ## 12. Integrações relacionadas 🛰️
314
+
315
+ - **Motor de sincronização** — o watcher chama `scheduleRagReindex` / `indexRagFile` / `deindexRagFile` (debounced 2.5 s) para o RAG acompanhar mudanças de arquivo; o disco é a verdade. Veja [ARCHITECTURE.md](./ARCHITECTURE.md).
316
+ - **Chat** — toda mensagem postada arma `scheduleChatReindex` (debounced 6 s) → `indexChat`. Veja [TEAM_ROOM.md](./TEAM_ROOM.md), [DM.md](./DM.md), [TELEGRAM.md](./TELEGRAM.md).
317
+ - **Modelos locais** — `ensureEmbedServer` (:8083) + `ensureLlamaServer` (:8082); offload de GPU quando cabe. Veja [MODELS.md](./MODELS.md).
318
+ - **Skills (P3)** — `proposeSkillsFromLearnings` destila conhecimento recorrente forte em skills **provisórias** para aprovação do operador. Veja [SKILLS.md](./SKILLS.md).
319
+ - **Synced blocks** — conhecimento canônico nomeado (`mission`, `official-stack`, `business-rules`) que o card de overview incentiva você a criar. Veja [SYNCED_BLOCKS.md](./SYNCED_BLOCKS.md).
320
+ - **Comandos** — `/kb` (`/ask-kb`), `/reindex`, `/curate`, `/search`, `/graph`. Veja [CHAT_COMMANDS.md](./CHAT_COMMANDS.md).
321
+
322
+ ---
323
+
324
+ ## 13. Segurança 🕳️
325
+
326
+ - **Portão de segredo na ingestão** — `scrubSecrets(blob) !== blob` ⇒ o item é recusado e um `console.warn` é registrado. Nenhuma API key, token, PEM, bearer ou URL de banco com credenciais entra na KB.
327
+ - **Isolamento por org** — toda consulta/indexação é escopada por `workspace_id` (resolvido do `orgId`); só os chunks da org ativa são lidos ou retornados.
328
+ - **Encanamento interno escondido** — `.claude/kb/` e `.claude/skills/` ficam fora da indexação para que uma pergunta não exponha os próprios prompts/skills da Constella.
329
+ - **LLM controlada por orçamento** — execuções de curadoria e de proposta de skill checam o `dailyCapUsd` do agente (`overCap`) antes de gastar, e o custo é registrado em `cost_entry`.
330
+ - **Opt-outs** — `CONSTELLA_KB_CURATION=0` desativa totalmente a passada de curadoria automática.
331
+
332
+ ---
333
+
334
+ ## 14. Solução de problemas 🚀
335
+
336
+ | Sintoma | Causa provável | Correção |
337
+ |---|---|---|
338
+ | Recuperação é `heuristic`, nunca `semantic` | Nenhum backend de embed no ar | Suba o Ollama com `nomic-embed-text`, ou baixe um GGUF nomic para o `ensureEmbedServer` subir a :8083. Cheque com `[[KB: health]]`. |
339
+ | `/kb` diz "não há o suficiente na Base de Conhecimento" | Índice vazio/frio | Rode `/reindex` (ou `[[KB: reindex]]`); o conhecimento também preenche conforme os agentes concluem trabalho. |
340
+ | Docs novos não são recuperados | Arquivo fora de `RAG_DIRS`, ou watcher não rodando | Coloque docs sob `.claude/DOCS/PO/Reports/specs/issues`; garanta que o processo worker esteja no ar. |
341
+ | Conhecimento velho/cancelado ainda aparece | Chunks não marcados | Cancelar/arquivar um goal chama `markKbObsoleteForGoal`; um `/curate` manual também aposenta entradas contraditas. |
342
+ | Curadoria nunca roda | Cooldown / cap / opt-out | Precisa de ≥ 4 entradas, respeita o cooldown de 30 min + o cap diário do agente; cheque `CONSTELLA_KB_CURATION`. |
343
+ | Embeddings parecem errados (casamentos ruins) | Prefixos nomic incompatíveis ou modelo não-nomic | Mantenha `CONSTELLA_EMBED_MODEL` nomic, ou garanta que índice+consulta usem o mesmo modelo/esquema de prefixo. |
344
+
345
+ ---
346
+
347
+ ## 15. Links relacionados 🌌
348
+
349
+ - [KB_AGENT.md](./KB_AGENT.md) — Vannevar, o agente de Conhecimento
350
+ - [MEMORY_RAG.md](./MEMORY_RAG.md) — como a memória realimenta o contexto
351
+ - [SYNCED_BLOCKS.md](./SYNCED_BLOCKS.md) — blocos de conhecimento canônicos
352
+ - [SKILLS.md](./SKILLS.md) — aprendizado → skills (P3)
353
+ - [MODELS.md](./MODELS.md) — servidores locais de embed (:8083) & chat (:8082)
354
+ - [CHAT_COMMANDS.md](./CHAT_COMMANDS.md) — `/kb`, `/reindex`, `/curate`, `/graph`
355
+ - [ARCHITECTURE.md](./ARCHITECTURE.md) · [AI_ARCHITECTURE.md](./AI_ARCHITECTURE.md) — onde a KB/RAG fica na nave
356
+ - [SECURITY.md](./SECURITY.md) — scrub, isolamento, vault