arcane-os 0.1.0-dev.5

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 (248) hide show
  1. package/CHANGELOG.md +154 -0
  2. package/COMMERCIAL-LICENSE.md +13 -0
  3. package/LICENSE +661 -0
  4. package/NOTICE +70 -0
  5. package/README.md +448 -0
  6. package/bin/arcane-test.mjs +741 -0
  7. package/bin/arcane.mjs +5 -0
  8. package/docs/architecture.md +234 -0
  9. package/docs/compatibility.md +36 -0
  10. package/docs/event-manager.md +166 -0
  11. package/docs/platform-targets.md +108 -0
  12. package/docs/publishing.md +203 -0
  13. package/docs/reference/README.md +117 -0
  14. package/docs/reference/arcane-ollama.md +288 -0
  15. package/docs/reference/availability-and-normalization.md +123 -0
  16. package/docs/reference/behavioral-testing.md +86 -0
  17. package/docs/reference/cli.md +569 -0
  18. package/docs/reference/core/README.md +62 -0
  19. package/docs/reference/core/arcane-ai-contracts.md +873 -0
  20. package/docs/reference/core/arcane-api.md +601 -0
  21. package/docs/reference/core/arcane-entities.md +65 -0
  22. package/docs/reference/core/arcane-events.md +134 -0
  23. package/docs/reference/core/ollama-module.md +181 -0
  24. package/docs/reference/core/reference/arcane-api/ai-and-ollama.md +1909 -0
  25. package/docs/reference/core/reference/arcane-api/applications-terminal-capabilities.md +1057 -0
  26. package/docs/reference/core/reference/arcane-api/core-and-events.md +320 -0
  27. package/docs/reference/core/reference/arcane-api/filesystem-storage-preferences-appearance.md +610 -0
  28. package/docs/reference/core/reference/arcane-api/namespaces.md +1157 -0
  29. package/docs/reference/core/reference/arcane-api/platform-installation-users-system.md +1423 -0
  30. package/docs/reference/core/reference/arcane-api/session-provisioning-diagnostics-development.md +315 -0
  31. package/docs/reference/event-manager.md +957 -0
  32. package/docs/reference/inventory/package-api.json +2632 -0
  33. package/docs/reference/inventory/runtime-components.json +934 -0
  34. package/docs/reference/inventory/runtime-entities.json +26 -0
  35. package/docs/reference/inventory/runtime-modules.json +1249 -0
  36. package/docs/reference/protocols.md +242 -0
  37. package/docs/reference/runtime-components.md +1098 -0
  38. package/docs/reference/runtime-entities.md +303 -0
  39. package/docs/reference/runtime-modules.md +2010 -0
  40. package/docs/reference/sdk-api.md +4901 -0
  41. package/docs/roadmap.md +79 -0
  42. package/docs/work-amplification.md +124 -0
  43. package/node_modules/event-pubsub/CHANGELOG.md +55 -0
  44. package/node_modules/event-pubsub/MIGRATION.md +70 -0
  45. package/node_modules/event-pubsub/README.md +363 -0
  46. package/node_modules/event-pubsub/SECURITY.md +37 -0
  47. package/node_modules/event-pubsub/index.js +141 -0
  48. package/node_modules/event-pubsub/licence +21 -0
  49. package/node_modules/event-pubsub/package.json +59 -0
  50. package/node_modules/strong-type/README.md +408 -0
  51. package/node_modules/strong-type/assets/strong-type-header.png +0 -0
  52. package/node_modules/strong-type/index.js +1151 -0
  53. package/node_modules/strong-type/licence +21 -0
  54. package/node_modules/strong-type/node.js +125 -0
  55. package/node_modules/strong-type/package.json +61 -0
  56. package/package.json +95 -0
  57. package/runtime/ARCANE_RUNTIME_RELEASE.json +791 -0
  58. package/runtime/arcane/components/app-bar.html +468 -0
  59. package/runtime/arcane/components/assistant-panel.html +715 -0
  60. package/runtime/arcane/components/calculator.html +8 -0
  61. package/runtime/arcane/components/chart.html +655 -0
  62. package/runtime/arcane/components/chat.html +1225 -0
  63. package/runtime/arcane/components/conversation-view.html +13 -0
  64. package/runtime/arcane/components/dashboard-config.html +341 -0
  65. package/runtime/arcane/components/data-maintenance.html +112 -0
  66. package/runtime/arcane/components/data-view.html +92 -0
  67. package/runtime/arcane/components/directory-picker.html +197 -0
  68. package/runtime/arcane/components/document-inspector.html +252 -0
  69. package/runtime/arcane/components/file-drop.html +264 -0
  70. package/runtime/arcane/components/file-inspector.html +293 -0
  71. package/runtime/arcane/components/file-manager.html +1715 -0
  72. package/runtime/arcane/components/header.html +142 -0
  73. package/runtime/arcane/components/integration-settings.html +14 -0
  74. package/runtime/arcane/components/local-ai-status.html +360 -0
  75. package/runtime/arcane/components/markdown-document.html +1048 -0
  76. package/runtime/arcane/components/markdown-editor.html +360 -0
  77. package/runtime/arcane/components/media-embed.html +8 -0
  78. package/runtime/arcane/components/modal.html +402 -0
  79. package/runtime/arcane/components/output-panel.html +259 -0
  80. package/runtime/arcane/components/preferences-form.html +135 -0
  81. package/runtime/arcane/components/record-timeline.html +105 -0
  82. package/runtime/arcane/components/relationship-board.html +116 -0
  83. package/runtime/arcane/components/screen-capture.html +8 -0
  84. package/runtime/arcane/components/source-code-viewer.html +441 -0
  85. package/runtime/arcane/components/source-explanation.html +124 -0
  86. package/runtime/arcane/components/speech.html +365 -0
  87. package/runtime/arcane/components/summary-strip.html +177 -0
  88. package/runtime/arcane/components/table.html +77 -0
  89. package/runtime/arcane/components/task-progress.html +282 -0
  90. package/runtime/arcane/components/terminal-workspace.html +65 -0
  91. package/runtime/arcane/components/theme-editor.html +41 -0
  92. package/runtime/arcane/components/theme-switcher.html +46 -0
  93. package/runtime/arcane/components/unified-inbox.html +20 -0
  94. package/runtime/arcane/components/voice-transcription.html +476 -0
  95. package/runtime/arcane/components/weather-widget.html +8 -0
  96. package/runtime/arcane/components/web-navigator.html +239 -0
  97. package/runtime/arcane/css/communications.css +1 -0
  98. package/runtime/arcane/css/dashboard-config.css +45 -0
  99. package/runtime/arcane/css/document-site.css +981 -0
  100. package/runtime/arcane/css/layout.css +438 -0
  101. package/runtime/arcane/css/primitives.css +321 -0
  102. package/runtime/arcane/css/theme.css +112 -0
  103. package/runtime/arcane/css/utility-workspace.css +1 -0
  104. package/runtime/arcane/entities/ApiModelRecord.js +20 -0
  105. package/runtime/arcane/entities/Calculation.js +13 -0
  106. package/runtime/arcane/entities/Chat.js +581 -0
  107. package/runtime/arcane/entities/CommunicationMessage.js +29 -0
  108. package/runtime/arcane/entities/CommunicationThread.js +21 -0
  109. package/runtime/arcane/entities/Document.js +10 -0
  110. package/runtime/arcane/entities/File.js +143 -0
  111. package/runtime/arcane/entities/Image.js +135 -0
  112. package/runtime/arcane/entities/IntentEnvelope.js +834 -0
  113. package/runtime/arcane/entities/Preference.js +83 -0
  114. package/runtime/arcane/entities/TWiNPolicyDecision.js +1092 -0
  115. package/runtime/arcane/entities/TerminalSession.js +46 -0
  116. package/runtime/arcane/entities/Theme.js +107 -0
  117. package/runtime/arcane/entities/User.js +1046 -0
  118. package/runtime/arcane/entities/Weather.js +23 -0
  119. package/runtime/arcane/img/arcane-os-everywhere.png +0 -0
  120. package/runtime/arcane/img/arrow-left.png +0 -0
  121. package/runtime/arcane/img/arrow-right.png +0 -0
  122. package/runtime/arcane/img/doc.svg +5 -0
  123. package/runtime/arcane/img/folder.svg +4 -0
  124. package/runtime/arcane/img/image.svg +5 -0
  125. package/runtime/arcane/img/refresh.png +0 -0
  126. package/runtime/arcane/img/send.svg +9 -0
  127. package/runtime/arcane/img/trash.svg +5 -0
  128. package/runtime/arcane/img/upload.svg +5 -0
  129. package/runtime/arcane/modules/AI.js +2048 -0
  130. package/runtime/arcane/modules/AIPreferenceRuntime.js +32 -0
  131. package/runtime/arcane/modules/AIPreferenceTuple.js +92 -0
  132. package/runtime/arcane/modules/AIResponseLength.js +42 -0
  133. package/runtime/arcane/modules/AIResponseURLPolicy.js +626 -0
  134. package/runtime/arcane/modules/AnsiText.js +53 -0
  135. package/runtime/arcane/modules/ApiModelDatabase.js +25 -0
  136. package/runtime/arcane/modules/AppDataScope.js +245 -0
  137. package/runtime/arcane/modules/AppearancePreferences.js +28 -0
  138. package/runtime/arcane/modules/ArcaneCommunicationBridge.js +22 -0
  139. package/runtime/arcane/modules/ArcaneNavigationPolicy.js +135 -0
  140. package/runtime/arcane/modules/ArcaneNetworkPolicy.js +255 -0
  141. package/runtime/arcane/modules/AsyncBoundary.js +161 -0
  142. package/runtime/arcane/modules/BrowserTestSuite.js +326 -0
  143. package/runtime/arcane/modules/CalculatorEngine.js +20 -0
  144. package/runtime/arcane/modules/CaseEvidenceIndexer.js +134 -0
  145. package/runtime/arcane/modules/ChartLibrary.js +35 -0
  146. package/runtime/arcane/modules/ChatRecords.js +13 -0
  147. package/runtime/arcane/modules/CommunicationAppController.js +43 -0
  148. package/runtime/arcane/modules/CommunicationHub.js +16 -0
  149. package/runtime/arcane/modules/CommunicationPreferences.js +13 -0
  150. package/runtime/arcane/modules/CommunicationProviderRegistry.js +16 -0
  151. package/runtime/arcane/modules/ComponentContracts.js +586 -0
  152. package/runtime/arcane/modules/ConfiguredAIChatSession.js +288 -0
  153. package/runtime/arcane/modules/ConversationActionItems.js +488 -0
  154. package/runtime/arcane/modules/ConversationClosingReport.js +274 -0
  155. package/runtime/arcane/modules/ConversationTimebox.js +527 -0
  156. package/runtime/arcane/modules/CoreLocalModelCatalog.js +255 -0
  157. package/runtime/arcane/modules/DBLS.js +171 -0
  158. package/runtime/arcane/modules/DBOPFS.js +1154 -0
  159. package/runtime/arcane/modules/DBOPFSWorker.js +116 -0
  160. package/runtime/arcane/modules/DataMaintenance.js +91 -0
  161. package/runtime/arcane/modules/DevelopmentWorkspace.js +74 -0
  162. package/runtime/arcane/modules/DirectoryPicker.js +109 -0
  163. package/runtime/arcane/modules/DocumentNavigation.js +223 -0
  164. package/runtime/arcane/modules/Errors.js +1025 -0
  165. package/runtime/arcane/modules/GifEncoder.js +29 -0
  166. package/runtime/arcane/modules/HTMLImport.js +114 -0
  167. package/runtime/arcane/modules/InMemoryCommunicationProvider.js +14 -0
  168. package/runtime/arcane/modules/IsolatedModelQuestionRunner.js +275 -0
  169. package/runtime/arcane/modules/LocalAIReadiness.js +870 -0
  170. package/runtime/arcane/modules/LocalAIReadinessController.js +156 -0
  171. package/runtime/arcane/modules/MD.js +111 -0
  172. package/runtime/arcane/modules/Mail.js +352 -0
  173. package/runtime/arcane/modules/MailTransport.mjs +180 -0
  174. package/runtime/arcane/modules/Marked.min.js +71 -0
  175. package/runtime/arcane/modules/MemoryRecords.js +44 -0
  176. package/runtime/arcane/modules/MessageAdvisory.js +38 -0
  177. package/runtime/arcane/modules/ModelDefinition.js +189 -0
  178. package/runtime/arcane/modules/Ollama.js +74 -0
  179. package/runtime/arcane/modules/OllamaModelIdentifier.js +21 -0
  180. package/runtime/arcane/modules/OllamaSettings.js +24 -0
  181. package/runtime/arcane/modules/OpenMeteoWeatherProvider.js +14 -0
  182. package/runtime/arcane/modules/PreferenceStore.js +109 -0
  183. package/runtime/arcane/modules/QRCode.min.js +1 -0
  184. package/runtime/arcane/modules/Questionnaire.js +61 -0
  185. package/runtime/arcane/modules/RecordLinkIndex.js +24 -0
  186. package/runtime/arcane/modules/RecordPassageIndex.js +222 -0
  187. package/runtime/arcane/modules/RecordReviewStore.js +94 -0
  188. package/runtime/arcane/modules/RevocableProjectionLedger.js +1623 -0
  189. package/runtime/arcane/modules/RiskSignalAnalyzer.js +37 -0
  190. package/runtime/arcane/modules/ScamRiskPolicy.js +62 -0
  191. package/runtime/arcane/modules/ScopedOPFSCache.js +183 -0
  192. package/runtime/arcane/modules/ScreenCapture.js +20 -0
  193. package/runtime/arcane/modules/SpeechPlayback.js +581 -0
  194. package/runtime/arcane/modules/StaticDocumentCatalog.js +1248 -0
  195. package/runtime/arcane/modules/SystemAppearance.js +20 -0
  196. package/runtime/arcane/modules/SystemPlatformPresentation.js +51 -0
  197. package/runtime/arcane/modules/SystemToolRegistry.js +28 -0
  198. package/runtime/arcane/modules/TerminalClient.js +52 -0
  199. package/runtime/arcane/modules/TerminalCommandRegistry.js +50 -0
  200. package/runtime/arcane/modules/ThemeBootstrap.js +26 -0
  201. package/runtime/arcane/modules/ThemeManager.js +131 -0
  202. package/runtime/arcane/modules/TimeGuard.js +149 -0
  203. package/runtime/arcane/modules/ToolCallRouter.js +83 -0
  204. package/runtime/arcane/modules/WaitForComponent.js +102 -0
  205. package/runtime/arcane/modules/YouTubeMedia.js +16 -0
  206. package/runtime/arcane/modules/uPlot.LICENSE.txt +21 -0
  207. package/runtime/arcane/modules/uPlot.iife.min.js +2 -0
  208. package/runtime/arcane/modules/uPlot.min.css +1 -0
  209. package/runtime/arcane/security/arcane-network-policy.json +6 -0
  210. package/runtime/strong-type/index.js +352 -0
  211. package/runtime/strong-type/licence +21 -0
  212. package/runtime/strong-type/package.json +45 -0
  213. package/schemas/arcane-app-bundle.schema.json +125 -0
  214. package/schemas/arcane-app.schema.json +329 -0
  215. package/schemas/arcane-lock.schema.json +86 -0
  216. package/schemas/arcane-package.schema.json +224 -0
  217. package/schemas/cli-event.schema.json +122 -0
  218. package/schemas/event-stack.schema.json +152 -0
  219. package/schemas/native-build-plan.schema.json +176 -0
  220. package/schemas/target-adapter.schema.json +117 -0
  221. package/src/app-descriptor.mjs +500 -0
  222. package/src/cli/main.mjs +561 -0
  223. package/src/constants.mjs +31 -0
  224. package/src/dev-server.mjs +718 -0
  225. package/src/doctor.mjs +315 -0
  226. package/src/dom-event-instrumentation.mjs +594 -0
  227. package/src/errors.mjs +75 -0
  228. package/src/event-manager.mjs +1342 -0
  229. package/src/event-queue.mjs +138 -0
  230. package/src/events.mjs +219 -0
  231. package/src/index.mjs +177 -0
  232. package/src/integrated-provider-loader.mjs +432 -0
  233. package/src/native-plan.mjs +698 -0
  234. package/src/native-provider-loader.mjs +1126 -0
  235. package/src/packager/core.mjs +2691 -0
  236. package/src/process.mjs +353 -0
  237. package/src/release-bundle.mjs +2523 -0
  238. package/src/repository.mjs +90 -0
  239. package/src/runtime.mjs +452 -0
  240. package/src/scaffold.mjs +380 -0
  241. package/src/targets/index.mjs +436 -0
  242. package/src/templates/assets/app-icon.png +0 -0
  243. package/src/templates/workspace-template.mjs +388 -0
  244. package/src/testing-loader.mjs +9 -0
  245. package/src/testing.mjs +427 -0
  246. package/src/toolchain.mjs +1335 -0
  247. package/src/update-check.mjs +307 -0
  248. package/src/workspace.mjs +449 -0
