@plurnk/plurnk-service 1.4.0 → 1.6.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 +37 -31
- package/INSTALL.md +16 -11
- package/README.md +1 -0
- package/SPEC.md +631 -397
- package/dist/Paths.d.ts.map +1 -1
- package/dist/Paths.js +2 -3
- package/dist/Paths.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/content/edit-collision.d.ts +5 -0
- package/dist/content/edit-collision.d.ts.map +1 -0
- package/dist/content/edit-collision.js +14 -0
- package/dist/content/edit-collision.js.map +1 -0
- package/dist/content/edit-receipt.d.ts +3 -2
- package/dist/content/edit-receipt.d.ts.map +1 -1
- package/dist/content/edit-receipt.js +58 -13
- package/dist/content/edit-receipt.js.map +1 -1
- package/dist/content/index.d.ts +5 -1
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +4 -1
- package/dist/content/index.js.map +1 -1
- package/dist/content/line-anchors.d.ts +41 -0
- package/dist/content/line-anchors.d.ts.map +1 -0
- package/dist/content/line-anchors.js +191 -0
- package/dist/content/line-anchors.js.map +1 -0
- package/dist/content/line-marker.d.ts +7 -3
- package/dist/content/line-marker.d.ts.map +1 -1
- package/dist/content/line-marker.js +2 -1
- package/dist/content/line-marker.js.map +1 -1
- package/dist/content/matcher.d.ts +1 -1
- package/dist/content/matcher.d.ts.map +1 -1
- package/dist/content/matcher.js +2 -2
- package/dist/content/matcher.js.map +1 -1
- package/dist/content/read-projector.d.ts +20 -0
- package/dist/content/read-projector.d.ts.map +1 -0
- package/dist/content/read-projector.js +122 -0
- package/dist/content/read-projector.js.map +1 -0
- package/dist/content/read-resolve.d.ts +2 -7
- package/dist/content/read-resolve.d.ts.map +1 -1
- package/dist/content/read-resolve.js +32 -107
- package/dist/content/read-resolve.js.map +1 -1
- package/dist/core/BranchReceipt.d.ts +0 -1
- package/dist/core/BranchReceipt.d.ts.map +1 -1
- package/dist/core/BranchReceipt.js +0 -3
- package/dist/core/BranchReceipt.js.map +1 -1
- package/dist/core/BudgetReadout.d.ts.map +1 -1
- package/dist/core/BudgetReadout.js +9 -2
- package/dist/core/BudgetReadout.js.map +1 -1
- package/dist/core/ChannelWrite.d.ts +3 -0
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js +3 -3
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/ChannelWrite.sql +4 -3
- package/dist/core/CoreSchemeServices.d.ts +10 -2
- package/dist/core/CoreSchemeServices.d.ts.map +1 -1
- package/dist/core/CoreSchemeServices.js.map +1 -1
- package/dist/core/Dispatcher.d.ts +14 -8
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +656 -312
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/DurableStatement.d.ts.map +1 -1
- package/dist/core/DurableStatement.js +2 -0
- package/dist/core/DurableStatement.js.map +1 -1
- package/dist/core/Engine.d.ts +24 -18
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +620 -392
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/Engine.sql +188 -119
- package/dist/core/ExecutableTools.d.ts +10 -0
- package/dist/core/ExecutableTools.d.ts.map +1 -0
- package/dist/core/ExecutableTools.js +41 -0
- package/dist/core/ExecutableTools.js.map +1 -0
- package/dist/core/ExecutorRegistry.d.ts +3 -3
- package/dist/core/ExecutorRegistry.d.ts.map +1 -1
- package/dist/core/ExecutorRegistry.js +2 -2
- package/dist/core/ExecutorRegistry.js.map +1 -1
- package/dist/core/LogBody.d.ts +4 -1
- package/dist/core/LogBody.d.ts.map +1 -1
- package/dist/core/LogBody.js +46 -2
- package/dist/core/LogBody.js.map +1 -1
- package/dist/core/LogEntryProjection.d.ts +14 -0
- package/dist/core/LogEntryProjection.d.ts.map +1 -0
- package/dist/core/LogEntryProjection.js +38 -0
- package/dist/core/LogEntryProjection.js.map +1 -0
- package/dist/core/LoopLifecycle.d.ts +1 -2
- package/dist/core/LoopLifecycle.d.ts.map +1 -1
- package/dist/core/LoopLifecycle.js +1 -4
- package/dist/core/LoopLifecycle.js.map +1 -1
- package/dist/core/LoopLifecycle.sql +1 -4
- package/dist/core/ModelCall.d.ts +27 -0
- package/dist/core/ModelCall.d.ts.map +1 -0
- package/dist/core/ModelCall.js +125 -0
- package/dist/core/ModelCall.js.map +1 -0
- package/dist/core/PacketBuilder.d.ts +13 -12
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +146 -118
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/ProblemLog.d.ts.map +1 -1
- package/dist/core/ProblemLog.js +1 -0
- package/dist/core/ProblemLog.js.map +1 -1
- package/dist/core/ProposalLifecycle.d.ts.map +1 -1
- package/dist/core/ProposalLifecycle.js +3 -4
- package/dist/core/ProposalLifecycle.js.map +1 -1
- package/dist/core/ProviderInstantiate.d.ts.map +1 -1
- package/dist/core/ProviderInstantiate.js +23 -6
- package/dist/core/ProviderInstantiate.js.map +1 -1
- package/dist/core/SchemeRegistry.js +7 -7
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/StrikeRail.d.ts +5 -2
- package/dist/core/StrikeRail.d.ts.map +1 -1
- package/dist/core/StrikeRail.js +10 -7
- package/dist/core/StrikeRail.js.map +1 -1
- package/dist/core/TerminalResult.d.ts +16 -0
- package/dist/core/TerminalResult.d.ts.map +1 -0
- package/dist/core/TerminalResult.js +49 -0
- package/dist/core/TerminalResult.js.map +1 -0
- package/dist/core/caps/CapsResolve.d.ts +5 -1
- package/dist/core/caps/CapsResolve.d.ts.map +1 -1
- package/dist/core/caps/CapsResolve.js +9 -5
- package/dist/core/caps/CapsResolve.js.map +1 -1
- package/dist/core/caps/DbChannelCaps.d.ts +1 -1
- package/dist/core/caps/DbChannelCaps.d.ts.map +1 -1
- package/dist/core/caps/DbChannelCaps.js +6 -4
- package/dist/core/caps/DbChannelCaps.js.map +1 -1
- package/dist/core/caps/DbEntryCaps.d.ts +2 -1
- package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
- package/dist/core/caps/DbEntryCaps.js +21 -8
- package/dist/core/caps/DbEntryCaps.js.map +1 -1
- package/dist/core/caps/DbNotifyCaps.d.ts +1 -1
- package/dist/core/caps/DbNotifyCaps.d.ts.map +1 -1
- package/dist/core/caps/DbNotifyCaps.js +6 -4
- package/dist/core/caps/DbNotifyCaps.js.map +1 -1
- package/dist/core/caps/DbProjectionCaps.d.ts +1 -0
- package/dist/core/caps/DbProjectionCaps.d.ts.map +1 -1
- package/dist/core/caps/DbProjectionCaps.js +29 -0
- package/dist/core/caps/DbProjectionCaps.js.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.d.ts +4 -6
- package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.js +27 -13
- package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.d.ts +11 -3
- package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.js +10 -8
- package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
- package/dist/core/fork.d.ts.map +1 -1
- package/dist/core/fork.js +23 -7
- package/dist/core/fork.js.map +1 -1
- package/dist/core/fork.sql +35 -14
- package/dist/core/git-iso.d.ts +3 -2
- package/dist/core/git-iso.d.ts.map +1 -1
- package/dist/core/git-iso.js +27 -12
- package/dist/core/git-iso.js.map +1 -1
- package/dist/core/git-membership.d.ts +1 -0
- package/dist/core/git-membership.d.ts.map +1 -1
- package/dist/core/git-membership.js +87 -26
- package/dist/core/git-membership.js.map +1 -1
- package/dist/core/git-state.d.ts +8 -1
- package/dist/core/git-state.d.ts.map +1 -1
- package/dist/core/git-state.js +36 -17
- package/dist/core/git-state.js.map +1 -1
- package/dist/core/namespace.d.ts +1 -0
- package/dist/core/namespace.d.ts.map +1 -1
- package/dist/core/namespace.js +20 -0
- package/dist/core/namespace.js.map +1 -1
- package/dist/core/optimistic-settlement.d.ts +2 -0
- package/dist/core/optimistic-settlement.d.ts.map +1 -0
- package/dist/core/optimistic-settlement.js +14 -0
- package/dist/core/optimistic-settlement.js.map +1 -0
- package/dist/core/packet-wire.d.ts +5 -2
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +318 -114
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/provider-accounting.d.ts +24 -0
- package/dist/core/provider-accounting.d.ts.map +1 -0
- package/dist/core/provider-accounting.js +76 -0
- package/dist/core/provider-accounting.js.map +1 -0
- package/dist/core/results.d.ts +4 -2
- package/dist/core/results.d.ts.map +1 -1
- package/dist/core/results.js +6 -0
- package/dist/core/results.js.map +1 -1
- package/dist/core/scheme-types.d.ts +0 -12
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/scheme-types.js.map +1 -1
- package/dist/core/search-gate.d.ts +2 -2
- package/dist/core/search-gate.d.ts.map +1 -1
- package/dist/core/search-gate.js +8 -8
- package/dist/core/search-gate.js.map +1 -1
- package/dist/core/token-ruler.js +1 -1
- package/dist/core/token-ruler.js.map +1 -1
- package/dist/core/turn-scheduler.js +1 -1
- package/dist/core/turn-scheduler.js.map +1 -1
- package/dist/core/worker-ops.sql +4 -4
- package/dist/core/workspace-settings.js +1 -1
- package/dist/core/workspace-settings.js.map +1 -1
- package/dist/digest/Digest.d.ts.map +1 -1
- package/dist/digest/Digest.js +349 -76
- package/dist/digest/Digest.js.map +1 -1
- package/dist/digest/digest.sql +42 -16
- package/dist/schemes/Exec.d.ts +4 -4
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +167 -134
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/ExecOutputScheme.d.ts +4 -5
- package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
- package/dist/schemes/ExecOutputScheme.js +12 -20
- package/dist/schemes/ExecOutputScheme.js.map +1 -1
- package/dist/schemes/File.d.ts +5 -6
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +35 -41
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts +16 -5
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +229 -262
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Log.sql +50 -27
- package/dist/schemes/Prompt.d.ts +3 -4
- package/dist/schemes/Prompt.d.ts.map +1 -1
- package/dist/schemes/Prompt.js +5 -5
- package/dist/schemes/Prompt.js.map +1 -1
- package/dist/schemes/Skill.d.ts +4 -5
- package/dist/schemes/Skill.d.ts.map +1 -1
- package/dist/schemes/Skill.js +3 -3
- package/dist/schemes/Skill.js.map +1 -1
- package/dist/schemes/Worker.d.ts +7 -7
- package/dist/schemes/Worker.d.ts.map +1 -1
- package/dist/schemes/Worker.js +99 -84
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/schemes/_entry-crud.d.ts +2 -2
- package/dist/schemes/_entry-crud.d.ts.map +1 -1
- package/dist/schemes/_entry-crud.js +29 -10
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-crud.sql +11 -17
- package/dist/schemes/_entry-find.d.ts +41 -14
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +159 -166
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-find.sql +2 -21
- package/dist/schemes/_entry-graph.sql +1 -1
- package/dist/schemes/_entry-manifest.d.ts +5 -17
- package/dist/schemes/_entry-manifest.d.ts.map +1 -1
- package/dist/schemes/_entry-manifest.js +28 -24
- package/dist/schemes/_entry-manifest.js.map +1 -1
- package/dist/schemes/_entry-ops.d.ts +13 -8
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +98 -119
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_entry-ops.sql +31 -6
- package/dist/schemes/_entry-semantic.d.ts +5 -7
- package/dist/schemes/_entry-semantic.d.ts.map +1 -1
- package/dist/schemes/_entry-semantic.js +10 -31
- package/dist/schemes/_entry-semantic.js.map +1 -1
- package/dist/schemes/_entry-semantic.sql +2 -2
- package/dist/schemes/_entry-send.js +4 -4
- package/dist/schemes/_entry-send.js.map +1 -1
- package/dist/schemes/_search-index.d.ts.map +1 -1
- package/dist/schemes/_search-index.js +16 -6
- package/dist/schemes/_search-index.js.map +1 -1
- package/dist/schemes/exec-abort.js +2 -2
- package/dist/schemes/exec-abort.js.map +1 -1
- package/dist/server/BranchBatches.d.ts +1 -0
- package/dist/server/BranchBatches.d.ts.map +1 -1
- package/dist/server/BranchBatches.js +1 -0
- package/dist/server/BranchBatches.js.map +1 -1
- package/dist/server/Daemon.d.ts +6 -8
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +238 -68
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DaemonModule.d.ts +3 -3
- package/dist/server/DaemonModule.d.ts.map +1 -1
- package/dist/server/branch-batch.sql +3 -1
- package/dist/server/client-input.d.ts +2 -1
- package/dist/server/client-input.d.ts.map +1 -1
- package/dist/server/client-input.js +7 -1
- package/dist/server/client-input.js.map +1 -1
- package/dist/server/drain.sql +8 -7
- package/dist/server/envelope.d.ts +0 -2
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +0 -1
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/envelope.sql +3 -4
- package/dist/server/lifecycle-recovery.sql +44 -1
- package/dist/server/logEntry.d.ts +2 -1
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +15 -2
- package/dist/server/logEntry.js.map +1 -1
- package/dist/server/logEntry.sql +5 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +13 -1
- package/dist/service.js.map +1 -1
- package/migrations/001_schema.sql +730 -221
- package/package.json +53 -46
- package/dist/core/BudgetOverflow.d.ts +0 -23
- package/dist/core/BudgetOverflow.d.ts.map +0 -1
- package/dist/core/BudgetOverflow.js +0 -61
- package/dist/core/BudgetOverflow.js.map +0 -1
- package/dist/core/caps/DbTagCaps.d.ts +0 -10
- package/dist/core/caps/DbTagCaps.d.ts.map +0 -1
- package/dist/core/caps/DbTagCaps.js +0 -44
- package/dist/core/caps/DbTagCaps.js.map +0 -1
- package/dist/matrix/live-specimen.d.ts +0 -9
- package/dist/matrix/live-specimen.d.ts.map +0 -1
- package/dist/matrix/live-specimen.js +0 -37
- package/dist/matrix/live-specimen.js.map +0 -1
package/dist/Paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Paths.d.ts","sourceRoot":"","sources":["../src/Paths.ts"],"names":[],"mappings":"AAYA,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,CAAC,OAAO,OAAO,KAAK;;IAKtB,MAAM,CAAC,QAAQ,CAAC,YAAY,SAAmF;IAE/G,MAAM,CAAC,UAAU,SAA8C;IAC/D,MAAM,CAAC,kBAAkB,SAA+C;IAExE,MAAM,CAAC,WAAW,SAAqD;IAGvE,MAAM,CAAC,mBAAmB,SAAoC;IAC9D,MAAM,CAAC,iCAAiC,8BAAsC;IAE9E,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAE1D;
|
|
1
|
+
{"version":3,"file":"Paths.d.ts","sourceRoot":"","sources":["../src/Paths.ts"],"names":[],"mappings":"AAYA,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,CAAC,OAAO,OAAO,KAAK;;IAKtB,MAAM,CAAC,QAAQ,CAAC,YAAY,SAAmF;IAE/G,MAAM,CAAC,UAAU,SAA8C;IAC/D,MAAM,CAAC,kBAAkB,SAA+C;IAExE,MAAM,CAAC,WAAW,SAAqD;IAGvE,MAAM,CAAC,mBAAmB,SAAoC;IAC9D,MAAM,CAAC,iCAAiC,8BAAsC;IAE9E,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAE1D;IAoBD,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAUxD;CACJ"}
|
package/dist/Paths.js
CHANGED
|
@@ -20,15 +20,14 @@ export default class Paths {
|
|
|
20
20
|
static instructionsSystem = resolve(Paths.#CONTRACTS_ROOT, "plurnk.md");
|
|
21
21
|
// The first-run policy seed and built-in/conditional pull-doc sources.
|
|
22
22
|
static personality = Paths.teachingSource(TEACHING_CORPUS.personality);
|
|
23
|
-
// {§requirements} —
|
|
23
|
+
// {§requirements} — meta-owned default Recap and its operator override.
|
|
24
24
|
static #DEFAULT_REQUIREMENTS = Paths.#resolveDefaultRequirements();
|
|
25
25
|
static defaultRequirements = Paths.#DEFAULT_REQUIREMENTS.path;
|
|
26
26
|
static defaultRequirementsTeachingSource = Paths.#DEFAULT_REQUIREMENTS.source;
|
|
27
27
|
static teachingSource(source) {
|
|
28
28
|
return resolve(Paths.teachingRoot, source);
|
|
29
29
|
}
|
|
30
|
-
//
|
|
31
|
-
// or relative-to-package-root) overrides the docs package's `requirements.md`.
|
|
30
|
+
// Absolute overrides stay absolute; relative paths resolve from the package root.
|
|
32
31
|
static #resolveDefaultRequirements() {
|
|
33
32
|
const env = process.env.PLURNK_SERVICE_REQUIREMENTS;
|
|
34
33
|
if (typeof env === "string" && env.length > 0) {
|
package/dist/Paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Paths.js","sourceRoot":"","sources":["../src/Paths.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,gDAAgD;AAChD,wEAAwE;AACxE,kEAAkE;AAClE,EAAE;AACF,8EAA8E;AAC9E,mDAAmD;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,eAAe,EAA6B,MAAM,qBAAqB,CAAC;AAEjF,MAAM,CAAC,OAAO,OAAO,KAAK;IACtB,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC;IAC9G,mEAAmE;IACnE,mEAAmE;IACnE,MAAM,CAAU,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC;IAE/G,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC/D,MAAM,CAAC,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IACxE,uEAAuE;IACvE,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IACvE,
|
|
1
|
+
{"version":3,"file":"Paths.js","sourceRoot":"","sources":["../src/Paths.ts"],"names":[],"mappings":"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"}
|
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"package":"@plurnk/plurnk-service","version":"1.
|
|
1
|
+
{"package":"@plurnk/plurnk-service","version":"1.6.0","revision":"e2fcbda41d19c353fe327c8034fe1a5b0ed51758","dirty":false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-collision.d.ts","sourceRoot":"","sources":["../../src/content/edit-collision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,MAAM,CAAC,MAAM,CACT,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,GAC/C,YAAY,CAad;CACJ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Results from "../core/results.js";
|
|
2
|
+
// One neutral public outcome for an otherwise-valid EDIT that loses a resource
|
|
3
|
+
// claim or whose observed representation changes before landing. The detection
|
|
4
|
+
// layer is absent from the diagnosis: concurrent correct workers are ordinary.
|
|
5
|
+
export default class EditCollision {
|
|
6
|
+
static result(target, fields = {}) {
|
|
7
|
+
return Results.failure("engine:edit", "edit-collision", 409, `EDIT collided with another change at ${target}.`, fields, {
|
|
8
|
+
target,
|
|
9
|
+
recovery: `READ ${target} again and retry the intended edit against its current coordinates.`,
|
|
10
|
+
retryable: true,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=edit-collision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-collision.js","sourceRoot":"","sources":["../../src/content/edit-collision.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,oBAAoB,CAAC;AAEzC,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,MAAM,CAAC,MAAM,CACT,MAAc,EACd,MAAM,GAAsC,EAAE;QAE9C,OAAO,OAAO,CAAC,OAAO,CAClB,aAAa,EACb,gBAAgB,EAChB,GAAG,EACH,wCAAwC,MAAM,GAAG,EACjD,MAAM,EACN;YACI,MAAM;YACN,QAAQ,EAAE,QAAQ,MAAM,qEAAqE;YAC7F,SAAS,EAAE,IAAI;SAClB,CACJ,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -15,6 +15,7 @@ export declare const assertEditReceipt: (value: unknown) => EditReceipt;
|
|
|
15
15
|
export declare const assertEditBatchReceipt: (value: unknown) => EditBatchReceipt;
|
|
16
16
|
export declare const assertResourceEffects: (value: unknown) => readonly ResourceEffect[];
|
|
17
17
|
export declare const projectEditReceipt: (receipt: EditBatchReceipt, index: number) => EditReceipt;
|
|
18
|
-
export declare const editReceipt: (original: string, updated: string, edits: readonly ReceiptEdit[]) => AppliedEditBatchReceipt;
|
|
19
|
-
export declare const
|
|
18
|
+
export declare const editReceipt: (original: string, updated: string, edits: readonly ReceiptEdit[], parseIssues?: number) => AppliedEditBatchReceipt;
|
|
19
|
+
export declare const withEditReceiptParseIssues: (receipt: EditBatchReceipt, parseIssues: number | undefined) => EditBatchReceipt;
|
|
20
|
+
export declare const reviewerReplacementReceipt: (original: string, updated: string, authored: EditBatchReceipt, parseIssues?: number) => ReviewerReplacementEditBatchReceipt;
|
|
20
21
|
//# sourceMappingURL=edit-receipt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-receipt.d.ts","sourceRoot":"","sources":["../../src/content/edit-receipt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EACR,uBAAuB,EACvB,gBAAgB,EAEhB,WAAW,EAEX,mCAAmC,EACtC,MAAM,wBAAwB,CAAC;AAGhC,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED,YAAY,EACR,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,mCAAmC,GACtC,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElE,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;CAClC;
|
|
1
|
+
{"version":3,"file":"edit-receipt.d.ts","sourceRoot":"","sources":["../../src/content/edit-receipt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EACR,uBAAuB,EACvB,gBAAgB,EAEhB,WAAW,EAEX,mCAAmC,EACtC,MAAM,wBAAwB,CAAC;AAGhC,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED,YAAY,EACR,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,mCAAmC,GACtC,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElE,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;CAClC;AAgGD,eAAO,MAAM,iBAAiB,UAAW,OAAO,KAAG,WAuBlD,CAAC;AAEF,eAAO,MAAM,sBAAsB,UAAW,OAAO,KAAG,gBA4BvD,CAAC;AAEF,eAAO,MAAM,qBAAqB,UAAW,OAAO,KAAG,SAAS,cAAc,EAqC7E,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAAa,gBAAgB,SAAS,MAAM,KAAG,WA0B7E,CAAC;AA+MF,eAAO,MAAM,WAAW,aACV,MAAM,WACP,MAAM,SACR,SAAS,WAAW,EAAE,gBACf,MAAM,KACrB,uBAoBF,CAAC;AAEF,eAAO,MAAM,0BAA0B,YAC1B,gBAAgB,eACZ,MAAM,GAAG,SAAS,KAChC,gBAQF,CAAC;AAEF,eAAO,MAAM,0BAA0B,aACzB,MAAM,WACP,MAAM,YACL,gBAAgB,gBACZ,MAAM,KACrB,mCA2BF,CAAC"}
|
|
@@ -23,6 +23,19 @@ const assertExtent = (value, field) => {
|
|
|
23
23
|
throw new InvalidOperationResultError(`EDIT receipt ${field} must be a non-negative safe integer.`);
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
|
+
const assertParseIssues = (value) => {
|
|
27
|
+
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
28
|
+
throw new InvalidOperationResultError("EDIT receipt parseIssues must be a positive safe integer.");
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const receiptFields = (receipt, tail) => [
|
|
32
|
+
"revision",
|
|
33
|
+
"unit",
|
|
34
|
+
"before",
|
|
35
|
+
"after",
|
|
36
|
+
...(Object.hasOwn(receipt, "parseIssues") ? ["parseIssues"] : []),
|
|
37
|
+
...tail,
|
|
38
|
+
];
|
|
26
39
|
const assertEffectReceipt = (value) => {
|
|
27
40
|
const effect = receiptRecord(value, "EDIT effect receipt");
|
|
28
41
|
exactFields(effect, ["requested", "source", "result", "removed", "inserted", "context"], "EDIT effect receipt");
|
|
@@ -44,13 +57,15 @@ const assertReceiptHead = (receipt, label) => {
|
|
|
44
57
|
}
|
|
45
58
|
assertExtent(receipt.before, "before");
|
|
46
59
|
assertExtent(receipt.after, "after");
|
|
60
|
+
if (Object.hasOwn(receipt, "parseIssues"))
|
|
61
|
+
assertParseIssues(receipt.parseIssues);
|
|
47
62
|
};
|
|
48
63
|
export const assertEditReceipt = (value) => {
|
|
49
64
|
const receipt = receiptRecord(value, "EDIT receipt");
|
|
50
65
|
if (receipt.disposition === "superseded") {
|
|
51
66
|
exactFields(receipt, Object.hasOwn(receipt, "replacement")
|
|
52
|
-
?
|
|
53
|
-
:
|
|
67
|
+
? receiptFields(receipt, ["disposition", "requested", "replacement"])
|
|
68
|
+
: receiptFields(receipt, ["disposition", "requested"]), "EDIT receipt");
|
|
54
69
|
assertReceiptHead(receipt, "EDIT receipt");
|
|
55
70
|
if (typeof receipt.requested !== "string" || receipt.requested.length === 0) {
|
|
56
71
|
throw new InvalidOperationResultError("A superseded EDIT receipt requested marker must be a non-empty string.");
|
|
@@ -59,7 +74,7 @@ export const assertEditReceipt = (value) => {
|
|
|
59
74
|
assertEffectReceipt(receipt.replacement);
|
|
60
75
|
return value;
|
|
61
76
|
}
|
|
62
|
-
exactFields(receipt,
|
|
77
|
+
exactFields(receipt, receiptFields(receipt, ["effect"]), "EDIT receipt");
|
|
63
78
|
assertReceiptHead(receipt, "EDIT receipt");
|
|
64
79
|
assertEffectReceipt(receipt.effect);
|
|
65
80
|
return value;
|
|
@@ -67,7 +82,7 @@ export const assertEditReceipt = (value) => {
|
|
|
67
82
|
export const assertEditBatchReceipt = (value) => {
|
|
68
83
|
const receipt = receiptRecord(value, "EDIT batch receipt");
|
|
69
84
|
if (receipt.disposition === "reviewer-replaced") {
|
|
70
|
-
exactFields(receipt,
|
|
85
|
+
exactFields(receipt, receiptFields(receipt, ["disposition", "superseded", "replacement"]), "EDIT batch receipt");
|
|
71
86
|
assertReceiptHead(receipt, "EDIT batch receipt");
|
|
72
87
|
if (!Array.isArray(receipt.superseded)
|
|
73
88
|
|| receipt.superseded.length === 0
|
|
@@ -77,7 +92,7 @@ export const assertEditBatchReceipt = (value) => {
|
|
|
77
92
|
assertEffectReceipt(receipt.replacement);
|
|
78
93
|
return value;
|
|
79
94
|
}
|
|
80
|
-
exactFields(receipt,
|
|
95
|
+
exactFields(receipt, receiptFields(receipt, ["effects"]), "EDIT batch receipt");
|
|
81
96
|
assertReceiptHead(receipt, "EDIT batch receipt");
|
|
82
97
|
if (!Array.isArray(receipt.effects) || receipt.effects.length === 0) {
|
|
83
98
|
throw new InvalidOperationResultError("EDIT batch receipt effects must be a non-empty array.");
|
|
@@ -127,6 +142,7 @@ export const projectEditReceipt = (receipt, index) => {
|
|
|
127
142
|
unit: exact.unit,
|
|
128
143
|
before: exact.before,
|
|
129
144
|
after: exact.after,
|
|
145
|
+
...(exact.parseIssues === undefined ? {} : { parseIssues: exact.parseIssues }),
|
|
130
146
|
disposition: "superseded",
|
|
131
147
|
requested,
|
|
132
148
|
...(index === 0 ? { replacement: exact.replacement } : {}),
|
|
@@ -140,6 +156,7 @@ export const projectEditReceipt = (receipt, index) => {
|
|
|
140
156
|
unit: exact.unit,
|
|
141
157
|
before: exact.before,
|
|
142
158
|
after: exact.after,
|
|
159
|
+
...(exact.parseIssues === undefined ? {} : { parseIssues: exact.parseIssues }),
|
|
143
160
|
effect,
|
|
144
161
|
};
|
|
145
162
|
};
|
|
@@ -284,12 +301,26 @@ const addContext = (effects, updated) => {
|
|
|
284
301
|
const lines = splitLines(updated);
|
|
285
302
|
const radius = contextRadius();
|
|
286
303
|
return effects.map((effect) => {
|
|
287
|
-
const
|
|
288
|
-
const
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
304
|
+
const selected = new Set();
|
|
305
|
+
const addRange = (first, last) => {
|
|
306
|
+
for (let line = Math.max(1, first); line <= Math.min(lines.length, last); line += 1) {
|
|
307
|
+
selected.add(line);
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
const firstChanged = effect.resultStartLine;
|
|
311
|
+
const lastChanged = Math.max(firstChanged, effect.resultEndLine);
|
|
312
|
+
addRange(firstChanged - radius, firstChanged - 1);
|
|
313
|
+
if (effect.inserted > 0) {
|
|
314
|
+
addRange(firstChanged, firstChanged + radius - 1);
|
|
315
|
+
addRange(lastChanged - radius + 1, lastChanged);
|
|
316
|
+
addRange(lastChanged + 1, lastChanged + radius);
|
|
292
317
|
}
|
|
318
|
+
else {
|
|
319
|
+
addRange(firstChanged, firstChanged + radius - 1);
|
|
320
|
+
}
|
|
321
|
+
const context = [...selected]
|
|
322
|
+
.sort((left, right) => left - right)
|
|
323
|
+
.map((line) => `${line}:${lines[line - 1]}`);
|
|
293
324
|
const { resultStartLine: _resultStartLine, resultEndLine: _resultEndLine, ...receipt } = effect;
|
|
294
325
|
return {
|
|
295
326
|
...receipt,
|
|
@@ -297,7 +328,9 @@ const addContext = (effects, updated) => {
|
|
|
297
328
|
};
|
|
298
329
|
});
|
|
299
330
|
};
|
|
300
|
-
export const editReceipt = (original, updated, edits) => {
|
|
331
|
+
export const editReceipt = (original, updated, edits, parseIssues) => {
|
|
332
|
+
if (parseIssues !== undefined)
|
|
333
|
+
assertParseIssues(parseIssues);
|
|
301
334
|
const unit = edits.some(({ marker }) => marker.marks.length === 4)
|
|
302
335
|
? "codePoints"
|
|
303
336
|
: "lines";
|
|
@@ -313,15 +346,26 @@ export const editReceipt = (original, updated, edits) => {
|
|
|
313
346
|
after: unit === "codePoints"
|
|
314
347
|
? codePointCount(updated)
|
|
315
348
|
: splitLines(updated).length,
|
|
349
|
+
...(parseIssues === undefined ? {} : { parseIssues }),
|
|
316
350
|
effects: addContext(effects, updated),
|
|
317
351
|
};
|
|
318
352
|
};
|
|
319
|
-
export const
|
|
353
|
+
export const withEditReceiptParseIssues = (receipt, parseIssues) => {
|
|
354
|
+
if (parseIssues !== undefined)
|
|
355
|
+
assertParseIssues(parseIssues);
|
|
356
|
+
const exact = assertEditBatchReceipt(receipt);
|
|
357
|
+
const { parseIssues: _prior, ...withoutPrior } = exact;
|
|
358
|
+
return assertEditBatchReceipt({
|
|
359
|
+
...withoutPrior,
|
|
360
|
+
...(parseIssues === undefined ? {} : { parseIssues }),
|
|
361
|
+
});
|
|
362
|
+
};
|
|
363
|
+
export const reviewerReplacementReceipt = (original, updated, authored, parseIssues) => {
|
|
320
364
|
const exact = assertEditBatchReceipt(authored);
|
|
321
365
|
if ("disposition" in exact) {
|
|
322
366
|
throw new InvalidOperationResultError("A reviewer replacement cannot supersede an already replaced EDIT batch receipt.");
|
|
323
367
|
}
|
|
324
|
-
const landed = editReceipt(original, updated, [{ marker: { marks: [1, -1] }, body: updated }]);
|
|
368
|
+
const landed = editReceipt(original, updated, [{ marker: { marks: [1, -1] }, body: updated }], parseIssues);
|
|
325
369
|
const replacement = landed.effects[0];
|
|
326
370
|
if (replacement === undefined) {
|
|
327
371
|
throw new Error("Reviewer replacement receipt omitted its landed effect.");
|
|
@@ -331,6 +375,7 @@ export const reviewerReplacementReceipt = (original, updated, authored) => {
|
|
|
331
375
|
unit: landed.unit,
|
|
332
376
|
before: landed.before,
|
|
333
377
|
after: landed.after,
|
|
378
|
+
...(landed.parseIssues === undefined ? {} : { parseIssues: landed.parseIssues }),
|
|
334
379
|
disposition: "reviewer-replaced",
|
|
335
380
|
superseded: exact.effects.map(({ requested }) => requested),
|
|
336
381
|
replacement,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-receipt.js","sourceRoot":"","sources":["../../src/content/edit-receipt.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"edit-receipt.js","sourceRoot":"","sources":["../../src/content/edit-receipt.ts"],"names":[],"mappings":"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"}
|
package/dist/content/index.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
export { default as MimetypeBinary } from "./mimetype-binary.ts";
|
|
2
2
|
export { default as LineMarkerOps } from "./line-marker.ts";
|
|
3
3
|
export type { EditResult as LineEditResult, SliceResult } from "./line-marker.ts";
|
|
4
|
+
export { default as LineAnchors } from "./line-anchors.ts";
|
|
5
|
+
export { default as EditCollision } from "./edit-collision.ts";
|
|
6
|
+
export type { LineAnchorCheck, LineAnchorFailure, LineAnchorPrecondition, LineAnchorResolution, } from "./line-anchors.ts";
|
|
4
7
|
export { default as PathMimetype } from "./path-mimetype.ts";
|
|
5
8
|
export { default as Matcher } from "./matcher.ts";
|
|
6
9
|
export type { MatchResult } from "./matcher.ts";
|
|
7
10
|
export { default as ReadResolve } from "./read-resolve.ts";
|
|
8
11
|
export type { ReadSliceResult } from "./read-resolve.ts";
|
|
12
|
+
export { default as ReadProjector } from "./read-projector.ts";
|
|
9
13
|
export { editedSpan } from "./edited-span.ts";
|
|
10
|
-
export { assertEditBatchReceipt, assertEditReceipt, assertResourceEffects, editReceipt, projectEditReceipt, reviewerReplacementReceipt, } from "./edit-receipt.ts";
|
|
14
|
+
export { assertEditBatchReceipt, assertEditReceipt, assertResourceEffects, editReceipt, projectEditReceipt, reviewerReplacementReceipt, withEditReceiptParseIssues, } from "./edit-receipt.ts";
|
|
11
15
|
export type { AppliedEditBatchReceipt, EditBatchReceipt, EditEffectReceipt, EditReceipt, EditReceiptUnit, ReviewerReplacementEditBatchReceipt, ReceiptEdit, ResourceEffect, ResourceEffectAction, } from "./edit-receipt.ts";
|
|
12
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,UAAU,IAAI,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,UAAU,IAAI,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/D,YAAY,EACR,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACH,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACR,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,mCAAmC,EACnC,WAAW,EACX,cAAc,EACd,oBAAoB,GACvB,MAAM,mBAAmB,CAAC"}
|
package/dist/content/index.js
CHANGED
|
@@ -4,9 +4,12 @@
|
|
|
4
4
|
// misnamed: this is service-level content logic, not protocol-specific.
|
|
5
5
|
export { default as MimetypeBinary } from "./mimetype-binary.js";
|
|
6
6
|
export { default as LineMarkerOps } from "./line-marker.js";
|
|
7
|
+
export { default as LineAnchors } from "./line-anchors.js";
|
|
8
|
+
export { default as EditCollision } from "./edit-collision.js";
|
|
7
9
|
export { default as PathMimetype } from "./path-mimetype.js";
|
|
8
10
|
export { default as Matcher } from "./matcher.js";
|
|
9
11
|
export { default as ReadResolve } from "./read-resolve.js";
|
|
12
|
+
export { default as ReadProjector } from "./read-projector.js";
|
|
10
13
|
export { editedSpan } from "./edited-span.js";
|
|
11
|
-
export { assertEditBatchReceipt, assertEditReceipt, assertResourceEffects, editReceipt, projectEditReceipt, reviewerReplacementReceipt, } from "./edit-receipt.js";
|
|
14
|
+
export { assertEditBatchReceipt, assertEditReceipt, assertResourceEffects, editReceipt, projectEditReceipt, reviewerReplacementReceipt, withEditReceiptParseIssues, } from "./edit-receipt.js";
|
|
12
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,qEAAqE;AACrE,wEAAwE;AAExE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,qEAAqE;AACrE,wEAAwE;AAExE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQ/D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACH,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,GAC7B,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { LineMarker, TextLineMarker } from "@plurnk/plurnk-contracts";
|
|
2
|
+
import type { EditStatement } from "@plurnk/plurnk-contracts";
|
|
3
|
+
import type { ResolvedEditStatement } from "@plurnk/plurnk-schemes";
|
|
4
|
+
export type LineAnchorFailure = {
|
|
5
|
+
readonly kind: "invalid" | "stale" | "ambiguous";
|
|
6
|
+
readonly anchor: string;
|
|
7
|
+
readonly matches?: readonly number[];
|
|
8
|
+
};
|
|
9
|
+
export type LineAnchorResolution = {
|
|
10
|
+
readonly ok: true;
|
|
11
|
+
readonly marker: LineMarker;
|
|
12
|
+
} | {
|
|
13
|
+
readonly ok: false;
|
|
14
|
+
readonly failure: LineAnchorFailure;
|
|
15
|
+
};
|
|
16
|
+
export interface LineAnchorCheck {
|
|
17
|
+
readonly anchor: string;
|
|
18
|
+
readonly line: number;
|
|
19
|
+
}
|
|
20
|
+
export interface LineAnchorPrecondition {
|
|
21
|
+
readonly identity: string;
|
|
22
|
+
readonly checks: readonly LineAnchorCheck[];
|
|
23
|
+
}
|
|
24
|
+
export default class LineAnchors {
|
|
25
|
+
#private;
|
|
26
|
+
static isAnchor(value: unknown): value is string;
|
|
27
|
+
static isAnchoredLine(value: string): boolean;
|
|
28
|
+
static isLineNumberWidth(value: unknown): value is number;
|
|
29
|
+
static hasAnchor(marker: TextLineMarker | null): marker is TextLineMarker;
|
|
30
|
+
static assertResolved(statements: readonly EditStatement[]): asserts statements is readonly ResolvedEditStatement[];
|
|
31
|
+
static satisfies(precondition: LineAnchorPrecondition, content: string): boolean;
|
|
32
|
+
static tokens(identity: string, content: string): readonly string[];
|
|
33
|
+
static token(identity: string, lineNumber: number, content: string): string;
|
|
34
|
+
static lineNumberWidth(content: string): number;
|
|
35
|
+
static project(identity: string, completeContent: string, projectedContent: string, startLine: number): readonly string[];
|
|
36
|
+
static assertProjection(content: string, anchors: unknown): asserts anchors is readonly string[];
|
|
37
|
+
static render(content: string, startLine: number, anchors: readonly string[], lineNumberWidth: number): string;
|
|
38
|
+
static resolve(anchors: readonly string[], marker: TextLineMarker): LineAnchorResolution;
|
|
39
|
+
static checks(authored: TextLineMarker, resolved: LineMarker): readonly LineAnchorCheck[];
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=line-anchors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-anchors.d.ts","sourceRoot":"","sources":["../../src/content/line-anchors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { TextCoordinates } from "@plurnk/plurnk-mimetypes";
|
|
3
|
+
// A rendered anchor is a short, copyable validation handle, never resource
|
|
4
|
+
// identity by itself. The universal READ projector supplies snapshot anchors;
|
|
5
|
+
// current resolution fails closed on zero or multiple matches.
|
|
6
|
+
export default class LineAnchors {
|
|
7
|
+
static #ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
|
8
|
+
static #LENGTH = 5;
|
|
9
|
+
static #MODULUS = BigInt(LineAnchors.#ALPHABET.length) ** BigInt(LineAnchors.#LENGTH);
|
|
10
|
+
static #MAX_LINE_NUMBER_WIDTH = String(Number.MAX_SAFE_INTEGER).length;
|
|
11
|
+
static #TOKEN = /^@[0-9A-Za-z]{5}$/;
|
|
12
|
+
static #PREFIXED_LINE = /^@[0-9A-Za-z]{5} +[1-9]\d*:/;
|
|
13
|
+
static isAnchor(value) {
|
|
14
|
+
return typeof value === "string" && LineAnchors.#TOKEN.test(value);
|
|
15
|
+
}
|
|
16
|
+
static isAnchoredLine(value) {
|
|
17
|
+
return LineAnchors.#PREFIXED_LINE.test(value);
|
|
18
|
+
}
|
|
19
|
+
static isLineNumberWidth(value) {
|
|
20
|
+
return Number.isSafeInteger(value)
|
|
21
|
+
&& value >= 1
|
|
22
|
+
&& value <= LineAnchors.#MAX_LINE_NUMBER_WIDTH;
|
|
23
|
+
}
|
|
24
|
+
static hasAnchor(marker) {
|
|
25
|
+
return marker?.marks.some((mark) => typeof mark === "string") ?? false;
|
|
26
|
+
}
|
|
27
|
+
static assertResolved(statements) {
|
|
28
|
+
if (statements.some(({ lineMarker }) => LineAnchors.hasAnchor(lineMarker))) {
|
|
29
|
+
throw new TypeError("An unresolved line anchor crossed the core-to-scheme boundary.");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
static satisfies(precondition, content) {
|
|
33
|
+
if (precondition.identity.length === 0 || precondition.checks.length === 0) {
|
|
34
|
+
throw new TypeError("A line-anchor precondition requires an identity and at least one check.");
|
|
35
|
+
}
|
|
36
|
+
const current = LineAnchors.tokens(precondition.identity, content);
|
|
37
|
+
return precondition.checks.every(({ anchor, line }) => {
|
|
38
|
+
if (!LineAnchors.isAnchor(anchor) || !Number.isSafeInteger(line) || line < 1) {
|
|
39
|
+
throw new TypeError("A line-anchor precondition contains an invalid check.");
|
|
40
|
+
}
|
|
41
|
+
return current[line - 1] === anchor;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
static #contextLines() {
|
|
45
|
+
const raw = process.env.PLURNK_SERVICE_LINE_ANCHOR_CONTEXT_LINES;
|
|
46
|
+
const value = Number(raw);
|
|
47
|
+
if (!Number.isSafeInteger(value) || value < 0) {
|
|
48
|
+
throw new RangeError(`PLURNK_SERVICE_LINE_ANCHOR_CONTEXT_LINES must be a non-negative safe integer, got ${JSON.stringify(raw)}`);
|
|
49
|
+
}
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
static #encode(identity, lineNumber, contextLines, context) {
|
|
53
|
+
if (identity.length === 0)
|
|
54
|
+
throw new TypeError("A line anchor requires a non-empty resource identity.");
|
|
55
|
+
if (!Number.isSafeInteger(lineNumber) || lineNumber < 1) {
|
|
56
|
+
throw new RangeError(`A line anchor requires a positive safe line number, got ${lineNumber}.`);
|
|
57
|
+
}
|
|
58
|
+
const digest = createHash("sha256")
|
|
59
|
+
.update(JSON.stringify(["plurnk-line-anchor-v1", identity, lineNumber, contextLines, context]))
|
|
60
|
+
.digest("hex");
|
|
61
|
+
let value = BigInt(`0x${digest}`) % LineAnchors.#MODULUS;
|
|
62
|
+
let encoded = "";
|
|
63
|
+
for (let index = 0; index < LineAnchors.#LENGTH; index += 1) {
|
|
64
|
+
encoded = LineAnchors.#ALPHABET[Number(value % BigInt(LineAnchors.#ALPHABET.length))] + encoded;
|
|
65
|
+
value /= BigInt(LineAnchors.#ALPHABET.length);
|
|
66
|
+
}
|
|
67
|
+
return `@${encoded}`;
|
|
68
|
+
}
|
|
69
|
+
static tokens(identity, content) {
|
|
70
|
+
const contextLines = LineAnchors.#contextLines();
|
|
71
|
+
const lines = TextCoordinates.logicalLines(content);
|
|
72
|
+
const bodies = lines.map((line) => content.slice(line.start, line.contentEnd));
|
|
73
|
+
return bodies.map((_, index) => LineAnchors.#encode(identity, index + 1, contextLines, bodies.slice(Math.max(0, index - contextLines), index + contextLines + 1)));
|
|
74
|
+
}
|
|
75
|
+
static token(identity, lineNumber, content) {
|
|
76
|
+
const token = LineAnchors.tokens(identity, content)[lineNumber - 1];
|
|
77
|
+
if (token === undefined) {
|
|
78
|
+
throw new RangeError(`Line ${lineNumber} is outside the available line range.`);
|
|
79
|
+
}
|
|
80
|
+
return token;
|
|
81
|
+
}
|
|
82
|
+
static lineNumberWidth(content) {
|
|
83
|
+
return String(Math.max(TextCoordinates.logicalLines(content).length, 1)).length;
|
|
84
|
+
}
|
|
85
|
+
static project(identity, completeContent, projectedContent, startLine) {
|
|
86
|
+
if (projectedContent.length === 0)
|
|
87
|
+
return [];
|
|
88
|
+
if (!Number.isSafeInteger(startLine) || startLine < 1) {
|
|
89
|
+
throw new RangeError(`Anchored projection requires a positive safe start line, got ${startLine}.`);
|
|
90
|
+
}
|
|
91
|
+
const count = TextCoordinates.logicalLines(projectedContent).length;
|
|
92
|
+
const projected = LineAnchors.tokens(identity, completeContent).slice(startLine - 1, startLine - 1 + count);
|
|
93
|
+
if (projected.length !== count) {
|
|
94
|
+
throw new RangeError("The projected READ content extends beyond the complete canonical representation.");
|
|
95
|
+
}
|
|
96
|
+
return projected;
|
|
97
|
+
}
|
|
98
|
+
static assertProjection(content, anchors) {
|
|
99
|
+
const lineCount = TextCoordinates.logicalLines(content).length;
|
|
100
|
+
if (!Array.isArray(anchors)
|
|
101
|
+
|| anchors.length !== lineCount
|
|
102
|
+
|| anchors.some((anchor) => !LineAnchors.isAnchor(anchor))) {
|
|
103
|
+
throw new TypeError("READ line anchors must align one-for-one with its projected physical lines.");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
static render(content, startLine, anchors, lineNumberWidth) {
|
|
107
|
+
if (content.length === 0) {
|
|
108
|
+
if (anchors.length !== 0)
|
|
109
|
+
throw new TypeError("An empty READ projection cannot carry line anchors.");
|
|
110
|
+
return "";
|
|
111
|
+
}
|
|
112
|
+
if (!Number.isSafeInteger(startLine) || startLine < 1) {
|
|
113
|
+
throw new RangeError(`Anchored rendering requires a positive safe start line, got ${startLine}.`);
|
|
114
|
+
}
|
|
115
|
+
LineAnchors.assertProjection(content, anchors);
|
|
116
|
+
const lines = TextCoordinates.logicalLines(content);
|
|
117
|
+
const finalLine = startLine + lines.length - 1;
|
|
118
|
+
if (!LineAnchors.isLineNumberWidth(lineNumberWidth)
|
|
119
|
+
|| lineNumberWidth < String(finalLine).length) {
|
|
120
|
+
throw new RangeError(`Anchored rendering requires a line-number width covering line ${finalLine}, got ${lineNumberWidth}.`);
|
|
121
|
+
}
|
|
122
|
+
return lines.map((line, index) => {
|
|
123
|
+
const lineNumber = startLine + index;
|
|
124
|
+
const body = content.slice(line.start, line.contentEnd);
|
|
125
|
+
const separator = " ".repeat(lineNumberWidth - String(lineNumber).length + 1);
|
|
126
|
+
return `${anchors[index]}${separator}${lineNumber}:${body}${line.separator}`;
|
|
127
|
+
}).join("");
|
|
128
|
+
}
|
|
129
|
+
static resolve(anchors, marker) {
|
|
130
|
+
const anchorIndexes = marker.marks.flatMap((mark, index) => typeof mark === "string" ? [index] : []);
|
|
131
|
+
if (anchorIndexes.length === 0) {
|
|
132
|
+
return { ok: true, marker: { marks: [...marker.marks] } };
|
|
133
|
+
}
|
|
134
|
+
const permitted = marker.marks.length === 1
|
|
135
|
+
? new Set([0])
|
|
136
|
+
: marker.marks.length === 2
|
|
137
|
+
? new Set([0, 1])
|
|
138
|
+
: marker.marks.length === 3 || marker.marks.length === 4
|
|
139
|
+
? new Set([0, 2])
|
|
140
|
+
: new Set();
|
|
141
|
+
for (const index of anchorIndexes) {
|
|
142
|
+
const anchor = marker.marks[index];
|
|
143
|
+
if (!LineAnchors.isAnchor(anchor) || !permitted.has(index)) {
|
|
144
|
+
return { ok: false, failure: { kind: "invalid", anchor } };
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const matches = new Map();
|
|
148
|
+
for (const [index, anchor] of anchors.entries()) {
|
|
149
|
+
const lineNumber = index + 1;
|
|
150
|
+
if (!LineAnchors.isAnchor(anchor)) {
|
|
151
|
+
throw new TypeError(`READ supplied an invalid line anchor at line ${lineNumber}.`);
|
|
152
|
+
}
|
|
153
|
+
const found = matches.get(anchor);
|
|
154
|
+
if (found === undefined)
|
|
155
|
+
matches.set(anchor, [lineNumber]);
|
|
156
|
+
else
|
|
157
|
+
found.push(lineNumber);
|
|
158
|
+
}
|
|
159
|
+
const resolved = [...marker.marks];
|
|
160
|
+
for (const index of anchorIndexes) {
|
|
161
|
+
const anchor = marker.marks[index];
|
|
162
|
+
const found = matches.get(anchor) ?? [];
|
|
163
|
+
if (found.length === 0) {
|
|
164
|
+
return { ok: false, failure: { kind: "stale", anchor } };
|
|
165
|
+
}
|
|
166
|
+
if (found.length > 1) {
|
|
167
|
+
return { ok: false, failure: { kind: "ambiguous", anchor, matches: found } };
|
|
168
|
+
}
|
|
169
|
+
resolved[index] = found[0];
|
|
170
|
+
}
|
|
171
|
+
return {
|
|
172
|
+
ok: true,
|
|
173
|
+
marker: { marks: resolved },
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
static checks(authored, resolved) {
|
|
177
|
+
if (authored.marks.length !== resolved.marks.length) {
|
|
178
|
+
throw new TypeError("A resolved line marker must preserve its authored arity.");
|
|
179
|
+
}
|
|
180
|
+
return authored.marks.flatMap((mark, index) => {
|
|
181
|
+
if (typeof mark !== "string")
|
|
182
|
+
return [];
|
|
183
|
+
const line = resolved.marks[index];
|
|
184
|
+
if (!LineAnchors.isAnchor(mark) || typeof line !== "number") {
|
|
185
|
+
throw new TypeError("A line anchor did not lower to a numeric line.");
|
|
186
|
+
}
|
|
187
|
+
return [{ anchor: mark, line }];
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=line-anchors.js.map
|