arcane-os 0.1.2 → 0.2.1

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 (54) hide show
  1. package/CHANGELOG.md +35 -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 +780 -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 +1 -1
  20. package/docs/reference/ai/browser-wasm.md +101 -42
  21. package/docs/reference/availability-and-normalization.md +19 -5
  22. package/docs/reference/behavioral-testing.md +18 -5
  23. package/docs/reference/cli.md +2 -2
  24. package/docs/reference/inventory/package-api.json +14 -14
  25. package/docs/reference/protocols.md +4 -4
  26. package/docs/reference/sdk-api.md +68 -38
  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 +551 -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 +1394 -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 +382 -31
  37. package/runtime/arcane/modules/DBOPFSDocumentLibrary.js +1106 -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 +10 -6
  42. package/src/cli/main.mjs +14 -2
  43. package/src/constants.mjs +1 -1
  44. package/src/dev-server.mjs +273 -26
  45. package/src/doctor.mjs +1 -3
  46. package/src/import-map.mjs +193 -84
  47. package/src/packager/core.mjs +313 -41
  48. package/src/runtime.mjs +14 -4
  49. package/src/scaffold.mjs +45 -17
  50. package/src/sdk-browser-runtime.mjs +28 -75
  51. package/src/templates/workspace-template.mjs +27 -8
  52. package/src/toolchain.mjs +13 -2
  53. package/src/workspace-runtime.mjs +1 -1
  54. package/src/workspace.mjs +178 -25
package/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.1
4
+
5
+ - Added explicit selected-unloaded chat activation, truthful legacy Cloud/Core
6
+ route readiness, and provider-native chat-response normalization without
7
+ startup downloads, hidden provider selection, or application policy.
8
+ - Normalized shared STT/TTS requests at the browser-speech provider boundary
9
+ while retaining caller-supplied immutable runtime, model, and voice
10
+ authorities and fail-closed format, lifecycle, error, and cancellation rules.
11
+ - Applied authenticated dependency import maps to every packaged browser
12
+ document and published a deterministic browser-readable runtime projection
13
+ inventory derived from the verified package receipt.
14
+ - Added caller-budgeted complete DBOPFS source evaluation with deterministic
15
+ zero-score fallback, independent scoring/excerpt/output bounds, and opt-in
16
+ preserve-readable bootstrap/evaluation read coverage.
17
+ - Bound external workspace validation, packaging, scaffolding, doctor,
18
+ toolchain, and development serving to one authenticated installed package,
19
+ including the exact `arcane-sdk@npm:arcane-os@0.2.1` alias form.
20
+
21
+ ## 0.2.0
22
+
23
+ - Made the SDK the canonical owner of the portable Arcane runtime and retired
24
+ the Arcane OS-to-SDK overwrite direction while retaining legacy provenance in
25
+ the authenticated runtime receipt.
26
+ - Added app-supplied monolithic or ordered multi-file GGUF catalogs, DBOPFS
27
+ manifest-last admission, inherited per-check security policy, and measured
28
+ per-model capability reports for the browser-WASM Wllama provider.
29
+ - Added independent browser Whisper STT and Kokoro TTS provider/Worker
30
+ machinery with caller-supplied runtime/model authorities, explicit lifecycle,
31
+ progress, cancellation, unload, and no fallback or packaged model bytes.
32
+ - Added schema-driven DBOPFS document bootstrap, minimal lexical retrieval and
33
+ explicit request-context composition without automatic corpus searches.
34
+ - Added automatic persistent chat/history/memory composition, recurring model
35
+ context, structural tool-call continuity, and session-only turns through
36
+ `persist:false`.
37
+
3
38
  ## 0.1.0-dev.4
4
39
 
5
40
  - Added the central `event-pubsub`-backed `EventManager` as the preferred SDK
package/NOTICE CHANGED
@@ -24,9 +24,11 @@ Third-party material retains its own terms:
24
24
  - Marked: MIT License; complete notice and terms reproduced below.
25
25
  - QRCode.js: MIT License; complete notice and terms reproduced below.
26
26
 
