@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.
Files changed (310) hide show
  1. package/.env.defaults +29 -42
  2. package/INSTALL.md +49 -10
  3. package/README.md +11 -1
  4. package/SPEC.md +702 -287
  5. package/digest-sql/channel-dispositions/dispositions.sql +15 -0
  6. package/digest-sql/channel-state/state.sql +6 -0
  7. package/digest-sql/curation/curation.sql +5 -0
  8. package/digest-sql/derivations/derivations.sql +4 -0
  9. package/digest-sql/embeddings/embeddings.sql +4 -0
  10. package/digest-sql/entry-dispositions/dispositions.sql +15 -0
  11. package/digest-sql/entry-state/state.sql +6 -0
  12. package/digest-sql/token-counts/token-counts.sql +2 -0
  13. package/dist/Paths.d.ts +2 -5
  14. package/dist/Paths.d.ts.map +1 -1
  15. package/dist/Paths.js +9 -21
  16. package/dist/Paths.js.map +1 -1
  17. package/dist/build-info.json +1 -1
  18. package/dist/content/read-projector.d.ts.map +1 -1
  19. package/dist/content/read-projector.js +4 -3
  20. package/dist/content/read-projector.js.map +1 -1
  21. package/dist/core/BudgetReadout.d.ts.map +1 -1
  22. package/dist/core/BudgetReadout.js +12 -22
  23. package/dist/core/BudgetReadout.js.map +1 -1
  24. package/dist/core/ChannelWrite.d.ts.map +1 -1
  25. package/dist/core/ChannelWrite.js.map +1 -1
  26. package/dist/core/ChannelWrite.sql +2 -1
  27. package/dist/core/ClientInteractions.d.ts +19 -0
  28. package/dist/core/ClientInteractions.d.ts.map +1 -0
  29. package/dist/core/ClientInteractions.js +124 -0
  30. package/dist/core/ClientInteractions.js.map +1 -0
  31. package/dist/core/ClientInteractions.sql +34 -0
  32. package/dist/core/CoreSchemeServices.d.ts +8 -2
  33. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  34. package/dist/core/CoreSchemeServices.js +7 -1
  35. package/dist/core/CoreSchemeServices.js.map +1 -1
  36. package/dist/core/Dispatcher.d.ts +9 -6
  37. package/dist/core/Dispatcher.d.ts.map +1 -1
  38. package/dist/core/Dispatcher.js +74 -125
  39. package/dist/core/Dispatcher.js.map +1 -1
  40. package/dist/core/Engine.d.ts +26 -9
  41. package/dist/core/Engine.d.ts.map +1 -1
  42. package/dist/core/Engine.js +125 -44
  43. package/dist/core/Engine.js.map +1 -1
  44. package/dist/core/Engine.sql +112 -107
  45. package/dist/core/ExecutorRegistry.d.ts +19 -5
  46. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  47. package/dist/core/ExecutorRegistry.js +144 -18
  48. package/dist/core/ExecutorRegistry.js.map +1 -1
  49. package/dist/core/HostPaths.d.ts +29 -0
  50. package/dist/core/HostPaths.d.ts.map +1 -0
  51. package/dist/core/HostPaths.js +74 -0
  52. package/dist/core/HostPaths.js.map +1 -0
  53. package/dist/core/LegacyHome.d.ts +10 -0
  54. package/dist/core/LegacyHome.d.ts.map +1 -0
  55. package/dist/core/LegacyHome.js +170 -0
  56. package/dist/core/LegacyHome.js.map +1 -0
  57. package/dist/core/LogBody.d.ts +1 -1
  58. package/dist/core/LogBody.d.ts.map +1 -1
  59. package/dist/core/LogBody.js +2 -2
  60. package/dist/core/LogBody.js.map +1 -1
  61. package/dist/core/LogEntryProjection.js +1 -1
  62. package/dist/core/LogEntryProjection.js.map +1 -1
  63. package/dist/core/LogVisibility.d.ts +28 -0
  64. package/dist/core/LogVisibility.d.ts.map +1 -0
  65. package/dist/core/LogVisibility.js +215 -0
  66. package/dist/core/LogVisibility.js.map +1 -0
  67. package/dist/core/LoopLifecycle.d.ts +1 -0
  68. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  69. package/dist/core/LoopLifecycle.js +8 -0
  70. package/dist/core/LoopLifecycle.js.map +1 -1
  71. package/dist/core/LoopLifecycle.sql +10 -0
  72. package/dist/core/OperatorConfig.d.ts +6 -0
  73. package/dist/core/OperatorConfig.d.ts.map +1 -0
  74. package/dist/core/OperatorConfig.js +92 -0
  75. package/dist/core/OperatorConfig.js.map +1 -0
  76. package/dist/core/OverflowTurn.d.ts +11 -0
  77. package/dist/core/OverflowTurn.d.ts.map +1 -0
  78. package/dist/core/OverflowTurn.js +77 -0
  79. package/dist/core/OverflowTurn.js.map +1 -0
  80. package/dist/core/Owner.js +2 -2
  81. package/dist/core/Owner.js.map +1 -1
  82. package/dist/core/PacketBuilder.d.ts +3 -15
  83. package/dist/core/PacketBuilder.d.ts.map +1 -1
  84. package/dist/core/PacketBuilder.js +52 -113
  85. package/dist/core/PacketBuilder.js.map +1 -1
  86. package/dist/core/ProblemLog.js +1 -1
  87. package/dist/core/ProblemLog.js.map +1 -1
  88. package/dist/core/ProposalLifecycle.d.ts +3 -1
  89. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  90. package/dist/core/ProposalLifecycle.js +9 -26
  91. package/dist/core/ProposalLifecycle.js.map +1 -1
  92. package/dist/core/ProviderInstantiate.d.ts +9 -5
  93. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  94. package/dist/core/ProviderInstantiate.js +99 -104
  95. package/dist/core/ProviderInstantiate.js.map +1 -1
  96. package/dist/core/ResourceMutations.d.ts +2 -2
  97. package/dist/core/ResourceMutations.d.ts.map +1 -1
  98. package/dist/core/ResourceMutations.js +13 -11
  99. package/dist/core/ResourceMutations.js.map +1 -1
  100. package/dist/core/SchemeRegistry.d.ts +18 -11
  101. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  102. package/dist/core/SchemeRegistry.js +201 -53
  103. package/dist/core/SchemeRegistry.js.map +1 -1
  104. package/dist/core/ToolResources.d.ts +19 -0
  105. package/dist/core/ToolResources.d.ts.map +1 -0
  106. package/dist/core/ToolResources.js +122 -0
  107. package/dist/core/ToolResources.js.map +1 -0
  108. package/dist/core/Turn.d.ts +27 -0
  109. package/dist/core/Turn.d.ts.map +1 -0
  110. package/dist/core/Turn.js +43 -0
  111. package/dist/core/Turn.js.map +1 -0
  112. package/dist/core/Turn.sql +72 -0
  113. package/dist/core/TurnOps.d.ts +7 -0
  114. package/dist/core/TurnOps.d.ts.map +1 -0
  115. package/dist/core/TurnOps.js +63 -0
  116. package/dist/core/TurnOps.js.map +1 -0
  117. package/dist/core/TurnRunner.d.ts +15 -5
  118. package/dist/core/TurnRunner.d.ts.map +1 -1
  119. package/dist/core/TurnRunner.js +1050 -900
  120. package/dist/core/TurnRunner.js.map +1 -1
  121. package/dist/core/WorkerName.d.ts +1 -1
  122. package/dist/core/WorkerName.d.ts.map +1 -1
  123. package/dist/core/WorkspaceGate.d.ts +1 -0
  124. package/dist/core/WorkspaceGate.d.ts.map +1 -1
  125. package/dist/core/WorkspaceGate.js +39 -0
  126. package/dist/core/WorkspaceGate.js.map +1 -1
  127. package/dist/core/caps/CoreInteractionCaps.d.ts +9 -0
  128. package/dist/core/caps/CoreInteractionCaps.d.ts.map +1 -0
  129. package/dist/core/caps/CoreInteractionCaps.js +14 -0
  130. package/dist/core/caps/CoreInteractionCaps.js.map +1 -0
  131. package/dist/core/caps/SchemeCtxImpl.d.ts +2 -1
  132. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  133. package/dist/core/caps/SchemeCtxImpl.js +3 -0
  134. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  135. package/dist/core/env-defaults.d.ts.map +1 -1
  136. package/dist/core/env-defaults.js +7 -5
  137. package/dist/core/env-defaults.js.map +1 -1
  138. package/dist/core/fork.d.ts.map +1 -1
  139. package/dist/core/fork.js +15 -4
  140. package/dist/core/fork.js.map +1 -1
  141. package/dist/core/fork.sql +57 -27
  142. package/dist/core/git-env.d.ts +0 -1
  143. package/dist/core/git-env.d.ts.map +1 -1
  144. package/dist/core/git-env.js +0 -3
  145. package/dist/core/git-env.js.map +1 -1
  146. package/dist/core/git-membership.d.ts.map +1 -1
  147. package/dist/core/git-membership.js +10 -26
  148. package/dist/core/git-membership.js.map +1 -1
  149. package/dist/core/git-state.d.ts.map +1 -1
  150. package/dist/core/git-state.js +13 -14
  151. package/dist/core/git-state.js.map +1 -1
  152. package/dist/core/operation-target-groups.d.ts +3 -0
  153. package/dist/core/operation-target-groups.d.ts.map +1 -0
  154. package/dist/core/operation-target-groups.js +53 -0
  155. package/dist/core/operation-target-groups.js.map +1 -0
  156. package/dist/core/packet-inject.d.ts +0 -1
  157. package/dist/core/packet-inject.d.ts.map +1 -1
  158. package/dist/core/packet-inject.js +6 -13
  159. package/dist/core/packet-inject.js.map +1 -1
  160. package/dist/core/packet-wire.d.ts +4 -0
  161. package/dist/core/packet-wire.d.ts.map +1 -1
  162. package/dist/core/packet-wire.js +208 -44
  163. package/dist/core/packet-wire.js.map +1 -1
  164. package/dist/core/plurnk-uri.d.ts +1 -1
  165. package/dist/core/plurnk-uri.d.ts.map +1 -1
  166. package/dist/core/plurnk-uri.js +3 -3
  167. package/dist/core/plurnk-uri.js.map +1 -1
  168. package/dist/core/scheme-types.d.ts +2 -1
  169. package/dist/core/scheme-types.d.ts.map +1 -1
  170. package/dist/core/scheme-types.js.map +1 -1
  171. package/dist/core/teaching.d.ts.map +1 -1
  172. package/dist/core/teaching.js +4 -5
  173. package/dist/core/teaching.js.map +1 -1
  174. package/dist/core/worker-settings.d.ts +9 -0
  175. package/dist/core/worker-settings.d.ts.map +1 -0
  176. package/dist/core/worker-settings.js +25 -0
  177. package/dist/core/worker-settings.js.map +1 -0
  178. package/dist/core/workspace-settings.d.ts +0 -11
  179. package/dist/core/workspace-settings.d.ts.map +1 -1
  180. package/dist/core/workspace-settings.js +3 -47
  181. package/dist/core/workspace-settings.js.map +1 -1
  182. package/dist/digest/Digest.d.ts.map +1 -1
  183. package/dist/digest/Digest.js +164 -92
  184. package/dist/digest/Digest.js.map +1 -1
  185. package/dist/digest/digest.sql +8 -2
  186. package/dist/observe/genai.d.ts +9 -0
  187. package/dist/observe/genai.d.ts.map +1 -0
  188. package/dist/observe/genai.js +31 -0
  189. package/dist/observe/genai.js.map +1 -0
  190. package/dist/observe/spans.d.ts +3 -3
  191. package/dist/observe/spans.d.ts.map +1 -1
  192. package/dist/observe/spans.js +20 -5
  193. package/dist/observe/spans.js.map +1 -1
  194. package/dist/schemes/EffectPolicy.d.ts +3 -0
  195. package/dist/schemes/EffectPolicy.d.ts.map +1 -1
  196. package/dist/schemes/EffectPolicy.js +38 -6
  197. package/dist/schemes/EffectPolicy.js.map +1 -1
  198. package/dist/schemes/Exec.d.ts.map +1 -1
  199. package/dist/schemes/Exec.js +82 -18
  200. package/dist/schemes/Exec.js.map +1 -1
  201. package/dist/schemes/Log.d.ts +6 -2
  202. package/dist/schemes/Log.d.ts.map +1 -1
  203. package/dist/schemes/Log.js +73 -22
  204. package/dist/schemes/Log.js.map +1 -1
  205. package/dist/schemes/Log.sql +25 -7
  206. package/dist/schemes/Prompt.d.ts.map +1 -1
  207. package/dist/schemes/Prompt.js +1 -2
  208. package/dist/schemes/Prompt.js.map +1 -1
  209. package/dist/schemes/QuestionTool.d.ts +10 -0
  210. package/dist/schemes/QuestionTool.d.ts.map +1 -0
  211. package/dist/schemes/QuestionTool.js +81 -0
  212. package/dist/schemes/QuestionTool.js.map +1 -0
  213. package/dist/schemes/Skill.d.ts.map +1 -1
  214. package/dist/schemes/Skill.js +4 -1
  215. package/dist/schemes/Skill.js.map +1 -1
  216. package/dist/schemes/Worker.d.ts.map +1 -1
  217. package/dist/schemes/Worker.js +20 -3
  218. package/dist/schemes/Worker.js.map +1 -1
  219. package/dist/schemes/_entry-crud.sql +19 -1
  220. package/dist/schemes/_entry-find.d.ts +5 -3
  221. package/dist/schemes/_entry-find.d.ts.map +1 -1
  222. package/dist/schemes/_entry-find.js +102 -22
  223. package/dist/schemes/_entry-find.js.map +1 -1
  224. package/dist/schemes/_entry-find.sql +8 -6
  225. package/dist/schemes/_entry-graph.sql +2 -6
  226. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  227. package/dist/schemes/_entry-manifest.js +12 -1
  228. package/dist/schemes/_entry-manifest.js.map +1 -1
  229. package/dist/schemes/_search-index.d.ts.map +1 -1
  230. package/dist/schemes/_search-index.js +37 -25
  231. package/dist/schemes/_search-index.js.map +1 -1
  232. package/dist/server/Daemon.d.ts +69 -12
  233. package/dist/server/Daemon.d.ts.map +1 -1
  234. package/dist/server/Daemon.js +737 -133
  235. package/dist/server/Daemon.js.map +1 -1
  236. package/dist/server/DaemonModule.d.ts +31 -3
  237. package/dist/server/DaemonModule.d.ts.map +1 -1
  238. package/dist/server/DrainSupervisor.d.ts +12 -9
  239. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  240. package/dist/server/DrainSupervisor.js +59 -10
  241. package/dist/server/DrainSupervisor.js.map +1 -1
  242. package/dist/server/client-input.d.ts +7 -2
  243. package/dist/server/client-input.d.ts.map +1 -1
  244. package/dist/server/client-input.js +65 -34
  245. package/dist/server/client-input.js.map +1 -1
  246. package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
  247. package/dist/server/dispatch-as-plurnk.js +28 -6
  248. package/dist/server/dispatch-as-plurnk.js.map +1 -1
  249. package/dist/server/drain.sql +26 -11
  250. package/dist/server/envelope.d.ts +1 -1
  251. package/dist/server/envelope.d.ts.map +1 -1
  252. package/dist/server/envelope.js +4 -4
  253. package/dist/server/envelope.js.map +1 -1
  254. package/dist/server/envelope.sql +25 -1
  255. package/dist/server/lifecycle-recovery.sql +17 -1
  256. package/dist/server/logEntry.d.ts +2 -1
  257. package/dist/server/logEntry.d.ts.map +1 -1
  258. package/dist/server/logEntry.js +3 -2
  259. package/dist/server/logEntry.js.map +1 -1
  260. package/dist/server/logEntry.sql +7 -0
  261. package/dist/server/loop-model.d.ts +2 -2
  262. package/dist/server/loop-model.d.ts.map +1 -1
  263. package/dist/server/loop-model.js +23 -33
  264. package/dist/server/loop-model.js.map +1 -1
  265. package/dist/server/loopDocs.d.ts +1 -0
  266. package/dist/server/loopDocs.d.ts.map +1 -1
  267. package/dist/server/loopDocs.js +94 -14
  268. package/dist/server/loopDocs.js.map +1 -1
  269. package/dist/server/loopDocs.sql +12 -0
  270. package/dist/server/model-catalog.d.ts +3 -0
  271. package/dist/server/model-catalog.d.ts.map +1 -0
  272. package/dist/server/model-catalog.js +83 -0
  273. package/dist/server/model-catalog.js.map +1 -0
  274. package/dist/server/model-route.d.ts +7 -0
  275. package/dist/server/model-route.d.ts.map +1 -0
  276. package/dist/server/model-route.js +47 -0
  277. package/dist/server/model-route.js.map +1 -0
  278. package/dist/server/module-discovery.d.ts +13 -0
  279. package/dist/server/module-discovery.d.ts.map +1 -0
  280. package/dist/server/module-discovery.js +78 -0
  281. package/dist/server/module-discovery.js.map +1 -0
  282. package/dist/server/skillDocs.d.ts +9 -0
  283. package/dist/server/skillDocs.d.ts.map +1 -0
  284. package/dist/server/skillDocs.js +212 -0
  285. package/dist/server/skillDocs.js.map +1 -0
  286. package/dist/server/skillDocs.sql +14 -0
  287. package/dist/server/workspace-capabilities.sql +19 -0
  288. package/dist/service.d.ts.map +1 -1
  289. package/dist/service.js +182 -123
  290. package/dist/service.js.map +1 -1
  291. package/migrations/001_schema.sql +455 -65
  292. package/package.json +38 -37
  293. package/dist/core/ExecutableTools.d.ts +0 -10
  294. package/dist/core/ExecutableTools.d.ts.map +0 -1
  295. package/dist/core/ExecutableTools.js +0 -41
  296. package/dist/core/ExecutableTools.js.map +0 -1
  297. package/dist/core/JournalTurn.d.ts +0 -9
  298. package/dist/core/JournalTurn.d.ts.map +0 -1
  299. package/dist/core/JournalTurn.js +0 -14
  300. package/dist/core/JournalTurn.js.map +0 -1
  301. package/dist/core/JournalTurn.sql +0 -10
  302. package/dist/core/git-iso.d.ts +0 -13
  303. package/dist/core/git-iso.d.ts.map +0 -1
  304. package/dist/core/git-iso.js +0 -267
  305. package/dist/core/git-iso.js.map +0 -1
  306. package/dist/core/search-gate.d.ts +0 -17
  307. package/dist/core/search-gate.d.ts.map +0 -1
  308. package/dist/core/search-gate.js +0 -77
  309. package/dist/core/search-gate.js.map +0 -1
  310. 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 { copyFileSync, existsSync, mkdirSync, writeFileSync, rmSync } from "node:fs";
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, { TEACHING_CORPUS } from "@plurnk/plurnk-meta";
14
- import { parseAliasesFromEnv, resolveActiveAlias } from "@plurnk/plurnk-providers";
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 { readTeachingSourceSync } from "./core/teaching-corpus.js";
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 #homeDir = resolve(homedir(), ".plurnk");
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.#expandHome(Service.#requireEnv("PLURNK_SERVICE_DB_PATH"));
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.#expandHome(Service.#requireEnv("PLURNK_SERVICE_DB_PATH"));
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
- const alias = resolveActiveAlias();
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 selectedModel = process.env.PLURNK_MODEL ?? "";
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 = alias === null ? null : await ProviderInstantiate.loadActiveProvider();
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 (alias === null) {
268
- process.stderr.write(`plurnk-service: no model configured — uncomment one of the three options (local / cloud / plurnk.ai) in ${resolve(Service.#homeDir, ".env")}. Loops fail legibly until then.\n`);
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 aliasStr = alias === null ? "no model" : `${alias.alias}=${alias.provider}/${alias.model}`;
271
- process.stdout.write(`plurnk-service agui=http://${aguiAddr.host}:${aguiAddr.port} db=${dbPath} ${aliasStr}\n`);
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 main() {
286
- if (!process.argv.includes("--help") && !process.argv.includes("-h")) {
287
- Service.#ensureHome();
288
- Service.#syncReferenceFiles();
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
- const configFlagIndex = process.argv.findIndex((a) => a === "--config" || a.startsWith("--config="));
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(resolve(Service.#homeDir, ".env"), false);
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 catalog renders to ~/.plurnk/.env.defaults — the operator's
311
- // legend, machine-owned, never read back as config.
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 dispatch = { migrate: Service.#migrate, start: Service.#start };
357
- const subcommand = typeof positionals[0] === "string" ? positionals[0] : "start";
358
- const handler = dispatch[subcommand];
359
- if (handler === undefined)
360
- Service.#die(64, `unknown subcommand: ${subcommand}\n\n${usage}`);
361
- if (positionals.length > 1)
362
- Service.#die(64, `unexpected arguments: ${positionals.slice(1).join(" ")}`);
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(subcommand, cause));
427
+ process.stderr.write(ServiceTeardown.diagnostic(name, cause));
369
428
  process.exit(1);
370
429
  }
371
430
  }
@@ -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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"}