@plurnk/plurnk-service 1.14.2 → 1.16.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 +2 -2
- package/SPEC.md +243 -173
- package/digest-sql/curation/curation.sql +1 -1
- package/dist/build-info.json +1 -1
- package/dist/content/byte-view.d.ts +14 -0
- package/dist/content/byte-view.d.ts.map +1 -0
- package/dist/content/byte-view.js +33 -0
- package/dist/content/byte-view.js.map +1 -0
- package/dist/content/edit-receipt.d.ts.map +1 -1
- package/dist/content/edit-receipt.js +12 -1
- package/dist/content/edit-receipt.js.map +1 -1
- package/dist/content/line-marker.d.ts +2 -1
- package/dist/content/line-marker.d.ts.map +1 -1
- package/dist/content/line-marker.js +1 -0
- package/dist/content/line-marker.js.map +1 -1
- package/dist/content/matcher.d.ts +1 -0
- package/dist/content/matcher.d.ts.map +1 -1
- package/dist/content/matcher.js +1 -0
- package/dist/content/matcher.js.map +1 -1
- package/dist/content/read-projector.d.ts +4 -1
- package/dist/content/read-projector.d.ts.map +1 -1
- package/dist/content/read-projector.js +80 -3
- package/dist/content/read-projector.js.map +1 -1
- package/dist/core/AdmittedTurnExecutor.d.ts +43 -0
- package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -0
- package/dist/core/AdmittedTurnExecutor.js +245 -0
- package/dist/core/AdmittedTurnExecutor.js.map +1 -0
- package/dist/core/BareBatchRunner.d.ts +26 -0
- package/dist/core/BareBatchRunner.d.ts.map +1 -0
- package/dist/core/BareBatchRunner.js +104 -0
- package/dist/core/BareBatchRunner.js.map +1 -0
- package/dist/core/BudgetReadout.d.ts +1 -1
- package/dist/core/BudgetReadout.d.ts.map +1 -1
- package/dist/core/BudgetReadout.js +42 -47
- package/dist/core/BudgetReadout.js.map +1 -1
- package/dist/core/CapabilityResolver.d.ts +2 -1
- package/dist/core/CapabilityResolver.d.ts.map +1 -1
- package/dist/core/CapabilityResolver.js +8 -9
- package/dist/core/CapabilityResolver.js.map +1 -1
- package/dist/core/ChannelWrite.d.ts +1 -1
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/DataStatementRunner.d.ts +35 -0
- package/dist/core/DataStatementRunner.d.ts.map +1 -0
- package/dist/core/DataStatementRunner.js +252 -0
- package/dist/core/DataStatementRunner.js.map +1 -0
- package/dist/core/Dispatcher.d.ts +8 -3
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +88 -738
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/EditMutations.d.ts +39 -0
- package/dist/core/EditMutations.d.ts.map +1 -0
- package/dist/core/EditMutations.js +418 -0
- package/dist/core/EditMutations.js.map +1 -0
- package/dist/core/Engine.d.ts +2 -23
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +18 -240
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/Engine.sql +24 -23
- package/dist/core/KillHandler.d.ts +32 -0
- package/dist/core/KillHandler.d.ts.map +1 -0
- package/dist/core/KillHandler.js +179 -0
- package/dist/core/KillHandler.js.map +1 -0
- package/dist/core/LogVisibility.d.ts +1 -1
- package/dist/core/LogVisibility.d.ts.map +1 -1
- package/dist/core/LogVisibility.js +3 -4
- package/dist/core/LogVisibility.js.map +1 -1
- package/dist/core/LogWriter.d.ts +42 -0
- package/dist/core/LogWriter.d.ts.map +1 -0
- package/dist/core/LogWriter.js +136 -0
- package/dist/core/LogWriter.js.map +1 -0
- package/dist/core/LoopDriver.d.ts +46 -0
- package/dist/core/LoopDriver.d.ts.map +1 -0
- package/dist/core/LoopDriver.js +263 -0
- package/dist/core/LoopDriver.js.map +1 -0
- package/dist/core/LoopLifecycle.d.ts +2 -1
- package/dist/core/LoopLifecycle.d.ts.map +1 -1
- package/dist/core/MembershipMaterialization.d.ts +7 -0
- package/dist/core/MembershipMaterialization.d.ts.map +1 -0
- package/dist/core/MembershipMaterialization.js +283 -0
- package/dist/core/MembershipMaterialization.js.map +1 -0
- package/dist/core/MutationEffects.d.ts +29 -0
- package/dist/core/MutationEffects.d.ts.map +1 -0
- package/dist/core/MutationEffects.js +318 -0
- package/dist/core/MutationEffects.js.map +1 -0
- package/dist/core/OverflowTurn.d.ts +4 -4
- package/dist/core/OverflowTurn.d.ts.map +1 -1
- package/dist/core/OverflowTurn.js +6 -7
- package/dist/core/OverflowTurn.js.map +1 -1
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +31 -9
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/ResourceMutations.d.ts +12 -36
- package/dist/core/ResourceMutations.d.ts.map +1 -1
- package/dist/core/ResourceMutations.js +27 -1351
- package/dist/core/ResourceMutations.js.map +1 -1
- package/dist/core/ResourceSelector.d.ts +21 -0
- package/dist/core/ResourceSelector.d.ts.map +1 -0
- package/dist/core/ResourceSelector.js +233 -0
- package/dist/core/ResourceSelector.js.map +1 -0
- package/dist/core/ResourceTransfers.d.ts +55 -0
- package/dist/core/ResourceTransfers.d.ts.map +1 -0
- package/dist/core/ResourceTransfers.js +525 -0
- package/dist/core/ResourceTransfers.js.map +1 -0
- package/dist/core/SchemeRegistry.js +2 -2
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/SendBroadcastHandler.d.ts +40 -0
- package/dist/core/SendBroadcastHandler.d.ts.map +1 -0
- package/dist/core/SendBroadcastHandler.js +159 -0
- package/dist/core/SendBroadcastHandler.js.map +1 -0
- package/dist/core/StoredPacket.d.ts +11 -0
- package/dist/core/StoredPacket.d.ts.map +1 -1
- package/dist/core/StoredPacket.js +22 -1
- package/dist/core/StoredPacket.js.map +1 -1
- package/dist/core/StrikeRail.d.ts.map +1 -1
- package/dist/core/StrikeRail.js +19 -9
- package/dist/core/StrikeRail.js.map +1 -1
- package/dist/core/TokenCalibration.d.ts +16 -0
- package/dist/core/TokenCalibration.d.ts.map +1 -0
- package/dist/core/TokenCalibration.js +35 -0
- package/dist/core/TokenCalibration.js.map +1 -0
- package/dist/core/ToolResources.d.ts.map +1 -1
- package/dist/core/ToolResources.js +15 -12
- package/dist/core/ToolResources.js.map +1 -1
- package/dist/core/TurnMaterialization.d.ts +37 -0
- package/dist/core/TurnMaterialization.d.ts.map +1 -0
- package/dist/core/TurnMaterialization.js +296 -0
- package/dist/core/TurnMaterialization.js.map +1 -0
- package/dist/core/TurnOps.d.ts.map +1 -1
- package/dist/core/TurnOps.js +6 -8
- package/dist/core/TurnOps.js.map +1 -1
- package/dist/core/TurnRunner.d.ts +15 -27
- package/dist/core/TurnRunner.d.ts.map +1 -1
- package/dist/core/TurnRunner.js +76 -670
- package/dist/core/TurnRunner.js.map +1 -1
- package/dist/core/WorkerControlHandler.d.ts +15 -0
- package/dist/core/WorkerControlHandler.d.ts.map +1 -0
- package/dist/core/WorkerControlHandler.js +89 -0
- package/dist/core/WorkerControlHandler.js.map +1 -0
- package/dist/core/attachments.d.ts +14 -0
- package/dist/core/attachments.d.ts.map +1 -0
- package/dist/core/attachments.js +18 -0
- package/dist/core/attachments.js.map +1 -0
- package/dist/core/fork.d.ts.map +1 -1
- package/dist/core/fork.js +0 -4
- package/dist/core/fork.js.map +1 -1
- package/dist/core/fork.sql +5 -16
- package/dist/core/git-membership.d.ts +15 -0
- package/dist/core/git-membership.d.ts.map +1 -1
- package/dist/core/git-membership.js +4 -273
- package/dist/core/git-membership.js.map +1 -1
- package/dist/core/git-state.d.ts +2 -1
- package/dist/core/git-state.d.ts.map +1 -1
- package/dist/core/mutation-types.d.ts +102 -0
- package/dist/core/mutation-types.d.ts.map +1 -0
- package/dist/core/mutation-types.js +2 -0
- package/dist/core/mutation-types.js.map +1 -0
- package/dist/core/operation-target-groups.js +1 -1
- package/dist/core/operation-target-groups.js.map +1 -1
- package/dist/core/packet-wire.d.ts +7 -6
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +96 -68
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/plurnk-uri.d.ts +0 -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/statement-primary.d.ts +4 -0
- package/dist/core/statement-primary.d.ts.map +1 -0
- package/dist/core/statement-primary.js +3 -0
- package/dist/core/statement-primary.js.map +1 -0
- package/dist/core/teaching-corpus.d.ts +0 -1
- package/dist/core/teaching-corpus.d.ts.map +1 -1
- package/dist/core/teaching-corpus.js +0 -9
- package/dist/core/teaching-corpus.js.map +1 -1
- package/dist/core/turn-scheduler.js +3 -3
- package/dist/core/turn-scheduler.js.map +1 -1
- package/dist/core/turn-signals.d.ts +15 -0
- package/dist/core/turn-signals.d.ts.map +1 -0
- package/dist/core/turn-signals.js +19 -0
- package/dist/core/turn-signals.js.map +1 -0
- package/dist/core/worker-settings.d.ts +0 -1
- package/dist/core/worker-settings.d.ts.map +1 -1
- package/dist/core/worker-settings.js +1 -1
- package/dist/core/worker-settings.js.map +1 -1
- package/dist/digest/Digest.d.ts +3 -16
- package/dist/digest/Digest.d.ts.map +1 -1
- package/dist/digest/Digest.js +10 -958
- package/dist/digest/Digest.js.map +1 -1
- package/dist/digest/DigestRender.d.ts +12 -0
- package/dist/digest/DigestRender.d.ts.map +1 -0
- package/dist/digest/DigestRender.js +641 -0
- package/dist/digest/DigestRender.js.map +1 -0
- package/dist/digest/DigestRequiem.d.ts +13 -0
- package/dist/digest/DigestRequiem.d.ts.map +1 -0
- package/dist/digest/DigestRequiem.js +332 -0
- package/dist/digest/DigestRequiem.js.map +1 -0
- package/dist/digest/digest-rows.d.ts +303 -0
- package/dist/digest/digest-rows.d.ts.map +1 -0
- package/dist/digest/digest-rows.js +2 -0
- package/dist/digest/digest-rows.js.map +1 -0
- package/dist/digest/digest.sql +1 -7
- package/dist/observe/api.d.ts +0 -2
- package/dist/observe/api.d.ts.map +1 -1
- package/dist/observe/api.js +2 -2
- package/dist/observe/api.js.map +1 -1
- package/dist/observe/metrics.d.ts +0 -1
- package/dist/observe/metrics.d.ts.map +1 -1
- package/dist/observe/metrics.js +0 -1
- package/dist/observe/metrics.js.map +1 -1
- package/dist/schemes/Exec.d.ts +4 -1
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +89 -48
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/ExecOutputScheme.d.ts +2 -1
- package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
- package/dist/schemes/ExecOutputScheme.js +3 -3
- package/dist/schemes/ExecOutputScheme.js.map +1 -1
- package/dist/schemes/File.d.ts +4 -1
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +100 -13
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts +4 -5
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +26 -118
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Log.sql +1 -66
- package/dist/schemes/Prompt.js +1 -1
- package/dist/schemes/Prompt.js.map +1 -1
- package/dist/schemes/Worker.d.ts.map +1 -1
- package/dist/schemes/Worker.js +1 -13
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/schemes/_entry-crud.d.ts +3 -1
- package/dist/schemes/_entry-crud.d.ts.map +1 -1
- package/dist/schemes/_entry-crud.js +18 -3
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-find.d.ts +4 -2
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +79 -10
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-manifest.d.ts +1 -2
- package/dist/schemes/_entry-manifest.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.d.ts +2 -1
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +20 -2
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_entry-semantic.d.ts +1 -0
- package/dist/schemes/_entry-semantic.d.ts.map +1 -1
- package/dist/schemes/_entry-semantic.js +3 -0
- package/dist/schemes/_entry-semantic.js.map +1 -1
- package/dist/schemes/_entry-semantic.sql +2 -2
- package/dist/schemes/_entry-send.d.ts +0 -1
- package/dist/schemes/_entry-send.d.ts.map +1 -1
- package/dist/schemes/_entry-send.js +5 -80
- package/dist/schemes/_entry-send.js.map +1 -1
- package/dist/schemes/exec-runtime.d.ts +7 -0
- package/dist/schemes/exec-runtime.d.ts.map +1 -0
- package/dist/schemes/exec-runtime.js +2 -0
- package/dist/schemes/exec-runtime.js.map +1 -0
- package/dist/server/ClientReads.d.ts +34 -0
- package/dist/server/ClientReads.d.ts.map +1 -0
- package/dist/server/ClientReads.js +210 -0
- package/dist/server/ClientReads.js.map +1 -0
- package/dist/server/Daemon.d.ts +12 -22
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +31 -362
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DaemonModule.d.ts +6 -5
- package/dist/server/DaemonModule.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.d.ts +3 -2
- package/dist/server/DrainSupervisor.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.js +7 -3
- package/dist/server/DrainSupervisor.js.map +1 -1
- package/dist/server/Functionality.d.ts +0 -12
- package/dist/server/Functionality.d.ts.map +1 -1
- package/dist/server/Functionality.js.map +1 -1
- package/dist/server/FunctionalityManager.d.ts +0 -1
- package/dist/server/FunctionalityManager.d.ts.map +1 -1
- package/dist/server/FunctionalityManager.js +3 -3
- package/dist/server/FunctionalityManager.js.map +1 -1
- package/dist/server/MembersFunctionality.d.ts +2 -13
- package/dist/server/MembersFunctionality.d.ts.map +1 -1
- package/dist/server/MembersFunctionality.js +4 -4
- package/dist/server/MembersFunctionality.js.map +1 -1
- package/dist/server/SkillsFunctionality.d.ts +1 -7
- package/dist/server/SkillsFunctionality.d.ts.map +1 -1
- package/dist/server/SkillsFunctionality.js +3 -3
- package/dist/server/SkillsFunctionality.js.map +1 -1
- package/dist/server/WorkerModelResolver.d.ts +17 -0
- package/dist/server/WorkerModelResolver.d.ts.map +1 -0
- package/dist/server/WorkerModelResolver.js +166 -0
- package/dist/server/WorkerModelResolver.js.map +1 -0
- package/dist/server/daemon-results.d.ts +5 -0
- package/dist/server/daemon-results.d.ts.map +1 -0
- package/dist/server/daemon-results.js +7 -0
- package/dist/server/daemon-results.js.map +1 -0
- package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
- package/dist/server/dispatch-as-plurnk.js +4 -6
- package/dist/server/dispatch-as-plurnk.js.map +1 -1
- package/dist/server/logEntry.d.ts +0 -1
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +1 -13
- package/dist/server/logEntry.js.map +1 -1
- package/dist/server/logEntry.sql +1 -5
- package/dist/server/loopDocs.d.ts.map +1 -1
- package/dist/server/loopDocs.js +11 -2
- package/dist/server/loopDocs.js.map +1 -1
- package/migrations/001_schema.sql +30 -347
- package/package.json +30 -30
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ResourceSelection } from "@plurnk/plurnk-contracts";
|
|
2
|
+
import { type ScopeNormalization } from "@plurnk/plurnk-schemes";
|
|
3
|
+
import type { ProposalSettlement } from "./ProposalLifecycle.ts";
|
|
4
|
+
import { type EditBatchReceipt, type LineAnchorPrecondition, type ResourceEffect, type ResourceEffectAction } from "../content/index.ts";
|
|
5
|
+
import type { DispatchResult, PreparedEdit, ResourceAddress, AddressedResourceSelection, ResolvedResourceSelection, SelectedSource, DeferredMoveSource, PendingResourceEffect } from "./mutation-types.ts";
|
|
6
|
+
export default class MutationEffects {
|
|
7
|
+
static failure(code: string, status: number, detail: string, fields?: Readonly<Record<string, unknown>>, extensions?: Readonly<Record<string, unknown>>): DispatchResult;
|
|
8
|
+
static isAppendMarker(marker: ResourceSelection["lineMarker"]): boolean;
|
|
9
|
+
static isCompleteAbsentDestinationMarker(marker: ResourceSelection["lineMarker"], content: string): boolean;
|
|
10
|
+
static isDispatchResult(value: AddressedResourceSelection | SelectedSource | DispatchResult): value is DispatchResult;
|
|
11
|
+
static prependScopeNormalizations(result: DispatchResult, scopeNormalizations: ReadonlyArray<ScopeNormalization> | undefined): DispatchResult;
|
|
12
|
+
static mergeLineAnchorPreconditions(...values: ReadonlyArray<LineAnchorPrecondition | null>): LineAnchorPrecondition | null;
|
|
13
|
+
static appliedEffects(result: DispatchResult, pending: readonly PendingResourceEffect[]): DispatchResult;
|
|
14
|
+
static withEditMaterialization(result: DispatchResult, receipt: EditBatchReceipt): DispatchResult;
|
|
15
|
+
static effectsOf(result: DispatchResult): readonly ResourceEffect[];
|
|
16
|
+
static withCombinedEffects(result: DispatchResult, ...additional: ReadonlyArray<readonly ResourceEffect[]>): DispatchResult;
|
|
17
|
+
static settleProposalEffects(original: DispatchResult, settlement: ProposalSettlement): ProposalSettlement;
|
|
18
|
+
static settlementEffects(settlement: ProposalSettlement): readonly ResourceEffect[];
|
|
19
|
+
static withSettlementEffects(settlement: ProposalSettlement, effects: readonly ResourceEffect[]): ProposalSettlement;
|
|
20
|
+
static resourceAddress(selection: ResourceAddress): string;
|
|
21
|
+
static pendingEffect(selection: ResourceAddress, action: ResourceEffectAction): PendingResourceEffect;
|
|
22
|
+
static withProposalRoute(result: DispatchResult, selection: ResourceAddress): DispatchResult;
|
|
23
|
+
static projectPreparedEdit(prepared: PreparedEdit): Promise<DispatchResult>;
|
|
24
|
+
static finalizeEffects(result: DispatchResult, selection: ResourceAddress, pending: readonly PendingResourceEffect[]): DispatchResult;
|
|
25
|
+
static sameChannel(left: ResourceAddress, right: ResourceAddress): boolean;
|
|
26
|
+
static moveFailureAfterDestination(result: DispatchResult, destination: string, destinationEffects: readonly ResourceEffect[]): DispatchResult;
|
|
27
|
+
static deferredMoveSource(source: ResolvedResourceSelection, destination: ResourceAddress, lineAnchorPrecondition: LineAnchorPrecondition | null): DeferredMoveSource;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=MutationEffects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MutationEffects.d.ts","sourceRoot":"","sources":["../../src/core/MutationEffects.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,EAA+B,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAwF,KAAK,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE/N,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,cAAc,EAAE,kBAAkB,EAAE,qBAAqB,EAA8B,MAAM,qBAAqB,CAAC;AAEvO,MAAM,CAAC,OAAO,OAAO,eAAe;IAChC,MAAM,CAAC,OAAO,CACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,EAC9C,UAAU,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,GACnD,cAAc,CAEhB;IAID,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC,YAAY,CAAC,GAAG,OAAO,CAGtE;IAGD,MAAM,CAAC,iCAAiC,CACpC,MAAM,EAAE,iBAAiB,CAAC,YAAY,CAAC,EACvC,OAAO,EAAE,MAAM,GAChB,OAAO,CAST;IAGD,MAAM,CAAC,gBAAgB,CACnB,KAAK,EAAE,0BAA0B,GAAG,cAAc,GAAG,cAAc,GACpE,KAAK,IAAI,cAAc,CAEzB;IAGD,MAAM,CAAC,0BAA0B,CAC7B,MAAM,EAAE,cAAc,EACtB,mBAAmB,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,SAAS,GACnE,cAAc,CAShB;IAGD,MAAM,CAAC,4BAA4B,CAC/B,GAAG,MAAM,EAAE,aAAa,CAAC,sBAAsB,GAAG,IAAI,CAAC,GACxD,sBAAsB,GAAG,IAAI,CAY/B;IAGD,MAAM,CAAC,cAAc,CACjB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,SAAS,qBAAqB,EAAE,GAC1C,cAAc,CAsEhB;IAOD,MAAM,CAAC,uBAAuB,CAC1B,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,gBAAgB,GAC1B,cAAc,CAkBhB;IAGD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,cAAc,EAAE,CAIlE;IAGD,MAAM,CAAC,mBAAmB,CACtB,MAAM,EAAE,cAAc,EACtB,GAAG,UAAU,EAAE,aAAa,CAAC,SAAS,cAAc,EAAE,CAAC,GACxD,cAAc,CAOhB;IAGD,MAAM,CAAC,qBAAqB,CACxB,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,kBAAkB,GAC/B,kBAAkB,CAqCpB;IAGD,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,cAAc,EAAE,CAIlF;IAGD,MAAM,CAAC,qBAAqB,CACxB,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,SAAS,cAAc,EAAE,GACnC,kBAAkB,CAgBpB;IAGD,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAmBzD;IAGD,MAAM,CAAC,aAAa,CAChB,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,oBAAoB,GAC7B,qBAAqB,CAKvB;IAGD,MAAM,CAAC,iBAAiB,CACpB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,eAAe,GAC3B,cAAc,CAchB;IAGD,OAAa,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CA+BhF;IAGD,MAAM,CAAC,eAAe,CAClB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,SAAS,qBAAqB,EAAE,GAC1C,cAAc,CAUhB;IAGD,MAAM,CAAC,WAAW,CACd,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,eAAe,GACvB,OAAO,CAKT;IAGD,MAAM,CAAC,2BAA2B,CAC9B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,SAAS,cAAc,EAAE,GAC9C,cAAc,CAsBhB;IAGD,MAAM,CAAC,kBAAkB,CACrB,MAAM,EAAE,yBAAyB,EACjC,WAAW,EAAE,eAAe,EAC5B,sBAAsB,EAAE,sBAAsB,GAAG,IAAI,GACtD,kBAAkB,CAYpB;CAEJ"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
// Stateless helpers of the resource mutations: failure results, effect projection, address and marker facts.
|
|
2
|
+
import { PathSyntax } from "@plurnk/plurnk-contracts";
|
|
3
|
+
import { TextCoordinates } from "@plurnk/plurnk-mimetypes";
|
|
4
|
+
import { InvalidOperationResultError } from "@plurnk/plurnk-schemes";
|
|
5
|
+
import { renderAddress, renderTarget } from "./plurnk-uri.js";
|
|
6
|
+
import { assertEditBatchReceipt, assertEditReceipt, assertResourceEffects, projectEditReceipt } from "../content/index.js";
|
|
7
|
+
import Results from "./results.js";
|
|
8
|
+
export default class MutationEffects {
|
|
9
|
+
static failure(code, status, detail, fields = {}, extensions = {}) {
|
|
10
|
+
return Results.failure("engine:dispatcher", code, status, detail, fields, extensions);
|
|
11
|
+
}
|
|
12
|
+
// The documented append region is exactly `<-1>`: one mark, the line after the last.
|
|
13
|
+
static isAppendMarker(marker) {
|
|
14
|
+
const marks = marker?.marks;
|
|
15
|
+
return Array.isArray(marks) && marks.length === 1 && marks[0] === -1;
|
|
16
|
+
}
|
|
17
|
+
static isCompleteAbsentDestinationMarker(marker, content) {
|
|
18
|
+
const marks = marker?.marks;
|
|
19
|
+
if (!Array.isArray(marks))
|
|
20
|
+
return false;
|
|
21
|
+
if (marks.length === 2 && marks[0] === 1 && marks[1] === -1)
|
|
22
|
+
return true;
|
|
23
|
+
const lineCount = TextCoordinates.logicalLines(content).length;
|
|
24
|
+
return lineCount > 0 && marks[0] === 1 && ((marks.length === 1 && lineCount === 1)
|
|
25
|
+
|| (marks.length === 2 && marks[1] === lineCount));
|
|
26
|
+
}
|
|
27
|
+
static isDispatchResult(value) {
|
|
28
|
+
return "status" in value;
|
|
29
|
+
}
|
|
30
|
+
static prependScopeNormalizations(result, scopeNormalizations) {
|
|
31
|
+
if (scopeNormalizations === undefined)
|
|
32
|
+
return result;
|
|
33
|
+
return Results.assert({
|
|
34
|
+
...result,
|
|
35
|
+
scopeNormalizations: [
|
|
36
|
+
...scopeNormalizations,
|
|
37
|
+
...(result.scopeNormalizations ?? []),
|
|
38
|
+
],
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
static mergeLineAnchorPreconditions(...values) {
|
|
42
|
+
const present = values.filter((value) => value !== null);
|
|
43
|
+
if (present.length === 0)
|
|
44
|
+
return null;
|
|
45
|
+
const identity = present[0].identity;
|
|
46
|
+
if (present.some((value) => value.identity !== identity)) {
|
|
47
|
+
throw new TypeError("Line-anchor preconditions for one edit batch must share a resource identity.");
|
|
48
|
+
}
|
|
49
|
+
const checks = [...new Map(present.flatMap(({ checks: valueChecks }) => valueChecks)
|
|
50
|
+
.map((check) => [`${check.anchor}:${check.line}`, check])).values()];
|
|
51
|
+
return { identity, checks };
|
|
52
|
+
}
|
|
53
|
+
static appliedEffects(result, pending) {
|
|
54
|
+
// {§edit-result-copy-move-effects} — only an applied mutation earns
|
|
55
|
+
// engine-composed effects; native scheme receipts remain internal input.
|
|
56
|
+
const exact = Results.assert(result);
|
|
57
|
+
if (exact.status === 304 || exact.status === 202 || exact.status >= 300)
|
|
58
|
+
return exact;
|
|
59
|
+
if (exact.effects !== undefined) {
|
|
60
|
+
throw new InvalidOperationResultError("A COPY/MOVE mutation result supplied effects before engine composition.");
|
|
61
|
+
}
|
|
62
|
+
const batch = exact.editReceipt === undefined
|
|
63
|
+
? undefined
|
|
64
|
+
: assertEditBatchReceipt(exact.editReceipt);
|
|
65
|
+
const single = batch === undefined && exact.receipt !== undefined
|
|
66
|
+
? assertEditReceipt(exact.receipt)
|
|
67
|
+
: undefined;
|
|
68
|
+
const batchSize = batch === undefined
|
|
69
|
+
? undefined
|
|
70
|
+
: "disposition" in batch
|
|
71
|
+
? batch.superseded.length
|
|
72
|
+
: batch.effects.length;
|
|
73
|
+
if (batchSize !== undefined && batchSize !== pending.length) {
|
|
74
|
+
throw new InvalidOperationResultError(`COPY/MOVE expected ${pending.length} receipt projections, got ${batchSize}.`);
|
|
75
|
+
}
|
|
76
|
+
if (single !== undefined && pending.length !== 1) {
|
|
77
|
+
throw new InvalidOperationResultError(`COPY/MOVE received one receipt for ${pending.length} resource effects.`);
|
|
78
|
+
}
|
|
79
|
+
let effects;
|
|
80
|
+
if (batch !== undefined && "disposition" in batch) {
|
|
81
|
+
const replacement = pending[0];
|
|
82
|
+
if (replacement === undefined) {
|
|
83
|
+
throw new InvalidOperationResultError("A reviewer-replaced COPY/MOVE batch has no resource effect.");
|
|
84
|
+
}
|
|
85
|
+
if (pending.some(({ target, action }) => target !== replacement.target || action !== replacement.action)) {
|
|
86
|
+
throw new InvalidOperationResultError("A reviewer-replaced COPY/MOVE batch spans incompatible resource effects.");
|
|
87
|
+
}
|
|
88
|
+
effects = [{
|
|
89
|
+
...replacement,
|
|
90
|
+
receipt: projectEditReceipt(batch, 0),
|
|
91
|
+
}];
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
effects = pending.map((effect, index) => ({
|
|
95
|
+
...effect,
|
|
96
|
+
...(batch !== undefined
|
|
97
|
+
? { receipt: projectEditReceipt(batch, index) }
|
|
98
|
+
: single !== undefined
|
|
99
|
+
? { receipt: single }
|
|
100
|
+
: {}),
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
assertResourceEffects(effects);
|
|
104
|
+
const { editReceipt: _editReceipt, receipt: _receipt, ...withoutInternalReceipts } = exact;
|
|
105
|
+
return {
|
|
106
|
+
...withoutInternalReceipts,
|
|
107
|
+
effects,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// {§copy-move-observation} {§edit-result-copy-move-effects} — scoped
|
|
111
|
+
// COPY/MOVE into an unscoped channel is a text materialization even when
|
|
112
|
+
// CRUD creates the channel wholesale. Carry the receipt through synchronous
|
|
113
|
+
// writes and proposals; the destination scheme owns reviewed output.
|
|
114
|
+
static withEditMaterialization(result, receipt) {
|
|
115
|
+
const exact = Results.assert(result);
|
|
116
|
+
if (exact.status !== 200 && exact.status !== 201 && exact.status !== 202)
|
|
117
|
+
return exact;
|
|
118
|
+
const materialized = exact.editReceipt === undefined
|
|
119
|
+
? assertEditBatchReceipt(receipt)
|
|
120
|
+
: assertEditBatchReceipt(exact.editReceipt);
|
|
121
|
+
return {
|
|
122
|
+
...exact,
|
|
123
|
+
editReceipt: materialized,
|
|
124
|
+
...(exact.status === 202
|
|
125
|
+
? {
|
|
126
|
+
attrs: {
|
|
127
|
+
...exact.attrs,
|
|
128
|
+
editReceipt: materialized,
|
|
129
|
+
},
|
|
130
|
+
}
|
|
131
|
+
: {}),
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
static effectsOf(result) {
|
|
135
|
+
return result.effects === undefined
|
|
136
|
+
? []
|
|
137
|
+
: assertResourceEffects(result.effects);
|
|
138
|
+
}
|
|
139
|
+
static withCombinedEffects(result, ...additional) {
|
|
140
|
+
const existing = MutationEffects.effectsOf(result);
|
|
141
|
+
const effects = [...existing, ...additional.flat()];
|
|
142
|
+
const { effects: _effects, ...withoutEffects } = result;
|
|
143
|
+
return effects.length === 0
|
|
144
|
+
? withoutEffects
|
|
145
|
+
: { ...withoutEffects, effects: assertResourceEffects(effects) };
|
|
146
|
+
}
|
|
147
|
+
static settleProposalEffects(original, settlement) {
|
|
148
|
+
const pending = original.attrs
|
|
149
|
+
?.proposalEffects;
|
|
150
|
+
if (pending === undefined
|
|
151
|
+
|| settlement.resolution.decision !== "accept"
|
|
152
|
+
|| settlement.applied === undefined
|
|
153
|
+
|| settlement.applied.status >= 300) {
|
|
154
|
+
return settlement;
|
|
155
|
+
}
|
|
156
|
+
const projected = settlement.resolution.result ?? {};
|
|
157
|
+
const aggregate = settlement.applied.editReceipt;
|
|
158
|
+
const applied = MutationEffects.appliedEffects({
|
|
159
|
+
...projected,
|
|
160
|
+
status: settlement.applied.status,
|
|
161
|
+
...(aggregate === undefined ? {} : { editReceipt: aggregate }),
|
|
162
|
+
}, pending);
|
|
163
|
+
const { status: _status, body: _body, ...result } = applied;
|
|
164
|
+
const { body: _resolutionBody, ...resolution } = settlement.resolution;
|
|
165
|
+
return {
|
|
166
|
+
...settlement,
|
|
167
|
+
resolution: {
|
|
168
|
+
...resolution,
|
|
169
|
+
result,
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
static settlementEffects(settlement) {
|
|
174
|
+
const effects = settlement.resolution.result
|
|
175
|
+
?.effects;
|
|
176
|
+
return effects === undefined ? [] : assertResourceEffects(effects);
|
|
177
|
+
}
|
|
178
|
+
static withSettlementEffects(settlement, effects) {
|
|
179
|
+
const projected = (settlement.resolution.result ?? {});
|
|
180
|
+
const { effects: _effects, ...withoutEffects } = projected;
|
|
181
|
+
const result = effects.length === 0
|
|
182
|
+
? withoutEffects
|
|
183
|
+
: {
|
|
184
|
+
...withoutEffects,
|
|
185
|
+
effects: assertResourceEffects(effects),
|
|
186
|
+
};
|
|
187
|
+
return {
|
|
188
|
+
...settlement,
|
|
189
|
+
resolution: {
|
|
190
|
+
...settlement.resolution,
|
|
191
|
+
result,
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
static resourceAddress(selection) {
|
|
196
|
+
const address = selection.scheme === "file"
|
|
197
|
+
? renderTarget({
|
|
198
|
+
scheme: null,
|
|
199
|
+
pathname: selection.identityPathname.replace(/^\//, ""),
|
|
200
|
+
})
|
|
201
|
+
: renderAddress({
|
|
202
|
+
scheme: selection.scheme,
|
|
203
|
+
// {§worker-authority-carving} — storage keys the owner, so the
|
|
204
|
+
// address the model typed (`~`) is re-applied for it to recognize.
|
|
205
|
+
authority: selection.scheme === "worker" && selection.target.kind === "url"
|
|
206
|
+
? selection.target.hostname ?? ""
|
|
207
|
+
: selection.authority,
|
|
208
|
+
pathname: selection.identityPathname,
|
|
209
|
+
});
|
|
210
|
+
if (address === null)
|
|
211
|
+
throw new Error("resolved resource selection has no renderable address");
|
|
212
|
+
return selection.channel === selection.manifest.defaultChannel
|
|
213
|
+
? address
|
|
214
|
+
: `${address}#${PathSyntax.escapeTarget(selection.channel)}`;
|
|
215
|
+
}
|
|
216
|
+
static pendingEffect(selection, action) {
|
|
217
|
+
return {
|
|
218
|
+
target: MutationEffects.resourceAddress(selection),
|
|
219
|
+
action,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
static withProposalRoute(result, selection) {
|
|
223
|
+
if (result.status !== 202)
|
|
224
|
+
return result;
|
|
225
|
+
return {
|
|
226
|
+
...result,
|
|
227
|
+
attrs: {
|
|
228
|
+
...result.attrs,
|
|
229
|
+
proposalScheme: selection.scheme,
|
|
230
|
+
proposalTarget: {
|
|
231
|
+
scheme: selection.scheme,
|
|
232
|
+
authority: selection.authority,
|
|
233
|
+
pathname: selection.identityPathname,
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
static async projectPreparedEdit(prepared) {
|
|
239
|
+
if (prepared.projection !== null)
|
|
240
|
+
return prepared.projection;
|
|
241
|
+
const settled = prepared.first
|
|
242
|
+
? prepared.batch.initial
|
|
243
|
+
: await prepared.batch.settled;
|
|
244
|
+
const normalization = prepared.normalizationIndex === null
|
|
245
|
+
? undefined
|
|
246
|
+
: settled.scopeNormalizations?.[prepared.normalizationIndex];
|
|
247
|
+
const { scopeNormalizations: _scopeNormalizations, merges: _merges, applied: _applied, merged: _merged, ...projectedSettlement } = settled;
|
|
248
|
+
const statementResult = {
|
|
249
|
+
...(normalization === undefined ? projectedSettlement : { ...projectedSettlement, scopeNormalizations: [normalization] }),
|
|
250
|
+
...(prepared.merged.length === 0 ? {} : { merged: prepared.merged }),
|
|
251
|
+
};
|
|
252
|
+
const aggregate = prepared.batch.aggregate;
|
|
253
|
+
if (aggregate === undefined)
|
|
254
|
+
return statementResult;
|
|
255
|
+
const receipt = assertEditBatchReceipt(aggregate);
|
|
256
|
+
// The settled result may already carry the first statement's projected receipt; every
|
|
257
|
+
// row projects its own from the batch aggregate.
|
|
258
|
+
const { editReceipt: _editReceipt, receipt: _receipt, ...withoutAggregate } = statementResult;
|
|
259
|
+
// A dropped duplicate applied nothing: its row carries the merge fact, not a twin's effect.
|
|
260
|
+
if (prepared.receiptIndex === null)
|
|
261
|
+
return withoutAggregate;
|
|
262
|
+
return {
|
|
263
|
+
...withoutAggregate,
|
|
264
|
+
receipt: projectEditReceipt(receipt, prepared.receiptIndex),
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
static finalizeEffects(result, selection, pending) {
|
|
268
|
+
const routed = MutationEffects.withProposalRoute(result, selection);
|
|
269
|
+
if (routed.status !== 202)
|
|
270
|
+
return MutationEffects.appliedEffects(routed, pending);
|
|
271
|
+
return {
|
|
272
|
+
...routed,
|
|
273
|
+
attrs: {
|
|
274
|
+
...routed.attrs,
|
|
275
|
+
proposalEffects: pending,
|
|
276
|
+
},
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
static sameChannel(left, right) {
|
|
280
|
+
return left.scheme === right.scheme
|
|
281
|
+
&& left.authority === right.authority
|
|
282
|
+
&& left.identityPathname === right.identityPathname
|
|
283
|
+
&& left.channel === right.channel;
|
|
284
|
+
}
|
|
285
|
+
static moveFailureAfterDestination(result, destination, destinationEffects) {
|
|
286
|
+
const exact = Results.assert(result);
|
|
287
|
+
if (exact.status < 400) {
|
|
288
|
+
throw new InvalidOperationResultError("A successful MOVE source result was classified as a partial failure.");
|
|
289
|
+
}
|
|
290
|
+
if (exact.problem === undefined) {
|
|
291
|
+
throw new InvalidOperationResultError("A failed MOVE source mutation has no Problem Details.");
|
|
292
|
+
}
|
|
293
|
+
const failed = Results.assert({
|
|
294
|
+
...exact,
|
|
295
|
+
problem: {
|
|
296
|
+
...exact.problem,
|
|
297
|
+
operation: "MOVE",
|
|
298
|
+
destinationWritten: true,
|
|
299
|
+
destination,
|
|
300
|
+
},
|
|
301
|
+
});
|
|
302
|
+
return MutationEffects.withCombinedEffects(failed, destinationEffects);
|
|
303
|
+
}
|
|
304
|
+
static deferredMoveSource(source, destination, lineAnchorPrecondition) {
|
|
305
|
+
return {
|
|
306
|
+
target: source.target,
|
|
307
|
+
metadata: source.metadata,
|
|
308
|
+
lineMarker: source.lineMarker,
|
|
309
|
+
scheme: source.scheme,
|
|
310
|
+
authority: source.authority,
|
|
311
|
+
pathname: source.pathname,
|
|
312
|
+
channel: source.channel,
|
|
313
|
+
destination: MutationEffects.resourceAddress(destination),
|
|
314
|
+
lineAnchorPrecondition,
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=MutationEffects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MutationEffects.js","sourceRoot":"","sources":["../../src/core/MutationEffects.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type KillStatement, type PlanStatement, type SendStatement } from "@plurnk/plurnk-contracts";
|
|
2
2
|
import type { Db } from "./Db.ts";
|
|
3
|
-
export type
|
|
4
|
-
readonly statement:
|
|
3
|
+
export type OverflowKill = {
|
|
4
|
+
readonly statement: KillStatement;
|
|
5
5
|
};
|
|
6
6
|
export default class OverflowTurn {
|
|
7
|
-
static plan(db: Db, loopId: number, turnId: number): Promise<
|
|
7
|
+
static plan(db: Db, loopId: number, turnId: number): Promise<OverflowKill[]>;
|
|
8
8
|
static planStatement(): PlanStatement;
|
|
9
9
|
static sendStatement(): SendStatement;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverflowTurn.d.ts","sourceRoot":"","sources":["../../src/core/OverflowTurn.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAkBlC,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;CACrC,CAAC;
|
|
1
|
+
{"version":3,"file":"OverflowTurn.d.ts","sourceRoot":"","sources":["../../src/core/OverflowTurn.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAkBlC,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;CACrC,CAAC;AAoCF,MAAM,CAAC,OAAO,OAAO,YAAY;IAC7B,OAAa,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAmBjF;IAED,MAAM,CAAC,aAAa,IAAI,aAAa,CAUpC;IAED,MAAM,CAAC,aAAa,IAAI,aAAa,CAUpC;CACJ"}
|
|
@@ -2,8 +2,8 @@ import { UNKNOWN_POSITION, } from "@plurnk/plurnk-contracts";
|
|
|
2
2
|
import LogBody from "./LogBody.js";
|
|
3
3
|
import LogEntryProjection from "./LogEntryProjection.js";
|
|
4
4
|
import LogVisibility from "./LogVisibility.js";
|
|
5
|
-
const OVERFLOW_PLAN = "Automatically
|
|
6
|
-
const OVERFLOW_SEND = "Next: YOU MUST ONLY
|
|
5
|
+
const OVERFLOW_PLAN = "Automatically KILL log bodies newly active at token-budget overflow.";
|
|
6
|
+
const OVERFLOW_SEND = "Next: YOU MUST ONLY KILL superseded, stale, or irrelevant log content in bulk.";
|
|
7
7
|
const targetFor = (coordinate) => ({
|
|
8
8
|
kind: "url",
|
|
9
9
|
raw: `log:///${coordinate}`,
|
|
@@ -19,10 +19,9 @@ const targetFor = (coordinate) => ({
|
|
|
19
19
|
const foldFor = (row) => {
|
|
20
20
|
const coordinate = LogEntryProjection.coordinate(row.coordinate, row);
|
|
21
21
|
const statement = {
|
|
22
|
-
op: "
|
|
22
|
+
op: "KILL",
|
|
23
23
|
annotation: null,
|
|
24
24
|
delimiter: "",
|
|
25
|
-
signal: ["+_plurnk", "+overflow"],
|
|
26
25
|
target: targetFor(coordinate),
|
|
27
26
|
metadata: null,
|
|
28
27
|
lineMarker: { marks: [1, -1] },
|
|
@@ -32,7 +31,7 @@ const foldFor = (row) => {
|
|
|
32
31
|
return { statement };
|
|
33
32
|
};
|
|
34
33
|
// {§overflow-turn-curation} — deterministic selection only. Execution remains
|
|
35
|
-
// ordinary Dispatcher
|
|
34
|
+
// ordinary Dispatcher scoped KILL, so Log owns the visibility transaction and effect
|
|
36
35
|
// evidence exactly as it does for model-authored curation.
|
|
37
36
|
export default class OverflowTurn {
|
|
38
37
|
static async plan(db, loopId, turnId) {
|
|
@@ -58,7 +57,7 @@ export default class OverflowTurn {
|
|
|
58
57
|
static planStatement() {
|
|
59
58
|
return {
|
|
60
59
|
op: "PLAN", delimiter: "", annotation: null,
|
|
61
|
-
|
|
60
|
+
target: null, metadata: null, lineMarker: null,
|
|
62
61
|
body: [{
|
|
63
62
|
content: OVERFLOW_PLAN,
|
|
64
63
|
status: "in_progress",
|
|
@@ -69,7 +68,7 @@ export default class OverflowTurn {
|
|
|
69
68
|
static sendStatement() {
|
|
70
69
|
return {
|
|
71
70
|
op: "SEND", delimiter: "", annotation: null,
|
|
72
|
-
|
|
71
|
+
status: 102, target: null, metadata: null, lineMarker: null,
|
|
73
72
|
body: {
|
|
74
73
|
raw: OVERFLOW_SEND,
|
|
75
74
|
json: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverflowTurn.js","sourceRoot":"","sources":["../../src/core/OverflowTurn.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,GAKnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAmB/C,MAAM,aAAa,GAAG,sEAAsE,CAAC;AAC7F,MAAM,aAAa,GAAG,
|
|
1
|
+
{"version":3,"file":"OverflowTurn.js","sourceRoot":"","sources":["../../src/core/OverflowTurn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PacketBuilder.d.ts","sourceRoot":"","sources":["../../src/core/PacketBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"PacketBuilder.d.ts","sourceRoot":"","sources":["../../src/core/PacketBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAiBhD,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,mBAAmB,CAAC;AAG5E,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AA2FtE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAID,MAAM,CAAC,OAAO,OAAO,aAAa;;IAgB9B,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;QACpC,EAAE,EAAE,EAAE,CAAC;QACP,OAAO,EAAE,cAAc,CAAC;QACxB,SAAS,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC;KACjD,EASA;IAED,yBAAyB,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAE7G;IAiCD,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAEnD;IAIK,kBAAkB,CAAC,EACrB,eAAe,EAAE,KAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAY,EAC7G,uBAA8B,EAC9B,gBAA8B,GACjC,EAAE;QACC,eAAe,EAAE,WAAW,EAAE,CAAC;QAE/B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAEtD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC;QAInB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAG5B,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAGxC,gBAAgB,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;KAC/C,GAAG,OAAO,CAAC,aAAa,CAAC,CAqKzB;IAIK,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAuCnH;IAKD,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,GAAG,IAAI,CASnF;IAKK,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9E,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC,CASF;CAmFJ"}
|
|
@@ -8,6 +8,7 @@ import { readPacketInject, readSystemPolicy } from "./packet-inject.js";
|
|
|
8
8
|
import { readFile } from "node:fs/promises";
|
|
9
9
|
import Paths from "../Paths.js";
|
|
10
10
|
import { readTeachingSource } from "./teaching-corpus.js";
|
|
11
|
+
import { attachmentTeaching } from "./attachments.js";
|
|
11
12
|
// Shared module imported by both Engine and bin/digest.ts, so wire
|
|
12
13
|
// projection and digest projection are structurally one function — no
|
|
13
14
|
// drift between wire and digest possible.
|
|
@@ -16,6 +17,7 @@ import LogEntryProjection from "./LogEntryProjection.js";
|
|
|
16
17
|
import { scopeEnvToAlias, resolveActiveRoute } from "@plurnk/plurnk-providers";
|
|
17
18
|
import ProviderInstantiate from "./ProviderInstantiate.js";
|
|
18
19
|
import BudgetReadout from "./BudgetReadout.js";
|
|
20
|
+
import TokenCalibration from "./TokenCalibration.js";
|
|
19
21
|
import LineAnchors from "../content/line-anchors.js";
|
|
20
22
|
import ToolResources from "./ToolResources.js";
|
|
21
23
|
import LogVisibility from "./LogVisibility.js";
|
|
@@ -103,6 +105,8 @@ const readRequiredPercentFrom = (env, name) => {
|
|
|
103
105
|
// ({§overflow-turn}). Visibility changes stay in the ordinary FOLD owner.
|
|
104
106
|
class PacketBuilder {
|
|
105
107
|
#db;
|
|
108
|
+
// {§tokenomics-calibrated-readout} — the factor each built packet was judged and rendered with.
|
|
109
|
+
#calibrations = new WeakMap();
|
|
106
110
|
#schemes;
|
|
107
111
|
// Boot-discovered runtime executors, late-injected on Engine after daemon
|
|
108
112
|
// start() — read through a thunk so the post-construction set is visible.
|
|
@@ -187,13 +191,13 @@ class PacketBuilder {
|
|
|
187
191
|
prefix_len: promptPrefix.length,
|
|
188
192
|
}))
|
|
189
193
|
.filter((r) => typeof r.content === "string" && r.content.length > 0);
|
|
190
|
-
// The section is a paths
|
|
194
|
+
// The section is a JSON array of prompt paths (the errors shape - no bodies);
|
|
191
195
|
// each prompt's content reaches the model through its actionless prompt row, and
|
|
192
196
|
// prior prompts stay READable by the listed address - never silently lost, never an
|
|
193
197
|
// unfair curation imposition. Fallback: callers that bypass persistence (bare messages)
|
|
194
198
|
// still get their user text rendered directly.
|
|
195
199
|
const prompt = promptRows.length > 0
|
|
196
|
-
? promptRows.map((r) =>
|
|
200
|
+
? `[${promptRows.map((r) => JSON.stringify(`prompt://${r.pathname}`)).join(",\n")}]`
|
|
197
201
|
: byRole("user");
|
|
198
202
|
// {§recap}: a non-empty override wins; otherwise read the meta-owned source per packet.
|
|
199
203
|
const recapContent = recap.length > 0
|
|
@@ -220,6 +224,8 @@ class PacketBuilder {
|
|
|
220
224
|
? null
|
|
221
225
|
: provider.outputBudget - (provider.reasoningBudget ?? 0);
|
|
222
226
|
const budgetReadout = BudgetReadout.draft(curationBudget, responseRoom);
|
|
227
|
+
// {§tokenomics-calibrated-readout}: what this model's tokenizer charged for its recent packets.
|
|
228
|
+
const calibration = curationBudget === null ? 1 : await TokenCalibration.forModel(this.#db, provider.model);
|
|
223
229
|
// The canonical default order, trust boundary, and cache-locality bias are
|
|
224
230
|
// specified at {§packet-cache-monotone}. Budget placeholders resolve only
|
|
225
231
|
// after trusted whole-list transforms establish the packet being measured.
|
|
@@ -228,7 +234,7 @@ class PacketBuilder {
|
|
|
228
234
|
// {§turn0-agents-stunt} — the PROJECT AGENTS.md rides turn 0 as a foisted
|
|
229
235
|
// READ (LoopDocs → worker://~/_plurnk/agents.md), not the system prompt.
|
|
230
236
|
// Child-orientation ({§child-orientation}): the live things this worker holds — open streams +
|
|
231
|
-
// unconcluded child workers — surfaced every turn as
|
|
237
|
+
// unconcluded child workers — surfaced every turn as `{status, path}` JSON pointers (same shape
|
|
232
238
|
// as errors) just above the errors section. Orienting STATE so the model never loses track of
|
|
233
239
|
// what it's holding (the premature-terminate trap), never advice on what to do. Empty → omitted.
|
|
234
240
|
const openChannels = await this.#db.engine_child_streams_open.all({ worker_id: workerId });
|
|
@@ -249,8 +255,14 @@ class PacketBuilder {
|
|
|
249
255
|
// {§fs-namespace} — the log renders working directories relative to the model's `/`.
|
|
250
256
|
const workspaceRow = await this.#db.envelope_get_workspace.get({ id: workspaceId });
|
|
251
257
|
const renderedLog = PacketWire.renderLogWithAccounting(log, weighContent, { projectRoot: workspaceRow?.project_root ?? null, ...(promptProjectionWeight === null ? {} : { promptProjectionWeight }) });
|
|
258
|
+
const attachmentsWeight = renderedLog.attachments.reduce((sum, { weight }) => sum + weight, 0);
|
|
252
259
|
const defaults = [
|
|
253
260
|
{ name: "definition", slot: "system", header: null, content: system_definition },
|
|
261
|
+
// {§attachment-teaching} — what this route can take as a native part, taught by example
|
|
262
|
+
// above the policy and only when it applies; a blind route has no section at all.
|
|
263
|
+
...(attachmentTeaching(provider.inputModalities) === ""
|
|
264
|
+
? []
|
|
265
|
+
: [{ name: "attachments", slot: "system", header: "Attachments", content: attachmentTeaching(provider.inputModalities) }]),
|
|
254
266
|
// Stable privileged policy leads capability teaching for
|
|
255
267
|
// prefix-cache locality. Empty policy sections simply disappear.
|
|
256
268
|
{ name: "system-policy", slot: "system", header: "Policy", content: systemPolicy ?? "" },
|
|
@@ -292,8 +304,9 @@ class PacketBuilder {
|
|
|
292
304
|
const content = BudgetReadout.resolve(budgetSection.content, curationBudget, (candidate) => {
|
|
293
305
|
const candidateDrafts = drafts.map((section) => section === budgetSection ? { ...section, content: candidate } : section);
|
|
294
306
|
return weighContent(PacketWire.renderSlot(candidateDrafts, "system"))
|
|
295
|
-
+ weighContent(PacketWire.renderSlot(candidateDrafts, "user"))
|
|
296
|
-
|
|
307
|
+
+ weighContent(PacketWire.renderSlot(candidateDrafts, "user"))
|
|
308
|
+
+ attachmentsWeight;
|
|
309
|
+
}, reclaimableBodies.map((item) => TokenCalibration.scale(item, calibration)), calibration);
|
|
297
310
|
drafts = drafts.map((section) => section === budgetSection ? { ...section, content } : section);
|
|
298
311
|
}
|
|
299
312
|
// Core alone turns validated drafts into measured durable sections.
|
|
@@ -302,7 +315,10 @@ class PacketBuilder {
|
|
|
302
315
|
weight: weighContent(PacketWire.renderSection(section)),
|
|
303
316
|
}));
|
|
304
317
|
const renderWeight = weighContent(PacketWire.renderSlot(sections, "system")) + weighContent(PacketWire.renderSlot(sections, "user"));
|
|
305
|
-
|
|
318
|
+
// {§packet-attachment-parts} — pictures weigh in the packet like everything else it carries.
|
|
319
|
+
const packet = { weight: renderWeight + attachmentsWeight, sections, attributions: [], attachments: [...renderedLog.attachments] };
|
|
320
|
+
this.#calibrations.set(packet, calibration);
|
|
321
|
+
return packet;
|
|
306
322
|
}
|
|
307
323
|
// {§schemes-self-doc-materialization} {§tools-resource-materialization} —
|
|
308
324
|
// one reserved reference set, materialized by LoopDocs.
|
|
@@ -352,9 +368,16 @@ class PacketBuilder {
|
|
|
352
368
|
// visibility while measuring a candidate request.
|
|
353
369
|
curationOverflow(packet, provider) {
|
|
354
370
|
const budget = this.curationBudgetFor(provider);
|
|
355
|
-
if (budget === null
|
|
371
|
+
if (budget === null)
|
|
356
372
|
return null;
|
|
357
|
-
|
|
373
|
+
const calibration = this.#calibrations.get(packet);
|
|
374
|
+
if (calibration === undefined)
|
|
375
|
+
throw new Error("curationOverflow: the packet was not built by this PacketBuilder");
|
|
376
|
+
// {§tokenomics-calibrated-readout} — admission judges the same calibrated weight the model was shown.
|
|
377
|
+
const weight = Math.round(packet.weight * calibration);
|
|
378
|
+
if (weight <= budget)
|
|
379
|
+
return null;
|
|
380
|
+
return { weight, budget, excess: weight - budget };
|
|
358
381
|
}
|
|
359
382
|
// Every prior-turn operation failure is durable before packet assembly.
|
|
360
383
|
// The model-facing Errors section is only a terse projection of those rows;
|
|
@@ -432,7 +455,6 @@ class PacketBuilder {
|
|
|
432
455
|
: LogVisibility.parse(r.folded),
|
|
433
456
|
source: r.source,
|
|
434
457
|
attrs: r.attrs === null ? null : JSON.parse(r.attrs),
|
|
435
|
-
tags: JSON.parse(r.tags),
|
|
436
458
|
...(lineAnchors === undefined ? {} : { lineAnchors }),
|
|
437
459
|
...(lineNumberWidth === undefined ? {} : { lineNumberWidth }),
|
|
438
460
|
};
|