@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
@@ -6,7 +6,8 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
6
6
  }
7
7
  return path;
8
8
  };
9
- import { discover } from "@plurnk/plurnk-execs";
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
- export default class ExecutorRegistry {
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.assertCanRegister(tag, entry.namespaceOwner);
33
- this.#byTag.set(tag, entry);
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 === undefined)
38
- return;
39
- throw new Error(`executor tag '${tag}' is already registered by ${ExecutorRegistry.#describeOwner(existing.namespaceOwner)}; `
40
- + `${ExecutorRegistry.#describeOwner(incoming)} cannot claim it`);
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 nor teaches them through the tools sheet.
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 ExecutorRegistry.#probe(executor, probeTimeoutMs);
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
- documentation: info.documentation ?? "",
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
- ExecutorRegistry.#assertDefaultUsable(byTag, defaultRuntime);
105
- return new ExecutorRegistry(byTag, packageAttributions);
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.push(tag);
151
- return tags.toSorted((left, right) => left.localeCompare(right));
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":"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"}
1
+ {"version":3,"file":"ExecutorRegistry.js","sourceRoot":"","sources":["../../src/core/ExecutorRegistry.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAWnE,OAAO,IAIN,MAAM,qBAAqB,CAAC;AAoD7B,yEAAyE;AACzE,4EAA4E;AAC5E,yEAAyE;AACzE,kEAAkE;AAClE,0EAA0E;AAC1E,8EAA8E;AAC9E,wEAAwE;AACxE,sFAAsF;AACtF,MAAqB,gBAAgB;IACxB,MAAM,CAA6B,CAAG,sDAAsD;IAC5F,iBAAiB,GAAG,IAAI,GAAG,EAAmD,CAAC;IAC/E,oBAAoB,CAAsB;IAC1C,eAAe,GAAG,IAAI,OAAO,EAAwC,CAAC;IAE/E,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,oBAAoB,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,8DAA8D;IAC9D,oBAAoB,CAAC,aAAqD;QACtE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,mDAAmD,CAAC,CAAC;YAC7F,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,GAAG,EAAE;YACR,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,aAAa,EAAE,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;QACL,CAAC,CAAC;IACN,CAAC;IAED,2EAA2E;IAC3E,yEAAyE;IACzE,mEAAmE;IACnE,sEAAsE;IACtE,gFAAgF;IAChF,6BAA6B,CACzB,WAAmB,EACnB,cAAsB,EACtB,aAAqD;QAErD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,mDAAmD,CAAC,CAAC;YAC7F,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACzF,MAAM,IAAI,KAAK,CACX,uBAAuB,GAAG,6CAA6C,cAAc,GAAG,CAC3F,CAAC;YACN,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,IAAI,KAAK,SAAS;gBAAE,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;YAC7F,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;gBAC/C,IAAI,SAAS,KAAK,cAAc;oBAAE,SAAS;gBAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,IAAI,KAAK,SAAS;oBAAE,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;YACjG,CAAC;QACL,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9C,OAAO,GAAG,EAAE;YACR,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,GAAG,EAAsC,CAAC;YACxG,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;gBAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;;gBAC9C,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACtC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;gBAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;;gBAC7D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACrD,IAAI,OAAO,GAAG,IAAI,CAAC;YACnB,OAAO,GAAG,EAAE;gBACR,IAAI,CAAC,OAAO;oBAAE,OAAO;gBACrB,OAAO,GAAG,KAAK,CAAC;gBAChB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC;uBAChD,IAAI,GAAG,EAAsC,CAAC;gBACrD,IAAI,QAAQ,KAAK,SAAS;oBAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;;oBACtD,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;gBAC3C,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;oBAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;;oBAC9D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC1D,CAAC,CAAC;QACN,CAAC,CAAC;IACN,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,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACzF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBACrC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;oBAC/B,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;gBACvE,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,eAAe,CAAC,GAAW,EAAE,QAA+B,EAAE,QAA+B;QACzF,MAAM,IAAI,KAAK,CACX,iBAAiB,GAAG,8BAA8B,EAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI;cAC7F,GAAG,EAAgB,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,8CAA8C;QAC9C,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,EAAgB,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,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;gBAClF,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5E,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,MAAM,EAAE,YAAY,CAAC,MAAM;aAC9B,CAAC,CAAC;QACP,CAAC;QAED,EAAgB,CAAC,oBAAoB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAC7D,OAAO,IAAI,EAAgB,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,EAAE,WAAoB;QACnC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC5B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC5E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO,KAAK,CAAC;YAC1C,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,sEAAsE;IACtE,yEAAyE;IACzE,4DAA4D;IAC5D,YAAY,CAAC,GAAW,EAAE,WAAoB;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAClF,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,OAAO,MAAM,IAAI,IAAI,CAAC;QAC5F,MAAM,QAAQ,GAAG,iBAAiB,CAAC,kBAAkB,CACjD,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,EAC7B,KAAK,CAAC,cAAc,CAAC,IAAI,EACzB,GAAG,CACN,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,6BAA6B;IAC7B,iBAAiB,CAAC,WAAoB;QAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,KAAK,CAAC,SAAS;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3E,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC5B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC5E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO;oBAAE,IAAI,KAAK,CAAC,SAAS;wBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3E,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;CACJ"}
@@ -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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"}
@@ -11,7 +11,7 @@ export interface ResolvedLogBody {
11
11
  readonly mimetype: string;
12
12
  readonly startLine: number | null;
13
13
  }
14
- export type ActionlessLogKind = "initialization" | "model_emission";
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,gBAAgB,GAAG,gBAAgB,CAAC;AAYpE,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"}
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"}
@@ -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 !== "initialization" && kind !== "model_emission") {
65
- throw new TypeError("An actionless log body must carry attrs.kind=initialization or attrs.kind=model_emission.");
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
  }