arcane-os 0.1.0-dev.5

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 (248) hide show
  1. package/CHANGELOG.md +154 -0
  2. package/COMMERCIAL-LICENSE.md +13 -0
  3. package/LICENSE +661 -0
  4. package/NOTICE +70 -0
  5. package/README.md +448 -0
  6. package/bin/arcane-test.mjs +741 -0
  7. package/bin/arcane.mjs +5 -0
  8. package/docs/architecture.md +234 -0
  9. package/docs/compatibility.md +36 -0
  10. package/docs/event-manager.md +166 -0
  11. package/docs/platform-targets.md +108 -0
  12. package/docs/publishing.md +203 -0
  13. package/docs/reference/README.md +117 -0
  14. package/docs/reference/arcane-ollama.md +288 -0
  15. package/docs/reference/availability-and-normalization.md +123 -0
  16. package/docs/reference/behavioral-testing.md +86 -0
  17. package/docs/reference/cli.md +569 -0
  18. package/docs/reference/core/README.md +62 -0
  19. package/docs/reference/core/arcane-ai-contracts.md +873 -0
  20. package/docs/reference/core/arcane-api.md +601 -0
  21. package/docs/reference/core/arcane-entities.md +65 -0
  22. package/docs/reference/core/arcane-events.md +134 -0
  23. package/docs/reference/core/ollama-module.md +181 -0
  24. package/docs/reference/core/reference/arcane-api/ai-and-ollama.md +1909 -0
  25. package/docs/reference/core/reference/arcane-api/applications-terminal-capabilities.md +1057 -0
  26. package/docs/reference/core/reference/arcane-api/core-and-events.md +320 -0
  27. package/docs/reference/core/reference/arcane-api/filesystem-storage-preferences-appearance.md +610 -0
  28. package/docs/reference/core/reference/arcane-api/namespaces.md +1157 -0
  29. package/docs/reference/core/reference/arcane-api/platform-installation-users-system.md +1423 -0
  30. package/docs/reference/core/reference/arcane-api/session-provisioning-diagnostics-development.md +315 -0
  31. package/docs/reference/event-manager.md +957 -0
  32. package/docs/reference/inventory/package-api.json +2632 -0
  33. package/docs/reference/inventory/runtime-components.json +934 -0
  34. package/docs/reference/inventory/runtime-entities.json +26 -0
  35. package/docs/reference/inventory/runtime-modules.json +1249 -0
  36. package/docs/reference/protocols.md +242 -0
  37. package/docs/reference/runtime-components.md +1098 -0
  38. package/docs/reference/runtime-entities.md +303 -0
  39. package/docs/reference/runtime-modules.md +2010 -0
  40. package/docs/reference/sdk-api.md +4901 -0
  41. package/docs/roadmap.md +79 -0
  42. package/docs/work-amplification.md +124 -0
  43. package/node_modules/event-pubsub/CHANGELOG.md +55 -0
  44. package/node_modules/event-pubsub/MIGRATION.md +70 -0
  45. package/node_modules/event-pubsub/README.md +363 -0
  46. package/node_modules/event-pubsub/SECURITY.md +37 -0
  47. package/node_modules/event-pubsub/index.js +141 -0
  48. package/node_modules/event-pubsub/licence +21 -0
  49. package/node_modules/event-pubsub/package.json +59 -0
  50. package/node_modules/strong-type/README.md +408 -0
  51. package/node_modules/strong-type/assets/strong-type-header.png +0 -0
  52. package/node_modules/strong-type/index.js +1151 -0
  53. package/node_modules/strong-type/licence +21 -0
  54. package/node_modules/strong-type/node.js +125 -0
  55. package/node_modules/strong-type/package.json +61 -0
  56. package/package.json +95 -0
  57. package/runtime/ARCANE_RUNTIME_RELEASE.json +791 -0
  58. package/runtime/arcane/components/app-bar.html +468 -0
  59. package/runtime/arcane/components/assistant-panel.html +715 -0
  60. package/runtime/arcane/components/calculator.html +8 -0
  61. package/runtime/arcane/components/chart.html +655 -0
  62. package/runtime/arcane/components/chat.html +1225 -0
  63. package/runtime/arcane/components/conversation-view.html +13 -0
  64. package/runtime/arcane/components/dashboard-config.html +341 -0
  65. package/runtime/arcane/components/data-maintenance.html +112 -0
  66. package/runtime/arcane/components/data-view.html +92 -0
  67. package/runtime/arcane/components/directory-picker.html +197 -0
  68. package/runtime/arcane/components/document-inspector.html +252 -0
  69. package/runtime/arcane/components/file-drop.html +264 -0
  70. package/runtime/arcane/components/file-inspector.html +293 -0
  71. package/runtime/arcane/components/file-manager.html +1715 -0
  72. package/runtime/arcane/components/header.html +142 -0
  73. package/runtime/arcane/components/integration-settings.html +14 -0
  74. package/runtime/arcane/components/local-ai-status.html +360 -0
  75. package/runtime/arcane/components/markdown-document.html +1048 -0
  76. package/runtime/arcane/components/markdown-editor.html +360 -0
  77. package/runtime/arcane/components/media-embed.html +8 -0
  78. package/runtime/arcane/components/modal.html +402 -0
  79. package/runtime/arcane/components/output-panel.html +259 -0
  80. package/runtime/arcane/components/preferences-form.html +135 -0
  81. package/runtime/arcane/components/record-timeline.html +105 -0
  82. package/runtime/arcane/components/relationship-board.html +116 -0
  83. package/runtime/arcane/components/screen-capture.html +8 -0
  84. package/runtime/arcane/components/source-code-viewer.html +441 -0
  85. package/runtime/arcane/components/source-explanation.html +124 -0
  86. package/runtime/arcane/components/speech.html +365 -0
  87. package/runtime/arcane/components/summary-strip.html +177 -0
  88. package/runtime/arcane/components/table.html +77 -0
  89. package/runtime/arcane/components/task-progress.html +282 -0
  90. package/runtime/arcane/components/terminal-workspace.html +65 -0
  91. package/runtime/arcane/components/theme-editor.html +41 -0
  92. package/runtime/arcane/components/theme-switcher.html +46 -0
  93. package/runtime/arcane/components/unified-inbox.html +20 -0
  94. package/runtime/arcane/components/voice-transcription.html +476 -0
  95. package/runtime/arcane/components/weather-widget.html +8 -0
  96. package/runtime/arcane/components/web-navigator.html +239 -0
  97. package/runtime/arcane/css/communications.css +1 -0
  98. package/runtime/arcane/css/dashboard-config.css +45 -0
  99. package/runtime/arcane/css/document-site.css +981 -0
  100. package/runtime/arcane/css/layout.css +438 -0
  101. package/runtime/arcane/css/primitives.css +321 -0
  102. package/runtime/arcane/css/theme.css +112 -0
  103. package/runtime/arcane/css/utility-workspace.css +1 -0
  104. package/runtime/arcane/entities/ApiModelRecord.js +20 -0
  105. package/runtime/arcane/entities/Calculation.js +13 -0
  106. package/runtime/arcane/entities/Chat.js +581 -0
  107. package/runtime/arcane/entities/CommunicationMessage.js +29 -0
  108. package/runtime/arcane/entities/CommunicationThread.js +21 -0
  109. package/runtime/arcane/entities/Document.js +10 -0
  110. package/runtime/arcane/entities/File.js +143 -0
  111. package/runtime/arcane/entities/Image.js +135 -0
  112. package/runtime/arcane/entities/IntentEnvelope.js +834 -0
  113. package/runtime/arcane/entities/Preference.js +83 -0
  114. package/runtime/arcane/entities/TWiNPolicyDecision.js +1092 -0
  115. package/runtime/arcane/entities/TerminalSession.js +46 -0
  116. package/runtime/arcane/entities/Theme.js +107 -0
  117. package/runtime/arcane/entities/User.js +1046 -0
  118. package/runtime/arcane/entities/Weather.js +23 -0
  119. package/runtime/arcane/img/arcane-os-everywhere.png +0 -0
  120. package/runtime/arcane/img/arrow-left.png +0 -0
  121. package/runtime/arcane/img/arrow-right.png +0 -0
  122. package/runtime/arcane/img/doc.svg +5 -0
  123. package/runtime/arcane/img/folder.svg +4 -0
  124. package/runtime/arcane/img/image.svg +5 -0
  125. package/runtime/arcane/img/refresh.png +0 -0
  126. package/runtime/arcane/img/send.svg +9 -0
  127. package/runtime/arcane/img/trash.svg +5 -0
  128. package/runtime/arcane/img/upload.svg +5 -0
  129. package/runtime/arcane/modules/AI.js +2048 -0
  130. package/runtime/arcane/modules/AIPreferenceRuntime.js +32 -0
  131. package/runtime/arcane/modules/AIPreferenceTuple.js +92 -0
  132. package/runtime/arcane/modules/AIResponseLength.js +42 -0
  133. package/runtime/arcane/modules/AIResponseURLPolicy.js +626 -0
  134. package/runtime/arcane/modules/AnsiText.js +53 -0
  135. package/runtime/arcane/modules/ApiModelDatabase.js +25 -0
  136. package/runtime/arcane/modules/AppDataScope.js +245 -0
  137. package/runtime/arcane/modules/AppearancePreferences.js +28 -0
  138. package/runtime/arcane/modules/ArcaneCommunicationBridge.js +22 -0
  139. package/runtime/arcane/modules/ArcaneNavigationPolicy.js +135 -0
  140. package/runtime/arcane/modules/ArcaneNetworkPolicy.js +255 -0
  141. package/runtime/arcane/modules/AsyncBoundary.js +161 -0
  142. package/runtime/arcane/modules/BrowserTestSuite.js +326 -0
  143. package/runtime/arcane/modules/CalculatorEngine.js +20 -0
  144. package/runtime/arcane/modules/CaseEvidenceIndexer.js +134 -0
  145. package/runtime/arcane/modules/ChartLibrary.js +35 -0
  146. package/runtime/arcane/modules/ChatRecords.js +13 -0
  147. package/runtime/arcane/modules/CommunicationAppController.js +43 -0
  148. package/runtime/arcane/modules/CommunicationHub.js +16 -0
  149. package/runtime/arcane/modules/CommunicationPreferences.js +13 -0
  150. package/runtime/arcane/modules/CommunicationProviderRegistry.js +16 -0
  151. package/runtime/arcane/modules/ComponentContracts.js +586 -0
  152. package/runtime/arcane/modules/ConfiguredAIChatSession.js +288 -0
  153. package/runtime/arcane/modules/ConversationActionItems.js +488 -0
  154. package/runtime/arcane/modules/ConversationClosingReport.js +274 -0
  155. package/runtime/arcane/modules/ConversationTimebox.js +527 -0
  156. package/runtime/arcane/modules/CoreLocalModelCatalog.js +255 -0
  157. package/runtime/arcane/modules/DBLS.js +171 -0
  158. package/runtime/arcane/modules/DBOPFS.js +1154 -0
  159. package/runtime/arcane/modules/DBOPFSWorker.js +116 -0
  160. package/runtime/arcane/modules/DataMaintenance.js +91 -0
  161. package/runtime/arcane/modules/DevelopmentWorkspace.js +74 -0
  162. package/runtime/arcane/modules/DirectoryPicker.js +109 -0
  163. package/runtime/arcane/modules/DocumentNavigation.js +223 -0
  164. package/runtime/arcane/modules/Errors.js +1025 -0
  165. package/runtime/arcane/modules/GifEncoder.js +29 -0
  166. package/runtime/arcane/modules/HTMLImport.js +114 -0
  167. package/runtime/arcane/modules/InMemoryCommunicationProvider.js +14 -0
  168. package/runtime/arcane/modules/IsolatedModelQuestionRunner.js +275 -0
  169. package/runtime/arcane/modules/LocalAIReadiness.js +870 -0
  170. package/runtime/arcane/modules/LocalAIReadinessController.js +156 -0
  171. package/runtime/arcane/modules/MD.js +111 -0
  172. package/runtime/arcane/modules/Mail.js +352 -0
  173. package/runtime/arcane/modules/MailTransport.mjs +180 -0
  174. package/runtime/arcane/modules/Marked.min.js +71 -0
  175. package/runtime/arcane/modules/MemoryRecords.js +44 -0
  176. package/runtime/arcane/modules/MessageAdvisory.js +38 -0
  177. package/runtime/arcane/modules/ModelDefinition.js +189 -0
  178. package/runtime/arcane/modules/Ollama.js +74 -0
  179. package/runtime/arcane/modules/OllamaModelIdentifier.js +21 -0
  180. package/runtime/arcane/modules/OllamaSettings.js +24 -0
  181. package/runtime/arcane/modules/OpenMeteoWeatherProvider.js +14 -0
  182. package/runtime/arcane/modules/PreferenceStore.js +109 -0
  183. package/runtime/arcane/modules/QRCode.min.js +1 -0
  184. package/runtime/arcane/modules/Questionnaire.js +61 -0
  185. package/runtime/arcane/modules/RecordLinkIndex.js +24 -0
  186. package/runtime/arcane/modules/RecordPassageIndex.js +222 -0
  187. package/runtime/arcane/modules/RecordReviewStore.js +94 -0
  188. package/runtime/arcane/modules/RevocableProjectionLedger.js +1623 -0
  189. package/runtime/arcane/modules/RiskSignalAnalyzer.js +37 -0
  190. package/runtime/arcane/modules/ScamRiskPolicy.js +62 -0
  191. package/runtime/arcane/modules/ScopedOPFSCache.js +183 -0
  192. package/runtime/arcane/modules/ScreenCapture.js +20 -0
  193. package/runtime/arcane/modules/SpeechPlayback.js +581 -0
  194. package/runtime/arcane/modules/StaticDocumentCatalog.js +1248 -0
  195. package/runtime/arcane/modules/SystemAppearance.js +20 -0
  196. package/runtime/arcane/modules/SystemPlatformPresentation.js +51 -0
  197. package/runtime/arcane/modules/SystemToolRegistry.js +28 -0
  198. package/runtime/arcane/modules/TerminalClient.js +52 -0
  199. package/runtime/arcane/modules/TerminalCommandRegistry.js +50 -0
  200. package/runtime/arcane/modules/ThemeBootstrap.js +26 -0
  201. package/runtime/arcane/modules/ThemeManager.js +131 -0
  202. package/runtime/arcane/modules/TimeGuard.js +149 -0
  203. package/runtime/arcane/modules/ToolCallRouter.js +83 -0
  204. package/runtime/arcane/modules/WaitForComponent.js +102 -0
  205. package/runtime/arcane/modules/YouTubeMedia.js +16 -0
  206. package/runtime/arcane/modules/uPlot.LICENSE.txt +21 -0
  207. package/runtime/arcane/modules/uPlot.iife.min.js +2 -0
  208. package/runtime/arcane/modules/uPlot.min.css +1 -0
  209. package/runtime/arcane/security/arcane-network-policy.json +6 -0
  210. package/runtime/strong-type/index.js +352 -0
  211. package/runtime/strong-type/licence +21 -0
  212. package/runtime/strong-type/package.json +45 -0
  213. package/schemas/arcane-app-bundle.schema.json +125 -0
  214. package/schemas/arcane-app.schema.json +329 -0
  215. package/schemas/arcane-lock.schema.json +86 -0
  216. package/schemas/arcane-package.schema.json +224 -0
  217. package/schemas/cli-event.schema.json +122 -0
  218. package/schemas/event-stack.schema.json +152 -0
  219. package/schemas/native-build-plan.schema.json +176 -0
  220. package/schemas/target-adapter.schema.json +117 -0
  221. package/src/app-descriptor.mjs +500 -0
  222. package/src/cli/main.mjs +561 -0
  223. package/src/constants.mjs +31 -0
  224. package/src/dev-server.mjs +718 -0
  225. package/src/doctor.mjs +315 -0
  226. package/src/dom-event-instrumentation.mjs +594 -0
  227. package/src/errors.mjs +75 -0
  228. package/src/event-manager.mjs +1342 -0
  229. package/src/event-queue.mjs +138 -0
  230. package/src/events.mjs +219 -0
  231. package/src/index.mjs +177 -0
  232. package/src/integrated-provider-loader.mjs +432 -0
  233. package/src/native-plan.mjs +698 -0
  234. package/src/native-provider-loader.mjs +1126 -0
  235. package/src/packager/core.mjs +2691 -0
  236. package/src/process.mjs +353 -0
  237. package/src/release-bundle.mjs +2523 -0
  238. package/src/repository.mjs +90 -0
  239. package/src/runtime.mjs +452 -0
  240. package/src/scaffold.mjs +380 -0
  241. package/src/targets/index.mjs +436 -0
  242. package/src/templates/assets/app-icon.png +0 -0
  243. package/src/templates/workspace-template.mjs +388 -0
  244. package/src/testing-loader.mjs +9 -0
  245. package/src/testing.mjs +427 -0
  246. package/src/toolchain.mjs +1335 -0
  247. package/src/update-check.mjs +307 -0
  248. package/src/workspace.mjs +449 -0
