nodal-agents 0.3.9 → 0.3.10
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 +4 -4
- package/cli.js +5 -0
- package/migrations/0023_agent_schedules_notify_on_success.sql +10 -0
- package/migrations/meta/_journal.json +7 -0
- package/package.json +1 -1
- package/runner.js +1224 -1065
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js +1 -1
- 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 +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.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_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)/connectors/page.js +1 -1
- 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 +1 -1
- 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 +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.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)/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 +2 -2
- 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 +2 -2
- 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.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_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.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 +1 -1
- 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_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 +2 -2
- package/web/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- 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 +2 -2
- 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 +2 -2
- package/web/.next/server/app/onboarding.segments/_full.segment.rsc +2 -2
- package/web/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/onboarding.segments/_index.segment.rsc +2 -2
- 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/chunks/4574.js +1 -1
- package/web/.next/server/chunks/5163.js +1 -0
- package/web/.next/server/chunks/6680.js +1 -0
- package/web/.next/server/chunks/7741.js +15 -15
- package/web/.next/server/chunks/8013.js +1 -0
- package/web/.next/server/chunks/{8193.js → 9140.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/app/(dashboard)/automations/page-4807e81e2af3030e.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/settings/{page-550fcfa4184838ea.js → page-8bc69f353f8d48a3.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/skills/[id]/edit/{page-5fab5bdd950d7037.js → page-0b61f21847f4c7a0.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/skills/new/{page-86cfe805e82b43aa.js → page-9de96e643c361732.js} +1 -1
- package/web/.next/static/css/90e1bf719df42081.css +3 -0
- package/web/.next/server/chunks/1248.js +0 -1
- package/web/.next/server/chunks/3362.js +0 -1
- package/web/.next/server/chunks/5527.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/automations/page-70005fabd08ae4a5.js +0 -1
- package/web/.next/static/css/e7183ce0b0791ec7.css +0 -3
- /package/web/.next/static/{8MmUGL73Wv8U4wr-eDBt8 → oCvSEboPKulEdUGcfE5Px}/_buildManifest.js +0 -0
- /package/web/.next/static/{8MmUGL73Wv8U4wr-eDBt8 → oCvSEboPKulEdUGcfE5Px}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -204,7 +204,7 @@ pnpm deps:check # runs locally and in CI before every release
|
|
|
204
204
|
|
|
205
205
|
## Status
|
|
206
206
|
|
|
207
|
-
**Current release:** `0.3.
|
|
207
|
+
**Current release:** `0.3.10` on npm `latest`. Used daily by the
|
|
208
208
|
maintainer, stable enough for personal production. Pre-1.0 — breaking
|
|
209
209
|
changes are still possible between minors.
|
|
210
210
|
|
|
@@ -220,15 +220,15 @@ changes are still possible between minors.
|
|
|
220
220
|
Airtable) and API-key (Notion, Airtable, Apify, Firecrawl, Tavily)
|
|
221
221
|
- MCP catalog — Streamable HTTP *and* stdio (local subprocess) servers, API-key auth; a growing catalogue (Stripe, n8n, Supabase, Airtable, Notion…) with a "test pending" badge on entries not yet verified live, plus add *and edit* your own custom HTTP/stdio servers from the dashboard
|
|
222
222
|
- Top-level workspaces — multiple isolated entities (agents/skills/connectors/jobs/memory per workspace), switch in the sidebar
|
|
223
|
-
- ROOT agent — designate an orchestrator that can create skills
|
|
223
|
+
- ROOT agent — designate an orchestrator that can create *and update* skills, create agents and assign them, gated by per-grant toggles + an autonomy/approval level; skill authoring is grounded in the workspace's real tools (a linter rejects skills referencing tools the agent doesn't have)
|
|
224
224
|
- Office file editing — Excel in-place edit, Word/PowerPoint create, in the agent workspace (office-editing skill)
|
|
225
225
|
- Multiple filesystem folders per agent (sandboxed `file_*` tools)
|
|
226
226
|
- Telegram delivery (long-poll, group filters, multi-agent routing,
|
|
227
227
|
delegation gracefulness) — exactly-once delivery contract: anti-spam guard
|
|
228
228
|
against runaway message loops + a guard that re-prompts (then fails loud)
|
|
229
229
|
rather than completing a job without ever replying
|
|
230
|
-
- Approval gates for risky tools (execute-the-approved-action on resume)
|
|
231
|
-
- Cron scheduling
|
|
230
|
+
- Approval gates for risky tools (execute-the-approved-action on resume) — on a chat channel, the agent sends a heads-up before the job pauses so the user knows an approval is waiting
|
|
231
|
+
- Cron scheduling — trigger any automation out-of-band ("Run now") + opt-in Telegram confirmation when a scheduled job succeeds
|
|
232
232
|
- `nodal-agents update` — one-command upgrade + boot version notice
|
|
233
233
|
- Encryption at rest for LLM keys + MCP keys
|
|
234
234
|
- Embedded Postgres distribution via npm (no external DB to install)
|
package/cli.js
CHANGED
|
@@ -12168,6 +12168,7 @@ var init_root_agent = __esm({
|
|
|
12168
12168
|
RootGrantsSchema = z19.object({
|
|
12169
12169
|
createAgent: z19.boolean(),
|
|
12170
12170
|
createSkill: z19.boolean(),
|
|
12171
|
+
updateSkill: z19.boolean(),
|
|
12171
12172
|
assignSkill: z19.boolean(),
|
|
12172
12173
|
autonomy: AutonomyLevelSchema
|
|
12173
12174
|
});
|
|
@@ -12975,6 +12976,10 @@ var init_schedules = __esm({
|
|
|
12975
12976
|
nextRun: timestamp("next_run", { withTimezone: true }),
|
|
12976
12977
|
lastStatus: text("last_status"),
|
|
12977
12978
|
chatId: text("chat_id"),
|
|
12979
|
+
// Opt-in: when true, a fired job carries a delivery target so the runner
|
|
12980
|
+
// forces the agent to send the user a success confirmation before finishing.
|
|
12981
|
+
// Default false → the cron runs silently (the user must opt in per schedule).
|
|
12982
|
+
notifyOnSuccess: boolean("notify_on_success").notNull().default(false),
|
|
12978
12983
|
createdAt: timestamp("created_at", { withTimezone: true }).defaultNow(),
|
|
12979
12984
|
updatedAt: timestamp("updated_at", { withTimezone: true }).defaultNow()
|
|
12980
12985
|
},
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- 0023_agent_schedules_notify_on_success.sql
|
|
2
|
+
-- Per-schedule success confirmation (2026-05-31):
|
|
3
|
+
-- ADD COLUMN agent_schedules.notify_on_success (boolean, not null, default false)
|
|
4
|
+
--
|
|
5
|
+
-- Opt-in flag. When true, the cron tick sets the fired job's chat_id so the
|
|
6
|
+
-- runner forces the agent to deliver a success confirmation before completing.
|
|
7
|
+
-- Idempotent (IF NOT EXISTS guard).
|
|
8
|
+
|
|
9
|
+
ALTER TABLE agent_schedules
|
|
10
|
+
ADD COLUMN IF NOT EXISTS notify_on_success boolean NOT NULL DEFAULT false;
|
|
@@ -162,6 +162,13 @@
|
|
|
162
162
|
"when": 1780200000000,
|
|
163
163
|
"tag": "0022_approval_requests_executed_at",
|
|
164
164
|
"breakpoints": true
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"idx": 23,
|
|
168
|
+
"version": "7",
|
|
169
|
+
"when": 1780300000000,
|
|
170
|
+
"tag": "0023_agent_schedules_notify_on_success",
|
|
171
|
+
"breakpoints": true
|
|
165
172
|
}
|
|
166
173
|
]
|
|
167
174
|
}
|