arcane-os 0.51.1 → 0.51.2
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 +11 -0
- package/README.md +81 -44
- package/browser-runtime/ai/twin-cloud.mjs +4 -0
- package/docs/architecture.md +33 -17
- package/docs/platform-targets.md +15 -2
- package/docs/reference/README.md +31 -26
- package/docs/reference/ai/browser-speech.md +106 -31
- package/docs/reference/ai/browser-wasm.md +27 -24
- package/docs/reference/ai/twin-cloud.md +30 -11
- package/docs/reference/asset-versioning.md +34 -37
- package/docs/reference/availability-and-normalization.md +31 -20
- package/docs/reference/cli.md +26 -17
- package/docs/reference/inventory/package-api.json +34 -6
- package/docs/reference/inventory/runtime-components.json +25 -11
- package/docs/reference/inventory/runtime-entities.json +6 -3
- package/docs/reference/inventory/runtime-modules.json +63 -8
- package/docs/reference/protocols.md +62 -56
- package/docs/reference/pwa.md +20 -13
- package/docs/reference/runtime-components.md +9 -2
- package/docs/reference/runtime-entities.md +14 -2
- package/docs/reference/runtime-modules.md +59 -2
- package/docs/reference/sdk-api.md +225 -65
- package/docs/roadmap.md +32 -26
- package/package.json +1 -1
- package/runtime/arcane/modules/AI.js +20 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.51.2
|
|
4
|
+
|
|
5
|
+
- Forward caller-selected `temperature` through the focused TWiN Cloud
|
|
6
|
+
`fetchRequest` and the full AI TWiN fetch/stream paths, including their
|
|
7
|
+
built-in provider adapters. Preserve explicit `0`; omission or `undefined`
|
|
8
|
+
leaves the provider default in effect. The value remains request-local and
|
|
9
|
+
is retained by existing observers and retries. No clamp, saved preference,
|
|
10
|
+
output limit, native Ollama option mapping, or new dependency is introduced.
|
|
11
|
+
Complete messages, selected model, reasoning behavior, response content,
|
|
12
|
+
cancellation, other providers, and existing positional APIs stay unchanged.
|
|
13
|
+
|
|
3
14
|
## 0.51.1
|
|
4
15
|
|
|
5
16
|
- Restore the published `node-http-server` MIME map in development and packaged
|
package/README.md
CHANGED
|
@@ -15,11 +15,12 @@
|
|
|
15
15
|
|
|
16
16
|
`arcane-os` is the application SDK and command-line toolchain for Arcane OS. It
|
|
17
17
|
supports two explicit workspace profiles: an external app repository uses the
|
|
18
|
-
version-locked SDK runtime, while an integrated Arcane checkout
|
|
19
|
-
|
|
18
|
+
version-locked SDK runtime, while an integrated Arcane checkout consumes its
|
|
19
|
+
selected SDK projection or an explicit live SDK source mount. Both profiles
|
|
20
|
+
share the theme, packaging, event, cancellation,
|
|
20
21
|
and browser run contracts while retaining their selected application layout.
|
|
21
22
|
|
|
22
|
-
This checkout defines the `0.51.
|
|
23
|
+
This checkout defines the `0.51.2` SDK contract. Applications pin one exact npm
|
|
23
24
|
version and lockfile; registry state is deliberately not baked into application
|
|
24
25
|
artifacts.
|
|
25
26
|
|
|
@@ -73,19 +74,35 @@ Enabled browser delivery also mounts the shared, themed installation suggestion.
|
|
|
73
74
|
It appears when the browser offers installation, includes Install and Close,
|
|
74
75
|
and remembers dismissal for the tab session without interrupting page startup.
|
|
75
76
|
|
|
76
|
-
|
|
77
|
+
Registry queries are maintainer actions. Apps
|
|
77
78
|
never poll npm for SDK updates or replace their own SDK or synchronized runtime.
|
|
78
79
|
The app repository's exact dependency and lockfile select the SDK; changing that
|
|
79
80
|
selection is an explicit repository update. Tests and checks run only when the
|
|
80
81
|
user expressly selects them, or when required for a selected release output.
|
|
81
82
|
|
|
83
|
+
## Current capabilities
|
|
84
|
+
|
|
85
|
+
| Build this | Start here |
|
|
86
|
+
| --- | --- |
|
|
87
|
+
| A standalone browser app with shared theme, components, source serving and PWA resources | [Beginner quick start](#beginner-quick-start), [CLI](docs/reference/cli.md), [PWA](docs/reference/pwa.md) |
|
|
88
|
+
| Streaming or complete AI responses, structural tools and a model selected for one request | [AI runtime](docs/reference/runtime-modules.md#aijs), [TWiN Cloud](docs/reference/ai/twin-cloud.md) |
|
|
89
|
+
| Stateless state-and-questions evaluation or image generation | [`fetchSystemOneRequest`](docs/reference/ai/twin-cloud.md#evaluate-caller-owned-state-with-system-one), [`generateImages`](docs/reference/ai/twin-cloud.md#generate-images-with-an-application-selected-model) |
|
|
90
|
+
| Browser-local language models with an application-owned model catalog | [Browser-WASM AI](docs/reference/ai/browser-wasm.md) |
|
|
91
|
+
| Local Whisper/Kokoro, native browser recognition and voices, or selected cloud speech | [Speech provider guide](docs/reference/ai/browser-speech.md) |
|
|
92
|
+
| Editable live transcription, ordered speech playback and printed conversations | [Chat](docs/reference/runtime-components.md#chathtml), [SpeechPlayback](docs/reference/runtime-modules.md#speechplaybackjs) |
|
|
93
|
+
| Complete saved conversations, request-only turns, document retrieval and stored Markdown images | [Chat sessions](docs/reference/runtime-modules.md#persistentaichatsessionjs), [document library](docs/reference/runtime-modules.md#dbopfsdocumentlibraryjs), [MarkdownMedia](docs/reference/runtime-modules.md#markdownmediajs) |
|
|
94
|
+
| Windows, Linux or Android development output from the same app | [Native target matrix](docs/platform-targets.md) |
|
|
95
|
+
|
|
96
|
+
Provider and platform availability are documented at each surface. Applications
|
|
97
|
+
own model selection, credentials, prompts, saved data and product behavior.
|
|
98
|
+
|
|
82
99
|
## Beginner quick start
|
|
83
100
|
|
|
84
101
|
Create one browser application, install its pinned SDK, and start its source
|
|
85
102
|
server:
|
|
86
103
|
|
|
87
104
|
```bash
|
|
88
|
-
npx arcane-os@
|
|
105
|
+
npx arcane-os@latest new hello-speech --path ./hello-speech --target browser
|
|
89
106
|
cd hello-speech
|
|
90
107
|
npm install
|
|
91
108
|
```
|
|
@@ -135,24 +152,26 @@ PWA and storage availability still depend on the browser's secure-context
|
|
|
135
152
|
rules; see [HTTP development](docs/reference/cli.md#explicit-http-development).
|
|
136
153
|
|
|
137
154
|
Open the URL printed by the server. The generated page owns its import map and
|
|
138
|
-
Arcane theme; its application module is `
|
|
139
|
-
|
|
140
|
-
module
|
|
155
|
+
Arcane theme; its application module is `modules/App.js` at the repository root.
|
|
156
|
+
Root applications use managed `arcane-os/*` browser imports. Importing
|
|
157
|
+
`arcane-os/ai` resolves the shared AI module; its browser lifecycle still
|
|
158
|
+
requires the documented browser environment. For a stateless Node request,
|
|
159
|
+
use `arcane-os/ai/twin-cloud`.
|
|
141
160
|
|
|
142
161
|
For a first spoken sentence, copy the application-owned
|
|
143
162
|
[`speech-selection.js` configuration from the speech quick start](https://github.com/TheWizardNexus/arcane-os-sdk/blob/main/docs/reference/ai/browser-speech.md#quick-start-say-one-sentence)
|
|
144
163
|
beside `App.js`, then use this module. That one configuration file defines the
|
|
145
164
|
upstream runtime, model, dtype, and voice. This module creates the application's
|
|
146
165
|
DBOPFS store; the SDK creates and manages its speech providers and Workers.
|
|
147
|
-
The linked automatic/
|
|
166
|
+
The linked automatic NPU/GPU/CPU selection uses `fp32` because
|
|
148
167
|
[Kokoro.js recommends `fp32` when using WebGPU](https://github.com/hexgrad/kokoro/tree/main/kokoro.js#usage).
|
|
149
168
|
Its `selectedDevice` status reports the loaded route, not speech correctness or
|
|
150
169
|
audio quality.
|
|
151
170
|
|
|
152
171
|
```javascript
|
|
153
|
-
import arcaneThemeReady from 'arcane/ThemeBootstrap';
|
|
154
|
-
import AI, { AI_BROWSER_SPEECH_CONFIGURATION_PROTOCOL } from 'arcane/
|
|
155
|
-
import DBOPFS from 'arcane/DBOPFS';
|
|
172
|
+
import arcaneThemeReady from 'arcane-os/modules/ThemeBootstrap.js';
|
|
173
|
+
import AI, { AI_BROWSER_SPEECH_CONFIGURATION_PROTOCOL } from 'arcane-os/ai';
|
|
174
|
+
import DBOPFS from 'arcane-os/modules/DBOPFS.js';
|
|
156
175
|
import { speechSelection } from './speech-selection.js';
|
|
157
176
|
|
|
158
177
|
await arcaneThemeReady;
|
|
@@ -204,7 +223,7 @@ If your app already has complete segments in an array, let the shared
|
|
|
204
223
|
`SpeechPlayback` owner submit them as soon as they are available:
|
|
205
224
|
|
|
206
225
|
```javascript
|
|
207
|
-
import SpeechPlayback from 'arcane/
|
|
226
|
+
import SpeechPlayback from 'arcane-os/speech-playback';
|
|
208
227
|
|
|
209
228
|
const audio = document.body.appendChild(document.createElement('audio'));
|
|
210
229
|
audio.controls = true;
|
|
@@ -239,7 +258,7 @@ the application or prove that a selected provider supports one:
|
|
|
239
258
|
import {
|
|
240
259
|
SPEECH_VOICE_ALIASES,
|
|
241
260
|
SPEECH_VOICE_OPTIONS
|
|
242
|
-
} from 'arcane/
|
|
261
|
+
} from 'arcane-os/speech-playback';
|
|
243
262
|
|
|
244
263
|
console.log(SPEECH_VOICE_OPTIONS[0]); // {value: 'alloy', label: 'Alloy'}
|
|
245
264
|
console.log(SPEECH_VOICE_ALIASES.has('alloy')); // true
|
|
@@ -308,11 +327,13 @@ TWiN Cloud is the SDK's default remote language-model service, identified by
|
|
|
308
327
|
`openai-gpt-oss-120b`. Supply the bearer credential through `ai.twinKey` or
|
|
309
328
|
`globalThis.arcane.config.twinCloud.accessKey`. The established `ai.license`
|
|
310
329
|
property remains available. Applications should present the service and
|
|
311
|
-
credential as **TWiN Cloud** and **TWiN access key**.
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
Kokoro (`LOCAL_SPEACH` / `kokoro`)
|
|
315
|
-
|
|
330
|
+
credential as **TWiN Cloud** and **TWiN access key**. Explicit cloud speech,
|
|
331
|
+
System One and image requests also use application-supplied credentials.
|
|
332
|
+
The built-in local speech selections remain Whisper (`LOCAL_SPEACH` /
|
|
333
|
+
`whisper-small`) for transcription and Kokoro (`LOCAL_SPEACH` / `kokoro`) for
|
|
334
|
+
synthesis. Those local routes use no TWiN key. Applications may separately
|
|
335
|
+
select native browser speech or TWiN Cloud TTS; browser-native services may
|
|
336
|
+
process speech remotely.
|
|
316
337
|
|
|
317
338
|
The built-in provider and default-model preference sentinel are both `TWIN`.
|
|
318
339
|
Applications upgrading saved preference tuples must replace only uppercase
|
|
@@ -334,6 +355,12 @@ Cloud maps it to DigitalOcean Serverless Inference `reasoning_effort`; omitting
|
|
|
334
355
|
it preserves the provider default. TWiN Cloud defaults to
|
|
335
356
|
`openai-gpt-oss-120b`, and applications may explicitly select
|
|
336
357
|
`openai-gpt-oss-20b` without changing streaming or structural-tool behavior.
|
|
358
|
+
An explicit request `model` selects that call's model without changing saved
|
|
359
|
+
preferences. The stateless `fetchRequest`, `fetchSystemOneRequest` and
|
|
360
|
+
`generateImages` exports in `arcane-os/ai/twin-cloud` require a caller-selected
|
|
361
|
+
model and return the complete documented provider result. They retain no chat
|
|
362
|
+
history. See the [TWiN Cloud guide](docs/reference/ai/twin-cloud.md) for each
|
|
363
|
+
request shape, diagnostic callbacks, cancellation and image-job behavior.
|
|
337
364
|
|
|
338
365
|
## Browser-local AI
|
|
339
366
|
|
|
@@ -387,8 +414,9 @@ Capability reports evaluate each
|
|
|
387
414
|
app-supplied model as `compatible`, `incompatible`, or `unknown`; the app can
|
|
388
415
|
render that result without the SDK inventing or filtering its catalog.
|
|
389
416
|
|
|
390
|
-
`arcane-os/ai/browser-speech` exposes independent Whisper STT
|
|
391
|
-
|
|
417
|
+
`arcane-os/ai/browser-speech` exposes independent Whisper STT, Kokoro TTS,
|
|
418
|
+
native browser recognition, native browser synthesis and TWiN Cloud TTS
|
|
419
|
+
provider factories. The local-model path contains the plain-JavaScript provider and
|
|
392
420
|
Worker machinery, not speech runtimes, models, voices, or a CDN default. An app
|
|
393
421
|
must supply each runtime/model selection explicitly. Speech roles
|
|
394
422
|
load, cancel, unload, fail, and recover independently, so speech failure never
|
|
@@ -403,6 +431,16 @@ requested and selected devices through execution status. A selected backend
|
|
|
403
431
|
reports successful upstream loading, not physical accelerator use for every
|
|
404
432
|
operation; model and hardware compatibility remain upstream.
|
|
405
433
|
|
|
434
|
+
Native speech requires the browser's actual recognition or synthesis API.
|
|
435
|
+
Voice discovery and preparation are silent; explicit playback owns completion,
|
|
436
|
+
pause, resume, cancellation and release. `provider.setDefaultVoice(voiceURI|null)`
|
|
437
|
+
changes future native preparations while preserving explicit choices and
|
|
438
|
+
already prepared speech. `ai.prepareTTSPlayback(payload,signal)` returns a native
|
|
439
|
+
playback descriptor or real Blob audio; `fetchTTS()` and durable `prepareTTS()` require real
|
|
440
|
+
audio and report native audio-export unavailability. Cloud TTS queues complete
|
|
441
|
+
jobs and preserves original-order playback. See the [speech guide](docs/reference/ai/browser-speech.md)
|
|
442
|
+
for voice catalogs, recognition language and provider-specific limits.
|
|
443
|
+
|
|
406
444
|
Applications that need faster spoken-response onset can configure the shared
|
|
407
445
|
TTS stream without taking over synthesis or playback:
|
|
408
446
|
|
|
@@ -453,12 +491,14 @@ uses the same controller for automatic memory extraction.
|
|
|
453
491
|
|
|
454
492
|
## Install
|
|
455
493
|
|
|
456
|
-
Create a
|
|
494
|
+
Create a standalone Arcane application from the current stable SDK. The scaffold
|
|
495
|
+
records the selected exact version:
|
|
457
496
|
|
|
458
497
|
```bash
|
|
459
|
-
npx arcane-os@
|
|
498
|
+
npx arcane-os@latest new my-app --path ./my-app --target browser --git
|
|
460
499
|
cd my-app
|
|
461
500
|
npm install
|
|
501
|
+
# Configure HTTPS as described above, then start source development.
|
|
462
502
|
npm run dev
|
|
463
503
|
```
|
|
464
504
|
|
|
@@ -466,8 +506,8 @@ To enroll an existing repository, install the exact SDK and initialize only
|
|
|
466
506
|
missing Arcane files:
|
|
467
507
|
|
|
468
508
|
```bash
|
|
469
|
-
npm install --save-
|
|
470
|
-
npm exec -- arcane init my-app --target
|
|
509
|
+
npm install --save-exact arcane-os@latest
|
|
510
|
+
npm exec -- arcane init my-app --target browser
|
|
471
511
|
```
|
|
472
512
|
|
|
473
513
|
The npm package is named `arcane-os`. Its primary executable is `arcane`, and
|
|
@@ -482,7 +522,7 @@ npm exec -- arcane-os targets
|
|
|
482
522
|
No global SDK install or standalone Arcane CLI is required. The application
|
|
483
523
|
repository's exact npm dependency and lockfile own the CLI and toolchain version.
|
|
484
524
|
|
|
485
|
-
Use `npx arcane-os@
|
|
525
|
+
Use `npx arcane-os@latest` for the initial bootstrap because it names this npm
|
|
486
526
|
package explicitly; bare `npx arcane` outside an installed project could resolve
|
|
487
527
|
a different package. Both installed commands invoke the same headless toolchain.
|
|
488
528
|
Project-local npm scripts use the SDK pinned by that app's `package-lock.json`,
|
|
@@ -498,11 +538,11 @@ tarball install in the app's package manifest and lock:
|
|
|
498
538
|
# From the arcane-os-sdk checkout
|
|
499
539
|
npm ci
|
|
500
540
|
npm run pack:local
|
|
501
|
-
node ./bin/arcane.mjs new local-app --path ../local-app --target
|
|
541
|
+
node ./bin/arcane.mjs new local-app --path ../local-app --target browser --git
|
|
502
542
|
|
|
503
543
|
# From the generated app repository
|
|
504
544
|
cd ../local-app
|
|
505
|
-
npm install --save-
|
|
545
|
+
npm install --save-exact "../arcane-os-sdk/arcane-os-<selected-version>.tgz"
|
|
506
546
|
npm ci
|
|
507
547
|
```
|
|
508
548
|
|
|
@@ -511,7 +551,7 @@ same location. The lockfile retains the selected package dependency while
|
|
|
511
551
|
Arcane uses the installed package name and version. Local directory `file:` dependencies are not
|
|
512
552
|
accepted because npm may install them as links; use a packed `.tgz`. A GitHub
|
|
513
553
|
runner also needs that tarball at the locked path. After publication, replace
|
|
514
|
-
the local declaration with the exact
|
|
554
|
+
the local declaration with the selected exact registry version and
|
|
515
555
|
commit the regenerated lock.
|
|
516
556
|
|
|
517
557
|
Generated repositories use `npm ci --ignore-scripts` in CI. Run dependency
|
|
@@ -622,16 +662,11 @@ Portable path validation rejects file/directory prefix conflicts,
|
|
|
622
662
|
case-colliding prefix spellings, and Windows device aliases including
|
|
623
663
|
superscript COM/LPT digits.
|
|
624
664
|
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
When requested, a third job downloads that same artifact id, independently
|
|
631
|
-
repeats those checks against the post-upload outputs, and alone receives narrow
|
|
632
|
-
OIDC/attestation permissions. No package manager, dependency resolution, caller
|
|
633
|
-
checkout, check, or adapter runs with that authority. An unattested uploaded
|
|
634
|
-
artifact remains an ordinary build output.
|
|
665
|
+
Use the public package and bundle commands for the selected app output.
|
|
666
|
+
The checked-in reusable `release-app.yml` workflow still pins an older SDK and
|
|
667
|
+
is outside the current supported release path. See
|
|
668
|
+
[publication scope](docs/publishing.md#reusable-application-release-workflow)
|
|
669
|
+
before selecting a repository release workflow.
|
|
635
670
|
|
|
636
671
|
## SDK test sets
|
|
637
672
|
|
|
@@ -654,7 +689,7 @@ package installation, or assertions.
|
|
|
654
689
|
|
|
655
690
|
## Current target support
|
|
656
691
|
|
|
657
|
-
|
|
692
|
+
The SDK exposes one browser target and five explicitly paired
|
|
658
693
|
native development targets: a non-runnable portable directory, a
|
|
659
694
|
Windows x64 unsigned-local-test EXE bundle, Linux x64 and Linux ARM64
|
|
660
695
|
unsigned-local-test DEBs, and an Android development-signed APK. The
|
|
@@ -764,7 +799,8 @@ extraction sequence is tracked in [docs/roadmap.md](https://github.com/TheWizard
|
|
|
764
799
|
|
|
765
800
|
## Canonical app descriptor
|
|
766
801
|
|
|
767
|
-
New apps own `
|
|
802
|
+
New standalone apps own root `arcane-app.json` schema 2; explicitly selected
|
|
803
|
+
multi-app layouts use `apps/<id>/arcane-app.json`. It contains publisher,
|
|
768
804
|
optional permissions and security declarations, native presentation, optional
|
|
769
805
|
Core requirements, and target intent, and deterministically projects the schema-1
|
|
770
806
|
`arcane-package.json` required by the current browser packager. The pinned
|
|
@@ -793,6 +829,7 @@ The synchronized Arcane runtime and packager are currently distributed under
|
|
|
793
829
|
AGPL-3.0-only. The commercial-license notice does not itself grant proprietary
|
|
794
830
|
distribution rights. Resolve the applicable Arcane commercial or open-source
|
|
795
831
|
license before distributing a closed-source app that bundles this runtime. Each
|
|
796
|
-
browser release carries `LICENSE`, `COMMERCIAL-LICENSE.md`, and `NOTICE`
|
|
797
|
-
|
|
798
|
-
|
|
832
|
+
browser release carries `LICENSE`, `COMMERCIAL-LICENSE.md`, and `NOTICE` at the
|
|
833
|
+
configured SDK package route: `node_modules/<dependency>/` for direct installed
|
|
834
|
+
routes, or `licenses/arcane-os/` for a configured physical runtime layout. The
|
|
835
|
+
notice includes the complete bundled Marked and QRCode.js MIT terms.
|
|
@@ -15,6 +15,7 @@ export async function fetchRequest({
|
|
|
15
15
|
toolChoice = 'auto',
|
|
16
16
|
parallelToolCalls,
|
|
17
17
|
reasoningEffort,
|
|
18
|
+
temperature,
|
|
18
19
|
signal = null,
|
|
19
20
|
id = Date.now(),
|
|
20
21
|
onRequest = function observeTWiNRequest(){},
|
|
@@ -48,6 +49,9 @@ export async function fetchRequest({
|
|
|
48
49
|
if(reasoningEffort){
|
|
49
50
|
request.reasoning_effort = reasoningEffort;
|
|
50
51
|
}
|
|
52
|
+
if(temperature !== undefined){
|
|
53
|
+
request.temperature = temperature;
|
|
54
|
+
}
|
|
51
55
|
|
|
52
56
|
try{
|
|
53
57
|
await onRequest(
|
package/docs/architecture.md
CHANGED
|
@@ -90,8 +90,8 @@ An external workspace can select `installed-v1` routes directly from its
|
|
|
90
90
|
runtime, browser runtime, runtime dependency, and licenses to the configured
|
|
91
91
|
browser destinations. Direct destinations are the real npm paths. Existing
|
|
92
92
|
`physical-v1` workspaces, virtual installed routes, and the explicit materializer
|
|
93
|
-
remain supported. Root scaffolding selects direct npm routes;
|
|
94
|
-
multi-app scaffold retains its physical layout. See [installed-package routes](reference/protocols.md#installed-package-browser-routes)
|
|
93
|
+
remain supported. Root scaffolding selects direct npm routes; an explicitly
|
|
94
|
+
selected multi-app scaffold retains its physical layout. See [installed-package routes](reference/protocols.md#installed-package-browser-routes)
|
|
95
95
|
for the configuration and npm-alias form.
|
|
96
96
|
|
|
97
97
|
An Arcane OS checkout is an integrated SDK consumer, not the owner
|
|
@@ -156,6 +156,9 @@ selected source route and the last successful check when evaluating freshness.
|
|
|
156
156
|
|
|
157
157
|
The shared dev server uses RIAEvangelist's published `node-http-server` 10.0.0
|
|
158
158
|
public interface for HTTPS and conditional responses on those selected routes.
|
|
159
|
+
Source files, generated resources and packaged previews use the module's complete
|
|
160
|
+
published MIME map, including PDF, Markdown, audio and video. Unknown file
|
|
161
|
+
extensions use `application/octet-stream`.
|
|
159
162
|
PEM-backed HTTPS uses Node's `Http2SecureServer` with HTTP/1.1 compatibility;
|
|
160
163
|
clients negotiate either protocol on the same HTTPS port. The SDK
|
|
161
164
|
owns source selection and generated representations. By default, source development
|
|
@@ -213,8 +216,20 @@ release artifact.
|
|
|
213
216
|
|
|
214
217
|
## App and release contract
|
|
215
218
|
|
|
216
|
-
|
|
217
|
-
|
|
219
|
+
Standalone applications use their repository root as their app root. The default
|
|
220
|
+
scaffold uses `appsRoot: "."` and direct installed-package SDK routes:
|
|
221
|
+
|
|
222
|
+
```text
|
|
223
|
+
arcane-app.json
|
|
224
|
+
arcane-package.json
|
|
225
|
+
index.html
|
|
226
|
+
node_modules/arcane-os/
|
|
227
|
+
dist/<id>/index.html
|
|
228
|
+
dist/<id>/node_modules/arcane-os/
|
|
229
|
+
dist/<id>/ARCANE_APP_RELEASE.json
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Explicit multi-app and integrated workspaces retain `appsRoot: "apps"`:
|
|
218
233
|
|
|
219
234
|
```text
|
|
220
235
|
apps/<id>/arcane-app.json
|
|
@@ -236,20 +251,20 @@ release URLs. Preview, verification, bundling, and native browser-content input
|
|
|
236
251
|
consume that same selected release root; native executable output remains
|
|
237
252
|
separate. See the [complete output contract](reference/protocols.md#app-selected-package-output).
|
|
238
253
|
|
|
239
|
-
Packaging
|
|
240
|
-
|
|
241
|
-
supplies
|
|
242
|
-
entry. Authored document bases, app URLs, relative module
|
|
243
|
-
runtime paths therefore resolve through the same layout in
|
|
254
|
+
Packaging keeps standalone app files at the release root and places an explicitly
|
|
255
|
+
nested app beneath `apps/<id>/`. It preserves every shared route destination.
|
|
256
|
+
When selected content supplies no root `index.html`, the SDK generates one that
|
|
257
|
+
opens the selected app entry. Authored document bases, app URLs, relative module
|
|
258
|
+
imports and shared runtime paths therefore resolve through the same layout in
|
|
244
259
|
source development and packaged delivery. Packaging consumes the saved source
|
|
245
260
|
and managed import maps; use `arcane import-map` to refresh those maps, or the
|
|
246
261
|
ordinary `arcane dev` startup that performs that refresh.
|
|
247
262
|
|
|
248
263
|
The release manifest keeps `app.entry` relative to the app directory and records
|
|
249
|
-
the package launch URL in `app.start
|
|
250
|
-
`./apps/hello-world/index.html
|
|
251
|
-
|
|
252
|
-
`app.start`; a previously generated flat release without `app.start` retains
|
|
264
|
+
the package launch URL in `app.start`: `./index.html` for a root app with that
|
|
265
|
+
entry, or `./apps/hello-world/index.html` for a nested app. Its complete `files`
|
|
266
|
+
inventory follows the selected layout and includes the root `index.html`.
|
|
267
|
+
Packaged browser serving opens `app.start`; a previously generated flat release without `app.start` retains
|
|
253
268
|
its `app.entry` launch path.
|
|
254
269
|
|
|
255
270
|
The authored schema-2 descriptor is canonical for new apps and projects an
|
|
@@ -271,8 +286,9 @@ same URLs. Existing physical `arcane/` routes retain their behavior.
|
|
|
271
286
|
`appsRoot: "."` places one standalone application at the workspace root while
|
|
272
287
|
retaining its declared ID and app-relative entries. The existing `apps` option
|
|
273
288
|
keeps multi-app and integrated layouts. Root static hosting consumes the same
|
|
274
|
-
npm URLs, managed maps
|
|
275
|
-
|
|
289
|
+
npm URLs, managed maps and generated PWA files as SDK development. It generates
|
|
290
|
+
no nested `apps/<id>/` navigation pages or redirects. TWiN's ordinary static
|
|
291
|
+
host needs no additional server;
|
|
276
292
|
separate Node API hosts such as Stripe keep their existing server and SDK mail
|
|
277
293
|
imports. Application location does not change their listeners or configuration.
|
|
278
294
|
|
|
@@ -400,8 +416,8 @@ paths are withheld from the native provider. The provider copies the complete
|
|
|
400
416
|
selected release rather than accepting an unrelated source path. Verification
|
|
401
417
|
is a separate explicit operation for a selected release artifact.
|
|
402
418
|
|
|
403
|
-
The
|
|
404
|
-
is contractual rather than exact-version pinning: the prepared Core must meet
|
|
419
|
+
The current native build contract requires Arcane Core `0.8.12` or newer.
|
|
420
|
+
Compatibility is contractual rather than exact-version pinning: the prepared Core must meet
|
|
405
421
|
the highest minimum declared by the runtime, selected app, and bundled app
|
|
406
422
|
dependencies; keep each app's Arcane protocol generation; and provide every
|
|
407
423
|
declared feature, capability, and method. Missing requirements stop before
|
package/docs/platform-targets.md
CHANGED
|
@@ -5,6 +5,7 @@ named operations:
|
|
|
5
5
|
|
|
6
6
|
```text
|
|
7
7
|
describe -> doctor -> prepare -> plan -> build -> run
|
|
8
|
+
\-> verify (explicit selection)
|
|
8
9
|
```
|
|
9
10
|
|
|
10
11
|
The available browser adapter plans from the selected workspace and schema-1
|
|
@@ -24,9 +25,10 @@ output. For example:
|
|
|
24
25
|
|
|
25
26
|
```bash
|
|
26
27
|
# Choose one target when creating each app repository.
|
|
27
|
-
npx arcane-os@
|
|
28
|
+
npx arcane-os@latest new my-app --path ./my-app --target portable --git
|
|
28
29
|
cd my-app
|
|
29
30
|
npm install
|
|
31
|
+
npm run import-map
|
|
30
32
|
npm exec -- arcane native-doctor --target portable --arcane-root "../Arcane OS"
|
|
31
33
|
npm exec -- arcane build --target portable --arcane-root "../Arcane OS"
|
|
32
34
|
|
|
@@ -52,7 +54,12 @@ npm exec -- arcane run --target android-arm64 --arcane-root "../Arcane OS" --for
|
|
|
52
54
|
|
|
53
55
|
Every native scaffold also declares the browser target, so one repository can
|
|
54
56
|
use the normal browser development loop and its one selected native build. It
|
|
55
|
-
|
|
57
|
+
uses the repository root by default (`appsRoot: "."`) and reads SDK resources
|
|
58
|
+
from its installed npm dependency. After `npm install`, run
|
|
59
|
+
`npm run import-map` before the first package or build so the root app's managed
|
|
60
|
+
browser maps are present. The initial scaffold reports that map as pending while
|
|
61
|
+
the SDK dependency is absent. The scaffold includes the raster icon required
|
|
62
|
+
by the current native platform. Use the
|
|
56
63
|
matching scaffold target (`portable`, `windows-x64`, `linux-x64`, `linux-arm64`,
|
|
57
64
|
or `android-arm64`) before running the corresponding command.
|
|
58
65
|
|
|
@@ -80,6 +87,12 @@ for the complete compatibility and breaking-change rule.
|
|
|
80
87
|
| `linux-arm64` | `deb` | Available with explicit `--arcane-root` on a compatible native ARM64 toolchain; unsigned local development only |
|
|
81
88
|
| `android-arm64` | `apk` | Available with explicit `--arcane-root`; development-signed, architecture-neutral, and physical/native ARM64 for run |
|
|
82
89
|
|
|
90
|
+
macOS can consume browser applications and portable JavaScript capabilities
|
|
91
|
+
within their declared runtimes. The current target registry has no macOS native
|
|
92
|
+
package adapter; it exposes only the six targets above. A source-development
|
|
93
|
+
native wrapper is also not an exposed `arcane dev` target. Native `run` uses the
|
|
94
|
+
selected packaged application through its paired provider.
|
|
95
|
+
|
|
83
96
|
Every native target accepts one selected app release and its complete bundled
|
|
84
97
|
dependency closure through the provider boundary. The providers retain the
|
|
85
98
|
toolchain state required for build and, where supported, launch; app source and
|
package/docs/reference/README.md
CHANGED
|
@@ -17,15 +17,15 @@ high-level page links to the relevant deep section instead of repeating it.
|
|
|
17
17
|
Install the SDK in your application:
|
|
18
18
|
|
|
19
19
|
```sh
|
|
20
|
-
npm install --save-exact arcane-os@
|
|
20
|
+
npm install --save-exact arcane-os@latest
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
For your first AI call, follow the [TWiN Cloud quick start](ai/twin-cloud.md).
|
|
24
|
-
For
|
|
24
|
+
For local models, native browser voices or cloud speech, follow the [browser speech guide](ai/browser-speech.md)
|
|
25
25
|
and the complete [browser AI demo](https://github.com/TheWizardNexus/arcane-os-sdk/tree/main/examples/wasm-ai-demo).
|
|
26
26
|
Each guide names the application configuration you supply and shows the public
|
|
27
27
|
call, response, cancellation, and error handling. Browser module imports use
|
|
28
|
-
the SDK's [
|
|
28
|
+
the SDK's [managed import map](cli.md#arcane-import-map); installing npm
|
|
29
29
|
alone does not make bare module names resolve in a browser.
|
|
30
30
|
|
|
31
31
|
## Reference map
|
|
@@ -47,8 +47,11 @@ alone does not make bare module names resolve in a browser.
|
|
|
47
47
|
| Subscribe to native events | [Arcane event reference](core/arcane-events.md) |
|
|
48
48
|
| Use provider-neutral AI lifecycle, chat, speech, persistence, or document context | [Normalized AI](#normalized-ai) |
|
|
49
49
|
| Run a caller-selected local LLM in the browser | [Browser-WASM local AI](ai/browser-wasm.md) |
|
|
50
|
-
| Run caller-selected Whisper
|
|
51
|
-
| Send
|
|
50
|
+
| Run caller-selected Whisper/Kokoro, native browser recognition/voices or cloud TTS | [Browser speech providers](ai/browser-speech.md) |
|
|
51
|
+
| Send TWiN chat, System One state/questions or image requests | [TWiN Cloud guide](ai/twin-cloud.md) |
|
|
52
|
+
| Edit live transcription before Send, or print a complete conversation | [Chat component](runtime-components.md#chathtml) |
|
|
53
|
+
| Store images outside Markdown and hydrate them in previews | [MarkdownMedia](runtime-modules.md#markdownmediajs) |
|
|
54
|
+
| Print complete rendered documents, previews and conversations | [PrintView](runtime-modules.md#printviewjs) |
|
|
52
55
|
| Use Arcane Ollama | [Arcane Ollama guide](arcane-ollama.md) |
|
|
53
56
|
| Understand transports and protocol switching | [Protocol and host architecture](protocols.md) |
|
|
54
57
|
| Run contract and behavior tests | [Behavioral testing](behavioral-testing.md) |
|
|
@@ -59,9 +62,9 @@ This repository contains explicitly versioned surfaces with different owners:
|
|
|
59
62
|
|
|
60
63
|
| Surface | Source identity | Meaning |
|
|
61
64
|
| --- | --- | --- |
|
|
62
|
-
| SDK and CLI | `arcane-os
|
|
63
|
-
| Browser runtime | SDK
|
|
64
|
-
| Browser SDK runtime | SDK `
|
|
65
|
+
| SDK and CLI | `arcane-os`; version in [`package.json`](../../package.json) | The Node.js toolchain and focused public entrypoints listed in the [SDK API](sdk-api.md). Each entrypoint retains its own runtime requirements. |
|
|
66
|
+
| Browser runtime | Selected SDK, protocol `arcane/1`, `runtime/` | The SDK-canonical runtime tree. `listRuntimeFiles()`, `readRuntimeFile()`, and `loadRuntimeRelease()` derive its current inventory directly from the selected directory. |
|
|
67
|
+
| Browser SDK runtime | Selected SDK, `browser-runtime/` | Events, logging, Wllama, local/native/cloud speech, TWiN requests and PWA mechanisms. `listSdkBrowserRuntimeFiles()`, `readSdkBrowserRuntimeFile()`, and `loadSdkBrowserRuntimeRelease()` derive its current inventory directly from the selected directory. |
|
|
65
68
|
| Core reference snapshot | Arcane OS commit `567ad110bf57a1c2d4a3daa22ae93716cc5f4d7e`, protocol `arcane/1` | The application-facing Core contract imported into `docs/reference/core/`, with SDK-local links and package-boundary notes added explicitly. |
|
|
66
69
|
|
|
67
70
|
The SDK runtime source and Core reference have different owners. A browser
|
|
@@ -76,7 +79,9 @@ and the distinction between a documentation snapshot and the selected runtime.
|
|
|
76
79
|
|
|
77
80
|
## Installed documentation and release identity
|
|
78
81
|
|
|
79
|
-
|
|
82
|
+
The repository reference follows the current committed SDK capabilities. A
|
|
83
|
+
documentation-only repository update can be newer than the text bundled in an
|
|
84
|
+
already published package. The installed package includes
|
|
80
85
|
the maintained `docs/` tree and `examples/wasm-ai-demo/` source alongside
|
|
81
86
|
README and CHANGELOG. Open `node_modules/arcane-os/docs/reference/README.md`
|
|
82
87
|
for the matching local reference. The generated website and test suites remain
|
|
@@ -125,28 +130,26 @@ Public reference entries follow the established Arcane documentation model:
|
|
|
125
130
|
|
|
126
131
|
## Public runtime inventory
|
|
127
132
|
|
|
128
|
-
The
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
inventory](inventory/package-api.json) and [SDK member reference](sdk-api.md)
|
|
137
|
-
are checked bidirectionally against every declared JavaScript export.
|
|
133
|
+
The public export map is maintained in [`package.json`](../../package.json).
|
|
134
|
+
It includes Node tooling, focused portable/browser entrypoints, direct runtime
|
|
135
|
+
module and entity patterns, eight JSON Schemas and package metadata. The
|
|
136
|
+
[SDK member reference](sdk-api.md) and [package inventory](inventory/package-api.json)
|
|
137
|
+
describe focused functions; the runtime catalogs document the existing
|
|
138
|
+
namespaces exposed through lowercase aliases and filename-based imports.
|
|
139
|
+
Resolving a package name in Node does not supply browser, media, storage or
|
|
140
|
+
Core capabilities. See the [availability matrix](availability-and-normalization.md).
|
|
138
141
|
|
|
139
142
|
The seven update-check records are explicit on-demand checks; they do not poll,
|
|
140
143
|
download, install, or self-update.
|
|
141
144
|
|
|
142
145
|
The synchronized browser payload exposes:
|
|
143
146
|
|
|
144
|
-
-
|
|
147
|
+
- JavaScript modules under `runtime/arcane/modules/`, including
|
|
145
148
|
ESM modules, classic vendor globals, one worker protocol, and one Node-oriented
|
|
146
149
|
mail transport;
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
-
|
|
150
|
+
- shared entity modules under `runtime/arcane/entities/`;
|
|
151
|
+
- reusable HTML-import components under `runtime/arcane/components/`;
|
|
152
|
+
- shared CSS artifacts, images, optional physical-workspace security
|
|
150
153
|
files where present, and the vendored `strong-type` dependency.
|
|
151
154
|
|
|
152
155
|
The module and component catalogs enumerate every shipped artifact, including
|
|
@@ -165,9 +168,11 @@ Ollama, Wllama, Whisper, Kokoro, native, or cloud transport:
|
|
|
165
168
|
| Observe sticky role state and startup settlement | [`AIRuntimeState.js`](runtime-modules.md#airuntimestatejs) | Cross-host EventTarget state; observation grants no authority. |
|
|
166
169
|
| 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. |
|
|
167
170
|
| Use Core-normalized chat | [`globalThis.Arcane.ai`](core/arcane-ai-contracts.md) | Native/Core only when separately admitted. |
|
|
168
|
-
| Run a caller-selected GGUF LLM locally | [`arcane-os/ai/browser-wasm`](ai/browser-wasm.md) | Browser secure context with WebGPU full
|
|
169
|
-
| Run caller-selected Whisper/Kokoro locally | [`arcane-os/ai/browser-speech`](ai/browser-speech.md) | Browser with DBOPFS, Web Locks, Workers
|
|
170
|
-
|
|
|
171
|
+
| Run a caller-selected GGUF LLM locally | [`arcane-os/ai/browser-wasm`](ai/browser-wasm.md) | Browser secure context with WebAssembly and OPFS/DBOPFS; explicit CPU selection or WebGPU with full offload and no automatic CPU fallback. |
|
|
172
|
+
| Run caller-selected Whisper/Kokoro locally | [`arcane-os/ai/browser-speech`](ai/browser-speech.md) | Browser with DBOPFS, Web Locks, Workers and selected upstream sources; automatic WebNN NPU, WebGPU, then WASM loading, or an explicit backend. |
|
|
173
|
+
| Use native browser recognition/voices or selected cloud TTS | [Speech provider choices](ai/browser-speech.md) | Native APIs depend on the browser and may use remote services; cloud TTS requires the application key and endpoint access. |
|
|
174
|
+
| Send complete chat, System One or image requests without retained history | [`arcane-os/ai/twin-cloud`](ai/twin-cloud.md) | Node or browser with Fetch and explicit model/credentials; image results contain every returned image as a Blob. |
|
|
175
|
+
| Add persistent history and memory | [`PersistentAIChatSession.js`](runtime-modules.md#persistentaichatsessionjs) | Browser/native WebView runtime with ChatEntity/DBOPFS and a configured chat function; `persist:false` ends retention when the operation settles. |
|
|
171
176
|
| Add explicit document search/context | [`DBOPFSDocumentLibrary.js`](runtime-modules.md#dbopfsdocumentlibraryjs) | Existing DBOPFS-style adapter; search occurs only after the app calls it or deliberately wires its context builder into chat. |
|
|
172
177
|
|
|
173
178
|
There is no automatic local-to-cloud, browser-to-Core, provider-to-provider, or
|