27
- No model weights are included in this package. Browser-WASM model downloads
28
- require caller-supplied immutable authorities and exact byte-length and
29
- SHA-256 verification before cache admission or inference.
27
+ No model weights, speech runtimes, or speech model/voice bytes are included in
28
+ this package. Browser model and speech downloads require caller-supplied
29
+ authorities. Byte-length and SHA-256 checks inherit the app security policy,
30
+ default to disabled, and may be enabled or overridden for one provider/load;
31
+ an enabled check requires its expected value before cache admission.
30
32
 
31
33
  Marked
32
34
  ------
package/README.md CHANGED
@@ -19,11 +19,9 @@ version-locked SDK runtime, while an integrated Arcane checkout uses its live
19
19
  `arcane/` runtime. Both profiles preserve the same app URLs, theme, packaging,
20
20
  event, cancellation, and browser run contracts.
21
21
 
22
- This is development software. Version `0.1.0-dev.5` synchronizes the Arcane
23
- `0.8.12` runtime, but it is not a production or release-candidate claim. It has
24
- only the `dev` channel contract; query `npm view arcane-os@dev version` for
25
- current registry availability. Registry state is deliberately not baked into
26
- the immutable package documentation.
22
+ This checkout defines the `0.2.1` SDK contract. Applications pin one exact npm
23
+ version and lockfile; registry state is deliberately not baked into immutable
24
+ application artifacts.
27
25
 
28
26
  That registry query is a maintainer action, not an application behavior. Apps
29
27
  never poll npm for SDK updates or replace their own SDK or synchronized runtime.
@@ -61,29 +59,80 @@ before enabling DOM values, node content, event details, source stacks, or live
61
59
  event redispatch. Password targets, text-entry details, clipboard data, URL
62
60
  attributes, and common credential keys are excluded or redacted by default.
63
61
 
64
- ## Runtime synchronization
62
+ ## Runtime source ownership
65
63
 
66
- SDK maintainers update the pinned browser runtime only from Arcane's canonical,
67
- clean `main` checkout. The sync command validates that checkout, its exact
68
- machine-bundle version, the dependency lock, and the fixed shared-payload
69
- selection before replacing any SDK runtime bytes:
64
+ The SDK repository is the canonical source for portable shared runtime modules,
65
+ entities, components, themes, browser providers and workers, public contracts,
66
+ and their packaged byte receipts. Portable applications consume those
67
+ SDK-owned paths and never read an Arcane OS install or source checkout at
68
+ runtime. Arcane OS is a consumer of this contract; its repository-side cutover
69
+ is coordinated separately and cannot become a second source authority.
70
+
71
+ The source-authority cutover is complete. `runtime/arcane/` is authored here,
72
+ and its generated manifest authenticates the complete portable inventory. The
73
+ old Arcane OS-to-SDK synchronization direction is retired and fails closed; it
74
+ cannot overwrite SDK-canonical source. Regenerate the receipt only after an
75
+ authorized SDK source change:
70
76
 
71
77
  ```bash
72
- npm run runtime:sync -- --arcane-root /path/to/canonical/ARCANE-OS
73
78
  node tools/runtime-manifest.mjs --write
74
79
  npm run check
75
80
  ```
76
81
 
