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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arcane-os",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
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",
@@ -13,6 +13,8 @@
13
13
  "./toolchain": "./src/toolchain.mjs",
14
14
  "./events": "./src/events.mjs",
15
15
  "./event-manager": "./src/event-manager.mjs",
16
+ "./preference-store": "./runtime/arcane/modules/PreferenceStore.js",
17
+ "./speech-playback": "./runtime/arcane/modules/SpeechPlayback.js",
16
18
  "./ai/browser-wasm": "./browser-runtime/ai/browser-wasm.mjs",
17
19
  "./ai/browser-speech": "./browser-runtime/ai/browser-speech.mjs",
18
20
  "./mail": "./src/mail-api.mjs",
@@ -23,7 +25,6 @@
23
25
  "./integrated-provider": "./src/integrated-provider-loader.mjs",
24
26
  "./packager": "./src/packager/core.mjs",
25
27
  "./release-bundle": "./src/release-bundle.mjs",
26
- "./runtime/manifest": "./runtime/ARCANE_RUNTIME_RELEASE.json",
27
28
  "./schemas/arcane-app.json": "./schemas/arcane-app.schema.json",
28
29
  "./schemas/arcane-package.json": "./schemas/arcane-package.schema.json",
29
30
  "./schemas/arcane-app-bundle.json": "./schemas/arcane-app-bundle.schema.json",
@@ -43,7 +44,6 @@
43
44
  "src/",
44
45
  "runtime/",
45
46
  "schemas/",
46
- "docs/",
47
47
  "README.md",
48
48
  "CHANGELOG.md",
49
49
  "LICENSE",
@@ -57,9 +57,8 @@
57
57
  "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/mail-cli.test.mjs test/mail-runtime.test.mjs test/mail-server.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",
58
58
  "test:integration": "node ./bin/arcane-test.mjs test/integrated-shared.test.mjs test/integrated-workspace.test.mjs test/mail-browser.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",
59
59
  "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",
60
- "check": "node tools/check-source.mjs && node tools/runtime-manifest.mjs --verify && node tools/sdk-browser-runtime-manifest.mjs --verify && npm test",
61
- "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",
62
- "runtime:verify": "node tools/runtime-manifest.mjs --verify",
60
+ "check": "node tools/check-source.mjs && npm test",
61
+ "check:release": "node tools/check-source.mjs --package-only && npm run test:release",
63
62
  "runtime:sync": "node tools/sync-runtime.mjs",
64
63
  "pack:local": "npm pack --ignore-scripts",
65
64
  "pack:inspect": "npm pack --dry-run --json",
@@ -43,7 +43,6 @@
43
43
  place-items:center;
44
44
  width:2.45rem;
45
45
  height:2.45rem;
46
- overflow:hidden;
47
46
  border:1px solid color-mix(in srgb,var(--app-bar-accent) 74%,white);
48
47
  border-radius:.5rem;
49
48
  color:var(--app-bar-active-text);
@@ -52,11 +51,9 @@
52
51
  }
53
52
 
54
53
  .product-name{
55
- overflow:hidden;
56
54
  font:750 .98rem/1.15 system-ui,sans-serif;
57
55
  letter-spacing:.035em;
58
- text-overflow:ellipsis;
59
- white-space:nowrap;
56
+ overflow-wrap:anywhere;
60
57
  }
61
58
 
62
59
  .routes{
@@ -89,7 +86,7 @@
89
86
  background:transparent;
90
87
  font:680 .8rem/1 system-ui,sans-serif;
91
88
  text-decoration:none;
92
- white-space:nowrap;
89
+ overflow-wrap:anywhere;
93
90
  }
94
91
 
95
92
  #generatedNavigation a:hover,
@@ -195,16 +192,7 @@
195
192
  }
196
193
 
197
194
  @media(max-width:30rem){
198
- .product-name{
199
- max-width:9rem;
200
- }
201
-
202
- .status-text{
203
- max-width:6rem;
204
- overflow:hidden;
205
- text-overflow:ellipsis;
206
- white-space:nowrap;
207
- }
195
+ .product-name,.status-text{overflow-wrap:anywhere;}
208
196
  }
209
197
  </style>
210
198
 
@@ -37,7 +37,7 @@
37
37
  min-width:0;
38
38
  width:100%;
39
39
  height:100%;
40
- overflow:hidden;
40
+ overflow:visible;
41
41
  color:var(--assistant-text);
42
42
  background:var(--assistant-surface);
43
43
  border-inline-start:1px solid var(--assistant-border);
@@ -68,11 +68,9 @@
68
68
 
