@axiom-lattice/pg-stores 3.1.10 → 3.1.12

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @axiom-lattice/pg-stores@3.1.10 build /home/runner/work/agentic/agentic/packages/pg-stores
2
+ > @axiom-lattice/pg-stores@3.1.12 build /home/runner/work/agentic/agentic/packages/pg-stores
3
3
  > tsup src/index.ts --format cjs,esm --dts --sourcemap
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -8,13 +8,13 @@
8
8
  CLI Target: es2020
9
9
  CJS Build start
10
10
  ESM Build start
11
- ESM dist/index.mjs 386.13 KB
12
- ESM dist/index.mjs.map 719.03 KB
13
- ESM ⚡️ Build success in 674ms
14
- CJS dist/index.js 394.33 KB
15
- CJS dist/index.js.map 719.42 KB
16
- CJS ⚡️ Build success in 721ms
11
+ ESM dist/index.mjs 389.59 KB
12
+ ESM dist/index.mjs.map 725.25 KB
13
+ ESM ⚡️ Build success in 821ms
14
+ CJS dist/index.js 397.80 KB
15
+ CJS dist/index.js.map 725.61 KB
16
+ CJS ⚡️ Build success in 823ms
17
17
  DTS Build start
18
- DTS ⚡️ Build success in 15199ms
19
- DTS dist/index.d.ts 80.89 KB
20
- DTS dist/index.d.mts 80.89 KB
18
+ DTS ⚡️ Build success in 14271ms
19
+ DTS dist/index.d.ts 81.71 KB
20
+ DTS dist/index.d.mts 81.71 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @axiom-lattice/pg-stores
2
2
 
3
+ ## 3.1.12
4
+
5
+ ### Patch Changes
6
+
7
+ - b11b823: fix version
8
+ - Updated dependencies [b11b823]
9
+ - @axiom-lattice/core@4.2.12
10
+ - @axiom-lattice/protocols@4.2.3
11
+
12
+ ## 3.1.11
13
+
14
+ ### Patch Changes
15
+
16
+ - a467ced: publish new room
17
+ - Updated dependencies [0d39471]
18
+ - Updated dependencies [a467ced]
19
+ - @axiom-lattice/core@4.2.11
20
+ - @axiom-lattice/protocols@4.2.2
21
+
3
22
  ## 3.1.10
4
23
 
5
24
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Pool, PoolConfig, PoolClient } from 'pg';
2
2
  export { Pool, PoolConfig } from 'pg';
