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,242 @@
1
+ # Protocol and host architecture
2
+
3
+ This is the deep reference behind the compact availability notes elsewhere.
4
+ Application developers normally call one documented API and do not choose a
5
+ wire protocol directly.
6
+
7
+ ## Layer map
8
+
9
+ ```text
10
+ application code
11
+ |-- Node SDK API ---------------- arcane-cli-events/1 + SDK receipts
12
+ |-- EventManager ---------------- synchronous bus + arcane-event-stack/1
13
+ |
14
+ `-- renderer ESM / globalThis.Arcane
15
+ |-- standalone browser ----- standard Web APIs / allowed HTTPS
16
+ |-- development host ------- development HTTP bridge
17
+ |-- Microsoft NT native ---- WebView2 host bridge
18
+ |-- Linux native ----------- WebKitGTK host bridge
19
+ `-- Android native --------- Android WebView message bridge
20
+ |
21
+ `-- Arcane Core/provider boundary
22
+ |-- platform services
23
+ |-- ArcaneOllama loopback service
24
+ `-- explicitly selected cloud APIs
25
+ ```
26
+
27
+ Each downward boundary can add authority and platform capability. None can be
28
+ inferred merely from a function existing in shared JavaScript.
29
+
30
+ ## SDK package and CLI protocols
31
+
32
+ The npm package API is ordinary Node.js ESM. The CLI and programmatic toolchain
33
+ share one headless operation implementation. Long-running operations accept
34
+ before blocking work, own their task, stream structured events with bounded
35
+ backpressure, emit progress or heartbeats, support cancellation where the
36
+ underlying operation can do so safely, and surface failure through rejection or
37
+ a nonzero CLI status.
38
+
39
+ Machine output uses `arcane-cli-events/1`. Native planning and providers use:
40
+
41
+ - `arcane-target-adapter/1` for target adapters;
42
+ - `arcane-native-build-plan/1` for immutable native plans;
43
+ - `arcane-native-builder/1` for injected native builders;
44
+ - `arcane-integrated-toolchain/1` for the fixed integrated shared/Core provider.
45
+
46
+ These protocols normalize orchestration and evidence. They do not normalize a
47
+ Windows EXE, Linux DEB, Android APK, and portable directory into the same
48
+ artifact kind.
49
+
50
+ ## Central events and time-travel data
51
+
52
+ `arcane-os/event-manager` is host-neutral JavaScript. Its live event path is
53
+ synchronous, in-process `event-pubsub`; it does not select WebView2,
54
+ WebKitGTK, Android, HTTP, Core, or a kernel boundary. Optional history uses the
55
+ strict `arcane-event-stack/1` data format. That protocol names an immutable
56
+ diagnostic document, not a network channel and not the `arcane/1` Core RPC
57
+ protocol.
58
+
59
+ Live listeners receive the original arguments. Recording separately snapshots
60
+ payloads and metadata with explicit depth, entry, string, and history limits;
61
+ redaction is enabled by default. Exported stacks can be moved between Node and
62
+ browser hosts because `parseEventStack()` validates and canonicalizes the data
63
+ before playback. Review mode emits immutable records, events mode deliberately
64
+ re-emits recorded event types, and neither mode restores external host side
65
+ effects or DOM state.
66
+
67
+ <details>
68
+ <summary>Event-stack identity, overflow, and trust boundary</summary>
69
+
70
+ Each document carries `protocol`, `sessionId`, `createdAt`, and ordered
71
+ `events`. Each record repeats the protocol/session and carries sequence,
72
+ timing, nesting/causation, source/category, payload, metadata, status, and
73
+ failure evidence. At `maxEvents`, the manager appends one terminal
74
+ `arcane.time-travel.overflow` marker, disables recording, and stops DOM
75
+ observation; this explicit marker is why a valid overflow document may contain
76
+ `maxEvents + 1` records. Import is strict, rejects extra or unsafe structure,
77
+ and grants no Core capability, app admission, or provider authority.
78
+
79
+ </details>
80
+
81
+ See [EventManager and time-travel review](event-manager.md) for the callable
82
+ surface, DOM privacy defaults, playback modes, and recovery behavior.
83
+
84
+ ## Browser runtime delivery
85
+
86
+ External and integrated workspaces keep the same application URLs. Runtime ESM
87
+ is served beneath `/arcane`, the vendored dependency beneath
88
+ `/node_modules/strong-type`, and license material beneath
89
+ `/licenses/arcane-os`. A browser import such as:
90
+
91
+ ```javascript
92
+ import ollama from '/arcane/modules/Ollama.js';
93
+ ```
94
+
95
+ uses browser ESM in every renderer. The imported module can be pure browser
96
+ logic, standard-Web-API logic, or a client of `globalThis.Arcane`. Import
97
+ transport and host RPC are separate layers.
98
+
99
+ ## Arcane application protocol
100
+
101
+ `globalThis.Arcane.protocol` is `arcane/1`. The shared API wraps transport
102
+ selection, request ids, JSON-safe values, promise settlement, `Arcane.Error`,
103
+ and renderer events. The current transport snapshot is synchronous:
104
+
105
+ ```javascript
106
+ const {connected, transport, native, managedLocalAI} =
107
+ globalThis.Arcane.runtime.current();
108
+ ```
109
+
110
+ Transport values are `webview2`, `webkitgtk`, `android-webview`,
111
+ `development-http`, and `standalone`. `connected` means a callable transport
112
+ was initialized. It does not prove that Core answered, the method is admitted,
113
+ or a dependency is ready.
114
+
115
+ ## Native host transports
116
+
117
+ ### Microsoft NT / WebView2
118
+
119
+ The renderer uses the WebView2 host messaging surface. The host binds one app
120
+ identity and native policy to the session before Core dispatch. Microsoft NT
121
+ can expose managed-service and privileged platform operations that do not exist
122
+ in an ordinary browser.
123
+
124
+ ### Linux / WebKitGTK
125
+
126
+ The renderer uses the WebKitGTK host bridge with the same application-facing
127
+ `Arcane` protocol. Linux can implement the same normalized methods through
128
+ different host code. Some administrator-owned service settings intentionally
129
+ return unsupported/manual guidance rather than imitating Microsoft NT mutation.
130
+
131
+ ### Android / Android WebView
132
+
133
+ Android injects a main-frame, origin-bound bridge for the packaged application.
134
+ Its generated registry binds application identity, package version, entry,
135
+ grants, and method policy. Android exposes a narrower surface, including an
136
+ admitted user-managed local-AI chat projection where configured. Desktop model
137
+ management is not projected merely because a user-managed Ollama listener is
138
+ reachable.
139
+
140
+ ### macOS
141
+
142
+ No macOS target, native bridge, Core host, artifact, or run contract is exposed
143
+ by this SDK version. A browser may still run browser-only application code, but
144
+ that does not create a native Arcane host or satisfy a native capability.
145
+
146
+ ## Development and remote HTTP transport
147
+
148
+ The development HTTP bridge makes the same application-facing request shape
149
+ available without pretending the browser is a native host. It is a development
150
+ transport, not a production isolation or authority boundary. A remotely
151
+ operated client can use an expressly configured web transport only when the
152
+ host, origin, application identity, and policy admit it; Arcane does not silently
153
+ swap native calls to arbitrary remote HTTP endpoints.
154
+
155
+ When transport changes while the public method remains the same, request
156
+ settlement and public errors stay normalized. Host-specific availability and
157
+ result detail remain documented by the method.
158
+
159
+ ## Core dispatch and capability admission
160
+
161
+ The host binds the caller's application identity. Core checks the exact method,
162
+ required capability, allowed application type/id, privilege, mutation
163
+ exclusivity, request bounds, and relevant package policy. Renderer-supplied app
164
+ ids or grants never replace that bound identity.
165
+
166
+ `Arcane.capabilities.list()` is the Core-side application preflight. It reports
167
+ current grants and admitted methods but does not reserve authority for a later
168
+ call. Each call is checked again.
169
+
170
+ ## Arcane Ollama protocol path
171
+
172
+ The safe application path is:
173
+
174
+ ```text
175
+ renderer Ollama.js or Arcane.ollama
176
+ -> arcane/1 host request
177
+ -> Core capability and package-policy admission
178
+ -> managed ArcaneOllama loopback service
179
+ -> bounded Ollama HTTP operation
180
+ ```
181
+
182
+ Applications never connect directly to `localhost:11434`. Core owns loopback
183
+ endpoint selection, method admission, request/response limits, stream ids,
184
+ chunk events, model-policy checks, native resource admission, and managed
185
+ mutation workflows.
186
+
187
+ Direct Ollama methods preserve the bounded provider-native success envelope.
188
+ Arcane normalizes the outer promise/error and stream lifecycle. `chatText`,
189
+ `generateText`, and `readiness` are helper-level normalizers.
190
+
191
+ ## Explicit cloud provider path
192
+
193
+ `/arcane/modules/AI.js` can use an explicitly selected and configured cloud
194
+ profile over HTTPS. That path is not Core transport fallback. The module adapts
195
+ the selected provider into its high-level application behavior, while provider
196
+ diagnostics and optional fields can remain provider-specific. Native policy and
197
+ network policy still govern a native renderer's outbound access.
198
+
199
+ Local failure never authorizes cloud disclosure. The user or owning application
200
+ must select and configure the cloud provider explicitly.
201
+
202
+ ## Events, streaming, and cancellation
203
+
204
+ Renderer-visible Core events are listed in
205
+ [the Arcane event reference](core/arcane-events.md). Durable
206
+ `transport.ready` and `core.ready` completions can be observed after the fact
207
+ with `Arcane.events.when()`. Ordinary progress, stream, terminal, and appearance
208
+ events are future-only.
209
+
210
+ Ollama streaming correlates chunks to the originating request. A renderer
211
+ abort or timeout can stop observation without proving that a non-cooperative
212
+ host mutation stopped. Method guides state whether Core cooperatively cancels,
213
+ whether partial provider state can remain, and which status call must be
214
+ refreshed before retry.
215
+
216
+ ## Cross-kernel normalization boundary
217
+
218
+ The common contract ends where platform truth must remain different:
219
+
220
+ - API names, promise/error behavior, admission, request bounds, and public
221
+ operation events are normalized;
222
+ - host availability, privilege model, installation/service mechanism, native
223
+ artifact kind, and some diagnostic/result fields remain platform-specific;
224
+ - unsupported platforms fail or return a documented unsupported state; they do
225
+ not run an unrelated browser implementation as a substitute;
226
+ - this SDK version admits a selected checkout and Core only after the current
227
+ native plan's exact protocol, version, feature, capability, method, provider,
228
+ and identity-bound receipt checks all pass;
229
+ - that current-build admission does not promise that a future SDK will accept
230
+ this Core or that this SDK will accept a future Core.
231
+
232
+ ## Receipt and generation boundaries
233
+
234
+ SDK runtime, app releases, bundles, native plans, providers, and artifacts use
235
+ identity-bound receipts. A receipt binds the exact location, filesystem
236
+ identity, bytes/inventory hashes, policy, toolchain, platform/architecture,
237
+ signer/trust result where applicable, and generation. Mutation invalidates the
238
+ receipt before bytes or authority change.
239
+
240
+ Process-local receipts do not authorize reuse across Shell, Core, providers, or
241
+ other processes. Cross-process reuse requires an authenticated shared host or
242
+ broker with retained handles and peer-process/generation binding.