@agent-native/core 0.209.2 → 0.209.3-nightly-20261016183441

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 (53) hide show
  1. package/dist/agent/context-xray/plugin.js +2 -6
  2. package/dist/agent/context-xray/schema-store.d.ts +1 -0
  3. package/dist/agent/context-xray/schema-store.js +7 -0
  4. package/dist/agent/harness/store.js +3 -0
  5. package/dist/agent/observational-memory/plugin.js +2 -6
  6. package/dist/agent/observational-memory/store.js +3 -0
  7. package/dist/agent/run-store.js +3 -0
  8. package/dist/agent/tool-approval-store.js +4 -0
  9. package/dist/automation/index.d.ts +1 -1
  10. package/dist/chat-threads/store.js +3 -0
  11. package/dist/db/migrations.d.ts +1 -0
  12. package/dist/db/migrations.js +1 -1
  13. package/dist/db/runtime-facts.d.ts +7 -0
  14. package/dist/db/runtime-facts.js +18 -0
  15. package/dist/db/schema-catalog.js +4 -1
  16. package/dist/db/store-ledger.test-helpers.d.ts +5 -0
  17. package/dist/db/store-ledger.test-helpers.js +19 -0
  18. package/dist/db/store-registry.d.ts +34 -0
  19. package/dist/db/store-registry.generated.js +9 -0
  20. package/dist/db/store-registry.js +230 -47
  21. package/dist/db/versioned-store-migrations.d.ts +14 -0
  22. package/dist/db/versioned-store-migrations.js +37 -0
  23. package/dist/db/widen-columns.js +5 -2
  24. package/dist/extensions/html-shell.js +67 -0
  25. package/dist/integrations/remote-devices-store.js +3 -0
  26. package/dist/jobs/run-history.d.ts +3 -2
  27. package/dist/jobs/run-history.js +5 -5
  28. package/dist/jobs/scheduler-health.d.ts +3 -2
  29. package/dist/jobs/scheduler-health.js +5 -5
  30. package/dist/oauth-tokens/store.js +3 -0
  31. package/dist/observability/routes.d.ts +7 -7
  32. package/dist/observability/store.js +4 -0
  33. package/dist/org/index.d.ts +1 -1
  34. package/dist/org/plugin.js +2 -4
  35. package/dist/org/schema-store.d.ts +1 -0
  36. package/dist/org/schema-store.js +13 -0
  37. package/dist/provider-api/actions/custom-provider-registration.d.ts +15 -15
  38. package/dist/provider-api/actions/provider-api.d.ts +16 -16
  39. package/dist/resources/handlers.d.ts +1 -1
  40. package/dist/resources/store.js +5 -2
  41. package/dist/secrets/routes.d.ts +10 -10
  42. package/dist/server/agent-engine-ollama-models-route.d.ts +2 -2
  43. package/dist/server/auth-plugin.js +2 -6
  44. package/dist/server/identity-sso-store.js +3 -0
  45. package/dist/server/release-migrations.js +0 -57
  46. package/dist/server/release-schema.js +10 -2
  47. package/dist/triggers/actions/manage-automation.d.ts +3 -3
  48. package/dist/triggers/event-queue.d.ts +4 -2
  49. package/dist/triggers/event-queue.js +38 -38
  50. package/dist/usage/alerts-store.js +3 -0
  51. package/dist/workspace-connections/groups.js +4 -0
  52. package/dist/workspace-connections/store.js +3 -0
  53. package/package.json +3 -3
@@ -1,10 +1,9 @@
1
- // guard:allow-unreleased-schema — owned by the versioned AUTOMATION_TRIGGER_EVENT_MIGRATIONS list in release-migrations.ts until Phase 2 folds versioned lists into stores
2
1
  import { randomUUID } from "node:crypto";
3
2
  import { resolveBackgroundRunHardTimeoutMs } from "../agent/run-manager.js";
4
3
  import { getDbExec } from "../db/client.js";
5
4
  import { ensureColumnExists, ensureIndexExists, ensureTableExists, } from "../db/ddl-guard.js";
