nodal-agents 0.6.7 → 0.7.0
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 +1 -1
- package/cli.js +24 -0
- package/migrations/0051_memory_search_fts.sql +2 -0
- package/migrations/0052_entities_memory_curation.sql +1 -0
- package/migrations/0053_memory_importance_locked.sql +1 -0
- package/migrations/meta/_journal.json +21 -0
- package/package.json +1 -1
- package/runner.js +275 -57
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +2 -2
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js +3 -3
- 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 +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 +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_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.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 +1 -1
- 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_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 +2 -2
- 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_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 +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_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/oauth/[provider]/callback/route.js +1 -1
- package/web/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/onboarding/page.js +1319 -1315
- package/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app-paths-manifest.json +2 -2
- package/web/.next/server/chunks/2713.js +17 -13
- package/web/.next/server/chunks/3223.js +1 -1
- package/web/.next/server/chunks/4574.js +1 -1
- package/web/.next/server/chunks/4626.js +1 -0
- package/web/.next/server/chunks/8971.js +1 -0
- package/web/.next/server/chunks/9043.js +1 -0
- 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/4964-08171c654e41b0a4.js +1 -0
- package/web/.next/static/chunks/{9836-14f7e30f77745e80.js → 9836-6830cb9d49ad261f.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-fa5717f0d0450659.js +6 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/telegram/page-73012222871598aa.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/page-7e9616b28c098e9e.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/approvals/{page-64cdc8de03714da8.js → page-9a01cb723a6ccff0.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/automations/page-85c985cd687406ed.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/chat/page-a6cc7a58986c0340.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/connectors/{page-c417cceb9b25870c.js → page-21d6c042800c8cd3.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/{page-4a258111bca49454.js → page-f6b993a88c70a2fe.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/jobs/{page-4ef0c0002fb31c13.js → page-d0d6b9db1b68451f.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/layout-d2ac2646967496bb.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-ec6312f6dfd7ee23.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-1fb26463eddf509c.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/logs/{page-69a02d29acd3d812.js → page-0bca733315e8a208.js} +1 -1
- package/web/.next/static/chunks/app/(dashboard)/mcp/page-ff56ecf2f65f5466.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/memories/page-fe4d9438c93750d6.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/page-9402fe2931216f4b.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/settings/page-995662f10ebff365.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-785b6ce3e4c5890b.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/[id]/edit/page-2106201c4df8b5a4.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/new/page-0135bcb86ab60dc2.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/{page-c47e251b87d38cc7.js → page-54e939d40c8b5b6d.js} +1 -1
- package/web/.next/static/chunks/app/onboarding/page-a4116e2f430eaff8.js +26 -0
- package/web/.next/static/css/eff119dd24f92093.css +3 -0
- package/web/.next/server/chunks/4088.js +0 -1
- package/web/.next/server/chunks/4122.js +0 -1
- package/web/.next/server/chunks/7495.js +0 -1
- package/web/.next/static/chunks/4964-09a4dc14acc324f3.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-499eb81b66c74dc5.js +0 -6
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/telegram/page-e26c56155c37f38e.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/agents/page-f4c535f30d385857.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/automations/page-b654ebf59b7a0a76.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/chat/page-687c72476c5097c1.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/layout-04e80131398f1551.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/learned-skills/page-31b01dbe3baa44cc.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/llm-providers/page-96df36ea1bf14242.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/mcp/page-3ddd2e2c8973fb2f.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/memories/page-2e127cc802ee8e72.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/page-a25fd0011e21ba38.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/settings/page-06062fc5a2d536f6.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/settings/root-context/page-fd80a1645212a6d1.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/skills/[id]/edit/page-59bb2de0f81b5ed6.js +0 -1
- package/web/.next/static/chunks/app/(dashboard)/skills/new/page-0970daf889c085c9.js +0 -1
- package/web/.next/static/chunks/app/onboarding/page-995403cba38e26cc.js +0 -26
- package/web/.next/static/css/9fc24595c3687cfb.css +0 -3
- /package/web/.next/static/{vB-0ke6pDH6vYyme7Pz5G → KFac7DQ7gdp9XPQ2bnb-2}/_buildManifest.js +0 -0
- /package/web/.next/static/{vB-0ke6pDH6vYyme7Pz5G → KFac7DQ7gdp9XPQ2bnb-2}/_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
|
| :---: | :---: |
|
package/cli.js
CHANGED
|
@@ -11511,6 +11511,10 @@ var init_memory = __esm({
|
|
|
11511
11511
|
valid_to: z13.string().datetime().nullable(),
|
|
11512
11512
|
fact_hash: z13.string().nullable(),
|
|
11513
11513
|
archived: z13.boolean(),
|
|
11514
|
+
// User override lock (migration 0053) — when true, the curator refuses to
|
|
11515
|
+
// re-score importance for this fact. Defaulted so rows/objects predating
|
|
11516
|
+
// the column still parse.
|
|
11517
|
+
importance_locked: z13.boolean().default(false),
|
|
11514
11518
|
last_accessed_at: z13.string().datetime().nullable(),
|
|
11515
11519
|
access_count: z13.number().int().min(0),
|
|
11516
11520
|
created_at: z13.string().datetime(),
|
|
@@ -11522,6 +11526,7 @@ var init_memory = __esm({
|
|
|
11522
11526
|
updated_at: true,
|
|
11523
11527
|
fact_hash: true,
|
|
11524
11528
|
archived: true,
|
|
11529
|
+
importance_locked: true,
|
|
11525
11530
|
last_accessed_at: true,
|
|
11526
11531
|
access_count: true,
|
|
11527
11532
|
valid_from: true,
|
|
@@ -12330,6 +12335,10 @@ var init_entities = __esm({
|
|
|
12330
12335
|
updatedAt: timestamp("updated_at", { withTimezone: true }).defaultNow(),
|
|
12331
12336
|
lastCuratorRunAt: timestamp("last_curator_run_at", { withTimezone: true }),
|
|
12332
12337
|
reflectionEnabled: boolean("reflection_enabled").notNull().default(false),
|
|
12338
|
+
// Decoupled from reflection_enabled (which gates the skill-learning loop,
|
|
12339
|
+
// opt-in). Gates the memory curator (Phase 2 LLM pass) — ON by default so
|
|
12340
|
+
// memory curation runs even for entities that never opted into reflection.
|
|
12341
|
+
memoryCurationEnabled: boolean("memory_curation_enabled").notNull().default(true),
|
|
12333
12342
|
// Controls whether agent-authored skills are auto-assigned to the authoring
|
|
12334
12343
|
// agent ('auto') or queued for the entity owner to approve ('approval').
|
|
12335
12344
|
skillAssignmentMode: text("skill_assignment_mode").notNull().default("approval").$type(),
|
|
@@ -12886,6 +12895,15 @@ var init_memory2 = __esm({
|
|
|
12886
12895
|
id: uuid("id").primaryKey().defaultRandom(),
|
|
12887
12896
|
entityId: uuid("entity_id").references(() => entities.id, { onDelete: "cascade" }),
|
|
12888
12897
|
agentId: uuid("agent_id").references(() => agents.id, { onDelete: "cascade" }),
|
|
12898
|
+
/**
|
|
12899
|
+
* Full-text source. A generated `search_tsv tsvector` column + GIN index
|
|
12900
|
+
* (raw SQL, migration 0051 — not expressible in the Drizzle schema builder,
|
|
12901
|
+
* same pattern as agent_jobs.search_tsv / migration 0050) makes this fact
|
|
12902
|
+
* rankable by relevance. Powers memory injection (selectMemoriesForInjection)
|
|
12903
|
+
* and the `query_memory` builtin (keywordSearchMemories) via ts_rank.
|
|
12904
|
+
* Config is `'english'` (stemming — "tokens" matches a "token" query),
|
|
12905
|
+
* unlike agent_jobs.search_tsv which stays `'simple'`.
|
|
12906
|
+
*/
|
|
12889
12907
|
fact: text("fact").notNull(),
|
|
12890
12908
|
category: text("category").default("context"),
|
|
12891
12909
|
importance: integer("importance").default(3),
|
|
@@ -12897,6 +12915,12 @@ var init_memory2 = __esm({
|
|
|
12897
12915
|
validTo: timestamp("valid_to", { withTimezone: true }),
|
|
12898
12916
|
factHash: text("fact_hash"),
|
|
12899
12917
|
archived: boolean("archived").default(false),
|
|
12918
|
+
/**
|
|
12919
|
+
* User override lock (migration 0053). When true, the curator's
|
|
12920
|
+
* usage-driven re-scoring MUST refuse to touch importance — a user-pinned
|
|
12921
|
+
* value wins over the agent's guess and the curator's correction.
|
|
12922
|
+
*/
|
|
12923
|
+
importanceLocked: boolean("importance_locked").notNull().default(false),
|
|
12900
12924
|
lastAccessedAt: timestamp("last_accessed_at", { withTimezone: true }).defaultNow(),
|
|
12901
12925
|
accessCount: integer("access_count").default(0),
|
|
12902
12926
|
createdAt: timestamp("created_at", { withTimezone: true }).defaultNow(),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE "entities" ADD COLUMN "memory_curation_enabled" boolean NOT NULL DEFAULT true;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE "agent_memory" ADD COLUMN "importance_locked" boolean NOT NULL DEFAULT false;
|
|
@@ -351,6 +351,27 @@
|
|
|
351
351
|
"when": 1783000000000,
|
|
352
352
|
"tag": "0050_jobs_search_fts",
|
|
353
353
|
"breakpoints": true
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"idx": 51,
|
|
357
|
+
"version": "7",
|
|
358
|
+
"when": 1783100000000,
|
|
359
|
+
"tag": "0051_memory_search_fts",
|
|
360
|
+
"breakpoints": true
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"idx": 52,
|
|
364
|
+
"version": "7",
|
|
365
|
+
"when": 1783200000000,
|
|
366
|
+
"tag": "0052_entities_memory_curation",
|
|
367
|
+
"breakpoints": true
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"idx": 53,
|
|
371
|
+
"version": "7",
|
|
372
|
+
"when": 1783300000000,
|
|
373
|
+
"tag": "0053_memory_importance_locked",
|
|
374
|
+
"breakpoints": true
|
|
354
375
|
}
|
|
355
376
|
]
|
|
356
377
|
}
|