3
- import { ThreadStore, Thread, CreateThreadRequest, AssistantStore, Assistant, CreateAssistantRequest, DatabaseConfigStore, DatabaseConfigEntry, CreateDatabaseConfigRequest, UpdateDatabaseConfigRequest, ConnectionStore, ConnectionEntry, MetricsServerConfigStore, MetricsServerConfigEntry, CreateMetricsServerConfigRequest, UpdateMetricsServerConfigRequest, McpServerConfigStore, McpServerConfigEntry, CreateMcpServerConfigRequest, UpdateMcpServerConfigRequest, WorkspaceStore, Workspace, CreateWorkspaceRequest, UpdateWorkspaceRequest, ProjectStore, ProjectFilter, Project, CreateProjectRequest, UpdateProjectRequest, UpdateProjectCapabilityBundlesResult, UserStore, User, CreateUserRequest, UpdateUserRequest, TenantStore, Tenant, CreateTenantRequest, UpdateTenantRequest, UserTenantLinkStore, UserTenantLink, CreateUserTenantLinkRequest, UpdateUserTenantLinkRequest, WorkflowTrackingStore, CreateWorkflowRunRequest, WorkflowRun, UpdateWorkflowRunRequest, QueryWorkflowRunsOptions, QueryWorkflowRunsResult, CreateRunStepRequest, RunStep, UpdateRunStepRequest, StepType, EvalStore, EvalProject, CreateEvalProjectRequest, EvalSuite, CreateEvalSuiteRequest, EvalCase, CreateEvalCaseRequest, EvalRun, CreateEvalRunRequest, EvalRunResult, EvalProjectReport, BindingRegistry, Binding, CreateBindingInput, BindingMutablePatch, BindingListParams, ChannelInstallationStore, ChannelInstallation, ChannelInstallationType, CreateChannelInstallationInput, UpdateChannelInstallationRequest, A2AApiKeyStore, A2AApiKeyRecord, CreateA2AApiKeyInput, UpdateA2AApiKeyInput, A2AApiKeyEntry, OpenAuditStore, OpenAuditQuery, OpenAuditRecord, OpenAuditAppendInput, AgentWebAppStore, AgentWebApp, CreateAgentWebAppInput, AgentWebAppStorePatch, AgentWebAppUpdateOptions, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, ScheduleExecutionType, TaskStore, CreateTaskRequest, TaskItem, TaskListFilter, TaskDependentListQuery, UpdateTaskRequest, TaskMutationSnapshot, TaskWorkItemStore, CreateWorkItemRequest, TaskWorkItem, CreateWorkItemIfAbsentRequest, TaskWorkItemListFilter, ProjectLifecycleEventQuery, MenuRegistry, MenuItem, CreateMenuItemInput, UpdateMenuItemInput, SharedResourceStore, ShareRecord, CollectionStore, Collection, CreateCollectionRequest, UpdateCollectionRequest, VectorStoreProvider, VectorStoreCreateParams, CapabilityBundleStore, CapabilityBundle, InternalCreateCapabilityBundleInput, InternalUpdateCapabilityBundleInput, CapabilityBundleDeleteResult, ProjectRoomStore, ProjectRoom, ProjectMembershipStore, ProjectMembership, ProjectHumanRole, ProjectMembershipMutationResult, ProjectBotMembershipStore, ProjectBotMembership, ProjectRoomMessageStore, ProjectRoomMessage, ProjectRoomReadStateStore, ProjectRoomReadState, SkillStore, Skill, CreateSkillRequest } from '@axiom-lattice/protocols';
3
+ import { ThreadStore, Thread, CreateThreadRequest, AssistantStore, Assistant, CreateAssistantRequest, DatabaseConfigStore, DatabaseConfigEntry, CreateDatabaseConfigRequest, UpdateDatabaseConfigRequest, ConnectionStore, ConnectionEntry, MetricsServerConfigStore, MetricsServerConfigEntry, CreateMetricsServerConfigRequest, UpdateMetricsServerConfigRequest, McpServerConfigStore, McpServerConfigEntry, CreateMcpServerConfigRequest, UpdateMcpServerConfigRequest, WorkspaceStore, Workspace, CreateWorkspaceRequest, UpdateWorkspaceRequest, ProjectStore, ProjectFilter, Project, CreateProjectRequest, UpdateProjectRequest, UpdateProjectCapabilityBundlesResult, UserStore, User, CreateUserRequest, UpdateUserRequest, TenantStore, Tenant, CreateTenantRequest, UpdateTenantRequest, UserTenantLinkStore, UserTenantLink, CreateUserTenantLinkRequest, UpdateUserTenantLinkRequest, WorkflowTrackingStore, CreateWorkflowRunRequest, WorkflowRun, UpdateWorkflowRunRequest, QueryWorkflowRunsOptions, QueryWorkflowRunsResult, CreateRunStepRequest, RunStep, UpdateRunStepRequest, StepType, EvalStore, EvalProject, CreateEvalProjectRequest, EvalSuite, CreateEvalSuiteRequest, EvalCase, CreateEvalCaseRequest, EvalRun, CreateEvalRunRequest, EvalRunResult, EvalProjectReport, BindingRegistry, Binding, CreateBindingInput, BindingMutablePatch, BindingListParams, ChannelInstallationStore, ChannelInstallation, ChannelInstallationType, CreateChannelInstallationInput, UpdateChannelInstallationRequest, A2AApiKeyStore, A2AApiKeyRecord, CreateA2AApiKeyInput, UpdateA2AApiKeyInput, A2AApiKeyEntry, OpenAuditStore, OpenAuditQuery, OpenAuditRecord, OpenAuditAppendInput, AgentWebAppStore, AgentWebApp, CreateAgentWebAppInput, AgentWebAppStorePatch, AgentWebAppUpdateOptions, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, ScheduleExecutionType, TaskStore, CreateTaskRequest, TaskItem, TaskListFilter, TaskDependentListQuery, UpdateTaskRequest, TaskMutationSnapshot, TaskWorkItemStore, CreateWorkItemRequest, TaskWorkItem, CreateWorkItemIfAbsentRequest, TaskWorkItemListFilter, ProjectLifecycleEventQuery, MenuRegistry, MenuItem, CreateMenuItemInput, UpdateMenuItemInput, SharedResourceStore, ShareRecord, CollectionStore, Collection, CreateCollectionRequest, UpdateCollectionRequest, VectorStoreProvider, VectorStoreCreateParams, CapabilityBundleStore, CapabilityBundle, InternalCreateCapabilityBundleInput, InternalUpdateCapabilityBundleInput, CapabilityBundleDeleteResult, ProjectRoomStore, ProjectRoom, ProjectMembershipStore, ProjectMembership, ProjectHumanRole, ProjectMembershipMutationResult, ProjectBotMembershipStore, ProjectBotMembership, ProjectRoomMessageStore, ProjectRoomMessage, ProjectRoomReadStateStore, ProjectRoomReadState, UserPushSubscriptionStore, UserPushSubscription, SkillStore, Skill, CreateSkillRequest } from '@axiom-lattice/protocols';
4
4
  export { AgentWebApp, AgentWebAppAppearance, AgentWebAppFeatures, AgentWebAppScope, AgentWebAppStatus, AgentWebAppStore, Assistant, AssistantStore, Binding, BindingRegistry, CapabilityBundle, CapabilityBundleStore, ChannelInstallation, ChannelInstallationStore, ConnectionEntry, ConnectionStore, CreateAgentWebAppInput, CreateAssistantRequest, CreateBindingInput, CreateCapabilityBundleInput, CreateChannelInstallationInput, CreateChannelInstallationRequest, CreateDatabaseConfigRequest, CreateEvalCaseRequest, CreateEvalProjectRequest, CreateEvalRunRequest, CreateEvalSuiteRequest, CreateMcpServerConfigRequest, CreateMenuItemInput, CreateMetricsServerConfigRequest, CreateProjectRequest, CreateRunStepRequest, CreateShareRequest, CreateSkillRequest, CreateTenantRequest, CreateThreadRequest, CreateUserRequest, CreateUserTenantLinkRequest, CreateWorkflowRunRequest, CreateWorkspaceRequest, DatabaseConfig, DatabaseConfigEntry, DatabaseConfigStore, DatabaseType, EvalCase, EvalProject, EvalProjectReport, EvalRun, EvalRunResult, EvalStore, EvalSuite, LarkChannelInstallationConfig, McpServerConfigEntry, McpServerConfigStore, MenuItem, MenuRegistry, MetricsServerConfig, MetricsServerConfigEntry, MetricsServerConfigStore, Project, ProjectStore, ResourceAddress, RunStep, ScheduleExecutionType, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, ShareRecord, ShareResult, ShareVisibility, SharedResourceStore, Skill, SkillStore, StorageType, Tenant, TenantStatus, TenantStore, Thread, ThreadStore, UpdateAgentWebAppInput, UpdateCapabilityBundleInput, UpdateChannelInstallationRequest, UpdateDatabaseConfigRequest, UpdateMcpServerConfigRequest, UpdateMetricsServerConfigRequest, UpdateProjectRequest, UpdateRunStepRequest, UpdateTenantRequest, UpdateUserRequest, UpdateUserTenantLinkRequest, UpdateWorkflowRunRequest, UpdateWorkspaceRequest, User, UserStore, UserTenantLink, UserTenantLinkStore, UserTenantRole, WorkflowRun, WorkflowTrackingStore, Workspace, WorkspaceStore } from '@axiom-lattice/protocols';
