@lapis-notes/api 0.1.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 (400) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE.md +4 -0
  3. package/README.md +43 -0
  4. package/dist/__tests__/data-adapter-conformance.js +205 -0
  5. package/dist/__tests__/lapis-runtime-manifest.js +32 -0
  6. package/dist/__tests__/svelte-internal-client.d.ts +3 -0
  7. package/dist/agent-result-views.d.ts +52 -0
  8. package/dist/agent-result-views.js +89 -0
  9. package/dist/agent-skills.d.ts +99 -0
  10. package/dist/agent-skills.js +182 -0
  11. package/dist/agent-tools.d.ts +92 -0
  12. package/dist/agent-tools.js +139 -0
  13. package/dist/app-database-host.d.ts +4 -0
  14. package/dist/app-database-host.js +4 -0
  15. package/dist/app-shell-plugin-persistence.d.ts +15 -0
  16. package/dist/app-shell-plugin-persistence.js +34 -0
  17. package/dist/app-url.d.ts +54 -0
  18. package/dist/app-url.js +269 -0
  19. package/dist/application-compatibility.d.ts +31 -0
  20. package/dist/application-compatibility.js +64 -0
  21. package/dist/application-state.svelte.d.ts +14 -0
  22. package/dist/application-state.svelte.js +30 -0
  23. package/dist/assets/lapis-logo.svg +471 -0
  24. package/dist/bases.d.ts +281 -0
  25. package/dist/bases.js +475 -0
  26. package/dist/cache.svelte.d.ts +569 -0
  27. package/dist/cache.svelte.js +1433 -0
  28. package/dist/command.svelte.d.ts +337 -0
  29. package/dist/command.svelte.js +571 -0
  30. package/dist/compat.d.ts +29 -0
  31. package/dist/compat.js +30 -0
  32. package/dist/components/configuration/configuration.css +199 -0
  33. package/dist/components/configuration/date-setting.svelte +71 -0
  34. package/dist/components/configuration/date-setting.svelte.d.ts +8 -0
  35. package/dist/components/configuration/list-setting.svelte +128 -0
  36. package/dist/components/configuration/list-setting.svelte.d.ts +13 -0
  37. package/dist/components/configuration/object-array-row-grip.svelte +78 -0
  38. package/dist/components/configuration/object-array-row-grip.svelte.d.ts +9 -0
  39. package/dist/components/configuration/object-array-row.svelte +163 -0
  40. package/dist/components/configuration/object-array-row.svelte.d.ts +19 -0
  41. package/dist/components/configuration/object-array-setting.svelte +196 -0
  42. package/dist/components/configuration/object-array-setting.svelte.d.ts +15 -0
  43. package/dist/components/configuration/object-array-table-dnd.d.ts +8 -0
  44. package/dist/components/configuration/object-array-table-dnd.js +10 -0
  45. package/dist/components/configuration/object-array-utils.d.ts +11 -0
  46. package/dist/components/configuration/object-array-utils.js +103 -0
  47. package/dist/components/configuration/object-grid-setting.svelte +79 -0
  48. package/dist/components/configuration/object-grid-setting.svelte.d.ts +10 -0
  49. package/dist/components/configuration/object-map-row.svelte +147 -0
  50. package/dist/components/configuration/object-map-row.svelte.d.ts +15 -0
  51. package/dist/components/configuration/object-map-setting.svelte +137 -0
  52. package/dist/components/configuration/object-map-setting.svelte.d.ts +14 -0
  53. package/dist/components/configuration/object-map-types.d.ts +5 -0
  54. package/dist/components/configuration/object-map-types.js +1 -0
  55. package/dist/components/configuration/options-combobox-setting.svelte +129 -0
  56. package/dist/components/configuration/options-combobox-setting.svelte.d.ts +12 -0
  57. package/dist/components/copy-button/button.svelte +93 -0
  58. package/dist/components/copy-button/button.svelte.d.ts +13 -0
  59. package/dist/components/copy-button/index.d.ts +2 -0
  60. package/dist/components/copy-button/index.js +2 -0
  61. package/dist/components/editor/editor.css +565 -0
  62. package/dist/components/editor/editor.d.ts +33 -0
  63. package/dist/components/editor/editor.js +132 -0
  64. package/dist/components/editor/editor.svelte +176 -0
  65. package/dist/components/editor/editor.svelte.d.ts +15 -0
  66. package/dist/components/editor/embedded-editor-surface.d.ts +12 -0
  67. package/dist/components/editor/embedded-editor-surface.js +22 -0
  68. package/dist/components/editor/embedded-editor-surface.svelte +115 -0
  69. package/dist/components/editor/embedded-editor-surface.svelte.d.ts +17 -0
  70. package/dist/components/editor/extensions/autocomplete/index.d.ts +2 -0
  71. package/dist/components/editor/extensions/autocomplete/index.js +2 -0
  72. package/dist/components/editor/extensions/autocomplete/lapis-code-mirror-autocomplete.d.ts +16 -0
  73. package/dist/components/editor/extensions/autocomplete/lapis-code-mirror-autocomplete.js +34 -0
  74. package/dist/components/editor/extensions/autocomplete/vault-completion-sources.d.ts +27 -0
  75. package/dist/components/editor/extensions/autocomplete/vault-completion-sources.js +55 -0
  76. package/dist/components/editor/extensions/class-highlighter/index.d.ts +1 -0
  77. package/dist/components/editor/extensions/class-highlighter/index.js +47 -0
  78. package/dist/components/editor/extensions/fold-gutter/index.d.ts +8 -0
  79. package/dist/components/editor/extensions/fold-gutter/index.js +40 -0
  80. package/dist/components/editor/extensions/gutter-line-style-sync/index.d.ts +2 -0
  81. package/dist/components/editor/extensions/gutter-line-style-sync/index.js +118 -0
  82. package/dist/components/editor/extensions/lint/index.d.ts +4 -0
  83. package/dist/components/editor/extensions/lint/index.js +4 -0
  84. package/dist/components/editor/extensions/lint/lapis-code-mirror-lint.d.ts +26 -0
  85. package/dist/components/editor/extensions/lint/lapis-code-mirror-lint.js +101 -0
  86. package/dist/components/editor/extensions/lint/lapis-lint-diagnostic-helpers.d.ts +8 -0
  87. package/dist/components/editor/extensions/lint/lapis-lint-diagnostic-helpers.js +7 -0
  88. package/dist/components/editor/extensions/lint/lapis-lint-diagnostic.d.ts +20 -0
  89. package/dist/components/editor/extensions/lint/lapis-lint-diagnostic.js +47 -0
  90. package/dist/components/editor/extensions/lint/lapis-lint-hover-tooltip.d.ts +9 -0
  91. package/dist/components/editor/extensions/lint/lapis-lint-hover-tooltip.js +373 -0
  92. package/dist/components/editor/extensions/lint/lapis-lint-inline-widget.d.ts +31 -0
  93. package/dist/components/editor/extensions/lint/lapis-lint-inline-widget.js +191 -0
  94. package/dist/components/editor/extensions/lint/lapis-lint-tooltip.svelte +176 -0
  95. package/dist/components/editor/extensions/lint/lapis-lint-tooltip.svelte.d.ts +15 -0
  96. package/dist/components/editor/extensions/lint/lint-tooltip-actions.d.ts +11 -0
  97. package/dist/components/editor/extensions/lint/lint-tooltip-actions.js +21 -0
  98. package/dist/components/editor/extensions/lint/mount-lint-tooltip.d.ts +16 -0
  99. package/dist/components/editor/extensions/lint/mount-lint-tooltip.js +60 -0
  100. package/dist/components/editor/extensions/search/dom.d.ts +2 -0
  101. package/dist/components/editor/extensions/search/dom.js +6 -0
  102. package/dist/components/editor/extensions/search/index.d.ts +35 -0
  103. package/dist/components/editor/extensions/search/index.js +44 -0
  104. package/dist/components/editor/extensions/search/search.svelte +335 -0
  105. package/dist/components/editor/extensions/search/search.svelte.d.ts +8 -0
  106. package/dist/components/editor/index.d.ts +9 -0
  107. package/dist/components/editor/index.js +9 -0
  108. package/dist/components/editor/language-service/dom.d.ts +1 -0
  109. package/dist/components/editor/language-service/dom.js +6 -0
  110. package/dist/components/editor/language-service/index.d.ts +28 -0
  111. package/dist/components/editor/language-service/index.js +342 -0
  112. package/dist/components/empty-view/empty-view.css +39 -0
  113. package/dist/components/empty-view/empty-view.svelte +26 -0
  114. package/dist/components/empty-view/empty-view.svelte.d.ts +9 -0
  115. package/dist/components/empty-view/index.d.ts +2 -0
  116. package/dist/components/empty-view/index.js +2 -0
  117. package/dist/components/icon/icon-list.css +74 -0
  118. package/dist/components/icon/icon-list.svelte +213 -0
  119. package/dist/components/icon/icon-list.svelte.d.ts +11 -0
  120. package/dist/components/icon/icon.svelte +15 -0
  121. package/dist/components/icon/icon.svelte.d.ts +7 -0
  122. package/dist/components/icon/index.d.ts +3 -0
  123. package/dist/components/icon/index.js +3 -0
  124. package/dist/components/menu/context-menu.svelte +89 -0
  125. package/dist/components/menu/context-menu.svelte.d.ts +11 -0
  126. package/dist/components/menu/drawer-menu.svelte +83 -0
  127. package/dist/components/menu/drawer-menu.svelte.d.ts +8 -0
  128. package/dist/components/menu/dropdown-menu.svelte +89 -0
  129. package/dist/components/menu/dropdown-menu.svelte.d.ts +11 -0
  130. package/dist/components/menu/index.d.ts +6 -0
  131. package/dist/components/menu/index.js +6 -0
  132. package/dist/components/menu/menu.css +139 -0
  133. package/dist/components/menu/menu.svelte +37 -0
  134. package/dist/components/menu/menu.svelte.d.ts +11 -0
  135. package/dist/components/menu/mobile-menu-query.svelte.d.ts +3 -0
  136. package/dist/components/menu/mobile-menu-query.svelte.js +21 -0
  137. package/dist/components/menu/popover-menu.svelte +90 -0
  138. package/dist/components/menu/popover-menu.svelte.d.ts +10 -0
  139. package/dist/components/select/index.d.ts +2 -0
  140. package/dist/components/select/index.js +2 -0
  141. package/dist/components/select/select.svelte +72 -0
  142. package/dist/components/select/select.svelte.d.ts +25 -0
  143. package/dist/configuration-option-source-providers.d.ts +17 -0
  144. package/dist/configuration-option-source-providers.js +59 -0
  145. package/dist/configuration-option-source-registry.d.ts +59 -0
  146. package/dist/configuration-option-source-registry.js +123 -0
  147. package/dist/configuration.svelte.d.ts +258 -0
  148. package/dist/configuration.svelte.js +887 -0
  149. package/dist/context-keys.svelte.d.ts +42 -0
  150. package/dist/context-keys.svelte.js +278 -0
  151. package/dist/context.svelte.d.ts +247 -0
  152. package/dist/context.svelte.js +540 -0
  153. package/dist/daily-document-provider.d.ts +38 -0
  154. package/dist/daily-document-provider.js +176 -0
  155. package/dist/design-core-button-types.d.ts +7 -0
  156. package/dist/design-core-button-types.js +1 -0
  157. package/dist/diagnostics.d.ts +93 -0
  158. package/dist/diagnostics.js +84 -0
  159. package/dist/dialog-portal.d.ts +3 -0
  160. package/dist/dialog-portal.js +3 -0
  161. package/dist/docs-api.d.ts +44 -0
  162. package/dist/docs-api.js +29 -0
  163. package/dist/editor-view-registry.d.ts +35 -0
  164. package/dist/editor-view-registry.js +112 -0
  165. package/dist/editor.svelte.d.ts +126 -0
  166. package/dist/editor.svelte.js +454 -0
  167. package/dist/embed-registry.d.ts +15 -0
  168. package/dist/embed-registry.js +16 -0
  169. package/dist/enhance.d.ts +111 -0
  170. package/dist/enhance.js +309 -0
  171. package/dist/events.d.ts +28 -0
  172. package/dist/events.js +49 -0
  173. package/dist/file-manager.d.ts +90 -0
  174. package/dist/file-manager.js +289 -0
  175. package/dist/file-tools/app-tools.d.ts +3 -0
  176. package/dist/file-tools/app-tools.js +242 -0
  177. package/dist/file-tools/index.d.ts +3 -0
  178. package/dist/file-tools/index.js +3 -0
  179. package/dist/file-tools/paths.d.ts +14 -0
  180. package/dist/file-tools/paths.js +33 -0
  181. package/dist/file-tools/vault-operations.d.ts +3 -0
  182. package/dist/file-tools/vault-operations.js +60 -0
  183. package/dist/generated/plugin-host-modules.schema.generated.d.ts +371 -0
  184. package/dist/generated/plugin-host-modules.schema.generated.js +374 -0
  185. package/dist/glob.d.ts +15 -0
  186. package/dist/glob.js +68 -0
  187. package/dist/history.svelte.d.ts +24 -0
  188. package/dist/history.svelte.js +74 -0
  189. package/dist/hooks/createVirtualizer.svelte.d.ts +7 -0
  190. package/dist/hooks/createVirtualizer.svelte.js +70 -0
  191. package/dist/hooks/index.d.ts +5 -0
  192. package/dist/hooks/index.js +5 -0
  193. package/dist/hooks/is-mobile.svelte.d.ts +5 -0
  194. package/dist/hooks/is-mobile.svelte.js +23 -0
  195. package/dist/hooks/mountComponent.svelte.d.ts +7 -0
  196. package/dist/hooks/mountComponent.svelte.js +16 -0
  197. package/dist/hooks/use-text-highlight.d.ts +17 -0
  198. package/dist/hooks/use-text-highlight.js +82 -0
  199. package/dist/hooks/useBoundingRect.svelte.d.ts +11 -0
  200. package/dist/hooks/useBoundingRect.svelte.js +46 -0
  201. package/dist/icons/index.d.ts +57 -0
  202. package/dist/icons/index.js +288 -0
  203. package/dist/index.d.ts +87 -0
  204. package/dist/index.js +87 -0
  205. package/dist/language-service/index.d.ts +9 -0
  206. package/dist/language-service/index.js +7 -0
  207. package/dist/language-service/manager.d.ts +47 -0
  208. package/dist/language-service/manager.js +404 -0
  209. package/dist/language-service/types.d.ts +92 -0
  210. package/dist/language-service/types.js +1 -0
  211. package/dist/language-service/virtual-document.d.ts +11 -0
  212. package/dist/language-service/virtual-document.js +45 -0
  213. package/dist/language-service/worker-protocol.d.ts +63 -0
  214. package/dist/language-service/worker-protocol.js +1 -0
  215. package/dist/language-service/worker-provider.d.ts +9 -0
  216. package/dist/language-service/worker-provider.js +38 -0
  217. package/dist/lapis-extension.d.ts +244 -0
  218. package/dist/lapis-extension.js +591 -0
  219. package/dist/links.d.ts +34 -0
  220. package/dist/links.js +191 -0
  221. package/dist/loaders.d.ts +9 -0
  222. package/dist/loaders.js +59 -0
  223. package/dist/localization-manager.svelte.d.ts +56 -0
  224. package/dist/localization-manager.svelte.js +157 -0
  225. package/dist/logging.d.ts +172 -0
  226. package/dist/logging.js +352 -0
  227. package/dist/markdown-extension-registry.d.ts +31 -0
  228. package/dist/markdown-extension-registry.js +31 -0
  229. package/dist/markdown-file-surface-registry.d.ts +25 -0
  230. package/dist/markdown-file-surface-registry.js +23 -0
  231. package/dist/markdown.d.ts +205 -0
  232. package/dist/markdown.js +147 -0
  233. package/dist/menu-utils.d.ts +1 -0
  234. package/dist/menu-utils.js +47 -0
  235. package/dist/menu.svelte.d.ts +121 -0
  236. package/dist/menu.svelte.js +295 -0
  237. package/dist/metadata-value.d.ts +10 -0
  238. package/dist/metadata-value.js +173 -0
  239. package/dist/metadata.svelte.d.ts +106 -0
  240. package/dist/metadata.svelte.js +608 -0
  241. package/dist/notifications.d.ts +209 -0
  242. package/dist/notifications.js +338 -0
  243. package/dist/open-file.d.ts +23 -0
  244. package/dist/open-file.js +102 -0
  245. package/dist/platform.d.ts +86 -0
  246. package/dist/platform.js +86 -0
  247. package/dist/plugin-asset-server.d.ts +60 -0
  248. package/dist/plugin-asset-server.js +222 -0
  249. package/dist/plugin-assets.d.ts +4 -0
  250. package/dist/plugin-assets.js +3 -0
  251. package/dist/plugin-capability-facade.d.ts +104 -0
  252. package/dist/plugin-capability-facade.js +61 -0
  253. package/dist/plugin-dependency-resolver.d.ts +36 -0
  254. package/dist/plugin-dependency-resolver.js +54 -0
  255. package/dist/plugin-dependency-scanner.d.ts +9 -0
  256. package/dist/plugin-dependency-scanner.js +274 -0
  257. package/dist/plugin-distribution/canonical-json.d.ts +1 -0
  258. package/dist/plugin-distribution/canonical-json.js +40 -0
  259. package/dist/plugin-distribution/compatibility.d.ts +5 -0
  260. package/dist/plugin-distribution/compatibility.js +38 -0
  261. package/dist/plugin-distribution/errors.d.ts +11 -0
  262. package/dist/plugin-distribution/errors.js +13 -0
  263. package/dist/plugin-distribution/hashes.d.ts +2 -0
  264. package/dist/plugin-distribution/hashes.js +17 -0
  265. package/dist/plugin-distribution/index.d.ts +18 -0
  266. package/dist/plugin-distribution/index.js +18 -0
  267. package/dist/plugin-distribution/installed-plugin-state.d.ts +20 -0
  268. package/dist/plugin-distribution/installed-plugin-state.js +73 -0
  269. package/dist/plugin-distribution/installer.d.ts +89 -0
  270. package/dist/plugin-distribution/installer.js +395 -0
  271. package/dist/plugin-distribution/manager.d.ts +128 -0
  272. package/dist/plugin-distribution/manager.js +358 -0
  273. package/dist/plugin-distribution/path-safety.d.ts +2 -0
  274. package/dist/plugin-distribution/path-safety.js +20 -0
  275. package/dist/plugin-distribution/plugin-bundle-verifier.d.ts +28 -0
  276. package/dist/plugin-distribution/plugin-bundle-verifier.js +96 -0
  277. package/dist/plugin-distribution/plugin-bundle-worker.d.ts +34 -0
  278. package/dist/plugin-distribution/plugin-bundle-worker.js +99 -0
  279. package/dist/plugin-distribution/plugin-bundle.d.ts +16 -0
  280. package/dist/plugin-distribution/plugin-bundle.js +244 -0
  281. package/dist/plugin-distribution/plugin-bundle.worker.d.ts +1 -0
  282. package/dist/plugin-distribution/plugin-bundle.worker.js +38 -0
  283. package/dist/plugin-distribution/registry-cache.d.ts +26 -0
  284. package/dist/plugin-distribution/registry-cache.js +85 -0
  285. package/dist/plugin-distribution/registry-client.d.ts +36 -0
  286. package/dist/plugin-distribution/registry-client.js +115 -0
  287. package/dist/plugin-distribution/reserved-ids.d.ts +4 -0
  288. package/dist/plugin-distribution/reserved-ids.js +10 -0
  289. package/dist/plugin-distribution/runtime-validation.d.ts +14 -0
  290. package/dist/plugin-distribution/runtime-validation.js +388 -0
  291. package/dist/plugin-distribution/schemas.d.ts +4895 -0
  292. package/dist/plugin-distribution/schemas.js +299 -0
  293. package/dist/plugin-distribution/signing.d.ts +5 -0
  294. package/dist/plugin-distribution/signing.js +38 -0
  295. package/dist/plugin-distribution/types.d.ts +217 -0
  296. package/dist/plugin-distribution/types.js +1 -0
  297. package/dist/plugin-install-progress.d.ts +15 -0
  298. package/dist/plugin-install-progress.js +86 -0
  299. package/dist/plugin-manager.d.ts +306 -0
  300. package/dist/plugin-manager.js +2848 -0
  301. package/dist/plugin-runtime-entry.d.ts +19 -0
  302. package/dist/plugin-runtime-entry.js +135 -0
  303. package/dist/plugin.d.ts +350 -0
  304. package/dist/plugin.js +754 -0
  305. package/dist/popover.d.ts +20 -0
  306. package/dist/popover.js +32 -0
  307. package/dist/promise-worker.d.ts +22 -0
  308. package/dist/promise-worker.js +65 -0
  309. package/dist/prompt-confirm.d.ts +9 -0
  310. package/dist/prompt-confirm.js +33 -0
  311. package/dist/search-document-provider.d.ts +45 -0
  312. package/dist/search-document-provider.js +54 -0
  313. package/dist/search-query/index.d.ts +78 -0
  314. package/dist/search-query/index.js +426 -0
  315. package/dist/search-query/parser.d.ts +3 -0
  316. package/dist/search-query/parser.js +16 -0
  317. package/dist/search-query/parser.terms.js +26 -0
  318. package/dist/search-query/search-query.grammar +128 -0
  319. package/dist/search.d.ts +19 -0
  320. package/dist/search.js +104 -0
  321. package/dist/setting-section-layout.d.ts +19 -0
  322. package/dist/setting-section-layout.js +194 -0
  323. package/dist/settings.svelte.d.ts +474 -0
  324. package/dist/settings.svelte.js +1421 -0
  325. package/dist/source-text-file-view.d.ts +25 -0
  326. package/dist/source-text-file-view.js +78 -0
  327. package/dist/status-bar.svelte.d.ts +29 -0
  328. package/dist/status-bar.svelte.js +72 -0
  329. package/dist/storage/app-database.d.ts +860 -0
  330. package/dist/storage/app-database.js +2372 -0
  331. package/dist/storage/blob-store.d.ts +12 -0
  332. package/dist/storage/blob-store.js +1 -0
  333. package/dist/storage/browser-app-database-coordination.d.ts +35 -0
  334. package/dist/storage/browser-app-database-coordination.js +207 -0
  335. package/dist/storage/browser-coordinated-app-database.d.ts +109 -0
  336. package/dist/storage/browser-coordinated-app-database.js +704 -0
  337. package/dist/storage/browser.d.ts +153 -0
  338. package/dist/storage/browser.js +794 -0
  339. package/dist/storage/desktop-native.d.ts +184 -0
  340. package/dist/storage/desktop-native.js +415 -0
  341. package/dist/storage/fs.d.ts +188 -0
  342. package/dist/storage/fs.js +307 -0
  343. package/dist/storage/index-projection.d.ts +236 -0
  344. package/dist/storage/index-projection.js +402 -0
  345. package/dist/storage/index.d.ts +17 -0
  346. package/dist/storage/index.js +17 -0
  347. package/dist/storage/keyval.d.ts +94 -0
  348. package/dist/storage/keyval.js +199 -0
  349. package/dist/storage/memory-vault-adapter.d.ts +44 -0
  350. package/dist/storage/memory-vault-adapter.js +351 -0
  351. package/dist/storage/native-vault-bootstrap-kv.d.ts +22 -0
  352. package/dist/storage/native-vault-bootstrap-kv.js +96 -0
  353. package/dist/storage/path.d.ts +22 -0
  354. package/dist/storage/path.js +110 -0
  355. package/dist/storage/search-embedding-provider.d.ts +75 -0
  356. package/dist/storage/search-embedding-provider.js +446 -0
  357. package/dist/storage/search-embedding-worker.d.ts +1 -0
  358. package/dist/storage/search-embedding-worker.js +63 -0
  359. package/dist/storage/search-query-evaluator.d.ts +14 -0
  360. package/dist/storage/search-query-evaluator.js +678 -0
  361. package/dist/storage/task-projection.d.ts +152 -0
  362. package/dist/storage/task-projection.js +154 -0
  363. package/dist/storage/turso-app-database.d.ts +150 -0
  364. package/dist/storage/turso-app-database.js +2671 -0
  365. package/dist/storage/vault-session.d.ts +37 -0
  366. package/dist/storage/vault-session.js +196 -0
  367. package/dist/storage/vault-state.d.ts +74 -0
  368. package/dist/storage/vault-state.js +181 -0
  369. package/dist/storage/vault.svelte.d.ts +257 -0
  370. package/dist/storage/vault.svelte.js +661 -0
  371. package/dist/suggest.d.ts +193 -0
  372. package/dist/suggest.js +391 -0
  373. package/dist/tasks.d.ts +7 -0
  374. package/dist/tasks.js +18 -0
  375. package/dist/telemetry.d.ts +116 -0
  376. package/dist/telemetry.js +103 -0
  377. package/dist/utils.d.ts +55 -0
  378. package/dist/utils.js +314 -0
  379. package/dist/vault-api.d.ts +5 -0
  380. package/dist/vault-api.js +3 -0
  381. package/dist/vault-maintenance-commands.d.ts +5 -0
  382. package/dist/vault-maintenance-commands.js +32 -0
  383. package/dist/view.svelte.d.ts +215 -0
  384. package/dist/view.svelte.js +381 -0
  385. package/dist/vite-env.d.ts +2 -0
  386. package/dist/workspace-host-internal.d.ts +7 -0
  387. package/dist/workspace-host-internal.js +7 -0
  388. package/dist/workspace-host.d.ts +10 -0
  389. package/dist/workspace-host.js +14 -0
  390. package/dist/workspace-layout-commands.d.ts +3 -0
  391. package/dist/workspace-layout-commands.js +72 -0
  392. package/dist/workspace-layout-normalizer.d.ts +92 -0
  393. package/dist/workspace-layout-normalizer.js +301 -0
  394. package/dist/workspace-layouts.d.ts +7 -0
  395. package/dist/workspace-layouts.js +23 -0
  396. package/dist/workspace-trust.d.ts +32 -0
  397. package/dist/workspace-trust.js +72 -0
  398. package/dist/workspace.svelte.d.ts +796 -0
  399. package/dist/workspace.svelte.js +4380 -0
  400. package/package.json +240 -0
