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.
- package/CHANGELOG.md +154 -0
- package/COMMERCIAL-LICENSE.md +13 -0
- package/LICENSE +661 -0
- package/NOTICE +70 -0
- package/README.md +448 -0
- package/bin/arcane-test.mjs +741 -0
- package/bin/arcane.mjs +5 -0
- package/docs/architecture.md +234 -0
- package/docs/compatibility.md +36 -0
- package/docs/event-manager.md +166 -0
- package/docs/platform-targets.md +108 -0
- package/docs/publishing.md +203 -0
- package/docs/reference/README.md +117 -0
- package/docs/reference/arcane-ollama.md +288 -0
- package/docs/reference/availability-and-normalization.md +123 -0
- package/docs/reference/behavioral-testing.md +86 -0
- package/docs/reference/cli.md +569 -0
- package/docs/reference/core/README.md +62 -0
- package/docs/reference/core/arcane-ai-contracts.md +873 -0
- package/docs/reference/core/arcane-api.md +601 -0
- package/docs/reference/core/arcane-entities.md +65 -0
- package/docs/reference/core/arcane-events.md +134 -0
- package/docs/reference/core/ollama-module.md +181 -0
- package/docs/reference/core/reference/arcane-api/ai-and-ollama.md +1909 -0
- package/docs/reference/core/reference/arcane-api/applications-terminal-capabilities.md +1057 -0
- package/docs/reference/core/reference/arcane-api/core-and-events.md +320 -0
- package/docs/reference/core/reference/arcane-api/filesystem-storage-preferences-appearance.md +610 -0
- package/docs/reference/core/reference/arcane-api/namespaces.md +1157 -0
- package/docs/reference/core/reference/arcane-api/platform-installation-users-system.md +1423 -0
- package/docs/reference/core/reference/arcane-api/session-provisioning-diagnostics-development.md +315 -0
- package/docs/reference/event-manager.md +957 -0
- package/docs/reference/inventory/package-api.json +2632 -0
- package/docs/reference/inventory/runtime-components.json +934 -0
- package/docs/reference/inventory/runtime-entities.json +26 -0
- package/docs/reference/inventory/runtime-modules.json +1249 -0
- package/docs/reference/protocols.md +242 -0
- package/docs/reference/runtime-components.md +1098 -0
- package/docs/reference/runtime-entities.md +303 -0
- package/docs/reference/runtime-modules.md +2010 -0
- package/docs/reference/sdk-api.md +4901 -0
- package/docs/roadmap.md +79 -0
- package/docs/work-amplification.md +124 -0
- package/node_modules/event-pubsub/CHANGELOG.md +55 -0
- package/node_modules/event-pubsub/MIGRATION.md +70 -0
- package/node_modules/event-pubsub/README.md +363 -0
- package/node_modules/event-pubsub/SECURITY.md +37 -0
- package/node_modules/event-pubsub/index.js +141 -0
- package/node_modules/event-pubsub/licence +21 -0
- package/node_modules/event-pubsub/package.json +59 -0
- package/node_modules/strong-type/README.md +408 -0
- package/node_modules/strong-type/assets/strong-type-header.png +0 -0
- package/node_modules/strong-type/index.js +1151 -0
- package/node_modules/strong-type/licence +21 -0
- package/node_modules/strong-type/node.js +125 -0
- package/node_modules/strong-type/package.json +61 -0
- package/package.json +95 -0
- package/runtime/ARCANE_RUNTIME_RELEASE.json +791 -0
- package/runtime/arcane/components/app-bar.html +468 -0
- package/runtime/arcane/components/assistant-panel.html +715 -0
- package/runtime/arcane/components/calculator.html +8 -0
- package/runtime/arcane/components/chart.html +655 -0
- package/runtime/arcane/components/chat.html +1225 -0
- package/runtime/arcane/components/conversation-view.html +13 -0
- package/runtime/arcane/components/dashboard-config.html +341 -0
- package/runtime/arcane/components/data-maintenance.html +112 -0
- package/runtime/arcane/components/data-view.html +92 -0
- package/runtime/arcane/components/directory-picker.html +197 -0
- package/runtime/arcane/components/document-inspector.html +252 -0
- package/runtime/arcane/components/file-drop.html +264 -0
- package/runtime/arcane/components/file-inspector.html +293 -0
- package/runtime/arcane/components/file-manager.html +1715 -0
- package/runtime/arcane/components/header.html +142 -0
- package/runtime/arcane/components/integration-settings.html +14 -0
- package/runtime/arcane/components/local-ai-status.html +360 -0
- package/runtime/arcane/components/markdown-document.html +1048 -0
- package/runtime/arcane/components/markdown-editor.html +360 -0
- package/runtime/arcane/components/media-embed.html +8 -0
- package/runtime/arcane/components/modal.html +402 -0
- package/runtime/arcane/components/output-panel.html +259 -0
- package/runtime/arcane/components/preferences-form.html +135 -0
- package/runtime/arcane/components/record-timeline.html +105 -0
- package/runtime/arcane/components/relationship-board.html +116 -0
- package/runtime/arcane/components/screen-capture.html +8 -0
- package/runtime/arcane/components/source-code-viewer.html +441 -0
- package/runtime/arcane/components/source-explanation.html +124 -0
- package/runtime/arcane/components/speech.html +365 -0
- package/runtime/arcane/components/summary-strip.html +177 -0
- package/runtime/arcane/components/table.html +77 -0
- package/runtime/arcane/components/task-progress.html +282 -0
- package/runtime/arcane/components/terminal-workspace.html +65 -0
- package/runtime/arcane/components/theme-editor.html +41 -0
- package/runtime/arcane/components/theme-switcher.html +46 -0
- package/runtime/arcane/components/unified-inbox.html +20 -0
- package/runtime/arcane/components/voice-transcription.html +476 -0
- package/runtime/arcane/components/weather-widget.html +8 -0
- package/runtime/arcane/components/web-navigator.html +239 -0
- package/runtime/arcane/css/communications.css +1 -0
- package/runtime/arcane/css/dashboard-config.css +45 -0
- package/runtime/arcane/css/document-site.css +981 -0
- package/runtime/arcane/css/layout.css +438 -0
- package/runtime/arcane/css/primitives.css +321 -0
- package/runtime/arcane/css/theme.css +112 -0
- package/runtime/arcane/css/utility-workspace.css +1 -0
- package/runtime/arcane/entities/ApiModelRecord.js +20 -0
- package/runtime/arcane/entities/Calculation.js +13 -0
- package/runtime/arcane/entities/Chat.js +581 -0
- package/runtime/arcane/entities/CommunicationMessage.js +29 -0
- package/runtime/arcane/entities/CommunicationThread.js +21 -0
- package/runtime/arcane/entities/Document.js +10 -0
- package/runtime/arcane/entities/File.js +143 -0
- package/runtime/arcane/entities/Image.js +135 -0
- package/runtime/arcane/entities/IntentEnvelope.js +834 -0
- package/runtime/arcane/entities/Preference.js +83 -0
- package/runtime/arcane/entities/TWiNPolicyDecision.js +1092 -0
- package/runtime/arcane/entities/TerminalSession.js +46 -0
- package/runtime/arcane/entities/Theme.js +107 -0
- package/runtime/arcane/entities/User.js +1046 -0
- package/runtime/arcane/entities/Weather.js +23 -0
- package/runtime/arcane/img/arcane-os-everywhere.png +0 -0
- package/runtime/arcane/img/arrow-left.png +0 -0
- package/runtime/arcane/img/arrow-right.png +0 -0
- package/runtime/arcane/img/doc.svg +5 -0
- package/runtime/arcane/img/folder.svg +4 -0
- package/runtime/arcane/img/image.svg +5 -0
- package/runtime/arcane/img/refresh.png +0 -0
- package/runtime/arcane/img/send.svg +9 -0
- package/runtime/arcane/img/trash.svg +5 -0
- package/runtime/arcane/img/upload.svg +5 -0
- package/runtime/arcane/modules/AI.js +2048 -0
- package/runtime/arcane/modules/AIPreferenceRuntime.js +32 -0
- package/runtime/arcane/modules/AIPreferenceTuple.js +92 -0
- package/runtime/arcane/modules/AIResponseLength.js +42 -0
- package/runtime/arcane/modules/AIResponseURLPolicy.js +626 -0
- package/runtime/arcane/modules/AnsiText.js +53 -0
- package/runtime/arcane/modules/ApiModelDatabase.js +25 -0
- package/runtime/arcane/modules/AppDataScope.js +245 -0
- package/runtime/arcane/modules/AppearancePreferences.js +28 -0
- package/runtime/arcane/modules/ArcaneCommunicationBridge.js +22 -0
- package/runtime/arcane/modules/ArcaneNavigationPolicy.js +135 -0
- package/runtime/arcane/modules/ArcaneNetworkPolicy.js +255 -0
- package/runtime/arcane/modules/AsyncBoundary.js +161 -0
- package/runtime/arcane/modules/BrowserTestSuite.js +326 -0
- package/runtime/arcane/modules/CalculatorEngine.js +20 -0
- package/runtime/arcane/modules/CaseEvidenceIndexer.js +134 -0
- package/runtime/arcane/modules/ChartLibrary.js +35 -0
- package/runtime/arcane/modules/ChatRecords.js +13 -0
- package/runtime/arcane/modules/CommunicationAppController.js +43 -0
- package/runtime/arcane/modules/CommunicationHub.js +16 -0
- package/runtime/arcane/modules/CommunicationPreferences.js +13 -0
- package/runtime/arcane/modules/CommunicationProviderRegistry.js +16 -0
- package/runtime/arcane/modules/ComponentContracts.js +586 -0
- package/runtime/arcane/modules/ConfiguredAIChatSession.js +288 -0
- package/runtime/arcane/modules/ConversationActionItems.js +488 -0
- package/runtime/arcane/modules/ConversationClosingReport.js +274 -0
- package/runtime/arcane/modules/ConversationTimebox.js +527 -0
- package/runtime/arcane/modules/CoreLocalModelCatalog.js +255 -0
- package/runtime/arcane/modules/DBLS.js +171 -0
- package/runtime/arcane/modules/DBOPFS.js +1154 -0
- package/runtime/arcane/modules/DBOPFSWorker.js +116 -0
- package/runtime/arcane/modules/DataMaintenance.js +91 -0
- package/runtime/arcane/modules/DevelopmentWorkspace.js +74 -0
- package/runtime/arcane/modules/DirectoryPicker.js +109 -0
- package/runtime/arcane/modules/DocumentNavigation.js +223 -0
- package/runtime/arcane/modules/Errors.js +1025 -0
- package/runtime/arcane/modules/GifEncoder.js +29 -0
- package/runtime/arcane/modules/HTMLImport.js +114 -0
- package/runtime/arcane/modules/InMemoryCommunicationProvider.js +14 -0
- package/runtime/arcane/modules/IsolatedModelQuestionRunner.js +275 -0
- package/runtime/arcane/modules/LocalAIReadiness.js +870 -0
- package/runtime/arcane/modules/LocalAIReadinessController.js +156 -0
- package/runtime/arcane/modules/MD.js +111 -0
- package/runtime/arcane/modules/Mail.js +352 -0
- package/runtime/arcane/modules/MailTransport.mjs +180 -0
- package/runtime/arcane/modules/Marked.min.js +71 -0
- package/runtime/arcane/modules/MemoryRecords.js +44 -0
- package/runtime/arcane/modules/MessageAdvisory.js +38 -0
- package/runtime/arcane/modules/ModelDefinition.js +189 -0
- package/runtime/arcane/modules/Ollama.js +74 -0
- package/runtime/arcane/modules/OllamaModelIdentifier.js +21 -0
- package/runtime/arcane/modules/OllamaSettings.js +24 -0
- package/runtime/arcane/modules/OpenMeteoWeatherProvider.js +14 -0
- package/runtime/arcane/modules/PreferenceStore.js +109 -0
- package/runtime/arcane/modules/QRCode.min.js +1 -0
- package/runtime/arcane/modules/Questionnaire.js +61 -0
- package/runtime/arcane/modules/RecordLinkIndex.js +24 -0
- package/runtime/arcane/modules/RecordPassageIndex.js +222 -0
- package/runtime/arcane/modules/RecordReviewStore.js +94 -0
- package/runtime/arcane/modules/RevocableProjectionLedger.js +1623 -0
- package/runtime/arcane/modules/RiskSignalAnalyzer.js +37 -0
- package/runtime/arcane/modules/ScamRiskPolicy.js +62 -0
- package/runtime/arcane/modules/ScopedOPFSCache.js +183 -0
- package/runtime/arcane/modules/ScreenCapture.js +20 -0
- package/runtime/arcane/modules/SpeechPlayback.js +581 -0
- package/runtime/arcane/modules/StaticDocumentCatalog.js +1248 -0
- package/runtime/arcane/modules/SystemAppearance.js +20 -0
- package/runtime/arcane/modules/SystemPlatformPresentation.js +51 -0
- package/runtime/arcane/modules/SystemToolRegistry.js +28 -0
- package/runtime/arcane/modules/TerminalClient.js +52 -0
- package/runtime/arcane/modules/TerminalCommandRegistry.js +50 -0
- package/runtime/arcane/modules/ThemeBootstrap.js +26 -0
- package/runtime/arcane/modules/ThemeManager.js +131 -0
- package/runtime/arcane/modules/TimeGuard.js +149 -0
- package/runtime/arcane/modules/ToolCallRouter.js +83 -0
- package/runtime/arcane/modules/WaitForComponent.js +102 -0
- package/runtime/arcane/modules/YouTubeMedia.js +16 -0
- package/runtime/arcane/modules/uPlot.LICENSE.txt +21 -0
- package/runtime/arcane/modules/uPlot.iife.min.js +2 -0
- package/runtime/arcane/modules/uPlot.min.css +1 -0
- package/runtime/arcane/security/arcane-network-policy.json +6 -0
- package/runtime/strong-type/index.js +352 -0
- package/runtime/strong-type/licence +21 -0
- package/runtime/strong-type/package.json +45 -0
- package/schemas/arcane-app-bundle.schema.json +125 -0
- package/schemas/arcane-app.schema.json +329 -0
- package/schemas/arcane-lock.schema.json +86 -0
- package/schemas/arcane-package.schema.json +224 -0
- package/schemas/cli-event.schema.json +122 -0
- package/schemas/event-stack.schema.json +152 -0
- package/schemas/native-build-plan.schema.json +176 -0
- package/schemas/target-adapter.schema.json +117 -0
- package/src/app-descriptor.mjs +500 -0
- package/src/cli/main.mjs +561 -0
- package/src/constants.mjs +31 -0
- package/src/dev-server.mjs +718 -0
- package/src/doctor.mjs +315 -0
- package/src/dom-event-instrumentation.mjs +594 -0
- package/src/errors.mjs +75 -0
- package/src/event-manager.mjs +1342 -0
- package/src/event-queue.mjs +138 -0
- package/src/events.mjs +219 -0
- package/src/index.mjs +177 -0
- package/src/integrated-provider-loader.mjs +432 -0
- package/src/native-plan.mjs +698 -0
- package/src/native-provider-loader.mjs +1126 -0
- package/src/packager/core.mjs +2691 -0
- package/src/process.mjs +353 -0
- package/src/release-bundle.mjs +2523 -0
- package/src/repository.mjs +90 -0
- package/src/runtime.mjs +452 -0
- package/src/scaffold.mjs +380 -0
- package/src/targets/index.mjs +436 -0
- package/src/templates/assets/app-icon.png +0 -0
- package/src/templates/workspace-template.mjs +388 -0
- package/src/testing-loader.mjs +9 -0
- package/src/testing.mjs +427 -0
- package/src/toolchain.mjs +1335 -0
- package/src/update-check.mjs +307 -0
- 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
|
+
[](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
|
+
·
|
|
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.
|