@axiom-lattice/pg-stores 2.0.9 → 3.0.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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @axiom-lattice/pg-stores@2.0.9 build /home/runner/work/agentic/agentic/packages/pg-stores
2
+ > @axiom-lattice/pg-stores@3.0.0 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 272.21 KB
12
- ESM dist/index.mjs.map 519.16 KB
13
- ESM ⚡️ Build success in 734ms
14
- CJS dist/index.js 278.86 KB
15
- CJS dist/index.js.map 519.45 KB
16
- CJS ⚡️ Build success in 775ms
11
+ CJS dist/index.js 299.27 KB
12
+ CJS dist/index.js.map 554.12 KB
13
+ CJS ⚡️ Build success in 628ms
14
+ ESM dist/index.mjs 292.60 KB
15
+ ESM dist/index.mjs.map 553.82 KB
16
+ ESM ⚡️ Build success in 628ms
17
17
  DTS Build start
18
- DTS ⚡️ Build success in 16435ms
19
- DTS dist/index.d.ts 62.06 KB
20
- DTS dist/index.d.mts 62.06 KB
18
+ DTS ⚡️ Build success in 13752ms
19
+ DTS dist/index.d.ts 63.85 KB
20
+ DTS dist/index.d.mts 63.85 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,61 @@
1
1
  # @axiom-lattice/pg-stores
2
2
 
3
+ ## 3.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 1c783d0: Align A2A with the standard 0.3 protocol.
8
+
9
+ **Standard A2A 0.3 server (gateway):** per-assistant discovery and execution via
10
+ `GET /api/a2a/agents/:assistantId/.well-known/agent-card.json` and
11
+ `POST /api/a2a/agents/:assistantId/jsonrpc` (`message/send`, `message/stream`,
12
+ `tasks/get`, `tasks/cancel`), plus an internal `test-call` management route.
13
+ Every inbound task is persisted as a `TaskItem` (single-ID projection:
14
+ `TaskItem.id === A2A taskId`). File `bytes` parts are ingested into workspace
15
+ storage and referenced by URI.
16
+
17
+ **API key scope model:** keys are now `tenant + projectId (required) +
18
+ assistantIds[]` whitelist. Added `client.a2aKeys.*` (list/create/delete/disable/
19
+ enable/rotate) and UI (`A2AKeyList`, `A2AExposureSection` with agent-card preview
20
+ and dual-mode try-call).
21
+
22
+ **Breaking changes:**
23
+
24
+ - The legacy custom REST endpoints (`/api/a2a/tasks/send`,
25
+ `/api/a2a/tasks/:taskId`, `/api/a2a/tasks/:taskId/stream`,
26
+ `/api/a2a/tasks/:taskId/cancel`) are removed; use the JSON-RPC endpoint instead.
27
+ - The `A2A_API_KEYS` env format is simplified to `key:tenant:project,...`
28
+ (no workspace segment); `workspaceId` is removed from the key model and
29
+ creation flow.
30
+ - The `x-a2a-agent-id` request header is removed (the assistant is derived from
31
+ the URL path).
32
+ - `protocols` self-maintained A2A types are replaced by re-exports of
33
+ `@a2a-js/sdk` 0.3 types; `A2AApiKeyRecord`/`CreateA2AApiKeyInput` drop
34
+ `workspaceId` and gain `assistantIds`.
35
+
36
+ ### Patch Changes
37
+
38
+ - 4de3e59: Harden A2A task persistence with caller-provided local IDs, atomic canceled-state guards across task stores, and request leases that prevent active scoped runtimes from being evicted before or during stream consumption.
39
+ - 1ed2a67: up issues
40
+ - 83e1d5d: Add ProjectKind (business/training/personal) with a per-workspace shared training project. Gateway ensures a default training project exists idempotently on project list and protects the last training project from deletion; personal assistant spaces are marked `personal`; client-sdk `listProjects` accepts a `kind` filter; react-sdk splits business and training projects in WorkspaceContext and pins learning rounds to the read-only shared Training Context via TrainingContextCard. No TrainingWorkspace entity — training isolation reuses the existing projectId scope.
41
+ - e501a4b: Add optional Markdown belief traces and append-only task activities, return recent task work-item history, and align scoped task work-item ordering and filtering across stores.
42
+ - Updated dependencies [4de3e59]
43
+ - Updated dependencies [1c783d0]
44
+ - Updated dependencies [1ed2a67]
45
+ - Updated dependencies [a44c80b]
46
+ - Updated dependencies [83e1d5d]
47
+ - Updated dependencies [139e8f0]
48
+ - Updated dependencies [e501a4b]
49
+ - @axiom-lattice/protocols@4.0.0
50
+ - @axiom-lattice/core@4.0.0
51
+
52
+ ## 2.0.10
53
+
54
+ ### Patch Changes
55
+
56
+ - Updated dependencies [f298373]
57
+ - @axiom-lattice/core@3.1.2
58
+
3
59
  ## 2.0.9
