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
package/NOTICE ADDED
@@ -0,0 +1,70 @@
1
+ Arcane OS SDK
2
+ Copyright (c) The Wizard Nexus and contributors.
3
+
4
+ This development package includes Arcane OS runtime and packaging material
5
+ covered by the repository LICENSE (AGPL-3.0-only). COMMERCIAL-LICENSE.md is an
6
+ informational notice and is not itself a grant of commercial rights.
7
+
8
+ Third-party material retains its own terms:
9
+
10
+ - event-pubsub 6.1.0: MIT License; see its installed `licence` file.
11
+ - strong-type 2.0.0: MIT License; see its installed `licence` file.
12
+ - vanilla-test 2.1.3: MIT License; see its installed `licence` file.
13
+ - ansi-colors-es6 5.0.0: MIT License; see its installed `LICENSE` file.
14
+ - vanilla-test's strong-type 2.0.1 dependency: MIT License; see its installed
15
+ `licence` file.
16
+ - bundled strong-type 1.1.0: MIT License; see runtime/strong-type/licence.
17
+ - uPlot: MIT License; see runtime/arcane/modules/uPlot.LICENSE.txt.
18
+ - Marked: MIT License; complete notice and terms reproduced below.
19
+ - QRCode.js: MIT License; complete notice and terms reproduced below.
20
+
21
+ Marked
22
+ ------
23
+
24
+ Copyright (c) 2018-2026, MarkedJS. (MIT License)
25
+ Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)
26
+
27
+ Permission is hereby granted, free of charge, to any person obtaining a copy
28
+ of this software and associated documentation files (the "Software"), to deal
29
+ in the Software without restriction, including without limitation the rights
30
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
31
+ copies of the Software, and to permit persons to whom the Software is
32
+ furnished to do so, subject to the following conditions:
33
+
34
+ The above copyright notice and this permission notice shall be included in all
35
+ copies or substantial portions of the Software.
36
+
37
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
38
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
39
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
40
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
41
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
42
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
43
+ SOFTWARE.
44
+
45
+ QRCode.js
46
+ ---------
47
+
48
+ runtime/arcane/modules/QRCode.min.js is byte-for-byte the qrcode.min.js file
49
+ from the davidshimjs/qrcodejs master branch. Its SHA-256 is
50
+ c541ef06327885a8415bca8df6071e14189b4855336def4f36db54bde8484f36.
51
+
52
+ Copyright (c) 2012 davidshimjs
53
+
54
+ Permission is hereby granted, free of charge, to any person obtaining a copy
55
+ of this software and associated documentation files (the "Software"), to deal
56
+ in the Software without restriction, including without limitation the rights
57
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
58
+ copies of the Software, and to permit persons to whom the Software is
59
+ furnished to do so, subject to the following conditions:
60
+
61
+ The above copyright notice and this permission notice shall be included in all
62
+ copies or substantial portions of the Software.
63
+
64
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
65
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
66
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
67
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
68
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
69
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
70
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,448 @@
1
+ [![Arcane OS SDK — external application SDK and command-line toolchain](https://raw.githubusercontent.com/TheWizardNexus/arcane-os-sdk/main/site/assets/arcane-os-sdk-readme-header.png)](https://thewizardnexus.github.io/arcane-os-sdk/)
2
+
3
+ # Arcane OS SDK
4
+
5
+ <p align="center">
6
+ <strong>Build, test, package, and manage Arcane applications inside or outside Arcane OS.</strong><br>
7
+ Keep proprietary source in its own repository while using the same headless workflow for apps and shared runtime work in the Arcane checkout.
8
+ </p>
9
+
10
+ <p align="center">
11
+ <a href="https://thewizardnexus.github.io/arcane-os-sdk/"><strong>Visit the Arcane OS SDK site</strong></a>
12
+ &nbsp;·&nbsp;
13
+ <a href="https://github.com/TheWizardNexus/arcane-os-sdk"><strong>Open the GitHub repository</strong></a>
14
+ </p>
15
+
16
+ `arcane-os` is the application SDK and command-line toolchain for Arcane OS. It
17
+ supports two explicit workspace profiles: an external app repository uses the
18
+ version-locked SDK runtime, while an integrated Arcane checkout uses its live
19
+ `arcane/` runtime. Both profiles preserve the same app URLs, theme, packaging,
20
+ event, cancellation, and browser run contracts.
21
+
22
+ This is development software. Version `0.1.0-dev.5` synchronizes the Arcane
23
+ `0.8.12` runtime, but it is not a production or release-candidate claim. It has
24
+ only the `dev` channel contract; query `npm view arcane-os@dev version` for
25
+ current registry availability. Registry state is deliberately not baked into
26
+ the immutable package documentation.
27
+
28
+ That registry query is a maintainer action, not an application behavior. Apps
29
+ never poll npm for SDK updates or replace their own SDK or synchronized runtime.
30
+ The app repository's exact dependency and lockfile select the SDK; changing that
31
+ selection is an explicit repository update followed by the normal validation
32
+ and release gates.
33
+
34
+ ## Developer API reference
35
+
36
+ Start with the [capability-first developer reference](docs/reference/README.md).
37
+ It follows Arcane's MDN-style model and covers every public package export, CLI
38
+ command, synchronized runtime module, entity, component, Arcane Core member,
39
+ and Arcane Ollama method. Use the [availability and normalization matrix](docs/reference/availability-and-normalization.md)
40
+ to distinguish Node, browser, native, cloud, and cross-host behavior; protocol
41
+ mechanics are kept in the folded/deep-linked [protocol guide](docs/reference/protocols.md).
42
+ The [behavioral-testing guide](docs/reference/behavioral-testing.md) explains the
43
+ executable contract, while the [machine-readable inventories](docs/reference/inventory/)
44
+ make completeness independently checkable.
45
+
46
+ ## Central event instrumentation
47
+
48
+ Use `arcane-os/event-manager` as the primary instrumentation surface for new
49
+ SDK code. Its shared `arcaneEvents` bus is powered by `event-pubsub`; SDK-owned
50
+ operation queues already mirror their normalized events through it while
51
+ preserving awaited delivery and cancellation. An opt-in `timeTravel` flag adds
52
+ timestamped causal event stacks, bounded snapshots, export/import, seek and safe
53
+ review playback. Attaching a DOM root records interactions and mutation records,
54
+ including supported open shadow roots. Source-stack capture is a separate,
55
+ off-by-default diagnostic option.
56
+
57
+ Recording is off by default. A session is complete until its configured event
58
+ limit; reaching that limit appends an overflow marker and disables recording
59
+ instead of silently evicting history. Review [the EventManager guide](docs/event-manager.md)
60
+ before enabling DOM values, node content, event details, source stacks, or live
61
+ event redispatch. Password targets, text-entry details, clipboard data, URL
62
+ attributes, and common credential keys are excluded or redacted by default.
63
+
64
+ ## Runtime synchronization
65
+
66
+ SDK maintainers update the pinned browser runtime only from Arcane's canonical,
67
+ clean `main` checkout. The sync command validates that checkout, its exact
68
+ machine-bundle version, the dependency lock, and the fixed shared-payload
69
+ selection before replacing any SDK runtime bytes:
70
+
71
+ ```bash
72
+ npm run runtime:sync -- --arcane-root /path/to/canonical/ARCANE-OS
73
+ node tools/runtime-manifest.mjs --write
74
+ npm run check
75
+ ```
76
+
77
+ `tools/runtime-source.json` records the reviewed upstream identity and fixed
78
+ selection. The generated runtime manifest remains the published byte receipt.
79
+
80
+ ## Install
81
+
82
+ After the development package is published under the npm `dev` tag, create a
83
+ new repository-shaped Arcane application:
84
+
85
+ ```bash
86
+ npx arcane-os@dev new my-app --path ./my-app --target portable --git
87
+ cd my-app
88
+ npm install
89
+ npm run check
90
+ npm run dev
91
+ ```
92
+
93
+ To enroll an existing repository, install the exact SDK and initialize only
94
+ missing Arcane files:
95
+
96
+ ```bash
97
+ npm install --save-dev --save-exact arcane-os@dev
98
+ npm exec -- arcane init my-app --target portable
99
+ ```
100
+
101
+ The npm package is named `arcane-os`. Its primary executable is `arcane`, and
102
+ `arcane-os` is an equivalent fallback when another globally installed package
103
+ has claimed the short command:
104
+
105
+ ```bash
106
+ npm exec -- arcane targets
107
+ npm exec -- arcane-os targets
108
+ ```
109
+
110
+ No global SDK install or standalone Arcane CLI is required. The application
111
+ repository's exact npm dependency and lockfile own the CLI and toolchain version.
112
+
113
+ Use `npx arcane-os@dev` for the initial bootstrap because it names this npm
114
+ package explicitly; bare `npx arcane` outside an installed project could resolve
115
+ a different package. Both installed commands invoke the same headless toolchain.
116
+ Project-local npm scripts use the SDK pinned by that app's `package-lock.json`,
117
+ so normal repository work does not depend on whichever global command was
118
+ installed last.
119
+
120
+ ### Local development when the npm package is unavailable
121
+
122
+ Pack the current SDK checkout, scaffold with its source CLI, and persist the
123
+ tarball install in the app's package manifest and lock:
124
+
125
+ ```bash
126
+ # From the arcane-os-sdk checkout
127
+ npm ci
128
+ npm run check
129
+ npm run pack:local
130
+ node ./bin/arcane.mjs new local-app --path ../local-app --target portable --git
131
+
132
+ # From the generated app repository
133
+ cd ../local-app
134
+ npm install --save-dev --save-exact ../arcane-os-sdk/arcane-os-0.1.0-dev.5.tgz
135
+ npm run check
136
+ npm ci
137
+ ```
138
+
139
+ Adjust the relative tarball path for your layout and keep that `.tgz` at the
140
+ same location. npm records its integrity in `package-lock.json`, while Arcane
141
+ still verifies the installed package name and exact version, the locked runtime
142
+ identity, and the runtime bytes. Local directory `file:` dependencies are not
143
+ accepted because npm may install them as links; use a packed `.tgz`. A GitHub
144
+ runner also needs that tarball at the locked path. When the registry exposes
145
+ `arcane-os@dev`, replace the local declaration with the exact registry package
146
+ and commit the regenerated lock.
147
+
148
+ Generated repositories use `npm ci --ignore-scripts` in CI. Run dependency
149
+ installation once and commit `package-lock.json` before enabling that workflow.
150
+
151
+ ### Integrated Arcane OS development
152
+
153
+ Run the same SDK against the Arcane OS checkout when changing a shared runtime
154
+ capability or a built-in app. During local SDK development, invoke its source
155
+ CLI explicitly so Arcane OS does not acquire an npm self-dependency:
156
+
157
+ ```bash
158
+ node ../arcane-os-sdk/bin/arcane.mjs check --workspace "../Arcane OS" --app calculator
159
+ node ../arcane-os-sdk/bin/arcane.mjs dev --workspace "../Arcane OS" --app calculator
160
+ node ../arcane-os-sdk/bin/arcane.mjs package --workspace "../Arcane OS" --app calculator
161
+ ```
162
+
163
+ `arcane init new-app --workspace <arcane-root> --target portable` detects the integrated profile
164
+ and writes only `apps/new-app/` boilerplate. It does not modify Arcane OS root
165
+ scripts, dependencies, workflows, lock files, or repository instructions.
166
+
167
+ Shared runtime and Core work has an explicit integrated-only scope. Select one
168
+ exact focused test, or run Arcane's canonical development check through the
169
+ fixed Arcane-owned provider:
170
+
171
+ ```bash
172
+ node ../arcane-os-sdk/bin/arcane.mjs test --workspace "../Arcane OS" --scope shared --test-file test/component-contracts.test.mjs
173
+ node ../arcane-os-sdk/bin/arcane.mjs check --workspace "../Arcane OS" --scope shared
174
+ ```
175
+
176
+ The default scope is `app`. Shared scope never discovers, packages, verifies,
177
+ builds, or runs an application, and it is rejected in an external workspace.
178
+ The provider admits only one repository-relative `.test.mjs` through Arcane's
179
+ focused runner or the one canonical development check; it cannot select an
180
+ arbitrary command or package script.
181
+
182
+ In an integrated Arcane checkout, app scope runs tests only under the selected
183
+ `apps/<id>/test/` tree and reports an honest skip when that tree has no tests.
184
+ Arcane root, shared, and native tests require the explicit shared focused-test
185
+ form above. External app repositories retain their root `test/` plus selected
186
+ app-test behavior.
187
+
188
+ Integrated native app builds are also implemented. `--workspace` and
189
+ `--arcane-root` must resolve to the same Arcane checkout, one `--app` and one
190
+ declared native target are selected, and `--output-root` must resolve outside
191
+ that checkout. The SDK then uses the same package, plan, provider, retained
192
+ verification, and same-process run lifecycle as an external app repository.
193
+
194
+ ## Commands
195
+
196
+ ```text
197
+ arcane new <id> [--path <directory>] [--display-name <name>] [--target <target>] [--git]
198
+ arcane init [id] [--workspace <directory>] [--display-name <name>] [--target <target>]
199
+ arcane doctor [--workspace <directory>] [--arcane-root <directory>]
200
+ arcane dev [--app <id>] [--host 127.0.0.1] [--port 8000]
201
+ arcane test [--app <id>] [--scope app]
202
+ arcane test --scope shared --test-file <repo-relative.test.mjs>
203
+ arcane check [--app <id>] [--scope app] [--skip-tests]
204
+ arcane check --scope shared
205
+ arcane package [--app <id>] [--dry-run]
206
+ arcane verify [--app <id>]
207
+ arcane bundle [--app <id>] [--artifact <file>.arcane-app.tar.gz] [--overwrite]
208
+ arcane verify-bundle <file.arcane-app.tar.gz>
209
+ arcane native-doctor --target <native-target> --arcane-root <directory>
210
+ arcane native-prepare --target <native-target> --arcane-root <directory>
211
+ arcane build --target <target> [--arcane-root <directory>] [--output-root <directory>] [--format <format>] [--signing <mode>]
212
+ arcane run [--target <target>] [--app <id>] [--arcane-root <directory>] [--output-root <directory>] [--format <format>] [--signing <mode>]
213
+ arcane targets
214
+ arcane repo status|pull|push
215
+ ```
216
+
217
+ All commands support `--output human|json|ndjson`. Machine modes keep stdout
218
+ structured. Every operation emits or reports acceptance before filesystem,
219
+ network, hashing, test, process, or service work begins.
220
+
221
+ ## External application release bundles
222
+
223
+ An authored schema-2 `arcane-app.json` can be sealed with one already packaged
224
+ and verified browser release. The bundle contains only the canonical descriptor,
225
+ the release manifest, and the exact `dist/<id>/` payload inventory:
226
+
227
+ ```bash
228
+ npm exec -- arcane package --app my-app
229
+ npm exec -- arcane bundle --app my-app
230
+ npm exec -- arcane verify-bundle dist/my-app-1.0.0.arcane-app.tar.gz
231
+ ```
232
+
233
+ `bundle` creates `dist/<id>-<version>.arcane-app.tar.gz` by default. It refuses
234
+ an existing destination unless `--overwrite` is explicit, preserves the prior
235
+ file until the promoted replacement has passed no-follow, single-link,
236
+ byte-length, and SHA-256 revalidation, and restores the prior file on
237
+ cancellation or pre-commit failure only while both the promoted pathname and
238
+ prior backup retain their respective full recorded identity tuples, each
239
+ pinned by an open handle. If the promoted path is replaced or changed in
240
+ place, it and the prior backup are preserved; if the backup is changed or
241
+ missing, the valid promoted output is preserved instead of being deleted.
242
+ Operation locks carry a random nonce
243
+ and filesystem identity; a replaced lock is preserved and reported as degraded
244
+ cleanup instead of being removed by pathname.
245
+
246
+ The archive uses one byte-exact USTAR+gzip encoding and publishes its v1 JSON
247
+ contract at `arcane-os/schemas/arcane-app-bundle.json`. Verification rejects
248
+ links, devices, extension headers, unsafe or colliding paths, alternate gzip
249
+ members, noncanonical metadata, trailing data, expansion bombs, and every
250
+ descriptor, policy, inventory, size, or hash mismatch. The envelope adds no
251
+ repository-only source or tooling beyond the exact authenticated release
252
+ inventory; each app owns its leak/source policy, and Arcane's source-free runtime
253
+ gates remain separate. Source controls, payloads, and bundle artifacts must remain single-link regular files at their exact
254
+ recorded length through a final identity check; an appended byte, concurrent
255
+ growth, path replacement, or hard link fails closed. NFC paths use defined
256
+ UTF-8 byte ordering, covered by one pinned golden bundle digest on every
257
+ supported Node/runner combination. This SDK accepts only the explicitly listed
258
+ `0.1.0-dev.5` bundle generation; structural validity does not imply cross-SDK
259
+ compatibility, and a release with zero payload bytes cannot be created. Portable
260
+ path validation rejects file/directory prefix conflicts, case-colliding prefix
261
+ spellings, and Windows device aliases including superscript COM/LPT digits.
262
+
263
+ Successful creation and verification return complete consistency metadata for
264
+ the artifact digest/bytes, descriptor canonical/file/package digests and byte
265
+ length, and release manifest/policy/content digests, file count, and payload
266
+ bytes. Those values are consistency evidence for the exact archive, not
267
+ installation authority.
268
+
269
+ Internal hashes establish consistency, not permission to install. Arcane
270
+ admission must also authenticate the archive through its approved repository
271
+ provenance or independent signature and match that identity to an Arcane-owned
272
+ authorization lock. The reusable `.github/workflows/release-app.yml` workflow
273
+ builds one selected app in a `contents: read` job with no OIDC or attestation
274
+ authority. An always-run fresh job downloads the uploaded artifact by immutable
275
+ artifact id, checks out only the reusable workflow's exact SDK revision, uses
276
+ supported Node 24, directly imports the trusted verifier, rechecks the selected
277
+ app id and complete metadata, and becomes the sole source of reusable outputs.
278
+ When requested, a third job downloads that same artifact id, independently
279
+ repeats those checks against the post-upload outputs, and alone receives narrow
280
+ OIDC/attestation permissions. No package manager, dependency resolution, caller
281
+ checkout, check, or adapter runs with that authority. An unattested uploaded
282
+ artifact is still not an authorized Arcane app by itself.
283
+
284
+ ## SDK test sets
285
+
286
+ The repository suite uses exact `vanilla-test` 2.1.3 through the isolated Arcane
287
+ test runner. `npm test` runs four non-overlapping sets in order, and every test
288
+ file belongs to exactly one set:
289
+
290
+ ```text
291
+ npm run test:unit
292
+ npm run test:functional
293
+ npm run test:integration
294
+ npm run test:regression
295
+ ```
296
+
297
+ Use a named set while iterating or `npm test` for the complete suite. Large
298
+ fixtures stay inside one isolated file process and expose smaller nested cases,
299
+ so the report shows the individual behaviors without repeating setup, builds,
300
+ package installation, or assertions.
301
+
302
+ ## Current target support
303
+
304
+ Version `0.1.0-dev.5` exposes one browser target and five explicitly paired
305
+ native development targets: a verified non-runnable portable directory, a
306
+ Windows x64 unsigned-local-test EXE bundle, Linux x64 and Linux ARM64
307
+ unsigned-local-test DEBs, and an Android development-signed APK. The
308
+ `android-arm64` APK is architecture-neutral because it contains no native ABI;
309
+ the target name identifies its supported physical/native ARM64 run profile.
310
+
311
+ Every native build requires an explicit Arcane OS checkout that passes this SDK
312
+ version's admission checks and a canonical app descriptor that declares the
313
+ exact selected target. The SDK never searches for or silently selects a mutable
314
+ toolchain root. Scaffold a separate
315
+ repository with the matching `--target`, or add and validate that target in the
316
+ canonical descriptor before invoking its native command. From an external
317
+ application repository, run one selected target:
318
+
319
+ ```bash
320
+ npm exec -- arcane native-doctor --target portable --arcane-root "../Arcane OS"
321
+ npm exec -- arcane build --target portable --arcane-root "../Arcane OS"
322
+
323
+ # Windows x64: build or build, verify, and launch in one process
324
+ npm exec -- arcane build --target windows-x64 --arcane-root "../Arcane OS"
325
+ npm exec -- arcane run --target windows-x64 --arcane-root "../Arcane OS"
326
+
327
+ # Linux x64, from Linux or WSL with the documented GTK/WebKit toolchain
328
+ npm exec -- arcane build --target linux-x64 --arcane-root "../Arcane OS"
329
+ npm exec -- arcane run --target linux-x64 --arcane-root "../Arcane OS"
330
+
331
+ # Linux ARM64, on a compatible native ARM64 toolchain
332
+ npm exec -- arcane native-doctor --target linux-arm64 --arcane-root "../Arcane OS" --format deb --signing unsigned-local-test
333
+ npm exec -- arcane build --target linux-arm64 --arcane-root "../Arcane OS" --format deb --signing unsigned-local-test
334
+ npm exec -- arcane run --target linux-arm64 --arcane-root "../Arcane OS" --format deb --signing unsigned-local-test
335
+
336
+ # Android ARM64; run requires one connected physical/native ARM64 device
337
+ npm exec -- arcane native-doctor --target android-arm64 --arcane-root "../Arcane OS" --format apk --signing development
338
+ npm exec -- arcane build --target android-arm64 --arcane-root "../Arcane OS" --format apk --signing development
339
+ npm exec -- arcane run --target android-arm64 --arcane-root "../Arcane OS" --format apk --signing development
340
+ ```
341
+
342
+ Use `--target portable`, `windows-x64`, `linux-x64`, `linux-arm64`, or
343
+ `android-arm64` when scaffolding to include the required raster icon and declare
344
+ both `browser` and the selected native target in the canonical app descriptor.
345
+ The browser remains available from the same repository. A native command does
346
+ not infer a missing descriptor target from `--target` and never substitutes a
347
+ browser package.
348
+
349
+ `native-prepare` is available as a standalone toolchain-integrity diagnostic.
350
+ Do not run it immediately before `build`: receipts are process-owned, and the
351
+ build command prepares and reuses its own exact toolchain state once.
352
+
353
+ The build authenticates the selected app release and descriptor, requires the
354
+ Core to meet the highest minimum declared by the SDK runtime, selected app, and
355
+ bundled dependencies, keep their declared Arcane protocol, and provide every
356
+ required feature, capability, and method. A Core reporting a higher version is
357
+ accepted only when it passes those same current-SDK checks; this is not a promise
358
+ that future SDK or Core releases will remain compatible. The build copies
359
+ release bytes through verified readers. Portable emits an app-scoped
360
+ Arcane Core payload under `build/portable/`; that directory is not executable
361
+ and `arcane run --target portable` is intentionally unavailable. Windows emits
362
+ an app-scoped executable bundle under `build/windows-x64/`. Linux emits an
363
+ app-scoped amd64 DEB under `build/linux-x64/` or ARM64 DEB under
364
+ `build/linux-arm64/`. Android emits one development-signed, architecture-neutral
365
+ APK under `build/android-arm64/`; there is no native ABI payload, and its run
366
+ path requires a physical device with native ARM64 support. Executable `run`
367
+ performs package, prepare, plan, build, verify, launch, and owned cancellation
368
+ in one process because native receipts are process-owned.
369
+
370
+ The Windows x64 and Linux x64 paths have been exercised end to end from
371
+ independent external repositories. Windows compiled, verified, reached an
372
+ authenticated readiness channel, and cancelled an isolated development app
373
+ while a valid installed publisher-continuity pin remained present. Linux x64
374
+ built and verified a real DEB and launched it under WSLg without installation
375
+ or `sudo`.
376
+
377
+ At Arcane source revision `4382043c09285ea203aa6daba1732660966ac409`, the
378
+ official native ARM64 workflow built and retained-verified a 21,232,932-byte
379
+ ARM64 DEB, proved AArch64 host, Core, and bridge binaries, reached WebKit
380
+ load-finished readiness, and drained its owned process group. The workflow kept
381
+ Ubuntu's AppArmor user-namespace restriction enabled and loaded the packaged
382
+ Bubblewrap profile. At revision `be6732ab71cbecb43d037aaad994ade5f2f4d1b6`,
383
+ the hardened Android path passed build, retained verification, exact
384
+ process/generation/nonce readiness, cancellation, uninstall, and absence checks
385
+ on a physical ARM64/API 37 device. These are development results, not production
386
+ signing, store-publishing, release, or promotion evidence.
387
+
388
+ | Capability | Ready now |
389
+ |---|---|
390
+ | Scaffold, develop, test, check, package, verify, and browser run | Yes |
391
+ | External proprietary-source repository workflow | Yes, subject to the distribution license below |
392
+ | Integrated Arcane checkout workflow | Yes |
393
+ | ArcaneOllama managed-service check | Yes on supported Windows hosts |
394
+ | SDK native plan/provider/receipt boundary | Yes |
395
+ | Portable app-scoped Core directory | Yes, with explicit `--arcane-root`; verified but not directly runnable |
396
+ | Windows x64 EXE bundle | Yes, unsigned local development with explicit `--arcane-root` |
397
+ | Linux x64 DEB | Yes, unsigned local development with explicit `--arcane-root` |
398
+ | Linux ARM64 DEB | Yes, unsigned local development on a compatible native ARM64 toolchain with explicit `--arcane-root`; exact-SHA native build, verification, WebKit readiness, and cancellation evidence is recorded |
399
+ | Android ARM64 APK | Yes, development-signed and architecture-neutral with explicit `--arcane-root`; a physical/native ARM64 device is required for run |
400
+
401
+ Android supports APK only in this development profile. AAB, release signing,
402
+ publishing, and update continuity remain deferred. Unpaired, incompatible, or
403
+ descriptor-mismatched native requests fail without producing a substitute
404
+ artifact. Portable output is never represented as an executable, and unsigned
405
+ or development-signed evidence is never represented as production signing or
406
+ release acceptance.
407
+
408
+ See [docs/platform-targets.md](docs/platform-targets.md) for the matrix and
409
+ [docs/architecture.md](docs/architecture.md) for the boundary. The exact
410
+ minimum-version and required-contract admission rule is documented in
411
+ [docs/compatibility.md](docs/compatibility.md). The issue-ready
412
+ extraction sequence is tracked in [docs/roadmap.md](docs/roadmap.md).
413
+
414
+ ## Canonical app descriptor
415
+
416
+ New apps own `apps/<id>/arcane-app.json` schema 2. It contains publisher,
417
+ permissions, security, native presentation, Core requirements, and target
418
+ intent, and deterministically projects the exact schema-1
419
+ `arcane-package.json` required by the current browser packager. The pinned
420
+ schema-1 apps recognized by this SDK are accepted through a read-only projection
421
+ of the current native registry until each app adopts the authored descriptor.
422
+ The schema-1 release manifest is intentionally unchanged during this migration;
423
+ that current projection is not a general future-compatibility guarantee.
424
+
425
+ ## ArcaneOllama
426
+
427
+ Browser development never calls Ollama directly. `arcane doctor` performs a
428
+ read-only managed-service assessment where the host supports one. Native apps
429
+ use an app-scoped Arcane Core and `Arcane.localAI.status()` in this SDK version.
430
+ Ollama is optional for packaging and non-AI applications.
431
+
432
+ The loopback development server uses an unguessable session capability and a
433
+ broad development-only content policy so the shared runtime can exercise remote
434
+ providers, media, WebSockets, and embeds. It is not a production security
435
+ boundary. Declared origins remain native policy input through the approved
436
+ Arcane descriptor; enforcement for any additional target is roadmap scope, not
437
+ a compatibility promise. Served files are verified into bounded response
438
+ snapshots before headers; the current development limit is 64 MiB per file.
439
+
440
+ ## Licensing
441
+
442
+ The synchronized Arcane runtime and packager are currently distributed under
443
+ AGPL-3.0-only. The commercial-license notice does not itself grant proprietary
444
+ distribution rights. Resolve the applicable Arcane commercial or open-source
445
+ license before distributing a closed-source app that bundles this runtime. Each
446
+ browser release carries `LICENSE`, `COMMERCIAL-LICENSE.md`, and `NOTICE` under
447
+ `licenses/arcane-os/`; the notice includes the complete bundled Marked and
448
+ QRCode.js MIT terms.