77
- `tools/runtime-source.json` records the reviewed upstream identity and fixed
78
- selection. The generated runtime manifest remains the published byte receipt.
82
+ `tools/runtime-source.json` declares the SDK authority and retains the prior
83
+ Arcane OS commit only as legacy provenance for migrated compatibility bytes.
84
+ Arcane OS must consume the same locked SDK projection as other applications;
85
+ any remaining OS-side duplicate is legacy consumer migration state, not source
86
+ authority. The generated runtime manifest is the published content-addressed
87
+ byte receipt.
88
+
89
+ ## Browser-local AI
90
+
91
+ `arcane-os/ai/browser-wasm` provides the shared Wllama LLM provider. The app
92
+ supplies its model catalog; the SDK does not hard-code Granite or any other app
93
+ profile. Each descriptor uses one ordered `files` array, so monolithic and
94
+ split GGUF models share the same contract:
95
+
96
+ ```js
97
+ const source=createBrowserModelSource({
98
+ id:'app-model',
99
+ files:[
100
+ {name:'model-00001-of-00002.gguf',url:'https://models.example/one.gguf'},
101
+ {name:'model-00002-of-00002.gguf',url:'https://models.example/two.gguf'}
102
+ ]
103
+ });
104
+ ```
105
+
106
+ Expected `bytes` and `sha256` values are optional while the inherited app
107
+ security policy leaves those checks disabled. Enabling either check requires
108
+ that field on every member. The DBOPFS store admits all members in order and
109
+ commits its completion manifest last. Capability reports evaluate each
110
+ app-supplied model as `compatible`, `incompatible`, or `unknown`; the app can
111
+ render that result without the SDK inventing or filtering its catalog.
112
+
113
+ `arcane-os/ai/browser-speech` exposes independent Whisper STT and Kokoro TTS
114
+ provider factories. The package contains the plain-JavaScript provider and
115
+ Worker machinery, not speech runtimes, models, voices, or a CDN default. An app
116
+ must supply each immutable runtime/model authority explicitly. Speech roles
117
+ load, cancel, unload, fail, and recover independently, so speech failure never
118
+ silently falls back or prevents text chat.
119
+
120
+ The SDK runtime also owns `DBOPFSDocumentLibrary`,
121
+ `DocumentLexicalSearch`, and `PersistentAIChatSession`. Document bootstrap is
122
+ schema-driven and explicit; chat never searches a corpus unless the app wires
123
+ that library into the request context builder. Persistent chat automatically
124
+ maintains recurring model context and `ChatEntity` history/memory. A turn may
125
+ set `persist:false` to remain in the current session context without entering
126
+ durable chat or memory. `createArcaneAI(...).createChatSession(options)` wires
127
+ that session to the same selected LLM controller, creates its `ChatEntity`, and
128
+ uses the same controller for automatic memory extraction.
79
129
 
80
130
  ## Install
81
131
 
82
- After the development package is published under the npm `dev` tag, create a
83
- new repository-shaped Arcane application:
132
+ Create a new repository-shaped Arcane application with the exact stable SDK:
84
133
 
85
134
  ```bash
86
- npx arcane-os@dev new my-app --path ./my-app --target portable --git
135
+ npx arcane-os@0.2.1 new my-app --path ./my-app --target portable --git
87
136
  cd my-app
88
137
  npm install
89
138
  npm run check
@@ -94,7 +143,7 @@ To enroll an existing repository, install the exact SDK and initialize only
94
143
  missing Arcane files:
95
144
 
96
145
  ```bash
97
- npm install --save-dev --save-exact arcane-os@dev
146
+ npm install --save-dev --save-exact arcane-os@0.2.1
98
147
  npm exec -- arcane init my-app --target portable
99
148
  ```
100
149
 
@@ -110,7 +159,7 @@ npm exec -- arcane-os targets
110
159
  No global SDK install or standalone Arcane CLI is required. The application
111
160
  repository's exact npm dependency and lockfile own the CLI and toolchain version.
112
161
 
113
- Use `npx arcane-os@dev` for the initial bootstrap because it names this npm
162
+ Use `npx arcane-os@0.2.1` for the initial bootstrap because it names this npm
114
163
  package explicitly; bare `npx arcane` outside an installed project could resolve
115
164
  a different package. Both installed commands invoke the same headless toolchain.
116
165
  Project-local npm scripts use the SDK pinned by that app's `package-lock.json`,
@@ -131,7 +180,7 @@ node ./bin/arcane.mjs new local-app --path ../local-app --target portable --git
131
180
 
132
181
  # From the generated app repository
133
182
  cd ../local-app
134
- npm install --save-dev --save-exact ../arcane-os-sdk/arcane-os-0.1.0-dev.5.tgz
183
+ npm install --save-dev --save-exact ../arcane-os-sdk/arcane-os-0.2.1.tgz
135
184
  npm run check
136
185
  npm ci
137
186
  ```
@@ -141,9 +190,9 @@ same location. npm records its integrity in `package-lock.json`, while Arcane
141
190
  still verifies the installed package name and exact version, the locked runtime
