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
package/docs/roadmap.md DELETED
@@ -1,79 +0,0 @@
1
- # Development roadmap
2
-
3
- The SDK contract keeps target names and operations stable while each current
4
- development provider gathers its remaining promotion evidence. Each item below
5
- is small enough to become a GitHub issue without combining every platform into
6
- one unbounded build.
7
-
8
- ## Publication prerequisites
9
-
10
- - Mark the Arcane OS monorepo root package private or give it an internal-only
11
- package name before the first `arcane-os` publication.
12
- - Decide and document the license that permits proprietary applications to
13
- bundle the synchronized Arcane runtime.
14
- - Publish one fresh, never-reused prerelease candidate under only the npm `dev`
15
- tag, verify the tarball and
16
- provenance, add a second appropriate npm owner, and configure the exact
17
- trusted-publisher workflow.
18
-
19
- ## App admission and native extraction
20
-
21
- - Keep the implemented process-local `arcane-native-build-plan/1` and
22
- `arcane-native-builder/1` lifecycle as the single provider seam for the CLI,
23
- GUI, CI, and Codex. Portable, Windows x64, Linux x64, Linux ARM64, and Android
24
- ARM64 pair only through an explicit compatible Arcane root and a matching
25
- canonical scaffold descriptor.
26
- - Migrate built-in apps from the implemented schema-2 `arcane-app.json`
27
- descriptor fallback to authored descriptors without changing exact v1 release
28
- or native-host artifacts.
29
- - Update Arcane's exact-key consumers to project the new descriptor into the
30
- current catalog while preserving v1 app-release admission during migration.
31
- - Preserve the implemented portable, Windows x64, Linux x64, Linux ARM64, and
32
- Android ARM64 providers as one selected app plus its exact declared dependency
33
- closure. Add new providers without weakening that release-reader boundary.
34
- - Extend the implemented same-process retained receipt lifecycle through an
35
- authenticated Arcane host broker only when persistent cross-process reuse or
36
- restartable app-scoped Core sessions are required.
37
- - Preserve exact packaged-artifact authority across browser and native plan,
38
- verify, and run boundaries; never regress to treating a mutable path or
39
- manifest file as a reusable receipt.
40
- - Add a manifest-declared origin policy for native enforcement and an optional
41
- policy-faithful development mode. The current capability-gated loopback host
42
- deliberately uses a broad development-only policy so the shared runtime can
43
- exercise remote providers, media, WebSockets, and embeds.
44
-
45
- ## Platform adapters
46
-
47
- - `portable`: keep the available verified app-scoped Core directory reproducible
48
- from an external packed-SDK install and an explicit compatible Arcane checkout;
49
- do not present it as an executable or direct-run target.
50
- - `windows-x64`: keep the implemented retained toolchain broker, EXE bundle,
51
- authenticated host-readiness signal, and owned same-process cancellation
52
- reproducible. Production signing and installation remain separate work.
53
- - `linux-x64`: keep the implemented single-app WebKitGTK host, verified amd64
54
- DEB, user-owned extraction, and same-process cancellation reproducible. Add
55
- AppImage and RPM only as distinct later format requests.
56
- - `linux-arm64`: keep the implemented unsigned-local-test ARM64 DEB provider,
57
- focused provider tests, and exact-SHA native build/verification/readiness/
58
- cancellation workflow reproducible on a compatible native ARM64 toolchain.
59
- Keep AppImage, RPM, and production signing as separate future requests.
60
- - `android-arm64`: keep the implemented single-app, development-signed APK path
61
- and exact-SHA physical/native ARM64 build/readiness/cleanup evidence
62
- reproducible. The APK contains no native ABI and is architecture-neutral. Add
63
- AAB, release signing, store publishing, and update continuity only as explicit
64
- later promotion work.
65
-
66
- ## Developer experience
67
-
68
- - Keep the integrated shared/Core profile explicit through `--scope shared`:
69
- one exact repository-relative focused test or Arcane's one canonical
70
- development check, never app discovery or an arbitrary package-script loop.
71
- - Add the Arcane Developer control panel as a client of the same operation API;
72
- it stores local repository paths per user and never becomes a second builder.
73
- - Add authenticated GitHub artifact admission so Arcane OS installs verified
74
- releases without cloning proprietary source.
75
- - Preserve the implemented integrated app-scoped native path: `--workspace` and
76
- `--arcane-root` identify the same checkout, one app and one target are
77
- selected, and `--output-root` remains outside the checkout. Future GUI clients
78
- must use that path rather than introducing a second builder or an implicit
79
- all-target build.
@@ -1,129 +0,0 @@
1
- # Work-amplification review
2
-
3
- The default cardinality is:
4
-
5
- ```text
6
- 1 workspace x 1 app x 1 command x 1 target x 1 architecture x 1 format x 1 signing profile
7
- ```
8
-
9
- There is no implicit all-app, all-target, or Android-flavor loop.
10
- Selecting `android-arm64` produces exactly one architecture-neutral APK with no
11
- native ABI fan-out. It does not build one artifact per ABI, an AAB, a release
12
- signing variant, or a publication/update artifact. Every native invocation also
13
- selects one explicit compatible `--arcane-root` and one app descriptor that
14
- already declares that target; a target list never causes provider discovery or
15
- additional builds.
16
-
17
- The SDK repository test cardinality is:
18
-
19
- ```text
20
- 1 repository x 4 named sets x each assigned test file exactly once
21
- ```
22
-
23
- Unit, functional, integration, and regression scripts form one validated,
24
- non-overlapping inventory. The complete command adds three lightweight set
25
- coordinator launches compared with the former single discovery pass, but it
26
- does not repeat a test file, assertion, package installation, provider scan,
27
- build, or fixture. Smaller nested `vanilla-test` cases reuse their parent
28
- file's already-owned setup and cleanup boundary.
29
-
30
- Shared/Core development has a separate integrated-only cardinality:
31
-
32
- ```text
33
- 1 integrated workspace x 1 fixed provider generation x 1 operation x 1 owned process tree
34
- ```
35
-
36
- The focused-test operation selects exactly one repository-relative
37
- `.test.mjs`; the development-check operation selects only Arcane's canonical
38
- check. The 14,465-byte provider is read and hashed once for the process
39
- generation, then its unchanged filesystem identity is checked without rereading
40
- or rehashing its bytes around import and execution. Preparation reads Arcane's
41
- 10,270-byte package manifest once and launches one owned process tree. A focused
42
- fixture completed in about 0.14 seconds on the development laptop; the canonical
43
- check owns its nested npm/test process tree and intentionally costs the complete
44
- Arcane development gate. Within one SDK process, one checkout admits only one
45
- such process tree at a time, so concurrent requests fail busy instead of
46
- multiplying that gate. Shared scope has no app, package, target, architecture,
47
- format, or signing loop and does not produce app output.
48
-
49
- ## Cold-path budget
50
-
51
- - Scaffold: approximately 15-25 files, less than 100 KiB, target under one
52
- second before an optional dependency installation.
53
- - Shared browser payload: 188 files / 12,854,565 bytes, comprising the exact
54
- 160-file / 3,549,207-byte SDK-canonical runtime receipt, the separate
55
- 25-file / 9,265,304-byte SDK browser-runtime receipt, and three SDK licensing
56
- files / 40,054 canonical LF bytes, verified once per exact SDK installation
57
- state.
58
- The SDK is the canonical owner of portable shared runtime. The receipt keeps
59
- the prior Arcane OS identity only as migration provenance and binds the
60
- SDK-owned inventory once without multiplying payload verification.
61
- - Small browser package: app bytes plus the shared runtime, copied and inventoried
62
- once into an atomic staging directory.
63
- - Portable build: one explicitly selected app and one host platform request. In
64
- a fresh packed-SDK external-repository run on Windows, the SDK's Arcane 0.8.11
65
- runtime produced a 153-file, 3,236,727-byte selected release against the newer
66
- compatible Arcane 0.8.12 toolchain. The verified portable result contained
67
- 160 files and 4,570,320 bytes. The complete pack, install, Ollama doctor, app
68
- check, toolchain preparation, build, and verification sequence completed in
69
- approximately 9.2 seconds. This is development evidence, not a cross-machine
70
- performance guarantee.
71
- - Shared native closure packaging: one retained shared-payload snapshot reads
72
- and hashes the current manifest-bound runtime and licensing inventory once. A
73
- two-app closure reuses that snapshot instead of repeating those source reads
74
- for each app; each distinct app release still writes and inventories its own
75
- output once.
76
- - Windows x64 executable: one cold development request retained 2,530 toolchain
77
- files / 218,292,008 bytes once, compiled one 22-file / 60,488,912-byte
78
- external artifact, reused its verified receipt, reached authenticated host
79
- readiness, and cancelled the owned process tree in 11.8 seconds. The selected
80
- app release contained seven files, each read once.
81
- - Linux x64 executable: one WSL development request produced one 23,577,108-byte
82
- amd64 DEB with 328 verified installed files / 82,783,539 uncompressed bytes.
83
- Toolchain preparation took 7.1 seconds, build plus verification took 15.7
84
- seconds, repeat verification reused the identical receipt in 0 ms, and the
85
- WSLg host ran for eight seconds before owned cancellation.
86
- - Linux ARM64 executable: exact-SHA workflow run `31842361832` authenticated one
87
- seven-file / 5,143-byte release with seven provider reads and two retained
88
- browser-runtime source reads, each exactly once. It retained 2,461 toolchain
89
- files / 113,959,126 bytes, compiled a 149,720-byte AArch64 host and 71,240-byte
90
- AArch64 bridge, and built one retained-verified 21,232,932-byte ARM64 DEB.
91
- Preparation took 6,304 ms, build 16,868 ms, verification 447 ms, WebKit
92
- readiness 1,972 ms, and the complete build/readiness/cancellation lifecycle
93
- 25,625 ms. The owned leader and process group were live at readiness and
94
- absent after cancellation. The workflow kept Ubuntu's AppArmor
95
- user-namespace restriction enabled while loading the packaged Bubblewrap
96
- profile. This is development evidence for source revision
97
- `4382043c09285ea203aa6daba1732660966ac409`, not Linux signing, installation,
98
- release, or promotion evidence.
99
- - Android ARM64 application: one exact-SHA development request authenticated a
100
- five-file / 611-byte synthetic external release with five release reads,
101
- prepared one retained offline Gradle/toolchain closure in 159.4 seconds,
102
- built one 1,438,324-byte APK in 69.9 seconds, reused verification evidence in
103
- 3 ms, and reached exact process/generation/nonce-bound content-and-bridge
104
- readiness on a physical ARM64/API 37 device in 4.5 seconds. The APK contained
105
- 64 ZIP entries and zero native ABI entries. The 234.2-second total also proved
106
- owned cancellation, force-stop, uninstall, and post-run package absence. This
107
- is development evidence for source revision `be6732ab71cbecb43d037aaad994ade5f2f4d1b6`,
108
- not Android release, store, update, or promotion evidence.
109
-
110
- Invariant work includes SDK/runtime resolution and each selected provider
111
- generation, snapshotted once per prepared toolchain state. The portable
112
- provider's 20 required Arcane toolchain inputs remain one such snapshot. App
113
- source validation, tests, and release inventory are identity-bound once per app
114
- state. Portable assembly, Windows/Linux compilation, and Android APK assembly
115
- and development signing are identity-bound once per requested target. Final
116
- artifact verification authenticates and reuses the retained receipt instead of
117
- repeating toolchain preparation or final inventory work. Compatible file
118
- traversal is batched with bounded sequential streaming.
119
-
120
- Runtime verification binds version, source identity, inventory, and hashes. The
121
- schema-1 app-release manifest binds its packaged inventory and content digest.
122
- Because an ordinary filesystem tree can change after a process-local receipt is
123
- issued, the browser consumer performs one bounded read/hash/post-identity check
124
- for the exact response bytes before headers. That creates the response's
125
- immutable state; it is not a second package-inventory pass. At most four files
126
- of 64 MiB each can be active, and additional requests wait in a bounded queue.
127
- Future reusable cross-process receipts must additionally bind and retain the
128
- canonical location, filesystem identity, policy, toolchain, platform,
129
- architecture, signer, and generation, and must be invalidated before mutation.