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.
Files changed (153) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +86 -117
  3. package/bin/arcane-test.mjs +170 -46
  4. package/browser-runtime/ai/browser-speech-artifacts.mjs +887 -909
  5. package/browser-runtime/ai/browser-speech-providers.mjs +96 -152
  6. package/browser-runtime/ai/browser-wasm-llm-provider.mjs +627 -819
  7. package/browser-runtime/ai/browser-wasm.mjs +24 -35
  8. package/browser-runtime/ai/browser-wllama-runtime.mjs +64 -316
  9. package/browser-runtime/ai/model-controller.mjs +584 -181
  10. package/browser-runtime/ai/speech-worker-client.mjs +8 -146
  11. package/browser-runtime/ai/speech-worker-runtime.mjs +643 -363
  12. package/browser-runtime/dom-event-instrumentation.mjs +55 -147
  13. package/browser-runtime/event-manager.mjs +239 -624
  14. package/package.json +5 -6
  15. package/runtime/arcane/components/app-bar.html +3 -15
  16. package/runtime/arcane/components/assistant-panel.html +10 -10
  17. package/runtime/arcane/components/calculator.html +1 -1
  18. package/runtime/arcane/components/chat.html +1359 -135
  19. package/runtime/arcane/components/conversation-view.html +2 -2
  20. package/runtime/arcane/components/document-inspector.html +11 -17
  21. package/runtime/arcane/components/file-manager.html +13 -56
  22. package/runtime/arcane/components/markdown-document.html +82 -281
  23. package/runtime/arcane/components/markdown-editor.html +7 -10
  24. package/runtime/arcane/components/media-embed.html +6 -6
  25. package/runtime/arcane/components/screen-capture.html +4 -4
  26. package/runtime/arcane/components/source-explanation.html +2 -2
  27. package/runtime/arcane/components/speech.html +112 -68
  28. package/runtime/arcane/components/terminal-workspace.html +4 -4
  29. package/runtime/arcane/components/theme-editor.html +1 -1
  30. package/runtime/arcane/components/unified-inbox.html +2 -2
  31. package/runtime/arcane/components/voice-transcription.html +31 -21
  32. package/runtime/arcane/entities/Calculation.js +2 -3
  33. package/runtime/arcane/entities/Chat.js +228 -43
  34. package/runtime/arcane/entities/Preference.js +3 -5
  35. package/runtime/arcane/entities/Weather.js +5 -5
  36. package/runtime/arcane/modules/AI.js +1050 -427
  37. package/runtime/arcane/modules/AIProviderRuntime.js +658 -363
  38. package/runtime/arcane/modules/AIResponseLength.js +9 -19
  39. package/runtime/arcane/modules/AIRuntimeState.js +109 -72
  40. package/runtime/arcane/modules/ArcaneNavigationPolicy.js +45 -32
  41. package/runtime/arcane/modules/BrowserTestSuite.js +78 -122
  42. package/runtime/arcane/modules/CalculatorEngine.js +9 -9
  43. package/runtime/arcane/modules/CommunicationAppController.js +3 -7
  44. package/runtime/arcane/modules/ComponentContracts.js +30 -32
  45. package/runtime/arcane/modules/ConfiguredAIChatSession.js +281 -230
  46. package/runtime/arcane/modules/ConversationActionItems.js +26 -59
  47. package/runtime/arcane/modules/ConversationClosingReport.js +34 -61
  48. package/runtime/arcane/modules/ConversationTimebox.js +27 -15
  49. package/runtime/arcane/modules/DBOPFSDocumentLibrary.js +152 -344
  50. package/runtime/arcane/modules/DocumentLexicalSearch.js +25 -91
  51. package/runtime/arcane/modules/HTMLImport.js +54 -1
  52. package/runtime/arcane/modules/IsolatedModelQuestionRunner.js +40 -203
  53. package/runtime/arcane/modules/LocalAIReadiness.js +40 -60
  54. package/runtime/arcane/modules/LocalAIReadinessController.js +15 -13
  55. package/runtime/arcane/modules/MD.js +1 -45
  56. package/runtime/arcane/modules/Mail.js +51 -103
  57. package/runtime/arcane/modules/MailOutbox.mjs +95 -193
  58. package/runtime/arcane/modules/MailTransport.mjs +36 -57
  59. package/runtime/arcane/modules/ModelDefinition.js +22 -106
  60. package/runtime/arcane/modules/OpenMeteoWeatherProvider.js +39 -101
  61. package/runtime/arcane/modules/PersistentAIChatSession.js +281 -18
  62. package/runtime/arcane/modules/PreferenceStore.js +102 -30
  63. package/runtime/arcane/modules/RiskSignalAnalyzer.js +8 -9
  64. package/runtime/arcane/modules/ScopedOPFSCache.js +7 -42
  65. package/runtime/arcane/modules/ScreenCapture.js +175 -128
  66. package/runtime/arcane/modules/SpeechPlayback.js +46 -149
  67. package/runtime/arcane/modules/StaticDocumentCatalog.js +173 -407
  68. package/runtime/arcane/modules/ToolCallRouter.js +25 -12
  69. package/runtime/arcane/modules/YouTubeMedia.js +6 -5
  70. package/schemas/arcane-app-bundle.schema.json +13 -78
  71. package/schemas/arcane-app.schema.json +9 -25
  72. package/schemas/arcane-lock.schema.json +18 -151
  73. package/schemas/arcane-package.schema.json +2 -16
  74. package/schemas/native-build-plan.schema.json +119 -122
  75. package/src/app-descriptor.mjs +75 -132
  76. package/src/application-tests.mjs +200 -0
  77. package/src/cli/main.mjs +27 -46
  78. package/src/constants.mjs +3 -4
  79. package/src/dev-server.mjs +30 -324
  80. package/src/doctor.mjs +92 -154
  81. package/src/dom-event-instrumentation.mjs +55 -147
  82. package/src/errors.mjs +2 -3
  83. package/src/event-manager.mjs +239 -624
  84. package/src/event-queue.mjs +3 -3
  85. package/src/import-map.mjs +273 -1028
  86. package/src/index.mjs +14 -16
  87. package/src/installed-sdk-runtime.mjs +40 -62
  88. package/src/integrated-provider-loader.mjs +53 -382
  89. package/src/mail-api.mjs +0 -2
  90. package/src/mail-server.mjs +224 -580
  91. package/src/mail.mjs +4 -10
  92. package/src/native-plan.mjs +163 -598
  93. package/src/native-provider-loader.mjs +104 -1063
  94. package/src/packager/core.mjs +485 -3229
  95. package/src/process.mjs +5 -10
  96. package/src/release-bundle.mjs +292 -2405
  97. package/src/runtime.mjs +76 -396
  98. package/src/scaffold.mjs +30 -80
  99. package/src/sdk-browser-runtime.mjs +70 -626
  100. package/src/source-server.mjs +588 -0
  101. package/src/targets/index.mjs +78 -188
  102. package/src/templates/workspace-template.mjs +19 -135
  103. package/src/testing-loader.mjs +164 -0
  104. package/src/testing.mjs +1 -1
  105. package/src/toolchain.mjs +131 -544
  106. package/src/update-check.mjs +26 -64
  107. package/src/workspace-operation-lock.mjs +139 -430
  108. package/src/workspace-runtime.mjs +112 -779
  109. package/src/workspace.mjs +40 -302
  110. package/browser-runtime/ARCANE_SDK_BROWSER_RELEASE.json +0 -218
  111. package/browser-runtime/ai/ARCANE_AI_BROWSER_SPEECH_COMPONENTS.json +0 -203
  112. package/browser-runtime/ai/ARCANE_AI_BROWSER_WASM_COMPONENTS.json +0 -80
  113. package/browser-runtime/ai/internal/sha256.mjs +0 -166
  114. package/docs/architecture.md +0 -344
  115. package/docs/compatibility.md +0 -36
  116. package/docs/event-manager.md +0 -294
  117. package/docs/platform-targets.md +0 -108
  118. package/docs/publishing.md +0 -201
  119. package/docs/reference/README.md +0 -187
  120. package/docs/reference/ai/browser-speech-package-authority.json +0 -835
  121. package/docs/reference/ai/browser-speech.md +0 -1252
  122. package/docs/reference/ai/browser-wasm.md +0 -530
  123. package/docs/reference/arcane-ollama.md +0 -288
  124. package/docs/reference/availability-and-normalization.md +0 -183
  125. package/docs/reference/behavioral-testing.md +0 -133
  126. package/docs/reference/cli.md +0 -779
  127. package/docs/reference/core/README.md +0 -62
  128. package/docs/reference/core/arcane-ai-contracts.md +0 -907
  129. package/docs/reference/core/arcane-api.md +0 -601
  130. package/docs/reference/core/arcane-entities.md +0 -65
  131. package/docs/reference/core/arcane-events.md +0 -134
  132. package/docs/reference/core/ollama-module.md +0 -181
  133. package/docs/reference/core/reference/arcane-api/ai-and-ollama.md +0 -1909
  134. package/docs/reference/core/reference/arcane-api/applications-terminal-capabilities.md +0 -1057
  135. package/docs/reference/core/reference/arcane-api/core-and-events.md +0 -320
  136. package/docs/reference/core/reference/arcane-api/filesystem-storage-preferences-appearance.md +0 -610
  137. package/docs/reference/core/reference/arcane-api/namespaces.md +0 -1157
  138. package/docs/reference/core/reference/arcane-api/platform-installation-users-system.md +0 -1423
  139. package/docs/reference/core/reference/arcane-api/session-provisioning-diagnostics-development.md +0 -315
  140. package/docs/reference/event-manager.md +0 -1511
  141. package/docs/reference/inventory/package-api.json +0 -3284
  142. package/docs/reference/inventory/runtime-components.json +0 -1011
  143. package/docs/reference/inventory/runtime-entities.json +0 -26
  144. package/docs/reference/inventory/runtime-modules.json +0 -1431
  145. package/docs/reference/mail.md +0 -316
  146. package/docs/reference/protocols.md +0 -677
  147. package/docs/reference/runtime-components.md +0 -1366
  148. package/docs/reference/runtime-entities.md +0 -303
  149. package/docs/reference/runtime-modules.md +0 -2960
  150. package/docs/reference/sdk-api.md +0 -6694
  151. package/docs/roadmap.md +0 -79
  152. package/docs/work-amplification.md +0 -129
  153. package/runtime/ARCANE_RUNTIME_RELEASE.json +0 -826
