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.
Files changed (53) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/NOTICE +5 -3
  3. package/README.md +73 -24
  4. package/browser-runtime/ARCANE_SDK_BROWSER_RELEASE.json +67 -18
  5. package/browser-runtime/ai/ARCANE_AI_BROWSER_WASM_COMPONENTS.json +16 -5
  6. package/browser-runtime/ai/browser-kokoro-worker.mjs +3 -0
  7. package/browser-runtime/ai/browser-speech-artifacts.mjs +1108 -0
  8. package/browser-runtime/ai/browser-speech-providers.mjs +475 -0
  9. package/browser-runtime/ai/browser-speech.mjs +9 -0
  10. package/browser-runtime/ai/browser-wasm-llm-provider.mjs +1537 -167
  11. package/browser-runtime/ai/browser-wasm.mjs +46 -1
  12. package/browser-runtime/ai/browser-whisper-worker.mjs +3 -0
  13. package/browser-runtime/ai/browser-wllama-runtime.mjs +677 -132
  14. package/browser-runtime/ai/model-controller.mjs +138 -12
  15. package/browser-runtime/ai/speech-worker-client.mjs +207 -0
  16. package/browser-runtime/ai/speech-worker-runtime.mjs +516 -0
  17. package/browser-runtime/ai/wllama/index.mjs +389 -0
  18. package/docs/architecture.md +132 -22
  19. package/docs/reference/README.md +8 -5
  20. package/docs/reference/ai/browser-wasm.md +394 -0
  21. package/docs/reference/availability-and-normalization.md +31 -0
  22. package/docs/reference/behavioral-testing.md +21 -0
  23. package/docs/reference/cli.md +4 -4
  24. package/docs/reference/inventory/package-api.json +84 -4
  25. package/docs/reference/protocols.md +9 -8
  26. package/docs/reference/sdk-api.md +238 -4
  27. package/docs/work-amplification.md +8 -4
  28. package/package.json +7 -3
  29. package/runtime/ARCANE_RUNTIME_RELEASE.json +50 -20
  30. package/runtime/arcane/components/chat.html +280 -62
  31. package/runtime/arcane/components/speech.html +1113 -265
  32. package/runtime/arcane/entities/Chat.js +246 -43
  33. package/runtime/arcane/modules/AI.js +713 -162
  34. package/runtime/arcane/modules/AIProviderRuntime.js +2289 -0
  35. package/runtime/arcane/modules/AIRuntimeState.js +872 -0
  36. package/runtime/arcane/modules/ConfiguredAIChatSession.js +293 -27
  37. package/runtime/arcane/modules/DBOPFSDocumentLibrary.js +682 -0
  38. package/runtime/arcane/modules/DocumentLexicalSearch.js +292 -0
  39. package/runtime/arcane/modules/PersistentAIChatSession.js +268 -0
  40. package/runtime/arcane/modules/StaticDocumentCatalog.js +25 -206
  41. package/schemas/arcane-lock.schema.json +6 -4
  42. package/src/cli/main.mjs +14 -2
  43. package/src/constants.mjs +1 -1
  44. package/src/dev-server.mjs +246 -14
  45. package/src/doctor.mjs +1 -1
  46. package/src/import-map.mjs +59 -1
  47. package/src/packager/core.mjs +2 -2
  48. package/src/runtime.mjs +14 -4
  49. package/src/sdk-browser-runtime.mjs +28 -75
  50. package/src/templates/workspace-template.mjs +4 -4
  51. package/src/toolchain.mjs +3 -0
  52. package/src/workspace-runtime.mjs +1 -1
  53. 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. It is not a browser-importable renderer API. Application code uses named modules from the managed browser map, such as `arcane/ThemeBootstrap`, uses the focused `arcane-os/event-manager` browser entry when needed, and calls `globalThis.Arcane` for capability-gated host behavior.
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 85-entry physical-runtime contract.
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.0`.
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); // 85 in SDK 0.1.0
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: 166 files / 3,478,345 bytes, comprising the exact
54
- 155-file / 3,320,994-byte Arcane-upstream runtime receipt, the separate
55
- 8-file / 118,385-byte SDK browser-runtime receipt, and three SDK licensing
56
- files / 38,966 bytes, verified once per exact SDK installation state.
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.1.1",
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.1.1",
4
+ "sdkVersion": "0.2.0",
5
5
  "source": {
6
- "repository": "https://github.com/TheWizardNexus/ARCANE-OS.git",
7
- "commit": "567ad110bf57a1c2d4a3daa22ae93716cc5f4d7e",
8
- "bundleVersion": "0.8.12",
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": 155,
12
- "totalBytes": 3320994,
13
- "contentSha256": "7b1b583b4adf6a6ec794da6f0c03c553cdee79784dab75094d83ee24f9637098",
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": 44659,
38
- "sha256": "770a27248ef16ee4e23618250374b9c0a54f7632a1ec2e59087a77473986209f"
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": 10912,
158
- "sha256": "170324cb17057460efe72201cea5e7bd58d0b4b3d9b4f884e44d62e5d4f6daa0"
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": 16273,
258
- "sha256": "6353af820d4912c8945681effdc9f9787b790a69700b2724be5649639743a90f"
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": 60674,
373
- "sha256": "a53b71a1b6b4c629f6baa97ab81882858b60d1cb04320b661508c569d66b2170"
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": 10582,
488
- "sha256": "378559117479eaae4977a127b3dbc02002fcff1768f817a4a5a878b79a04eee3"
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": 56002,
698
- "sha256": "ec512ec054d2fdc1d7ced29d1038257bb6f9872920f442376b906783f12bb6e1"
727
+ "bytes": 47189,
728
+ "sha256": "002ab228c2ec80006c6365eb5bbdde33e5951c7424ca15aa16b4d9663bcc77f8"
699
729
  },
700
730
  {
701
731
  "path": "arcane/modules/SystemAppearance.js",