69
69
  .subtitle{
70
70
  margin:.18rem 0 0;
71
- overflow:hidden;
72
71
  color:var(--assistant-muted);
73
72
  font:.78rem/1.35 system-ui,sans-serif;
74
- text-overflow:ellipsis;
75
- white-space:nowrap;
73
+ overflow-wrap:anywhere;
76
74
  }
77
75
 
78
76
  .subtitle:empty{
@@ -320,12 +318,12 @@
320
318
  let opened=host.hasAttribute('data-open');
321
319
  let operationSequence=0;
322
320
  let destroyed=false;
323
- const reservedProjectionKeys=Object.freeze([
321
+ const reservedProjectionKeys=[
324
322
  'occurrenceId',
325
323
  'arcaneSource',
326
324
  'instanceId',
327
325
  'operationId'
328
- ]);
326
+ ];
329
327
 
330
328
  host.open=open;
331
329
  host.close=close;
@@ -660,20 +658,22 @@
660
658
  if(destroyed){
661
659
  return false;
662
660
  }
663
- const normalized=String(message??'').trim();
661
+ const normalized=String(message??'');
664
662
 
665
- if(!normalized){
663
+ if(!normalized.trim()){
666
664
  return false;
667
665
  }
668
666
 
669
- return emit('assistant-send',{...compatibilityDetail(context),message:normalized,assistant:host},{messageLength:normalized.length,layout:host.layout},{cancelable:true,operationId:nextOperationId('send')});
667
+ const completeContext=compatibilityDetail(context);
668
+ return emit('assistant-send',{...completeContext,message:normalized,assistant:host},{...completeContext,message:normalized,layout:host.layout},{cancelable:true,operationId:nextOperationId('send')});
670
669
  }
671
670
 
672
671
  function clear(detail={}){
673
672
  if(destroyed){
674
673
  return false;
675
674
  }
676
- return emit('assistant-clear',{...compatibilityDetail(detail),assistant:host},{layout:host.layout},{cancelable:true,operationId:nextOperationId('clear')});
675
+ const completeDetail=compatibilityDetail(detail);
676
+ return emit('assistant-clear',{...completeDetail,assistant:host},{...completeDetail,layout:host.layout},{cancelable:true,operationId:nextOperationId('clear')});
677
677
  }
678
678
 
679
679
  function onHostAction(event){
@@ -6,6 +6,6 @@ for(const value of definitions){const button=document.createElement('button');bu
6
6
  keys.addEventListener('click',event=>{const value=event.target.closest('[data-value]')?.dataset.value;if(!value)return;if(value==='C'){input.value='';result.textContent='0';status.textContent='';return}if(value==='⌫'){input.value=input.value.slice(0,-1);return}if(value==='='){calculate();return}input.value+=value;input.focus()},{signal:lifecycleController.signal});input.addEventListener('keydown',event=>{if(event.key==='Enter'){event.preventDefault();calculate()}},{signal:lifecycleController.signal});
7
7
  function nextOperationId(){operationSequence+=1;return `${events.descriptor.instanceId}:calculate:${operationSequence}`}
8
8
  function emit(type,detail={},publicDetail={},operationId=null){if(destroyed)return false;const publication=events.dispatch(type,detail,{publicDetail,operationId});return projectArcaneDOMEvent(host,publication.occurrence,{bubbles:true,composed:true})}
9
- function calculate(){if(destroyed)return false;const operationId=nextOperationId();try{const calculation=engine.calculate(input.value);result.textContent=new Intl.NumberFormat(undefined,{maximumSignificantDigits:14}).format(calculation.result);status.textContent='';emit('calculation-complete',{calculation},{succeeded:true},operationId)}catch(error){const code=String(error?.code||'ARCANE_CALCULATOR_EXPRESSION_EVALUATION_FAILED'),reason='expression-evaluation-failed';status.textContent=error.message;emit('calculation-error',{error,expression:input.value,code,reason},{code,reason,expressionLength:input.value.length},operationId)}}
9
+ function calculate(){if(destroyed)return false;const operationId=nextOperationId();try{const calculation=engine.calculate(input.value);result.textContent=String(calculation.result);status.textContent='';emit('calculation-complete',{calculation},{calculation},operationId)}catch(error){const code=String(error?.code||'ARCANE_CALCULATOR_EXPRESSION_EVALUATION_FAILED'),reason='expression-evaluation-failed',detail={error,expression:input.value,code,reason};status.textContent=error.message;emit('calculation-error',detail,detail,operationId)}}
10
10
  function destroy(){if(destroyed)return false;destroyed=true;lifecycleController.abort('calculator-destroyed');engine.destroy();events.dispose();host.ready=false;return true}
11
11
  host.calculate=calculate;host.destroy=destroy;host.ready=true;emit('calculator-ready',{}, {ready:true});</script>