5
5
  import { IMessageQueueStore, AddMessageParams, PendingMessage, QueueScope, ThreadInfo } from '@axiom-lattice/core';
6
6
  export { AddMessageParams, PendingMessage, ThreadInfo } from '@axiom-lattice/core';
@@ -1657,6 +1657,21 @@ declare class PostgreSQLProjectRoomReadStateStore implements ProjectRoomReadStat
1657
1657
  }): Promise<ProjectRoomReadState>;
1658
1658
  }
1659
1659
 
1660
+ /** Persists per-user Web Push subscriptions in PostgreSQL. */
1661
+ declare class PostgreSQLUserPushSubscriptionStore implements UserPushSubscriptionStore {
1662
+ /** Creates a store using an externally managed shared pool. */
1663
+ constructor(options: {
1664
+ pool: Pool;
1665
+ });
1666
+ private readonly pool;
1667
+ /** Lists every subscription for a user. */
1668
+ list(tenantId: string, userId: string): Promise<UserPushSubscription[]>;
1669
+ /** Upserts a subscription keyed by tenant + user + endpoint. */
1670
+ save(input: Omit<UserPushSubscription, "id" | "createdAt">): Promise<UserPushSubscription>;
1671
+ /** Deletes one subscription by endpoint. */
1672
+ delete(tenantId: string, userId: string, endpoint: string): Promise<boolean>;
1673
+ }
1674
+
1660
1675
  declare function createPgStoreConfig(connectionString: string): Promise<{
1661
1676
  workspace: PostgreSQLWorkspaceStore;
1662
1677
  project: PostgreSQLProjectStore;
@@ -1689,6 +1704,7 @@ declare function createPgStoreConfig(connectionString: string): Promise<{
1689
1704
  projectBotMembership: PostgreSQLProjectBotMembershipStore;
1690
1705
  projectRoomMessage: PostgreSQLProjectRoomMessageStore;
1691
1706
  projectRoomReadState: PostgreSQLProjectRoomReadStateStore;
1707
+ userPushSubscription: PostgreSQLUserPushSubscriptionStore;
1692
1708
  vectorStoreProvider: PGVectorStoreProvider;
1693
1709
  checkpoint: PostgresSaver;
1694
1710
  }>;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Pool, PoolConfig, PoolClient } from 'pg';