4
60
 
5
61
  ### 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, Project, CreateProjectRequest, UpdateProjectRequest, 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, ChannelInstallationStore, ChannelInstallation, ChannelInstallationType, CreateChannelInstallationRequest, UpdateChannelInstallationRequest, A2AApiKeyStore, A2AApiKeyRecord, CreateA2AApiKeyInput, A2AApiKeyEntry, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, ScheduleExecutionType, TaskStore, CreateTaskRequest, TaskItem, TaskListFilter, UpdateTaskRequest, TaskWorkItemStore, CreateWorkItemRequest, TaskWorkItem, TaskWorkItemListFilter, MenuRegistry, MenuItem, CreateMenuItemInput, UpdateMenuItemInput, SharedResourceStore, ShareRecord, CollectionStore, Collection, CreateCollectionRequest, UpdateCollectionRequest, VectorStoreProvider, VectorStoreCreateParams, 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, 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, ChannelInstallationStore, ChannelInstallation, ChannelInstallationType, CreateChannelInstallationRequest, UpdateChannelInstallationRequest, A2AApiKeyStore, A2AApiKeyRecord, CreateA2AApiKeyInput, A2AApiKeyEntry, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, ScheduleExecutionType, TaskStore, CreateTaskRequest, TaskItem, TaskListFilter, UpdateTaskRequest, TaskWorkItemStore, CreateWorkItemRequest, TaskWorkItem, CreateWorkItemIfAbsentRequest, TaskWorkItemListFilter, MenuRegistry, MenuItem, CreateMenuItemInput, UpdateMenuItemInput, SharedResourceStore, ShareRecord, CollectionStore, Collection, CreateCollectionRequest, UpdateCollectionRequest, VectorStoreProvider, VectorStoreCreateParams, SkillStore, Skill, CreateSkillRequest } from '@axiom-lattice/protocols';
4
4
  export { Assistant, AssistantStore, Binding, BindingRegistry, ChannelInstallation, ChannelInstallationStore, ConnectionEntry, ConnectionStore, CreateAssistantRequest, CreateBindingInput, 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, 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, ThreadInfo } from '@axiom-lattice/core';
6
6
  export { AddMessageParams, PendingMessage, ThreadInfo } from '@axiom-lattice/core';
