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/targets/index.mjs
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
1
2
|
import {packageApp,verifyApp} from '../packager/core.mjs';
|
|
2
3
|
import {startDevServer} from '../dev-server.mjs';
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
TARGET_ADAPTER_PROTOCOL,
|
|
6
|
-
TARGET_IDS
|
|
7
|
-
} from '../constants.mjs';
|
|
4
|
+
import {TARGET_ADAPTER_PROTOCOL,TARGET_IDS} from '../constants.mjs';
|
|
8
5
|
import {ArcaneError,ERROR_CODES,throwIfAborted} from '../errors.mjs';
|
|
9
6
|
import {
|
|
10
7
|
createNativeBuildPlan,
|
|
@@ -12,68 +9,38 @@ import {
|
|
|
12
9
|
validateNativeBuilder
|
|
13
10
|
} from '../native-plan.mjs';
|
|
14
11
|
|
|
15
|
-
const DEFINITIONS=
|
|
16
|
-
|
|
17
|
-
id:'browser',
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
formats:['
|
|
23
|
-
signingModes:['none'],
|
|
24
|
-
reason:null
|
|
25
|
-
}),
|
|
26
|
-
Object.freeze({
|
|
27
|
-
id:'portable',
|
|
28
|
-
displayName:'Portable native application',
|
|
29
|
-
status:'pairing-required',
|
|
30
|
-
platforms:['windows','linux'],
|
|
31
|
-
architectures:['x64','arm64'],
|
|
32
|
-
formats:['portable'],
|
|
33
|
-
signingModes:['unsigned-local-test'],
|
|
34
|
-
reason:'Portable output is available only when explicitly paired to a compatible Arcane OS checkout with --arcane-root.'
|
|
35
|
-
}),
|
|
36
|
-
Object.freeze({
|
|
37
|
-
id:'windows-x64',
|
|
38
|
-
displayName:'Windows x64 executable',
|
|
39
|
-
status:'pairing-required',
|
|
40
|
-
platforms:['windows'],
|
|
41
|
-
architectures:['x64'],
|
|
42
|
-
formats:['exe'],
|
|
43
|
-
signingModes:['unsigned-local-test'],
|
|
44
|
-
reason:'Windows output requires explicit pairing to a compatible Arcane OS checkout with --arcane-root.'
|
|
45
|
-
}),
|
|
46
|
-
Object.freeze({
|
|
47
|
-
id:'linux-x64',
|
|
48
|
-
displayName:'Linux x64 executable',
|
|
49
|
-
status:'pairing-required',
|
|
50
|
-
platforms:['linux'],
|
|
51
|
-
architectures:['x64'],
|
|
52
|
-
formats:['deb'],
|
|
53
|
-
signingModes:['unsigned-local-test'],
|
|
54
|
-
reason:'Linux x64 output requires explicit pairing to a compatible Arcane OS checkout with --arcane-root.'
|
|
55
|
-
}),
|
|
56
|
-
Object.freeze({
|
|
57
|
-
id:'linux-arm64',
|
|
58
|
-
displayName:'Linux ARM64 executable',
|
|
59
|
-
status:'pairing-required',
|
|
60
|
-
platforms:['linux'],
|
|
61
|
-
architectures:['arm64'],
|
|
62
|
-
formats:['deb'],
|
|
12
|
+
const DEFINITIONS=[
|
|
13
|
+
{
|
|
14
|
+
id:'browser',displayName:'Browser/static',status:'available',
|
|
15
|
+
platforms:['any'],architectures:['any'],formats:['directory'],signingModes:['none'],reason:null
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
id:'portable',displayName:'Portable native application',status:'pairing-required',
|
|
19
|
+
platforms:['windows','linux'],architectures:['x64','arm64'],formats:['portable'],
|
|
63
20
|
signingModes:['unsigned-local-test'],
|
|
64
|
-
reason:'
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
id:'
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
signingModes:['
|
|
74
|
-
reason:'
|
|
75
|
-
}
|
|
76
|
-
|
|
21
|
+
reason:'Portable output is available when paired to an Arcane OS native provider.'
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id:'windows-x64',displayName:'Windows x64 executable',status:'pairing-required',
|
|
25
|
+
platforms:['windows'],architectures:['x64'],formats:['exe'],signingModes:['unsigned-local-test'],
|
|
26
|
+
reason:'Windows output requires an Arcane OS native provider.'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id:'linux-x64',displayName:'Linux x64 executable',status:'pairing-required',
|
|
30
|
+
platforms:['linux'],architectures:['x64'],formats:['deb'],signingModes:['unsigned-local-test'],
|
|
31
|
+
reason:'Linux x64 output requires an Arcane OS native provider.'
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id:'linux-arm64',displayName:'Linux ARM64 executable',status:'pairing-required',
|
|
35
|
+
platforms:['linux'],architectures:['arm64'],formats:['deb'],signingModes:['unsigned-local-test'],
|
|
36
|
+
reason:'Linux ARM64 output requires an Arcane OS native provider.'
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id:'android-arm64',displayName:'Android ARM64 application',status:'pairing-required',
|
|
40
|
+
platforms:['android'],architectures:['arm64'],formats:['apk'],signingModes:['development'],
|
|
41
|
+
reason:'Android output requires an Arcane OS native provider and Android development toolchain.'
|
|
42
|
+
}
|
|
43
|
+
];
|
|
77
44
|
|
|
78
45
|
function describe(definition){
|
|
79
46
|
return {
|
|
@@ -88,12 +55,9 @@ function describe(definition){
|
|
|
88
55
|
}
|
|
89
56
|
|
|
90
57
|
function deferredError(definition){
|
|
91
|
-
const state=definition.status==='pairing-required'
|
|
92
|
-
?`requires explicit pairing. ${definition.reason}`
|
|
93
|
-
:`is deferred. ${definition.reason}`;
|
|
94
58
|
return new ArcaneError(
|
|
95
59
|
ERROR_CODES.targetDeferred,
|
|
96
|
-
`Target ${definition.id} ${
|
|
60
|
+
`Target ${definition.id} requires pairing. ${definition.reason}`,
|
|
97
61
|
{details:describe(definition)}
|
|
98
62
|
);
|
|
99
63
|
}
|
|
@@ -103,7 +67,7 @@ function createDeferredAdapter(definition){
|
|
|
103
67
|
throwIfAborted(options?.signal);
|
|
104
68
|
throw deferredError(definition);
|
|
105
69
|
};
|
|
106
|
-
return
|
|
70
|
+
return {
|
|
107
71
|
protocol:TARGET_ADAPTER_PROTOCOL,
|
|
108
72
|
id:definition.id,
|
|
109
73
|
describe:async()=>describe(definition),
|
|
@@ -118,11 +82,11 @@ function createDeferredAdapter(definition){
|
|
|
118
82
|
build:unavailable,
|
|
119
83
|
verify:unavailable,
|
|
120
84
|
run:unavailable
|
|
121
|
-
}
|
|
85
|
+
};
|
|
122
86
|
}
|
|
123
87
|
|
|
124
88
|
const browserDefinition=DEFINITIONS[0];
|
|
125
|
-
const browserAdapter=
|
|
89
|
+
const browserAdapter={
|
|
126
90
|
protocol:TARGET_ADAPTER_PROTOCOL,
|
|
127
91
|
id:'browser',
|
|
128
92
|
describe:async()=>describe(browserDefinition),
|
|
@@ -152,7 +116,7 @@ const browserAdapter=Object.freeze({
|
|
|
152
116
|
appId,
|
|
153
117
|
format,
|
|
154
118
|
signing,
|
|
155
|
-
operations:['
|
|
119
|
+
operations:['validate-workspace','package-selected-app']
|
|
156
120
|
};
|
|
157
121
|
},
|
|
158
122
|
async build({
|
|
@@ -163,75 +127,43 @@ const browserAdapter=Object.freeze({
|
|
|
163
127
|
dryRun=false,
|
|
164
128
|
signal,
|
|
165
129
|
onEvent,
|
|
166
|
-
workspaceOperationLease
|
|
167
|
-
runtimeVerificationState,
|
|
168
|
-
validateSourceState
|
|
130
|
+
workspaceOperationLease
|
|
169
131
|
}={}){
|
|
170
132
|
await this.plan({workspaceRoot,appId,format,signing,signal});
|
|
171
|
-
throwIfAborted(signal);
|
|
172
133
|
const release=await packageApp({
|
|
173
134
|
workspaceRoot,
|
|
174
135
|
appId,
|
|
175
136
|
dryRun,
|
|
176
137
|
signal,
|
|
177
138
|
onEvent,
|
|
178
|
-
workspaceOperationLease
|
|
179
|
-
runtimeVerificationState,
|
|
180
|
-
validateSourceState
|
|
139
|
+
workspaceOperationLease
|
|
181
140
|
});
|
|
182
141
|
return {target:'browser',format,signing,release};
|
|
183
142
|
},
|
|
184
|
-
async verify({workspaceRoot,appId,
|
|
143
|
+
async verify({workspaceRoot,appId,signal,onEvent}={}){
|
|
185
144
|
throwIfAborted(signal);
|
|
186
|
-
return {
|
|
187
|
-
target:'browser',
|
|
188
|
-
release:await verifyApp({
|
|
189
|
-
workspaceRoot,
|
|
190
|
-
appId,
|
|
191
|
-
runtimeVerificationState,
|
|
192
|
-
signal,
|
|
193
|
-
onEvent
|
|
194
|
-
})
|
|
195
|
-
};
|
|
145
|
+
return {target:'browser',release:await verifyApp({workspaceRoot,appId,signal,onEvent})};
|
|
196
146
|
},
|
|
197
|
-
async run({
|
|
198
|
-
workspaceRoot,
|
|
199
|
-
appId,
|
|
200
|
-
runtimeVerificationState,
|
|
201
|
-
host='127.0.0.1',
|
|
202
|
-
port=0,
|
|
203
|
-
signal,
|
|
204
|
-
onEvent
|
|
205
|
-
}={}){
|
|
147
|
+
async run({workspaceRoot,appId,host='127.0.0.1',port=0,signal,onEvent}={}){
|
|
206
148
|
throwIfAborted(signal);
|
|
207
|
-
const
|
|
208
|
-
workspaceRoot,
|
|
209
|
-
appId,
|
|
210
|
-
runtimeVerificationState,
|
|
211
|
-
signal,
|
|
212
|
-
onEvent
|
|
213
|
-
});
|
|
149
|
+
const releaseRoot=path.join(workspaceRoot,'dist',appId);
|
|
214
150
|
const server=await startDevServer({
|
|
215
151
|
workspaceRoot,
|
|
216
152
|
appId,
|
|
217
153
|
mode:'packaged',
|
|
218
|
-
releaseRoot
|
|
219
|
-
releaseReceipt:verified.receipt,
|
|
154
|
+
releaseRoot,
|
|
220
155
|
host,
|
|
221
156
|
port,
|
|
222
157
|
signal,
|
|
223
158
|
onEvent
|
|
224
159
|
});
|
|
225
|
-
return {...server,target:'browser',
|
|
160
|
+
return {...server,target:'browser',releaseRoot};
|
|
226
161
|
}
|
|
227
|
-
}
|
|
162
|
+
};
|
|
228
163
|
|
|
229
164
|
const adapters=new Map([
|
|
230
165
|
['browser',browserAdapter],
|
|
231
|
-
...DEFINITIONS.slice(1).map(definition=>[
|
|
232
|
-
definition.id,
|
|
233
|
-
createDeferredAdapter(definition)
|
|
234
|
-
])
|
|
166
|
+
...DEFINITIONS.slice(1).map(definition=>[definition.id,createDeferredAdapter(definition)])
|
|
235
167
|
]);
|
|
236
168
|
|
|
237
169
|
function nativeDefinition(targetId){
|
|
@@ -249,20 +181,17 @@ function selectedNativeRequest(targetId,targetRequest){
|
|
|
249
181
|
if(targetRequest?.target!==targetId){
|
|
250
182
|
throw new ArcaneError(
|
|
251
183
|
ERROR_CODES.targetUnavailable,
|
|
252
|
-
`The injected native adapter for ${targetId} requires
|
|
184
|
+
`The injected native adapter for ${targetId} requires a matching targetRequest.`
|
|
253
185
|
);
|
|
254
186
|
}
|
|
255
187
|
return targetRequest;
|
|
256
188
|
}
|
|
257
189
|
|
|
258
|
-
function
|
|
259
|
-
if(!
|
|
260
|
-
throw new ArcaneError(
|
|
261
|
-
ERROR_CODES.integrityFailed,
|
|
262
|
-
'An explicit native artifact receipt is required.'
|
|
263
|
-
);
|
|
190
|
+
function selectedArtifact(artifact){
|
|
191
|
+
if(!artifact||typeof artifact!=='object'||Array.isArray(artifact)){
|
|
192
|
+
throw new ArcaneError(ERROR_CODES.usage,'A native artifact is required.');
|
|
264
193
|
}
|
|
265
|
-
return
|
|
194
|
+
return artifact;
|
|
266
195
|
}
|
|
267
196
|
|
|
268
197
|
export function createNativeTargetAdapter({targetId,nativeBuilder}={}){
|
|
@@ -276,7 +205,7 @@ export function createNativeTargetAdapter({targetId,nativeBuilder}={}){
|
|
|
276
205
|
||!Array.isArray(description.targets)||!description.targets.includes(targetId)){
|
|
277
206
|
throw new ArcaneError(
|
|
278
207
|
ERROR_CODES.targetUnavailable,
|
|
279
|
-
`The selected native provider does not
|
|
208
|
+
`The selected native provider does not support target ${targetId}.`
|
|
280
209
|
);
|
|
281
210
|
}
|
|
282
211
|
return description;
|
|
@@ -286,12 +215,11 @@ export function createNativeTargetAdapter({targetId,nativeBuilder}={}){
|
|
|
286
215
|
|
|
287
216
|
async function plan({
|
|
288
217
|
toolchainRoot,
|
|
289
|
-
|
|
218
|
+
toolchain,
|
|
290
219
|
appReleaseRoot,
|
|
291
|
-
|
|
220
|
+
release,
|
|
292
221
|
appDescriptor,
|
|
293
222
|
dependencyReleases,
|
|
294
|
-
providerGeneration,
|
|
295
223
|
minimumCoreVersion,
|
|
296
224
|
protectedRoots,
|
|
297
225
|
outputRoot,
|
|
@@ -303,12 +231,11 @@ export function createNativeTargetAdapter({targetId,nativeBuilder}={}){
|
|
|
303
231
|
return createNativeBuildPlan({
|
|
304
232
|
nativeBuilder:provider,
|
|
305
233
|
toolchainRoot,
|
|
306
|
-
|
|
234
|
+
toolchain,
|
|
307
235
|
appReleaseRoot,
|
|
308
|
-
|
|
236
|
+
release,
|
|
309
237
|
appDescriptor,
|
|
310
238
|
dependencyReleases,
|
|
311
|
-
providerGeneration:providerGeneration??provider.providerGeneration,
|
|
312
239
|
minimumCoreVersion,
|
|
313
240
|
protectedRoots,
|
|
314
241
|
outputRoot,
|
|
@@ -318,23 +245,19 @@ export function createNativeTargetAdapter({targetId,nativeBuilder}={}){
|
|
|
318
245
|
});
|
|
319
246
|
}
|
|
320
247
|
|
|
321
|
-
return
|
|
248
|
+
return {
|
|
322
249
|
protocol:TARGET_ADAPTER_PROTOCOL,
|
|
323
250
|
id:definition.id,
|
|
324
251
|
describe:async()=>{
|
|
325
252
|
await requireProviderTarget();
|
|
326
|
-
return {
|
|
327
|
-
...describe(definition),
|
|
328
|
-
status:'available',
|
|
329
|
-
reason:null
|
|
330
|
-
};
|
|
253
|
+
return {...describe(definition),status:'available',reason:null};
|
|
331
254
|
},
|
|
332
|
-
async doctor({toolchainRoot,
|
|
255
|
+
async doctor({toolchainRoot,toolchain,targetRequest,signal,onEvent}={}){
|
|
333
256
|
throwIfAborted(signal);
|
|
334
257
|
await requireProviderTarget();
|
|
335
258
|
return provider.doctor({
|
|
336
259
|
toolchainRoot,
|
|
337
|
-
|
|
260
|
+
toolchain,
|
|
338
261
|
targetRequest:selectedNativeRequest(targetId,targetRequest),
|
|
339
262
|
signal,
|
|
340
263
|
onEvent
|
|
@@ -355,14 +278,14 @@ export function createNativeTargetAdapter({targetId,nativeBuilder}={}){
|
|
|
355
278
|
throwIfAborted(options.signal);
|
|
356
279
|
await requireProviderTarget();
|
|
357
280
|
const selectedPlan=nativePlan??await plan(options);
|
|
358
|
-
const
|
|
281
|
+
const artifact=await executeNativeBuildPlan(selectedPlan,{
|
|
359
282
|
expectedNativeBuilder:provider,
|
|
360
283
|
expectedTarget:targetId,
|
|
361
284
|
signal:options.signal,
|
|
362
285
|
onEvent:options.onEvent
|
|
363
286
|
});
|
|
364
287
|
return {
|
|
365
|
-
|
|
288
|
+
artifact,
|
|
366
289
|
target:targetId,
|
|
367
290
|
platform:selectedPlan.targetRequest.platform,
|
|
368
291
|
architecture:selectedPlan.targetRequest.architecture,
|
|
@@ -371,65 +294,35 @@ export function createNativeTargetAdapter({targetId,nativeBuilder}={}){
|
|
|
371
294
|
plan:selectedPlan
|
|
372
295
|
};
|
|
373
296
|
},
|
|
374
|
-
async verify({
|
|
375
|
-
toolchainRoot,
|
|
376
|
-
toolchainReceipt,
|
|
377
|
-
artifactReceipt,
|
|
378
|
-
targetRequest,
|
|
379
|
-
signal,
|
|
380
|
-
onEvent
|
|
381
|
-
}={}){
|
|
297
|
+
async verify({toolchainRoot,toolchain,artifact,targetRequest,signal,onEvent}={}){
|
|
382
298
|
throwIfAborted(signal);
|
|
383
299
|
await requireProviderTarget();
|
|
384
|
-
const
|
|
300
|
+
const selected=selectedArtifact(artifact);
|
|
385
301
|
const result=await provider.verify({
|
|
386
302
|
toolchainRoot,
|
|
387
|
-
|
|
388
|
-
|
|
303
|
+
toolchain,
|
|
304
|
+
artifact:selected,
|
|
389
305
|
targetRequest:selectedNativeRequest(targetId,targetRequest),
|
|
390
306
|
signal,
|
|
391
307
|
onEvent
|
|
392
308
|
});
|
|
393
|
-
|
|
394
|
-
throw new ArcaneError(
|
|
395
|
-
ERROR_CODES.integrityFailed,
|
|
396
|
-
`The native provider did not verify the ${targetId} artifact.`
|
|
397
|
-
);
|
|
398
|
-
}
|
|
399
|
-
return {
|
|
400
|
-
target:targetId,
|
|
401
|
-
targetRequest,
|
|
402
|
-
artifactReceipt:selectedReceipt,
|
|
403
|
-
verification:result
|
|
404
|
-
};
|
|
309
|
+
return {target:targetId,targetRequest,artifact:selected,result};
|
|
405
310
|
},
|
|
406
|
-
async run({
|
|
407
|
-
toolchainRoot,
|
|
408
|
-
toolchainReceipt,
|
|
409
|
-
artifactReceipt,
|
|
410
|
-
targetRequest,
|
|
411
|
-
signal,
|
|
412
|
-
onEvent
|
|
413
|
-
}={}){
|
|
311
|
+
async run({toolchainRoot,toolchain,artifact,targetRequest,signal,onEvent}={}){
|
|
414
312
|
throwIfAborted(signal);
|
|
415
313
|
await requireProviderTarget();
|
|
416
|
-
const
|
|
314
|
+
const selected=selectedArtifact(artifact);
|
|
417
315
|
const result=await provider.run({
|
|
418
316
|
toolchainRoot,
|
|
419
|
-
|
|
420
|
-
|
|
317
|
+
toolchain,
|
|
318
|
+
artifact:selected,
|
|
421
319
|
targetRequest:selectedNativeRequest(targetId,targetRequest),
|
|
422
320
|
signal,
|
|
423
321
|
onEvent
|
|
424
322
|
});
|
|
425
|
-
return {
|
|
426
|
-
target:targetId,
|
|
427
|
-
targetRequest,
|
|
428
|
-
artifactReceipt:selectedReceipt,
|
|
429
|
-
result
|
|
430
|
-
};
|
|
323
|
+
return {target:targetId,targetRequest,artifact:selected,result};
|
|
431
324
|
}
|
|
432
|
-
}
|
|
325
|
+
};
|
|
433
326
|
}
|
|
434
327
|
|
|
435
328
|
export function listTargets(){
|
|
@@ -448,16 +341,13 @@ export function getTargetAdapter(targetId){
|
|
|
448
341
|
}
|
|
449
342
|
|
|
450
343
|
export async function buildTarget(options={}){
|
|
451
|
-
|
|
452
|
-
return adapter.build(options);
|
|
344
|
+
return getTargetAdapter(options.target).build(options);
|
|
453
345
|
}
|
|
454
346
|
|
|
455
347
|
export async function verifyTarget(options={}){
|
|
456
|
-
|
|
457
|
-
return adapter.verify(options);
|
|
348
|
+
return getTargetAdapter(options.target).verify(options);
|
|
458
349
|
}
|
|
459
350
|
|
|
460
351
|
export async function runTarget(options={}){
|
|
461
|
-
|
|
462
|
-
return adapter.run(options);
|
|
352
|
+
return getTargetAdapter(options.target).run(options);
|
|
463
353
|
}
|