@dopame/acde-linux-x64 0.0.0-stage → 0.0.10

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 (165) hide show
  1. package/LICENSE +8 -0
  2. package/bin/acde +66 -0
  3. package/bin/acde.cmd +45 -0
  4. package/bin/acdebin-dbg +4 -0
  5. package/bin/app/brand/art.mjs +53 -0
  6. package/bin/app/brand/brand.css +39 -0
  7. package/bin/app/brand/lockup.mjs +17 -0
  8. package/bin/app/brand/mark.mjs +124 -0
  9. package/bin/app/dist/broker.js +1 -0
  10. package/bin/app/dist/web.js +1 -0
  11. package/bin/app/greet/index.html +177 -0
  12. package/bin/app/greet/package.json +16 -0
  13. package/bin/app/package.json +35 -0
  14. package/lib/acde/LICENSE +8 -0
  15. package/lib/acde/dist/chunk-0n69bv5q.js +1 -0
  16. package/lib/acde/dist/chunk-1cw92x19.js +1 -0
  17. package/lib/acde/dist/chunk-458e14zb.js +1 -0
  18. package/lib/acde/dist/chunk-88mxgp54.js +1 -0
  19. package/lib/acde/dist/chunk-8dv09ven.js +1 -0
  20. package/lib/acde/dist/chunk-8fxsj5h6.js +1 -0
  21. package/lib/acde/dist/chunk-8pf3kk8v.js +1 -0
  22. package/lib/acde/dist/chunk-8r65bz1e.js +1 -0
  23. package/lib/acde/dist/chunk-9hpnkmxn.js +1 -0
  24. package/lib/acde/dist/chunk-a7w41xr9.js +1 -0
  25. package/lib/acde/dist/chunk-db7qqt8a.js +1 -0
  26. package/lib/acde/dist/chunk-e3rzr5fj.js +1 -0
  27. package/lib/acde/dist/chunk-ehms6xjp.js +1 -0
  28. package/lib/acde/dist/chunk-ggykhab6.js +1 -0
  29. package/lib/acde/dist/chunk-gt70e8h2.js +1 -0
  30. package/lib/acde/dist/chunk-hcf0xd5c.js +1 -0
  31. package/lib/acde/dist/chunk-hdrvz9sa.js +1 -0
  32. package/lib/acde/dist/chunk-jjq2mn94.js +1 -0
  33. package/lib/acde/dist/chunk-k8f4m94e.js +7 -0
  34. package/lib/acde/dist/chunk-mtgy1bm0.js +1 -0
  35. package/lib/acde/dist/chunk-mtw6p7kv.js +1 -0
  36. package/lib/acde/dist/chunk-nwkq7cpp.js +1 -0
  37. package/lib/acde/dist/chunk-nyr54266.js +1 -0
  38. package/lib/acde/dist/chunk-p0h5kspx.js +1 -0
  39. package/lib/acde/dist/chunk-pdj3h86e.js +1 -0
  40. package/lib/acde/dist/chunk-q9dbzac5.js +1 -0
  41. package/lib/acde/dist/chunk-qrhbrjzk.js +1 -0
  42. package/lib/acde/dist/chunk-s8p0y5ap.js +1 -0
  43. package/lib/acde/dist/chunk-t0xqxe00.js +1 -0
  44. package/lib/acde/dist/chunk-tgn5c2mw.js +1 -0
  45. package/lib/acde/dist/chunk-wmj6zwvn.js +1 -0
  46. package/lib/acde/dist/chunk-wnk81fkc.js +1 -0
  47. package/lib/acde/dist/chunk-x208z38w.js +1 -0
  48. package/lib/acde/dist/chunk-xq76vbg6.js +1 -0
  49. package/lib/acde/dist/chunk-xr9gh5x2.js +1 -0
  50. package/lib/acde/dist/chunk-yytnhz6e.js +1 -0
  51. package/lib/acde/dist/chunk-z0ts25s1.js +1 -0
  52. package/lib/acde/dist/chunk-zdyw1ckt.js +1 -0
  53. package/lib/acde/dist/cli.js +1 -0
  54. package/lib/acde/dist/driver/index.js +1 -0
  55. package/lib/acde/dist/e2e/index.js +1 -0
  56. package/lib/acde/dist/types/configs.d.ts +1 -0
  57. package/lib/acde/dist/types/driver/acde.d.ts +106 -0
  58. package/lib/acde/dist/types/driver/clock.d.ts +32 -0
  59. package/lib/acde/dist/types/driver/expect.d.ts +60 -0
  60. package/lib/acde/dist/types/driver/format.d.ts +16 -0
  61. package/lib/acde/dist/types/driver/index.d.ts +13 -0
  62. package/lib/acde/dist/types/driver/input.d.ts +75 -0
  63. package/lib/acde/dist/types/driver/locator.d.ts +151 -0
  64. package/lib/acde/dist/types/driver/logs.d.ts +26 -0
  65. package/lib/acde/dist/types/driver/png.d.ts +31 -0
  66. package/lib/acde/dist/types/driver/poll.d.ts +4 -0
  67. package/lib/acde/dist/types/driver/screenshot.d.ts +37 -0
  68. package/lib/acde/dist/types/driver/trace.d.ts +26 -0
  69. package/lib/acde/dist/types/driver/types.d.ts +213 -0
  70. package/lib/acde/dist/types/driver/video.d.ts +14 -0
  71. package/lib/acde/dist/types/driver/window.d.ts +77 -0
  72. package/lib/acde/dist/types/e2e/index.d.ts +78 -0
  73. package/lib/acde/dist/types/e2e/settings.d.ts +39 -0
  74. package/lib/acde/dist/types/ipc.d.ts +24 -0
  75. package/lib/acde/dist/types/paths.d.ts +5 -0
  76. package/lib/acde/dist/types/pm.d.ts +20 -0
  77. package/lib/acde/dist/types/runtime.d.ts +49 -0
  78. package/lib/acde/dist/types/sessions.d.ts +80 -0
  79. package/lib/acde/dist/types/sockets.d.ts +4 -0
  80. package/lib/acde/launcher.d.mts +25 -0
  81. package/lib/acde/launcher.mjs +1 -0
  82. package/lib/acde/package.json +31 -0
  83. package/lib/acde/skills/acde/SKILL.md +114 -0
  84. package/lib/acde/skills/acde/references/guide/agents.md +50 -0
  85. package/lib/acde/skills/acde/references/guide/assets.md +40 -0
  86. package/lib/acde/skills/acde/references/guide/backend.md +94 -0
  87. package/lib/acde/skills/acde/references/guide/capabilities.md +157 -0
  88. package/lib/acde/skills/acde/references/guide/config.md +73 -0
  89. package/lib/acde/skills/acde/references/guide/desktop.md +165 -0
  90. package/lib/acde/skills/acde/references/guide/dev.md +66 -0
  91. package/lib/acde/skills/acde/references/guide/doctor.md +144 -0
  92. package/lib/acde/skills/acde/references/guide/files.md +181 -0
  93. package/lib/acde/skills/acde/references/guide/frameworks.md +74 -0
  94. package/lib/acde/skills/acde/references/guide/install.md +34 -0
  95. package/lib/acde/skills/acde/references/guide/mcp.md +64 -0
  96. package/lib/acde/skills/acde/references/guide/open.md +107 -0
  97. package/lib/acde/skills/acde/references/guide/services.md +147 -0
  98. package/lib/acde/skills/acde/references/guide/testing.md +378 -0
  99. package/lib/acde/skills/acde/references/guide/tools.md +291 -0
  100. package/lib/acde/skills/acde/references/guide/window.md +167 -0
  101. package/lib/acde/skills/acde/references/reference/cli.md +221 -0
  102. package/lib/acde/skills/acde/references/reference/config.md +51 -0
  103. package/lib/acde/skills/acde/references/reference/env.md +44 -0
  104. package/lib/acde/skills/acde/references/reference/manifest.md +92 -0
  105. package/lib/acde/skills/acde/references/reference/modules.md +586 -0
  106. package/lib/acde/skills/acde/references/reference/platforms.md +23 -0
  107. package/lib/acde/skills/acde/references/reference/service.md +47 -0
  108. package/lib/acde/skills/acde/references/reference/testing.md +265 -0
  109. package/lib/acde/skills/acde/references/reference/web.md +94 -0
  110. package/lib/acde/skills/acde/references/start/first-app.md +87 -0
  111. package/lib/acde/skills/acde/references/start/install.md +232 -0
  112. package/lib/acde/skills/acde/references/start/project.md +77 -0
  113. package/lib/acde/templates/app/acde.config.jsonc +27 -0
  114. package/lib/acde/templates/app/gitignore +2 -0
  115. package/lib/acde/templates/app/index.html +22 -0
  116. package/lib/acde/templates/app/package.json +5 -0
  117. package/lib/acde/templates/app/src/i18n.js +26 -0
  118. package/lib/acde/templates/app/src/locales/en.js +4 -0
  119. package/lib/acde/templates/app/src/locales/zh.js +4 -0
  120. package/lib/acde/templates/app/src/main.js +5 -0
  121. package/lib/acde/templates/backend/server.ts +7 -0
  122. package/lib/acde/templates/backend/src/main.js +6 -0
  123. package/lib/acde/templates/desktop/acde.config.jsonc +17 -0
  124. package/lib/acde/templates/desktop/gitignore +2 -0
  125. package/lib/acde/templates/desktop/index.html +19 -0
  126. package/lib/acde/templates/desktop/package.json +5 -0
  127. package/lib/acde/templates/desktop/src/desktop.js +16 -0
  128. package/lib/acde/templates/desktop/src/i18n.js +26 -0
  129. package/lib/acde/templates/desktop/src/locales/en.js +4 -0
  130. package/lib/acde/templates/desktop/src/locales/zh.js +4 -0
  131. package/lib/acde/templates/framework/acde.config.jsonc +26 -0
  132. package/lib/acde-api/LICENSE +5 -0
  133. package/lib/acde-api/config.schema.json +563 -0
  134. package/lib/acde-api/package.json +51 -0
  135. package/lib/acde-api/src/app.d.ts +36 -0
  136. package/lib/acde-api/src/frame.d.ts +15 -0
  137. package/lib/acde-api/src/frame.js +1 -0
  138. package/lib/acde-api/src/index.d.ts +11 -0
  139. package/lib/acde-api/src/index.js +1 -0
  140. package/lib/acde-api/src/modules/app-modules.d.ts +81 -0
  141. package/lib/acde-api/src/modules/modules.d.ts +113 -0
  142. package/lib/acde-api/src/modules/shell-modules.d.ts +32 -0
  143. package/lib/acde-api/src/runtime/level.d.ts +1 -0
  144. package/lib/acde-api/src/runtime/level.js +1 -0
  145. package/lib/acde-api/src/runtime/load.d.ts +8 -0
  146. package/lib/acde-api/src/runtime/load.js +1 -0
  147. package/lib/acde-api/src/runtime/places.d.ts +3 -0
  148. package/lib/acde-api/src/runtime/places.js +1 -0
  149. package/lib/acde-api/src/runtime/platforms.d.ts +5 -0
  150. package/lib/acde-api/src/runtime/platforms.js +1 -0
  151. package/lib/acde-api/src/shell.d.ts +14 -0
  152. package/lib/acde-api/src/types/capabilities.d.ts +34 -0
  153. package/lib/acde-api/src/types/config.d.ts +55 -0
  154. package/lib/acde-api/src/types/events.d.ts +151 -0
  155. package/lib/acde-api/src/types/manifest.d.ts +83 -0
  156. package/lib/acde-api/src/types/office.d.ts +118 -0
  157. package/lib/acde-api/src/types/page.d.ts +1090 -0
  158. package/lib/acde-api/src/types/permissions.d.ts +50 -0
  159. package/lib/acde-api/src/types/service.d.ts +35 -0
  160. package/lib/acde-api/src/validate.d.ts +64 -0
  161. package/lib/acde-api/src/validate.js +1 -0
  162. package/lib/acde-api/src/vite.d.ts +3 -0
  163. package/lib/acde-api/src/vite.js +9 -0
  164. package/package.json +11 -4
  165. package/README.md +0 -3
