nodal-agents 0.9.0 → 0.9.2

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 (275) hide show
  1. package/cli.js +727 -62
  2. package/docs-index.json +1524 -0
  3. package/migrations/0118_agent_jobs_deliverable_check_due.sql +53 -0
  4. package/migrations/0119_job_checkpoints_snapshot_ms.sql +51 -0
  5. package/migrations/0120_excluded_project_paths.sql +38 -0
  6. package/migrations/0121_entities_proof_repair_attempts.sql +32 -0
  7. package/migrations/0122_entities_drop_memory_curation_enabled.sql +17 -0
  8. package/migrations/meta/_journal.json +35 -0
  9. package/package.json +2 -1
  10. package/runner.js +5541 -4081
  11. package/web/.next/BUILD_ID +1 -1
  12. package/web/.next/app-path-routes-manifest.json +1 -1
  13. package/web/.next/build-manifest.json +2 -2
  14. package/web/.next/prerender-manifest.json +5 -5
  15. package/web/.next/server/app/(dashboard)/agents/[id]/channels/page.js +1 -1
  16. package/web/.next/server/app/(dashboard)/agents/[id]/channels/page_client-reference-manifest.js +1 -1
  17. package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js +4 -4
  18. package/web/.next/server/app/(dashboard)/agents/[id]/edit/page_client-reference-manifest.js +1 -1
  19. package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js +1 -1
  20. package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page_client-reference-manifest.js +1 -1
  21. package/web/.next/server/app/(dashboard)/agents/page.js +1 -1
  22. package/web/.next/server/app/(dashboard)/agents/page_client-reference-manifest.js +1 -1
  23. package/web/.next/server/app/(dashboard)/approvals/page.js +1 -1
  24. package/web/.next/server/app/(dashboard)/approvals/page_client-reference-manifest.js +1 -1
  25. package/web/.next/server/app/(dashboard)/automations/[id]/page.js +1 -1
  26. package/web/.next/server/app/(dashboard)/automations/[id]/page_client-reference-manifest.js +1 -1
  27. package/web/.next/server/app/(dashboard)/automations/page.js +1 -1
  28. package/web/.next/server/app/(dashboard)/automations/page_client-reference-manifest.js +1 -1
  29. package/web/.next/server/app/(dashboard)/chat/[id]/page.js +1 -1
  30. package/web/.next/server/app/(dashboard)/chat/[id]/page_client-reference-manifest.js +1 -1
  31. package/web/.next/server/app/(dashboard)/chat/page.js +1 -1
  32. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  33. package/web/.next/server/app/(dashboard)/code/[id]/page.js +1 -1
  34. package/web/.next/server/app/(dashboard)/code/[id]/page_client-reference-manifest.js +1 -1
  35. package/web/.next/server/app/(dashboard)/code/page.js +1 -1
  36. package/web/.next/server/app/(dashboard)/code/page_client-reference-manifest.js +1 -1
  37. package/web/.next/server/app/(dashboard)/connectors/page.js +1 -1
  38. package/web/.next/server/app/(dashboard)/connectors/page_client-reference-manifest.js +1 -1
  39. package/web/.next/server/app/(dashboard)/credentials/page.js +1 -1
  40. package/web/.next/server/app/(dashboard)/credentials/page_client-reference-manifest.js +1 -1
  41. package/web/.next/server/app/(dashboard)/dashboard/page.js +1 -1
  42. package/web/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  43. package/web/.next/server/app/(dashboard)/jobs/[id]/page.js +1 -1
  44. package/web/.next/server/app/(dashboard)/jobs/[id]/page_client-reference-manifest.js +1 -1
  45. package/web/.next/server/app/(dashboard)/jobs/page.js +1 -1
  46. package/web/.next/server/app/(dashboard)/jobs/page_client-reference-manifest.js +1 -1
  47. package/web/.next/server/app/(dashboard)/learned-skills/page.js +1 -1
  48. package/web/.next/server/app/(dashboard)/learned-skills/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/(dashboard)/llm-providers/page.js +1 -1
  50. package/web/.next/server/app/(dashboard)/llm-providers/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/app/(dashboard)/logs/page.js +1 -1
  52. package/web/.next/server/app/(dashboard)/logs/page_client-reference-manifest.js +1 -1
  53. package/web/.next/server/app/(dashboard)/mcp/page.js +1 -1
  54. package/web/.next/server/app/(dashboard)/mcp/page_client-reference-manifest.js +1 -1
  55. package/web/.next/server/app/(dashboard)/memories/page.js +1 -1
  56. package/web/.next/server/app/(dashboard)/memories/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/(dashboard)/page.js +1 -1
  58. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  59. package/web/.next/server/app/(dashboard)/scheduled/[id]/page.js +1 -1
  60. package/web/.next/server/app/(dashboard)/scheduled/[id]/page_client-reference-manifest.js +1 -1
  61. package/web/.next/server/app/(dashboard)/scheduled/page.js +1 -1
  62. package/web/.next/server/app/(dashboard)/scheduled/page_client-reference-manifest.js +1 -1
  63. package/web/.next/server/app/(dashboard)/settings/page.js +1 -1
  64. package/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  65. package/web/.next/server/app/(dashboard)/settings/root-context/page.js +1 -1
  66. package/web/.next/server/app/(dashboard)/settings/root-context/page_client-reference-manifest.js +1 -1
  67. package/web/.next/server/app/(dashboard)/skills/[id]/edit/page.js +1 -1
  68. package/web/.next/server/app/(dashboard)/skills/[id]/edit/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/skills/new/page.js +1 -1
  70. package/web/.next/server/app/(dashboard)/skills/new/page_client-reference-manifest.js +1 -1
  71. package/web/.next/server/app/(dashboard)/skills/page.js +1 -1
  72. package/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/(dashboard)/spaces/[id]/files/page.js +1 -1
  74. package/web/.next/server/app/(dashboard)/spaces/[id]/files/page_client-reference-manifest.js +1 -1
  75. package/web/.next/server/app/(dashboard)/spaces/[id]/page.js +1 -1
  76. package/web/.next/server/app/(dashboard)/spaces/[id]/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/(dashboard)/spaces/page.js +1 -1
  78. package/web/.next/server/app/(dashboard)/spaces/page_client-reference-manifest.js +1 -1
  79. package/web/.next/server/app/_global-error/page.js +2 -2
  80. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/_global-error.html +1 -1
  82. package/web/.next/server/app/_global-error.rsc +2 -2
  83. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  84. package/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
  85. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  86. package/web/.next/server/app/_not-found/page.js +1 -1
  87. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  88. package/web/.next/server/app/_not-found.html +1 -1
  89. package/web/.next/server/app/_not-found.rsc +5 -4
  90. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +5 -4
  91. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +14 -13
  92. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  93. package/web/.next/server/app/api/chat/stream/route.js +1 -1
  94. package/web/.next/server/app/api/health/route.js +1 -1
  95. package/web/.next/server/app/api/oauth/[provider]/callback/route.js +1 -1
  96. package/web/.next/server/app/api/oauth/[provider]/start/route.js +1 -1
  97. package/web/.next/server/app/login/page.js +1 -1
  98. package/web/.next/server/app/login/page_client-reference-manifest.js +1 -1
  99. package/web/.next/server/app/onboarding/page.js +2 -2
  100. package/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app-paths-manifest.json +1 -1
  102. package/web/.next/server/chunks/1041.js +5 -0
  103. package/web/.next/server/chunks/1447.js +1 -1
  104. package/web/.next/server/chunks/168.js +1 -0
  105. package/web/.next/server/chunks/{3431.js → 192.js} +2 -2
  106. package/web/.next/server/chunks/1960.js +1 -0
  107. package/web/.next/server/chunks/{4332.js → 2096.js} +1 -1
  108. package/web/.next/server/chunks/292.js +1 -0
  109. package/web/.next/server/chunks/2933.js +1 -0
  110. package/web/.next/server/chunks/3370.js +1 -0
  111. package/web/.next/server/chunks/3592.js +1 -1
  112. package/web/.next/server/chunks/3675.js +1 -0
  113. package/web/.next/server/chunks/409.js +1 -0
  114. package/web/.next/server/chunks/42.js +3 -3
  115. package/web/.next/server/chunks/4357.js +1 -1
  116. package/web/.next/server/chunks/494.js +1 -0
  117. package/web/.next/server/chunks/5547.js +1 -0
  118. package/web/.next/server/chunks/5554.js +1 -0
  119. package/web/.next/server/chunks/570.js +1 -0
  120. package/web/.next/server/chunks/5804.js +1 -1
  121. package/web/.next/server/chunks/5974.js +1 -0
  122. package/web/.next/server/chunks/6020.js +1 -1
  123. package/web/.next/server/chunks/6106.js +1 -0
  124. package/web/.next/server/chunks/{2198.js → 6213.js} +39 -23
  125. package/web/.next/server/chunks/692.js +1806 -0
  126. package/web/.next/server/chunks/{2076.js → 7134.js} +7 -7
  127. package/web/.next/server/chunks/7431.js +1 -0
  128. package/web/.next/server/chunks/7533.js +1 -0
  129. package/web/.next/server/chunks/{7957.js → 7663.js} +5 -5
  130. package/web/.next/server/chunks/7709.js +1 -0
  131. package/web/.next/server/chunks/7915.js +1 -0
  132. package/web/.next/server/chunks/8022.js +1 -0
  133. package/web/.next/server/chunks/8536.js +3 -0
  134. package/web/.next/server/chunks/8974.js +63 -47
  135. package/web/.next/server/chunks/9200.js +1 -0
  136. package/web/.next/server/chunks/9557.js +1 -0
  137. package/web/.next/server/middleware-build-manifest.js +1 -1
  138. package/web/.next/server/middleware.js +67 -67
  139. package/web/.next/server/pages/404.html +1 -1
  140. package/web/.next/server/pages/500.html +1 -1
  141. package/web/.next/server/server-reference-manifest.js +1 -1
  142. package/web/.next/server/server-reference-manifest.json +1 -1
  143. package/web/.next/static/chunks/1054-08930540869affcc.js +1 -0
  144. package/web/.next/static/chunks/1091-6d0af9f18ddf99f6.js +1 -0
  145. package/web/.next/static/chunks/1332-c8bed6b750598652.js +1 -0
  146. package/web/.next/static/chunks/{1789-87079e34582418b3.js → 1789-b436bca079b82fcc.js} +1 -1
  147. package/web/.next/static/chunks/{2194-f112ed9e30bd88fb.js → 2194-f3fed902cfeb85b5.js} +1 -1
  148. package/web/.next/static/chunks/296-1b50dd61ac3198f4.js +1 -0
  149. package/web/.next/static/chunks/3051-26ddd67461f743c4.js +1 -0
  150. package/web/.next/static/chunks/3159-f25525771781f5aa.js +1 -0
  151. package/web/.next/static/chunks/341-020b1c47a0991a37.js +1 -0
  152. package/web/.next/static/chunks/{5361-f266407b731effcd.js → 3742-ab3951ecba6248c1.js} +1 -1
  153. package/web/.next/static/chunks/377-4f2ca8d34e126b26.js +1 -0
  154. package/web/.next/static/chunks/3775-3a5a749d63c785a1.js +3 -0
  155. package/web/.next/static/chunks/390-d6132d3a117487df.js +1 -0
  156. package/web/.next/static/chunks/4020-9778230f3cc2164a.js +1 -0
  157. package/web/.next/static/chunks/4771-a0aadf337f224b72.js +1 -0
  158. package/web/.next/static/chunks/494-ed02d105fa0ac132.js +1 -0
  159. package/web/.next/static/chunks/5034-fc9997ff33a114aa.js +1 -0
  160. package/web/.next/static/chunks/{8551-3e88dff507375393.js → 5925-76337eacde3c3bc8.js} +39 -23
  161. package/web/.next/static/chunks/611-e150bff7f1f9dc6c.js +1 -0
  162. package/web/.next/static/chunks/6937-f57b8514bf03179e.js +3 -0
  163. package/web/.next/static/chunks/{7717-41f70e449a27eb21.js → 7879-67ac5a52d74c20d2.js} +1 -1
  164. package/web/.next/static/chunks/7920-40dc6aa63e653d6b.js +1 -0
  165. package/web/.next/static/chunks/8312-6ca4507c5413a23d.js +1 -0
  166. package/web/.next/static/chunks/870-b7151716d04a13c3.js +1 -0
  167. package/web/.next/static/chunks/8794-2a616d1f9c210117.js +1 -0
  168. package/web/.next/static/chunks/8861-a108ed6178a56b21.js +1 -0
  169. package/web/.next/static/chunks/{3196-464a892bb967ebe9.js → 9311-bdd05e5b6fb92a88.js} +1 -1
  170. package/web/.next/static/chunks/9598-202b803aea26a949.js +1 -0
  171. package/web/.next/static/chunks/{9643-135a5b7d3abd518c.js → 9643-e9c8a744dd98813d.js} +1 -1
  172. package/web/.next/static/chunks/{8606-679d56e81c4e4550.js → 9765-1501903a64e09ac0.js} +1 -1
  173. package/web/.next/static/chunks/9952-992cabfb077d287c.js +1 -0
  174. package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-5ca9c1eef4d0f837.js +6 -0
  175. package/web/.next/static/chunks/app/(dashboard)/agents/page-5ffa4a2468c1f95a.js +1 -0
  176. package/web/.next/static/chunks/app/(dashboard)/approvals/page-cd46d5e439a20d3e.js +1 -0
  177. package/web/.next/static/chunks/app/(dashboard)/automations/[id]/page-9ef1d76121b6030d.js +1 -0
  178. package/web/.next/static/chunks/app/(dashboard)/automations/page-46eeaa40df9e58f8.js +1 -0
  179. package/web/.next/static/chunks/app/(dashboard)/chat/[id]/page-25e095bf0cdd1c40.js +1 -0
  180. package/web/.next/static/chunks/app/(dashboard)/chat/page-e2df1a328e18da7a.js +1 -0
  181. package/web/.next/static/chunks/app/(dashboard)/code/[id]/page-f5f7624cfbb32ee2.js +1 -0
  182. package/web/.next/static/chunks/app/(dashboard)/connectors/page-2ecbfc5836577888.js +1 -0
  183. package/web/.next/static/chunks/app/(dashboard)/credentials/page-cb6bc64b82b8fb28.js +1 -0
  184. package/web/.next/static/chunks/app/(dashboard)/dashboard/{page-fd2a41310f716a3e.js → page-7473d1190864cbd4.js} +1 -1
  185. package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-47e177ab46926fd7.js +1 -0
  186. package/web/.next/static/chunks/app/(dashboard)/layout-0b429859260736b2.js +1 -0
  187. package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-596d973a31e774db.js +1 -0
  188. package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-ba1968c9430c4dd4.js +1 -0
  189. package/web/.next/static/chunks/app/(dashboard)/logs/page-f74da6f66116c7e7.js +1 -0
  190. package/web/.next/static/chunks/app/(dashboard)/mcp/page-07bdc6780b13cfca.js +1 -0
  191. package/web/.next/static/chunks/app/(dashboard)/memories/page-593161bc7c2a25d7.js +1 -0
  192. package/web/.next/static/chunks/app/(dashboard)/page-889d6e89a8f679f8.js +1 -0
  193. package/web/.next/static/chunks/app/(dashboard)/scheduled/[id]/page-47e177ab46926fd7.js +1 -0
  194. package/web/.next/static/chunks/app/(dashboard)/settings/page-1b40e127c38affda.js +1 -0
  195. package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-6b7e1cffcad40a6a.js +1 -0
  196. package/web/.next/static/chunks/app/(dashboard)/skills/page-3ad87d1a3fbb4f05.js +1 -0
  197. package/web/.next/static/chunks/app/(dashboard)/spaces/[id]/files/page-4e2d27f80456a1ba.js +1 -0
  198. package/web/.next/static/chunks/app/(dashboard)/spaces/[id]/page-c81023eaa26c2c7a.js +1 -0
  199. package/web/.next/static/chunks/app/(dashboard)/spaces/page-9dbb35822503481b.js +1 -0
  200. package/web/.next/static/chunks/app/layout-ef76b16f6546678c.js +1 -0
  201. package/web/.next/static/chunks/app/login/page-5357f030e5018563.js +1 -0
  202. package/web/.next/static/chunks/app/onboarding/page-9b6955cdd3033584.js +26 -0
  203. package/web/.next/static/css/099c0b54fc41e5b0.css +1 -0
  204. package/web/public/logo-128.png +0 -0
  205. package/web/.next/server/chunks/1239.js +0 -1
  206. package/web/.next/server/chunks/1505.js +0 -3
  207. package/web/.next/server/chunks/1632.js +0 -1
  208. package/web/.next/server/chunks/1813.js +0 -1
  209. package/web/.next/server/chunks/2040.js +0 -1
  210. package/web/.next/server/chunks/2310.js +0 -1
  211. package/web/.next/server/chunks/2800.js +0 -1790
  212. package/web/.next/server/chunks/3340.js +0 -1
  213. package/web/.next/server/chunks/3432.js +0 -1
  214. package/web/.next/server/chunks/3580.js +0 -1
  215. package/web/.next/server/chunks/4722.js +0 -3
  216. package/web/.next/server/chunks/5276.js +0 -1
  217. package/web/.next/server/chunks/603.js +0 -1
  218. package/web/.next/server/chunks/7719.js +0 -1
  219. package/web/.next/server/chunks/7781.js +0 -1
  220. package/web/.next/server/chunks/8025.js +0 -3
  221. package/web/.next/server/chunks/8118.js +0 -1
  222. package/web/.next/server/chunks/9637.js +0 -1
  223. package/web/.next/server/chunks/976.js +0 -1
  224. package/web/.next/server/chunks/9939.js +0 -1
  225. package/web/.next/static/chunks/1091-de54f0c0a4d82875.js +0 -1
  226. package/web/.next/static/chunks/114-26058433e4e0911e.js +0 -1
  227. package/web/.next/static/chunks/1219-d120dd8740b553b7.js +0 -1
  228. package/web/.next/static/chunks/146-923ebb6e4b12939e.js +0 -1
  229. package/web/.next/static/chunks/2057-de712956dc309abd.js +0 -1
  230. package/web/.next/static/chunks/2628-662c74c9bc8efdfd.js +0 -1
  231. package/web/.next/static/chunks/2767-84a838e67c8ed919.js +0 -1
  232. package/web/.next/static/chunks/3051-63316a56c4c77b78.js +0 -1
  233. package/web/.next/static/chunks/341-d382e4df5fdd8639.js +0 -1
  234. package/web/.next/static/chunks/4229-5ad9bb0c30eeb117.js +0 -1
  235. package/web/.next/static/chunks/443-b0581a9d59c5eddd.js +0 -1
  236. package/web/.next/static/chunks/4507-e4e79584af8a3dfb.js +0 -1
  237. package/web/.next/static/chunks/4646-daae31f9eaa82ad1.js +0 -3
  238. package/web/.next/static/chunks/5034-1424be65bb762fe0.js +0 -1
  239. package/web/.next/static/chunks/6449-2552e9fd471012bc.js +0 -1
  240. package/web/.next/static/chunks/6974-c390b37b943e5e3a.js +0 -1
  241. package/web/.next/static/chunks/750-5f0494d3bcce44e4.js +0 -1
  242. package/web/.next/static/chunks/7890-8030bd449325507e.js +0 -1
  243. package/web/.next/static/chunks/8288-46c8ea403691cbd8.js +0 -3
  244. package/web/.next/static/chunks/8571-6149c8881bddf392.js +0 -1
  245. package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-0a2201e25891e65a.js +0 -6
  246. package/web/.next/static/chunks/app/(dashboard)/agents/page-8dd4afd99c54c317.js +0 -1
  247. package/web/.next/static/chunks/app/(dashboard)/approvals/page-c346b6514a0fb344.js +0 -1
  248. package/web/.next/static/chunks/app/(dashboard)/automations/[id]/page-2ff06d1d46372539.js +0 -1
  249. package/web/.next/static/chunks/app/(dashboard)/automations/page-e70ea0434087cad1.js +0 -1
  250. package/web/.next/static/chunks/app/(dashboard)/chat/[id]/page-600249784190e2a4.js +0 -1
  251. package/web/.next/static/chunks/app/(dashboard)/chat/page-48666512a1c0ac50.js +0 -1
  252. package/web/.next/static/chunks/app/(dashboard)/code/[id]/page-f84236cea1b8e8bd.js +0 -1
  253. package/web/.next/static/chunks/app/(dashboard)/connectors/page-de164554b77a1fa4.js +0 -1
  254. package/web/.next/static/chunks/app/(dashboard)/credentials/page-0741d2da25807489.js +0 -1
  255. package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-702e9eeea18c7ea0.js +0 -1
  256. package/web/.next/static/chunks/app/(dashboard)/layout-1fe1669ec7dc1c13.js +0 -1
  257. package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-a76814c4a20ecd33.js +0 -1
  258. package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-aa611ab9ff0baff2.js +0 -1
  259. package/web/.next/static/chunks/app/(dashboard)/logs/page-f22178e7e15984c1.js +0 -1
  260. package/web/.next/static/chunks/app/(dashboard)/mcp/page-8b248ee23cc92855.js +0 -1
  261. package/web/.next/static/chunks/app/(dashboard)/memories/page-69955b9596175468.js +0 -1
  262. package/web/.next/static/chunks/app/(dashboard)/page-4432bf6e8e594109.js +0 -1
  263. package/web/.next/static/chunks/app/(dashboard)/scheduled/[id]/page-f4857bc821e8868b.js +0 -1
  264. package/web/.next/static/chunks/app/(dashboard)/settings/page-2e6cbceef74a8f8a.js +0 -1
  265. package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-63c38b3c419dfbbc.js +0 -1
  266. package/web/.next/static/chunks/app/(dashboard)/skills/page-99aea8c35e06402b.js +0 -1
  267. package/web/.next/static/chunks/app/(dashboard)/spaces/[id]/files/page-226d430d003759c2.js +0 -1
  268. package/web/.next/static/chunks/app/(dashboard)/spaces/[id]/page-ded0e3c2ae3aede7.js +0 -1
  269. package/web/.next/static/chunks/app/(dashboard)/spaces/page-a833db411140fb1e.js +0 -1
  270. package/web/.next/static/chunks/app/layout-e03e26e403cc87a2.js +0 -1
  271. package/web/.next/static/chunks/app/login/page-16e874ed1f237705.js +0 -1
  272. package/web/.next/static/chunks/app/onboarding/page-5928b7dd0a4606cc.js +0 -26
  273. package/web/.next/static/css/67bc2af77aa905d1.css +0 -1
  274. /package/web/.next/static/{g828Psw_BOEBvk4rOsX86 → x5fvzE6AeZGASlemQTLwd}/_buildManifest.js +0 -0
  275. /package/web/.next/static/{g828Psw_BOEBvk4rOsX86 → x5fvzE6AeZGASlemQTLwd}/_ssgManifest.js +0 -0