@@ -0,0 +1,86 @@
1
+ export declare const Platform: {
2
+ /**
3
+ * The UI is in desktop mode.
4
+ *
5
+ * @public
6
+ */
7
+ isDesktop: boolean;
8
+ /**
9
+ * The UI is in mobile mode.
10
+ *
11
+ * @public
12
+ */
13
+ isMobile: boolean;
14
+ /**
15
+ * We're running the native desktop app.
16
+ *
17
+ * @public
18
+ */
19
+ isDesktopApp: boolean;
20
+ /**
21
+ * We're running the capacitor-js mobile app.
22
+ *
23
+ * @public
24
+ */
25
+ isMobileApp: boolean;
26
+ /**
27
+ * We're running the iOS app.
28
+ *
29
+ * @public
30
+ */
31
+ isIosApp: boolean;
32
+ /**
33
+ * We're running the Android app.
34
+ *
35
+ * @public
36
+ */
37
+ isAndroidApp: boolean;
38
+ /**
39
+ * We're in a mobile app that has very limited screen space.
40
+ *
41
+ * @public
42
+ */
43
+ isPhone: boolean;
44
+ /**
45
+ * We're in a mobile app that has sufficiently large screen space.
46
+ *
47
+ * @public
48
+ */
49
+ isTablet: boolean;
50
+ /**
51
+ * We're on a macOS device, or a device that pretends to be one (like iPhones
52
+ * and iPads). Typically used to detect whether to use command-based hotkeys
53
+ * vs ctrl-based hotkeys.
54
+ *
55
+ * @public
56
+ */
57
+ isMacOS: boolean;
58
+ /**
59
+ * We're on a Windows device.
60
+ *
61
+ * @public
62
+ */
63
+ isWin: boolean;
64
+ /**
65
+ * We're on a Linux device.
66
+ *
67
+ * @public
68
+ */
69
+ isLinux: boolean;
70
+ /**
71
+ * We're running in Safari. Typically used to provide workarounds for Safari
72
+ * bugs.
73
+ *
74
+ * @public
75
+ */
76
+ isSafari: boolean;
77
+ /**
78
+ * The path prefix for resolving local files on this platform. This returns:
79
+ *
80
+ * - `file:///` on mobile
81
+ * - `app://random-id/` on desktop (Replaces the old format of `app://local/`)
82
+ *
83
+ * @public
84
+ */
85
+ resourcePathPrefix: string;
86
+ };
@@ -0,0 +1,86 @@
1
+ export const Platform = {
2
+ /**
3
+ * The UI is in desktop mode.
4
+ *
5
+ * @public
6
+ */
7
+ isDesktop: true,
8
+ /**
9
+ * The UI is in mobile mode.
10
+ *
11
+ * @public
12
+ */
13
+ isMobile: false,
14
+ /**
15
+ * We're running the native desktop app.
16
+ *
17
+ * @public
18
+ */
19
+ isDesktopApp: true,
20
+ /**
21
+ * We're running the capacitor-js mobile app.
22
+ *
23
+ * @public
24
+ */
25
+ isMobileApp: false,
26
+ /**
27
+ * We're running the iOS app.
28
+ *
29
+ * @public
30
+ */
31
+ isIosApp: false,
32
+ /**
33
+ * We're running the Android app.
34
+ *
35
+ * @public
36
+ */
37
+ isAndroidApp: false,
38
+ /**
39
+ * We're in a mobile app that has very limited screen space.
40
+ *
41
+ * @public
42
+ */
43
+ isPhone: false,
44
+ /**
45
+ * We're in a mobile app that has sufficiently large screen space.
46
+ *
47
+ * @public
48
+ */
49
+ isTablet: false,
50
+ /**
51
+ * We're on a macOS device, or a device that pretends to be one (like iPhones
52
+ * and iPads). Typically used to detect whether to use command-based hotkeys
53
+ * vs ctrl-based hotkeys.
54
+ *
55
+ * @public
56
+ */
57
+ isMacOS: true,
58
+ /**
59
+ * We're on a Windows device.
60
+ *
61
+ * @public
62
+ */
63
+ isWin: false,
64
+ /**
65
+ * We're on a Linux device.
66
+ *
67
+ * @public
68
+ */
69
+ isLinux: false,
70
+ /**
71
+ * We're running in Safari. Typically used to provide workarounds for Safari
72
+ * bugs.
73
+ *
74
+ * @public
75
+ */
76
+ isSafari: false,
77
+ /**
78
+ * The path prefix for resolving local files on this platform. This returns:
79
+ *
80
+ * - `file:///` on mobile
81
+ * - `app://random-id/` on desktop (Replaces the old format of `app://local/`)
82
+ *
83
+ * @public
84
+ */
85
+ resourcePathPrefix: "/",
86
+ };
@@ -0,0 +1,60 @@
1
+ import type { InstalledPluginRecord } from "./plugin-distribution/types";
2
+ export declare const WEB_PLUGIN_ASSET_ROUTE_PREFIX = "/__lapis/plugins";
3
+ export declare const WEB_PLUGIN_ASSET_CACHE_NAME = "lapis-plugin-assets-v1";
4
+ /** Compatibility classifier for installed-plugin diagnostics; not a host. */
5
+ export declare const ELECTRON_PLUGIN_ASSET_SCHEME = "lapis-plugin";
6
+ export type PluginAssetServerErrorCode = "asset-server-unavailable" | "invalid-url" | "invalid-path" | "unsupported-asset-type" | "asset-not-installed" | "asset-not-found" | "asset-size-mismatch" | "asset-hash-mismatch" | "asset-version-mismatch";
7
+ export declare class PluginAssetServerError extends Error {
8
+ readonly code: PluginAssetServerErrorCode;
9
+ readonly details?: Record<string, unknown>;
10
+ readonly cause?: unknown;
11
+ constructor(code: PluginAssetServerErrorCode, message: string, options?: {
12
+ details?: Record<string, unknown>;
13
+ cause?: unknown;
14
+ });
15
+ }
16
+ export declare const isPluginAssetServerError: (error: unknown) => error is PluginAssetServerError;
17
+ export interface PluginAssetUrlParts {
18
+ vaultId: string;
19
+ pluginId: string;
20
+ version: string;
21
+ sha256: string;
22
+ path: string;
23
+ }
24
+ export interface PluginAssetUrlRequest {
25
+ pluginId: string;
26
+ pluginPath: string;
27
+ relativePath: string;
28
+ version: string;
29
+ }
30
+ export interface PluginAssetServer {
31
+ getPluginAssetUrl(request: PluginAssetUrlRequest): Promise<string> | string;
32
+ }
33
+ export interface PluginAssetDataAdapter {
34
+ readBinary(path: string): Promise<ArrayBuffer>;
35
+ }
36
+ export interface InstalledPluginAssetReadOptions {
37
+ adapter: PluginAssetDataAdapter;
38
+ installedPlugin: InstalledPluginRecord;
39
+ relativePath: string;
40
+ expectedSha256?: string;
41
+ pluginsPath?: string;
42
+ verifyHash?: boolean;
43
+ }
44
+ export interface InstalledPluginAsset {
45
+ bytes: Uint8Array;
46
+ contentType: string;
47
+ path: string;
48
+ sha256: string;
49
+ size: number;
50
+ }
51
+ export declare function createWebPluginAssetUrl(parts: PluginAssetUrlParts): string;
52
+ export declare function parseWebPluginAssetUrl(value: string, base?: string): PluginAssetUrlParts;
53
+ export declare function getInstalledPluginAssetVersion(record: InstalledPluginRecord): string;
54
+ export declare function getInstalledPluginAssetHash(record: InstalledPluginRecord, relativePath: string): string;
55
+ export declare function getInstalledPluginAssetFingerprint(record: InstalledPluginRecord): string;
56
+ export declare function isSupportedPluginAssetPath(path: string): boolean;
57
+ export declare function assertSupportedPluginAssetPath(path: string): void;
58
+ export declare function getPluginAssetContentType(path: string): string;
59
+ export declare function readInstalledPluginAsset({ adapter, installedPlugin, relativePath, expectedSha256, pluginsPath, verifyHash, }: InstalledPluginAssetReadOptions): Promise<InstalledPluginAsset>;
60
+ export declare function normalizePluginAssetRelativePath(path: string): string;
@@ -0,0 +1,222 @@
1
+ import { joinPath } from "./storage/path";
2
+ import { assertSafePluginRelativePath } from "./plugin-distribution/path-safety";
3
+ import { sha256Hex } from "./plugin-distribution/hashes";
4
+ export const WEB_PLUGIN_ASSET_ROUTE_PREFIX = "/__lapis/plugins";
5
+ export const WEB_PLUGIN_ASSET_CACHE_NAME = "lapis-plugin-assets-v1";
6
+ /** Compatibility classifier for installed-plugin diagnostics; not a host. */
7
+ export const ELECTRON_PLUGIN_ASSET_SCHEME = "lapis-plugin";
8
+ export class PluginAssetServerError extends Error {
9
+ code;
10
+ details;
11
+ cause;
12
+ constructor(code, message, options = {}) {
13
+ super(message);
14
+ this.name = "PluginAssetServerError";
15
+ this.code = code;
16
+ this.details = options.details;
17
+ this.cause = options.cause;
18
+ }
19
+ }
20
+ export const isPluginAssetServerError = (error) => error instanceof PluginAssetServerError;
21
+ export function createWebPluginAssetUrl(parts) {
22
+ const path = normalizePluginAssetRelativePath(parts.path);
23
+ return [
24
+ WEB_PLUGIN_ASSET_ROUTE_PREFIX,
25
+ encodePathSegment(parts.vaultId),
26
+ encodePathSegment(parts.pluginId),
27
+ encodePathSegment(parts.version),
28
+ encodePathSegment(normalizePluginAssetSha256(parts.sha256)),
29
+ encodePluginAssetPath(path),
30
+ ].join("/");
31
+ }
32
+ export function parseWebPluginAssetUrl(value, base = "http://lapis.local") {
33
+ const url = new URL(value, base);
34
+ const prefixParts = WEB_PLUGIN_ASSET_ROUTE_PREFIX.split("/").filter(Boolean);
35
+ const parts = url.pathname.split("/").filter(Boolean);
36
+ if (parts.length < prefixParts.length + 5 ||
37
+ !prefixParts.every((part, index) => parts[index] === part)) {
38
+ throw new PluginAssetServerError("invalid-url", `Invalid web plugin asset URL: ${value}`, { details: { url: value } });
39
+ }
40
+ const [vaultId, pluginId, version, sha256, ...assetPathParts] = parts.slice(prefixParts.length);
41
+ return normalizePluginAssetUrlParts({
42
+ vaultId: decodePathSegment(vaultId),
43
+ pluginId: decodePathSegment(pluginId),
44
+ version: decodePathSegment(version),
45
+ sha256: decodePathSegment(sha256),
46
+ path: decodePluginAssetPath(assetPathParts),
47
+ });
48
+ }
49
+ export function getInstalledPluginAssetVersion(record) {
50
+ return record.installedVersion;
51
+ }
52
+ export function getInstalledPluginAssetHash(record, relativePath) {
53
+ const path = normalizePluginAssetRelativePath(relativePath);
54
+ const metadata = getInstalledPluginAssetMetadata(record, path);
55
+ return normalizePluginAssetSha256(metadata.sha256);
56
+ }
57
+ export function getInstalledPluginAssetFingerprint(record) {
58
+ return record.files
59
+ .filter((file) => isSupportedPluginAssetPath(file.path))
60
+ .map((file) => ({
61
+ path: normalizePluginAssetRelativePath(file.path),
62
+ sha256: normalizePluginAssetSha256(file.sha256),
63
+ size: file.size,
64
+ }))
65
+ .sort((left, right) => left.path.localeCompare(right.path))
66
+ .map((file) => `${file.path}:${file.size}:${file.sha256}`)
67
+ .join("|");
68
+ }
69
+ export function isSupportedPluginAssetPath(path) {
70
+ return /\.(?:mjs|js|cjs|css|json|wasm|svg|png|jpg|jpeg|gif)$/iu.test(path);
71
+ }
72
+ export function assertSupportedPluginAssetPath(path) {
73
+ if (isSupportedPluginAssetPath(path)) {
74
+ return;
75
+ }
76
+ throw new PluginAssetServerError("unsupported-asset-type", `Plugin asset ${path} is not a supported module asset type`, { details: { path } });
77
+ }
78
+ export function getPluginAssetContentType(path) {
79
+ const lowerPath = path.toLowerCase();
80
+ if (/\.(?:mjs|js|cjs)$/u.test(lowerPath)) {
81
+ return "text/javascript; charset=utf-8";
82
+ }
83
+ if (lowerPath.endsWith(".css")) {
84
+ return "text/css; charset=utf-8";
85
+ }
86
+ if (lowerPath.endsWith(".json")) {
87
+ return "application/json; charset=utf-8";
88
+ }
89
+ if (lowerPath.endsWith(".wasm")) {
90
+ return "application/wasm";
91
+ }
92
+ if (lowerPath.endsWith(".svg")) {
93
+ return "image/svg+xml";
94
+ }
95
+ if (lowerPath.endsWith(".png")) {
96
+ return "image/png";
97
+ }
98
+ if (lowerPath.endsWith(".jpg") || lowerPath.endsWith(".jpeg")) {
99
+ return "image/jpeg";
100
+ }
101
+ if (lowerPath.endsWith(".gif")) {
102
+ return "image/gif";
103
+ }
104
+ return "application/octet-stream";
105
+ }
106
+ export async function readInstalledPluginAsset({ adapter, installedPlugin, relativePath, expectedSha256, pluginsPath = ".obsidian/plugins", verifyHash = true, }) {
107
+ const path = normalizePluginAssetRelativePath(relativePath);
108
+ assertSupportedPluginAssetPath(path);
109
+ const metadata = getInstalledPluginAssetMetadata(installedPlugin, path);
110
+ const metadataSha256 = normalizePluginAssetSha256(metadata.sha256);
111
+ if (expectedSha256 &&
112
+ normalizePluginAssetSha256(expectedSha256) !== metadataSha256) {
113
+ throw new PluginAssetServerError("asset-hash-mismatch", `Plugin asset URL hash for ${path} does not match installed metadata`, {
114
+ details: {
115
+ pluginId: installedPlugin.pluginId,
116
+ path,
117
+ expectedSha256: metadataSha256,
118
+ actualSha256: normalizePluginAssetSha256(expectedSha256),
119
+ },
120
+ });
121
+ }
122
+ const assetPath = joinPath(pluginsPath, installedPlugin.pluginId, path);
123
+ let bytes;
124
+ try {
125
+ bytes = new Uint8Array(await adapter.readBinary(assetPath));
126
+ }
127
+ catch (error) {
128
+ throw new PluginAssetServerError("asset-not-found", `Installed plugin asset ${assetPath} could not be read`, {
129
+ cause: error,
130
+ details: {
131
+ pluginId: installedPlugin.pluginId,
132
+ path,
133
+ assetPath,
134
+ },
135
+ });
136
+ }
137
+ if (bytes.byteLength !== metadata.size) {
138
+ throw new PluginAssetServerError("asset-size-mismatch", `Installed plugin asset ${path} size mismatch: expected ${metadata.size}, got ${bytes.byteLength}`, {
139
+ details: {
140
+ pluginId: installedPlugin.pluginId,
141
+ path,
142
+ expectedSize: metadata.size,
143
+ actualSize: bytes.byteLength,
144
+ },
145
+ });
146
+ }
147
+ if (verifyHash) {
148
+ const actualSha256 = await sha256Hex(bytes);
149
+ if (actualSha256.toLowerCase() !== metadataSha256) {
150
+ throw new PluginAssetServerError("asset-hash-mismatch", `Installed plugin asset ${path} SHA-256 mismatch`, {
151
+ details: {
152
+ pluginId: installedPlugin.pluginId,
153
+ path,
154
+ expectedSha256: metadataSha256,
155
+ actualSha256,
156
+ },
157
+ });
158
+ }
159
+ }
160
+ return {
161
+ bytes,
162
+ contentType: getPluginAssetContentType(path),
163
+ path,
164
+ sha256: metadataSha256,
165
+ size: metadata.size,
166
+ };
167
+ }
168
+ export function normalizePluginAssetRelativePath(path) {
169
+ try {
170
+ assertSafePluginRelativePath(path);
171
+ }
172
+ catch (error) {
173
+ throw new PluginAssetServerError("invalid-path", `Plugin asset path is not safe: ${path}`, { cause: error, details: { path } });
174
+ }
175
+ return path;
176
+ }
177
+ function normalizePluginAssetUrlParts(parts) {
178
+ if (!parts.vaultId || !parts.pluginId || !parts.version || !parts.sha256) {
179
+ throw new PluginAssetServerError("invalid-url", "Plugin asset URL is incomplete", {
180
+ details: { ...parts },
181
+ });
182
+ }
183
+ return {
184
+ ...parts,
185
+ sha256: normalizePluginAssetSha256(parts.sha256),
186
+ path: normalizePluginAssetRelativePath(parts.path),
187
+ };
188
+ }
189
+ function getInstalledPluginAssetMetadata(installedPlugin, path) {
190
+ const metadata = installedPlugin.files.find((file) => file.path === path);
191
+ if (!metadata) {
192
+ throw new PluginAssetServerError("asset-not-installed", `Plugin ${installedPlugin.pluginId} does not declare installed asset ${path}`, {
193
+ details: {
194
+ pluginId: installedPlugin.pluginId,
195
+ path,
196
+ },
197
+ });
198
+ }
199
+ return metadata;
200
+ }
201
+ function normalizePluginAssetSha256(value) {
202
+ const normalized = value.toLowerCase();
203
+ if (/^[a-f0-9]{64}$/u.test(normalized)) {
204
+ return normalized;
205
+ }
206
+ throw new PluginAssetServerError("invalid-url", `Plugin asset SHA-256 hash is invalid: ${value}`, { details: { sha256: value } });
207
+ }
208
+ function encodePluginAssetPath(path) {
209
+ return path.split("/").map(encodePathSegment).join("/");
210
+ }
211
+ function decodePluginAssetPath(parts) {
212
+ if (!parts.length) {
213
+ throw new PluginAssetServerError("invalid-url", "Plugin asset URL is missing an asset path");
214
+ }
215
+ return parts.map(decodePathSegment).join("/");
216
+ }
217
+ function encodePathSegment(value) {
218
+ return encodeURIComponent(value);
219
+ }
220
+ function decodePathSegment(value) {
221
+ return decodeURIComponent(value);
222
+ }
@@ -0,0 +1,4 @@
1
+ /** Narrow public host boundary for verified desktop and web plugin assets. */
2
+ export * from "./plugin-asset-server";
3
+ export { sha256Hex, verifySha256 } from "./plugin-distribution/hashes";
4
+ export type { InstalledPluginRecord } from "./plugin-distribution/types";
@@ -0,0 +1,3 @@
1
+ /** Narrow public host boundary for verified desktop and web plugin assets. */
2
+ export * from "./plugin-asset-server";
3
+ export { sha256Hex, verifySha256 } from "./plugin-distribution/hashes";
@@ -0,0 +1,104 @@
1
+ export type HostedPluginCapability = "vault:read" | "vault:write" | "plugin:data" | "commands" | "notices" | "settings" | "metadata:query" | "events" | "logging";
2
+ export declare const HOSTED_PLUGIN_CAPABILITIES: readonly HostedPluginCapability[];
3
+ export type HostedPluginLogLevel = "trace" | "debug" | "info" | "warn" | "error";
4
+ export interface HostedPluginCapabilityRequest<TPayload extends Record<string, unknown> = Record<string, unknown>> {
5
+ pluginId: string;
6
+ capability: HostedPluginCapability;
7
+ action: string;
8
+ payload?: TPayload;
9
+ }
10
+ export interface HostedPluginCapabilityBroker {
11
+ invoke<T = unknown>(request: HostedPluginCapabilityRequest): Promise<T>;
12
+ }
13
+ export interface HostedPluginVaultStat {
14
+ type: "file" | "folder";
15
+ size: number;
16
+ ctime: number;
17
+ mtime: number;
18
+ }
19
+ export interface HostedPluginVaultListing {
20
+ files: string[];
21
+ folders: string[];
22
+ }
23
+ export interface HostedPluginCommandDescriptor {
24
+ id: string;
25
+ name: string;
26
+ icon?: string;
27
+ hotkeys?: Array<{
28
+ modifiers: string[];
29
+ key: string;
30
+ }>;
31
+ }
32
+ export interface HostedPluginSettingsSurface {
33
+ id: string;
34
+ title: string;
35
+ sections?: Array<Record<string, unknown>>;
36
+ }
37
+ export interface HostedPluginMetadataQuery {
38
+ path?: string;
39
+ tag?: string;
40
+ limit?: number;
41
+ }
42
+ export interface HostedPluginMetadataResult {
43
+ path: string;
44
+ metadata: Record<string, unknown>;
45
+ }
46
+ export interface HostedPluginEventSubscription {
47
+ subscriptionId: string;
48
+ }
49
+ export interface HostedPluginCapabilityFacade {
50
+ readonly pluginId: string;
51
+ readonly capabilities: readonly HostedPluginCapability[];
52
+ readonly vault: {
53
+ exists(path: string): Promise<boolean>;
54
+ stat(path: string): Promise<HostedPluginVaultStat | null>;
55
+ list(path?: string): Promise<HostedPluginVaultListing>;
56
+ readText(path: string): Promise<string>;
57
+ readBinary(path: string): Promise<ArrayBuffer>;
58
+ writeText(path: string, data: string): Promise<void>;
59
+ writeBinary(path: string, data: ArrayBuffer): Promise<void>;
60
+ mkdir(path: string, options?: {
61
+ recursive?: boolean;
62
+ }): Promise<void>;
63
+ remove(path: string): Promise<void>;
64
+ rename(path: string, newPath: string): Promise<void>;
65
+ };
66
+ readonly pluginData: {
67
+ load<T = unknown>(): Promise<T | null>;
68
+ save(data: unknown): Promise<void>;
69
+ };
70
+ readonly commands: {
71
+ register(command: HostedPluginCommandDescriptor): Promise<void>;
72
+ unregister(commandId: string): Promise<void>;
73
+ };
74
+ readonly notices: {
75
+ show(message: string, options?: {
76
+ timeoutMs?: number;
77
+ }): Promise<void>;
78
+ };
79
+ readonly settings: {
80
+ read<T = unknown>(key?: string): Promise<T | null>;
81
+ registerSurface(surface: HostedPluginSettingsSurface): Promise<void>;
82
+ };
83
+ readonly metadata: {
84
+ query(query: HostedPluginMetadataQuery): Promise<HostedPluginMetadataResult[]>;
85
+ };
86
+ readonly events: {
87
+ subscribe(event: string, options?: Record<string, unknown>): Promise<HostedPluginEventSubscription>;
88
+ unsubscribe(subscriptionId: string): Promise<void>;
89
+ };
90
+ readonly logging: {
91
+ log(level: HostedPluginLogLevel, message: string, data?: unknown): Promise<void>;
92
+ trace(message: string, data?: unknown): Promise<void>;
93
+ debug(message: string, data?: unknown): Promise<void>;
94
+ info(message: string, data?: unknown): Promise<void>;
95
+ warn(message: string, data?: unknown): Promise<void>;
96
+ error(message: string, data?: unknown): Promise<void>;
97
+ };
98
+ }
99
+ export interface CreateHostedPluginCapabilityFacadeOptions {
100
+ pluginId: string;
101
+ broker: HostedPluginCapabilityBroker;
102
+ capabilities?: readonly HostedPluginCapability[];
103
+ }
104
+ export declare function createHostedPluginCapabilityFacade({ pluginId, broker, capabilities, }: CreateHostedPluginCapabilityFacadeOptions): HostedPluginCapabilityFacade;
@@ -0,0 +1,61 @@
1
+ export const HOSTED_PLUGIN_CAPABILITIES = [
2
+ "vault:read",
3
+ "vault:write",
4
+ "plugin:data",
5
+ "commands",
6
+ "notices",
7
+ "settings",
8
+ "metadata:query",
9
+ "events",
10
+ "logging",
11
+ ];
12
+ export function createHostedPluginCapabilityFacade({ pluginId, broker, capabilities = HOSTED_PLUGIN_CAPABILITIES, }) {
13
+ const invoke = (capability, action, payload = {}) => broker.invoke({ pluginId, capability, action, payload });
14
+ const log = (level, message, data) => invoke("logging", "log", { level, message, data });
15
+ return {
16
+ pluginId,
17
+ capabilities,
18
+ vault: {
19
+ exists: (path) => invoke("vault:read", "exists", { path }),
20
+ stat: (path) => invoke("vault:read", "stat", { path }),
21
+ list: (path = "/") => invoke("vault:read", "list", { path }),
22
+ readText: (path) => invoke("vault:read", "read-text", { path }),
23
+ readBinary: (path) => invoke("vault:read", "read-binary", { path }),
24
+ writeText: (path, data) => invoke("vault:write", "write-text", { path, data }),
25
+ writeBinary: (path, data) => invoke("vault:write", "write-binary", { path, data }),
26
+ mkdir: (path, options = {}) => invoke("vault:write", "mkdir", { path, ...options }),
27
+ remove: (path) => invoke("vault:write", "remove", { path }),
28
+ rename: (path, newPath) => invoke("vault:write", "rename", { path, newPath }),
29
+ },
30
+ pluginData: {
31
+ load: () => invoke("plugin:data", "load"),
32
+ save: (data) => invoke("plugin:data", "save", { data }),
33
+ },
34
+ commands: {
35
+ register: (command) => invoke("commands", "register", { command }),
36
+ unregister: (commandId) => invoke("commands", "unregister", { commandId }),
37
+ },
38
+ notices: {
39
+ show: (message, options = {}) => invoke("notices", "show", { message, ...options }),
40
+ },
41
+ settings: {
42
+ read: (key) => invoke("settings", "read", { key }),
43
+ registerSurface: (surface) => invoke("settings", "register-surface", { surface }),
44
+ },
45
+ metadata: {
46
+ query: (query) => invoke("metadata:query", "query", { query }),
47
+ },
48
+ events: {
49
+ subscribe: (event, options = {}) => invoke("events", "subscribe", { event, options }),
50
+ unsubscribe: (subscriptionId) => invoke("events", "unsubscribe", { subscriptionId }),
51
+ },
52
+ logging: {
53
+ log,
54
+ trace: (message, data) => log("trace", message, data),
55
+ debug: (message, data) => log("debug", message, data),
56
+ info: (message, data) => log("info", message, data),
57
+ warn: (message, data) => log("warn", message, data),
58
+ error: (message, data) => log("error", message, data),
59
+ },
60
+ };
61
+ }
@@ -0,0 +1,36 @@
1
+ import type { PluginManifest } from "./plugin";
2
+ export interface PluginDependencyContext {
3
+ pluginId: string;
4
+ pluginPath: string;
5
+ manifest: PluginManifest;
6
+ host: "workspace" | "electron-renderer" | "electron-sidecar";
7
+ format: "commonjs" | "esm" | "node-esm";
8
+ }
9
+ export interface PluginSharedDependencyInfo {
10
+ specifier: string;
11
+ version?: string;
12
+ platforms: string[];
13
+ public: boolean;
14
+ deprecated?: boolean;
15
+ replacement?: string;
16
+ reason?: string;
17
+ }
18
+ export interface PluginDependencyResolver {
19
+ list(): PluginSharedDependencyInfo[];
20
+ prepare(specifiers: string[], context: PluginDependencyContext): Promise<void>;
21
+ require(specifier: string, context: PluginDependencyContext): unknown;
22
+ canResolve(specifier: string, context: PluginDependencyContext): boolean;
23
+ }
24
+ export type PluginDependencyResolverFactory = (dependencies: Record<string, any>) => PluginDependencyResolver;
25
+ export declare class LegacyObjectDependencyResolver implements PluginDependencyResolver {
26
+ private readonly dependencies;
27
+ constructor(dependencies: Record<string, any>);
28
+ list(): PluginSharedDependencyInfo[];
29
+ prepare(): Promise<void>;
30
+ require(specifier: string, context: PluginDependencyContext): unknown;
31
+ canResolve(specifier: string, _context?: PluginDependencyContext): boolean;
32
+ private resolve;
33
+ private normalizeAllowedScopedSubpath;
34
+ private isAllowedScopedDependency;
35
+ }
36
+ export declare function isPluginDependencyResolver(value: unknown): value is PluginDependencyResolver;