142
191
  identity, and the runtime bytes. Local directory `file:` dependencies are not
143
192
  accepted because npm may install them as links; use a packed `.tgz`. A GitHub
144
- runner also needs that tarball at the locked path. When the registry exposes
145
- `arcane-os@dev`, replace the local declaration with the exact registry package
146
- and commit the regenerated lock.
193
+ runner also needs that tarball at the locked path. After publication, replace
194
+ the local declaration with the exact `arcane-os@0.2.1` registry package and
195
+ commit the regenerated lock.
147
196
 
148
197
  Generated repositories use `npm ci --ignore-scripts` in CI. Run dependency
149
198
  installation once and commit `package-lock.json` before enabling that workflow.
@@ -255,7 +304,7 @@ recorded length through a final identity check; an appended byte, concurrent
255
304
  growth, path replacement, or hard link fails closed. NFC paths use defined
256
305
  UTF-8 byte ordering, covered by one pinned golden bundle digest on every
257
306
  supported Node/runner combination. This SDK accepts only the explicitly listed
258
- `0.1.0-dev.5` bundle generation; structural validity does not imply cross-SDK
307
+ `0.2.1` bundle generation; structural validity does not imply cross-SDK
259
308
  compatibility, and a release with zero payload bytes cannot be created. Portable
260
309
  path validation rejects file/directory prefix conflicts, case-colliding prefix
261
310
  spellings, and Windows device aliases including superscript COM/LPT digits.
@@ -301,7 +350,7 @@ package installation, or assertions.
301
350
 
302
351
  ## Current target support
303
352
 
304
- Version `0.1.0-dev.5` exposes one browser target and five explicitly paired
353
+ Version `0.2.1` exposes one browser target and five explicitly paired
305
354
  native development targets: a verified non-runnable portable directory, a
306
355
  Windows x64 unsigned-local-test EXE bundle, Linux x64 and Linux ARM64
307
356
  unsigned-local-test DEBs, and an Android development-signed APK. The
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "builder": "arcane-sdk-browser-runtime-v1",
4
- "sdkVersion": "0.1.2",
4
+ "sdkVersion": "0.2.1",
5
5
  "source": {
6
6
  "authority": "arcane-os-sdk",
7
7
  "repository": "https://github.com/TheWizardNexus/arcane-os-sdk.git",
@@ -28,37 +28,72 @@
28
28
  }
29
29
  ]
30
30
  },
