nodal-agents 0.6.1 → 0.6.3

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 (228) hide show
  1. package/README.md +8 -8
  2. package/cli.js +12 -0
  3. package/migrations/0050_jobs_search_fts.sql +4 -0
  4. package/migrations/meta/_journal.json +7 -0
  5. package/package.json +1 -1
  6. package/runner.js +2629 -1562
  7. package/web/.next/BUILD_ID +1 -1
  8. package/web/.next/app-path-routes-manifest.json +4 -5
  9. package/web/.next/build-manifest.json +2 -2
  10. package/web/.next/prerender-manifest.json +3 -3
  11. package/web/.next/routes-manifest.json +0 -6
  12. package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js +5 -5
  13. package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js.nft.json +1 -1
  14. package/web/.next/server/app/(dashboard)/agents/[id]/edit/page_client-reference-manifest.js +1 -1
  15. package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js +2 -2
  16. package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js.nft.json +1 -1
  17. package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page_client-reference-manifest.js +1 -1
  18. package/web/.next/server/app/(dashboard)/agents/page.js +2 -2
  19. package/web/.next/server/app/(dashboard)/agents/page.js.nft.json +1 -1
  20. package/web/.next/server/app/(dashboard)/agents/page_client-reference-manifest.js +1 -1
  21. package/web/.next/server/app/(dashboard)/approvals/page.js +2 -2
  22. package/web/.next/server/app/(dashboard)/approvals/page.js.nft.json +1 -1
  23. package/web/.next/server/app/(dashboard)/approvals/page_client-reference-manifest.js +1 -1
  24. package/web/.next/server/app/(dashboard)/automations/page.js +2 -2
  25. package/web/.next/server/app/(dashboard)/automations/page.js.nft.json +1 -1
  26. package/web/.next/server/app/(dashboard)/automations/page_client-reference-manifest.js +1 -1
  27. package/web/.next/server/app/(dashboard)/chat/page.js +2 -2
  28. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  29. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  30. package/web/.next/server/app/(dashboard)/connectors/page.js +2 -2
  31. package/web/.next/server/app/(dashboard)/connectors/page.js.nft.json +1 -1
  32. package/web/.next/server/app/(dashboard)/connectors/page_client-reference-manifest.js +1 -1
  33. package/web/.next/server/app/(dashboard)/credentials/page.js +2 -2
  34. package/web/.next/server/app/(dashboard)/credentials/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/credentials/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/(dashboard)/jobs/[id]/page.js +2 -2
  37. package/web/.next/server/app/(dashboard)/jobs/[id]/page.js.nft.json +1 -1
  38. package/web/.next/server/app/(dashboard)/jobs/[id]/page_client-reference-manifest.js +1 -1
  39. package/web/.next/server/app/(dashboard)/jobs/page.js +2 -2
  40. package/web/.next/server/app/(dashboard)/jobs/page.js.nft.json +1 -1
  41. package/web/.next/server/app/(dashboard)/jobs/page_client-reference-manifest.js +1 -1
  42. package/web/.next/server/app/(dashboard)/learned-skills/page.js +2 -2
  43. package/web/.next/server/app/(dashboard)/learned-skills/page.js.nft.json +1 -1
  44. package/web/.next/server/app/(dashboard)/learned-skills/page_client-reference-manifest.js +1 -1
  45. package/web/.next/server/app/(dashboard)/llm-providers/page.js +2 -2
  46. package/web/.next/server/app/(dashboard)/llm-providers/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(dashboard)/llm-providers/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(dashboard)/logs/page.js +2 -2
  49. package/web/.next/server/app/(dashboard)/logs/page.js.nft.json +1 -1
  50. package/web/.next/server/app/(dashboard)/logs/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/app/(dashboard)/mcp/page.js +2 -2
  52. package/web/.next/server/app/(dashboard)/mcp/page.js.nft.json +1 -1
  53. package/web/.next/server/app/(dashboard)/mcp/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/app/(dashboard)/memories/page.js +2 -2
  55. package/web/.next/server/app/(dashboard)/memories/page.js.nft.json +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 +4 -4
  58. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(dashboard)/settings/page.js +2 -2
  61. package/web/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  62. package/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  63. package/web/.next/server/app/(dashboard)/settings/root-context/page.js +2 -2
  64. package/web/.next/server/app/(dashboard)/settings/root-context/page.js.nft.json +1 -1
  65. package/web/.next/server/app/(dashboard)/settings/root-context/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/(dashboard)/skills/[id]/edit/page.js +2 -2
  67. package/web/.next/server/app/(dashboard)/skills/[id]/edit/page.js.nft.json +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 +2 -2
  70. package/web/.next/server/app/(dashboard)/skills/new/page.js.nft.json +1 -1
  71. package/web/.next/server/app/(dashboard)/skills/new/page_client-reference-manifest.js +1 -1
  72. package/web/.next/server/app/(dashboard)/skills/page.js +2 -2
  73. package/web/.next/server/app/(dashboard)/skills/page.js.nft.json +1 -1
  74. package/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -1
  75. package/web/.next/server/app/_global-error/page.js +3 -3
  76. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/_global-error.html +1 -1
  78. package/web/.next/server/app/_global-error.rsc +2 -2
  79. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  80. package/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  81. package/web/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  82. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  83. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +2 -2
  84. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  85. package/web/.next/server/app/_not-found/page.js +2 -2
  86. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/app/_not-found.html +1 -1
  88. package/web/.next/server/app/_not-found.rsc +3 -3
  89. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  90. package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  91. package/web/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  92. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  93. package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  94. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  95. package/web/.next/server/app/api/auth/[...all]/route.js +1 -1
  96. package/web/.next/server/app/api/health/route.js +1 -1
  97. package/web/.next/server/app/api/oauth/[provider]/callback/route.js +1 -1
  98. package/web/.next/server/app/api/oauth/[provider]/start/route.js +1 -1
  99. package/web/.next/server/app/auth/callback/route.js +1 -1
  100. package/web/.next/server/app/login/page.js +2 -2
  101. package/web/.next/server/app/login/page_client-reference-manifest.js +1 -1
  102. package/web/.next/server/app/onboarding/page.js +2 -2
  103. package/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/onboarding.html +1 -1
  105. package/web/.next/server/app/onboarding.rsc +3 -3
  106. package/web/.next/server/app/onboarding.segments/_full.segment.rsc +3 -3
  107. package/web/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
  108. package/web/.next/server/app/onboarding.segments/_index.segment.rsc +3 -3
  109. package/web/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
  110. package/web/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +1 -1
  111. package/web/.next/server/app/onboarding.segments/onboarding.segment.rsc +1 -1
  112. package/web/.next/server/app-paths-manifest.json +4 -5
  113. package/web/.next/server/chunks/1761.js +1 -1
  114. package/web/.next/server/chunks/2713.js +1468 -0
  115. package/web/.next/server/chunks/2805.js +1 -0
  116. package/web/.next/server/chunks/{652.js → 4488.js} +6 -6
  117. package/web/.next/server/chunks/4574.js +1 -1
  118. package/web/.next/server/chunks/5010.js +1 -0
  119. package/web/.next/server/chunks/504.js +1 -0
  120. package/web/.next/server/chunks/649.js +1 -0
  121. package/web/.next/server/chunks/8909.js +1 -1
  122. package/web/.next/server/middleware-build-manifest.js +1 -1
  123. package/web/.next/server/middleware.js +1 -1
  124. package/web/.next/server/pages/404.html +1 -1
  125. package/web/.next/server/pages/500.html +1 -1
  126. package/web/.next/server/server-reference-manifest.js +1 -1
  127. package/web/.next/server/server-reference-manifest.json +1 -1
  128. package/web/.next/static/PdXHWm_n8Uxo3oAAuBfXQ/_buildManifest.js +1 -0
  129. package/web/.next/static/chunks/1361-5bc59efe9312f6ad.js +1 -0
  130. package/web/.next/static/chunks/2399-3c0b486cf3d65e4b.js +1 -0
  131. package/web/.next/static/chunks/{2787-b32c92cd300d8dc6.js → 3127-6ed1141605734b01.js} +1 -1
  132. package/web/.next/static/chunks/3763-2fa54c0e83122050.js +1 -0
  133. package/web/.next/static/chunks/5429-6265eeb2f896f3a8.js +1 -0
  134. package/web/.next/static/chunks/6554-486a0e711130e430.js +1 -0
  135. package/web/.next/static/chunks/7605-012b76cba7b6879e.js +62 -0
  136. package/web/.next/static/chunks/7704-7ba1c3d45662ffc8.js +1 -0
  137. package/web/.next/static/chunks/7982-85b23121f245eb05.js +1 -0
  138. package/web/.next/static/chunks/8161-b09081c59130e8e5.js +1 -0
  139. package/web/.next/static/chunks/8620-0ddfa4e0868b4753.js +1 -0
  140. package/web/.next/static/chunks/9775-dad785c12d658539.js +1 -0
  141. package/web/.next/static/chunks/9836-d441ba43fa24ebbd.js +1 -0
  142. package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-10bd3e3f8aa1974e.js +6 -0
  143. package/web/.next/static/chunks/app/(dashboard)/agents/[id]/telegram/page-00f429005fd093cf.js +1 -0
  144. package/web/.next/static/chunks/app/(dashboard)/agents/page-2ba09301cdb312c3.js +1 -0
  145. package/web/.next/static/chunks/app/(dashboard)/approvals/page-226a1fddb8e979ee.js +1 -0
  146. package/web/.next/static/chunks/app/(dashboard)/automations/page-a38a6c63ef985e54.js +1 -0
  147. package/web/.next/static/chunks/app/(dashboard)/chat/page-f82614052cd419af.js +1 -0
  148. package/web/.next/static/chunks/app/(dashboard)/connectors/page-ad5f6e4db7176538.js +1 -0
  149. package/web/.next/static/chunks/app/(dashboard)/credentials/page-62239e27f7ce398e.js +1 -0
  150. package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-2150c280bdf68d25.js +1 -0
  151. package/web/.next/static/chunks/app/(dashboard)/jobs/page-112ff7d2d465c9a1.js +1 -0
  152. package/web/.next/static/chunks/app/(dashboard)/layout-f78d36295317154f.js +1 -0
  153. package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-51861a80b707bf92.js +1 -0
  154. package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-f624227d064bbcc0.js +1 -0
  155. package/web/.next/static/chunks/app/(dashboard)/logs/page-9f280c22623761d8.js +1 -0
  156. package/web/.next/static/chunks/app/(dashboard)/mcp/page-8b11f90f19503f7c.js +1 -0
  157. package/web/.next/static/chunks/app/(dashboard)/memories/page-3102528b5526e9c0.js +1 -0
  158. package/web/.next/static/chunks/app/(dashboard)/page-c1cc881eca8976b6.js +1 -0
  159. package/web/.next/static/chunks/app/(dashboard)/settings/page-629bf4c6638ed480.js +1 -0
  160. package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-f129652dab655207.js +1 -0
  161. package/web/.next/static/chunks/app/(dashboard)/skills/[id]/edit/page-ee67c826b3d6b71c.js +1 -0
  162. package/web/.next/static/chunks/app/(dashboard)/skills/new/page-4a2db1b7cbfea091.js +1 -0
  163. package/web/.next/static/chunks/app/(dashboard)/skills/page-d101f4739fdc45fa.js +1 -0
  164. package/web/.next/static/chunks/app/not-found-36303c01a266259a.js +1 -0
  165. package/web/.next/static/css/ff96a8dfaf40a6c3.css +3 -0
  166. package/web/public/connector-icons/apify.svg +5 -0
  167. package/web/public/connector-icons/blender.svg +12 -0
  168. package/web/public/connector-icons/composio.png +0 -0
  169. package/web/public/connector-icons/fetch.svg +17 -0
  170. package/web/public/connector-icons/firecrawl.svg +1 -0
  171. package/web/public/connector-icons/google-calendar.svg +17 -0
  172. package/web/public/connector-icons/keyshot.svg +36 -0
  173. package/web/public/connector-icons/linear.svg +1 -0
  174. package/web/public/connector-icons/n8n.svg +1 -0
  175. package/web/public/connector-icons/perplexity.svg +1 -0
  176. package/web/public/connector-icons/photoshop.svg +12 -0
  177. package/web/public/connector-icons/playwright.svg +1 -0
  178. package/web/public/connector-icons/supabase.svg +1 -0
  179. package/web/public/connector-icons/tavily.svg +1 -0
  180. package/web/public/connector-icons/unity.svg +10 -0
  181. package/web/public/connector-icons/unreal-engine.svg +1 -0
  182. package/web/.next/server/app/(dashboard)/billing/page.js +0 -2
  183. package/web/.next/server/app/(dashboard)/billing/page.js.nft.json +0 -1
  184. package/web/.next/server/app/(dashboard)/billing/page_client-reference-manifest.js +0 -1
  185. package/web/.next/server/chunks/1445.js +0 -1
  186. package/web/.next/server/chunks/3024.js +0 -1
  187. package/web/.next/server/chunks/3966.js +0 -1
  188. package/web/.next/server/chunks/3971.js +0 -1
  189. package/web/.next/server/chunks/4370.js +0 -1468
  190. package/web/.next/server/chunks/6012.js +0 -1
  191. package/web/.next/server/chunks/7928.js +0 -1
  192. package/web/.next/static/KhwbJu08qtDMXMHHv9JeS/_buildManifest.js +0 -1
  193. package/web/.next/static/chunks/4414-4e856db2be92b231.js +0 -1
  194. package/web/.next/static/chunks/4905-272003c6fbcb2e79.js +0 -1
  195. package/web/.next/static/chunks/6097-d568d74074f2dad0.js +0 -1
  196. package/web/.next/static/chunks/6413-c2d4ac3709048f19.js +0 -1
  197. package/web/.next/static/chunks/7025-7afa82fda10bddc4.js +0 -62
  198. package/web/.next/static/chunks/736-0de6a121614921aa.js +0 -1
  199. package/web/.next/static/chunks/8370-18663baebcb57ea1.js +0 -1
  200. package/web/.next/static/chunks/8666-ee79795cd5f52e9c.js +0 -1
  201. package/web/.next/static/chunks/9504-1585634fb05dc985.js +0 -1
  202. package/web/.next/static/chunks/9711-628acc64d23620d2.js +0 -1
  203. package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-e3522f5beaa39d00.js +0 -6
  204. package/web/.next/static/chunks/app/(dashboard)/agents/[id]/telegram/page-1471b733a0d6dd17.js +0 -1
  205. package/web/.next/static/chunks/app/(dashboard)/agents/page-fa24d21f3dd81779.js +0 -1
  206. package/web/.next/static/chunks/app/(dashboard)/approvals/page-8556dfa45a425603.js +0 -1
  207. package/web/.next/static/chunks/app/(dashboard)/automations/page-54d3b31e9f8319ba.js +0 -1
  208. package/web/.next/static/chunks/app/(dashboard)/billing/page-76a720d27d6fdb88.js +0 -1
  209. package/web/.next/static/chunks/app/(dashboard)/chat/page-0756eef0efe47d26.js +0 -1
  210. package/web/.next/static/chunks/app/(dashboard)/connectors/page-e155c796daf03636.js +0 -1
  211. package/web/.next/static/chunks/app/(dashboard)/credentials/page-38a4707132e529ba.js +0 -1
  212. package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-d24cf11cba87c25c.js +0 -1
  213. package/web/.next/static/chunks/app/(dashboard)/jobs/page-addbc7ca9fd29056.js +0 -1
  214. package/web/.next/static/chunks/app/(dashboard)/layout-74abd51f1d4f4847.js +0 -1
  215. package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-596febd5d9d3130e.js +0 -1
  216. package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-3e569fa57980ef9b.js +0 -1
  217. package/web/.next/static/chunks/app/(dashboard)/logs/page-c9543d1a5b387378.js +0 -1
  218. package/web/.next/static/chunks/app/(dashboard)/mcp/page-cc885192e6efce48.js +0 -1
  219. package/web/.next/static/chunks/app/(dashboard)/memories/page-2bc309d3e59fb48d.js +0 -1
  220. package/web/.next/static/chunks/app/(dashboard)/page-b6ce64251f732896.js +0 -1
  221. package/web/.next/static/chunks/app/(dashboard)/settings/page-b73e0e200ee4d9fa.js +0 -1
  222. package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-af7ccec522050199.js +0 -1
  223. package/web/.next/static/chunks/app/(dashboard)/skills/[id]/edit/page-ddd8ebba5889c9a4.js +0 -1
  224. package/web/.next/static/chunks/app/(dashboard)/skills/new/page-95280e7f506e3443.js +0 -1
  225. package/web/.next/static/chunks/app/(dashboard)/skills/page-8e381563f665bb68.js +0 -1
  226. package/web/.next/static/chunks/app/not-found-76a720d27d6fdb88.js +0 -1
  227. package/web/.next/static/css/ef13c0ab64dcfa86.css +0 -3
  228. /package/web/.next/static/{KhwbJu08qtDMXMHHv9JeS → PdXHWm_n8Uxo3oAAuBfXQ}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -10,7 +10,7 @@ A self-hosted platform for building and orchestrating a **team of AI agents** on
