arcane-os 0.3.0 → 0.3.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 +27 -0
- package/README.md +86 -117
- package/bin/arcane-test.mjs +170 -46
- package/browser-runtime/ai/browser-speech-artifacts.mjs +887 -909
- package/browser-runtime/ai/browser-speech-providers.mjs +96 -152
- package/browser-runtime/ai/browser-wasm-llm-provider.mjs +627 -819
- package/browser-runtime/ai/browser-wasm.mjs +24 -35
- package/browser-runtime/ai/browser-wllama-runtime.mjs +64 -316
- package/browser-runtime/ai/model-controller.mjs +584 -181
- package/browser-runtime/ai/speech-worker-client.mjs +8 -146
- package/browser-runtime/ai/speech-worker-runtime.mjs +643 -363
- package/browser-runtime/dom-event-instrumentation.mjs +55 -147
- package/browser-runtime/event-manager.mjs +239 -624
- package/package.json +5 -6
- package/runtime/arcane/components/app-bar.html +3 -15
- package/runtime/arcane/components/assistant-panel.html +10 -10
- package/runtime/arcane/components/calculator.html +1 -1
- package/runtime/arcane/components/chat.html +1359 -135
- package/runtime/arcane/components/conversation-view.html +2 -2
- package/runtime/arcane/components/document-inspector.html +11 -17
- package/runtime/arcane/components/file-manager.html +13 -56
- package/runtime/arcane/components/markdown-document.html +82 -281
- package/runtime/arcane/components/markdown-editor.html +7 -10
- package/runtime/arcane/components/media-embed.html +6 -6
- package/runtime/arcane/components/screen-capture.html +4 -4
- package/runtime/arcane/components/source-explanation.html +2 -2
- package/runtime/arcane/components/speech.html +112 -68
- package/runtime/arcane/components/terminal-workspace.html +4 -4
- package/runtime/arcane/components/theme-editor.html +1 -1
- package/runtime/arcane/components/unified-inbox.html +2 -2
- package/runtime/arcane/components/voice-transcription.html +31 -21
- package/runtime/arcane/entities/Calculation.js +2 -3
- package/runtime/arcane/entities/Chat.js +228 -43
- package/runtime/arcane/entities/Preference.js +3 -5
- package/runtime/arcane/entities/Weather.js +5 -5
- package/runtime/arcane/modules/AI.js +1050 -427
- package/runtime/arcane/modules/AIProviderRuntime.js +658 -363
- package/runtime/arcane/modules/AIResponseLength.js +9 -19
- package/runtime/arcane/modules/AIRuntimeState.js +109 -72
- package/runtime/arcane/modules/ArcaneNavigationPolicy.js +45 -32
- package/runtime/arcane/modules/BrowserTestSuite.js +78 -122
- package/runtime/arcane/modules/CalculatorEngine.js +9 -9
- package/runtime/arcane/modules/CommunicationAppController.js +3 -7
- package/runtime/arcane/modules/ComponentContracts.js +30 -32
- package/runtime/arcane/modules/ConfiguredAIChatSession.js +281 -230
- package/runtime/arcane/modules/ConversationActionItems.js +26 -59
- package/runtime/arcane/modules/ConversationClosingReport.js +34 -61
- package/runtime/arcane/modules/ConversationTimebox.js +27 -15
- package/runtime/arcane/modules/DBOPFSDocumentLibrary.js +152 -344
- package/runtime/arcane/modules/DocumentLexicalSearch.js +25 -91
- package/runtime/arcane/modules/HTMLImport.js +54 -1
- package/runtime/arcane/modules/IsolatedModelQuestionRunner.js +40 -203
- package/runtime/arcane/modules/LocalAIReadiness.js +40 -60
- package/runtime/arcane/modules/LocalAIReadinessController.js +15 -13
- package/runtime/arcane/modules/MD.js +1 -45
- package/runtime/arcane/modules/Mail.js +51 -103
- package/runtime/arcane/modules/MailOutbox.mjs +95 -193
- package/runtime/arcane/modules/MailTransport.mjs +36 -57
- package/runtime/arcane/modules/ModelDefinition.js +22 -106
- package/runtime/arcane/modules/OpenMeteoWeatherProvider.js +39 -101
- package/runtime/arcane/modules/PersistentAIChatSession.js +281 -18
- package/runtime/arcane/modules/PreferenceStore.js +102 -30
- package/runtime/arcane/modules/RiskSignalAnalyzer.js +8 -9
- package/runtime/arcane/modules/ScopedOPFSCache.js +7 -42
- package/runtime/arcane/modules/ScreenCapture.js +175 -128
- package/runtime/arcane/modules/SpeechPlayback.js +46 -149
- package/runtime/arcane/modules/StaticDocumentCatalog.js +173 -407
- package/runtime/arcane/modules/ToolCallRouter.js +25 -12
- package/runtime/arcane/modules/YouTubeMedia.js +6 -5
- package/schemas/arcane-app-bundle.schema.json +13 -78
- package/schemas/arcane-app.schema.json +9 -25
- package/schemas/arcane-lock.schema.json +18 -151
- package/schemas/arcane-package.schema.json +2 -16
- package/schemas/native-build-plan.schema.json +119 -122
- package/src/app-descriptor.mjs +75 -132
- package/src/application-tests.mjs +200 -0
- package/src/cli/main.mjs +27 -46
- package/src/constants.mjs +3 -4
- package/src/dev-server.mjs +30 -324
- package/src/doctor.mjs +92 -154
- package/src/dom-event-instrumentation.mjs +55 -147
- package/src/errors.mjs +2 -3
- package/src/event-manager.mjs +239 -624
- package/src/event-queue.mjs +3 -3
- package/src/import-map.mjs +273 -1028
- package/src/index.mjs +14 -16
- package/src/installed-sdk-runtime.mjs +40 -62
- package/src/integrated-provider-loader.mjs +53 -382
- package/src/mail-api.mjs +0 -2
- package/src/mail-server.mjs +224 -580
- package/src/mail.mjs +4 -10
- package/src/native-plan.mjs +163 -598
- package/src/native-provider-loader.mjs +104 -1063
- package/src/packager/core.mjs +485 -3229
- package/src/process.mjs +5 -10
- package/src/release-bundle.mjs +292 -2405
- package/src/runtime.mjs +76 -396
- package/src/scaffold.mjs +30 -80
- package/src/sdk-browser-runtime.mjs +70 -626
- package/src/source-server.mjs +588 -0
- package/src/targets/index.mjs +78 -188
- package/src/templates/workspace-template.mjs +19 -135
- package/src/testing-loader.mjs +164 -0
- package/src/testing.mjs +1 -1
- package/src/toolchain.mjs +131 -544
- package/src/update-check.mjs +26 -64
- package/src/workspace-operation-lock.mjs +139 -430
- package/src/workspace-runtime.mjs +112 -779
- package/src/workspace.mjs +40 -302
- package/browser-runtime/ARCANE_SDK_BROWSER_RELEASE.json +0 -218
- package/browser-runtime/ai/ARCANE_AI_BROWSER_SPEECH_COMPONENTS.json +0 -203
- package/browser-runtime/ai/ARCANE_AI_BROWSER_WASM_COMPONENTS.json +0 -80
- package/browser-runtime/ai/internal/sha256.mjs +0 -166
- package/docs/architecture.md +0 -344
- package/docs/compatibility.md +0 -36
- package/docs/event-manager.md +0 -294
- package/docs/platform-targets.md +0 -108
- package/docs/publishing.md +0 -201
- package/docs/reference/README.md +0 -187
- package/docs/reference/ai/browser-speech-package-authority.json +0 -835
- package/docs/reference/ai/browser-speech.md +0 -1252
- package/docs/reference/ai/browser-wasm.md +0 -530
- package/docs/reference/arcane-ollama.md +0 -288
- package/docs/reference/availability-and-normalization.md +0 -183
- package/docs/reference/behavioral-testing.md +0 -133
- package/docs/reference/cli.md +0 -779
- package/docs/reference/core/README.md +0 -62
- package/docs/reference/core/arcane-ai-contracts.md +0 -907
- package/docs/reference/core/arcane-api.md +0 -601
- package/docs/reference/core/arcane-entities.md +0 -65
- package/docs/reference/core/arcane-events.md +0 -134
- package/docs/reference/core/ollama-module.md +0 -181
- package/docs/reference/core/reference/arcane-api/ai-and-ollama.md +0 -1909
- package/docs/reference/core/reference/arcane-api/applications-terminal-capabilities.md +0 -1057
- package/docs/reference/core/reference/arcane-api/core-and-events.md +0 -320
- package/docs/reference/core/reference/arcane-api/filesystem-storage-preferences-appearance.md +0 -610
- package/docs/reference/core/reference/arcane-api/namespaces.md +0 -1157
- package/docs/reference/core/reference/arcane-api/platform-installation-users-system.md +0 -1423
- package/docs/reference/core/reference/arcane-api/session-provisioning-diagnostics-development.md +0 -315
- package/docs/reference/event-manager.md +0 -1511
- package/docs/reference/inventory/package-api.json +0 -3284
- package/docs/reference/inventory/runtime-components.json +0 -1011
- package/docs/reference/inventory/runtime-entities.json +0 -26
- package/docs/reference/inventory/runtime-modules.json +0 -1431
- package/docs/reference/mail.md +0 -316
- package/docs/reference/protocols.md +0 -677
- package/docs/reference/runtime-components.md +0 -1366
- package/docs/reference/runtime-entities.md +0 -303
- package/docs/reference/runtime-modules.md +0 -2960
- package/docs/reference/sdk-api.md +0 -6694
- package/docs/roadmap.md +0 -79
- package/docs/work-amplification.md +0 -129
- package/runtime/ARCANE_RUNTIME_RELEASE.json +0 -826
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 1,
|
|
3
|
-
"builder": "arcane-sdk-browser-runtime-v1",
|
|
4
|
-
"sdkVersion": "0.3.0",
|
|
5
|
-
"source": {
|
|
6
|
-
"authority": "arcane-os-sdk",
|
|
7
|
-
"repository": "https://github.com/TheWizardNexus/arcane-os-sdk.git",
|
|
8
|
-
"protocol": "arcane-sdk-browser-runtime/1",
|
|
9
|
-
"browserEntry": "arcane-os/event-manager",
|
|
10
|
-
"dependencies": [
|
|
11
|
-
{
|
|
12
|
-
"name": "event-pubsub",
|
|
13
|
-
"version": "6.1.0",
|
|
14
|
-
"resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-6.1.0.tgz",
|
|
15
|
-
"integrity": "sha512-FEMlhTxwqGM0hztTixG6FhVFXqp7Eq1ltk5mSreK6Mhy3xWWpLAzEUR6OMvMdNqT3jgSxA8JDhnhyAG3X4Xy7Q=="
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"name": "strong-type",
|
|
19
|
-
"version": "2.0.0",
|
|
20
|
-
"resolved": "https://registry.npmjs.org/strong-type/-/strong-type-2.0.0.tgz",
|
|
21
|
-
"integrity": "sha512-HHrY9qYC7yn+5mlewiI3k9RQM9gZqGQsqbomZcd10Ks0h4RlX01nnkWbCe4AsVPCI6KaFvpkWm1nHMD+Ykup6g=="
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"name": "@wllama/wllama",
|
|
25
|
-
"version": "3.6.0",
|
|
26
|
-
"resolved": "https://registry.npmjs.org/@wllama/wllama/-/wllama-3.6.0.tgz",
|
|
27
|
-
"integrity": "sha512-NN3ZBXqaaUwGXTQubkNvsCaLPjN2XVa0bVS40OYCE8zquYmRc2W3oHYEgwvuSWWDB8aUqTLyMioySCXNkcnD1w=="
|
|
28
|
-
}
|
|
29
|
-
]
|
|
30
|
-
},
|
|
31
|
-
"fileCount": 26,
|
|
32
|
-
"totalBytes": 9551253,
|
|
33
|
-
"contentSha256": "164c30c71f4de1affaa335e0d435aa3cca31294f2c98be937b219e5e13e35959",
|
|
34
|
-
"files": [
|
|
35
|
-
{
|
|
36
|
-
"path": "ai/ARCANE_AI_BROWSER_SPEECH_COMPONENTS.json",
|
|
37
|
-
"sourcePath": "browser-runtime/ai/ARCANE_AI_BROWSER_SPEECH_COMPONENTS.json",
|
|
38
|
-
"provenance": "sdk-source-identity",
|
|
39
|
-
"bytes": 9233,
|
|
40
|
-
"sha256": "5ff2e20d2a15b4a867ec66810f196cf6225b79aa734ab3b018e8b006abfa5d39"
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"path": "ai/ARCANE_AI_BROWSER_WASM_COMPONENTS.json",
|
|
44
|
-
"sourcePath": "browser-runtime/ai/ARCANE_AI_BROWSER_WASM_COMPONENTS.json",
|
|
45
|
-
"provenance": "sdk-source-identity",
|
|
46
|
-
"bytes": 3173,
|
|
47
|
-
"sha256": "7f4e361eb2270ea63cdb2f6d4b899d5c87e4b955e1b4692b800f3e89e23568fc"
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
"path": "ai/browser-kokoro-worker.mjs",
|
|
51
|
-
"sourcePath": "browser-runtime/ai/browser-kokoro-worker.mjs",
|
|
52
|
-
"provenance": "sdk-source-identity",
|
|
53
|
-
"bytes": 345,
|
|
54
|
-
"sha256": "9a910b3a6818814bfd7548251e3989ac6fe5c105d541bc16fc8124ea1ba39737"
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
"path": "ai/browser-speech-artifacts.mjs",
|
|
58
|
-
"sourcePath": "browser-runtime/ai/browser-speech-artifacts.mjs",
|
|
59
|
-
"provenance": "sdk-source-identity",
|
|
60
|
-
"bytes": 135328,
|
|
61
|
-
"sha256": "d5eb7d74000f8d91f6e9d19a1f5bffc12feb292d004605b28fc35d368419427d"
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
"path": "ai/browser-speech-providers.mjs",
|
|
65
|
-
"sourcePath": "browser-runtime/ai/browser-speech-providers.mjs",
|
|
66
|
-
"provenance": "sdk-source-identity",
|
|
67
|
-
"bytes": 56765,
|
|
68
|
-
"sha256": "abe453aad718f9abc1e1b0911ea45a8f07e77f916e48d87cd661397e06084195"
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
"path": "ai/browser-speech.mjs",
|
|
72
|
-
"sourcePath": "browser-runtime/ai/browser-speech.mjs",
|
|
73
|
-
"provenance": "sdk-source-identity",
|
|
74
|
-
"bytes": 344,
|
|
75
|
-
"sha256": "4e060177a1aa5ed990b54c6455085973f3edbcd8810ad50367a9618ffdadb35a"
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"path": "ai/browser-wasm-llm-provider.mjs",
|
|
79
|
-
"sourcePath": "browser-runtime/ai/browser-wasm-llm-provider.mjs",
|
|
80
|
-
"provenance": "sdk-source-identity",
|
|
81
|
-
"bytes": 87005,
|
|
82
|
-
"sha256": "1643dfc732cda823b8714a88d23d6e8bee48b7f8d1cf6da95906e75d6562ba9a"
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"path": "ai/browser-wasm.mjs",
|
|
86
|
-
"sourcePath": "browser-runtime/ai/browser-wasm.mjs",
|
|
87
|
-
"provenance": "sdk-source-identity",
|
|
88
|
-
"bytes": 3324,
|
|
89
|
-
"sha256": "0a0eb93db352b0a734f60d0273960c49315d51323b75f82f82e4f85d54101868"
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
"path": "ai/browser-whisper-worker.mjs",
|
|
93
|
-
"sourcePath": "browser-runtime/ai/browser-whisper-worker.mjs",
|
|
94
|
-
"provenance": "sdk-source-identity",
|
|
95
|
-
"bytes": 345,
|
|
96
|
-
"sha256": "51f332a86c8b4809ce6a25d34d7cf2de9f0664bd9fbc35bc7ef273c5c550291d"
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
"path": "ai/browser-wllama-runtime.mjs",
|
|
100
|
-
"sourcePath": "browser-runtime/ai/browser-wllama-runtime.mjs",
|
|
101
|
-
"provenance": "sdk-source-identity",
|
|
102
|
-
"bytes": 32364,
|
|
103
|
-
"sha256": "f1d1ad5e3dce70fdefba4f112e7f48029f257f65b98b7adce34cd60f5517908a"
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"path": "ai/internal/sha256.mjs",
|
|
107
|
-
"sourcePath": "browser-runtime/ai/internal/sha256.mjs",
|
|
108
|
-
"provenance": "sdk-source-identity",
|
|
109
|
-
"bytes": 5332,
|
|
110
|
-
"sha256": "71763e3e38dc96ae3f5e39bee7dbeec16a147b7e464391ee0ffecf81b93e0e35"
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
"path": "ai/model-controller.mjs",
|
|
114
|
-
"sourcePath": "browser-runtime/ai/model-controller.mjs",
|
|
115
|
-
"provenance": "sdk-source-identity",
|
|
116
|
-
"bytes": 31466,
|
|
117
|
-
"sha256": "5a67cd4e6e08c5e754a7ccf667e472ba8ba5269c071279f135889ad91dd235fe"
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
"path": "ai/speech-worker-client.mjs",
|
|
121
|
-
"sourcePath": "browser-runtime/ai/speech-worker-client.mjs",
|
|
122
|
-
"provenance": "sdk-source-identity",
|
|
123
|
-
"bytes": 14130,
|
|
124
|
-
"sha256": "833565bcad0cb6091bfccc4b5e42542362b149a9ffd6ecc0b1b0440ae70efb58"
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
"path": "ai/speech-worker-runtime.mjs",
|
|
128
|
-
"sourcePath": "browser-runtime/ai/speech-worker-runtime.mjs",
|
|
129
|
-
"provenance": "sdk-source-identity",
|
|
130
|
-
"bytes": 90700,
|
|
131
|
-
"sha256": "4449fddbc1963f2c51f524b4a44993d88a28124482d96d183cd3e28f4ebdf1c8"
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
"path": "ai/wllama/LICENCE",
|
|
135
|
-
"sourcePath": "node_modules/@wllama/wllama/LICENCE",
|
|
136
|
-
"provenance": "vendor-package-identity",
|
|
137
|
-
"bytes": 1071,
|
|
138
|
-
"sha256": "5866e3bd7e3cbd3f7c8bea6efd8a1e7fa7cc8de68c30f428aff7c6584a0fb720"
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
"path": "ai/wllama/index.mjs",
|
|
142
|
-
"sourcePath": "browser-runtime/ai/wllama/index.mjs",
|
|
143
|
-
"provenance": "deterministic-derived-vendor",
|
|
144
|
-
"bytes": 392852,
|
|
145
|
-
"sha256": "b119a7cdffabc8541dce283381d18ada4027c0560728aac1fe45bdd30cdac8e2"
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
"path": "ai/wllama/llama.cpp-LICENSE",
|
|
149
|
-
"sourcePath": "browser-runtime/ai/wllama/llama.cpp-LICENSE",
|
|
150
|
-
"provenance": "vendor-source-identity",
|
|
151
|
-
"bytes": 1078,
|
|
152
|
-
"sha256": "94f29bbed6a22c35b992c5c6ebf0e7c92f13b836b90f36f461c9cf2f0f1d010d"
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
"path": "ai/wllama/wllama.wasm",
|
|
156
|
-
"sourcePath": "node_modules/@wllama/wllama/esm/wasm/wllama.wasm",
|
|
157
|
-
"provenance": "vendor-package-identity",
|
|
158
|
-
"bytes": 8524865,
|
|
159
|
-
"sha256": "95c6ff9ef2a03ff2c63bc91db132f0126a0bd0456b272cd8ae2e0f592fb059f6"
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
"path": "dependencies/event-pubsub/index.js",
|
|
163
|
-
"sourcePath": "node_modules/event-pubsub/index.js",
|
|
164
|
-
"provenance": "vendor-package-identity",
|
|
165
|
-
"bytes": 4218,
|
|
166
|
-
"sha256": "8276be58df86db2906a1604684eae9f6357c322039778955c64135219689d41a"
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
"path": "dependencies/event-pubsub/licence",
|
|
170
|
-
"sourcePath": "node_modules/event-pubsub/licence",
|
|
171
|
-
"provenance": "vendor-package-identity",
|
|
172
|
-
"bytes": 1097,
|
|
173
|
-
"sha256": "82b891ff5bdc521884c20023b4f468dce605aff5b0d6dc642cd2ce2849b55125"
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
"path": "dependencies/event-pubsub/package.json",
|
|
177
|
-
"sourcePath": "node_modules/event-pubsub/package.json",
|
|
178
|
-
"provenance": "vendor-package-identity",
|
|
179
|
-
"bytes": 2520,
|
|
180
|
-
"sha256": "acf29f5baa5747fdca4654cb8c47934c09b802ddcb0e3ac926d8933861311330"
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
"path": "dependencies/strong-type/index.js",
|
|
184
|
-
"sourcePath": "node_modules/strong-type/index.js",
|
|
185
|
-
"provenance": "vendor-package-identity",
|
|
186
|
-
"bytes": 32575,
|
|
187
|
-
"sha256": "08cc23b47b9a40cdef66d11a09103fa0895f785b0c88d51939f5dc31ae29cb17"
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
"path": "dependencies/strong-type/licence",
|
|
191
|
-
"sourcePath": "node_modules/strong-type/licence",
|
|
192
|
-
"provenance": "vendor-package-identity",
|
|
193
|
-
"bytes": 1097,
|
|
194
|
-
"sha256": "82b891ff5bdc521884c20023b4f468dce605aff5b0d6dc642cd2ce2849b55125"
|
|
195
|
-
},
|
|
196
|
-
{
|
|
197
|
-
"path": "dependencies/strong-type/package.json",
|
|
198
|
-
"sourcePath": "node_modules/strong-type/package.json",
|
|
199
|
-
"provenance": "vendor-package-identity",
|
|
200
|
-
"bytes": 1711,
|
|
201
|
-
"sha256": "d19da24f15102902ed6c52f4798b549d528bb44a4ec17736bc8745910861df06"
|
|
202
|
-
},
|
|
203
|
-
{
|
|
204
|
-
"path": "dom-event-instrumentation.mjs",
|
|
205
|
-
"sourcePath": "src/dom-event-instrumentation.mjs",
|
|
206
|
-
"provenance": "sdk-source-identity",
|
|
207
|
-
"bytes": 22659,
|
|
208
|
-
"sha256": "6ddc62a53c462555a019176a6b0d4daa5c4733c5fe4d1217606536e5c8a9d908"
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
"path": "event-manager.mjs",
|
|
212
|
-
"sourcePath": "src/event-manager.mjs",
|
|
213
|
-
"provenance": "sdk-source-identity",
|
|
214
|
-
"bytes": 95656,
|
|
215
|
-
"sha256": "a9367654a9d17fb04e14e1135447d00ce6f975f596633281d76eba7155754dba"
|
|
216
|
-
}
|
|
217
|
-
]
|
|
218
|
-
}
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 1,
|
|
3
|
-
"kind": "arcane-ai-browser-speech-components",
|
|
4
|
-
"protocol": "arcane-ai-browser-speech-artifact-graph/1",
|
|
5
|
-
"packageExport": "arcane-os/ai/browser-speech",
|
|
6
|
-
"browserEntry": "ai/browser-speech.mjs",
|
|
7
|
-
"closureStatus": "browser-speech-runtime-resolved-from-upstream-packages-and-provider-downloads",
|
|
8
|
-
"publicationStatus": "browser-speech-public-runtime-ready-warn-first-secure-opt-in",
|
|
9
|
-
"runtimeBytesPacked": false,
|
|
10
|
-
"modelWeightsPacked": false,
|
|
11
|
-
"voiceBytesPacked": false,
|
|
12
|
-
"materializedLegalCorpus": false,
|
|
13
|
-
"evidenceBoundary": "The SDK redistributes no browser speech runtime, model, voice, license corpus, or corresponding-source payload. Applications select upstream npm/provider download authorities. Warn-first is the default; secure:true enables exact byte and capability enforcement.",
|
|
14
|
-
"components": [
|
|
15
|
-
{
|
|
16
|
-
"name": "kokoro-js",
|
|
17
|
-
"version": "1.2.1",
|
|
18
|
-
"publisher": "xenova",
|
|
19
|
-
"declaredLicenseSpdx": "Apache-2.0",
|
|
20
|
-
"effectiveArtifactLicenseExpression": null,
|
|
21
|
-
"sourceRepository": "https://github.com/hexgrad/kokoro.git",
|
|
22
|
-
"sourceRevision": "664c76a704021239ba59c84dcbaa4d3dece01fe9",
|
|
23
|
-
"npm": {
|
|
24
|
-
"resolved": "https://registry.npmjs.org/kokoro-js/-/kokoro-js-1.2.1.tgz",
|
|
25
|
-
"integrity": "sha512-oq0HZJWis3t8lERkMJh84WLU86dpYD0EuBPtqYnLlQzyFP1OkyBRDcweAqCfhNOpltyN9j/azp1H6uuC47gShw==",
|
|
26
|
-
"shasum": "a6a9b0ffc1ab354fa3f9cb71ee95b6e9f0a13527",
|
|
27
|
-
"tarballBytes": 26887218,
|
|
28
|
-
"tarballSha256": "1f0d0383ef0349af0bd9440d81dc12abbea3a5392eb645283eda876f537f5860"
|
|
29
|
-
},
|
|
30
|
-
"selectedArtifacts": [
|
|
31
|
-
{
|
|
32
|
-
"role": "tts-runtime-entrypoint",
|
|
33
|
-
"path": "dist/kokoro.web.js",
|
|
34
|
-
"mediaType": "application/javascript",
|
|
35
|
-
"bytes": 2135146,
|
|
36
|
-
"sha256": "6067712fe4c43cdb36c762f860a5ab8d96ea1d9c8882466438eb9f3d0d20be8f"
|
|
37
|
-
}
|
|
38
|
-
],
|
|
39
|
-
"candidateObligations": [
|
|
40
|
-
"Apache-2.0",
|
|
41
|
-
"MIT",
|
|
42
|
-
"GPL-3.0-or-later"
|
|
43
|
-
],
|
|
44
|
-
"noticeClosureStatus": "upstream-publisher-owned-not-sdk-runtime-or-publication-gate",
|
|
45
|
-
"correspondingSourceStatus": "upstream-publisher-owned-not-sdk-runtime-or-publication-gate"
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"name": "@huggingface/transformers",
|
|
49
|
-
"version": "3.5.1",
|
|
50
|
-
"publisher": "xenova",
|
|
51
|
-
"declaredLicenseSpdx": "Apache-2.0",
|
|
52
|
-
"effectiveArtifactLicenseExpression": null,
|
|
53
|
-
"sourceRepository": "https://github.com/huggingface/transformers.js.git",
|
|
54
|
-
"sourceRevision": "746c8c25bf27c5e0684a20f76889b4bb8d23e295",
|
|
55
|
-
"npm": {
|
|
56
|
-
"resolved": "https://registry.npmjs.org/@huggingface/transformers/-/transformers-3.5.1.tgz",
|
|
57
|
-
"integrity": "sha512-qWsPoJMBPYcrGuzRMVL//3dwcLXED9r+j+Hzw+hZpBfrMPdyq57ehNs7lew0D34Paj0DO0E0kZQjOZcIVN17hQ==",
|
|
58
|
-
"shasum": "8022b616ed8f1ec88d8e56def06d5b0ef5c7a1ee",
|
|
59
|
-
"tarballBytes": 10249112,
|
|
60
|
-
"tarballSha256": "b8e9d201f92c7e2001de3601ef47d5a257985921f8f6ffc76734a5ec021bb53e"
|
|
61
|
-
},
|
|
62
|
-
"selectedArtifacts": [
|
|
63
|
-
{
|
|
64
|
-
"role": "stt-runtime-entrypoint-with-bundled-onnx-runtime-javascript",
|
|
65
|
-
"path": "dist/transformers.js",
|
|
66
|
-
"mediaType": "application/javascript",
|
|
67
|
-
"bytes": 2141070,
|
|
68
|
-
"sha256": "730d42f06974f547e1f6a5f5b7313fc731ff21a3d3ac4c8e47d1f69b0a375547"
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
"role": "onnx-runtime-jsep-module",
|
|
72
|
-
"path": "dist/ort-wasm-simd-threaded.jsep.mjs",
|
|
73
|
-
"mediaType": "application/javascript",
|
|
74
|
-
"bytes": 44484,
|
|
75
|
-
"sha256": "08fb86ec433c78bfb032c5d84a68b8e8e5a8d81268fa39e24314179a5767a5b9"
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"role": "onnx-runtime-jsep-wasm",
|
|
79
|
-
"path": "dist/ort-wasm-simd-threaded.jsep.wasm",
|
|
80
|
-
"mediaType": "application/wasm",
|
|
81
|
-
"bytes": 21596019,
|
|
82
|
-
"sha256": "c46655e8a94afc45338d4cb2b840475f88e5012d524509916e505079c00bfa39"
|
|
83
|
-
}
|
|
84
|
-
],
|
|
85
|
-
"candidateObligations": [
|
|
86
|
-
"Apache-2.0",
|
|
87
|
-
"MIT",
|
|
88
|
-
"BSD-3-Clause",
|
|
89
|
-
"ISC"
|
|
90
|
-
],
|
|
91
|
-
"noticeClosureStatus": "upstream-publisher-owned-not-sdk-runtime-or-publication-gate",
|
|
92
|
-
"correspondingSourceStatus": "upstream-publisher-owned-not-sdk-runtime-or-publication-gate"
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
"name": "phonemizer",
|
|
96
|
-
"version": "1.2.1",
|
|
97
|
-
"publisher": "xenova",
|
|
98
|
-
"declaredLicenseSpdx": "Apache-2.0",
|
|
99
|
-
"embeddedBy": "kokoro-js@1.2.1",
|
|
100
|
-
"sourceRepository": "https://github.com/xenova/phonemizer.js.git",
|
|
101
|
-
"sourceRevision": "6835144b7ee9043129222549c1ed2f6a27216278",
|
|
102
|
-
"npm": {
|
|
103
|
-
"resolved": "https://registry.npmjs.org/phonemizer/-/phonemizer-1.2.1.tgz",
|
|
104
|
-
"integrity": "sha512-v0KJ4mi2T4Q7eJQ0W15Xd4G9k4kICSXE8bpDeJ8jisL4RyJhNWsweKTOi88QXFc4r4LZlz5jVL5lCHhkpdT71A==",
|
|
105
|
-
"shasum": "175aed7034b49b9169fc6adf13c16134374d238d",
|
|
106
|
-
"tarballBytes": 1369002,
|
|
107
|
-
"tarballSha256": "12f9f3582f8b5d557a0577180d83ff0458a4a5c15b2efb625ee71c3ebbee22e9"
|
|
108
|
-
},
|
|
109
|
-
"embeddedEspeak": {
|
|
110
|
-
"declaredUpstreamLicenseSpdx": "GPL-3.0-or-later",
|
|
111
|
-
"exactUpstreamRevision": null,
|
|
112
|
-
"generatedWorkerPath": "src/espeakng.worker.js",
|
|
113
|
-
"generatedWorkerBytes": 1449799,
|
|
114
|
-
"generatedWorkerSha256": "6bab8f2f2cf25d65b596b87471cb17567a496012ee6ce649cfa88b284c1fb9f8",
|
|
115
|
-
"dataPath": "data/espeakng.worker.data",
|
|
116
|
-
"dataBytes": 890802,
|
|
117
|
-
"dataSha256": "6262621f3f8267fb61ef41fe7af75b8fe7e2315d6c9092afd29d7629bb21a60b",
|
|
118
|
-
"buildToolchainReceipt": null,
|
|
119
|
-
"generatedOutputToCorrespondingSourceBinding": null,
|
|
120
|
-
"noticeClosureStatus": "upstream-publisher-owned-not-sdk-runtime-or-publication-gate",
|
|
121
|
-
"correspondingSourceStatus": "upstream-publisher-owned-not-sdk-runtime-or-publication-gate"
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
"name": "onnxruntime-web",
|
|
126
|
-
"version": "1.22.0-dev.20250409-89f8206ba4",
|
|
127
|
-
"publisher": "onnxruntime",
|
|
128
|
-
"declaredLicenseSpdx": "MIT",
|
|
129
|
-
"embeddedBy": "@huggingface/transformers@3.5.1",
|
|
130
|
-
"sourceRepository": "https://github.com/microsoft/onnxruntime.git",
|
|
131
|
-
"sourceRevision": "89f8206ba4f1c22c39e0297fb55272e8ce8cd7d0",
|
|
132
|
-
"npm": {
|
|
133
|
-
"resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.22.0-dev.20250409-89f8206ba4.tgz",
|
|
134
|
-
"integrity": "sha512-0uS76OPgH0hWCPrFKlL8kYVV7ckM7t/36HfbgoFw6Nd0CZVVbQC4PkrR8mBX8LtNUFZO25IQBqV2Hx2ho3FlbQ==",
|
|
135
|
-
"shasum": "d1e3a04e03dfee392b41d420ef547b6a0351b06b",
|
|
136
|
-
"tarballBytes": 20239097,
|
|
137
|
-
"tarballSha256": "9758fa28ba1acc1b5c9ffef8d60c97b56fd2105a9476a690ed4db16a5588ae10",
|
|
138
|
-
"licenseMemberPresent": false,
|
|
139
|
-
"thirdPartyNoticesMemberPresent": false
|
|
140
|
-
},
|
|
141
|
-
"selectedArtifacts": [
|
|
142
|
-
{
|
|
143
|
-
"role": "onnx-runtime-jsep-module",
|
|
144
|
-
"path": "dist/ort-wasm-simd-threaded.jsep.mjs",
|
|
145
|
-
"mediaType": "application/javascript",
|
|
146
|
-
"bytes": 44484,
|
|
147
|
-
"sha256": "08fb86ec433c78bfb032c5d84a68b8e8e5a8d81268fa39e24314179a5767a5b9",
|
|
148
|
-
"packagedBy": "@huggingface/transformers@3.5.1"
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
"role": "onnx-runtime-jsep-wasm",
|
|
152
|
-
"path": "dist/ort-wasm-simd-threaded.jsep.wasm",
|
|
153
|
-
"mediaType": "application/wasm",
|
|
154
|
-
"bytes": 21596019,
|
|
155
|
-
"sha256": "c46655e8a94afc45338d4cb2b840475f88e5012d524509916e505079c00bfa39",
|
|
156
|
-
"packagedBy": "@huggingface/transformers@3.5.1"
|
|
157
|
-
}
|
|
158
|
-
],
|
|
159
|
-
"noticeClosureStatus": "upstream-publisher-owned-not-sdk-runtime-or-publication-gate"
|
|
160
|
-
}
|
|
161
|
-
],
|
|
162
|
-
"legalEvidence": [
|
|
163
|
-
{
|
|
164
|
-
"role": "package-license",
|
|
165
|
-
"appliesTo": ["kokoro-js@1.2.1", "phonemizer@1.2.1"],
|
|
166
|
-
"sourceKind": "registry-integrity-verified-tarball-member",
|
|
167
|
-
"sourcePath": "package/LICENSE",
|
|
168
|
-
"mediaType": "text/plain",
|
|
169
|
-
"bytes": 11357,
|
|
170
|
-
"sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
"role": "package-license",
|
|
174
|
-
"appliesTo": ["@huggingface/transformers@3.5.1"],
|
|
175
|
-
"sourceKind": "registry-integrity-verified-tarball-member",
|
|
176
|
-
"sourcePath": "package/LICENSE",
|
|
177
|
-
"mediaType": "text/plain",
|
|
178
|
-
"bytes": 11358,
|
|
179
|
-
"sha256": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30"
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
"role": "upstream-license",
|
|
183
|
-
"appliesTo": ["onnxruntime-web@1.22.0-dev.20250409-89f8206ba4"],
|
|
184
|
-
"sourceKind": "immutable-upstream-source-revision",
|
|
185
|
-
"sourceUrl": "https://raw.githubusercontent.com/microsoft/onnxruntime/89f8206ba4f1c22c39e0297fb55272e8ce8cd7d0/LICENSE",
|
|
186
|
-
"sourceRevision": "89f8206ba4f1c22c39e0297fb55272e8ce8cd7d0",
|
|
187
|
-
"mediaType": "text/plain",
|
|
188
|
-
"bytes": 1073,
|
|
189
|
-
"sha256": "2f07c72751aed99790b8a4869cf2311df85a860b22ded05fa22803587a48922c"
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
"role": "upstream-third-party-notices",
|
|
193
|
-
"appliesTo": ["onnxruntime-web@1.22.0-dev.20250409-89f8206ba4"],
|
|
194
|
-
"sourceKind": "immutable-upstream-source-revision",
|
|
195
|
-
"sourceUrl": "https://raw.githubusercontent.com/microsoft/onnxruntime/89f8206ba4f1c22c39e0297fb55272e8ce8cd7d0/ThirdPartyNotices.txt",
|
|
196
|
-
"sourceRevision": "89f8206ba4f1c22c39e0297fb55272e8ce8cd7d0",
|
|
197
|
-
"mediaType": "text/plain",
|
|
198
|
-
"bytes": 326866,
|
|
199
|
-
"sha256": "e9e90971a8e75a9a8ac0c6412e29c1202d079998389915aa485f46c816c3b4cc"
|
|
200
|
-
}
|
|
201
|
-
],
|
|
202
|
-
"publicationBlocks": []
|
|
203
|
-
}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 1,
|
|
3
|
-
"kind": "arcane-ai-browser-wasm-components",
|
|
4
|
-
"protocol": "arcane-ai-browser-wasm/2",
|
|
5
|
-
"packageExport": "arcane-os/ai/browser-wasm",
|
|
6
|
-
"browserEntry": "ai/browser-wasm.mjs",
|
|
7
|
-
"runtimePolicy": {
|
|
8
|
-
"modelAuthorities": "fieldwise-security-default-false-with-optional-byteLength-and-sha256-checks",
|
|
9
|
-
"modelWeightsPacked": false,
|
|
10
|
-
"remoteModelHelpers": false,
|
|
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",
|
|
16
|
-
"toolCalls": "structural-only-never-executed"
|
|
17
|
-
},
|
|
18
|
-
"components": [
|
|
19
|
-
{
|
|
20
|
-
"name": "@wllama/wllama",
|
|
21
|
-
"version": "3.6.0",
|
|
22
|
-
"licenseSpdx": "MIT",
|
|
23
|
-
"sourceRepository": "https://github.com/ngxson/wllama.git",
|
|
24
|
-
"sourceRevision": "f16050d8d51a00602c6a2a6b8ac9c09f490eea7f",
|
|
25
|
-
"npm": {
|
|
26
|
-
"resolved": "https://registry.npmjs.org/@wllama/wllama/-/wllama-3.6.0.tgz",
|
|
27
|
-
"integrity": "sha512-NN3ZBXqaaUwGXTQubkNvsCaLPjN2XVa0bVS40OYCE8zquYmRc2W3oHYEgwvuSWWDB8aUqTLyMioySCXNkcnD1w==",
|
|
28
|
-
"tarballBytes": 5671369,
|
|
29
|
-
"tarballSha256": "137c35ceccb4911a9b0ce9b427889f75991654ec6a6d1dd8fabd879b14b07a1b"
|
|
30
|
-
},
|
|
31
|
-
"files": [
|
|
32
|
-
{
|
|
33
|
-
"role": "runtime-module",
|
|
34
|
-
"path": "ai/wllama/index.mjs",
|
|
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
|
-
}
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"role": "runtime-wasm",
|
|
48
|
-
"path": "ai/wllama/wllama.wasm",
|
|
49
|
-
"sourcePath": "node_modules/@wllama/wllama/esm/wasm/wllama.wasm",
|
|
50
|
-
"bytes": 8524865,
|
|
51
|
-
"sha256": "95c6ff9ef2a03ff2c63bc91db132f0126a0bd0456b272cd8ae2e0f592fb059f6"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"role": "license",
|
|
55
|
-
"path": "ai/wllama/LICENCE",
|
|
56
|
-
"sourcePath": "node_modules/@wllama/wllama/LICENCE",
|
|
57
|
-
"bytes": 1071,
|
|
58
|
-
"sha256": "5866e3bd7e3cbd3f7c8bea6efd8a1e7fa7cc8de68c30f428aff7c6584a0fb720"
|
|
59
|
-
}
|
|
60
|
-
]
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"name": "llama.cpp",
|
|
64
|
-
"version": "b10454",
|
|
65
|
-
"licenseSpdx": "MIT",
|
|
66
|
-
"sourceRepository": "https://github.com/ggerganov/llama.cpp.git",
|
|
67
|
-
"sourceRevision": "4df29be4f4c3673f428170fda944a5b19f743bb8",
|
|
68
|
-
"embeddedBy": "@wllama/wllama@3.6.0",
|
|
69
|
-
"files": [
|
|
70
|
-
{
|
|
71
|
-
"role": "license",
|
|
72
|
-
"path": "ai/wllama/llama.cpp-LICENSE",
|
|
73
|
-
"sourceUrl": "https://raw.githubusercontent.com/ggerganov/llama.cpp/4df29be4f4c3673f428170fda944a5b19f743bb8/LICENSE",
|
|
74
|
-
"bytes": 1078,
|
|
75
|
-
"sha256": "94f29bbed6a22c35b992c5c6ebf0e7c92f13b836b90f36f461c9cf2f0f1d010d"
|
|
76
|
-
}
|
|
77
|
-
]
|
|
78
|
-
}
|
|
79
|
-
]
|
|
80
|
-
}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
const ROUND_CONSTANTS = new Uint32Array([
|
|
2
|
-
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
|
3
|
-
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
|
4
|
-
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
|
5
|
-
0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
|
6
|
-
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
|
|
7
|
-
0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
|
8
|
-
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
|
|
9
|
-
0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
|
10
|
-
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
|
|
11
|
-
0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
|
12
|
-
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
|
|
13
|
-
0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
|
14
|
-
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
|
|
15
|
-
0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
|
16
|
-
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
|
|
17
|
-
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
|
|
18
|
-
]);
|
|
19
|
-
|
|
20
|
-
function rotateRight(value, bits) {
|
|
21
|
-
return (value >>> bits) | (value << (32 - bits));
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function toBytes(value) {
|
|
25
|
-
if (value instanceof Uint8Array) return value;
|
|
26
|
-
if (value instanceof ArrayBuffer) return new Uint8Array(value);
|
|
27
|
-
if (ArrayBuffer.isView(value)) {
|
|
28
|
-
return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
|
|
29
|
-
}
|
|
30
|
-
throw new TypeError("SHA-256 input must be bytes.");
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Dependency-free incremental SHA-256. It retains one 64-byte tail and never
|
|
35
|
-
* buffers an entire model file in JavaScript memory.
|
|
36
|
-
*/
|
|
37
|
-
export function createStreamingSha256() {
|
|
38
|
-
const state = new Uint32Array([
|
|
39
|
-
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
|
|
40
|
-
0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,
|
|
41
|
-
]);
|
|
42
|
-
const schedule = new Uint32Array(64);
|
|
43
|
-
const tail = new Uint8Array(64);
|
|
44
|
-
let tailLength = 0;
|
|
45
|
-
let byteLength = 0;
|
|
46
|
-
let finished = false;
|
|
47
|
-
|
|
48
|
-
function compress(block, offset = 0) {
|
|
49
|
-
for (let index = 0; index < 16; index += 1) {
|
|
50
|
-
const cursor = offset + (index * 4);
|
|
51
|
-
schedule[index] = (
|
|
52
|
-
(block[cursor] << 24)
|
|
53
|
-
| (block[cursor + 1] << 16)
|
|
54
|
-
| (block[cursor + 2] << 8)
|
|
55
|
-
| block[cursor + 3]
|
|
56
|
-
) >>> 0;
|
|
57
|
-
}
|
|
58
|
-
for (let index = 16; index < 64; index += 1) {
|
|
59
|
-
const previous = schedule[index - 15];
|
|
60
|
-
const prior = schedule[index - 2];
|
|
61
|
-
const sigma0 = (
|
|
62
|
-
rotateRight(previous, 7) ^ rotateRight(previous, 18) ^ (previous >>> 3)
|
|
63
|
-
) >>> 0;
|
|
64
|
-
const sigma1 = (
|
|
65
|
-
rotateRight(prior, 17) ^ rotateRight(prior, 19) ^ (prior >>> 10)
|
|
66
|
-
) >>> 0;
|
|
67
|
-
schedule[index] = (
|
|
68
|
-
schedule[index - 16] + sigma0 + schedule[index - 7] + sigma1
|
|
69
|
-
) >>> 0;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
let a = state[0];
|
|
73
|
-
let b = state[1];
|
|
74
|
-
let c = state[2];
|
|
75
|
-
let d = state[3];
|
|
76
|
-
let e = state[4];
|
|
77
|
-
let f = state[5];
|
|
78
|
-
let g = state[6];
|
|
79
|
-
let h = state[7];
|
|
80
|
-
|
|
81
|
-
for (let index = 0; index < 64; index += 1) {
|
|
82
|
-
const sum1 = (rotateRight(e, 6) ^ rotateRight(e, 11) ^ rotateRight(e, 25)) >>> 0;
|
|
83
|
-
const choice = ((e & f) ^ ((~e) & g)) >>> 0;
|
|
84
|
-
const temporary1 = (
|
|
85
|
-
h + sum1 + choice + ROUND_CONSTANTS[index] + schedule[index]
|
|
86
|
-
) >>> 0;
|
|
87
|
-
const sum0 = (rotateRight(a, 2) ^ rotateRight(a, 13) ^ rotateRight(a, 22)) >>> 0;
|
|
88
|
-
const majority = ((a & b) ^ (a & c) ^ (b & c)) >>> 0;
|
|
89
|
-
const temporary2 = (sum0 + majority) >>> 0;
|
|
90
|
-
|
|
91
|
-
h = g;
|
|
92
|
-
g = f;
|
|
93
|
-
f = e;
|
|
94
|
-
e = (d + temporary1) >>> 0;
|
|
95
|
-
d = c;
|
|
96
|
-
c = b;
|
|
97
|
-
b = a;
|
|
98
|
-
a = (temporary1 + temporary2) >>> 0;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
state[0] = (state[0] + a) >>> 0;
|
|
102
|
-
state[1] = (state[1] + b) >>> 0;
|
|
103
|
-
state[2] = (state[2] + c) >>> 0;
|
|
104
|
-
state[3] = (state[3] + d) >>> 0;
|
|
105
|
-
state[4] = (state[4] + e) >>> 0;
|
|
106
|
-
state[5] = (state[5] + f) >>> 0;
|
|
107
|
-
state[6] = (state[6] + g) >>> 0;
|
|
108
|
-
state[7] = (state[7] + h) >>> 0;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
function update(value) {
|
|
112
|
-
if (finished) throw new Error("SHA-256 digest is already finalized.");
|
|
113
|
-
const input = toBytes(value);
|
|
114
|
-
byteLength += input.byteLength;
|
|
115
|
-
if (!Number.isSafeInteger(byteLength)) {
|
|
116
|
-
throw new RangeError("SHA-256 input exceeds the supported byte length.");
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
let offset = 0;
|
|
120
|
-
if (tailLength) {
|
|
121
|
-
const take = Math.min(64 - tailLength, input.byteLength);
|
|
122
|
-
tail.set(input.subarray(0, take), tailLength);
|
|
123
|
-
tailLength += take;
|
|
124
|
-
offset = take;
|
|
125
|
-
if (tailLength === 64) {
|
|
126
|
-
compress(tail);
|
|
127
|
-
tailLength = 0;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
while (offset + 64 <= input.byteLength) {
|
|
132
|
-
compress(input, offset);
|
|
133
|
-
offset += 64;
|
|
134
|
-
}
|
|
135
|
-
if (offset < input.byteLength) {
|
|
136
|
-
tail.set(input.subarray(offset), 0);
|
|
137
|
-
tailLength = input.byteLength - offset;
|
|
138
|
-
}
|
|
139
|
-
return api;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
function digestHex() {
|
|
143
|
-
if (finished) throw new Error("SHA-256 digest is already finalized.");
|
|
144
|
-
finished = true;
|
|
145
|
-
const finalLength = tailLength < 56 ? 64 : 128;
|
|
146
|
-
const finalBlocks = new Uint8Array(finalLength);
|
|
147
|
-
finalBlocks.set(tail.subarray(0, tailLength));
|
|
148
|
-
finalBlocks[tailLength] = 0x80;
|
|
149
|
-
let bitLength = BigInt(byteLength) * 8n;
|
|
150
|
-
for (let index = 0; index < 8; index += 1) {
|
|
151
|
-
finalBlocks[finalLength - 1 - index] = Number(bitLength & 0xffn);
|
|
152
|
-
bitLength >>= 8n;
|
|
153
|
-
}
|
|
154
|
-
for (let offset = 0; offset < finalLength; offset += 64) compress(finalBlocks, offset);
|
|
155
|
-
return [...state].map((word) => word.toString(16).padStart(8, "0")).join("");
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
const api = Object.freeze({
|
|
159
|
-
update,
|
|
160
|
-
digestHex,
|
|
161
|
-
get bytes() {
|
|
162
|
-
return byteLength;
|
|
163
|
-
},
|
|
164
|
-
});
|
|
165
|
-
return api;
|
|
166
|
-
}
|