@stigmer/server 3.25.0 → 3.27.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.
Files changed (254) hide show
  1. package/dist/authorization/evaluator.d.ts +4 -1
  2. package/dist/authorization/evaluator.d.ts.map +1 -1
  3. package/dist/authorization/evaluator.js +8 -0
  4. package/dist/authorization/evaluator.js.map +1 -1
  5. package/dist/authorization/model/agent.d.ts.map +1 -1
  6. package/dist/authorization/model/agent.js +4 -2
  7. package/dist/authorization/model/agent.js.map +1 -1
  8. package/dist/authorization/model/agent_channel.d.ts.map +1 -1
  9. package/dist/authorization/model/agent_channel.js +5 -4
  10. package/dist/authorization/model/agent_channel.js.map +1 -1
  11. package/dist/authorization/model/agent_instance.d.ts.map +1 -1
  12. package/dist/authorization/model/agent_instance.js +3 -2
  13. package/dist/authorization/model/agent_instance.js.map +1 -1
  14. package/dist/authorization/model/mcp_server.d.ts.map +1 -1
  15. package/dist/authorization/model/mcp_server.js +3 -2
  16. package/dist/authorization/model/mcp_server.js.map +1 -1
  17. package/dist/authorization/model/organization.d.ts.map +1 -1
  18. package/dist/authorization/model/organization.js +3 -0
  19. package/dist/authorization/model/organization.js.map +1 -1
  20. package/dist/authorization/model/plugin.d.ts.map +1 -1
  21. package/dist/authorization/model/plugin.js +4 -2
  22. package/dist/authorization/model/plugin.js.map +1 -1
  23. package/dist/authorization/model/rewrite.d.ts +25 -7
  24. package/dist/authorization/model/rewrite.d.ts.map +1 -1
  25. package/dist/authorization/model/rewrite.js +40 -1
  26. package/dist/authorization/model/rewrite.js.map +1 -1
  27. package/dist/authorization/model/schedule.d.ts.map +1 -1
  28. package/dist/authorization/model/schedule.js +8 -3
  29. package/dist/authorization/model/schedule.js.map +1 -1
  30. package/dist/authorization/model/skill.d.ts.map +1 -1
  31. package/dist/authorization/model/skill.js +3 -2
  32. package/dist/authorization/model/skill.js.map +1 -1
  33. package/dist/authorization/model/workflow.d.ts.map +1 -1
  34. package/dist/authorization/model/workflow.js +3 -2
  35. package/dist/authorization/model/workflow.js.map +1 -1
  36. package/dist/authorization/model/workflow_execution.d.ts.map +1 -1
  37. package/dist/authorization/model/workflow_execution.js +4 -3
  38. package/dist/authorization/model/workflow_execution.js.map +1 -1
  39. package/dist/authorization/model/workflow_instance.d.ts.map +1 -1
  40. package/dist/authorization/model/workflow_instance.js +5 -1
  41. package/dist/authorization/model/workflow_instance.js.map +1 -1
  42. package/dist/boot/compose.d.ts.map +1 -1
  43. package/dist/boot/compose.js +13 -8
  44. package/dist/boot/compose.js.map +1 -1
  45. package/dist/boot/list-indexes.d.ts +3 -0
  46. package/dist/boot/list-indexes.d.ts.map +1 -0
  47. package/dist/boot/list-indexes.js +24 -0
  48. package/dist/boot/list-indexes.js.map +1 -0
  49. package/dist/domain/agentexecution/controller.d.ts.map +1 -1
  50. package/dist/domain/agentexecution/controller.js +6 -8
  51. package/dist/domain/agentexecution/controller.js.map +1 -1
  52. package/dist/domain/agentexecution/list-index.d.ts +2 -0
  53. package/dist/domain/agentexecution/list-index.d.ts.map +1 -0
  54. package/dist/domain/agentexecution/list-index.js +23 -0
  55. package/dist/domain/agentexecution/list-index.js.map +1 -0
  56. package/dist/domain/agentexecution/steps.d.ts +17 -33
  57. package/dist/domain/agentexecution/steps.d.ts.map +1 -1
  58. package/dist/domain/agentexecution/steps.js +94 -95
  59. package/dist/domain/agentexecution/steps.js.map +1 -1
  60. package/dist/domain/agentexecution/usage.d.ts.map +1 -1
  61. package/dist/domain/agentexecution/usage.js +37 -14
  62. package/dist/domain/agentexecution/usage.js.map +1 -1
  63. package/dist/domain/artifact/controller.d.ts.map +1 -1
  64. package/dist/domain/artifact/controller.js +27 -15
  65. package/dist/domain/artifact/controller.js.map +1 -1
  66. package/dist/domain/artifact/list-index.d.ts +2 -0
  67. package/dist/domain/artifact/list-index.d.ts.map +1 -0
  68. package/dist/domain/artifact/list-index.js +21 -0
  69. package/dist/domain/artifact/list-index.js.map +1 -0
  70. package/dist/domain/iampolicy/access-lists.d.ts +5 -3
  71. package/dist/domain/iampolicy/access-lists.d.ts.map +1 -1
  72. package/dist/domain/iampolicy/access-lists.js +72 -19
  73. package/dist/domain/iampolicy/access-lists.js.map +1 -1
  74. package/dist/domain/iampolicy/constants.d.ts +32 -6
  75. package/dist/domain/iampolicy/constants.d.ts.map +1 -1
  76. package/dist/domain/iampolicy/constants.js +41 -6
  77. package/dist/domain/iampolicy/constants.js.map +1 -1
  78. package/dist/domain/iampolicy/controller.d.ts +6 -0
  79. package/dist/domain/iampolicy/controller.d.ts.map +1 -1
  80. package/dist/domain/iampolicy/controller.js +16 -7
  81. package/dist/domain/iampolicy/controller.js.map +1 -1
  82. package/dist/domain/iampolicy/resource-store.d.ts.map +1 -1
  83. package/dist/domain/iampolicy/resource-store.js +2 -6
  84. package/dist/domain/iampolicy/resource-store.js.map +1 -1
  85. package/dist/domain/iampolicy/steps.d.ts.map +1 -1
  86. package/dist/domain/iampolicy/steps.js +49 -7
  87. package/dist/domain/iampolicy/steps.js.map +1 -1
  88. package/dist/domain/session/list-index.d.ts +4 -0
  89. package/dist/domain/session/list-index.d.ts.map +1 -0
  90. package/dist/domain/session/list-index.js +26 -0
  91. package/dist/domain/session/list-index.js.map +1 -0
  92. package/dist/domain/session/steps.d.ts +7 -8
  93. package/dist/domain/session/steps.d.ts.map +1 -1
  94. package/dist/domain/session/steps.js +76 -78
  95. package/dist/domain/session/steps.js.map +1 -1
  96. package/dist/domain/workflow/registry/data/task-kind-registry.json +1 -0
  97. package/dist/domain/workflowexecution/controller.d.ts.map +1 -1
  98. package/dist/domain/workflowexecution/controller.js +53 -55
  99. package/dist/domain/workflowexecution/controller.js.map +1 -1
  100. package/dist/domain/workflowexecution/execution-filter.d.ts +4 -0
  101. package/dist/domain/workflowexecution/execution-filter.d.ts.map +1 -1
  102. package/dist/domain/workflowexecution/execution-filter.js +11 -5
  103. package/dist/domain/workflowexecution/execution-filter.js.map +1 -1
  104. package/dist/domain/workflowexecution/get-execution-summary.d.ts.map +1 -1
  105. package/dist/domain/workflowexecution/get-execution-summary.js +23 -17
  106. package/dist/domain/workflowexecution/get-execution-summary.js.map +1 -1
  107. package/dist/domain/workflowexecution/list-index.d.ts +2 -0
  108. package/dist/domain/workflowexecution/list-index.d.ts.map +1 -0
  109. package/dist/domain/workflowexecution/list-index.js +21 -0
  110. package/dist/domain/workflowexecution/list-index.js.map +1 -0
  111. package/dist/domain/workflowexecution/list-pending-approvals.d.ts.map +1 -1
  112. package/dist/domain/workflowexecution/list-pending-approvals.js +69 -32
  113. package/dist/domain/workflowexecution/list-pending-approvals.js.map +1 -1
  114. package/dist/domain/workflowexecution/queries.d.ts +30 -4
  115. package/dist/domain/workflowexecution/queries.d.ts.map +1 -1
  116. package/dist/domain/workflowexecution/queries.js +76 -22
  117. package/dist/domain/workflowexecution/queries.js.map +1 -1
  118. package/dist/extensions/drivers.d.ts +12 -0
  119. package/dist/extensions/drivers.d.ts.map +1 -1
  120. package/dist/extensions/gate-slots.d.ts +10 -1
  121. package/dist/extensions/gate-slots.d.ts.map +1 -1
  122. package/dist/extensions/gate-slots.js +1 -0
  123. package/dist/extensions/gate-slots.js.map +1 -1
  124. package/dist/extensions/list-read-scope.d.ts +9 -12
  125. package/dist/extensions/list-read-scope.d.ts.map +1 -1
  126. package/dist/extensions/list-read-scope.js.map +1 -1
  127. package/dist/extensions/principal-display.d.ts +34 -0
  128. package/dist/extensions/principal-display.d.ts.map +1 -0
  129. package/dist/extensions/principal-display.js +2 -0
  130. package/dist/extensions/principal-display.js.map +1 -0
  131. package/dist/extensions/registry.d.ts +6 -0
  132. package/dist/extensions/registry.d.ts.map +1 -1
  133. package/dist/extensions/registry.js +10 -0
  134. package/dist/extensions/registry.js.map +1 -1
  135. package/dist/index.d.ts +4 -2
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/index.js +6 -1
  138. package/dist/index.js.map +1 -1
  139. package/dist/pipeline/apiresource-meta.d.ts +10 -0
  140. package/dist/pipeline/apiresource-meta.d.ts.map +1 -1
  141. package/dist/pipeline/apiresource-meta.js +16 -0
  142. package/dist/pipeline/apiresource-meta.js.map +1 -1
  143. package/dist/pipeline/steps/list-page.d.ts +63 -0
  144. package/dist/pipeline/steps/list-page.d.ts.map +1 -0
  145. package/dist/pipeline/steps/list-page.js +187 -0
  146. package/dist/pipeline/steps/list-page.js.map +1 -0
  147. package/dist/query/activity/handler.d.ts +6 -7
  148. package/dist/query/activity/handler.d.ts.map +1 -1
  149. package/dist/query/activity/handler.js +42 -59
  150. package/dist/query/activity/handler.js.map +1 -1
  151. package/dist/store/interface.d.ts +29 -0
  152. package/dist/store/interface.d.ts.map +1 -1
  153. package/dist/store/interface.js.map +1 -1
  154. package/dist/store/list-index.d.ts +123 -0
  155. package/dist/store/list-index.d.ts.map +1 -0
  156. package/dist/store/list-index.js +277 -0
  157. package/dist/store/list-index.js.map +1 -0
  158. package/dist/store/logger.d.ts +3 -0
  159. package/dist/store/logger.d.ts.map +1 -1
  160. package/dist/store/logger.js +5 -1
  161. package/dist/store/logger.js.map +1 -1
  162. package/dist/store/postgres/migrations.d.ts +10 -6
  163. package/dist/store/postgres/migrations.d.ts.map +1 -1
  164. package/dist/store/postgres/migrations.js +64 -6
  165. package/dist/store/postgres/migrations.js.map +1 -1
  166. package/dist/store/postgres/store.d.ts +26 -5
  167. package/dist/store/postgres/store.d.ts.map +1 -1
  168. package/dist/store/postgres/store.js +377 -22
  169. package/dist/store/postgres/store.js.map +1 -1
  170. package/dist/store/sqlite/migrations.d.ts +11 -5
  171. package/dist/store/sqlite/migrations.d.ts.map +1 -1
  172. package/dist/store/sqlite/migrations.js +50 -4
  173. package/dist/store/sqlite/migrations.js.map +1 -1
  174. package/dist/store/sqlite/store.d.ts +18 -3
  175. package/dist/store/sqlite/store.d.ts.map +1 -1
  176. package/dist/store/sqlite/store.js +321 -15
  177. package/dist/store/sqlite/store.js.map +1 -1
  178. package/package.json +6 -6
  179. package/src/authorization/__tests__/drivers.ts +6 -1
  180. package/src/authorization/__tests__/evaluator.test.ts +127 -2
  181. package/src/authorization/evaluator.ts +12 -1
  182. package/src/authorization/model/__tests__/registry.test.ts +64 -2
  183. package/src/authorization/model/agent.ts +4 -1
  184. package/src/authorization/model/agent_channel.ts +11 -3
  185. package/src/authorization/model/agent_instance.ts +3 -1
  186. package/src/authorization/model/mcp_server.ts +3 -1
  187. package/src/authorization/model/organization.ts +3 -0
  188. package/src/authorization/model/plugin.ts +4 -1
  189. package/src/authorization/model/rewrite.ts +65 -8
  190. package/src/authorization/model/schedule.ts +11 -2
  191. package/src/authorization/model/skill.ts +3 -1
  192. package/src/authorization/model/workflow.ts +3 -1
  193. package/src/authorization/model/workflow_execution.ts +4 -2
  194. package/src/authorization/model/workflow_instance.ts +5 -0
  195. package/src/boot/__tests__/list-indexes.test.ts +65 -0
  196. package/src/boot/compose.ts +25 -13
  197. package/src/boot/list-indexes.ts +25 -0
  198. package/src/domain/agentexecution/__tests__/agentexecution.test.ts +85 -3
  199. package/src/domain/agentexecution/controller.ts +8 -10
  200. package/src/domain/agentexecution/list-index.ts +24 -0
  201. package/src/domain/agentexecution/steps.ts +118 -115
  202. package/src/domain/agentexecution/usage.ts +38 -17
  203. package/src/domain/artifact/controller.ts +28 -18
  204. package/src/domain/artifact/list-index.ts +22 -0
  205. package/src/domain/iampolicy/__tests__/access-lists.test.ts +120 -6
  206. package/src/domain/iampolicy/__tests__/constants.test.ts +26 -4
  207. package/src/domain/iampolicy/__tests__/controller.test.ts +55 -1
  208. package/src/domain/iampolicy/__tests__/grant-path.test.ts +3 -3
  209. package/src/domain/iampolicy/__tests__/steps.test.ts +123 -1
  210. package/src/domain/iampolicy/access-lists.ts +98 -23
  211. package/src/domain/iampolicy/constants.ts +50 -6
  212. package/src/domain/iampolicy/controller.ts +30 -7
  213. package/src/domain/iampolicy/resource-store.ts +3 -6
  214. package/src/domain/iampolicy/steps.ts +89 -7
  215. package/src/domain/session/list-index.ts +28 -0
  216. package/src/domain/session/steps.ts +108 -123
  217. package/src/domain/workflow/registry/data/task-kind-registry.json +1 -0
  218. package/src/domain/workflowexecution/__tests__/list-read-scope-summaries.test.ts +155 -99
  219. package/src/domain/workflowexecution/__tests__/workflowexecution.test.ts +193 -31
  220. package/src/domain/workflowexecution/controller.ts +54 -82
  221. package/src/domain/workflowexecution/execution-filter.ts +20 -7
  222. package/src/domain/workflowexecution/get-execution-summary.ts +31 -24
  223. package/src/domain/workflowexecution/list-index.ts +22 -0
  224. package/src/domain/workflowexecution/list-pending-approvals.ts +82 -25
  225. package/src/domain/workflowexecution/queries.ts +134 -23
  226. package/src/extensions/__tests__/iam-policy-points.test.ts +30 -0
  227. package/src/extensions/__tests__/registry.test.ts +3 -0
  228. package/src/extensions/drivers.ts +12 -0
  229. package/src/extensions/gate-slots.ts +10 -0
  230. package/src/extensions/list-read-scope.ts +9 -12
  231. package/src/extensions/principal-display.ts +37 -0
  232. package/src/extensions/registry.ts +19 -0
  233. package/src/index.ts +19 -1
  234. package/src/pipeline/apiresource-meta.ts +21 -0
  235. package/src/pipeline/steps/__tests__/list-page.test.ts +186 -0
  236. package/src/pipeline/steps/list-page.ts +284 -0
  237. package/src/query/activity/handler.ts +57 -78
  238. package/src/store/README.md +51 -32
  239. package/src/store/__tests__/list-index.measure.test.ts +293 -0
  240. package/src/store/__tests__/list-index.test.ts +328 -0
  241. package/src/store/__tests__/store-contract.ts +346 -3
  242. package/src/store/interface.ts +39 -0
  243. package/src/store/list-index.ts +465 -0
  244. package/src/store/logger.ts +8 -1
  245. package/src/store/postgres/__tests__/list-index-repair.test.ts +133 -0
  246. package/src/store/postgres/__tests__/migrations.test.ts +27 -19
  247. package/src/store/postgres/__tests__/store-contract.test.ts +50 -3
  248. package/src/store/postgres/migrations.ts +69 -7
  249. package/src/store/postgres/store.ts +485 -29
  250. package/src/store/sqlite/__tests__/migrations.test.ts +51 -7
  251. package/src/store/sqlite/__tests__/store-contract.test.ts +70 -16
  252. package/src/store/sqlite/__tests__/support.ts +12 -3
  253. package/src/store/sqlite/migrations.ts +57 -6
  254. package/src/store/sqlite/store.ts +462 -21
