@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
|
@@ -6,7 +6,8 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
6
6
|
}
|
|
7
7
|
return path;
|
|
8
8
|
};
|
|
9
|
-
|
|
9
|
+
var _a;
|
|
10
|
+
import { discover, RuntimeInvocation } from "@plurnk/plurnk-execs";
|
|
10
11
|
import Meta from "@plurnk/plurnk-meta";
|
|
11
12
|
// Boot-time runtime registry. Discovers installed @plurnk/plurnk-execs-*
|
|
12
13
|
// siblings (plurnk.kind:"exec") and probes each runtime TAG independently —
|
|
@@ -16,9 +17,11 @@ import Meta from "@plurnk/plurnk-meta";
|
|
|
16
17
|
// probe. Probes are cheap + local (command -v / env read / `gh auth status`),
|
|
17
18
|
// so per-tag costs nothing. A probe that rejects or exceeds its timeout
|
|
18
19
|
// degrades that tag to unavailable — it never crashes boot. {§exec-registry-resolves}
|
|
19
|
-
|
|
20
|
+
class ExecutorRegistry {
|
|
20
21
|
#byTag; // own copy — runtime registration mutates it in place
|
|
22
|
+
#workspaceByOwner = new Map();
|
|
21
23
|
#packageAttributions;
|
|
24
|
+
#toolRegistries = new WeakMap();
|
|
22
25
|
constructor(byTag, packageAttributions = new Map()) {
|
|
23
26
|
this.#byTag = new Map(byTag);
|
|
24
27
|
this.#packageAttributions = new Map(packageAttributions);
|
|
@@ -29,15 +32,105 @@ export default class ExecutorRegistry {
|
|
|
29
32
|
// separately (registerRuntimeScheme), keeping the reserved/cross-family arbitration one-owned there.
|
|
30
33
|
// Fail hard on a tag already registered: one name, one owner ({§plugin-namespace-arbitration}).
|
|
31
34
|
register(tag, entry) {
|
|
32
|
-
this.
|
|
33
|
-
|
|
35
|
+
this.prepareRegistrations([{ tag, entry }])();
|
|
36
|
+
}
|
|
37
|
+
// Validate a complete late-registration set and return its no-fail commit.
|
|
38
|
+
// The engine prepares the corresponding scheme set before invoking either
|
|
39
|
+
// registry's commit, so cross-registry publication is atomic.
|
|
40
|
+
prepareRegistrations(registrations) {
|
|
41
|
+
const tags = new Set();
|
|
42
|
+
for (const { tag, entry } of registrations) {
|
|
43
|
+
if (tags.has(tag)) {
|
|
44
|
+
throw new Error(`executor tag '${tag}' occurs more than once in one registration batch`);
|
|
45
|
+
}
|
|
46
|
+
tags.add(tag);
|
|
47
|
+
this.assertCanRegister(tag, entry.namespaceOwner);
|
|
48
|
+
}
|
|
49
|
+
return () => {
|
|
50
|
+
for (const { tag, entry } of registrations) {
|
|
51
|
+
this.#byTag.set(tag, entry);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// One module owner replaces its complete runtime set within one workspace.
|
|
56
|
+
// Validation observes the immutable base and every peer owner, while the
|
|
57
|
+
// owner's own prior set is deliberately replaceable. The commit is
|
|
58
|
+
// synchronous/no-fail and returns an equally no-fail rollback for the
|
|
59
|
+
// composed registry/docs/database transaction. {§module-workspace-capabilities}
|
|
60
|
+
prepareWorkspaceRegistrations(workspaceId, namespaceOwner, registrations) {
|
|
61
|
+
if (!Number.isSafeInteger(workspaceId) || workspaceId < 1) {
|
|
62
|
+
throw new Error("workspace runtime snapshot requires a positive workspace id");
|
|
63
|
+
}
|
|
64
|
+
if (namespaceOwner.length === 0) {
|
|
65
|
+
throw new Error("workspace runtime snapshot requires a non-empty namespace owner");
|
|
66
|
+
}
|
|
67
|
+
const byOwner = this.#workspaceByOwner.get(workspaceId);
|
|
68
|
+
const tags = new Set();
|
|
69
|
+
for (const { tag, entry } of registrations) {
|
|
70
|
+
if (tags.has(tag)) {
|
|
71
|
+
throw new Error(`executor tag '${tag}' occurs more than once in one workspace snapshot`);
|
|
72
|
+
}
|
|
73
|
+
tags.add(tag);
|
|
74
|
+
if (entry.namespaceOwner.kind !== "module" || entry.namespaceOwner.name !== namespaceOwner) {
|
|
75
|
+
throw new Error(`workspace executor '${tag}' must be owned by daemon module runtime '${namespaceOwner}'`);
|
|
76
|
+
}
|
|
77
|
+
const base = this.#byTag.get(tag);
|
|
78
|
+
if (base !== undefined)
|
|
79
|
+
this.#throwCollision(tag, base.namespaceOwner, entry.namespaceOwner);
|
|
80
|
+
for (const [peerOwner, entries] of byOwner ?? []) {
|
|
81
|
+
if (peerOwner === namespaceOwner)
|
|
82
|
+
continue;
|
|
83
|
+
const peer = entries.get(tag);
|
|
84
|
+
if (peer !== undefined)
|
|
85
|
+
this.#throwCollision(tag, peer.namespaceOwner, entry.namespaceOwner);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const next = new Map(registrations.map(({ tag, entry }) => [tag, entry]));
|
|
89
|
+
const previous = byOwner?.get(namespaceOwner);
|
|
90
|
+
return () => {
|
|
91
|
+
const owners = this.#workspaceByOwner.get(workspaceId) ?? new Map();
|
|
92
|
+
if (next.size === 0)
|
|
93
|
+
owners.delete(namespaceOwner);
|
|
94
|
+
else
|
|
95
|
+
owners.set(namespaceOwner, next);
|
|
96
|
+
if (owners.size === 0)
|
|
97
|
+
this.#workspaceByOwner.delete(workspaceId);
|
|
98
|
+
else
|
|
99
|
+
this.#workspaceByOwner.set(workspaceId, owners);
|
|
100
|
+
let pending = true;
|
|
101
|
+
return () => {
|
|
102
|
+
if (!pending)
|
|
103
|
+
return;
|
|
104
|
+
pending = false;
|
|
105
|
+
const current = this.#workspaceByOwner.get(workspaceId)
|
|
106
|
+
?? new Map();
|
|
107
|
+
if (previous === undefined)
|
|
108
|
+
current.delete(namespaceOwner);
|
|
109
|
+
else
|
|
110
|
+
current.set(namespaceOwner, previous);
|
|
111
|
+
if (current.size === 0)
|
|
112
|
+
this.#workspaceByOwner.delete(workspaceId);
|
|
113
|
+
else
|
|
114
|
+
this.#workspaceByOwner.set(workspaceId, current);
|
|
115
|
+
};
|
|
116
|
+
};
|
|
34
117
|
}
|
|
35
118
|
assertCanRegister(tag, incoming) {
|
|
36
119
|
const existing = this.#byTag.get(tag);
|
|
37
|
-
if (existing
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
120
|
+
if (existing !== undefined)
|
|
121
|
+
this.#throwCollision(tag, existing.namespaceOwner, incoming);
|
|
122
|
+
for (const byOwner of this.#workspaceByOwner.values()) {
|
|
123
|
+
for (const entries of byOwner.values()) {
|
|
124
|
+
const workspaceEntry = entries.get(tag);
|
|
125
|
+
if (workspaceEntry !== undefined) {
|
|
126
|
+
this.#throwCollision(tag, workspaceEntry.namespaceOwner, incoming);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
#throwCollision(tag, existing, incoming) {
|
|
132
|
+
throw new Error(`executor tag '${tag}' is already registered by ${_a.#describeOwner(existing)}; `
|
|
133
|
+
+ `${_a.#describeOwner(incoming)} cannot claim it`);
|
|
41
134
|
}
|
|
42
135
|
static #describeOwner(owner) {
|
|
43
136
|
return owner.kind === "package"
|
|
@@ -76,7 +169,7 @@ export default class ExecutorRegistry {
|
|
|
76
169
|
}
|
|
77
170
|
// {§operator-config-git-ceiling} PLURNK_SERVICE_GIT_ALLOWED=0 must drop every
|
|
78
171
|
// Git-capability executor entirely: a denied host neither dispatches
|
|
79
|
-
// the Git/isogit EXEC runtimes
|
|
172
|
+
// nor publishes the Git/isogit EXEC runtimes.
|
|
80
173
|
const gitDenied = process.env.PLURNK_SERVICE_GIT_ALLOWED !== "1";
|
|
81
174
|
const gitRuntimes = new Set(["git", "isogit"]);
|
|
82
175
|
const infos = [...discovered.values()].filter((info) => !(gitDenied && gitRuntimes.has(info.runtime)));
|
|
@@ -86,7 +179,7 @@ export default class ExecutorRegistry {
|
|
|
86
179
|
const probed = await Promise.all(infos.map(async (info) => {
|
|
87
180
|
const mod = await load(info.packageName);
|
|
88
181
|
const executor = new mod.default({ runtime: info.runtime, glyph: info.glyph });
|
|
89
|
-
const availability = await
|
|
182
|
+
const availability = await _a.#probe(executor, probeTimeoutMs);
|
|
90
183
|
return { info, executor, availability };
|
|
91
184
|
}));
|
|
92
185
|
const byTag = new Map();
|
|
@@ -95,14 +188,17 @@ export default class ExecutorRegistry {
|
|
|
95
188
|
executor,
|
|
96
189
|
namespaceOwner: { kind: "package", name: info.packageName },
|
|
97
190
|
glyph: info.glyph,
|
|
191
|
+
summary: info.summary,
|
|
98
192
|
invocation: info.invocation,
|
|
99
|
-
|
|
193
|
+
details: info.details,
|
|
194
|
+
...(info.resourcesPath === undefined ? {} : { resourcesPath: info.resourcesPath }),
|
|
195
|
+
...(info.expandTools === undefined ? {} : { expandTools: info.expandTools }),
|
|
100
196
|
available: availability.available,
|
|
101
197
|
detail: availability.detail,
|
|
102
198
|
});
|
|
103
199
|
}
|
|
104
|
-
|
|
105
|
-
return new
|
|
200
|
+
_a.#assertDefaultUsable(byTag, defaultRuntime);
|
|
201
|
+
return new _a(byTag, packageAttributions);
|
|
106
202
|
}
|
|
107
203
|
// A configured default runtime that can't run is an operator misconfig the
|
|
108
204
|
// boot must surface, not hide behind a silent fallback.
|
|
@@ -137,18 +233,48 @@ export default class ExecutorRegistry {
|
|
|
137
233
|
controller.abort();
|
|
138
234
|
}
|
|
139
235
|
}
|
|
140
|
-
entry(tag) {
|
|
236
|
+
entry(tag, workspaceId) {
|
|
237
|
+
if (workspaceId !== undefined) {
|
|
238
|
+
for (const entries of this.#workspaceByOwner.get(workspaceId)?.values() ?? []) {
|
|
239
|
+
const entry = entries.get(tag);
|
|
240
|
+
if (entry !== undefined)
|
|
241
|
+
return entry;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
141
244
|
return this.#byTag.get(tag);
|
|
142
245
|
}
|
|
246
|
+
// A family runtime's exact tools, summaries, and invocation contracts
|
|
247
|
+
// cross the plugin boundary as one validated snapshot. Absence means the
|
|
248
|
+
// runtime's static invocation declaration is authoritative.
|
|
249
|
+
toolRegistry(tag, workspaceId) {
|
|
250
|
+
const entry = this.entry(tag, workspaceId);
|
|
251
|
+
if (entry === undefined || entry.executor.toolRegistry === undefined)
|
|
252
|
+
return null;
|
|
253
|
+
const cached = this.#toolRegistries.get(entry.executor);
|
|
254
|
+
if (cached !== undefined || this.#toolRegistries.has(entry.executor))
|
|
255
|
+
return cached ?? null;
|
|
256
|
+
const registry = RuntimeInvocation.assertToolRegistry(entry.executor.toolRegistry(), entry.namespaceOwner.name, tag);
|
|
257
|
+
this.#toolRegistries.set(entry.executor, registry);
|
|
258
|
+
return registry;
|
|
259
|
+
}
|
|
143
260
|
// The actionable set offered to the model — available tags only. Unavailable
|
|
144
261
|
// or unknown tags are omitted; they surface their `detail` on the 501 if the
|
|
145
262
|
// model attempts one anyway.
|
|
146
|
-
availableRuntimes() {
|
|
147
|
-
const tags =
|
|
263
|
+
availableRuntimes(workspaceId) {
|
|
264
|
+
const tags = new Set();
|
|
148
265
|
for (const [tag, entry] of this.#byTag)
|
|
149
266
|
if (entry.available)
|
|
150
|
-
tags.
|
|
151
|
-
|
|
267
|
+
tags.add(tag);
|
|
268
|
+
if (workspaceId !== undefined) {
|
|
269
|
+
for (const entries of this.#workspaceByOwner.get(workspaceId)?.values() ?? []) {
|
|
270
|
+
for (const [tag, entry] of entries)
|
|
271
|
+
if (entry.available)
|
|
272
|
+
tags.add(tag);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return [...tags].toSorted((left, right) => left.localeCompare(right));
|
|
152
276
|
}
|
|
153
277
|
}
|
|
278
|
+
_a = ExecutorRegistry;
|
|
279
|
+
export default ExecutorRegistry;
|
|
154
280
|
//# sourceMappingURL=ExecutorRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutorRegistry.js","sourceRoot":"","sources":["../../src/core/ExecutorRegistry.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAUhD,OAAO,IAIN,MAAM,qBAAqB,CAAC;AAyC7B,yEAAyE;AACzE,4EAA4E;AAC5E,yEAAyE;AACzE,kEAAkE;AAClE,0EAA0E;AAC1E,8EAA8E;AAC9E,wEAAwE;AACxE,sFAAsF;AACtF,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACxB,MAAM,CAA6B,CAAG,sDAAsD;IAC5F,oBAAoB,CAAsB;IAEnD,YAAY,KAAyC,EAAE,mBAAmB,GAAwB,IAAI,GAAG,EAAE;QACvG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC7D,CAAC;IAED,2FAA2F;IAC3F,6FAA6F;IAC7F,wGAAwG;IACxG,qGAAqG;IACrG,gGAAgG;IAChG,QAAQ,CAAC,GAAW,EAAE,KAAoB;QACtC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,iBAAiB,CAAC,GAAW,EAAE,QAA+B;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO;QACnC,MAAM,IAAI,KAAK,CACX,iBAAiB,GAAG,8BAA8B,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI;cAC5G,GAAG,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,kBAAkB,CACnE,CAAC;IACN,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,KAA4B;QAC9C,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS;YAC3B,CAAC,CAAC,qBAAqB,KAAK,CAAC,IAAI,GAAG;YACpC,CAAC,CAAC,0BAA0B,KAAK,CAAC,IAAI,GAAG,CAAC;IAClD,CAAC;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,YAAY,CAAC,OAAiC;QAC1C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;QACxD,KAAK,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9D,IAAI,cAAc,CAAC,IAAI,KAAK,SAAS;gBAAE,SAAS;YAChD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAY,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,KAAK,GAAwB,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,cAAc,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC5D,IAAI,QAAQ,KAAK,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YACtE,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,GAAG,CAAC,IAAY,EAAoB,EAAE,CAAC,MAAM,kCAAC,IAAI,EAAC,EAAE,GAUzI,EAAE;QACF,MAAM,EACF,QAAQ,EAAE,UAAU,EACpB,mBAAmB,GAAG,IAAI,GAAG,EAAE,EAC/B,OAAO,GAAG,EAAE,GACf,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,2EAA2E;QAC3E,0EAA0E;QAC1E,wEAAwE;QACxE,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,6EAA6E,CAAC,CAAC;QACxH,CAAC;QAED,8EAA8E;QAC9E,qEAAqE;QACrE,yEAAyE;QACzE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,GAAG,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEvG,yEAAyE;QACzE,+DAA+D;QAC/D,+CAA+C;QAC/C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAA8D,CAAC;YACtG,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/E,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YAC7E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC,CAAC;QAEJ,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;QAC/C,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,MAAM,EAAE,CAAC;YACpD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;gBACpB,QAAQ;gBACR,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC3D,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;gBACvC,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,MAAM,EAAE,YAAY,CAAC,MAAM;aAC9B,CAAC,CAAC;QACP,CAAC;QAED,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAC7D,OAAO,IAAI,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IAC5D,CAAC;IAED,2EAA2E;IAC3E,wDAAwD;IACxD,MAAM,CAAC,oBAAoB,CAAC,KAAyC,EAAE,cAA6B;QAChG,IAAI,cAAc,KAAK,IAAI;YAAE,OAAO;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACxC,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,cAAc,6BAA6B,CAAC,CAAC;QAC/G,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,yBAAyB,cAAc,mBAAmB,GAAG,EAAE,CAAC,CAAC;QACrF,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAkB,EAAE,SAAiB;QACrD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,SAAS,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAC9F,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACD,uFAAuF;YACvF,wFAAwF;YACxF,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChG,CAAC;gBAAS,CAAC;YACP,UAAU,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,6BAA6B;IAC7B,iBAAiB;QACb,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,KAAK,CAAC,SAAS;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"ExecutorRegistry.js","sourceRoot":"","sources":["../../src/core/ExecutorRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
type HostPathsOptions = {
|
|
2
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
3
|
+
readonly home?: string;
|
|
4
|
+
};
|
|
5
|
+
type XdgVariable = "XDG_CONFIG_HOME" | "XDG_DATA_HOME" | "XDG_STATE_HOME" | "XDG_CACHE_HOME" | "XDG_RUNTIME_DIR";
|
|
6
|
+
export default class HostPaths {
|
|
7
|
+
readonly home: string;
|
|
8
|
+
readonly configHome: string;
|
|
9
|
+
readonly dataHome: string;
|
|
10
|
+
readonly stateHome: string;
|
|
11
|
+
readonly cacheHome: string;
|
|
12
|
+
readonly runtimeHome: string | null;
|
|
13
|
+
readonly invalidXdg: readonly XdgVariable[];
|
|
14
|
+
readonly configDir: string;
|
|
15
|
+
readonly dataDir: string;
|
|
16
|
+
readonly stateDir: string;
|
|
17
|
+
readonly cacheDir: string;
|
|
18
|
+
readonly runtimeDir: string | null;
|
|
19
|
+
readonly configFile: string;
|
|
20
|
+
readonly policyFile: string;
|
|
21
|
+
readonly databaseFile: string;
|
|
22
|
+
readonly globalSkillsDir: string;
|
|
23
|
+
readonly legacyDir: string;
|
|
24
|
+
constructor({ env, home }?: HostPathsOptions);
|
|
25
|
+
projectSkillsDir(projectRoot: string): string;
|
|
26
|
+
expandUserPath(value: string): string;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=HostPaths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HostPaths.d.ts","sourceRoot":"","sources":["../../src/core/HostPaths.ts"],"names":[],"mappings":"AAGA,KAAK,gBAAgB,GAAG;IACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,KAAK,WAAW,GAAG,iBAAiB,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAMjH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,CAAC;IAE5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,YAAY,EAAE,GAAiB,EAAE,IAAgB,EAAE,GAAE,gBAAqB,EAsCzE;IAED,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE5C;IAED,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpC;CACJ"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { isAbsolute, join, resolve } from "node:path";
|
|
3
|
+
const APP_DIRECTORY = "plurnk";
|
|
4
|
+
// {§host-path-layout} — one host-boundary resolver. Package-relative assets
|
|
5
|
+
// remain owned by ../Paths.ts; this class owns only user and runtime locations.
|
|
6
|
+
export default class HostPaths {
|
|
7
|
+
home;
|
|
8
|
+
configHome;
|
|
9
|
+
dataHome;
|
|
10
|
+
stateHome;
|
|
11
|
+
cacheHome;
|
|
12
|
+
runtimeHome;
|
|
13
|
+
invalidXdg;
|
|
14
|
+
configDir;
|
|
15
|
+
dataDir;
|
|
16
|
+
stateDir;
|
|
17
|
+
cacheDir;
|
|
18
|
+
runtimeDir;
|
|
19
|
+
configFile;
|
|
20
|
+
policyFile;
|
|
21
|
+
databaseFile;
|
|
22
|
+
globalSkillsDir;
|
|
23
|
+
legacyDir;
|
|
24
|
+
constructor({ env = process.env, home = homedir() } = {}) {
|
|
25
|
+
this.home = resolve(home);
|
|
26
|
+
const invalid = [];
|
|
27
|
+
const base = (name, fallback) => {
|
|
28
|
+
const value = env[name];
|
|
29
|
+
if (value === undefined || value.length === 0)
|
|
30
|
+
return resolve(this.home, fallback);
|
|
31
|
+
if (isAbsolute(value))
|
|
32
|
+
return resolve(value);
|
|
33
|
+
invalid.push(name);
|
|
34
|
+
return resolve(this.home, fallback);
|
|
35
|
+
};
|
|
36
|
+
this.configHome = base("XDG_CONFIG_HOME", ".config");
|
|
37
|
+
this.dataHome = base("XDG_DATA_HOME", join(".local", "share"));
|
|
38
|
+
this.stateHome = base("XDG_STATE_HOME", join(".local", "state"));
|
|
39
|
+
this.cacheHome = base("XDG_CACHE_HOME", ".cache");
|
|
40
|
+
const runtime = env.XDG_RUNTIME_DIR;
|
|
41
|
+
if (runtime === undefined || runtime.length === 0) {
|
|
42
|
+
this.runtimeHome = null;
|
|
43
|
+
}
|
|
44
|
+
else if (isAbsolute(runtime)) {
|
|
45
|
+
this.runtimeHome = resolve(runtime);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
invalid.push("XDG_RUNTIME_DIR");
|
|
49
|
+
this.runtimeHome = null;
|
|
50
|
+
}
|
|
51
|
+
this.invalidXdg = Object.freeze(invalid);
|
|
52
|
+
this.configDir = join(this.configHome, APP_DIRECTORY);
|
|
53
|
+
this.dataDir = join(this.dataHome, APP_DIRECTORY);
|
|
54
|
+
this.stateDir = join(this.stateHome, APP_DIRECTORY);
|
|
55
|
+
this.cacheDir = join(this.cacheHome, APP_DIRECTORY);
|
|
56
|
+
this.runtimeDir = this.runtimeHome === null ? null : join(this.runtimeHome, APP_DIRECTORY);
|
|
57
|
+
this.configFile = join(this.configDir, ".env");
|
|
58
|
+
this.policyFile = join(this.configDir, "AGENTS.md");
|
|
59
|
+
this.databaseFile = join(this.dataDir, "plurnk.db");
|
|
60
|
+
// The upstream `skills` CLI's universal global target is deliberately
|
|
61
|
+
// shared across agents and is rooted independently of application config.
|
|
62
|
+
this.globalSkillsDir = join(this.home, ".agents", "skills");
|
|
63
|
+
this.legacyDir = join(this.home, ".plurnk");
|
|
64
|
+
}
|
|
65
|
+
projectSkillsDir(projectRoot) {
|
|
66
|
+
return join(resolve(projectRoot), ".agents", "skills");
|
|
67
|
+
}
|
|
68
|
+
expandUserPath(value) {
|
|
69
|
+
if (value === "~")
|
|
70
|
+
return this.home;
|
|
71
|
+
return value.startsWith("~/") ? resolve(this.home, value.slice(2)) : value;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=HostPaths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HostPaths.js","sourceRoot":"","sources":["../../src/core/HostPaths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type HostPaths from "./HostPaths.ts";
|
|
2
|
+
export interface LegacyMigrationMove {
|
|
3
|
+
readonly source: string;
|
|
4
|
+
readonly destination: string;
|
|
5
|
+
}
|
|
6
|
+
export default class LegacyHome {
|
|
7
|
+
static assertCanonical(paths: HostPaths): Promise<void>;
|
|
8
|
+
static migrate(paths: HostPaths): Promise<readonly LegacyMigrationMove[]>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=LegacyHome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LegacyHome.d.ts","sourceRoot":"","sources":["../../src/core/LegacyHome.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AA0C5C,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAChC;AAID,MAAM,CAAC,OAAO,OAAO,UAAU;IAC3B,OAAa,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAU5D;IAED,OAAa,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAmG9E;CACJ"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { createReadStream } from "node:fs";
|
|
3
|
+
import { constants } from "node:fs";
|
|
4
|
+
import { access, chmod, copyFile, lstat, mkdir, readdir, rmdir, stat, unlink, } from "node:fs/promises";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import DaemonLock from "../server/DaemonLock.js";
|
|
7
|
+
const CONFIG_MEMBERS = new Map([
|
|
8
|
+
[".env", ".env"],
|
|
9
|
+
["AGENTS.md", "AGENTS.md"],
|
|
10
|
+
]);
|
|
11
|
+
const DATA_MEMBERS = new Map([
|
|
12
|
+
["plurnk.db", "plurnk.db"],
|
|
13
|
+
["plurnk.db-wal", "plurnk.db-wal"],
|
|
14
|
+
["plurnk.db-shm", "plurnk.db-shm"],
|
|
15
|
+
]);
|
|
16
|
+
const GENERATED_MEMBERS = new Set([".env.defaults", ".env.example", "INSTALL.md"]);
|
|
17
|
+
const LOCK_MEMBER = "plurnk.db.lock";
|
|
18
|
+
const exists = async (path) => access(path, constants.F_OK)
|
|
19
|
+
.then(() => true)
|
|
20
|
+
.catch(() => false);
|
|
21
|
+
const hashFile = async (path) => {
|
|
22
|
+
const hash = createHash("sha256");
|
|
23
|
+
for await (const chunk of createReadStream(path))
|
|
24
|
+
hash.update(chunk);
|
|
25
|
+
return hash.digest("hex");
|
|
26
|
+
};
|
|
27
|
+
const copyVerified = async (source, destination) => {
|
|
28
|
+
const sourceStat = await stat(source);
|
|
29
|
+
let created = false;
|
|
30
|
+
try {
|
|
31
|
+
await copyFile(source, destination, constants.COPYFILE_EXCL);
|
|
32
|
+
created = true;
|
|
33
|
+
await chmod(destination, sourceStat.mode & 0o777);
|
|
34
|
+
const [sourceHash, destinationHash] = await Promise.all([hashFile(source), hashFile(destination)]);
|
|
35
|
+
if (sourceHash !== destinationHash) {
|
|
36
|
+
throw new Error(`copy verification failed: ${source} -> ${destination}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (cause) {
|
|
40
|
+
if (created)
|
|
41
|
+
await unlink(destination).catch(() => { });
|
|
42
|
+
throw cause;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
// {§legacy-home-transition} — the only reader of the retired mixed home. It is
|
|
46
|
+
// an explicit one-way operation, not a compatibility path used by the daemon.
|
|
47
|
+
export default class LegacyHome {
|
|
48
|
+
static async assertCanonical(paths) {
|
|
49
|
+
if (!await exists(paths.legacyDir))
|
|
50
|
+
return;
|
|
51
|
+
const canonical = await Promise.all([exists(paths.configDir), exists(paths.dataDir)]);
|
|
52
|
+
if (canonical.some(Boolean)) {
|
|
53
|
+
throw new Error(`legacy ${paths.legacyDir} and canonical Plurnk paths both exist; `
|
|
54
|
+
+ "resolve the conflict without guessing, then run plurnk-service paths migrate");
|
|
55
|
+
}
|
|
56
|
+
throw new Error(`legacy Plurnk home found at ${paths.legacyDir}; run plurnk-service paths migrate`);
|
|
57
|
+
}
|
|
58
|
+
static async migrate(paths) {
|
|
59
|
+
if (!await exists(paths.legacyDir))
|
|
60
|
+
return [];
|
|
61
|
+
const legacyStat = await lstat(paths.legacyDir);
|
|
62
|
+
if (!legacyStat.isDirectory())
|
|
63
|
+
throw new Error(`legacy Plurnk home is not a directory: ${paths.legacyDir}`);
|
|
64
|
+
const entries = await readdir(paths.legacyDir, { withFileTypes: true });
|
|
65
|
+
const known = new Set([
|
|
66
|
+
...CONFIG_MEMBERS.keys(),
|
|
67
|
+
...DATA_MEMBERS.keys(),
|
|
68
|
+
...GENERATED_MEMBERS,
|
|
69
|
+
LOCK_MEMBER,
|
|
70
|
+
]);
|
|
71
|
+
const unknown = entries.filter((entry) => !known.has(entry.name)).map((entry) => entry.name).sort();
|
|
72
|
+
if (unknown.length > 0) {
|
|
73
|
+
throw new Error(`legacy Plurnk home contains unknown member(s): ${unknown.join(", ")}`);
|
|
74
|
+
}
|
|
75
|
+
const nonFiles = entries
|
|
76
|
+
.filter((entry) => !entry.isFile())
|
|
77
|
+
.map((entry) => entry.name)
|
|
78
|
+
.sort();
|
|
79
|
+
if (nonFiles.length > 0) {
|
|
80
|
+
throw new Error(`legacy Plurnk member(s) are not regular files: ${nonFiles.join(", ")}`);
|
|
81
|
+
}
|
|
82
|
+
const existingDestinations = (await Promise.all([
|
|
83
|
+
paths.configDir,
|
|
84
|
+
paths.dataDir,
|
|
85
|
+
].map(async (path) => await exists(path) ? path : null))).filter((path) => path !== null);
|
|
86
|
+
if (existingDestinations.length > 0) {
|
|
87
|
+
throw new Error(`canonical Plurnk destination(s) already exist: ${existingDestinations.join(", ")}`);
|
|
88
|
+
}
|
|
89
|
+
const names = new Set(entries.map((entry) => entry.name));
|
|
90
|
+
const hasDatabaseState = [...DATA_MEMBERS.keys(), LOCK_MEMBER].some((name) => names.has(name));
|
|
91
|
+
const lock = hasDatabaseState ? await DaemonLock.acquire(join(paths.legacyDir, "plurnk.db")) : null;
|
|
92
|
+
const moves = [
|
|
93
|
+
...[...CONFIG_MEMBERS].flatMap(([sourceName, destinationName]) => names.has(sourceName) ? [{
|
|
94
|
+
source: join(paths.legacyDir, sourceName),
|
|
95
|
+
destination: join(paths.configDir, destinationName),
|
|
96
|
+
}] : []),
|
|
97
|
+
...[...DATA_MEMBERS].flatMap(([sourceName, destinationName]) => names.has(sourceName) ? [{
|
|
98
|
+
source: join(paths.legacyDir, sourceName),
|
|
99
|
+
destination: join(paths.dataDir, destinationName),
|
|
100
|
+
}] : []),
|
|
101
|
+
];
|
|
102
|
+
const createdDirectories = [];
|
|
103
|
+
const copied = [];
|
|
104
|
+
let commitStarted = false;
|
|
105
|
+
try {
|
|
106
|
+
if ([...CONFIG_MEMBERS.keys()].some((name) => names.has(name))) {
|
|
107
|
+
await mkdir(paths.configDir, { recursive: true, mode: 0o700 });
|
|
108
|
+
createdDirectories.push(paths.configDir);
|
|
109
|
+
}
|
|
110
|
+
if ([...DATA_MEMBERS.keys()].some((name) => names.has(name))) {
|
|
111
|
+
await mkdir(paths.dataDir, { recursive: true, mode: 0o700 });
|
|
112
|
+
createdDirectories.push(paths.dataDir);
|
|
113
|
+
}
|
|
114
|
+
// Always copy first, including on one filesystem. Every source stays
|
|
115
|
+
// authoritative until every destination has passed byte verification.
|
|
116
|
+
for (const { source, destination } of moves) {
|
|
117
|
+
await copyVerified(source, destination);
|
|
118
|
+
copied.push(destination);
|
|
119
|
+
}
|
|
120
|
+
for (const { destination } of moves) {
|
|
121
|
+
if (!await exists(destination))
|
|
122
|
+
throw new Error(`migration destination verification failed: ${destination}`);
|
|
123
|
+
}
|
|
124
|
+
for (const sourceName of GENERATED_MEMBERS) {
|
|
125
|
+
if (names.has(sourceName))
|
|
126
|
+
await unlink(join(paths.legacyDir, sourceName));
|
|
127
|
+
}
|
|
128
|
+
commitStarted = true;
|
|
129
|
+
for (const { source } of moves)
|
|
130
|
+
await unlink(source);
|
|
131
|
+
}
|
|
132
|
+
catch (cause) {
|
|
133
|
+
if (!commitStarted) {
|
|
134
|
+
const rollbackErrors = [];
|
|
135
|
+
for (const destination of copied.toReversed()) {
|
|
136
|
+
try {
|
|
137
|
+
await unlink(destination);
|
|
138
|
+
}
|
|
139
|
+
catch (rollbackCause) {
|
|
140
|
+
if (rollbackCause.code !== "ENOENT")
|
|
141
|
+
rollbackErrors.push(rollbackCause);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
for (const directory of createdDirectories.toReversed()) {
|
|
145
|
+
try {
|
|
146
|
+
await rmdir(directory);
|
|
147
|
+
}
|
|
148
|
+
catch (rollbackCause) {
|
|
149
|
+
if (rollbackCause.code !== "ENOENT")
|
|
150
|
+
rollbackErrors.push(rollbackCause);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (rollbackErrors.length > 0) {
|
|
154
|
+
throw new AggregateError([cause, ...rollbackErrors], "legacy path migration failed and rollback was incomplete");
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
throw cause;
|
|
158
|
+
}
|
|
159
|
+
finally {
|
|
160
|
+
await lock?.release();
|
|
161
|
+
}
|
|
162
|
+
const survivors = await readdir(paths.legacyDir);
|
|
163
|
+
if (survivors.length > 0) {
|
|
164
|
+
throw new Error(`legacy Plurnk home was not emptied: ${survivors.join(", ")}`);
|
|
165
|
+
}
|
|
166
|
+
await rmdir(paths.legacyDir);
|
|
167
|
+
return moves;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=LegacyHome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LegacyHome.js","sourceRoot":"","sources":["../../src/core/LegacyHome.ts"],"names":[],"mappings":"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"}
|
package/dist/core/LogBody.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export interface ResolvedLogBody {
|
|
|
11
11
|
readonly mimetype: string;
|
|
12
12
|
readonly startLine: number | null;
|
|
13
13
|
}
|
|
14
|
-
export type ActionlessLogKind = "
|
|
14
|
+
export type ActionlessLogKind = "turnOps" | "emissionAttempt";
|
|
15
15
|
export default class LogBody {
|
|
16
16
|
#private;
|
|
17
17
|
static weight(row: LogBodyRow, weighContent: (text: string) => number): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogBody.d.ts","sourceRoot":"","sources":["../../src/core/LogBody.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,iBAAiB,GAAG,
|
|
1
|
+
{"version":3,"file":"LogBody.d.ts","sourceRoot":"","sources":["../../src/core/LogBody.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,iBAAiB,CAAC;AAY9D,MAAM,CAAC,OAAO,OAAO,OAAO;;IACxB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAG7E;IAsCD,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,iBAAiB,GAAG,IAAI,CAYrF;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,eAAe,CAuI/C;CACJ"}
|
package/dist/core/LogBody.js
CHANGED
|
@@ -61,8 +61,8 @@ export default class LogBody {
|
|
|
61
61
|
const kind = attrs !== null && typeof attrs === "object"
|
|
62
62
|
? attrs.kind
|
|
63
63
|
: undefined;
|
|
64
|
-
if (kind !== "
|
|
65
|
-
throw new TypeError("An actionless log body must carry attrs.kind=
|
|
64
|
+
if (kind !== "turnOps" && kind !== "emissionAttempt") {
|
|
65
|
+
throw new TypeError("An actionless log body must carry attrs.kind=turnOps or emissionAttempt.");
|
|
66
66
|
}
|
|
67
67
|
return kind;
|
|
68
68
|
}
|