2
2
  export { Pool, PoolConfig } from 'pg';
3
- import { ThreadStore, Thread, CreateThreadRequest, AssistantStore, Assistant, CreateAssistantRequest, DatabaseConfigStore, DatabaseConfigEntry, CreateDatabaseConfigRequest, UpdateDatabaseConfigRequest, ConnectionStore, ConnectionEntry, MetricsServerConfigStore, MetricsServerConfigEntry, CreateMetricsServerConfigRequest, UpdateMetricsServerConfigRequest, McpServerConfigStore, McpServerConfigEntry, CreateMcpServerConfigRequest, UpdateMcpServerConfigRequest, WorkspaceStore, Workspace, CreateWorkspaceRequest, UpdateWorkspaceRequest, ProjectStore, ProjectFilter, Project, CreateProjectRequest, UpdateProjectRequest, UpdateProjectCapabilityBundlesResult, UserStore, User, CreateUserRequest, UpdateUserRequest, TenantStore, Tenant, CreateTenantRequest, UpdateTenantRequest, UserTenantLinkStore, UserTenantLink, CreateUserTenantLinkRequest, UpdateUserTenantLinkRequest, WorkflowTrackingStore, CreateWorkflowRunRequest, WorkflowRun, UpdateWorkflowRunRequest, QueryWorkflowRunsOptions, QueryWorkflowRunsResult, CreateRunStepRequest, RunStep, UpdateRunStepRequest, StepType, EvalStore, EvalProject, CreateEvalProjectRequest, EvalSuite, CreateEvalSuiteRequest, EvalCase, CreateEvalCaseRequest, EvalRun, CreateEvalRunRequest, EvalRunResult, EvalProjectReport, BindingRegistry, Binding, CreateBindingInput, BindingMutablePatch, BindingListParams, ChannelInstallationStore, ChannelInstallation, ChannelInstallationType, CreateChannelInstallationInput, UpdateChannelInstallationRequest, A2AApiKeyStore, A2AApiKeyRecord, CreateA2AApiKeyInput, UpdateA2AApiKeyInput, A2AApiKeyEntry, OpenAuditStore, OpenAuditQuery, OpenAuditRecord, OpenAuditAppendInput, AgentWebAppStore, AgentWebApp, CreateAgentWebAppInput, AgentWebAppStorePatch, AgentWebAppUpdateOptions, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, ScheduleExecutionType, TaskStore, CreateTaskRequest, TaskItem, TaskListFilter, TaskDependentListQuery, UpdateTaskRequest, TaskMutationSnapshot, TaskWorkItemStore, CreateWorkItemRequest, TaskWorkItem, CreateWorkItemIfAbsentRequest, TaskWorkItemListFilter, ProjectLifecycleEventQuery, MenuRegistry, MenuItem, CreateMenuItemInput, UpdateMenuItemInput, SharedResourceStore, ShareRecord, CollectionStore, Collection, CreateCollectionRequest, UpdateCollectionRequest, VectorStoreProvider, VectorStoreCreateParams, CapabilityBundleStore, CapabilityBundle, InternalCreateCapabilityBundleInput, InternalUpdateCapabilityBundleInput, CapabilityBundleDeleteResult, ProjectRoomStore, ProjectRoom, ProjectMembershipStore, ProjectMembership, ProjectHumanRole, ProjectMembershipMutationResult, ProjectBotMembershipStore, ProjectBotMembership, ProjectRoomMessageStore, ProjectRoomMessage, ProjectRoomReadStateStore, ProjectRoomReadState, SkillStore, Skill, CreateSkillRequest } from '@axiom-lattice/protocols';
3
+ import { ThreadStore, Thread, CreateThreadRequest, AssistantStore, Assistant, CreateAssistantRequest, DatabaseConfigStore, DatabaseConfigEntry, CreateDatabaseConfigRequest, UpdateDatabaseConfigRequest, ConnectionStore, ConnectionEntry, MetricsServerConfigStore, MetricsServerConfigEntry, CreateMetricsServerConfigRequest, UpdateMetricsServerConfigRequest, McpServerConfigStore, McpServerConfigEntry, CreateMcpServerConfigRequest, UpdateMcpServerConfigRequest, WorkspaceStore, Workspace, CreateWorkspaceRequest, UpdateWorkspaceRequest, ProjectStore, ProjectFilter, Project, CreateProjectRequest, UpdateProjectRequest, UpdateProjectCapabilityBundlesResult, UserStore, User, CreateUserRequest, UpdateUserRequest, TenantStore, Tenant, CreateTenantRequest, UpdateTenantRequest, UserTenantLinkStore, UserTenantLink, CreateUserTenantLinkRequest, UpdateUserTenantLinkRequest, WorkflowTrackingStore, CreateWorkflowRunRequest, WorkflowRun, UpdateWorkflowRunRequest, QueryWorkflowRunsOptions, QueryWorkflowRunsResult, CreateRunStepRequest, RunStep, UpdateRunStepRequest, StepType, EvalStore, EvalProject, CreateEvalProjectRequest, EvalSuite, CreateEvalSuiteRequest, EvalCase, CreateEvalCaseRequest, EvalRun, CreateEvalRunRequest, EvalRunResult, EvalProjectReport, BindingRegistry, Binding, CreateBindingInput, BindingMutablePatch, BindingListParams, ChannelInstallationStore, ChannelInstallation, ChannelInstallationType, CreateChannelInstallationInput, UpdateChannelInstallationRequest, A2AApiKeyStore, A2AApiKeyRecord, CreateA2AApiKeyInput, UpdateA2AApiKeyInput, A2AApiKeyEntry, OpenAuditStore, OpenAuditQuery, OpenAuditRecord, OpenAuditAppendInput, AgentWebAppStore, AgentWebApp, CreateAgentWebAppInput, AgentWebAppStorePatch, AgentWebAppUpdateOptions, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, ScheduleExecutionType, TaskStore, CreateTaskRequest, TaskItem, TaskListFilter, TaskDependentListQuery, UpdateTaskRequest, TaskMutationSnapshot, TaskWorkItemStore, CreateWorkItemRequest, TaskWorkItem, CreateWorkItemIfAbsentRequest, TaskWorkItemListFilter, ProjectLifecycleEventQuery, MenuRegistry, MenuItem, CreateMenuItemInput, UpdateMenuItemInput, SharedResourceStore, ShareRecord, CollectionStore, Collection, CreateCollectionRequest, UpdateCollectionRequest, VectorStoreProvider, VectorStoreCreateParams, CapabilityBundleStore, CapabilityBundle, InternalCreateCapabilityBundleInput, InternalUpdateCapabilityBundleInput, CapabilityBundleDeleteResult, ProjectRoomStore, ProjectRoom, ProjectMembershipStore, ProjectMembership, ProjectHumanRole, ProjectMembershipMutationResult, ProjectBotMembershipStore, ProjectBotMembership, ProjectRoomMessageStore, ProjectRoomMessage, ProjectRoomReadStateStore, ProjectRoomReadState, UserPushSubscriptionStore, UserPushSubscription, SkillStore, Skill, CreateSkillRequest } from '@axiom-lattice/protocols';
4
4
  export { AgentWebApp, AgentWebAppAppearance, AgentWebAppFeatures, AgentWebAppScope, AgentWebAppStatus, AgentWebAppStore, Assistant, AssistantStore, Binding, BindingRegistry, CapabilityBundle, CapabilityBundleStore, ChannelInstallation, ChannelInstallationStore, ConnectionEntry, ConnectionStore, CreateAgentWebAppInput, CreateAssistantRequest, CreateBindingInput, CreateCapabilityBundleInput, CreateChannelInstallationInput, CreateChannelInstallationRequest, CreateDatabaseConfigRequest, CreateEvalCaseRequest, CreateEvalProjectRequest, CreateEvalRunRequest, CreateEvalSuiteRequest, CreateMcpServerConfigRequest, CreateMenuItemInput, CreateMetricsServerConfigRequest, CreateProjectRequest, CreateRunStepRequest, CreateShareRequest, CreateSkillRequest, CreateTenantRequest, CreateThreadRequest, CreateUserRequest, CreateUserTenantLinkRequest, CreateWorkflowRunRequest, CreateWorkspaceRequest, DatabaseConfig, DatabaseConfigEntry, DatabaseConfigStore, DatabaseType, EvalCase, EvalProject, EvalProjectReport, EvalRun, EvalRunResult, EvalStore, EvalSuite, LarkChannelInstallationConfig, McpServerConfigEntry, McpServerConfigStore, MenuItem, MenuRegistry, MetricsServerConfig, MetricsServerConfigEntry, MetricsServerConfigStore, Project, ProjectStore, ResourceAddress, RunStep, ScheduleExecutionType, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, ShareRecord, ShareResult, ShareVisibility, SharedResourceStore, Skill, SkillStore, StorageType, Tenant, TenantStatus, TenantStore, Thread, ThreadStore, UpdateAgentWebAppInput, UpdateCapabilityBundleInput, UpdateChannelInstallationRequest, UpdateDatabaseConfigRequest, UpdateMcpServerConfigRequest, UpdateMetricsServerConfigRequest, UpdateProjectRequest, UpdateRunStepRequest, UpdateTenantRequest, UpdateUserRequest, UpdateUserTenantLinkRequest, UpdateWorkflowRunRequest, UpdateWorkspaceRequest, User, UserStore, UserTenantLink, UserTenantLinkStore, UserTenantRole, WorkflowRun, WorkflowTrackingStore, Workspace, WorkspaceStore } from '@axiom-lattice/protocols';
