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.
Files changed (153) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +86 -117
  3. package/bin/arcane-test.mjs +170 -46
  4. package/browser-runtime/ai/browser-speech-artifacts.mjs +887 -909
  5. package/browser-runtime/ai/browser-speech-providers.mjs +96 -152
  6. package/browser-runtime/ai/browser-wasm-llm-provider.mjs +627 -819
  7. package/browser-runtime/ai/browser-wasm.mjs +24 -35
  8. package/browser-runtime/ai/browser-wllama-runtime.mjs +64 -316
  9. package/browser-runtime/ai/model-controller.mjs +584 -181
  10. package/browser-runtime/ai/speech-worker-client.mjs +8 -146
  11. package/browser-runtime/ai/speech-worker-runtime.mjs +643 -363
  12. package/browser-runtime/dom-event-instrumentation.mjs +55 -147
  13. package/browser-runtime/event-manager.mjs +239 -624
  14. package/package.json +5 -6
  15. package/runtime/arcane/components/app-bar.html +3 -15
  16. package/runtime/arcane/components/assistant-panel.html +10 -10
  17. package/runtime/arcane/components/calculator.html +1 -1
  18. package/runtime/arcane/components/chat.html +1359 -135
  19. package/runtime/arcane/components/conversation-view.html +2 -2
  20. package/runtime/arcane/components/document-inspector.html +11 -17
  21. package/runtime/arcane/components/file-manager.html +13 -56
  22. package/runtime/arcane/components/markdown-document.html +82 -281
  23. package/runtime/arcane/components/markdown-editor.html +7 -10
  24. package/runtime/arcane/components/media-embed.html +6 -6
  25. package/runtime/arcane/components/screen-capture.html +4 -4
  26. package/runtime/arcane/components/source-explanation.html +2 -2
  27. package/runtime/arcane/components/speech.html +112 -68
  28. package/runtime/arcane/components/terminal-workspace.html +4 -4
  29. package/runtime/arcane/components/theme-editor.html +1 -1
  30. package/runtime/arcane/components/unified-inbox.html +2 -2
  31. package/runtime/arcane/components/voice-transcription.html +31 -21
  32. package/runtime/arcane/entities/Calculation.js +2 -3
  33. package/runtime/arcane/entities/Chat.js +228 -43
  34. package/runtime/arcane/entities/Preference.js +3 -5
  35. package/runtime/arcane/entities/Weather.js +5 -5
  36. package/runtime/arcane/modules/AI.js +1050 -427
  37. package/runtime/arcane/modules/AIProviderRuntime.js +658 -363
  38. package/runtime/arcane/modules/AIResponseLength.js +9 -19
  39. package/runtime/arcane/modules/AIRuntimeState.js +109 -72
  40. package/runtime/arcane/modules/ArcaneNavigationPolicy.js +45 -32
  41. package/runtime/arcane/modules/BrowserTestSuite.js +78 -122
  42. package/runtime/arcane/modules/CalculatorEngine.js +9 -9
  43. package/runtime/arcane/modules/CommunicationAppController.js +3 -7
  44. package/runtime/arcane/modules/ComponentContracts.js +30 -32
  45. package/runtime/arcane/modules/ConfiguredAIChatSession.js +281 -230
  46. package/runtime/arcane/modules/ConversationActionItems.js +26 -59
  47. package/runtime/arcane/modules/ConversationClosingReport.js +34 -61
  48. package/runtime/arcane/modules/ConversationTimebox.js +27 -15
  49. package/runtime/arcane/modules/DBOPFSDocumentLibrary.js +152 -344
  50. package/runtime/arcane/modules/DocumentLexicalSearch.js +25 -91
  51. package/runtime/arcane/modules/HTMLImport.js +54 -1
  52. package/runtime/arcane/modules/IsolatedModelQuestionRunner.js +40 -203
  53. package/runtime/arcane/modules/LocalAIReadiness.js +40 -60
  54. package/runtime/arcane/modules/LocalAIReadinessController.js +15 -13
  55. package/runtime/arcane/modules/MD.js +1 -45
  56. package/runtime/arcane/modules/Mail.js +51 -103
  57. package/runtime/arcane/modules/MailOutbox.mjs +95 -193
  58. package/runtime/arcane/modules/MailTransport.mjs +36 -57
  59. package/runtime/arcane/modules/ModelDefinition.js +22 -106
  60. package/runtime/arcane/modules/OpenMeteoWeatherProvider.js +39 -101
  61. package/runtime/arcane/modules/PersistentAIChatSession.js +281 -18
  62. package/runtime/arcane/modules/PreferenceStore.js +102 -30
  63. package/runtime/arcane/modules/RiskSignalAnalyzer.js +8 -9
  64. package/runtime/arcane/modules/ScopedOPFSCache.js +7 -42
  65. package/runtime/arcane/modules/ScreenCapture.js +175 -128
  66. package/runtime/arcane/modules/SpeechPlayback.js +46 -149
  67. package/runtime/arcane/modules/StaticDocumentCatalog.js +173 -407
  68. package/runtime/arcane/modules/ToolCallRouter.js +25 -12
  69. package/runtime/arcane/modules/YouTubeMedia.js +6 -5
  70. package/schemas/arcane-app-bundle.schema.json +13 -78
  71. package/schemas/arcane-app.schema.json +9 -25
  72. package/schemas/arcane-lock.schema.json +18 -151
  73. package/schemas/arcane-package.schema.json +2 -16
  74. package/schemas/native-build-plan.schema.json +119 -122
  75. package/src/app-descriptor.mjs +75 -132
  76. package/src/application-tests.mjs +200 -0
  77. package/src/cli/main.mjs +27 -46
  78. package/src/constants.mjs +3 -4
  79. package/src/dev-server.mjs +30 -324
  80. package/src/doctor.mjs +92 -154
  81. package/src/dom-event-instrumentation.mjs +55 -147
  82. package/src/errors.mjs +2 -3
  83. package/src/event-manager.mjs +239 -624
  84. package/src/event-queue.mjs +3 -3
  85. package/src/import-map.mjs +273 -1028
  86. package/src/index.mjs +14 -16
  87. package/src/installed-sdk-runtime.mjs +40 -62
  88. package/src/integrated-provider-loader.mjs +53 -382
  89. package/src/mail-api.mjs +0 -2
  90. package/src/mail-server.mjs +224 -580
  91. package/src/mail.mjs +4 -10
  92. package/src/native-plan.mjs +163 -598
  93. package/src/native-provider-loader.mjs +104 -1063
  94. package/src/packager/core.mjs +485 -3229
  95. package/src/process.mjs +5 -10
  96. package/src/release-bundle.mjs +292 -2405
  97. package/src/runtime.mjs +76 -396
  98. package/src/scaffold.mjs +30 -80
  99. package/src/sdk-browser-runtime.mjs +70 -626
  100. package/src/source-server.mjs +588 -0
  101. package/src/targets/index.mjs +78 -188
  102. package/src/templates/workspace-template.mjs +19 -135
  103. package/src/testing-loader.mjs +164 -0
  104. package/src/testing.mjs +1 -1
  105. package/src/toolchain.mjs +131 -544
  106. package/src/update-check.mjs +26 -64
  107. package/src/workspace-operation-lock.mjs +139 -430
  108. package/src/workspace-runtime.mjs +112 -779
  109. package/src/workspace.mjs +40 -302
  110. package/browser-runtime/ARCANE_SDK_BROWSER_RELEASE.json +0 -218
  111. package/browser-runtime/ai/ARCANE_AI_BROWSER_SPEECH_COMPONENTS.json +0 -203
  112. package/browser-runtime/ai/ARCANE_AI_BROWSER_WASM_COMPONENTS.json +0 -80
  113. package/browser-runtime/ai/internal/sha256.mjs +0 -166
  114. package/docs/architecture.md +0 -344
  115. package/docs/compatibility.md +0 -36
  116. package/docs/event-manager.md +0 -294
  117. package/docs/platform-targets.md +0 -108
  118. package/docs/publishing.md +0 -201
  119. package/docs/reference/README.md +0 -187
  120. package/docs/reference/ai/browser-speech-package-authority.json +0 -835
  121. package/docs/reference/ai/browser-speech.md +0 -1252
  122. package/docs/reference/ai/browser-wasm.md +0 -530
  123. package/docs/reference/arcane-ollama.md +0 -288
  124. package/docs/reference/availability-and-normalization.md +0 -183
  125. package/docs/reference/behavioral-testing.md +0 -133
  126. package/docs/reference/cli.md +0 -779
  127. package/docs/reference/core/README.md +0 -62
  128. package/docs/reference/core/arcane-ai-contracts.md +0 -907
  129. package/docs/reference/core/arcane-api.md +0 -601
  130. package/docs/reference/core/arcane-entities.md +0 -65
  131. package/docs/reference/core/arcane-events.md +0 -134
  132. package/docs/reference/core/ollama-module.md +0 -181
  133. package/docs/reference/core/reference/arcane-api/ai-and-ollama.md +0 -1909
  134. package/docs/reference/core/reference/arcane-api/applications-terminal-capabilities.md +0 -1057
  135. package/docs/reference/core/reference/arcane-api/core-and-events.md +0 -320
  136. package/docs/reference/core/reference/arcane-api/filesystem-storage-preferences-appearance.md +0 -610
  137. package/docs/reference/core/reference/arcane-api/namespaces.md +0 -1157
  138. package/docs/reference/core/reference/arcane-api/platform-installation-users-system.md +0 -1423
  139. package/docs/reference/core/reference/arcane-api/session-provisioning-diagnostics-development.md +0 -315
  140. package/docs/reference/event-manager.md +0 -1511
  141. package/docs/reference/inventory/package-api.json +0 -3284
  142. package/docs/reference/inventory/runtime-components.json +0 -1011
  143. package/docs/reference/inventory/runtime-entities.json +0 -26
  144. package/docs/reference/inventory/runtime-modules.json +0 -1431
  145. package/docs/reference/mail.md +0 -316
  146. package/docs/reference/protocols.md +0 -677
  147. package/docs/reference/runtime-components.md +0 -1366
  148. package/docs/reference/runtime-entities.md +0 -303
  149. package/docs/reference/runtime-modules.md +0 -2960
  150. package/docs/reference/sdk-api.md +0 -6694
  151. package/docs/roadmap.md +0 -79
  152. package/docs/work-amplification.md +0 -129
  153. package/runtime/ARCANE_RUNTIME_RELEASE.json +0 -826