@@ -0,0 +1,2010 @@
1
+ # Arcane runtime module catalog
2
+
3
+ Every file shipped under `runtime/arcane/modules/` appears here. Start with the capability and example; expand into [protocol and host architecture](protocols.md) only when transport detail matters.
4
+
5
+ Apps import renderer ESM from `/arcane/modules/<file>`. Classic scripts, the OPFS worker, uPlot stylesheet, and vendor license are called out explicitly. Importing a module does not grant a native capability.
6
+
7
+ ## Availability shorthand
8
+
9
+ - **Cross-host** means in-process logic built from standard JavaScript/Web APIs.
10
+ - **Browser / native WebView** means DOM, storage, media, or component behavior available in a browser renderer and in supported native WebViews.
11
+ - **Native bridge** means the module requires an admitted `globalThis.Arcane` method.
12
+ - **Hybrid** means one public helper deliberately selects a documented native or browser/provider path.
13
+ - **Cloud** means the module can call an explicitly configured remote provider; it never implies automatic local-to-cloud fallback.
14
+ - **Node**, **worker**, and **vendor** identify specialized runtimes.
15
+
16
+ ## Canonical inventory
17
+
18
+ | Module | Kind | Capability | Availability | Normalization |
19
+ | --- | --- | --- | --- | --- |
20
+ | [`AI.js`](#aijs) | esm | Provider-selectable chat, speech-to-text, text-to-speech, tool calling, structured output, streaming, and queued audio playback. | Browser + native bridge + cloud | High-level chat/speech behavior is normalized; provider diagnostics and media errors remain mixed. |
21
+ | [`AIPreferenceRuntime.js`](#aipreferenceruntimejs) | esm | Applies and reads non-persistent per-user AI preference overrides. | Cross-host | Normalized six-slot preference state. |
22
+ | [`AIPreferenceTuple.js`](#aipreferencetuplejs) | esm | Normalizes and compares the six provider/model preference slots. | Cross-host | Fully normalized frozen tuple. |
23
+ | [`AIResponseLength.js`](#airesponselengthjs) | esm | Normalizes concise/short/medium/long response preferences and applies the matching system instruction. | Cross-host | Fully normalized string/instruction contract. |
24
+ | [`AIResponseURLPolicy.js`](#airesponseurlpolicyjs) | esm | Extracts and audits links from AI Markdown, rendered HTML, CSS, srcset, bare URLs, and email text. | Cross-host | Normalized frozen allowlist audit. |
25
+ | [`AnsiText.js`](#ansitextjs) | esm | Parses terminal ANSI sequences into display spans or strips them to plain text. | Cross-host | Normalized text/span output. |
26
+ | [`ApiModelDatabase.js`](#apimodeldatabasejs) | esm | Fetches an injectable HTTP JSON model with parser, cache, redacted public endpoint records, and request lifecycle events. | Browser / native WebView / server with fetch | Request records are normalized; fetch/provider failures remain mixed. |
27
+ | [`AppDataScope.js`](#appdatascopejs) | esm | Reconciles declared and native application identity and scopes OPFS/localStorage ownership fail-closed. | Browser / native WebView hybrid | Strict normalized identifiers and coded mismatch failures. |
28
+ | [`AppearancePreferences.js`](#appearancepreferencesjs) | esm | Defines, stores, and applies color scheme, density, reduced motion, and large-text preferences. | Browser / native WebView hybrid | Normalized values; storage/host failures remain mixed. |
29
+ | [`ArcaneCommunicationBridge.js`](#arcanecommunicationbridgejs) | esm | Maps provider HTTP threads/messages/connect/disconnect endpoints to normalized communication entities. | Browser / native WebView / server with fetch | Entity results are normalized; provider/transport failures remain mixed. |
30
+ | [`ArcaneNavigationPolicy.js`](#arcanenavigationpolicyjs) | esm | Creates a fail-closed HTTP(S) navigation guard with domain and CIDR policy decisions. | Cross-host | Normalized frozen allow/block decision. |
31
+ | [`ArcaneNetworkPolicy.js`](#arcanenetworkpolicyjs) | esm | Validates the Arcane domain/network deny policy and matches domain, IPv4/IPv6 CIDR, protocol, and port rules. | Cross-host | Strict coded normalization. |
32
+ | [`AsyncBoundary.js`](#asyncboundaryjs) | esm | Runs one asynchronous operation with timeout, abort, result validation, and stable boundary errors. | Cross-host | Fully normalized timeout/abort errors. |
33
+ | [`BrowserTestSuite.js`](#browsertestsuitejs) | esm | Runs a fixed sequential browser test list with cooperative abort, per-test timeout, and lifecycle events. | Browser / standard Web APIs | Normalized result and skip/assertion errors. |
34
+ | [`CalculatorEngine.js`](#calculatorenginejs) | esm | Evaluates bounded arithmetic, powers, constants, and common functions without `eval`. | Cross-host | Normalized `Calculation` result and parser errors. |
35
+ | [`CaseEvidenceIndexer.js`](#caseevidenceindexerjs) | esm | Pairs and indexes structured evidence records with rendered-page provenance and SHA-256 identity. | Node only | Normalized naming/page helpers; filesystem errors preserved. |
36
+ | [`ChartLibrary.js`](#chartlibraryjs) | esm | Loads the bundled uPlot classic script once and returns its global constructor. | Browser / native WebView | Load state/errors normalized; uPlot result is vendor-native. |
37
+ | [`ChatRecords.js`](#chatrecordsjs) | esm | Detects whether a chat record contains a meaningful user entry. | Cross-host | Boolean normalized result. |
38
+ | [`CommunicationAppController.js`](#communicationappcontrollerjs) | esm | Binds shared inbox, conversation, settings, theme, and provider workflows into one UI controller. | Browser / native WebView hybrid | Controller state normalized; provider/DOM failures mixed. |
39
+ | [`CommunicationHub.js`](#communicationhubjs) | esm | Fans out provider refresh/send operations and aggregates normalized threads/messages. | Cross-host with injected providers | Normalized aggregates; refresh contains per-provider failures. |
40
+ | [`CommunicationPreferences.js`](#communicationpreferencesjs) | esm | Stores app-scoped, non-secret communication provider preferences. | Browser / native WebView hybrid | Normalized preference record; storage failures mixed. |
41
+ | [`CommunicationProviderRegistry.js`](#communicationproviderregistryjs) | esm | Registers and queries validated provider definitions, channels, and required methods. | Cross-host | Strict normalized registry. |
42
+ | [`ComponentContracts.js`](#componentcontractsjs) | esm | Owns normalized configuration/value contracts shared by chart, dashboard, Markdown, and voice components. | Cross-host | Fully normalized labels, rows, definitions, visibility, formats, editor and voice options. |
43
+ | [`ConfiguredAIChatSession.js`](#configuredaichatsessionjs) | esm | Owns bounded in-memory AI turns, context construction, response-length instruction, and atomic history commit. | Native bridge by default; cross-host with injected chat | Normalized session/result; provider rejection preserved. |
44
+ | [`ConversationActionItems.js`](#conversationactionitemsjs) | esm | Normalizes, creates, updates, remembers, selects, and formats bounded conversation action items. | Cross-host | Fully normalized status/base/presentation contract. |
45
+ | [`ConversationClosingReport.js`](#conversationclosingreportjs) | esm | Defines the closing-report tool, instruction, result normalizer, call classifier, and formatter. | Cross-host | Fully normalized report contract. |
46
+ | [`ConversationTimebox.js`](#conversationtimeboxjs) | esm | Owns conversation limits, control messages, submission barriers, elapsed formatting, and delivery proof. | Cross-host | Fully normalized state/command/delivery errors. |
47
+ | [`CoreLocalModelCatalog.js`](#corelocalmodelcatalogjs) | esm | Projects Core local-AI status into UI-safe admitted model and speech availability catalogs. | Cross-host | Fully normalized descriptors and stable admission labels. |
48
+ | [`DataMaintenance.js`](#datamaintenancejs) | esm | Deletes empty chats and associated/empty memory records inside the current app data scope. | Browser / native WebView | Normalized counts; destructive storage failures preserved. |
49
+ | [`DBLS.js`](#dblsjs) | esm | Provides app-scoped localStorage tables, batch reads/writes, filtering, deletion, and counts. | Browser / native WebView | Scoped keys and values normalized; storage failures mixed. |
50
+ | [`DBOPFS.js`](#dbopfsjs) | esm | Provides app-scoped OPFS tables, worker I/O, backup/restore, compression, and CRUD/batch APIs. | Browser / native WebView | App scope normalized; DOM/storage errors preserved. |
51
+ | [`DBOPFSWorker.js`](#dbopfsworkerjs) | worker | Serializes OPFS sync-handle read/write requests from a MessagePort. | Dedicated worker | Responses normalize to `{success,fileData?}` or `{error:{name,message}}`. |
52
+ | [`DevelopmentWorkspace.js`](#developmentworkspacejs) | esm | Provides bounded workspace inspection, context, setup task, and Node installer clients without arbitrary command execution. | Native bridge | Inputs normalized; provider result/error preserved. |
53
+ | [`DirectoryPicker.js`](#directorypickerjs) | esm | Wraps the provider-owned native directory chooser and normalizes selected/cancelled/error results. | Native bridge | Strict normalized selection and coded errors. |
54
+ | [`DocumentNavigation.js`](#documentnavigationjs) | esm | Binds document navigation, filtering, history, current-item reveal, and load initialization. | Browser / native WebView | Normalized filter/navigation state; DOM effects preserved. |
55
+ | [`Errors.js`](#errorsjs) | esm | Normalizes global errors/rejections, fingerprints and deduplicates incidents, persists a ledger, and performs bounded delivery. | Browser / native WebView hybrid | Incident records normalized; storage/mail failures isolated. |
56
+ | [`GifEncoder.js`](#gifencoderjs) | esm | Encodes indexed frames into a bounded animated GIF using palette mapping and LZW. | Cross-host | Normalized byte output and bounds. |
57
+ | [`HTMLImport.js`](#htmlimportjs) | esm | Defines the same-origin `<html-import>` loader with open shadow root, inline script execution, and readiness/error events. | Browser / native WebView | Public error detail normalized; fetch/DOM failure preserved. |
58
+ | [`InMemoryCommunicationProvider.js`](#inmemorycommunicationproviderjs) | esm | Implements deterministic in-memory thread/message/send behavior for demos and tests. | Cross-host | Normalized communication entities. |
59
+ | [`IsolatedModelQuestionRunner.js`](#isolatedmodelquestionrunnerjs) | esm | Inspects one exact model and runs one isolated question with proof validation. | Native bridge or injected provider | Strict normalized proof/coded errors. |
60
+ | [`LocalAIReadiness.js`](#localaireadinessjs) | esm | Derives selected AI requirements and returns a frozen readiness/recovery report across browser, desktop, and Android modes. | Browser/native hybrid | Fully normalized report and stable error codes; browsers never probe Ollama. |
61
+ | [`LocalAIReadinessController.js`](#localaireadinesscontrollerjs) | esm | Coordinates local-AI status component checks, ensured recovery, availability projection, and teardown. | Browser/native hybrid | Normalized controller state and change events. |
62
+ | [`Mail.js`](#mailjs) | esm | Builds bounded reports and prefers the native mail capability with an explicit HTTP transport fallback. | Browser/native hybrid + cloud | Mail inputs/results normalized; transport failures mixed. |
63
+ | [`MailTransport.mjs`](#mailtransportmjs) | esm | Sends one bounded mail report to a normalized HTTP(S) endpoint with timeout and response-size limits. | Browser/server with fetch + cloud | Normalized endpoint/timeout/size errors; remote detail bounded. |
64
+ | [`Marked.min.js`](#markedminjs) | esm | Vendored Marked 18.0.5 Markdown lexer, parser, renderer, extension, and walk-token API. | Cross-host vendor module | Vendor-native Marked contract. |
65
+ | [`MD.js`](#mdjs) | esm | Renders Markdown with Marked and exposes a DOM-sanitized projection. | Browser / native WebView | Raw Marked behavior plus Arcane sanitization; parse errors vendor-native. |
66
+ | [`MemoryRecords.js`](#memoryrecordsjs) | esm | Normalizes memory content and detects meaningful stored memory. | Cross-host | Fully normalized string/boolean results. |
67
+ | [`MessageAdvisory.js`](#messageadvisoryjs) | esm | Normalizes message content advisories and contains per-message inspection failures. | Cross-host | Normalized advisory records; inspector failures converted to unavailable results. |
68
+ | [`ModelDefinition.js`](#modeldefinitionjs) | esm | Parses the deterministic packaged Modelfile subset and extracts the SYSTEM prompt. | Cross-host | Strict normalized definition with coded syntax errors. |
69
+ | [`Ollama.js`](#ollamajs) | esm | Provides the first-class Arcane Ollama client without direct access to localhost:11434. | Native bridge | Principal methods preserve provider-native envelopes; readiness/text/unload helpers normalize. |
70
+ | [`OllamaModelIdentifier.js`](#ollamamodelidentifierjs) | esm | Validates and canonicalizes the syntax of Ollama model identifiers without granting model admission. | Cross-host | Fully normalized string/boolean result. |
71
+ | [`OllamaSettings.js`](#ollamasettingsjs) | esm | Defines bounded runtime/service preference schemas and deterministic Arcane brain alias names. | Cross-host | Fully normalized settings/name contract. |
72
+ | [`OpenMeteoWeatherProvider.js`](#openmeteoweatherproviderjs) | esm | Searches and loads Open-Meteo data into frozen Arcane weather entities. | Browser / native WebView / server with fetch + cloud | Provider data normalized to entities; transport errors mixed. |
73
+ | [`PreferenceStore.js`](#preferencestorejs) | esm | Loads and updates schema-defined app preferences through native storage with a narrow browser fallback. | Browser/native hybrid | Values normalized; only exact unsupported capability falls back. |
74
+ | [`QRCode.min.js`](#qrcodeminjs) | classic-script | Vendored QRCode generator for DOM, canvas, SVG, and image output. | Browser vendor script | Vendor-native. |
75
+ | [`Questionnaire.js`](#questionnairejs) | esm | Evaluates whether a one-time questionnaire prompt is due without performing the prompt. | Cross-host | Normalized fail-closed boolean. |
76
+ | [`RecordLinkIndex.js`](#recordlinkindexjs) | esm | Parses record links and builds their normalized index. | Cross-host | Fully normalized. |
77
+ | [`RecordPassageIndex.js`](#recordpassageindexjs) | esm | Indexes text lines, page markers, dates, rules, and excerpts for record review. | Cross-host | Fully normalized. |
78
+ | [`RecordReviewStore.js`](#recordreviewstorejs) | esm | Stores normalized record-review decisions through native storage or app-scoped local fallback. | Browser/native hybrid | Normalized ids/reviews/snapshots; storage failures mixed. |
79
+ | [`RevocableProjectionLedger.js`](#revocableprojectionledgerjs) | esm | Implements an append-only bounded in-memory projection/revocation ledger safe for hostile descriptor inputs. | Cross-host | Strict normalization with stable `ProjectionLedgerError`. |
80
+ | [`RiskSignalAnalyzer.js`](#risksignalanalyzerjs) | esm | Matches configured risk signals and levels against bounded text. | Cross-host | Fully normalized. |
81
+ | [`ScamRiskPolicy.js`](#scamriskpolicyjs) | esm | Combines deterministic scam signals with Arcane blocked-domain evidence and safety guidance. | Cross-host | Fully normalized. |
82
+ | [`ScopedOPFSCache.js`](#scopedopfscachejs) | esm | Provides a narrow exact-key JSON cache inside one app-owned OPFS namespace. | Browser / native WebView | Keys/limits/corruption handling normalized; storage errors mixed. |
83
+ | [`ScreenCapture.js`](#screencapturejs) | esm | Captures a display surface as image, video, or GIF with explicit lifecycle events. | Browser / native WebView | State/events normalized; permission and codec errors mixed. |
84
+ | [`SpeechPlayback.js`](#speechplaybackjs) | esm | Segments bounded text, queues latest-request speech synthesis, and controls lookahead HTML audio playback. | Browser + native bridge | State/limits normalized; provider/media failures mixed. |
85
+ | [`StaticDocumentCatalog.js`](#staticdocumentcatalogjs) | esm | Loads a positive static document inventory with byte/hash verification, cache, search, and bounded context. | Browser / native WebView / server with fetch | Strict catalog/content normalization; transport failures mixed. |
86
+ | [`SystemAppearance.js`](#systemappearancejs) | esm | Reads or applies native appearance, returning an explicit unsupported browser state when no bridge exists. | Browser/native hybrid | Absent bridge normalized; native result/error preserved. |
87
+ | [`SystemPlatformPresentation.js`](#systemplatformpresentationjs) | classic-script | Maps kernel names to presentation labels/classes without granting platform authority. | Browser / native WebView classic script | Fully normalized presentation only. |
88
+ | [`SystemToolRegistry.js`](#systemtoolregistryjs) | esm | Registers validated command builders and constructs command strings without executing them. | Cross-host | Fully normalized definitions/quoting. |
89
+ | [`TerminalClient.js`](#terminalclientjs) | esm | Maps native terminal sessions and Arcane events into an EventTarget client. | Native bridge | Client events/state normalized; native result/error mixed. |
90
+ | [`TerminalCommandRegistry.js`](#terminalcommandregistryjs) | esm | Routes parsed command lines to injected handlers and provides definitions/completions. | Cross-host | Parsing/routing normalized; handler result/error preserved. |
91
+ | [`ThemeBootstrap.js`](#themebootstrapjs) | esm | Performs import-time Arcane theme loading and subscribes to native appearance changes. | Browser/native hybrid | Theme state normalized; storage/native errors mixed. |
92
+ | [`ThemeManager.js`](#thememanagerjs) | esm | Loads, applies, previews, saves, resets, and synchronizes semantic Arcane themes. | Browser/native hybrid | Theme values/events normalized; storage/native failures mixed. |
93
+ | [`TimeGuard.js`](#timeguardjs) | esm | Persists and evaluates clock rollback and grace-period state. | Browser / native WebView | Time decisions normalized; storage lifecycle mixed. |
94
+ | [`ToolCallRouter.js`](#toolcallrouterjs) | esm | Parses OpenAI-style tool calls and dispatches complete or streamed calls to injected handlers. | Cross-host | Arguments/routing normalized; handler results returned or all-settled. |
95
+ | [`uPlot.iife.min.js`](#uplotiifeminjs) | classic-script | Vendored uPlot chart constructor and rendering runtime. | Browser vendor script | Vendor-native. |
96
+ | [`uPlot.LICENSE.txt`](#uplotlicensetxt) | license | License companion for the bundled uPlot vendor runtime. | Documentation asset | Not executable. |
97
+ | [`uPlot.min.css`](#uplotmincss) | stylesheet | Bundled uPlot presentation stylesheet. | Browser stylesheet | Presentation only. |
98
+ | [`WaitForComponent.js`](#waitforcomponentjs) | esm | Waits for a component property, method, or readiness event with optional error event and bounded timeout. | Cross-host EventTarget / browser component | Normalized coded readiness, error, and timeout results. |
99
+ | [`YouTubeMedia.js`](#youtubemediajs) | esm | Validates YouTube video/playlist locators and constructs privacy-enhanced embed URLs. | Cross-host | Fully normalized. |
100
+
101
+ ## AI.js
102
+
103
+ ### Overview
104
+
105
+ Provider-selectable chat, speech-to-text, text-to-speech, tool calling, structured output, streaming, and queued audio playback.
106
+
107
+ ### Public surface
108
+
109
+ default `AI`; `setAI()`, `streamRequest()`, `streamMessage()`, `fetchRequest()`, `fetch()`, `streamTTS()`, `finishTTS()`, `fetchSTT()`, `stopAudio()`, `resumeAudio()`, `playAudio()`; installs `window.ai` and emits `ai-ready`.
110
+
111
+ Exact exports: `default`.
112
+
113
+ ### Availability and normalization
114
+
115
+ **Browser + native bridge + cloud.** High-level chat/speech behavior is normalized; provider diagnostics and media errors remain mixed. Transport: OpenAI HTTPS, Arcane.ollama, Arcane.speech, Android WebView bridge. [Deep protocol details](protocols.md).
116
+
117
+ ### Example
118
+
119
+ ```javascript
120
+ import * as module from '/arcane/modules/AI.js';
121
+
122
+ console.log(Object.keys(module));
123
+ ```
124
+
125
+ ## AIPreferenceRuntime.js
126
+
127
+ ### Overview
128
+
129
+ Applies and reads non-persistent per-user AI preference overrides.
130
+
131
+ ### Public surface
132
+
133
+ `setAIPreferenceRuntimeOverride()`, `getAIPreferencesForRuntime()`.
134
+
135
+ Exact exports: `getAIPreferencesForRuntime`, `setAIPreferenceRuntimeOverride`.
136
+
137
+ ### Availability and normalization
138
+
139
+ **Cross-host.** Normalized six-slot preference state. Transport: In-process only. [Deep protocol details](protocols.md).
140
+
141
+ ### Example
142
+
143
+ ```javascript
144
+ import * as module from '/arcane/modules/AIPreferenceRuntime.js';
145
+
146
+ console.log(Object.keys(module));
147
+ ```
148
+
149
+ ## AIPreferenceTuple.js
150
+
151
+ ### Overview
152
+
153
+ Normalizes and compares the six provider/model preference slots.
154
+
155
+ ### Public surface
156
+
157
+ `AI_PREFERENCE_SLOT_KEYS`, `normalizeAIPreferenceTuple()`, `aiPreferenceTuplesEqual()`.
158
+
159
+ Exact exports: `AI_PREFERENCE_SLOT_KEYS`, `aiPreferenceTuplesEqual`, `normalizeAIPreferenceTuple`.
160
+
161
+ ### Availability and normalization
162
+
163
+ **Cross-host.** Fully normalized frozen tuple. Transport: In-process only. [Deep protocol details](protocols.md).
164
+
165
+ ### Example
166
+
167
+ ```javascript
168
+ import * as module from '/arcane/modules/AIPreferenceTuple.js';
169
+
170
+ console.log(Object.keys(module));
171
+ ```
172
+
173
+ ## AIResponseLength.js
174
+
175
+ ### Overview
176
+
177
+ Normalizes concise/short/medium/long response preferences and applies the matching system instruction.
178
+
179
+ ### Public surface
180
+
181
+ Response-length constants plus `normalizeAIResponseLength()`, `aiResponseLengthInstruction()`, and `applyAIResponseLength()`.
182
+
183
+ Exact exports: `AI_RESPONSE_LENGTH_DEFAULT`, `AI_RESPONSE_LENGTH_OPTIONS`, `aiResponseLengthInstruction`, `applyAIResponseLength`, `normalizeAIResponseLength`.
184
+
185
+ ### Availability and normalization
186
+
187
+ **Cross-host.** Fully normalized string/instruction contract. Transport: In-process only. [Deep protocol details](protocols.md).
188
+
189
+ ### Example
190
+
191
+ ```javascript
192
+ import * as module from '/arcane/modules/AIResponseLength.js';
193
+
194
+ console.log(Object.keys(module));
195
+ ```
196
+
197
+ ## AIResponseURLPolicy.js
198
+
199
+ ### Overview
200
+
201
+ Extracts and audits links from AI Markdown, rendered HTML, CSS, srcset, bare URLs, and email text.
202
+
203
+ ### Public surface
204
+
205
+ `auditAIResponseLinks()`, `extractAIResponseLinks()`, `normalizeAIResponseLink()`, `decodeHTMLCharacterReferences()`.
206
+
207
+ Exact exports: `auditAIResponseLinks`, `decodeHTMLCharacterReferences`, `extractAIResponseLinks`, `normalizeAIResponseLink`.
208
+
209
+ ### Availability and normalization
210
+
211
+ **Cross-host.** Normalized frozen allowlist audit. Transport: In-process; bundled Marked parser. [Deep protocol details](protocols.md).
212
+
213
+ ### Example
214
+
215
+ ```javascript
216
+ import * as module from '/arcane/modules/AIResponseURLPolicy.js';
217
+
218
+ console.log(Object.keys(module));
219
+ ```
220
+
221
+ ## AnsiText.js
222
+
223
+ ### Overview
224
+
225
+ Parses terminal ANSI sequences into display spans or strips them to plain text.
226
+
227
+ ### Public surface
228
+
229
+ `parseAnsi()`, `stripAnsi()`.
230
+
231
+ Exact exports: `parseAnsi`, `stripAnsi`.
232
+
233
+ ### Availability and normalization
234
+
235
+ **Cross-host.** Normalized text/span output. Transport: In-process only. [Deep protocol details](protocols.md).
236
+
237
+ ### Example
238
+
239
+ ```javascript
240
+ import * as module from '/arcane/modules/AnsiText.js';
241
+
242
+ console.log(Object.keys(module));
243
+ ```
244
+
245
+ ## ApiModelDatabase.js
246
+
247
+ ### Overview
248
+
249
+ Fetches an injectable HTTP JSON model with parser, cache, redacted public endpoint records, and request lifecycle events.
250
+
251
+ ### Public surface
252
+
253
+ default `ApiModelDatabase`; `setEndpoint()`, `fetch()`, `cached()`; emits `api-model-request`, `api-model-success`, and `api-model-error`.
254
+
255
+ Exact exports: `appendParameters`, `default`, `publicEndpoint`.
256
+
257
+ ### Availability and normalization
258
+
259
+ **Browser / native WebView / server with fetch.** Request records are normalized; fetch/provider failures remain mixed. Transport: HTTP(S) fetch. [Deep protocol details](protocols.md).
260
+
261
+ ### Example
262
+
263
+ ```javascript
264
+ import * as module from '/arcane/modules/ApiModelDatabase.js';
265
+
266
+ console.log(Object.keys(module));
267
+ ```
268
+
269
+ ## AppDataScope.js
270
+
271
+ ### Overview
272
+
273
+ Reconciles declared and native application identity and scopes OPFS/localStorage ownership fail-closed.
274
+
275
+ ### Public surface
276
+
277
+ Identity constants and `canonicalApplicationId()`, `resolveApplicationId()`, `resolveApplicationLocalStorageKey()`, `openApplicationDataDirectory()`.
278
+
279
+ Exact exports: `APPLICATION_ID_MAX_LENGTH`, `APPLICATION_ID_PATTERN`, `APP_DATA_DIRECTORY`, `APP_LOCAL_STORAGE_PREFIX`, `canonicalApplicationId`, `declaredApplicationId`, `openApplicationDataDirectory`, `resolveApplicationId`, `resolveApplicationLocalStorageKey`, `resolveBrowserApplicationId`.
280
+
281
+ ### Availability and normalization
282
+
283
+ **Browser / native WebView hybrid.** Strict normalized identifiers and coded mismatch failures. Transport: Arcane.app.current, DOM declaration, OPFS. [Deep protocol details](protocols.md).
284
+
285
+ ### Example
286
+
287
+ ```javascript
288
+ import * as module from '/arcane/modules/AppDataScope.js';
289
+
290
+ console.log(Object.keys(module));
291
+ ```
292
+
293
+ ## AppearancePreferences.js
294
+
295
+ ### Overview
296
+
297
+ Defines, stores, and applies color scheme, density, reduced motion, and large-text preferences.
298
+
299
+ ### Public surface
300
+
301
+ `appearancePreferenceSchema`, `createAppearancePreferenceStore()`, `applyAppearancePreferences()`, `loadAndApplyAppearancePreferences()`.
302
+
303
+ Exact exports: `appearancePreferenceSchema`, `applyAppearancePreferences`, `createAppearancePreferenceStore`, `loadAndApplyAppearancePreferences`.
304
+
305
+ ### Availability and normalization
306
+
307
+ **Browser / native WebView hybrid.** Normalized values; storage/host failures remain mixed. Transport: PreferenceStore, DOM, optional Arcane preferences. [Deep protocol details](protocols.md).
308
+
309
+ ### Example
310
+
311
+ ```javascript
312
+ import * as module from '/arcane/modules/AppearancePreferences.js';
313
+
314
+ console.log(Object.keys(module));
315
+ ```
316
+
317
+ ## ArcaneCommunicationBridge.js
318
+
319
+ ### Overview
320
+
321
+ Maps provider HTTP threads/messages/connect/disconnect endpoints to normalized communication entities.
322
+
323
+ ### Public surface
324
+
325
+ default `ArcaneCommunicationBridge`; `request()`, `listThreads()`, `getMessages()`, `send()`, `connect()`, `disconnect()`.
326
+
327
+ Exact exports: `default`.
328
+
329
+ ### Availability and normalization
330
+
331
+ **Browser / native WebView / server with fetch.** Entity results are normalized; provider/transport failures remain mixed. Transport: JSON HTTP(S), default loopback 127.0.0.1:8020. [Deep protocol details](protocols.md).
332
+
333
+ ### Example
334
+
335
+ ```javascript
336
+ import * as module from '/arcane/modules/ArcaneCommunicationBridge.js';
337
+
338
+ console.log(Object.keys(module));
339
+ ```
340
+
341
+ ## ArcaneNavigationPolicy.js
342
+
343
+ ### Overview
344
+
345
+ Creates a fail-closed HTTP(S) navigation guard with domain and CIDR policy decisions.
346
+
347
+ ### Public surface
348
+
349
+ `createArcaneNavigationGuard()`.
350
+
351
+ Exact exports: `createArcaneNavigationGuard`.
352
+
353
+ ### Availability and normalization
354
+
355
+ **Cross-host.** Normalized frozen allow/block decision. Transport: Arcane network-policy document. [Deep protocol details](protocols.md).
356
+
357
+ ### Example
358
+
359
+ ```javascript
360
+ import * as module from '/arcane/modules/ArcaneNavigationPolicy.js';
361
+
362
+ console.log(Object.keys(module));
363
+ ```
364
+
365
+ ## ArcaneNetworkPolicy.js
366
+
367
+ ### Overview
368
+
369
+ Validates the Arcane domain/network deny policy and matches domain, IPv4/IPv6 CIDR, protocol, and port rules.
370
+
371
+ ### Public surface
372
+
373
+ Policy constants plus validate/load/cache/match helpers.
374
+
375
+ Exact exports: `ARCANE_NETWORK_POLICY_SCHEMA_VERSION`, `ARCANE_NETWORK_POLICY_URL`, `canonicalNetworkHostname`, `emptyArcaneNetworkPolicy`, `findDeniedDomainRule`, `findDeniedNetworkRule`, `invalidateArcaneNetworkPolicyCache`, `loadArcaneNetworkPolicy`, `validateArcaneNetworkPolicy`.
376
+
377
+ ### Availability and normalization
378
+
379
+ **Cross-host.** Strict coded normalization. Transport: Same-origin policy fetch. [Deep protocol details](protocols.md).
380
+
381
+ ### Example
382
+
383
+ ```javascript
384
+ import * as module from '/arcane/modules/ArcaneNetworkPolicy.js';
385
+
386
+ console.log(Object.keys(module));
387
+ ```
388
+
389
+ ## AsyncBoundary.js
390
+
391
+ ### Overview
392
+
393
+ Runs one asynchronous operation with timeout, abort, result validation, and stable boundary errors.
394
+
395
+ ### Public surface
396
+
397
+ `AsyncBoundaryTimeoutError`, `AsyncBoundaryAbortError`, defaults, `runAsyncBoundary()`, and default alias.
398
+
399
+ Exact exports: `AsyncBoundaryAbortError`, `AsyncBoundaryTimeoutError`, `asyncBoundaryDefaults`, `default`, `runAsyncBoundary`.
400
+
401
+ ### Availability and normalization
402
+
403
+ **Cross-host.** Fully normalized timeout/abort errors. Transport: AbortController and timers. [Deep protocol details](protocols.md).
404
+
405
+ ### Example
406
+
407
+ ```javascript
408
+ import * as module from '/arcane/modules/AsyncBoundary.js';
409
+
410
+ console.log(Object.keys(module));
411
+ ```
412
+
413
+ ## BrowserTestSuite.js
414
+
415
+ ### Overview
416
+
417
+ Runs a fixed sequential browser test list with cooperative abort, per-test timeout, and lifecycle events.
418
+
419
+ ### Public surface
420
+
421
+ default `BrowserTestSuite`; `list()`, `run()`; emits suite/test start/result/complete events.
422
+
423
+ Exact exports: `assertionError`, `default`, `skipError`.
424
+
425
+ ### Availability and normalization
426
+
427
+ **Browser / standard Web APIs.** Normalized result and skip/assertion errors. Transport: EventTarget and timers. [Deep protocol details](protocols.md).
428
+
429
+ ### Example
430
+
431
+ ```javascript
432
+ import * as module from '/arcane/modules/BrowserTestSuite.js';
433
+
434
+ console.log(Object.keys(module));
435
+ ```
436
+
437
+ ## CalculatorEngine.js
438
+
439
+ ### Overview
440
+
441
+ Evaluates bounded arithmetic, powers, constants, and common functions without `eval`.
442
+
443
+ ### Public surface
444
+
445
+ default `CalculatorEngine`, `evaluateExpression()`; `calculate()` emits result/error events.
446
+
447
+ Exact exports: `default`, `evaluateExpression`.
448
+
449
+ ### Availability and normalization
450
+
451
+ **Cross-host.** Normalized `Calculation` result and parser errors. Transport: In-process only. [Deep protocol details](protocols.md).
452
+
453
+ ### Example
454
+
455
+ ```javascript
456
+ import * as module from '/arcane/modules/CalculatorEngine.js';
457
+
458
+ console.log(Object.keys(module));
459
+ ```
460
+
461
+ ## CaseEvidenceIndexer.js
462
+
463
+ ### Overview
464
+
465
+ Pairs and indexes structured evidence records with rendered-page provenance and SHA-256 identity.
466
+
467
+ ### Public surface
468
+
469
+ Eight exported indexing, page, naming, stem, and digest helpers.
470
+
471
+ Exact exports: `indexPairedRecord`, `nearestPageMarker`, `parseStructuredRecordName`, `renderedPageBlocks`, `resolveEvidenceSourcePage`, `safeName`, `sha256`, `stem`.
472
+
473
+ ### Availability and normalization
474
+
475
+ **Node only and host-internal.** Normalized naming/page helpers; filesystem errors preserved. The file imports `node:fs/promises`, `node:path`, and `node:crypto`, so a renderer must not import it from `/arcane/modules/`. This SDK version does not expose it as an npm subpath; the example applies to repository-owned Node tooling. [Deep protocol details](protocols.md).
476
+
477
+ ### Example
478
+
479
+ ```javascript
480
+ // From a repository-owned tools/*.mjs file:
481
+ import {safeName, stem} from '../runtime/arcane/modules/CaseEvidenceIndexer.js';
482
+
483
+ console.log(safeName('Evidence 01.pdf'), stem('Evidence 01.pdf'));
484
+ ```
485
+
486
+ ## ChartLibrary.js
487
+
488
+ ### Overview
489
+
490
+ Loads the bundled uPlot classic script once and returns its global constructor.
491
+
492
+ ### Public surface
493
+
494
+ default `loadChartLibrary()`.
495
+
496
+ Exact exports: `default`.
497
+
498
+ ### Availability and normalization
499
+
500
+ **Browser / native WebView.** Load state/errors normalized; uPlot result is vendor-native. Transport: DOM script injection. [Deep protocol details](protocols.md).
501
+
502
+ ### Example
503
+
504
+ ```javascript
505
+ import * as module from '/arcane/modules/ChartLibrary.js';
506
+
507
+ console.log(Object.keys(module));
508
+ ```
509
+
510
+ ## ChatRecords.js
511
+
512
+ ### Overview
513
+
514
+ Detects whether a chat record contains a meaningful user entry.
515
+
516
+ ### Public surface
517
+
518
+ `hasUserEntry()`.
519
+
520
+ Exact exports: `hasUserEntry`.
521
+
522
+ ### Availability and normalization
523
+
524
+ **Cross-host.** Boolean normalized result. Transport: In-process only. [Deep protocol details](protocols.md).
525
+
526
+ ### Example
527
+
528
+ ```javascript
529
+ import * as module from '/arcane/modules/ChatRecords.js';
530
+
531
+ console.log(Object.keys(module));
532
+ ```
533
+
534
+ ## CommunicationAppController.js
535
+
536
+ ### Overview
537
+
538
+ Binds shared inbox, conversation, settings, theme, and provider workflows into one UI controller.
539
+
540
+ ### Public surface
541
+
542
+ default controller with `start()`, `bind()`, `configure()`, `refresh()`, `select()`, `send()`, and settings actions.
543
+
544
+ Exact exports: `default`.
545
+
546
+ ### Availability and normalization
547
+
548
+ **Browser / native WebView hybrid.** Controller state normalized; provider/DOM failures mixed. Transport: DOM plus communication providers. [Deep protocol details](protocols.md).
549
+
550
+ ### Example
551
+
552
+ ```javascript
553
+ import * as module from '/arcane/modules/CommunicationAppController.js';
554
+
555
+ console.log(Object.keys(module));
556
+ ```
557
+
558
+ ## CommunicationHub.js
559
+
560
+ ### Overview
561
+
562
+ Fans out provider refresh/send operations and aggregates normalized threads/messages.
563
+
564
+ ### Public surface
565
+
566
+ default `CommunicationHub`; provider enablement, `refresh()`, `messages()`, and `send()`.
567
+
568
+ Exact exports: `default`.
569
+
570
+ ### Availability and normalization
571
+
572
+ **Cross-host with injected providers.** Normalized aggregates; refresh contains per-provider failures. Transport: Injected provider contract. [Deep protocol details](protocols.md).
573
+
574
+ ### Example
575
+
576
+ ```javascript
577
+ import * as module from '/arcane/modules/CommunicationHub.js';
578
+
579
+ console.log(Object.keys(module));
580
+ ```
581
+
582
+ ## CommunicationPreferences.js
583
+
584
+ ### Overview
585
+
586
+ Stores app-scoped, non-secret communication provider preferences.
587
+
588
+ ### Public surface
589
+
590
+ default `CommunicationPreferences`; `load()`, `save()`.
591
+
592
+ Exact exports: `default`.
593
+
594
+ ### Availability and normalization
595
+
596
+ **Browser / native WebView hybrid.** Normalized preference record; storage failures mixed. Transport: Arcane.preferences or localStorage. [Deep protocol details](protocols.md).
597
+
598
+ ### Example
599
+
600
+ ```javascript
601
+ import * as module from '/arcane/modules/CommunicationPreferences.js';
602
+
603
+ console.log(Object.keys(module));
604
+ ```
605
+
606
+ ## CommunicationProviderRegistry.js
607
+
608
+ ### Overview
609
+
610
+ Registers and queries validated provider definitions, channels, and required methods.
611
+
612
+ ### Public surface
613
+
614
+ default registry with `register()`, `get()`, `has()`, `list()`.
615
+
616
+ Exact exports: `default`.
617
+
618
+ ### Availability and normalization
619
+
620
+ **Cross-host.** Strict normalized registry. Transport: In-process only. [Deep protocol details](protocols.md).
621
+
622
+ ### Example
623
+
624
+ ```javascript
625
+ import * as module from '/arcane/modules/CommunicationProviderRegistry.js';
626
+
627
+ console.log(Object.keys(module));
628
+ ```
629
+
630
+ ## ComponentContracts.js
631
+
632
+ ### Overview
633
+
634
+ Owns normalized configuration/value contracts shared by chart, dashboard, Markdown, and voice components.
635
+
636
+ ### Public surface
637
+
638
+ Six constant sets and twelve normalization/formatting helpers.
639
+
640
+ Exact exports: `CHART_LABELS`, `DASHBOARD_LABELS`, `MARKDOWN_FORMATS`, `MARKDOWN_LABELS`, `VOICE_LABELS`, `VOICE_MESSAGES`, `appendTranscription`, `applyMarkdownFormat`, `effectiveDashboardVisibility`, `normalizeChartOptions`, `normalizeChartRows`, `normalizeDashboardDefinitions`, `normalizeDashboardOptions`, `normalizeDashboardVisibility`, `normalizeMarkdownFormats`, `normalizeMarkdownOptions`, `normalizeVoiceOptions`.
641
+
642
+ ### Availability and normalization
643
+
644
+ **Cross-host.** Fully normalized labels, rows, definitions, visibility, formats, editor and voice options. Transport: In-process only. [Deep protocol details](protocols.md).
645
+
646
+ ### Example
647
+
648
+ ```javascript
649
+ import * as module from '/arcane/modules/ComponentContracts.js';
650
+
651
+ console.log(Object.keys(module));
652
+ ```
653
+
654
+ ## ConfiguredAIChatSession.js
655
+
656
+ ### Overview
657
+
658
+ Owns bounded in-memory AI turns, context construction, response-length instruction, and atomic history commit.
659
+
660
+ ### Public surface
661
+
662
+ default `ConfiguredAIChatSession`; `history()`, `clear()`, `send()`.
663
+
664
+ Exact exports: `default`.
665
+
666
+ ### Availability and normalization
667
+
668
+ **Native bridge by default; cross-host with injected chat.** Normalized session/result; provider rejection preserved. Transport: Arcane.ai.chat or injected provider. [Deep protocol details](protocols.md).
669
+
670
+ ### Example
671
+
672
+ ```javascript
673
+ import * as module from '/arcane/modules/ConfiguredAIChatSession.js';
674
+
675
+ console.log(Object.keys(module));
676
+ ```
677
+
678
+ ## ConversationActionItems.js
679
+
680
+ ### Overview
681
+
682
+ Normalizes, creates, updates, remembers, selects, and formats bounded conversation action items.
683
+
684
+ ### Public surface
685
+
686
+ Action-item constants and lifecycle/formatting helpers.
687
+
688
+ Exact exports: `CONVERSATION_ACTION_ITEM_BASES`, `CONVERSATION_ACTION_ITEM_PRESENTATION_COOLDOWN_MS`, `CONVERSATION_ACTION_ITEM_STATUSES`, `MAX_CONVERSATION_ACTION_ITEMS`, `MAX_CONVERSATION_ACTION_ITEM_CHARACTERS`, `MAX_CONVERSATION_REMEMBERED_ACTIONS`, `conversationActionItemsInstruction`, `createConversationActionItem`, `formatConversationActionItemCheckIn`, `markConversationActionItemsPresented`, `normalizeConversationActionItem`, `normalizeConversationActionItems`, `normalizeRememberedConversationActions`, `outstandingConversationActionItems`, `rememberConversationActionItems`, `removeConversationActionItem`, `selectConversationActionItemsForPresentation`, `updateConversationActionItem`.
689
+
690
+ ### Availability and normalization
691
+
692
+ **Cross-host.** Fully normalized status/base/presentation contract. Transport: In-process only. [Deep protocol details](protocols.md).
693
+
694
+ ### Example
695
+
696
+ ```javascript
697
+ import * as module from '/arcane/modules/ConversationActionItems.js';
698
+
699
+ console.log(Object.keys(module));
700
+ ```
701
+
702
+ ## ConversationClosingReport.js
703
+
704
+ ### Overview
705
+
706
+ Defines the closing-report tool, instruction, result normalizer, call classifier, and formatter.
707
+
708
+ ### Public surface
709
+
710
+ Six constants/helpers for closing reports.
711
+
712
+ Exact exports: `CONVERSATION_CLOSING_REPORT_TOOL_NAME`, `classifyConversationClosingReportCalls`, `conversationClosingReportInstruction`, `createConversationClosingReportTool`, `formatConversationClosingReport`, `normalizeConversationClosingReport`.
713
+
714
+ ### Availability and normalization
715
+
716
+ **Cross-host.** Fully normalized report contract. Transport: In-process only. [Deep protocol details](protocols.md).
717
+
718
+ ### Example
719
+
720
+ ```javascript
721
+ import * as module from '/arcane/modules/ConversationClosingReport.js';
722
+
723
+ console.log(Object.keys(module));
724
+ ```
725
+
726
+ ## ConversationTimebox.js
727
+
728
+ ### Overview
729
+
730
+ Owns conversation limits, control messages, submission barriers, elapsed formatting, and delivery proof.
731
+
732
+ ### Public surface
733
+
734
+ default `ConversationTimebox`, `ConversationSubmissionBarrier`, constants and control helpers.
735
+
736
+ Exact exports: `CONVERSATION_TIMEBOX_LIMIT_MESSAGE`, `CONVERSATION_TIMEBOX_OPENING_INSTRUCTION`, `CONVERSATION_TIMEBOX_TOOL_NAME`, `ConversationSubmissionBarrier`, `appendConversationTimeboxOpeningInstruction`, `consumeConversationTimeboxCall`, `conversationTimeboxSubmissionKey`, `conversationTimeboxTool`, `createConversationTimeboxControlMessage`, `default`, `formatConversationElapsed`, `normalizeConversationTimeboxCommand`, `requireConversationTimeboxDelivery`.
737
+
738
+ ### Availability and normalization
739
+
740
+ **Cross-host.** Fully normalized state/command/delivery errors. Transport: Clock/timers and callbacks. [Deep protocol details](protocols.md).
741
+
742
+ ### Example
743
+
744
+ ```javascript
745
+ import * as module from '/arcane/modules/ConversationTimebox.js';
746
+
747
+ console.log(Object.keys(module));
748
+ ```
749
+
750
+ ## CoreLocalModelCatalog.js
751
+
752
+ ### Overview
753
+
754
+ Projects Core local-AI status into UI-safe admitted model and speech availability catalogs.
755
+
756
+ ### Public surface
757
+
758
+ Provider-mode constant and four catalog/availability helpers.
759
+
760
+ Exact exports: `USER_MANAGED_LOOPBACK_PROVIDER_MODE`, `getCoreLocalModelCatalog`, `getCoreLocalModelCatalogWithAdmissionFailures`, `getCoreLocalSpeechAvailability`, `isUserManagedLoopbackLocalAIStatus`.
761
+
762
+ ### Availability and normalization
763
+
764
+ **Cross-host.** Fully normalized descriptors and stable admission labels. Transport: In-process projection of Core status. [Deep protocol details](protocols.md).
765
+
766
+ ### Example
767
+
768
+ ```javascript
769
+ import * as module from '/arcane/modules/CoreLocalModelCatalog.js';
770
+
771
+ console.log(Object.keys(module));
772
+ ```
773
+
774
+ ## DataMaintenance.js
775
+
776
+ ### Overview
777
+
778
+ Deletes empty chats and associated/empty memory records inside the current app data scope.
779
+
780
+ ### Public surface
781
+
782
+ `clearEmptyChatsAndMemories()` plus content predicates.
783
+
784
+ Exact exports: `clearEmptyChatsAndMemories`, `hasMemoryContent`, `hasUserEntry`.
785
+
786
+ ### Availability and normalization
787
+
788
+ **Browser / native WebView.** Normalized counts; destructive storage failures preserved. Transport: Global DBOPFS. [Deep protocol details](protocols.md).
789
+
790
+ ### Example
791
+
792
+ ```javascript
793
+ import * as module from '/arcane/modules/DataMaintenance.js';
794
+
795
+ console.log(Object.keys(module));
796
+ ```
797
+
798
+ ## DBLS.js
799
+
800
+ ### Overview
801
+
802
+ Provides app-scoped localStorage tables, batch reads/writes, filtering, deletion, and counts.
803
+
804
+ ### Public surface
805
+
806
+ default `DBLS`; installs `window.dbls`, emits `dbls-ready`; CRUD/batch/key APIs.
807
+
808
+ Exact exports: `default`.
809
+
810
+ ### Availability and normalization
811
+
812
+ **Browser / native WebView.** Scoped keys and values normalized; storage failures mixed. Transport: localStorage + AppDataScope. [Deep protocol details](protocols.md).
813
+
814
+ ### Example
815
+
816
+ ```javascript
817
+ import * as module from '/arcane/modules/DBLS.js';
818
+
819
+ console.log(Object.keys(module));
820
+ ```
821
+
822
+ ## DBOPFS.js
823
+
824
+ ### Overview
825
+
826
+ Provides app-scoped OPFS tables, worker I/O, backup/restore, compression, and CRUD/batch APIs.
827
+
828
+ ### Public surface
829
+
830
+ default `DBOPFS`; installs `window.dbopfs`, emits `dbopfs-ready`; table/file/backup APIs.
831
+
832
+ Exact exports: `default`.
833
+
834
+ ### Availability and normalization
835
+
836
+ **Browser / native WebView.** App scope normalized; DOM/storage errors preserved. Transport: OPFS, DBOPFSWorker, Compression Streams. [Deep protocol details](protocols.md).
837
+
838
+ ### Example
839
+
840
+ ```javascript
841
+ import * as module from '/arcane/modules/DBOPFS.js';
842
+
843
+ console.log(Object.keys(module));
844
+ ```
845
+
846
+ ## DBOPFSWorker.js
847
+
848
+ ### Overview
849
+
850
+ Serializes OPFS sync-handle read/write requests from a MessagePort.
851
+
852
+ ### Public surface
853
+
854
+ No ESM exports; accepts `read` and `write` port requests.
855
+
856
+ This is a dedicated worker protocol and has no ESM exports.
857
+
858
+ ### Availability and normalization
859
+
860
+ **Dedicated worker.** Responses normalize to `{success,fileData?}` or `{error:{name,message}}`. Transport: MessageChannel + OPFS sync access handle. [Deep protocol details](protocols.md).
861
+
862
+ ### Example
863
+
864
+ ```javascript
865
+ const worker = new Worker('/arcane/modules/DBOPFSWorker.js', {type: 'module'});
866
+ ```
867
+
868
+ ## DevelopmentWorkspace.js
869
+
870
+ ### Overview
871
+
872
+ Provides bounded workspace inspection, context, setup task, and Node installer clients without arbitrary command execution.
873
+
874
+ ### Public surface
875
+
876
+ default `DevelopmentWorkspace` and input validators; `inspect()`, `context()`, `setup()`, `installNode()`.
877
+
878
+ Exact exports: `contextQuery`, `default`, `setupTaskId`, `workspaceRoot`.
879
+
880
+ ### Availability and normalization
881
+
882
+ **Native bridge.** Inputs normalized; provider result/error preserved. Transport: Arcane.development. [Deep protocol details](protocols.md).
883
+
884
+ ### Example
885
+
886
+ ```javascript
887
+ import * as module from '/arcane/modules/DevelopmentWorkspace.js';
888
+
889
+ console.log(Object.keys(module));
890
+ ```
891
+
892
+ ## DirectoryPicker.js
893
+
894
+ ### Overview
895
+
896
+ Wraps the provider-owned native directory chooser and normalizes selected/cancelled/error results.
897
+
898
+ ### Public surface
899
+
900
+ default `DirectoryPicker`, `normalizeDirectoryPickerOptions()`, `normalizeDirectorySelection()`.
901
+
902
+ Exact exports: `default`, `normalizeDirectoryPickerOptions`, `normalizeDirectorySelection`.
903
+
904
+ ### Availability and normalization
905
+
906
+ **Native bridge.** Strict normalized selection and coded errors. Transport: Arcane.filesystem.selectDirectory. [Deep protocol details](protocols.md).
907
+
908
+ ### Example
909
+
910
+ ```javascript
911
+ import * as module from '/arcane/modules/DirectoryPicker.js';
912
+
913
+ console.log(Object.keys(module));
914
+ ```
915
+
916
+ ## DocumentNavigation.js
917
+
918
+ ### Overview
919
+
920
+ Binds document navigation, filtering, history, current-item reveal, and load initialization.
921
+
922
+ ### Public surface
923
+
924
+ Five binding/filter/reveal helpers.
925
+
926
+ Exact exports: `applyDocumentNavigationFilter`, `bindDocumentNavigation`, `clearDocumentNavigationFilter`, `initializeDocumentNavigation`, `revealCurrentDocumentNavigationItem`.
927
+
928
+ ### Availability and normalization
929
+
930
+ **Browser / native WebView.** Normalized filter/navigation state; DOM effects preserved. Transport: DOM and history. [Deep protocol details](protocols.md).
931
+
932
+ ### Example
933
+
934
+ ```javascript
935
+ import * as module from '/arcane/modules/DocumentNavigation.js';
936
+
937
+ console.log(Object.keys(module));
938
+ ```
939
+
940
+ ## Errors.js
941
+
942
+ ### Overview
943
+
944
+ Normalizes global errors/rejections, fingerprints and deduplicates incidents, persists a ledger, and performs bounded delivery.
945
+
946
+ ### Public surface
947
+
948
+ default `Errors`; event normalizers/fingerprint plus lifecycle, capture, delivery and teardown methods.
949
+
950
+ Exact exports: `default`, `fingerprintIncident`, `normalizeErrorEvent`, `normalizeRejectionEvent`.
951
+
952
+ ### Availability and normalization
953
+
954
+ **Browser / native WebView hybrid.** Incident records normalized; storage/mail failures isolated. Transport: Window events, DBOPFS, Mail. [Deep protocol details](protocols.md).
955
+
956
+ ### Example
957
+
958
+ ```javascript
959
+ import * as module from '/arcane/modules/Errors.js';
960
+
961
+ console.log(Object.keys(module));
962
+ ```
963
+
964
+ ## GifEncoder.js
965
+
966
+ ### Overview
967
+
968
+ Encodes indexed frames into a bounded animated GIF using palette mapping and LZW.
969
+
970
+ ### Public surface
971
+
972
+ default `GifEncoder`, `indexPixels()`, `lzw()`.
973
+
974
+ Exact exports: `default`, `indexPixels`, `lzw`.
975
+
976
+ ### Availability and normalization
977
+
978
+ **Cross-host.** Normalized byte output and bounds. Transport: In-process only. [Deep protocol details](protocols.md).
979
+
980
+ ### Example
981
+
982
+ ```javascript
983
+ import * as module from '/arcane/modules/GifEncoder.js';
984
+
985
+ console.log(Object.keys(module));
986
+ ```
987
+
988
+ ## HTMLImport.js
989
+
990
+ ### Overview
991
+
992
+ Defines the same-origin `<html-import>` loader with open shadow root, inline script execution, and readiness/error events.
993
+
994
+ ### Public surface
995
+
996
+ default `HTMLImport`; registers `html-import`; `connectedCallback()` and `ready`.
997
+
998
+ Exact exports: `default`.
999
+
1000
+ ### Availability and normalization
1001
+
1002
+ **Browser / native WebView.** Public error detail normalized; fetch/DOM failure preserved. Transport: Same-origin fetch + DOM. [Deep protocol details](protocols.md).
1003
+
1004
+ ### Example
1005
+
1006
+ ```javascript
1007
+ import * as module from '/arcane/modules/HTMLImport.js';
1008
+
1009
+ console.log(Object.keys(module));
1010
+ ```
1011
+
1012
+ ## InMemoryCommunicationProvider.js
1013
+
1014
+ ### Overview
1015
+
1016
+ Implements deterministic in-memory thread/message/send behavior for demos and tests.
1017
+
1018
+ ### Public surface
1019
+
1020
+ default provider with `listThreads()`, `getMessages()`, `send()`.
1021
+
1022
+ Exact exports: `default`.
1023
+
1024
+ ### Availability and normalization
1025
+
1026
+ **Cross-host.** Normalized communication entities. Transport: In-process only. [Deep protocol details](protocols.md).
1027
+
1028
+ ### Example
1029
+
1030
+ ```javascript
1031
+ import * as module from '/arcane/modules/InMemoryCommunicationProvider.js';
1032
+
1033
+ console.log(Object.keys(module));
1034
+ ```
1035
+
1036
+ ## IsolatedModelQuestionRunner.js
1037
+
1038
+ ### Overview
1039
+
1040
+ Inspects one exact model and runs one isolated question with proof validation.
1041
+
1042
+ ### Public surface
1043
+
1044
+ default/named runner, `countSentences()`, `inspectModel()`, `runQuestion()`.
1045
+
1046
+ Exact exports: `IsolatedModelQuestionRunner`, `countSentences`, `default`.
1047
+
1048
+ ### Availability and normalization
1049
+
1050
+ **Native bridge or injected provider.** Strict normalized proof/coded errors. Transport: localAI isolated-model methods. [Deep protocol details](protocols.md).
1051
+
1052
+ ### Example
1053
+
1054
+ ```javascript
1055
+ import * as module from '/arcane/modules/IsolatedModelQuestionRunner.js';
1056
+
1057
+ console.log(Object.keys(module));
1058
+ ```
1059
+
1060
+ ## LocalAIReadiness.js
1061
+
1062
+ ### Overview
1063
+
1064
+ Derives selected AI requirements and returns a frozen readiness/recovery report across browser, desktop, and Android modes.
1065
+
1066
+ ### Public surface
1067
+
1068
+ Endpoint constant plus requirements, speech-health, and readiness helpers.
1069
+
1070
+ Exact exports: `LOCAL_AI_BROWSER_ENDPOINTS`, `checkLocalAIReadiness`, `deriveLocalAIRequirements`, `evaluateLocalSpeechHealth`.
1071
+
1072
+ ### Availability and normalization
1073
+
1074
+ **Browser/native hybrid.** Fully normalized report and stable error codes; browsers never probe Ollama. Transport: Arcane.localAI, Arcane.speech, bounded browser speech health. [Deep protocol details](protocols.md).
1075
+
1076
+ ### Example
1077
+
1078
+ ```javascript
1079
+ import * as module from '/arcane/modules/LocalAIReadiness.js';
1080
+
1081
+ console.log(Object.keys(module));
1082
+ ```
1083
+
1084
+ ## LocalAIReadinessController.js
1085
+
1086
+ ### Overview
1087
+
1088
+ Coordinates local-AI status component checks, ensured recovery, availability projection, and teardown.
1089
+
1090
+ ### Public surface
1091
+
1092
+ `createLocalAIReadinessController()`, `availabilityFromReport()`.
1093
+
1094
+ Exact exports: `availabilityFromReport`, `createLocalAIReadinessController`.
1095
+
1096
+ ### Availability and normalization
1097
+
1098
+ **Browser/native hybrid.** Normalized controller state and change events. Transport: LocalAIReadiness + component events. [Deep protocol details](protocols.md).
1099
+
1100
+ ### Example
1101
+
1102
+ ```javascript
1103
+ import * as module from '/arcane/modules/LocalAIReadinessController.js';
1104
+
1105
+ console.log(Object.keys(module));
1106
+ ```
1107
+
1108
+ ## Mail.js
1109
+
1110
+ ### Overview
1111
+
1112
+ Builds bounded reports and prefers the native mail capability with an explicit HTTP transport fallback.
1113
+
1114
+ ### Public surface
1115
+
1116
+ default `Mail`, `resolveMailConfig()`; installs `window.mail`; `send()`.
1117
+
1118
+ Exact exports: `default`, `resolveMailConfig`.
1119
+
1120
+ ### Availability and normalization
1121
+
1122
+ **Browser/native hybrid + cloud.** Mail inputs/results normalized; transport failures mixed. Transport: Arcane.mail.send or MailTransport HTTP(S). [Deep protocol details](protocols.md).
1123
+
1124
+ ### Example
1125
+
1126
+ ```javascript
1127
+ import * as module from '/arcane/modules/Mail.js';
1128
+
1129
+ console.log(Object.keys(module));
1130
+ ```
1131
+
1132
+ ## MailTransport.mjs
1133
+
1134
+ ### Overview
1135
+
1136
+ Sends one bounded mail report to a normalized HTTP(S) endpoint with timeout and response-size limits.
1137
+
1138
+ ### Public surface
1139
+
1140
+ Timeout/size constants, `normalizeMailEndpoint()`, `sendMailReport()`.
1141
+
1142
+ Exact exports: `DEFAULT_MAIL_REQUEST_TIMEOUT_MS`, `MAX_MAIL_RESPONSE_BYTES`, `normalizeMailEndpoint`, `sendMailReport`.
1143
+
1144
+ ### Availability and normalization
1145
+
1146
+ **Browser/server with fetch + cloud.** Normalized endpoint/timeout/size errors; remote detail bounded. Transport: HTTP(S) fetch + AbortController. [Deep protocol details](protocols.md).
1147
+
1148
+ ### Example
1149
+
1150
+ ```javascript
1151
+ import * as module from '/arcane/modules/MailTransport.mjs';
1152
+
1153
+ console.log(Object.keys(module));
1154
+ ```
1155
+
1156
+ ## Marked.min.js
1157
+
1158
+ ### Overview
1159
+
1160
+ Vendored Marked 18.0.5 Markdown lexer, parser, renderer, extension, and walk-token API.
1161
+
1162
+ ### Public surface
1163
+
1164
+ Twenty named/default-style Marked exports; see bundled license notice.
1165
+
1166
+ Exact exports: `Hooks`, `Lexer`, `Marked`, `Parser`, `Renderer`, `TextRenderer`, `Tokenizer`, `defaults`, `getDefaults`, `lexer`, `marked`, `options`, `parse`, `parseInline`, `parser`, `setOptions`, `use`, `walkTokens`.
1167
+
1168
+ ### Availability and normalization
1169
+
1170
+ **Cross-host vendor module.** Vendor-native Marked contract. Transport: In-process only. [Deep protocol details](protocols.md).
1171
+
1172
+ ### Example
1173
+
1174
+ ```javascript
1175
+ import * as module from '/arcane/modules/Marked.min.js';
1176
+
1177
+ console.log(Object.keys(module));
1178
+ ```
1179
+
1180
+ ## MD.js
1181
+
1182
+ ### Overview
1183
+
1184
+ Renders Markdown with Marked and exposes a DOM-sanitized projection.
1185
+
1186
+ ### Public surface
1187
+
1188
+ default `MD`; `raw`, `rendered`, `safeRendered`, `append()`.
1189
+
1190
+ Exact exports: `default`.
1191
+
1192
+ ### Availability and normalization
1193
+
1194
+ **Browser / native WebView.** Raw Marked behavior plus Arcane sanitization; parse errors vendor-native. Transport: Marked + DOM template sanitization. [Deep protocol details](protocols.md).
1195
+
1196
+ ### Example
1197
+
1198
+ ```javascript
1199
+ import * as module from '/arcane/modules/MD.js';
1200
+
1201
+ console.log(Object.keys(module));
1202
+ ```
1203
+
1204
+ ## MemoryRecords.js
1205
+
1206
+ ### Overview
1207
+
1208
+ Normalizes memory content and detects meaningful stored memory.
1209
+
1210
+ ### Public surface
1211
+
1212
+ `normalizeMemoryContent()`, `hasMemoryContent()`.
1213
+
1214
+ Exact exports: `hasMemoryContent`, `normalizeMemoryContent`.
1215
+
1216
+ ### Availability and normalization
1217
+
1218
+ **Cross-host.** Fully normalized string/boolean results. Transport: In-process only. [Deep protocol details](protocols.md).
1219
+
1220
+ ### Example
1221
+
1222
+ ```javascript
1223
+ import * as module from '/arcane/modules/MemoryRecords.js';
1224
+
1225
+ console.log(Object.keys(module));
1226
+ ```
1227
+
1228
+ ## MessageAdvisory.js
1229
+
1230
+ ### Overview
1231
+
1232
+ Normalizes message content advisories and contains per-message inspection failures.
1233
+
1234
+ ### Public surface
1235
+
1236
+ Three advisory/inspection helpers.
1237
+
1238
+ Exact exports: `inspectMessageRecords`, `normalizeContentAdvisory`, `unavailableMessageInspection`.
1239
+
1240
+ ### Availability and normalization
1241
+
1242
+ **Cross-host.** Normalized advisory records; inspector failures converted to unavailable results. Transport: Injected inspector. [Deep protocol details](protocols.md).
1243
+
1244
+ ### Example
1245
+
1246
+ ```javascript
1247
+ import * as module from '/arcane/modules/MessageAdvisory.js';
1248
+
1249
+ console.log(Object.keys(module));
1250
+ ```
1251
+
1252
+ ## ModelDefinition.js
1253
+
1254
+ ### Overview
1255
+
1256
+ Parses the deterministic packaged Modelfile subset and extracts the SYSTEM prompt.
1257
+
1258
+ ### Public surface
1259
+
1260
+ `parseModelDefinition()`, `loadModelDefinitionSystemPrompt()`.
1261
+
1262
+ Exact exports: `loadModelDefinitionSystemPrompt`, `parseModelDefinition`.
1263
+
1264
+ ### Availability and normalization
1265
+
1266
+ **Cross-host.** Strict normalized definition with coded syntax errors. Transport: Optional same-origin read-only fetch. [Deep protocol details](protocols.md).
1267
+
1268
+ ### Example
1269
+
1270
+ ```javascript
1271
+ import * as module from '/arcane/modules/ModelDefinition.js';
1272
+
1273
+ console.log(Object.keys(module));
1274
+ ```
1275
+
1276
+ ## Ollama.js
1277
+
1278
+ ### Overview
1279
+
1280
+ Provides the first-class Arcane Ollama client without direct access to localhost:11434.
1281
+
1282
+ ### Public surface
1283
+
1284
+ `Ollama`, singleton/default `ollama`; 24 methods; installs `globalThis.arcaneOllama`, emits `arcane-ollama-ready`.
1285
+
1286
+ Exact exports: `Ollama`, `default`, `ollama`.
1287
+
1288
+ ### Availability and normalization
1289
+
1290
+ **Native bridge.** Principal methods preserve provider-native envelopes; readiness/text/unload helpers normalize. Transport: Arcane.ollama through Core. [Deep protocol details](protocols.md).
1291
+
1292
+ ### Example
1293
+
1294
+ ```javascript
1295
+ import * as module from '/arcane/modules/Ollama.js';
1296
+
1297
+ console.log(Object.keys(module));
1298
+ ```
1299
+
1300
+ ## OllamaModelIdentifier.js
1301
+
1302
+ ### Overview
1303
+
1304
+ Validates and canonicalizes the syntax of Ollama model identifiers without granting model admission.
1305
+
1306
+ ### Public surface
1307
+
1308
+ `normalizeOllamaModelIdentifier()`, `isOllamaModelIdentifier()`.
1309
+
1310
+ Exact exports: `isOllamaModelIdentifier`, `normalizeOllamaModelIdentifier`.
1311
+
1312
+ ### Availability and normalization
1313
+
1314
+ **Cross-host.** Fully normalized string/boolean result. Transport: In-process only. [Deep protocol details](protocols.md).
1315
+
1316
+ ### Example
1317
+
1318
+ ```javascript
1319
+ import * as module from '/arcane/modules/OllamaModelIdentifier.js';
1320
+
1321
+ console.log(Object.keys(module));
1322
+ ```
1323
+
1324
+ ## OllamaSettings.js
1325
+
1326
+ ### Overview
1327
+
1328
+ Defines bounded runtime/service preference schemas and deterministic Arcane brain alias names.
1329
+
1330
+ ### Public surface
1331
+
1332
+ `ollamaRuntimeSchema`, `ollamaServiceSchema`, `arcaneBrainModelName()`.
1333
+
1334
+ Exact exports: `arcaneBrainModelName`, `ollamaRuntimeSchema`, `ollamaServiceSchema`.
1335
+
1336
+ ### Availability and normalization
1337
+
1338
+ **Cross-host.** Fully normalized settings/name contract. Transport: In-process only. [Deep protocol details](protocols.md).
1339
+
1340
+ ### Example
1341
+
1342
+ ```javascript
1343
+ import * as module from '/arcane/modules/OllamaSettings.js';
1344
+
1345
+ console.log(Object.keys(module));
1346
+ ```
1347
+
1348
+ ## OpenMeteoWeatherProvider.js
1349
+
1350
+ ### Overview
1351
+
1352
+ Searches and loads Open-Meteo data into frozen Arcane weather entities.
1353
+
1354
+ ### Public surface
1355
+
1356
+ Endpoint constants, default provider, `mapForecast()`; search/load methods and lifecycle events.
1357
+
1358
+ Exact exports: `OPEN_METEO_ENDPOINTS`, `default`, `mapForecast`.
1359
+
1360
+ ### Availability and normalization
1361
+
1362
+ **Browser / native WebView / server with fetch + cloud.** Provider data normalized to entities; transport errors mixed. Transport: Open-Meteo HTTPS. [Deep protocol details](protocols.md).
1363
+
1364
+ ### Example
1365
+
1366
+ ```javascript
1367
+ import * as module from '/arcane/modules/OpenMeteoWeatherProvider.js';
1368
+
1369
+ console.log(Object.keys(module));
1370
+ ```
1371
+
1372
+ ## PreferenceStore.js
1373
+
1374
+ ### Overview
1375
+
1376
+ Loads and updates schema-defined app preferences through native storage with a narrow browser fallback.
1377
+
1378
+ ### Public surface
1379
+
1380
+ default `PreferenceStore`, re-exported `Preference`/schema; load/set/reset APIs and events.
1381
+
1382
+ Exact exports: `Preference`, `default`, `preferenceSchema`.
1383
+
1384
+ ### Availability and normalization
1385
+
1386
+ **Browser/native hybrid.** Values normalized; only exact unsupported capability falls back. Transport: Arcane.preferences or app-scoped localStorage. [Deep protocol details](protocols.md).
1387
+
1388
+ ### Example
1389
+
1390
+ ```javascript
1391
+ import * as module from '/arcane/modules/PreferenceStore.js';
1392
+
1393
+ console.log(Object.keys(module));
1394
+ ```
1395
+
1396
+ ## QRCode.min.js
1397
+
1398
+ ### Overview
1399
+
1400
+ Vendored QRCode generator for DOM, canvas, SVG, and image output.
1401
+
1402
+ ### Public surface
1403
+
1404
+ No ESM exports; global `QRCode`, `makeCode()`, `makeImage()`, `clear()`, `CorrectLevel`.
1405
+
1406
+ This is a classic global script and has no ESM exports.
1407
+
1408
+ ### Availability and normalization
1409
+
1410
+ **Browser vendor script.** Vendor-native. Transport: Classic script global + DOM/canvas/SVG. [Deep protocol details](protocols.md).
1411
+
1412
+ ### Example
1413
+
1414
+ ```html
1415
+ <script src="/arcane/modules/QRCode.min.js"></script>
1416
+ ```
1417
+
1418
+ ## Questionnaire.js
1419
+
1420
+ ### Overview
1421
+
1422
+ Evaluates whether a one-time questionnaire prompt is due without performing the prompt.
1423
+
1424
+ ### Public surface
1425
+
1426
+ Notification default and `Questionnaire` with timing/check methods.
1427
+
1428
+ Exact exports: `DEFAULT_QUESTIONNAIRE_NOTIFICATION_TIME_MS`, `Questionnaire`.
1429
+
1430
+ ### Availability and normalization
1431
+
1432
+ **Cross-host.** Normalized fail-closed boolean. Transport: In-process clock only. [Deep protocol details](protocols.md).
1433
+
1434
+ ### Example
1435
+
1436
+ ```javascript
1437
+ import * as module from '/arcane/modules/Questionnaire.js';
1438
+
1439
+ console.log(Object.keys(module));
1440
+ ```
1441
+
1442
+ ## RecordLinkIndex.js
1443
+
1444
+ ### Overview
1445
+
1446
+ Parses record links and builds their normalized index.
1447
+
1448
+ ### Public surface
1449
+
1450
+ `parseRecordLinks()`, `buildRecordLinkIndex()`.
1451
+
1452
+ Exact exports: `buildRecordLinkIndex`, `parseRecordLinks`.
1453
+
1454
+ ### Availability and normalization
1455
+
1456
+ **Cross-host.** Fully normalized. Transport: In-process only. [Deep protocol details](protocols.md).
1457
+
1458
+ ### Example
1459
+
1460
+ ```javascript
1461
+ import * as module from '/arcane/modules/RecordLinkIndex.js';
1462
+
1463
+ console.log(Object.keys(module));
1464
+ ```
1465
+
1466
+ ## RecordPassageIndex.js
1467
+
1468
+ ### Overview
1469
+
1470
+ Indexes text lines, page markers, dates, rules, and excerpts for record review.
1471
+
1472
+ ### Public surface
1473
+
1474
+ Eight text/page/date/rule helper exports.
1475
+
1476
+ Exact exports: `cleanExcerpt`, `extractDateMentions`, `findRulePassages`, `pageAtLine`, `pageMarkers`, `parseDateMention`, `textLines`, `validIsoDate`.
1477
+
1478
+ ### Availability and normalization
1479
+
1480
+ **Cross-host.** Fully normalized. Transport: In-process only. [Deep protocol details](protocols.md).
1481
+
1482
+ ### Example
1483
+
1484
+ ```javascript
1485
+ import * as module from '/arcane/modules/RecordPassageIndex.js';
1486
+
1487
+ console.log(Object.keys(module));
1488
+ ```
1489
+
1490
+ ## RecordReviewStore.js
1491
+
1492
+ ### Overview
1493
+
1494
+ Stores normalized record-review decisions through native storage or app-scoped local fallback.
1495
+
1496
+ ### Public surface
1497
+
1498
+ default store, record/review normalizers; `load()`, `get()`, `set()`, `snapshot()`, change event.
1499
+
1500
+ Exact exports: `default`, `normalizeRecordId`, `normalizeReview`.
1501
+
1502
+ ### Availability and normalization
1503
+
1504
+ **Browser/native hybrid.** Normalized ids/reviews/snapshots; storage failures mixed. Transport: Arcane.storage or localStorage. [Deep protocol details](protocols.md).
1505
+
1506
+ ### Example
1507
+
1508
+ ```javascript
1509
+ import * as module from '/arcane/modules/RecordReviewStore.js';
1510
+
1511
+ console.log(Object.keys(module));
1512
+ ```
1513
+
1514
+ ## RevocableProjectionLedger.js
1515
+
1516
+ ### Overview
1517
+
1518
+ Implements an append-only bounded in-memory projection/revocation ledger safe for hostile descriptor inputs.
1519
+
1520
+ ### Public surface
1521
+
1522
+ Ledger classes, limits/status/reason constants, clone/fingerprint/port helpers, append/query/list APIs.
1523
+
1524
+ Exact exports: `DEFAULT_PROJECTION_LEDGER_CAPACITY`, `DEFAULT_PROJECTION_LEDGER_STORED_CHARACTERS`, `DEFAULT_PROJECTION_LEDGER_STORED_NODES`, `DEFAULT_PROJECTION_LEDGER_STORED_UTF8_BYTES`, `MAX_PROJECTION_LEDGER_CAPACITY`, `MAX_PROJECTION_LEDGER_STORED_CHARACTERS`, `MAX_PROJECTION_LEDGER_STORED_NODES`, `MAX_PROJECTION_LEDGER_STORED_UTF8_BYTES`, `PROJECTION_LEDGER_LIMITS`, `PROJECTION_LEDGER_REASON_CODES`, `PROJECTION_LEDGER_SCHEMA_VERSION`, `PROJECTION_LEDGER_STATUSES`, `ProjectionLedgerError`, `RevocableProjectionLedger`, `cloneProjectionLedgerValue`, `createProjectionLedgerFingerprint`, `createRevocableProjectionLedgerPortAdapter`, `default`.
1525
+
1526
+ ### Availability and normalization
1527
+
1528
+ **Cross-host.** Strict normalization with stable `ProjectionLedgerError`. Transport: In-process or explicit port adapter. [Deep protocol details](protocols.md).
1529
+
1530
+ ### Example
1531
+
1532
+ ```javascript
1533
+ import * as module from '/arcane/modules/RevocableProjectionLedger.js';
1534
+
1535
+ console.log(Object.keys(module));
1536
+ ```
1537
+
1538
+ ## RiskSignalAnalyzer.js
1539
+
1540
+ ### Overview
1541
+
1542
+ Matches configured risk signals and levels against bounded text.
1543
+
1544
+ ### Public surface
1545
+
1546
+ `DEFAULT_LEVELS`, `analyzeRiskSignals()`.
1547
+
1548
+ Exact exports: `DEFAULT_LEVELS`, `analyzeRiskSignals`.
1549
+
1550
+ ### Availability and normalization
1551
+
1552
+ **Cross-host.** Fully normalized. Transport: In-process only. [Deep protocol details](protocols.md).
1553
+
1554
+ ### Example
1555
+
1556
+ ```javascript
1557
+ import * as module from '/arcane/modules/RiskSignalAnalyzer.js';
1558
+
1559
+ console.log(Object.keys(module));
1560
+ ```
1561
+
1562
+ ## ScamRiskPolicy.js
1563
+
1564
+ ### Overview
1565
+
1566
+ Combines deterministic scam signals with Arcane blocked-domain evidence and safety guidance.
1567
+
1568
+ ### Public surface
1569
+
1570
+ Signals plus load, assess, and guidance helpers.
1571
+
1572
+ Exact exports: `assessScamRisk`, `loadScamNetworkPolicy`, `scamRiskSignals`, `scamSafetyGuidance`.
1573
+
1574
+ ### Availability and normalization
1575
+
1576
+ **Cross-host.** Fully normalized. Transport: Arcane network policy fetch. [Deep protocol details](protocols.md).
1577
+
1578
+ ### Example
1579
+
1580
+ ```javascript
1581
+ import * as module from '/arcane/modules/ScamRiskPolicy.js';
1582
+
1583
+ console.log(Object.keys(module));
1584
+ ```
1585
+
1586
+ ## ScopedOPFSCache.js
1587
+
1588
+ ### Overview
1589
+
1590
+ Provides a narrow exact-key JSON cache inside one app-owned OPFS namespace.
1591
+
1592
+ ### Public surface
1593
+
1594
+ default `ScopedOPFSCache`; support check and get/set/delete APIs.
1595
+
1596
+ Exact exports: `default`.
1597
+
1598
+ ### Availability and normalization
1599
+
1600
+ **Browser / native WebView.** Keys/limits/corruption handling normalized; storage errors mixed. Transport: OPFS + AppDataScope. [Deep protocol details](protocols.md).
1601
+
1602
+ ### Example
1603
+
1604
+ ```javascript
1605
+ import * as module from '/arcane/modules/ScopedOPFSCache.js';
1606
+
1607
+ console.log(Object.keys(module));
1608
+ ```
1609
+
1610
+ ## ScreenCapture.js
1611
+
1612
+ ### Overview
1613
+
1614
+ Captures a display surface as image, video, or GIF with explicit lifecycle events.
1615
+
1616
+ ### Public surface
1617
+
1618
+ default `ScreenCapture`; acquire/capture/start/stop/reset methods.
1619
+
1620
+ Exact exports: `default`.
1621
+
1622
+ ### Availability and normalization
1623
+
1624
+ **Browser / native WebView.** State/events normalized; permission and codec errors mixed. Transport: getDisplayMedia, MediaRecorder, canvas, GifEncoder. [Deep protocol details](protocols.md).
1625
+
1626
+ ### Example
1627
+
1628
+ ```javascript
1629
+ import * as module from '/arcane/modules/ScreenCapture.js';
1630
+
1631
+ console.log(Object.keys(module));
1632
+ ```
1633
+
1634
+ ## SpeechPlayback.js
1635
+
1636
+ ### Overview
1637
+
1638
+ Segments bounded text, queues latest-request speech synthesis, and controls lookahead HTML audio playback.
1639
+
1640
+ ### Public surface
1641
+
1642
+ SpeechPlayback class/default, voice/limit constants, `splitSpeechText()`, playback lifecycle APIs.
1643
+
1644
+ Exact exports: `MAX_SPEECH_CHARACTERS`, `MAX_SPEECH_CHUNKS`, `MAX_SPEECH_INPUT`, `PREFERRED_STREAM_SEGMENT`, `SPEECH_VOICE_ALIASES`, `SPEECH_VOICE_OPTIONS`, `SpeechPlayback`, `default`, `splitSpeechText`.
1645
+
1646
+ ### Availability and normalization
1647
+
1648
+ **Browser + native bridge.** State/limits normalized; provider/media failures mixed. Transport: Arcane.speech.synthesize, Blob URLs, audio element. [Deep protocol details](protocols.md).
1649
+
1650
+ ### Example
1651
+
1652
+ ```javascript
1653
+ import * as module from '/arcane/modules/SpeechPlayback.js';
1654
+
1655
+ console.log(Object.keys(module));
1656
+ ```
1657
+
1658
+ ## StaticDocumentCatalog.js
1659
+
1660
+ ### Overview
1661
+
1662
+ Loads a positive static document inventory with byte/hash verification, cache, search, and bounded context.
1663
+
1664
+ ### Public surface
1665
+
1666
+ default catalog, schema constant, catalog normalizer/cache-key; list/get/search/hydrate/context APIs.
1667
+
1668
+ Exact exports: `CATALOG_SCHEMA_VERSION`, `default`, `normalizeStaticDocumentCatalog`, `staticDocumentCacheKey`.
1669
+
1670
+ ### Availability and normalization
1671
+
1672
+ **Browser / native WebView / server with fetch.** Strict catalog/content normalization; transport failures mixed. Transport: HTTP(S), crypto.subtle, optional cache. [Deep protocol details](protocols.md).
1673
+
1674
+ ### Example
1675
+
1676
+ ```javascript
1677
+ import * as module from '/arcane/modules/StaticDocumentCatalog.js';
1678
+
1679
+ console.log(Object.keys(module));
1680
+ ```
1681
+
1682
+ ## SystemAppearance.js
1683
+
1684
+ ### Overview
1685
+
1686
+ Reads or applies native appearance, returning an explicit unsupported browser state when no bridge exists.
1687
+
1688
+ ### Public surface
1689
+
1690
+ default `SystemAppearance`; `available()`, `current()`, `apply()`.
1691
+
1692
+ Exact exports: `default`.
1693
+
1694
+ ### Availability and normalization
1695
+
1696
+ **Browser/native hybrid.** Absent bridge normalized; native result/error preserved. Transport: Arcane.appearance. [Deep protocol details](protocols.md).
1697
+
1698
+ ### Example
1699
+
1700
+ ```javascript
1701
+ import * as module from '/arcane/modules/SystemAppearance.js';
1702
+
1703
+ console.log(Object.keys(module));
1704
+ ```
1705
+
1706
+ ## SystemPlatformPresentation.js
1707
+
1708
+ ### Overview
1709
+
1710
+ Maps kernel names to presentation labels/classes without granting platform authority.
1711
+
1712
+ ### Public surface
1713
+
1714
+ No ESM exports; global `ArcaneSystemPlatformPresentation` with `kernelType()`, `displayName()`, `apply()`.
1715
+
1716
+ This is a classic global script and has no ESM exports.
1717
+
1718
+ ### Availability and normalization
1719
+
1720
+ **Browser / native WebView classic script.** Fully normalized presentation only. Transport: DOM. [Deep protocol details](protocols.md).
1721
+
1722
+ ### Example
1723
+
1724
+ ```html
1725
+ <script src="/arcane/modules/SystemPlatformPresentation.js"></script>
1726
+ ```
1727
+
1728
+ ## SystemToolRegistry.js
1729
+
1730
+ ### Overview
1731
+
1732
+ Registers validated command builders and constructs command strings without executing them.
1733
+
1734
+ ### Public surface
1735
+
1736
+ default registry, `quoteArgument()`, register/list/get/build APIs.
1737
+
1738
+ Exact exports: `default`, `quoteArgument`.
1739
+
1740
+ ### Availability and normalization
1741
+
1742
+ **Cross-host.** Fully normalized definitions/quoting. Transport: In-process only. [Deep protocol details](protocols.md).
1743
+
1744
+ ### Example
1745
+
1746
+ ```javascript
1747
+ import * as module from '/arcane/modules/SystemToolRegistry.js';
1748
+
1749
+ console.log(Object.keys(module));
1750
+ ```
1751
+
1752
+ ## TerminalClient.js
1753
+
1754
+ ### Overview
1755
+
1756
+ Maps native terminal sessions and Arcane events into an EventTarget client.
1757
+
1758
+ ### Public surface
1759
+
1760
+ default `TerminalClient`; start/write/resize/signal/close/receive/destroy APIs and terminal events.
1761
+
1762
+ Exact exports: `default`.
1763
+
1764
+ ### Availability and normalization
1765
+
1766
+ **Native bridge.** Client events/state normalized; native result/error mixed. Transport: Arcane.terminal + Arcane.events. [Deep protocol details](protocols.md).
1767
+
1768
+ ### Example
1769
+
1770
+ ```javascript
1771
+ import * as module from '/arcane/modules/TerminalClient.js';
1772
+
1773
+ console.log(Object.keys(module));
1774
+ ```
1775
+
1776
+ ## TerminalCommandRegistry.js
1777
+
1778
+ ### Overview
1779
+
1780
+ Routes parsed command lines to injected handlers and provides definitions/completions.
1781
+
1782
+ ### Public surface
1783
+
1784
+ default registry, `splitCommandLine()`, register/resolve/definitions/completions/execute APIs.
1785
+
1786
+ Exact exports: `default`, `splitCommandLine`.
1787
+
1788
+ ### Availability and normalization
1789
+
1790
+ **Cross-host.** Parsing/routing normalized; handler result/error preserved. Transport: Injected handlers. [Deep protocol details](protocols.md).
1791
+
1792
+ ### Example
1793
+
1794
+ ```javascript
1795
+ import * as module from '/arcane/modules/TerminalCommandRegistry.js';
1796
+
1797
+ console.log(Object.keys(module));
1798
+ ```
1799
+
1800
+ ## ThemeBootstrap.js
1801
+
1802
+ ### Overview
1803
+
1804
+ Performs import-time Arcane theme loading and subscribes to native appearance changes.
1805
+
1806
+ ### Public surface
1807
+
1808
+ `bootstrapArcaneTheme()`, `arcaneThemeReady`, default ready promise.
1809
+
1810
+ Exact exports: `arcaneThemeReady`, `bootstrapArcaneTheme`, `default`.
1811
+
1812
+ ### Availability and normalization
1813
+
1814
+ **Browser/native hybrid.** Theme state normalized; storage/native errors mixed. Transport: ThemeManager + Arcane.events. [Deep protocol details](protocols.md).
1815
+
1816
+ ### Example
1817
+
1818
+ ```javascript
1819
+ import * as module from '/arcane/modules/ThemeBootstrap.js';
1820
+
1821
+ console.log(Object.keys(module));
1822
+ ```
1823
+
1824
+ ## ThemeManager.js
1825
+
1826
+ ### Overview
1827
+
1828
+ Loads, applies, previews, saves, resets, and synchronizes semantic Arcane themes.
1829
+
1830
+ ### Public surface
1831
+
1832
+ default `ThemeManager`, `loadAndApplyTheme()`; scheme/custom/system APIs and `arcane-theme-change`.
1833
+
1834
+ Exact exports: `default`, `loadAndApplyTheme`.
1835
+
1836
+ ### Availability and normalization
1837
+
1838
+ **Browser/native hybrid.** Theme values/events normalized; storage/native failures mixed. Transport: PreferenceStore, DOM, Arcane.appearance. [Deep protocol details](protocols.md).
1839
+
1840
+ ### Example
1841
+
1842
+ ```javascript
1843
+ import * as module from '/arcane/modules/ThemeManager.js';
1844
+
1845
+ console.log(Object.keys(module));
1846
+ ```
1847
+
1848
+ ## TimeGuard.js
1849
+
1850
+ ### Overview
1851
+
1852
+ Persists and evaluates clock rollback and grace-period state.
1853
+
1854
+ ### Public surface
1855
+
1856
+ default `TimeGuard`; installs `window.timeguard`, emits `time-guard-ready`; clock methods.
1857
+
1858
+ Exact exports: `default`.
1859
+
1860
+ ### Availability and normalization
1861
+
1862
+ **Browser / native WebView.** Time decisions normalized; storage lifecycle mixed. Transport: User + DBOPFS. [Deep protocol details](protocols.md).
1863
+
1864
+ ### Example
1865
+
1866
+ ```javascript
1867
+ import * as module from '/arcane/modules/TimeGuard.js';
1868
+
1869
+ console.log(Object.keys(module));
1870
+ ```
1871
+
1872
+ ## ToolCallRouter.js
1873
+
1874
+ ### Overview
1875
+
1876
+ Parses OpenAI-style tool calls and dispatches complete or streamed calls to injected handlers.
1877
+
1878
+ ### Public surface
1879
+
1880
+ `parseArguments()`, `handleResponse()`, `handleStreamedCalls()`.
1881
+
1882
+ Exact exports: `handleResponse`, `handleStreamedCalls`, `parseArguments`.
1883
+
1884
+ ### Availability and normalization
1885
+
1886
+ **Cross-host.** Arguments/routing normalized; handler results returned or all-settled. Transport: Injected handlers. [Deep protocol details](protocols.md).
1887
+
1888
+ ### Example
1889
+
1890
+ ```javascript
1891
+ import * as module from '/arcane/modules/ToolCallRouter.js';
1892
+
1893
+ console.log(Object.keys(module));
1894
+ ```
1895
+
1896
+ ## uPlot.iife.min.js
1897
+
1898
+ ### Overview
1899
+
1900
+ Vendored uPlot chart constructor and rendering runtime.
1901
+
1902
+ ### Public surface
1903
+
1904
+ No ESM exports; global `uPlot` with data/series/scale/cursor/hook/selection/destroy APIs.
1905
+
1906
+ This is a classic global script and has no ESM exports.
1907
+
1908
+ ### Availability and normalization
1909
+
1910
+ **Browser vendor script.** Vendor-native. Transport: Classic script + canvas/DOM. [Deep protocol details](protocols.md).
1911
+
1912
+ ### Example
1913
+
1914
+ ```html
1915
+ <script src="/arcane/modules/uPlot.iife.min.js"></script>
1916
+ ```
1917
+
1918
+ ## uPlot.LICENSE.txt
1919
+
1920
+ ### Overview
1921
+
1922
+ License companion for the bundled uPlot vendor runtime.
1923
+
1924
+ ### Public surface
1925
+
1926
+ MIT license text.
1927
+
1928
+ ### Availability and normalization
1929
+
1930
+ **Documentation asset.** Not executable. Transport: None. [Deep protocol details](protocols.md).
1931
+
1932
+ ### Example
1933
+
1934
+ ```text
1935
+ /arcane/modules/uPlot.LICENSE.txt
1936
+ ```
1937
+
1938
+ ## uPlot.min.css
1939
+
1940
+ ### Overview
1941
+
1942
+ Bundled uPlot presentation stylesheet.
1943
+
1944
+ ### Public surface
1945
+
1946
+ Load with a stylesheet link before rendering uPlot charts.
1947
+
1948
+ ### Availability and normalization
1949
+
1950
+ **Browser stylesheet.** Presentation only. Transport: CSS. [Deep protocol details](protocols.md).
1951
+
1952
+ ### Example
1953
+
1954
+ ```html
1955
+ <link rel="stylesheet" href="/arcane/modules/uPlot.min.css">
1956
+ ```
1957
+
1958
+ ## WaitForComponent.js
1959
+
1960
+ ### Overview
1961
+
1962
+ Waits for a component property, method, or readiness event with optional error event and bounded timeout.
1963
+
1964
+ ### Public surface
1965
+
1966
+ default `waitForComponent()`.
1967
+
1968
+ Exact exports: `default`.
1969
+
1970
+ ### Availability and normalization
1971
+
1972
+ **Cross-host EventTarget / browser component.** Normalized coded readiness, error, and timeout results. Transport: EventTarget + timers. [Deep protocol details](protocols.md).
1973
+
1974
+ ### Example
1975
+
1976
+ ```javascript
1977
+ import * as module from '/arcane/modules/WaitForComponent.js';
1978
+
1979
+ console.log(Object.keys(module));
1980
+ ```
1981
+
1982
+ ## YouTubeMedia.js
1983
+
1984
+ ### Overview
1985
+
1986
+ Validates YouTube video/playlist locators and constructs privacy-enhanced embed URLs.
1987
+
1988
+ ### Public surface
1989
+
1990
+ `parseYouTubeMedia()`, `youtubeEmbedUrl()`.
1991
+
1992
+ Exact exports: `parseYouTubeMedia`, `youtubeEmbedUrl`.
1993
+
1994
+ ### Availability and normalization
1995
+
1996
+ **Cross-host.** Fully normalized. Transport: URL construction only. [Deep protocol details](protocols.md).
1997
+
1998
+ ### Example
1999
+
2000
+ ```javascript
2001
+ import * as module from '/arcane/modules/YouTubeMedia.js';
2002
+
2003
+ console.log(Object.keys(module));
2004
+ ```
2005
+
2006
+ ## Entity and component continuations
2007
+
2008
+ - [Runtime entity modules](runtime-entities.md) explains all 15 modules, and [shared entity contracts](core/arcane-entities.md) owns all 35 exports.
2009
+ - [Runtime components](runtime-components.md) owns all 39 HTML-import fragments, methods, slots, and events.
2010
+ - [Arcane Ollama](arcane-ollama.md) expands the raw-versus-normalized behavior of `Ollama.js`.