@@ -0,0 +1,53 @@
1
+ -- UN LIVRABLE DE CE RUN ATTEND LE REGARD DE LA PERSONNE (issue #255).
2
+ --
3
+ -- La décision 2 de #135 énumère quatre choses que la pastille d'attention
4
+ -- compte. Trois avaient une colonne : une approbation en attente et une
5
+ -- question posée (`approval_requests`), le non-lu (`conversation_reads`, 0112,
6
+ -- exclu de la pastille le 19/09/2026 parce qu'il tombe à zéro en OUVRANT, pas
7
+ -- en répondant). La quatrième — « un livrable à vérifier » — n'en avait
8
+ -- aucune, et `apps/web/src/lib/chat-folders.ts` le disait en toutes lettres :
9
+ -- « aucune colonne ne dit qu'un livrable attend un œil ».
10
+ --
11
+ -- Voici la colonne. L'instant où le run a livré ; NULL = rien n'attend.
12
+ --
13
+ -- CE QUI L'ÉCRIT, et à quel moment. La porte terminale de succès du runner
14
+ -- (`finalizeJobSuccess`), dans la MÊME transaction que le statut terminal —
15
+ -- au même endroit que `job_deliveries`, qui commet l'intention de livrer avec
16
+ -- la décision de finir. Un crash entre les deux ne peut donc pas laisser un
17
+ -- run livré dont rien ne dit qu'il attend un regard.
18
+ --
19
+ -- La condition est `addressed AND produced` sur
20
+ -- `job_deliverable_verification_state`. Les deux, jamais l'une :
21
+ -- `addressed` est posé AVANT l'exécution — une écriture ratée laisse
22
+ -- l'intention en place, et compter là-dessus ferait attendre un regard sur
23
+ -- un livrable que personne n'a produit ;
24
+ -- `produced` seul compterait des livrables que l'écran ne montre pas (un
25
+ -- périmètre marqué sale par précaution — vingt lignes dont `shared/_archive`,
26
+ -- constaté le 08/09/2026).
27
+ --
28
+ -- SUR LE JOB DE TÊTE, jamais sur le délégué qui a produit. C'est le run que la
29
+ -- personne ouvre, et sa page remonte déjà les livrables de toute sa
30
+ -- descendance. La chaîne est remontée à l'écriture ; une chaîne cassée ne pose
31
+ -- rien et le dit par un code (invariant #4), plutôt que de poser le fait sur un
32
+ -- run choisi au hasard.
33
+ --
34
+ -- CE QUI L'EFFACE : le web, et lui seul, sur les deux gestes qui sont des
35
+ -- regards — ouvrir le run (la page qui MONTRE les livrables) ou ouvrir le fil
36
+ -- (au même endroit que le marqueur de lecture de 0112). Le runner n'efface
37
+ -- jamais : une livraison partie sur Telegram n'a rien fait regarder à personne.
38
+ --
39
+ -- PAR ESPACE, pas par personne, au contraire de `conversation_reads`. C'est la
40
+ -- règle de la pastille à laquelle ce fait s'ajoute : une approbation résolue
41
+ -- par l'un tombe pour tous. Une colonne par personne ferait dire à la pastille
42
+ -- deux choses à la fois.
43
+ --
44
+ -- NULLABLE ET SANS DÉFAUT : les runs déjà finis en base n'ont livré à personne
45
+ -- et ne reçoivent pas un regard en attente inventé après coup.
46
+ ALTER TABLE "agent_jobs" ADD COLUMN IF NOT EXISTS "deliverable_check_due_at" timestamptz;
47
+
48
+ -- La pastille relit « ce qui attend dans cet espace » toutes les 15 secondes,
49
+ -- sur toutes les pages du tableau de bord. PARTIEL : la colonne est NULL sur
50
+ -- presque tous les jobs, et elle le redevient dès que la personne a regardé.
51
+ CREATE INDEX IF NOT EXISTS "idx_agent_jobs_deliverable_check_due"
52
+ ON "agent_jobs" ("entity_id")
53
+ WHERE "deliverable_check_due_at" IS NOT NULL;
@@ -0,0 +1,51 @@
1
+ -- COMBIEN DE TEMPS LE FILET A MIS À PHOTOGRAPHIER (issue #261).
2
+ --
3
+ -- Le filet sous les écritures photographie chaque dossier avant le premier
4
+ -- outil mutant d'un tour, et `git add` y est borné à 30 secondes. Le soir du
5
+ -- 19/09/2026, un dossier partagé monté à 3,3 Go a dépassé cette borne : les
6
+ -- agents se sont vu refuser toute écriture, et ils ont cherché une panne du
7
+ -- dossier pendant des heures. L'issue #245 a fait dire au refus sa cause et
8
+ -- ses chiffres. Celle-ci fait voir la montée AVANT le refus.
9
+ --
10
+ -- Pour cela il faut une durée, et la durée n'existait NULLE PART : elle ne
11
+ -- vivait que sur le chemin d'ÉCHEC, en mémoire, le temps de rendre la phrase
12
+ -- du refus (`elapsedMs` de packages/checkpoints/src/failure.ts). Une photo qui
13
+ -- RÉUSSIT en 24 secondes ne laissait aucune trace — c'est-à-dire exactement le
14
+ -- cas qu'il faut voir venir.
15
+ --
16
+ -- Voici la colonne : les millisecondes qu'a pris la photo qui a produit CETTE
17
+ -- ligne. Sur `job_checkpoints` et pas ailleurs, parce que c'est la seule table
18
+ -- qui relie une photo à un dossier, un travail et un tour — l'écran n'a plus
19
+ -- qu'à lire la plus récente d'un dossier.
20
+ --
21
+ -- MESURÉE, jamais estimée : l'horloge est prise autour du seul appel de
22
+ -- `snapshot`, aux deux endroits qui photographient (le seam de
23
+ -- `packages/tools` et le harnais CLI du runner).
24
+ --
25
+ -- NULLABLE ET SANS DÉFAUT : les lignes déjà en base n'ont pas été chronométrées
26
+ -- et ne recevront pas une durée inventée. NULL veut dire « pas mesurée », et
27
+ -- l'écran le DIT plutôt que d'afficher un zéro qui se lirait « instantané »
28
+ -- (invariant #4).
29
+ --
30
+ -- Pas de contrainte de borne supérieure : une photo peut légitimement durer
31
+ -- plus longtemps que le budget de `git add`, puisque la durée couvre aussi ce
32
+ -- que `snapshot` fait autour. Une borne inventée refuserait la ligne au moment
33
+ -- précis où sa valeur est la plus intéressante.
34
+ ALTER TABLE "job_checkpoints" ADD COLUMN IF NOT EXISTS "snapshot_ms" integer;
35
+
36
+ ALTER TABLE "job_checkpoints" DROP CONSTRAINT IF EXISTS "job_checkpoints_snapshot_ms_check";
37
+
38
+ ALTER TABLE "job_checkpoints" ADD CONSTRAINT "job_checkpoints_snapshot_ms_check"
39
+ CHECK ("snapshot_ms" IS NULL OR "snapshot_ms" >= 0);
40
+
41
+ -- L'ÉCRAN DEMANDE « LA DERNIÈRE PHOTO DE CET ESPACE », et rien d'autre : un
42
+ -- `ORDER BY taken_at DESC LIMIT 1` par espace, joint sur le job.
43
+ --
44
+ -- Sans cet index, le planificateur n'a le choix qu'entre trier toutes les
45
+ -- photos de l'entité et parcourir la table à l'envers en sondant `agent_jobs`.
46
+ -- Le second dégénère précisément pour un espace SILENCIEUX — celui dont la
47
+ -- dernière photo est la plus ancienne, donc la plus loin dans le parcours
48
+ -- (revue C, passe 2). C'est le cas que l'écran doit servir vite, puisque c'est
49
+ -- celui qu'on n'ouvre que pour voir s'il a grossi.
50
+ CREATE INDEX IF NOT EXISTS "idx_job_checkpoints_taken_at"
51
+ ON "job_checkpoints" ("taken_at" DESC);
@@ -0,0 +1,38 @@
1
+ -- LES DOSSIERS ÉCARTÉS D'UN ESPACE (issue #385).
2
+ --
3
+ -- #371 a donné « Forget » : la ligne `code_projects` d'un projet masqué quitte
4
+ -- la base, l'historique des runs et des conversations reste, le dossier n'est
5
+ -- pas touché. Mais la page Projects ne liste pas que le registre : elle liste
6
+ -- aussi les dossiers DÉDUITS des écritures passées des agents. Un projet oublié
7
+ -- dont le dossier portait de telles écritures revenait donc dans la liste,
8
+ -- marqué « Detected », avec Register et Hide offerts de nouveau. Oublier ne
9
+ -- tenait pas.
10
+ --
11
+ -- On ne peut pas régler cela dans `code_projects` : une ligne qui y resterait
12
+ -- pour dire « ce dossier est écarté » serait exactement la ligne de masquage
13
+ -- que « Forget » vient de supprimer, et le mot « oublier » redeviendrait un
14
+ -- synonyme de « masquer ».
15
+ --
16
+ -- D'où cette table, qui porte UN fait et un seul : quelqu'un a écarté ce
17
+ -- dossier de cet espace, à cette date. La détection le saute, et « Detect
18
+ -- again » supprime la ligne.
19
+ --
20
+ -- L'UNICITÉ EST SUR LA CLÉ, pas sur le chemin : `project_key` est la même
21
+ -- identité canonique que le registre porte depuis 0088. Sous Windows, le même
22
+ -- dossier remonte avec des casses différentes selon la session ; une unicité
23
+ -- sur `project_path` laisserait deux exclusions du même dossier coexister, et
24
+ -- la détection n'en lirait qu'une. `project_path` reste à côté pour l'écran.
25
+ CREATE TABLE IF NOT EXISTS "excluded_project_paths" (
26
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
27
+ "entity_id" uuid NOT NULL REFERENCES "entities"("id") ON DELETE CASCADE,
28
+ "project_path" text NOT NULL,
29
+ "project_key" text NOT NULL,
30
+ "created_at" timestamptz NOT NULL DEFAULT now(),
31
+ CONSTRAINT "excluded_project_paths_entity_key_unique" UNIQUE ("entity_id", "project_key")
32
+ );
33
+
34
+ -- L'écran demande TOUS les dossiers écartés d'un espace, à chaque rendu de la
35
+ -- page Projects — jamais un chemin précis. C'est cette lecture-là qui est
36
+ -- indexée.
37
+ CREATE INDEX IF NOT EXISTS "idx_excluded_project_paths_entity"
38
+ ON "excluded_project_paths" ("entity_id");
@@ -0,0 +1,32 @@
1
+ -- COMBIEN DE TOURS DE RÉPARATION UN RUN REÇOIT (issue #377).
2
+ --
3
+ -- #375 a donné au runner UN tour de réparation après une preuve rouge : le job
4
+ -- ne finit pas, l'agent reçoit la commande qui a échoué et sa sortie, il
5
+ -- corrige et relivre. La borne était écrite en dur dans `finalize.ts`.
6
+ --
7
+ -- Quentin, 21/09 : « il faut exposer ces réglages quelque part ». La borne
8
+ -- devient donc un réglage de l'espace, à côté du frein d'auto-exécution et des
9
+ -- surfaces sous vérification.
10
+ --
11
+ -- LE DÉFAUT EST 1, c'est-à-dire exactement ce que #375 fait aujourd'hui : une
12
+ -- migration ne change le comportement de personne. `0` rend le comportement
13
+ -- d'avant #375 (le run finit rouge tout de suite), et c'est une valeur
14
+ -- légitime : un espace qui préfère voir l'échec plutôt que de payer un tour de
15
+ -- modèle de plus la choisit.
16
+ --
17
+ -- LE CHECK EST ICI, pas seulement dans le formulaire. Cette colonne borne une
18
+ -- boucle du runner (invariant #8, anti-loop) : une valeur de 9 999 écrite par
19
+ -- un script ou une main sur `psql` ferait tourner un agent toute la nuit sur
20
+ -- une preuve qui ne passera jamais. Trois est le plafond : au-delà, ce n'est
21
+ -- plus une réparation, c'est un agent qui devine.
22
+ ALTER TABLE "entities"
23
+ ADD COLUMN IF NOT EXISTS "proof_repair_attempts" integer NOT NULL DEFAULT 1;
24
+
25
+ DO $$
26
+ BEGIN
27
+ ALTER TABLE "entities"
28
+ ADD CONSTRAINT "entities_proof_repair_attempts_check"
29
+ CHECK ("proof_repair_attempts" >= 0 AND "proof_repair_attempts" <= 3);
30
+ EXCEPTION
31
+ WHEN duplicate_object THEN NULL;
32
+ END $$;
@@ -0,0 +1,17 @@
1
+ -- LA COLONNE QUE PERSONNE NE POUVAIT ATTEINDRE (issue #411).
2
+ --
3
+ -- `memory_curation_enabled` est née avec la 0.7.0 (migration 0052) pour
4
+ -- découpler la curation de la mémoire de `reflection_enabled`, qui gardait la
5
+ -- boucle d'apprentissage des skills éteinte. Le runner la lisait à chaque
6
+ -- passage ; aucun écran ne l'a jamais montrée ni changée. Un réglage qu'on ne
7
+ -- peut poser qu'en SQL n'est pas un réglage, c'est une colonne.
8
+ --
9
+ -- Décision de Quentin, 22/09 : la supprimer. Ce qui reste dit « ne touche pas
10
+ -- à ça » est le geste que le produit propose déjà : l'épingle sur le fait
11
+ -- (`agent_memory.importance_locked`), que le curateur respecte, et le
12
+ -- coupe-circuit global `MEMORY_CURATION_ENABLED=false` côté runner.
13
+ --
14
+ -- Cette migration ne touche PAS `agent_memory` : aucun fait, aucune
15
+ -- importance, aucune archive ne bouge. Seule la ligne de l'espace perd un
16
+ -- booléen que rien ne lisait hors du cron.
17
+ ALTER TABLE "entities" DROP COLUMN IF EXISTS "memory_curation_enabled";
@@ -820,6 +820,41 @@
820
820
  "when": 1786001100000,
821
821
  "tag": "0117_agent_jobs_result_kind",
822
822
  "breakpoints": true
823
+ },
824
+ {
825
+ "idx": 118,
826
+ "version": "7",
827
+ "when": 1786001160000,
828
+ "tag": "0118_agent_jobs_deliverable_check_due",
829
+ "breakpoints": true
830
+ },
831
+ {
832
+ "idx": 119,
833
+ "version": "7",
834
+ "when": 1786001220000,
835
+ "tag": "0119_job_checkpoints_snapshot_ms",
836
+ "breakpoints": true
837
+ },
838
+ {
839
+ "idx": 120,
840
+ "version": "7",
841
+ "when": 1786001280000,
842
+ "tag": "0120_excluded_project_paths",
843
+ "breakpoints": true
844
+ },
845
+ {
846
+ "idx": 121,
847
+ "version": "7",
848
+ "when": 1786001340000,
849
+ "tag": "0121_entities_proof_repair_attempts",
850
+ "breakpoints": true
851
+ },
852
+ {
853
+ "idx": 122,
854
+ "version": "7",
855
+ "when": 1786001400000,
856
+ "tag": "0122_entities_drop_memory_curation_enabled",
857
+ "breakpoints": true
823
858
  }
824
859
  ]
825
860
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodal-agents",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "description": "Local-first AI agent platform with a web dashboard — install in one command.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -20,6 +20,7 @@
20
20
  "runner.js",
21
21
  "web/**",
22
22
  "migrations/**",
23
+ "docs-index.json",
23
24
  "README.md"
24
25
  ],
25
26
  "dependencies": {