@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.
- package/README.md +56 -31
- package/dist/builtins/autodoc.workflow.d.ts +4 -4
- package/dist/builtins/autoimplement.workflow.d.ts +797 -142
- package/dist/builtins/autoimplement.workflow.js +17 -105
- package/dist/builtins/autoimplement.workflow.js.map +1 -1
- package/dist/builtins/autoplan.workflow.d.ts +126 -13
- package/dist/builtins/autoplan.workflow.js +200 -29
- package/dist/builtins/autoplan.workflow.js.map +1 -1
- package/dist/builtins/catalog.js +7 -5
- package/dist/builtins/catalog.js.map +1 -1
- package/dist/builtins/index.d.ts +4 -2
- package/dist/builtins/index.js +3 -1
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/monitor.workflow.d.ts +56 -23
- package/dist/builtins/monitor.workflow.js +508 -329
- package/dist/builtins/monitor.workflow.js.map +1 -1
- package/dist/builtins/pi-agent-group.d.ts +72 -0
- package/dist/builtins/pi-agent-group.js +1087 -0
- package/dist/builtins/pi-agent-group.js.map +1 -0
- package/dist/builtins/plain-summary.workflow.d.ts +32 -0
- package/dist/builtins/plain-summary.workflow.js +134 -0
- package/dist/builtins/plain-summary.workflow.js.map +1 -0
- package/dist/builtins/plan-approval.workflow.d.ts +39 -5
- package/dist/builtins/plan-approval.workflow.js +92 -14
- package/dist/builtins/plan-approval.workflow.js.map +1 -1
- package/dist/builtins/plan-change.workflow.d.ts +449 -0
- package/dist/builtins/plan-change.workflow.js +256 -0
- package/dist/builtins/plan-change.workflow.js.map +1 -0
- package/dist/builtins/plan-presentation.js +2 -2
- package/dist/builtins/plan-presentation.js.map +1 -1
- package/dist/builtins/sanity-check.workflow.d.ts +50 -6
- package/dist/builtins/sanity-check.workflow.js +150 -28
- package/dist/builtins/sanity-check.workflow.js.map +1 -1
- package/dist/controllers/effects.d.ts +3 -2
- package/dist/controllers/effects.js +8 -1
- package/dist/controllers/effects.js.map +1 -1
- package/dist/controllers/index.d.ts +1 -1
- package/dist/controllers/index.js +1 -1
- package/dist/controllers/index.js.map +1 -1
- package/dist/controllers/manager.d.ts +1 -0
- package/dist/controllers/manager.js +41 -17
- package/dist/controllers/manager.js.map +1 -1
- package/dist/controllers/sqlite.d.ts +107 -85
- package/dist/controllers/sqlite.js +1611 -1486
- package/dist/controllers/sqlite.js.map +1 -1
- package/dist/controllers/store.d.ts +9 -8
- package/dist/controllers/store.js +1 -31
- package/dist/controllers/store.js.map +1 -1
- package/dist/controllers/types.d.ts +3 -0
- package/dist/controllers/workflow-engine-scheduler.d.ts +1 -1
- package/dist/controllers/workflow-engine-scheduler.js +3 -5
- package/dist/controllers/workflow-engine-scheduler.js.map +1 -1
- package/dist/controllers/workflows.d.ts +2 -2
- package/dist/controllers/workflows.js +11 -10
- package/dist/controllers/workflows.js.map +1 -1
- package/dist/extension/controller-host.js +2 -2
- package/dist/extension/controller-host.js.map +1 -1
- package/dist/extension/decision-channels.d.ts +4 -2
- package/dist/extension/decision-channels.js +333 -146
- package/dist/extension/decision-channels.js.map +1 -1
- package/dist/extension/executor.d.ts +9 -2
- package/dist/extension/executor.js +89 -2
- package/dist/extension/executor.js.map +1 -1
- package/dist/extension/herdr-viewer.d.ts +0 -1
- package/dist/extension/herdr-viewer.js +0 -4
- package/dist/extension/herdr-viewer.js.map +1 -1
- package/dist/extension/index.js +209 -127
- package/dist/extension/index.js.map +1 -1
- package/dist/extension/recorder.d.ts +3 -10
- package/dist/extension/recorder.js +13 -22
- package/dist/extension/recorder.js.map +1 -1
- package/dist/extension/session-events.d.ts +2 -2
- package/dist/extension/step-message.d.ts +7 -2
- package/dist/extension/step-message.js +94 -2
- package/dist/extension/step-message.js.map +1 -1
- package/dist/extension/widget.js +29 -3
- package/dist/extension/widget.js.map +1 -1
- package/dist/host/rpc-executor.d.ts +3 -0
- package/dist/host/rpc-executor.js +2 -0
- package/dist/host/rpc-executor.js.map +1 -1
- package/dist/host/runner.d.ts +3 -6
- package/dist/host/runner.js +83 -32
- package/dist/host/runner.js.map +1 -1
- package/dist/render/graph-render.js +15 -10
- package/dist/render/graph-render.js.map +1 -1
- package/dist/state/database.d.ts +35 -0
- package/dist/state/database.js +287 -0
- package/dist/state/database.js.map +1 -0
- package/dist/state/index.d.ts +4 -0
- package/dist/state/index.js +5 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/json.d.ts +6 -0
- package/dist/state/json.js +38 -0
- package/dist/state/json.js.map +1 -0
- package/dist/state/mutation.d.ts +57 -0
- package/dist/state/mutation.js +255 -0
- package/dist/state/mutation.js.map +1 -0
- package/dist/state/schema.d.ts +6 -0
- package/dist/state/schema.js +473 -0
- package/dist/state/schema.js.map +1 -0
- package/dist/viewer/cli.d.ts +2 -2
- package/dist/viewer/cli.js +142 -122
- package/dist/viewer/cli.js.map +1 -1
- package/dist/viewer/render.d.ts +4 -4
- package/dist/viewer/render.js +9 -23
- package/dist/viewer/render.js.map +1 -1
- package/dist/viewer/session-reducer.d.ts +1 -1
- package/dist/viewer/session-reducer.js +1 -1
- package/dist/viewer/tui.d.ts +3 -3
- package/dist/viewer/tui.js +15 -13
- package/dist/viewer/tui.js.map +1 -1
- package/dist/viewer/watch.d.ts +2 -5
- package/dist/viewer/watch.js +13 -13
- package/dist/viewer/watch.js.map +1 -1
- package/dist/workflows/catalog.js +7 -2
- package/dist/workflows/catalog.js.map +1 -1
- package/dist/workflows/composition.js +20 -2
- package/dist/workflows/composition.js.map +1 -1
- package/dist/workflows/decision-presentation.d.ts +1 -1
- package/dist/workflows/decision-presentation.js +51 -38
- package/dist/workflows/decision-presentation.js.map +1 -1
- package/dist/workflows/definition.d.ts +6 -2
- package/dist/workflows/definition.js +17 -0
- package/dist/workflows/definition.js.map +1 -1
- package/dist/workflows/engine.d.ts +7 -7
- package/dist/workflows/engine.js +196 -115
- package/dist/workflows/engine.js.map +1 -1
- package/dist/workflows/errors.d.ts +16 -3
- package/dist/workflows/errors.js +18 -3
- package/dist/workflows/errors.js.map +1 -1
- package/dist/workflows/human-decision.d.ts +45 -8
- package/dist/workflows/human-decision.js +641 -274
- package/dist/workflows/human-decision.js.map +1 -1
- package/dist/workflows/index.d.ts +5 -6
- package/dist/workflows/index.js +4 -5
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/progress.d.ts +1 -0
- package/dist/workflows/progress.js +15 -3
- package/dist/workflows/progress.js.map +1 -1
- package/dist/workflows/schema.js +27 -1
- package/dist/workflows/schema.js.map +1 -1
- package/dist/workflows/store.d.ts +83 -103
- package/dist/workflows/store.js +907 -951
- package/dist/workflows/store.js.map +1 -1
- package/dist/workflows/types.d.ts +88 -126
- package/docs/CONTROLLERS.md +10 -8
- package/docs/DEFERRED_TURNS.md +2 -2
- package/docs/DESIGN_PHILOSOPHY.md +4 -2
- package/docs/HUMAN_DECISIONS.md +36 -47
- package/docs/HUMAN_DECISION_PRESENTATIONS.md +14 -24
- package/docs/MONITOR.md +179 -237
- package/docs/SQLITE_STATE.md +219 -0
- package/docs/WORKFLOW_COMPOSITION.md +27 -26
- package/docs/WORKFLOW_STEP_MESSAGES.md +20 -18
- package/docs/WORKFLOW_UPDATES.md +10 -9
- package/docs/development.md +9 -9
- package/docs/live-replay-protocol.md +28 -37
- package/docs/plans/2026-08-16-workflow-updates-plan.md +1 -1
- package/docs/plans/2026-08-19-human-decision-gates-plan.md +1 -1
- package/docs/plans/2026-08-21-autoimplement-timeout-fallback-plan.md +1 -1
- package/docs/plans/2026-08-21-plan-change-approval-policy-plan.md +322 -0
- package/docs/plans/2026-08-21-sanity-check-plan.md +217 -95
- package/docs/plans/2026-08-22-goal-finishing-monitor-plan.md +200 -0
- package/docs/plans/2026-08-23-assistant-agent-completion-plan.md +701 -0
- package/docs/plans/2026-08-23-sqlite-state-plan.md +970 -0
- package/docs/plans/replayable-run-bundles-implementation-plan.md +2 -2
- package/docs/plans/session-event-replay-implementation-plan.md +1 -1
- package/docs/plans/tui-viewer-implementation-plan.md +1 -1
- package/docs/session-event-journal.md +63 -434
- package/docs/tui-viewer.md +13 -15
- package/docs/workflows.md +127 -53
- package/examples/workflows/approved-plan.workflow.ts +19 -46
- package/examples/workflows/plain-summary.workflow.ts +1 -0
- package/herdr-plugin.toml +1 -1
- package/package.json +7 -7
- package/plugins/herdr/viewer.mjs +1 -11
- package/schemas/human-decision-accepted-v1.schema.json +15 -3
- package/schemas/human-decision-continuation-v1.schema.json +10 -1
- package/schemas/human-decision-delivery-v1.schema.json +8 -0
- package/schemas/human-decision-receipt-v1.schema.json +8 -0
- package/schemas/human-decision-request-v1.schema.json +24 -4
- package/skills/autoimplement/SKILL.md +27 -0
- package/skills/autoplan/SKILL.md +5 -4
- package/skills/monitor/SKILL.md +91 -135
- package/skills/pi-workflows/SKILL.md +9 -8
- package/skills/sanity-check/SKILL.md +44 -0
- package/src/builtins/autoimplement.workflow.ts +19 -118
- package/src/builtins/autoplan.workflow.ts +290 -40
- package/src/builtins/catalog.ts +7 -5
- package/src/builtins/index.ts +18 -1
- package/src/builtins/monitor.workflow.ts +673 -382
- package/src/builtins/pi-agent-group.ts +1407 -0
- package/src/builtins/plain-summary.workflow.ts +185 -0
- package/src/builtins/plan-approval.workflow.ts +157 -24
- package/src/builtins/plan-change.workflow.ts +321 -0
- package/src/builtins/plan-presentation.ts +2 -2
- package/src/builtins/sanity-check.workflow.ts +248 -48
- package/src/controllers/effects.ts +7 -0
- package/src/controllers/index.ts +0 -6
- package/src/controllers/manager.ts +72 -32
- package/src/controllers/sqlite.ts +2420 -1948
- package/src/controllers/store.ts +17 -38
- package/src/controllers/types.ts +3 -0
- package/src/controllers/workflow-engine-scheduler.ts +4 -8
- package/src/controllers/workflows.ts +45 -21
- package/src/extension/controller-host.ts +1 -2
- package/src/extension/decision-channels.ts +456 -203
- package/src/extension/executor.ts +105 -2
- package/src/extension/herdr-viewer.ts +0 -5
- package/src/extension/index.ts +251 -151
- package/src/extension/recorder.ts +13 -22
- package/src/extension/session-events.ts +2 -2
- package/src/extension/step-message.ts +106 -4
- package/src/extension/widget.ts +32 -5
- package/src/host/rpc-executor.ts +4 -0
- package/src/host/runner.ts +93 -41
- package/src/render/graph-render.ts +12 -6
- package/src/state/database.ts +375 -0
- package/src/state/index.ts +29 -0
- package/src/state/json.ts +42 -0
- package/src/state/mutation.ts +435 -0
- package/src/state/schema.ts +475 -0
- package/src/viewer/cli.ts +151 -144
- package/src/viewer/render.ts +19 -30
- package/src/viewer/session-reducer.ts +1 -1
- package/src/viewer/tui.ts +18 -17
- package/src/viewer/watch.ts +13 -17
- package/src/workflows/catalog.ts +7 -2
- package/src/workflows/composition.ts +21 -3
- package/src/workflows/decision-presentation.ts +56 -43
- package/src/workflows/definition.ts +36 -3
- package/src/workflows/engine.ts +228 -130
- package/src/workflows/errors.ts +27 -3
- package/src/workflows/human-decision.ts +921 -349
- package/src/workflows/index.ts +20 -30
- package/src/workflows/progress.ts +18 -3
- package/src/workflows/schema.ts +36 -1
- package/src/workflows/store.ts +1300 -1163
- package/src/workflows/types.ts +100 -137
- package/dist/builtins/sanity-check-session.d.ts +0 -17
- package/dist/builtins/sanity-check-session.js +0 -168
- package/dist/builtins/sanity-check-session.js.map +0 -1
- package/dist/workflows/artifacts.d.ts +0 -40
- package/dist/workflows/artifacts.js +0 -155
- package/dist/workflows/artifacts.js.map +0 -1
- package/dist/workflows/migrate-sources.d.ts +0 -42
- package/dist/workflows/migrate-sources.js +0 -133
- package/dist/workflows/migrate-sources.js.map +0 -1
- package/docs/run-bundles.md +0 -481
- package/schemas/human-decision-accepted-v2.schema.json +0 -50
- package/schemas/human-decision-delivery-v2.schema.json +0 -36
- package/schemas/human-decision-receipt-v2.schema.json +0 -39
- package/schemas/human-decision-request-v2.schema.json +0 -69
- package/schemas/human-decision-resolution-v2.schema.json +0 -27
- package/src/builtins/sanity-check-session.ts +0 -205
- package/src/workflows/artifacts.ts +0 -188
- 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":"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"}
|
|
@@ -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;
|