10
10
  [![Node](https://img.shields.io/badge/node-22%2B-339933?logo=node.js&logoColor=white)](https://nodejs.org)
11
11
  [![TypeScript](https://img.shields.io/badge/typescript-strict-3178c6?logo=typescript&logoColor=white)](https://www.typescriptlang.org)
12
12
  [![Docs](https://img.shields.io/badge/docs-online-3565ff)](https://kwintspiracy.github.io/nodal-agents/)
13
- [![Changelog](https://img.shields.io/badge/changelog-v0.6.1-d4ff2e)](CHANGELOG.md)
13
+ [![Changelog](https://img.shields.io/badge/changelog-v0.6.3-d4ff2e)](CHANGELOG.md)
14
14
 
15
15
  | Home dashboard — light theme | Agent detail — dark theme |
16
16
  | :---: | :---: |
@@ -61,7 +61,7 @@ Every agent runs on the model **you** choose, with the tools **you** grant, in a
61
61
  ### 🤝 Agents that actually finish
62
62
 
63
63
  - **Orchestrators that finish** — pick the delegation style per request: route to one specialist and resume on its result, or fan work out to many sub-agents in parallel and compile the answer.
64
- - **Memory that compounds** — persistent facts auto-injected into every job, plus chat-thread continuity (your agent remembers what it said 30 seconds ago and yesterday).
64
+ - **Memory that compounds** — durable facts auto-injected into every job, ranked by relevance to the task at hand; full-text `search_history` recall over everything the team has ever done; and a background curator that keeps the fact store clean. Plus chat-thread continuity that actually holds a conversation across slow tasks and natural pauses.
65
65
  - **Self-improving (opt-in)** — after a substantial job an agent can reflect and write itself a reusable skill; a weekly curator consolidates and prunes them. Every learned skill is reviewable, assignable, and revocable.
66
66
  - **Self-extending ROOT** — designate an orchestrator as ROOT and let it create skills, agents, MCP servers, and connectors on your behalf — gated by per-grant toggles and an autonomy level (propose-confirm → fully-autonomous).
67
67
  - **Human-in-the-loop** — risky tools pause for approval, and the prompt leads with the agent's plain-language explanation of *what* it wants to do and *why* (plus any ⚠️ impact) — not a wall of raw shell.
@@ -73,11 +73,11 @@ Every agent runs on the model **you** choose, with the tools **you** grant, in a
73
73
  **Models** — Anthropic · OpenAI · Google · Groq · Mistral · OpenRouter · **native DeepSeek** (`api.deepseek.com`) · **native MiniMax** (`api.minimax.io`) · any local model (LM Studio, Ollama). One key per provider; each agent picks its own model.
74
74
 
75
75
  **Connectors** — multi-instance (Gmail perso *and* boulot on one install), managed from the dashboard:
76
- - *OAuth* — Gmail · Google Drive · Sheets · Docs · Calendar · Notion · Airtable
77
- - *API key* — Notion · Airtable · Apify · Firecrawl · Tavily
76
+ - *OAuth* — Airtable · Calendar · Docs · Gmail · Google Drive · Notion · Sheets
77
+ - *API key* — Airtable · Apify · Firecrawl · Notion · Tavily
78
78
 
79
79
  **MCP servers** — over Streamable HTTP *and* stdio, plus add/edit your own:
80
- Stripe · GitHub · Supabase · Notion · Linear · Sentry · n8n · PostgreSQL · Playwright · Perplexity · Apify · Filesystem · Git · Fetch · Sequential Thinking · Composio · Cogni Cortex
80
+ Apify · Blender · Cogni Cortex · Composio · Fetch · Filesystem · Git · GitHub · KeyShot · Linear · n8n · Notion · Perplexity · Photoshop · Playwright · PostgreSQL · Sentry · Stripe · Supabase · Unity · Unreal Engine
81
81
 
82
82
  **Skills** — built-in: office editing (Excel/Word/PowerPoint), shell execution, Obsidian, Telegram etiquette, task planning, markdown output, citation discipline, research methodology, results delivery, language mirroring, HTML design. Plus **install any community `SKILL.md`** from GitHub / skills.sh / ClawHub — and agents can **write their own**.
83
83
 
@@ -119,11 +119,11 @@ A message becomes an `agent_jobs` row. The runner loads the agent's prior chat-t
119
119
  | --- | --- |
120
120
  | `/agents` | Create + edit agents; assign skills, connectors, MCP servers; pick each agent's provider, model, and failover chain. |
121
121
  | `/llm-providers` | Connect each LLM provider with one API key. Models are chosen per-agent. |
122
- | `/jobs` | Live job stream task, agent, status, full transcript, tool I/O. |
122
+ | `/jobs` | Delegation-aware runseach orchestrator above the runs it delegated, with status, real cost, triggers, and the full transcript. |
123
123
  | `/connectors` | Active connector instances + Marketplace (multi-instance, OAuth or API key). |
124
124
  | `/mcp` | Active MCP servers + Marketplace — HTTP & stdio, plus your own custom servers. |
125
125
  | `/memories` | Persistent facts per workspace — search, edit, archive. |
126
- | `/skills` | Assigned / Custom / Built-in Library — write your own, customise built-ins, or install any community `SKILL.md`. |
126
+ | `/skills` | Assigned (in use) + Library — browse the whole catalog by content category, write your own, or install any community `SKILL.md`. |
127
127
  | `/learned-skills` | Skills the agents wrote themselves — review, assign, archive, restore. |
128
128
  | `/approvals` | Human-in-the-loop gates for risky tools and the ROOT agent's meta-tools. |
129
129
  | `/automations` | Cron-scheduled agent triggers. |
@@ -183,7 +183,7 @@ nodal-agents update # stop, install @latest, restart — data preserved
183
183
  nodal-agents update --no-restart
184
184
  ```
185
185
 
186
- When a newer version is available, `nodal-agents up` prints a one-line notice.
186
+ When a newer version is available, the dashboard sidebar shows an "Update available" badge (and `nodal-agents up` prints a one-line notice).
187
187
 
188
188
  ---
189
189
 
package/cli.js CHANGED
@@ -12795,6 +12795,14 @@ var init_jobs = __esm({
12795
12795
  chatId: text("chat_id"),
12796
12796
  systemPrompt: text("system_prompt"),
12797
12797
  messages: jsonb("messages").default(sql`'[]'::jsonb`),
12798
+ /**
12799
+ * Flattened plain-text transcript (task + assistant text + tool outputs +
12800
+ * result) for full-text episodic search. Populated at job completion by
12801
+ * flattenTranscript(). A generated `search_tsv tsvector` column + GIN index
12802
+ * (raw SQL, migration 0050 — not expressible in the Drizzle schema builder)
12803
+ * makes it queryable by the `search_history` builtin.
12804
+ */
12805
+ searchText: text("search_text"),
12798
12806
  toolsUsed: text("tools_used").array().default(sql`'{}'::text[]`),
12799
12807
  turn: integer("turn").default(0),
12800
12808
  result: text("result"),
@@ -14026,6 +14034,9 @@ function buildEnvForWeb(config, databaseUrl) {
14026
14034
  // Expose auth mode to the client so login/page.tsx can render the right form.
14027
14035
  NEXT_PUBLIC_AUTH_MODE: authMode,
14028
14036
  NEXT_PUBLIC_APP_URL: `http://localhost:${config.ports.web}`,
14037
+ // The running CLI version — the web's update badge (sidebar) compares this
14038
+ // against the npm `latest` to tell the user when to run `nodal-agents update`.
14039
+ NODAL_VERSION: getInstalledVersion(),
14029
14040
  PORT: String(config.ports.web),
14030
14041
  // BIND mirrors the runner's binding so /settings → Network can render the
14031
14042
  // "restart required" banner when the configured value drifts from runtime.
@@ -14070,6 +14081,7 @@ function buildDatabaseUrl(port) {
14070
14081
  var init_env = __esm({
14071
14082
  "src/lib/env.ts"() {
14072
14083
  "use strict";
14084
+ init_version();
14073
14085
  }
14074
14086
  });
14075
14087
 
@@ -0,0 +1,4 @@
1
+ ALTER TABLE "agent_jobs" ADD COLUMN "search_text" text;--> statement-breakpoint
2
+ ALTER TABLE "agent_jobs" ADD COLUMN "search_tsv" tsvector GENERATED ALWAYS AS (to_tsvector('simple', coalesce("search_text", ''))) STORED;--> statement-breakpoint
3
+ CREATE INDEX "idx_agent_jobs_search_tsv" ON "agent_jobs" USING gin ("search_tsv");--> statement-breakpoint
4
+ UPDATE "agent_jobs" SET "search_text" = trim(coalesce("task", '') || ' ' || coalesce("result", '')) WHERE "search_text" IS NULL AND (coalesce("task", '') <> '' OR coalesce("result", '') <> '');
@@ -344,6 +344,13 @@
344
344
  "when": 1782900000000,
345
345
  "tag": "0049_skill_assignment_files_writable",
346
346
  "breakpoints": true
347
+ },
348
+ {
349
+ "idx": 50,
350
+ "version": "7",
351
+ "when": 1783000000000,
352
+ "tag": "0050_jobs_search_fts",
353
+ "breakpoints": true
347
354
  }
348
355
  ]
349
356
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodal-agents",
3
- "version": "0.6.1",
3
+ "version": "0.6.3",
4
4
  "description": "Local-first AI agent platform with a web dashboard — install in one command.",
5
5
  "license": "MIT",
6
6
  "repository": {