@@ -599,7 +599,7 @@ declare class PostgreSQLProjectStore implements ProjectStore {
599
599
  /**
600
600
  * Get all projects for a specific workspace
601
601
  */
602
- getProjectsByWorkspace(tenantId: string, workspaceId: string): Promise<Project[]>;
602
+ getProjectsByWorkspace(tenantId: string, workspaceId: string, filter?: ProjectFilter): Promise<Project[]>;
603
603
  /**
604
604
  * Get a project by ID for a specific tenant
605
605
  */
@@ -1035,6 +1035,7 @@ declare class PostgreSQLA2AApiKeyStore implements A2AApiKeyStore {
1035
1035
  dispose(): Promise<void>;
1036
1036
  private ensureInitialized;
1037
1037
  findByKey(key: string): Promise<A2AApiKeyRecord | null>;
1038
+ findById(id: string): Promise<A2AApiKeyRecord | null>;
1038
1039
  list(params: {
1039
1040
  tenantId?: string;
1040
1041
  limit?: number;
@@ -1195,6 +1196,22 @@ declare class PostgreSQLTaskStore implements TaskStore {
1195
1196
  getById(tenantId: string, id: string): Promise<TaskItem | null>;
1196
1197
  list(filter: TaskListFilter): Promise<TaskItem[]>;
1197
1198
  update(tenantId: string, id: string, updates: UpdateTaskRequest): Promise<TaskItem | null>;
1199
+ /**
1200
+ * Atomically update a task unless its current status is blocked.
1201
+ *
1202
+ * @param tenantId Tenant identifier.
1203
+ * @param id Task identifier.
1204
+ * @param updates Partial task data to update.
1205
+ * @param blockedStatuses Current statuses that prevent the update.
1206
+ * @returns The updated task, or `null` when missing or blocked.
1207
+ */
1208
+ updateIfStatusNotIn(tenantId: string, id: string, updates: UpdateTaskRequest, blockedStatuses: TaskItem["status"][]): Promise<TaskItem | null>;
1209
+ /** Atomically update a task only when its current status is expected. */
1210
+ updateIfStatusIn(tenantId: string, id: string, updates: UpdateTaskRequest, expectedStatuses: TaskItem["status"][]): Promise<TaskItem | null>;
1211
+ /** Atomically update a task only when status and updatedAt match a read snapshot. */
1212
+ updateIfStatusAndUpdatedAt(tenantId: string, id: string, updates: UpdateTaskRequest, expectedStatuses: TaskItem["status"][], expectedUpdatedAt: Date | string): Promise<TaskItem | null>;
1213
+ /** Atomically update a child only when both child and parent snapshots match. */
1214
+ updateIfStatusUpdatedAtAndParentUpdatedAt(tenantId: string, id: string, updates: UpdateTaskRequest, expectedStatuses: TaskItem["status"][], expectedUpdatedAt: Date | string, parentId: string, expectedParentUpdatedAt: Date | string): Promise<TaskItem | null>;
1198
1215
  delete(tenantId: string, id: string): Promise<boolean>;
1199
1216
  dispose(): Promise<void>;
1200
1217
  private ensureInitialized;
@@ -1204,6 +1221,10 @@ declare class PostgreSQLTaskWorkItemStore implements TaskWorkItemStore {
1204
1221
  private pool;
1205
1222
  constructor(pool: Pool);
1206
1223
  create(params: CreateWorkItemRequest): Promise<TaskWorkItem>;
1224
+ /** Find an event by its tenant- and task-scoped key without pagination. */
1225
+ findByEventKey(tenantId: string, taskId: string, eventKey: string): Promise<TaskWorkItem | null>;
1226
+ /** Atomically return an existing event or create it once. */
1227
+ createIfAbsentByEventKey(params: CreateWorkItemIfAbsentRequest): Promise<TaskWorkItem>;
1207
1228
  list(filter: TaskWorkItemListFilter): Promise<TaskWorkItem[]>;
1208
1229
  private rowToItem;
1209
1230
  }
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, Project, CreateProjectRequest, UpdateProjectRequest, 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, ChannelInstallationStore, ChannelInstallation, ChannelInstallationType, CreateChannelInstallationRequest, UpdateChannelInstallationRequest, A2AApiKeyStore, A2AApiKeyRecord, CreateA2AApiKeyInput, A2AApiKeyEntry, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, ScheduleExecutionType, TaskStore, CreateTaskRequest, TaskItem, TaskListFilter, UpdateTaskRequest, TaskWorkItemStore, CreateWorkItemRequest, TaskWorkItem, TaskWorkItemListFilter, MenuRegistry, MenuItem, CreateMenuItemInput, UpdateMenuItemInput, SharedResourceStore, ShareRecord, CollectionStore, Collection, CreateCollectionRequest, UpdateCollectionRequest, VectorStoreProvider, VectorStoreCreateParams, 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, 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, ChannelInstallationStore, ChannelInstallation, ChannelInstallationType, CreateChannelInstallationRequest, UpdateChannelInstallationRequest, A2AApiKeyStore, A2AApiKeyRecord, CreateA2AApiKeyInput, A2AApiKeyEntry, ScheduleStorage, ScheduledTaskDefinition, ScheduledTaskStatus, ScheduleExecutionType, TaskStore, CreateTaskRequest, TaskItem, TaskListFilter, UpdateTaskRequest, TaskWorkItemStore, CreateWorkItemRequest, TaskWorkItem, CreateWorkItemIfAbsentRequest, TaskWorkItemListFilter, MenuRegistry, MenuItem, CreateMenuItemInput, UpdateMenuItemInput, SharedResourceStore, ShareRecord, CollectionStore, Collection, CreateCollectionRequest, UpdateCollectionRequest, VectorStoreProvider, VectorStoreCreateParams, SkillStore, Skill, CreateSkillRequest } from '@axiom-lattice/protocols';
4
4
  export { Assistant, AssistantStore, Binding, BindingRegistry, ChannelInstallation, ChannelInstallationStore, ConnectionEntry, ConnectionStore, CreateAssistantRequest, CreateBindingInput, 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, 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, ThreadInfo } from '@axiom-lattice/core';
6
6
  export { AddMessageParams, PendingMessage, ThreadInfo } from '@axiom-lattice/core';
@@ -599,7 +599,7 @@ declare class PostgreSQLProjectStore implements ProjectStore {
599
599
  /**
600
600
  * Get all projects for a specific workspace
601
601
  */
602
- getProjectsByWorkspace(tenantId: string, workspaceId: string): Promise<Project[]>;
602
+ getProjectsByWorkspace(tenantId: string, workspaceId: string, filter?: ProjectFilter): Promise<Project[]>;
603
603
  /**
604
604
  * Get a project by ID for a specific tenant
605
605
  */
@@ -1035,6 +1035,7 @@ declare class PostgreSQLA2AApiKeyStore implements A2AApiKeyStore {
1035
1035
  dispose(): Promise<void>;
1036
1036
  private ensureInitialized;
1037
1037
  findByKey(key: string): Promise<A2AApiKeyRecord | null>;
1038
+ findById(id: string): Promise<A2AApiKeyRecord | null>;
1038
1039
  list(params: {
1039
1040
  tenantId?: string;
1040
1041
  limit?: number;
@@ -1195,6 +1196,22 @@ declare class PostgreSQLTaskStore implements TaskStore {
1195
1196
  getById(tenantId: string, id: string): Promise<TaskItem | null>;
1196
1197
  list(filter: TaskListFilter): Promise<TaskItem[]>;
1197
1198
  update(tenantId: string, id: string, updates: UpdateTaskRequest): Promise<TaskItem | null>;
1199
+ /**
1200
+ * Atomically update a task unless its current status is blocked.
1201
+ *
1202
+ * @param tenantId Tenant identifier.
1203
+ * @param id Task identifier.
1204
+ * @param updates Partial task data to update.
1205
+ * @param blockedStatuses Current statuses that prevent the update.
1206
+ * @returns The updated task, or `null` when missing or blocked.
1207
+ */
1208
+ updateIfStatusNotIn(tenantId: string, id: string, updates: UpdateTaskRequest, blockedStatuses: TaskItem["status"][]): Promise<TaskItem | null>;
1209
+ /** Atomically update a task only when its current status is expected. */
1210
+ updateIfStatusIn(tenantId: string, id: string, updates: UpdateTaskRequest, expectedStatuses: TaskItem["status"][]): Promise<TaskItem | null>;
1211
+ /** Atomically update a task only when status and updatedAt match a read snapshot. */
1212
+ updateIfStatusAndUpdatedAt(tenantId: string, id: string, updates: UpdateTaskRequest, expectedStatuses: TaskItem["status"][], expectedUpdatedAt: Date | string): Promise<TaskItem | null>;
1213
+ /** Atomically update a child only when both child and parent snapshots match. */
1214
+ updateIfStatusUpdatedAtAndParentUpdatedAt(tenantId: string, id: string, updates: UpdateTaskRequest, expectedStatuses: TaskItem["status"][], expectedUpdatedAt: Date | string, parentId: string, expectedParentUpdatedAt: Date | string): Promise<TaskItem | null>;
1198
1215
  delete(tenantId: string, id: string): Promise<boolean>;
1199
1216
  dispose(): Promise<void>;
1200
1217
  private ensureInitialized;
@@ -1204,6 +1221,10 @@ declare class PostgreSQLTaskWorkItemStore implements TaskWorkItemStore {
1204
1221
  private pool;
1205
1222
  constructor(pool: Pool);
1206
1223
  create(params: CreateWorkItemRequest): Promise<TaskWorkItem>;
1224
+ /** Find an event by its tenant- and task-scoped key without pagination. */
1225
+ findByEventKey(tenantId: string, taskId: string, eventKey: string): Promise<TaskWorkItem | null>;
1226
+ /** Atomically return an existing event or create it once. */
1227
+ createIfAbsentByEventKey(params: CreateWorkItemIfAbsentRequest): Promise<TaskWorkItem>;
1207
1228
  list(filter: TaskWorkItemListFilter): Promise<TaskWorkItem[]>;
1208
1229
  private rowToItem;
1209
1230
  }