arcane-os 0.3.1 → 0.3.3
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 +855 -895
- package/browser-runtime/ai/browser-speech-providers.mjs +80 -204
- 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 -148
- package/browser-runtime/ai/speech-worker-runtime.mjs +642 -374
- 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 +113 -69
- 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 +1042 -427
- package/runtime/arcane/modules/AIProviderRuntime.js +618 -359
- 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 +19 -149
- 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 +42 -327
- 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 +48 -66
- 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 +492 -3229
- package/src/process.mjs +5 -10
- package/src/release-bundle.mjs +292 -2405
- package/src/runtime.mjs +76 -396
- package/src/scaffold.mjs +48 -79
- 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 +55 -135
- package/src/testing-loader.mjs +164 -0
- package/src/testing.mjs +1 -1
- package/src/toolchain.mjs +133 -544
- package/src/update-check.mjs +26 -64
- package/src/workspace-operation-lock.mjs +139 -430
- package/src/workspace-runtime.mjs +109 -1558
- 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 -185
- package/docs/reference/ai/browser-speech-package-authority.json +0 -835
- package/docs/reference/ai/browser-speech.md +0 -1295
- 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 -719
- package/docs/reference/runtime-components.md +0 -1366
- package/docs/reference/runtime-entities.md +0 -303
- package/docs/reference/runtime-modules.md +0 -2965
- package/docs/reference/sdk-api.md +0 -6698
- package/docs/roadmap.md +0 -79
- package/docs/work-amplification.md +0 -129
- package/runtime/ARCANE_RUNTIME_RELEASE.json +0 -826
package/src/index.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export {
|
|
2
2
|
ARCANE_MACHINE_BUNDLE_VERSION,
|
|
3
3
|
ARCANE_PROTOCOL,
|
|
4
|
-
ARCANE_UPSTREAM_COMMIT,
|
|
5
4
|
ARCANE_UPSTREAM_REPOSITORY,
|
|
6
5
|
CLI_EVENT_PROTOCOL,
|
|
7
6
|
CLI_NAME,
|
|
@@ -63,7 +62,6 @@ export {
|
|
|
63
62
|
PLAYBACK_RECORD_EVENT,
|
|
64
63
|
PLAYBACK_STARTED_EVENT,
|
|
65
64
|
projectArcaneDOMEvent,
|
|
66
|
-
TIME_TRAVEL_OVERFLOW_EVENT,
|
|
67
65
|
TIME_TRAVEL_SEEK_EVENT
|
|
68
66
|
} from './event-manager.mjs';
|
|
69
67
|
export {runProcess} from './process.mjs';
|
|
@@ -102,8 +100,6 @@ export {
|
|
|
102
100
|
export {
|
|
103
101
|
assertIntegratedNativeToolchain,
|
|
104
102
|
assertIntegratedPortableToolchain,
|
|
105
|
-
assertNativeApplicationToolchainCompatibility,
|
|
106
|
-
assertPortableToolchainCompatibility,
|
|
107
103
|
buildApplication,
|
|
108
104
|
bundleApplication,
|
|
109
105
|
checkApplication,
|
|
@@ -116,6 +112,7 @@ export {
|
|
|
116
112
|
doctorNativeTarget,
|
|
117
113
|
executeOperation,
|
|
118
114
|
initializeApplication,
|
|
115
|
+
upgradeApplication,
|
|
119
116
|
packageApplication,
|
|
120
117
|
planApplication,
|
|
121
118
|
prepareNativeTarget,
|
|
@@ -130,12 +127,21 @@ export {
|
|
|
130
127
|
} from './toolchain.mjs';
|
|
131
128
|
export {createWorkspace,initWorkspace} from './scaffold.mjs';
|
|
132
129
|
export {
|
|
133
|
-
authenticateRuntimeReceipt,
|
|
134
130
|
getSdkRoot,
|
|
131
|
+
listRuntimeFiles,
|
|
135
132
|
loadRuntimeRelease,
|
|
136
|
-
|
|
137
|
-
verifyRuntime
|
|
133
|
+
readRuntimeFile
|
|
138
134
|
} from './runtime.mjs';
|
|
135
|
+
export {
|
|
136
|
+
getSdkBrowserRuntimeRoot,
|
|
137
|
+
listSdkBrowserRuntimeFiles,
|
|
138
|
+
loadSdkBrowserRuntimeRelease,
|
|
139
|
+
readSdkBrowserRuntimeFile
|
|
140
|
+
} from './sdk-browser-runtime.mjs';
|
|
141
|
+
export {
|
|
142
|
+
materializeWorkspaceRuntime,
|
|
143
|
+
materializeWorkspaceRuntimeContent
|
|
144
|
+
} from './workspace-runtime.mjs';
|
|
139
145
|
export {
|
|
140
146
|
discoverApps,
|
|
141
147
|
inspectWorkspaceProfile,
|
|
@@ -145,11 +151,10 @@ export {
|
|
|
145
151
|
} from './workspace.mjs';
|
|
146
152
|
export {materializeInstalledSdkRuntime} from './installed-sdk-runtime.mjs';
|
|
147
153
|
export {startDevServer} from './dev-server.mjs';
|
|
154
|
+
export {startSourceExampleServer} from './source-server.mjs';
|
|
148
155
|
export {
|
|
149
156
|
NATIVE_BUILD_PLAN_PROTOCOL,
|
|
150
157
|
NATIVE_BUILDER_PROTOCOL,
|
|
151
|
-
assertNativeToolchainCompatibility,
|
|
152
|
-
authenticateNativeBuildPlan,
|
|
153
158
|
createNativeBuildPlan,
|
|
154
159
|
executeNativeBuildPlan,
|
|
155
160
|
validateNativeBuilder
|
|
@@ -157,21 +162,15 @@ export {
|
|
|
157
162
|
export {
|
|
158
163
|
APP_DESCRIPTOR_NAME,
|
|
159
164
|
APP_DESCRIPTOR_SCHEMA_VERSION,
|
|
160
|
-
appDescriptorSha256,
|
|
161
165
|
loadAppDescriptor,
|
|
162
166
|
projectNativeDescriptor,
|
|
163
167
|
projectPackageManifest,
|
|
164
168
|
validateAppDescriptor
|
|
165
169
|
} from './app-descriptor.mjs';
|
|
166
170
|
export {
|
|
167
|
-
authenticateAppReleaseAuthority,
|
|
168
|
-
authenticateAppReleaseReceipt,
|
|
169
|
-
authenticateSharedPayloadSnapshot,
|
|
170
171
|
discoverApps as discoverPackagerApps,
|
|
171
172
|
inspectApp,
|
|
172
173
|
packageApp,
|
|
173
|
-
prepareSharedPayloadSnapshot,
|
|
174
|
-
readVerifiedAppReleaseFile,
|
|
175
174
|
verifyApp
|
|
176
175
|
} from './packager/core.mjs';
|
|
177
176
|
export {
|
|
@@ -179,7 +178,6 @@ export {
|
|
|
179
178
|
APP_BUNDLE_EXTENSION,
|
|
180
179
|
APP_BUNDLE_FORMAT,
|
|
181
180
|
APP_BUNDLE_KIND,
|
|
182
|
-
APP_BUNDLE_LIMITS,
|
|
183
181
|
APP_BUNDLE_MANIFEST_NAME,
|
|
184
182
|
APP_BUNDLE_RELEASE_PATH,
|
|
185
183
|
APP_BUNDLE_SCHEMA_VERSION,
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {lstat,readFile,realpath} from 'node:fs/promises';
|
|
1
|
+
import {lstat,readFile,realpath,stat,writeFile} from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import {
|
|
4
|
-
import {verifySdkBrowserRuntime} from './sdk-browser-runtime.mjs';
|
|
5
|
-
import {materializeWorkspaceRuntime} from './workspace-runtime.mjs';
|
|
3
|
+
import {materializeWorkspaceRuntimeContent} from './workspace-runtime.mjs';
|
|
6
4
|
import {withWorkspaceOperationLock} from './workspace-operation-lock.mjs';
|
|
5
|
+
import {createWorkspaceLockDocument} from './templates/workspace-template.mjs';
|
|
7
6
|
import {
|
|
8
7
|
resolveInstalledSdkInstallation,
|
|
9
8
|
resolveSdkPackageDeclaration
|
|
@@ -22,53 +21,53 @@ function throwIfAborted(signal){
|
|
|
22
21
|
throw error;
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
function samePath(left,right){
|
|
26
|
-
const normalize=value=>path.resolve(value).replaceAll('\\','/');
|
|
27
|
-
const a=normalize(left);
|
|
28
|
-
const b=normalize(right);
|
|
29
|
-
return process.platform==='win32'?a.toLowerCase()===b.toLowerCase():a===b;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
24
|
async function canonicalWorkspaceRoot(workspaceRoot){
|
|
33
25
|
if(typeof workspaceRoot!=='string'||!workspaceRoot.trim()){
|
|
34
26
|
fail('workspaceRoot is required to materialize an installed SDK runtime.');
|
|
35
27
|
}
|
|
36
28
|
const requested=path.resolve(workspaceRoot);
|
|
37
29
|
let info;
|
|
38
|
-
try{info=await
|
|
30
|
+
try{info=await stat(requested);}
|
|
39
31
|
catch(error){
|
|
40
32
|
if(error?.code==='ENOENT')fail(`Workspace root does not exist: ${requested}.`);
|
|
41
33
|
throw error;
|
|
42
34
|
}
|
|
43
|
-
if(info.
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
const canonical=await realpath(requested);
|
|
47
|
-
if(!samePath(requested,canonical)){
|
|
48
|
-
fail(`Workspace root must not resolve through another path: ${requested}.`);
|
|
49
|
-
}
|
|
50
|
-
return canonical;
|
|
35
|
+
if(!info.isDirectory())fail(`Workspace root must be a directory: ${requested}.`);
|
|
36
|
+
return realpath(requested);
|
|
51
37
|
}
|
|
52
38
|
|
|
53
39
|
async function readRootPackage(workspaceRoot){
|
|
54
40
|
const packagePath=path.join(workspaceRoot,'package.json');
|
|
55
|
-
let
|
|
56
|
-
try{
|
|
41
|
+
let document;
|
|
42
|
+
try{document=JSON.parse(await readFile(packagePath,'utf8'));}
|
|
57
43
|
catch(error){
|
|
58
44
|
if(error?.code==='ENOENT')fail(`Workspace package.json is missing: ${packagePath}.`);
|
|
59
|
-
|
|
45
|
+
fail(`Workspace package.json is not valid JSON: ${error.message}`);
|
|
60
46
|
}
|
|
61
|
-
|
|
62
|
-
|
|
47
|
+
return document;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async function installedSdkAuthority(canonicalRoot,{sdkPackageSource}={}){
|
|
51
|
+
const declaration=resolveSdkPackageDeclaration(
|
|
52
|
+
await readRootPackage(canonicalRoot),
|
|
53
|
+
sdkPackageSource===undefined?{}:{packageSource:sdkPackageSource}
|
|
54
|
+
);
|
|
55
|
+
const installation=await resolveInstalledSdkInstallation(canonicalRoot,declaration);
|
|
56
|
+
return {declaration,installation};
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async function writeWorkspaceLock(lockPath,lock){
|
|
60
|
+
try{
|
|
61
|
+
const info=await lstat(lockPath);
|
|
62
|
+
if(info.isSymbolicLink()||!info.isFile()){
|
|
63
|
+
fail(`Workspace SDK lock must be a real file: ${lockPath}.`);
|
|
64
|
+
}
|
|
65
|
+
}catch(error){
|
|
66
|
+
if(error?.code!=='ENOENT')throw error;
|
|
63
67
|
}
|
|
64
|
-
|
|
65
|
-
catch(error){fail(`Workspace package.json is not valid JSON: ${error.message}`);}
|
|
68
|
+
await writeFile(lockPath,`${JSON.stringify(lock,null,2)}\n`,'utf8');
|
|
66
69
|
}
|
|
67
70
|
|
|
68
|
-
/**
|
|
69
|
-
* Resolves the workspace's one exact installed Arcane SDK declaration, verifies
|
|
70
|
-
* both physical runtime receipts, and materializes their dynamic inventories.
|
|
71
|
-
*/
|
|
72
71
|
export async function materializeInstalledSdkRuntime({
|
|
73
72
|
workspaceRoot,
|
|
74
73
|
sdkPackageSource,
|
|
@@ -85,46 +84,29 @@ export async function materializeInstalledSdkRuntime({
|
|
|
85
84
|
onEvent,
|
|
86
85
|
workspaceOperationLease
|
|
87
86
|
},async()=>{
|
|
88
|
-
|
|
89
|
-
const
|
|
90
|
-
const declaration=resolveSdkPackageDeclaration(rootPackage,
|
|
91
|
-
sdkPackageSource===undefined?{}:{packageSource:sdkPackageSource});
|
|
92
|
-
const installation=await resolveInstalledSdkInstallation(canonicalRoot,declaration);
|
|
93
|
-
const [runtimeReceipt,sdkBrowserRuntimeReceipt]=await Promise.all([
|
|
94
|
-
verifyRuntime({
|
|
95
|
-
runtimeRoot:installation.runtimeRoot,
|
|
96
|
-
signal,
|
|
97
|
-
onEvent
|
|
98
|
-
}),
|
|
99
|
-
verifySdkBrowserRuntime({
|
|
100
|
-
browserRuntimeRoot:installation.browserRuntimeRoot,
|
|
101
|
-
signal,
|
|
102
|
-
onEvent
|
|
103
|
-
})
|
|
104
|
-
]);
|
|
105
|
-
const workspaceRuntimeReceipt=await materializeWorkspaceRuntime({
|
|
87
|
+
const authority=await installedSdkAuthority(canonicalRoot,{sdkPackageSource});
|
|
88
|
+
const workspaceRuntime=await materializeWorkspaceRuntimeContent({
|
|
106
89
|
workspaceRoot:canonicalRoot,
|
|
107
|
-
runtimeRoot:installation.runtimeRoot,
|
|
108
|
-
|
|
109
|
-
browserRuntimeRoot:installation.browserRuntimeRoot,
|
|
110
|
-
sdkBrowserRuntimeReceipt,
|
|
111
|
-
installedSdkAuthority:Object.freeze({declaration,installation}),
|
|
90
|
+
runtimeRoot:authority.installation.runtimeRoot,
|
|
91
|
+
browserRuntimeRoot:authority.installation.browserRuntimeRoot,
|
|
112
92
|
signal,
|
|
113
93
|
onEvent
|
|
114
94
|
});
|
|
115
|
-
const
|
|
116
|
-
|
|
95
|
+
const lockPath=path.join(canonicalRoot,'arcane.lock.json');
|
|
96
|
+
const lock=createWorkspaceLockDocument({
|
|
97
|
+
dependencyName:authority.installation.dependencyName,
|
|
98
|
+
packageName:authority.installation.packageName,
|
|
99
|
+
packageVersion:authority.installation.packageVersion,
|
|
100
|
+
packageSource:authority.installation.packageSource
|
|
101
|
+
});
|
|
102
|
+
await writeWorkspaceLock(lockPath,lock);
|
|
103
|
+
return {
|
|
117
104
|
schemaVersion:1,
|
|
118
105
|
kind:'arcane-installed-sdk-runtime-materialization',
|
|
119
|
-
status:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
installation,
|
|
125
|
-
runtimeReceipt,
|
|
126
|
-
sdkBrowserRuntimeReceipt,
|
|
127
|
-
workspaceRuntimeReceipt
|
|
128
|
-
});
|
|
106
|
+
status:'materialized',
|
|
107
|
+
installation:authority.installation,
|
|
108
|
+
workspaceRuntime,
|
|
109
|
+
workspaceLock:{path:lockPath,document:lock}
|
|
110
|
+
};
|
|
129
111
|
});
|
|
130
112
|
}
|