@osolmaz/pi-workflows 0.12.0 → 0.13.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 (257) hide show
  1. package/README.md +56 -31
  2. package/dist/builtins/autodoc.workflow.d.ts +4 -4
  3. package/dist/builtins/autoimplement.workflow.d.ts +797 -142
  4. package/dist/builtins/autoimplement.workflow.js +17 -105
  5. package/dist/builtins/autoimplement.workflow.js.map +1 -1
  6. package/dist/builtins/autoplan.workflow.d.ts +126 -13
  7. package/dist/builtins/autoplan.workflow.js +200 -29
  8. package/dist/builtins/autoplan.workflow.js.map +1 -1
  9. package/dist/builtins/catalog.js +7 -5
  10. package/dist/builtins/catalog.js.map +1 -1
  11. package/dist/builtins/index.d.ts +4 -2
  12. package/dist/builtins/index.js +3 -1
  13. package/dist/builtins/index.js.map +1 -1
  14. package/dist/builtins/monitor.workflow.d.ts +56 -23
  15. package/dist/builtins/monitor.workflow.js +508 -329
  16. package/dist/builtins/monitor.workflow.js.map +1 -1
  17. package/dist/builtins/pi-agent-group.d.ts +72 -0
  18. package/dist/builtins/pi-agent-group.js +1087 -0
  19. package/dist/builtins/pi-agent-group.js.map +1 -0
  20. package/dist/builtins/plain-summary.workflow.d.ts +32 -0
  21. package/dist/builtins/plain-summary.workflow.js +134 -0
  22. package/dist/builtins/plain-summary.workflow.js.map +1 -0
  23. package/dist/builtins/plan-approval.workflow.d.ts +39 -5
  24. package/dist/builtins/plan-approval.workflow.js +92 -14
  25. package/dist/builtins/plan-approval.workflow.js.map +1 -1
  26. package/dist/builtins/plan-change.workflow.d.ts +449 -0
  27. package/dist/builtins/plan-change.workflow.js +256 -0
  28. package/dist/builtins/plan-change.workflow.js.map +1 -0
  29. package/dist/builtins/plan-presentation.js +2 -2
  30. package/dist/builtins/plan-presentation.js.map +1 -1
  31. package/dist/builtins/sanity-check.workflow.d.ts +50 -6
  32. package/dist/builtins/sanity-check.workflow.js +150 -28
  33. package/dist/builtins/sanity-check.workflow.js.map +1 -1
  34. package/dist/controllers/effects.d.ts +3 -2
  35. package/dist/controllers/effects.js +8 -1
  36. package/dist/controllers/effects.js.map +1 -1
  37. package/dist/controllers/index.d.ts +1 -1
  38. package/dist/controllers/index.js +1 -1
  39. package/dist/controllers/index.js.map +1 -1
  40. package/dist/controllers/manager.d.ts +1 -0
  41. package/dist/controllers/manager.js +41 -17
  42. package/dist/controllers/manager.js.map +1 -1
  43. package/dist/controllers/sqlite.d.ts +107 -85
  44. package/dist/controllers/sqlite.js +1611 -1486
  45. package/dist/controllers/sqlite.js.map +1 -1
  46. package/dist/controllers/store.d.ts +9 -8
  47. package/dist/controllers/store.js +1 -31
  48. package/dist/controllers/store.js.map +1 -1
  49. package/dist/controllers/types.d.ts +3 -0
  50. package/dist/controllers/workflow-engine-scheduler.d.ts +1 -1
  51. package/dist/controllers/workflow-engine-scheduler.js +3 -5
  52. package/dist/controllers/workflow-engine-scheduler.js.map +1 -1
  53. package/dist/controllers/workflows.d.ts +2 -2
  54. package/dist/controllers/workflows.js +11 -10
  55. package/dist/controllers/workflows.js.map +1 -1
  56. package/dist/extension/controller-host.js +2 -2
  57. package/dist/extension/controller-host.js.map +1 -1
  58. package/dist/extension/decision-channels.d.ts +4 -2
  59. package/dist/extension/decision-channels.js +333 -146
  60. package/dist/extension/decision-channels.js.map +1 -1
  61. package/dist/extension/executor.d.ts +9 -2
  62. package/dist/extension/executor.js +89 -2
  63. package/dist/extension/executor.js.map +1 -1
  64. package/dist/extension/herdr-viewer.d.ts +0 -1
  65. package/dist/extension/herdr-viewer.js +0 -4
  66. package/dist/extension/herdr-viewer.js.map +1 -1
  67. package/dist/extension/index.js +209 -127
  68. package/dist/extension/index.js.map +1 -1
  69. package/dist/extension/recorder.d.ts +3 -10
  70. package/dist/extension/recorder.js +13 -22
  71. package/dist/extension/recorder.js.map +1 -1
  72. package/dist/extension/session-events.d.ts +2 -2
  73. package/dist/extension/step-message.d.ts +7 -2
  74. package/dist/extension/step-message.js +94 -2
  75. package/dist/extension/step-message.js.map +1 -1
  76. package/dist/extension/widget.js +29 -3
  77. package/dist/extension/widget.js.map +1 -1
  78. package/dist/host/rpc-executor.d.ts +3 -0
  79. package/dist/host/rpc-executor.js +2 -0
  80. package/dist/host/rpc-executor.js.map +1 -1
  81. package/dist/host/runner.d.ts +3 -6
  82. package/dist/host/runner.js +83 -32
  83. package/dist/host/runner.js.map +1 -1
  84. package/dist/render/graph-render.js +15 -10
  85. package/dist/render/graph-render.js.map +1 -1
  86. package/dist/state/database.d.ts +35 -0
  87. package/dist/state/database.js +287 -0
  88. package/dist/state/database.js.map +1 -0
  89. package/dist/state/index.d.ts +4 -0
  90. package/dist/state/index.js +5 -0
  91. package/dist/state/index.js.map +1 -0
  92. package/dist/state/json.d.ts +6 -0
  93. package/dist/state/json.js +38 -0
  94. package/dist/state/json.js.map +1 -0
  95. package/dist/state/mutation.d.ts +57 -0
  96. package/dist/state/mutation.js +255 -0
  97. package/dist/state/mutation.js.map +1 -0
  98. package/dist/state/schema.d.ts +6 -0
  99. package/dist/state/schema.js +473 -0
  100. package/dist/state/schema.js.map +1 -0
  101. package/dist/viewer/cli.d.ts +2 -2
  102. package/dist/viewer/cli.js +142 -122
  103. package/dist/viewer/cli.js.map +1 -1
  104. package/dist/viewer/render.d.ts +4 -4
  105. package/dist/viewer/render.js +9 -23
  106. package/dist/viewer/render.js.map +1 -1
  107. package/dist/viewer/session-reducer.d.ts +1 -1
  108. package/dist/viewer/session-reducer.js +1 -1
  109. package/dist/viewer/tui.d.ts +3 -3
  110. package/dist/viewer/tui.js +15 -13
  111. package/dist/viewer/tui.js.map +1 -1
  112. package/dist/viewer/watch.d.ts +2 -5
  113. package/dist/viewer/watch.js +13 -13
  114. package/dist/viewer/watch.js.map +1 -1
  115. package/dist/workflows/catalog.js +7 -2
  116. package/dist/workflows/catalog.js.map +1 -1
  117. package/dist/workflows/composition.js +20 -2
  118. package/dist/workflows/composition.js.map +1 -1
  119. package/dist/workflows/decision-presentation.d.ts +1 -1
  120. package/dist/workflows/decision-presentation.js +51 -38
  121. package/dist/workflows/decision-presentation.js.map +1 -1
  122. package/dist/workflows/definition.d.ts +6 -2
  123. package/dist/workflows/definition.js +17 -0
  124. package/dist/workflows/definition.js.map +1 -1
  125. package/dist/workflows/engine.d.ts +7 -7
  126. package/dist/workflows/engine.js +196 -115
  127. package/dist/workflows/engine.js.map +1 -1
  128. package/dist/workflows/errors.d.ts +16 -3
  129. package/dist/workflows/errors.js +18 -3
  130. package/dist/workflows/errors.js.map +1 -1
  131. package/dist/workflows/human-decision.d.ts +45 -8
  132. package/dist/workflows/human-decision.js +641 -274
  133. package/dist/workflows/human-decision.js.map +1 -1
  134. package/dist/workflows/index.d.ts +5 -6
  135. package/dist/workflows/index.js +4 -5
  136. package/dist/workflows/index.js.map +1 -1
  137. package/dist/workflows/progress.d.ts +1 -0
  138. package/dist/workflows/progress.js +15 -3
  139. package/dist/workflows/progress.js.map +1 -1
  140. package/dist/workflows/schema.js +27 -1
  141. package/dist/workflows/schema.js.map +1 -1
  142. package/dist/workflows/store.d.ts +83 -103
  143. package/dist/workflows/store.js +907 -951
  144. package/dist/workflows/store.js.map +1 -1
  145. package/dist/workflows/types.d.ts +88 -126
  146. package/docs/CONTROLLERS.md +10 -8
  147. package/docs/DEFERRED_TURNS.md +2 -2
  148. package/docs/DESIGN_PHILOSOPHY.md +4 -2
  149. package/docs/HUMAN_DECISIONS.md +36 -47
  150. package/docs/HUMAN_DECISION_PRESENTATIONS.md +14 -24
  151. package/docs/MONITOR.md +179 -237
  152. package/docs/SQLITE_STATE.md +219 -0
  153. package/docs/WORKFLOW_COMPOSITION.md +27 -26
  154. package/docs/WORKFLOW_STEP_MESSAGES.md +20 -18
  155. package/docs/WORKFLOW_UPDATES.md +10 -9
  156. package/docs/development.md +9 -9
  157. package/docs/live-replay-protocol.md +28 -37
  158. package/docs/plans/2026-08-16-workflow-updates-plan.md +1 -1
  159. package/docs/plans/2026-08-19-human-decision-gates-plan.md +1 -1
  160. package/docs/plans/2026-08-21-autoimplement-timeout-fallback-plan.md +1 -1
  161. package/docs/plans/2026-08-21-plan-change-approval-policy-plan.md +322 -0
  162. package/docs/plans/2026-08-21-sanity-check-plan.md +217 -95
  163. package/docs/plans/2026-08-22-goal-finishing-monitor-plan.md +200 -0
  164. package/docs/plans/2026-08-23-assistant-agent-completion-plan.md +701 -0
  165. package/docs/plans/2026-08-23-sqlite-state-plan.md +970 -0
  166. package/docs/plans/replayable-run-bundles-implementation-plan.md +2 -2
  167. package/docs/plans/session-event-replay-implementation-plan.md +1 -1
  168. package/docs/plans/tui-viewer-implementation-plan.md +1 -1
  169. package/docs/session-event-journal.md +63 -434
  170. package/docs/tui-viewer.md +13 -15
  171. package/docs/workflows.md +127 -53
  172. package/examples/workflows/approved-plan.workflow.ts +19 -46
  173. package/examples/workflows/plain-summary.workflow.ts +1 -0
  174. package/herdr-plugin.toml +1 -1
  175. package/package.json +7 -7
  176. package/plugins/herdr/viewer.mjs +1 -11
  177. package/schemas/human-decision-accepted-v1.schema.json +15 -3
  178. package/schemas/human-decision-continuation-v1.schema.json +10 -1
  179. package/schemas/human-decision-delivery-v1.schema.json +8 -0
  180. package/schemas/human-decision-receipt-v1.schema.json +8 -0
  181. package/schemas/human-decision-request-v1.schema.json +24 -4
  182. package/skills/autoimplement/SKILL.md +27 -0
  183. package/skills/autoplan/SKILL.md +5 -4
  184. package/skills/monitor/SKILL.md +91 -135
  185. package/skills/pi-workflows/SKILL.md +9 -8
  186. package/skills/sanity-check/SKILL.md +44 -0
  187. package/src/builtins/autoimplement.workflow.ts +19 -118
  188. package/src/builtins/autoplan.workflow.ts +290 -40
  189. package/src/builtins/catalog.ts +7 -5
  190. package/src/builtins/index.ts +18 -1
  191. package/src/builtins/monitor.workflow.ts +673 -382
  192. package/src/builtins/pi-agent-group.ts +1407 -0
  193. package/src/builtins/plain-summary.workflow.ts +185 -0
  194. package/src/builtins/plan-approval.workflow.ts +157 -24
  195. package/src/builtins/plan-change.workflow.ts +321 -0
  196. package/src/builtins/plan-presentation.ts +2 -2
  197. package/src/builtins/sanity-check.workflow.ts +248 -48
  198. package/src/controllers/effects.ts +7 -0
  199. package/src/controllers/index.ts +0 -6
  200. package/src/controllers/manager.ts +72 -32
  201. package/src/controllers/sqlite.ts +2420 -1948
  202. package/src/controllers/store.ts +17 -38
  203. package/src/controllers/types.ts +3 -0
  204. package/src/controllers/workflow-engine-scheduler.ts +4 -8
  205. package/src/controllers/workflows.ts +45 -21
  206. package/src/extension/controller-host.ts +1 -2
  207. package/src/extension/decision-channels.ts +456 -203
  208. package/src/extension/executor.ts +105 -2
  209. package/src/extension/herdr-viewer.ts +0 -5
  210. package/src/extension/index.ts +251 -151
  211. package/src/extension/recorder.ts +13 -22
  212. package/src/extension/session-events.ts +2 -2
  213. package/src/extension/step-message.ts +106 -4
  214. package/src/extension/widget.ts +32 -5
  215. package/src/host/rpc-executor.ts +4 -0
  216. package/src/host/runner.ts +93 -41
  217. package/src/render/graph-render.ts +12 -6
  218. package/src/state/database.ts +375 -0
  219. package/src/state/index.ts +29 -0
  220. package/src/state/json.ts +42 -0
  221. package/src/state/mutation.ts +435 -0
  222. package/src/state/schema.ts +475 -0
  223. package/src/viewer/cli.ts +151 -144
  224. package/src/viewer/render.ts +19 -30
  225. package/src/viewer/session-reducer.ts +1 -1
  226. package/src/viewer/tui.ts +18 -17
  227. package/src/viewer/watch.ts +13 -17
  228. package/src/workflows/catalog.ts +7 -2
  229. package/src/workflows/composition.ts +21 -3
  230. package/src/workflows/decision-presentation.ts +56 -43
  231. package/src/workflows/definition.ts +36 -3
  232. package/src/workflows/engine.ts +228 -130
  233. package/src/workflows/errors.ts +27 -3
  234. package/src/workflows/human-decision.ts +921 -349
  235. package/src/workflows/index.ts +20 -30
  236. package/src/workflows/progress.ts +18 -3
  237. package/src/workflows/schema.ts +36 -1
  238. package/src/workflows/store.ts +1300 -1163
  239. package/src/workflows/types.ts +100 -137
  240. package/dist/builtins/sanity-check-session.d.ts +0 -17
  241. package/dist/builtins/sanity-check-session.js +0 -168
  242. package/dist/builtins/sanity-check-session.js.map +0 -1
  243. package/dist/workflows/artifacts.d.ts +0 -40
  244. package/dist/workflows/artifacts.js +0 -155
  245. package/dist/workflows/artifacts.js.map +0 -1
  246. package/dist/workflows/migrate-sources.d.ts +0 -42
  247. package/dist/workflows/migrate-sources.js +0 -133
  248. package/dist/workflows/migrate-sources.js.map +0 -1
  249. package/docs/run-bundles.md +0 -481
  250. package/schemas/human-decision-accepted-v2.schema.json +0 -50
  251. package/schemas/human-decision-delivery-v2.schema.json +0 -36
  252. package/schemas/human-decision-receipt-v2.schema.json +0 -39
  253. package/schemas/human-decision-request-v2.schema.json +0 -69
  254. package/schemas/human-decision-resolution-v2.schema.json +0 -27
  255. package/src/builtins/sanity-check-session.ts +0 -205
  256. package/src/workflows/artifacts.ts +0 -188
  257. package/src/workflows/migrate-sources.ts +0 -178