@@ -36,6 +36,7 @@
36
36
  import { fromBinary, toBinary } from "@bufbuild/protobuf";
37
37
  import pg from "pg";
38
38
  import { AuditNotFoundError, DELIVERED_SIGNAL_DEDUPE_TTL_MS, PENDING_OAUTH_STATE_TTL_MS, ResourceNotFoundError, } from "../interface.js";
39
+ import { ListIndexRegistry, assertListIndexLimit, listIndexFactsOf, matchesListIndexQuery, mergeListIndexRows, sameListKeyRows, } from "../list-index.js";
39
40
  import { NOOP_STORE_LOGGER } from "../logger.js";
40
41
  import { apiResourceKindName, filterRowsByLabel, scanForFieldMatch, } from "../proto-fields.js";
41
42
  import { rfc3339Seconds } from "../rfc3339.js";
@@ -48,6 +49,46 @@ import { normalizeTsRankScore, renderTsQueryExpression } from "./tsquery.js";
48
49
  * silently returns wrong membership).
49
50
  */
50
51
  const TEXT_SEARCH_CONFIG = "english";
52
+ /**
53
+ * The one upsert every resource write goes through: the row, its
54
+ * `updated_at`, and the list index's facts stamped with the SAME `now()`
55
+ * (constant within a transaction), so a later writer that bumps
56
+ * `updated_at` without knowing the index leaves the row unproven. An
57
+ * undeclared kind writes NULL facts and is stamped all the same, which
58
+ * keeps it out of the unproven partial index.
59
+ */
60
+ const UPSERT_RESOURCE_SQL = `
61
+ INSERT INTO resources
62
+ (kind, id, data, updated_at, list_org, list_created_at, list_index_revision, list_indexed_at)
63
+ VALUES ($1, $2, $3, now(), $4, $5, $6, now())
64
+ ON CONFLICT (kind, id) DO UPDATE SET
65
+ data = excluded.data,
66
+ updated_at = excluded.updated_at,
67
+ list_org = excluded.list_org,
68
+ list_created_at = excluded.list_created_at,
69
+ list_index_revision = excluded.list_index_revision,
70
+ list_indexed_at = excluded.list_indexed_at`;
71
+ /**
72
+ * The rows of kind `$1` whose facts are not proven current under revision
73
+ * `$2` (list-index.ts), each arm one index range that fetches a row only
74
+ * when it matches: the stamp arm repeats the partial index's predicate
75
+ * verbatim (the only form the planner matches it in), the revision arms
76
+ * are three ranges of the revision index. A single OR over the revision
77
+ * is answered, without statistics, by visiting every heap row of the kind
78
+ * (measured), which grows with the kind; these arms are empty in steady
79
+ * state. They overlap (an unstamped row has no revision either), so the
80
+ * caller keeps one row per id.
81
+ */
82
+ const UNPROVEN_ROWS_SQL = `
83
+ SELECT id, data FROM resources WHERE kind = $1 AND list_indexed_at IS DISTINCT FROM updated_at
84
+ UNION ALL
85
+ SELECT id, data FROM resources WHERE kind = $1 AND list_index_revision IS NULL
86
+ UNION ALL
87
+ SELECT id, data FROM resources WHERE kind = $1 AND list_index_revision < $2
88
+ UNION ALL
89
+ SELECT id, data FROM resources WHERE kind = $1 AND list_index_revision > $2`;
90
+ /** How many unproven rows the reconciliation at open decodes per round trip. */
91
+ const RECONCILE_BATCH = 500;
51
92
  export class PostgresStore {
52
93
  bootstrapState;
53
94
  signalDedupe;
@@ -55,9 +96,11 @@ export class PostgresStore {
55
96
  pendingOAuthStates;
56
97
  pool;
57
98
  logger;
58
- constructor(pool, logger) {
99
+ listIndexes;
100
+ constructor(pool, logger, listIndexes) {
59
101
  this.pool = pool;
60
102
  this.logger = logger;
103
+ this.listIndexes = listIndexes;
61
104
  this.bootstrapState = new PostgresBootstrapStateStore(() => this.open());
62
105
  this.signalDedupe = new PostgresSignalDedupeStore(() => this.open(), logger);
63
106
  this.oauthGrants = new PostgresOAuthGrantStore(() => this.open());
@@ -65,11 +108,15 @@ export class PostgresStore {
65
108
  }
66
109
  /**
67
110
  * Connects to databaseUrl, runs migrations (advisory-locked, so
68
- * concurrent boots serialize), and returns the ready store. Any failure
69
- * here is a loud boot throw — never a degraded server (the same posture
70
- * as SqliteStore.open; the composition root does not catch it).
111
+ * concurrent boots serialize), reconciles the list index (derives the
112
+ * facts of every unproven row of a declared kind; compare-and-set, so
113
+ * replicas opening together cannot conflict), and returns the ready
114
+ * store. Any failure here is a loud boot throw — never a degraded server
115
+ * (the same posture as SqliteStore.open; the composition root does not
116
+ * catch it).
71
117
  */
72
- static async open(databaseUrl, logger = NOOP_STORE_LOGGER) {
118
+ static async open(databaseUrl, logger = NOOP_STORE_LOGGER, options = {}) {
119
+ const listIndexes = new ListIndexRegistry(options.listIndexes ?? []);
73
120
  const pool = new pg.Pool({ connectionString: databaseUrl });
74
121
  // An idle pooled connection dropping (server restart, network blip)
75
122
  // emits 'error' on the pool; without a listener that is a process
@@ -91,15 +138,45 @@ export class PostgresStore {
91
138
  throw error;
92
139
  }
93
140
  client.release();
94
- return new PostgresStore(pool, logger);
141
+ const store = new PostgresStore(pool, logger, listIndexes);
142
+ try {
143
+ await store.reconcileListIndexes();
144
+ }
145
+ catch (error) {
146
+ await store.close();
147
+ throw error;
148
+ }
149
+ return store;
95
150
  }
96
151
  // ---------------------------------------------------------------------------
97
152
  // Resource operations
98
153
  // ---------------------------------------------------------------------------
99
154
  async saveResource(kind, id, schema, msg) {
100
- const data = toBinary(schema, msg);
101
- await this.open().query(`INSERT INTO resources (kind, id, data, updated_at) VALUES ($1, $2, $3, now())
102
- ON CONFLICT (kind, id) DO UPDATE SET data = excluded.data, updated_at = now()`, [apiResourceKindName(kind), id, Buffer.from(data)]);
155
+ const data = Buffer.from(toBinary(schema, msg));
156
+ const kindName = apiResourceKindName(kind);
157
+ const facts = this.listIndexes.factsOf(kind, msg);
158
+ if (facts === undefined) {
159
+ await this.open().query(UPSERT_RESOURCE_SQL, [
160
+ kindName,
161
+ id,
162
+ data,
163
+ null,
164
+ null,
165
+ null,
166
+ ]);
167
+ return;
168
+ }
169
+ await this.withTransaction(async (client) => {
170
+ await client.query(UPSERT_RESOURCE_SQL, [
171
+ kindName,
172
+ id,
173
+ data,
174
+ facts.org,
175
+ facts.createdAt,
176
+ facts.revision,
177
+ ]);
178
+ await replaceListKeys(client, kindName, id, facts);
179
+ });
103
180
  }
104
181
  async getResource(kind, id, schema) {
105
182
  const kindName = apiResourceKindName(kind);
@@ -116,15 +193,34 @@ export class PostgresStore {
116
193
  // per-resource atomicity contract. `modify` is synchronous by contract
117
194
  // (interface.ts), so no caller I/O can extend the lock's hold time.
118
195
  return this.withTransaction(async (client) => {
119
- const result = await client.query(`SELECT data FROM resources WHERE kind = $1 AND id = $2 FOR UPDATE`, [kindName, id]);
196
+ const result = await client.query(`SELECT data, list_indexed_at IS NOT DISTINCT FROM updated_at AS stamped, list_index_revision
197
+ FROM resources WHERE kind = $1 AND id = $2 FOR UPDATE`, [kindName, id]);
120
198
  const row = result.rows[0];
121
199
  if (row === undefined) {
122
200
  throw new ResourceNotFoundError(`${kindName}/${id}`);
123
201
  }
124
202
  const msg = fromBinary(schema, row.data);
203
+ const before = this.listIndexes.factsOf(kind, msg);
125
204
  modify(msg);
205
+ const after = this.listIndexes.factsOf(kind, msg);
126
206
  const data = toBinary(schema, msg);
127
- await client.query(`UPDATE resources SET data = $3, updated_at = now() WHERE kind = $1 AND id = $2`, [kindName, id, Buffer.from(data)]);
207
+ await client.query(`UPDATE resources SET data = $3, updated_at = now(),
208
+ list_org = $4, list_created_at = $5, list_index_revision = $6, list_indexed_at = now()
209
+ WHERE kind = $1 AND id = $2`, [
210
+ kindName,
211
+ id,
212
+ Buffer.from(data),
213
+ after?.org ?? null,
214
+ after?.createdAt ?? null,
215
+ after?.revision ?? null,
216
+ ]);
217
+ if (after !== undefined &&
218
+ (!row.stamped ||
219
+ row.list_index_revision !== after.revision ||
220
+ before === undefined ||
221
+ !sameListKeyRows(before, after))) {
222
+ await replaceListKeys(client, kindName, id, after);
223
+ }
128
224
  return msg;
129
225
  });
130
226
  }
@@ -132,8 +228,53 @@ export class PostgresStore {
132
228
  const result = await this.open().query(`SELECT data FROM resources WHERE kind = $1`, [apiResourceKindName(kind)]);
133
229
  return result.rows.map((row) => row.data);
134
230
  }
231
+ async queryResources(declaration, query) {
232
+ this.listIndexes.require(declaration);
233
+ assertListIndexLimit(query.limit);
234
+ if (query.anyKey !== undefined && query.anyKey.length === 0) {
235
+ return [];
236
+ }
237
+ const kindName = apiResourceKindName(declaration.kind);
238
+ // A key read is driven from the key table, ordered by that index's own
239
+ // columns, so the plan is one index range whatever the planner's
240
+ // statistics say (a freshly written table has none); several keys are
241
+ // one such read each, merged below. Without a key the organization
242
+ // index is the range.
243
+ const provenRows = [];
244
+ const reads = query.anyKey === undefined
245
+ ? [provenReadSql(kindName, declaration.revision, query, undefined)]
246
+ : query.anyKey.map((key) => provenReadSql(kindName, declaration.revision, query, key));
247
+ for (const read of reads) {
248
+ const result = await this.open().query(read.sql, read.params);
249
+ for (const row of result.rows) {
250
+ provenRows.push({
251
+ id: row.id,
252
+ data: row.data,
253
+ cursor: { createdAt: row.created_at, id: row.id },
254
+ });
255
+ }
256
+ }
257
+ const unproven = await this.open().query(UNPROVEN_ROWS_SQL, [
258
+ kindName,
259
+ declaration.revision,
260
+ ]);
261
+ const unprovenRows = [];
262
+ for (const row of oneRowPerId(unproven.rows)) {
263
+ const facts = await this.deriveAndRepair(declaration, row.id, row.data);
264
+ if (facts !== undefined && matchesListIndexQuery(row.id, facts, query)) {
265
+ unprovenRows.push({
266
+ id: row.id,
267
+ data: row.data,
268
+ cursor: { createdAt: facts.createdAt, id: row.id },
269
+ });
270
+ }
271
+ }
272
+ return mergeListIndexRows(provenRows, unprovenRows, query.limit);
273
+ }
135
274
  async deleteResource(kind, id) {
136
- await this.open().query(`DELETE FROM resources WHERE kind = $1 AND id = $2`, [apiResourceKindName(kind), id]);
275
+ const kindName = apiResourceKindName(kind);
276
+ await this.open().query(`DELETE FROM resources WHERE kind = $1 AND id = $2`, [kindName, id]);
277
+ await this.open().query(`DELETE FROM resource_list_keys WHERE kind = $1 AND id = $2`, [kindName, id]);
137
278
  }
138
279
  async findByField(kind, fieldPath, value, schema) {
139
280
  const kindName = apiResourceKindName(kind);
@@ -168,26 +309,156 @@ export class PostgresStore {
168
309
  async replaceResourceDataIfUnchanged(kind, id, expectedData, newData) {
169
310
  // BYTEA equality in the WHERE clause makes the compare-and-swap one
170
311
  // atomic statement: zero rows changed means the row moved on (or was
171
- // deleted) since the read — a lost swap, never an upsert.
172
- const result = await this.open().query(`UPDATE resources SET data = $1, updated_at = now() WHERE kind = $2 AND id = $3 AND data = $4`, [
173
- Buffer.from(newData),
174
- apiResourceKindName(kind),
175
- id,
176
- Buffer.from(expectedData),
177
- ]);
178
- return result.rowCount === 1;
312
+ // deleted) since the read — a lost swap, never an upsert. The new bytes'
313
+ // list facts ride the same statement; bytes a declared kind's schema
314
+ // cannot decode leave the row unproven (stamp NULL), for a read to skip.
315
+ const kindName = apiResourceKindName(kind);
316
+ const declaration = this.listIndexes.declarationOf(kind);
317
+ const facts = declaration === undefined
318
+ ? undefined
319
+ : factsOfBytes(declaration, newData);
320
+ const swap = async (client) => {
321
+ const result = await client.query(`UPDATE resources SET data = $1, updated_at = now(),
322
+ list_org = $5, list_created_at = $6, list_index_revision = $7,
323
+ list_indexed_at = CASE WHEN $8::boolean THEN now() ELSE NULL END
324
+ WHERE kind = $2 AND id = $3 AND data = $4`, [
325
+ Buffer.from(newData),
326
+ kindName,
327
+ id,
328
+ Buffer.from(expectedData),
329
+ facts?.org ?? null,
330
+ facts?.createdAt ?? null,
331
+ facts?.revision ?? null,
332
+ declaration === undefined || facts !== undefined,
333
+ ]);
334
+ return result.rowCount === 1;
335
+ };
336
+ if (facts === undefined) {
337
+ return swap(this.open());
338
+ }
339
+ return this.withTransaction(async (client) => {
340
+ const swapped = await swap(client);
341
+ if (swapped) {
342
+ await replaceListKeys(client, kindName, id, facts);
343
+ }
344
+ return swapped;
345
+ });
179
346
  }
180
347
  async deleteResourcesByKind(kind) {
181
- const result = await this.open().query(`DELETE FROM resources WHERE kind = $1`, [apiResourceKindName(kind)]);
348
+ const kindName = apiResourceKindName(kind);
349
+ const result = await this.open().query(`DELETE FROM resources WHERE kind = $1`, [kindName]);
350
+ await this.open().query(`DELETE FROM resource_list_keys WHERE kind = $1`, [
351
+ kindName,
352
+ ]);
182
353
  return result.rowCount ?? 0;
183
354
  }
184
355
  async deleteResourcesByIdPrefix(kind, idPrefix) {
185
356
  // LIKE with the wildcard characters of the PREFIX escaped — sqlite's
186
357
  // GLOB has no LIKE-metacharacter hazard, this port must not either.
187
- const result = await this.open().query(`DELETE FROM resources WHERE kind = $1 AND id LIKE $2 ESCAPE '\\'`, [apiResourceKindName(kind), `${escapeLikePattern(idPrefix)}%`]);
358
+ const params = [
359
+ apiResourceKindName(kind),
360
+ `${escapeLikePattern(idPrefix)}%`,
361
+ ];
362
+ const result = await this.open().query(`DELETE FROM resources WHERE kind = $1 AND id LIKE $2 ESCAPE '\\'`, params);
363
+ await this.open().query(`DELETE FROM resource_list_keys WHERE kind = $1 AND id LIKE $2 ESCAPE '\\'`, params);
188
364
  return result.rowCount ?? 0;
189
365
  }
190
366
  // ---------------------------------------------------------------------------
367
+ // The list index's repair (list-index.ts)
368
+ // ---------------------------------------------------------------------------
369
+ /**
370
+ * An unproven row's facts, derived from its bytes, and the row repaired
371
+ * when those bytes are still the stored ones — the compare-and-set on
372
+ * `data` means a newer write is never overwritten, and two replicas
373
+ * repairing one row write the same facts. Undefined when the bytes do
374
+ * not decode; the row stays unproven and is skipped, as a lane skips it.
375
+ */
376
+ async deriveAndRepair(declaration, id, data) {
377
+ const kindName = apiResourceKindName(declaration.kind);
378
+ const facts = factsOfBytes(declaration, data);
379
+ if (facts === undefined) {
380
+ this.logger.warn("list index: an unproven row does not decode, skipping", {
381
+ kind: kindName,
382
+ id,
383
+ });
384
+ return undefined;
385
+ }
386
+ try {
387
+ await this.withTransaction(async (client) => {
388
+ const result = await client.query(`UPDATE resources SET list_org = $4, list_created_at = $5,
389
+ list_index_revision = $6, list_indexed_at = updated_at
390
+ WHERE kind = $1 AND id = $2 AND data = $3`, [
391
+ kindName,
392
+ id,
393
+ Buffer.from(data),
394
+ facts.org,
395
+ facts.createdAt,
396
+ facts.revision,
397
+ ]);
398
+ if (result.rowCount === 1) {
399
+ await replaceListKeys(client, kindName, id, facts);
400
+ }
401
+ });
402
+ }
403
+ catch (error) {
404
+ // The facts are right whether or not they were written back; a
405
+ // failed repair only leaves the row for the next read to repair.
406
+ this.logger.warn("list index: repairing a row failed", {
407
+ kind: kindName,
408
+ id,
409
+ error: error instanceof Error ? error.message : String(error),
410
+ });
411
+ }
412
+ return facts;
413
+ }
414
+ /**
415
+ * Derives every unproven row of each declared kind, in id-keyed batches,
416
+ * and stamps every other kind's unstamped rows (they carry no facts), so
417
+ * the unproven set is empty when the server starts serving. Reads stay
418
+ * exact without it; it keeps them cheap.
419
+ */
420
+ async reconcileListIndexes() {
421
+ const declarations = this.listIndexes.declarations();
422
+ let reconciled = false;
423
+ for (const declaration of declarations) {
424
+ const kindName = apiResourceKindName(declaration.kind);
425
+ let after = "";
426
+ let derived = 0;
427
+ for (;;) {
428
+ const batch = await this.open().query(`SELECT id, data FROM (${UNPROVEN_ROWS_SQL}) unproven WHERE id > $3
429
+ ORDER BY id LIMIT $4`, [kindName, declaration.revision, after, RECONCILE_BATCH]);
430
+ // Duplicates from overlapping arms sit side by side in id order and
431
+ // the next batch starts after the last id, so none is repaired twice
432
+ // across batches and the count still ends the loop.
433
+ const rows = batch.rows;
434
+ for (const row of oneRowPerId(rows)) {
435
+ if ((await this.deriveAndRepair(declaration, row.id, row.data)) !==
436
+ undefined) {
437
+ derived += 1;
438
+ }
439
+ after = row.id;
440
+ }
441
+ if (rows.length < RECONCILE_BATCH) {
442
+ break;
443
+ }
444
+ }
445
+ if (derived > 0) {
446
+ this.logger.info("list index reconciled", {
447
+ kind: kindName,
448
+ rows: derived,
449
+ });
450
+ reconciled = true;
451
+ }
452
+ }
453
+ if (reconciled) {
454
+ // Every derived row's list columns changed at once; the planner's
455
+ // statistics for them are refreshed before the first read plans.
456
+ await this.open().query(`ANALYZE resources, resource_list_keys`);
457
+ }
458
+ await this.open().query(`UPDATE resources SET list_indexed_at = updated_at
459
+ WHERE list_indexed_at IS DISTINCT FROM updated_at AND NOT (kind = ANY($1::text[]))`, [declarations.map((d) => apiResourceKindName(d.kind))]);
460
+ }
461
+ // ---------------------------------------------------------------------------
191
462
  // Audit operations
192
463
  // ---------------------------------------------------------------------------
193
464
  async saveAudit(kind, resourceId, schema, msg, versionHash, tag) {
@@ -858,6 +1129,90 @@ class PostgresPendingOAuthStateStore {
858
1129
  return result.rowCount ?? 0;
859
1130
  }
860
1131
  }
1132
+ /**
1133
+ * A row's key rows made equal to its facts: one row per key the row
1134
+ * names, the creation instant copied in so a parent's rows are one index
1135
+ * range. Runs on the caller's transaction, beside the row write it
1136
+ * belongs to.
1137
+ */
1138
+ async function replaceListKeys(client, kindName, id, facts) {
1139
+ await client.query(`DELETE FROM resource_list_keys WHERE kind = $1 AND id = $2`, [kindName, id]);
1140
+ if (facts.keys.length === 0) {
1141
+ return;
1142
+ }
1143
+ const params = [kindName, id, facts.createdAt];
1144
+ const tuples = facts.keys.map((entry) => {
1145
+ params.push(entry.key, entry.value);
1146
+ return `($1, $2, $${params.length - 1}, $${params.length}, $3)`;
1147
+ });
1148
+ await client.query(`INSERT INTO resource_list_keys (kind, id, key, value, created_at) VALUES ${tuples.join(", ")}`, params);
1149
+ }
1150
+ /**
1151
+ * One proven read of `queryResources`: through one key's index range when
1152
+ * `key` is given (the key table drives, its copied creation instant is the
1153
+ * order), else through the organization index. Only rows whose facts are
1154
+ * proven current are returned; the unproven arm answers for the rest.
1155
+ */
1156
+ function provenReadSql(kindName, revision, query, key) {
1157
+ const params = [kindName, revision];
1158
+ const param = (value) => {
1159
+ params.push(value);
1160
+ return `$${params.length}`;
1161
+ };
1162
+ const created = key === undefined ? "r.list_created_at" : "k.created_at";
1163
+ const id = key === undefined ? `r.id COLLATE "C"` : `k.id COLLATE "C"`;
1164
+ const where = [
1165
+ `r.list_indexed_at = r.updated_at`,
1166
+ `r.list_index_revision = $2`,
1167
+ ];
1168
+ let from = `resources r`;
1169
+ if (key === undefined) {
1170
+ where.unshift(`r.kind = $1`);
1171
+ }
1172
+ else {
1173
+ // The row behind each key is fetched by primary key and nothing else:
1174
+ // `OFFSET 0` keeps the subquery from being flattened, so a planner
1175
+ // without statistics cannot reach it through the revision index
1176
+ // instead (measured: a scan of the kind per key row).
1177
+ from = `resource_list_keys k CROSS JOIN LATERAL (
1178
+ SELECT id, data, updated_at, list_indexed_at, list_index_revision, list_org
1179
+ FROM resources WHERE kind = k.kind AND id = k.id OFFSET 0
1180
+ ) r`;
1181
+ where.unshift(`k.kind = $1`, `k.key = ${param(key.name)}`, `k.value = ${param(key.value)}`);
1182
+ }
1183
+ if (query.org !== undefined && query.org !== "") {
1184
+ where.push(`r.list_org = ${param(query.org)}`);
1185
+ }
1186
+ if (query.createdAtOrAfter !== undefined) {
1187
+ where.push(`(${created} >= ${param(query.createdAtOrAfter)} OR ${created} = '')`);
1188
+ }
1189
+ if (query.after !== undefined) {
1190
+ const afterCreated = param(query.after.createdAt);
1191
+ const afterId = param(query.after.id);
1192
+ where.push(`(${created} < ${afterCreated} OR (${created} = ${afterCreated} AND ${id} < ${afterId}))`);
1193
+ }
1194
+ const limit = query.limit === undefined ? "" : ` LIMIT ${param(query.limit)}`;
1195
+ return {
1196
+ sql: `SELECT r.id, r.data, ${created} AS created_at FROM ${from}
1197
+ WHERE ${where.join(" AND ")}
1198
+ ORDER BY ${created} DESC, ${id} DESC${limit}`,
1199
+ params,
1200
+ };
1201
+ }
1202
+ /** Keeps the first row per id; the unproven arms overlap. */
1203
+ function oneRowPerId(rows) {
1204
+ const seen = new Set();
1205
+ return rows.filter((row) => seen.has(row.id) ? false : (seen.add(row.id), true));
1206
+ }
1207
+ /** A declared kind's facts from stored bytes; undefined when they do not decode. */
1208
+ function factsOfBytes(declaration, data) {
1209
+ try {
1210
+ return listIndexFactsOf(declaration, fromBinary(declaration.schema, data));
1211
+ }
1212
+ catch {
1213
+ return undefined;
1214
+ }
1215
+ }
861
1216
  /** Escapes LIKE metacharacters so a prefix matches literally. */
862
1217
  function escapeLikePattern(value) {
863
1218
  return value
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/store/postgres/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/store/postgres/store.ts"],"names":[],"mappings":"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"}