@plurnk/plurnk-service 3.0.0 → 3.2.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 +38 -21
- package/INSTALL.md +38 -1
- package/README.md +3 -0
- package/SPEC.md +681 -268
- package/dist/build-info.json +1 -1
- package/dist/completions/_plurnk-service +13 -0
- package/dist/completions/plurnk-service.bash +19 -0
- package/dist/completions/plurnk-service.fish +94 -0
- package/dist/content/path-mimetype.d.ts.map +1 -1
- package/dist/content/path-mimetype.js +2 -8
- package/dist/content/path-mimetype.js.map +1 -1
- package/dist/core/AdmittedTurnExecutor.d.ts +2 -2
- package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
- package/dist/core/AdmittedTurnExecutor.js +36 -32
- package/dist/core/AdmittedTurnExecutor.js.map +1 -1
- package/dist/core/BudgetReadout.d.ts +7 -2
- package/dist/core/BudgetReadout.d.ts.map +1 -1
- package/dist/core/BudgetReadout.js +36 -5
- package/dist/core/BudgetReadout.js.map +1 -1
- package/dist/{schemes/_derivation-use.d.ts → core/ContentUse.d.ts} +3 -3
- package/dist/core/ContentUse.d.ts.map +1 -0
- package/dist/{schemes/_derivation-use.js → core/ContentUse.js} +8 -7
- package/dist/core/ContentUse.js.map +1 -0
- package/dist/core/DataStatementRunner.d.ts.map +1 -1
- package/dist/core/DataStatementRunner.js +8 -20
- package/dist/core/DataStatementRunner.js.map +1 -1
- package/dist/core/Dispatcher.d.ts +11 -3
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +186 -109
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/EditMutations.js +1 -1
- package/dist/core/EditMutations.js.map +1 -1
- package/dist/core/Engine.d.ts +1 -1
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +4 -7
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/EnvFlags.js +1 -1
- package/dist/core/EnvFlags.js.map +1 -1
- package/dist/core/FabricatedLog.d.ts +1 -0
- package/dist/core/FabricatedLog.d.ts.map +1 -1
- package/dist/core/FabricatedLog.js +8 -0
- package/dist/core/FabricatedLog.js.map +1 -1
- package/dist/core/FileAddress.d.ts +12 -0
- package/dist/core/FileAddress.d.ts.map +1 -0
- package/dist/core/FileAddress.js +73 -0
- package/dist/core/FileAddress.js.map +1 -0
- package/dist/core/FilePublication.d.ts +15 -0
- package/dist/core/FilePublication.d.ts.map +1 -0
- package/dist/core/FilePublication.js +143 -0
- package/dist/core/FilePublication.js.map +1 -0
- package/dist/core/FileSnapshot.d.ts +26 -0
- package/dist/core/FileSnapshot.d.ts.map +1 -0
- package/dist/core/FileSnapshot.js +179 -0
- package/dist/core/FileSnapshot.js.map +1 -0
- package/dist/core/KillHandler.d.ts.map +1 -1
- package/dist/core/KillHandler.js +4 -1
- package/dist/core/KillHandler.js.map +1 -1
- package/dist/core/LiveSubscription.d.ts.map +1 -1
- package/dist/core/LiveSubscription.js +14 -2
- package/dist/core/LiveSubscription.js.map +1 -1
- package/dist/core/LiveSubscriptions.d.ts +3 -1
- package/dist/core/LiveSubscriptions.d.ts.map +1 -1
- package/dist/core/LiveSubscriptions.js +16 -1
- package/dist/core/LiveSubscriptions.js.map +1 -1
- package/dist/core/LogBody.d.ts.map +1 -1
- package/dist/core/LogBody.js +3 -1
- package/dist/core/LogBody.js.map +1 -1
- package/dist/core/LoopDriver.d.ts.map +1 -1
- package/dist/core/LoopDriver.js +3 -0
- package/dist/core/LoopDriver.js.map +1 -1
- package/dist/core/LoopLifecycle.sql +1 -0
- package/dist/core/MembershipMaterialization.d.ts.map +1 -1
- package/dist/core/MembershipMaterialization.js +87 -143
- package/dist/core/MembershipMaterialization.js.map +1 -1
- package/dist/core/MessageResources.sql +31 -0
- package/dist/core/MutationEffects.d.ts +2 -1
- package/dist/core/MutationEffects.d.ts.map +1 -1
- package/dist/core/MutationEffects.js +14 -1
- package/dist/core/MutationEffects.js.map +1 -1
- package/dist/core/PacketBuilder.d.ts +2 -2
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +123 -51
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/PacketBuilder.sql +21 -14
- package/dist/core/PathGlob.d.ts +6 -0
- package/dist/core/PathGlob.d.ts.map +1 -0
- package/dist/core/PathGlob.js +24 -0
- package/dist/core/PathGlob.js.map +1 -0
- package/dist/core/ProposalLifecycle.d.ts +2 -1
- package/dist/core/ProposalLifecycle.d.ts.map +1 -1
- package/dist/core/ProposalLifecycle.js +45 -33
- package/dist/core/ProposalLifecycle.js.map +1 -1
- package/dist/core/ProposalLifecycle.sql +4 -0
- package/dist/core/ReplyMetadata.d.ts +10 -0
- package/dist/core/ReplyMetadata.d.ts.map +1 -0
- package/dist/core/ReplyMetadata.js +20 -0
- package/dist/core/ReplyMetadata.js.map +1 -0
- package/dist/core/ResourceBindings.d.ts.map +1 -1
- package/dist/core/ResourceBindings.js +4 -3
- package/dist/core/ResourceBindings.js.map +1 -1
- package/dist/core/ResourceSelector.d.ts +1 -2
- package/dist/core/ResourceSelector.d.ts.map +1 -1
- package/dist/core/ResourceSelector.js +30 -9
- package/dist/core/ResourceSelector.js.map +1 -1
- package/dist/core/ResourceTransfers.d.ts +1 -1
- package/dist/core/ResourceTransfers.d.ts.map +1 -1
- package/dist/core/ResourceTransfers.js +26 -11
- package/dist/core/ResourceTransfers.js.map +1 -1
- package/dist/core/ServiceHelp.d.ts +6 -0
- package/dist/core/ServiceHelp.d.ts.map +1 -0
- package/dist/core/ServiceHelp.js +35 -0
- package/dist/core/ServiceHelp.js.map +1 -0
- package/dist/core/StoredPacket.d.ts +1 -0
- package/dist/core/StoredPacket.d.ts.map +1 -1
- package/dist/core/StoredPacket.js +4 -1
- package/dist/core/StoredPacket.js.map +1 -1
- package/dist/core/StrikeRail.d.ts.map +1 -1
- package/dist/core/StrikeRail.js +2 -2
- package/dist/core/StrikeRail.js.map +1 -1
- package/dist/core/TokenCalibration.d.ts +2 -2
- package/dist/core/TokenCalibration.d.ts.map +1 -1
- package/dist/core/TokenCalibration.js +12 -16
- package/dist/core/TokenCalibration.js.map +1 -1
- package/dist/core/TokenCalibration.sql +29 -6
- package/dist/core/TurnDispositionHandler.d.ts +1 -2
- package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
- package/dist/core/TurnDispositionHandler.js +30 -26
- package/dist/core/TurnDispositionHandler.js.map +1 -1
- package/dist/core/TurnMaterialization.d.ts.map +1 -1
- package/dist/core/TurnMaterialization.js +11 -1
- package/dist/core/TurnMaterialization.js.map +1 -1
- package/dist/core/TurnOps.d.ts +5 -1
- package/dist/core/TurnOps.d.ts.map +1 -1
- package/dist/core/TurnOps.js +29 -2
- package/dist/core/TurnOps.js.map +1 -1
- package/dist/core/TurnRunner.d.ts.map +1 -1
- package/dist/core/TurnRunner.js +122 -56
- package/dist/core/TurnRunner.js.map +1 -1
- package/dist/core/TurnSources.sql +2 -2
- package/dist/core/caps/SchemeCtxImpl.d.ts +1 -0
- package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.js +5 -0
- package/dist/core/caps/SchemeCtxImpl.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 +9 -11
- package/dist/core/git-membership.js.map +1 -1
- package/dist/core/glob_match.js +3 -3
- package/dist/core/glob_match.js.map +1 -1
- package/dist/core/mutation-types.d.ts +3 -0
- package/dist/core/mutation-types.d.ts.map +1 -1
- package/dist/core/namespace.d.ts +4 -1
- package/dist/core/namespace.d.ts.map +1 -1
- package/dist/core/namespace.js +14 -3
- package/dist/core/namespace.js.map +1 -1
- package/dist/core/packet-wire.d.ts +7 -1
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +98 -36
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/plurnk-uri.d.ts +3 -2
- package/dist/core/plurnk-uri.d.ts.map +1 -1
- package/dist/core/plurnk-uri.js +23 -11
- package/dist/core/plurnk-uri.js.map +1 -1
- package/dist/core/recap-lines.d.ts +4 -0
- package/dist/core/recap-lines.d.ts.map +1 -0
- package/dist/core/recap-lines.js +11 -0
- package/dist/core/recap-lines.js.map +1 -0
- package/dist/core/scheme-types.d.ts +1 -0
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/sql-functions.d.ts +2 -0
- package/dist/core/sql-functions.d.ts.map +1 -0
- package/dist/core/sql-functions.js +5 -0
- package/dist/core/sql-functions.js.map +1 -0
- package/dist/core/sqlite-synchronous.d.ts +2 -0
- package/dist/core/sqlite-synchronous.d.ts.map +1 -0
- package/dist/core/sqlite-synchronous.js +4 -0
- package/dist/core/sqlite-synchronous.js.map +1 -0
- package/dist/core/turn-scheduler.d.ts.map +1 -1
- package/dist/core/turn-scheduler.js +1 -1
- package/dist/core/turn-scheduler.js.map +1 -1
- package/dist/evidence/EvidenceReader.d.ts.map +1 -1
- package/dist/evidence/EvidenceReader.js +23 -3
- package/dist/evidence/EvidenceReader.js.map +1 -1
- package/dist/evidence/digest.sql +7 -1
- package/dist/man/plurnk-service.1 +499 -0
- package/dist/schemes/Env.d.ts +26 -0
- package/dist/schemes/Env.d.ts.map +1 -0
- package/dist/schemes/Env.js +133 -0
- package/dist/schemes/Env.js.map +1 -0
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +15 -15
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/ExecOutputScheme.d.ts +3 -2
- package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
- package/dist/schemes/ExecOutputScheme.js +9 -0
- package/dist/schemes/ExecOutputScheme.js.map +1 -1
- package/dist/schemes/File.d.ts +1 -0
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +233 -268
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +97 -17
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Log.sql +9 -0
- package/dist/schemes/Worker.js +1 -1
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/schemes/_entry-crud.d.ts +2 -0
- package/dist/schemes/_entry-crud.d.ts.map +1 -1
- package/dist/schemes/_entry-crud.js +8 -5
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-crud.sql +15 -15
- package/dist/schemes/_entry-find.d.ts +2 -1
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +31 -19
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-manifest.d.ts +2 -2
- package/dist/schemes/_entry-manifest.d.ts.map +1 -1
- package/dist/schemes/_entry-manifest.js +10 -8
- package/dist/schemes/_entry-manifest.js.map +1 -1
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +9 -7
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_path-scope.d.ts.map +1 -1
- package/dist/schemes/_path-scope.js +12 -4
- package/dist/schemes/_path-scope.js.map +1 -1
- package/dist/schemes/_search-index.js +3 -3
- 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/schemes/exec-env.d.ts.map +1 -1
- package/dist/schemes/exec-env.js +7 -22
- package/dist/schemes/exec-env.js.map +1 -1
- package/dist/server/Daemon.d.ts +1 -0
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +45 -68
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DrainSupervisor.d.ts +2 -3
- package/dist/server/DrainSupervisor.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.js +34 -6
- package/dist/server/DrainSupervisor.js.map +1 -1
- package/dist/server/EnvFunctionality.d.ts +4 -2
- package/dist/server/EnvFunctionality.d.ts.map +1 -1
- package/dist/server/EnvFunctionality.js +23 -12
- package/dist/server/EnvFunctionality.js.map +1 -1
- package/dist/server/Functionality.d.ts.map +1 -1
- package/dist/server/Functionality.js +15 -8
- package/dist/server/Functionality.js.map +1 -1
- package/dist/server/FunctionalityManager.d.ts +1 -1
- package/dist/server/FunctionalityManager.d.ts.map +1 -1
- package/dist/server/FunctionalityManager.js +5 -1
- package/dist/server/FunctionalityManager.js.map +1 -1
- package/dist/server/MembersFunctionality.d.ts.map +1 -1
- package/dist/server/MembersFunctionality.js +12 -12
- package/dist/server/MembersFunctionality.js.map +1 -1
- package/dist/server/Retention.d.ts.map +1 -1
- package/dist/server/Retention.js +5 -5
- package/dist/server/Retention.js.map +1 -1
- package/dist/server/Retention.sql +49 -23
- package/dist/server/client-input.d.ts.map +1 -1
- package/dist/server/client-input.js +12 -3
- package/dist/server/client-input.js.map +1 -1
- package/dist/server/drain.sql +10 -9
- package/dist/server/lifecycle-recovery.sql +4 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +9 -31
- package/dist/service.js.map +1 -1
- package/docs/copy-move.md +3 -0
- package/docs/env.md +32 -4
- package/docs/members.md +16 -1
- package/migrations/018_worker_owners.sql +1 -0
- package/migrations/019_interactive_owners.sql +1 -0
- package/migrations/020_log_projection.sql +1 -0
- package/migrations/021_packet_roles.sql +86 -0
- package/migrations/022_message_completion.sql +24 -0
- package/migrations/023_file_revisions.sql +54 -0
- package/migrations/024_proposal_decisions.sql +34 -0
- package/migrations/025_response_retention.sql +30 -0
- package/package.json +38 -34
- package/dist/schemes/_derivation-use.d.ts.map +0 -1
- package/dist/schemes/_derivation-use.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glob_match.js","sourceRoot":"","sources":["../../src/core/glob_match.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,6FAA6F;AAC7F,wFAAwF;AACxF,OAAO,
|
|
1
|
+
{"version":3,"file":"glob_match.js","sourceRoot":"","sources":["../../src/core/glob_match.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,6FAA6F;AAC7F,wFAAwF;AACxF,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,eAAe,CAAC,QAAgB,EAAE,IAAY,EAAS,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -18,6 +18,7 @@ export type ResourceAddress = {
|
|
|
18
18
|
readonly authority: string;
|
|
19
19
|
readonly pathname: string;
|
|
20
20
|
readonly identityPathname: string;
|
|
21
|
+
readonly projectRoot?: string | null;
|
|
21
22
|
readonly channel: string;
|
|
22
23
|
readonly manifest: SchemeManifest;
|
|
23
24
|
};
|
|
@@ -29,6 +30,7 @@ export type ResolvedResourceSelection = ResourceAddress & {
|
|
|
29
30
|
readonly lineMarker: LineMarker | null;
|
|
30
31
|
};
|
|
31
32
|
export type SelectedSource = ResolvedResourceSelection & {
|
|
33
|
+
readonly fileRevision?: string;
|
|
32
34
|
readonly identity?: string;
|
|
33
35
|
readonly content: string;
|
|
34
36
|
readonly completeContent: string;
|
|
@@ -40,6 +42,7 @@ export type SelectedSource = ResolvedResourceSelection & {
|
|
|
40
42
|
readonly scopeNormalizations?: ReadonlyArray<ScopeNormalization>;
|
|
41
43
|
};
|
|
42
44
|
export type DeferredMoveSource = {
|
|
45
|
+
readonly fileRevision?: string;
|
|
43
46
|
readonly target: ParsedPath;
|
|
44
47
|
readonly metadata: SchemeMetadataOrNull;
|
|
45
48
|
readonly lineMarker: LineMarker | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutation-types.d.ts","sourceRoot":"","sources":["../../src/core/mutation-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACtK,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACxG,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC;AAG1C,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhF,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAC5D,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,GAAG;IACxD,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,eAAe,GAAG;IACvD,QAAQ,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,eAAe,GAAG;IACtD,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,yBAAyB,GAAG;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAG/C,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC/D,QAAQ,CAAC,mBAAmB,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC;AAE9E,MAAM,MAAM,0BAA0B,GAAG;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE;QACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC5D,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,GAAG,EAAE,mBAAmB,CAAC;IACzB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAEtC,MAAM,MAAM,WAAW,GAAG;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"mutation-types.d.ts","sourceRoot":"","sources":["../../src/core/mutation-types.ts"],"names":[],"mappings":"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"}
|
package/dist/core/namespace.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
export default class Namespace {
|
|
2
2
|
#private;
|
|
3
|
+
static isHomeRelative(spelling: string): boolean;
|
|
4
|
+
static expandHome(spelling: string, home?: string): string;
|
|
5
|
+
static literalSpelling(key: string): string;
|
|
3
6
|
static fromRepositoryPath(repositoryPath: string, workspaceRoot: string, repositoryRoot: string): string;
|
|
4
7
|
static canonicalize(spelling: string, root: string | null): string | null;
|
|
5
|
-
static canonicalizeSpelling(raw: string, root: string | null): string | null;
|
|
8
|
+
static canonicalizeSpelling(raw: string, root: string | null, home?: string): string | null;
|
|
6
9
|
static isCanonical(key: string, root: string | null): boolean;
|
|
7
10
|
}
|
|
8
11
|
//# sourceMappingURL=namespace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/core/namespace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/core/namespace.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,OAAO,SAAS;;IAC1B,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE/C;IAGD,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEpE;IAED,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1C;IAGD,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAgBvG;IAED,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAGxE;IAGD,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,GAAE,MAAkB,GAAG,MAAM,GAAG,IAAI,CAMrG;IAYD,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAE5D;CACJ"}
|
package/dist/core/namespace.js
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
// {§fs-namei} {§fs-canonical-name} Lexical resolution only; membership and physical
|
|
2
2
|
// symlink checks belong to the file owner.
|
|
3
3
|
import { posix } from "node:path";
|
|
4
|
+
import { homedir } from "node:os";
|
|
4
5
|
export default class Namespace {
|
|
6
|
+
static isHomeRelative(spelling) {
|
|
7
|
+
return spelling === "~" || spelling.startsWith("~/");
|
|
8
|
+
}
|
|
9
|
+
// {§fs-home} Call only for authored input, never for a bound entry key.
|
|
10
|
+
static expandHome(spelling, home = homedir()) {
|
|
11
|
+
return Namespace.isHomeRelative(spelling) ? `${home}${spelling.slice(1)}` : spelling;
|
|
12
|
+
}
|
|
13
|
+
static literalSpelling(key) {
|
|
14
|
+
return Namespace.isHomeRelative(key) ? `./${key}` : key;
|
|
15
|
+
}
|
|
5
16
|
// Git reports repository-relative paths; storage is workspace-relative.
|
|
6
17
|
static fromRepositoryPath(repositoryPath, workspaceRoot, repositoryRoot) {
|
|
7
18
|
if (repositoryPath.length === 0 || repositoryPath.startsWith("/") || repositoryPath.includes("\0")) {
|
|
@@ -25,12 +36,12 @@ export default class Namespace {
|
|
|
25
36
|
return key === null || key.length === 0 || posix.basename(key) === ".." ? null : key;
|
|
26
37
|
}
|
|
27
38
|
// {§fs-namei} Only the project directory becomes the empty collection.
|
|
28
|
-
static canonicalizeSpelling(raw, root) {
|
|
29
|
-
const key = Namespace.#relative(raw, root);
|
|
39
|
+
static canonicalizeSpelling(raw, root, home = homedir()) {
|
|
40
|
+
const key = Namespace.#relative(Namespace.expandHome(raw, home), root);
|
|
30
41
|
if (key === null || key.length === 0)
|
|
31
42
|
return key;
|
|
32
43
|
const last = posix.basename(raw);
|
|
33
|
-
const folder = raw.endsWith("/") || last === "." || last === ".." || posix.basename(key) === "..";
|
|
44
|
+
const folder = raw === "~" || raw.endsWith("/") || last === "." || last === ".." || posix.basename(key) === "..";
|
|
34
45
|
return folder ? `${key}/` : key;
|
|
35
46
|
}
|
|
36
47
|
static #relative(spelling, root) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/core/namespace.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,2CAA2C;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,MAAM,CAAC,OAAO,OAAO,SAAS;IAC1B,wEAAwE;IACxE,MAAM,CAAC,kBAAkB,CAAC,cAAsB,EAAE,aAAqB,EAAE,cAAsB;QAC3F,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjG,MAAM,IAAI,SAAS,CAAC,iDAAiD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC3G,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;QAC3D,IAAI,QAAQ,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,SAAS,CAAC,wCAAwC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC7D,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,SAAS,CAAC,gDAAgD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1G,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,QAAgB,EAAE,IAAmB;QACrD,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChD,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACzF,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,oBAAoB,CAAC,GAAW,EAAE,IAAmB;
|
|
1
|
+
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/core/namespace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { PacketAttachment, RequestPacket } from "./StoredPacket.ts";
|
|
2
2
|
import type { ChatMessage } from "@plurnk/plurnk-providers";
|
|
3
|
+
import { type PacketSectionDraft } from "@plurnk/plurnk-schemes";
|
|
3
4
|
interface ActionTarget {
|
|
4
5
|
kind?: unknown;
|
|
5
6
|
raw?: unknown;
|
|
@@ -86,6 +87,10 @@ interface RenderLogOptions {
|
|
|
86
87
|
readonly acceptedAttachmentKinds?: ReadonlySet<PacketAttachment["kind"]>;
|
|
87
88
|
readonly projectRoot?: string | null;
|
|
88
89
|
readonly bodiless?: ReadonlySet<number>;
|
|
90
|
+
readonly legend?: ReadonlyMap<string, ReadonlyArray<{
|
|
91
|
+
path: string;
|
|
92
|
+
tokens: number;
|
|
93
|
+
}>>;
|
|
89
94
|
}
|
|
90
95
|
interface ReclaimableLogItem {
|
|
91
96
|
readonly path: string;
|
|
@@ -104,11 +109,12 @@ export interface RenderedLog {
|
|
|
104
109
|
}
|
|
105
110
|
export default class PacketWire {
|
|
106
111
|
#private;
|
|
107
|
-
static renderSlot(sections: SectionView[], slot: "
|
|
112
|
+
static renderSlot(sections: SectionView[], slot: PacketSectionDraft["slot"]): string;
|
|
108
113
|
static renderSection(s: SectionView): string;
|
|
109
114
|
static renderFailurePointers(failures: unknown): string;
|
|
110
115
|
static renderNotices(notices: unknown): string;
|
|
111
116
|
static renderDelegation(workers: unknown, streams: unknown): string;
|
|
117
|
+
static renderRecap(lines: readonly string[], source: string): string;
|
|
112
118
|
static renderGit(git: unknown): string;
|
|
113
119
|
static renderLog(entries: unknown, weighContent: WeighContent, options?: RenderLogOptions): string;
|
|
114
120
|
static renderLogWithAccounting(entries: unknown, weighContent: WeighContent, options?: RenderLogOptions): RenderedLog;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet-wire.d.ts","sourceRoot":"","sources":["../../src/core/packet-wire.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAmB,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"packet-wire.d.ts","sourceRoot":"","sources":["../../src/core/packet-wire.ts"],"names":[],"mappings":"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"}
|
package/dist/core/packet-wire.js
CHANGED
|
@@ -3,7 +3,7 @@ import { relative, sep } from "node:path";
|
|
|
3
3
|
import { Problems, Validator } from "@plurnk/plurnk-contracts";
|
|
4
4
|
import { TextCoordinates } from "@plurnk/plurnk-mimetypes";
|
|
5
5
|
import BodyPreview from "../content/body-preview.js";
|
|
6
|
-
import { renderTarget } from "./plurnk-uri.js";
|
|
6
|
+
import { renderAuthoredTarget, renderTarget } from "./plurnk-uri.js";
|
|
7
7
|
import GitState from "./git-state.js";
|
|
8
8
|
import LogBody from "./LogBody.js";
|
|
9
9
|
import LogEntryProjection from "./LogEntryProjection.js";
|
|
@@ -46,21 +46,24 @@ export default class PacketWire {
|
|
|
46
46
|
.map((row) => JSON.stringify({ status: row.status, path: `log:///${row.coordinate}` }));
|
|
47
47
|
return pointers.length === 0 ? "" : `[${pointers.join(",\n")}]`;
|
|
48
48
|
}
|
|
49
|
-
//
|
|
50
|
-
//
|
|
49
|
+
// {§notice-callout} — non-terminal observations, deliberately separate from operation failures, in the
|
|
50
|
+
// card's own callout form: the level picks the callout, the directive leads, the fact follows, the kind closes.
|
|
51
51
|
static renderNotices(notices) {
|
|
52
52
|
const observations = Array.isArray(notices) ? notices : [];
|
|
53
53
|
return observations.map((notice) => {
|
|
54
54
|
const kind = typeof notice.kind === "string" ? notice.kind : "notice";
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
const callout = notice.level === "error" ? "CAUTION" : notice.level === "warn" ? "WARNING" : "NOTE";
|
|
56
|
+
const text = [notice.directive, notice.message]
|
|
57
|
+
.filter((part) => typeof part === "string")
|
|
58
|
+
.map((part) => part.replace(/\s+/g, " ").trim())
|
|
59
|
+
.filter((part) => part.length > 0)
|
|
60
|
+
.join(" ");
|
|
59
61
|
const position = notice.position?.type === "content-offset"
|
|
60
62
|
? ` @ ${String(notice.position.line)}:${String(notice.position.column)}`
|
|
61
63
|
: "";
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
const body = `${text}${position}`.trim();
|
|
65
|
+
return `> [!${callout}]\n> ${body.length > 0 ? `${body} ` : ""}[${kind}]`;
|
|
66
|
+
}).join("\n\n");
|
|
64
67
|
}
|
|
65
68
|
// The Delegation section ({§child-orientation}) — the OPPOSITE of advice: terse `{status, path}`
|
|
66
69
|
// JSON pointers (same shape as the errors section) to the live things the worker holds, under the
|
|
@@ -79,6 +82,11 @@ export default class PacketWire {
|
|
|
79
82
|
}));
|
|
80
83
|
return pointers.length === 0 ? "[]" : `[${pointers.join(",\n")}]`;
|
|
81
84
|
}
|
|
85
|
+
// {§recap-lines} — each operator line is one callout, typed by its directive, ahead of the recap source.
|
|
86
|
+
static renderRecap(lines, source) {
|
|
87
|
+
const callouts = lines.map((line) => `> [!${line.startsWith("YOU MUST") ? "IMPORTANT" : "TIP"}]\n> ${line}`);
|
|
88
|
+
return [...callouts, ...(source.trim().length > 0 ? [source] : [])].join("\n\n");
|
|
89
|
+
}
|
|
82
90
|
// The git section content: the working-tree summary. "" when absent.
|
|
83
91
|
static renderGit(git) {
|
|
84
92
|
const status = git === null || git === undefined ? "" : PacketWire.#renderGitState(git);
|
|
@@ -110,15 +118,37 @@ export default class PacketWire {
|
|
|
110
118
|
// The legible accessor — consumers name the section they want instead of
|
|
111
119
|
// indexing a fixed shape. Missing section / non-string content → "".
|
|
112
120
|
static sectionContent(packet, name) {
|
|
113
|
-
|
|
114
|
-
|
|
121
|
+
return (packet.sections ?? [])
|
|
122
|
+
.filter((section) => PacketWire.#isSection(section, name) && typeof section.content === "string" && section.content.length > 0)
|
|
123
|
+
.map(({ content }) => content).join("\n\n");
|
|
124
|
+
}
|
|
125
|
+
static #isSection(section, name) {
|
|
126
|
+
return section.name === name || typeof section.name === "string" && section.name.startsWith(`${name}/`);
|
|
127
|
+
}
|
|
128
|
+
// {§packet-wire-envelope}: retained roles and order, not today's section names, define a
|
|
129
|
+
// historical request. An absent previous program leaves adjacent user sections together.
|
|
130
|
+
static #messageSections(packet) {
|
|
131
|
+
const sections = packet.sections ?? [];
|
|
132
|
+
const messages = [{ role: "system", sections: sections.filter(({ slot }) => slot === "system") }];
|
|
133
|
+
for (const section of sections) {
|
|
134
|
+
if (section.slot === "system" || PacketWire.renderSection(section).length === 0)
|
|
135
|
+
continue;
|
|
136
|
+
if (section.slot !== "user" && section.slot !== "assistant")
|
|
137
|
+
throw new TypeError("packet section has an invalid message role");
|
|
138
|
+
const last = messages.at(-1);
|
|
139
|
+
if (last.role === section.slot)
|
|
140
|
+
last.sections.push(section);
|
|
141
|
+
else
|
|
142
|
+
messages.push({ role: section.slot, sections: [section] });
|
|
143
|
+
}
|
|
144
|
+
if (messages.length === 1)
|
|
145
|
+
messages.push({ role: "user", sections: [] });
|
|
146
|
+
return messages;
|
|
115
147
|
}
|
|
116
|
-
// {§packet-wire-envelope}: the stored slots are the text envelope, without assistant replay.
|
|
117
148
|
static packetToWireMessages(packet) {
|
|
118
|
-
return
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
];
|
|
149
|
+
return PacketWire.#messageSections(packet).map(({ role, sections }) => ({
|
|
150
|
+
role, content: PacketWire.renderSlot(sections, role),
|
|
151
|
+
}));
|
|
122
152
|
}
|
|
123
153
|
// Number a non-READ body line as `<N>:<line>` — `N:` followed by NO separator whitespace
|
|
124
154
|
// ({§render-rule-line-navigable-prefix}): the leading digit prevents column-zero fence collisions and gives
|
|
@@ -213,7 +243,7 @@ export default class PacketWire {
|
|
|
213
243
|
if ("effect" in receipt) {
|
|
214
244
|
return {
|
|
215
245
|
...head,
|
|
216
|
-
change:
|
|
246
|
+
change: `${receipt.unit} -${receipt.effect.removed} +${receipt.effect.inserted}`,
|
|
217
247
|
effect: `${receipt.effect.source} -> ${receipt.effect.result}`,
|
|
218
248
|
// {§edit-receipt-removed-text} — what a deletion took, so it can be put back from the receipt.
|
|
219
249
|
...(receipt.effect.removedText === undefined ? {} : { removed: receipt.effect.removedText }),
|
|
@@ -226,7 +256,7 @@ export default class PacketWire {
|
|
|
226
256
|
...(receipt.replacement === undefined
|
|
227
257
|
? {}
|
|
228
258
|
: {
|
|
229
|
-
change:
|
|
259
|
+
change: `${receipt.unit} -${receipt.replacement.removed} +${receipt.replacement.inserted}`,
|
|
230
260
|
replacement: `${receipt.replacement.source} -> ${receipt.replacement.result}`,
|
|
231
261
|
}),
|
|
232
262
|
};
|
|
@@ -376,7 +406,10 @@ export default class PacketWire {
|
|
|
376
406
|
// Parse rx once — reused for the matcher/items enrichment and the body.
|
|
377
407
|
const rx = (typeof e.rx === "string" ? PacketWire.#safeParse(e.rx) : e.rx);
|
|
378
408
|
const facts = PacketWire.#rowResultFacts(identity, e, rx, bodies[index]);
|
|
379
|
-
const
|
|
409
|
+
const legend = LogEntryProjection.isEmission(e) ? options.legend?.get(String(e.coordinate).split("/").slice(0, 2).join("/")) : undefined;
|
|
410
|
+
const projected = legend !== undefined && legend.length > 0
|
|
411
|
+
? { body: PacketWire.#frameBody(legend.map(({ path, tokens }, index) => `${index + 1}:${path} · ${tokens}`).join("\n")), projectedLineCount: legend.length, display: "open" }
|
|
412
|
+
: PacketWire.#rowBody(identity, e, bodies[index], visibility[index], facts);
|
|
380
413
|
return PacketWire.#rowAccounting(identity, e, visibility[index], projected, weighContent, options);
|
|
381
414
|
});
|
|
382
415
|
}
|
|
@@ -484,12 +517,13 @@ export default class PacketWire {
|
|
|
484
517
|
const tx = (typeof e.tx === "string" ? PacketWire.#safeParse(e.tx) : e.tx);
|
|
485
518
|
if (typeof tx?.aside === "string")
|
|
486
519
|
meta.aside = tx.aside;
|
|
487
|
-
const
|
|
520
|
+
const authored = tx?.target;
|
|
521
|
+
const target = PacketWire.#operandPath(e.target ?? authored, options.projectRoot ?? null, authored ?? null);
|
|
488
522
|
const pair = op === "COPY" || op === "MOVE";
|
|
489
523
|
const selections = pair
|
|
490
524
|
? [tx?.source, tx?.destination]
|
|
491
525
|
: [{ ...tx, target: e.target ?? tx?.target }];
|
|
492
|
-
const paths = selections.map((selection) => PacketWire.#operandPath(selection?.target));
|
|
526
|
+
const paths = selections.map((selection) => PacketWire.#operandPath(selection?.target, options.projectRoot ?? null, authored ?? null));
|
|
493
527
|
if (pair && typeof e.status === "number" && e.status < 400 && paths.some((path) => path === null)) {
|
|
494
528
|
throw new Error(`A successful ${op} log row must retain both operand selections.`);
|
|
495
529
|
}
|
|
@@ -635,9 +669,9 @@ export default class PacketWire {
|
|
|
635
669
|
const sparse = fullBody.lineOrdinals !== undefined
|
|
636
670
|
&& range.returned !== undefined
|
|
637
671
|
&& fullBody.lineOrdinals.length !== range.returned[1] - range.returned[0] + 1;
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
672
|
+
// A row whose Problem does not own the range retrieved successfully, even when it
|
|
673
|
+
// carries its execution's failure: its extent takes the one scope notation.
|
|
674
|
+
meta.range = ScopeFormat.range(range, sparse);
|
|
641
675
|
}
|
|
642
676
|
else if (range === null && !problemOwnsRange && op === "READ" && rx !== null && typeof rx === "object" && rx.region !== undefined) {
|
|
643
677
|
delete meta.scope;
|
|
@@ -866,16 +900,43 @@ export default class PacketWire {
|
|
|
866
900
|
}
|
|
867
901
|
return null;
|
|
868
902
|
}
|
|
869
|
-
// {§packet-attachment-parts} —
|
|
870
|
-
// retained native part in observation order.
|
|
903
|
+
// {§packet-attachment-parts} — project retained native parts at their recorded user boundaries.
|
|
871
904
|
static async wireMessages(packet, bytesOf, accepts = () => true) {
|
|
872
905
|
const messages = PacketWire.packetToWireMessages(packet);
|
|
873
906
|
const attachments = (packet.attachments ?? []).filter(({ kind }) => accepts(kind));
|
|
874
907
|
if (attachments.length === 0)
|
|
875
908
|
return messages;
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
909
|
+
const groups = PacketWire.#messageSections(packet);
|
|
910
|
+
// {§packet-attachment-parts}: current packets bind each native part to the section
|
|
911
|
+
// ending at its READ. Preserve the recorded placement of older, unbound packets below.
|
|
912
|
+
if (attachments.some(({ section }) => section !== undefined)) {
|
|
913
|
+
for (const attachment of attachments) {
|
|
914
|
+
if (attachment.section === undefined || !groups.some(({ role, sections }) => role === "user" && sections.some(({ name }) => name === attachment.section))) {
|
|
915
|
+
throw new Error("native packet attachment requires its recorded user section");
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
return Promise.all(groups.map(async ({ role, sections }, index) => {
|
|
919
|
+
if (!sections.some(({ name }) => attachments.some(({ section }) => section === name)))
|
|
920
|
+
return messages[index];
|
|
921
|
+
const parts = [];
|
|
922
|
+
for (const [at, section] of sections.entries()) {
|
|
923
|
+
parts.push({ type: "text", text: `${at === 0 ? "" : "\n\n"}${PacketWire.renderSection(section)}` });
|
|
924
|
+
for (const attachment of attachments.filter((attachment) => attachment.section === section.name)) {
|
|
925
|
+
parts.push({ type: "text", text: `\n\n${PacketWire.attachmentCaption(attachment)}` });
|
|
926
|
+
parts.push({ type: "file", data: await bytesOf(attachment), mediaType: attachment.mimetype });
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
return { role, content: parts };
|
|
930
|
+
}));
|
|
931
|
+
}
|
|
932
|
+
const logIndex = groups.findIndex(({ role, sections }) => role === "user" && sections.some(({ name }) => name === "log"));
|
|
933
|
+
const index = logIndex < 0 ? groups.findIndex(({ role }) => role === "user") : logIndex;
|
|
934
|
+
if (index < 0)
|
|
935
|
+
throw new Error("native packet attachments require a user message");
|
|
936
|
+
// {§packet-attachment-parts}: native evidence belongs to the log's message. A retained
|
|
937
|
+
// packet may also hold its previous program in that message; keep its recorded tail.
|
|
938
|
+
const preceding = groups[index].sections.filter(({ name }) => name !== "emission-history");
|
|
939
|
+
const previous = groups[index].sections.find(({ name }) => name === "emission-history");
|
|
879
940
|
const parts = [{ type: "text", text: PacketWire.renderSlot(preceding, "user") }];
|
|
880
941
|
for (const attachment of attachments) {
|
|
881
942
|
const bytes = await bytesOf(attachment);
|
|
@@ -885,7 +946,7 @@ export default class PacketWire {
|
|
|
885
946
|
const tail = previous === undefined ? "" : PacketWire.renderSection(previous);
|
|
886
947
|
if (tail.length > 0)
|
|
887
948
|
parts.push({ type: "text", text: `\n\n${tail}` });
|
|
888
|
-
return
|
|
949
|
+
return messages.map((message, at) => at === index ? { role: "user", content: parts } : message);
|
|
889
950
|
}
|
|
890
951
|
// {§packet-attachment-parts} — the part's identity: a native part on the user turn otherwise reads as
|
|
891
952
|
// an arrival, and the model cannot tell that the READ row is what keeps it in the packet.
|
|
@@ -905,14 +966,15 @@ export default class PacketWire {
|
|
|
905
966
|
const spelled = relative(projectRoot, cwd);
|
|
906
967
|
return spelled.length === 0 ? null : spelled.split(sep).join("/");
|
|
907
968
|
}
|
|
908
|
-
static #operandPath(target) {
|
|
969
|
+
static #operandPath(target, projectRoot, authored) {
|
|
909
970
|
if (target === null || target === undefined)
|
|
910
971
|
return null;
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
972
|
+
if (typeof target.raw === "string" && (target.kind === "local" || target.scheme == null)) {
|
|
973
|
+
return renderAuthoredTarget({ kind: "local", raw: target.raw, fragment: target.fragment ?? null });
|
|
974
|
+
}
|
|
975
|
+
return PacketWire.#renderActionTarget(target, projectRoot, authored);
|
|
914
976
|
}
|
|
915
|
-
static #renderActionTarget(target) {
|
|
977
|
+
static #renderActionTarget(target, projectRoot, authored) {
|
|
916
978
|
if (target === null || target === undefined)
|
|
917
979
|
return null;
|
|
918
980
|
return renderTarget({
|
|
@@ -922,7 +984,7 @@ export default class PacketWire {
|
|
|
922
984
|
pathname: target.pathname,
|
|
923
985
|
query: target.query,
|
|
924
986
|
fragment: target.fragment,
|
|
925
|
-
});
|
|
987
|
+
}, projectRoot, authored);
|
|
926
988
|
}
|
|
927
989
|
static #requestScope(marker) {
|
|
928
990
|
if (marker === null || marker === undefined)
|