@@ -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 path from 'node:path';
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=Object.freeze([
16
- Object.freeze({
17
- id:'browser',
18
- displayName:'Browser/static',
19
- status:'available',
20
- platforms:['any'],
21
- architectures:['any'],
22
- formats:['directory'],
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:'Linux ARM64 output requires explicit pairing to a compatible Arcane OS checkout with --arcane-root and a native ARM64 toolchain.'
65
- }),
66
- Object.freeze({
67
- id:'android-arm64',
68
- displayName:'Android ARM64 application',
69
- status:'pairing-required',
70
- platforms:['android'],
71
- architectures:['arm64'],
72
- formats:['apk'],
73
- signingModes:['development'],
74
- reason:'Android APK output requires explicit pairing to a compatible Arcane OS checkout with --arcane-root and the Android development toolchain.'
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} ${state}`,
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 Object.freeze({
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=Object.freeze({
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:['verify-sdk-runtime','validate-workspace','package-selected-app']
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,runtimeVerificationState,signal,onEvent}={}){
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 verified=await verifyApp({
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:path.join(workspaceRoot,'dist',appId),
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',verified};
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 an explicit matching targetRequest.`
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 selectedArtifactReceipt(artifactReceipt){
259
- if(!artifactReceipt||typeof artifactReceipt!=='object'||Array.isArray(artifactReceipt)){
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 artifactReceipt;
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 declare support for target ${targetId}.`
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
- toolchainReceipt,
218
+ toolchain,
290
219
  appReleaseRoot,
291
- appReleaseReceipt,
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
- toolchainReceipt,
234
+ toolchain,
307
235
  appReleaseRoot,
308
- appReleaseReceipt,
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 Object.freeze({
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,toolchainReceipt,targetRequest,signal,onEvent}={}){
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
- toolchainReceipt,
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 result=await executeNativeBuildPlan(selectedPlan,{
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
- ...result,
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 selectedReceipt=selectedArtifactReceipt(artifactReceipt);
300
+ const selected=selectedArtifact(artifact);
385
301
  const result=await provider.verify({
386
302
  toolchainRoot,
387
- toolchainReceipt,
388
- artifactReceipt:selectedReceipt,
303
+ toolchain,
304
+ artifact:selected,
389
305
  targetRequest:selectedNativeRequest(targetId,targetRequest),
390
306
  signal,
391
307
  onEvent
392
308
  });
393
- if(!result||result.verified!==true){
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 selectedReceipt=selectedArtifactReceipt(artifactReceipt);
314
+ const selected=selectedArtifact(artifact);
417
315
  const result=await provider.run({
418
316
  toolchainRoot,
419
- toolchainReceipt,
420
- artifactReceipt:selectedReceipt,
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
- const adapter=getTargetAdapter(options.target);
452
- return adapter.build(options);
344
+ return getTargetAdapter(options.target).build(options);
453
345
  }
454
346
 
455
347
  export async function verifyTarget(options={}){
456
- const adapter=getTargetAdapter(options.target);
457
- return adapter.verify(options);
348
+ return getTargetAdapter(options.target).verify(options);
458
349
  }
459
350
 
460
351
  export async function runTarget(options={}){
461
- const adapter=getTargetAdapter(options.target);
462
- return adapter.run(options);
352
+ return getTargetAdapter(options.target).run(options);
463
353
  }