@vibesdotdev/plugins 0.0.0-stage → 1.0.0-rc.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 (330) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +54 -2
  3. package/VIBES.md +165 -0
  4. package/dist/ai/index.d.ts +4 -0
  5. package/dist/ai/index.d.ts.map +1 -0
  6. package/dist/ai/index.js +3 -0
  7. package/dist/ai/index.js.map +1 -0
  8. package/dist/ai/plugin.impl.cloud.d.ts +4 -0
  9. package/dist/ai/plugin.impl.cloud.d.ts.map +1 -0
  10. package/dist/ai/plugin.impl.cloud.js +32 -0
  11. package/dist/ai/plugin.impl.cloud.js.map +1 -0
  12. package/dist/ai/plugin.impl.consumer.d.ts +7 -0
  13. package/dist/ai/plugin.impl.consumer.d.ts.map +1 -0
  14. package/dist/ai/plugin.impl.consumer.js +222 -0
  15. package/dist/ai/plugin.impl.consumer.js.map +1 -0
  16. package/dist/auth/consumer.plugin.d.ts +3 -0
  17. package/dist/auth/consumer.plugin.d.ts.map +1 -0
  18. package/dist/auth/consumer.plugin.js +105 -0
  19. package/dist/auth/consumer.plugin.js.map +1 -0
  20. package/dist/auth/index.d.ts +2 -0
  21. package/dist/auth/index.d.ts.map +1 -0
  22. package/dist/auth/index.js +2 -0
  23. package/dist/auth/index.js.map +1 -0
  24. package/dist/auth/plugin.d.ts +4 -0
  25. package/dist/auth/plugin.d.ts.map +1 -0
  26. package/dist/auth/plugin.js +33 -0
  27. package/dist/auth/plugin.js.map +1 -0
  28. package/dist/automation/consumer.plugin.d.ts +3 -0
  29. package/dist/automation/consumer.plugin.d.ts.map +1 -0
  30. package/dist/automation/consumer.plugin.js +92 -0
  31. package/dist/automation/consumer.plugin.js.map +1 -0
  32. package/dist/automation/index.d.ts +2 -0
  33. package/dist/automation/index.d.ts.map +1 -0
  34. package/dist/automation/index.js +2 -0
  35. package/dist/automation/index.js.map +1 -0
  36. package/dist/automation/plugin.d.ts +4 -0
  37. package/dist/automation/plugin.d.ts.map +1 -0
  38. package/dist/automation/plugin.js +30 -0
  39. package/dist/automation/plugin.js.map +1 -0
  40. package/dist/bun/host.d.ts +44 -0
  41. package/dist/bun/host.d.ts.map +1 -0
  42. package/dist/bun/host.js +71 -0
  43. package/dist/bun/host.js.map +1 -0
  44. package/dist/cli/child-failure.d.ts +37 -0
  45. package/dist/cli/child-failure.d.ts.map +1 -0
  46. package/dist/cli/child-failure.js +86 -0
  47. package/dist/cli/child-failure.js.map +1 -0
  48. package/dist/cli/context.d.ts +12 -0
  49. package/dist/cli/context.d.ts.map +1 -0
  50. package/dist/cli/context.js +11 -0
  51. package/dist/cli/context.js.map +1 -0
  52. package/dist/cli/execution.d.ts +10 -0
  53. package/dist/cli/execution.d.ts.map +1 -0
  54. package/dist/cli/execution.js +20 -0
  55. package/dist/cli/execution.js.map +1 -0
  56. package/dist/cli/failure-facts.d.ts +16 -0
  57. package/dist/cli/failure-facts.d.ts.map +1 -0
  58. package/dist/cli/failure-facts.js +39 -0
  59. package/dist/cli/failure-facts.js.map +1 -0
  60. package/dist/cli/package-manager.consumer.d.ts +106 -0
  61. package/dist/cli/package-manager.consumer.d.ts.map +1 -0
  62. package/dist/cli/package-manager.consumer.js +258 -0
  63. package/dist/cli/package-manager.consumer.js.map +1 -0
  64. package/dist/cli/plugin.d.ts +9 -0
  65. package/dist/cli/plugin.d.ts.map +1 -0
  66. package/dist/cli/plugin.js +34 -0
  67. package/dist/cli/plugin.js.map +1 -0
  68. package/dist/cli/plugins.add.cli-command.descriptor.d.ts +36 -0
  69. package/dist/cli/plugins.add.cli-command.descriptor.d.ts.map +1 -0
  70. package/dist/cli/plugins.add.cli-command.descriptor.js +31 -0
  71. package/dist/cli/plugins.add.cli-command.descriptor.js.map +1 -0
  72. package/dist/cli/plugins.add.cli-command.impl.consumer.d.ts +63 -0
  73. package/dist/cli/plugins.add.cli-command.impl.consumer.d.ts.map +1 -0
  74. package/dist/cli/plugins.add.cli-command.impl.consumer.js +206 -0
  75. package/dist/cli/plugins.add.cli-command.impl.consumer.js.map +1 -0
  76. package/dist/cli/plugins.cli-group.descriptor.d.ts +4 -0
  77. package/dist/cli/plugins.cli-group.descriptor.d.ts.map +1 -0
  78. package/dist/cli/plugins.cli-group.descriptor.js +10 -0
  79. package/dist/cli/plugins.cli-group.descriptor.js.map +1 -0
  80. package/dist/cli/plugins.host.cli-command.descriptor.d.ts +31 -0
  81. package/dist/cli/plugins.host.cli-command.descriptor.d.ts.map +1 -0
  82. package/dist/cli/plugins.host.cli-command.descriptor.js +37 -0
  83. package/dist/cli/plugins.host.cli-command.descriptor.js.map +1 -0
  84. package/dist/cli/plugins.host.cli-command.impl.consumer.d.ts +29 -0
  85. package/dist/cli/plugins.host.cli-command.impl.consumer.d.ts.map +1 -0
  86. package/dist/cli/plugins.host.cli-command.impl.consumer.js +109 -0
  87. package/dist/cli/plugins.host.cli-command.impl.consumer.js.map +1 -0
  88. package/dist/cli/plugins.link.cli-command.descriptor.d.ts +35 -0
  89. package/dist/cli/plugins.link.cli-command.descriptor.d.ts.map +1 -0
  90. package/dist/cli/plugins.link.cli-command.descriptor.js +32 -0
  91. package/dist/cli/plugins.link.cli-command.descriptor.js.map +1 -0
  92. package/dist/cli/plugins.link.cli-command.impl.consumer.d.ts +31 -0
  93. package/dist/cli/plugins.link.cli-command.impl.consumer.d.ts.map +1 -0
  94. package/dist/cli/plugins.link.cli-command.impl.consumer.js +104 -0
  95. package/dist/cli/plugins.link.cli-command.impl.consumer.js.map +1 -0
  96. package/dist/cli/plugins.list.cli-command.descriptor.d.ts +26 -0
  97. package/dist/cli/plugins.list.cli-command.descriptor.d.ts.map +1 -0
  98. package/dist/cli/plugins.list.cli-command.descriptor.js +22 -0
  99. package/dist/cli/plugins.list.cli-command.descriptor.js.map +1 -0
  100. package/dist/cli/plugins.list.cli-command.impl.consumer.d.ts +116 -0
  101. package/dist/cli/plugins.list.cli-command.impl.consumer.d.ts.map +1 -0
  102. package/dist/cli/plugins.list.cli-command.impl.consumer.js +343 -0
  103. package/dist/cli/plugins.list.cli-command.impl.consumer.js.map +1 -0
  104. package/dist/cli/plugins.remove.cli-command.descriptor.d.ts +31 -0
  105. package/dist/cli/plugins.remove.cli-command.descriptor.d.ts.map +1 -0
  106. package/dist/cli/plugins.remove.cli-command.descriptor.js +26 -0
  107. package/dist/cli/plugins.remove.cli-command.descriptor.js.map +1 -0
  108. package/dist/cli/plugins.remove.cli-command.impl.consumer.d.ts +30 -0
  109. package/dist/cli/plugins.remove.cli-command.impl.consumer.d.ts.map +1 -0
  110. package/dist/cli/plugins.remove.cli-command.impl.consumer.js +80 -0
  111. package/dist/cli/plugins.remove.cli-command.impl.consumer.js.map +1 -0
  112. package/dist/cli/plugins.unlink.cli-command.descriptor.d.ts +31 -0
  113. package/dist/cli/plugins.unlink.cli-command.descriptor.d.ts.map +1 -0
  114. package/dist/cli/plugins.unlink.cli-command.descriptor.js +21 -0
  115. package/dist/cli/plugins.unlink.cli-command.descriptor.js.map +1 -0
  116. package/dist/cli/plugins.unlink.cli-command.impl.consumer.d.ts +76 -0
  117. package/dist/cli/plugins.unlink.cli-command.impl.consumer.d.ts.map +1 -0
  118. package/dist/cli/plugins.unlink.cli-command.impl.consumer.js +190 -0
  119. package/dist/cli/plugins.unlink.cli-command.impl.consumer.js.map +1 -0
  120. package/dist/cli/registry-sign-in.consumer.d.ts +80 -0
  121. package/dist/cli/registry-sign-in.consumer.d.ts.map +1 -0
  122. package/dist/cli/registry-sign-in.consumer.js +199 -0
  123. package/dist/cli/registry-sign-in.consumer.js.map +1 -0
  124. package/dist/cli/roll.d.ts +230 -0
  125. package/dist/cli/roll.d.ts.map +1 -0
  126. package/dist/cli/roll.js +569 -0
  127. package/dist/cli/roll.js.map +1 -0
  128. package/dist/cli/schemas/context.d.ts +10 -0
  129. package/dist/cli/schemas/context.d.ts.map +1 -0
  130. package/dist/cli/schemas/context.js +3 -0
  131. package/dist/cli/schemas/context.js.map +1 -0
  132. package/dist/cli/schemas/scopes.d.ts +37 -0
  133. package/dist/cli/schemas/scopes.d.ts.map +1 -0
  134. package/dist/cli/schemas/scopes.js +11 -0
  135. package/dist/cli/schemas/scopes.js.map +1 -0
  136. package/dist/cli/schemas/unlink.d.ts +18 -0
  137. package/dist/cli/schemas/unlink.d.ts.map +1 -0
  138. package/dist/cli/schemas/unlink.js +3 -0
  139. package/dist/cli/schemas/unlink.js.map +1 -0
  140. package/dist/cli/schemas/update.d.ts +77 -0
  141. package/dist/cli/schemas/update.d.ts.map +1 -0
  142. package/dist/cli/schemas/update.js +3 -0
  143. package/dist/cli/schemas/update.js.map +1 -0
  144. package/dist/cli/scopes.d.ts +50 -0
  145. package/dist/cli/scopes.d.ts.map +1 -0
  146. package/dist/cli/scopes.js +90 -0
  147. package/dist/cli/scopes.js.map +1 -0
  148. package/dist/cli/seed.d.ts +232 -0
  149. package/dist/cli/seed.d.ts.map +1 -0
  150. package/dist/cli/seed.js +590 -0
  151. package/dist/cli/seed.js.map +1 -0
  152. package/dist/cli/self-update.d.ts +120 -0
  153. package/dist/cli/self-update.d.ts.map +1 -0
  154. package/dist/cli/self-update.js +274 -0
  155. package/dist/cli/self-update.js.map +1 -0
  156. package/dist/cli/update.cli-command.descriptor.d.ts +62 -0
  157. package/dist/cli/update.cli-command.descriptor.d.ts.map +1 -0
  158. package/dist/cli/update.cli-command.descriptor.js +49 -0
  159. package/dist/cli/update.cli-command.descriptor.js.map +1 -0
  160. package/dist/cli/update.cli-command.impl.consumer.d.ts +178 -0
  161. package/dist/cli/update.cli-command.impl.consumer.d.ts.map +1 -0
  162. package/dist/cli/update.cli-command.impl.consumer.js +750 -0
  163. package/dist/cli/update.cli-command.impl.consumer.js.map +1 -0
  164. package/dist/comms/consumer.plugin.d.ts +3 -0
  165. package/dist/comms/consumer.plugin.d.ts.map +1 -0
  166. package/dist/comms/consumer.plugin.js +108 -0
  167. package/dist/comms/consumer.plugin.js.map +1 -0
  168. package/dist/comms/index.d.ts +2 -0
  169. package/dist/comms/index.d.ts.map +1 -0
  170. package/dist/comms/index.js +2 -0
  171. package/dist/comms/index.js.map +1 -0
  172. package/dist/comms/plugin.d.ts +4 -0
  173. package/dist/comms/plugin.d.ts.map +1 -0
  174. package/dist/comms/plugin.js +30 -0
  175. package/dist/comms/plugin.js.map +1 -0
  176. package/dist/consumer.d.ts +3 -0
  177. package/dist/consumer.d.ts.map +1 -0
  178. package/dist/consumer.js +3 -0
  179. package/dist/consumer.js.map +1 -0
  180. package/dist/consumer.plugin.d.ts +63 -0
  181. package/dist/consumer.plugin.d.ts.map +1 -0
  182. package/dist/consumer.plugin.js +89 -0
  183. package/dist/consumer.plugin.js.map +1 -0
  184. package/dist/core/consumer.plugin.d.ts +4 -0
  185. package/dist/core/consumer.plugin.d.ts.map +1 -0
  186. package/dist/core/consumer.plugin.js +358 -0
  187. package/dist/core/consumer.plugin.js.map +1 -0
  188. package/dist/core/index.d.ts +2 -0
  189. package/dist/core/index.d.ts.map +1 -0
  190. package/dist/core/index.js +2 -0
  191. package/dist/core/index.js.map +1 -0
  192. package/dist/core/optional-member.d.ts +11 -0
  193. package/dist/core/optional-member.d.ts.map +1 -0
  194. package/dist/core/optional-member.js +68 -0
  195. package/dist/core/optional-member.js.map +1 -0
  196. package/dist/core/optional-plugin.d.ts +40 -0
  197. package/dist/core/optional-plugin.d.ts.map +1 -0
  198. package/dist/core/optional-plugin.js +107 -0
  199. package/dist/core/optional-plugin.js.map +1 -0
  200. package/dist/core/plugin.d.ts +10 -0
  201. package/dist/core/plugin.d.ts.map +1 -0
  202. package/dist/core/plugin.js +64 -0
  203. package/dist/core/plugin.js.map +1 -0
  204. package/dist/core/setup-requirements.descriptors.d.ts +7 -0
  205. package/dist/core/setup-requirements.descriptors.d.ts.map +1 -0
  206. package/dist/core/setup-requirements.descriptors.js +117 -0
  207. package/dist/core/setup-requirements.descriptors.js.map +1 -0
  208. package/dist/data/consumer.plugin.d.ts +3 -0
  209. package/dist/data/consumer.plugin.d.ts.map +1 -0
  210. package/dist/data/consumer.plugin.js +99 -0
  211. package/dist/data/consumer.plugin.js.map +1 -0
  212. package/dist/data/index.d.ts +2 -0
  213. package/dist/data/index.d.ts.map +1 -0
  214. package/dist/data/index.js +2 -0
  215. package/dist/data/index.js.map +1 -0
  216. package/dist/data/plugin.d.ts +4 -0
  217. package/dist/data/plugin.d.ts.map +1 -0
  218. package/dist/data/plugin.js +37 -0
  219. package/dist/data/plugin.js.map +1 -0
  220. package/dist/devtools/consumer.plugin.d.ts +3 -0
  221. package/dist/devtools/consumer.plugin.d.ts.map +1 -0
  222. package/dist/devtools/consumer.plugin.js +323 -0
  223. package/dist/devtools/consumer.plugin.js.map +1 -0
  224. package/dist/devtools/index.d.ts +2 -0
  225. package/dist/devtools/index.d.ts.map +1 -0
  226. package/dist/devtools/index.js +2 -0
  227. package/dist/devtools/index.js.map +1 -0
  228. package/dist/devtools/plugin.d.ts +4 -0
  229. package/dist/devtools/plugin.d.ts.map +1 -0
  230. package/dist/devtools/plugin.js +34 -0
  231. package/dist/devtools/plugin.js.map +1 -0
  232. package/dist/filesystem/index.d.ts +2 -0
  233. package/dist/filesystem/index.d.ts.map +1 -0
  234. package/dist/filesystem/index.js +2 -0
  235. package/dist/filesystem/index.js.map +1 -0
  236. package/dist/filesystem/plugin.d.ts +4 -0
  237. package/dist/filesystem/plugin.d.ts.map +1 -0
  238. package/dist/filesystem/plugin.js +21 -0
  239. package/dist/filesystem/plugin.js.map +1 -0
  240. package/dist/index.d.ts +3 -0
  241. package/dist/index.d.ts.map +1 -0
  242. package/dist/index.js +4 -0
  243. package/dist/index.js.map +1 -0
  244. package/dist/plugin.d.ts +7 -0
  245. package/dist/plugin.d.ts.map +1 -0
  246. package/dist/plugin.js +16 -0
  247. package/dist/plugin.js.map +1 -0
  248. package/dist/schemas/ai.d.ts +119 -0
  249. package/dist/schemas/ai.d.ts.map +1 -0
  250. package/dist/schemas/ai.js +84 -0
  251. package/dist/schemas/ai.js.map +1 -0
  252. package/dist/schemas/auth.d.ts +15 -0
  253. package/dist/schemas/auth.d.ts.map +1 -0
  254. package/dist/schemas/auth.js +19 -0
  255. package/dist/schemas/auth.js.map +1 -0
  256. package/dist/schemas/automation.d.ts +66 -0
  257. package/dist/schemas/automation.d.ts.map +1 -0
  258. package/dist/schemas/automation.js +36 -0
  259. package/dist/schemas/automation.js.map +1 -0
  260. package/dist/schemas/comms.d.ts +13 -0
  261. package/dist/schemas/comms.d.ts.map +1 -0
  262. package/dist/schemas/comms.js +27 -0
  263. package/dist/schemas/comms.js.map +1 -0
  264. package/dist/schemas/core.d.ts +102 -0
  265. package/dist/schemas/core.d.ts.map +1 -0
  266. package/dist/schemas/core.js +124 -0
  267. package/dist/schemas/core.js.map +1 -0
  268. package/dist/schemas/data.d.ts +13 -0
  269. package/dist/schemas/data.d.ts.map +1 -0
  270. package/dist/schemas/data.js +25 -0
  271. package/dist/schemas/data.js.map +1 -0
  272. package/dist/schemas/devtools.d.ts +33 -0
  273. package/dist/schemas/devtools.d.ts.map +1 -0
  274. package/dist/schemas/devtools.js +56 -0
  275. package/dist/schemas/devtools.js.map +1 -0
  276. package/dist/schemas/family.d.ts +11 -0
  277. package/dist/schemas/family.d.ts.map +1 -0
  278. package/dist/schemas/family.js +21 -0
  279. package/dist/schemas/family.js.map +1 -0
  280. package/dist/schemas/filesystem.d.ts +25 -0
  281. package/dist/schemas/filesystem.d.ts.map +1 -0
  282. package/dist/schemas/filesystem.js +24 -0
  283. package/dist/schemas/filesystem.js.map +1 -0
  284. package/dist/schemas/host.d.ts +10 -0
  285. package/dist/schemas/host.d.ts.map +1 -0
  286. package/dist/schemas/host.js +2 -0
  287. package/dist/schemas/host.js.map +1 -0
  288. package/dist/schemas/optional-member.d.ts +67 -0
  289. package/dist/schemas/optional-member.d.ts.map +1 -0
  290. package/dist/schemas/optional-member.js +31 -0
  291. package/dist/schemas/optional-member.js.map +1 -0
  292. package/dist/schemas/roll.d.ts +47 -0
  293. package/dist/schemas/roll.d.ts.map +1 -0
  294. package/dist/schemas/roll.js +18 -0
  295. package/dist/schemas/roll.js.map +1 -0
  296. package/dist/schemas/tui.d.ts +33 -0
  297. package/dist/schemas/tui.d.ts.map +1 -0
  298. package/dist/schemas/tui.js +95 -0
  299. package/dist/schemas/tui.js.map +1 -0
  300. package/dist/schemas/ui.d.ts +15 -0
  301. package/dist/schemas/ui.d.ts.map +1 -0
  302. package/dist/schemas/ui.js +45 -0
  303. package/dist/schemas/ui.js.map +1 -0
  304. package/dist/tui/code-sessions-tui-plugin-shim.d.ts +7 -0
  305. package/dist/tui/code-sessions-tui-plugin-shim.d.ts.map +1 -0
  306. package/dist/tui/code-sessions-tui-plugin-shim.js +2 -0
  307. package/dist/tui/code-sessions-tui-plugin-shim.js.map +1 -0
  308. package/dist/tui/index.d.ts +8 -0
  309. package/dist/tui/index.d.ts.map +1 -0
  310. package/dist/tui/index.js +8 -0
  311. package/dist/tui/index.js.map +1 -0
  312. package/dist/tui/plugin.d.ts +53 -0
  313. package/dist/tui/plugin.d.ts.map +1 -0
  314. package/dist/tui/plugin.js +350 -0
  315. package/dist/tui/plugin.js.map +1 -0
  316. package/dist/ui/consumer.plugin.d.ts +3 -0
  317. package/dist/ui/consumer.plugin.d.ts.map +1 -0
  318. package/dist/ui/consumer.plugin.js +75 -0
  319. package/dist/ui/consumer.plugin.js.map +1 -0
  320. package/dist/ui/index.d.ts +2 -0
  321. package/dist/ui/index.d.ts.map +1 -0
  322. package/dist/ui/index.js +2 -0
  323. package/dist/ui/index.js.map +1 -0
  324. package/dist/ui/plugin.d.ts +4 -0
  325. package/dist/ui/plugin.d.ts.map +1 -0
  326. package/dist/ui/plugin.js +35 -0
  327. package/dist/ui/plugin.js.map +1 -0
  328. package/host-start.mjs +39 -0
  329. package/host.mjs +24 -0
  330. package/package.json +437 -4
