arcane-os 0.1.1 → 0.2.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 +17 -0
- package/NOTICE +5 -3
- package/README.md +73 -24
- package/browser-runtime/ARCANE_SDK_BROWSER_RELEASE.json +67 -18
- package/browser-runtime/ai/ARCANE_AI_BROWSER_WASM_COMPONENTS.json +16 -5
- package/browser-runtime/ai/browser-kokoro-worker.mjs +3 -0
- package/browser-runtime/ai/browser-speech-artifacts.mjs +1108 -0
- package/browser-runtime/ai/browser-speech-providers.mjs +475 -0
- package/browser-runtime/ai/browser-speech.mjs +9 -0
- package/browser-runtime/ai/browser-wasm-llm-provider.mjs +1537 -167
- package/browser-runtime/ai/browser-wasm.mjs +46 -1
- package/browser-runtime/ai/browser-whisper-worker.mjs +3 -0
- package/browser-runtime/ai/browser-wllama-runtime.mjs +677 -132
- package/browser-runtime/ai/model-controller.mjs +138 -12
- package/browser-runtime/ai/speech-worker-client.mjs +207 -0
- package/browser-runtime/ai/speech-worker-runtime.mjs +516 -0
- package/browser-runtime/ai/wllama/index.mjs +389 -0
- package/docs/architecture.md +132 -22
- package/docs/reference/README.md +8 -5
- package/docs/reference/ai/browser-wasm.md +394 -0
- package/docs/reference/availability-and-normalization.md +31 -0
- package/docs/reference/behavioral-testing.md +21 -0
- package/docs/reference/cli.md +4 -4
- package/docs/reference/inventory/package-api.json +84 -4
- package/docs/reference/protocols.md +9 -8
- package/docs/reference/sdk-api.md +238 -4
- package/docs/work-amplification.md +8 -4
- package/package.json +7 -3
- package/runtime/ARCANE_RUNTIME_RELEASE.json +50 -20
- package/runtime/arcane/components/chat.html +280 -62
- package/runtime/arcane/components/speech.html +1113 -265
- package/runtime/arcane/entities/Chat.js +246 -43
- package/runtime/arcane/modules/AI.js +713 -162
- package/runtime/arcane/modules/AIProviderRuntime.js +2289 -0
- package/runtime/arcane/modules/AIRuntimeState.js +872 -0
- package/runtime/arcane/modules/ConfiguredAIChatSession.js +293 -27
- package/runtime/arcane/modules/DBOPFSDocumentLibrary.js +682 -0
- package/runtime/arcane/modules/DocumentLexicalSearch.js +292 -0
- package/runtime/arcane/modules/PersistentAIChatSession.js +268 -0
- package/runtime/arcane/modules/StaticDocumentCatalog.js +25 -206
- package/schemas/arcane-lock.schema.json +6 -4
- package/src/cli/main.mjs +14 -2
- package/src/constants.mjs +1 -1
- package/src/dev-server.mjs +246 -14
- package/src/doctor.mjs +1 -1
- package/src/import-map.mjs +59 -1
- package/src/packager/core.mjs +2 -2
- package/src/runtime.mjs +14 -4
- package/src/sdk-browser-runtime.mjs +28 -75
- package/src/templates/workspace-template.mjs +4 -4
- package/src/toolchain.mjs +3 -0
- package/src/workspace-runtime.mjs +1 -1
- package/src/workspace.mjs +1 -1
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# Arcane OS SDK JavaScript API
|
|
2
2
|
|
|
3
|
-
The npm package exposes a Node.js ESM control plane
|
|
3
|
+
The npm package exposes a Node.js ESM control plane, the Node-and-browser
|
|
4
|
+
`arcane-os/event-manager` entrypoint, and the browser-only
|
|
5
|
+
`arcane-os/ai/browser-wasm` entrypoint. Application code otherwise uses named
|
|
6
|
+
modules from the managed browser map, such as `arcane/ThemeBootstrap`, and
|
|
7
|
+
calls `globalThis.Arcane` for capability-gated host behavior.
|
|
4
8
|
|
|
5
9
|
This page is the canonical inventory for every JavaScript name reachable through `package.json#exports`. The same binding can appear at the root and a focused subpath; those entrypoints are listed together. The root workspace `discoverApps` and the low-level packager `discoverApps` are intentionally separate records because they are different functions.
|
|
6
10
|
|
|
@@ -10,7 +14,7 @@ This table is the Node `package.json#exports` map: it defines package
|
|
|
10
14
|
entrypoints for SDK/tooling code. It is distinct from the generated browser
|
|
11
15
|
import map that resolves application-facing `arcane/*` modules and the focused
|
|
12
16
|
EventManager entry. See [browser runtime delivery](protocols.md#browser-runtime-delivery)
|
|
13
|
-
for that
|
|
17
|
+
for that 86-entry physical-runtime contract.
|
|
14
18
|
|
|
15
19
|
| Specifier | Purpose |
|
|
16
20
|
| --- | --- |
|
|
@@ -25,6 +29,7 @@ for that 85-entry physical-runtime contract.
|
|
|
25
29
|
| `arcane-os/packager` | Low-level browser app packager. |
|
|
26
30
|
| `arcane-os/release-bundle` | Deterministic external release bundles. |
|
|
27
31
|
| `arcane-os/event-manager` | Central synchronous events, bounded time-travel history, playback, and optional DOM instrumentation. |
|
|
32
|
+
| `arcane-os/ai/browser-wasm` | Caller-selected browser-local Wllama inference, configurable DBOPFS model checks, streaming, cancellation, and structural tool-call results. |
|
|
28
33
|
|
|
29
34
|
JSON schemas, the runtime manifest, and `package.json` are data-only export subpaths. In Node ESM, import JSON with `with {type: 'json'}`, or resolve and read it explicitly.
|
|
30
35
|
|
|
@@ -74,14 +79,19 @@ Protocol mechanics are intentionally kept in the [deep protocol guide](protocols
|
|
|
74
79
|
| `authenticateSharedPayloadSnapshot()` | function | `arcane-os` | Packaging and release bundles | Node |
|
|
75
80
|
| `buildApplication()` | function | `arcane-os` | Headless toolchain operations | Node; selected operation may produce browser or native output |
|
|
76
81
|
| `buildTarget()` | function | `arcane-os` | Targets, native plans, and providers | Node; selected browser/native target or provider as documented |
|
|
82
|
+
| `BROWSER_WASM_RUNTIME_AUTHORITY` | constant | `arcane-os/ai/browser-wasm` | Browser-WASM local AI | Browser metadata; no model or DBOPFS required to inspect |
|
|
77
83
|
| `bumpVersion()` | function | `arcane-os/packager` | Packaging and release bundles | Node |
|
|
78
84
|
| `bundleApplication()` | function | `arcane-os` | Headless toolchain operations | Node; selected operation may produce browser or native output |
|
|
79
85
|
| `checkApplication()` | function | `arcane-os` | Headless toolchain operations | Node; selected operation may produce browser or native output |
|
|
80
86
|
| `CLI_EVENT_PROTOCOL` | constant | `arcane-os` | Identity and protocol constants | Node |
|
|
81
87
|
| `CLI_NAME` | constant | `arcane-os` | Identity and protocol constants | Node |
|
|
82
88
|
| `createApplication()` | function | `arcane-os` | Headless toolchain operations | Node; selected operation may produce browser or native output |
|
|
89
|
+
| `createArcaneAI()` | function | `arcane-os/ai/browser-wasm` | Browser-WASM local AI | Browser; compatible LLM provider or controller required |
|
|
83
90
|
| `createAppReleaseBundle()` | function | `arcane-os` | Packaging and release bundles | Node |
|
|
91
|
+
| `createBrowserModelSource()` | function | `arcane-os/ai/browser-wasm` | Browser-WASM local AI | Browser Fetch with a readable response body |
|
|
92
|
+
| `createBrowserWasmLlmProvider()` | function | `arcane-os/ai/browser-wasm` | Browser-WASM local AI | Browser; WebAssembly and DBOPFS model bytes |
|
|
84
93
|
| `createCanonicalUstarHeader()` | function | `arcane-os` | Packaging and release bundles | Node |
|
|
94
|
+
| `createDbopfsModelStore()` | function | `arcane-os/ai/browser-wasm` | Browser-WASM local AI | Browser with a ready DBOPFS instance and OPFS |
|
|
85
95
|
| `createNativeBuildPlan()` | function | `arcane-os` | Targets, native plans, and providers | Node; selected browser/native target or provider as documented |
|
|
86
96
|
| `createNativeTargetAdapter()` | function | `arcane-os` | Targets, native plans, and providers | Node; selected browser/native target or provider as documented |
|
|
87
97
|
| `createReporter()` | function | `arcane-os` | Events, processes, and testing | Node |
|
|
@@ -2645,7 +2655,7 @@ The import-map operation also reports the stable operation-specific strings
|
|
|
2645
2655
|
`ARCANE_IMPORT_MAP_COLLISION`; package assembly can additionally report
|
|
2646
2656
|
`ARCANE_IMPORT_MAP_CLEANUP_FAILED`. They are normalized `ArcaneError.code`
|
|
2647
2657
|
values, but are not properties added to this frozen general registry in SDK
|
|
2648
|
-
`0.1.
|
|
2658
|
+
`0.1.2`.
|
|
2649
2659
|
|
|
2650
2660
|
### Value and import
|
|
2651
2661
|
|
|
@@ -3464,7 +3474,7 @@ const toolchain = createToolchain({
|
|
|
3464
3474
|
|
|
3465
3475
|
// Only this explicit call refreshes the managed map and HTML entry.
|
|
3466
3476
|
const result = await toolchain.importMap();
|
|
3467
|
-
console.log(result.importMap.entryCount); //
|
|
3477
|
+
console.log(result.importMap.entryCount); // 86 in SDK 0.1.2
|
|
3468
3478
|
```
|
|
3469
3479
|
|
|
3470
3480
|
## describeTargets()
|
|
@@ -4925,6 +4935,230 @@ const stack = parseEventStack(serialized);
|
|
|
4925
4935
|
console.log(stack.sessionId, stack.events.length);
|
|
4926
4936
|
```
|
|
4927
4937
|
|
|
4938
|
+
## BROWSER_WASM_RUNTIME_AUTHORITY
|
|
4939
|
+
|
|
4940
|
+
### Overview
|
|
4941
|
+
|
|
4942
|
+
Deep-frozen authority for the browser-only runtime behind
|
|
4943
|
+
`arcane-os/ai/browser-wasm`. It records protocol
|
|
4944
|
+
`arcane-ai-browser-wasm/2`, `@wllama/wllama` `3.6.0`, the embedded llama.cpp
|
|
4945
|
+
revision, the exact packaged JavaScript and WebAssembly assets, retained MIT
|
|
4946
|
+
licenses, and the disabled compatibility-runtime/remote-model-helper policy.
|
|
4947
|
+
It contains no model weights or model catalog.
|
|
4948
|
+
|
|
4949
|
+
### Value and import
|
|
4950
|
+
|
|
4951
|
+
```text
|
|
4952
|
+
const BROWSER_WASM_RUNTIME_AUTHORITY
|
|
4953
|
+
```
|
|
4954
|
+
|
|
4955
|
+
The value is available from `arcane-os/ai/browser-wasm` only. Importing and
|
|
4956
|
+
inspecting it does not initialize Wllama, request storage, or download a model.
|
|
4957
|
+
|
|
4958
|
+
### Availability and normalization
|
|
4959
|
+
|
|
4960
|
+
**Browser metadata.** This is an immutable component receipt, not a provider,
|
|
4961
|
+
model, browser-permission grant, or proof that WebAssembly/OPFS is available.
|
|
4962
|
+
|
|
4963
|
+
### Example
|
|
4964
|
+
|
|
4965
|
+
```javascript
|
|
4966
|
+
import {BROWSER_WASM_RUNTIME_AUTHORITY} from 'arcane-os/ai/browser-wasm';
|
|
4967
|
+
|
|
4968
|
+
console.log(BROWSER_WASM_RUNTIME_AUTHORITY.protocol);
|
|
4969
|
+
console.log(BROWSER_WASM_RUNTIME_AUTHORITY.package.version);
|
|
4970
|
+
```
|
|
4971
|
+
|
|
4972
|
+
Complete lifecycle, model authority, cache, cancellation, and tool behavior:
|
|
4973
|
+
[Browser-WASM local AI](ai/browser-wasm.md).
|
|
4974
|
+
|
|
4975
|
+
## createArcaneAI()
|
|
4976
|
+
|
|
4977
|
+
### Overview
|
|
4978
|
+
|
|
4979
|
+
Creates the application-facing LLM facade around a compatible provider or
|
|
4980
|
+
controller. The default `on-demand` policy loads before first use; `manual`
|
|
4981
|
+
requires an explicit successful `load()` before requests. When both `llm` and
|
|
4982
|
+
`provider` are supplied, `llm` takes precedence.
|
|
4983
|
+
|
|
4984
|
+
### Signature and result
|
|
4985
|
+
|
|
4986
|
+
```text
|
|
4987
|
+
createArcaneAI({ llm=null, provider=null, loadPolicy='on-demand', security }={})
|
|
4988
|
+
```
|
|
4989
|
+
|
|
4990
|
+
At least one `llm` or `provider` is required. The frozen facade contains
|
|
4991
|
+
`llm`, `runtime`, `status`, `load`, `unload`, `probe`, `fetchRequest`,
|
|
4992
|
+
`streamRequest`, and `dispose`. `status()` returns `{llm: status}`; lifecycle
|
|
4993
|
+
methods return the flat LLM status. `fetchRequest()` returns the completion.
|
|
4994
|
+
`streamRequest()` consumes streaming and returns text or a tool-name-to-JSON-
|
|
4995
|
+
argument-string record. Use `ai.llm.stream()` for the async iterator.
|
|
4996
|
+
|
|
4997
|
+
App and load-operation security use
|
|
4998
|
+
`{security:{secure?:boolean, checks?:{byteLength?:boolean, sha256?:boolean}}}`.
|
|
4999
|
+
The SDK/app default is `secure:false`. Each omitted field inherits and an
|
|
5000
|
+
operation field overrides the corresponding app field. The provider/model
|
|
5001
|
+
binding scope, documented below, sits between those scopes.
|
|
5002
|
+
|
|
5003
|
+
### Availability and normalization
|
|
5004
|
+
|
|
5005
|
+
**Browser.** It normalizes lifecycle, state/progress events, lazy/manual use,
|
|
5006
|
+
cancellation, completions, and structural tool-call visibility. It neither
|
|
5007
|
+
selects a provider fallback nor executes an application tool.
|
|
5008
|
+
|
|
5009
|
+
### Example
|
|
5010
|
+
|
|
5011
|
+
```javascript
|
|
5012
|
+
const ai = createArcaneAI({provider, loadPolicy:'manual'});
|
|
5013
|
+
const stop = ai.llm.on('progress', event => renderProgress(event.detail));
|
|
5014
|
+
await ai.load({offline:true});
|
|
5015
|
+
stop();
|
|
5016
|
+
```
|
|
5017
|
+
|
|
5018
|
+
## createBrowserModelSource()
|
|
5019
|
+
|
|
5020
|
+
### Overview
|
|
5021
|
+
|
|
5022
|
+
Validates a caller-owned model descriptor and creates the cancellable HTTPS
|
|
5023
|
+
source accepted by the browser-WASM store/provider. The canonical descriptor is
|
|
5024
|
+
`{id, url, bytes?, sha256?}`. `id` and `url` are required. `bytes`, when
|
|
5025
|
+
present, is the expected positive safe-integer byte length, not inline data.
|
|
5026
|
+
|
|
5027
|
+
### Signature and result
|
|
5028
|
+
|
|
5029
|
+
```text
|
|
5030
|
+
createBrowserModelSource(descriptor, { fetchImpl=null }={})
|
|
5031
|
+
```
|
|
5032
|
+
|
|
5033
|
+
The URL must be absolute HTTPS with no credentials or fragment and no
|
|
5034
|
+
revision-floating `main`, `master`, or `latest` path. A supplied SHA-256 value
|
|
5035
|
+
is exactly 64 hexadecimal characters. The frozen source exposes its canonical
|
|
5036
|
+
descriptor and `open({signal})`, which returns `{body, requestedUrl, finalUrl,
|
|
5037
|
+
reportedBytes, cancel}`. `reportedBytes` is the nullable valid nonnegative
|
|
5038
|
+
`Content-Length` observation; it is not an unconditional admission check. Every
|
|
5039
|
+
direct `open()` performs the configured fetch.
|
|
5040
|
+
|
|
5041
|
+
For compatibility, `immutableUrl` remains an alias for `url` and `name` can
|
|
5042
|
+
remain a cache-filename hint; `url` and `immutableUrl` must match when both are
|
|
5043
|
+
present. Legacy `licenseSpdx` and `sourceRevision` properties are not canonical
|
|
5044
|
+
descriptor fields, runtime admission checks, or proof of license rights.
|
|
5045
|
+
|
|
5046
|
+
### Availability and normalization
|
|
5047
|
+
|
|
5048
|
+
**Browser Fetch with CORS and a readable response body.** Downloads omit
|
|
5049
|
+
credentials/referrer, disable HTTP caching, follow redirects, require a final
|
|
5050
|
+
HTTPS URL, and honor `AbortSignal`. The DBOPFS store always counts and records
|
|
5051
|
+
actual bytes; it compares expected length or hashes bytes only when the
|
|
5052
|
+
corresponding effective check is enabled.
|
|
5053
|
+
|
|
5054
|
+
### Example
|
|
5055
|
+
|
|
5056
|
+
```javascript
|
|
5057
|
+
const source = createBrowserModelSource({
|
|
5058
|
+
id:'reviewed-model',
|
|
5059
|
+
url:'https://models.example/revisions/4f7c/model-q4.gguf',
|
|
5060
|
+
bytes:123456789,
|
|
5061
|
+
sha256:'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'
|
|
5062
|
+
});
|
|
5063
|
+
```
|
|
5064
|
+
|
|
5065
|
+
## createBrowserWasmLlmProvider()
|
|
5066
|
+
|
|
5067
|
+
### Overview
|
|
5068
|
+
|
|
5069
|
+
Creates the packaged Wllama provider from genuine source and store objects
|
|
5070
|
+
created by this module. It serializes requests and exposes provider states
|
|
5071
|
+
`unloaded`, `loading`, `ready`, `unloading`, and `error`.
|
|
5072
|
+
|
|
5073
|
+
### Signature and result
|
|
5074
|
+
|
|
5075
|
+
```text
|
|
5076
|
+
createBrowserWasmLlmProvider({ source, store, loadDefaults={}, security, logger=console }={})
|
|
5077
|
+
```
|
|
5078
|
+
|
|
5079
|
+
The frozen provider exposes `protocol`, `id`, `model`, `capabilities`,
|
|
5080
|
+
`status`, `load`, `unload`, `chat`, `stream`, `streamChat`, `use`, `probe`, and
|
|
5081
|
+
`dispose`. Load settings include offline mode, `AbortSignal`, progress,
|
|
5082
|
+
threads, context/batch/micro-batch tokens, and GPU layers. Chat supports
|
|
5083
|
+
OpenAI-like message/generation fields, tools, tool choice, parallel tool-call
|
|
5084
|
+
preference, and JSON/JSON-Schema structured output. `stream()` returns a frozen
|
|
5085
|
+
async iterator with `result` and `cancel(reason)`.
|
|
5086
|
+
|
|
5087
|
+
Provider `security` is the provider/model-binding scope. Security fields resolve
|
|
5088
|
+
independently by precedence: load operation, provider/model binding, app SDK
|
|
5089
|
+
configuration, then SDK default `secure:false`. Omitted fields inherit. After
|
|
5090
|
+
resolution, `secure:true` enables both byte-length and SHA-256 checks by default;
|
|
5091
|
+
`secure:false` disables both by default. An explicit per-check boolean overrides
|
|
5092
|
+
the resolved secure default. Enabled checks require their corresponding
|
|
5093
|
+
descriptor fields and fail closed; disabled checks permit those fields to be
|
|
5094
|
+
absent. Changing effective checks for an already loaded or in-flight model
|
|
5095
|
+
requires unload and reload.
|
|
5096
|
+
|
|
5097
|
+
### Availability and normalization
|
|
5098
|
+
|
|
5099
|
+
**Browser with WebAssembly and a DBOPFS model.** A load succeeds only after
|
|
5100
|
+
Wllama confirms the model is loaded. WebGPU and cross-origin isolation are
|
|
5101
|
+
capability observations, not promised gates. Status discloses effective
|
|
5102
|
+
`security` and per-check `integrity`; unchecked bytes are never labeled SHA-256
|
|
5103
|
+
verified. Returned tools are validated structural data; the SDK never calls a
|
|
5104
|
+
handler. Cancellation normalizes to `ARCANE_AI_REQUEST_ABORTED`.
|
|
5105
|
+
|
|
5106
|
+
### Example
|
|
5107
|
+
|
|
5108
|
+
```javascript
|
|
5109
|
+
const provider = createBrowserWasmLlmProvider({
|
|
5110
|
+
source,
|
|
5111
|
+
store,
|
|
5112
|
+
security:{secure:true},
|
|
5113
|
+
loadDefaults:{threads:1, contextTokens:4096, gpuLayers:0}
|
|
5114
|
+
});
|
|
5115
|
+
console.log(provider.status().state); // unloaded
|
|
5116
|
+
```
|
|
5117
|
+
|
|
5118
|
+
## createDbopfsModelStore()
|
|
5119
|
+
|
|
5120
|
+
### Overview
|
|
5121
|
+
|
|
5122
|
+
Adapts an existing DBOPFS instance into a model cache without renaming its
|
|
5123
|
+
public methods. The adapter commits model bytes before the
|
|
5124
|
+
`arcane.ai.browser-wasm.model.v3` completion manifest and always records the
|
|
5125
|
+
observed downloaded or cached byte length.
|
|
5126
|
+
|
|
5127
|
+
### Signature and result
|
|
5128
|
+
|
|
5129
|
+
```text
|
|
5130
|
+
createDbopfsModelStore({ dbopfs, tableName='arcane_ai_browser_models' }={})
|
|
5131
|
+
```
|
|
5132
|
+
|
|
5133
|
+
The frozen result contains `kind`, `tableName`, the original `adapter`, and
|
|
5134
|
+
`ready`, `openVerified`, `install`, `ensure`, and `remove`. `ensure()` returns
|
|
5135
|
+
the file, manifest, `observedBytes`, integrity detail, and
|
|
5136
|
+
`cache:'cached'|'installed'`. `openVerified()` is a compatibility helper that
|
|
5137
|
+
forces both checks on. Ordinary install/reuse compares expected length only
|
|
5138
|
+
when effective `checks.byteLength` is true and hashes only when effective
|
|
5139
|
+
`checks.sha256` is true. `offline:true` never downloads and rejects a miss with
|
|
5140
|
+
`ARCANE_AI_MODEL_OFFLINE_MISS`. Version-2 manifests with matching model identity
|
|
5141
|
+
can migrate to version 3 without fabricating verification.
|
|
5142
|
+
|
|
5143
|
+
### Availability and normalization
|
|
5144
|
+
|
|
5145
|
+
**Browser with a ready DBOPFS instance and OPFS.** The cache reports only checks
|
|
5146
|
+
actually performed. Disabled byte-length checks do not compare descriptor
|
|
5147
|
+
`bytes`, disabled SHA-256 checks do not hash or reread solely for a digest, and
|
|
5148
|
+
overall integrity is `verified` when every enabled check succeeds or
|
|
5149
|
+
`unchecked` when neither check is enabled. Cache
|
|
5150
|
+
metadata is not a transferable capability or license proof. Unload/dispose keep
|
|
5151
|
+
the cache; `store.remove(source)` explicitly deletes it.
|
|
5152
|
+
|
|
5153
|
+
### Example
|
|
5154
|
+
|
|
5155
|
+
```javascript
|
|
5156
|
+
const store = createDbopfsModelStore({dbopfs});
|
|
5157
|
+
await store.ready();
|
|
5158
|
+
const cached = await store.openVerified(source);
|
|
5159
|
+
console.log(cached ? 'verified cache' : 'cache miss');
|
|
5160
|
+
```
|
|
5161
|
+
|
|
4928
5162
|
## Data export subpaths
|
|
4929
5163
|
|
|
4930
5164
|
The package also exposes the exact runtime manifest, eight JSON Schemas (including `arcane-os/schemas/event-stack.json`), and its package manifest. These are data contracts, not callable JavaScript members. See [schema and manifest contracts](../architecture.md) and the files under `schemas/`.
|
|
@@ -50,10 +50,14 @@ format, or signing loop and does not produce app output.
|
|
|
50
50
|
|
|
51
51
|
- Scaffold: approximately 15-25 files, less than 100 KiB, target under one
|
|
52
52
|
second before an optional dependency installation.
|
|
53
|
-
- Shared browser payload:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
files /
|
|
53
|
+
- Shared browser payload: 188 files / 12,854,565 bytes, comprising the exact
|
|
54
|
+
160-file / 3,549,207-byte SDK-canonical runtime receipt, the separate
|
|
55
|
+
25-file / 9,265,304-byte SDK browser-runtime receipt, and three SDK licensing
|
|
56
|
+
files / 40,054 canonical LF bytes, verified once per exact SDK installation
|
|
57
|
+
state.
|
|
58
|
+
The SDK is the canonical owner of portable shared runtime. The receipt keeps
|
|
59
|
+
the prior Arcane OS identity only as migration provenance and binds the
|
|
60
|
+
SDK-owned inventory once without multiplying payload verification.
|
|
57
61
|
- Small browser package: app bytes plus the shared runtime, copied and inventoried
|
|
58
62
|
once into an atomic staging directory.
|
|
59
63
|
- Portable build: one explicitly selected app and one host platform request. In
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arcane-os",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Arcane OS JavaScript SDK, project-local CLI, browser runtime, and repository-portable application packager.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.mjs",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"./events": "./src/events.mjs",
|
|
15
15
|
"./event-manager": "./src/event-manager.mjs",
|
|
16
16
|
"./ai/browser-wasm": "./browser-runtime/ai/browser-wasm.mjs",
|
|
17
|
+
"./ai/browser-speech": "./browser-runtime/ai/browser-speech.mjs",
|
|
17
18
|
"./testing": "./src/testing.mjs",
|
|
18
19
|
"./targets": "./src/targets/index.mjs",
|
|
19
20
|
"./native": "./src/native-plan.mjs",
|
|
@@ -32,6 +33,9 @@
|
|
|
32
33
|
"./schemas/target-adapter.json": "./schemas/target-adapter.schema.json",
|
|
33
34
|
"./package.json": "./package.json"
|
|
34
35
|
},
|
|
36
|
+
"imports": {
|
|
37
|
+
"#arcane/persistent-ai-chat-session": "./runtime/arcane/modules/PersistentAIChatSession.js"
|
|
38
|
+
},
|
|
35
39
|
"files": [
|
|
36
40
|
"bin/",
|
|
37
41
|
"browser-runtime/",
|
|
@@ -49,8 +53,8 @@
|
|
|
49
53
|
"test": "npm run test:unit && npm run test:functional && npm run test:integration && npm run test:regression",
|
|
50
54
|
"test:release": "node ./bin/arcane-test.mjs test/npm-release.test.mjs",
|
|
51
55
|
"test:unit": "node ./bin/arcane-test.mjs test/app-descriptor.test.mjs test/app-schema.test.mjs test/contracts.test.mjs test/doctor.test.mjs test/targets.test.mjs test/workspace-operation-lock.test.mjs",
|
|
52
|
-
"test:functional": "node ./bin/arcane-test.mjs test/cli.test.mjs test/dev-server.test.mjs test/dom-event-instrumentation.test.mjs test/event-manager.test.mjs test/events.test.mjs test/import-map.test.mjs test/packaging.test.mjs test/reference-completeness.test.mjs test/runtime-api-behavior.test.mjs test/runtime-sync.test.mjs test/runtime.test.mjs test/scaffold.test.mjs test/site.test.mjs test/update-check.test.mjs",
|
|
53
|
-
"test:integration": "node ./bin/arcane-test.mjs test/integrated-shared.test.mjs test/integrated-workspace.test.mjs test/native-plan.test.mjs test/native-provider-loader.test.mjs test/npm-release.test.mjs test/release-bundle.test.mjs test/release-capability-smoke.test.mjs test/shared-payload-batch.test.mjs test/tarball.test.mjs",
|
|
56
|
+
"test:functional": "node ./bin/arcane-test.mjs test/browser-speech-providers.test.mjs test/cli.test.mjs test/dbopfs-document-library.test.mjs test/dev-server.test.mjs test/dom-event-instrumentation.test.mjs test/event-manager.test.mjs test/events.test.mjs test/import-map.test.mjs test/packaging.test.mjs test/persistent-ai-chat-session.test.mjs test/reference-completeness.test.mjs test/runtime-api-behavior.test.mjs test/runtime-sync.test.mjs test/runtime.test.mjs test/scaffold.test.mjs test/site.test.mjs test/update-check.test.mjs",
|
|
57
|
+
"test:integration": "node ./bin/arcane-test.mjs test/integrated-shared.test.mjs test/integrated-workspace.test.mjs test/native-plan.test.mjs test/native-provider-loader.test.mjs test/npm-release.test.mjs test/release-bundle.test.mjs test/release-capability-smoke.test.mjs test/shared-payload-batch.test.mjs test/tarball.test.mjs test/wllama-webgpu-runtime.test.mjs",
|
|
54
58
|
"test:regression": "node ./bin/arcane-test.mjs test/channel-workflows.test.mjs test/native-provider-generation.test.mjs test/testing.test.mjs test/test-sets.test.mjs",
|
|
55
59
|
"check": "node tools/check-source.mjs && node tools/runtime-manifest.mjs --verify && node tools/sdk-browser-runtime-manifest.mjs --verify && npm test",
|
|
56
60
|
"check:release": "node tools/check-source.mjs --package-only && node tools/runtime-manifest.mjs --verify && node tools/sdk-browser-runtime-manifest.mjs --verify && npm run test:release",
|
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"builder": "arcane-sdk-runtime-v1",
|
|
4
|
-
"sdkVersion": "0.
|
|
4
|
+
"sdkVersion": "0.2.0",
|
|
5
5
|
"source": {
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"protocol": "arcane/1"
|
|
6
|
+
"authority": "sdk-canonical",
|
|
7
|
+
"repository": "https://github.com/TheWizardNexus/arcane-os-sdk.git",
|
|
8
|
+
"path": "runtime/arcane",
|
|
9
|
+
"protocol": "arcane/1",
|
|
10
|
+
"legacyProjection": {
|
|
11
|
+
"repository": "https://github.com/TheWizardNexus/ARCANE-OS.git",
|
|
12
|
+
"commit": "c540014afe69f14cf5ae60493b7295f36dbcec64",
|
|
13
|
+
"bundleVersion": "0.8.12"
|
|
14
|
+
}
|
|
10
15
|
},
|
|
11
|
-
"fileCount":
|
|
12
|
-
"totalBytes":
|
|
13
|
-
"contentSha256": "
|
|
16
|
+
"fileCount": 160,
|
|
17
|
+
"totalBytes": 3549207,
|
|
18
|
+
"contentSha256": "fa3bcddb5479817971a400049dbeff8431c6499d708e9a8b714176715c5a015a",
|
|
14
19
|
"files": [
|
|
15
20
|
{
|
|
16
21
|
"path": "arcane/components/app-bar.html",
|
|
@@ -34,8 +39,8 @@
|
|
|
34
39
|
},
|
|
35
40
|
{
|
|
36
41
|
"path": "arcane/components/chat.html",
|
|
37
|
-
"bytes":
|
|
38
|
-
"sha256": "
|
|
42
|
+
"bytes": 52132,
|
|
43
|
+
"sha256": "42d4769a074e70b5c2768e850eaf29a25c93ee9e8734724b72b2ad585e19b2ca"
|
|
39
44
|
},
|
|
40
45
|
{
|
|
41
46
|
"path": "arcane/components/conversation-view.html",
|
|
@@ -154,8 +159,8 @@
|
|
|
154
159
|
},
|
|
155
160
|
{
|
|
156
161
|
"path": "arcane/components/speech.html",
|
|
157
|
-
"bytes":
|
|
158
|
-
"sha256": "
|
|
162
|
+
"bytes": 38217,
|
|
163
|
+
"sha256": "61786685b7f4f257da77db2cbbe8230b379c56292ad635081f5b0763d5f48e1e"
|
|
159
164
|
},
|
|
160
165
|
{
|
|
161
166
|
"path": "arcane/components/summary-strip.html",
|
|
@@ -254,8 +259,8 @@
|
|
|
254
259
|
},
|
|
255
260
|
{
|
|
256
261
|
"path": "arcane/entities/Chat.js",
|
|
257
|
-
"bytes":
|
|
258
|
-
"sha256": "
|
|
262
|
+
"bytes": 25366,
|
|
263
|
+
"sha256": "20ece4ea4537693c49580dda723e392af152792c25006686ce2f75c7c906984d"
|
|
259
264
|
},
|
|
260
265
|
{
|
|
261
266
|
"path": "arcane/entities/CommunicationMessage.js",
|
|
@@ -369,8 +374,8 @@
|
|
|
369
374
|
},
|
|
370
375
|
{
|
|
371
376
|
"path": "arcane/modules/AI.js",
|
|
372
|
-
"bytes":
|
|
373
|
-
"sha256": "
|
|
377
|
+
"bytes": 81061,
|
|
378
|
+
"sha256": "8e34445ad394064dae970583147b635de81d878a6caebb8a60d64b34dbc9e658"
|
|
374
379
|
},
|
|
375
380
|
{
|
|
376
381
|
"path": "arcane/modules/AIPreferenceRuntime.js",
|
|
@@ -382,6 +387,11 @@
|
|
|
382
387
|
"bytes": 2594,
|
|
383
388
|
"sha256": "7fd028fd9e7f3eb309a6a2b7612a5fc67d4c7289adc4168d681224579220ac09"
|
|
384
389
|
},
|
|
390
|
+
{
|
|
391
|
+
"path": "arcane/modules/AIProviderRuntime.js",
|
|
392
|
+
"bytes": 83261,
|
|
393
|
+
"sha256": "32aa65b464ea9a9317d47f382063fc052e1f47e63e6c65c28e58898e0ab4911a"
|
|
394
|
+
},
|
|
385
395
|
{
|
|
386
396
|
"path": "arcane/modules/AIResponseLength.js",
|
|
387
397
|
"bytes": 1941,
|
|
@@ -392,6 +402,11 @@
|
|
|
392
402
|
"bytes": 17587,
|
|
393
403
|
"sha256": "905af15d5d4912a68fa96ea44b0f6ac2eef90c69c6486ce507e00a7850acd626"
|
|
394
404
|
},
|
|
405
|
+
{
|
|
406
|
+
"path": "arcane/modules/AIRuntimeState.js",
|
|
407
|
+
"bytes": 24783,
|
|
408
|
+
"sha256": "8b9bfaf208eb44455b581d8e700cec785044f81595dcf839dcdfa3e06ed0f5fa"
|
|
409
|
+
},
|
|
395
410
|
{
|
|
396
411
|
"path": "arcane/modules/AnsiText.js",
|
|
397
412
|
"bytes": 2373,
|
|
@@ -484,8 +499,8 @@
|
|
|
484
499
|
},
|
|
485
500
|
{
|
|
486
501
|
"path": "arcane/modules/ConfiguredAIChatSession.js",
|
|
487
|
-
"bytes":
|
|
488
|
-
"sha256": "
|
|
502
|
+
"bytes": 21462,
|
|
503
|
+
"sha256": "12e02b169be6867d82ef8be75bcb1c2b367e778609e8d065389ed109d896c4c8"
|
|
489
504
|
},
|
|
490
505
|
{
|
|
491
506
|
"path": "arcane/modules/ConversationActionItems.js",
|
|
@@ -517,6 +532,11 @@
|
|
|
517
532
|
"bytes": 30099,
|
|
518
533
|
"sha256": "eef077c318032626cf3c455e0619dfd6a729e916c367fd4fffac72c6dcb50745"
|
|
519
534
|
},
|
|
535
|
+
{
|
|
536
|
+
"path": "arcane/modules/DBOPFSDocumentLibrary.js",
|
|
537
|
+
"bytes": 29977,
|
|
538
|
+
"sha256": "4c551b5917d1577b8b46b08457cf762d7ab7548222abd6f4a72c7c7ab5c697b7"
|
|
539
|
+
},
|
|
520
540
|
{
|
|
521
541
|
"path": "arcane/modules/DBOPFSWorker.js",
|
|
522
542
|
"bytes": 3928,
|
|
@@ -537,6 +557,11 @@
|
|
|
537
557
|
"bytes": 3799,
|
|
538
558
|
"sha256": "da1eaab03aa5d5ee64d236b5d6bd11a792c811110a1d57fa43d43e26ff97d169"
|
|
539
559
|
},
|
|
560
|
+
{
|
|
561
|
+
"path": "arcane/modules/DocumentLexicalSearch.js",
|
|
562
|
+
"bytes": 12977,
|
|
563
|
+
"sha256": "f83a8428e5080cd61bbecac39104a768457d4c7b4825acaf9add9286c6b84b09"
|
|
564
|
+
},
|
|
540
565
|
{
|
|
541
566
|
"path": "arcane/modules/DocumentNavigation.js",
|
|
542
567
|
"bytes": 7194,
|
|
@@ -632,6 +657,11 @@
|
|
|
632
657
|
"bytes": 3624,
|
|
633
658
|
"sha256": "2e3f8b07c6e0acb1ebf8e1327b208242dff9c55abdd6bedc288abf6692caf43d"
|
|
634
659
|
},
|
|
660
|
+
{
|
|
661
|
+
"path": "arcane/modules/PersistentAIChatSession.js",
|
|
662
|
+
"bytes": 10890,
|
|
663
|
+
"sha256": "4bb4980e09f3cfcf20ca7c5130e1e133042554b8e1fae4fd613e0e2a9acdbee0"
|
|
664
|
+
},
|
|
635
665
|
{
|
|
636
666
|
"path": "arcane/modules/PreferenceStore.js",
|
|
637
667
|
"bytes": 3794,
|
|
@@ -694,8 +724,8 @@
|
|
|
694
724
|
},
|
|
695
725
|
{
|
|
696
726
|
"path": "arcane/modules/StaticDocumentCatalog.js",
|
|
697
|
-
"bytes":
|
|
698
|
-
"sha256": "
|
|
727
|
+
"bytes": 47189,
|
|
728
|
+
"sha256": "002ab228c2ec80006c6365eb5bbdde33e5951c7424ca15aa16b4d9663bcc77f8"
|
|
699
729
|
},
|
|
700
730
|
{
|
|
701
731
|
"path": "arcane/modules/SystemAppearance.js",
|