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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.2
|
|
4
|
+
|
|
5
|
+
- Preserved complete application, document, model, message, event, process,
|
|
6
|
+
mail, and diagnostic content across the ordinary SDK runtime and tooling.
|
|
7
|
+
- Removed ordinary byte, hash, digest, receipt, provenance, exact-inventory,
|
|
8
|
+
truncation, clipping, freeze, and unapproved hardening gates while retaining
|
|
9
|
+
unavoidable transport framing and credential protection at their owners.
|
|
10
|
+
- Added the complete browser-WASM chat, speech, persistence, structural-tool,
|
|
11
|
+
source-example serving, descriptor, packaging, and application-test contracts
|
|
12
|
+
required by SDK consumers, with optional security remaining opt-in.
|
|
13
|
+
- Limited the npm package to consumer runtime, source, schema, CLI/tooling, and
|
|
14
|
+
required root metadata; examples, documentation, generated site output, and
|
|
15
|
+
tests remain repository-owned follow-up surfaces outside the published package.
|
|
16
|
+
|
|
17
|
+
## 0.3.1
|
|
18
|
+
|
|
19
|
+
- Restored ordinary warn-first Browser Speech operation with explicit
|
|
20
|
+
`secure:false` defaults, one concise load warning, and truthful
|
|
21
|
+
`unchecked`/`pending`/`verified`/`failed` integrity telemetry while keeping
|
|
22
|
+
strict authenticated-graph admission behind explicit `secure:true`.
|
|
23
|
+
- Added atomic hydration for exact saved-but-unregistered STT/TTS selections
|
|
24
|
+
without a transient provider fallback, including independent mixed
|
|
25
|
+
browser/Cloud/Core role ownership and mismatch-safe rollback.
|
|
26
|
+
- Continued to resolve speech runtimes, models, voices, and providers from
|
|
27
|
+
their upstream npm/fetch distribution paths; the SDK package redistributes
|
|
28
|
+
none of those third-party payloads or their legal corpora.
|
|
29
|
+
|
|
3
30
|
## 0.3.0
|
|
4
31
|
|
|
5
32
|
- Added the branded, versioned, per-realm `globalThis.arcaneEvents` authority
|
package/README.md
CHANGED
|
@@ -19,15 +19,15 @@ version-locked SDK runtime, while an integrated Arcane checkout uses its live
|
|
|
19
19
|
`arcane/` runtime. Both profiles preserve the same app URLs, theme, packaging,
|
|
20
20
|
event, cancellation, and browser run contracts.
|
|
21
21
|
|
|
22
|
-
This checkout defines the `0.3.
|
|
23
|
-
version and lockfile; registry state is deliberately not baked into
|
|
24
|
-
|
|
22
|
+
This checkout defines the `0.3.2` SDK contract. Applications pin one exact npm
|
|
23
|
+
version and lockfile; registry state is deliberately not baked into application
|
|
24
|
+
artifacts.
|
|
25
25
|
|
|
26
26
|
That registry query is a maintainer action, not an application behavior. Apps
|
|
27
27
|
never poll npm for SDK updates or replace their own SDK or synchronized runtime.
|
|
28
28
|
The app repository's exact dependency and lockfile select the SDK; changing that
|
|
29
|
-
selection is an explicit repository update
|
|
30
|
-
|
|
29
|
+
selection is an explicit repository update. Tests and checks run only when the
|
|
30
|
+
user expressly selects them, or when required for a selected release output.
|
|
31
31
|
|
|
32
32
|
## Developer API reference
|
|
33
33
|
|
|
@@ -47,14 +47,14 @@ Use `arcane-os/event-manager` as the primary instrumentation surface for new
|
|
|
47
47
|
SDK code. Its shared `arcaneEvents` bus is powered by `event-pubsub`; SDK-owned
|
|
48
48
|
operation queues already mirror their normalized events through it while
|
|
49
49
|
preserving awaited delivery and cancellation. An opt-in `timeTravel` flag adds
|
|
50
|
-
timestamped causal event stacks,
|
|
51
|
-
|
|
50
|
+
complete timestamped causal event stacks, export/import, seek and safe review
|
|
51
|
+
playback. Attaching a DOM root records interactions and mutation records,
|
|
52
52
|
including supported open shadow roots. Source-stack capture is a separate,
|
|
53
53
|
off-by-default diagnostic option.
|
|
54
54
|
|
|
55
|
-
Recording is off by default.
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
Recording is off by default. Once explicitly enabled, a session retains its
|
|
56
|
+
complete recorded content until the caller clears it or disables recording.
|
|
57
|
+
Review [the EventManager guide](docs/event-manager.md)
|
|
58
58
|
before enabling DOM values, node content, event details, source stacks, or live
|
|
59
59
|
event redispatch. Password targets, text-entry details, clipboard data, URL
|
|
60
60
|
attributes, and common credential keys are excluded or redacted by default.
|
|
@@ -63,28 +63,21 @@ attributes, and common credential keys are excluded or redacted by default.
|
|
|
63
63
|
|
|
64
64
|
The SDK repository is the canonical source for portable shared runtime modules,
|
|
65
65
|
entities, components, themes, browser providers and workers, public contracts,
|
|
66
|
-
and their packaged
|
|
66
|
+
and their packaged content. Portable applications consume those
|
|
67
67
|
SDK-owned paths and never read an Arcane OS install or source checkout at
|
|
68
68
|
runtime. Arcane OS is a consumer of this contract; its repository-side cutover
|
|
69
69
|
is coordinated separately and cannot become a second source authority.
|
|
70
70
|
|
|
71
71
|
The source-authority cutover is complete. `runtime/arcane/` is authored here,
|
|
72
|
-
and
|
|
73
|
-
old Arcane OS-to-SDK synchronization direction is retired
|
|
74
|
-
|
|
75
|
-
authorized SDK source change:
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
node tools/runtime-manifest.mjs --write
|
|
79
|
-
npm run check
|
|
80
|
-
```
|
|
72
|
+
and applications copy the complete portable inventory selected by the package.
|
|
73
|
+
The old Arcane OS-to-SDK synchronization direction is retired; it cannot
|
|
74
|
+
overwrite SDK-canonical source.
|
|
81
75
|
|
|
82
76
|
`tools/runtime-source.json` declares the SDK authority and retains the prior
|
|
83
|
-
Arcane OS commit only as
|
|
77
|
+
Arcane OS commit only as migration history.
|
|
84
78
|
Arcane OS must consume the same locked SDK projection as other applications;
|
|
85
79
|
any remaining OS-side duplicate is legacy consumer migration state, not source
|
|
86
|
-
authority.
|
|
87
|
-
byte receipt.
|
|
80
|
+
authority.
|
|
88
81
|
|
|
89
82
|
## Browser-local AI
|
|
90
83
|
|
|
@@ -103,17 +96,18 @@ const source=createBrowserModelSource({
|
|
|
103
96
|
});
|
|
104
97
|
```
|
|
105
98
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
99
|
+
Model members require only their names and URLs. The ordinary path does not
|
|
100
|
+
count, limit, hash, or identify model content by its byte representation.
|
|
101
|
+
Optional hardening is inactive unless the caller explicitly selects
|
|
102
|
+
`secure:true`. The DBOPFS store processes all members in order and commits its
|
|
103
|
+
completion record last. Capability reports evaluate each
|
|
110
104
|
app-supplied model as `compatible`, `incompatible`, or `unknown`; the app can
|
|
111
105
|
render that result without the SDK inventing or filtering its catalog.
|
|
112
106
|
|
|
113
107
|
`arcane-os/ai/browser-speech` exposes independent Whisper STT and Kokoro TTS
|
|
114
108
|
provider factories. The package contains the plain-JavaScript provider and
|
|
115
109
|
Worker machinery, not speech runtimes, models, voices, or a CDN default. An app
|
|
116
|
-
must supply each
|
|
110
|
+
must supply each runtime/model selection explicitly. Speech roles
|
|
117
111
|
load, cancel, unload, fail, and recover independently, so speech failure never
|
|
118
112
|
silently falls back or prevents text chat.
|
|
119
113
|
|
|
@@ -132,7 +126,7 @@ uses the same controller for automatic memory extraction.
|
|
|
132
126
|
Create a new repository-shaped Arcane application with the exact stable SDK:
|
|
133
127
|
|
|
134
128
|
```bash
|
|
135
|
-
npx arcane-os@0.3.
|
|
129
|
+
npx arcane-os@0.3.2 new my-app --path ./my-app --target portable --git
|
|
136
130
|
cd my-app
|
|
137
131
|
npm install
|
|
138
132
|
npm run check
|
|
@@ -143,7 +137,7 @@ To enroll an existing repository, install the exact SDK and initialize only
|
|
|
143
137
|
missing Arcane files:
|
|
144
138
|
|
|
145
139
|
```bash
|
|
146
|
-
npm install --save-dev --save-exact arcane-os@0.3.
|
|
140
|
+
npm install --save-dev --save-exact arcane-os@0.3.2
|
|
147
141
|
npm exec -- arcane init my-app --target portable
|
|
148
142
|
```
|
|
149
143
|
|
|
@@ -159,7 +153,7 @@ npm exec -- arcane-os targets
|
|
|
159
153
|
No global SDK install or standalone Arcane CLI is required. The application
|
|
160
154
|
repository's exact npm dependency and lockfile own the CLI and toolchain version.
|
|
161
155
|
|
|
162
|
-
Use `npx arcane-os@0.3.
|
|
156
|
+
Use `npx arcane-os@0.3.2` for the initial bootstrap because it names this npm
|
|
163
157
|
package explicitly; bare `npx arcane` outside an installed project could resolve
|
|
164
158
|
a different package. Both installed commands invoke the same headless toolchain.
|
|
165
159
|
Project-local npm scripts use the SDK pinned by that app's `package-lock.json`,
|
|
@@ -180,18 +174,17 @@ node ./bin/arcane.mjs new local-app --path ../local-app --target portable --git
|
|
|
180
174
|
|
|
181
175
|
# From the generated app repository
|
|
182
176
|
cd ../local-app
|
|
183
|
-
npm install --save-dev --save-exact ../arcane-os-sdk/arcane-os-0.3.
|
|
177
|
+
npm install --save-dev --save-exact ../arcane-os-sdk/arcane-os-0.3.2.tgz
|
|
184
178
|
npm run check
|
|
185
179
|
npm ci
|
|
186
180
|
```
|
|
187
181
|
|
|
188
182
|
Adjust the relative tarball path for your layout and keep that `.tgz` at the
|
|
189
|
-
same location.
|
|
190
|
-
|
|
191
|
-
identity, and the runtime bytes. Local directory `file:` dependencies are not
|
|
183
|
+
same location. The lockfile retains the selected package dependency while
|
|
184
|
+
Arcane uses the installed package name and version. Local directory `file:` dependencies are not
|
|
192
185
|
accepted because npm may install them as links; use a packed `.tgz`. A GitHub
|
|
193
186
|
runner also needs that tarball at the locked path. After publication, replace
|
|
194
|
-
the local declaration with the exact `arcane-os@0.3.
|
|
187
|
+
the local declaration with the exact `arcane-os@0.3.2` registry package and
|
|
195
188
|
commit the regenerated lock.
|
|
196
189
|
|
|
197
190
|
Generated repositories use `npm ci --ignore-scripts` in CI. Run dependency
|
|
@@ -237,8 +230,9 @@ app-test behavior.
|
|
|
237
230
|
Integrated native app builds are also implemented. `--workspace` and
|
|
238
231
|
`--arcane-root` must resolve to the same Arcane checkout, one `--app` and one
|
|
239
232
|
declared native target are selected, and `--output-root` must resolve outside
|
|
240
|
-
that checkout. The SDK then uses the same package, plan, provider,
|
|
241
|
-
|
|
233
|
+
that checkout. The SDK then uses the same package, plan, provider, and
|
|
234
|
+
same-process run lifecycle as an external app repository. Verification remains
|
|
235
|
+
an explicit operation for a selected release output.
|
|
242
236
|
|
|
243
237
|
## Commands
|
|
244
238
|
|
|
@@ -246,6 +240,7 @@ verification, and same-process run lifecycle as an external app repository.
|
|
|
246
240
|
arcane new <id> [--path <directory>] [--display-name <name>] [--target <target>] [--git]
|
|
247
241
|
arcane init [id] [--workspace <directory>] [--display-name <name>] [--target <target>]
|
|
248
242
|
arcane doctor [--workspace <directory>] [--arcane-root <directory>]
|
|
243
|
+
arcane import-map [--workspace <directory>] [--app <id>]
|
|
249
244
|
arcane dev [--app <id>] [--host 127.0.0.1] [--port 8000]
|
|
250
245
|
arcane test [--app <id>] [--scope app]
|
|
251
246
|
arcane test --scope shared --test-file <repo-relative.test.mjs>
|
|
@@ -265,13 +260,13 @@ arcane repo status|pull|push
|
|
|
265
260
|
|
|
266
261
|
All commands support `--output human|json|ndjson`. Machine modes keep stdout
|
|
267
262
|
structured. Every operation emits or reports acceptance before filesystem,
|
|
268
|
-
network,
|
|
263
|
+
network, explicitly requested test, process, or service work begins.
|
|
269
264
|
|
|
270
265
|
## External application release bundles
|
|
271
266
|
|
|
272
|
-
An authored schema-2 `arcane-app.json` can be
|
|
273
|
-
|
|
274
|
-
|
|
267
|
+
An authored schema-2 `arcane-app.json` can be bundled with one already packaged
|
|
268
|
+
browser release. The bundle contains only the canonical descriptor, the release
|
|
269
|
+
manifest, and the complete selected `dist/<id>/` payload inventory:
|
|
275
270
|
|
|
276
271
|
```bash
|
|
277
272
|
npm exec -- arcane package --app my-app
|
|
@@ -280,55 +275,32 @@ npm exec -- arcane verify-bundle dist/my-app-1.0.0.arcane-app.tar.gz
|
|
|
280
275
|
```
|
|
281
276
|
|
|
282
277
|
`bundle` creates `dist/<id>-<version>.arcane-app.tar.gz` by default. It refuses
|
|
283
|
-
an existing destination unless `--overwrite` is explicit
|
|
284
|
-
file until the
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
repository-only source or tooling beyond the exact authenticated release
|
|
301
|
-
inventory; each app owns its leak/source policy, and Arcane's source-free runtime
|
|
302
|
-
gates remain separate. Source controls, payloads, and bundle artifacts must remain single-link regular files at their exact
|
|
303
|
-
recorded length through a final identity check; an appended byte, concurrent
|
|
304
|
-
growth, path replacement, or hard link fails closed. NFC paths use defined
|
|
305
|
-
UTF-8 byte ordering, covered by one pinned golden bundle digest on every
|
|
306
|
-
supported Node/runner combination. This SDK accepts only the explicitly listed
|
|
307
|
-
`0.3.0` bundle generation; structural validity does not imply cross-SDK
|
|
308
|
-
compatibility, and a release with zero payload bytes cannot be created. Portable
|
|
309
|
-
path validation rejects file/directory prefix conflicts, case-colliding prefix
|
|
310
|
-
spellings, and Windows device aliases including superscript COM/LPT digits.
|
|
311
|
-
|
|
312
|
-
Successful creation and verification return complete consistency metadata for
|
|
313
|
-
the artifact digest/bytes, descriptor canonical/file/package digests and byte
|
|
314
|
-
length, and release manifest/policy/content digests, file count, and payload
|
|
315
|
-
bytes. Those values are consistency evidence for the exact archive, not
|
|
316
|
-
installation authority.
|
|
317
|
-
|
|
318
|
-
Internal hashes establish consistency, not permission to install. Arcane
|
|
319
|
-
admission must also authenticate the archive through its approved repository
|
|
320
|
-
provenance or independent signature and match that identity to an Arcane-owned
|
|
321
|
-
authorization lock. The reusable `.github/workflows/release-app.yml` workflow
|
|
278
|
+
an existing destination unless `--overwrite` is explicit and preserves the
|
|
279
|
+
prior file until the replacement is complete. Cancellation or failure before
|
|
280
|
+
commit restores the prior output when that can be done without overwriting a
|
|
281
|
+
concurrent change. A conflicting or uncertain path is preserved for inspection.
|
|
282
|
+
|
|
283
|
+
The archive uses the documented USTAR+gzip structure and publishes its v1 JSON
|
|
284
|
+
contract at `arcane-os/schemas/arcane-app-bundle.json`. When the user explicitly
|
|
285
|
+
selects bundle verification, it rejects malformed archives, links, devices,
|
|
286
|
+
unsafe or colliding paths, unsupported archive members, trailing data, and
|
|
287
|
+
inconsistent descriptor or inventory structure. These checks reject corrupt
|
|
288
|
+
selected artifacts; they do not impose byte-count, hash, provenance, or
|
|
289
|
+
admission gates on ordinary development, packaging, serving, or running.
|
|
290
|
+
Portable path validation rejects file/directory prefix conflicts,
|
|
291
|
+
case-colliding prefix spellings, and Windows device aliases including
|
|
292
|
+
superscript COM/LPT digits.
|
|
293
|
+
|
|
294
|
+
The reusable `.github/workflows/release-app.yml` workflow
|
|
322
295
|
builds one selected app in a `contents: read` job with no OIDC or attestation
|
|
323
296
|
authority. An always-run fresh job downloads the uploaded artifact by immutable
|
|
324
|
-
artifact id, checks out only the reusable workflow's
|
|
325
|
-
supported Node 24,
|
|
326
|
-
app id and complete metadata, and becomes the sole source of reusable outputs.
|
|
297
|
+
artifact id, checks out only the reusable workflow's selected SDK revision, uses
|
|
298
|
+
supported Node 24, and checks the selected app id and complete inventory.
|
|
327
299
|
When requested, a third job downloads that same artifact id, independently
|
|
328
300
|
repeats those checks against the post-upload outputs, and alone receives narrow
|
|
329
301
|
OIDC/attestation permissions. No package manager, dependency resolution, caller
|
|
330
302
|
checkout, check, or adapter runs with that authority. An unattested uploaded
|
|
331
|
-
artifact
|
|
303
|
+
artifact remains an ordinary build output.
|
|
332
304
|
|
|
333
305
|
## SDK test sets
|
|
334
306
|
|
|
@@ -350,15 +322,15 @@ package installation, or assertions.
|
|
|
350
322
|
|
|
351
323
|
## Current target support
|
|
352
324
|
|
|
353
|
-
Version `0.3.
|
|
354
|
-
native development targets: a
|
|
325
|
+
Version `0.3.2` exposes one browser target and five explicitly paired
|
|
326
|
+
native development targets: a non-runnable portable directory, a
|
|
355
327
|
Windows x64 unsigned-local-test EXE bundle, Linux x64 and Linux ARM64
|
|
356
328
|
unsigned-local-test DEBs, and an Android development-signed APK. The
|
|
357
329
|
`android-arm64` APK is architecture-neutral because it contains no native ABI;
|
|
358
330
|
the target name identifies its supported physical/native ARM64 run profile.
|
|
359
331
|
|
|
360
|
-
Every native build requires an explicit Arcane OS checkout
|
|
361
|
-
version
|
|
332
|
+
Every native build requires an explicit Arcane OS checkout compatible with this
|
|
333
|
+
SDK version and a canonical app descriptor that declares the
|
|
362
334
|
exact selected target. The SDK never searches for or silently selects a mutable
|
|
363
335
|
toolchain root. Scaffold a separate
|
|
364
336
|
repository with the matching `--target`, or add and validate that target in the
|
|
@@ -395,17 +367,16 @@ The browser remains available from the same repository. A native command does
|
|
|
395
367
|
not infer a missing descriptor target from `--target` and never substitutes a
|
|
396
368
|
browser package.
|
|
397
369
|
|
|
398
|
-
`native-prepare` is available as a standalone toolchain
|
|
399
|
-
|
|
400
|
-
build command prepares and reuses its own exact toolchain state once.
|
|
370
|
+
`native-prepare` is available as a standalone toolchain diagnostic. Do not run
|
|
371
|
+
it automatically: the build command prepares the selected toolchain itself.
|
|
401
372
|
|
|
402
|
-
The build
|
|
373
|
+
The build reads the selected app release and descriptor, requires the
|
|
403
374
|
Core to meet the highest minimum declared by the SDK runtime, selected app, and
|
|
404
375
|
bundled dependencies, keep their declared Arcane protocol, and provide every
|
|
405
376
|
required feature, capability, and method. A Core reporting a higher version is
|
|
406
377
|
accepted only when it passes those same current-SDK checks; this is not a promise
|
|
407
|
-
that future SDK or Core releases will remain compatible. The build copies
|
|
408
|
-
|
|
378
|
+
that future SDK or Core releases will remain compatible. The build copies the
|
|
379
|
+
complete selected release. Portable emits an app-scoped
|
|
409
380
|
Arcane Core payload under `build/portable/`; that directory is not executable
|
|
410
381
|
and `arcane run --target portable` is intentionally unavailable. Windows emits
|
|
411
382
|
an app-scoped executable bundle under `build/windows-x64/`. Linux emits an
|
|
@@ -413,8 +384,9 @@ app-scoped amd64 DEB under `build/linux-x64/` or ARM64 DEB under
|
|
|
413
384
|
`build/linux-arm64/`. Android emits one development-signed, architecture-neutral
|
|
414
385
|
APK under `build/android-arm64/`; there is no native ABI payload, and its run
|
|
415
386
|
path requires a physical device with native ARM64 support. Executable `run`
|
|
416
|
-
performs package, prepare, plan, build,
|
|
417
|
-
|
|
387
|
+
performs package, prepare, plan, build, launch, and owned cancellation in one
|
|
388
|
+
process. Verification occurs only when explicitly selected for that release
|
|
389
|
+
output.
|
|
418
390
|
|
|
419
391
|
The Windows x64 and Linux x64 paths have been exercised end to end from
|
|
420
392
|
independent external repositories. Windows compiled, verified, reached an
|
|
@@ -423,15 +395,13 @@ while a valid installed publisher-continuity pin remained present. Linux x64
|
|
|
423
395
|
built and verified a real DEB and launched it under WSLg without installation
|
|
424
396
|
or `sudo`.
|
|
425
397
|
|
|
426
|
-
At Arcane source revision
|
|
427
|
-
|
|
428
|
-
ARM64 DEB, proved AArch64 host, Core, and bridge binaries, reached WebKit
|
|
398
|
+
At the recorded Arcane source revision, the native ARM64 workflow built an
|
|
399
|
+
ARM64 DEB, exercised its AArch64 host, Core, and bridge, reached WebKit
|
|
429
400
|
load-finished readiness, and drained its owned process group. The workflow kept
|
|
430
401
|
Ubuntu's AppArmor user-namespace restriction enabled and loaded the packaged
|
|
431
|
-
Bubblewrap profile.
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
on a physical ARM64/API 37 device. These are development results, not production
|
|
402
|
+
Bubblewrap profile. The recorded Android development path exercised build,
|
|
403
|
+
readiness, cancellation, uninstall, and absence behavior on a physical ARM64
|
|
404
|
+
device. These are development results, not production
|
|
435
405
|
signing, store-publishing, release, or promotion evidence.
|
|
436
406
|
|
|
437
407
|
| Capability | Ready now |
|
|
@@ -440,11 +410,11 @@ signing, store-publishing, release, or promotion evidence.
|
|
|
440
410
|
| External proprietary-source repository workflow | Yes, subject to the distribution license below |
|
|
441
411
|
| Integrated Arcane checkout workflow | Yes |
|
|
442
412
|
| ArcaneOllama managed-service check | Yes on supported Windows hosts |
|
|
443
|
-
| SDK native plan/provider
|
|
444
|
-
| Portable app-scoped Core directory | Yes, with explicit `--arcane-root`;
|
|
413
|
+
| SDK native plan/provider boundary | Yes |
|
|
414
|
+
| Portable app-scoped Core directory | Yes, with explicit `--arcane-root`; not directly runnable |
|
|
445
415
|
| Windows x64 EXE bundle | Yes, unsigned local development with explicit `--arcane-root` |
|
|
446
416
|
| Linux x64 DEB | Yes, unsigned local development with explicit `--arcane-root` |
|
|
447
|
-
| Linux ARM64 DEB | Yes, unsigned local development on a compatible native ARM64 toolchain with explicit `--arcane-root`;
|
|
417
|
+
| Linux ARM64 DEB | Yes, unsigned local development on a compatible native ARM64 toolchain with explicit `--arcane-root`; native build, WebKit readiness, and cancellation evidence is recorded |
|
|
448
418
|
| Android ARM64 APK | Yes, development-signed and architecture-neutral with explicit `--arcane-root`; a physical/native ARM64 device is required for run |
|
|
449
419
|
|
|
450
420
|
Android supports APK only in this development profile. AAB, release signing,
|
|
@@ -456,15 +426,15 @@ release acceptance.
|
|
|
456
426
|
|
|
457
427
|
See [docs/platform-targets.md](docs/platform-targets.md) for the matrix and
|
|
458
428
|
[docs/architecture.md](docs/architecture.md) for the boundary. The exact
|
|
459
|
-
minimum-version and required-contract
|
|
429
|
+
minimum-version and required-contract compatibility rule is documented in
|
|
460
430
|
[docs/compatibility.md](docs/compatibility.md). The issue-ready
|
|
461
431
|
extraction sequence is tracked in [docs/roadmap.md](docs/roadmap.md).
|
|
462
432
|
|
|
463
433
|
## Canonical app descriptor
|
|
464
434
|
|
|
465
435
|
New apps own `apps/<id>/arcane-app.json` schema 2. It contains publisher,
|
|
466
|
-
permissions
|
|
467
|
-
intent, and deterministically projects the
|
|
436
|
+
optional permissions and security declarations, native presentation, optional
|
|
437
|
+
Core requirements, and target intent, and deterministically projects the schema-1
|
|
468
438
|
`arcane-package.json` required by the current browser packager. The pinned
|
|
469
439
|
schema-1 apps recognized by this SDK are accepted through a read-only projection
|
|
470
440
|
of the current native registry until each app adopts the authored descriptor.
|
|
@@ -478,13 +448,12 @@ read-only managed-service assessment where the host supports one. Native apps
|
|
|
478
448
|
use an app-scoped Arcane Core and `Arcane.localAI.status()` in this SDK version.
|
|
479
449
|
Ollama is optional for packaging and non-AI applications.
|
|
480
450
|
|
|
481
|
-
The loopback development server
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
snapshots before headers; the current development limit is 64 MiB per file.
|
|
451
|
+
The loopback development server serves complete selected files and does not
|
|
452
|
+
apply byte-count or truncation gates. Optional hardening is inactive unless the
|
|
453
|
+
caller explicitly selects `secure:true`. Required credential protection,
|
|
454
|
+
malformed-request rejection, and unavoidable browser or operating-system safety
|
|
455
|
+
remain in effect. Declared origins remain native policy input only when the app
|
|
456
|
+
explicitly authors them.
|
|
488
457
|
|
|
489
458
|
## Licensing
|
|
490
459
|
|