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.
- package/CHANGELOG.md +32 -0
- package/README.md +33 -8
- package/browser-runtime/ai/browser-wasm-llm-provider.mjs +11 -10
- package/browser-runtime/ai/browser-wllama-runtime.mjs +2 -1
- package/browser-runtime/ai/model-controller.mjs +6 -5
- package/browser-runtime/ai/speech-worker-client.mjs +45 -3
- package/browser-runtime/event-manager.mjs +2 -1
- package/browser-runtime/logging.mjs +58 -0
- package/docs/architecture.md +1 -1
- package/docs/reference/README.md +9 -7
- package/docs/reference/ai/browser-speech.md +90 -1
- package/docs/reference/ai/twin-cloud.md +1 -1
- package/docs/reference/cli.md +1 -1
- package/docs/reference/core/arcane-ai-contracts.md +1 -1
- package/docs/reference/inventory/package-api.json +34 -6
- package/docs/reference/inventory/runtime-components.json +1 -1
- package/docs/reference/inventory/runtime-modules.json +4 -4
- package/docs/reference/protocols.md +5 -5
- package/docs/reference/runtime-modules.md +70 -15
- package/docs/reference/sdk-api.md +120 -11
- package/package.json +4 -3
- package/runtime/arcane/components/app-bar.html +3 -1
- package/runtime/arcane/components/chat.html +22 -20
- package/runtime/arcane/components/dashboard-config.html +3 -1
- package/runtime/arcane/components/data-maintenance.html +4 -2
- package/runtime/arcane/components/data-view.html +3 -1
- package/runtime/arcane/components/directory-picker.html +3 -1
- package/runtime/arcane/components/file-manager.html +11 -9
- package/runtime/arcane/components/header.html +5 -3
- package/runtime/arcane/components/markdown-document.html +3 -1
- package/runtime/arcane/components/markdown-editor.html +4 -2
- package/runtime/arcane/components/modal.html +3 -1
- package/runtime/arcane/components/screen-capture.html +4 -2
- package/runtime/arcane/components/speech.html +10 -8
- package/runtime/arcane/components/table.html +3 -1
- package/runtime/arcane/components/voice-transcription.html +8 -6
- package/runtime/arcane/entities/Chat.js +5 -4
- package/runtime/arcane/entities/User.js +2 -1
- package/runtime/arcane/modules/AI.js +442 -292
- package/runtime/arcane/modules/AIProviderRuntime.js +359 -82
- package/runtime/arcane/modules/CommunicationAppController.js +2 -1
- package/runtime/arcane/modules/ComponentContracts.js +3 -2
- package/runtime/arcane/modules/ConversationTimebox.js +2 -1
- package/runtime/arcane/modules/DBOPFS.js +5 -4
- package/runtime/arcane/modules/Errors.js +3 -14
- package/runtime/arcane/modules/HTMLImport.js +4 -3
- package/runtime/arcane/modules/LocalAIReadinessController.js +2 -1
- package/runtime/arcane/modules/MD.js +3 -2
- package/runtime/arcane/modules/MailOutbox.mjs +2 -1
- package/runtime/arcane/modules/PersistentAIChatSession.js +2 -1
- package/runtime/arcane/modules/ScreenCapture.js +2 -1
- package/runtime/arcane/modules/SpeechPlayback.js +206 -40
- package/runtime/arcane/modules/ThemeBootstrap.js +3 -2
- package/runtime/arcane/modules/ToolCallRouter.js +2 -1
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
822
|
+
arcaneLogging.warn(`UserEntity.explicit setter skipping invalid field ${key}: ${e.message}`);
|
|
822
823
|
}
|
|
823
824
|
}
|
|
824
825
|
|