arcane-os 0.5.13 → 0.5.15

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 (55) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +33 -8
  3. package/browser-runtime/ai/browser-wasm-llm-provider.mjs +11 -10
  4. package/browser-runtime/ai/browser-wllama-runtime.mjs +2 -1
  5. package/browser-runtime/ai/model-controller.mjs +6 -5
  6. package/browser-runtime/ai/speech-worker-client.mjs +45 -3
  7. package/browser-runtime/event-manager.mjs +2 -1
  8. package/browser-runtime/logging.mjs +58 -0
  9. package/docs/architecture.md +1 -1
  10. package/docs/reference/README.md +9 -7
  11. package/docs/reference/ai/browser-speech.md +90 -1
  12. package/docs/reference/ai/twin-cloud.md +1 -1
  13. package/docs/reference/cli.md +1 -1
  14. package/docs/reference/core/arcane-ai-contracts.md +1 -1
  15. package/docs/reference/inventory/package-api.json +34 -6
  16. package/docs/reference/inventory/runtime-components.json +1 -1
  17. package/docs/reference/inventory/runtime-modules.json +4 -4
  18. package/docs/reference/protocols.md +5 -5
  19. package/docs/reference/runtime-modules.md +70 -15
  20. package/docs/reference/sdk-api.md +120 -11
  21. package/package.json +4 -3
  22. package/runtime/arcane/components/app-bar.html +3 -1
  23. package/runtime/arcane/components/chat.html +22 -20
  24. package/runtime/arcane/components/dashboard-config.html +3 -1
  25. package/runtime/arcane/components/data-maintenance.html +4 -2
  26. package/runtime/arcane/components/data-view.html +3 -1
  27. package/runtime/arcane/components/directory-picker.html +3 -1
  28. package/runtime/arcane/components/file-manager.html +11 -9
  29. package/runtime/arcane/components/header.html +5 -3
  30. package/runtime/arcane/components/markdown-document.html +3 -1
  31. package/runtime/arcane/components/markdown-editor.html +4 -2
  32. package/runtime/arcane/components/modal.html +3 -1
  33. package/runtime/arcane/components/screen-capture.html +4 -2
  34. package/runtime/arcane/components/speech.html +10 -8
  35. package/runtime/arcane/components/table.html +3 -1
  36. package/runtime/arcane/components/voice-transcription.html +8 -6
  37. package/runtime/arcane/entities/Chat.js +5 -4
  38. package/runtime/arcane/entities/User.js +2 -1
  39. package/runtime/arcane/modules/AI.js +442 -292
  40. package/runtime/arcane/modules/AIProviderRuntime.js +359 -82
  41. package/runtime/arcane/modules/CommunicationAppController.js +2 -1
  42. package/runtime/arcane/modules/ComponentContracts.js +3 -2
  43. package/runtime/arcane/modules/ConversationTimebox.js +2 -1
  44. package/runtime/arcane/modules/DBOPFS.js +5 -4
  45. package/runtime/arcane/modules/Errors.js +3 -14
  46. package/runtime/arcane/modules/HTMLImport.js +4 -3
  47. package/runtime/arcane/modules/LocalAIReadinessController.js +2 -1
  48. package/runtime/arcane/modules/MD.js +3 -2
  49. package/runtime/arcane/modules/MailOutbox.mjs +2 -1
  50. package/runtime/arcane/modules/PersistentAIChatSession.js +2 -1
  51. package/runtime/arcane/modules/ScreenCapture.js +2 -1
  52. package/runtime/arcane/modules/SpeechPlayback.js +206 -40
  53. package/runtime/arcane/modules/ThemeBootstrap.js +3 -2
  54. package/runtime/arcane/modules/ToolCallRouter.js +2 -1
  55. package/src/import-map.mjs +65 -10
@@ -60,6 +60,8 @@
60
60
  </section>
61
61
 
62
62
  <script type="module">
63
+ const {arcaneLogging}=await import('arcane-os/logging');
64
+
63
65
  const completeValue=(value)=>value;
64
66
  const {
65
67
  createArcaneEventSource,
@@ -347,7 +349,7 @@
347
349
  return false;
348
350
  }
349
351
  releaseMicrophone();
350
- console.error('Unable to start recording:',error);
352
+ arcaneLogging.error('Unable to start recording:',error);
351
353
  setState('error',options.messages.startError);
352
354
  return false;
353
355
  }
@@ -497,7 +499,7 @@
497
499
  if(!isCurrentVoiceOperation(generation,'saving')){
498
500
  return false;
499
501
  }
