@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
package/dist/service.js
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { parseArgs } from "node:util";
|
|
3
|
-
import {
|
|
3
|
+
import { spawn } from "node:child_process";
|
|
4
|
+
import { existsSync, mkdirSync } from "node:fs";
|
|
4
5
|
import { fileURLToPath } from "node:url";
|
|
5
6
|
import { dirname, resolve } from "node:path";
|
|
6
|
-
import { homedir } from "node:os";
|
|
7
7
|
import SqlRite from "@possumtech/sqlrite";
|
|
8
8
|
import Daemon from "./server/Daemon.js";
|
|
9
9
|
import DaemonLock from "./server/DaemonLock.js";
|
|
10
10
|
import EnvFlags from "./core/EnvFlags.js";
|
|
11
11
|
import EnvDefaults from "./core/env-defaults.js";
|
|
12
|
+
import HostPaths from "./core/HostPaths.js";
|
|
13
|
+
import LegacyHome from "./core/LegacyHome.js";
|
|
14
|
+
import OperatorConfig from "./core/OperatorConfig.js";
|
|
12
15
|
import ProviderInstantiate from "./core/ProviderInstantiate.js";
|
|
13
|
-
import Meta
|
|
14
|
-
import { parseAliasesFromEnv,
|
|
16
|
+
import Meta from "@plurnk/plurnk-meta";
|
|
17
|
+
import { parseAliasesFromEnv, resolveActiveRoute, resolveModelSelector } from "@plurnk/plurnk-providers";
|
|
15
18
|
import { Module as AguiModule } from "@plurnk/plurnk-agui";
|
|
16
19
|
import { Module as HooksModule } from "@plurnk/plurnk-hooks";
|
|
17
20
|
import { Module as McpModule } from "@plurnk/plurnk-mcp";
|
|
18
21
|
import { formatBuildInfo, getBuildInfo } from "./build-info.js";
|
|
19
22
|
import ServiceTeardown from "./core/ServiceTeardown.js";
|
|
20
|
-
import
|
|
23
|
+
import Paths from "./Paths.js";
|
|
21
24
|
import { startObservability } from "./observe/init.js";
|
|
22
25
|
// The `plurnk-service` executable: launches the daemon (start) or applies the schema baseline.
|
|
23
26
|
// Not the user-facing client — that is the separate `plurnk` project.
|
|
@@ -27,70 +30,7 @@ export default class Service {
|
|
|
27
30
|
static #codeDir = dirname(fileURLToPath(import.meta.url));
|
|
28
31
|
static #projectRoot = resolve(Service.#codeDir, "..");
|
|
29
32
|
static #ext = import.meta.url.endsWith(".ts") ? ".ts" : ".js";
|
|
30
|
-
static #
|
|
31
|
-
// First-run bootstrap — run-time, NOT an install script: seed ~/.plurnk so a global
|
|
32
|
-
// install has a stable home for config + the DB. Idempotent (only acts when absent).
|
|
33
|
-
static #ensureHome() {
|
|
34
|
-
// Seed ONCE, on first run (the home is absent). After that the user owns ~/.plurnk —
|
|
35
|
-
// edits and deletions stick, no silent re-seed. The assembled floor is in-memory
|
|
36
|
-
// ({§operator-config-env-defaults}); `~/.plurnk/.env.defaults` is its rendered catalog,
|
|
37
|
-
// machine-owned and regenerated each boot. Wiping the whole dir is a deliberate reset.
|
|
38
|
-
if (existsSync(Service.#homeDir))
|
|
39
|
-
return;
|
|
40
|
-
// Read the required seed before mutating the home. A broken installed corpus
|
|
41
|
-
// fails the first-run boundary without leaving an apparently initialized home.
|
|
42
|
-
const shippedPolicy = readTeachingSourceSync(TEACHING_CORPUS.personality);
|
|
43
|
-
mkdirSync(Service.#homeDir, { recursive: true });
|
|
44
|
-
// The first-run model selection lives HERE, as commented peers — an honest surfaced
|
|
45
|
-
// choice (no active default ships, {§operator-config-shipped-defaults}). One uncomment per option; agents read this
|
|
46
|
-
// file as naturally as humans do.
|
|
47
|
-
writeFileSync(resolve(Service.#homeDir, ".env"), [
|
|
48
|
-
"# plurnk config — overrides the shipped defaults (~/.plurnk/.env.defaults is the assembled legend).",
|
|
49
|
-
"#",
|
|
50
|
-
"# Pick a model — uncomment ONE block:",
|
|
51
|
-
"#",
|
|
52
|
-
"# LOCAL — your own llama-server / any OpenAI-compatible endpoint:",
|
|
53
|
-
"# PLURNK_MODEL_local=\"openai/gemma\"",
|
|
54
|
-
"# OPENAI_BASE_URL=http://127.0.0.1:11434",
|
|
55
|
-
"# PLURNK_MODEL=local",
|
|
56
|
-
"#",
|
|
57
|
-
"# CLOUD — bring your own key, any openrouter model:",
|
|
58
|
-
"# PLURNK_MODEL_cloud=\"openrouter/qwen/qwen3-coder\"",
|
|
59
|
-
"# OPENROUTER_API_KEY=\"...\"",
|
|
60
|
-
"# PLURNK_MODEL=cloud",
|
|
61
|
-
"#",
|
|
62
|
-
"# PLURNK.AI - Plurnk-optimized endpoint service - https://plurnk.ai/",
|
|
63
|
-
"# PLURNK_MODEL_plurnk=\"plurnk/plurnk\"",
|
|
64
|
-
"# PLURNK_API_KEY=\"...\"",
|
|
65
|
-
"# PLURNK_MODEL=plurnk",
|
|
66
|
-
"",
|
|
67
|
-
].join("\n"));
|
|
68
|
-
// Seed the default operating policy rendered as ## Policy. The user owns the seeded file;
|
|
69
|
-
// later edits or deletion persist.
|
|
70
|
-
writeFileSync(resolve(Service.#homeDir, "AGENTS.md"), shippedPolicy);
|
|
71
|
-
process.stderr.write(`plurnk-service: created ${Service.#homeDir} — config in ${resolve(Service.#homeDir, ".env")}\n`);
|
|
72
|
-
}
|
|
73
|
-
// Package-owned reference files are REFRESHED from the installed package on every boot —
|
|
74
|
-
// they carry the installed version's prose, so a seed-once snapshot would silently drift.
|
|
75
|
-
// Safe to clobber because they are package-owned, NOT user config: ~/.plurnk/.env (the
|
|
76
|
-
// user's, seeded once above) is never touched here. The knob legend is the assembled
|
|
77
|
-
// ~/.plurnk/.env.defaults, written by main() after assembly; .env.example is that legend's
|
|
78
|
-
// retired name — a machine-owned stale copy is removed so it can't mislead readers.
|
|
79
|
-
static #syncReferenceFiles() {
|
|
80
|
-
if (!existsSync(Service.#homeDir))
|
|
81
|
-
return;
|
|
82
|
-
for (const name of ["INSTALL.md"]) {
|
|
83
|
-
const src = resolve(Service.#projectRoot, name);
|
|
84
|
-
if (existsSync(src))
|
|
85
|
-
copyFileSync(src, resolve(Service.#homeDir, name));
|
|
86
|
-
}
|
|
87
|
-
rmSync(resolve(Service.#homeDir, ".env.example"), { force: true });
|
|
88
|
-
}
|
|
89
|
-
static #expandHome(p) {
|
|
90
|
-
if (p === "~")
|
|
91
|
-
return homedir();
|
|
92
|
-
return p.startsWith("~/") ? resolve(homedir(), p.slice(2)) : p;
|
|
93
|
-
}
|
|
33
|
+
static #hostPaths = new HostPaths();
|
|
94
34
|
// The node_modules holding the service's plugin deps (exec/scheme/mimetype), resolved
|
|
95
35
|
// from this file's REAL location by the shared membership walk. Falls back to CWD.
|
|
96
36
|
static #pluginsNodeModules() {
|
|
@@ -125,12 +65,56 @@ export default class Service {
|
|
|
125
65
|
return [];
|
|
126
66
|
});
|
|
127
67
|
}
|
|
68
|
+
static #configFileArg() {
|
|
69
|
+
const index = process.argv.findIndex((arg) => arg === "--config" || arg.startsWith("--config="));
|
|
70
|
+
if (index === -1)
|
|
71
|
+
return null;
|
|
72
|
+
const arg = process.argv[index];
|
|
73
|
+
const value = arg.includes("=") ? arg.slice(arg.indexOf("=") + 1) : process.argv[index + 1];
|
|
74
|
+
return value === undefined ? null : Service.#hostPaths.expandUserPath(value);
|
|
75
|
+
}
|
|
128
76
|
static #requireEnv(name) {
|
|
129
77
|
const value = process.env[name];
|
|
130
78
|
if (value === undefined || value.length === 0)
|
|
131
79
|
Service.#die(78, `missing required env ${name} (declare it in .env.defaults)`);
|
|
132
80
|
return value;
|
|
133
81
|
}
|
|
82
|
+
static #databasePath() {
|
|
83
|
+
const configured = process.env.PLURNK_SERVICE_DB_PATH;
|
|
84
|
+
return configured === undefined || configured.length === 0
|
|
85
|
+
? Service.#hostPaths.databaseFile
|
|
86
|
+
: resolve(Service.#hostPaths.expandUserPath(configured));
|
|
87
|
+
}
|
|
88
|
+
static #modelConfiguration() {
|
|
89
|
+
const aliases = parseAliasesFromEnv(process.env);
|
|
90
|
+
const active = resolveActiveRoute(process.env);
|
|
91
|
+
const childSelector = process.env.PLURNK_MODEL_CHILD;
|
|
92
|
+
if (childSelector !== undefined) {
|
|
93
|
+
if (childSelector.length === 0 || resolveModelSelector(childSelector, aliases) === null) {
|
|
94
|
+
const names = aliases.map(({ alias }) => alias).join(", ");
|
|
95
|
+
throw new Error(`PLURNK_MODEL_CHILD=${childSelector} is neither a declared alias nor a provider/model route `
|
|
96
|
+
+ `(declared aliases: ${names.length > 0 ? names : "none"}). Unset it to inherit.`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return { aliases, active };
|
|
100
|
+
}
|
|
101
|
+
static #formatModelRoute(route) {
|
|
102
|
+
if (route === null)
|
|
103
|
+
return "not selected";
|
|
104
|
+
const exact = `${route.provider}/${route.model}`;
|
|
105
|
+
return route.alias === undefined ? exact : `${route.alias}=${exact}`;
|
|
106
|
+
}
|
|
107
|
+
static async #ensureOperatorConfig() {
|
|
108
|
+
await LegacyHome.assertCanonical(Service.#hostPaths);
|
|
109
|
+
if (Service.#hostPaths.invalidXdg.length > 0) {
|
|
110
|
+
process.stderr.write(`plurnk-service: ignored relative XDG variable(s): ${Service.#hostPaths.invalidXdg.join(", ")}; `
|
|
111
|
+
+ "run plurnk-service config check\n");
|
|
112
|
+
}
|
|
113
|
+
if (await OperatorConfig.ensure(Service.#hostPaths, Paths.personality)) {
|
|
114
|
+
process.stderr.write(`plurnk-service: created ${Service.#hostPaths.configDir} — edit ${Service.#hostPaths.configFile}; `
|
|
115
|
+
+ "run plurnk-service config defaults for every installed option\n");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
134
118
|
static #sqliteKnob(name) {
|
|
135
119
|
const raw = process.env[name];
|
|
136
120
|
if (raw === undefined || raw.trim() === "")
|
|
@@ -152,7 +136,7 @@ export default class Service {
|
|
|
152
136
|
if (v !== undefined)
|
|
153
137
|
tuning[opt] = v;
|
|
154
138
|
}
|
|
155
|
-
mkdirSync(dirname(dbPath), { recursive: true });
|
|
139
|
+
mkdirSync(dirname(dbPath), { recursive: true, mode: 0o700 });
|
|
156
140
|
const lock = exclusive ? await DaemonLock.acquire(dbPath) : null;
|
|
157
141
|
try {
|
|
158
142
|
const db = await SqlRite.open({
|
|
@@ -190,7 +174,7 @@ export default class Service {
|
|
|
190
174
|
}
|
|
191
175
|
}
|
|
192
176
|
static async #migrate() {
|
|
193
|
-
const dbPath = Service.#
|
|
177
|
+
const dbPath = Service.#databasePath();
|
|
194
178
|
const db = await Service.#openDb(dbPath, true);
|
|
195
179
|
try {
|
|
196
180
|
process.stdout.write(`migrated: ${dbPath}\n`);
|
|
@@ -200,29 +184,14 @@ export default class Service {
|
|
|
200
184
|
}
|
|
201
185
|
}
|
|
202
186
|
static async #start() {
|
|
203
|
-
const dbPath = Service.#
|
|
187
|
+
const dbPath = Service.#databasePath();
|
|
204
188
|
const host = Service.#requireEnv("PLURNK_HOST");
|
|
205
189
|
// PLURNK_PORT is THE client surface — the AG-UI+ listener (the agui plugin module binds
|
|
206
190
|
// it at boot via the seam). {§rpc}: production has no daemon-owned listener.
|
|
207
191
|
const port = Number(Service.#requireEnv("PLURNK_PORT"));
|
|
208
|
-
|
|
209
|
-
const childAlias = process.env.PLURNK_MODEL_CHILD;
|
|
210
|
-
if (childAlias !== undefined) {
|
|
211
|
-
const declared = parseAliasesFromEnv(process.env);
|
|
212
|
-
if (childAlias.length === 0 || !declared.some(({ alias: name }) => name === childAlias.toLowerCase())) {
|
|
213
|
-
const names = declared.map(({ alias: name }) => name).join(", ");
|
|
214
|
-
throw new Error(`PLURNK_MODEL_CHILD=${childAlias} names no declared alias (declared: ${names.length > 0 ? names : "none"}). `
|
|
215
|
-
+ "Unset it to inherit each spawning loop's provider, or select a declared alias.");
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
// {§operator-config} — an explicit boot alias must resolve; only an
|
|
192
|
+
// {§operator-config} — an explicit boot selector must resolve; only an
|
|
219
193
|
// unset selector permits modelless boot for per-request selection.
|
|
220
|
-
const
|
|
221
|
-
if (alias === null && selectedModel !== "") {
|
|
222
|
-
const declared = parseAliasesFromEnv(process.env).map((a) => a.alias).join(", ");
|
|
223
|
-
throw new Error(`PLURNK_MODEL=${selectedModel} names no declared alias (declared: ${declared.length > 0 ? declared : "none"}). `
|
|
224
|
-
+ `The knob takes an ALIAS name; for an inline model, declare PLURNK_MODEL_<alias>=${selectedModel} and set PLURNK_MODEL=<alias>.`);
|
|
225
|
-
}
|
|
194
|
+
const { active: route } = Service.#modelConfiguration();
|
|
226
195
|
// {§startup-admission-order}: persistence and its exclusive owner are
|
|
227
196
|
// admitted before provider verification can perform external work.
|
|
228
197
|
const db = await Service.#openDb(dbPath, true);
|
|
@@ -234,7 +203,7 @@ export default class Service {
|
|
|
234
203
|
// implementation loads; teardown already owns the admitted DB.
|
|
235
204
|
observability = await startObservability();
|
|
236
205
|
const hooksModule = HooksModule.init();
|
|
237
|
-
const provider =
|
|
206
|
+
const provider = route === null ? null : await ProviderInstantiate.loadActiveProvider();
|
|
238
207
|
daemon = new Daemon({ db, provider, nodeModulesPath: Service.#pluginsNodeModules() });
|
|
239
208
|
daemon.registerModule(McpModule.init());
|
|
240
209
|
daemon.registerModule(hooksModule);
|
|
@@ -264,11 +233,12 @@ export default class Service {
|
|
|
264
233
|
else if (embedInfo.contextWindow === null) {
|
|
265
234
|
process.stderr.write("plurnk-service: remote embedder active but reports no input context window — set PLURNK_MIMETYPES_EMBED_CONTEXT_WINDOW to the endpoint's limit or embedding derivations will refuse\n");
|
|
266
235
|
}
|
|
267
|
-
if (
|
|
268
|
-
process.stderr.write(`plurnk-service: no model configured —
|
|
236
|
+
if (route === null) {
|
|
237
|
+
process.stderr.write(`plurnk-service: no model configured — choose a profile in ${Service.#hostPaths.configFile}; `
|
|
238
|
+
+ "run plurnk-service config defaults for every installed option. Loops fail legibly until then.\n");
|
|
269
239
|
}
|
|
270
|
-
const
|
|
271
|
-
process.stdout.write(`plurnk-service agui=http://${aguiAddr.host}:${aguiAddr.port} db=${dbPath} ${
|
|
240
|
+
const routeText = route === null ? "no model" : Service.#formatModelRoute(route);
|
|
241
|
+
process.stdout.write(`plurnk-service agui=http://${aguiAddr.host}:${aguiAddr.port} db=${dbPath} ${routeText}\n`);
|
|
272
242
|
const shutdown = () => {
|
|
273
243
|
teardown.request((cause) => {
|
|
274
244
|
process.exitCode = 1;
|
|
@@ -282,49 +252,106 @@ export default class Service {
|
|
|
282
252
|
await teardown.fail(cause);
|
|
283
253
|
}
|
|
284
254
|
}
|
|
285
|
-
static async
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
255
|
+
static async #configStatus() {
|
|
256
|
+
const { aliases, active } = Service.#modelConfiguration();
|
|
257
|
+
const explicitFiles = Service.#envFileArgs().map(({ path }) => resolve(Service.#hostPaths.expandUserPath(path)));
|
|
258
|
+
const configFile = Service.#configFileArg();
|
|
259
|
+
const lines = [
|
|
260
|
+
`config: ${Service.#hostPaths.configFile} (${existsSync(Service.#hostPaths.configFile) ? "present" : "absent"})`,
|
|
261
|
+
"sources (low -> high):",
|
|
262
|
+
" package .env.defaults floor",
|
|
263
|
+
` ${Service.#hostPaths.configFile}${existsSync(Service.#hostPaths.configFile) ? "" : " (absent)"}`,
|
|
264
|
+
` ${resolve(".env")}${existsSync(".env") ? "" : " (absent)"}`,
|
|
265
|
+
...(configFile === null ? [] : [` ${resolve(configFile)}${existsSync(configFile) ? "" : " (absent)"}`]),
|
|
266
|
+
...explicitFiles.map((path) => ` ${path}${existsSync(path) ? "" : " (absent)"}`),
|
|
267
|
+
" process environment",
|
|
268
|
+
" CLI flags",
|
|
269
|
+
`model: ${Service.#formatModelRoute(active)}`,
|
|
270
|
+
`declared aliases: ${aliases.length === 0 ? "none" : aliases.map(({ alias }) => alias).join(", ")}`,
|
|
271
|
+
`database: ${Service.#databasePath()}`,
|
|
272
|
+
"defaults: plurnk-service config defaults",
|
|
273
|
+
"validation: plurnk-service config check",
|
|
274
|
+
];
|
|
275
|
+
process.stdout.write(`${lines.join("\n")}\n`);
|
|
276
|
+
}
|
|
277
|
+
static async #configCheck() {
|
|
278
|
+
if (Service.#hostPaths.invalidXdg.length > 0) {
|
|
279
|
+
throw new Error(`relative XDG variable(s) are invalid and ignored: ${Service.#hostPaths.invalidXdg.join(", ")}`);
|
|
280
|
+
}
|
|
281
|
+
const { aliases, active } = Service.#modelConfiguration();
|
|
282
|
+
process.stdout.write([
|
|
283
|
+
"configuration valid",
|
|
284
|
+
`config: ${Service.#hostPaths.configFile}`,
|
|
285
|
+
`model: ${Service.#formatModelRoute(active)}`,
|
|
286
|
+
`declared aliases: ${aliases.length === 0 ? "none" : aliases.map(({ alias }) => alias).join(", ")}`,
|
|
287
|
+
`database: ${Service.#databasePath()}`,
|
|
288
|
+
"provider requests: none",
|
|
289
|
+
"",
|
|
290
|
+
].join("\n"));
|
|
291
|
+
}
|
|
292
|
+
static async #configEdit() {
|
|
293
|
+
const editor = process.env.VISUAL || process.env.EDITOR;
|
|
294
|
+
if (editor === undefined || editor.length === 0) {
|
|
295
|
+
throw new Error(`VISUAL and EDITOR are unset; edit ${Service.#hostPaths.configFile}, `
|
|
296
|
+
+ "then run plurnk-service config check");
|
|
289
297
|
}
|
|
298
|
+
await new Promise((resolvePromise, rejectPromise) => {
|
|
299
|
+
// VISUAL/EDITOR conventionally permits a shell command with flags.
|
|
300
|
+
// Keep the user-owned command semantics, but pass the config path as
|
|
301
|
+
// a quoted positional so whitespace and shell characters stay data.
|
|
302
|
+
const child = spawn("/bin/sh", ["-c", `${editor} "$1"`, "plurnk-service config edit", Service.#hostPaths.configFile], { stdio: "inherit" });
|
|
303
|
+
child.once("error", rejectPromise);
|
|
304
|
+
child.once("exit", (code, signal) => {
|
|
305
|
+
if (code === 0)
|
|
306
|
+
resolvePromise();
|
|
307
|
+
else
|
|
308
|
+
rejectPromise(new Error(`${editor} exited ${code ?? `on ${signal ?? "unknown signal"}`}`));
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
static async #pathsMigrate() {
|
|
313
|
+
const moves = await LegacyHome.migrate(Service.#hostPaths);
|
|
314
|
+
if (moves.length === 0) {
|
|
315
|
+
process.stdout.write(`paths canonical: no legacy home remains at ${Service.#hostPaths.legacyDir}\n`);
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
process.stdout.write(`paths migrated:\n${moves.map(({ source, destination }) => ` ${source} -> ${destination}`).join("\n")}\n`);
|
|
319
|
+
}
|
|
320
|
+
static async main() {
|
|
290
321
|
// loadEnvFile is set-if-unset, so every service-owned layer loads high→low. Within the
|
|
291
322
|
// repeatable env-file tier, loading last→first preserves Node's later-file-wins order.
|
|
292
323
|
// {§operator-config-precedence}
|
|
293
|
-
for (const { path: envFile, required } of Service.#envFileArgs().toReversed())
|
|
294
|
-
Service.#loadEnv(envFile, required);
|
|
295
|
-
|
|
296
|
-
const configFile = (
|
|
297
|
-
if (configFlagIndex === -1)
|
|
298
|
-
return null;
|
|
299
|
-
const arg = process.argv[configFlagIndex];
|
|
300
|
-
if (arg.includes("="))
|
|
301
|
-
return arg.slice(arg.indexOf("=") + 1);
|
|
302
|
-
return process.argv[configFlagIndex + 1] ?? null;
|
|
303
|
-
})();
|
|
324
|
+
for (const { path: envFile, required } of Service.#envFileArgs().toReversed()) {
|
|
325
|
+
Service.#loadEnv(Service.#hostPaths.expandUserPath(envFile), required);
|
|
326
|
+
}
|
|
327
|
+
const configFile = Service.#configFileArg();
|
|
304
328
|
if (configFile !== null)
|
|
305
329
|
Service.#loadEnv(configFile, true);
|
|
306
330
|
Service.#loadEnv(".env", false);
|
|
307
|
-
Service.#loadEnv(
|
|
331
|
+
Service.#loadEnv(Service.#hostPaths.configFile, false);
|
|
308
332
|
// The assembled floor sits under everything the operator set: this package's
|
|
309
333
|
// .env.defaults + every installed member's, one owner per key (collision = boot crash),
|
|
310
|
-
// applied set-if-unset. The
|
|
311
|
-
//
|
|
334
|
+
// applied set-if-unset. The complete owner-labelled catalog is projected only by
|
|
335
|
+
// `config defaults`; there is no generated configuration copy.
|
|
312
336
|
const defaultsFiles = await EnvDefaults.collect(Service.#projectRoot, Service.#pluginsNodeModules());
|
|
313
337
|
EnvDefaults.apply(EnvDefaults.merge(defaultsFiles));
|
|
314
|
-
if (existsSync(Service.#homeDir))
|
|
315
|
-
writeFileSync(resolve(Service.#homeDir, ".env.defaults"), EnvDefaults.renderCatalog(defaultsFiles));
|
|
316
338
|
const flagDescriptors = await EnvFlags.parseEnvDefaults(resolve(Service.#projectRoot, ".env.defaults"));
|
|
317
339
|
const flagOptions = {};
|
|
318
340
|
for (const f of flagDescriptors) {
|
|
319
341
|
flagOptions[f.flagName.replace(/^--/, "")] = { type: "string" };
|
|
320
342
|
}
|
|
321
|
-
const usage = `usage: plurnk-service [options] [migrate]
|
|
343
|
+
const usage = `usage: plurnk-service [options] [start|migrate]
|
|
344
|
+
plurnk-service [options] config [edit|defaults|check]
|
|
345
|
+
plurnk-service paths migrate
|
|
322
346
|
|
|
323
347
|
${EnvFlags.formatFlagsHelp(flagDescriptors)}
|
|
324
348
|
|
|
325
349
|
--env-file=<path> layer env from <path> (repeatable; later wins; errors if missing)
|
|
326
350
|
--env-file-if-exists=<path> layer env from <path> if present (repeatable; later wins)
|
|
327
351
|
--config=<path> layer additional env from <path>
|
|
352
|
+
config defaults print every installed package's annotated .env.defaults
|
|
353
|
+
config check validate configuration without contacting a provider
|
|
354
|
+
paths migrate move a legacy ~/.plurnk into canonical XDG paths
|
|
328
355
|
-v, --version show executable provenance
|
|
329
356
|
-h, --help show this help
|
|
330
357
|
`;
|
|
@@ -353,19 +380,51 @@ ${EnvFlags.formatFlagsHelp(flagDescriptors)}
|
|
|
353
380
|
process.stdout.write(`${formatBuildInfo(buildInfo)}\n`);
|
|
354
381
|
process.exit(0);
|
|
355
382
|
}
|
|
356
|
-
const
|
|
357
|
-
const
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
383
|
+
const command = typeof positionals[0] === "string" ? positionals[0] : "start";
|
|
384
|
+
const action = typeof positionals[1] === "string" ? positionals[1] : null;
|
|
385
|
+
let name = command;
|
|
386
|
+
let handler = null;
|
|
387
|
+
if (command === "start" || command === "migrate") {
|
|
388
|
+
if (positionals.length > 1)
|
|
389
|
+
Service.#die(64, `unexpected arguments: ${positionals.slice(1).join(" ")}`);
|
|
390
|
+
await Service.#ensureOperatorConfig();
|
|
391
|
+
handler = command === "start" ? Service.#start : Service.#migrate;
|
|
392
|
+
}
|
|
393
|
+
else if (command === "config") {
|
|
394
|
+
if (positionals.length > 2)
|
|
395
|
+
Service.#die(64, `unexpected arguments: ${positionals.slice(2).join(" ")}`);
|
|
396
|
+
name = action === null ? "config" : `config ${action}`;
|
|
397
|
+
if (action === "defaults") {
|
|
398
|
+
handler = async () => { process.stdout.write(EnvDefaults.renderCatalog(defaultsFiles)); };
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
await LegacyHome.assertCanonical(Service.#hostPaths);
|
|
402
|
+
if (action === "edit") {
|
|
403
|
+
await Service.#ensureOperatorConfig();
|
|
404
|
+
handler = Service.#configEdit;
|
|
405
|
+
}
|
|
406
|
+
else if (action === "check") {
|
|
407
|
+
handler = Service.#configCheck;
|
|
408
|
+
}
|
|
409
|
+
else if (action === null) {
|
|
410
|
+
handler = Service.#configStatus;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
else if (command === "paths" && action === "migrate") {
|
|
415
|
+
if (positionals.length > 2)
|
|
416
|
+
Service.#die(64, `unexpected arguments: ${positionals.slice(2).join(" ")}`);
|
|
417
|
+
name = "paths migrate";
|
|
418
|
+
handler = Service.#pathsMigrate;
|
|
419
|
+
}
|
|
420
|
+
if (handler === null)
|
|
421
|
+
Service.#die(64, `unknown command: ${positionals.join(" ")}\n\n${usage}`);
|
|
363
422
|
process.stderr.write(`plurnk-service: ${formatBuildInfo(buildInfo)}\n`);
|
|
364
423
|
try {
|
|
365
424
|
await handler();
|
|
366
425
|
}
|
|
367
426
|
catch (cause) {
|
|
368
|
-
process.stderr.write(ServiceTeardown.diagnostic(
|
|
427
|
+
process.stderr.write(ServiceTeardown.diagnostic(name, cause));
|
|
369
428
|
process.exit(1);
|
|
370
429
|
}
|
|
371
430
|
}
|
package/dist/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|