@@ -0,0 +1,255 @@
1
+ import { createHash, randomBytes, randomUUID } from "node:crypto";
2
+ import { StateDatabase } from "./database.js";
3
+ export class StaleResourceError extends Error {
4
+ constructor(message) {
5
+ super(message);
6
+ this.name = "StaleResourceError";
7
+ }
8
+ }
9
+ export class StateMutationStore {
10
+ state;
11
+ constructor(state) {
12
+ this.state = state;
13
+ }
14
+ ensureResource(type, aggregateKey, now = Date.now()) {
15
+ const resourceId = resourceIdFor(type, aggregateKey);
16
+ this.state.connection
17
+ .prepare(`INSERT INTO resources(resource_id, resource_type, aggregate_key, revision, created_at, updated_at)
18
+ VALUES (?, ?, ?, 0, ?, ?)
19
+ ON CONFLICT(resource_type, aggregate_key) DO NOTHING`)
20
+ .run(resourceId, type, aggregateKey, now, now);
21
+ const row = this.state.connection
22
+ .prepare(`SELECT resource_id AS resourceId, resource_type AS resourceType,
23
+ aggregate_key AS aggregateKey
24
+ FROM resources WHERE resource_id = ?`)
25
+ .get(resourceId);
26
+ /* istanbul ignore if -- deterministic identity makes this a collision guard */
27
+ if (!isResourceIdentity(row) ||
28
+ row.resourceType !== type ||
29
+ row.aggregateKey !== aggregateKey) {
30
+ throw new Error(`Resource identity conflict for ${type}:${aggregateKey}`);
31
+ }
32
+ this.state.connection
33
+ .prepare(`INSERT INTO leases(resource_id, generation)
34
+ VALUES (?, 0)
35
+ ON CONFLICT(resource_id) DO NOTHING`)
36
+ .run(resourceId);
37
+ return resourceId;
38
+ }
39
+ claim(options) {
40
+ const now = options.now ?? Date.now();
41
+ if (!Number.isInteger(options.leaseMs) || options.leaseMs <= 0) {
42
+ throw new Error("Lease duration must be a positive integer");
43
+ }
44
+ return this.state.transaction(() => {
45
+ const resource = requireResource(this.state.connection, options.resourceId);
46
+ if (resource.revision !== options.expectedRevision) {
47
+ throw new StaleResourceError("Resource revision changed before ownership claim");
48
+ }
49
+ const lease = requireLease(this.state.connection, options.resourceId);
50
+ if (lease.ownerId !== null && lease.expiresAt !== null && lease.expiresAt > now) {
51
+ return undefined;
52
+ }
53
+ const generation = lease.generation + 1;
54
+ const token = randomBytes(32).toString("base64url");
55
+ const expiresAt = now + options.leaseMs;
56
+ const nextRevision = resource.revision + 1;
57
+ this.state.connection
58
+ .prepare(`UPDATE leases
59
+ SET generation = ?, owner_type = ?, owner_id = ?, token_hash = ?,
60
+ acquired_at = ?, heartbeat_at = ?, expires_at = ?
61
+ WHERE resource_id = ? AND generation = ?`)
62
+ .run(generation, options.ownerType, options.ownerId, tokenHash(token), now, now, expiresAt, options.resourceId, lease.generation);
63
+ updateResourceRevision(this.state.connection, options.resourceId, resource.revision, now);
64
+ insertEvent(this.state, {
65
+ resourceId: options.resourceId,
66
+ revision: nextRevision,
67
+ type: "lease.claimed",
68
+ actor: { type: options.ownerType, id: options.ownerId },
69
+ leaseGeneration: generation,
70
+ payload: { expiresAt, ownerType: options.ownerType },
71
+ now,
72
+ });
73
+ return {
74
+ resourceId: options.resourceId,
75
+ ownerType: options.ownerType,
76
+ ownerId: options.ownerId,
77
+ token,
78
+ generation,
79
+ expiresAt,
80
+ resourceRevision: nextRevision,
81
+ };
82
+ });
83
+ }
84
+ renew(claim, expectedRevision, leaseMs, now = Date.now()) {
85
+ return this.state.transaction(() => {
86
+ const resource = requireResource(this.state.connection, claim.resourceId);
87
+ if (resource.revision !== expectedRevision) {
88
+ throw new StaleResourceError("Resource revision changed before lease renewal");
89
+ }
90
+ requireCurrentLease(this.state.connection, claim, now);
91
+ const expiresAt = now + leaseMs;
92
+ const nextRevision = resource.revision + 1;
93
+ const update = this.state.connection
94
+ .prepare(`UPDATE leases SET heartbeat_at = ?, expires_at = ?
95
+ WHERE resource_id = ? AND owner_type = ? AND owner_id = ?
96
+ AND token_hash = ? AND generation = ? AND expires_at > ?`)
97
+ .run(now, expiresAt, claim.resourceId, claim.ownerType, claim.ownerId, tokenHash(claim.token), claim.generation, now);
98
+ /* istanbul ignore if -- BEGIN IMMEDIATE keeps this compare stable */
99
+ if (update.changes !== 1) {
100
+ throw new StaleResourceError("Lease is no longer current");
101
+ }
102
+ updateResourceRevision(this.state.connection, claim.resourceId, resource.revision, now);
103
+ insertEvent(this.state, {
104
+ resourceId: claim.resourceId,
105
+ revision: nextRevision,
106
+ type: "lease.renewed",
107
+ actor: { type: claim.ownerType, id: claim.ownerId },
108
+ leaseGeneration: claim.generation,
109
+ payload: { expiresAt },
110
+ now,
111
+ });
112
+ return { ...claim, expiresAt, resourceRevision: nextRevision };
113
+ });
114
+ }
115
+ release(claim, expectedRevision, now = Date.now()) {
116
+ return this.state.transaction(() => {
117
+ const resource = requireResource(this.state.connection, claim.resourceId);
118
+ if (resource.revision !== expectedRevision) {
119
+ throw new StaleResourceError("Resource revision changed before lease release");
120
+ }
121
+ requireCurrentLease(this.state.connection, claim, now, false);
122
+ const update = this.state.connection
123
+ .prepare(`UPDATE leases
124
+ SET owner_type = NULL, owner_id = NULL, token_hash = NULL,
125
+ acquired_at = NULL, heartbeat_at = NULL, expires_at = NULL
126
+ WHERE resource_id = ? AND owner_type = ? AND owner_id = ?
127
+ AND token_hash = ? AND generation = ?`)
128
+ .run(claim.resourceId, claim.ownerType, claim.ownerId, tokenHash(claim.token), claim.generation);
129
+ /* istanbul ignore if -- BEGIN IMMEDIATE keeps this compare stable */
130
+ if (update.changes !== 1) {
131
+ throw new StaleResourceError("Lease is no longer current");
132
+ }
133
+ const nextRevision = resource.revision + 1;
134
+ updateResourceRevision(this.state.connection, claim.resourceId, resource.revision, now);
135
+ insertEvent(this.state, {
136
+ resourceId: claim.resourceId,
137
+ revision: nextRevision,
138
+ type: "lease.released",
139
+ actor: { type: claim.ownerType, id: claim.ownerId },
140
+ leaseGeneration: claim.generation,
141
+ now,
142
+ });
143
+ return nextRevision;
144
+ });
145
+ }
146
+ mutate(permit, eventType, apply, options = {}) {
147
+ const now = options.now ?? Date.now();
148
+ return this.state.transaction(() => {
149
+ const resource = requireResource(this.state.connection, permit.resourceId);
150
+ if (resource.revision !== permit.expectedRevision) {
151
+ throw new StaleResourceError("Resource revision changed before mutation");
152
+ }
153
+ if (permit.lease !== undefined) {
154
+ if (permit.lease.resourceId !== permit.resourceId) {
155
+ throw new StaleResourceError("Lease does not belong to the mutation resource");
156
+ }
157
+ requireCurrentLease(this.state.connection, permit.lease, now);
158
+ }
159
+ const nextRevision = resource.revision + 1;
160
+ const value = apply({ database: this.state, nextRevision, now });
161
+ updateResourceRevision(this.state.connection, permit.resourceId, resource.revision, now);
162
+ const eventId = insertEvent(this.state, {
163
+ resourceId: permit.resourceId,
164
+ revision: nextRevision,
165
+ type: eventType,
166
+ actor: permit.actor,
167
+ ...(permit.lease !== undefined ? { leaseGeneration: permit.lease.generation } : {}),
168
+ ...(options.payload !== undefined ? { payload: options.payload } : {}),
169
+ now,
170
+ });
171
+ return { value, revision: nextRevision, eventId };
172
+ });
173
+ }
174
+ }
175
+ export function resourceIdFor(type, aggregateKey) {
176
+ const digest = createHash("sha256").update(`${type}\0${aggregateKey}`).digest("hex").slice(0, 40);
177
+ return `${type}-${digest}`;
178
+ }
179
+ export function tokenHash(token) {
180
+ return createHash("sha256").update(token).digest();
181
+ }
182
+ function requireResource(database, resourceId) {
183
+ const row = database
184
+ .prepare("SELECT revision FROM resources WHERE resource_id = ?")
185
+ .get(resourceId);
186
+ if (!isResourceRow(row)) {
187
+ throw new Error(`Unknown resource: ${resourceId}`);
188
+ }
189
+ return row;
190
+ }
191
+ function requireLease(database, resourceId) {
192
+ const row = database
193
+ .prepare(`SELECT generation, owner_type AS ownerType, owner_id AS ownerId,
194
+ token_hash AS tokenHash, expires_at AS expiresAt
195
+ FROM leases WHERE resource_id = ?`)
196
+ .get(resourceId);
197
+ /* istanbul ignore if -- every resource transaction creates its lease row */
198
+ if (!isLeaseRow(row)) {
199
+ throw new Error(`Resource has no lease row: ${resourceId}`);
200
+ }
201
+ return row;
202
+ }
203
+ function requireCurrentLease(database, claim, now, requireUnexpired = true) {
204
+ const lease = requireLease(database, claim.resourceId);
205
+ if (lease.ownerType !== claim.ownerType ||
206
+ lease.ownerId !== claim.ownerId ||
207
+ lease.generation !== claim.generation ||
208
+ lease.tokenHash === null ||
209
+ !lease.tokenHash.equals(tokenHash(claim.token)) ||
210
+ (requireUnexpired && (lease.expiresAt === null || lease.expiresAt <= now))) {
211
+ throw new StaleResourceError("Lease is no longer current");
212
+ }
213
+ }
214
+ function updateResourceRevision(database, resourceId, expectedRevision, now) {
215
+ const update = database
216
+ .prepare(`UPDATE resources SET revision = revision + 1, updated_at = ?
217
+ WHERE resource_id = ? AND revision = ?`)
218
+ .run(now, resourceId, expectedRevision);
219
+ /* istanbul ignore if -- revision was checked under BEGIN IMMEDIATE */
220
+ if (update.changes !== 1) {
221
+ throw new StaleResourceError("Resource revision changed during mutation");
222
+ }
223
+ }
224
+ function insertEvent(state, options) {
225
+ const eventId = `event-${randomUUID()}`;
226
+ const payloadHash = options.payload === undefined ? null : state.putJson(options.payload, options.now);
227
+ state.connection
228
+ .prepare(`INSERT INTO events(
229
+ event_id, resource_id, resource_revision, event_type,
230
+ actor_type, actor_id, lease_generation, payload_hash, recorded_at
231
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`)
232
+ .run(eventId, options.resourceId, options.revision, options.type, options.actor.type, options.actor.id ?? null, options.leaseGeneration ?? null, payloadHash, options.now);
233
+ return eventId;
234
+ }
235
+ function isResourceRow(value) {
236
+ return isRecord(value) && typeof value.revision === "number";
237
+ }
238
+ function isResourceIdentity(value) {
239
+ return (isRecord(value) &&
240
+ typeof value.resourceId === "string" &&
241
+ typeof value.resourceType === "string" &&
242
+ typeof value.aggregateKey === "string");
243
+ }
244
+ function isLeaseRow(value) {
245
+ return (isRecord(value) &&
246
+ typeof value.generation === "number" &&
247
+ (typeof value.ownerType === "string" || value.ownerType === null) &&
248
+ (typeof value.ownerId === "string" || value.ownerId === null) &&
249
+ (Buffer.isBuffer(value.tokenHash) || value.tokenHash === null) &&
250
+ (typeof value.expiresAt === "number" || value.expiresAt === null));
251
+ }
252
+ function isRecord(value) {
253
+ return typeof value === "object" && value !== null && !Array.isArray(value);
254
+ }
255
+ //# sourceMappingURL=mutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation.js","sourceRoot":"","sources":["../../src/state/mutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAqD9C,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IACpB,KAAK,CAAgB;IAE9B,YAAY,KAAoB;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,cAAc,CAAC,IAAkB,EAAE,YAAoB,EAAE,GAAG,GAAW,IAAI,CAAC,GAAG,EAAE;QAC/E,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,UAAU;aAClB,OAAO,CACN;;8DAEsD,CACvD;aACA,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU;aAC9B,OAAO,CACN;;8CAEsC,CACvC;aACA,GAAG,CAAC,UAAU,CAAC,CAAC;QACnB,+EAA+E;QAC/E,IACE,CAAC,kBAAkB,CAAC,GAAG,CAAC;YACxB,GAAG,CAAC,YAAY,KAAK,IAAI;YACzB,GAAG,CAAC,YAAY,KAAK,YAAY,EACjC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,UAAU;aAClB,OAAO,CACN;;6CAEqC,CACtC;aACA,GAAG,CAAC,UAAU,CAAC,CAAC;QACnB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,OAOL;QACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YACjC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAC5E,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBACnD,MAAM,IAAI,kBAAkB,CAAC,kDAAkD,CAAC,CAAC;YACnF,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YACtE,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;gBAChF,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;YACxC,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,UAAU;iBAClB,OAAO,CACN;;;oDAG0C,CAC3C;iBACA,GAAG,CACF,UAAU,EACV,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,OAAO,EACf,SAAS,CAAC,KAAK,CAAC,EAChB,GAAG,EACH,GAAG,EACH,SAAS,EACT,OAAO,CAAC,UAAU,EAClB,KAAK,CAAC,UAAU,CACjB,CAAC;YACJ,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC1F,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE;gBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE;gBACvD,eAAe,EAAE,UAAU;gBAC3B,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE;gBACpD,GAAG;aACJ,CAAC,CAAC;YACH,OAAO;gBACL,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK;gBACL,UAAU;gBACV,SAAS;gBACT,gBAAgB,EAAE,YAAY;aAC/B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CACH,KAAiB,EACjB,gBAAwB,EACxB,OAAe,EACf,GAAG,GAAW,IAAI,CAAC,GAAG,EAAE;QAExB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YACjC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC1E,IAAI,QAAQ,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;gBAC3C,MAAM,IAAI,kBAAkB,CAAC,gDAAgD,CAAC,CAAC;YACjF,CAAC;YACD,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACvD,MAAM,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC;YAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU;iBACjC,OAAO,CACN;;sEAE4D,CAC7D;iBACA,GAAG,CACF,GAAG,EACH,SAAS,EACT,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,OAAO,EACb,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EACtB,KAAK,CAAC,UAAU,EAChB,GAAG,CACJ,CAAC;YACJ,qEAAqE;YACrE,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,kBAAkB,CAAC,4BAA4B,CAAC,CAAC;YAC7D,CAAC;YACD,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACxF,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE;gBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE;gBACnD,eAAe,EAAE,KAAK,CAAC,UAAU;gBACjC,OAAO,EAAE,EAAE,SAAS,EAAE;gBACtB,GAAG;aACJ,CAAC,CAAC;YACH,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,KAAiB,EAAE,gBAAwB,EAAE,GAAG,GAAW,IAAI,CAAC,GAAG,EAAE;QAC3E,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YACjC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC1E,IAAI,QAAQ,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;gBAC3C,MAAM,IAAI,kBAAkB,CAAC,gDAAgD,CAAC,CAAC;YACjF,CAAC;YACD,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU;iBACjC,OAAO,CACN;;;;mDAIyC,CAC1C;iBACA,GAAG,CACF,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,OAAO,EACb,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EACtB,KAAK,CAAC,UAAU,CACjB,CAAC;YACJ,qEAAqE;YACrE,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,kBAAkB,CAAC,4BAA4B,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC3C,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACxF,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE;gBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE;gBACnD,eAAe,EAAE,KAAK,CAAC,UAAU;gBACjC,GAAG;aACJ,CAAC,CAAC;YACH,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CACJ,MAAmB,EACnB,SAAiB,EACjB,KAAqF,EACrF,OAAO,GAAwC,EAAE;QAEjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YACjC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YAC3E,IAAI,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAClD,MAAM,IAAI,kBAAkB,CAAC,2CAA2C,CAAC,CAAC;YAC5E,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;oBAClD,MAAM,IAAI,kBAAkB,CAAC,gDAAgD,CAAC,CAAC;gBACjF,CAAC;gBACD,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;YACjE,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACzF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE;gBACtC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,GAAG;aACJ,CAAC,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAAC,IAAkB,EAAE,YAAoB;IACpE,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClG,OAAO,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;AACrD,CAAC;AAYD,SAAS,eAAe,CAAC,QAA2B,EAAE,UAAkB;IACtE,MAAM,GAAG,GAAG,QAAQ;SACjB,OAAO,CAAC,sDAAsD,CAAC;SAC/D,GAAG,CAAC,UAAU,CAAC,CAAC;IACnB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,QAA2B,EAAE,UAAkB;IACnE,MAAM,GAAG,GAAG,QAAQ;SACjB,OAAO,CACN;;yCAEmC,CACpC;SACA,GAAG,CAAC,UAAU,CAAC,CAAC;IACnB,4EAA4E;IAC5E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAA2B,EAC3B,KAAiB,EACjB,GAAW,EACX,gBAAgB,GAAY,IAAI;IAEhC,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACvD,IACE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;QACnC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;QAC/B,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;QACrC,KAAK,CAAC,SAAS,KAAK,IAAI;QACxB,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,EAC1E,CAAC;QACD,MAAM,IAAI,kBAAkB,CAAC,4BAA4B,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAA2B,EAC3B,UAAkB,EAClB,gBAAwB,EACxB,GAAW;IAEX,MAAM,MAAM,GAAG,QAAQ;SACpB,OAAO,CACN;8CACwC,CACzC;SACA,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAC1C,sEAAsE;IACtE,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,kBAAkB,CAAC,2CAA2C,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,KAAoB,EACpB,OAQC;IAED,MAAM,OAAO,GAAG,SAAS,UAAU,EAAE,EAAE,CAAC;IACxC,MAAM,WAAW,GACf,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACrF,KAAK,CAAC,UAAU;SACb,OAAO,CACN;;;4CAGsC,CACvC;SACA,GAAG,CACF,OAAO,EACP,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,KAAK,CAAC,IAAI,EAClB,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,EACxB,OAAO,CAAC,eAAe,IAAI,IAAI,EAC/B,WAAW,EACX,OAAO,CAAC,GAAG,CACZ,CAAC;IACJ,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAC/D,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;QACpC,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACtC,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CACvC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;QACpC,CAAC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;QACjE,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC;QAC7D,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;QAC9D,CAAC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const STATE_APPLICATION_ID = 1346983750;
2
+ export declare const STATE_SCHEMA_NAME = "pi-workflows-state";
3
+ export declare const STATE_SCHEMA_VERSION = 1;
4
+ export declare const STATE_APP_VERSION = "0.12.1";
5
+ export declare const STATE_SCHEMA_SQL: string;
6
+ export declare const STATE_SCHEMA_DIGEST: NonSharedBuffer;