5
5
  import { IMessageQueueStore, AddMessageParams, PendingMessage, QueueScope, ThreadInfo } from '@axiom-lattice/core';
6
6
  export { AddMessageParams, PendingMessage, ThreadInfo } from '@axiom-lattice/core';
@@ -1657,6 +1657,21 @@ declare class PostgreSQLProjectRoomReadStateStore implements ProjectRoomReadStat
1657
1657
  }): Promise<ProjectRoomReadState>;
1658
1658
  }
1659
1659
 
1660
+ /** Persists per-user Web Push subscriptions in PostgreSQL. */
1661
+ declare class PostgreSQLUserPushSubscriptionStore implements UserPushSubscriptionStore {
1662
+ /** Creates a store using an externally managed shared pool. */
1663
+ constructor(options: {
1664
+ pool: Pool;
1665
+ });
1666
+ private readonly pool;
1667
+ /** Lists every subscription for a user. */
1668
+ list(tenantId: string, userId: string): Promise<UserPushSubscription[]>;
1669
+ /** Upserts a subscription keyed by tenant + user + endpoint. */
1670
+ save(input: Omit<UserPushSubscription, "id" | "createdAt">): Promise<UserPushSubscription>;
1671
+ /** Deletes one subscription by endpoint. */
1672
+ delete(tenantId: string, userId: string, endpoint: string): Promise<boolean>;
1673
+ }
1674
+
1660
1675
  declare function createPgStoreConfig(connectionString: string): Promise<{
1661
1676
  workspace: PostgreSQLWorkspaceStore;
1662
1677
  project: PostgreSQLProjectStore;
@@ -1689,6 +1704,7 @@ declare function createPgStoreConfig(connectionString: string): Promise<{
1689
1704
  projectBotMembership: PostgreSQLProjectBotMembershipStore;
1690
1705
  projectRoomMessage: PostgreSQLProjectRoomMessageStore;
1691
1706
  projectRoomReadState: PostgreSQLProjectRoomReadStateStore;
1707
+ userPushSubscription: PostgreSQLUserPushSubscriptionStore;
1692
1708
  vectorStoreProvider: PGVectorStoreProvider;
1693
1709
  checkpoint: PostgresSaver;
1694
1710
  }>;
package/dist/index.js CHANGED
@@ -8853,12 +8853,12 @@ var PostgreSQLTaskWorkItemStore = class {
8853
8853
  tenantId: row.tenant_id,
8854
8854
  action: row.action,
8855
8855
  actor: row.actor,
8856
- threadId: row.thread_id,
8857
- summary: row.summary,
8856
+ threadId: row.thread_id == null ? void 0 : row.thread_id,
8857
+ summary: row.summary == null ? void 0 : row.summary,
8858
8858
  detail: isRecord2(row.detail) ? row.detail : void 0,
8859
- attempt: row.attempt,
8860
- workspaceId: row.workspace_id,
8861
- projectId: row.project_id,
8859
+ attempt: row.attempt == null ? void 0 : row.attempt,
8860
+ workspaceId: row.workspace_id == null ? void 0 : row.workspace_id,
8861
+ projectId: row.project_id == null ? void 0 : row.project_id,
8862
8862
  eventKey: row.event_key == null ? void 0 : row.event_key,
8863
8863
  createdAt: new Date(row.created_at)
8864
8864
  };
@@ -10001,6 +10001,35 @@ var createProjectRoomReadStates = {
10001
10001
  }
10002
10002
  };
