arcane-os 0.2.2 → 0.3.0
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 +29 -0
- package/README.md +8 -8
- package/browser-runtime/ARCANE_SDK_BROWSER_RELEASE.json +29 -22
- package/browser-runtime/ai/ARCANE_AI_BROWSER_SPEECH_COMPONENTS.json +203 -0
- package/browser-runtime/ai/browser-kokoro-worker.mjs +11 -2
- package/browser-runtime/ai/browser-speech-artifacts.mjs +3230 -397
- package/browser-runtime/ai/browser-speech-providers.mjs +1141 -157
- package/browser-runtime/ai/browser-speech.mjs +2 -0
- package/browser-runtime/ai/browser-whisper-worker.mjs +11 -2
- package/browser-runtime/ai/model-controller.mjs +285 -95
- package/browser-runtime/ai/speech-worker-client.mjs +247 -32
- package/browser-runtime/ai/speech-worker-runtime.mjs +2310 -167
- package/browser-runtime/event-manager.mjs +1097 -1
- package/docs/architecture.md +2 -2
- package/docs/event-manager.md +155 -27
- package/docs/reference/README.md +27 -27
- package/docs/reference/ai/browser-speech-package-authority.json +835 -0
- package/docs/reference/ai/browser-speech.md +1162 -246
- package/docs/reference/ai/browser-wasm.md +18 -7
- package/docs/reference/availability-and-normalization.md +6 -3
- package/docs/reference/behavioral-testing.md +29 -6
- package/docs/reference/cli.md +117 -9
- package/docs/reference/core/arcane-ai-contracts.md +1 -1
- package/docs/reference/event-manager.md +577 -32
- package/docs/reference/inventory/package-api.json +478 -2
- package/docs/reference/inventory/runtime-components.json +108 -44
- package/docs/reference/inventory/runtime-modules.json +131 -53
- package/docs/reference/mail.md +316 -0
- package/docs/reference/protocols.md +157 -43
- package/docs/reference/runtime-components.md +258 -83
- package/docs/reference/runtime-modules.md +613 -77
- package/docs/reference/sdk-api.md +1014 -25
- package/package.json +5 -4
- package/runtime/ARCANE_RUNTIME_RELEASE.json +145 -140
- package/runtime/arcane/components/app-bar.html +34 -13
- package/runtime/arcane/components/assistant-panel.html +110 -57
- package/runtime/arcane/components/calculator.html +7 -4
- package/runtime/arcane/components/chart.html +58 -17
- package/runtime/arcane/components/chat.html +606 -136
- package/runtime/arcane/components/conversation-view.html +13 -6
- package/runtime/arcane/components/dashboard-config.html +96 -59
- package/runtime/arcane/components/data-maintenance.html +69 -14
- package/runtime/arcane/components/data-view.html +53 -7
- package/runtime/arcane/components/directory-picker.html +118 -32
- package/runtime/arcane/components/document-inspector.html +47 -10
- package/runtime/arcane/components/file-drop.html +81 -35
- package/runtime/arcane/components/file-inspector.html +72 -22
- package/runtime/arcane/components/file-manager.html +374 -79
- package/runtime/arcane/components/integration-settings.html +12 -5
- package/runtime/arcane/components/local-ai-status.html +48 -19
- package/runtime/arcane/components/markdown-document.html +161 -68
- package/runtime/arcane/components/markdown-editor.html +110 -33
- package/runtime/arcane/components/media-embed.html +8 -5
- package/runtime/arcane/components/modal.html +15 -5
- package/runtime/arcane/components/output-panel.html +28 -23
- package/runtime/arcane/components/preferences-form.html +22 -4
- package/runtime/arcane/components/record-timeline.html +18 -2
- package/runtime/arcane/components/relationship-board.html +23 -3
- package/runtime/arcane/components/screen-capture.html +10 -4
- package/runtime/arcane/components/source-code-viewer.html +76 -9
- package/runtime/arcane/components/source-explanation.html +23 -3
- package/runtime/arcane/components/speech.html +462 -384
- package/runtime/arcane/components/summary-strip.html +22 -11
- package/runtime/arcane/components/table.html +39 -21
- package/runtime/arcane/components/task-progress.html +79 -21
- package/runtime/arcane/components/terminal-workspace.html +7 -4
- package/runtime/arcane/components/theme-editor.html +7 -3
- package/runtime/arcane/components/unified-inbox.html +9 -4
- package/runtime/arcane/components/voice-transcription.html +639 -98
- package/runtime/arcane/components/weather-widget.html +5 -3
- package/runtime/arcane/components/web-navigator.html +48 -8
- package/runtime/arcane/entities/Chat.js +1 -1
- package/runtime/arcane/entities/User.js +110 -23
- package/runtime/arcane/modules/AI.js +2109 -130
- package/runtime/arcane/modules/AIProviderRuntime.js +720 -13
- package/runtime/arcane/modules/AIRuntimeState.js +109 -52
- package/runtime/arcane/modules/ApiModelDatabase.js +390 -17
- package/runtime/arcane/modules/BrowserTestSuite.js +205 -28
- package/runtime/arcane/modules/CalculatorEngine.js +63 -3
- package/runtime/arcane/modules/CommunicationAppController.js +588 -28
- package/runtime/arcane/modules/CommunicationHub.js +590 -10
- package/runtime/arcane/modules/ComponentContracts.js +470 -0
- package/runtime/arcane/modules/ConversationTimebox.js +152 -33
- package/runtime/arcane/modules/DBLS.js +40 -7
- package/runtime/arcane/modules/DBOPFS.js +35 -11
- package/runtime/arcane/modules/DataMaintenance.js +12 -2
- package/runtime/arcane/modules/Errors.js +65 -7
- package/runtime/arcane/modules/HTMLImport.js +198 -14
- package/runtime/arcane/modules/LocalAIReadinessController.js +208 -29
- package/runtime/arcane/modules/Mail.js +738 -115
- package/runtime/arcane/modules/MailOutbox.mjs +1395 -0
- package/runtime/arcane/modules/MailTransport.mjs +197 -39
- package/runtime/arcane/modules/Ollama.js +36 -1
- package/runtime/arcane/modules/OpenMeteoWeatherProvider.js +583 -7
- package/runtime/arcane/modules/PreferenceStore.js +367 -33
- package/runtime/arcane/modules/RecordReviewStore.js +322 -23
- package/runtime/arcane/modules/ScreenCapture.js +1397 -15
- package/runtime/arcane/modules/SpeechPlayback.js +438 -41
- package/runtime/arcane/modules/TerminalClient.js +277 -12
- package/runtime/arcane/modules/ThemeBootstrap.js +80 -6
- package/runtime/arcane/modules/ThemeManager.js +39 -7
- package/runtime/arcane/modules/TimeGuard.js +131 -20
- package/runtime/arcane/modules/WaitForComponent.js +386 -33
- package/schemas/arcane-lock.schema.json +2 -2
- package/src/cli/main.mjs +435 -9
- package/src/event-manager.mjs +1097 -1
- package/src/import-map.mjs +21 -3
- package/src/index.mjs +13 -0
- package/src/installed-sdk-runtime.mjs +112 -0
- package/src/mail-api.mjs +22 -0
- package/src/mail-credentials.mjs +667 -0
- package/src/mail-server.mjs +1769 -0
- package/src/mail.mjs +261 -0
- package/src/sdk-browser-runtime.mjs +85 -41
- package/src/testing-loader.mjs +7 -0
- package/src/toolchain.mjs +3 -0
- package/src/workspace.mjs +1 -1
package/docs/architecture.md
CHANGED
|
@@ -200,7 +200,7 @@ length with an EOF growth probe, and rechecked by handle and pathname identity.
|
|
|
200
200
|
Every cumulative path prefix has one case-folded spelling and one file/directory
|
|
201
201
|
kind; prefix topology conflicts and the complete portable Windows device-name
|
|
202
202
|
set fail before creation or admission.
|
|
203
|
-
The current SDK admits only the explicitly compatible `0.
|
|
203
|
+
The current SDK admits only the explicitly compatible `0.3.0` bundle
|
|
204
204
|
generation and rejects zero-byte payload releases.
|
|
205
205
|
|
|
206
206
|
Promotion retains any prior output as an identity-bound backup until the new
|
|
@@ -320,7 +320,7 @@ through SDK-bound verified readers rather than accepting a mutable source path
|
|
|
320
320
|
as authority. Build completion requires provider verification, and later
|
|
321
321
|
verify/run calls receive the exact artifact receipt.
|
|
322
322
|
|
|
323
|
-
The SDK `0.
|
|
323
|
+
The SDK `0.3.0` runtime requires Arcane `0.8.12` or newer. Compatibility
|
|
324
324
|
is contractual rather than exact-version pinning: the prepared Core must meet
|
|
325
325
|
the highest minimum declared by the runtime, selected app, and bundled app
|
|
326
326
|
dependencies; keep each app's Arcane protocol generation; and provide every
|
package/docs/event-manager.md
CHANGED
|
@@ -1,46 +1,176 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Canonical SDK events and time-travel review
|
|
2
2
|
|
|
3
|
-
`
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
`arcaneEvents` is the canonical synchronous SDK event authority. The module
|
|
4
|
+
installs or reuses exactly one branded authority at `globalThis.arcaneEvents` in
|
|
5
|
+
each JavaScript realm, even when the same source is loaded through duplicate
|
|
6
|
+
module URLs. It is not a cross-frame, worker, process, native-host, or cloud bus.
|
|
7
|
+
|
|
8
|
+
`EventManager` remains the isolated diagnostics API. `new EventManager()` and
|
|
9
|
+
`createEventManager()` each create an independent `event-pubsub` bus whose
|
|
10
|
+
`on()`, `emit()`, and `instrument()` handlers are strict: a synchronous listener
|
|
11
|
+
failure propagates to that publisher. Use `arcaneEvents.subscribe()` and
|
|
12
|
+
`createArcaneEventSource()` for canonical SDK semantic events instead.
|
|
13
|
+
|
|
14
|
+
The installed global is an own, non-enumerable, non-writable, non-configurable
|
|
15
|
+
data property. Its authority brand is
|
|
16
|
+
`Symbol.for('arcane-os.arcane-events-authority')`, and both the brand value and
|
|
17
|
+
public `protocol` are exactly `arcane-event-authority/1`. A later import reuses
|
|
18
|
+
the object only when its property, brand, protocol, and required callable API
|
|
19
|
+
descriptors are compatible. An inherited value, accessor, unbranded value,
|
|
20
|
+
mutable descriptor, incompatible protocol, incomplete API, or failed install is
|
|
21
|
+
rejected; the SDK never replaces or wraps a competing global.
|
|
9
22
|
|
|
10
23
|
Import the dedicated host-neutral entry point:
|
|
11
24
|
|
|
12
25
|
```javascript
|
|
13
26
|
import {
|
|
14
27
|
arcaneEvents,
|
|
28
|
+
createArcaneEventSource,
|
|
15
29
|
createEventManager,
|
|
30
|
+
projectArcaneDOMEvent,
|
|
16
31
|
PLAYBACK_RECORD_EVENT
|
|
17
32
|
} from 'arcane-os/event-manager';
|
|
18
33
|
```
|
|
19
34
|
|
|
20
|
-
|
|
21
|
-
|
|
35
|
+
An SDK publisher owns one source handle for its lifetime and declares every
|
|
36
|
+
semantic event type up front:
|
|
22
37
|
|
|
23
38
|
```javascript
|
|
24
|
-
|
|
25
|
-
|
|
39
|
+
const controller={};
|
|
40
|
+
const events=createArcaneEventSource(controller,{
|
|
41
|
+
source:'app.editor',
|
|
42
|
+
eventTypes:['document.save.completed']
|
|
26
43
|
});
|
|
27
44
|
|
|
28
|
-
arcaneEvents.
|
|
45
|
+
const unsubscribe=arcaneEvents.subscribe('document.save.completed',occurrence=>{
|
|
46
|
+
console.info('Saved',occurrence.detail.documentId);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const publication=events.dispatch(
|
|
29
50
|
'document.save.completed',
|
|
30
|
-
{documentId:'example'},
|
|
51
|
+
Object.freeze({documentId:'example',document:liveDocument}),
|
|
31
52
|
{
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
53
|
+
operationId:'save-42',
|
|
54
|
+
publicDetail:{documentId:'example'},
|
|
55
|
+
cancelable:false
|
|
35
56
|
}
|
|
36
57
|
);
|
|
58
|
+
|
|
59
|
+
projectArcaneDOMEvent(editorElement,publication.occurrence);
|
|
60
|
+
unsubscribe();
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`createArcaneEventSource(owner,options)` is the public wrapper for
|
|
64
|
+
`arcaneEvents.createSource(owner,options)`. `options` is the closed record
|
|
65
|
+
`{source,eventTypes,onListenerError?}`. Each non-null object or function owner
|
|
66
|
+
may have one active source, and the returned frozen handle exposes
|
|
67
|
+
`{protocol,descriptor,source,instanceId,eventTypes,disposed,subscribe,on,once,
|
|
68
|
+
addEventListener,removeEventListener,dispatch,dispatchEvent,dispose,destroy}`.
|
|
69
|
+
|
|
70
|
+
`dispatch()` synchronously delivers one immutable `arcane-event-occurrence/1`
|
|
71
|
+
to exact-type canonical subscribers, then an EventTarget-compatible view to the
|
|
72
|
+
source's own listeners. The occurrence contains `occurrenceId`, `type`, `source`,
|
|
73
|
+
`instanceId`, `operationId`, deeply frozen privacy-admitted `detail`,
|
|
74
|
+
`cancelable`, live `defaultPrevented`, and `preventDefault()`. The richer
|
|
75
|
+
compatibility detail remains local to the authority for source listeners and
|
|
76
|
+
optional DOM projection; it is not placed on the canonical bus or in time-travel
|
|
77
|
+
history.
|
|
78
|
+
|
|
79
|
+
Source listeners retain EventTarget compatibility: function listeners receive
|
|
80
|
+
the source owner as `this`, and the frozen compatibility view exposes that owner
|
|
81
|
+
as both `target` and `currentTarget`. Already-frozen compatibility detail retains
|
|
82
|
+
its identity. Other plain records and arrays are shallow-copied and frozen;
|
|
83
|
+
rich host objects remain local and are not recursively frozen.
|
|
84
|
+
EventTarget-shaped `addEventListener()` and `removeEventListener()` preserve
|
|
85
|
+
native no-op admission for null or non-listener callbacks; strict `subscribe()`
|
|
86
|
+
and `on()` still reject an invalid handler.
|
|
87
|
+
|
|
88
|
+
Canonical delivery is observational. Every active listener runs in registration
|
|
89
|
+
order. A listener failure publishes one privacy-safe
|
|
90
|
+
`arcane.event.listener.error` occurrence and is reported through `reportError`
|
|
91
|
+
or `console.error`; it does not undo committed domain work or make
|
|
92
|
+
`dispatch()` throw. An optional source `onListenerError(error,errorOccurrence)`
|
|
93
|
+
callback receives the raw failure and its canonical listener-error occurrence
|
|
94
|
+
only at that owner-local boundary; `errorOccurrence` is `null` only when the
|
|
95
|
+
secondary error occurrence itself could not be constructed. Subscriber
|
|
96
|
+
promises are not awaited, so keep completion, backpressure, and asynchronous
|
|
97
|
+
failure in the SDK-owned queue or operation that owns them. There is no second
|
|
98
|
+
Promise-returning publication bus: `dispatch()`, cancellation admission, sticky
|
|
99
|
+
state commits, and listener installation remain synchronous. Owned promises and
|
|
100
|
+
`createEventQueue()` own asynchronous work, ordering, failure, and backpressure;
|
|
101
|
+
an `AbortSignal` removes a subscription but does not claim that already-started
|
|
102
|
+
provider, host, or queue work stopped.
|
|
103
|
+
|
|
104
|
+
`arcaneEvents.subscribe(type,handler,{once=false,signal}={})` returns an
|
|
105
|
+
idempotent unsubscribe function whose `.dispose` property is the same function.
|
|
106
|
+
An already-aborted signal installs nothing, and abort removes the registration
|
|
107
|
+
deterministically. Source `on()` follows the same lifecycle. EventTarget-shaped
|
|
108
|
+
`addEventListener()`/`removeEventListener()` calls deduplicate by
|
|
109
|
+
type/listener/capture. Calling a source's idempotent `dispose()` emits its final
|
|
110
|
+
`arcane.event.source.disposed` occurrence, removes its registrations, and frees
|
|
111
|
+
the owner to register a later source.
|
|
112
|
+
|
|
113
|
+
Cancellation is synchronous and observational. For a cancelable occurrence,
|
|
114
|
+
canonical or source listeners may call `preventDefault()`; `dispatch()` then
|
|
115
|
+
returns `{occurrence,accepted:false}`. Callers decide whether cancellation gates
|
|
116
|
+
their domain operation. `projectArcaneDOMEvent()` is a one-way compatibility
|
|
117
|
+
projection: it creates one `CustomEvent`, adds the canonical identifiers to a
|
|
118
|
+
frozen outer detail object, preserves any compatibility `source` value, exposes
|
|
119
|
+
the canonical emitter as `arcaneSource`, propagates DOM cancellation back to the
|
|
120
|
+
occurrence, and never republishes the DOM event into the authority. It returns `false`
|
|
121
|
+
without dispatching when the occurrence is already canceled.
|
|
122
|
+
|
|
123
|
+
The authority also retains `on`, `once`, `off`, `reset`, `emit`, `instrument`,
|
|
124
|
+
and `forward` for legacy direct EventManager-style diagnostics. Those handlers
|
|
125
|
+
are separate from canonical `subscribe()` registrations; `off()` and `reset()`
|
|
126
|
+
cannot remove canonical or source-owned registrations. New SDK publishers must
|
|
127
|
+
use source handles. Authority-level `dispatchEvent()` exists only as a deprecated
|
|
128
|
+
EventTarget admission adapter for older `aiRuntimeEvents` callers.
|
|
129
|
+
|
|
130
|
+
`aiRuntimeEvents` is itself deprecated. It is a frozen, state-free
|
|
131
|
+
EventTarget-compatible view over the `AIRuntimeState` source registered with
|
|
132
|
+
this authority; it has no listener registry, `EventTarget`, or lifecycle state
|
|
133
|
+
of its own. New consumers use the focused AIRuntimeState subscription helpers
|
|
134
|
+
or `arcaneEvents.subscribe()`.
|
|
135
|
+
|
|
136
|
+
## Stable authority failures
|
|
137
|
+
|
|
138
|
+
`ARCANE_EVENT_ERROR_CODES` is frozen and maps every key below to the identical
|
|
139
|
+
string value. Thrown authority errors expose that value as `error.code`:
|
|
140
|
+
|
|
141
|
+
```text
|
|
142
|
+
ARCANE_EVENT_AUTHORITY_ACCESSOR_COLLISION
|
|
143
|
+
ARCANE_EVENT_AUTHORITY_VALUE_COLLISION
|
|
144
|
+
ARCANE_EVENT_AUTHORITY_DESCRIPTOR_MISMATCH
|
|
145
|
+
ARCANE_EVENT_AUTHORITY_PROTOCOL_MISMATCH
|
|
146
|
+
ARCANE_EVENT_AUTHORITY_API_MISMATCH
|
|
147
|
+
ARCANE_EVENT_AUTHORITY_INSTALL_FAILED
|
|
148
|
+
ARCANE_EVENT_SOURCE_INVALID
|
|
149
|
+
ARCANE_EVENT_SOURCE_ALREADY_REGISTERED
|
|
150
|
+
ARCANE_EVENT_SOURCE_DISPOSED
|
|
151
|
+
ARCANE_EVENT_SOURCE_EVENT_TYPE_UNDECLARED
|
|
152
|
+
ARCANE_EVENT_COMPATIBILITY_DETAIL_INVALID
|
|
153
|
+
ARCANE_EVENT_OCCURRENCE_INVALID
|
|
154
|
+
ARCANE_EVENT_OCCURRENCE_SEQUENCE_EXHAUSTED
|
|
155
|
+
ARCANE_EVENT_SOURCE_SEQUENCE_EXHAUSTED
|
|
156
|
+
ARCANE_EVENT_LISTENER_CALLBACK_FAILED
|
|
157
|
+
ARCANE_EVENT_DOM_DETAIL_COLLISION
|
|
158
|
+
ARCANE_EVENT_DOM_TARGET_INVALID
|
|
159
|
+
ARCANE_EVENT_DOM_OPTIONS_INVALID
|
|
160
|
+
ARCANE_EVENT_SUBSCRIPTION_TYPE_INVALID
|
|
161
|
+
ARCANE_EVENT_SUBSCRIPTION_HANDLER_INVALID
|
|
162
|
+
ARCANE_EVENT_SUBSCRIPTION_OPTIONS_INVALID
|
|
163
|
+
ARCANE_EVENT_SUBSCRIPTION_SIGNAL_INVALID
|
|
164
|
+
ARCANE_EVENT_DISPATCH_EVENT_INVALID
|
|
37
165
|
```
|
|
38
166
|
|
|
39
|
-
|
|
40
|
-
`
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
167
|
+
Listener callback failure is observational: it appears as
|
|
168
|
+
`ARCANE_EVENT_LISTENER_CALLBACK_FAILED` inside the frozen
|
|
169
|
+
`arcane.event.listener.error` occurrence. Its frozen public detail is
|
|
170
|
+
`{code:'ARCANE_EVENT_LISTENER_CALLBACK_FAILED',reason:'listener-threw',
|
|
171
|
+
eventType,occurrenceId,source,instanceId,operationId}`. Source disposal publishes
|
|
172
|
+
`arcane.event.source.disposed` with public detail
|
|
173
|
+
`{reason:'source-disposed'}` rather than throwing from committed source dispatch.
|
|
44
174
|
|
|
45
175
|
## Enable a bounded, complete event stack
|
|
46
176
|
|
|
@@ -71,7 +201,7 @@ arcaneEvents.disableTimeTravel();
|
|
|
71
201
|
const serialized=arcaneEvents.exportStack();
|
|
72
202
|
```
|
|
73
203
|
|
|
74
|
-
While enabled, every manager event receives an immutable
|
|
204
|
+
While enabled, every isolated-manager event receives an immutable
|
|
75
205
|
`arcane-event-stack/1` record containing the session and event ids, sequence,
|
|
76
206
|
UTC and monotonic timestamps, source/category, correlation and causation ids,
|
|
77
207
|
nested dispatch depth, a bounded payload snapshot, completion or failure
|
|
@@ -159,8 +289,6 @@ The npm artifact bundles the exact `event-pubsub` and `strong-type` pair because
|
|
|
159
289
|
use must preserve that physical sibling layout and provide import-map entries
|
|
160
290
|
for the public SDK entry and `event-pubsub`.
|
|
161
291
|
|
|
162
|
-
The
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
Arcane OS integration work; this SDK release does not claim automatic coverage
|
|
166
|
-
inside those surfaces.
|
|
292
|
+
The managed Arcane browser runtime ships the authenticated focused entry and its
|
|
293
|
+
dependency closure. Its import map resolves `arcane-os/event-manager` exactly;
|
|
294
|
+
query, fragment, and subpath variants are not alternate authority identities.
|
package/docs/reference/README.md
CHANGED
|
@@ -39,9 +39,9 @@ This repository contains explicitly versioned surfaces with different owners:
|
|
|
39
39
|
|
|
40
40
|
| Surface | Source identity | Meaning |
|
|
41
41
|
| --- | --- | --- |
|
|
42
|
-
| SDK and CLI | `arcane-os` `0.
|
|
43
|
-
| Browser runtime |
|
|
44
|
-
| Browser SDK runtime |
|
|
42
|
+
| SDK and CLI | `arcane-os` `0.3.0` | The Node.js toolchain plus the browser-only `arcane-os/ai/browser-wasm`, `arcane-os/ai/browser-speech`, and portable `arcane-os/mail` entrypoints in this checkout. |
|
|
43
|
+
| Browser runtime | `runtime/ARCANE_RUNTIME_RELEASE.json`, SDK `0.3.0`, protocol `arcane/1` | The SDK-canonical dynamic runtime inventory shipped under `runtime/`; the receipt binds its exact paths, bytes, inventory, and digest. |
|
|
44
|
+
| Browser SDK runtime | `browser-runtime/ARCANE_SDK_BROWSER_RELEASE.json`, SDK `0.3.0` | The dynamically derived browser closure for events, Wllama, and Browser Speech mechanisms. It contains no speech runtime, model, voice, third-party legal/notice, or corresponding-source payloads. |
|
|
45
45
|
| Core reference snapshot | Arcane OS commit `567ad110bf57a1c2d4a3daa22ae93716cc5f4d7e`, protocol `arcane/1` | The application-facing Core contract derived into `docs/reference/core/`. Canonical inventory and focused-member content was verified unchanged at Arcane OS `main` commit `13f3ce0ae34f77a3495331c8b4c30b1bb105f8ed`; SDK-local provenance, link, and package-boundary annotations are added explicitly. |
|
|
46
46
|
|
|
47
47
|
The SDK runtime receipt and Core reference are distinct evidence and have
|
|
@@ -58,26 +58,25 @@ See [Core reference provenance](core/README.md) for the imported inventory and
|
|
|
58
58
|
the exact distinction between a documentation snapshot and shipped runtime
|
|
59
59
|
bytes.
|
|
60
60
|
|
|
61
|
-
## Published 0.2.
|
|
61
|
+
## Published 0.2.3
|
|
62
62
|
|
|
63
|
-
The published package
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
The most recently verified published package before this 0.3.0 source candidate
|
|
64
|
+
is exactly `arcane-os@0.2.3` from source commit
|
|
65
|
+
`d717f21d45664d20e4ed6377596db87c47492e11`. The npm `latest` dist-tag resolves
|
|
66
|
+
to `0.2.3`; the separate `dev` dist-tag remains `0.1.0-dev.5`.
|
|
66
67
|
|
|
67
|
-
The
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
authority in `0.2.1`; consumers require a fresh numeric publication before
|
|
71
|
-
relying on them.
|
|
68
|
+
The singleton-event, Mail, warn-first Browser Speech, and mixed-route contracts
|
|
69
|
+
documented below are newer canonical source. They are not package authority in
|
|
70
|
+
`0.2.3`; consumers require the numeric 0.3.0 publication before relying on them.
|
|
72
71
|
|
|
73
72
|
| Evidence | Exact value |
|
|
74
73
|
| --- | --- |
|
|
75
|
-
| npm integrity | `sha512-
|
|
76
|
-
| npm shasum | `
|
|
77
|
-
| Immutable release tarball | `arcane-os-0.2.
|
|
78
|
-
| GitHub release | [`0.2.
|
|
79
|
-
| Hosted source/artifact gate | [Check run
|
|
80
|
-
| Trusted publication | [Run
|
|
74
|
+
| npm integrity | `sha512-TZewkGM7dh9PdVnOtnkBO7QalJ6qyWWdKruCmsTxoHyeoG5XpqVbkNgiJhtBLhrIzgUV3vydYplxZQkIbIWoHg==` |
|
|
75
|
+
| npm shasum | `8e978a23289a41db130253e6475a0c8bb0c0d73f` |
|
|
76
|
+
| Immutable release tarball | `arcane-os-0.2.3.tgz`; 6,999,078 bytes; SHA-256 `857f179c2f9d4549e7691b4e6cebc49e5ab5e18600816443b26319c61fc1f85d` |
|
|
77
|
+
| GitHub release | [`0.2.3`](https://github.com/TheWizardNexus/arcane-os-sdk/releases/tag/0.2.3) (tag and title are both exactly `0.2.3`) |
|
|
78
|
+
| Hosted source/artifact gate | [Check run 33052271534](https://github.com/TheWizardNexus/arcane-os-sdk/actions/runs/33052271534) |
|
|
79
|
+
| Trusted publication | [Run 33052383457](https://github.com/TheWizardNexus/arcane-os-sdk/actions/runs/33052383457) |
|
|
81
80
|
|
|
82
81
|
The npm SLSA provenance binds the published package to that exact source commit
|
|
83
82
|
and `.github/workflows/publish-dev.yml`. Hashes prove byte identity or
|
|
@@ -103,10 +102,10 @@ Public reference entries follow the established Arcane documentation model:
|
|
|
103
102
|
|
|
104
103
|
## Public runtime inventory
|
|
105
104
|
|
|
106
|
-
The package exposes
|
|
105
|
+
The package exposes 200 semantic JavaScript records across 14 JavaScript
|
|
107
106
|
entrypoints, plus eight JSON Schemas, its exact runtime manifest, and package
|
|
108
107
|
metadata. Ten entrypoints are Node.js control-plane surfaces,
|
|
109
|
-
`arcane-os/event-manager`
|
|
108
|
+
`arcane-os/event-manager` and `arcane-os/mail` run in Node and browsers, and
|
|
110
109
|
`arcane-os/ai/browser-wasm` plus `arcane-os/ai/browser-speech` are browser-only.
|
|
111
110
|
The [machine-readable package
|
|
112
111
|
inventory](inventory/package-api.json) and [SDK member reference](sdk-api.md)
|
|
@@ -117,7 +116,7 @@ download, install, or self-update.
|
|
|
117
116
|
|
|
118
117
|
The synchronized browser payload exposes:
|
|
119
118
|
|
|
120
|
-
-
|
|
119
|
+
- 84 JavaScript module artifacts under `runtime/arcane/modules/`, including
|
|
121
120
|
ESM modules, classic vendor globals, one worker protocol, and one Node-oriented
|
|
122
121
|
mail transport;
|
|
123
122
|
- 15 shared entity modules under `runtime/arcane/entities/`;
|
|
@@ -139,7 +138,7 @@ Ollama, Wllama, Whisper, Kokoro, native, or cloud transport:
|
|
|
139
138
|
| --- | --- | --- |
|
|
140
139
|
| Select, load, unload, inspect, cancel, and use LLM/STT/TTS independently | [`AIProviderRuntime.js`](runtime-modules.md#aiproviderruntimejs) | Cross-host controller; each registered provider declares its own host requirements. |
|
|
141
140
|
| Observe sticky role state and startup settlement | [`AIRuntimeState.js`](runtime-modules.md#airuntimestatejs) | Cross-host EventTarget state; observation grants no authority. |
|
|
142
|
-
| Offer explicit selected-model start/cancel UI | [`chat.html`](runtime-components.md#chathtml)
|
|
141
|
+
| Offer explicit selected-model start/cancel UI | [`chat.html`](runtime-components.md#chathtml), [`speech.html`](runtime-components.md#speechhtml), and [`voice-transcription.html`](runtime-components.md#voice-transcriptionhtml) | Browser/native WebView components; user activation emits a cancelable request before any LLM or STT load intent, and recording stays disabled without sticky ready STT. |
|
|
143
142
|
| Use Core-normalized chat | [`globalThis.Arcane.ai`](core/arcane-ai-contracts.md) | Native/Core only when separately admitted. |
|
|
144
143
|
| Run a caller-selected GGUF LLM locally | [`arcane-os/ai/browser-wasm`](ai/browser-wasm.md) | Browser secure context with WebGPU/full-offload evidence, WebAssembly, and OPFS/DBOPFS. |
|
|
145
144
|
| Run caller-selected Whisper/Kokoro locally | [`arcane-os/ai/browser-speech`](ai/browser-speech.md) | Browser with DBOPFS, Web Locks, Workers, and caller-supplied immutable runtime/model bytes. |
|
|
@@ -153,11 +152,12 @@ profiles, tools, business policy, and private data remain app-owned.
|
|
|
153
152
|
|
|
154
153
|
An explicitly selected but unloaded model is not “ready.” `chat.html` keeps
|
|
155
154
|
Send disabled and exposes a visible keyboard-operable LLM Start/Try again or
|
|
156
|
-
Cancel loading control. `speech.html`
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
`requestSTTActivation(intent)`, or
|
|
160
|
-
event. Imports and state
|
|
155
|
+
Cancel loading control. `speech.html` and `voice-transcription.html` keep their
|
|
156
|
+
recording operations unavailable and share the equivalent Start
|
|
157
|
+
transcription/Try again/Cancel loading control for STT. Applications can
|
|
158
|
+
override `requestAIActivation(intent)` or `requestSTTActivation(intent)`, or
|
|
159
|
+
cancel the corresponding activation-request event. Imports and state
|
|
160
|
+
observation emit no lifecycle intent, and default
|
|
161
161
|
`startTranscription=false` does not request an STT startup load or begin an
|
|
162
162
|
automatic model download. It does not unload a role started independently.
|
|
163
163
|
Compatibility availability never creates ready STT/TTS state without an
|