@@ -0,0 +1,81 @@
1
+ declare module 'acde:fs' {
2
+ const fs: import('../types/page').AcdeFs
3
+ export { fs, fs as default }
4
+ }
5
+ declare module 'acde:office' {
6
+ const office: import('../types/page').AcdeOffice
7
+ export { office, office as default }
8
+ }
9
+ declare module 'acde:terminal' {
10
+ const terminal: import('../types/page').AcdeTerminals
11
+ export { terminal, terminal as default }
12
+ }
13
+ declare module 'acde:power' {
14
+ const power: import('../types/page').AcdePower
15
+ export { power, power as default }
16
+ }
17
+ declare module 'acde:input' {
18
+ const input: import('../types/page').AcdeInput
19
+ export { input, input as default }
20
+ }
21
+ declare module 'acde:display' {
22
+ const display: import('../types/page').AcdeDisplay
23
+ export { display, display as default }
24
+ }
25
+
26
+ declare module 'acde:devices' {
27
+ const devices: import('../types/page').AcdeDevices
28
+ export { devices, devices as default }
29
+ }
30
+
31
+ declare module 'acde:audio' {
32
+ const audio: import('../types/page').AcdeAudio
33
+ export { audio, audio as default }
34
+ }
35
+
36
+ declare module 'acde:bluetooth' {
37
+ const bluetooth: import('../types/page').AcdeBluetooth
38
+ export { bluetooth, bluetooth as default }
39
+ }
40
+
41
+ declare module 'acde:system' {
42
+ const system: import('../types/page').AcdeSystem
43
+ export { system, system as default }
44
+ }
45
+
46
+ declare module 'acde:network' {
47
+ const network: import('../types/page').AcdeNetwork
48
+ export { network, network as default }
49
+ }
50
+ declare module 'acde:launch' {
51
+ const launch: import('../types/page').AcdeLaunch
52
+ export { launch, launch as default }
53
+ }
54
+ declare module 'acde:apps' {
55
+ const apps: import('../types/page').AcdeAppList
56
+ export { apps, apps as default }
57
+ }
58
+ declare module 'acde:open' {
59
+ const open: import('../types/page').AcdeOpen
60
+ export { open, open as default }
61
+ }
62
+ declare module 'acde:openPath' {
63
+ const openPath: import('../types/page').AcdeOpenFiles['openPath']
64
+ export { openPath, openPath as default }
65
+ }
66
+ declare module 'acde:handlers' {
67
+ const handlers: import('../types/page').AcdeOpenFiles['handlers']
68
+ export { handlers, handlers as default }
69
+ }
70
+ declare module 'acde:window' {
71
+ const self: import('../types/page').AcdeWindow
72
+ export { self as window, self as default }
73
+ }
74
+ declare module 'acde:capabilities' {
75
+ const capabilities: import('../types/capabilities').AcdeCapabilities
76
+ export { capabilities, capabilities as default }
77
+ }
78
+ declare module 'acde:*' {
79
+ const service: unknown
80
+ export default service
81
+ }
@@ -0,0 +1,113 @@
1
+ declare module 'acde:fs' {
2
+ const fs: import('@dopame/acde-api').AcdeModules['fs']
3
+ export { fs, fs as default }
4
+ }
5
+ declare module 'acde:office' {
6
+ const office: import('@dopame/acde-api').AcdeModules['office']
7
+ export { office, office as default }
8
+ }
9
+ declare module 'acde:terminal' {
10
+ const terminal: import('@dopame/acde-api').AcdeModules['terminal']
11
+ export { terminal, terminal as default }
12
+ }
13
+ declare module 'acde:power' {
14
+ const power: import('@dopame/acde-api').AcdeModules['power']
15
+ export { power, power as default }
16
+ }
17
+ declare module 'acde:input' {
18
+ const input: import('@dopame/acde-api').AcdeModules['input']
19
+ export { input, input as default }
20
+ }
21
+ declare module 'acde:display' {
22
+ const display: import('@dopame/acde-api').AcdeModules['display']
23
+ export { display, display as default }
24
+ }
25
+
26
+ declare module 'acde:devices' {
27
+ const devices: import('@dopame/acde-api').AcdeModules['devices']
28
+ export { devices, devices as default }
29
+ }
30
+
31
+ declare module 'acde:audio' {
32
+ const audio: import('@dopame/acde-api').AcdeModules['audio']
33
+ export { audio, audio as default }
34
+ }
35
+
36
+ declare module 'acde:bluetooth' {
37
+ const bluetooth: import('@dopame/acde-api').AcdeModules['bluetooth']
38
+ export { bluetooth, bluetooth as default }
39
+ }
40
+
41
+ declare module 'acde:system' {
42
+ const system: import('@dopame/acde-api').AcdeModules['system']
43
+ export { system, system as default }
44
+ }
45
+
46
+ declare module 'acde:network' {
47
+ const network: import('@dopame/acde-api').AcdeModules['network']
48
+ export { network, network as default }
49
+ }
50
+ declare module 'acde:windows' {
51
+ const windows: import('@dopame/acde-api').AcdeModules['windows']
52
+ export { windows, windows as default }
53
+ }
54
+ declare module 'acde:launch' {
55
+ const launch: import('@dopame/acde-api').AcdeModules['launch']
56
+ export { launch, launch as default }
57
+ }
58
+ declare module 'acde:packages' {
59
+ const packages: import('@dopame/acde-api').AcdeModules['packages']
60
+ export { packages, packages as default }
61
+ }
62
+ declare module 'acde:apps' {
63
+ const apps: import('@dopame/acde-api').AcdeModules['apps']
64
+ export { apps, apps as default }
65
+ }
66
+ declare module 'acde:desktop' {
67
+ const desktop: import('@dopame/acde-api').AcdeModules['desktop']
68
+ export { desktop, desktop as default }
69
+ }
70
+ declare module 'acde:desktops' {
71
+ const desktops: import('@dopame/acde-api').AcdeModules['desktops']
72
+ export { desktops, desktops as default }
73
+ }
74
+ declare module 'acde:session' {
75
+ const session: import('@dopame/acde-api').AcdeModules['session']
76
+ export { session, session as default }
77
+ }
78
+ declare module 'acde:inspect' {
79
+ const inspect: import('@dopame/acde-api').AcdeModules['inspect']
80
+ export { inspect, inspect as default }
81
+ }
82
+ declare module 'acde:open' {
83
+ const open: import('@dopame/acde-api').AcdeModules['open']
84
+ export { open, open as default }
85
+ }
86
+ declare module 'acde:openPath' {
87
+ const openPath: import('@dopame/acde-api').AcdeModules['openPath']
88
+ export { openPath, openPath as default }
89
+ }
90
+ declare module 'acde:handlers' {
91
+ const handlers: import('@dopame/acde-api').AcdeModules['handlers']
92
+ export { handlers, handlers as default }
93
+ }
94
+ declare module 'acde:permissions' {
95
+ const permissions: import('@dopame/acde-api').AcdeModules['permissions']
96
+ export { permissions, permissions as default }
97
+ }
98
+ declare module 'acde:setDefault' {
99
+ const setDefault: import('@dopame/acde-api').AcdeModules['setDefault']
100
+ export { setDefault, setDefault as default }
101
+ }
102
+ declare module 'acde:window' {
103
+ const self: import('@dopame/acde-api').AcdeModules['window']
104
+ export { self as window, self as default }
105
+ }
106
+ declare module 'acde:capabilities' {
107
+ const capabilities: import('@dopame/acde-api').AcdeModules['capabilities']
108
+ export { capabilities, capabilities as default }
109
+ }
110
+ declare module 'acde:*' {
111
+ const service: unknown
112
+ export default service
113
+ }
@@ -0,0 +1,32 @@
1
+ declare module 'acde:windows' {
2
+ const windows: import('../types/page').AcdeWindows
3
+ export { windows, windows as default }
4
+ }
5
+ declare module 'acde:packages' {
6
+ const packages: import('../types/page').AcdePackages
7
+ export { packages, packages as default }
8
+ }
9
+ declare module 'acde:session' {
10
+ const session: import('../types/page').AcdeSession
11
+ export { session, session as default }
12
+ }
13
+ declare module 'acde:desktops' {
14
+ const desktops: import('../types/page').AcdeDesktops
15
+ export { desktops, desktops as default }
16
+ }
17
+ declare module 'acde:inspect' {
18
+ const inspect: import('../types/page').AcdeInspect
19
+ export { inspect, inspect as default }
20
+ }
21
+ declare module 'acde:desktop' {
22
+ const desktop: import('../types/page').AcdeDesktop
23
+ export { desktop, desktop as default }
24
+ }
25
+ declare module 'acde:permissions' {
26
+ const permissions: import('../types/permissions').AcdePermissions
27
+ export { permissions, permissions as default }
28
+ }
29
+ declare module 'acde:setDefault' {
30
+ const setDefault: import('../types/page').AcdeOpenFiles['setDefault']
31
+ export { setDefault, setDefault as default }
32
+ }
@@ -0,0 +1 @@
1
+ export declare const API_LEVEL: 1
@@ -0,0 +1 @@
1
+ const o=1;export{o as API_LEVEL};
@@ -0,0 +1,8 @@
1
+ import type { AcdePage } from '../types/page'
2
+
3
+ export type AcdeModules = {
4
+ readonly [K in keyof AcdePage as string extends K ? never : number extends K ? never : K]-?: NonNullable<AcdePage[K]>
5
+ }
6
+
7
+ export function load<K extends keyof AcdeModules>(name: K): Promise<AcdeModules[K] | null>
8
+ export function load(name: string): Promise<unknown>
@@ -0,0 +1 @@
1
+ function i(e){return import(`acde:${e}`).then(n=>n.default??null,()=>null)}export{i as load};
@@ -0,0 +1,3 @@
1
+ export declare const SHARED_PLACES: readonly ['desktop', 'documents', 'downloads', 'music', 'pictures', 'videos']
2
+ export type SharedPlace = (typeof SHARED_PLACES)[number]
3
+ export type PlaceCapability = `fs.${SharedPlace}`
@@ -0,0 +1 @@
1
+ const e=Object.freeze(["desktop","documents","downloads","music","pictures","videos"]);export{e as SHARED_PLACES};
@@ -0,0 +1,5 @@
1
+ import type { Platform, PlatformSupport, RunningMode } from '../types/capabilities'
2
+
3
+ export declare const RUNNING_MODES: readonly RunningMode[]
4
+ export declare const PLATFORM_SUPPORT: Readonly<Record<Platform, Partial<Readonly<Record<RunningMode, PlatformSupport>>>>>
5
+ export declare function platformSupport(platform: string, mode: RunningMode): PlatformSupport | null
@@ -0,0 +1 @@
1
+ const n=["slots"],t=["network","system","bluetooth","audio","devices","power","input","display","idleDetection","office","camera","microphone",...n],e=["network","system","bluetooth","audio","devices","power","input","display","idleDetection","office",...n],o={backdrop:"full"},i=["session","desktop","standalone"],p={linux:{session:{unsupported:[],window:o},desktop:{unsupported:n,window:o},standalone:{unsupported:n,window:o}},win32:{desktop:{unsupported:t,window:o},standalone:{unsupported:[...t,"notifications"],window:o}},darwin:{desktop:{unsupported:e,window:o},standalone:{unsupported:e,window:o}}};function u(s,d){return p[s]?.[d]??null}export{p as PLATFORM_SUPPORT,i as RUNNING_MODES,u as platformSupport};
@@ -0,0 +1,14 @@
1
+ /// <reference path="./modules/app-modules.d.ts" />
2
+ /// <reference path="./modules/shell-modules.d.ts" />
3
+ import type * as Page from './types/page'
4
+ import type { AppModules } from './app'
5
+
6
+ export type * from './app'
7
+ export { API_LEVEL } from './runtime/level'
8
+ export { PLATFORM_SUPPORT, RUNNING_MODES, platformSupport } from './runtime/platforms'
9
+ export { SHARED_PLACES, type PlaceCapability, type SharedPlace } from './runtime/places'
10
+
11
+ export interface ShellModules extends AppModules, Page.ShellModuleTypes {}
12
+
13
+ export function load<K extends keyof ShellModules>(name: K): Promise<ShellModules[K] | null>
14
+ export function load(name: string): Promise<unknown>
@@ -0,0 +1,34 @@
1
+ export type Platform = 'linux' | 'win32' | 'darwin'
2
+
3
+ export type RunningMode = 'session' | 'desktop' | 'standalone'
4
+
5
+ export type FeatureSupport = 'full' | 'approximated' | 'unsupported'
6
+
7
+ export interface WindowFeatures {
8
+ readonly backdrop: FeatureSupport
9
+ }
10
+
11
+ export interface PlatformSupport {
12
+ readonly unsupported: readonly string[]
13
+ readonly window: WindowFeatures
14
+ }
15
+
16
+ export type CapabilityState = 'available' | 'not-asked' | 'asking' | 'denied' | 'not-declared' | 'unsupported' | 'service-not-running' | 'shell-only'
17
+
18
+ export interface CapabilityStatus {
19
+ readonly name: string
20
+ readonly kind: 'system' | 'service'
21
+ readonly state: CapabilityState
22
+ readonly reason: string
23
+ readonly optional: boolean
24
+ }
25
+
26
+ export interface AcdeCapabilities {
27
+ readonly level: number
28
+ readonly platform: Platform
29
+ readonly mode: RunningMode
30
+ readonly window: WindowFeatures
31
+ get(name: string): CapabilityStatus
32
+ list(): CapabilityStatus[]
33
+ request(name: string): Promise<CapabilityStatus>
34
+ }
@@ -0,0 +1,55 @@
1
+ import type { Capabilities, IconName, ShellModule } from './manifest'
2
+
3
+ export type AcdeConfig = AppConfig | DesktopConfig
4
+
5
+ export interface ConfigCommon {
6
+ readonly $schema?: string
7
+ readonly name?: string
8
+ readonly version?: string
9
+ readonly apiLevel?: number
10
+ readonly public?: string
11
+ }
12
+
13
+ export interface WindowAppConfig {
14
+ readonly id?: string
15
+ readonly label?: string
16
+ readonly icon?: IconName | (string & {})
17
+ readonly entry?: string
18
+ readonly capabilities?: Capabilities
19
+ readonly optional?: readonly string[]
20
+ readonly services?: readonly string[]
21
+ readonly heapMb?: number
22
+ readonly size?: readonly [number, number]
23
+ readonly multiple?: boolean
24
+ readonly frame?: boolean
25
+ readonly mimeTypes?: readonly string[]
26
+ readonly backend?: false | BackendConfig
27
+ }
28
+
29
+ export interface BackendConfig {
30
+ readonly entry?: string
31
+ readonly port?: number
32
+ }
33
+
34
+ export interface ServiceConfig {
35
+ readonly module: string
36
+ readonly modules?: readonly ShellModule[]
37
+ }
38
+
39
+ export type Framework = 'auto' | 'none' | 'next' | 'nuxt' | 'sveltekit' | 'astro' | 'react-router' | 'remix' | 'angular' | 'vite' | 'cra' | 'script'
40
+
41
+ export interface AppConfig extends ConfigCommon, WindowAppConfig {
42
+ readonly type: 'app'
43
+ readonly framework?: Framework
44
+ }
45
+
46
+ export interface DesktopConfig extends ConfigCommon {
47
+ readonly type: 'desktop'
48
+ readonly id?: string
49
+ readonly label?: string
50
+ readonly description?: string
51
+ readonly entry?: string
52
+ readonly heapMb?: number
53
+ readonly services?: Readonly<Record<string, string | ServiceConfig>>
54
+ readonly apps?: readonly (WindowAppConfig & { readonly id: string; readonly entry: string })[]
55
+ }
@@ -0,0 +1,151 @@
1
+ import type { DesktopApp, WindowState } from './page'
2
+
3
+ interface WindowsEventOf<T extends string> {
4
+ readonly type: T
5
+ readonly window: number
6
+ }
7
+
8
+ export interface WindowOpenEvent extends WindowsEventOf<'windowopen'> {
9
+ readonly appId?: string | null
10
+ readonly title?: string | null
11
+ readonly web?: true
12
+ readonly icon?: string
13
+ }
14
+
15
+ export interface WindowTitleEvent extends WindowsEventOf<'windowtitle'> {
16
+ readonly appId?: string | null
17
+ readonly title?: string | null
18
+ }
19
+
20
+ export interface WindowsStateEvent extends WindowsEventOf<'windowstate'> {
21
+ readonly state: WindowState
22
+ readonly previous: WindowState
23
+ }
24
+
25
+ export interface WindowMinSizeEvent extends WindowsEventOf<'windowminsize'> {
26
+ readonly width: number
27
+ readonly height: number
28
+ }
29
+
30
+ export interface WindowParentEvent extends WindowsEventOf<'windowparent'> {
31
+ readonly parent?: number
32
+ }
33
+
34
+ export interface WindowMenuItem {
35
+ readonly id: string
36
+ readonly label: string
37
+ readonly shortcut?: string
38
+ readonly checked?: boolean
39
+ readonly disabled?: boolean
40
+ readonly action: boolean
41
+ }
42
+
43
+ export interface WindowMenu {
44
+ readonly id: string
45
+ readonly label: string
46
+ readonly items: readonly ({ readonly type: 'separator' } | WindowMenuItem)[]
47
+ }
48
+
49
+ export interface WindowMenusEvent extends WindowsEventOf<'windowmenus'> {
50
+ readonly menus: readonly WindowMenu[]
51
+ }
52
+
53
+ export interface WindowCrashEvent extends WindowsEventOf<'windowcrash'> {
54
+ readonly reason: string
55
+ }
56
+
57
+ export interface WindowsEventMap {
58
+ readonly open: WindowOpenEvent
59
+ readonly close: WindowsEventOf<'windowclose'>
60
+ readonly title: WindowTitleEvent
61
+ readonly state: WindowsStateEvent
62
+ readonly activate: WindowsEventOf<'windowactivate'>
63
+ readonly minsize: WindowMinSizeEvent
64
+ readonly parent: WindowParentEvent
65
+ readonly menus: WindowMenusEvent
66
+ readonly crash: WindowCrashEvent
67
+ readonly hang: WindowsEventOf<'windowhang'>
68
+ readonly responsive: WindowsEventOf<'windowresponsive'>
69
+ readonly attention: WindowsEventOf<'windowattention'>
70
+ readonly ready: WindowsEventOf<'windowready'>
71
+ readonly show: WindowsEventOf<'windowshow'>
72
+ readonly animated: WindowsEventOf<'windowanimated'>
73
+ }
74
+
75
+ export type WindowsEventType = keyof WindowsEventMap
76
+
77
+ export type WindowsEvent = WindowsEventMap[WindowsEventType]
78
+
79
+ export interface WindowsEvents {
80
+ on<K extends WindowsEventType>(type: K, handler: (event: WindowsEventMap[K]) => void): () => boolean
81
+ }
82
+
83
+ export interface AppsChangedEvent {
84
+ readonly type: 'appschanged'
85
+ readonly apps: readonly DesktopApp[]
86
+ }
87
+
88
+ export interface NotificationEvent {
89
+ readonly type: 'notification'
90
+ readonly window: number
91
+ readonly app: string | null
92
+ readonly label: string | null
93
+ readonly title: string
94
+ readonly body: string
95
+ readonly icon: string
96
+ readonly tag: string
97
+ }
98
+
99
+ export interface DownloadEvent {
100
+ readonly type: 'download'
101
+ readonly window: number
102
+ readonly app: string | null
103
+ readonly path: string
104
+ readonly name: string
105
+ readonly size: number
106
+ }
107
+
108
+ export type ScreenshotEvent =
109
+ | { readonly type: 'screenshot'; readonly path: string; readonly width: number; readonly height: number }
110
+ | { readonly type: 'screenshot'; readonly path: string; readonly error: string }
111
+
112
+ export type ShortcutScope = 'session' | 'desktop' | 'app'
113
+
114
+ export interface ShortcutEvent {
115
+ readonly type: 'shortcut'
116
+ readonly window: number
117
+ readonly key: string
118
+ readonly title: ShortcutScope
119
+ }
120
+
121
+ export type ScreenEdge = 'top' | 'right' | 'bottom' | 'left'
122
+
123
+ export interface ScreenEdgeEvent {
124
+ readonly type: 'screenedge'
125
+ readonly edge: ScreenEdge
126
+ readonly entered: boolean
127
+ readonly output: string
128
+ }
129
+
130
+ export interface DesktopEventMap {
131
+ readonly download: DownloadEvent
132
+ readonly edge: ScreenEdgeEvent
133
+ readonly notification: NotificationEvent
134
+ readonly screenshot: ScreenshotEvent
135
+ readonly shortcut: ShortcutEvent
136
+ }
137
+
138
+ export type TerminalEvent =
139
+ | { readonly type: 'output'; readonly data: string }
140
+ | { readonly type: 'cwd'; readonly path: string }
141
+ | { readonly type: 'exit'; readonly code: number | null; readonly signal: number | null }
142
+
143
+ export interface WindowGrabEvent {
144
+ readonly kind: 'pointer' | 'keyboard'
145
+ readonly granted: boolean
146
+ }
147
+
148
+ export interface WindowGrabLostEvent {
149
+ readonly kind: 'lost'
150
+ readonly reason: 'esc' | 'other_window' | 'focus_lost' | 'denied'
151
+ }
@@ -0,0 +1,83 @@
1
+ import type { SharedPlace } from '../runtime/places'
2
+ import type { IconName, ShellModule } from '../validate'
3
+
4
+ export type { IconName, ShellModule }
5
+
6
+ export interface PackageManifest {
7
+ readonly apiLevel?: number
8
+ readonly desktops?: readonly DesktopManifest[]
9
+ readonly apps?: readonly AppManifest[]
10
+ readonly assets?: Readonly<Record<string, readonly string[]>>
11
+ readonly services?: readonly ServiceManifest[]
12
+ }
13
+
14
+ export interface DesktopManifest {
15
+ readonly id: string
16
+ readonly name: string
17
+ readonly description?: string
18
+ readonly entry: string
19
+ readonly services?: readonly (string | DesktopService)[]
20
+ readonly heapMb?: number
21
+ }
22
+
23
+ export interface DesktopService {
24
+ readonly name: string
25
+ readonly modules?: readonly ShellModule[]
26
+ }
27
+
28
+ export interface AppManifest {
29
+ readonly id: string
30
+ readonly label: string
31
+ readonly icon: IconName | (string & {})
32
+ readonly entry: string
33
+ readonly capabilities?: Capabilities
34
+ readonly heapMb?: number
35
+ readonly size?: readonly [number, number]
36
+ readonly multiple?: boolean
37
+ readonly frame?: boolean
38
+ readonly mimeTypes?: readonly string[]
39
+ readonly schemes?: readonly string[]
40
+ readonly requests?: readonly string[]
41
+ readonly backend?: AppBackend
42
+ readonly optional?: readonly string[]
43
+ readonly services?: readonly string[]
44
+ }
45
+
46
+ export interface AppBackend {
47
+ readonly entry: string
48
+ readonly port?: number
49
+ }
50
+
51
+ export interface Capabilities {
52
+ readonly fs?: boolean | { readonly roots: readonly SharedPlace[] }
53
+ readonly terminal?: boolean
54
+ readonly network?: boolean
55
+ readonly system?: boolean
56
+ readonly bluetooth?: boolean
57
+ readonly audio?: boolean
58
+ readonly devices?: boolean
59
+ readonly power?: boolean
60
+ readonly input?: boolean
61
+ readonly display?: boolean
62
+ readonly idleDetection?: boolean
63
+ readonly office?: boolean
64
+ readonly launch?: boolean
65
+ readonly slots?: boolean
66
+ readonly open?: boolean | readonly string[]
67
+ readonly openFiles?: boolean
68
+ readonly windows?: boolean
69
+ readonly packages?: boolean
70
+ readonly session?: boolean
71
+ readonly desktops?: boolean
72
+ readonly inspect?: boolean
73
+ readonly desktop?: boolean
74
+ readonly setDefault?: boolean
75
+ readonly camera?: boolean
76
+ readonly microphone?: boolean
77
+ readonly [service: string]: unknown
78
+ }
79
+
80
+ export interface ServiceManifest {
81
+ readonly name: string
82
+ readonly module: string
83
+ }