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