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.
- package/README.md +8 -8
- package/cli.js +12 -0
- package/migrations/0050_jobs_search_fts.sql +4 -0
- package/migrations/meta/_journal.json +7 -0
- package/package.json +1 -1
- package/runner.js +2629 -1562
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +4 -5
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/routes-manifest.json +0 -6
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js +5 -5
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js.nft.json +1 -1
- 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 +2 -2
- package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js.nft.json +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 +2 -2
- package/web/.next/server/app/(dashboard)/agents/page.js.nft.json +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 +2 -2
- package/web/.next/server/app/(dashboard)/approvals/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/approvals/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/automations/page.js +2 -2
- package/web/.next/server/app/(dashboard)/automations/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/automations/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page.js +2 -2
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/connectors/page.js +2 -2
- package/web/.next/server/app/(dashboard)/connectors/page.js.nft.json +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 +2 -2
- package/web/.next/server/app/(dashboard)/credentials/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/credentials/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/jobs/[id]/page.js +2 -2
- package/web/.next/server/app/(dashboard)/jobs/[id]/page.js.nft.json +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 +2 -2
- package/web/.next/server/app/(dashboard)/jobs/page.js.nft.json +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 +2 -2
- package/web/.next/server/app/(dashboard)/learned-skills/page.js.nft.json +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 +2 -2
- package/web/.next/server/app/(dashboard)/llm-providers/page.js.nft.json +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 +2 -2
- package/web/.next/server/app/(dashboard)/logs/page.js.nft.json +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 +2 -2
- package/web/.next/server/app/(dashboard)/mcp/page.js.nft.json +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 +2 -2
- package/web/.next/server/app/(dashboard)/memories/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/memories/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page.js +4 -4
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/settings/page.js +2 -2
- package/web/.next/server/app/(dashboard)/settings/page.js.nft.json +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 +2 -2
- package/web/.next/server/app/(dashboard)/settings/root-context/page.js.nft.json +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 +2 -2
- package/web/.next/server/app/(dashboard)/skills/[id]/edit/page.js.nft.json +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 +2 -2
- package/web/.next/server/app/(dashboard)/skills/new/page.js.nft.json +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 +2 -2
- package/web/.next/server/app/(dashboard)/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error/page.js +3 -3
- 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 +1 -1
- package/web/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.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 +2 -2
- 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 +3 -3
- package/web/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/web/.next/server/app/api/auth/[...all]/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/auth/callback/route.js +1 -1
- package/web/.next/server/app/login/page.js +2 -2
- 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/onboarding.html +1 -1
- package/web/.next/server/app/onboarding.rsc +3 -3
- package/web/.next/server/app/onboarding.segments/_full.segment.rsc +3 -3
- package/web/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/onboarding.segments/_index.segment.rsc +3 -3
- package/web/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
- package/web/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/onboarding.segments/onboarding.segment.rsc +1 -1
- package/web/.next/server/app-paths-manifest.json +4 -5
- package/web/.next/server/chunks/1761.js +1 -1
- package/web/.next/server/chunks/2713.js +1468 -0
- package/web/.next/server/chunks/2805.js +1 -0
- package/web/.next/server/chunks/{652.js → 4488.js} +6 -6
- package/web/.next/server/chunks/4574.js +1 -1
- package/web/.next/server/chunks/5010.js +1 -0
- package/web/.next/server/chunks/504.js +1 -0
- package/web/.next/server/chunks/649.js +1 -0
- package/web/.next/server/chunks/8909.js +1 -1
- package/web/.next/server/middleware-build-manifest.js +1 -1
- package/web/.next/server/middleware.js +1 -1
- 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/PdXHWm_n8Uxo3oAAuBfXQ/_buildManifest.js +1 -0
- package/web/.next/static/chunks/1361-5bc59efe9312f6ad.js +1 -0
- package/web/.next/static/chunks/2399-3c0b486cf3d65e4b.js +1 -0
- package/web/.next/static/chunks/{2787-b32c92cd300d8dc6.js → 3127-6ed1141605734b01.js} +1 -1
- package/web/.next/static/chunks/3763-2fa54c0e83122050.js +1 -0
- package/web/.next/static/chunks/5429-6265eeb2f896f3a8.js +1 -0
- package/web/.next/static/chunks/6554-486a0e711130e430.js +1 -0
- package/web/.next/static/chunks/7605-012b76cba7b6879e.js +62 -0
- package/web/.next/static/chunks/7704-7ba1c3d45662ffc8.js +1 -0
- package/web/.next/static/chunks/7982-85b23121f245eb05.js +1 -0
- package/web/.next/static/chunks/8161-b09081c59130e8e5.js +1 -0
- package/web/.next/static/chunks/8620-0ddfa4e0868b4753.js +1 -0
- package/web/.next/static/chunks/9775-dad785c12d658539.js +1 -0
- package/web/.next/static/chunks/9836-d441ba43fa24ebbd.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-10bd3e3f8aa1974e.js +6 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/telegram/page-00f429005fd093cf.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/page-2ba09301cdb312c3.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/approvals/page-226a1fddb8e979ee.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/automations/page-a38a6c63ef985e54.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/chat/page-f82614052cd419af.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/connectors/page-ad5f6e4db7176538.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/credentials/page-62239e27f7ce398e.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-2150c280bdf68d25.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/jobs/page-112ff7d2d465c9a1.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/layout-f78d36295317154f.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-51861a80b707bf92.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-f624227d064bbcc0.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/logs/page-9f280c22623761d8.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/mcp/page-8b11f90f19503f7c.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/memories/page-3102528b5526e9c0.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/page-c1cc881eca8976b6.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/settings/page-629bf4c6638ed480.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-f129652dab655207.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/[id]/edit/page-ee67c826b3d6b71c.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/new/page-4a2db1b7cbfea091.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/page-d101f4739fdc45fa.js +1 -0
- package/web/.next/static/chunks/app/not-found-36303c01a266259a.js +1 -0
- package/web/.next/static/css/ff96a8dfaf40a6c3.css +3 -0
- package/web/public/connector-icons/apify.svg +5 -0
- package/web/public/connector-icons/blender.svg +12 -0
- package/web/public/connector-icons/composio.png +0 -0
- package/web/public/connector-icons/fetch.svg +17 -0
- package/web/public/connector-icons/firecrawl.svg +1 -0
- package/web/public/connector-icons/google-calendar.svg +17 -0
- package/web/public/connector-icons/keyshot.svg +36 -0
- package/web/public/connector-icons/linear.svg +1 -0
- package/web/public/connector-icons/n8n.svg +1 -0
- package/web/public/connector-icons/perplexity.svg +1 -0
- package/web/public/connector-icons/photoshop.svg +12 -0
- package/web/public/connector-icons/playwright.svg +1 -0
- package/web/public/connector-icons/supabase.svg +1 -0
- package/web/public/connector-icons/tavily.svg +1 -0
- package/web/public/connector-icons/unity.svg +10 -0
- package/web/public/connector-icons/unreal-engine.svg +1 -0
- package/web/.next/server/app/(dashboard)/billing/page.js +0 -2
- package/web/.next/server/app/(dashboard)/billing/page.js.nft.json +0 -1
- package/web/.next/server/app/(dashboard)/billing/page_client-reference-manifest.js +0 -1
- package/web/.next/server/chunks/1445.js +0 -1
- package/web/.next/server/chunks/3024.js +0 -1
- package/web/.next/server/chunks/3966.js +0 -1
- package/web/.next/server/chunks/3971.js +0 -1
- package/web/.next/server/chunks/4370.js +0 -1468
- package/web/.next/server/chunks/6012.js +0 -1
- package/web/.next/server/chunks/7928.js +0 -1
- package/web/.next/static/KhwbJu08qtDMXMHHv9JeS/_buildManifest.js +0 -1
- package/web/.next/static/chunks/4414-4e856db2be92b231.js +0 -1
- package/web/.next/static/chunks/4905-272003c6fbcb2e79.js +0 -1
- package/web/.next/static/chunks/6097-d568d74074f2dad0.js +0 -1
- package/web/.next/static/chunks/6413-c2d4ac3709048f19.js +0 -1
- package/web/.next/static/chunks/7025-7afa82fda10bddc4.js +0 -62
- package/web/.next/static/chunks/736-0de6a121614921aa.js +0 -1
- package/web/.next/static/chunks/8370-18663baebcb57ea1.js +0 -1
- package/web/.next/static/chunks/8666-ee79795cd5f52e9c.js +0 -1
- package/web/.next/static/chunks/9504-1585634fb05dc985.js +0 -1
- package/web/.next/static/chunks/9711-628acc64d23620d2.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-e3522f5beaa39d00.js +0 -6
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/telegram/page-1471b733a0d6dd17.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/agents/page-fa24d21f3dd81779.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/approvals/page-8556dfa45a425603.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/automations/page-54d3b31e9f8319ba.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/billing/page-76a720d27d6fdb88.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/chat/page-0756eef0efe47d26.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/connectors/page-e155c796daf03636.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/credentials/page-38a4707132e529ba.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-d24cf11cba87c25c.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/jobs/page-addbc7ca9fd29056.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/layout-74abd51f1d4f4847.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-596febd5d9d3130e.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-3e569fa57980ef9b.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/logs/page-c9543d1a5b387378.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/mcp/page-cc885192e6efce48.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/memories/page-2bc309d3e59fb48d.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/page-b6ce64251f732896.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/settings/page-b73e0e200ee4d9fa.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-af7ccec522050199.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/skills/[id]/edit/page-ddd8ebba5889c9a4.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/skills/new/page-95280e7f506e3443.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/skills/page-8e381563f665bb68.js +0 -1
- package/web/.next/static/chunks/app/not-found-76a720d27d6fdb88.js +0 -1
- package/web/.next/static/css/ef13c0ab64dcfa86.css +0 -3
- /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
|
[](https://nodejs.org)
|
|
11
11
|
[](https://www.typescriptlang.org)
|
|
12
12
|
[](https://kwintspiracy.github.io/nodal-agents/)
|
|
13
|
-
[](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** —
|
|
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* —
|
|
77
|
-
- *API key* —
|
|
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
|
-
|
|
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` |
|
|
122
|
+
| `/jobs` | Delegation-aware runs — each 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
|
|
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
|
}
|