@@ -0,0 +1,315 @@
1
+ # Arcane API session, provisioning, diagnostics, and development guides
2
+
3
+ These guides cover host-session control, read-only provisioning plans, local
4
+ diagnostics, and the bounded Developer application surface. They supplement the
5
+ canonical method inventory in [`docs/arcane-api.md`](../../arcane-api.md).
6
+
7
+ ## Arcane.session.logout()
8
+
9
+ ### Overview
10
+
11
+ Requests logout of the current operating-system session. It does not merely
12
+ close the Arcane window: other applications in the same desktop session may be
13
+ closed and unsaved work may be lost.
14
+
15
+ This method is restricted to a Shell application with `session.control` and is
16
+ an exclusive host mutation. Present an explicit confirmation immediately before
17
+ calling it.
18
+
19
+ ### Return value and completion
20
+
21
+ On a real host the promise resolves after the operating system accepted process
22
+ creation, with `{requested:true,accepted:true,simulated:false,command,pid}`.
23
+ Simulation has a distinct shape:
24
+ `{requested:true,accepted:true,simulated:true,command,args}`. It starts no
25
+ process and therefore has no `pid`. Acceptance is not proof that a real logout
26
+ completed; the renderer may lose its connection as the session ends.
27
+
28
+ Unsupported session controllers, process-dispatch failure, and a ten-second
29
+ dispatch timeout reject with a structured `Arcane.Error`.
30
+
31
+ ### Example
32
+
33
+ ```js
34
+ async function requestOperatingSystemLogout() {
35
+ const access = await Arcane.capabilities.list();
36
+ if (!access.methods.includes('session.logout')) {
37
+ throw new Error('Logout is unavailable in this application');
38
+ }
39
+ return Arcane.session.logout();
40
+ }
41
+
42
+ document.querySelector('#confirm-logout')?.addEventListener(
43
+ 'click',
44
+ async function handleConfirmedLogout() {
45
+ await requestOperatingSystemLogout();
46
+ }
47
+ );
48
+ ```
49
+ ## Arcane.provisioning.plan()
50
+
51
+ ### Overview
52
+
53
+ Builds a read-only plan for provisioning one or more local Arcane users. It
54
+ validates host-specific username policy, inspects current installation and
55
+ requirements, and describes the work that a later privileged operation would
56
+ perform. It does not create users, change passwords, assign shells, or install
57
+ Arcane.
58
+
59
+ ### Input and result
60
+
61
+ Pass one username or an array. The frontend normalizes a single value to an
62
+ array; Core applies the native username policy and rejects the whole request
63
+ when validation fails.
64
+
65
+ The Provisioner-only method requires `provisioning.manage` and resolves to:
66
+
67
+ ```text
68
+ {
69
+ ok, version, installation, requirements,
70
+ users: [{username, exists, action}],
71
+ usernamePolicy, elevated, simulation, blocked, steps
72
+ }
73
+ ```
74
+
75
+ Treat the returned plan as a current snapshot. Re-read it before presenting a
76
+ later mutation because accounts, elevation, requirements, or installation state
77
+ may have changed.
78
+
79
+ ### Example
80
+
81
+ ```js
82
+ async function previewProvisioning(usernames) {
83
+ const plan = await Arcane.provisioning.plan(usernames);
84
+ for (const user of plan.users) {
85
+ console.log(`${user.username}: ${user.action}`);
86
+ }
87
+ return plan;
88
+ }
89
+
90
+ await previewProvisioning(['arcane-demo-user']);
91
+ ```
92
+
93
+ ## Arcane.diagnostics.recentErrors()
94
+
95
+ ### Overview
96
+
97
+ Returns up to 60 recent structured Core errors, newest first, for an application
98
+ granted `diagnostics.read`. Use it to populate a local diagnostics view after a
99
+ failure; do not upload complete records automatically because technical fields
100
+ can contain local paths, command output, usernames, or other machine context.
101
+
102
+ ### Diagnostic records
103
+
104
+ Each record includes an opaque `id`, `time`, `scope`, stable `code`, user-facing
105
+ `message` and `resolution`, status and retry metadata, plus bounded technical
106
+ fields when the originating error supplied them. The in-memory list is not a
107
+ durable audit log and is replaced as newer failures arrive.
108
+
109
+ ### Example
110
+
111
+ ```js
112
+ async function showRecentDiagnosticSummaries() {
113
+ const diagnostics = await Arcane.diagnostics.recentErrors();
114
+ for (const item of diagnostics) {
115
+ console.log(`${item.time} ${item.code}: ${item.message}`);
116
+ }
117
+ }
118
+
119
+ await showRecentDiagnosticSummaries();
120
+ ```
121
+
122
+ ## Arcane.diagnostics.get()
123
+
124
+ ### Overview
125
+
126
+ Retrieves one complete in-memory diagnostic by the opaque ID returned through
127
+ `Arcane.diagnostics.recentErrors()`, a rejected `Arcane.Error.diagnosticId`, or a
128
+ `core.error` event. Use this only when the user asks to inspect the corresponding
129
+ failure in detail.
130
+
131
+ ### Return value and errors
132
+
133
+ Requires `diagnostics.read` and resolves to the matching diagnostic record. It
134
+ rejects with `DIAGNOSTIC_NOT_FOUND` after the record is evicted or Core restarts.
135
+ Do not assume an ID is portable between host sessions.
136
+
137
+ ### Example
138
+
139
+ ```js
140
+ async function loadNewestDiagnostic() {
141
+ const recent = await Arcane.diagnostics.recentErrors();
142
+ if (recent.length === 0) return null;
143
+ return Arcane.diagnostics.get(recent[0].id);
144
+ }
145
+
146
+ const diagnostic = await loadNewestDiagnostic();
147
+ if (diagnostic) console.log(diagnostic.code, diagnostic.resolution);
148
+ ```
149
+
150
+ ## Arcane.development.inspect()
151
+
152
+ ### Overview
153
+
154
+ Inspects one explicit canonical Arcane OS checkout and reports developer
155
+ readiness without changing it. The Developer application uses this snapshot to
156
+ show repository identity, Git state, external tools, signing readiness, and the
157
+ allowlisted setup tasks that are ready or need work.
158
+
159
+ ### Root and result
160
+
161
+ Requires `development.read` and the `developer` app ID. `root` must be an
162
+ existing absolute, non-link directory containing the expected `.git`, root
163
+ package, app-building SOP, theme, and canonical machine-bundle markers. Core
164
+ rejects a different or unsafe layout rather than treating any directory as a
165
+ development workspace. Git must be installed and the checkout must pass the
166
+ repository-lineage check; otherwise the call rejects with
167
+ `DEVELOPMENT_GIT_REQUIRED` or a more specific repository error.
168
+
169
+ The result contains `{root,runtimeVersion,repository,git,tools,signing,readiness}`.
170
+ `readiness.tasks` is the authoritative list to display; do not invent setup task
171
+ IDs or infer readiness from path names alone.
172
+
173
+ ### Example
174
+
175
+ ```js
176
+ async function inspectSelectedCheckout(root) {
177
+ const inspection = await Arcane.development.inspect(root);
178
+ for (const task of inspection.readiness.tasks) {
179
+ console.log(`${task.label}: ${task.ready ? 'ready' : task.message}`);
180
+ }
181
+ return inspection;
182
+ }
183
+
184
+ const inspection = await inspectSelectedCheckout('C:\\ArcaneOS');
185
+ console.log(inspection.repository.bundleVersion);
186
+ ```
187
+
188
+ ## Arcane.development.context()
189
+
190
+ ### Overview
191
+
192
+ Returns bounded, redacted source excerpts from tracked text files in an approved
193
+ Arcane checkout. It is intended for local developer assistance, not arbitrary
194
+ filesystem search. Core excludes Git metadata, dependencies, generated output,
195
+ credential-like paths, secret file names, binary extensions, links, and files
196
+ outside the checkout.
197
+
198
+ ### Query and result bounds
199
+
200
+ Requires `development.read` and the `developer` app ID. `query` must contain
201
+ 1–4,096 text characters. Core derives at most six search terms, ranks tracked
202
+ files, and returns at most ten files, 6,144 characters of excerpt per file, and
203
+ 49,152 characters of excerpt text overall. Individual candidates over 512 KiB
204
+ are excluded. Git and valid repository lineage are prerequisites; a missing Git
205
+ installation rejects with `DEVELOPMENT_GIT_REQUIRED` before source collection.
206
+
207
+ The promise resolves to `{root,query,files,totals}`. Each file record contains
208
+ `{path,bytes,sha256,truncated,redacted,content}`. A digest identifies the read
209
+ bytes for correlation only; it is not publisher authentication. Review returned
210
+ content before sending it to any external service even when `redacted` is true.
211
+
212
+ ### Example
213
+
214
+ ```js
215
+ async function findStorageImplementation(root) {
216
+ const result = await Arcane.development.context(
217
+ root,
218
+ 'Where is app-scoped storage validated and persisted?'
219
+ );
220
+ return result.files.map(function selectContextFile(file) {
221
+ return { path: file.path, content: file.content, redacted: file.redacted };
222
+ });
223
+ }
224
+
225
+ console.log(await findStorageImplementation('C:\\ArcaneOS'));
226
+ ```
227
+
228
+ ## Arcane.development.setup()
229
+
230
+ ### Overview
231
+
232
+ Runs one setup task previously reported by `Arcane.development.inspect()`. This
233
+ is a Developer-only, exclusive mutation requiring `development.manage`. It can
234
+ install dependency trees, configure Git hooks, or initialize local Microsoft NT
235
+ development signing, so show the exact task and obtain confirmation before
236
+ dispatch.
237
+
238
+ ### Task IDs and operation result
239
+
240
+ Pass the approved checkout `root` and one exact `taskId`:
241
+
242
+ - `root-dependencies`
243
+ - `machine-dependencies`
244
+ - `git-hooks`
245
+ - `windows-signing` (Microsoft NT only)
246
+
247
+ Core rejects every other value. Node.js 22+ with npm and Git are required for
248
+ all four tasks because Core validates repository lineage before dispatching any
249
+ setup operation. Missing Git rejects with `DEVELOPMENT_GIT_REQUIRED`. The
250
+ promise resolves to
251
+ `{root,taskId,completed:true,exitCode,operation}` after the owned task completes.
252
+ Follow `operation.started`, `operation.log`, `operation.progress`,
253
+ `operation.completed`, and `operation.failed` for visible long-work status.
254
+
255
+ ### Example
256
+
257
+ ```js
258
+ async function runConfirmedSetupTask(root, taskId) {
259
+ const inspection = await Arcane.development.inspect(root);
260
+ const task = inspection.readiness.tasks.find(function findSetupTask(item) {
261
+ return item.id === taskId;
262
+ });
263
+ if (!task || !task.available) throw new Error('Setup task is unavailable');
264
+ return Arcane.development.setup(root, taskId);
265
+ }
266
+
267
+ document.querySelector('#install-root-dependencies')?.addEventListener(
268
+ 'click',
269
+ async function handleDependencySetup() {
270
+ const result = await runConfirmedSetupTask('C:\\ArcaneOS', 'root-dependencies');
271
+ console.log(result.completed, result.exitCode);
272
+ }
273
+ );
274
+ ```
275
+
276
+ ## Arcane.development.installNode()
277
+
278
+ ### Overview
279
+
280
+ Installs the supported external Node.js development runtime through Arcane's
281
+ owned Developer workflow. This is a privileged, exclusive mutation available
282
+ only to the Developer application with `development.manage`, and only on
283
+ Microsoft NT. Linux callers receive guidance to use the operating system's
284
+ trusted package channel instead.
285
+
286
+ ### Result and operation lifecycle
287
+
288
+ The method takes no arguments and resolves to
289
+ `{installed,simulated,node,operation}`. On a real host, Core verifies that a
290
+ supported Node.js 22-or-newer runtime is usable after installation and rejects
291
+ when the installation command finishes without producing that state.
292
+
293
+ This can start external package-management work. Require confirmation and keep
294
+ the operation events visible rather than blocking the UI or promising a fixed
295
+ completion time.
296
+
297
+ ### Example
298
+
299
+ ```js
300
+ async function installNodeAfterConfirmation() {
301
+ const access = await Arcane.capabilities.list();
302
+ if (!access.methods.includes('development.node.install')) {
303
+ throw new Error('Managed Node.js installation is unavailable');
304
+ }
305
+ return Arcane.development.installNode();
306
+ }
307
+
308
+ document.querySelector('#install-node')?.addEventListener(
309
+ 'click',
310
+ async function handleNodeInstallation() {
311
+ const result = await installNodeAfterConfirmation();
312
+ console.log(result.node.version);
313
+ }
314
+ );
315
+ ```