500
- console.error('Unable to save transcription:',error);
502
+ arcaneLogging.error('Unable to save transcription:',error);
501
503
  setState('error',options.messages.saveError);
502
504
  return false;
503
505
  }
@@ -526,7 +528,7 @@
526
528
  );
527
529
  return false;
528
530
  }
529
- console.error('Unable to transcribe recording:',error);
531
+ arcaneLogging.error('Unable to transcribe recording:',error);
530
532
  setState('error',options.messages.transcribeError);
531
533
  return false;
532
534
  }finally{
@@ -634,7 +636,7 @@
634
636
  function recordingError(event){
635
637
  setState('error',options.messages.interrupted);
636
638
  releaseMicrophone();
637
- console.error('Audio recorder error:',event.error||event);
639
+ arcaneLogging.error('Audio recorder error:',event.error||event);
638
640
  }
639
641
 
640
642
  async function completeStream(){
@@ -679,7 +681,7 @@
679
681
  if(!isCurrentVoiceOperation(generation,'completing')){
680
682
  return false;
681
683
  }
682
- console.error('Unable to complete transcription:',error);
684
+ arcaneLogging.error('Unable to complete transcription:',error);
683
685
  setState('error',options.messages.completeError);
684
686
  return false;
685
687
  }
@@ -822,7 +824,7 @@
822
824
  const previousRole=sttRole;
823
825
  sttRole=snapshot.roles.stt;
824
826
  if(sttRole.state==='error'&&previousRole.state!=='error'){
825
- console.error('Arcane transcription runtime failed.',sttRole.error);
827
+ arcaneLogging.error('Arcane transcription runtime failed.',sttRole.error);
826
828
  }
827
829
  sttActivationController.synchronize(sttRole);
828
830
  if(previousRole.state==='ready'&&sttRole.state!=='ready'){
@@ -1,3 +1,4 @@
1
+ import { arcaneLogging } from 'arcane-os/logging';
1
2
  import Is from '../../node_modules/strong-type/index.js';
2
3
  import '../modules/DBOPFS.js';
3
4
  import '../modules/AI.js';
@@ -114,7 +115,7 @@ function structuralToolMessage(call){
114
115
  function storedStructuralToolCalls(value){
115
116
  if(value===undefined) return [];
116
117
  if(!Array.isArray(value)){
117
- console.error('Arcane stored assistant tool calls were not an array and were not retained.');
118
+ arcaneLogging.error('Arcane stored assistant tool calls were not an array and were not retained.');
118
119
  return [];
119
120
  }
120
121
  const result=[];
@@ -122,7 +123,7 @@ function storedStructuralToolCalls(value){
122
123
  try{
123
124
  result.push(copyToolCalls([call])[0]);
124
125
  }catch(error){
125
- console.error(
126
+ arcaneLogging.error(
126
127
  `Arcane stored assistant tool call ${index+1} had no usable user-facing message and was not retained.`,
127
128
  error
128
129
  );
@@ -840,7 +841,7 @@ class ChatEntity{
840
841
  try{
841
842
  return JSON.parse(row);
842
843
  }catch(error){
843
- console.error(
844
+ arcaneLogging.error(
844
845
  `Arcane saved chat row ${index+1} could not be parsed.`,
845
846
  error,
846
847
  row
@@ -951,7 +952,7 @@ ${JSON.stringify(transcript)}`
951
952
  .map(message=>copyCompleteValue(message));
952
953
  const queued=this.#memoryQueue.then(()=>this.#writeMemory(snapshot,request));
953
954
  this.#memoryQueue=queued.catch(()=>{
954
- console.warn('Unable to update chat memory.');
955
+ arcaneLogging.warn('Unable to update chat memory.');
955
956
  return false;
956
957
  });
957
958
  return this.#memoryQueue;
@@ -1,3 +1,4 @@
1
+ import { arcaneLogging } from 'arcane-os/logging';
1
2
  import Is from '../../node_modules/strong-type/index.js';
2
3
  import DBLS from '../modules/DBLS.js';
3
4
  import {
@@ -818,7 +819,7 @@ class UserEntity {
818
819
  try {
819
820
  this[key] = src[key];
820
821
  } catch(e){
821
- console.warn(`UserEntity.explicit setter skipping invalid field ${key}: ${e.message}`);
822
+ arcaneLogging.warn(`UserEntity.explicit setter skipping invalid field ${key}: ${e.message}`);
822
823
  }
823
824
  }
824
825