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
package/src/cli/main.mjs
CHANGED
|
@@ -45,7 +45,7 @@ const FLAG_OPTIONS=new Set([
|
|
|
45
45
|
const REPORTABLE_COMMANDS=new Set([
|
|
46
46
|
'build','bundle','check','dev','doctor','help','import-map','init','mail',
|
|
47
47
|
'native-doctor','native-prepare','new','package','repo','run','targets','test',
|
|
48
|
-
'update-check','verify','verify-bundle','version'
|
|
48
|
+
'update-check','upgrade','verify','verify-bundle','version'
|
|
49
49
|
]);
|
|
50
50
|
|
|
51
51
|
export const HELP_TEXT=`Arcane OS application SDK ${SDK_VERSION}
|
|
@@ -53,6 +53,7 @@ export const HELP_TEXT=`Arcane OS application SDK ${SDK_VERSION}
|
|
|
53
53
|
Usage:
|
|
54
54
|
${CLI_NAME} new <id> [--path <directory>] [--display-name <name>] [--target <target>] [--git]
|
|
55
55
|
${CLI_NAME} init [id] [--workspace <directory>] [--display-name <name>] [--target <target>]
|
|
56
|
+
${CLI_NAME} upgrade [--workspace <directory>] [--app <id>]
|
|
56
57
|
${CLI_NAME} doctor [--workspace <directory>] [--arcane-root <directory>]
|
|
57
58
|
${CLI_NAME} import-map [--workspace <directory>] [--app <id>]
|
|
58
59
|
${CLI_NAME} dev [--app <id>] [--host 127.0.0.1] [--port 8000] [--sdk-runtime-source <sdk-root>]
|
|
@@ -187,13 +188,10 @@ function readRequestTimeout(value,defaultValue){
|
|
|
187
188
|
return timeout;
|
|
188
189
|
}
|
|
189
190
|
|
|
190
|
-
const MAX_MAIL_SECRET_BYTES=8_192;
|
|
191
|
-
const MAX_MAIL_REPORT_BYTES=52*1024*1024;
|
|
192
|
-
|
|
193
191
|
function normalizedSecret(value){
|
|
194
192
|
const secret=String(value??'').trim();
|
|
195
|
-
if(!secret
|
|
196
|
-
usage(
|
|
193
|
+
if(!secret){
|
|
194
|
+
usage('Mail credential input must not be empty.');
|
|
197
195
|
}
|
|
198
196
|
return secret;
|
|
199
197
|
}
|
|
@@ -201,7 +199,6 @@ function normalizedSecret(value){
|
|
|
201
199
|
function readPipedMailSecret(input,signal){
|
|
202
200
|
return new Promise((resolve,reject)=>{
|
|
203
201
|
const chunks=[];
|
|
204
|
-
let byteLength=0;
|
|
205
202
|
let settled=false;
|
|
206
203
|
|
|
207
204
|
const cleanup=function cleanupMailSecretRead(){
|
|
@@ -217,16 +214,7 @@ function readPipedMailSecret(input,signal){
|
|
|
217
214
|
callback(value);
|
|
218
215
|
};
|
|
219
216
|
const onData=function collectMailSecretChunk(chunk){
|
|
220
|
-
|
|
221
|
-
byteLength+=bytes.byteLength;
|
|
222
|
-
if(byteLength>MAX_MAIL_SECRET_BYTES+2){
|
|
223
|
-
finish(reject,new ArcaneError(
|
|
224
|
-
ERROR_CODES.usage,
|
|
225
|
-
`Mail credential input cannot exceed ${MAX_MAIL_SECRET_BYTES} UTF-8 bytes.`
|
|
226
|
-
));
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
chunks.push(bytes);
|
|
217
|
+
chunks.push(Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk));
|
|
230
218
|
};
|
|
231
219
|
const onEnd=function finishPipedMailSecret(){
|
|
232
220
|
try{
|
|
@@ -310,10 +298,7 @@ function readMaskedMailSecret(input,output,signal,label,stdinOption){
|
|
|
310
298
|
continue;
|
|
311
299
|
}
|
|
312
300
|
if(character>=' '&&character!=='\u007f'){
|
|
313
|
-
|
|
314
|
-
if(Buffer.byteLength(candidate,'utf8')<=MAX_MAIL_SECRET_BYTES){
|
|
315
|
-
secret=candidate;
|
|
316
|
-
}
|
|
301
|
+
secret+=character;
|
|
317
302
|
}
|
|
318
303
|
}
|
|
319
304
|
};
|
|
@@ -340,7 +325,6 @@ export function readMailSecretInput({input=process.stdin,output=process.stderr,
|
|
|
340
325
|
function readPipedMailReport(input,signal){
|
|
341
326
|
return new Promise((resolve,reject)=>{
|
|
342
327
|
const chunks=[];
|
|
343
|
-
let byteLength=0;
|
|
344
328
|
let settled=false;
|
|
345
329
|
|
|
346
330
|
const cleanup=function cleanupMailReportRead(){
|
|
@@ -356,16 +340,7 @@ function readPipedMailReport(input,signal){
|
|
|
356
340
|
callback(value);
|
|
357
341
|
};
|
|
358
342
|
const onData=function collectMailReportChunk(chunk){
|
|
359
|
-
|
|
360
|
-
byteLength+=bytes.byteLength;
|
|
361
|
-
if(byteLength>MAX_MAIL_REPORT_BYTES){
|
|
362
|
-
finish(reject,new ArcaneError(
|
|
363
|
-
ERROR_CODES.usage,
|
|
364
|
-
`Mail report input cannot exceed ${MAX_MAIL_REPORT_BYTES} UTF-8 bytes.`
|
|
365
|
-
));
|
|
366
|
-
return;
|
|
367
|
-
}
|
|
368
|
-
chunks.push(bytes);
|
|
343
|
+
chunks.push(Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk));
|
|
369
344
|
};
|
|
370
345
|
const onEnd=function finishPipedMailReport(){
|
|
371
346
|
try{
|
|
@@ -468,6 +443,9 @@ function operationOptions(command,parsed,cwd){
|
|
|
468
443
|
if(flags.has('overwrite')&&command!=='bundle'){
|
|
469
444
|
usage('--overwrite is supported only by bundle.');
|
|
470
445
|
}
|
|
446
|
+
if(flags.has('skip-tests')&&command!=='check'){
|
|
447
|
+
usage('--skip-tests is supported only by check.');
|
|
448
|
+
}
|
|
471
449
|
const mailOnlyOptions=['profile','from','origin','allow-to','report-key','request-timeout'];
|
|
472
450
|
if(command!=='mail'&&mailOnlyOptions.some(name=>values[name]!==undefined)){
|
|
473
451
|
usage(`Mail options are supported only by the mail command.`);
|
|
@@ -515,6 +493,10 @@ function operationOptions(command,parsed,cwd){
|
|
|
515
493
|
noExtraPositionals(command,positionals);
|
|
516
494
|
return common;
|
|
517
495
|
}
|
|
496
|
+
if(command==='upgrade'){
|
|
497
|
+
noExtraPositionals(command,positionals);
|
|
498
|
+
return common;
|
|
499
|
+
}
|
|
518
500
|
if(command==='dev'){
|
|
519
501
|
noExtraPositionals(command,positionals);
|
|
520
502
|
return {
|
|
@@ -719,28 +701,28 @@ function operationOptions(command,parsed,cwd){
|
|
|
719
701
|
usage(`Unknown command. Run ${CLI_NAME} --help for usage.`);
|
|
720
702
|
}
|
|
721
703
|
|
|
722
|
-
const NATIVE_REQUESTS=
|
|
723
|
-
'windows-x64':
|
|
704
|
+
const NATIVE_REQUESTS={
|
|
705
|
+
'windows-x64':{
|
|
724
706
|
platform:'windows',architecture:'x64',defaultFormat:'exe',formats:new Set(['exe']),
|
|
725
707
|
defaultSigning:'unsigned-local-test',defaultProfileId:null,
|
|
726
708
|
signingModes:new Set(['unsigned-local-test'])
|
|
727
|
-
}
|
|
728
|
-
'linux-x64':
|
|
709
|
+
},
|
|
710
|
+
'linux-x64':{
|
|
729
711
|
platform:'linux',architecture:'x64',defaultFormat:'deb',formats:new Set(['deb']),
|
|
730
712
|
defaultSigning:'unsigned-local-test',defaultProfileId:null,
|
|
731
713
|
signingModes:new Set(['unsigned-local-test'])
|
|
732
|
-
}
|
|
733
|
-
'linux-arm64':
|
|
714
|
+
},
|
|
715
|
+
'linux-arm64':{
|
|
734
716
|
platform:'linux',architecture:'arm64',defaultFormat:'deb',formats:new Set(['deb']),
|
|
735
717
|
defaultSigning:'unsigned-local-test',defaultProfileId:null,
|
|
736
718
|
signingModes:new Set(['unsigned-local-test'])
|
|
737
|
-
}
|
|
738
|
-
'android-arm64':
|
|
719
|
+
},
|
|
720
|
+
'android-arm64':{
|
|
739
721
|
platform:'android',architecture:'arm64',defaultFormat:'apk',formats:new Set(['apk']),
|
|
740
722
|
defaultSigning:'development',defaultProfileId:'arcane-android-development-v1',
|
|
741
723
|
signingModes:new Set(['development'])
|
|
742
|
-
}
|
|
743
|
-
}
|
|
724
|
+
}
|
|
725
|
+
};
|
|
744
726
|
|
|
745
727
|
function portableRequestDefinition(){
|
|
746
728
|
const platform=process.platform==='win32'?'windows':process.platform;
|
|
@@ -781,13 +763,13 @@ export function createNativeTargetRequest({target,format,signing}={}){
|
|
|
781
763
|
+`Expected ${[...definition.signingModes].join(', ')}.`
|
|
782
764
|
);
|
|
783
765
|
}
|
|
784
|
-
return
|
|
766
|
+
return {
|
|
785
767
|
target,
|
|
786
768
|
platform:definition.platform,
|
|
787
769
|
architecture:definition.architecture,
|
|
788
770
|
format:selectedFormat,
|
|
789
|
-
signing:
|
|
790
|
-
}
|
|
771
|
+
signing:{mode:signingMode,profileId:definition.defaultProfileId}
|
|
772
|
+
};
|
|
791
773
|
}
|
|
792
774
|
|
|
793
775
|
async function pairNativeProvider(command,options,loadProvider,{signal,onEvent}={}){
|
|
@@ -811,7 +793,6 @@ async function pairNativeProvider(command,options,loadProvider,{signal,onEvent}=
|
|
|
811
793
|
return {
|
|
812
794
|
...options,
|
|
813
795
|
nativeBuilder:loaded.nativeBuilder,
|
|
814
|
-
providerGeneration:loaded.providerGeneration,
|
|
815
796
|
toolchainRoot:loaded.toolchainRoot,
|
|
816
797
|
targetRequest
|
|
817
798
|
};
|
package/src/constants.mjs
CHANGED
|
@@ -14,18 +14,17 @@ export const ARCANE_PROTOCOL='arcane/1';
|
|
|
14
14
|
export const CLI_EVENT_PROTOCOL='arcane-cli-events/1';
|
|
15
15
|
export const TARGET_ADAPTER_PROTOCOL='arcane-target-adapter/1';
|
|
16
16
|
export const ARCANE_MACHINE_BUNDLE_VERSION='0.8.12';
|
|
17
|
-
export const ARCANE_UPSTREAM_COMMIT='c540014afe69f14cf5ae60493b7295f36dbcec64';
|
|
18
17
|
export const ARCANE_UPSTREAM_REPOSITORY='https://github.com/TheWizardNexus/ARCANE-OS.git';
|
|
19
18
|
|
|
20
19
|
export const SDK_ROOT=path.resolve(path.dirname(fileURLToPath(import.meta.url)),'..');
|
|
21
20
|
export const RUNTIME_ROOT=path.join(SDK_ROOT,'runtime');
|
|
22
21
|
|
|
23
|
-
export const OUTPUT_MODES=
|
|
24
|
-
export const TARGET_IDS=
|
|
22
|
+
export const OUTPUT_MODES=['human','json','ndjson'];
|
|
23
|
+
export const TARGET_IDS=[
|
|
25
24
|
'browser',
|
|
26
25
|
'portable',
|
|
27
26
|
'windows-x64',
|
|
28
27
|
'linux-x64',
|
|
29
28
|
'linux-arm64',
|
|
30
29
|
'android-arm64'
|
|
31
|
-
]
|
|
30
|
+
];
|