@@ -0,0 +1,358 @@
1
+ import { CapabilityError, createRuntimePlugin, createRuntimeKind, hasRuntimeStdioCapture } from '@vibesdotdev/kernel';
2
+ import { adapterFieldOmitted, CoreConfigDescriptorSchema, mergeConfig } from "../schemas/core.js";
3
+ import { optionalMemberRegistrar } from "./optional-member.js";
4
+ const storageAdapterEntries = {
5
+ 'cloud-api': {
6
+ localRetention: false,
7
+ load: async () => (await import('@vibesdotdev/storage/adapters/cloud-api/plugin')).storageAdapterCloudApiPlugin
8
+ },
9
+ json: {
10
+ localRetention: true,
11
+ load: async () => (await import('@vibesdotdev/storage/adapters/json/plugin')).storageAdapterJsonPlugin
12
+ },
13
+ localdb: {
14
+ localRetention: true,
15
+ load: async () => (await import('@vibesdotdev/storage/adapters/localdb/plugin')).storageAdapterLocaldbPlugin
16
+ }
17
+ };
18
+ function unknownStorageAdapter(id) {
19
+ return new CapabilityError(`Unknown storage adapter '${id}'.`, 'UNAVAILABLE', {
20
+ reason: 'storage-adapter-unknown',
21
+ retryable: false,
22
+ details: { adapter: id },
23
+ recoveryHint: 'Select a registered storage adapter id.'
24
+ });
25
+ }
26
+ const filesystemAdapterEntries = {
27
+ // The host environment composes its filesystem adapter.
28
+ bun: { load: null },
29
+ // Provider adapters are composed by the host integration package
30
+ // (Cloudflare Artifacts: createCloudflareArtifactsFileSystemPlugin
31
+ // from @vibesdotdev/integrations-cloudflare/filesystem/artifacts/plugin,
32
+ // which needs the Worker's ARTIFACTS binding). Framework keeps the
33
+ // adapter selection contract but never imports a provider implementation.
34
+ cloudflare: { load: null },
35
+ artifacts: { load: null },
36
+ // Vendor-backed S3 composition belongs to the app host. The public
37
+ // umbrella retains only the configuration contract.
38
+ s3: { load: null },
39
+ platform: {
40
+ load: async () => (await import('@vibesdotdev/workspace/environment/platform-fs/plugin')).platformFileSystemAdapterPlugin
41
+ }
42
+ };
43
+ /** Declarative lookup: the id selects its entry, or nothing when unregistered. */
44
+ function lookupEntry(entries, id) {
45
+ return Object.hasOwn(entries, id) ? entries[id] : undefined;
46
+ }
47
+ function unknownFilesystemAdapter(id) {
48
+ return new CapabilityError(`Unknown filesystem adapter '${id}'.`, 'UNAVAILABLE', {
49
+ reason: 'filesystem-adapter-unknown',
50
+ retryable: false,
51
+ details: { adapter: id },
52
+ recoveryHint: 'Select a registered filesystem adapter id.'
53
+ });
54
+ }
55
+ /** Full consumer graph. The host environment supplies native filesystem implementations. */
56
+ const consumerCore = createRuntimePlugin({
57
+ id: '@vibesdotdev/plugins-core',
58
+ name: 'Core Consumer Composition',
59
+ dependencies: ['context'],
60
+ kinds: [createRuntimeKind({ id: 'plugins/core/config', descriptorSchema: CoreConfigDescriptorSchema })],
61
+ async onRegister(runtime) {
62
+ // Now read config and register optional plugins
63
+ const configId = 'plugins.core';
64
+ const userConfig = runtime.hasContext(configId) ? await runtime.context(configId) : undefined;
65
+ const effectiveConfig = mergeConfig(userConfig, runtime.scope);
66
+ // Consumer floor when the caller omits the field. The public schema names no adapter.
67
+ // An explicit list, including [], is the caller's selection.
68
+ if (adapterFieldOmitted(userConfig, 'storage')) {
69
+ effectiveConfig.storage = { enabled: true, adapters: ['localdb', 'json'], default: 'localdb' };
70
+ }
71
+ if (adapterFieldOmitted(userConfig, 'filesystem')) {
72
+ effectiveConfig.filesystem = { enabled: true, adapters: ['bun'], default: 'bun' };
73
+ }
74
+ const registerOptional = optionalMemberRegistrar('plugins-core', runtime);
75
+ const { default: hooksPlugin } = await import('@vibesdotdev/kernel/hooks/hooks.plugin');
76
+ await runtime.registerPlugin(hooksPlugin);
77
+ const { default: eventsPlugin } = await import('@vibesdotdev/kernel/events/plugin');
78
+ await runtime.registerPlugin(eventsPlugin);
79
+ const { default: storagePlugin } = await import('@vibesdotdev/storage/storage.plugin');
80
+ await runtime.registerPlugin(storagePlugin);
81
+ const { default: loggingPlugin } = await import('@vibesdotdev/logging/plugin');
82
+ await runtime.registerPlugin(loggingPlugin);
83
+ const { default: runtimeResolverPlugin } = await import('@vibesdotdev/kernel/resolver/resolver.plugin');
84
+ await runtime.registerPlugin(runtimeResolverPlugin);
85
+ const { default: runtimeClientPlugin } = await import('@vibesdotdev/kernel/client/plugin');
86
+ await runtime.registerPlugin(runtimeClientPlugin);
87
+ // Media is a Framework runtime kind, not an optional feature. Register it
88
+ // before feature umbrellas so providers such as Bridge can declare their
89
+ // capture descriptors without depending on app registration order.
90
+ const { default: mediaPlugin } = await import('@vibesdotdev/media/plugin');
91
+ await runtime.registerPlugin(mediaPlugin);
92
+ // Canvas board document+ops contract (W2 canvas/board). Register early so
93
+ // Vessel whiteboard host / adapters can declare board descriptors without
94
+ // depending on feature umbrella order.
95
+ const { default: canvasPlugin } = await import('@vibesdotdev/canvas/plugin');
96
+ await runtime.registerPlugin(canvasPlugin);
97
+ // Realtime owns the SSE channel hub. Its plugin registers only the owner
98
+ // docs topics, so every host that loads plugins can show them.
99
+ const { default: realtimePlugin } = await import('@vibesdotdev/realtime/plugin');
100
+ await runtime.registerPlugin(realtimePlugin);
101
+ const { default: configPlugin } = await import('@vibesdotdev/config/plugin');
102
+ await runtime.registerPlugin(configPlugin);
103
+ if (runtime.scope.surface === 'cli') {
104
+ const { default: configCliPlugin } = await import('@vibesdotdev/config/cli/plugin');
105
+ await runtime.registerPlugin(configCliPlugin);
106
+ }
107
+ const { default: environmentPlugin } = await import('@vibesdotdev/config/environment/environment.plugin');
108
+ await runtime.registerPlugin(environmentPlugin);
109
+ const { default: setupPlugin } = await import('@vibesdotdev/config/setup/plugin');
110
+ await runtime.registerPlugin(setupPlugin);
111
+ if (runtime.scope.surface === 'cli') {
112
+ const { default: setupCliPlugin } = await import('@vibesdotdev/config/setup/cli.plugin');
113
+ await runtime.registerPlugin(setupCliPlugin);
114
+ }
115
+ const { default: runtimePlugin } = await import('@vibesdotdev/kernel/plugin');
116
+ await runtime.registerPlugin(runtimePlugin);
117
+ // Native capture follows a declared host port on consumer and cloud hosts.
118
+ // An absent optional port declines composition; malformed ports still fail.
119
+ if (await hasRuntimeStdioCapture(runtime)) {
120
+ const { loggingStdoutCapturePlugin } = await import('@vibesdotdev/logging');
121
+ await runtime.registerPlugin(loggingStdoutCapturePlugin);
122
+ }
123
+ if (effectiveConfig.loggingBrowser) {
124
+ const { default: loggingBrowserPlugin } = await import('@vibesdotdev/logging/browser/plugin');
125
+ await runtime.registerPlugin(loggingBrowserPlugin);
126
+ }
127
+ if (effectiveConfig.docs) {
128
+ const { default: docsPlugin } = await import('@vibesdotdev/docs/plugin');
129
+ await runtime.registerPlugin(docsPlugin);
130
+ }
131
+ if (effectiveConfig.tools) {
132
+ if (runtime.scope.hardware === 'cloud') {
133
+ const { default: toolsPlugin } = await import('@vibesdotdev/tools/cloud.plugin');
134
+ await runtime.registerPlugin(toolsPlugin);
135
+ }
136
+ else {
137
+ const { default: toolsPlugin } = await import('@vibesdotdev/tools/plugin');
138
+ await runtime.registerPlugin(toolsPlugin);
139
+ }
140
+ // Built-in tool implementations extracted from @vibesdotdev/tools into their
141
+ // own packages (so tools stays pure framework). Composed here, above tools.
142
+ const { default: calculateToolPlugin } = await import('@vibesdotdev/tools/calculate/plugin');
143
+ await runtime.registerPlugin(calculateToolPlugin);
144
+ const { default: fetchToolPlugin } = await import('@vibesdotdev/tools/fetch/plugin');
145
+ await runtime.registerPlugin(fetchToolPlugin);
146
+ const { default: reasoningToolPlugin } = await import('@vibesdotdev/ai/reasoning/plugin');
147
+ await runtime.registerPlugin(reasoningToolPlugin);
148
+ // Work-items projection + vibes work CLI (extracted from tools).
149
+ if (await registerOptional('@vibesdotdev/projects/work/plugin', async () => (await import('@vibesdotdev/projects/work/plugin')).default)) {
150
+ if (runtime.scope.surface === 'cli') {
151
+ await registerOptional('@vibesdotdev/projects/work/cli/plugin', async () => (await import('@vibesdotdev/projects/work/cli/plugin')).default);
152
+ }
153
+ await registerOptional('@vibesdotdev/projects/work/tools/plugin', async () => (await import('@vibesdotdev/projects/work/tools/plugin')).default);
154
+ }
155
+ // `vibes projects` (create / list / get / update / delete / switch / current).
156
+ if (runtime.scope.surface === 'cli') {
157
+ await registerOptional('@vibesdotdev/projects/app/cli/plugin', async () => (await import('@vibesdotdev/projects/app/cli/plugin')).default);
158
+ }
159
+ // Project-local planning records + `vibes plan` CLI.
160
+ await registerOptional('@vibesdotdev/projects/planning/plugin', async () => (await import('@vibesdotdev/projects/planning/plugin')).default);
161
+ if (runtime.scope.surface === 'cli') {
162
+ await registerOptional('@vibesdotdev/projects/planning/cli/plugin', async () => (await import('@vibesdotdev/projects/planning/cli/plugin')).default);
163
+ }
164
+ // Forge tools (repos / files / issues / PRs / reviews) — optional, skipped
165
+ // if the package isn't installed for this surface. Exposes itself to MCP
166
+ // clients + the native loop via its descriptors' purpose:['mcp','agent'].
167
+ await registerOptional('@vibesdotdev/forge/tools/plugin', async () => (await import('@vibesdotdev/forge/tools/plugin')).default);
168
+ }
169
+ if (effectiveConfig.workers) {
170
+ // The workers owner is provider-neutral on every hardware kind. Hosted
171
+ // queue implementations are contributed by their integration plugins;
172
+ // selecting a provider-owned adapter from this umbrella would invert the
173
+ // dependency boundary and makes the core composition package lie.
174
+ const { default: workersPlugin } = await import('@vibesdotdev/workers/plugin');
175
+ await runtime.registerPlugin(workersPlugin);
176
+ }
177
+ if (effectiveConfig.app) {
178
+ // App's projects plugin depends on the client plugin for its api/client
179
+ // descriptor. Register client first so CLI startup cannot silently
180
+ // degrade to tracking-only and drop `vibes projects`.
181
+ if (await registerOptional('@vibesdotdev/client/plugin', async () => (await import('@vibesdotdev/client/plugin')).default)) {
182
+ await registerOptional('@vibesdotdev/projects/app/plugin', async () => (await import('@vibesdotdev/projects/app/plugin')).default);
183
+ }
184
+ // One-Authority work↔tracking sync (forge issue #141): pair the local
185
+ // tracking-ledger endpoint (work.sync) with the platform authority
186
+ // endpoint (projects.sync) through the seeded binding
187
+ // `sync.binding.vibes.tracking-items`, driven by `vibes work sync
188
+ // --push/--pull`. registerPlugin is idempotent, so pre-registering the
189
+ // sync substrate here never conflicts with the CLI integration host
190
+ // registering it again for productivity providers.
191
+ if (runtime.hasPlugin('app')) {
192
+ const synced = (await registerOptional('@vibesdotdev/sync/plugin', async () => (await import('@vibesdotdev/sync/plugin')).default)) &&
193
+ (await registerOptional('@vibesdotdev/projects/api-client-plugin', async () => (await import('@vibesdotdev/projects/api-client-plugin')).default)) &&
194
+ (await registerOptional('@vibesdotdev/projects/sync.plugin', async () => (await import('@vibesdotdev/projects/sync.plugin')).default));
195
+ if (synced) {
196
+ await registerOptional('@vibesdotdev/projects/work/sync.plugin', async () => (await import('@vibesdotdev/projects/work/sync.plugin')).default);
197
+ }
198
+ }
199
+ }
200
+ if (effectiveConfig.cache) {
201
+ const { default: cachePlugin } = await import('@vibesdotdev/cache/plugin');
202
+ await runtime.registerPlugin(cachePlugin);
203
+ }
204
+ const { default: storageConsumer } = await import('@vibesdotdev/storage/storage.consumer.plugin');
205
+ await runtime.registerPlugin(storageConsumer);
206
+ // Register storage adapters based on config
207
+ const storageConfig = effectiveConfig.storage;
208
+ if (storageConfig.enabled) {
209
+ let localRetention = false;
210
+ for (const adapter of storageConfig.adapters) {
211
+ const entry = lookupEntry(storageAdapterEntries, adapter);
212
+ if (entry === undefined)
213
+ continue;
214
+ await runtime.registerPlugin(await entry.load());
215
+ localRetention = localRetention || entry.localRetention;
216
+ }
217
+ // Filesystem maintenance (retention) for the consumer stores composed above,
218
+ // composed from its own entry rather than from an adapter plugin.
219
+ if (localRetention) {
220
+ const { default: storageNodePlugin } = await import('@vibesdotdev/storage/node.plugin');
221
+ await runtime.registerPlugin(storageNodePlugin);
222
+ }
223
+ }
224
+ // Register filesystem
225
+ const filesystemConfig = effectiveConfig.filesystem;
226
+ if (filesystemConfig.enabled) {
227
+ const { filesystemPlugin } = await import('@vibesdotdev/filesystem');
228
+ await runtime.registerPlugin(filesystemPlugin);
229
+ // Register all requested adapters. Each id resolves through the
230
+ // declared table above: host-composed entries register nothing
231
+ // here, and an id with no entry refuses instead of being ignored.
232
+ for (const adapter of filesystemConfig.adapters) {
233
+ const entry = lookupEntry(filesystemAdapterEntries, adapter);
234
+ if (entry === undefined)
235
+ continue;
236
+ if (entry.load !== null)
237
+ await runtime.registerPlugin(await entry.load());
238
+ }
239
+ }
240
+ // Register paths
241
+ if (effectiveConfig.paths) {
242
+ const { pathsPlugin } = await import('@vibesdotdev/paths');
243
+ await runtime.registerPlugin(pathsPlugin);
244
+ }
245
+ // Register workspace
246
+ if (effectiveConfig.workspace) {
247
+ const { default: plugin } = await import('@vibesdotdev/workspace/plugin');
248
+ await runtime.registerPlugin(plugin);
249
+ const { default: custodyPlugin } = await import('@vibesdotdev/bridge/workspace/plugin');
250
+ await runtime.registerPlugin(custodyPlugin);
251
+ const { default: workspaceLockPlugin } = await import('@vibesdotdev/workspace/lock/plugin');
252
+ await runtime.registerPlugin(workspaceLockPlugin);
253
+ const { default: workspaceFsPlugin } = await import('@vibesdotdev/workspace/fs/plugin');
254
+ await runtime.registerPlugin(workspaceFsPlugin);
255
+ const { default: workspaceOwnershipPlugin } = await import('@vibesdotdev/workspace/ownership/plugin');
256
+ await runtime.registerPlugin(workspaceOwnershipPlugin);
257
+ const { default: workspaceIsolationPlugin } = await import('@vibesdotdev/workspace/isolation/plugin');
258
+ await runtime.registerPlugin(workspaceIsolationPlugin);
259
+ const { default: editorPlugin } = await import('@vibesdotdev/editor/plugin');
260
+ await runtime.registerPlugin(editorPlugin);
261
+ const { default: codeAtlasPlugin } = await import('@vibesdotdev/editor/code-atlas/plugin');
262
+ await runtime.registerPlugin(codeAtlasPlugin);
263
+ const { default: workspaceLspPlugin } = await import('@vibesdotdev/workspace/lsp/plugin');
264
+ await runtime.registerPlugin(workspaceLspPlugin);
265
+ if (runtime.scope.surface === 'cli') {
266
+ const { default: workspaceCliPlugin } = await import('@vibesdotdev/workspace/cli/plugin');
267
+ await runtime.registerPlugin(workspaceCliPlugin);
268
+ const { default: workspaceLspCliPlugin } = await import('@vibesdotdev/workspace/lsp/cli.plugin');
269
+ await runtime.registerPlugin(workspaceLspCliPlugin);
270
+ }
271
+ const { default: workspaceRulesPlugin } = await import('@vibesdotdev/workspace/rules-plugin/plugin');
272
+ await runtime.registerPlugin(workspaceRulesPlugin);
273
+ const { default: workspaceSignalsPlugin } = await import('@vibesdotdev/workspace/signals/plugin');
274
+ await runtime.registerPlugin(workspaceSignalsPlugin);
275
+ }
276
+ // Register session
277
+ if (effectiveConfig.session) {
278
+ const { default: sessionPlugin } = await import('@vibesdotdev/session/plugin');
279
+ await runtime.registerPlugin(sessionPlugin);
280
+ }
281
+ // Canonical `./cli` isolated subpath of the account package (Wave 4 of
282
+ // SURFACE-PACKAGE-CONVENTIONS §3, folded into @vibesdotdev/account under
283
+ // repository-collection-reshape-2026-08). Registers `vibes account whoami`,
284
+ // `vibes account orgs`, and `vibes account set-org`. CLI-only by
285
+ // surface; we still gate on the cli/group + cli/command kinds being
286
+ // available (i.e. `@vibesdotdev/cli` is composed in this runtime),
287
+ // and silently skip when the optional peer is not installed in
288
+ // the current workspace slice.
289
+ if (runtime.scope.surface === 'cli') {
290
+ await registerOptional('@vibesdotdev/account/cli/plugin', async () => (await import('@vibesdotdev/account/cli/plugin')).default);
291
+ // Canonical sibling -cli surface for the applets package: `vibes applet
292
+ // list` and `vibes applet build`, local authoring over `.vibes/applets`.
293
+ //
294
+ // Registered HERE rather than by `@vibesdotdev/applets`, because a base
295
+ // package must not depend on its own surface.
296
+ //
297
+ await registerOptional('@vibesdotdev/applets/cli/plugin', async () => (await import('@vibesdotdev/applets/cli/plugin')).default);
298
+ }
299
+ // Backup base plugin: targets, the backup.snapshot job and the backup.daily
300
+ // channel. Every consumer host that has its dependencies (paths, localdb)
301
+ // gets it, not only the CLI: the PM daemon (which schedules backup.daily)
302
+ // and the workers consumer (which runs backup.snapshot) serve on the
303
+ // `worker` surface. Gating this on `cli` stopped every scheduled snapshot
304
+ // once those hosts moved to `worker`.
305
+ if (runtime.scope.hardware === 'consumer') {
306
+ const { default: backupPlugin, BACKUP_PLUGIN_DEPENDENCIES } = await import('@vibesdotdev/storage/backup/plugin');
307
+ if (BACKUP_PLUGIN_DEPENDENCIES.every((id) => runtime.hasPlugin(id))) {
308
+ await runtime.registerPlugin(backupPlugin);
309
+ }
310
+ }
311
+ // Storage CLI surface (vibes storage list + storage sync {pull,push,status,resolve}).
312
+ // The cli/command impls call process.exit + statically import node:fs-backed
313
+ // sync-state.consumer, so they live in @vibesdotdev/storage/cli.plugin (split
314
+ // out of storage/plugin to keep that consumer edge off cloud bundles). Mount
315
+ // CLI-scope-only here; the core storage plugin (registered unconditionally
316
+ // above) satisfies the `storage` dependency, and the composed @vibesdotdev/cli
317
+ // satisfies the `cli` (cli/command + cli/group) dependency.
318
+ if (runtime.scope.surface === 'cli') {
319
+ await registerOptional('@vibesdotdev/storage/cli.plugin', async () => (await import('@vibesdotdev/storage/cli.plugin')).default);
320
+ // The backup CLI depends on the backup base plugin registered above; without it, it is skipped as unmet.
321
+ await registerOptional('@vibesdotdev/storage/backup/cli/plugin', async () => (await import('@vibesdotdev/storage/backup/cli/plugin')).default);
322
+ // `vibes gc status` / `vibes gc run`. Everything else about
323
+ // retention is automatic, but a user staring at a full disk needs
324
+ // a way to look and a way to act now — not at 03:30 tomorrow.
325
+ await registerOptional('@vibesdotdev/storage/cli/gc/plugin', async () => (await import('@vibesdotdev/storage/cli/gc/plugin')).default);
326
+ }
327
+ },
328
+ async onActivate(runtime) {
329
+ const userConfig = runtime.hasContext('plugins.core') ? await runtime.context('plugins.core') : undefined;
330
+ const config = mergeConfig(userConfig, runtime.scope);
331
+ if (config.storage.enabled) {
332
+ for (const id of config.storage.adapters) {
333
+ if (lookupEntry(storageAdapterEntries, id))
334
+ continue;
335
+ if (runtime.query('storage/adapter').withId(id).enabled().descriptors({ requireImpl: true }).length === 0) {
336
+ throw unknownStorageAdapter(id);
337
+ }
338
+ }
339
+ }
340
+ if (config.filesystem.enabled) {
341
+ for (const id of config.filesystem.adapters) {
342
+ if (lookupEntry(filesystemAdapterEntries, id))
343
+ continue;
344
+ if (runtime.query('filesystem/adapter').withId(id).enabled().descriptors({ requireImpl: true }).length === 0) {
345
+ throw unknownFilesystemAdapter(id);
346
+ }
347
+ }
348
+ }
349
+ }
350
+ });
351
+ export const coreConsumerPluginsPlugin = createRuntimePlugin({
352
+ id: '@vibesdotdev/plugins-core.consumer',
353
+ name: 'Core Consumer Host',
354
+ dependencies: ['context'],
355
+ async onRegister(runtime) { await runtime.registerPlugin(consumerCore); }
356
+ });
357
+ export default coreConsumerPluginsPlugin;
358
+ //# sourceMappingURL=consumer.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer.plugin.js","sourceRoot":"","sources":["../../src/core/consumer.plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { corePluginsPlugin, default } from './plugin.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { corePluginsPlugin, default } from "./plugin.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { CapabilityError, type CaughtFailure, type ValueFreeFailure, type RuntimeRef } from '@vibesdotdev/kernel';
2
+ import { type OptionalMemberRegistrar, type OptionalMemberStage, type RegistrationAbsence } from '../schemas/optional-member.ts';
3
+ export type { OptionalMemberLoad, OptionalMemberRegistrar, OptionalMemberStage, MemberFailureDetails, UnreadableRead, RegistrationAbsence } from '../schemas/optional-member.ts';
4
+ export declare const PLUGIN_MEMBER_FAILED = "plugin-member-failed";
5
+ /** Preserve the caught failure whole; classification diagnostics contain no error text. */
6
+ export declare function memberFailure(family: string, member: string, stage: OptionalMemberStage, cause: CaughtFailure, unreadable?: ValueFreeFailure): CapabilityError;
7
+ /** A dependency refusal must name this plugin; kind absence must carry its exact kernel subject. */
8
+ export declare function classifyRegistrationFailure(pluginId: string, failure: CaughtFailure): RegistrationAbsence;
9
+ /** Register the real owner plugin, skipping only a confirmed absence of this subject. */
10
+ export declare function optionalMemberRegistrar(family: string, runtime: RuntimeRef): OptionalMemberRegistrar;
11
+ //# sourceMappingURL=optional-member.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional-member.d.ts","sourceRoot":"","sources":["../../src/core/optional-member.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAsB,KAAK,UAAU,EAC9E,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEqB,KAAK,uBAAuB,EACvD,KAAK,mBAAmB,EAA6B,KAAK,mBAAmB,EAC7E,MAAM,+BAA+B,CAAC;AAGvC,YAAY,EACX,kBAAkB,EAAE,uBAAuB,EAAE,mBAAmB,EAChE,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EACzD,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D,2FAA2F;AAC3F,wBAAgB,aAAa,CAC5B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAC1D,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,gBAAgB,GACjD,eAAe,CAYjB;AAED,oGAAoG;AACpG,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,mBAAmB,CAWzG;AASD,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,uBAAuB,CAoBpG"}
@@ -0,0 +1,68 @@
1
+ import { CapabilityError, isCapabilityError, valueFreeFailure, settle, settleNow } from '@vibesdotdev/kernel';
2
+ import { RuntimePluginSchema, RegistrationRefusalSchema } from "../schemas/optional-member.js";
3
+ import { classifyOptionalLoad, optionalPluginSkipLogger } from "./optional-plugin.js";
4
+ export const PLUGIN_MEMBER_FAILED = 'plugin-member-failed';
5
+ /** Preserve the caught failure whole; classification diagnostics contain no error text. */
6
+ export function memberFailure(family, member, stage, cause, unreadable) {
7
+ const details = { family, member, stage };
8
+ if (unreadable !== undefined) {
9
+ details.unreadable = { name: unreadable.name };
10
+ if (unreadable.code !== undefined)
11
+ details.unreadable.code = unreadable.code;
12
+ if (unreadable.reason !== undefined)
13
+ details.unreadable.reason = unreadable.reason;
14
+ }
15
+ return new CapabilityError(`Optional plugin '${member}' of ${family} failed at ${stage}.`, 'INTERNAL', {
16
+ reason: PLUGIN_MEMBER_FAILED, retryable: false, details,
17
+ recoveryHint: `Fix or remove '${member}'; installed plugin defects cannot be skipped.`,
18
+ cause
19
+ });
20
+ }
21
+ /** A dependency refusal must name this plugin; kind absence must carry its exact kernel subject. */
22
+ export function classifyRegistrationFailure(pluginId, failure) {
23
+ const classified = settleNow(() => {
24
+ if (!isCapabilityError(failure))
25
+ return { absent: false };
26
+ const parsed = RegistrationRefusalSchema.safeParse(failure);
27
+ if (!parsed.success)
28
+ return { absent: false };
29
+ if (parsed.data.code === 'UNAVAILABLE') {
30
+ return { absent: parsed.data.details.pluginId === pluginId && parsed.data.details.missing.length > 0 };
31
+ }
32
+ return { absent: CapabilityError.isAbsenceOf(failure, 'runtime/kind', parsed.data.details.id) };
33
+ });
34
+ return classified.ok ? classified.value : { absent: false, unreadable: valueFreeFailure(classified.cause) };
35
+ }
36
+ function admitExport(family, specifier, loaded) {
37
+ const read = settleNow(() => RuntimePluginSchema.safeParse(loaded));
38
+ if (!read.ok)
39
+ throw memberFailure(family, specifier, 'export', read.cause);
40
+ if (!read.value.success)
41
+ throw memberFailure(family, specifier, 'export', read.value.error);
42
+ return read.value.data;
43
+ }
44
+ /** Register the real owner plugin, skipping only a confirmed absence of this subject. */
45
+ export function optionalMemberRegistrar(family, runtime) {
46
+ const logSkip = optionalPluginSkipLogger(family, runtime);
47
+ return async (specifier, load) => {
48
+ const loaded = await settle(load);
49
+ if (!loaded.ok) {
50
+ const absence = classifyOptionalLoad(specifier, loaded.cause);
51
+ if (!absence.absent)
52
+ throw memberFailure(family, specifier, 'load', loaded.cause, absence.unreadable);
53
+ logSkip(specifier, loaded.cause);
54
+ return false;
55
+ }
56
+ const plugin = admitExport(family, specifier, loaded.value);
57
+ const registered = await settle(() => runtime.registerPlugin(plugin));
58
+ if (!registered.ok) {
59
+ const absence = classifyRegistrationFailure(plugin.id, registered.cause);
60
+ if (!absence.absent)
61
+ throw memberFailure(family, specifier, 'register', registered.cause, absence.unreadable);
62
+ logSkip(specifier, registered.cause);
63
+ return false;
64
+ }
65
+ return true;
66
+ };
67
+ }
68
+ //# sourceMappingURL=optional-member.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional-member.js","sourceRoot":"","sources":["../../src/core/optional-member.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * One rule for an optional family member that did not register.
3
+ *
4
+ * Each family umbrella registers optional peers that a given install may not
5
+ * have. The public global home installs `@vibesdotdev/plugins` without, for
6
+ * example, `@vibesdotdev/casework`, so a WARN for that absence printed on every
7
+ * command a new user ran. An ABSENT peer, or one whose family this scope does
8
+ * not compose, is expected and logs at debug. A peer that is present but fails
9
+ * to load is a real defect and stays a warning.
10
+ *
11
+ * The rule reads facts, not wording: a loader miss by its `code` and
12
+ * `specifier`, an unmet dependency by the plugin ids it names. Anything it
13
+ * cannot attribute stays a warning, so a real misconfiguration is never
14
+ * demoted to debug.
15
+ */
16
+ import { type CaughtFailure, type RuntimeRef } from '@vibesdotdev/kernel';
17
+ import { type RegistrationAbsence, type OptionalPluginFailureInput } from '../schemas/optional-member.ts';
18
+ /**
19
+ * True when the skip is an expected absence: the loader could not resolve the
20
+ * plugin's OWN package (a miss inside it is the peer's defect), or every
21
+ * dependency it lacks is one of the host-composed ids above. A missing
22
+ * `localdb` or `storage` is a composition defect, not an absence.
23
+ */
24
+ export declare function isAbsentOptionalPeer(pluginId: string, cause: unknown): boolean;
25
+ /** Loading can skip only the requested package itself, never a dependency refusal. */
26
+ export declare function classifyOptionalLoad(pluginId: string, cause: CaughtFailure): RegistrationAbsence;
27
+ /**
28
+ * The skip logger for one family umbrella (`plugins-core`, `plugins-comms`, …)
29
+ * on the Runtime it is registering into. Entries go to that Runtime's Logging,
30
+ * never an ambient default; an unprepared Runtime refuses (C083a).
31
+ */
32
+ export declare function optionalPluginSkipLogger(family: string, runtime: RuntimeRef): (pluginId: string, cause: OptionalPluginFailureInput) => void;
33
+ /**
34
+ * A toggle whose implementation left the public install (public-framework
35
+ * decisions 7 and 10, 2026-09-22). The key is still accepted so existing
36
+ * configs parse; turning it on registers nothing here, and says where the
37
+ * implementation lives now instead of doing nothing silently.
38
+ */
39
+ export declare function relocatedPluginNotice(family: string, runtime: RuntimeRef): (key: string, destination: string) => void;
40
+ //# sourceMappingURL=optional-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional-plugin.d.ts","sourceRoot":"","sources":["../../src/core/optional-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAA4D,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACpI,OAAO,EAAqD,KAAK,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAwB7J;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAE9E;AAuBD,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,mBAAmB,CAQhG;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,0BAA0B,KAAK,IAAI,CAS3I;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAQrH"}