@@ -1,303 +0,0 @@
1
- # Arcane runtime entity modules
2
-
3
- The synchronized runtime ships 15 entity modules with 35 public ESM bindings.
4
- This page explains each module's capability and host assumptions. The exact
5
- constructor/function/value contracts are canonical in the
6
- [Arcane shared entity inventory](core/arcane-entities.md).
7
-
8
- Entity creation and serialization are usually cross-host. Methods that touch
9
- DOM, DBOPFS, local storage, AI, or object URLs require the corresponding browser
10
- or native-WebView dependency.
11
-
12
- ## Canonical inventory
13
-
14
- | Module | Exports | Capability | Availability / normalization |
15
- | --- | --- | --- | --- |
16
- | `ApiModelRecord.js` | `default` | Frozen HTTP(S) model response snapshot. | Cross-host; normalized. |
17
- | `Calculation.js` | `default` | Frozen bounded expression and finite result. | Cross-host; normalized. |
18
- | `Chat.js` | `default` | Conversation messages, tool exchanges, memories, and optional persistence. | Browser/native WebView; AI/DBOPFS behavior mixed. |
19
- | `CommunicationMessage.js` | `default`, `communicationChannels` | Frozen provider-neutral message. | Cross-host; normalized. |
20
- | `CommunicationThread.js` | `default` | Frozen provider-neutral thread containing normalized messages. | Cross-host; normalized. |
21
- | `Document.js` | `default` | File entity specialization for the `documents` table. | Browser/native WebView; DBOPFS behavior mixed. |
22
- | `File.js` | `default` | MIME-aware file open/save and DBOPFS persistence. | Browser/native WebView; mixed storage/rendering errors. |
23
- | `Image.js` | `default` | Image validation, upload, persistence, data URL, Blob URL, and revocation. | Browser/native WebView; mixed File/Blob/DBOPFS errors. |
24
- | `IntentEnvelope.js` | six named exports | Immutable canonical intent record, serialization, rehydration, and privacy-safe audit projection. | Cross-host; strict normalized coded errors. |
25
- | `Preference.js` | `default`, `preferenceSchema` | Boolean, number, select, and text preference definitions. | Cross-host; normalized. |
26
- | `TerminalSession.js` | `default`, `terminalShells` | Frozen terminal session identity, shell, and state. | Cross-host; normalized. |
27
- | `Theme.js` | five exports | Semantic theme tokens, conversion, serialization, and DOM application. | Values cross-host; apply/clear need DOM; normalized/mixed. |
28
- | `TWiNPolicyDecision.js` | six named exports | Immutable canonical policy decision, rehydration, serialization, and redacted audit projection. | Cross-host; strict normalized coded errors. |
29
- | `User.js` | `default` | User preferences/profile state with DBLS/DBOPFS lifecycle. | Browser/native WebView; storage behavior mixed. |
30
- | `Weather.js` | four classes | Frozen location, observation, day, and snapshot weather entities. | Cross-host; normalized. |
31
-
32
- ## ApiModelRecord.js
33
-
34
- ### Overview
35
-
36
- `ApiModelRecord` freezes an endpoint, fetch time, metadata, and parsed value so
37
- provider reads can be cached or emitted without leaking mutable response state.
38
-
39
- ### Example
40
-
41
- ```javascript
42
- import ApiModelRecord from '/arcane/entities/ApiModelRecord.js';
43
-
44
- const record = new ApiModelRecord({
45
- endpoint: 'https://example.invalid/model',
46
- fetchedAt: new Date().toISOString(),
47
- metadata: {},
48
- value: {ready: true}
49
- });
50
- ```
51
-
52
- ## Calculation.js
53
-
54
- ### Overview
55
-
56
- `Calculation` owns a bounded expression, finite result, creation time, and
57
- `toJSON()` projection. Use `CalculatorEngine` to produce validated instances.
58
-
59
- ### Example
60
-
61
- ```javascript
62
- import Calculation from '/arcane/entities/Calculation.js';
63
-
64
- console.log(new Calculation({expression: '2 + 2', result: 4}).toJSON());
65
- ```
66
-
67
- ## Chat.js
68
-
69
- ### Overview
70
-
71
- `ChatEntity` owns message history, saved state, tool exchanges, memory lookup,
72
- and optional app-scoped DBOPFS persistence. It installs no independent native
73
- authority; AI and storage dependencies must be available to the host.
74
-
75
- ### Example
76
-
77
- ```javascript
78
- import Chat from '/arcane/entities/Chat.js';
79
-
80
- const chat = new Chat();
81
- chat.addUserMessage('Hello.');
82
- ```
83
-
84
- ## CommunicationMessage.js
85
-
86
- ### Overview
87
-
88
- Normalizes one provider message and exports the supported channel values:
89
- email, SMS, MMS, RCS, WhatsApp, and other.
90
-
91
- ### Example
92
-
93
- ```javascript
94
- import CommunicationMessage from '/arcane/entities/CommunicationMessage.js';
95
-
96
- const message = new CommunicationMessage({
97
- id: 'message-1',
98
- channel: 'email',
99
- body: 'Hello'
100
- });
101
- ```
102
-
103
- ## CommunicationThread.js
104
-
105
- ### Overview
106
-
107
- Normalizes one conversation thread and its `CommunicationMessage` records into
108
- a frozen provider-neutral object.
109
-
110
- ### Example
111
-
112
- ```javascript
113
- import CommunicationThread from '/arcane/entities/CommunicationThread.js';
114
-
115
- const thread = new CommunicationThread({id: 'thread-1', messages: []});
116
- ```
117
-
118
- ## Document.js
119
-
120
- ### Overview
121
-
122
- `DocumentEntity` specializes `FileEntity` for the app-scoped `documents` table.
123
- Its persistence methods require the same DBOPFS lifecycle and ownership proof as
124
- the base file entity.
125
-
126
- ### Example
127
-
128
- ```javascript
129
- import DocumentEntity from '/arcane/entities/Document.js';
130
-
131
- const document = new DocumentEntity();
132
- console.log(document.tableName);
133
- ```
134
-
135
- ## File.js
136
-
137
- ### Overview
138
-
139
- `FileEntity` loads and saves supported file formats through app-scoped DBOPFS
140
- and uses the shared Markdown renderer where appropriate.
141
-
142
- ### Example
143
-
144
- ```javascript
145
- import FileEntity from '/arcane/entities/File.js';
146
-
147
- const file = new FileEntity();
148
- console.log(file.fileName);
149
- ```
150
-
151
- ## Image.js
152
-
153
- ### Overview
154
-
155
- `ImageEntity` extends `FileEntity` with image validation, upload, base64 data
156
- URLs, Blob URLs, and explicit Blob URL revocation.
157
-
158
- ### Example
159
-
160
- ```javascript
161
- import ImageEntity from '/arcane/entities/Image.js';
162
-
163
- console.log(typeof ImageEntity.prototype.revokeBlobURL);
164
- ```
165
-
166
- ## IntentEnvelope.js
167
-
168
- ### Overview
169
-
170
- Creates immutable canonical v1 intent records while keeping trusted provenance
171
- separate from hostile payload input. Serialization, rehydration, and the audit
172
- projection are bounded and deterministic.
173
-
174
- ### Example
175
-
176
- ```javascript
177
- import {
178
- createIntentEnvelope,
179
- serializeIntentEnvelope
180
- } from '/arcane/entities/IntentEnvelope.js';
181
-
182
- const intent = createIntentEnvelope(
183
- {originalExpression: 'Summarize the record.', normalizedGoal: 'summarize'},
184
- {source: 'example'}
185
- );
186
-
187
- console.log(serializeIntentEnvelope(intent));
188
- ```
189
-
190
- ## Preference.js
191
-
192
- ### Overview
193
-
194
- Defines preference types, option normalization, value validation, JSON
195
- projection, and schema normalization for shared stores and forms.
196
-
197
- ### Example
198
-
199
- ```javascript
200
- import Preference from '/arcane/entities/Preference.js';
201
-
202
- const preference = new Preference({
203
- key: 'density',
204
- type: 'select',
205
- defaultValue: 'comfortable',
206
- options: ['comfortable', 'compact']
207
- });
208
- ```
209
-
210
- ## TerminalSession.js
211
-
212
- ### Overview
213
-
214
- Normalizes terminal session id, shell, state, updates, and JSON projection. The
215
- entity does not start a process; `TerminalClient` owns the native bridge call.
216
-
217
- ### Example
218
-
219
- ```javascript
220
- import TerminalSession from '/arcane/entities/TerminalSession.js';
221
-
222
- console.log(TerminalSession.shell('auto'));
223
- ```
224
-
225
- ## Theme.js
226
-
227
- ### Overview
228
-
229
- Owns the shared light/dark semantic token sets, color conversion, JSON
230
- projection, DOM application, and clearing. Token work is cross-host; `apply()`
231
- and `clear()` require a document root.
232
-
233
- ### Example
234
-
235
- ```javascript
236
- import Theme, {arcaneDarkThemeTokens} from '/arcane/entities/Theme.js';
237
-
238
- const theme = new Theme({name: 'example', tokens: arcaneDarkThemeTokens});
239
- console.log(theme.toJSON());
240
- ```
241
-
242
- ## TWiNPolicyDecision.js
243
-
244
- ### Overview
245
-
246
- Creates immutable canonical v1 policy decisions with trusted provenance,
247
- bounded serialization, rehydration, and a target/value-redacted audit view.
248
-
249
- ### Example
250
-
251
- ```javascript
252
- import {
253
- createTWiNPolicyDecision,
254
- twinPolicyDecisionAuditProjection
255
- } from '/arcane/entities/TWiNPolicyDecision.js';
256
-
257
- const decision = createTWiNPolicyDecision(
258
- {layer: 'application', policy: 'example', outcome: 'allow'},
259
- {source: 'example'}
260
- );
261
-
262
- console.log(twinPolicyDecisionAuditProjection(decision));
263
- ```
264
-
265
- ## User.js
266
-
267
- ### Overview
268
-
269
- Owns persisted user preference/profile fields, explicit-preference updates,
270
- fresh reads, saves, and JSON projection. It installs `window.user` after its
271
- DBLS/DBOPFS lifecycle and emits `user-entity-loaded`.
272
-
273
- ### Example
274
-
275
- ```javascript
276
- import UserEntity from '/arcane/entities/User.js';
277
-
278
- console.log(typeof UserEntity.prototype.toJSON);
279
- ```
280
-
281
- ## Weather.js
282
-
283
- ### Overview
284
-
285
- Exports four frozen normalized records: `WeatherLocation`,
286
- `WeatherObservation`, `WeatherDay`, and `WeatherSnapshot`.
287
-
288
- ### Example
289
-
290
- ```javascript
291
- import {WeatherLocation} from '/arcane/entities/Weather.js';
292
-
293
- const location = new WeatherLocation({name: 'Houston'});
294
- console.log(location.toJSON());
295
- ```
296
-
297
- ## Availability and protocol details
298
-
299
- Entity modules are delivered by browser ESM at `/arcane/entities/`. They do not
300
- cross Core by being imported. Individual persistence, AI, DOM, or native calls
301
- cross the dependency named by that entity. See
302
- [availability and normalization](availability-and-normalization.md) and the
303
- [deep protocol guide](protocols.md).