6
- import { runMigrations } from "../db/migrations.js";
7
- import { retainRequestDbPoolScope } from "../db/request-pool-context.js";
5
+ import { defineStore } from "../db/store-registry.js";
6
+ import { fromMigrationEntries } from "../db/versioned-store-migrations.js";
8
7
  const TABLE = "automation_trigger_event_queue";
9
8
  const SWEEP_STATE_TABLE = "automation_trigger_event_queue_sweep_state";
10
9
  const COMPLETED_PAYLOAD = '{"kind":"completed"}';
@@ -91,42 +90,43 @@ export const AUTOMATION_TRIGGER_EVENT_MIGRATIONS = [
91
90
  WHERE status IN ('pending', 'processing')`,
92
91
  },
93
92
  ];
94
- export async function runAutomationTriggerEventMigrations(nitroApp) {
95
- await runMigrations(AUTOMATION_TRIGGER_EVENT_MIGRATIONS, {
96
- table: "_automation_trigger_event_migrations",
97
- })(nitroApp);
93
+ export const automationTriggerEventsStore = defineStore({
94
+ id: "automation_trigger_events",
95
+ migrations: [
96
+ {
97
+ name: "baseline",
98
+ run: async () => {
99
+ await ensureTableExists(TABLE, CREATE_TABLE_SQL);
100
+ await ensureTableExists(SWEEP_STATE_TABLE, CREATE_SWEEP_STATE_TABLE_SQL);
101
+ await ensureColumnExists(TABLE, "failure_attempts", `ALTER TABLE ${TABLE}
102
+ ADD COLUMN IF NOT EXISTS failure_attempts BIGINT NOT NULL DEFAULT 0`);
103
+ await ensureIndexExists(UNIQUE_INDEX, `CREATE UNIQUE INDEX IF NOT EXISTS ${UNIQUE_INDEX}
104
+ ON ${TABLE} (trigger_id, event_id)`);
105
+ await ensureIndexExists(ORDER_INDEX, `CREATE INDEX IF NOT EXISTS ${ORDER_INDEX}
106
+ ON ${TABLE} (trigger_id, sequence_id, status)`);
107
+ await ensureIndexExists(READY_INDEX, `CREATE INDEX IF NOT EXISTS ${READY_INDEX}
108
+ ON ${TABLE} (app_id, status, available_at, claimed_at)`);
109
+ await ensureIndexExists(ACTIVE_HEAD_INDEX, `CREATE INDEX IF NOT EXISTS ${ACTIVE_HEAD_INDEX}
110
+ ON ${TABLE} (app_id, trigger_id, sequence_id)
111
+ WHERE status IN ('pending', 'processing')`);
112
+ await ensureIndexExists(FAILED_INDEX, `CREATE INDEX IF NOT EXISTS ${FAILED_INDEX}
113
+ ON ${TABLE} (completed_at) WHERE status = 'failed'`);
114
+ await ensureIndexExists(STALE_EVENT_INDEX, `CREATE INDEX IF NOT EXISTS ${STALE_EVENT_INDEX}
115
+ ON ${TABLE} (app_id, event_name, emitted_at)
116
+ WHERE status = 'pending'`);
117
+ await ensureIndexExists(COMPLETED_INDEX, `CREATE INDEX IF NOT EXISTS ${COMPLETED_INDEX}
118
+ ON ${TABLE} (completed_at) WHERE status = 'completed'`);
119
+ },
120
+ },
121
+ ...fromMigrationEntries("_automation_trigger_event_migrations", AUTOMATION_TRIGGER_EVENT_MIGRATIONS),
122
+ ],
123
+ });
124
+ /** Kept for callers of the export; the store owns these migrations. */
125
+ export async function runAutomationTriggerEventMigrations(_nitroApp) {
126
+ await automationTriggerEventsStore.ready();
98
127
  }
99
- let _initPromise;
100
- export async function ensureAutomationTriggerEventQueue() {
101
- if (!_initPromise) {
102
- const _initPromiseWithRequestDbPoolScope = (async () => {
103
- await ensureTableExists(TABLE, CREATE_TABLE_SQL);
104
- await ensureTableExists(SWEEP_STATE_TABLE, CREATE_SWEEP_STATE_TABLE_SQL);
105
- await ensureColumnExists(TABLE, "failure_attempts", `ALTER TABLE ${TABLE}
106
- ADD COLUMN IF NOT EXISTS failure_attempts BIGINT NOT NULL DEFAULT 0`);
107
- await ensureIndexExists(UNIQUE_INDEX, `CREATE UNIQUE INDEX IF NOT EXISTS ${UNIQUE_INDEX}
108
- ON ${TABLE} (trigger_id, event_id)`);
109
- await ensureIndexExists(ORDER_INDEX, `CREATE INDEX IF NOT EXISTS ${ORDER_INDEX}
110
- ON ${TABLE} (trigger_id, sequence_id, status)`);
111
- await ensureIndexExists(READY_INDEX, `CREATE INDEX IF NOT EXISTS ${READY_INDEX}
112
- ON ${TABLE} (app_id, status, available_at, claimed_at)`);
113
- await ensureIndexExists(ACTIVE_HEAD_INDEX, `CREATE INDEX IF NOT EXISTS ${ACTIVE_HEAD_INDEX}
114
- ON ${TABLE} (app_id, trigger_id, sequence_id)
115
- WHERE status IN ('pending', 'processing')`);
116
- await ensureIndexExists(FAILED_INDEX, `CREATE INDEX IF NOT EXISTS ${FAILED_INDEX}
117
- ON ${TABLE} (completed_at) WHERE status = 'failed'`);
118
- await ensureIndexExists(STALE_EVENT_INDEX, `CREATE INDEX IF NOT EXISTS ${STALE_EVENT_INDEX}
119
- ON ${TABLE} (app_id, event_name, emitted_at)
120
- WHERE status = 'pending'`);
121
- await ensureIndexExists(COMPLETED_INDEX, `CREATE INDEX IF NOT EXISTS ${COMPLETED_INDEX}
122
- ON ${TABLE} (completed_at) WHERE status = 'completed'`);
123
- })().catch((error) => {
124
- _initPromise = undefined;
125
- throw error;
126
- });
127
- _initPromise = retainRequestDbPoolScope(_initPromiseWithRequestDbPoolScope);
128
- }
129
- return _initPromise;
128
+ export function ensureAutomationTriggerEventQueue() {
129
+ return automationTriggerEventsStore.ready();
130
130
  }
131
131
  function rowToEvent(row) {
132
132
  if (row.claimed_at == null || !Number.isFinite(Number(row.claimed_at))) {
@@ -1,8 +1,10 @@
1
1
  import { getDbExec } from "../db/client.js";
2
2
  import { ensureColumnExists, ensureIndexExists, ensureTableExists, } from "../db/ddl-guard.js";
3
3
  import { defineStore } from "../db/store-registry.js";
4
+ import { fromMigrationEntries } from "../db/versioned-store-migrations.js";
4
5
  import { deleteNotification, notifyWithDelivery, } from "../notifications/index.js";
5
6
  import { ForbiddenError } from "../sharing/access.js";
7
+ import { USAGE_ALERT_MIGRATIONS, USAGE_ALERT_MIGRATIONS_TABLE, } from "./migrations.js";
6
8
  import { builderCreditsFromCostCents } from "./store.js";
7
9
  const DAY_MS = 86_400_000;
8
10
  const DEFAULT_DAILY_USD = 100;
@@ -128,6 +130,7 @@ export const usageAlertsStore = defineStore({
128
130
  }
129
131
  },
130
132
  },
133
+ ...fromMigrationEntries(USAGE_ALERT_MIGRATIONS_TABLE, USAGE_ALERT_MIGRATIONS),
131
134
  ],
132
135
  });
133
136
  export function ensureTables() {
@@ -2,8 +2,10 @@ import { randomUUID } from "node:crypto";
2
2
  import { getDbExec, isUniqueViolation, retryOnDdlRace, safeJsonParse, } from "../db/client.js";
3
3
  import { ensureIndexExists, ensureTableExists } from "../db/ddl-guard.js";
4
4
  import { defineStore } from "../db/store-registry.js";
5
+ import { fromMigrationEntries } from "../db/versioned-store-migrations.js";
5
6
  import { isOrgMember } from "../org/membership.js";
6
7
  import { getRequestOrgId, getRequestUserEmail, } from "../server/request-context.js";
8
+ import { WORKSPACE_CONNECTIONS_MIGRATIONS, WORKSPACE_CONNECTIONS_MIGRATIONS_TABLE, } from "./migrations.js";
7
9
  export function workspaceUserGroupsTable() {
8
10
  return "public.workspace_user_groups";
9
11
  }
@@ -124,6 +126,7 @@ async function ensureWorkspaceUserGroupNameTrigger(client) {
124
126
  }
125
127
  export const workspaceUserGroupsStore = defineStore({
126
128
  id: "workspace_user_groups",
129
+ after: ["workspace_connections"],
127
130
  // Hosted requests never created these tables on main, release-owned or not.
128
131
  releaseOnly: true,
129
132
  migrations: [
@@ -153,6 +156,7 @@ export const workspaceUserGroupsStore = defineStore({
153
156
  WHERE normalized_name IS NOT NULL`);
