nodal-agents 0.6.1 → 0.6.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/README.md +5 -5
- package/cli.js +8 -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 +1903 -1398
- 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/server/app/(dashboard)/agents/[id]/edit/page.js +2 -2
- 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_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/page.js +1 -1
- package/web/.next/server/app/(dashboard)/automations/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/billing/page.js +1 -1
- package/web/.next/server/app/(dashboard)/billing/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_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_client-reference-manifest.js +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_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 +2 -2
- 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)/settings/page.js +2 -2
- 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_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/_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 +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +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 +1 -1
- package/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- 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 +1 -1
- package/web/.next/server/app/login/page_client-reference-manifest.js +1 -1
- 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 +1 -1
- package/web/.next/server/app/onboarding.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/onboarding.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/onboarding.segments/_tree.segment.rsc +1 -1
- 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 +1 -1
- package/web/.next/server/chunks/1445.js +1 -1
- package/web/.next/server/chunks/3024.js +1 -1
- package/web/.next/server/chunks/3971.js +1 -1
- package/web/.next/server/chunks/4370.js +13 -13
- package/web/.next/server/chunks/4574.js +1 -1
- package/web/.next/server/chunks/6012.js +1 -1
- package/web/.next/server/chunks/7928.js +1 -1
- package/web/.next/server/middleware-build-manifest.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/chunks/6097-556f092e99ee921a.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/{page-e3522f5beaa39d00.js → page-43d9d097194e9298.js} +4 -4
- package/web/.next/static/chunks/app/(dashboard)/connectors/{page-e155c796daf03636.js → page-372db1197ad8e674.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/mcp/page-d9b4e0a0a5bee7a8.js +1 -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/static/chunks/6097-d568d74074f2dad0.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/mcp/page-cc885192e6efce48.js +0 -1
- /package/web/.next/static/{KhwbJu08qtDMXMHHv9JeS → hP-2bfxkCKqsl8LMX58Y7}/_buildManifest.js +0 -0
- /package/web/.next/static/{KhwbJu08qtDMXMHHv9JeS → hP-2bfxkCKqsl8LMX58Y7}/_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
|
|
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"),
|
|
@@ -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
|
}
|