botmux 3.2.1 → 3.4.0

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 (277) hide show
  1. package/dist/adapters/backend/sandbox.d.ts +47 -0
  2. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  3. package/dist/adapters/backend/sandbox.js +137 -0
  4. package/dist/adapters/backend/sandbox.js.map +1 -1
  5. package/dist/adapters/cli/pi.d.ts.map +1 -1
  6. package/dist/adapters/cli/pi.js +4 -0
  7. package/dist/adapters/cli/pi.js.map +1 -1
  8. package/dist/adapters/cli/read-isolation.d.ts +72 -3
  9. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  10. package/dist/adapters/cli/read-isolation.js +143 -6
  11. package/dist/adapters/cli/read-isolation.js.map +1 -1
  12. package/dist/adapters/cli/registry.d.ts.map +1 -1
  13. package/dist/adapters/cli/registry.js +8 -2
  14. package/dist/adapters/cli/registry.js.map +1 -1
  15. package/dist/adapters/cli/types.d.ts +8 -1
  16. package/dist/adapters/cli/types.d.ts.map +1 -1
  17. package/dist/cli/deferred-topic-send.d.ts +37 -0
  18. package/dist/cli/deferred-topic-send.d.ts.map +1 -0
  19. package/dist/cli/deferred-topic-send.js +69 -0
  20. package/dist/cli/deferred-topic-send.js.map +1 -0
  21. package/dist/cli/pm2-command.d.ts.map +1 -1
  22. package/dist/cli/pm2-command.js +6 -0
  23. package/dist/cli/pm2-command.js.map +1 -1
  24. package/dist/cli.d.ts.map +1 -1
  25. package/dist/cli.js +173 -34
  26. package/dist/cli.js.map +1 -1
  27. package/dist/core/command-handler.d.ts.map +1 -1
  28. package/dist/core/command-handler.js +17 -12
  29. package/dist/core/command-handler.js.map +1 -1
  30. package/dist/core/dashboard-ipc-server.d.ts +4 -1
  31. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  32. package/dist/core/dashboard-ipc-server.js +99 -8
  33. package/dist/core/dashboard-ipc-server.js.map +1 -1
  34. package/dist/core/deferred-schedule-settlement.d.ts +20 -0
  35. package/dist/core/deferred-schedule-settlement.d.ts.map +1 -0
  36. package/dist/core/deferred-schedule-settlement.js +18 -0
  37. package/dist/core/deferred-schedule-settlement.js.map +1 -0
  38. package/dist/core/deferred-topic-binding.d.ts +19 -0
  39. package/dist/core/deferred-topic-binding.d.ts.map +1 -0
  40. package/dist/core/deferred-topic-binding.js +55 -0
  41. package/dist/core/deferred-topic-binding.js.map +1 -0
  42. package/dist/core/device-isolation-activation.d.ts +56 -0
  43. package/dist/core/device-isolation-activation.d.ts.map +1 -0
  44. package/dist/core/device-isolation-activation.js +110 -0
  45. package/dist/core/device-isolation-activation.js.map +1 -0
  46. package/dist/core/device-isolation-daemon.d.ts +84 -0
  47. package/dist/core/device-isolation-daemon.d.ts.map +1 -0
  48. package/dist/core/device-isolation-daemon.js +591 -0
  49. package/dist/core/device-isolation-daemon.js.map +1 -0
  50. package/dist/core/scheduler.d.ts +26 -20
  51. package/dist/core/scheduler.d.ts.map +1 -1
  52. package/dist/core/scheduler.js +114 -56
  53. package/dist/core/scheduler.js.map +1 -1
  54. package/dist/core/session-discovery.d.ts.map +1 -1
  55. package/dist/core/session-discovery.js +47 -15
  56. package/dist/core/session-discovery.js.map +1 -1
  57. package/dist/core/session-manager.d.ts +17 -1
  58. package/dist/core/session-manager.d.ts.map +1 -1
  59. package/dist/core/session-manager.js +178 -84
  60. package/dist/core/session-manager.js.map +1 -1
  61. package/dist/core/types.d.ts +13 -0
  62. package/dist/core/types.d.ts.map +1 -1
  63. package/dist/core/types.js +10 -0
  64. package/dist/core/types.js.map +1 -1
  65. package/dist/core/worker-pool.d.ts +7 -0
  66. package/dist/core/worker-pool.d.ts.map +1 -1
  67. package/dist/core/worker-pool.js +86 -1
  68. package/dist/core/worker-pool.js.map +1 -1
  69. package/dist/daemon.d.ts.map +1 -1
  70. package/dist/daemon.js +95 -5
  71. package/dist/daemon.js.map +1 -1
  72. package/dist/dashboard/schedule-card-model.d.ts +12 -3
  73. package/dist/dashboard/schedule-card-model.d.ts.map +1 -1
  74. package/dist/dashboard/schedule-card-model.js +32 -8
  75. package/dist/dashboard/schedule-card-model.js.map +1 -1
  76. package/dist/dashboard/web/dashboard-components.d.ts +7 -0
  77. package/dist/dashboard/web/dashboard-components.d.ts.map +1 -1
  78. package/dist/dashboard/web/dashboard-components.js +11 -2
  79. package/dist/dashboard/web/dashboard-components.js.map +1 -1
  80. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  81. package/dist/dashboard/web/i18n.js +30 -6
  82. package/dist/dashboard/web/i18n.js.map +1 -1
  83. package/dist/dashboard/web/schedules-page.d.ts +2 -0
  84. package/dist/dashboard/web/schedules-page.d.ts.map +1 -1
  85. package/dist/dashboard/web/schedules-page.js +74 -27
  86. package/dist/dashboard/web/schedules-page.js.map +1 -1
  87. package/dist/dashboard-web/app.js +1 -1
  88. package/dist/dashboard-web/chunks/{bot-defaults-page-O37SAQD5.js → bot-defaults-page-B5AY4B2J.js} +1 -1
  89. package/dist/dashboard-web/chunks/{chunk-6QHMLMIM.js → chunk-CUV65BIQ.js} +3 -3
  90. package/dist/dashboard-web/chunks/{chunk-O2DPQL7C.js → chunk-JNRSPKLS.js} +1 -1
  91. package/dist/dashboard-web/chunks/{chunk-FYALHCPG.js → chunk-P6GO5KT4.js} +1 -1
  92. package/dist/dashboard-web/chunks/chunk-QFMH6ITB.js +1 -0
  93. package/dist/dashboard-web/chunks/{chunk-B42PCL5P.js → chunk-UBOLHQCK.js} +1 -1
  94. package/dist/dashboard-web/chunks/{connectors-page-DZBQ42MH.js → connectors-page-KTC2QWNW.js} +1 -1
  95. package/dist/dashboard-web/chunks/{groups-page-3IEGRZKQ.js → groups-page-B3EKGOLY.js} +1 -1
  96. package/dist/dashboard-web/chunks/{insights-page-X3ADRON3.js → insights-page-X6RXNCWX.js} +1 -1
  97. package/dist/dashboard-web/chunks/{monitor-room-IV36RGQY.js → monitor-room-LLRA5LQW.js} +1 -1
  98. package/dist/dashboard-web/chunks/{monitoring-page-ADFKVON4.js → monitoring-page-7MT5FEOS.js} +1 -1
  99. package/dist/dashboard-web/chunks/{office-page-CALAOWNS.js → office-page-KD46D5TD.js} +1 -1
  100. package/dist/dashboard-web/chunks/{overview-page-SLMGLK3M.js → overview-page-JUWNH32O.js} +1 -1
  101. package/dist/dashboard-web/chunks/{roles-page-L7JJ4FFV.js → roles-page-P6F7NLOI.js} +1 -1
  102. package/dist/dashboard-web/chunks/schedules-page-XIHWZST4.js +1 -0
  103. package/dist/dashboard-web/chunks/{sessions-page-OKJ5YWUZ.js → sessions-page-2VECQ27T.js} +1 -1
  104. package/dist/dashboard-web/chunks/{settings-page-P6MI2ZUE.js → settings-page-HMIUE2JA.js} +1 -1
  105. package/dist/dashboard-web/chunks/{skills-page-FT7BVZ6X.js → skills-page-A46KVWBL.js} +1 -1
  106. package/dist/dashboard-web/chunks/{team-federation-page-DEYCPUFB.js → team-federation-page-SDUC56DF.js} +1 -1
  107. package/dist/dashboard-web/chunks/{v3-page-4IOWREZG.js → v3-page-J5JOTUSQ.js} +1 -1
  108. package/dist/dashboard-web/chunks/{whiteboards-page-2VMBETZH.js → whiteboards-page-U7LSOAWI.js} +1 -1
  109. package/dist/dashboard-web/style.css +34 -4
  110. package/dist/dashboard.js +16 -1
  111. package/dist/dashboard.js.map +1 -1
  112. package/dist/desktop/main/auto-start.d.ts +2 -0
  113. package/dist/desktop/main/auto-start.d.ts.map +1 -1
  114. package/dist/desktop/main/auto-start.js +10 -6
  115. package/dist/desktop/main/auto-start.js.map +1 -1
  116. package/dist/desktop/main/bundled-runtime.d.ts +12 -0
  117. package/dist/desktop/main/bundled-runtime.d.ts.map +1 -0
  118. package/dist/desktop/main/bundled-runtime.js +30 -0
  119. package/dist/desktop/main/bundled-runtime.js.map +1 -0
  120. package/dist/desktop/main/device-status.d.ts +15 -0
  121. package/dist/desktop/main/device-status.d.ts.map +1 -0
  122. package/dist/desktop/main/device-status.js +94 -0
  123. package/dist/desktop/main/device-status.js.map +1 -0
  124. package/dist/desktop/main/external-runtime.d.ts +9 -0
  125. package/dist/desktop/main/external-runtime.d.ts.map +1 -1
  126. package/dist/desktop/main/external-runtime.js +88 -18
  127. package/dist/desktop/main/external-runtime.js.map +1 -1
  128. package/dist/desktop/main/ipc.d.ts.map +1 -1
  129. package/dist/desktop/main/ipc.js +1 -0
  130. package/dist/desktop/main/ipc.js.map +1 -1
  131. package/dist/desktop/main/node-command.d.ts +21 -0
  132. package/dist/desktop/main/node-command.d.ts.map +1 -1
  133. package/dist/desktop/main/node-command.js +41 -0
  134. package/dist/desktop/main/node-command.js.map +1 -1
  135. package/dist/desktop/main/pm2-apps.d.ts +4 -2
  136. package/dist/desktop/main/pm2-apps.d.ts.map +1 -1
  137. package/dist/desktop/main/pm2-apps.js +11 -3
  138. package/dist/desktop/main/pm2-apps.js.map +1 -1
  139. package/dist/desktop/main/runtime-service.d.ts +21 -5
  140. package/dist/desktop/main/runtime-service.d.ts.map +1 -1
  141. package/dist/desktop/main/runtime-service.js +94 -10
  142. package/dist/desktop/main/runtime-service.js.map +1 -1
  143. package/dist/desktop/main/runtime-source.d.ts +2 -0
  144. package/dist/desktop/main/runtime-source.d.ts.map +1 -1
  145. package/dist/desktop/main/runtime-source.js +12 -6
  146. package/dist/desktop/main/runtime-source.js.map +1 -1
  147. package/dist/desktop/main/tray.d.ts +1 -0
  148. package/dist/desktop/main/tray.d.ts.map +1 -1
  149. package/dist/desktop/main/tray.js +3 -3
  150. package/dist/desktop/main/tray.js.map +1 -1
  151. package/dist/desktop/main.js +28 -8
  152. package/dist/desktop/main.js.map +1 -1
  153. package/dist/desktop/preload.js +3 -0
  154. package/dist/desktop/preload.js.map +1 -1
  155. package/dist/desktop/renderer/app.d.ts +2 -1
  156. package/dist/desktop/renderer/app.d.ts.map +1 -1
  157. package/dist/desktop/renderer/app.js +6 -1
  158. package/dist/desktop/renderer/app.js.map +1 -1
  159. package/dist/desktop/renderer/runtime-state.d.ts.map +1 -1
  160. package/dist/desktop/renderer/runtime-state.js +2 -0
  161. package/dist/desktop/renderer/runtime-state.js.map +1 -1
  162. package/dist/desktop/shared/shell-path-probes.d.ts +24 -0
  163. package/dist/desktop/shared/shell-path-probes.d.ts.map +1 -0
  164. package/dist/desktop/shared/shell-path-probes.js +38 -0
  165. package/dist/desktop/shared/shell-path-probes.js.map +1 -0
  166. package/dist/desktop/shared/types.d.ts +21 -1
  167. package/dist/desktop/shared/types.d.ts.map +1 -1
  168. package/dist/desktop/smoke.d.ts +1 -0
  169. package/dist/desktop/smoke.d.ts.map +1 -1
  170. package/dist/desktop/smoke.js +20 -5
  171. package/dist/desktop/smoke.js.map +1 -1
  172. package/dist/i18n/en.d.ts.map +1 -1
  173. package/dist/i18n/en.js +16 -7
  174. package/dist/i18n/en.js.map +1 -1
  175. package/dist/i18n/zh.d.ts.map +1 -1
  176. package/dist/i18n/zh.js +16 -7
  177. package/dist/i18n/zh.js.map +1 -1
  178. package/dist/im/lark/card-handler.d.ts.map +1 -1
  179. package/dist/im/lark/card-handler.js +3 -0
  180. package/dist/im/lark/card-handler.js.map +1 -1
  181. package/dist/im/lark/event-dispatcher.d.ts +1 -0
  182. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  183. package/dist/im/lark/event-dispatcher.js +1 -1
  184. package/dist/im/lark/event-dispatcher.js.map +1 -1
  185. package/dist/im/lark/schedules-card.d.ts +2 -2
  186. package/dist/im/lark/schedules-card.d.ts.map +1 -1
  187. package/dist/im/lark/schedules-card.js +50 -34
  188. package/dist/im/lark/schedules-card.js.map +1 -1
  189. package/dist/index-daemon.js +13 -1
  190. package/dist/index-daemon.js.map +1 -1
  191. package/dist/platform/bind.d.ts +4 -1
  192. package/dist/platform/bind.d.ts.map +1 -1
  193. package/dist/platform/bind.js +10 -1
  194. package/dist/platform/bind.js.map +1 -1
  195. package/dist/platform/binding.d.ts.map +1 -1
  196. package/dist/platform/binding.js +15 -9
  197. package/dist/platform/binding.js.map +1 -1
  198. package/dist/platform/device-command.d.ts +35 -0
  199. package/dist/platform/device-command.d.ts.map +1 -0
  200. package/dist/platform/device-command.js +187 -0
  201. package/dist/platform/device-command.js.map +1 -0
  202. package/dist/platform/device-enroll.d.ts +156 -0
  203. package/dist/platform/device-enroll.d.ts.map +1 -0
  204. package/dist/platform/device-enroll.js +781 -0
  205. package/dist/platform/device-enroll.js.map +1 -0
  206. package/dist/platform/device-isolation-activation-client.d.ts +28 -0
  207. package/dist/platform/device-isolation-activation-client.d.ts.map +1 -0
  208. package/dist/platform/device-isolation-activation-client.js +279 -0
  209. package/dist/platform/device-isolation-activation-client.js.map +1 -0
  210. package/dist/platform/device-isolation.d.ts +35 -0
  211. package/dist/platform/device-isolation.d.ts.map +1 -0
  212. package/dist/platform/device-isolation.js +90 -0
  213. package/dist/platform/device-isolation.js.map +1 -0
  214. package/dist/platform/device-paths.d.ts +9 -0
  215. package/dist/platform/device-paths.d.ts.map +1 -0
  216. package/dist/platform/device-paths.js +14 -0
  217. package/dist/platform/device-paths.js.map +1 -0
  218. package/dist/platform/device.d.ts +77 -0
  219. package/dist/platform/device.d.ts.map +1 -0
  220. package/dist/platform/device.js +212 -0
  221. package/dist/platform/device.js.map +1 -0
  222. package/dist/platform/host-command-context.d.ts +15 -0
  223. package/dist/platform/host-command-context.d.ts.map +1 -0
  224. package/dist/platform/host-command-context.js +26 -0
  225. package/dist/platform/host-command-context.js.map +1 -0
  226. package/dist/platform/secure-host-file.d.ts +12 -0
  227. package/dist/platform/secure-host-file.d.ts.map +1 -0
  228. package/dist/platform/secure-host-file.js +182 -0
  229. package/dist/platform/secure-host-file.js.map +1 -0
  230. package/dist/services/schedule-store.d.ts +6 -2
  231. package/dist/services/schedule-store.d.ts.map +1 -1
  232. package/dist/services/schedule-store.js +19 -4
  233. package/dist/services/schedule-store.js.map +1 -1
  234. package/dist/skills/definitions.d.ts.map +1 -1
  235. package/dist/skills/definitions.js +4 -5
  236. package/dist/skills/definitions.js.map +1 -1
  237. package/dist/types.d.ts +45 -8
  238. package/dist/types.d.ts.map +1 -1
  239. package/dist/utils/atomic-write.d.ts +13 -0
  240. package/dist/utils/atomic-write.d.ts.map +1 -1
  241. package/dist/utils/atomic-write.js +89 -9
  242. package/dist/utils/atomic-write.js.map +1 -1
  243. package/dist/utils/child-env.d.ts +40 -1
  244. package/dist/utils/child-env.d.ts.map +1 -1
  245. package/dist/utils/child-env.js +45 -0
  246. package/dist/utils/child-env.js.map +1 -1
  247. package/dist/utils/pending-input-queue.d.ts +10 -0
  248. package/dist/utils/pending-input-queue.d.ts.map +1 -1
  249. package/dist/utils/pending-input-queue.js +15 -0
  250. package/dist/utils/pending-input-queue.js.map +1 -1
  251. package/dist/worker.js +391 -28
  252. package/dist/worker.js.map +1 -1
  253. package/dist/workflows/events/payloads.d.ts +4 -4
  254. package/dist/workflows/events/schema.d.ts +16 -16
  255. package/dist/workflows/hostExecutors/botmux-schedule.d.ts +3 -1
  256. package/dist/workflows/hostExecutors/botmux-schedule.d.ts.map +1 -1
  257. package/dist/workflows/hostExecutors/botmux-schedule.js +14 -3
  258. package/dist/workflows/hostExecutors/botmux-schedule.js.map +1 -1
  259. package/dist/workflows/v3/architect.js +1 -1
  260. package/dist/workflows/v3/architect.js.map +1 -1
  261. package/dist/workflows/v3/contract.d.ts +8 -0
  262. package/dist/workflows/v3/contract.d.ts.map +1 -1
  263. package/dist/workflows/v3/contract.js.map +1 -1
  264. package/dist/workflows/v3/daemon-run.d.ts.map +1 -1
  265. package/dist/workflows/v3/daemon-run.js +2 -0
  266. package/dist/workflows/v3/daemon-run.js.map +1 -1
  267. package/dist/workflows/v3/ephemeral-pool.d.ts.map +1 -1
  268. package/dist/workflows/v3/ephemeral-pool.js +10 -2
  269. package/dist/workflows/v3/ephemeral-pool.js.map +1 -1
  270. package/dist/workflows/v3/run-envelope.d.ts +24 -24
  271. package/dist/workflows/v3/runtime.d.ts +5 -0
  272. package/dist/workflows/v3/runtime.d.ts.map +1 -1
  273. package/dist/workflows/v3/runtime.js +1 -0
  274. package/dist/workflows/v3/runtime.js.map +1 -1
  275. package/package.json +6 -3
  276. package/dist/dashboard-web/chunks/chunk-I35DXGM4.js +0 -1
  277. package/dist/dashboard-web/chunks/schedules-page-Z3672POL.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-enroll.js","sourceRoot":"","sources":["../../src/platform/device-enroll.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { fetchDaemonIpc } from '../core/daemon-ipc-auth.js';
