@plurnk/plurnk-service 0.7.0 → 0.9.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 (270) hide show
  1. package/SPEC.md +116 -83
  2. package/bin/plurnk-service.ts +132 -0
  3. package/dist/Paths.d.ts +8 -0
  4. package/dist/Paths.d.ts.map +1 -0
  5. package/dist/Paths.js +47 -0
  6. package/dist/Paths.js.map +1 -0
  7. package/dist/content/index.d.ts +9 -0
  8. package/dist/content/index.d.ts.map +1 -0
  9. package/dist/content/index.js +10 -0
  10. package/dist/content/index.js.map +1 -0
  11. package/dist/content/line-marker.d.ts +26 -0
  12. package/dist/content/line-marker.d.ts.map +1 -0
  13. package/dist/content/line-marker.js +323 -0
  14. package/dist/content/line-marker.js.map +1 -0
  15. package/dist/content/matcher.d.ts +15 -0
  16. package/dist/content/matcher.d.ts.map +1 -0
  17. package/dist/content/matcher.js +112 -0
  18. package/dist/content/matcher.js.map +1 -0
  19. package/dist/content/mimetype-binary.d.ts +9 -0
  20. package/dist/content/mimetype-binary.d.ts.map +1 -0
  21. package/dist/content/mimetype-binary.js +86 -0
  22. package/dist/content/mimetype-binary.js.map +1 -0
  23. package/dist/content/path-mimetype.d.ts +6 -0
  24. package/dist/content/path-mimetype.d.ts.map +1 -0
  25. package/dist/content/path-mimetype.js +49 -0
  26. package/dist/content/path-mimetype.js.map +1 -0
  27. package/dist/content/read-resolve.d.ts +20 -0
  28. package/dist/content/read-resolve.d.ts.map +1 -0
  29. package/dist/content/read-resolve.js +60 -0
  30. package/dist/content/read-resolve.js.map +1 -0
  31. package/dist/core/ChannelWrite.d.ts +35 -30
  32. package/dist/core/ChannelWrite.d.ts.map +1 -1
  33. package/dist/core/ChannelWrite.js +49 -41
  34. package/dist/core/ChannelWrite.js.map +1 -1
  35. package/dist/core/Engine.d.ts +16 -10
  36. package/dist/core/Engine.d.ts.map +1 -1
  37. package/dist/core/Engine.js +309 -115
  38. package/dist/core/Engine.js.map +1 -1
  39. package/dist/core/EnvFlags.d.ts +6 -3
  40. package/dist/core/EnvFlags.d.ts.map +1 -1
  41. package/dist/core/EnvFlags.js +62 -60
  42. package/dist/core/EnvFlags.js.map +1 -1
  43. package/dist/core/ExecutorRegistry.d.ts +26 -0
  44. package/dist/core/ExecutorRegistry.d.ts.map +1 -0
  45. package/dist/core/ExecutorRegistry.js +99 -0
  46. package/dist/core/ExecutorRegistry.js.map +1 -0
  47. package/dist/core/PluginLoader.d.ts +6 -3
  48. package/dist/core/PluginLoader.d.ts.map +1 -1
  49. package/dist/core/PluginLoader.js +77 -73
  50. package/dist/core/PluginLoader.js.map +1 -1
  51. package/dist/core/ProviderInstantiate.d.ts +4 -2
  52. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  53. package/dist/core/ProviderInstantiate.js +23 -22
  54. package/dist/core/ProviderInstantiate.js.map +1 -1
  55. package/dist/core/SchemeRegistry.d.ts +1 -1
  56. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  57. package/dist/core/SchemeRegistry.js +3 -3
  58. package/dist/core/SchemeRegistry.js.map +1 -1
  59. package/dist/core/git-membership.d.ts +8 -0
  60. package/dist/core/git-membership.d.ts.map +1 -0
  61. package/dist/core/git-membership.js +125 -0
  62. package/dist/core/git-membership.js.map +1 -0
  63. package/dist/core/packet-wire.d.ts +47 -6
  64. package/dist/core/packet-wire.d.ts.map +1 -1
  65. package/dist/core/packet-wire.js +376 -312
  66. package/dist/core/packet-wire.js.map +1 -1
  67. package/dist/core/resolveForLoop.d.ts +16 -0
  68. package/dist/core/resolveForLoop.d.ts.map +1 -0
  69. package/dist/core/resolveForLoop.js +34 -0
  70. package/dist/core/resolveForLoop.js.map +1 -0
  71. package/dist/core/results.d.ts +40 -0
  72. package/dist/core/results.d.ts.map +1 -0
  73. package/dist/core/results.js +52 -0
  74. package/dist/core/results.js.map +1 -0
  75. package/dist/core/scheme-types.d.ts +7 -4
  76. package/dist/core/scheme-types.d.ts.map +1 -1
  77. package/dist/core/scheme-types.js +4 -4
  78. package/dist/core/scheme-types.js.map +1 -1
  79. package/dist/core/types.d.ts +26 -0
  80. package/dist/core/types.d.ts.map +1 -0
  81. package/dist/core/types.js +17 -0
  82. package/dist/core/types.js.map +1 -0
  83. package/dist/index.d.ts +1 -6
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +4 -43
  86. package/dist/index.js.map +1 -1
  87. package/dist/schemes/EffectPolicy.d.ts +6 -0
  88. package/dist/schemes/EffectPolicy.d.ts.map +1 -0
  89. package/dist/schemes/EffectPolicy.js +18 -0
  90. package/dist/schemes/EffectPolicy.js.map +1 -0
  91. package/dist/schemes/Exec.d.ts +1 -0
  92. package/dist/schemes/Exec.d.ts.map +1 -1
  93. package/dist/schemes/Exec.js +86 -45
  94. package/dist/schemes/Exec.js.map +1 -1
  95. package/dist/schemes/File.d.ts +0 -1
  96. package/dist/schemes/File.d.ts.map +1 -1
  97. package/dist/schemes/File.js +32 -69
  98. package/dist/schemes/File.js.map +1 -1
  99. package/dist/schemes/Known.d.ts.map +1 -1
  100. package/dist/schemes/Known.js +13 -13
  101. package/dist/schemes/Known.js.map +1 -1
  102. package/dist/schemes/Log.d.ts.map +1 -1
  103. package/dist/schemes/Log.js +8 -52
  104. package/dist/schemes/Log.js.map +1 -1
  105. package/dist/schemes/Plurnk.d.ts.map +1 -1
  106. package/dist/schemes/Plurnk.js +13 -13
  107. package/dist/schemes/Plurnk.js.map +1 -1
  108. package/dist/schemes/Skill.d.ts.map +1 -1
  109. package/dist/schemes/Skill.js +13 -13
  110. package/dist/schemes/Skill.js.map +1 -1
  111. package/dist/schemes/Unknown.d.ts.map +1 -1
  112. package/dist/schemes/Unknown.js +13 -13
  113. package/dist/schemes/Unknown.js.map +1 -1
  114. package/dist/schemes/_entry-crud.d.ts +5 -3
  115. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  116. package/dist/schemes/_entry-crud.js +55 -50
  117. package/dist/schemes/_entry-crud.js.map +1 -1
  118. package/dist/schemes/_entry-find.d.ts +10 -3
  119. package/dist/schemes/_entry-find.d.ts.map +1 -1
  120. package/dist/schemes/_entry-find.js +99 -77
  121. package/dist/schemes/_entry-find.js.map +1 -1
  122. package/dist/schemes/_entry-manifest.d.ts +6 -0
  123. package/dist/schemes/_entry-manifest.d.ts.map +1 -0
  124. package/dist/schemes/_entry-manifest.js +45 -0
  125. package/dist/schemes/_entry-manifest.js.map +1 -0
  126. package/dist/schemes/_entry-ops.d.ts +7 -4
  127. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  128. package/dist/schemes/_entry-ops.js +198 -316
  129. package/dist/schemes/_entry-ops.js.map +1 -1
  130. package/dist/schemes/_entry-send.d.ts +4 -1
  131. package/dist/schemes/_entry-send.d.ts.map +1 -1
  132. package/dist/schemes/_entry-send.js +57 -55
  133. package/dist/schemes/_entry-send.js.map +1 -1
  134. package/dist/server/ClientConnection.js +3 -3
  135. package/dist/server/ClientConnection.js.map +1 -1
  136. package/dist/server/Daemon.d.ts +5 -5
  137. package/dist/server/Daemon.d.ts.map +1 -1
  138. package/dist/server/Daemon.js +234 -176
  139. package/dist/server/Daemon.js.map +1 -1
  140. package/dist/server/clientTurn.d.ts +4 -1
  141. package/dist/server/clientTurn.d.ts.map +1 -1
  142. package/dist/server/clientTurn.js +19 -17
  143. package/dist/server/clientTurn.js.map +1 -1
  144. package/dist/server/dsl.d.ts +19 -16
  145. package/dist/server/dsl.d.ts.map +1 -1
  146. package/dist/server/dsl.js +127 -105
  147. package/dist/server/dsl.js.map +1 -1
  148. package/dist/server/envelope.d.ts +22 -19
  149. package/dist/server/envelope.d.ts.map +1 -1
  150. package/dist/server/envelope.js +116 -102
  151. package/dist/server/envelope.js.map +1 -1
  152. package/dist/server/logEntry.d.ts +4 -1
  153. package/dist/server/logEntry.d.ts.map +1 -1
  154. package/dist/server/logEntry.js +41 -39
  155. package/dist/server/logEntry.js.map +1 -1
  156. package/dist/server/methods/_dispatchAsClient.d.ts +3 -1
  157. package/dist/server/methods/_dispatchAsClient.d.ts.map +1 -1
  158. package/dist/server/methods/_dispatchAsClient.js +31 -29
  159. package/dist/server/methods/_dispatchAsClient.js.map +1 -1
  160. package/dist/server/methods/discover.d.ts +3 -1
  161. package/dist/server/methods/discover.d.ts.map +1 -1
  162. package/dist/server/methods/discover.js +8 -6
  163. package/dist/server/methods/discover.js.map +1 -1
  164. package/dist/server/methods/entry_read.d.ts +4 -1
  165. package/dist/server/methods/entry_read.d.ts.map +1 -1
  166. package/dist/server/methods/entry_read.js +54 -52
  167. package/dist/server/methods/entry_read.js.map +1 -1
  168. package/dist/server/methods/log_read.d.ts +4 -1
  169. package/dist/server/methods/log_read.d.ts.map +1 -1
  170. package/dist/server/methods/log_read.js +38 -36
  171. package/dist/server/methods/log_read.js.map +1 -1
  172. package/dist/server/methods/loop_cancel.d.ts +3 -1
  173. package/dist/server/methods/loop_cancel.d.ts.map +1 -1
  174. package/dist/server/methods/loop_cancel.js +19 -17
  175. package/dist/server/methods/loop_cancel.js.map +1 -1
  176. package/dist/server/methods/loop_resolve.d.ts +3 -1
  177. package/dist/server/methods/loop_resolve.d.ts.map +1 -1
  178. package/dist/server/methods/loop_resolve.js +42 -40
  179. package/dist/server/methods/loop_resolve.js.map +1 -1
  180. package/dist/server/methods/loop_run.d.ts +3 -1
  181. package/dist/server/methods/loop_run.d.ts.map +1 -1
  182. package/dist/server/methods/loop_run.js +104 -102
  183. package/dist/server/methods/loop_run.js.map +1 -1
  184. package/dist/server/methods/op_copy.d.ts +3 -1
  185. package/dist/server/methods/op_copy.d.ts.map +1 -1
  186. package/dist/server/methods/op_copy.js +25 -23
  187. package/dist/server/methods/op_copy.js.map +1 -1
  188. package/dist/server/methods/op_dispatch.d.ts +3 -1
  189. package/dist/server/methods/op_dispatch.d.ts.map +1 -1
  190. package/dist/server/methods/op_dispatch.js +18 -16
  191. package/dist/server/methods/op_dispatch.js.map +1 -1
  192. package/dist/server/methods/op_edit.d.ts +3 -1
  193. package/dist/server/methods/op_edit.d.ts.map +1 -1
  194. package/dist/server/methods/op_edit.js +23 -21
  195. package/dist/server/methods/op_edit.js.map +1 -1
  196. package/dist/server/methods/op_exec.d.ts +3 -1
  197. package/dist/server/methods/op_exec.d.ts.map +1 -1
  198. package/dist/server/methods/op_exec.js +20 -18
  199. package/dist/server/methods/op_exec.js.map +1 -1
  200. package/dist/server/methods/op_find.d.ts +3 -1
  201. package/dist/server/methods/op_find.d.ts.map +1 -1
  202. package/dist/server/methods/op_find.js +23 -21
  203. package/dist/server/methods/op_find.js.map +1 -1
  204. package/dist/server/methods/op_hide.d.ts +3 -1
  205. package/dist/server/methods/op_hide.d.ts.map +1 -1
  206. package/dist/server/methods/op_hide.js +23 -21
  207. package/dist/server/methods/op_hide.js.map +1 -1
  208. package/dist/server/methods/op_move.d.ts +3 -1
  209. package/dist/server/methods/op_move.d.ts.map +1 -1
  210. package/dist/server/methods/op_move.js +23 -21
  211. package/dist/server/methods/op_move.js.map +1 -1
  212. package/dist/server/methods/op_parse.d.ts +3 -1
  213. package/dist/server/methods/op_parse.d.ts.map +1 -1
  214. package/dist/server/methods/op_parse.js +24 -22
  215. package/dist/server/methods/op_parse.js.map +1 -1
  216. package/dist/server/methods/op_read.d.ts +3 -1
  217. package/dist/server/methods/op_read.d.ts.map +1 -1
  218. package/dist/server/methods/op_read.js +23 -21
  219. package/dist/server/methods/op_read.js.map +1 -1
  220. package/dist/server/methods/op_send.d.ts +3 -1
  221. package/dist/server/methods/op_send.d.ts.map +1 -1
  222. package/dist/server/methods/op_send.js +22 -20
  223. package/dist/server/methods/op_send.js.map +1 -1
  224. package/dist/server/methods/op_show.d.ts +3 -1
  225. package/dist/server/methods/op_show.d.ts.map +1 -1
  226. package/dist/server/methods/op_show.js +23 -21
  227. package/dist/server/methods/op_show.js.map +1 -1
  228. package/dist/server/methods/ping.d.ts +3 -1
  229. package/dist/server/methods/ping.d.ts.map +1 -1
  230. package/dist/server/methods/ping.js +8 -6
  231. package/dist/server/methods/ping.js.map +1 -1
  232. package/dist/server/methods/providers_list.d.ts +3 -1
  233. package/dist/server/methods/providers_list.d.ts.map +1 -1
  234. package/dist/server/methods/providers_list.js +19 -17
  235. package/dist/server/methods/providers_list.js.map +1 -1
  236. package/dist/server/methods/session_attach.d.ts +3 -1
  237. package/dist/server/methods/session_attach.d.ts.map +1 -1
  238. package/dist/server/methods/session_attach.js +43 -41
  239. package/dist/server/methods/session_attach.js.map +1 -1
  240. package/dist/server/methods/session_create.d.ts +3 -1
  241. package/dist/server/methods/session_create.d.ts.map +1 -1
  242. package/dist/server/methods/session_create.js +51 -49
  243. package/dist/server/methods/session_create.js.map +1 -1
  244. package/dist/server/methods/session_list.d.ts +3 -1
  245. package/dist/server/methods/session_list.d.ts.map +1 -1
  246. package/dist/server/methods/session_list.js +9 -7
  247. package/dist/server/methods/session_list.js.map +1 -1
  248. package/dist/server/methods/session_runs.d.ts +3 -1
  249. package/dist/server/methods/session_runs.d.ts.map +1 -1
  250. package/dist/server/methods/session_runs.js +19 -17
  251. package/dist/server/methods/session_runs.js.map +1 -1
  252. package/dist/server/methods/session_set_persona.d.ts +3 -1
  253. package/dist/server/methods/session_set_persona.d.ts.map +1 -1
  254. package/dist/server/methods/session_set_persona.js +28 -26
  255. package/dist/server/methods/session_set_persona.js.map +1 -1
  256. package/dist/server/methods/session_set_root.d.ts +3 -1
  257. package/dist/server/methods/session_set_root.d.ts.map +1 -1
  258. package/dist/server/methods/session_set_root.js +31 -29
  259. package/dist/server/methods/session_set_root.js.map +1 -1
  260. package/dist/server/noProposals.d.ts +6 -0
  261. package/dist/server/noProposals.d.ts.map +1 -0
  262. package/dist/server/noProposals.js +37 -0
  263. package/dist/server/noProposals.js.map +1 -0
  264. package/dist/server/yolo.d.ts +3 -1
  265. package/dist/server/yolo.d.ts.map +1 -1
  266. package/dist/server/yolo.js +15 -13
  267. package/dist/server/yolo.js.map +1 -1
  268. package/package.json +71 -32
  269. package/bin/plurnk-service.js +0 -112
  270. /package/migrations/{001_schema.sql → 0000-00-00.01_schema.sql} +0 -0
