@plurnk/plurnk-service 3.2.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.defaults +3 -3
- package/INSTALL.md +6 -0
- package/README.md +2 -2
- package/SPEC.md +489 -186
- package/dist/build-info.json +1 -1
- package/dist/completions/_plurnk-service +1 -1
- package/dist/completions/plurnk-service.bash +1 -1
- package/dist/completions/plurnk-service.fish +2 -0
- package/dist/content/read-projector.js +1 -1
- package/dist/content/read-projector.js.map +1 -1
- package/dist/core/AdministrativeLoop.d.ts +1 -1
- package/dist/core/AdministrativeLoop.d.ts.map +1 -1
- package/dist/core/AdministrativeLoop.js +4 -1
- package/dist/core/AdministrativeLoop.js.map +1 -1
- package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
- package/dist/core/AdmittedTurnExecutor.js +8 -0
- package/dist/core/AdmittedTurnExecutor.js.map +1 -1
- package/dist/core/BareBatchRunner.js +2 -1
- package/dist/core/BareBatchRunner.js.map +1 -1
- package/dist/core/BudgetReadout.d.ts +1 -3
- package/dist/core/BudgetReadout.d.ts.map +1 -1
- package/dist/core/BudgetReadout.js +43 -46
- package/dist/core/BudgetReadout.js.map +1 -1
- package/dist/core/ChannelWrite.d.ts +10 -0
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js +10 -0
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/ChannelWrite.sql +14 -2
- package/dist/core/ClientInteractions.d.ts.map +1 -1
- package/dist/core/ClientInteractions.js +2 -1
- package/dist/core/ClientInteractions.js.map +1 -1
- package/dist/core/CoreSchemeServices.d.ts.map +1 -1
- package/dist/core/CoreSchemeServices.js +6 -0
- package/dist/core/CoreSchemeServices.js.map +1 -1
- package/dist/core/DataStatementRunner.js +4 -6
- package/dist/core/DataStatementRunner.js.map +1 -1
- package/dist/core/Dispatcher.d.ts +3 -7
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +53 -73
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/Dispatcher.sql +2 -2
- package/dist/core/EditMutations.js +1 -0
- package/dist/core/EditMutations.js.map +1 -1
- package/dist/core/Engine.d.ts +8 -14
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +22 -24
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/Engine.sql +6 -6
- package/dist/core/ExecutorRegistry.d.ts +0 -5
- package/dist/core/ExecutorRegistry.d.ts.map +1 -1
- package/dist/core/ExecutorRegistry.js +10 -18
- package/dist/core/ExecutorRegistry.js.map +1 -1
- package/dist/core/FileAddress.js +1 -1
- package/dist/core/FileAddress.js.map +1 -1
- package/dist/core/FilePublication.js +10 -74
- package/dist/core/FilePublication.js.map +1 -1
- package/dist/core/FileSnapshot.js +36 -100
- package/dist/core/FileSnapshot.js.map +1 -1
- package/dist/core/HostPaths.d.ts +1 -0
- package/dist/core/HostPaths.d.ts.map +1 -1
- package/dist/core/HostPaths.js +11 -1
- package/dist/core/HostPaths.js.map +1 -1
- package/dist/core/KillHandler.js +3 -1
- package/dist/core/KillHandler.js.map +1 -1
- package/dist/core/LiveSubscription.js +1 -1
- package/dist/core/LiveSubscription.js.map +1 -1
- package/dist/core/LogBody.js +1 -1
- package/dist/core/LogBody.js.map +1 -1
- package/dist/core/LogWriter.js +1 -1
- package/dist/core/LogWriter.js.map +1 -1
- package/dist/core/LoopDriver.d.ts +3 -3
- package/dist/core/LoopDriver.d.ts.map +1 -1
- package/dist/core/LoopDriver.js +15 -13
- package/dist/core/LoopDriver.js.map +1 -1
- package/dist/core/LoopLifecycle.d.ts +5 -0
- package/dist/core/LoopLifecycle.d.ts.map +1 -1
- package/dist/core/LoopLifecycle.js +14 -1
- package/dist/core/LoopLifecycle.js.map +1 -1
- package/dist/core/LoopLifecycle.sql +11 -2
- package/dist/core/MembershipMaterialization.js +2 -2
- package/dist/core/MembershipMaterialization.js.map +1 -1
- package/dist/core/MessageResources.d.ts +3 -0
- package/dist/core/MessageResources.d.ts.map +1 -1
- package/dist/core/MessageResources.js +15 -1
- package/dist/core/MessageResources.js.map +1 -1
- package/dist/core/OperatorConfig.d.ts +1 -2
- package/dist/core/OperatorConfig.d.ts.map +1 -1
- package/dist/core/OperatorConfig.js +26 -92
- package/dist/core/OperatorConfig.js.map +1 -1
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +21 -18
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/PacketBuilder.sql +18 -5
- package/dist/core/ProblemLog.d.ts +1 -0
- package/dist/core/ProblemLog.d.ts.map +1 -1
- package/dist/core/ProblemLog.js +2 -2
- package/dist/core/ProblemLog.js.map +1 -1
- package/dist/core/ProposalLifecycle.d.ts +1 -0
- package/dist/core/ProposalLifecycle.d.ts.map +1 -1
- package/dist/core/ProposalLifecycle.js +14 -8
- package/dist/core/ProposalLifecycle.js.map +1 -1
- package/dist/core/ProposalPolicies.d.ts +4 -1
- package/dist/core/ProposalPolicies.d.ts.map +1 -1
- package/dist/core/ProposalPolicies.js +5 -2
- package/dist/core/ProposalPolicies.js.map +1 -1
- package/dist/core/ResourceMutations.js +2 -0
- package/dist/core/ResourceMutations.js.map +1 -1
- package/dist/core/ResourceSelector.js +1 -1
- package/dist/core/ResourceSelector.js.map +1 -1
- package/dist/core/SchemeRegistry.js +1 -1
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/ServiceHelp.js +1 -1
- package/dist/core/ServiceHelp.js.map +1 -1
- package/dist/core/ServiceTeardown.js +9 -12
- package/dist/core/ServiceTeardown.js.map +1 -1
- package/dist/core/StrikeRail.d.ts +2 -1
- package/dist/core/StrikeRail.d.ts.map +1 -1
- package/dist/core/StrikeRail.js +11 -6
- package/dist/core/StrikeRail.js.map +1 -1
- package/dist/core/TerminalResult.js +1 -1
- package/dist/core/TerminalResult.js.map +1 -1
- package/dist/core/TurnDispositionHandler.d.ts +1 -1
- package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
- package/dist/core/TurnDispositionHandler.js +8 -5
- package/dist/core/TurnDispositionHandler.js.map +1 -1
- package/dist/core/TurnMaterialization.js +6 -4
- package/dist/core/TurnMaterialization.js.map +1 -1
- package/dist/core/TurnMaterialization.sql +1 -1
- package/dist/core/TurnOps.js +1 -0
- package/dist/core/TurnOps.js.map +1 -1
- package/dist/core/TurnRunner.d.ts +4 -2
- package/dist/core/TurnRunner.d.ts.map +1 -1
- package/dist/core/TurnRunner.js +63 -51
- package/dist/core/TurnRunner.js.map +1 -1
- package/dist/core/WorkerControlHandler.d.ts +2 -0
- package/dist/core/WorkerControlHandler.d.ts.map +1 -1
- package/dist/core/WorkerControlHandler.js +84 -16
- package/dist/core/WorkerControlHandler.js.map +1 -1
- package/dist/core/WorkerName.d.ts +0 -4
- package/dist/core/WorkerName.d.ts.map +1 -1
- package/dist/core/WorkerName.js +5 -30
- package/dist/core/WorkerName.js.map +1 -1
- package/dist/core/WorkerName.sql +4 -20
- package/dist/core/WorkerOwners.d.ts +1 -0
- package/dist/core/WorkerOwners.d.ts.map +1 -1
- package/dist/core/WorkerOwners.js +6 -0
- package/dist/core/WorkerOwners.js.map +1 -1
- package/dist/core/WorkerOwners.sql +7 -0
- package/dist/core/WorkspaceGate.d.ts +3 -1
- package/dist/core/WorkspaceGate.d.ts.map +1 -1
- package/dist/core/WorkspaceGate.js +59 -10
- package/dist/core/WorkspaceGate.js.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.d.ts +3 -0
- package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.js +14 -0
- package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
- package/dist/core/env-catalog.js +1 -1
- package/dist/core/env-catalog.js.map +1 -1
- package/dist/core/fork.js +1 -1
- package/dist/core/fork.js.map +1 -1
- package/dist/core/fork.sql +7 -6
- package/dist/core/mutation-types.d.ts +1 -0
- package/dist/core/mutation-types.d.ts.map +1 -1
- package/dist/core/mutation-types.js +4 -1
- package/dist/core/mutation-types.js.map +1 -1
- package/dist/core/namespace.js +1 -1
- package/dist/core/namespace.js.map +1 -1
- package/dist/core/packet-wire.d.ts +1 -1
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +24 -15
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/plurnk-uri.d.ts +1 -1
- package/dist/core/plurnk-uri.d.ts.map +1 -1
- package/dist/core/plurnk-uri.js +1 -1
- package/dist/core/plurnk-uri.js.map +1 -1
- package/dist/core/scheme-types.d.ts +5 -0
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/turn-signals.d.ts +4 -0
- package/dist/core/turn-signals.d.ts.map +1 -1
- package/dist/core/turn-signals.js +1 -0
- package/dist/core/turn-signals.js.map +1 -1
- package/dist/core/workspace-settings.js +1 -1
- package/dist/core/workspace-settings.js.map +1 -1
- package/dist/evidence/EvidenceReader.js +5 -5
- package/dist/evidence/EvidenceReader.js.map +1 -1
- package/dist/man/plurnk-service.1 +27 -6
- package/dist/schemes/Env.d.ts +7 -3
- package/dist/schemes/Env.d.ts.map +1 -1
- package/dist/schemes/Env.js +12 -6
- package/dist/schemes/Env.js.map +1 -1
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +37 -25
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/ExecOutputScheme.js +3 -3
- package/dist/schemes/ExecOutputScheme.js.map +1 -1
- package/dist/schemes/ExecutionInput.d.ts +2 -1
- package/dist/schemes/ExecutionInput.d.ts.map +1 -1
- package/dist/schemes/ExecutionInput.js +45 -7
- package/dist/schemes/ExecutionInput.js.map +1 -1
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +32 -23
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +23 -5
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Log.sql +24 -1
- package/dist/schemes/ResourceTreeScheme.js +2 -5
- package/dist/schemes/ResourceTreeScheme.js.map +1 -1
- package/dist/schemes/TurnSource.js +1 -1
- package/dist/schemes/TurnSource.js.map +1 -1
- package/dist/schemes/Worker.d.ts.map +1 -1
- package/dist/schemes/Worker.js +10 -3
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/schemes/_entry-crud.d.ts.map +1 -1
- package/dist/schemes/_entry-crud.js +2 -4
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-crud.sql +5 -3
- package/dist/schemes/_entry-find.js +3 -3
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-manifest.d.ts.map +1 -1
- package/dist/schemes/_entry-manifest.js +3 -3
- package/dist/schemes/_entry-manifest.js.map +1 -1
- package/dist/schemes/_entry-manifest.sql +2 -0
- package/dist/schemes/_entry-ops.js +1 -1
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_entry-send.js +1 -1
- package/dist/schemes/_entry-send.js.map +1 -1
- package/dist/server/ClientReads.d.ts +1 -0
- package/dist/server/ClientReads.d.ts.map +1 -1
- package/dist/server/ClientReads.js +7 -2
- package/dist/server/ClientReads.js.map +1 -1
- package/dist/server/Credentials.d.ts +48 -0
- package/dist/server/Credentials.d.ts.map +1 -0
- package/dist/server/Credentials.js +203 -0
- package/dist/server/Credentials.js.map +1 -0
- package/dist/server/Daemon.d.ts +44 -39
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +287 -172
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DrainSupervisor.d.ts +8 -3
- package/dist/server/DrainSupervisor.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.js +44 -32
- package/dist/server/DrainSupervisor.js.map +1 -1
- package/dist/server/EnvFunctionality.d.ts.map +1 -1
- package/dist/server/EnvFunctionality.js +2 -1
- package/dist/server/EnvFunctionality.js.map +1 -1
- package/dist/server/Functionality.d.ts +4 -2
- package/dist/server/Functionality.d.ts.map +1 -1
- package/dist/server/Functionality.js +192 -96
- package/dist/server/Functionality.js.map +1 -1
- package/dist/server/FunctionalityManager.d.ts +1 -4
- package/dist/server/FunctionalityManager.d.ts.map +1 -1
- package/dist/server/FunctionalityManager.js +6 -6
- package/dist/server/FunctionalityManager.js.map +1 -1
- package/dist/server/HttpListener.d.ts +1 -1
- package/dist/server/HttpListener.d.ts.map +1 -1
- package/dist/server/HttpListener.js.map +1 -1
- package/dist/server/MembersFunctionality.d.ts +7 -8
- package/dist/server/MembersFunctionality.d.ts.map +1 -1
- package/dist/server/MembersFunctionality.js +90 -56
- package/dist/server/MembersFunctionality.js.map +1 -1
- package/dist/server/MessageAbandonment.d.ts +7 -0
- package/dist/server/MessageAbandonment.d.ts.map +1 -0
- package/dist/server/MessageAbandonment.js +57 -0
- package/dist/server/MessageAbandonment.js.map +1 -0
- package/dist/server/ModuleHost.d.ts +2 -1
- package/dist/server/ModuleHost.d.ts.map +1 -1
- package/dist/server/PlurnkSkill.js +4 -7
- package/dist/server/PlurnkSkill.js.map +1 -1
- package/dist/server/Rollback.d.ts +29 -0
- package/dist/server/Rollback.d.ts.map +1 -0
- package/dist/server/Rollback.js +111 -0
- package/dist/server/Rollback.js.map +1 -0
- package/dist/server/WorkerModelResolver.js +1 -0
- package/dist/server/WorkerModelResolver.js.map +1 -1
- package/dist/server/WorkerReferences.d.ts +14 -0
- package/dist/server/WorkerReferences.d.ts.map +1 -0
- package/dist/server/WorkerReferences.js +24 -0
- package/dist/server/WorkerReferences.js.map +1 -0
- package/dist/server/WorkerReferences.sql +31 -0
- package/dist/server/WorkspaceCapabilities.d.ts +2 -0
- package/dist/server/WorkspaceCapabilities.d.ts.map +1 -1
- package/dist/server/WorkspaceCapabilities.js +35 -18
- package/dist/server/WorkspaceCapabilities.js.map +1 -1
- package/dist/server/WorkspacePlugins.js +1 -0
- package/dist/server/WorkspacePlugins.js.map +1 -1
- package/dist/server/WorkspaceResidency.d.ts +3 -1
- package/dist/server/WorkspaceResidency.d.ts.map +1 -1
- package/dist/server/WorkspaceResidency.js +12 -5
- package/dist/server/WorkspaceResidency.js.map +1 -1
- package/dist/server/client-input.d.ts +2 -0
- package/dist/server/client-input.d.ts.map +1 -1
- package/dist/server/client-input.js +28 -0
- package/dist/server/client-input.js.map +1 -1
- package/dist/server/drain.sql +46 -40
- package/dist/server/envelope.d.ts +5 -9
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +21 -84
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/envelope.sql +17 -17
- package/dist/server/lifecycle-recovery.sql +5 -15
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +6 -0
- package/dist/server/logEntry.js.map +1 -1
- package/dist/server/logEntry.sql +94 -6
- package/dist/server/module-discovery.d.ts +1 -1
- package/dist/server/module-discovery.d.ts.map +1 -1
- package/dist/server/module-discovery.js +1 -0
- package/dist/server/module-discovery.js.map +1 -1
- package/dist/server/seam-loop.sql +15 -7
- package/dist/server/seam-proposal-list.sql +10 -4
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +7 -1
- package/dist/service.js.map +1 -1
- package/docs/members.md +20 -13
- package/migrations/002_workers.sql +2 -2
- package/migrations/006_log.sql +1 -1
- package/migrations/018_worker_owners.sql +1 -1
- package/migrations/026_message_obligations.sql +32 -0
- package/migrations/027_members_identity.sql +20 -0
- package/migrations/028_mutation_patch.sql +20 -0
- package/migrations/029_default_worker.sql +9 -0
- package/migrations/030_client_workers.sql +105 -0
- package/migrations/031_message_openers.sql +83 -0
- package/migrations/032_worker_references.sql +29 -0
- package/package.json +24 -24
- package/plurnk.nginx.conf +71 -0
- package/plurnk.service +2 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// {§rollback} — undo a worker's settled file mutations after one of its log coordinates. Each row's
|
|
2
|
+
// patch ({§log-mutation-patch}) is reversed against the file as it is now and written back as an
|
|
3
|
+
// ordinary operation of the acting client, so every step is a proposal, a row and a patch of its
|
|
4
|
+
// own; the first file that no longer holds what its mutation wrote stops the rollback where it is.
|
|
5
|
+
import { readFile } from "node:fs/promises";
|
|
6
|
+
import { join } from "node:path";
|
|
7
|
+
import { applyPatch, parsePatch, reversePatch } from "diff";
|
|
8
|
+
import { PlurnkParser } from "@plurnk/plurnk-parser";
|
|
9
|
+
import { entryAddress } from "../core/plurnk-uri.js";
|
|
10
|
+
import { daemonFailure } from "./daemon-results.js";
|
|
11
|
+
export default class Rollback {
|
|
12
|
+
// `<loop>/<turn>/<item>`, with or without the `log:///` prefix and a trailing `/<OP>`.
|
|
13
|
+
static coordinate(to) {
|
|
14
|
+
const match = /^(?:log:\/\/\/)?(\d+)\/(\d+)\/(\d+)(?:\/[A-Za-z]+)?$/u.exec(to.trim());
|
|
15
|
+
if (match === null)
|
|
16
|
+
return null;
|
|
17
|
+
const [loopSeq, turnSeq, sequence] = match.slice(1).map(Number);
|
|
18
|
+
return loopSeq > 0 && turnSeq > 0 && sequence > 0 ? { loopSeq: loopSeq, turnSeq: turnSeq, sequence: sequence } : null;
|
|
19
|
+
}
|
|
20
|
+
static async run(seam, args) {
|
|
21
|
+
const coordinate = Rollback.coordinate(args.to);
|
|
22
|
+
if (coordinate === null) {
|
|
23
|
+
throw daemonFailure("daemon:rollback", "coordinate-invalid", 400, `'${args.to}' is not a log coordinate.`, {
|
|
24
|
+
to: args.to, recovery: "Name the coordinate as <loop>/<turn>/<item>, as the log shows it.",
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
const at = `${coordinate.loopSeq}/${coordinate.turnSeq}/${coordinate.sequence}`;
|
|
28
|
+
const anchor = await seam.db.log_id_by_coordinate.get({
|
|
29
|
+
worker_id: args.workerId, loop_seq: coordinate.loopSeq, turn_seq: coordinate.turnSeq, sequence: coordinate.sequence,
|
|
30
|
+
});
|
|
31
|
+
if (anchor === undefined) {
|
|
32
|
+
throw daemonFailure("daemon:rollback", "coordinate-not-found", 404, `No log entry exists at log:///${at}.`, { to: at });
|
|
33
|
+
}
|
|
34
|
+
const root = await seam.projectRoot(args.workspaceId);
|
|
35
|
+
if (root === null) {
|
|
36
|
+
throw daemonFailure("daemon:rollback", "project-root-required", 400, "Rollback restores files, and this workspace has no project root.", {});
|
|
37
|
+
}
|
|
38
|
+
const rows = await seam.db.log_file_mutations_after.all({
|
|
39
|
+
worker_id: args.workerId, loop_seq: coordinate.loopSeq, turn_seq: coordinate.turnSeq, sequence: coordinate.sequence,
|
|
40
|
+
});
|
|
41
|
+
const restored = [];
|
|
42
|
+
const skipped = [];
|
|
43
|
+
const executors = seam.executorTags(args.workspaceId);
|
|
44
|
+
for (const row of rows) {
|
|
45
|
+
const rowCoordinate = `${row.loop_seq}/${row.turn_seq}/${row.sequence}`;
|
|
46
|
+
if (row.patch === null) {
|
|
47
|
+
// A file mutation that kept no patch: nothing is invented for it ({§log-mutation-patch}).
|
|
48
|
+
if (row.scheme === null || row.scheme === "file")
|
|
49
|
+
skipped.push({ coordinate: rowCoordinate, reason: "no-patch" });
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
// A row that wrote several files is reversed last file first.
|
|
53
|
+
for (const file of parsePatch(row.patch).toReversed()) {
|
|
54
|
+
const outcome = await Rollback.#reverse(seam, { root, executors, file, coordinate: rowCoordinate }, restored);
|
|
55
|
+
if (outcome === "already-reversed") {
|
|
56
|
+
skipped.push({ coordinate: rowCoordinate, reason: "already-reversed" });
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (outcome !== null)
|
|
60
|
+
return { to: at, restored, skipped, stopped: outcome };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return { to: at, restored, skipped, stopped: null };
|
|
64
|
+
}
|
|
65
|
+
static async #reverse(seam, { root, executors, file, coordinate }, restored) {
|
|
66
|
+
const path = file.oldFileName;
|
|
67
|
+
if (typeof path !== "string" || path.length === 0)
|
|
68
|
+
throw new Error(`log:///${coordinate} keeps a patch that names no file.`);
|
|
69
|
+
let current;
|
|
70
|
+
try {
|
|
71
|
+
current = await readFile(join(root, path), "utf8");
|
|
72
|
+
}
|
|
73
|
+
catch (cause) {
|
|
74
|
+
if (cause.code !== "ENOENT")
|
|
75
|
+
throw cause;
|
|
76
|
+
current = null;
|
|
77
|
+
}
|
|
78
|
+
const created = file.hunks.every((hunk) => hunk.oldLines === 0);
|
|
79
|
+
const removed = !created && file.hunks.every((hunk) => hunk.newLines === 0);
|
|
80
|
+
// A row whose forward patch still applies was reversed already, by an earlier rollback whose
|
|
81
|
+
// own rows live in the client's log: nothing to do for it, and nothing invented.
|
|
82
|
+
const alreadyReversed = () => applyPatch(current ?? "", file) !== false;
|
|
83
|
+
if (removed ? current !== null : current === null) {
|
|
84
|
+
if (alreadyReversed())
|
|
85
|
+
return "already-reversed";
|
|
86
|
+
return { coordinate, path, reason: "drift", detail: `'${path}' ${current === null ? "no longer exists" : "exists again"}; log:///${coordinate} ${removed ? "removed" : "wrote"} it.` };
|
|
87
|
+
}
|
|
88
|
+
const previous = applyPatch(current ?? "", reversePatch(file));
|
|
89
|
+
if (previous === false) {
|
|
90
|
+
if (alreadyReversed())
|
|
91
|
+
return "already-reversed";
|
|
92
|
+
return { coordinate, path, reason: "drift", detail: `'${path}' no longer holds what log:///${coordinate} wrote.` };
|
|
93
|
+
}
|
|
94
|
+
const action = created ? "delete" : removed ? "create" : "update";
|
|
95
|
+
const target = entryAddress("file", "", path, root);
|
|
96
|
+
const source = action === "delete"
|
|
97
|
+
? `\`\`\`\`KILL (${target})\`\`\`\``
|
|
98
|
+
: `\`\`\`\`EDIT (${target})${action === "update" ? " <1,-1>" : ""}\n${previous}\n\`\`\`\``;
|
|
99
|
+
const { items } = PlurnkParser.parseStatements(source, { executors: [...executors] });
|
|
100
|
+
const item = items[0];
|
|
101
|
+
if (items.length !== 1 || item?.kind !== "statement")
|
|
102
|
+
throw new Error(`rollback of log:///${coordinate} built an operation the parser refused: ${source.slice(0, 120)}`);
|
|
103
|
+
const result = await seam.apply(item.statement);
|
|
104
|
+
if (result.status >= 300) {
|
|
105
|
+
return { coordinate, path, reason: "refused", detail: result.problem?.detail ?? `The reversing operation answered ${result.status}.` };
|
|
106
|
+
}
|
|
107
|
+
restored.push({ coordinate, path, action });
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=Rollback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rollback.js","sourceRoot":"","sources":["../../src/server/Rollback.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { routeForSpec, specForRoute } from "./model-route.js";
|
|
2
|
+
import {} from "@plurnk/plurnk-contracts";
|
|
2
3
|
import { parseAliasesFromEnv, resolveActiveRoute, resolveChildRoute, UnsupportedEffortError } from "@plurnk/plurnk-providers";
|
|
3
4
|
import ConfigurationError from "@plurnk/plurnk-meta/configuration-error";
|
|
4
5
|
import ProviderInstantiate from "../core/ProviderInstantiate.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerModelResolver.js","sourceRoot":"","sources":["../../src/server/WorkerModelResolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkerModelResolver.js","sourceRoot":"","sources":["../../src/server/WorkerModelResolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAe,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC9H,OAAO,kBAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,mBAAmB,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,OAAO,EAAE,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGrE,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC3B,GAAG,CAAK;IAEjB,YAAY,EAAE,EAAE,EAEf;QACG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,QAAgB,EAAE,MAAiC;QAC7E,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;QAC3C,yFAAyF;QACzF,2FAA2F;QAC3F,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;QACzD,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,mCAAmC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;YACnF,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3E,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAiC;QACpD,IAAI,gBAA+C,CAAC;QACpD,KAAK,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACzE,IAAI,OAAO,KAAK,IAAI;gBAAE,SAAS;YAC/B,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,IAAI,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,OAAO,aAAa,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;YAChF,gBAAgB,GAAG,gBAAgB,KAAK,SAAS;gBAC7C,CAAC,CAAC,QAAQ,CAAC,gBAAgB;gBAC3B,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,gBAAgB,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,QAAgB,EAAE,SAAoC;QAChF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,GAAG,CAA4B,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/G,IAAI,QAAQ,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,iCAAiC,CAAC,CAAC;QACjG,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC5E,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;QAC9E,MAAM,aAAa,CACf,eAAe,EAAE,oBAAoB,EAAE,GAAG,EAC1C,UAAU,QAAQ,4EAA4E,EAC9F;YACI,QAAQ;YACR,GAAG,CAAC,aAAa,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;YACrF,GAAG,CAAC,cAAc,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC;YACxF,KAAK,EAAE,iBAAiB;YACxB,QAAQ,EAAE,yEAAyE;YACnF,SAAS,EAAE,KAAK;SACnB,CACJ,CAAC;IACN,CAAC;IAED,iFAAiF;IACjF,+EAA+E;IAC/E,+EAA+E;IAC/E,sEAAsE;IACtE,KAAK,CAAC,kBAAkB,CACpB,QAAgB,EAChB,QAA4B,EAC5B,MAAe;QAEf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,GAAG,CAA4B,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7G,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,2BAA2B,CAAC,CAAC;QACzF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC/B,2FAA2F;YAC3F,kGAAkG;YAClG,oEAAoE;YACpE,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,aAAa,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC;YACvG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ;gBAC9B,CAAC,CAAC,MAAM,CAAC,MAAO;gBAChB,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YAClD,MAAM,YAAY,GAAiB,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YACrE,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE;gBACzC,cAAc,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;gBAClD,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;gBACjD,MAAM;gBACN,aAAa,EAAE,YAAY;aAAE,CAAC,CAAC;YACnC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QACxD,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,+BAA+B,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;YACjE,IAAI,IAAI,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,0BAA0B,CAAC,CAAC;YACjF,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAClD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7F,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC1D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE;gBACzC,cAAc,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;gBAClD,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;gBACjD,MAAM;gBACN,aAAa,EAAE,SAAS;aAAE,CAAC,CAAC;YAChC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QACnE,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,+EAA+E;IAC/E,iFAAiF;IACjF,4EAA4E;IAC5E,8BAA8B;IAC9B,KAAK,CAAC,uBAAuB,CAAC,QAAgB,EAAE,aAAwC;QACpF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,GAAG,CAA4B,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7G,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,2BAA2B,CAAC,CAAC;QACzF,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,aAAa,KAAK,IAAI;gBAC/B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE;gBACzC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,oBAAoB,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;gBAC/E,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,aAAa,EAAE,MAAM,CAAC,aAAa;aAAE,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,MAAM,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACvE,IAAI,IAAI,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,gCAAgC,CAAC,CAAC;YACvF,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBACzB,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE;gBACzC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,oBAAoB,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;gBACxD,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,aAAa,EAAE,MAAM,CAAC,aAAa;aAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,0EAA0E;IAC1E,+DAA+D;IAC/D,yDAAyD;IACzD,KAAK,CAAC,iBAAiB,CACnB,IAAkB,EAClB,MAAe;QAEf,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,mBAAmB,CAC1D,IAAI,EACJ,OAAO,CAAC,GAAG,EACX,MAAM,CACT,CAAC;YACF,mBAAmB,CAAC,4BAA4B,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YACxE,OAAO,QAAQ,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,qBAAqB;gBAAE,MAAM,KAAK,CAAC;YACxD,IAAI,KAAK,YAAY,kBAAkB;gBAAE,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACzH,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;gBAC1C,MAAM,aAAa,CACf,iBAAiB,EACjB,oBAAoB,EACpB,GAAG,EACH,GAAG,eAAe,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,MAAM,IAAI,EACrE;oBACI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC1D,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,gBAAgB,EAAE,KAAK,CAAC,SAAS;oBACjC,KAAK,EAAE,oBAAoB;oBAC3B,QAAQ,EAAE,iDAAiD;oBAC3D,SAAS,EAAE,KAAK;iBAAE,CACzB,CAAC;YACN,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YAC5E,MAAM,aAAa,CACf,iBAAiB,EACjB,sBAAsB,EACtB,GAAG,EACH,GAAG,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAC1C;gBACI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1D,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,oBAAoB;gBAC3B,SAAS,EAAE,KAAK;aAAE,CACzB,CAAC;QACN,CAAC;IACL,CAAC;IAGD,sEAAsE;IACtE,oBAAoB,CAAC,QAAgB;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACnH,CAAC;IAED,WAAW,CAAI,IAAa;QACxB,IAAI,CAAC;YAAC,OAAO,IAAI,EAAE,CAAC;QAAC,CAAC;QACtB,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,CAAC,KAAK,YAAY,kBAAkB,CAAC;gBAAE,MAAM,KAAK,CAAC;YACxD,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACpF,CAAC;IACL,CAAC;CAEJ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ApplicationPort } from "@plurnk/plurnk-contracts/port";
|
|
2
|
+
import type { Db } from "../core/Db.ts";
|
|
3
|
+
type Reference = Parameters<ApplicationPort["readWorkerReference"]>[0];
|
|
4
|
+
type Binding = NonNullable<Awaited<ReturnType<ApplicationPort["readWorkerReference"]>>>;
|
|
5
|
+
/** {§worker-external-reference} All three records are committed by the allocation view. */
|
|
6
|
+
export default class WorkerReferences {
|
|
7
|
+
static read(db: Db, { namespace, reference }: Reference): Promise<Binding | null>;
|
|
8
|
+
static ensure(db: Db, { namespace, reference }: Reference): Promise<{
|
|
9
|
+
binding: Binding;
|
|
10
|
+
created: boolean;
|
|
11
|
+
}>;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=WorkerReferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerReferences.d.ts","sourceRoot":"","sources":["../../src/server/WorkerReferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAIxC,KAAK,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,KAAK,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;AAExF,2FAA2F;AAC3F,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACjC,OAAa,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAEtF;IAED,OAAa,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAYhH;CACJ"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import WorkerName from "../core/WorkerName.js";
|
|
2
|
+
import Envelope from "./envelope.js";
|
|
3
|
+
/** {§worker-external-reference} All three records are committed by the allocation view. */
|
|
4
|
+
export default class WorkerReferences {
|
|
5
|
+
static async read(db, { namespace, reference }) {
|
|
6
|
+
return await db.worker_reference_read.get({ namespace, reference }) ?? null;
|
|
7
|
+
}
|
|
8
|
+
static async ensure(db, { namespace, reference }) {
|
|
9
|
+
while (true) {
|
|
10
|
+
const allocated = await db.worker_reference_allocate.get({
|
|
11
|
+
namespace, reference,
|
|
12
|
+
workspace_name: Envelope.generateWorkspaceName(),
|
|
13
|
+
worker_name: WorkerName.short(),
|
|
14
|
+
});
|
|
15
|
+
const binding = await WorkerReferences.read(db, { namespace, reference });
|
|
16
|
+
if (binding !== null)
|
|
17
|
+
return { binding, created: allocated !== undefined };
|
|
18
|
+
if (allocated !== undefined)
|
|
19
|
+
throw new Error("Allocated worker reference is absent after commit.");
|
|
20
|
+
// A colliding automatic workspace name created nothing; redraw under {§workspace-auto-name}.
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=WorkerReferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerReferences.js","sourceRoot":"","sources":["../../src/server/WorkerReferences.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,QAAQ,MAAM,eAAe,CAAC;AAKrC,2FAA2F;AAC3F,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACjC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAa;QACzD,OAAO,MAAM,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAU,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC;IACzF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAa;QAC3D,OAAO,IAAI,EAAE,CAAC;YACV,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC;gBACrD,SAAS,EAAE,SAAS;gBACpB,cAAc,EAAE,QAAQ,CAAC,qBAAqB,EAAE;gBAChD,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE;aAClC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YAC1E,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YAC3E,IAAI,SAAS,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACnG,6FAA6F;QACjG,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
-- {§worker-external-reference} A bound statement admits the entire allocation, or nothing.
|
|
2
|
+
-- INIT: worker_reference_allocate
|
|
3
|
+
DROP TRIGGER IF EXISTS worker_reference_allocate;
|
|
4
|
+
CREATE TRIGGER worker_reference_allocate
|
|
5
|
+
INSTEAD OF INSERT ON worker_reference_allocations
|
|
6
|
+
BEGIN
|
|
7
|
+
INSERT INTO workspaces (name) VALUES (NEW.workspace_name);
|
|
8
|
+
INSERT INTO workers (workspace_id, name, origin)
|
|
9
|
+
SELECT id, NEW.worker_name, 'model' FROM workspaces WHERE name = NEW.workspace_name;
|
|
10
|
+
INSERT INTO worker_references (namespace, reference, worker_id)
|
|
11
|
+
SELECT NEW.namespace, NEW.reference, w.id
|
|
12
|
+
FROM workers w JOIN workspaces s ON s.id = w.workspace_id
|
|
13
|
+
WHERE s.name = NEW.workspace_name AND w.name = NEW.worker_name;
|
|
14
|
+
END;
|
|
15
|
+
|
|
16
|
+
-- PREP: worker_reference_allocate
|
|
17
|
+
INSERT INTO worker_reference_allocations (namespace, reference, workspace_name, worker_name)
|
|
18
|
+
SELECT $namespace, $reference, $workspace_name, $worker_name
|
|
19
|
+
WHERE NOT EXISTS (SELECT 1 FROM worker_references WHERE namespace = $namespace AND reference = $reference)
|
|
20
|
+
AND NOT EXISTS (SELECT 1 FROM workspaces WHERE name = $workspace_name)
|
|
21
|
+
RETURNING namespace, reference;
|
|
22
|
+
|
|
23
|
+
-- PREP: worker_reference_read
|
|
24
|
+
SELECT w.workspace_id AS workspaceId, w.id AS workerId
|
|
25
|
+
FROM worker_references r JOIN workers w ON w.id = r.worker_id
|
|
26
|
+
WHERE r.namespace = $namespace AND r.reference = $reference;
|
|
27
|
+
|
|
28
|
+
-- PREP: worker_reference_list
|
|
29
|
+
SELECT reference FROM worker_references
|
|
30
|
+
WHERE namespace = $namespace AND worker_id = $worker_id
|
|
31
|
+
ORDER BY reference;
|
|
@@ -12,10 +12,12 @@ export declare const workspaceCapabilityPolicy: (env?: NodeJS.ProcessEnv) => Wor
|
|
|
12
12
|
export default class WorkspaceCapabilities {
|
|
13
13
|
#private;
|
|
14
14
|
constructor(policy: WorkspaceCapabilityPolicy, callbacks: WorkspaceCapabilityCallbacks);
|
|
15
|
+
get signal(): AbortSignal;
|
|
15
16
|
acquire(workspaceId: number): Promise<WorkspaceCapabilityRelease>;
|
|
16
17
|
retain(workspaceId: number): WorkspaceCapabilityRelease;
|
|
17
18
|
activeWorkspaceIds(): number[];
|
|
18
19
|
isActive(workspaceId: number): boolean;
|
|
19
20
|
beginStop(): void;
|
|
21
|
+
settle(): Promise<void>;
|
|
20
22
|
}
|
|
21
23
|
//# sourceMappingURL=WorkspaceCapabilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceCapabilities.d.ts","sourceRoot":"","sources":["../../src/server/WorkspaceCapabilities.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC;AAEpD,MAAM,WAAW,yBAAyB;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAClE;AAwBD,eAAO,MAAM,yBAAyB,SAC7B,MAAM,CAAC,UAAU,KACvB,yBAGD,CAAC;AAKH,MAAM,CAAC,OAAO,OAAO,qBAAqB;;
|
|
1
|
+
{"version":3,"file":"WorkspaceCapabilities.d.ts","sourceRoot":"","sources":["../../src/server/WorkspaceCapabilities.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC;AAEpD,MAAM,WAAW,yBAAyB;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAClE;AAwBD,eAAO,MAAM,yBAAyB,SAC7B,MAAM,CAAC,UAAU,KACvB,yBAGD,CAAC;AAKH,MAAM,CAAC,OAAO,OAAO,qBAAqB;;IAUtC,YACI,MAAM,EAAE,yBAAyB,EACjC,SAAS,EAAE,4BAA4B,EAM1C;IAED,IAAI,MAAM,IAAI,WAAW,CAAkC;IAErD,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,CA2BtE;IAED,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,0BAA0B,CAUtD;IAED,kBAAkB,IAAI,MAAM,EAAE,CAK7B;IAED,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAErC;IAED,SAAS,IAAI,IAAI,CAMhB;IAGK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAK5B;CAqIJ"}
|
|
@@ -21,23 +21,23 @@ export default class WorkspaceCapabilities {
|
|
|
21
21
|
#report;
|
|
22
22
|
#states = new Map();
|
|
23
23
|
#idleSequence = 0;
|
|
24
|
-
#
|
|
24
|
+
#lifetime = new AbortController();
|
|
25
|
+
#stopping = null;
|
|
25
26
|
constructor(policy, callbacks) {
|
|
26
27
|
this.#policy = policy;
|
|
27
28
|
this.#activate = callbacks.activate;
|
|
28
29
|
this.#deactivate = callbacks.deactivate;
|
|
29
30
|
this.#report = callbacks.report;
|
|
30
31
|
}
|
|
32
|
+
get signal() { return this.#lifetime.signal; }
|
|
31
33
|
async acquire(workspaceId) {
|
|
32
34
|
WorkspaceCapabilities.#assertWorkspaceId(workspaceId);
|
|
33
|
-
|
|
34
|
-
throw new Error("Workspace Functionality is stopping.");
|
|
35
|
+
this.signal.throwIfAborted();
|
|
35
36
|
for (;;) {
|
|
36
37
|
const current = this.#states.get(workspaceId);
|
|
37
38
|
if (current?.phase === "cooling") {
|
|
38
39
|
await current.transition;
|
|
39
|
-
|
|
40
|
-
throw new Error("Workspace Functionality is stopping.");
|
|
40
|
+
this.signal.throwIfAborted();
|
|
41
41
|
continue;
|
|
42
42
|
}
|
|
43
43
|
const state = current ?? this.#beginActivation(workspaceId);
|
|
@@ -50,17 +50,16 @@ export default class WorkspaceCapabilities {
|
|
|
50
50
|
this.#release(state);
|
|
51
51
|
throw cause;
|
|
52
52
|
}
|
|
53
|
-
if (this
|
|
53
|
+
if (this.signal.aborted) {
|
|
54
54
|
this.#release(state);
|
|
55
|
-
|
|
55
|
+
this.signal.throwIfAborted();
|
|
56
56
|
}
|
|
57
57
|
return this.#releaseOnce(state);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
retain(workspaceId) {
|
|
61
61
|
WorkspaceCapabilities.#assertWorkspaceId(workspaceId);
|
|
62
|
-
|
|
63
|
-
throw new Error("Workspace Functionality is stopping.");
|
|
62
|
+
this.signal.throwIfAborted();
|
|
64
63
|
const state = this.#states.get(workspaceId);
|
|
65
64
|
if (state === undefined || state.phase === "cooling") {
|
|
66
65
|
throw new Error(`Workspace ${workspaceId} Functionality is not resident.`);
|
|
@@ -79,11 +78,22 @@ export default class WorkspaceCapabilities {
|
|
|
79
78
|
return this.#states.get(workspaceId)?.phase === "active";
|
|
80
79
|
}
|
|
81
80
|
beginStop() {
|
|
82
|
-
if (this
|
|
81
|
+
if (this.signal.aborted)
|
|
83
82
|
return;
|
|
84
|
-
this.#stopping
|
|
83
|
+
this.#lifetime.abort(new DOMException("Workspace Functionality is stopping.", "AbortError"));
|
|
85
84
|
for (const state of this.#states.values())
|
|
86
85
|
this.#cancelIdle(state);
|
|
86
|
+
// Capture before completed/failed transitions leave the residency map.
|
|
87
|
+
this.#stopping = Promise.allSettled([...this.#states.values()].flatMap(({ transition }) => transition === null ? [] : [transition]));
|
|
88
|
+
}
|
|
89
|
+
// {§module-shutdown-order} A rejected workspace cannot short-circuit another workspace's cleanup.
|
|
90
|
+
async settle() {
|
|
91
|
+
if (this.#stopping === null)
|
|
92
|
+
throw new Error("Workspace Functionality settlement requires beginStop.");
|
|
93
|
+
const results = await this.#stopping;
|
|
94
|
+
const errors = results.flatMap((result) => result.status === "rejected" && result.reason !== this.signal.reason ? [result.reason] : []);
|
|
95
|
+
if (errors.length > 0)
|
|
96
|
+
throw new AggregateError(errors, "Workspace Functionality shutdown failed");
|
|
87
97
|
}
|
|
88
98
|
static #assertWorkspaceId(workspaceId) {
|
|
89
99
|
if (!Number.isSafeInteger(workspaceId) || workspaceId < 1) {
|
|
@@ -135,12 +145,12 @@ export default class WorkspaceCapabilities {
|
|
|
135
145
|
if (state.leases === 0
|
|
136
146
|
&& state.phase === "active"
|
|
137
147
|
&& this.#states.get(state.workspaceId) === state
|
|
138
|
-
&& !this
|
|
148
|
+
&& !this.signal.aborted) {
|
|
139
149
|
this.#markIdle(state);
|
|
140
150
|
}
|
|
141
151
|
}
|
|
142
152
|
#markIdle(state) {
|
|
143
|
-
if (state.phase !== "active" || state.leases !== 0 || this
|
|
153
|
+
if (state.phase !== "active" || state.leases !== 0 || this.signal.aborted)
|
|
144
154
|
return;
|
|
145
155
|
this.#cancelIdle(state);
|
|
146
156
|
state.idleOrder = ++this.#idleSequence;
|
|
@@ -149,7 +159,7 @@ export default class WorkspaceCapabilities {
|
|
|
149
159
|
}
|
|
150
160
|
// {§operator-config-worker-warm} — negative never cools by time, zero cools at once, otherwise after the delay.
|
|
151
161
|
#scheduleCooling(state, delayMs) {
|
|
152
|
-
if (delayMs < 0 || state.phase !== "active" || state.leases !== 0 || this
|
|
162
|
+
if (delayMs < 0 || state.phase !== "active" || state.leases !== 0 || this.signal.aborted)
|
|
153
163
|
return;
|
|
154
164
|
if (delayMs === 0) {
|
|
155
165
|
queueMicrotask(() => { void this.#cool(state); });
|
|
@@ -162,7 +172,7 @@ export default class WorkspaceCapabilities {
|
|
|
162
172
|
state.timer.unref();
|
|
163
173
|
}
|
|
164
174
|
#enforceWarmMaximum() {
|
|
165
|
-
if (this.#policy.warmMax < 0 || this
|
|
175
|
+
if (this.#policy.warmMax < 0 || this.signal.aborted)
|
|
166
176
|
return;
|
|
167
177
|
const idle = [...this.#states.values()]
|
|
168
178
|
.filter((state) => state.phase === "active" && state.leases === 0)
|
|
@@ -172,7 +182,7 @@ export default class WorkspaceCapabilities {
|
|
|
172
182
|
}
|
|
173
183
|
}
|
|
174
184
|
async #cool(state) {
|
|
175
|
-
if (this
|
|
185
|
+
if (this.signal.aborted
|
|
176
186
|
|| state.phase !== "active"
|
|
177
187
|
|| state.leases !== 0
|
|
178
188
|
|| this.#states.get(state.workspaceId) !== state)
|
|
@@ -199,11 +209,18 @@ export default class WorkspaceCapabilities {
|
|
|
199
209
|
state.phase = "active";
|
|
200
210
|
state.transition = null;
|
|
201
211
|
state.idleOrder = ++this.#idleSequence;
|
|
202
|
-
this.#report(state.workspaceId, cause);
|
|
203
212
|
this.#scheduleCooling(state, COOLING_RETRY_MS);
|
|
213
|
+
throw cause;
|
|
204
214
|
});
|
|
205
215
|
state.transition = transition;
|
|
206
|
-
|
|
216
|
+
try {
|
|
217
|
+
await transition;
|
|
218
|
+
}
|
|
219
|
+
catch (cause) {
|
|
220
|
+
// During stop the captured transition reports through the shutdown aggregate.
|
|
221
|
+
if (!this.signal.aborted)
|
|
222
|
+
this.#report(state.workspaceId, cause);
|
|
223
|
+
}
|
|
207
224
|
}
|
|
208
225
|
#cancelIdle(state) {
|
|
209
226
|
if (state.timer !== null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceCapabilities.js","sourceRoot":"","sources":["../../src/server/WorkspaceCapabilities.ts"],"names":[],"mappings":"AAwBA,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,MAAM,SAAS,GAAG,CAAC,GAAsB,EAAE,IAAY,EAAU,EAAE;IAC/D,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,mDAAmD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACrC,GAAG,GAAsB,OAAO,CAAC,GAAG,EACX,EAAE,CAAC,CAAC;IAC7B,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,kCAAkC,CAAC;IAC1D,OAAO,EAAE,SAAS,CAAC,GAAG,EAAE,mCAAmC,CAAC;CAC/D,CAAC,CAAC;AAEH,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAC7B,OAAO,CAA4B;IACnC,SAAS,CAA2C;IACpD,WAAW,CAA6C;IACxD,OAAO,CAAyC;IAChD,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC/D,aAAa,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkspaceCapabilities.js","sourceRoot":"","sources":["../../src/server/WorkspaceCapabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// roots this daemon reads ({§agent-roots}) in precedence order, each plugin with the PLUGIN_DATA
|
|
3
3
|
// directory its subprocesses receive.
|
|
4
4
|
import { createHash } from "node:crypto";
|
|
5
|
+
import HostPaths from "../core/HostPaths.js";
|
|
5
6
|
import PluginSources from "./PluginSources.js";
|
|
6
7
|
import { join } from "node:path";
|
|
7
8
|
import ConfigurationDiagnostics from "./ConfigurationDiagnostics.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspacePlugins.js","sourceRoot":"","sources":["../../src/server/WorkspacePlugins.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,iGAAiG;AACjG,sCAAsC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkspacePlugins.js","sourceRoot":"","sources":["../../src/server/WorkspacePlugins.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,iGAAiG;AACjG,sCAAsC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAE7C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AAErE,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACxB,GAAG,CAAK;IACR,UAAU,CAAY;IACtB,YAAY,CAAS;IACrB,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEzD,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAE7E;QACG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,WAAmB;QAC1B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAkC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAClH,MAAM,WAAW,GAAG,SAAS,EAAE,YAAY,IAAI,IAAI,CAAC;QACpD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC;YAC9E,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY;SAC1E,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,wBAAwB,EAAE,CAAC;QACnD,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,mBAAmB;YAAE,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAmB,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACpJ,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACnF,MAAM,CAAC,KAAK;YACZ,MAAM,CAAC,IAAI;YACX,MAAM,CAAC,QAAQ;YACf,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;YAC1D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACzE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,WAAmB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;CAEJ"}
|
|
@@ -20,8 +20,10 @@ export default class WorkspaceResidency {
|
|
|
20
20
|
normalizeRuntime: (registration: RuntimeRegistration) => NormalizedRuntime;
|
|
21
21
|
});
|
|
22
22
|
get published(): boolean;
|
|
23
|
+
get signal(): AbortSignal;
|
|
23
24
|
publish(): void;
|
|
24
25
|
beginStop(): void;
|
|
26
|
+
settle(): Promise<void>;
|
|
25
27
|
activeWorkspaceIds(): number[];
|
|
26
28
|
isActive(workspaceId: number): boolean;
|
|
27
29
|
retain(workspaceId: number): WorkspaceCapabilityRelease;
|
|
@@ -34,7 +36,7 @@ export default class WorkspaceResidency {
|
|
|
34
36
|
reconcile(workspaceId: number): Promise<void>;
|
|
35
37
|
rematerializeActive(): Promise<void>;
|
|
36
38
|
replace({ workspaceId, namespaceOwner, state, runtimes, }: WorkspaceCapabilityReplacement, options?: WorkspaceCapabilityPublication): Promise<void>;
|
|
37
|
-
exclusively<T>(workspaceId: number, namespaceOwner: string, mode: WorkspaceCapabilityGate, run: () => Promise<T
|
|
39
|
+
exclusively<T>(workspaceId: number, namespaceOwner: string, mode: WorkspaceCapabilityGate, run: () => Promise<T>, signal?: AbortSignal): Promise<T>;
|
|
38
40
|
}
|
|
39
41
|
export {};
|
|
40
42
|
//# sourceMappingURL=WorkspaceResidency.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceResidency.d.ts","sourceRoot":"","sources":["../../src/server/WorkspaceResidency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAA8B,EAE1B,KAAK,0BAA0B,EAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACR,2BAA2B,EAC3B,uBAAuB,EAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EACR,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EACjC,MAAM,iBAAiB,CAAC;AASzB,KAAK,iBAAiB,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;CACzC,CAAC;AAGF,MAAM,CAAC,OAAO,OAAO,kBAAkB;;IASnC,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE;QACzD,EAAE,EAAE,EAAE,CAAC;QACP,MAAM,EAAE,MAAM,MAAM,CAAC;QACrB,aAAa,EAAE,aAAa,CAAC;QAC7B,gBAAgB,EAAE,CAAC,YAAY,EAAE,mBAAmB,KAAK,iBAAiB,CAAC;KAC9E,EAYA;IAED,IAAI,SAAS,IAAI,OAAO,CAA4B;IACpD,OAAO,IAAI,IAAI,CAA4B;IAC3C,SAAS,IAAI,IAAI,CAAoC;IACrD,kBAAkB,IAAI,MAAM,EAAE,CAAoD;IAClF,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAqD;IAC3F,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,0BAA0B,CAAmD;IAE1G,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAOpF;IAEK,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAQxE;IAEK,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAGtE;
|
|
1
|
+
{"version":3,"file":"WorkspaceResidency.d.ts","sourceRoot":"","sources":["../../src/server/WorkspaceResidency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAA8B,EAE1B,KAAK,0BAA0B,EAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACR,2BAA2B,EAC3B,uBAAuB,EAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EACR,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EACjC,MAAM,iBAAiB,CAAC;AASzB,KAAK,iBAAiB,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;CACzC,CAAC;AAGF,MAAM,CAAC,OAAO,OAAO,kBAAkB;;IASnC,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE;QACzD,EAAE,EAAE,EAAE,CAAC;QACP,MAAM,EAAE,MAAM,MAAM,CAAC;QACrB,aAAa,EAAE,aAAa,CAAC;QAC7B,gBAAgB,EAAE,CAAC,YAAY,EAAE,mBAAmB,KAAK,iBAAiB,CAAC;KAC9E,EAYA;IAED,IAAI,SAAS,IAAI,OAAO,CAA4B;IACpD,IAAI,MAAM,IAAI,WAAW,CAAsC;IAC/D,OAAO,IAAI,IAAI,CAA4B;IAC3C,SAAS,IAAI,IAAI,CAAoC;IACrD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAwC;IAC/D,kBAAkB,IAAI,MAAM,EAAE,CAAoD;IAClF,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAqD;IAC3F,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,0BAA0B,CAAmD;IAE1G,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAOpF;IAEK,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAQxE;IAEK,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAGtE;IAmDK,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAO1F;IAKK,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAM7F;IAKK,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAa7G;IAEK,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElD;IAOK,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEzC;IAEK,OAAO,CAAC,EACV,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,GAC/C,EAAE,8BAA8B,EAAE,OAAO,GAAE,8BAAmC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD9F;IAEK,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAiBxJ;CACJ"}
|
|
@@ -26,8 +26,10 @@ export default class WorkspaceResidency {
|
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
28
|
get published() { return this.#published; }
|
|
29
|
+
get signal() { return this.#capabilities.signal; }
|
|
29
30
|
publish() { this.#published = true; }
|
|
30
31
|
beginStop() { this.#capabilities.beginStop(); }
|
|
32
|
+
settle() { return this.#capabilities.settle(); }
|
|
31
33
|
activeWorkspaceIds() { return this.#capabilities.activeWorkspaceIds(); }
|
|
32
34
|
isActive(workspaceId) { return this.#capabilities.isActive(workspaceId); }
|
|
33
35
|
retain(workspaceId) { return this.#capabilities.retain(workspaceId); }
|
|
@@ -49,15 +51,19 @@ export default class WorkspaceResidency {
|
|
|
49
51
|
return { workspaceId: id };
|
|
50
52
|
}
|
|
51
53
|
async acquire(workspaceId) {
|
|
52
|
-
|
|
53
|
-
return this.#capabilities.acquire(
|
|
54
|
+
// Admission precedes the first database read; validation is part of the owned activation.
|
|
55
|
+
return this.#capabilities.acquire(ClientInput.assertId("workspace Functionality", "workspaceId", workspaceId));
|
|
54
56
|
}
|
|
55
57
|
async #activate(workspaceId) {
|
|
58
|
+
this.signal.throwIfAborted();
|
|
56
59
|
const identity = await this.identity(workspaceId);
|
|
57
60
|
try {
|
|
58
61
|
const context = { ...identity, retain: () => this.#capabilities.retain(workspaceId) };
|
|
59
|
-
for (const provider of this.#providers.values())
|
|
62
|
+
for (const provider of this.#providers.values()) {
|
|
63
|
+
this.signal.throwIfAborted();
|
|
60
64
|
await provider.activate(context);
|
|
65
|
+
}
|
|
66
|
+
this.signal.throwIfAborted();
|
|
61
67
|
await this.#rematerialize(workspaceId);
|
|
62
68
|
}
|
|
63
69
|
catch (cause) {
|
|
@@ -207,15 +213,16 @@ export default class WorkspaceResidency {
|
|
|
207
213
|
}
|
|
208
214
|
});
|
|
209
215
|
}
|
|
210
|
-
async exclusively(workspaceId, namespaceOwner, mode, run) {
|
|
216
|
+
async exclusively(workspaceId, namespaceOwner, mode, run, signal) {
|
|
211
217
|
await this.identity(workspaceId);
|
|
212
218
|
const gate = mode === "none" ? undefined : mode === "wait"
|
|
213
|
-
? this.#workspaceGate.requestExclusive(workspaceId)
|
|
219
|
+
? this.#workspaceGate.requestExclusive(workspaceId, signal)
|
|
214
220
|
: this.#workspaceGate.tryExclusive(workspaceId);
|
|
215
221
|
if (gate === null)
|
|
216
222
|
throw residencyFailure("workspace-busy", 409, `Workspace ${workspaceId} is running an operation or another capability change.`, { workspaceId, namespaceOwner, recovery: "Settle the current operation and retry the capability change.", retryable: true });
|
|
217
223
|
try {
|
|
218
224
|
await gate?.acquired;
|
|
225
|
+
signal?.throwIfAborted();
|
|
219
226
|
return await run();
|
|
220
227
|
}
|
|
221
228
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceResidency.js","sourceRoot":"","sources":["../../src/server/WorkspaceResidency.ts"],"names":[],"mappings":"AAGA,OAAO,OAAO,EAAE,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,qBAAqB,EAAE,EAC1B,yBAAyB,GAE5B,MAAM,4BAA4B,CAAC;AAYpC,MAAM,gBAAgB,GAAG,CACrB,IAAY,EAAE,MAAc,EAAE,MAAc,EAC5C,UAAU,GAAsC,EAAE,EAC7B,EAAE,CAAC,IAAI,qBAAqB,CACjD,OAAO,CAAC,OAAO,CAAC,gCAAgC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,CAAC,CAC1F,CAAC;AAQF,+DAA+D;AAC/D,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAC1B,GAAG,CAAK;IACR,OAAO,CAAe;IACtB,cAAc,CAAgB;IAC9B,iBAAiB,CAA2D;IAC5E,UAAU,GAAG,IAAI,GAAG,EAAuC,CAAC;IAC5D,aAAa,CAAwB;IAC9C,UAAU,GAAG,KAAK,CAAC;IAEnB,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAKxD;QACG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,qBAAqB,CAAC,yBAAyB,EAAE,EAAE;YACxE,QAAQ,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;YACtD,UAAU,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;YAC1D,MAAM,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;gBAC3B,OAAO,CAAC,KAAK,CAAC,aAAa,WAAW,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACnF,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,IAAI,SAAS,KAAc,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpD,OAAO,KAAW,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;IAC3C,SAAS,KAAW,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACrD,kBAAkB,KAAe,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAClF,QAAQ,CAAC,WAAmB,IAAa,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,CAAC,WAAmB,IAAgC,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE1G,gBAAgB,CAAC,cAAsB,EAAE,QAAqC;QAC1E,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QACjI,IAAI,OAAO,QAAQ,EAAE,QAAQ,KAAK,UAAU,IAAI,OAAO,QAAQ,EAAE,UAAU,KAAK,UAAU,EAAE,CAAC;YACzF,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,cAAc,yBAAyB,CAAC,CAAC;QACvI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAmB;QAC9B,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,yBAAyB,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QACvF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,SAAS,KAAK,SAAS;YAAE,MAAM,gBAAgB,CAC/C,qBAAqB,EAAE,GAAG,EAAE,aAAa,EAAE,kBAAkB,EAC7D,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CACxC,CAAC;QACF,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAmB;QAC7B,
|
|
1
|
+
{"version":3,"file":"WorkspaceResidency.js","sourceRoot":"","sources":["../../src/server/WorkspaceResidency.ts"],"names":[],"mappings":"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"}
|