31
- "fileCount": 18,
32
- "totalBytes": 9099015,
33
- "contentSha256": "5e03f45a732db51cb5a2b2193cc79ecda34501d07a9b2e82e794e5fa37d55d00",
31
+ "fileCount": 25,
32
+ "totalBytes": 9279974,
33
+ "contentSha256": "a9715c4b3aef70ec4042e4738089568d6588877b29582e0f758ed83897b6814f",
34
34
  "files": [
35
35
  {
36
36
  "path": "ai/ARCANE_AI_BROWSER_WASM_COMPONENTS.json",
37
37
  "sourcePath": "browser-runtime/ai/ARCANE_AI_BROWSER_WASM_COMPONENTS.json",
38
38
  "provenance": "sdk-source-identity",
39
- "bytes": 2554,
40
- "sha256": "9f6e710f6b6aa8ea42f69823931b2b56a2eec9db242e3c95c6d6f6a6ce77a03b"
39
+ "bytes": 3173,
40
+ "sha256": "7f4e361eb2270ea63cdb2f6d4b899d5c87e4b955e1b4692b800f3e89e23568fc"
41
+ },
42
+ {
43
+ "path": "ai/browser-kokoro-worker.mjs",
44
+ "sourcePath": "browser-runtime/ai/browser-kokoro-worker.mjs",
45
+ "provenance": "sdk-source-identity",
46
+ "bytes": 110,
47
+ "sha256": "5c08370aeefa6a99f4018ddaf7c0d7ac8e7189811957947ce2eba4131e19a76f"
48
+ },
49
+ {
50
+ "path": "ai/browser-speech-artifacts.mjs",
51
+ "sourcePath": "browser-runtime/ai/browser-speech-artifacts.mjs",
52
+ "provenance": "sdk-source-identity",
53
+ "bytes": 36576,
54
+ "sha256": "6504c01f6548a37291619cc6b69ae85da2cc1463ef12e83101eefdc92ad2ea74"
55
+ },
56
+ {
57
+ "path": "ai/browser-speech-providers.mjs",
58
+ "sourcePath": "browser-runtime/ai/browser-speech-providers.mjs",
59
+ "provenance": "sdk-source-identity",
60
+ "bytes": 25982,
61
+ "sha256": "65e0a8da2bcd46b11c3ea2ca496105875977decc53d4e4c94ca56949dbb569b1"
62
+ },
63
+ {
64
+ "path": "ai/browser-speech.mjs",
65
+ "sourcePath": "browser-runtime/ai/browser-speech.mjs",
66
+ "provenance": "sdk-source-identity",
67
+ "bytes": 266,
68
+ "sha256": "fceadaafc0755ebb39071550bb2f497df14e23bef169779f970195d678e73ffc"
41
69
  },
42
70
  {
43
71
  "path": "ai/browser-wasm-llm-provider.mjs",
44
72
  "sourcePath": "browser-runtime/ai/browser-wasm-llm-provider.mjs",
45
73
  "provenance": "sdk-source-identity",
46
- "bytes": 37944,
47
- "sha256": "c89042b541c64de8b6528ee3a7dce0e2b62be8b5c229875fd8a26a1efded26a2"
74
+ "bytes": 87005,
75
+ "sha256": "1643dfc732cda823b8714a88d23d6e8bee48b7f8d1cf6da95906e75d6562ba9a"
48
76
  },
49
77
  {
50
78
  "path": "ai/browser-wasm.mjs",
51
79
  "sourcePath": "browser-runtime/ai/browser-wasm.mjs",
52
80
  "provenance": "sdk-source-identity",
53
- "bytes": 1549,
54
- "sha256": "b6536f6869a080e6cf167965da1dd8b473c172c6cbce1f5ee6a6142dd06c93f2"
81
+ "bytes": 3324,
82
+ "sha256": "0a0eb93db352b0a734f60d0273960c49315d51323b75f82f82e4f85d54101868"
83
+ },
84
+ {
85
+ "path": "ai/browser-whisper-worker.mjs",
86
+ "sourcePath": "browser-runtime/ai/browser-whisper-worker.mjs",
87
+ "provenance": "sdk-source-identity",
88
+ "bytes": 110,
89
+ "sha256": "949a4dddfae712855fb83c2aed2608657fea62d09b03e131bf8faa95be7e3aed"
55
90
  },
56
91
  {
57
92
  "path": "ai/browser-wllama-runtime.mjs",
58
93
  "sourcePath": "browser-runtime/ai/browser-wllama-runtime.mjs",
59
94
  "provenance": "sdk-source-identity",
60
- "bytes": 13559,
61
- "sha256": "946f1814b7374baa6a6e33a4e4f9790c8f1504c65104e05cbe640005687d94f5"
95
+ "bytes": 32364,
96
+ "sha256": "f1d1ad5e3dce70fdefba4f112e7f48029f257f65b98b7adce34cd60f5517908a"
62
97
  },
63
98
  {
64
99
  "path": "ai/internal/sha256.mjs",
@@ -71,8 +106,22 @@
71
106
  "path": "ai/model-controller.mjs",
72
107
  "sourcePath": "browser-runtime/ai/model-controller.mjs",
73
108
  "provenance": "sdk-source-identity",
74
- "bytes": 19159,
75
- "sha256": "922a9653f48c19093f02d7307c9600c70a1742c3b7a315df3ab2023db8025905"
109
+ "bytes": 23672,
110
+ "sha256": "a36aea3e62835cf568bd03ebc4be0fa8e0112a15dc9fec3c213b1c8cefa33b56"
111
+ },
112
+ {
113
+ "path": "ai/speech-worker-client.mjs",
114
+ "sourcePath": "browser-runtime/ai/speech-worker-client.mjs",
115
+ "provenance": "sdk-source-identity",
116
+ "bytes": 6501,
117
+ "sha256": "ebfa4272725482a89ad6f89a1ff732c1e5b9803075f0d559c046800350abf75d"
118
+ },
119
+ {
120
+ "path": "ai/speech-worker-runtime.mjs",
121
+ "sourcePath": "browser-runtime/ai/speech-worker-runtime.mjs",
122
+ "provenance": "sdk-source-identity",
123
+ "bytes": 17308,
124
+ "sha256": "feff8873f7d1c7b82f9cd797afe5beb47fa34113e491b2916ada0fcc3e62b101"
76
125
  },
77
126
  {
78
127
  "path": "ai/wllama/LICENCE",
@@ -83,10 +132,10 @@
83
132
  },
84
133
  {
85
134
  "path": "ai/wllama/index.mjs",
86
- "sourcePath": "node_modules/@wllama/wllama/esm/index.js",
87
- "provenance": "vendor-package-identity",
88
- "bytes": 373519,
89
- "sha256": "4637e42d636010493a9b274fbbe70bfd8120365da726b1d9e589d85ca84a00d6"
135
+ "sourcePath": "browser-runtime/ai/wllama/index.mjs",
136
+ "provenance": "deterministic-derived-vendor",
137
+ "bytes": 392852,
138
+ "sha256": "b119a7cdffabc8541dce283381d18ada4027c0560728aac1fe45bdd30cdac8e2"
90
139
  },
91
140
  {
92
141
  "path": "ai/wllama/llama.cpp-LICENSE",
@@ -1,14 +1,18 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "kind": "arcane-ai-browser-wasm-components",
4
- "protocol": "arcane-ai-browser-wasm/1",
4
+ "protocol": "arcane-ai-browser-wasm/2",
5
5
  "packageExport": "arcane-os/ai/browser-wasm",
6
6
  "browserEntry": "ai/browser-wasm.mjs",
7
7
  "runtimePolicy": {
8
- "modelAuthorities": "caller-supplied-exact-bytes-and-sha256",
8
+ "modelAuthorities": "fieldwise-security-default-false-with-optional-byteLength-and-sha256-checks",
9
9
  "modelWeightsPacked": false,
10
10
  "remoteModelHelpers": false,
11
11
  "compatibilityRuntime": false,
12
+ "webgpuAdmission": "adapter-plus-full-offload-plus-buffer-queue-and-settled-fence-evidence",
13
+ "cpuFallback": false,
14
+ "cancellation": "abortSignal-plus-llama-cancel-acknowledgement",
15
+ "cleanup": "worker-termination-only-no-native-unload-claim",
12
16
  "toolCalls": "structural-only-never-executed"
13
17
  },
14
18
  "components": [
@@ -28,9 +32,16 @@
28
32
  {
29
33
  "role": "runtime-module",
30
34
  "path": "ai/wllama/index.mjs",
31
- "sourcePath": "node_modules/@wllama/wllama/esm/index.js",
32
- "bytes": 373519,
33
- "sha256": "4637e42d636010493a9b274fbbe70bfd8120365da726b1d9e589d85ca84a00d6"
35
+ "sourcePath": "browser-runtime/ai/wllama/index.mjs",
36
+ "bytes": 392852,
37
+ "sha256": "b119a7cdffabc8541dce283381d18ada4027c0560728aac1fe45bdd30cdac8e2",
38
+ "projection": {
39
+ "protocol": "arcane-wllama-webgpu-evidence/1",
40
+ "inputPath": "node_modules/@wllama/wllama/esm/index.js",
41
+ "inputBytes": 373519,
42
+ "inputSha256": "4637e42d636010493a9b274fbbe70bfd8120365da726b1d9e589d85ca84a00d6",
43
+ "wasmModified": false
44
+ }
34
45
  },
35
46
  {
36
47
  "role": "runtime-wasm",
@@ -0,0 +1,3 @@
1
+ import { installBrowserSpeechWorker } from "./speech-worker-runtime.mjs";
2
+
3
+ installBrowserSpeechWorker("tts");