@@ -14,87 +14,91 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
14
14
  };
15
15
  import { readdir, readFile } from "node:fs/promises";
16
16
  import { resolve } from "node:path";
17
- const isValidKind = (kind) => kind === "provider" || kind === "scheme" || kind === "mimetype";
18
- export const discoverPlugins = async (nodeModulesDir) => {
19
- const plurnkDir = resolve(nodeModulesDir, "@plurnk");
20
- let entries;
21
- try {
22
- entries = await readdir(plurnkDir, { withFileTypes: true });
17
+ export default class PluginLoader {
18
+ static #isValidKind(kind) {
19
+ return kind === "provider" || kind === "scheme" || kind === "mimetype";
23
20
  }
24
- catch {
25
- return [];
26
- }
27
- const discovered = [];
28
- for (const entry of entries) {
29
- if (!entry.isDirectory())
30
- continue;
31
- const packagePath = resolve(plurnkDir, entry.name);
32
- const packageJsonPath = resolve(packagePath, "package.json");
33
- let pkg;
21
+ static async discoverPlugins(nodeModulesDir) {
22
+ const plurnkDir = resolve(nodeModulesDir, "@plurnk");
23
+ let entries;
34
24
  try {
35
- const content = await readFile(packageJsonPath, "utf8");
36
- pkg = JSON.parse(content);
25
+ entries = await readdir(plurnkDir, { withFileTypes: true });
37
26
  }
38
27
  catch {
39
- continue;
28
+ return [];
40
29
  }
41
- if (typeof pkg.name !== "string")
42
- continue;
43
- if (pkg.plurnk === undefined || pkg.plurnk === null || typeof pkg.plurnk !== "object")
44
- continue;
45
- const candidate = pkg.plurnk;
46
- if (!isValidKind(candidate.kind))
47
- continue;
48
- if (typeof candidate.name !== "string" || candidate.name.length === 0)
49
- continue;
50
- discovered.push({
51
- packageName: pkg.name,
52
- packagePath,
53
- manifest: { kind: candidate.kind, name: candidate.name },
54
- });
55
- }
56
- return discovered.toSorted((a, b) => a.packageName.localeCompare(b.packageName));
57
- };
58
- // Dynamic-import a discovered plugin's default export and instantiate it.
59
- // Default export MUST be a constructable class with a zero-arg constructor.
60
- // Identity-match enforcement per plurnk-mimetypes / plurnk-schemes manifests:
61
- // the instance's claimed identity MUST match the package manifest's `plurnk.name`.
62
- // Providers skip this check manifest.name is a vendor identifier; the
63
- // instance's `model` is per-config (plurnk-providers#1, identity getters).
64
- export const loadPlugin = async (plugin) => {
65
- const mod = await import(__rewriteRelativeImportExtension(plugin.packageName));
66
- const PluginClass = mod.default;
67
- if (typeof PluginClass !== "function") {
68
- throw new Error(`${plugin.packageName}: default export is not a constructor`);
69
- }
70
- const instance = new PluginClass();
71
- assertIdentityMatch(plugin, instance);
72
- return instance;
73
- };
74
- export const assertIdentityMatch = (plugin, instance) => {
75
- if (plugin.manifest.kind === "mimetype") {
76
- const declared = instance.mimetype;
77
- if (typeof declared !== "string") {
78
- throw new Error(`${plugin.packageName}: mimetype handler instance must declare a string \`mimetype\` field`);
30
+ const discovered = [];
31
+ for (const entry of entries) {
32
+ if (!entry.isDirectory())
33
+ continue;
34
+ const packagePath = resolve(plurnkDir, entry.name);
35
+ const packageJsonPath = resolve(packagePath, "package.json");
36
+ let pkg;
37
+ try {
38
+ const content = await readFile(packageJsonPath, "utf8");
39
+ pkg = JSON.parse(content);
40
+ }
41
+ catch {
42
+ continue;
43
+ }
44
+ if (typeof pkg.name !== "string")
45
+ continue;
46
+ if (pkg.plurnk === undefined || pkg.plurnk === null || typeof pkg.plurnk !== "object")
47
+ continue;
48
+ const candidate = pkg.plurnk;
49
+ if (!PluginLoader.#isValidKind(candidate.kind))
50
+ continue;
51
+ if (typeof candidate.name !== "string" || candidate.name.length === 0)
52
+ continue;
53
+ discovered.push({
54
+ packageName: pkg.name,
55
+ packagePath,
56
+ manifest: { kind: candidate.kind, name: candidate.name },
57
+ });
79
58
  }
80
- if (declared !== plugin.manifest.name) {
81
- throw new Error(`${plugin.packageName}: identity mismatch — package manifest declares mimetype '${plugin.manifest.name}', instance declares '${declared}'`);
59
+ return discovered.toSorted((a, b) => a.packageName.localeCompare(b.packageName));
60
+ }
61
+ // Dynamic-import a discovered plugin's default export and instantiate it.
62
+ // Default export MUST be a constructable class with a zero-arg constructor.
63
+ // Identity-match enforcement per plurnk-mimetypes / plurnk-schemes manifests:
64
+ // the instance's claimed identity MUST match the package manifest's `plurnk.name`.
65
+ // Providers skip this check — manifest.name is a vendor identifier; the
66
+ // instance's `model` is per-config (plurnk-providers#1, identity getters).
67
+ static async loadPlugin(plugin) {
68
+ const mod = await import(__rewriteRelativeImportExtension(plugin.packageName));
69
+ const PluginClass = mod.default;
70
+ if (typeof PluginClass !== "function") {
71
+ throw new Error(`${plugin.packageName}: default export is not a constructor`);
82
72
  }
83
- return;
73
+ const instance = new PluginClass();
74
+ PluginLoader.assertIdentityMatch(plugin, instance);
75
+ return instance;
84
76
  }
85
- if (plugin.manifest.kind === "scheme") {
86
- // Schemes carry a static `manifest` on the class (plurnk-schemes contract).
87
- // Transitional: bundled schemes don't yet have it (task #32 wires
88
- // manifest registration). When the static manifest is absent, accept
89
- // the package manifest name as the source of truth and trust the caller.
90
- const classManifest = instance.constructor;
91
- const declared = classManifest?.manifest?.name;
92
- if (declared !== undefined && declared !== plugin.manifest.name) {
93
- throw new Error(`${plugin.packageName}: identity mismatch — package manifest declares scheme '${plugin.manifest.name}', class manifest declares '${String(declared)}'`);
77
+ static assertIdentityMatch(plugin, instance) {
78
+ if (plugin.manifest.kind === "mimetype") {
79
+ const declared = instance.mimetype;
80
+ if (typeof declared !== "string") {
81
+ throw new Error(`${plugin.packageName}: mimetype handler instance must declare a string \`mimetype\` field`);
82
+ }
83
+ if (declared !== plugin.manifest.name) {
84
+ throw new Error(`${plugin.packageName}: identity mismatch package manifest declares mimetype '${plugin.manifest.name}', instance declares '${declared}'`);
85
+ }
86
+ return;
94
87
  }
95
- return;
88
+ if (plugin.manifest.kind === "scheme") {
89
+ // Schemes carry a static `manifest` on the class (plurnk-schemes contract).
90
+ // Transitional: bundled schemes don't yet have it (task #32 wires
91
+ // manifest registration). When the static manifest is absent, accept
92
+ // the package manifest name as the source of truth and trust the caller.
93
+ const classManifest = instance.constructor;
94
+ const declared = classManifest?.manifest?.name;
95
+ if (declared !== undefined && declared !== plugin.manifest.name) {
96
+ throw new Error(`${plugin.packageName}: identity mismatch — package manifest declares scheme '${plugin.manifest.name}', class manifest declares '${String(declared)}'`);
97
+ }
98
+ return;
99
+ }
100
+ // Providers: no identity-match at this layer. Package manifest `name` is
101
+ // the vendor family; instance `model` is per-config (plurnk-providers#1).
96
102
  }
97
- // Providers: no identity-match at this layer. Package manifest `name` is
98
- // the vendor family; instance `model` is per-config (plurnk-providers#1).
99
- };
103
+ }
100
104
  //# sourceMappingURL=PluginLoader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PluginLoader.js","sourceRoot":"","sources":["../../src/core/PluginLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PluginLoader.js","sourceRoot":"","sources":["../../src/core/PluginLoader.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import type { Provider, ProviderAlias } from "@plurnk/plurnk-providers";
2
- export declare const instantiateProvider: (alias: ProviderAlias, env?: NodeJS.ProcessEnv) => Promise<Provider>;
3
- export declare const loadActiveProvider: (env?: NodeJS.ProcessEnv) => Promise<Provider | null>;
2
+ export default class ProviderInstantiate {
3
+ static instantiateProvider(alias: ProviderAlias, env?: NodeJS.ProcessEnv): Promise<Provider>;
4
+ static loadActiveProvider(env?: NodeJS.ProcessEnv): Promise<Provider | null>;
5
+ }
4
6
  //# sourceMappingURL=ProviderInstantiate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderInstantiate.d.ts","sourceRoot":"","sources":["../../src/core/ProviderInstantiate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAmB,MAAM,0BAA0B,CAAC;AAEzF,eAAO,MAAM,mBAAmB,GAAU,OAAO,aAAa,EAAE,MAAK,MAAM,CAAC,UAAwB,KAAG,OAAO,CAAC,QAAQ,CAkBtH,CAAC;AAIF,eAAO,MAAM,kBAAkB,GAAU,MAAK,MAAM,CAAC,UAAwB,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAItG,CAAC"}
1
+ {"version":3,"file":"ProviderInstantiate.d.ts","sourceRoot":"","sources":["../../src/core/ProviderInstantiate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAmB,MAAM,0BAA0B,CAAC;AAEzF,MAAM,CAAC,OAAO,OAAO,mBAAmB;WACvB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC;WAmBlG,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;CAKlG"}
@@ -14,28 +14,29 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
14
14
  return path;
15
15
  };
16
16
  import { resolveActiveAlias } from "@plurnk/plurnk-providers";
17
- export const instantiateProvider = async (alias, env = process.env) => {
18
- const packageName = `@plurnk/plurnk-providers-${alias.provider}`;
19
- let mod;
20
- try {
21
- mod = await import(__rewriteRelativeImportExtension(packageName));
17
+ export default class ProviderInstantiate {
18
+ static async instantiateProvider(alias, env = process.env) {
19
+ const packageName = `@plurnk/plurnk-providers-${alias.provider}`;
20
+ let mod;
21
+ try {
22
+ mod = await import(__rewriteRelativeImportExtension(packageName));
23
+ }
24
+ catch (cause) {
25
+ throw new Error(`provider package ${packageName} not installed (alias '${alias.alias}' requires it)`, { cause });
26
+ }
27
+ const factory = mod.default;
28
+ if (typeof factory?.fromEnv !== "function") {
29
+ throw new Error(`${packageName}: default export must have a static \`fromEnv(env, model)\` factory`);
30
+ }
31
+ return await factory.fromEnv(env, alias.model);
22
32
  }
23
- catch (cause) {
24
- throw new Error(`provider package ${packageName} not installed (alias '${alias.alias}' requires it): ` +
25
- (cause instanceof Error ? cause.message : String(cause)));
33
+ // Convenience: resolve + instantiate in one call. Returns null when no
34
+ // PLURNK_MODEL is set (caller decides what 'no provider' means).
35
+ static async loadActiveProvider(env = process.env) {
36
+ const alias = resolveActiveAlias(env);
37
+ if (alias === null)
38
+ return null;
39
+ return ProviderInstantiate.instantiateProvider(alias, env);
26
40
  }
27
- const factory = mod.default;
28
- if (typeof factory?.fromEnv !== "function") {
29
- throw new Error(`${packageName}: default export must have a static \`fromEnv(env, model)\` factory`);
30
- }
31
- return await factory.fromEnv(env, alias.model);
32
- };
33
- // Convenience: resolve + instantiate in one call. Returns null when no
34
- // PLURNK_MODEL is set (caller decides what 'no provider' means).
35
- export const loadActiveProvider = async (env = process.env) => {
36
- const alias = resolveActiveAlias(env);
37
- if (alias === null)
38
- return null;
39
- return instantiateProvider(alias, env);
40
- };
41
+ }
41
42
  //# sourceMappingURL=ProviderInstantiate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderInstantiate.js","sourceRoot":"","sources":["../../src/core/ProviderInstantiate.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,wEAAwE;AACxE,uEAAuE;AACvE,uEAAuE;AACvE,EAAE;AACF,qEAAqE;AACrE,2DAA2D;;;;;;;;;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAAoB,EAAE,MAAyB,OAAO,CAAC,GAAG,EAAqB,EAAE;IACvH,MAAM,WAAW,GAAG,4BAA4B,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjE,IAAI,GAAiC,CAAC;IACtC,IAAI,CAAC;QACD,GAAG,GAAG,MAAM,MAAM,kCAAC,WAAW,EAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACX,oBAAoB,WAAW,0BAA0B,KAAK,CAAC,KAAK,kBAAkB;YACtF,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC3D,CAAC;IACN,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC5B,IAAI,OAAO,OAAO,EAAE,OAAO,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACX,GAAG,WAAW,qEAAqE,CACtF,CAAC;IACN,CAAC;IACD,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,uEAAuE;AACvE,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,MAAyB,OAAO,CAAC,GAAG,EAA4B,EAAE;IACvG,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC,CAAC"}
1
+ {"version":3,"file":"ProviderInstantiate.js","sourceRoot":"","sources":["../../src/core/ProviderInstantiate.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,wEAAwE;AACxE,uEAAuE;AACvE,uEAAuE;AACvE,EAAE;AACF,qEAAqE;AACrE,2DAA2D;;;;;;;;;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACpC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAoB,EAAE,MAAyB,OAAO,CAAC,GAAG;QACvF,MAAM,WAAW,GAAG,4BAA4B,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjE,IAAI,GAAiC,CAAC;QACtC,IAAI,CAAC;YACD,GAAG,GAAG,MAAM,MAAM,kCAAC,WAAW,EAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,WAAW,0BAA0B,KAAK,CAAC,KAAK,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACrH,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,IAAI,OAAO,OAAO,EAAE,OAAO,KAAK,UAAU,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACX,GAAG,WAAW,qEAAqE,CACtF,CAAC;QACN,CAAC;QACD,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,uEAAuE;IACvE,iEAAiE;IACjE,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAyB,OAAO,CAAC,GAAG;QAChE,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,mBAAmB,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/D,CAAC;CACJ"}
@@ -1,4 +1,4 @@
1
- import type { LoopFlags } from "@plurnk/plurnk-schemes";
1
+ import type { LoopFlags } from "./types.ts";
2
2
  type SchemeHandler = object;
3
3
  export default class SchemeRegistry {
4
4
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"SchemeRegistry.d.ts","sourceRoot":"","sources":["../../src/core/SchemeRegistry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,KAAK,aAAa,GAAG,MAAM,CAAC;AAE5B,MAAM,CAAC,OAAO,OAAO,cAAc;;;IAa/B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAKpD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAE5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAE1B,IAAI,IAAI,MAAM,EAAE;IAIhB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;CAGhD"}
1
+ {"version":3,"file":"SchemeRegistry.d.ts","sourceRoot":"","sources":["../../src/core/SchemeRegistry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,KAAK,aAAa,GAAG,MAAM,CAAC;AAE5B,MAAM,CAAC,OAAO,OAAO,cAAc;;;IAa/B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAKpD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAE5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAE1B,IAAI,IAAI,MAAM,EAAE;IAIhB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;CAGhD"}
@@ -5,7 +5,7 @@ import Known from "../schemes/Known.js";
5
5
  import Unknown from "../schemes/Unknown.js";
6
6
  import Skill from "../schemes/Skill.js";
7
7
  import File from "../schemes/File.js";
8
- import { resolveForLoop } from "@plurnk/plurnk-schemes";
8
+ import ResolveForLoop from "./resolveForLoop.js";
9
9
  export default class SchemeRegistry {
10
10
  #handlers = new Map();
11
11
  constructor() {
@@ -26,9 +26,9 @@ export default class SchemeRegistry {
26
26
  has(name) { return this.#handlers.has(name); }
27
27
  list() { return [...this.#handlers.keys()].toSorted(); }
28
28
  // Active set under the given loop flags (SPEC §0.5). Delegates to
29
- // plurnk-schemes' resolveForLoop utility.
29
+ // the in-tree ResolveForLoop utility.
30
30
  resolveForLoop(flags) {
31
- return resolveForLoop(this.#handlers, flags);
31
+ return ResolveForLoop.resolveForLoop(this.#handlers, flags);
32
32
  }
33
33
  }
34
34
  //# sourceMappingURL=SchemeRegistry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemeRegistry.js","sourceRoot":"","sources":["../../src/core/SchemeRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAKxD,MAAM,CAAC,OAAO,OAAO,cAAc;IAC/B,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE7C;QACI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAG,IAAI,MAAM,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAM,IAAI,GAAG,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAK,IAAI,IAAI,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAI,IAAI,KAAK,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAI,IAAI,KAAK,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAK,IAAI,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,OAAsB;QACzC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,yBAAyB,CAAC,CAAC;QACxF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,IAAY,IAA+B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEjF,GAAG,CAAC,IAAY,IAAa,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE/D,IAAI,KAAe,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAElE,kEAAkE;IAClE,0CAA0C;IAC1C,cAAc,CAAC,KAAgB;QAC3B,OAAO,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;CACJ"}
1
+ {"version":3,"file":"SchemeRegistry.js","sourceRoot":"","sources":["../../src/core/SchemeRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAKjD,MAAM,CAAC,OAAO,OAAO,cAAc;IAC/B,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE7C;QACI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAG,IAAI,MAAM,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAM,IAAI,GAAG,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAK,IAAI,IAAI,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAI,IAAI,KAAK,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAI,IAAI,KAAK,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAK,IAAI,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,OAAsB;QACzC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,yBAAyB,CAAC,CAAC;QACxF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,IAAY,IAA+B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEjF,GAAG,CAAC,IAAY,IAAa,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE/D,IAAI,KAAe,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAElE,kEAAkE;IAClE,sCAAsC;IACtC,cAAc,CAAC,KAAgB;QAC3B,OAAO,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;CACJ"}
@@ -0,0 +1,8 @@
1
+ import type { Db } from "./Db.ts";
2
+ import type { PlurnkSchemeContext } from "./scheme-types.ts";
3
+ export default class GitMembership {
4
+ #private;
5
+ static resolveGitMembership(db: Db, sessionId: number, signal: AbortSignal | undefined): Promise<string[]>;
6
+ static indexGitMembership(ctx: PlurnkSchemeContext): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=git-membership.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-membership.d.ts","sourceRoot":"","sources":["../../src/core/git-membership.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,MAAM,CAAC,OAAO,OAAO,aAAa;;WAiDjB,oBAAoB,CAC7B,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,GAAG,SAAS,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC;WA2CP,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ3E"}
@@ -0,0 +1,125 @@
1
+ // SPEC §14.3 D4 — git-ls-files workspace membership.
2
+ //
3
+ // When a session's `project_root` is a git working tree, the git-tracked
4
+ // files (`git ls-files`) are workspace MEMBERS without any explicit client
5
+ // `add`. This module resolves that membership and (when token accounting is
6
+ // available) materializes active members' disk content into a body channel +
7
+ // visibility so they surface in packet.system.index.
8
+ //
9
+ // Decisions realized here:
10
+ // D1 — workspace identity lives on the session (project_root).
11
+ // D3 — disk co-location: members are channel-less markers until materialized;
12
+ // disk stays the truth.
13
+ // D4 — git present → ls-files membership. git absent → no fs-walk (this
14
+ // module no-ops on a non-git project_root, leaving headless / non-git
15
+ // sessions completely unaffected). The add/ignore/read-only constraint
16
+ // overlay (session_constraints) is a documented follow-up — not built
17
+ // here; bare git-ls-files membership is the whole of this phase.
18
+ // D5 — EMI is eager + relevance-bounded: materialize is re-read from disk at
19
+ // resolution time so a divergent member reflects current disk content.
20
+ //
21
+ // git resolution shells out via node:child_process (the same surface the
22
+ // File scheme's tests and the demo fixture use) and respects AbortSignal.
23
+ import { execFile } from "node:child_process";
24
+ import { promisify } from "node:util";
25
+ import { readFile } from "node:fs/promises";
26
+ import { resolve } from "node:path";
27
+ import { MimetypeBinary } from "../content/index.js";
28
+ import EntryCrud from "../schemes/_entry-crud.js";
29
+ export default class GitMembership {
30
+ static #execFileP = promisify(execFile);
31
+ // project_root for a session. NULL = headless (no membership). Read once per
32
+ // resolution; the File scheme reads the same column for its own root.
33
+ static async #loadSessionRoot(db, sessionId) {
34
+ const row = await db.envelope_get_session.get({ id: sessionId });
35
+ return row?.project_root ?? null;
36
+ }
37
+ // Is `root` the top of a git working tree? `git rev-parse --is-inside-work-tree`
38
+ // exits non-zero (throws here) when `root` is not under git — the gate that
39
+ // keeps non-git / headless sessions out of any git path (D4: "git absent → no
40
+ // fs-walk"). Conservative: any git failure means "not a git workspace."
41
+ static async #isGitWorkTree(root, signal) {
42
+ try {
43
+ const { stdout } = await GitMembership.#execFileP("git", ["rev-parse", "--is-inside-work-tree"], { cwd: root, signal });
44
+ return stdout.trim() === "true";
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ }
50
+ // Tracked files, workspace-relative, via `git ls-files -z`. NUL-delimited so
51
+ // paths with spaces/newlines survive. Empty repo → [].
52
+ static async #gitTrackedFiles(root, signal) {
53
+ const { stdout } = await GitMembership.#execFileP("git", ["ls-files", "-z"], { cwd: root, signal, maxBuffer: 64 * 1024 * 1024 });
54
+ return stdout.split("\0").filter((p) => p.length > 0);
55
+ }
56
+ // Detect a tracked file's mimetype (mirrors File.detectFileMimetype): route
57
+ // through the Mimetypes service when present, normalizing the auto-text result
58
+ // to the text primitive (plurnk-service never auto-derives text/plain). No
59
+ // service → text primitive.
60
+ static async #detectMimetype(canonical, mimetypes) {
61
+ if (mimetypes !== undefined) {
62
+ const detected = await mimetypes.detect({ path: canonical });
63
+ return MimetypeBinary.normalizeAutoTextMimetype(detected);
64
+ }
65
+ return MimetypeBinary.TEXT_PRIMITIVE_MIMETYPE;
66
+ }
67
+ // Register every git-tracked file as a bare session member (scheme=null),
68
+ // idempotently. Channel-less — disk is the truth (D3); the row is the
69
+ // membership marker File.read gates on. Returns the tracked pathnames so the
70
+ // caller can materialize them through writeEntry.
71
+ //
72
+ // signal-respecting: the git shell-outs honor `signal`; on a non-git or
73
+ // headless root nothing is touched.
74
+ static async resolveGitMembership(db, sessionId, signal) {
75
+ const root = await GitMembership.#loadSessionRoot(db, sessionId);
76
+ if (root === null)
77
+ return [];
78
+ if (!await GitMembership.#isGitWorkTree(root, signal))
79
+ return [];
80
+ const tracked = await GitMembership.#gitTrackedFiles(root, signal);
81
+ for (const pathname of tracked) {
82
+ await db.crud_register_session_member.get({ session_id: sessionId, scheme: null, pathname });
83
+ }
84
+ return tracked;
85
+ }
86
+ // Materialize a member's disk content into a body channel + visibility for the
87
+ // run via writeEntry (the entry-write paradigm) — so it surfaces in
88
+ // packet.system.index (D4/D5). Re-reads disk each call (eager + relevance-
89
+ // bounded). Binary files are members but never materialized into a text
90
+ // channel. Missing-on-disk (tracked but deleted in the working tree) is
91
+ // skipped — membership stands, no channel.
92
+ static async #materializeMember(pathname, root, ctx) {
93
+ const canonical = resolve(root, pathname);
94
+ const mimetype = await GitMembership.#detectMimetype(canonical, ctx.mimetypes);
95
+ if (MimetypeBinary.isBinaryMimetype(mimetype))
96
+ return;
97
+ let content;
98
+ try {
99
+ content = await readFile(canonical, "utf8");
100
+ }
101
+ catch (err) {
102
+ if (err.code === "ENOENT")
103
+ return;
104
+ throw err;
105
+ }
106
+ // writeEntry finds the registered member (scheme=null) and refreshes its
107
+ // body channel each turn, so a member edited out-of-band reflects current
108
+ // disk content (D5) — tokenization + visibility flow through the paradigm.
109
+ await EntryCrud.writeEntry(pathname, { channels: { body: { content, mimetype } }, tags: [] }, ctx, null);
110
+ }
111
+ // Full membership + materialization pass for a run. Registers git members,
112
+ // then materializes each active (on-disk, non-binary) member into the index
113
+ // through writeEntry. Called at packet-composition time (Engine.runTurn) per
114
+ // D5. No-ops on headless / non-git sessions.
115
+ static async indexGitMembership(ctx) {
116
+ const root = await GitMembership.#loadSessionRoot(ctx.db, ctx.sessionId);
117
+ if (root === null)
118
+ return;
119
+ const tracked = await GitMembership.resolveGitMembership(ctx.db, ctx.sessionId, ctx.signal);
120
+ for (const pathname of tracked) {
121
+ await GitMembership.#materializeMember(pathname, root, ctx);
122
+ }
123
+ }
124
+ }
125
+ //# sourceMappingURL=git-membership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-membership.js","sourceRoot":"","sources":["../../src/core/git-membership.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,48 @@
1
- export function renderSystemContent(system: any): string;
2
- export function renderUserContent(user: any): string;
3
- export function packetToWireMessages(packet: any): {
4
- role: string;
5
- content: string;
6
- }[];
1
+ interface SystemSection {
2
+ system_definition: string;
3
+ persona?: unknown;
4
+ index?: unknown;
5
+ log?: unknown;
6
+ tokens?: number;
7
+ }
8
+ interface UserSection {
9
+ prompt?: unknown;
10
+ telemetry?: {
11
+ budget?: unknown;
12
+ errors?: unknown;
13
+ };
14
+ system_requirements?: unknown;
15
+ tokens?: number;
16
+ }
17
+ interface Packet {
18
+ system: SystemSection;
19
+ user: UserSection;
20
+ }
21
+ type CountTokens = (text: string) => number;
22
+ export default class PacketWire {
23
+ #private;
24
+ static renderSystemContent(system: SystemSection): string;
25
+ static renderUserContent(user: UserSection): string;
26
+ static packetToWireMessages(packet: Packet): Array<{
27
+ role: string;
28
+ content: string;
29
+ }>;
30
+ static measureBudgetSections(packet: Packet, countTokens: CountTokens): {
31
+ index: {
32
+ channels: number;
33
+ tokens: number;
34
+ };
35
+ log: {
36
+ entries: number;
37
+ tokens: number;
38
+ byScheme: Array<{
39
+ scheme: string;
40
+ entries: number;
41
+ tokens: number;
42
+ }>;
43
+ };
44
+ total: number;
45
+ };
46
+ }
47
+ export {};
7
48
  //# sourceMappingURL=packet-wire.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"packet-wire.d.ts","sourceRoot":"","sources":["../../src/core/packet-wire.js"],"names":[],"mappings":"AAsBO,yDAYN;AASM,qDAgBN;AAIM;;;IAGN"}
1
+ {"version":3,"file":"packet-wire.d.ts","sourceRoot":"","sources":["../../src/core/packet-wire.ts"],"names":[],"mappings":"AAmDA,UAAU,aAAa;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,UAAU,WAAW;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACnD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,UAAU,MAAM;IAAG,MAAM,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE;AAC7D,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,UAAU;;IAM3B,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM;IAqBzD,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;IAoBnD,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAcrF,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG;QACpE,KAAK,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5C,GAAG,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,KAAK,CAAC;gBAAE,MAAM,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC;QAC/G,KAAK,EAAE,MAAM,CAAC;KACjB;CA6TJ"}