10003
10003
 
10004
+ // src/migrations/user_push_subscription_migration.ts
10005
+ var createUserPushSubscriptions = {
10006
+ version: 178,
10007
+ name: "create_user_push_subscriptions",
10008
+ up: async (client) => {
10009
+ await client.query(`
10010
+ CREATE TABLE IF NOT EXISTS lattice_user_push_subscriptions (
10011
+ id VARCHAR(255) PRIMARY KEY,
10012
+ tenant_id VARCHAR(255) NOT NULL,
10013
+ user_id VARCHAR(255) NOT NULL,
10014
+ endpoint TEXT NOT NULL,
10015
+ p256dh TEXT NOT NULL,
10016
+ auth TEXT NOT NULL,
10017
+ user_agent TEXT,
10018
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
10019
+ UNIQUE (tenant_id, user_id, endpoint)
10020
+ )
10021
+ `);
10022
+ await client.query(`
10023
+ CREATE INDEX IF NOT EXISTS idx_lattice_user_push_subscriptions_user
10024
+ ON lattice_user_push_subscriptions (tenant_id, user_id)
10025
+ `);
10026
+ },
10027
+ down: async (client) => {
10028
+ await client.query("DROP INDEX IF EXISTS idx_lattice_user_push_subscriptions_user");
10029
+ await client.query("DROP TABLE IF EXISTS lattice_user_push_subscriptions");
10030
+ }
10031
+ };
10032
+
10004
10033
  // src/stores/PostgreSQLCapabilityBundleStore.ts