154
157
  },
155
158
  },
159
+ ...fromMigrationEntries(WORKSPACE_CONNECTIONS_MIGRATIONS_TABLE, WORKSPACE_CONNECTIONS_MIGRATIONS.filter((entry) => entry.version >= 8)),
156
160
  ],
157
161
  });
158
162
  export function ensureWorkspaceUserGroupsTable() {
@@ -3,10 +3,12 @@ import { getWorkspaceConnectionProvider, listWorkspaceConnectionProviders, } fro
3
3
  import { getDbExec, isUniqueViolation, safeJsonParse, } from "../db/client.js";
4
4
  import { ensureColumnExists, ensureIndexExists, ensureTableExists, } from "../db/ddl-guard.js";
5
5
  import { defineStore } from "../db/store-registry.js";
6
+ import { fromMigrationEntries } from "../db/versioned-store-migrations.js";
6
7
  import { getRequestOrgId, getRequestUserEmail, } from "../server/request-context.js";
7
8
  import { credentialKeyMatches } from "./credential-key-aliases.js";
8
9
  import { assertWorkspaceUserGroupIds, normalizeWorkspaceUserGroupIds, workspaceUserGroupsIncludeUser, } from "./groups.js";
9
10
  import { notifyWorkspaceConnectionLifecycle } from "./lifecycle.js";
11
+ import { WORKSPACE_CONNECTIONS_MIGRATIONS, WORKSPACE_CONNECTIONS_MIGRATIONS_TABLE, } from "./migrations.js";
10
12
  function stringValue(value, fallback = "") {
11
13
  if (typeof value === "string")
12
14
  return value;
@@ -107,6 +109,7 @@ export const workspaceConnectionsStore = defineStore({
107
109
  await ensureIndexExists("idx_workspace_connection_grants_updated_at", `CREATE INDEX IF NOT EXISTS idx_workspace_connection_grants_updated_at ON ${grantsTable} (updated_at)`);
108
110
  },
109
111
  },
112
+ ...fromMigrationEntries(WORKSPACE_CONNECTIONS_MIGRATIONS_TABLE, WORKSPACE_CONNECTIONS_MIGRATIONS.filter((entry) => entry.version <= 7)),
110
113
  ],
111
114
  });
112
115
  export function ensureWorkspaceConnectionsTable() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.209.2",
3
+ "version": "0.209.3-nightly-20261016183441",
4
4
  "description": "The agentic application framework for building autonomous agents with intuitive UIs",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -707,7 +707,7 @@
707
707
  "yaml": "^2.9.0",
708
708
  "yjs": "^13.6.33",
709
709
  "zod": "^4.3.6",
710
- "@agent-native/agentkit": "^0.209.2",
710
+ "@agent-native/agentkit": "^0.209.3-nightly-20261016183441",
711
711
  "@agent-native/recap-cli": "^0.5.74"
712
712
  },
713
713
  "devDependencies": {
@@ -778,7 +778,7 @@
778
778
  "xlsx": "^0.18.5"
779
779
  },
780
780
  "peerDependencies": {
781
- "@agent-native/core-corpus": ">=0.196.0",
781
+ "@agent-native/core-corpus": "0.209.3-nightly-20261016183441",
782
782
  "@ai-sdk/anthropic": ">=3",
783
783
  "@ai-sdk/cohere": ">=3",
784
784
  "@ai-sdk/google": ">=3",