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,45 @@
1
+ {
2
+ "name": "strong-type",
3
+ "version": "1.1.0",
4
+ "type": "module",
5
+ "description": "allows easy type enforcement for all JS types objects and classes. it is also extensible and provides simple to use type checks for your own custom classes and types",
6
+ "main": "index.js",
7
+ "directories": {
8
+ "example": "example"
9
+ },
10
+ "engines": {
11
+ "node": ">=12.21.0"
12
+ },
13
+ "scripts": {
14
+ "test": "npm i && c8 -r lcov -r html node test/CI.js && c8 report && node ./lcov.js",
15
+ "start": "npm run emulate && node-http-server port=8000 verbose=true",
16
+ "emulate": "npm i && copyfiles -V \"./!(node_modules)/*\" \"./**!(node_modules)\" \"./example/node_modules/strong-type/\" && copyfiles -V \"./node_modules/**/*\" \"./example/\" && copyfiles -V \"./!(node_modules)/*\" \"./**!(node_modules)\"",
17
+ "nodeExample": "node ./example/node/typecheck.js",
18
+ "coverage": "echo 'See your coverage report at http://localhost:8080' && node-http-server port=8080 root=./coverage/"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/RIAEvangelist/strong-type.git"
23
+ },
24
+ "keywords": [
25
+ "strong",
26
+ "type",
27
+ "validation",
28
+ "validate",
29
+ "check",
30
+ "checking"
31
+ ],
32
+ "author": "Brandon Nozaki Miller",
33
+ "license": "MIT",
34
+ "bugs": {
35
+ "url": "https://github.com/RIAEvangelist/strong-type/issues"
36
+ },
37
+ "homepage": "https://github.com/RIAEvangelist/strong-type#readme",
38
+ "devDependencies": {
39
+ "c8": "^7.6.0",
40
+ "copyfiles": "*",
41
+ "lcov2badge": "^0.1.2",
42
+ "node-http-server": "^8.1.3",
43
+ "vanilla-test": "*"
44
+ }
45
+ }
@@ -0,0 +1,125 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/TheWizardNexus/arcane-os-sdk/schemas/arcane-app-bundle.schema.json",
4
+ "title": "Arcane external application release bundle",
5
+ "description": "Deterministic USTAR+gzip envelope binding one authored schema-2 descriptor to one verified Arcane browser release.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schemaVersion",
10
+ "kind",
11
+ "format",
12
+ "sdk",
13
+ "app",
14
+ "descriptor",
15
+ "release",
16
+ "payload"
17
+ ],
18
+ "properties": {
19
+ "schemaVersion": { "const": 1 },
20
+ "kind": { "const": "arcane-app-release-bundle" },
21
+ "format": { "const": "ustar+gzip" },
22
+ "sdk": {
23
+ "type": "object",
24
+ "additionalProperties": false,
25
+ "required": ["name", "version"],
26
+ "properties": {
27
+ "name": { "const": "arcane-os" },
28
+ "version": { "$ref": "#/$defs/semver" }
29
+ }
30
+ },
31
+ "app": {
32
+ "type": "object",
33
+ "additionalProperties": false,
34
+ "required": ["id", "version"],
35
+ "properties": {
36
+ "id": { "$ref": "#/$defs/appId" },
37
+ "version": { "$ref": "#/$defs/semver" }
38
+ }
39
+ },
40
+ "descriptor": {
41
+ "type": "object",
42
+ "additionalProperties": false,
43
+ "required": [
44
+ "path",
45
+ "schemaVersion",
46
+ "canonicalSha256",
47
+ "packageSha256",
48
+ "fileSha256",
49
+ "bytes"
50
+ ],
51
+ "properties": {
52
+ "path": { "const": "arcane-app.json" },
53
+ "schemaVersion": { "const": 2 },
54
+ "canonicalSha256": { "$ref": "#/$defs/sha256" },
55
+ "packageSha256": { "$ref": "#/$defs/sha256" },
56
+ "fileSha256": { "$ref": "#/$defs/sha256" },
57
+ "bytes": { "type": "integer", "minimum": 1, "maximum": 4194304 }
58
+ }
59
+ },
60
+ "release": {
61
+ "type": "object",
62
+ "additionalProperties": false,
63
+ "required": [
64
+ "path",
65
+ "schemaVersion",
66
+ "builder",
67
+ "policySha256",
68
+ "manifestSha256",
69
+ "contentSha256",
70
+ "fileCount",
71
+ "totalBytes"
72
+ ],
73
+ "properties": {
74
+ "path": { "const": "payload/ARCANE_APP_RELEASE.json" },
75
+ "schemaVersion": { "const": 1 },
76
+ "builder": { "const": "arcane-app-packager-v1" },
77
+ "policySha256": { "$ref": "#/$defs/sha256" },
78
+ "manifestSha256": { "$ref": "#/$defs/sha256" },
79
+ "contentSha256": { "$ref": "#/$defs/sha256" },
80
+ "fileCount": { "type": "integer", "minimum": 1, "maximum": 16381 },
81
+ "totalBytes": { "type": "integer", "minimum": 1, "maximum": 1073741824 }
82
+ }
83
+ },
84
+ "payload": {
85
+ "type": "object",
86
+ "additionalProperties": false,
87
+ "required": ["root", "fileCount", "totalBytes", "files"],
88
+ "properties": {
89
+ "root": { "const": "payload" },
90
+ "fileCount": { "type": "integer", "minimum": 1, "maximum": 16381 },
91
+ "totalBytes": { "type": "integer", "minimum": 1, "maximum": 1073741824 },
92
+ "files": {
93
+ "type": "array",
94
+ "minItems": 1,
95
+ "maxItems": 16381,
96
+ "items": { "$ref": "#/$defs/file" }
97
+ }
98
+ }
99
+ }
100
+ },
101
+ "$defs": {
102
+ "appId": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" },
103
+ "semver": {
104
+ "type": "string",
105
+ "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"
106
+ },
107
+ "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
108
+ "relativePath": {
109
+ "type": "string",
110
+ "minLength": 1,
111
+ "maxLength": 256,
112
+ "pattern": "^(?!.*\\\\)(?!.*:)(?!.*[<>\"|?*])(?!.*(?:^|/)(?:\\.{1,2}|(?:[Cc][Oo][Nn]|[Pp][Rr][Nn]|[Aa][Uu][Xx]|[Nn][Uu][Ll]|[Cc][Ll][Oo][Cc][Kk]\\$|[Cc][Oo][Nn][Ii][Nn]\\$|[Cc][Oo][Nn][Oo][Uu][Tt]\\$|[Cc][Oo][Mm][1-9¹²³]|[Ll][Pp][Tt][1-9¹²³])(?:\\.[^/]*)?)(?:/|$))(?!.*[. ](?:/|$))[^/\\u0000-\\u001f\\u007f]+(?:/[^/\\u0000-\\u001f\\u007f]+)*$"
113
+ },
114
+ "file": {
115
+ "type": "object",
116
+ "additionalProperties": false,
117
+ "required": ["path", "bytes", "sha256"],
118
+ "properties": {
119
+ "path": { "$ref": "#/$defs/relativePath" },
120
+ "bytes": { "type": "integer", "minimum": 0, "maximum": 536870912 },
121
+ "sha256": { "$ref": "#/$defs/sha256" }
122
+ }
123
+ }
124
+ }
125
+ }
@@ -0,0 +1,329 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/TheWizardNexus/arcane-os-sdk/schemas/arcane-app.schema.json",
4
+ "title": "Arcane application descriptor",
5
+ "description": "Canonical application-owned descriptor projected into browser packaging and native Arcane admission inputs.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schemaVersion",
10
+ "id",
11
+ "displayName",
12
+ "description",
13
+ "version",
14
+ "publisher",
15
+ "package",
16
+ "permissions",
17
+ "security",
18
+ "native",
19
+ "requirements",
20
+ "targets"
21
+ ],
22
+ "properties": {
23
+ "schemaVersion": { "const": 2 },
24
+ "id": { "$ref": "#/$defs/appId" },
25
+ "displayName": { "$ref": "#/$defs/presentationText" },
26
+ "description": { "$ref": "#/$defs/description" },
27
+ "version": { "$ref": "#/$defs/semver" },
28
+ "publisher": {
29
+ "type": "object",
30
+ "additionalProperties": false,
31
+ "required": ["id", "name"],
32
+ "properties": {
33
+ "id": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
34
+ "name": { "$ref": "#/$defs/presentationText" }
35
+ }
36
+ },
37
+ "package": {
38
+ "type": "object",
39
+ "additionalProperties": false,
40
+ "required": ["entry", "strategy", "include", "exclude", "shared"],
41
+ "properties": {
42
+ "entry": { "$ref": "#/$defs/relativePath" },
43
+ "strategy": { "enum": ["static", "adapter"] },
44
+ "localAIModelPolicy": { "$ref": "#/$defs/localAIModelPolicy" },
45
+ "include": { "$ref": "#/$defs/nonemptyPathList" },
46
+ "exclude": { "$ref": "#/$defs/pathList" },
47
+ "shared": {
48
+ "type": "array",
49
+ "minItems": 1,
50
+ "maxItems": 64,
51
+ "uniqueItems": true,
52
+ "items": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" }
53
+ },
54
+ "adapter": {
55
+ "allOf": [
56
+ { "$ref": "#/$defs/relativePath" },
57
+ { "pattern": "^scripts/[A-Za-z0-9._/-]+\\.mjs$" }
58
+ ]
59
+ }
60
+ },
61
+ "allOf": [
62
+ {
63
+ "if": { "properties": { "strategy": { "const": "adapter" } }, "required": ["strategy"] },
64
+ "then": { "required": ["adapter"] },
65
+ "else": { "not": { "required": ["adapter"] } }
66
+ }
67
+ ]
68
+ },
69
+ "permissions": {
70
+ "type": "object",
71
+ "additionalProperties": false,
72
+ "required": ["capabilities", "methods"],
73
+ "properties": {
74
+ "capabilities": {
75
+ "allOf": [
76
+ { "$ref": "#/$defs/permissionList" },
77
+ {
78
+ "not": {
79
+ "allOf": [
80
+ { "contains": { "const": "external.open" } },
81
+ { "contains": { "const": "web.embed" } }
82
+ ]
83
+ }
84
+ }
85
+ ]
86
+ },
87
+ "methods": { "$ref": "#/$defs/methodList" }
88
+ }
89
+ },
90
+ "security": {
91
+ "type": "object",
92
+ "additionalProperties": false,
93
+ "required": ["connectOrigins", "frameOrigins", "mediaOrigins"],
94
+ "properties": {
95
+ "connectOrigins": { "$ref": "#/$defs/connectOriginList" },
96
+ "frameOrigins": { "$ref": "#/$defs/frameOriginList" },
97
+ "mediaOrigins": { "$ref": "#/$defs/httpsOriginList" }
98
+ }
99
+ },
100
+ "native": {
101
+ "type": "object",
102
+ "additionalProperties": false,
103
+ "required": ["type", "icon", "order", "bundledApps"],
104
+ "properties": {
105
+ "type": { "const": "app" },
106
+ "icon": {
107
+ "description": "A safe raster image path. Native targets require a non-null value. Coverage by package.include is enforced by the runtime validator because JSON Schema cannot compare property values or path prefixes.",
108
+ "oneOf": [{ "$ref": "#/$defs/rasterIcon" }, { "type": "null" }]
109
+ },
110
+ "order": { "type": "integer", "minimum": 0, "maximum": 10000 },
111
+ "bundledApps": {
112
+ "type": "array",
113
+ "maxItems": 16,
114
+ "uniqueItems": true,
115
+ "items": { "$ref": "#/$defs/appId" }
116
+ },
117
+ "documentCatalog": {
118
+ "type": "object",
119
+ "additionalProperties": false,
120
+ "properties": {
121
+ "policy": { "enum": ["empty-unpublished", "public-only"] },
122
+ "release": { "$ref": "#/$defs/relativePath" },
123
+ "destination": { "$ref": "#/$defs/relativePath" },
124
+ "originals": { "$ref": "#/$defs/relativePath" },
125
+ "manifest": { "type": "string", "pattern": "^[^/\\\\]+\\.json$" },
126
+ "expectedCount": { "type": "integer", "minimum": 1, "maximum": 512 }
127
+ },
128
+ "allOf": [
129
+ {
130
+ "if": { "properties": { "policy": { "const": "empty-unpublished" } }, "required": ["policy"] },
131
+ "then": {
132
+ "required": ["policy", "destination", "manifest"],
133
+ "not": { "anyOf": [{ "required": ["release"] }, { "required": ["originals"] }, { "required": ["expectedCount"] }] }
134
+ },
135
+ "else": { "required": ["policy", "release", "destination", "originals", "manifest", "expectedCount"] }
136
+ }
137
+ ]
138
+ }
139
+ }
140
+ },
141
+ "requirements": {
142
+ "type": "object",
143
+ "additionalProperties": false,
144
+ "required": ["arcaneProtocol", "minimumCoreVersion", "features"],
145
+ "properties": {
146
+ "arcaneProtocol": { "const": "arcane/1" },
147
+ "minimumCoreVersion": { "$ref": "#/$defs/semver" },
148
+ "features": {
149
+ "type": "array",
150
+ "maxItems": 128,
151
+ "uniqueItems": true,
152
+ "items": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$" }
153
+ }
154
+ }
155
+ },
156
+ "targets": {
157
+ "type": "array",
158
+ "minItems": 1,
159
+ "maxItems": 6,
160
+ "uniqueItems": true,
161
+ "items": {
162
+ "enum": ["android-arm64", "browser", "linux-arm64", "linux-x64", "portable", "windows-x64"]
163
+ }
164
+ }
165
+ },
166
+ "allOf": [
167
+ {
168
+ "if": {
169
+ "properties": {
170
+ "targets": { "contains": { "not": { "const": "browser" } } }
171
+ },
172
+ "required": ["targets"]
173
+ },
174
+ "then": {
175
+ "properties": {
176
+ "native": {
177
+ "properties": {
178
+ "icon": { "$ref": "#/$defs/rasterIcon" }
179
+ },
180
+ "required": ["icon"]
181
+ }
182
+ },
183
+ "required": ["native"]
184
+ }
185
+ },
186
+ {
187
+ "if": {
188
+ "properties": {
189
+ "security": {
190
+ "properties": {
191
+ "frameOrigins": { "minItems": 1 }
192
+ },
193
+ "required": ["frameOrigins"]
194
+ }
195
+ },
196
+ "required": ["security"]
197
+ },
198
+ "then": {
199
+ "properties": {
200
+ "permissions": {
201
+ "properties": {
202
+ "capabilities": { "contains": { "const": "web.embed" } }
203
+ },
204
+ "required": ["capabilities"]
205
+ }
206
+ },
207
+ "required": ["permissions"]
208
+ }
209
+ },
210
+ {
211
+ "if": {
212
+ "properties": {
213
+ "id": { "not": { "const": "browser" } }
214
+ },
215
+ "required": ["id"]
216
+ },
217
+ "then": {
218
+ "properties": {
219
+ "security": {
220
+ "properties": {
221
+ "frameOrigins": {
222
+ "not": { "contains": { "const": "https:" } }
223
+ }
224
+ },
225
+ "required": ["frameOrigins"]
226
+ }
227
+ },
228
+ "required": ["security"]
229
+ }
230
+ }
231
+ ],
232
+ "$defs": {
233
+ "appId": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" },
234
+ "presentationText": {
235
+ "type": "string",
236
+ "minLength": 1,
237
+ "maxLength": 160,
238
+ "pattern": "^(?=.*\\S)[^<>\\u0000-\\u001f\\u007f]+$"
239
+ },
240
+ "description": {
241
+ "type": "string",
242
+ "minLength": 1,
243
+ "maxLength": 500,
244
+ "pattern": "^(?=.*\\S)[^<>\\u0000-\\u001f\\u007f]+$"
245
+ },
246
+ "semver": {
247
+ "type": "string",
248
+ "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"
249
+ },
250
+ "relativePath": {
251
+ "type": "string",
252
+ "minLength": 1,
253
+ "pattern": "^(?!.*\\\\)(?!.*:)(?!.*[<>\"|?*])(?!.*(?:^|/)(?:\\.{1,2}|(?:[Cc][Oo][Nn]|[Pp][Rr][Nn]|[Aa][Uu][Xx]|[Nn][Uu][Ll]|[Cc][Ll][Oo][Cc][Kk]\\$|[Cc][Oo][Nn][Ii][Nn]\\$|[Cc][Oo][Nn][Oo][Uu][Tt]\\$|[Cc][Oo][Mm][1-9¹²³]|[Ll][Pp][Tt][1-9¹²³])(?:\\.[^/]*)?)(?:/|$))(?!.*[. ](?:/|$))[^/\\u0000-\\u001f\\u007f]+(?:/[^/\\u0000-\\u001f\\u007f]+)*$"
254
+ },
255
+ "rasterIcon": {
256
+ "allOf": [
257
+ { "$ref": "#/$defs/relativePath" },
258
+ {
259
+ "maxLength": 160,
260
+ "pattern": "\\.(?:[Ii][Cc][Oo]|[Jj][Pp][Ee]?[Gg]|[Pp][Nn][Gg]|[Ww][Ee][Bb][Pp])$"
261
+ }
262
+ ]
263
+ },
264
+ "pathList": {
265
+ "type": "array",
266
+ "maxItems": 512,
267
+ "uniqueItems": true,
268
+ "items": { "$ref": "#/$defs/relativePath" }
269
+ },
270
+ "nonemptyPathList": {
271
+ "allOf": [{ "$ref": "#/$defs/pathList" }, { "minItems": 1 }]
272
+ },
273
+ "permissionList": {
274
+ "type": "array",
275
+ "maxItems": 256,
276
+ "uniqueItems": true,
277
+ "items": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9]*)+$" }
278
+ },
279
+ "methodList": {
280
+ "type": "array",
281
+ "maxItems": 512,
282
+ "uniqueItems": true,
283
+ "items": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:\\.[a-z][a-zA-Z0-9]*)+$" }
284
+ },
285
+ "connectOriginList": {
286
+ "type": "array",
287
+ "maxItems": 16,
288
+ "uniqueItems": true,
289
+ "items": {
290
+ "type": "string",
291
+ "pattern": "^(?:https://[^/?#]+|http://(?:127\\.0\\.0\\.1|\\[::1\\])(?::[0-9]{1,5})?)$"
292
+ }
293
+ },
294
+ "httpsOriginList": {
295
+ "type": "array",
296
+ "maxItems": 16,
297
+ "uniqueItems": true,
298
+ "items": { "type": "string", "pattern": "^https://[^/?#]+$" }
299
+ },
300
+ "frameOriginList": {
301
+ "type": "array",
302
+ "maxItems": 16,
303
+ "uniqueItems": true,
304
+ "items": { "type": "string", "pattern": "^(?:https:|https://[^/?#]+)$" }
305
+ },
306
+ "localAIModelPolicy": {
307
+ "type": "object",
308
+ "additionalProperties": false,
309
+ "required": ["verified_only", "models"],
310
+ "properties": {
311
+ "verified_only": { "type": "boolean" },
312
+ "models": {
313
+ "type": "array",
314
+ "maxItems": 64,
315
+ "uniqueItems": true,
316
+ "items": {
317
+ "type": "object",
318
+ "additionalProperties": false,
319
+ "required": ["name", "definition"],
320
+ "properties": {
321
+ "name": { "type": "string", "minLength": 1, "maxLength": 256 },
322
+ "definition": { "$ref": "#/$defs/relativePath" }
323
+ }
324
+ }
325
+ }
326
+ }
327
+ }
328
+ }
329
+ }
@@ -0,0 +1,86 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/TheWizardNexus/arcane-os-sdk/schemas/arcane-lock.schema.json",
4
+ "title": "Arcane SDK workspace lock",
5
+ "description": "Pins an authored workspace to one SDK runtime and protocol state.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schemaVersion",
10
+ "sdk",
11
+ "runtime",
12
+ "protocols"
13
+ ],
14
+ "properties": {
15
+ "schemaVersion": {
16
+ "const": 1
17
+ },
18
+ "sdk": {
19
+ "type": "object",
20
+ "additionalProperties": false,
21
+ "required": [
22
+ "name",
23
+ "version"
24
+ ],
25
+ "properties": {
26
+ "name": {
27
+ "const": "arcane-os"
28
+ },
29
+ "version": {
30
+ "const": "0.1.0-dev.5"
31
+ }
32
+ }
33
+ },
34
+ "runtime": {
35
+ "type": "object",
36
+ "additionalProperties": false,
37
+ "required": [
38
+ "manifest",
39
+ "contentSha256",
40
+ "upstreamCommit"
41
+ ],
42
+ "properties": {
43
+ "manifest": {
44
+ "const": "node_modules/arcane-os/runtime/ARCANE_RUNTIME_RELEASE.json"
45
+ },
46
+ "contentSha256": {
47
+ "$ref": "#/$defs/sha256"
48
+ },
49
+ "upstreamCommit": {
50
+ "type": "string",
51
+ "pattern": "^[0-9a-f]{40}$"
52
+ }
53
+ }
54
+ },
55
+ "protocols": {
56
+ "type": "object",
57
+ "additionalProperties": false,
58
+ "required": [
59
+ "arcane",
60
+ "cliEvents",
61
+ "targetAdapter"
62
+ ],
63
+ "properties": {
64
+ "arcane": {
65
+ "const": "arcane/1"
66
+ },
67
+ "cliEvents": {
68
+ "const": "arcane-cli-events/1"
69
+ },
70
+ "targetAdapter": {
71
+ "const": "arcane-target-adapter/1"
72
+ }
73
+ }
74
+ }
75
+ },
76
+ "$defs": {
77
+ "semver": {
78
+ "type": "string",
79
+ "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"
80
+ },
81
+ "sha256": {
82
+ "type": "string",
83
+ "pattern": "^[0-9a-f]{64}$"
84
+ }
85
+ }
86
+ }