10005
10034
  var import_crypto4 = require("crypto");
10006
10035
  var import_pg26 = require("pg");
@@ -10873,6 +10902,58 @@ var PostgreSQLProjectRoomReadStateStore = class {
10873
10902
  }
10874
10903
  };
10875
10904
 
10905
+ // src/stores/PostgreSQLUserPushSubscriptionStore.ts
10906
+ var import_node_crypto = require("crypto");
10907
+ var columns4 = "id, tenant_id, user_id, endpoint, p256dh, auth, user_agent, created_at";
10908
+ function mapRow7(row) {
10909
+ if (typeof row.id !== "string" || typeof row.tenant_id !== "string" || typeof row.user_id !== "string" || typeof row.endpoint !== "string" || typeof row.p256dh !== "string" || typeof row.auth !== "string" || !(row.created_at instanceof Date) || Number.isNaN(row.created_at.getTime())) {
10910
+ throw new Error("Invalid user push subscription row");
10911
+ }
10912
+ return {
10913
+ id: row.id,
10914
+ tenantId: row.tenant_id,
10915
+ userId: row.user_id,
10916
+ endpoint: row.endpoint,
10917
+ keys: { p256dh: row.p256dh, auth: row.auth },
10918
+ ...typeof row.user_agent === "string" ? { userAgent: row.user_agent } : {},
10919
+ createdAt: row.created_at.toISOString()
10920
+ };
10921
+ }
10922
+ var PostgreSQLUserPushSubscriptionStore = class {
10923
+ /** Creates a store using an externally managed shared pool. */
10924
+ constructor(options) {
10925
+ this.pool = options.pool;
10926
+ }
10927
+ /** Lists every subscription for a user. */
10928
+ async list(tenantId, userId) {
10929
+ const result = await this.pool.query(
10930
+ `SELECT ${columns4} FROM lattice_user_push_subscriptions WHERE tenant_id = $1 AND user_id = $2`,
10931
+ [tenantId, userId]
10932
+ );
10933
+ return result.rows.map(mapRow7);
10934
+ }
10935
+ /** Upserts a subscription keyed by tenant + user + endpoint. */
10936
+ async save(input) {
10937
+ const result = await this.pool.query(
10938
+ `INSERT INTO lattice_user_push_subscriptions (${columns4})
10939
+ VALUES ($1, $2, $3, $4, $5, $6, $7, NOW())
10940
+ ON CONFLICT (tenant_id, user_id, endpoint) DO UPDATE
10941
+ SET p256dh = EXCLUDED.p256dh, auth = EXCLUDED.auth, user_agent = EXCLUDED.user_agent
10942
+ RETURNING ${columns4}`,
10943
+ [(0, import_node_crypto.randomUUID)(), input.tenantId, input.userId, input.endpoint, input.keys.p256dh, input.keys.auth, input.userAgent ?? null]
10944
+ );
10945
+ return mapRow7(result.rows[0]);
10946
+ }
10947
+ /** Deletes one subscription by endpoint. */
10948
+ async delete(tenantId, userId, endpoint) {
10949
+ const result = await this.pool.query(
10950
+ `DELETE FROM lattice_user_push_subscriptions WHERE tenant_id = $1 AND user_id = $2 AND endpoint = $3`,
10951
+ [tenantId, userId, endpoint]
10952
+ );
10953
+ return (result.rowCount ?? 0) > 0;
10954
+ }
10955
+ };
10956
+
10876
10957
  // src/createPgStoreConfig.ts
