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.
- package/cli.js +727 -62
- package/docs-index.json +1524 -0
- package/migrations/0118_agent_jobs_deliverable_check_due.sql +53 -0
- package/migrations/0119_job_checkpoints_snapshot_ms.sql +51 -0
- package/migrations/0120_excluded_project_paths.sql +38 -0
- package/migrations/0121_entities_proof_repair_attempts.sql +32 -0
- package/migrations/0122_entities_drop_memory_curation_enabled.sql +17 -0
- package/migrations/meta/_journal.json +35 -0
- package/package.json +2 -1
- package/runner.js +5541 -4081
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +5 -5
- package/web/.next/server/app/(dashboard)/agents/[id]/channels/page.js +1 -1
- package/web/.next/server/app/(dashboard)/agents/[id]/channels/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js +4 -4
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js +1 -1
- package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/agents/page.js +1 -1
- package/web/.next/server/app/(dashboard)/agents/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/approvals/page.js +1 -1
- package/web/.next/server/app/(dashboard)/approvals/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/automations/[id]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/automations/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/automations/page.js +1 -1
- package/web/.next/server/app/(dashboard)/automations/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/[id]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/code/[id]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/code/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/code/page.js +1 -1
- package/web/.next/server/app/(dashboard)/code/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/connectors/page.js +1 -1
- package/web/.next/server/app/(dashboard)/connectors/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/credentials/page.js +1 -1
- package/web/.next/server/app/(dashboard)/credentials/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/dashboard/page.js +1 -1
- package/web/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/jobs/[id]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/jobs/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/jobs/page.js +1 -1
- package/web/.next/server/app/(dashboard)/jobs/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/learned-skills/page.js +1 -1
- package/web/.next/server/app/(dashboard)/learned-skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/llm-providers/page.js +1 -1
- package/web/.next/server/app/(dashboard)/llm-providers/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/logs/page.js +1 -1
- package/web/.next/server/app/(dashboard)/logs/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/mcp/page.js +1 -1
- package/web/.next/server/app/(dashboard)/mcp/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/memories/page.js +1 -1
- package/web/.next/server/app/(dashboard)/memories/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page.js +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/scheduled/[id]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/scheduled/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/scheduled/page.js +1 -1
- package/web/.next/server/app/(dashboard)/scheduled/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/settings/page.js +1 -1
- package/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/settings/root-context/page.js +1 -1
- package/web/.next/server/app/(dashboard)/settings/root-context/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/skills/[id]/edit/page.js +1 -1
- package/web/.next/server/app/(dashboard)/skills/[id]/edit/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/skills/new/page.js +1 -1
- package/web/.next/server/app/(dashboard)/skills/new/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/skills/page.js +1 -1
- package/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/spaces/[id]/files/page.js +1 -1
- package/web/.next/server/app/(dashboard)/spaces/[id]/files/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/spaces/[id]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/spaces/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/spaces/page.js +1 -1
- package/web/.next/server/app/(dashboard)/spaces/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error/page.js +2 -2
- package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +1 -1
- package/web/.next/server/app/_global-error.rsc +2 -2
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page.js +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/server/app/_not-found.rsc +5 -4
- package/web/.next/server/app/_not-found.segments/_full.segment.rsc +5 -4
- package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +14 -13
- package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/web/.next/server/app/api/chat/stream/route.js +1 -1
- package/web/.next/server/app/api/health/route.js +1 -1
- package/web/.next/server/app/api/oauth/[provider]/callback/route.js +1 -1
- package/web/.next/server/app/api/oauth/[provider]/start/route.js +1 -1
- package/web/.next/server/app/login/page.js +1 -1
- package/web/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/onboarding/page.js +2 -2
- package/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app-paths-manifest.json +1 -1
- package/web/.next/server/chunks/1041.js +5 -0
- package/web/.next/server/chunks/1447.js +1 -1
- package/web/.next/server/chunks/168.js +1 -0
- package/web/.next/server/chunks/{3431.js → 192.js} +2 -2
- package/web/.next/server/chunks/1960.js +1 -0
- package/web/.next/server/chunks/{4332.js → 2096.js} +1 -1
- package/web/.next/server/chunks/292.js +1 -0
- package/web/.next/server/chunks/2933.js +1 -0
- package/web/.next/server/chunks/3370.js +1 -0
- package/web/.next/server/chunks/3592.js +1 -1
- package/web/.next/server/chunks/3675.js +1 -0
- package/web/.next/server/chunks/409.js +1 -0
- package/web/.next/server/chunks/42.js +3 -3
- package/web/.next/server/chunks/4357.js +1 -1
- package/web/.next/server/chunks/494.js +1 -0
- package/web/.next/server/chunks/5547.js +1 -0
- package/web/.next/server/chunks/5554.js +1 -0
- package/web/.next/server/chunks/570.js +1 -0
- package/web/.next/server/chunks/5804.js +1 -1
- package/web/.next/server/chunks/5974.js +1 -0
- package/web/.next/server/chunks/6020.js +1 -1
- package/web/.next/server/chunks/6106.js +1 -0
- package/web/.next/server/chunks/{2198.js → 6213.js} +39 -23
- package/web/.next/server/chunks/692.js +1806 -0
- package/web/.next/server/chunks/{2076.js → 7134.js} +7 -7
- package/web/.next/server/chunks/7431.js +1 -0
- package/web/.next/server/chunks/7533.js +1 -0
- package/web/.next/server/chunks/{7957.js → 7663.js} +5 -5
- package/web/.next/server/chunks/7709.js +1 -0
- package/web/.next/server/chunks/7915.js +1 -0
- package/web/.next/server/chunks/8022.js +1 -0
- package/web/.next/server/chunks/8536.js +3 -0
- package/web/.next/server/chunks/8974.js +63 -47
- package/web/.next/server/chunks/9200.js +1 -0
- package/web/.next/server/chunks/9557.js +1 -0
- package/web/.next/server/middleware-build-manifest.js +1 -1
- package/web/.next/server/middleware.js +67 -67
- package/web/.next/server/pages/404.html +1 -1
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/static/chunks/1054-08930540869affcc.js +1 -0
- package/web/.next/static/chunks/1091-6d0af9f18ddf99f6.js +1 -0
- package/web/.next/static/chunks/1332-c8bed6b750598652.js +1 -0
- package/web/.next/static/chunks/{1789-87079e34582418b3.js → 1789-b436bca079b82fcc.js} +1 -1
- package/web/.next/static/chunks/{2194-f112ed9e30bd88fb.js → 2194-f3fed902cfeb85b5.js} +1 -1
- package/web/.next/static/chunks/296-1b50dd61ac3198f4.js +1 -0
- package/web/.next/static/chunks/3051-26ddd67461f743c4.js +1 -0
- package/web/.next/static/chunks/3159-f25525771781f5aa.js +1 -0
- package/web/.next/static/chunks/341-020b1c47a0991a37.js +1 -0
- package/web/.next/static/chunks/{5361-f266407b731effcd.js → 3742-ab3951ecba6248c1.js} +1 -1
- package/web/.next/static/chunks/377-4f2ca8d34e126b26.js +1 -0
- package/web/.next/static/chunks/3775-3a5a749d63c785a1.js +3 -0
- package/web/.next/static/chunks/390-d6132d3a117487df.js +1 -0
- package/web/.next/static/chunks/4020-9778230f3cc2164a.js +1 -0
- package/web/.next/static/chunks/4771-a0aadf337f224b72.js +1 -0
- package/web/.next/static/chunks/494-ed02d105fa0ac132.js +1 -0
- package/web/.next/static/chunks/5034-fc9997ff33a114aa.js +1 -0
- package/web/.next/static/chunks/{8551-3e88dff507375393.js → 5925-76337eacde3c3bc8.js} +39 -23
- package/web/.next/static/chunks/611-e150bff7f1f9dc6c.js +1 -0
- package/web/.next/static/chunks/6937-f57b8514bf03179e.js +3 -0
- package/web/.next/static/chunks/{7717-41f70e449a27eb21.js → 7879-67ac5a52d74c20d2.js} +1 -1
- package/web/.next/static/chunks/7920-40dc6aa63e653d6b.js +1 -0
- package/web/.next/static/chunks/8312-6ca4507c5413a23d.js +1 -0
- package/web/.next/static/chunks/870-b7151716d04a13c3.js +1 -0
- package/web/.next/static/chunks/8794-2a616d1f9c210117.js +1 -0
- package/web/.next/static/chunks/8861-a108ed6178a56b21.js +1 -0
- package/web/.next/static/chunks/{3196-464a892bb967ebe9.js → 9311-bdd05e5b6fb92a88.js} +1 -1
- package/web/.next/static/chunks/9598-202b803aea26a949.js +1 -0
- package/web/.next/static/chunks/{9643-135a5b7d3abd518c.js → 9643-e9c8a744dd98813d.js} +1 -1
- package/web/.next/static/chunks/{8606-679d56e81c4e4550.js → 9765-1501903a64e09ac0.js} +1 -1
- package/web/.next/static/chunks/9952-992cabfb077d287c.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-5ca9c1eef4d0f837.js +6 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/page-5ffa4a2468c1f95a.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/approvals/page-cd46d5e439a20d3e.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/automations/[id]/page-9ef1d76121b6030d.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/automations/page-46eeaa40df9e58f8.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/chat/[id]/page-25e095bf0cdd1c40.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/chat/page-e2df1a328e18da7a.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/code/[id]/page-f5f7624cfbb32ee2.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/connectors/page-2ecbfc5836577888.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/credentials/page-cb6bc64b82b8fb28.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/dashboard/{page-fd2a41310f716a3e.js → page-7473d1190864cbd4.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-47e177ab46926fd7.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/layout-0b429859260736b2.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-596d973a31e774db.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-ba1968c9430c4dd4.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/logs/page-f74da6f66116c7e7.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/mcp/page-07bdc6780b13cfca.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/memories/page-593161bc7c2a25d7.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/page-889d6e89a8f679f8.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/scheduled/[id]/page-47e177ab46926fd7.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/settings/page-1b40e127c38affda.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-6b7e1cffcad40a6a.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/page-3ad87d1a3fbb4f05.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/spaces/[id]/files/page-4e2d27f80456a1ba.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/spaces/[id]/page-c81023eaa26c2c7a.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/spaces/page-9dbb35822503481b.js +1 -0
- package/web/.next/static/chunks/app/layout-ef76b16f6546678c.js +1 -0
- package/web/.next/static/chunks/app/login/page-5357f030e5018563.js +1 -0
- package/web/.next/static/chunks/app/onboarding/page-9b6955cdd3033584.js +26 -0
- package/web/.next/static/css/099c0b54fc41e5b0.css +1 -0
- package/web/public/logo-128.png +0 -0
- package/web/.next/server/chunks/1239.js +0 -1
- package/web/.next/server/chunks/1505.js +0 -3
- package/web/.next/server/chunks/1632.js +0 -1
- package/web/.next/server/chunks/1813.js +0 -1
- package/web/.next/server/chunks/2040.js +0 -1
- package/web/.next/server/chunks/2310.js +0 -1
- package/web/.next/server/chunks/2800.js +0 -1790
- package/web/.next/server/chunks/3340.js +0 -1
- package/web/.next/server/chunks/3432.js +0 -1
- package/web/.next/server/chunks/3580.js +0 -1
- package/web/.next/server/chunks/4722.js +0 -3
- package/web/.next/server/chunks/5276.js +0 -1
- package/web/.next/server/chunks/603.js +0 -1
- package/web/.next/server/chunks/7719.js +0 -1
- package/web/.next/server/chunks/7781.js +0 -1
- package/web/.next/server/chunks/8025.js +0 -3
- package/web/.next/server/chunks/8118.js +0 -1
- package/web/.next/server/chunks/9637.js +0 -1
- package/web/.next/server/chunks/976.js +0 -1
- package/web/.next/server/chunks/9939.js +0 -1
- package/web/.next/static/chunks/1091-de54f0c0a4d82875.js +0 -1
- package/web/.next/static/chunks/114-26058433e4e0911e.js +0 -1
- package/web/.next/static/chunks/1219-d120dd8740b553b7.js +0 -1
- package/web/.next/static/chunks/146-923ebb6e4b12939e.js +0 -1
- package/web/.next/static/chunks/2057-de712956dc309abd.js +0 -1
- package/web/.next/static/chunks/2628-662c74c9bc8efdfd.js +0 -1
- package/web/.next/static/chunks/2767-84a838e67c8ed919.js +0 -1
- package/web/.next/static/chunks/3051-63316a56c4c77b78.js +0 -1
- package/web/.next/static/chunks/341-d382e4df5fdd8639.js +0 -1
- package/web/.next/static/chunks/4229-5ad9bb0c30eeb117.js +0 -1
- package/web/.next/static/chunks/443-b0581a9d59c5eddd.js +0 -1
- package/web/.next/static/chunks/4507-e4e79584af8a3dfb.js +0 -1
- package/web/.next/static/chunks/4646-daae31f9eaa82ad1.js +0 -3
- package/web/.next/static/chunks/5034-1424be65bb762fe0.js +0 -1
- package/web/.next/static/chunks/6449-2552e9fd471012bc.js +0 -1
- package/web/.next/static/chunks/6974-c390b37b943e5e3a.js +0 -1
- package/web/.next/static/chunks/750-5f0494d3bcce44e4.js +0 -1
- package/web/.next/static/chunks/7890-8030bd449325507e.js +0 -1
- package/web/.next/static/chunks/8288-46c8ea403691cbd8.js +0 -3
- package/web/.next/static/chunks/8571-6149c8881bddf392.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-0a2201e25891e65a.js +0 -6
- package/web/.next/static/chunks/app/(dashboard)/agents/page-8dd4afd99c54c317.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/approvals/page-c346b6514a0fb344.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/automations/[id]/page-2ff06d1d46372539.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/automations/page-e70ea0434087cad1.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/chat/[id]/page-600249784190e2a4.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/chat/page-48666512a1c0ac50.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/code/[id]/page-f84236cea1b8e8bd.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/connectors/page-de164554b77a1fa4.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/credentials/page-0741d2da25807489.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-702e9eeea18c7ea0.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/layout-1fe1669ec7dc1c13.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-a76814c4a20ecd33.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-aa611ab9ff0baff2.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/logs/page-f22178e7e15984c1.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/mcp/page-8b248ee23cc92855.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/memories/page-69955b9596175468.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/page-4432bf6e8e594109.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/scheduled/[id]/page-f4857bc821e8868b.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/settings/page-2e6cbceef74a8f8a.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-63c38b3c419dfbbc.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/skills/page-99aea8c35e06402b.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/spaces/[id]/files/page-226d430d003759c2.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/spaces/[id]/page-ded0e3c2ae3aede7.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/spaces/page-a833db411140fb1e.js +0 -1
- package/web/.next/static/chunks/app/layout-e03e26e403cc87a2.js +0 -1
- package/web/.next/static/chunks/app/login/page-16e874ed1f237705.js +0 -1
- package/web/.next/static/chunks/app/onboarding/page-5928b7dd0a4606cc.js +0 -26
- package/web/.next/static/css/67bc2af77aa905d1.css +0 -1
- /package/web/.next/static/{g828Psw_BOEBvk4rOsX86 → x5fvzE6AeZGASlemQTLwd}/_buildManifest.js +0 -0
- /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.
|
|
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": {
|