2
+ import { type OnlineDaemonInfo } from '../utils/daemon-discovery.js';
3
+ import { type DeviceIsolationActivationOptions } from './device-isolation.js';
4
+ export declare class DeviceIsolationDaemonActivationError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ export interface DeviceIsolationActivationClientDependencies {
8
+ listDaemons?: () => OnlineDaemonInfo[];
9
+ fetchDaemon?: typeof fetchDaemonIpc;
10
+ processStart?: (pid: number) => string | undefined;
11
+ nonceFactory?: () => string;
12
+ expectedDataDir?: string;
13
+ now?: () => Date;
14
+ }
15
+ export interface ActivateDeviceIsolationOptions extends DeviceIsolationActivationOptions {
16
+ dependencies?: DeviceIsolationActivationClientDependencies;
17
+ }
18
+ /**
19
+ * Establish the one-way marker without leaving a legacy local CLI capable of
20
+ * reading the first grant journal/device token. Existing valid markers are a
21
+ * completed security transition and are never removed or downgraded.
22
+ */
23
+ export declare function activateDeviceCredentialIsolation(options?: ActivateDeviceIsolationOptions): Promise<{
24
+ activated: boolean;
25
+ daemonCount: number;
26
+ markerSha256: string;
27
+ }>;
28
+ //# sourceMappingURL=device-isolation-activation-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-isolation-activation-client.d.ts","sourceRoot":"","sources":["../../src/platform/device-isolation-activation-client.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;AAItC,OAAO,EAIL,KAAK,gCAAgC,EACtC,MAAM,uBAAuB,CAAC;AAY/B,qBAAa,oCAAqC,SAAQ,KAAK;gBACjD,OAAO,EAAE,MAAM;CAI5B;AAyBD,MAAM,WAAW,2CAA2C;IAC1D,WAAW,CAAC,EAAE,MAAM,gBAAgB,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,OAAO,cAAc,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACnD,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,8BAA+B,SAAQ,gCAAgC;IACtF,YAAY,CAAC,EAAE,2CAA2C,CAAC;CAC5D;AAoKD;;;;GAIG;AACH,wBAAsB,iCAAiC,CACrD,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B5E"}
@@ -0,0 +1,279 @@
1
+ /** Host coordinator for the first, one-way device-credential activation. */
2
+ import { createHash, randomBytes } from 'node:crypto';
3
+ import { realpathSync } from 'node:fs';
4
+ import { homedir } from 'node:os';
5
+ import { DEVICE_ISOLATION_ACTIVATION_VERSION } from '../core/device-isolation-activation.js';
6
+ import { resolveBotmuxDataDir } from '../core/data-dir.js';
7
+ import { fetchDaemonIpc } from '../core/daemon-ipc-auth.js';
8
+ import { readProcessStartIdentity } from '../core/session-marker.js';
9
+ import { listOnlineDaemons, } from '../utils/daemon-discovery.js';
10
+ import { deviceCredentialIsolationMarkerPath, } from '../adapters/cli/read-isolation.js';
11
+ import { completeDeviceCredentialIsolationMarker, ensureDeviceCredentialIsolationMarker, readDeviceCredentialIsolationMarker, } from './device-isolation.js';
12
+ import { readSecureHostFileSync, writeSecureHostFileSync, } from './secure-host-file.js';
13
+ const PREPARE_PATH = '/api/device-isolation/activation/prepare';
14
+ const COMMIT_PATH = '/api/device-isolation/activation/commit';
15
+ const RELEASE_PATH = '/api/device-isolation/activation/release';
16
+ const RESPONSE_LIMIT_BYTES = 64 * 1024;
17
+ const REQUEST_TIMEOUT_MS = 12_000;
18
+ export class DeviceIsolationDaemonActivationError extends Error {
19
+ constructor(message) {
20
+ super(message);
21
+ this.name = 'DeviceIsolationDaemonActivationError';
22
+ }
23
+ }
24
+ function markerDigest(raw) {
25
+ return createHash('sha256').update(raw, 'utf8').digest('hex');
26
+ }
27
+ async function boundedJson(response) {
28
+ const reader = response.body?.getReader();
29
+ if (!reader)
30
+ return null;
31
+ const chunks = [];
32
+ let size = 0;
33
+ while (true) {
34
+ const part = await reader.read();
35
+ if (part.done)
36
+ break;
37
+ size += part.value.byteLength;
38
+ if (size > RESPONSE_LIMIT_BYTES) {
39
+ await reader.cancel();
40
+ throw new DeviceIsolationDaemonActivationError('daemon 激活响应过大');
41
+ }
42
+ chunks.push(part.value);
43
+ }
44
+ const raw = Buffer.concat(chunks.map(chunk => Buffer.from(chunk))).toString('utf8');
45
+ try {
46
+ return JSON.parse(raw);
47
+ }
48
+ catch {
49
+ throw new DeviceIsolationDaemonActivationError('daemon 激活响应不是有效 JSON');
50
+ }
51
+ }
52
+ function parseActivationResponse(value) {
53
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
54
+ throw new DeviceIsolationDaemonActivationError('daemon 激活响应结构无效');
55
+ }
56
+ const record = value;
57
+ const daemon = record.daemon;
58
+ if (record.ok !== true
59
+ || record.activationVersion !== DEVICE_ISOLATION_ACTIVATION_VERSION
60
+ || typeof record.nonce !== 'string'
61
+ || typeof record.leaseId !== 'string'
62
+ || !record.leaseId
63
+ || typeof record.expiresAt !== 'number'
64
+ || !Number.isSafeInteger(record.expiresAt)
65
+ || typeof record.inventoryGeneration !== 'string'
66
+ || !record.inventoryGeneration
67
+ || !daemon
68
+ || typeof daemon !== 'object'
69
+ || Array.isArray(daemon)) {
70
+ throw new DeviceIsolationDaemonActivationError('daemon 激活响应缺少必要字段');
71
+ }
72
+ const identity = daemon;
73
+ if (typeof identity.larkAppId !== 'string'
74
+ || !identity.larkAppId
75
+ || typeof identity.bootInstanceId !== 'string'
76
+ || !identity.bootInstanceId
77
+ || typeof identity.pid !== 'number'
78
+ || !Number.isSafeInteger(identity.pid)
79
+ || identity.pid <= 1
80
+ || typeof identity.procStart !== 'string'
81
+ || !identity.procStart
82
+ || typeof identity.dataDir !== 'string'
83
+ || !identity.dataDir) {
84
+ throw new DeviceIsolationDaemonActivationError('daemon 激活身份字段无效');
85
+ }
86
+ return {
87
+ ok: true,
88
+ activationVersion: DEVICE_ISOLATION_ACTIVATION_VERSION,
89
+ nonce: record.nonce,
90
+ leaseId: record.leaseId,
91
+ expiresAt: record.expiresAt,
92
+ inventoryGeneration: record.inventoryGeneration,
93
+ daemon: identity,
94
+ };
95
+ }
96
+ function canonicalExistingDirectory(path) {
97
+ try {
98
+ return realpathSync(path);
99
+ }
100
+ catch {
101
+ throw new DeviceIsolationDaemonActivationError(`无法解析 daemon 数据目录:${path}`);
102
+ }
103
+ }
104
+ function verifyDaemonIdentity(descriptor, response, input) {
105
+ const daemon = response.daemon;
106
+ if (response.nonce !== input.nonce
107
+ || descriptor.larkAppId !== daemon.larkAppId
108
+ || !descriptor.bootInstanceId
109
+ || descriptor.bootInstanceId !== daemon.bootInstanceId
110
+ || descriptor.pid !== daemon.pid
111
+ || input.processStart(daemon.pid) !== daemon.procStart
112
+ || canonicalExistingDirectory(daemon.dataDir) !== input.expectedDataDir) {
113
+ throw new DeviceIsolationDaemonActivationError('daemon 激活响应与在线实例身份不匹配');
114
+ }
115
+ }
116
+ async function postActivation(daemon, path, body, fetchDaemon) {
117
+ const controller = new AbortController();
118
+ const timer = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
119
+ timer.unref?.();
120
+ try {
121
+ const response = await fetchDaemon(daemon.ipcPort, path, {
122
+ method: 'POST',
123
+ headers: { 'content-type': 'application/json' },
124
+ body: JSON.stringify(body),
125
+ signal: controller.signal,
126
+ });
127
+ const parsed = await boundedJson(response);
128
+ if (!response.ok) {
129
+ const code = parsed && typeof parsed === 'object' && !Array.isArray(parsed)
130
+ && typeof parsed.error === 'string'
131
+ ? parsed.error
132
+ : `http_${response.status}`;
133
+ throw new DeviceIsolationDaemonActivationError(`daemon 拒绝设备隔离激活:${code}`);
134
+ }
135
+ return parseActivationResponse(parsed);
136
+ }
137
+ catch (error) {
138
+ if (error instanceof DeviceIsolationDaemonActivationError)
139
+ throw error;
140
+ throw new DeviceIsolationDaemonActivationError('无法完成 daemon 设备隔离握手');
141
+ }
142
+ finally {
143
+ clearTimeout(timer);
144
+ }
145
+ }
146
+ async function bestEffortRelease(prepared, nonce, markerSha256, fetchDaemon) {
147
+ await Promise.allSettled(prepared.map(({ descriptor, response }) => postActivation(descriptor, RELEASE_PATH, {
148
+ activationVersion: DEVICE_ISOLATION_ACTIVATION_VERSION,
149
+ nonce,
150
+ leaseId: response.leaseId,
151
+ abort: true,
152
+ ...(markerSha256 ? { markerSha256 } : {}),
153
+ }, fetchDaemon)));
154
+ }
155
+ /** Benign worker churn between prepare and commit changes inventory generation
156
+ * and surfaces as inventory_changed. One automatic full retry absorbs that
157
+ * without forcing the operator to re-run enroll. */
158
+ const MAX_ACTIVATION_INVENTORY_RETRIES = 1;
159
+ function isInventoryChangedActivationError(error) {
160
+ return error instanceof DeviceIsolationDaemonActivationError
161
+ && /inventory_changed/.test(error.message);
162
+ }
163
+ /**
164
+ * Establish the one-way marker without leaving a legacy local CLI capable of
165
+ * reading the first grant journal/device token. Existing valid markers are a
166
+ * completed security transition and are never removed or downgraded.
167
+ */
168
+ export async function activateDeviceCredentialIsolation(options = {}) {
169
+ const homeDir = options.homeDir ?? homedir();
170
+ const markerPath = deviceCredentialIsolationMarkerPath(homeDir);
171
+ const existing = readSecureHostFileSync(markerPath, 4 * 1024);
172
+ if (existing !== null) {
173
+ const marker = readDeviceCredentialIsolationMarker(options);
174
+ if (marker?.state === 'active') {
175
+ return { activated: false, daemonCount: 0, markerSha256: markerDigest(existing) };
176
+ }
177
+ // PENDING (including a safe legacy marker without an explicit state) means
178
+ // a prior attempt may have died after masking new workers but before every
179
+ // old process was quiesced. Continue the full daemon transaction.
180
+ }
181
+ let lastError;
182
+ for (let attempt = 0; attempt <= MAX_ACTIVATION_INVENTORY_RETRIES; attempt += 1) {
183
+ try {
184
+ return await runDeviceCredentialIsolationActivationAttempt(options, homeDir, markerPath);
185
+ }
186
+ catch (error) {
187
+ lastError = error;
188
+ if (attempt >= MAX_ACTIVATION_INVENTORY_RETRIES || !isInventoryChangedActivationError(error)) {
189
+ throw error;
190
+ }
191
+ // Marker may remain PENDING after the failed attempt; that is intentional
192
+ // and the next attempt continues the one-way transition from there.
193
+ }
194
+ }
195
+ throw lastError;
196
+ }
197
+ async function runDeviceCredentialIsolationActivationAttempt(options, homeDir, markerPath) {
198
+ const deps = options.dependencies ?? {};
199
+ const daemons = (deps.listDaemons ?? listOnlineDaemons)();
200
+ if (daemons.length === 0) {
201
+ throw new DeviceIsolationDaemonActivationError('未发现运行中的新版 botmux daemon;请先启动 daemon,再执行设备注册');
202
+ }
203
+ if (daemons.some(daemon => !daemon.bootInstanceId || !daemon.pid)) {
204
+ throw new DeviceIsolationDaemonActivationError('发现不支持设备隔离握手的旧 daemon;请先全部重启升级');
205
+ }
206
+ const nonce = (deps.nonceFactory ?? (() => randomBytes(32).toString('base64url')))();
207
+ if (!/^[A-Za-z0-9_-]{32,128}$/.test(nonce)) {
208
+ throw new DeviceIsolationDaemonActivationError('设备隔离激活 nonce 无效');
209
+ }
210
+ const fetchDaemon = deps.fetchDaemon ?? fetchDaemonIpc;
211
+ const processStart = deps.processStart ?? readProcessStartIdentity;
212
+ const expectedDataDir = canonicalExistingDirectory(deps.expectedDataDir ?? resolveBotmuxDataDir({ env: {}, homeDir }));
213
+ const prepared = [];
214
+ let markerRaw = '';
215
+ let markerSha256 = '';
216
+ try {
217
+ // Sequential collection makes partial failure cleanup deterministic. Every
218
+ // successful prepare freezes that daemon before the next is contacted.
219
+ for (const descriptor of daemons) {
220
+ const response = await postActivation(descriptor, PREPARE_PATH, {
221
+ activationVersion: DEVICE_ISOLATION_ACTIVATION_VERSION,
222
+ nonce,
223
+ }, fetchDaemon);
224
+ prepared.push({ descriptor, response });
225
+ verifyDaemonIdentity(descriptor, response, { nonce, expectedDataDir, processStart });
226
+ }
227
+ ensureDeviceCredentialIsolationMarker(options);
228
+ markerRaw = readSecureHostFileSync(markerPath, 4 * 1024)
229
+ ?? (() => { throw new DeviceIsolationDaemonActivationError('设备隔离 marker 写入后不可读'); })();
230
+ // Rewrite and read back through the strict primitive so the commit is
231
+ // crash-durable even when a pre-created marker came from an interrupted run.
232
+ writeSecureHostFileSync(markerPath, markerRaw);
233
+ markerRaw = readSecureHostFileSync(markerPath, 4 * 1024)
234
+ ?? (() => { throw new DeviceIsolationDaemonActivationError('设备隔离 marker durable 复读失败'); })();
235
+ markerSha256 = markerDigest(markerRaw);
236
+ const commitResults = await Promise.allSettled(prepared.map(async (item) => {
237
+ const committed = await postActivation(item.descriptor, COMMIT_PATH, {
238
+ activationVersion: DEVICE_ISOLATION_ACTIVATION_VERSION,
239
+ nonce,
240
+ leaseId: item.response.leaseId,
241
+ markerSha256,
242
+ }, fetchDaemon);
243
+ verifyDaemonIdentity(item.descriptor, committed, { nonce, expectedDataDir, processStart });
244
+ }));
245
+ const commitFailure = commitResults.find((result) => result.status === 'rejected');
246
+ if (commitFailure)
247
+ throw commitFailure.reason;
248
+ // All legacy processes are now gone. Only now may the one-way marker become
249
+ // ACTIVE; an interrupted PENDING attempt can never short-circuit a retry.
250
+ completeDeviceCredentialIsolationMarker(options);
251
+ const finalRaw = readSecureHostFileSync(markerPath, 4 * 1024);
252
+ if (finalRaw === null || readDeviceCredentialIsolationMarker(options)?.state !== 'active') {
253
+ throw new DeviceIsolationDaemonActivationError('设备隔离 marker 最终复验失败');
254
+ }
255
+ markerSha256 = markerDigest(finalRaw);
256
+ const releaseResults = await Promise.allSettled(prepared.map(async (item) => {
257
+ const released = await postActivation(item.descriptor, RELEASE_PATH, {
258
+ activationVersion: DEVICE_ISOLATION_ACTIVATION_VERSION,
259
+ nonce,
260
+ leaseId: item.response.leaseId,
261
+ markerSha256,
262
+ }, fetchDaemon);
263
+ verifyDaemonIdentity(item.descriptor, released, { nonce, expectedDataDir, processStart });
264
+ }));
265
+ const releaseFailure = releaseResults.find((result) => result.status === 'rejected');
266
+ if (releaseFailure)
267
+ throw releaseFailure.reason;
268
+ return { activated: true, daemonCount: prepared.length, markerSha256 };
269
+ }
270
+ catch (error) {
271
+ // A marker is one-way. If activation reached the write step, leave it in
272
+ // place: future workers fail closed/isolate, while no grant or device secret
273
+ // has yet been requested. Release is authenticated and best-effort; leases
274
+ // also have a bounded server-side expiry.
275
+ await bestEffortRelease(prepared, nonce, markerSha256, fetchDaemon);
276
+ throw error;
277
+ }
278
+ }
279
+ //# sourceMappingURL=device-isolation-activation-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-isolation-activation-client.js","sourceRoot":"","sources":["../../src/platform/device-isolation-activation-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ declare const DEVICE_ISOLATION_MARKER_VERSION: 1;
2
+ interface DeviceIsolationMarker {
3
+ version: typeof DEVICE_ISOLATION_MARKER_VERSION;
4
+ /** pending still activates worker fail-closed masking, but cannot authorize
5
+ * the first credential write until every daemon has quiesced legacy CLIs. */
6
+ state: 'pending' | 'active';
7
+ enabledAt: string;
8
+ activatedAt?: string;
9
+ }
10
+ export declare class DeviceIsolationActivationError extends Error {
11
+ constructor(message: string);
12
+ }
13
+ export interface DeviceIsolationActivationOptions {
14
+ homeDir?: string;
15
+ now?: () => Date;
16
+ }
17
+ /** Probe before writing the one-way marker; unsupported hosts refuse enroll. */
18
+ export declare function deviceCredentialIsolationSupported(platform?: NodeJS.Platform): boolean;
19
+ export declare function readDeviceCredentialIsolationMarker(options?: Pick<DeviceIsolationActivationOptions, 'homeDir'>): DeviceIsolationMarker | null;
20
+ /** Create the one-way PENDING marker durably. Pending already forces every new
21
+ * local worker into credential isolation, but retries must still quiesce all
22
+ * daemons before the marker may transition to ACTIVE. */
23
+ export declare function ensureDeviceCredentialIsolationMarker(options?: DeviceIsolationActivationOptions): {
24
+ created: boolean;
25
+ path: string;
26
+ state: 'pending' | 'active';
27
+ };
28
+ /** Mark a fully quiesced host ACTIVE. This is the only state that lets a later
29
+ * enroll skip the daemon transaction. The marker itself remains one-way. */
30
+ export declare function completeDeviceCredentialIsolationMarker(options?: DeviceIsolationActivationOptions): {
31
+ path: string;
32
+ state: 'active';
33
+ };
34
+ export {};
35
+ //# sourceMappingURL=device-isolation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-isolation.d.ts","sourceRoot":"","sources":["../../src/platform/device-isolation.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,+BAA+B,EAAG,CAAU,CAAC;AAEnD,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,+BAA+B,CAAC;IAChD;iFAC6E;IAC7E,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,8BAA+B,SAAQ,KAAK;gBAC3C,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,gCAAgC;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,gFAAgF;AAChF,wBAAgB,kCAAkC,CAAC,QAAQ,kBAAmB,GAAG,OAAO,CAGvF;AA8BD,wBAAgB,mCAAmC,CACjD,OAAO,GAAE,IAAI,CAAC,gCAAgC,EAAE,SAAS,CAAM,GAC9D,qBAAqB,GAAG,IAAI,CAI9B;AAED;;yDAEyD;AACzD,wBAAgB,qCAAqC,CACnD,OAAO,GAAE,gCAAqC,GAC7C;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAA;CAAE,CAcjE;AAED;4EAC4E;AAC5E,wBAAgB,uCAAuC,CACrD,OAAO,GAAE,gCAAqC,GAC7C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAqBnC"}
@@ -0,0 +1,90 @@
1
+ /** Host-side activation marker for mandatory device isolation. */
2
+ import { homedir } from 'node:os';
3
+ import { probeHostCredentialIsolationMechanism } from '../adapters/backend/sandbox.js';
4
+ import { deviceCredentialIsolationMarkerPath, } from '../adapters/cli/read-isolation.js';
5
+ import { readSecureHostFileSync, writeSecureHostFileSync, } from './secure-host-file.js';
6
+ const DEVICE_ISOLATION_MARKER_VERSION = 1;
7
+ export class DeviceIsolationActivationError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = 'DeviceIsolationActivationError';
11
+ }
12
+ }
13
+ /** Probe before writing the one-way marker; unsupported hosts refuse enroll. */
14
+ export function deviceCredentialIsolationSupported(platform = process.platform) {
15
+ if (platform !== process.platform || (platform !== 'darwin' && platform !== 'linux'))
16
+ return false;
17
+ return probeHostCredentialIsolationMechanism().supported;
18
+ }
19
+ function parseDeviceIsolationMarker(raw) {
20
+ try {
21
+ const parsed = JSON.parse(raw);
22
+ const enabledAt = typeof parsed.enabledAt === 'string' ? parsed.enabledAt : '';
23
+ const state = parsed.state === 'active' ? 'active' : 'pending';
24
+ const activatedAt = typeof parsed.activatedAt === 'string' ? parsed.activatedAt : undefined;
25
+ if (parsed.version !== DEVICE_ISOLATION_MARKER_VERSION
26
+ || !enabledAt
27
+ || new Date(enabledAt).toISOString() !== enabledAt
28
+ || (parsed.state !== undefined && parsed.state !== 'pending' && parsed.state !== 'active')
29
+ || (state === 'active' && (!activatedAt || new Date(activatedAt).toISOString() !== activatedAt)))
30
+ throw new Error('invalid marker');
31
+ return {
32
+ version: DEVICE_ISOLATION_MARKER_VERSION,
33
+ state,
34
+ enabledAt,
35
+ ...(activatedAt ? { activatedAt } : {}),
36
+ };
37
+ }
38
+ catch {
39
+ throw new DeviceIsolationActivationError('设备凭证隔离 marker 已损坏;拒绝继续注册,请先修复宿主配置');
40
+ }
41
+ }
42
+ export function readDeviceCredentialIsolationMarker(options = {}) {
43
+ const home = options.homeDir ?? homedir();
44
+ const raw = readSecureHostFileSync(deviceCredentialIsolationMarkerPath(home), 4 * 1024);
45
+ return raw === null ? null : parseDeviceIsolationMarker(raw);
46
+ }
47
+ /** Create the one-way PENDING marker durably. Pending already forces every new
48
+ * local worker into credential isolation, but retries must still quiesce all
49
+ * daemons before the marker may transition to ACTIVE. */
50
+ export function ensureDeviceCredentialIsolationMarker(options = {}) {
51
+ const home = options.homeDir ?? homedir();
52
+ const path = deviceCredentialIsolationMarkerPath(home);
53
+ const current = readSecureHostFileSync(path, 4 * 1024);
54
+ if (current !== null) {
55
+ return { created: false, path, state: parseDeviceIsolationMarker(current).state };
56
+ }
57
+ const enabledAt = (options.now ?? (() => new Date()))().toISOString();
58
+ writeSecureHostFileSync(path, `${JSON.stringify({
59
+ version: DEVICE_ISOLATION_MARKER_VERSION,
60
+ state: 'pending',
61
+ enabledAt,
62
+ }, null, 2)}\n`);
63
+ return { created: true, path, state: 'pending' };
64
+ }
65
+ /** Mark a fully quiesced host ACTIVE. This is the only state that lets a later
66
+ * enroll skip the daemon transaction. The marker itself remains one-way. */
67
+ export function completeDeviceCredentialIsolationMarker(options = {}) {
68
+ const home = options.homeDir ?? homedir();
69
+ const path = deviceCredentialIsolationMarkerPath(home);
70
+ const currentRaw = readSecureHostFileSync(path, 4 * 1024);
71
+ if (currentRaw === null) {
72
+ throw new DeviceIsolationActivationError('设备凭证隔离 marker 尚未创建');
73
+ }
74
+ const current = parseDeviceIsolationMarker(currentRaw);
75
+ if (current.state === 'active')
76
+ return { path, state: 'active' };
77
+ const activatedAt = (options.now ?? (() => new Date()))().toISOString();
78
+ writeSecureHostFileSync(path, `${JSON.stringify({
79
+ version: DEVICE_ISOLATION_MARKER_VERSION,
80
+ state: 'active',
81
+ enabledAt: current.enabledAt,
82
+ activatedAt,
83
+ }, null, 2)}\n`);
84
+ const verified = readSecureHostFileSync(path, 4 * 1024);
85
+ if (verified === null || parseDeviceIsolationMarker(verified).state !== 'active') {
86
+ throw new DeviceIsolationActivationError('设备凭证隔离 marker ACTIVE 复验失败');
87
+ }
88
+ return { path, state: 'active' };
89
+ }
90
+ //# sourceMappingURL=device-isolation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-isolation.js","sourceRoot":"","sources":["../../src/platform/device-isolation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /** Dedicated host-authority subtree. Linux credential-only isolation masks this
2
+ * directory wholesale, so refresh/enrollment may create arbitrary future
3
+ * atomic sidecars without freezing unrelated BOTMUX_HOME state. */
4
+ export declare const DEVICE_AUTHORITY_DIRECTORY = "device-auth";
5
+ export declare const DEVICE_CREDENTIAL_FILE = "device.json";
6
+ export declare const DEVICE_ENROLLMENT_JOURNAL_FILE = "device-enroll-pending.json";
7
+ export declare function deviceAuthorityDirectory(botmuxHome: string): string;
8
+ export declare function deviceCredentialFile(botmuxHome: string): string;
9
+ //# sourceMappingURL=device-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-paths.d.ts","sourceRoot":"","sources":["../../src/platform/device-paths.ts"],"names":[],"mappings":"AAEA;;mEAEmE;AACnE,eAAO,MAAM,0BAA0B,gBAAgB,CAAC;AACxD,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AACpD,eAAO,MAAM,8BAA8B,+BAA+B,CAAC;AAE3E,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D"}
@@ -0,0 +1,14 @@
1
+ import { join } from 'node:path';
2
+ /** Dedicated host-authority subtree. Linux credential-only isolation masks this
3
+ * directory wholesale, so refresh/enrollment may create arbitrary future
4
+ * atomic sidecars without freezing unrelated BOTMUX_HOME state. */
5
+ export const DEVICE_AUTHORITY_DIRECTORY = 'device-auth';
6
+ export const DEVICE_CREDENTIAL_FILE = 'device.json';
7
+ export const DEVICE_ENROLLMENT_JOURNAL_FILE = 'device-enroll-pending.json';
8
+ export function deviceAuthorityDirectory(botmuxHome) {
9
+ return join(botmuxHome, DEVICE_AUTHORITY_DIRECTORY);
10
+ }
11
+ export function deviceCredentialFile(botmuxHome) {
12
+ return join(deviceAuthorityDirectory(botmuxHome), DEVICE_CREDENTIAL_FILE);
13
+ }
14
+ //# sourceMappingURL=device-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-paths.js","sourceRoot":"","sources":["../../src/platform/device-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;mEAEmE;AACnE,MAAM,CAAC,MAAM,0BAA0B,GAAG,aAAa,CAAC;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC;AACpD,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAE3E,MAAM,UAAU,wBAAwB,CAAC,UAAkB;IACzD,OAAO,IAAI,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,OAAO,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC,CAAC;AAC5E,CAAC"}