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,95 @@
1
+ [✦ Constella](../../README.pt-BR.md) · [🇬🇧 English](../en/README.md)
2
+
3
+ ![](../assets/divider-orbit.svg)
4
+
5
+ # 🌌 Documentação da Constella
6
+
7
+ > O mapa completo do plano de controle Constella. Toda página segue a mesma estrutura — propósito, como
8
+ > funciona, fluxos, conceitos, tabelas, diagramas Mermaid, passo a passo, exemplos, estados, integrações,
9
+ > segurança, troubleshooting e links relacionados.
10
+
11
+ **Novo por aqui?** Comece por [Instalação](INSTALLATION.md) → [Onboarding](ONBOARDING.md) →
12
+ [Configuração](CONFIGURATION.md), e então escolha um modo de execução.
13
+
14
+ ---
15
+
16
+ ## 🌱 Primeiros passos
17
+
18
+ | Doc | O que cobre |
19
+ |-----|-------------|
20
+ | [Instalação](INSTALLATION.md) | Rodar via `npx` ou instalação global `npm`; requisitos; primeiro boot |
21
+ | [Onboarding](ONBOARDING.md) | O wizard de setup, import de projeto, a SUPER-SPEC e o starter executável |
22
+ | [Configuração](CONFIGURATION.md) | Toda variável de ambiente, portas, o arquivo `<HOME>/.env`, o vault |
23
+
24
+ ## 🌠 Modos de execução
25
+
26
+ | Doc | O que cobre |
27
+ |-----|-------------|
28
+ | [Start Mode](START_MODE.md) | Operador local automático, sem login, `127.0.0.1` |
29
+ | [Auth Mode](AUTH_MODE.md) | E-mail + senha em máquina local/compartilhada |
30
+ | [VPS Mode](VPS_MODE.md) | Bind de rede sobre uma tailnet Tailscale, Docker |
31
+ | [Portable Mode](PORTABLE_MODE.md) | Carregar app + modelos + projetos em um pen-drive |
32
+
33
+ ## 🛰️ Arquitetura
34
+
35
+ | Doc | O que cobre |
36
+ |-----|-------------|
37
+ | [Arquitetura](ARCHITECTURE.md) | Web + worker, runtime root, jail de FS, SQLite, sync engine |
38
+ | [Arquitetura de IA](AI_ARCHITECTURE.md) | Adaptadores de CLI, spawn de agentes, montagem de contexto, custo |
39
+ | [Segurança](SECURITY.md) | Jail, vault, scrubbing, locks, guarda de comandos, auth |
40
+
41
+ ## ✦ Agentes & trabalho
42
+
43
+ | Doc | O que cobre |
44
+ |-----|-------------|
45
+ | [Agentes](AGENTS.md) | O elenco de 10 agentes, personas, hierarquia, modelos, tetos |
46
+ | [Agente de KB (Vannevar)](KB_AGENT.md) | O agente de Conhecimento: indexação, curadoria, propostas de skill |
47
+ | [Agente PO (Donald)](PO_AGENT.md) | Grooming de backlog, story points, MoSCoW |
48
+ | [Workflow](WORKFLOW.md) | Goal → Spec → Issue → Plan → Execution → Review → Test → Done |
49
+ | [Goals, Specs, Issues, Plans](GOALS_SPECS_ISSUES.md) | O modelo de dados do trabalho e as máquinas de estado |
50
+ | [Team Room](TEAM_ROOM.md) | Coordenação multi-agente por `@menção` |
51
+ | [DM](DM.md) | Canais de mensagem direta e sessões |
52
+ | [Comandos de chat](CHAT_COMMANDS.md) | Todo slash command |
53
+ | [Inbox](INBOX.md) | Duplicatas, lacunas e propostas em destaque |
54
+
55
+ ## 🌌 Conhecimento
56
+
57
+ | Doc | O que cobre |
58
+ |-----|-------------|
59
+ | [Base de Conhecimento & RAG](KB_RAG.md) | KB curada, taxonomia, embeddings, recuperação |
60
+ | [Memory RAG](MEMORY_RAG.md) | Recuperação sobre arquivos e conversas |
61
+ | [Synced Blocks](SYNCED_BLOCKS.md) | Blocos canônicos e propostas de agentes |
62
+
63
+ ## 🪐 Capacidades
64
+
65
+ | Doc | O que cobre |
66
+ |-----|-------------|
67
+ | [Skills](SKILLS.md) | A biblioteca de skills em Markdown e o vínculo com agentes |
68
+ | [Project Stacks](PROJECT_STACKS.md) | Como seu stack guia skills, pesquisa e RAG |
69
+ | [Plugins](PLUGINS.md) | Integrações nativas e o modelo de plugins |
70
+ | [Modelos](MODELS.md) | Adaptadores de nuvem + CLI, GGUF local, fit-check de GPU |
71
+
72
+ ## 🤖 Integrações
73
+
74
+ | Doc | O que cobre |
75
+ |-----|-------------|
76
+ | [Telegram](TELEGRAM.md) | Controle remoto pelo celular |
77
+ | [GitHub](GITHUB.md) | Vínculo de repo, commit vs export limpo |
78
+ | [API Pública](PUBLIC_API.md) | A API REST protegida por PAT |
79
+ | [MCP](MCP.md) | O servidor MCP que permite hosts de IA dirigirem a Constella |
80
+
81
+ ## 🚀 Entrega & operação
82
+
83
+ | Doc | O que cobre |
84
+ |-----|-------------|
85
+ | [Test Dev](TEST_DEV.md) | Subir e testar o projeto de forma headless |
86
+ | [Prepare Deploy](PREPARE_DEPLOY.md) | Pipeline de build de árvore limpa e export |
87
+ | [Deploy](DEPLOY.md) | Deploy da própria Constella em produção |
88
+ | [Publishing](PUBLISHING.md) | Empacotamento npm e publicação pública limpa |
89
+ | [Update](UPDATE.md) | Verificação de versão e updates sensíveis ao contexto |
90
+ | [Troubleshooting](TROUBLESHOOTING.md) | Sintomas, causas e correções |
91
+ | [FAQ](FAQ.md) | Perguntas frequentes |
92
+
93
+ ---
94
+
95
+ Histórico do projeto: [Changelog](../../CHANGELOG.pt-BR.md) · Portal principal: [✦ Constella README](../../README.pt-BR.md)
@@ -0,0 +1,280 @@
1
+ [← Índice](./README.md) · [🇬🇧 English](../en/SECURITY.md) · [✦ Constella](../../README.pt-BR.md)
2
+
3
+ # Segurança 🕳️
4
+
5
+ ![](../assets/divider-orbit.svg)
6
+
7
+ > Os escudos ao redor da nave central. Agentes autônomos executam CLIs *reais* num workspace *real*, então cada camada aqui é estrutural — uma cela de sistema de arquivos mantém cada constelação em sua própria órbita, um cofre criptografa segredos em repouso, scrubbers removem credenciais antes que escapem da gravidade, e a autenticação reforçada guarda a porta da frente.
8
+
9
+ A Constella executa agentes autônomos que conduzem `claude` / `codex` (e outros) CLIs como subprocessos, com acesso de edição e (no modo `start`) shell completo a um diretório de projeto real. Nada é sandbox de mentira — a segurança vem de controles concretos e em camadas. Esta página documenta o que o código realmente aplica, arquivo por arquivo.
10
+
11
+ ---
12
+
13
+ ## ✦ Quando usar esta página
14
+
15
+ - Você vai implantar a Constella onde mais de um humano (ou a internet aberta) pode alcançá-la — leia **Auth**, **Worker secret**, **guarda SSRF**.
16
+ - Você quer entender o **raio de explosão do agente**: o que um agente pode e não pode fazer ao host (cela de FS, command guard, sandbox por run-mode).
17
+ - Você está auditando como **segredos** são armazenados, criptografados e impedidos de vazar (Vault, scrub, gates de varredura de segredos).
18
+ - Você está revisando o modelo de ameaças antes de publicar (modos `vps` / `portable`).
19
+
20
+ ---
21
+
22
+ ## 🌌 Como funciona — defesa em profundidade
23
+
24
+ A Constella empilha controles independentes para que nenhuma falha isolada seja catastrófica. O modelo que um agente executa já é instruído (cláusula de prompt-injection) a nunca revelar segredos nem rodar comandos destrutivos; cada controle abaixo é *belt-and-suspenders* aplicado na fronteira, jamais confiando apenas no modelo.
25
+
26
+ ```mermaid
27
+ flowchart TB
28
+ subgraph Edge["🛰️ Borda de rede"]
29
+ A1["Bind por run-mode: start/auth = 127.0.0.1 · vps/portable = 0.0.0.0 + Tailscale/Docker"]
30
+ A2["Barreira de sessão do better-auth (e-mail+senha · 2FA TOTP · passkeys WebAuthn)"]
31
+ A3["Endpoints do worker: x-worker-secret, fail CLOSED"]
32
+ end
33
+ subgraph App["🚀 Fronteira da aplicação"]
34
+ B1["Isolamento de org: member.role + requireWorkspace → workspace por org"]
35
+ B2["API pública: PAT cn_ (SHA-256), escopo read|write, 120 req/min"]
36
+ B3["scrubSecrets() em todo sink agente→operador"]
37
+ end
38
+ subgraph Agent["stars Sandbox do agente"]
39
+ C1["Cela de FS safe(): léxico + symlink, sem traversal"]
40
+ C2["Permissão por run-mode: start=bypassPermissions · prod=acceptEdits / workspace-write"]
41
+ C3["guard-hook.mjs: bloqueia shell catastrófico"]
42
+ C4["lock-hook.mjs: locks por arquivo (opt-in)"]
43
+ C5["safeModel(): sem injeção de shell via id de modelo"]
44
+ end
45
+ subgraph Rest["🕳️ Em repouso"]
46
+ D1["Vault: AES-256-GCM (CONSTELLA_VAULT_KEY)"]
47
+ D2["<HOME>/.env chmod 600 (segredos nunca impressos)"]
48
+ D3["Gate de varredura de segredos em export / publish"]
49
+ end
50
+ Edge --> App --> Agent
51
+ App --> Rest
52
+ Agent --> Rest
53
+ ```
54
+
55
+ ---
56
+
57
+ ## 🪐 Fluxo principal
58
+
59
+ 1. **Boot** — o launcher (`bin/constella.mjs`) gera e persiste três segredos reais em `<HOME>/.env` (modo `0600`): `BETTER_AUTH_SECRET`, `CONSTELLA_VAULT_KEY`, `CONSTELLA_WORKER_SECRET`. Eles nunca são impressos.
60
+ 2. **Barreira de auth** — o modo `start` autentica automaticamente um operador local (apenas loopback); `auth` / `vps` / `portable` exigem uma credencial real (`assertAuthSecret()` falha fechado sem uma chave de assinatura).
61
+ 3. **Requisição → workspace** — `requireWorkspace()` resolve a org ativa por um join em `member`; todo acesso ao sistema de arquivos passa por `safe()`, que indexa pelo `organization.id` estável e recusa traversal.
62
+ 4. **Execução do agente** — o runner spawna o CLI dentro do `cwd` do workspace da org. O run-mode escolhe o nível de permissão; hooks PreToolUse (`guard-hook.mjs`, `lock-hook.mjs` opcional) ficam na frente de todo Bash/Write/Edit.
63
+ 5. **Resposta → operador** — qualquer texto que um agente possa ecoar passa por `scrubSecrets()` antes de chegar ao Telegram, à Team Room, a DMs, notificações ou à API pública.
64
+ 6. **Export / publish** — uma árvore limpa é montada e um gate de varredura de segredos bloqueia a operação a *qualquer* achado.
65
+
66
+ ---
67
+
68
+ ## 🌠 Conceitos-chave
69
+
70
+ | Conceito | Onde | Garantia em uma linha |
71
+ | --- | --- | --- |
72
+ | **Cela de FS** | `src/lib/fs-workspace.ts` `safe()` | Nenhum caminho escapa do workspace da org — lexicalmente *e* via symlinks. |
73
+ | **Vault** | `src/lib/vault.ts` | Chaves de API / PATs são criptografados em repouso com AES-256-GCM; nunca chegam ao cliente. |
74
+ | **Scrub de segredos** | `src/lib/scrub.ts` `scrubSecrets()` | Remove segredos de env conhecidos + formatos de credencial de todo sink agente→operador. |
75
+ | **Command guard** | `bin/guard-hook.mjs` | Bloqueia shell catastrófico (`rm -rf /`, force-push, `mkfs`, fork-bomb…). |
76
+ | **Locks de arquivo** | `src/server/file-locks.ts` + `bin/lock-hook.mjs` | Agentes paralelos não se sobrescrevem no mesmo arquivo. |
77
+ | **Sandbox por run-mode** | `src/server/adapters/cli.ts` | `start` = shell completo; prod = só edições (`acceptEdits` / `workspace-write`). |
78
+ | **Auth** | `src/lib/auth.ts` | better-auth e-mail+senha, 2FA TOTP, passkeys WebAuthn, sessões de 30 dias. |
79
+ | **Papéis de org** | `src/db/schema.ts` `member` | `owner` \| `admin` \| `member`. |
80
+ | **Worker secret** | `bin/worker.mjs` + endpoints | Endpoints privilegiados de cron/sync/poll exigem `x-worker-secret`. |
81
+ | **Guarda SSRF** | `bin/worker.mjs` | O worker secret só trafega para um host loopback. |
82
+
83
+ ---
84
+
85
+ ## 🛰️ A cela do sistema de arquivos
86
+
87
+ Cada organização possui um diretório isolado: `<constellaHome>/organizations/<orgId>/workspace/`. O acesso é canalizado por `safe(root, rel)` em `src/lib/fs-workspace.ts`, que aplica **duas** verificações independentes:
88
+
89
+ 1. **Léxica** — `join(root, rel)` é normalizado; se o resultado não for `root` e não começar com `root + sep`, ele lança `Path escapes workspace`. Como `join` re-enraíza entradas absolutas, com letra de drive e UNC sob `root`, essas colapsam de forma inofensiva.
90
+ 2. **Symlink** — mesmo um caminho lexicamente limpo é re-verificado contra o caminho *real* do ancestral existente mais próximo (`realAncestor` + `realpathSync.native`). Um agente vítima de prompt-injection que plante um symlink dentro do workspace não consegue tunelar para fora, à raiz de outra org ou ao disco mais amplo.
91
+
92
+ O próprio id da org é validado por `assertOrgId()` (`/^[A-Za-z0-9_-]{6,64}$/`) antes de tocar num caminho — `.`, `/`, `\`, `..` são rejeitados na porta. A chave do workspace é o `organization.id` **estável**, nunca o slug renomeável, então renomes nunca re-alojam nem vazam dados.
93
+
94
+ > 🌌 *Cada constelação orbita dentro de seu próprio poço gravitacional; `safe()` é o horizonte de eventos que nada atravessa.*
95
+
96
+ ---
97
+
98
+ ## 🔒 Vault — segredos em repouso (AES-256-GCM)
99
+
100
+ `src/lib/vault.ts` criptografa cada segredo armazenado (chaves de API de providers, o PAT do GitHub, o token do bot do Telegram, allowlists) com **AES-256-GCM**:
101
+
102
+ - A chave vem de `CONSTELLA_VAULT_KEY` — um valor de 32 bytes, decodificado de base64; `key()` lança erro se estiver ausente ou não tiver exatamente 32 bytes.
103
+ - `putSecret()` gera um IV aleatório fresco de 12 bytes por escrita, anexa a auth tag GCM ao ciphertext e armazena em base64 na tabela `vault` (`ciphertext`, `iv`). É **valor único por `(workspaceId, ref)`**: a linha antiga é deletada antes do insert, então a leitura de primeira-linha de `getSecret()` nunca serve um token obsoleto.
104
+ - `getSecret()` separa a tag de 16 bytes, a define e descriptografa — um ciphertext adulterado falha na verificação da tag GCM.
105
+ - `delSecret()` sustenta o caminho de revogar-token. `maskSecret()` é a única coisa que a UI vê (`abc••••••wxyz`); **o texto-claro nunca chega ao cliente e nunca pousa numa linha de `provider`.**
106
+
107
+ | Coluna | Significado |
108
+ | --- | --- |
109
+ | `workspaceId` | Workspace dono (deletado em cascade com a org). |
110
+ | `providerId` | Link opcional para uma linha de `provider`. |
111
+ | `ref` | Nome lógico, ex.: `openai_api_key`, `github_pat`, `telegram_bot_token`. |
112
+ | `ciphertext` | Base64 de `enc‖tag`. |
113
+ | `iv` | Base64 do nonce GCM de 12 bytes. |
114
+
115
+ ---
116
+
117
+ ## 🧹 Scrub de segredos
118
+
119
+ `src/lib/scrub.ts` é a última linha antes de qualquer texto de agente chegar a um sink voltado a humanos (Telegram, Team Room, DMs, notificações, API pública, logs). `scrubSecrets(text, extra)`:
120
+
121
+ - Redige os três segredos de env `CONSTELLA_VAULT_KEY`, `BETTER_AUTH_SECRET`, `CONSTELLA_WORKER_SECRET` (mais quaisquer valores `extra` fornecidos pelo chamador ≥ 8 chars) por substituição literal → `[redacted]`.
122
+ - Redige **formatos de credencial** inline de alta confiança via uma regex combinada: OpenAI/Anthropic `sk-…`, GitHub `gh[posru]_…` e `github_pat_…`, AWS `AKIA…`, Google `AIza…`, Slack `xox[baprs]-…`, JWTs, chaves privadas PEM, o PAT da Constella `cn_…` e tokens de bot do Telegram.
123
+ - **Nunca lança erro.** `redactForLog()` é o mesmo scrub para linhas de log que interpolam saída de ferramenta.
124
+
125
+ Os mesmos formatos alimentam os gates de varredura de segredos de git/export/publish, então um padrão de credencial é tratado de forma idêntica quer fosse *ecoado* quer *commitado*.
126
+
127
+ ---
128
+
129
+ ## 🛡️ Command guard
130
+
131
+ `bin/guard-hook.mjs` é um hook **PreToolUse** do Claude Code injetado (quando `cmdGuard` está ligado — padrão) por `src/server/adapters/cli.ts`. Antes de qualquer execução de `Bash` ele compara o comando contra uma deny-list estreita e, num acerto, escreve um motivo no stderr e sai com `2` (o Claude Code devolve o stderr ao modelo como bloqueio):
132
+
133
+ | Padrão bloqueado | Motivo |
134
+ | --- | --- |
135
+ | `rm -rf /` · `~` · `$HOME` · `/*` · `..` | force-delete recursivo de um caminho raiz / home / cwd |
136
+ | `git push … --force` / `-f` / `--force-with-lease` | force-push para um remoto git |
137
+ | `git reset --hard … origin/` | hard reset sobre uma ref remota |
138
+ | `:(){ :|:& };:` | fork bomb |
139
+ | `mkfs[.fs]` | formatação de sistema de arquivos |
140
+ | `dd … of=/dev/…` | escrita bruta num device |
141
+ | `> /dev/sd…|nvme…|disk…|mapper…` | redirecionamento sobre um device de disco bruto |
142
+ | `chmod -R 000` | chmod 000 recursivo |
143
+ | `shutdown` / `reboot` / `halt` / `poweroff` | comando de energia / desligamento |
144
+ | `curl\|wget … \| sh/bash/zsh` | encanar um script baixado direto num shell |
145
+
146
+ É **intencionalmente estreito** (apenas formatos inequívocos, de baixo falso-positivo) e **falha aberto** em tudo o mais, então uma execução legítima nunca trava de vez. Negações são anexadas a `.claude/guard-denials.jsonl` (um `.jsonl`, então o RAG — que indexa só `.md` — nunca o recupera). Alterne via `settings.agents.cmdGuard` por workspace ou env `CONSTELLA_AGENT_CMD_GUARD` (padrão ligado; `=0` desativa).
147
+
148
+ ---
149
+
150
+ ## 🔐 Locks de arquivo (segurança de agentes paralelos)
151
+
152
+ `bin/lock-hook.mjs` (PreToolUse em `Write|Edit|MultiEdit|NotebookEdit`) é injetado apenas quando `CONSTELLA_AGENT_LOCK_HOOK=1` (ou `settings.agents.fileLocks` por workspace). Antes de uma edição ele faz POST em `/api/locks/acquire` (loopback, `x-worker-secret`). O lado servidor (`src/server/file-locks.ts`):
153
+
154
+ - `acquireLock()` é uma linha por `(workspaceId, path)`. A **mesma** task ou agente re-adquire (heartbeat); qualquer outro recebe um `423` com `heldBy`, e o hook diz ao modelo para editar um arquivo diferente.
155
+ - `normalizeLockPath()` pula dirs base/config (`.git/`, `.claude/`, `archives/`) e rejeita qualquer coisa fora do workspace.
156
+ - `releaseLocksForTask()` libera locks ao concluir a task; `reclaimStaleLocks(ttlMs = 5min)` recupera locks de uma execução que travou pelo TTL de heartbeat (segurança contra crash).
157
+
158
+ Ambos os hooks **falham abertos** em qualquer condição inesperada (sem contexto, falha de rede, ferramenta não-edição) — um problema de hook nunca deve travar de vez uma execução.
159
+
160
+ > 🪐 *Dois agentes na mesma órbita não podem colidir no mesmo arquivo — o lock é a preferência de passagem.*
161
+
162
+ ---
163
+
164
+ ## stars Sandbox do agente por run-mode
165
+
166
+ `src/server/adapters/cli.ts` decide quanto poder o CLI de um agente ganha, **guiado por `CONSTELLA_RUN_MODE`** (sobreponível com `CONSTELLA_AGENT_FULL_ACCESS=1|0`):
167
+
168
+ | Run mode | Bind | `AGENT_FULL_ACCESS` | claude `--permission-mode` | sandbox `-s` do codex | Rede/exec |
169
+ | --- | --- | --- | --- | --- | --- |
170
+ | `start` (local) | `127.0.0.1` | **ligado** (padrão) | `bypassPermissions` | `danger-full-access` | completo: instala deps + roda testes |
171
+ | `auth` | `127.0.0.1` | desligado | `acceptEdits` | `workspace-write` | só edições, sem rede |
172
+ | `vps` | `0.0.0.0` | desligado | `acceptEdits` | `workspace-write` | só edições — *além* do container Docker + Tailscale serem a cela dura |
173
+ | `portable` | `0.0.0.0` | desligado | `acceptEdits` | `workspace-write` | só edições |
174
+
175
+ Defesa em profundidade: modos de prod já rodam dentro de Docker + Tailscale (o container é a cela real); o CLI fica restrito por cima. Mais duas proteções no spawn do agente:
176
+
177
+ - **Agentes vanilla** — agentes rodam independentes dos hooks/plugins pessoais do `~/.claude` do operador via um overlay `--settings {disableAllHooks:true}` (ou um `CLAUDE_CONFIG_DIR` limpo carregando apenas os hooks de lock/guard da Constella). A auth permanece intacta (as credenciais do operador são copiadas).
178
+ - **Sem injeção de shell via id de modelo** — `safeModel()` / `safeModelSlash()` validam a string de modelo (que se origina do frontmatter de `Agent.md`, gravável pelo agente) contra um charset estrito antes de chegar ao argv num spawn `shell: true`, então `sonnet"; rm -rf ~` não pode ser re-interpretado pelo shell. Chamadas de git/`gh` usam `shell: false` para que args de branch/mensagem/path sejam passados literalmente.
179
+
180
+ ---
181
+
182
+ ## 🚀 Auth, 2FA, passkeys e papéis
183
+
184
+ `src/lib/auth.ts` configura o **better-auth** sobre o adapter do drizzle:
185
+
186
+ - **E-mail + senha** — sempre habilitado (`autoSignIn: true`, sem verificação de e-mail). Obrigatório para `auth` / `vps` / `portable`.
187
+ - **Modo `start`** cria e autentica automaticamente um operador local (`operator@constella.dev` / `operator123`), então a tela de login é pulada — local, apenas loopback.
188
+ - **2FA TOTP** — o plugin `twoFactor()` sustenta TOTP real; segredos vivem na tabela `two_factor` (segredo TOTP + códigos de backup).
189
+ - **Passkeys WebAuthn** — rotas customizadas `/api/passkey/*` sobre `@simplewebauthn`; credenciais na tabela `passkey` (chave pública COSE base64url, counter, transports). `src/lib/passkey.ts` mantém o relying-party id = hostname puro (`rpID()`), origem esperada = base URL completa, e guarda desafios em cookies httpOnly de vida curta (`maxAge: 300`) entre os round-trips de options/verify.
190
+ - **Sessões** — `expiresIn` de 30 dias. Cookies são marcados `Secure` sempre que a app é servida sobre HTTPS (`useSecureCookies` derivado da base URL) — então uma instalação `auth`/`portable` atrás de um proxy HTTPS ou Tailscale fica protegida, enquanto o http local do `start` permanece relaxado.
191
+ - **Assinatura fail-closed** — `assertAuthSecret()` (chamado uma vez no boot) **lança erro** em qualquer modo de rede sem `BETTER_AUTH_SECRET`; sem ele, sessões seriam forjáveis. `start` é isento (loopback, login automático).
192
+ - **Papéis de org** — a tabela `member` carrega `role: owner | admin | member` (padrão `owner`). Após o login, `requireWorkspace()` resolve a org ativa por um join em `member`, então uma sessão nunca aponta para a org de outro tenant.
193
+
194
+ Providers sociais (`github`, `google`) só são registrados quando suas env vars `*_CLIENT_ID` / `*_CLIENT_SECRET` estão presentes; o escopo OAuth `repo` do GitHub permite que um login sirva também como token de commit/push (armazenado na linha `account`).
195
+
196
+ ---
197
+
198
+ ## 🛰️ Worker secret e guarda SSRF
199
+
200
+ O worker (`bin/worker.mjs`) detém o privilegiado `CONSTELLA_WORKER_SECRET` e o anexa como header `x-worker-secret` em suas chamadas. Duas propriedades de segurança:
201
+
202
+ 1. **Endpoints privilegiados falham FECHADOS.** `/api/cron/tick`, `/api/sync/file`, `/api/locks/acquire`, `/api/telegram/poll` todos rejeitam (`401`) a menos que `x-worker-secret` bata com o segredo configurado. Sem um segredo configurado, `/api/cron/tick` se recusa a rodar — caso contrário qualquer um poderia disparar execução real de agentes (que gasta tokens) em todos os workspaces.
203
+ 2. **Guarda SSRF / exfiltração de segredo.** Quem controla a env (unit do systemd, env do Docker, shell) poderia apontar `CONSTELLA_BASE_URL` para um host atacante e colher o segredo. Então o worker calcula `baseHost` e se recusa a enviar o segredo a qualquer host não-loopback (`localhost`, `127.0.0.1`, `::1`) a menos que `CONSTELLA_ALLOW_REMOTE_WORKER_BASE_URL=1` esteja explicitamente definido. Uma base `http://` remota (com o override ligado) imprime um aviso de texto-claro. O launcher sempre define a base do worker como `http://127.0.0.1:<port>` — loopback mesmo em `vps` / `portable` — então o padrão é seguro.
204
+
205
+ ---
206
+
207
+ ## 🔭 Os segredos de boot
208
+
209
+ `bin/constella.mjs` persiste três segredos sob a raiz de runtime, gerando cada um uma vez e reusando-o entre reinícios (para que sessões e o vault criptografado sobrevivam a um restart):
210
+
211
+ | Segredo | Gerador | Usado para |
212
+ | --- | --- | --- |
213
+ | `BETTER_AUTH_SECRET` | `randomBytes(32).base64url` | Assina sessões do better-auth (forjáveis sem ele). |
214
+ | `CONSTELLA_VAULT_KEY` | `randomBytes(32).base64` | Chave AES-256-GCM do vault. |
215
+ | `CONSTELLA_WORKER_SECRET` | `randomBytes(24).base64url` | Autoriza os endpoints privilegiados do worker. |
216
+
217
+ São escritos em `<HOME>/.env` com `mode: 0600` (depois `chmodSync(0o600)` best-effort no Windows) e **nunca impressos** — os logs de boot só dizem `Secrets ready (stored in <ENV_FILE>, never printed).`
218
+
219
+ ---
220
+
221
+ ## ✦ Superfície da API pública
222
+
223
+ A API pública (`/api/v1/*`) autentica com um **Personal Access Token** `cn_<token>` — apenas seu **hash SHA-256** é armazenado em `personal_access_token` (texto-claro mostrado uma vez na criação). Tokens carregam um `scope` (`read` | `write`), têm rate-limit de **120 req/min/token**, e um header opcional `X-Constella-Org` seleciona a org. Veja [PUBLIC_API.md](./PUBLIC_API.md) e [MCP.md](./MCP.md).
224
+
225
+ ---
226
+
227
+ ## 🪐 Estados possíveis
228
+
229
+ | Estado | Gatilho | Efeito |
230
+ | --- | --- | --- |
231
+ | **Boot recusado** | modo de rede, sem `BETTER_AUTH_SECRET` | `assertAuthSecret()` lança — o servidor não inicia. |
232
+ | **Worker recusado** | base não-loopback, sem override | Worker sai com 1 (guarda SSRF). |
233
+ | **401 unauthorized** | `x-worker-secret` ausente/errado | Endpoint de cron/sync/lock/telegram rejeita. |
234
+ | **Path escape bloqueado** | traversal ou escape via symlink | `safe()` lança `Path escapes workspace`. |
235
+ | **Comando bloqueado** | shell catastrófico | guard-hook sai com 2, o modelo lê o motivo. |
236
+ | **423 file locked** | outro agente detém o arquivo | lock-hook diz ao modelo para editar outro lugar. |
237
+ | **Export/publish bloqueado** | achado de varredura de segredos | export/publish aborta antes do push. |
238
+ | **Chave do vault inválida** | chave ausente / tamanho errado | `key()` lança; segredos não podem ser lidos/escritos. |
239
+
240
+ ---
241
+
242
+ ## 🛰️ Integrações relacionadas
243
+
244
+ - [AUTH_MODE.md](./AUTH_MODE.md) · [VPS_MODE.md](./VPS_MODE.md) · [PORTABLE_MODE.md](./PORTABLE_MODE.md) — os run modes expostos à rede e suas barreiras.
245
+ - [ARCHITECTURE.md](./ARCHITECTURE.md) — o isolamento de org, o motor de sync e o processo worker.
246
+ - [AGENTS.md](./AGENTS.md) · [AI_ARCHITECTURE.md](./AI_ARCHITECTURE.md) — como os agentes executam (a sandbox mora aqui).
247
+ - [PUBLIC_API.md](./PUBLIC_API.md) · [MCP.md](./MCP.md) — PATs, escopos e rate limits.
248
+ - [PREPARE_DEPLOY.md](./PREPARE_DEPLOY.md) · [DEPLOY.md](./DEPLOY.md) · [PUBLISHING.md](./PUBLISHING.md) — builds de árvore limpa e os gates de varredura de segredos.
249
+
250
+ ---
251
+
252
+ ## 🕳️ Solução de problemas
253
+
254
+ | Sintoma | Causa provável | Correção |
255
+ | --- | --- | --- |
256
+ | Servidor não inicia em `auth`/`vps`/`portable` | `BETTER_AUTH_SECRET` não definido | Deixe o launcher gerá-lo, ou defina-o em `<HOME>/.env`. |
257
+ | Worker sai com "Refusing to send the worker secret…" | `CONSTELLA_BASE_URL` é não-loopback | Use `127.0.0.1`, ou defina `CONSTELLA_ALLOW_REMOTE_WORKER_BASE_URL=1` (e prefira `https://`). |
258
+ | Agente não consegue rodar `npm install` / testes | modo de prod (cela `acceptEdits`) | Esperado; defina `CONSTELLA_AGENT_FULL_ACCESS=1` só se aceitar o risco. |
259
+ | Um comando legítimo é bloqueado | acerto na deny-list do guard-hook | Rode você mesmo, ou desative via `settings.agents.cmdGuard` / `CONSTELLA_AGENT_CMD_GUARD=0`. |
260
+ | Agentes falam com a voz do operador | hooks do `~/.claude` do operador vazaram | Garanta que o overlay vanilla `disableAllHooks` se aplica (padrão); confira a cópia de credenciais. |
261
+ | Erro "Path escapes workspace" | symlink ou traversal num caminho de workspace | Intencional — a cela de FS o bloqueou. |
262
+ | Endpoint de cron retorna 401 | `x-worker-secret` ausente/obsoleto | Confirme que o worker herda `CONSTELLA_WORKER_SECRET` da mesma env de processo. |
263
+ | Botão de passkey falha | `BETTER_AUTH_URL` divergente (RP id) | Defina `BETTER_AUTH_URL` para a origem exata pela qual você navega. |
264
+
265
+ ---
266
+
267
+ ## ✦ Links relacionados
268
+
269
+ - [AUTH_MODE.md](./AUTH_MODE.md)
270
+ - [VPS_MODE.md](./VPS_MODE.md)
271
+ - [PORTABLE_MODE.md](./PORTABLE_MODE.md)
272
+ - [ARCHITECTURE.md](./ARCHITECTURE.md)
273
+ - [AI_ARCHITECTURE.md](./AI_ARCHITECTURE.md)
274
+ - [AGENTS.md](./AGENTS.md)
275
+ - [PUBLIC_API.md](./PUBLIC_API.md)
276
+ - [MCP.md](./MCP.md)
277
+ - [PREPARE_DEPLOY.md](./PREPARE_DEPLOY.md)
278
+ - [PUBLISHING.md](./PUBLISHING.md)
279
+ - [CONFIGURATION.md](./CONFIGURATION.md)
280
+ - [TROUBLESHOOTING.md](./TROUBLESHOOTING.md)