10877
10958
  async function createPgStoreConfig(connectionString) {
10878
10959
  const pool = new import_pg27.Pool({ connectionString });
@@ -10940,6 +11021,7 @@ async function createPgStoreConfig(connectionString) {
10940
11021
  mm.register(addProjectLifecycleEventIndex);
10941
11022
  mm.register(addAgentWebAppsIdentity);
10942
11023
  mm.register(createProjectRoomReadStates);
11024
+ mm.register(createUserPushSubscriptions);
10943
11025
  await mm.migrate();
10944
11026
  const checkpoint = import_langgraph_checkpoint_postgres.PostgresSaver.fromConnString(connectionString);
10945
11027
  checkpoint.setup().catch((err) => {
@@ -10979,6 +11061,7 @@ async function createPgStoreConfig(connectionString) {
10979
11061
  projectBotMembership: new PostgreSQLProjectBotMembershipStore(opts),
10980
11062
  projectRoomMessage: new PostgreSQLProjectRoomMessageStore(opts),
10981
11063
  projectRoomReadState: new PostgreSQLProjectRoomReadStateStore(opts),
11064
+ userPushSubscription: new PostgreSQLUserPushSubscriptionStore(opts),
10982
11065
  vectorStoreProvider: new PGVectorStoreProvider(pool, connectionString),
10983
11066
  checkpoint
10984
11067
  };