@plurnk/plurnk-service 1.6.1 → 1.8.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 +29 -42
- package/INSTALL.md +49 -10
- package/README.md +11 -1
- package/SPEC.md +702 -287
- package/digest-sql/channel-dispositions/dispositions.sql +15 -0
- package/digest-sql/channel-state/state.sql +6 -0
- package/digest-sql/curation/curation.sql +5 -0
- package/digest-sql/derivations/derivations.sql +4 -0
- package/digest-sql/embeddings/embeddings.sql +4 -0
- package/digest-sql/entry-dispositions/dispositions.sql +15 -0
- package/digest-sql/entry-state/state.sql +6 -0
- package/digest-sql/token-counts/token-counts.sql +2 -0
- package/dist/Paths.d.ts +2 -5
- package/dist/Paths.d.ts.map +1 -1
- package/dist/Paths.js +9 -21
- package/dist/Paths.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/content/read-projector.d.ts.map +1 -1
- package/dist/content/read-projector.js +4 -3
- package/dist/content/read-projector.js.map +1 -1
- package/dist/core/BudgetReadout.d.ts.map +1 -1
- package/dist/core/BudgetReadout.js +12 -22
- package/dist/core/BudgetReadout.js.map +1 -1
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/ChannelWrite.sql +2 -1
- package/dist/core/ClientInteractions.d.ts +19 -0
- package/dist/core/ClientInteractions.d.ts.map +1 -0
- package/dist/core/ClientInteractions.js +124 -0
- package/dist/core/ClientInteractions.js.map +1 -0
- package/dist/core/ClientInteractions.sql +34 -0
- package/dist/core/CoreSchemeServices.d.ts +8 -2
- package/dist/core/CoreSchemeServices.d.ts.map +1 -1
- package/dist/core/CoreSchemeServices.js +7 -1
- package/dist/core/CoreSchemeServices.js.map +1 -1
- package/dist/core/Dispatcher.d.ts +9 -6
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +74 -125
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/Engine.d.ts +26 -9
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +125 -44
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/Engine.sql +112 -107
- package/dist/core/ExecutorRegistry.d.ts +19 -5
- package/dist/core/ExecutorRegistry.d.ts.map +1 -1
- package/dist/core/ExecutorRegistry.js +144 -18
- package/dist/core/ExecutorRegistry.js.map +1 -1
- package/dist/core/HostPaths.d.ts +29 -0
- package/dist/core/HostPaths.d.ts.map +1 -0
- package/dist/core/HostPaths.js +74 -0
- package/dist/core/HostPaths.js.map +1 -0
- package/dist/core/LegacyHome.d.ts +10 -0
- package/dist/core/LegacyHome.d.ts.map +1 -0
- package/dist/core/LegacyHome.js +170 -0
- package/dist/core/LegacyHome.js.map +1 -0
- package/dist/core/LogBody.d.ts +1 -1
- package/dist/core/LogBody.d.ts.map +1 -1
- package/dist/core/LogBody.js +2 -2
- package/dist/core/LogBody.js.map +1 -1
- package/dist/core/LogEntryProjection.js +1 -1
- package/dist/core/LogEntryProjection.js.map +1 -1
- package/dist/core/LogVisibility.d.ts +28 -0
- package/dist/core/LogVisibility.d.ts.map +1 -0
- package/dist/core/LogVisibility.js +215 -0
- package/dist/core/LogVisibility.js.map +1 -0
- package/dist/core/LoopLifecycle.d.ts +1 -0
- package/dist/core/LoopLifecycle.d.ts.map +1 -1
- package/dist/core/LoopLifecycle.js +8 -0
- package/dist/core/LoopLifecycle.js.map +1 -1
- package/dist/core/LoopLifecycle.sql +10 -0
- package/dist/core/OperatorConfig.d.ts +6 -0
- package/dist/core/OperatorConfig.d.ts.map +1 -0
- package/dist/core/OperatorConfig.js +92 -0
- package/dist/core/OperatorConfig.js.map +1 -0
- package/dist/core/OverflowTurn.d.ts +11 -0
- package/dist/core/OverflowTurn.d.ts.map +1 -0
- package/dist/core/OverflowTurn.js +77 -0
- package/dist/core/OverflowTurn.js.map +1 -0
- package/dist/core/Owner.js +2 -2
- package/dist/core/Owner.js.map +1 -1
- package/dist/core/PacketBuilder.d.ts +3 -15
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +52 -113
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/ProblemLog.js +1 -1
- package/dist/core/ProblemLog.js.map +1 -1
- package/dist/core/ProposalLifecycle.d.ts +3 -1
- package/dist/core/ProposalLifecycle.d.ts.map +1 -1
- package/dist/core/ProposalLifecycle.js +9 -26
- package/dist/core/ProposalLifecycle.js.map +1 -1
- package/dist/core/ProviderInstantiate.d.ts +9 -5
- package/dist/core/ProviderInstantiate.d.ts.map +1 -1
- package/dist/core/ProviderInstantiate.js +99 -104
- package/dist/core/ProviderInstantiate.js.map +1 -1
- package/dist/core/ResourceMutations.d.ts +2 -2
- package/dist/core/ResourceMutations.d.ts.map +1 -1
- package/dist/core/ResourceMutations.js +13 -11
- package/dist/core/ResourceMutations.js.map +1 -1
- package/dist/core/SchemeRegistry.d.ts +18 -11
- package/dist/core/SchemeRegistry.d.ts.map +1 -1
- package/dist/core/SchemeRegistry.js +201 -53
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/ToolResources.d.ts +19 -0
- package/dist/core/ToolResources.d.ts.map +1 -0
- package/dist/core/ToolResources.js +122 -0
- package/dist/core/ToolResources.js.map +1 -0
- package/dist/core/Turn.d.ts +27 -0
- package/dist/core/Turn.d.ts.map +1 -0
- package/dist/core/Turn.js +43 -0
- package/dist/core/Turn.js.map +1 -0
- package/dist/core/Turn.sql +72 -0
- package/dist/core/TurnOps.d.ts +7 -0
- package/dist/core/TurnOps.d.ts.map +1 -0
- package/dist/core/TurnOps.js +63 -0
- package/dist/core/TurnOps.js.map +1 -0
- package/dist/core/TurnRunner.d.ts +15 -5
- package/dist/core/TurnRunner.d.ts.map +1 -1
- package/dist/core/TurnRunner.js +1050 -900
- package/dist/core/TurnRunner.js.map +1 -1
- package/dist/core/WorkerName.d.ts +1 -1
- package/dist/core/WorkerName.d.ts.map +1 -1
- package/dist/core/WorkspaceGate.d.ts +1 -0
- package/dist/core/WorkspaceGate.d.ts.map +1 -1
- package/dist/core/WorkspaceGate.js +39 -0
- package/dist/core/WorkspaceGate.js.map +1 -1
- package/dist/core/caps/CoreInteractionCaps.d.ts +9 -0
- package/dist/core/caps/CoreInteractionCaps.d.ts.map +1 -0
- package/dist/core/caps/CoreInteractionCaps.js +14 -0
- package/dist/core/caps/CoreInteractionCaps.js.map +1 -0
- package/dist/core/caps/SchemeCtxImpl.d.ts +2 -1
- package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.js +3 -0
- package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
- package/dist/core/env-defaults.d.ts.map +1 -1
- package/dist/core/env-defaults.js +7 -5
- package/dist/core/env-defaults.js.map +1 -1
- package/dist/core/fork.d.ts.map +1 -1
- package/dist/core/fork.js +15 -4
- package/dist/core/fork.js.map +1 -1
- package/dist/core/fork.sql +57 -27
- package/dist/core/git-env.d.ts +0 -1
- package/dist/core/git-env.d.ts.map +1 -1
- package/dist/core/git-env.js +0 -3
- package/dist/core/git-env.js.map +1 -1
- package/dist/core/git-membership.d.ts.map +1 -1
- package/dist/core/git-membership.js +10 -26
- package/dist/core/git-membership.js.map +1 -1
- package/dist/core/git-state.d.ts.map +1 -1
- package/dist/core/git-state.js +13 -14
- package/dist/core/git-state.js.map +1 -1
- package/dist/core/operation-target-groups.d.ts +3 -0
- package/dist/core/operation-target-groups.d.ts.map +1 -0
- package/dist/core/operation-target-groups.js +53 -0
- package/dist/core/operation-target-groups.js.map +1 -0
- package/dist/core/packet-inject.d.ts +0 -1
- package/dist/core/packet-inject.d.ts.map +1 -1
- package/dist/core/packet-inject.js +6 -13
- package/dist/core/packet-inject.js.map +1 -1
- package/dist/core/packet-wire.d.ts +4 -0
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +208 -44
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/plurnk-uri.d.ts +1 -1
- package/dist/core/plurnk-uri.d.ts.map +1 -1
- package/dist/core/plurnk-uri.js +3 -3
- package/dist/core/plurnk-uri.js.map +1 -1
- package/dist/core/scheme-types.d.ts +2 -1
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/scheme-types.js.map +1 -1
- package/dist/core/teaching.d.ts.map +1 -1
- package/dist/core/teaching.js +4 -5
- package/dist/core/teaching.js.map +1 -1
- package/dist/core/worker-settings.d.ts +9 -0
- package/dist/core/worker-settings.d.ts.map +1 -0
- package/dist/core/worker-settings.js +25 -0
- package/dist/core/worker-settings.js.map +1 -0
- package/dist/core/workspace-settings.d.ts +0 -11
- package/dist/core/workspace-settings.d.ts.map +1 -1
- package/dist/core/workspace-settings.js +3 -47
- package/dist/core/workspace-settings.js.map +1 -1
- package/dist/digest/Digest.d.ts.map +1 -1
- package/dist/digest/Digest.js +164 -92
- package/dist/digest/Digest.js.map +1 -1
- package/dist/digest/digest.sql +8 -2
- package/dist/observe/genai.d.ts +9 -0
- package/dist/observe/genai.d.ts.map +1 -0
- package/dist/observe/genai.js +31 -0
- package/dist/observe/genai.js.map +1 -0
- package/dist/observe/spans.d.ts +3 -3
- package/dist/observe/spans.d.ts.map +1 -1
- package/dist/observe/spans.js +20 -5
- package/dist/observe/spans.js.map +1 -1
- package/dist/schemes/EffectPolicy.d.ts +3 -0
- package/dist/schemes/EffectPolicy.d.ts.map +1 -1
- package/dist/schemes/EffectPolicy.js +38 -6
- package/dist/schemes/EffectPolicy.js.map +1 -1
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +82 -18
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/Log.d.ts +6 -2
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +73 -22
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Log.sql +25 -7
- package/dist/schemes/Prompt.d.ts.map +1 -1
- package/dist/schemes/Prompt.js +1 -2
- package/dist/schemes/Prompt.js.map +1 -1
- package/dist/schemes/QuestionTool.d.ts +10 -0
- package/dist/schemes/QuestionTool.d.ts.map +1 -0
- package/dist/schemes/QuestionTool.js +81 -0
- package/dist/schemes/QuestionTool.js.map +1 -0
- package/dist/schemes/Skill.d.ts.map +1 -1
- package/dist/schemes/Skill.js +4 -1
- package/dist/schemes/Skill.js.map +1 -1
- package/dist/schemes/Worker.d.ts.map +1 -1
- package/dist/schemes/Worker.js +20 -3
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/schemes/_entry-crud.sql +19 -1
- package/dist/schemes/_entry-find.d.ts +5 -3
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +102 -22
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-find.sql +8 -6
- package/dist/schemes/_entry-graph.sql +2 -6
- package/dist/schemes/_entry-manifest.d.ts.map +1 -1
- package/dist/schemes/_entry-manifest.js +12 -1
- package/dist/schemes/_entry-manifest.js.map +1 -1
- package/dist/schemes/_search-index.d.ts.map +1 -1
- package/dist/schemes/_search-index.js +37 -25
- package/dist/schemes/_search-index.js.map +1 -1
- package/dist/server/Daemon.d.ts +69 -12
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +737 -133
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DaemonModule.d.ts +31 -3
- package/dist/server/DaemonModule.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.d.ts +12 -9
- package/dist/server/DrainSupervisor.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.js +59 -10
- package/dist/server/DrainSupervisor.js.map +1 -1
- package/dist/server/client-input.d.ts +7 -2
- package/dist/server/client-input.d.ts.map +1 -1
- package/dist/server/client-input.js +65 -34
- package/dist/server/client-input.js.map +1 -1
- package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
- package/dist/server/dispatch-as-plurnk.js +28 -6
- package/dist/server/dispatch-as-plurnk.js.map +1 -1
- package/dist/server/drain.sql +26 -11
- package/dist/server/envelope.d.ts +1 -1
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +4 -4
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/envelope.sql +25 -1
- package/dist/server/lifecycle-recovery.sql +17 -1
- package/dist/server/logEntry.d.ts +2 -1
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +3 -2
- package/dist/server/logEntry.js.map +1 -1
- package/dist/server/logEntry.sql +7 -0
- package/dist/server/loop-model.d.ts +2 -2
- package/dist/server/loop-model.d.ts.map +1 -1
- package/dist/server/loop-model.js +23 -33
- package/dist/server/loop-model.js.map +1 -1
- package/dist/server/loopDocs.d.ts +1 -0
- package/dist/server/loopDocs.d.ts.map +1 -1
- package/dist/server/loopDocs.js +94 -14
- package/dist/server/loopDocs.js.map +1 -1
- package/dist/server/loopDocs.sql +12 -0
- package/dist/server/model-catalog.d.ts +3 -0
- package/dist/server/model-catalog.d.ts.map +1 -0
- package/dist/server/model-catalog.js +83 -0
- package/dist/server/model-catalog.js.map +1 -0
- package/dist/server/model-route.d.ts +7 -0
- package/dist/server/model-route.d.ts.map +1 -0
- package/dist/server/model-route.js +47 -0
- package/dist/server/model-route.js.map +1 -0
- package/dist/server/module-discovery.d.ts +13 -0
- package/dist/server/module-discovery.d.ts.map +1 -0
- package/dist/server/module-discovery.js +78 -0
- package/dist/server/module-discovery.js.map +1 -0
- package/dist/server/skillDocs.d.ts +9 -0
- package/dist/server/skillDocs.d.ts.map +1 -0
- package/dist/server/skillDocs.js +212 -0
- package/dist/server/skillDocs.js.map +1 -0
- package/dist/server/skillDocs.sql +14 -0
- package/dist/server/workspace-capabilities.sql +19 -0
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +182 -123
- package/dist/service.js.map +1 -1
- package/migrations/001_schema.sql +455 -65
- package/package.json +38 -37
- package/dist/core/ExecutableTools.d.ts +0 -10
- package/dist/core/ExecutableTools.d.ts.map +0 -1
- package/dist/core/ExecutableTools.js +0 -41
- package/dist/core/ExecutableTools.js.map +0 -1
- package/dist/core/JournalTurn.d.ts +0 -9
- package/dist/core/JournalTurn.d.ts.map +0 -1
- package/dist/core/JournalTurn.js +0 -14
- package/dist/core/JournalTurn.js.map +0 -1
- package/dist/core/JournalTurn.sql +0 -10
- package/dist/core/git-iso.d.ts +0 -13
- package/dist/core/git-iso.d.ts.map +0 -1
- package/dist/core/git-iso.js +0 -267
- package/dist/core/git-iso.js.map +0 -1
- package/dist/core/search-gate.d.ts +0 -17
- package/dist/core/search-gate.d.ts.map +0 -1
- package/dist/core/search-gate.js +0 -77
- package/dist/core/search-gate.js.map +0 -1
- package/dist/digest/Digest.sql +0 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
-- PREP: digest_channel_disposition_counts
|
|
2
|
+
SELECT d.disposition, COUNT(*) AS n
|
|
3
|
+
FROM entries e
|
|
4
|
+
JOIN entry_channels ec ON ec.entry_id = e.id
|
|
5
|
+
JOIN derivations d ON d.deep_hash = ec.deep_hash
|
|
6
|
+
GROUP BY d.disposition
|
|
7
|
+
ORDER BY d.disposition;
|
|
8
|
+
|
|
9
|
+
-- PREP: digest_channel_dispositions
|
|
10
|
+
SELECT e.scheme, e.pathname, ec.name AS channel, d.disposition, d.reason
|
|
11
|
+
FROM entries e
|
|
12
|
+
JOIN entry_channels ec ON ec.entry_id = e.id
|
|
13
|
+
JOIN derivations d ON d.deep_hash = ec.deep_hash
|
|
14
|
+
WHERE d.disposition <> 'vector'
|
|
15
|
+
ORDER BY d.disposition, e.scheme, e.pathname, channel;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
-- PREP: digest_entry_disposition_counts
|
|
2
|
+
SELECT d.disposition, COUNT(*) AS n
|
|
3
|
+
FROM entries e
|
|
4
|
+
JOIN entry_channels ec ON ec.entry_id = e.id AND ec.name = 'body'
|
|
5
|
+
JOIN derivations d ON d.deep_hash = e.deep_hash
|
|
6
|
+
GROUP BY d.disposition
|
|
7
|
+
ORDER BY d.disposition;
|
|
8
|
+
|
|
9
|
+
-- PREP: digest_entry_dispositions
|
|
10
|
+
SELECT e.scheme, e.pathname, 'body' AS channel, d.disposition, d.reason
|
|
11
|
+
FROM entries e
|
|
12
|
+
JOIN entry_channels ec ON ec.entry_id = e.id AND ec.name = 'body'
|
|
13
|
+
JOIN derivations d ON d.deep_hash = e.deep_hash
|
|
14
|
+
WHERE d.disposition <> 'vector'
|
|
15
|
+
ORDER BY d.disposition, e.scheme, e.pathname, channel;
|
package/dist/Paths.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type TeachingCorpusSource } from "@plurnk/plurnk-meta";
|
|
1
|
+
import { type BundledSkillName, type TeachingCorpusSource } from "@plurnk/plurnk-meta";
|
|
2
2
|
export default class Paths {
|
|
3
3
|
#private;
|
|
4
4
|
static readonly teachingRoot: string;
|
|
@@ -8,9 +8,6 @@ export default class Paths {
|
|
|
8
8
|
static defaultRequirements: string;
|
|
9
9
|
static defaultRequirementsTeachingSource: TeachingCorpusSource | null;
|
|
10
10
|
static teachingSource(source: TeachingCorpusSource): string;
|
|
11
|
-
static
|
|
12
|
-
entryName: string;
|
|
13
|
-
path: string;
|
|
14
|
-
}>;
|
|
11
|
+
static bundledSkills(): ReadonlyMap<BundledSkillName, string>;
|
|
15
12
|
}
|
|
16
13
|
//# sourceMappingURL=Paths.d.ts.map
|
package/dist/Paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Paths.d.ts","sourceRoot":"","sources":["../src/Paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Paths.d.ts","sourceRoot":"","sources":["../src/Paths.ts"],"names":[],"mappings":"AAWA,OAAO,EAGH,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC5B,MAAM,qBAAqB,CAAC;AAE7B,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;IAID,MAAM,CAAC,aAAa,IAAI,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAK5D;CAeJ"}
|
package/dist/Paths.js
CHANGED
|
@@ -8,8 +8,7 @@
|
|
|
8
8
|
// re-exports it) so `..` resolves to PACKAGE_ROOT.
|
|
9
9
|
import { fileURLToPath } from "node:url";
|
|
10
10
|
import { dirname, resolve } from "node:path";
|
|
11
|
-
import {
|
|
12
|
-
import { TEACHING_CORPUS } from "@plurnk/plurnk-meta";
|
|
11
|
+
import { BUNDLED_SKILLS, TEACHING_CORPUS, } from "@plurnk/plurnk-meta";
|
|
13
12
|
export default class Paths {
|
|
14
13
|
static #PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
15
14
|
static #CONTRACTS_ROOT = dirname(fileURLToPath(import.meta.resolve("@plurnk/plurnk-contracts/package.json")));
|
|
@@ -27,6 +26,14 @@ export default class Paths {
|
|
|
27
26
|
static teachingSource(source) {
|
|
28
27
|
return resolve(Paths.teachingRoot, source);
|
|
29
28
|
}
|
|
29
|
+
// {§bundled-skills} — exact meta-owned membership; core does not scan the
|
|
30
|
+
// package tree and accidentally expose an unpublished or auxiliary file.
|
|
31
|
+
static bundledSkills() {
|
|
32
|
+
return new Map(Object.entries(BUNDLED_SKILLS).map(([name, source]) => [
|
|
33
|
+
name,
|
|
34
|
+
resolve(Paths.teachingRoot, source),
|
|
35
|
+
]));
|
|
36
|
+
}
|
|
30
37
|
// Absolute overrides stay absolute; relative paths resolve from the package root.
|
|
31
38
|
static #resolveDefaultRequirements() {
|
|
32
39
|
const env = process.env.PLURNK_SERVICE_REQUIREMENTS;
|
|
@@ -38,24 +45,5 @@ export default class Paths {
|
|
|
38
45
|
source: TEACHING_CORPUS.requirements,
|
|
39
46
|
};
|
|
40
47
|
}
|
|
41
|
-
// Operator reference docs auto-READ into every model worker at turn 0.
|
|
42
|
-
// `PLURNK_SERVICE_MD_<ALIAS>=<path>` materializes <path>'s markdown as a
|
|
43
|
-
// `worker://plurnk/<ALIAS>.md` entry the model READs — an idiomatic way
|
|
44
|
-
// to inject standing context (an ordinary entry + READ op, not a bespoke
|
|
45
|
-
// packet section). `~` expands to home; relative paths resolve
|
|
46
|
-
// against the package root. Resolved fresh each call so it tracks the env.
|
|
47
|
-
static docs() {
|
|
48
|
-
const out = [];
|
|
49
|
-
for (const [key, value] of Object.entries(process.env)) {
|
|
50
|
-
if (!key.startsWith("PLURNK_SERVICE_MD_") || typeof value !== "string" || value.length === 0)
|
|
51
|
-
continue;
|
|
52
|
-
const alias = key.slice("PLURNK_SERVICE_MD_".length);
|
|
53
|
-
if (alias.length === 0)
|
|
54
|
-
continue;
|
|
55
|
-
const expanded = value.startsWith("~/") ? resolve(homedir(), value.slice(2)) : value === "~" ? homedir() : value;
|
|
56
|
-
out.push({ entryName: `${alias}.md`, path: resolve(Paths.#PACKAGE_ROOT, expanded) });
|
|
57
|
-
}
|
|
58
|
-
return out;
|
|
59
|
-
}
|
|
60
48
|
}
|
|
61
49
|
//# sourceMappingURL=Paths.js.map
|
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,
|
|
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,EACH,cAAc,EACd,eAAe,GAGlB,MAAM,qBAAqB,CAAC;AAE7B,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,wEAAwE;IACxE,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,2BAA2B,EAAE,CAAC;IACnE,MAAM,CAAC,mBAAmB,GAAG,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC;IAC9D,MAAM,CAAC,iCAAiC,GAAG,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC;IAE9E,MAAM,CAAC,cAAc,CAAC,MAA4B;QAC9C,OAAO,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,0EAA0E;IAC1E,yEAAyE;IACzE,MAAM,CAAC,aAAa;QAChB,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YAClE,IAAwB;YACxB,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC;SACtC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,kFAAkF;IAClF,MAAM,CAAC,2BAA2B;QAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;QACpD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACrE,CAAC;QACD,OAAO;YACH,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC;YACxD,MAAM,EAAE,eAAe,CAAC,YAAY;SACvC,CAAC;IACN,CAAC;CAGJ"}
|
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"package":"@plurnk/plurnk-service","version":"1.
|
|
1
|
+
{"package":"@plurnk/plurnk-service","version":"1.8.0","revision":"7b0489b63bf9e8de3db55a5f53fb35c97c811bf5","dirty":false}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-projector.d.ts","sourceRoot":"","sources":["../../src/content/read-projector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EACR,eAAe,EACf,eAAe,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM9D,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACvD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACrC;AAMD,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,OAAa,OAAO,CAAC,IAAI,EAAE;QACvB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;QAClC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;QAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;QACzC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;KAC7C,GAAG,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"read-projector.d.ts","sourceRoot":"","sources":["../../src/content/read-projector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EACR,eAAe,EACf,eAAe,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM9D,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACvD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACrC;AAMD,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,OAAa,OAAO,CAAC,IAAI,EAAE;QACvB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;QAClC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;QAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;QACzC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;KAC7C,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmL9B;CACJ"}
|
|
@@ -42,9 +42,11 @@ export default class ReadProjector {
|
|
|
42
42
|
? `The representation at ${target} is binary and cannot be rendered.`
|
|
43
43
|
: `The #${channel} channel is binary and cannot be rendered.`, { mimetype: selectedRepresentation.mimetype });
|
|
44
44
|
}
|
|
45
|
+
const publishesLineAnchors = manifest.lineAnchors === true
|
|
46
|
+
|| (manifest.textEditScopes === true && manifest.writableBy.includes("model"));
|
|
45
47
|
let lineMarker;
|
|
46
48
|
if (LineAnchors.hasAnchor(statement.lineMarker)) {
|
|
47
|
-
if (
|
|
49
|
+
if (!publishesLineAnchors) {
|
|
48
50
|
return failure("line-anchor-unsupported", 400, `The representation at ${target} does not publish line anchors.`, {}, {
|
|
49
51
|
target,
|
|
50
52
|
recovery: "Use numeric text coordinates.",
|
|
@@ -105,8 +107,7 @@ export default class ReadProjector {
|
|
|
105
107
|
status: producerResult.status,
|
|
106
108
|
});
|
|
107
109
|
if (result.status !== 200
|
|
108
|
-
||
|
|
109
|
-
|| !manifest.writableBy.includes("model")
|
|
110
|
+
|| !publishesLineAnchors
|
|
110
111
|
|| typeof result.content !== "string") {
|
|
111
112
|
return result;
|
|
112
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-projector.js","sourceRoot":"","sources":["../../src/content/read-projector.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"read-projector.js","sourceRoot":"","sources":["../../src/content/read-projector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BudgetReadout.d.ts","sourceRoot":"","sources":["../../src/core/BudgetReadout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BudgetReadout.d.ts","sourceRoot":"","sources":["../../src/core/BudgetReadout.ts"],"names":[],"mappings":"AASA,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,aAAa;;IAC9B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI3C;IAID,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,MAAM,CAItF;CA6EJ"}
|
|
@@ -1,47 +1,38 @@
|
|
|
1
|
-
const
|
|
2
|
-
const TOKEN_USAGE_PLACEHOLDER = "{{tokenUsage}}";
|
|
1
|
+
const TOKENS_ACTIVE_TOTAL_PLACEHOLDER = "{{tokensActiveTotal}}";
|
|
3
2
|
const TOKEN_PERCENT_PLACEHOLDER = "{{tokenPercent}}";
|
|
4
3
|
const MAX_WIDTH_PASSES = 64;
|
|
5
|
-
const PANIC = "Context Token Budget Panic: YOU MUST FOLD or KILL enough less-relevant log items to restore free tokens.";
|
|
6
4
|
export default class BudgetReadout {
|
|
7
5
|
static draft(ceiling) {
|
|
8
6
|
if (ceiling === null)
|
|
9
7
|
return "";
|
|
10
8
|
BudgetReadout.#assertCeiling(ceiling);
|
|
11
|
-
return `
|
|
9
|
+
return `tokensActiveTotal: ${TOKENS_ACTIVE_TOTAL_PLACEHOLDER} (${TOKEN_PERCENT_PLACEHOLDER}%)\ntokensActiveMax: ${ceiling}`;
|
|
12
10
|
}
|
|
13
11
|
// {§tokenomics-render-weight-budget} — widths only expand, so final numeric
|
|
14
12
|
// substitution cannot change the measured packet length or oscillate.
|
|
15
13
|
static resolve(template, ceiling, measurePacket) {
|
|
16
14
|
BudgetReadout.#assertCeiling(ceiling);
|
|
17
15
|
BudgetReadout.#assertTemplate(template);
|
|
18
|
-
|
|
19
|
-
if (ordinary.usage <= ceiling)
|
|
20
|
-
return ordinary.content;
|
|
21
|
-
return BudgetReadout.#resolveTemplate(`${template}\n${PANIC}`, ceiling, measurePacket).content;
|
|
16
|
+
return BudgetReadout.#resolveTemplate(template, ceiling, measurePacket).content;
|
|
22
17
|
}
|
|
23
18
|
static #resolveTemplate(template, ceiling, measurePacket) {
|
|
24
|
-
let widths = {
|
|
19
|
+
let widths = { activeTotal: 1, percent: 1 };
|
|
25
20
|
for (let pass = 0; pass < MAX_WIDTH_PASSES; pass += 1) {
|
|
26
21
|
const probe = BudgetReadout.#render(template, widths, {
|
|
27
|
-
|
|
22
|
+
activeTotal: "0".repeat(widths.activeTotal),
|
|
28
23
|
percent: "0".repeat(widths.percent),
|
|
29
|
-
free: "0".repeat(widths.free),
|
|
30
24
|
});
|
|
31
25
|
const usage = BudgetReadout.#assertWeight(measurePacket(probe));
|
|
32
26
|
const values = {
|
|
33
|
-
|
|
27
|
+
activeTotal: String(usage),
|
|
34
28
|
percent: BudgetReadout.#percent(usage, ceiling),
|
|
35
|
-
free: String(ceiling - usage),
|
|
36
29
|
};
|
|
37
30
|
const expanded = {
|
|
38
|
-
|
|
31
|
+
activeTotal: Math.max(widths.activeTotal, values.activeTotal.length),
|
|
39
32
|
percent: Math.max(widths.percent, values.percent.length),
|
|
40
|
-
free: Math.max(widths.free, values.free.length),
|
|
41
33
|
};
|
|
42
|
-
if (expanded.
|
|
43
|
-
|| expanded.percent !== widths.percent
|
|
44
|
-
|| expanded.free !== widths.free) {
|
|
34
|
+
if (expanded.activeTotal !== widths.activeTotal
|
|
35
|
+
|| expanded.percent !== widths.percent) {
|
|
45
36
|
widths = expanded;
|
|
46
37
|
continue;
|
|
47
38
|
}
|
|
@@ -56,9 +47,8 @@ export default class BudgetReadout {
|
|
|
56
47
|
}
|
|
57
48
|
static #render(template, widths, values) {
|
|
58
49
|
return template
|
|
59
|
-
.replace(
|
|
60
|
-
.replace(TOKEN_PERCENT_PLACEHOLDER, values.percent.padStart(widths.percent))
|
|
61
|
-
.replace(TOKENS_FREE_PLACEHOLDER, values.free.padStart(widths.free));
|
|
50
|
+
.replace(TOKENS_ACTIVE_TOTAL_PLACEHOLDER, values.activeTotal.padStart(widths.activeTotal))
|
|
51
|
+
.replace(TOKEN_PERCENT_PLACEHOLDER, values.percent.padStart(widths.percent));
|
|
62
52
|
}
|
|
63
53
|
static #percent(usage, ceiling) {
|
|
64
54
|
const percent = (usage / ceiling) * 100;
|
|
@@ -76,7 +66,7 @@ export default class BudgetReadout {
|
|
|
76
66
|
return weight;
|
|
77
67
|
}
|
|
78
68
|
static #assertTemplate(template) {
|
|
79
|
-
for (const placeholder of [
|
|
69
|
+
for (const placeholder of [TOKENS_ACTIVE_TOTAL_PLACEHOLDER, TOKEN_PERCENT_PLACEHOLDER]) {
|
|
80
70
|
if (template.split(placeholder).length !== 2) {
|
|
81
71
|
throw new TypeError(`Budget readout template must contain ${placeholder} exactly once`);
|
|
82
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BudgetReadout.js","sourceRoot":"","sources":["../../src/core/BudgetReadout.ts"],"names":[],"mappings":"AAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"BudgetReadout.js","sourceRoot":"","sources":["../../src/core/BudgetReadout.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelWrite.d.ts","sourceRoot":"","sources":["../../src/core/ChannelWrite.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIvD,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAO3D,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAQzF,MAAM,WAAW,iBAAiB;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAUpE,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ChannelWrite.d.ts","sourceRoot":"","sources":["../../src/core/ChannelWrite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelWrite.js","sourceRoot":"","sources":["../../src/core/ChannelWrite.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,0FAA0F;AAC1F,EAAE;AACF,mFAAmF;AACnF,8FAA8F;AAC9F,8EAA8E;AAC9E,6EAA6E;AAC7E,gCAAgC;AAIhC,OAAO,EAAE,OAAO,EAAwC,MAAM,wBAAwB,CAAC;AAEvF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ChannelWrite.js","sourceRoot":"","sources":["../../src/core/ChannelWrite.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ WHERE ec.entry_id = $entry_id AND ec.name = $channel;
|
|
|
10
10
|
UPDATE entry_channels
|
|
11
11
|
SET content = content || $chunk,
|
|
12
12
|
weight = content_weight(content || $chunk),
|
|
13
|
+
content_hash = NULL,
|
|
13
14
|
producer_result = NULL
|
|
14
15
|
WHERE entry_id = $entry_id AND name = $channel;
|
|
15
16
|
|
|
@@ -29,7 +30,7 @@ WHERE entry_id = $entry_id AND name = $channel AND mimetype != $mimetype;
|
|
|
29
30
|
-- Full content swap for one channel (ChannelCaps.replace). The caller binds
|
|
30
31
|
-- the same curation weight append_to_channel computes inside its atomic update.
|
|
31
32
|
UPDATE entry_channels
|
|
32
|
-
SET content = $content, weight = $weight, producer_result = NULL
|
|
33
|
+
SET content = $content, weight = $weight, content_hash = NULL, producer_result = NULL
|
|
33
34
|
WHERE entry_id = $entry_id AND name = $channel;
|
|
34
35
|
|
|
35
36
|
-- PREP: open_subscription
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ClientInteractionProjection, type ClientInteractionRequest, type ClientInteractionResolution } from "@plurnk/plurnk-contracts";
|
|
2
|
+
import type { Db } from "./Db.ts";
|
|
3
|
+
export interface ClientInteractionPendingEvent extends ClientInteractionProjection {
|
|
4
|
+
readonly workspaceId: number;
|
|
5
|
+
}
|
|
6
|
+
export default class ClientInteractions {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(db: Db);
|
|
9
|
+
onPending(listener: (event: ClientInteractionPendingEvent) => void): void;
|
|
10
|
+
request(request: ClientInteractionRequest, ids: {
|
|
11
|
+
workspaceId: number;
|
|
12
|
+
workerId: number;
|
|
13
|
+
loopId: number;
|
|
14
|
+
turnId: number;
|
|
15
|
+
}, signal?: AbortSignal): Promise<ClientInteractionResolution>;
|
|
16
|
+
resolve(interactionId: number, resolution: ClientInteractionResolution): Promise<void>;
|
|
17
|
+
list(workspaceId: number): Promise<ClientInteractionProjection[]>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ClientInteractions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientInteractions.d.ts","sourceRoot":"","sources":["../../src/core/ClientInteractions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EACnC,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAGlC,MAAM,WAAW,6BAA8B,SAAQ,2BAA2B;IAC9E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAChC;AAmCD,MAAM,CAAC,OAAO,OAAO,kBAAkB;;IAKnC,YAAY,EAAE,EAAE,EAAE,EAEjB;IAED,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,IAAI,GAAG,IAAI,CAExE;IAEK,OAAO,CACT,OAAO,EAAE,wBAAwB,EACjC,GAAG,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAC9E,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,2BAA2B,CAAC,CAqEtC;IAEK,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3F;IAEK,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAKtE;CAiBJ"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { Validator, } from "@plurnk/plurnk-contracts";
|
|
2
|
+
import Results, { OperationFailureError } from "./results.js";
|
|
3
|
+
const pendingFailure = (interactionId) => new OperationFailureError(Results.failure("interaction:resolution", "interaction-not-pending", 409, `Client interaction ${interactionId} is not pending.`, {}, {
|
|
4
|
+
interactionId,
|
|
5
|
+
stage: "interaction-resolution",
|
|
6
|
+
recovery: "Refresh pending interactions before resolving one.",
|
|
7
|
+
retryable: false,
|
|
8
|
+
}));
|
|
9
|
+
export default class ClientInteractions {
|
|
10
|
+
#db;
|
|
11
|
+
#pending = new Map();
|
|
12
|
+
#listeners = [];
|
|
13
|
+
constructor(db) {
|
|
14
|
+
this.#db = db;
|
|
15
|
+
}
|
|
16
|
+
onPending(listener) {
|
|
17
|
+
this.#listeners.push(listener);
|
|
18
|
+
}
|
|
19
|
+
async request(request, ids, signal) {
|
|
20
|
+
const exact = structuredClone(Validator.assertClientInteractionRequest(request));
|
|
21
|
+
signal?.throwIfAborted();
|
|
22
|
+
const inserted = await this.#db.client_interaction_insert.get({
|
|
23
|
+
workspace_id: ids.workspaceId,
|
|
24
|
+
worker_id: ids.workerId,
|
|
25
|
+
loop_id: ids.loopId,
|
|
26
|
+
turn_id: ids.turnId,
|
|
27
|
+
request: JSON.stringify(exact),
|
|
28
|
+
});
|
|
29
|
+
if (inserted === undefined) {
|
|
30
|
+
throw new Error(`Client interaction coordinates do not identify one operation: worker ${ids.workerId}, loop ${ids.loopId}, turn ${ids.turnId}.`);
|
|
31
|
+
}
|
|
32
|
+
const deferred = Promise.withResolvers();
|
|
33
|
+
const interactionId = inserted.id;
|
|
34
|
+
let settled = false;
|
|
35
|
+
const onAbort = () => {
|
|
36
|
+
void waiter.settle({
|
|
37
|
+
rejection: signal?.reason ?? new DOMException("Operation aborted", "AbortError"),
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const waiter = {
|
|
41
|
+
settle: async (settlement) => {
|
|
42
|
+
if (settled)
|
|
43
|
+
return pendingFailure(interactionId);
|
|
44
|
+
settled = true;
|
|
45
|
+
this.#pending.delete(interactionId);
|
|
46
|
+
signal?.removeEventListener("abort", onAbort);
|
|
47
|
+
try {
|
|
48
|
+
const deleted = await this.#db.client_interaction_delete.get({
|
|
49
|
+
interaction_id: interactionId,
|
|
50
|
+
});
|
|
51
|
+
if (deleted === undefined) {
|
|
52
|
+
throw new Error(`Pending client interaction ${interactionId} lost its durable row.`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (cause) {
|
|
56
|
+
deferred.reject(cause);
|
|
57
|
+
return cause;
|
|
58
|
+
}
|
|
59
|
+
if (settlement.rejection !== undefined)
|
|
60
|
+
deferred.reject(settlement.rejection);
|
|
61
|
+
else if (settlement.resolution !== undefined)
|
|
62
|
+
deferred.resolve(settlement.resolution);
|
|
63
|
+
else
|
|
64
|
+
deferred.reject(new Error(`Client interaction ${interactionId} settled without an outcome.`));
|
|
65
|
+
return null;
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
this.#pending.set(interactionId, waiter);
|
|
69
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
70
|
+
const event = {
|
|
71
|
+
...Validator.assertClientInteractionProjection({
|
|
72
|
+
interactionId,
|
|
73
|
+
workerId: ids.workerId,
|
|
74
|
+
loopId: ids.loopId,
|
|
75
|
+
turnId: ids.turnId,
|
|
76
|
+
request: exact,
|
|
77
|
+
}),
|
|
78
|
+
workspaceId: ids.workspaceId,
|
|
79
|
+
};
|
|
80
|
+
for (const listener of this.#listeners) {
|
|
81
|
+
try {
|
|
82
|
+
listener(event);
|
|
83
|
+
}
|
|
84
|
+
catch (cause) {
|
|
85
|
+
console.error("client interaction pending observer failed:", cause);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (signal?.aborted)
|
|
89
|
+
onAbort();
|
|
90
|
+
return deferred.promise;
|
|
91
|
+
}
|
|
92
|
+
async resolve(interactionId, resolution) {
|
|
93
|
+
const waiter = this.#pending.get(interactionId);
|
|
94
|
+
if (waiter === undefined)
|
|
95
|
+
throw pendingFailure(interactionId);
|
|
96
|
+
const exact = structuredClone(Validator.assertClientInteractionResolution(resolution));
|
|
97
|
+
const failure = await waiter.settle({ resolution: exact });
|
|
98
|
+
if (failure !== null)
|
|
99
|
+
throw failure;
|
|
100
|
+
}
|
|
101
|
+
async list(workspaceId) {
|
|
102
|
+
const rows = await this.#db.client_interaction_list.all({ workspace_id: workspaceId });
|
|
103
|
+
return rows
|
|
104
|
+
.filter((row) => this.#pending.has(row.interactionId))
|
|
105
|
+
.map((row) => ClientInteractions.#project(row));
|
|
106
|
+
}
|
|
107
|
+
static #project(row) {
|
|
108
|
+
let request;
|
|
109
|
+
try {
|
|
110
|
+
request = JSON.parse(row.request);
|
|
111
|
+
}
|
|
112
|
+
catch (cause) {
|
|
113
|
+
throw new Error(`Pending client interaction ${row.interactionId} has invalid request JSON.`, { cause });
|
|
114
|
+
}
|
|
115
|
+
return Validator.assertClientInteractionProjection({
|
|
116
|
+
interactionId: row.interactionId,
|
|
117
|
+
workerId: row.workerId,
|
|
118
|
+
loopId: row.loopId,
|
|
119
|
+
turnId: row.turnId,
|
|
120
|
+
request: Validator.assertClientInteractionRequest(request),
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=ClientInteractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientInteractions.js","sourceRoot":"","sources":["../../src/core/ClientInteractions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
-- Durable pending client interactions. {§client-interactions}
|
|
2
|
+
|
|
3
|
+
-- PREP: client_interaction_insert
|
|
4
|
+
-- Insert only when all supplied coordinates describe one existing operation.
|
|
5
|
+
INSERT INTO client_interactions (worker_id, loop_id, turn_id, request)
|
|
6
|
+
SELECT $worker_id, $loop_id, $turn_id, $request
|
|
7
|
+
WHERE EXISTS (
|
|
8
|
+
SELECT 1
|
|
9
|
+
FROM turns t
|
|
10
|
+
JOIN loops l ON l.id = t.loop_id
|
|
11
|
+
JOIN workers w ON w.id = l.worker_id
|
|
12
|
+
WHERE t.id = $turn_id
|
|
13
|
+
AND l.id = $loop_id
|
|
14
|
+
AND l.worker_id = $worker_id
|
|
15
|
+
AND w.workspace_id = $workspace_id
|
|
16
|
+
)
|
|
17
|
+
RETURNING id;
|
|
18
|
+
|
|
19
|
+
-- PREP: client_interaction_list
|
|
20
|
+
SELECT i.id AS interactionId,
|
|
21
|
+
w.workspace_id AS workspaceId,
|
|
22
|
+
i.worker_id AS workerId,
|
|
23
|
+
i.loop_id AS loopId,
|
|
24
|
+
i.turn_id AS turnId,
|
|
25
|
+
i.request
|
|
26
|
+
FROM client_interactions i
|
|
27
|
+
JOIN workers w ON w.id = i.worker_id
|
|
28
|
+
WHERE w.workspace_id = $workspace_id
|
|
29
|
+
ORDER BY i.id;
|
|
30
|
+
|
|
31
|
+
-- PREP: client_interaction_delete
|
|
32
|
+
DELETE FROM client_interactions
|
|
33
|
+
WHERE id = $interaction_id
|
|
34
|
+
RETURNING id;
|
|
@@ -2,7 +2,7 @@ import type { Db } from "./Db.ts";
|
|
|
2
2
|
import type { Mimetypes } from "@plurnk/plurnk-mimetypes";
|
|
3
3
|
import type ExecutorRegistry from "./ExecutorRegistry.ts";
|
|
4
4
|
import type { InjectWorkerNotify, StreamEventNotify, WakeWorkerNotify } from "./ChannelWrite.ts";
|
|
5
|
-
import type { Notice, ParsedPath, ReadStatement } from "@plurnk/plurnk-contracts";
|
|
5
|
+
import type { ClientInteractionRequest, ClientInteractionResolution, Notice, ParsedPath, ReadStatement } from "@plurnk/plurnk-contracts";
|
|
6
6
|
import type { PlurnkSchemeContext } from "./scheme-types.ts";
|
|
7
7
|
import type { SchemeCtx, SchemeResult, StoredEntryData } from "@plurnk/plurnk-schemes";
|
|
8
8
|
import type LiveSubscriptions from "./LiveSubscriptions.ts";
|
|
@@ -15,8 +15,14 @@ export interface CoreSchemeServices {
|
|
|
15
15
|
readonly wakeWorkerNotify: WakeWorkerNotify | undefined;
|
|
16
16
|
readonly injectWorker: InjectWorkerNotify | undefined;
|
|
17
17
|
readonly pushNotice: (workspaceId: number, loopId: number, notice: Notice) => void;
|
|
18
|
-
readonly defaultChannelFor: (scheme: string) => string;
|
|
18
|
+
readonly defaultChannelFor: (scheme: string, workspaceId: number) => string;
|
|
19
19
|
readonly readExecSource: (statement: ReadStatement, ctx: PlurnkSchemeContext) => Promise<SchemeResult>;
|
|
20
|
+
readonly requestInteraction: (request: ClientInteractionRequest, ids: {
|
|
21
|
+
workspaceId: number;
|
|
22
|
+
workerId: number;
|
|
23
|
+
loopId: number;
|
|
24
|
+
turnId: number;
|
|
25
|
+
}, signal?: AbortSignal) => Promise<ClientInteractionResolution>;
|
|
20
26
|
readonly liveSubscriptions: LiveSubscriptions;
|
|
21
27
|
}
|
|
22
28
|
export interface CoreSchemeAdapter {
|