@decibelsystems/tools 2.2.0-beta.0 → 3.1.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 (435) hide show
  1. package/CHANGELOG.md +226 -0
  2. package/dist/agentCommands.d.ts +0 -1
  3. package/dist/agentCommands.d.ts.map +1 -1
  4. package/dist/agentCommands.js +19 -8
  5. package/dist/agentCommands.js.map +1 -1
  6. package/dist/agentPresence.d.ts +82 -0
  7. package/dist/agentPresence.d.ts.map +1 -1
  8. package/dist/agentPresence.js +194 -26
  9. package/dist/agentPresence.js.map +1 -1
  10. package/dist/agentic/index.d.ts +18 -8
  11. package/dist/agentic/index.d.ts.map +1 -1
  12. package/dist/agentic/index.js +18 -144
  13. package/dist/agentic/index.js.map +1 -1
  14. package/dist/agentic/types.d.ts +106 -0
  15. package/dist/agentic/types.d.ts.map +1 -1
  16. package/dist/agentic/types.js +77 -1
  17. package/dist/agentic/types.js.map +1 -1
  18. package/dist/architectAdrs.d.ts +27 -3
  19. package/dist/architectAdrs.d.ts.map +1 -1
  20. package/dist/architectAdrs.js +92 -4
  21. package/dist/architectAdrs.js.map +1 -1
  22. package/dist/artifacts.d.ts +60 -0
  23. package/dist/artifacts.d.ts.map +1 -0
  24. package/dist/artifacts.js +208 -0
  25. package/dist/artifacts.js.map +1 -0
  26. package/dist/asks.d.ts +93 -0
  27. package/dist/asks.d.ts.map +1 -0
  28. package/dist/asks.js +383 -0
  29. package/dist/asks.js.map +1 -0
  30. package/dist/chat.d.ts +47 -0
  31. package/dist/chat.d.ts.map +1 -0
  32. package/dist/chat.js +288 -0
  33. package/dist/chat.js.map +1 -0
  34. package/dist/client/transports.d.ts.map +1 -1
  35. package/dist/client/transports.js +13 -3
  36. package/dist/client/transports.js.map +1 -1
  37. package/dist/daemon.d.ts +33 -3
  38. package/dist/daemon.d.ts.map +1 -1
  39. package/dist/daemon.js +225 -52
  40. package/dist/daemon.js.map +1 -1
  41. package/dist/daemonConfig.d.ts +46 -0
  42. package/dist/daemonConfig.d.ts.map +1 -1
  43. package/dist/daemonConfig.js +57 -12
  44. package/dist/daemonConfig.js.map +1 -1
  45. package/dist/decibelPaths.d.ts.map +1 -1
  46. package/dist/decibelPaths.js +39 -6
  47. package/dist/decibelPaths.js.map +1 -1
  48. package/dist/domain/issue.d.ts +81 -0
  49. package/dist/domain/issue.d.ts.map +1 -0
  50. package/dist/domain/issue.js +106 -0
  51. package/dist/domain/issue.js.map +1 -0
  52. package/dist/domain/issueCodec.d.ts +39 -0
  53. package/dist/domain/issueCodec.d.ts.map +1 -0
  54. package/dist/domain/issueCodec.js +308 -0
  55. package/dist/domain/issueCodec.js.map +1 -0
  56. package/dist/domain/issueRepository.d.ts +124 -0
  57. package/dist/domain/issueRepository.d.ts.map +1 -0
  58. package/dist/domain/issueRepository.js +296 -0
  59. package/dist/domain/issueRepository.js.map +1 -0
  60. package/dist/domain/uid.d.ts +16 -0
  61. package/dist/domain/uid.d.ts.map +1 -0
  62. package/dist/domain/uid.js +43 -0
  63. package/dist/domain/uid.js.map +1 -0
  64. package/dist/facades/definitions.d.ts +0 -1
  65. package/dist/facades/definitions.d.ts.map +1 -1
  66. package/dist/facades/definitions.js +140 -116
  67. package/dist/facades/definitions.js.map +1 -1
  68. package/dist/facades/index.d.ts +2 -1
  69. package/dist/facades/index.d.ts.map +1 -1
  70. package/dist/facades/index.js +1 -1
  71. package/dist/facades/index.js.map +1 -1
  72. package/dist/facades/types.d.ts +17 -0
  73. package/dist/facades/types.d.ts.map +1 -1
  74. package/dist/hq/defineAgent.d.ts.map +1 -1
  75. package/dist/hq/defineAgent.js +7 -11
  76. package/dist/hq/defineAgent.js.map +1 -1
  77. package/dist/httpArgs.d.ts +11 -0
  78. package/dist/httpArgs.d.ts.map +1 -0
  79. package/dist/httpArgs.js +39 -0
  80. package/dist/httpArgs.js.map +1 -0
  81. package/dist/httpServer.d.ts +1 -12
  82. package/dist/httpServer.d.ts.map +1 -1
  83. package/dist/httpServer.js +298 -144
  84. package/dist/httpServer.js.map +1 -1
  85. package/dist/identity.d.ts +123 -0
  86. package/dist/identity.d.ts.map +1 -0
  87. package/dist/identity.js +312 -0
  88. package/dist/identity.js.map +1 -0
  89. package/dist/kernel.d.ts +46 -1
  90. package/dist/kernel.d.ts.map +1 -1
  91. package/dist/kernel.js +334 -26
  92. package/dist/kernel.js.map +1 -1
  93. package/dist/killSwitch.d.ts +117 -0
  94. package/dist/killSwitch.d.ts.map +1 -0
  95. package/dist/killSwitch.js +161 -0
  96. package/dist/killSwitch.js.map +1 -0
  97. package/dist/lib/agent-services/assumptions.d.ts.map +1 -1
  98. package/dist/lib/agent-services/assumptions.js +8 -2
  99. package/dist/lib/agent-services/assumptions.js.map +1 -1
  100. package/dist/lib/atomicWrite.d.ts +49 -0
  101. package/dist/lib/atomicWrite.d.ts.map +1 -0
  102. package/dist/lib/atomicWrite.js +157 -0
  103. package/dist/lib/atomicWrite.js.map +1 -0
  104. package/dist/lib/envelope.d.ts +31 -0
  105. package/dist/lib/envelope.d.ts.map +1 -0
  106. package/dist/lib/envelope.js +80 -0
  107. package/dist/lib/envelope.js.map +1 -0
  108. package/dist/lib/fileLock.d.ts +38 -0
  109. package/dist/lib/fileLock.d.ts.map +1 -0
  110. package/dist/lib/fileLock.js +124 -0
  111. package/dist/lib/fileLock.js.map +1 -0
  112. package/dist/lib/recordIdAllocator.d.ts +102 -0
  113. package/dist/lib/recordIdAllocator.d.ts.map +1 -0
  114. package/dist/lib/recordIdAllocator.js +179 -0
  115. package/dist/lib/recordIdAllocator.js.map +1 -0
  116. package/dist/orgId.d.ts +23 -0
  117. package/dist/orgId.d.ts.map +1 -0
  118. package/dist/orgId.js +73 -0
  119. package/dist/orgId.js.map +1 -0
  120. package/dist/pairCli.d.ts +2 -0
  121. package/dist/pairCli.d.ts.map +1 -0
  122. package/dist/pairCli.js +97 -0
  123. package/dist/pairCli.js.map +1 -0
  124. package/dist/peerBroker.d.ts +40 -0
  125. package/dist/peerBroker.d.ts.map +1 -0
  126. package/dist/peerBroker.js +70 -0
  127. package/dist/peerBroker.js.map +1 -0
  128. package/dist/peerBrokerSupervisor.d.ts +21 -0
  129. package/dist/peerBrokerSupervisor.d.ts.map +1 -0
  130. package/dist/peerBrokerSupervisor.js +131 -0
  131. package/dist/peerBrokerSupervisor.js.map +1 -0
  132. package/dist/projectPaths.d.ts.map +1 -1
  133. package/dist/projectPaths.js +1 -19
  134. package/dist/projectPaths.js.map +1 -1
  135. package/dist/projectRegistry.d.ts +22 -0
  136. package/dist/projectRegistry.d.ts.map +1 -1
  137. package/dist/projectRegistry.js +69 -2
  138. package/dist/projectRegistry.js.map +1 -1
  139. package/dist/pty/boundary.d.ts +39 -0
  140. package/dist/pty/boundary.d.ts.map +1 -0
  141. package/dist/pty/boundary.js +100 -0
  142. package/dist/pty/boundary.js.map +1 -0
  143. package/dist/pty/errors.d.ts +6 -0
  144. package/dist/pty/errors.d.ts.map +1 -0
  145. package/dist/pty/errors.js +12 -0
  146. package/dist/pty/errors.js.map +1 -0
  147. package/dist/pty/fleet.d.ts +159 -0
  148. package/dist/pty/fleet.d.ts.map +1 -0
  149. package/dist/pty/fleet.js +543 -0
  150. package/dist/pty/fleet.js.map +1 -0
  151. package/dist/pty/launchProfile.d.ts +45 -0
  152. package/dist/pty/launchProfile.d.ts.map +1 -0
  153. package/dist/pty/launchProfile.js +149 -0
  154. package/dist/pty/launchProfile.js.map +1 -0
  155. package/dist/pty/openTerminal.d.ts +48 -0
  156. package/dist/pty/openTerminal.d.ts.map +1 -0
  157. package/dist/pty/openTerminal.js +185 -0
  158. package/dist/pty/openTerminal.js.map +1 -0
  159. package/dist/pty/pairDialog.d.ts +16 -0
  160. package/dist/pty/pairDialog.d.ts.map +1 -0
  161. package/dist/pty/pairDialog.js +121 -0
  162. package/dist/pty/pairDialog.js.map +1 -0
  163. package/dist/pty/pairing.d.ts +86 -0
  164. package/dist/pty/pairing.d.ts.map +1 -0
  165. package/dist/pty/pairing.js +351 -0
  166. package/dist/pty/pairing.js.map +1 -0
  167. package/dist/pty/routes.d.ts +49 -0
  168. package/dist/pty/routes.d.ts.map +1 -0
  169. package/dist/pty/routes.js +624 -0
  170. package/dist/pty/routes.js.map +1 -0
  171. package/dist/pty/sessions.d.ts +167 -0
  172. package/dist/pty/sessions.d.ts.map +1 -0
  173. package/dist/pty/sessions.js +513 -0
  174. package/dist/pty/sessions.js.map +1 -0
  175. package/dist/pty/tmux.d.ts +109 -0
  176. package/dist/pty/tmux.d.ts.map +1 -0
  177. package/dist/pty/tmux.js +271 -0
  178. package/dist/pty/tmux.js.map +1 -0
  179. package/dist/roster.d.ts +37 -0
  180. package/dist/roster.d.ts.map +1 -0
  181. package/dist/roster.js +126 -0
  182. package/dist/roster.js.map +1 -0
  183. package/dist/runtime/circuitBreaker.d.ts +95 -0
  184. package/dist/runtime/circuitBreaker.d.ts.map +1 -0
  185. package/dist/runtime/circuitBreaker.js +178 -0
  186. package/dist/runtime/circuitBreaker.js.map +1 -0
  187. package/dist/runtime/daemonMeta.d.ts +53 -0
  188. package/dist/runtime/daemonMeta.d.ts.map +1 -0
  189. package/dist/runtime/daemonMeta.js +121 -0
  190. package/dist/runtime/daemonMeta.js.map +1 -0
  191. package/dist/runtime/ensureRuntime.d.ts +103 -0
  192. package/dist/runtime/ensureRuntime.d.ts.map +1 -0
  193. package/dist/runtime/ensureRuntime.js +276 -0
  194. package/dist/runtime/ensureRuntime.js.map +1 -0
  195. package/dist/runtime/extensions.d.ts +57 -0
  196. package/dist/runtime/extensions.d.ts.map +1 -0
  197. package/dist/runtime/extensions.js +216 -0
  198. package/dist/runtime/extensions.js.map +1 -0
  199. package/dist/runtime/localHttp.d.ts +24 -0
  200. package/dist/runtime/localHttp.d.ts.map +1 -0
  201. package/dist/runtime/localHttp.js +84 -0
  202. package/dist/runtime/localHttp.js.map +1 -0
  203. package/dist/runtime/projectResolution.d.ts +29 -0
  204. package/dist/runtime/projectResolution.d.ts.map +1 -0
  205. package/dist/runtime/projectResolution.js +67 -0
  206. package/dist/runtime/projectResolution.js.map +1 -0
  207. package/dist/runtime/protocol.d.ts +62 -0
  208. package/dist/runtime/protocol.d.ts.map +1 -0
  209. package/dist/runtime/protocol.js +74 -0
  210. package/dist/runtime/protocol.js.map +1 -0
  211. package/dist/sentinelIssues.d.ts +42 -2
  212. package/dist/sentinelIssues.d.ts.map +1 -1
  213. package/dist/sentinelIssues.js +167 -65
  214. package/dist/sentinelIssues.js.map +1 -1
  215. package/dist/server.js +123 -15
  216. package/dist/server.js.map +1 -1
  217. package/dist/toolConfig.d.ts.map +1 -1
  218. package/dist/toolConfig.js +12 -0
  219. package/dist/toolConfig.js.map +1 -1
  220. package/dist/tools/agentic/agentQueue.d.ts.map +1 -1
  221. package/dist/tools/agentic/agentQueue.js +4 -0
  222. package/dist/tools/agentic/agentQueue.js.map +1 -1
  223. package/dist/tools/agentic/index.d.ts.map +1 -1
  224. package/dist/tools/agentic/index.js +28 -2
  225. package/dist/tools/agentic/index.js.map +1 -1
  226. package/dist/tools/architect/index.d.ts +1 -0
  227. package/dist/tools/architect/index.d.ts.map +1 -1
  228. package/dist/tools/architect/index.js +52 -3
  229. package/dist/tools/architect/index.js.map +1 -1
  230. package/dist/tools/architect.d.ts.map +1 -1
  231. package/dist/tools/architect.js +59 -8
  232. package/dist/tools/architect.js.map +1 -1
  233. package/dist/tools/artifacts.d.ts +5 -0
  234. package/dist/tools/artifacts.d.ts.map +1 -0
  235. package/dist/tools/artifacts.js +89 -0
  236. package/dist/tools/artifacts.js.map +1 -0
  237. package/dist/tools/asks.d.ts +6 -0
  238. package/dist/tools/asks.d.ts.map +1 -0
  239. package/dist/tools/asks.js +104 -0
  240. package/dist/tools/asks.js.map +1 -0
  241. package/dist/tools/context.d.ts +10 -5
  242. package/dist/tools/context.d.ts.map +1 -1
  243. package/dist/tools/context.js +45 -18
  244. package/dist/tools/context.js.map +1 -1
  245. package/dist/tools/coordinator/coordinator.d.ts.map +1 -1
  246. package/dist/tools/coordinator/coordinator.js +48 -19
  247. package/dist/tools/coordinator/coordinator.js.map +1 -1
  248. package/dist/tools/coordinator/index.d.ts +1 -0
  249. package/dist/tools/coordinator/index.d.ts.map +1 -1
  250. package/dist/tools/coordinator/index.js +42 -2
  251. package/dist/tools/coordinator/index.js.map +1 -1
  252. package/dist/tools/crit.d.ts +2 -1
  253. package/dist/tools/crit.d.ts.map +1 -1
  254. package/dist/tools/crit.js +19 -4
  255. package/dist/tools/crit.js.map +1 -1
  256. package/dist/tools/data-inspector.d.ts +1 -1
  257. package/dist/tools/data-inspector.d.ts.map +1 -1
  258. package/dist/tools/data-inspector.js +1 -1
  259. package/dist/tools/data-inspector.js.map +1 -1
  260. package/dist/tools/designer/index.d.ts.map +1 -1
  261. package/dist/tools/designer/index.js +4 -3
  262. package/dist/tools/designer/index.js.map +1 -1
  263. package/dist/tools/designer/lateral-tools.d.ts.map +1 -1
  264. package/dist/tools/designer/lateral-tools.js +4 -2
  265. package/dist/tools/designer/lateral-tools.js.map +1 -1
  266. package/dist/tools/designer.d.ts +2 -1
  267. package/dist/tools/designer.d.ts.map +1 -1
  268. package/dist/tools/designer.js +24 -12
  269. package/dist/tools/designer.js.map +1 -1
  270. package/dist/tools/dojo/index.d.ts.map +1 -1
  271. package/dist/tools/dojo/index.js +52 -3
  272. package/dist/tools/dojo/index.js.map +1 -1
  273. package/dist/tools/dojo.d.ts +65 -3
  274. package/dist/tools/dojo.d.ts.map +1 -1
  275. package/dist/tools/dojo.js +148 -23
  276. package/dist/tools/dojo.js.map +1 -1
  277. package/dist/tools/friction.d.ts.map +1 -1
  278. package/dist/tools/friction.js +16 -6
  279. package/dist/tools/friction.js.map +1 -1
  280. package/dist/tools/guardian.d.ts +7 -0
  281. package/dist/tools/guardian.d.ts.map +1 -1
  282. package/dist/tools/guardian.js +152 -11
  283. package/dist/tools/guardian.js.map +1 -1
  284. package/dist/tools/hygiene/oracle-hygiene.d.ts.map +1 -1
  285. package/dist/tools/hygiene/oracle-hygiene.js +8 -2
  286. package/dist/tools/hygiene/oracle-hygiene.js.map +1 -1
  287. package/dist/tools/index.d.ts.map +1 -1
  288. package/dist/tools/index.js +33 -18
  289. package/dist/tools/index.js.map +1 -1
  290. package/dist/tools/killswitch/index.d.ts +13 -0
  291. package/dist/tools/killswitch/index.d.ts.map +1 -0
  292. package/dist/tools/killswitch/index.js +138 -0
  293. package/dist/tools/killswitch/index.js.map +1 -0
  294. package/dist/tools/learnings.d.ts +2 -1
  295. package/dist/tools/learnings.d.ts.map +1 -1
  296. package/dist/tools/learnings.js +31 -15
  297. package/dist/tools/learnings.js.map +1 -1
  298. package/dist/tools/oracle/index.d.ts.map +1 -1
  299. package/dist/tools/oracle/index.js +8 -0
  300. package/dist/tools/oracle/index.js.map +1 -1
  301. package/dist/tools/oracle.d.ts +7 -0
  302. package/dist/tools/oracle.d.ts.map +1 -1
  303. package/dist/tools/oracle.js +41 -12
  304. package/dist/tools/oracle.js.map +1 -1
  305. package/dist/tools/policy.d.ts +2 -1
  306. package/dist/tools/policy.d.ts.map +1 -1
  307. package/dist/tools/policy.js +28 -9
  308. package/dist/tools/policy.js.map +1 -1
  309. package/dist/tools/postoffice/index.d.ts +10 -0
  310. package/dist/tools/postoffice/index.d.ts.map +1 -0
  311. package/dist/tools/postoffice/index.js +218 -0
  312. package/dist/tools/postoffice/index.js.map +1 -0
  313. package/dist/tools/postoffice.d.ts +78 -0
  314. package/dist/tools/postoffice.d.ts.map +1 -0
  315. package/dist/tools/postoffice.js +199 -0
  316. package/dist/tools/postoffice.js.map +1 -0
  317. package/dist/tools/provenance.d.ts +18 -2
  318. package/dist/tools/provenance.d.ts.map +1 -1
  319. package/dist/tools/provenance.js +68 -40
  320. package/dist/tools/provenance.js.map +1 -1
  321. package/dist/tools/registry/index.d.ts.map +1 -1
  322. package/dist/tools/registry/index.js +24 -0
  323. package/dist/tools/registry/index.js.map +1 -1
  324. package/dist/tools/sentinel/index.d.ts +1 -0
  325. package/dist/tools/sentinel/index.d.ts.map +1 -1
  326. package/dist/tools/sentinel/index.js +142 -6
  327. package/dist/tools/sentinel/index.js.map +1 -1
  328. package/dist/tools/sentinel.d.ts +152 -1
  329. package/dist/tools/sentinel.d.ts.map +1 -1
  330. package/dist/tools/sentinel.js +609 -328
  331. package/dist/tools/sentinel.js.map +1 -1
  332. package/dist/tools/shared/index.d.ts +2 -1
  333. package/dist/tools/shared/index.d.ts.map +1 -1
  334. package/dist/tools/shared/index.js +2 -1
  335. package/dist/tools/shared/index.js.map +1 -1
  336. package/dist/tools/shared/response.d.ts +24 -0
  337. package/dist/tools/shared/response.d.ts.map +1 -1
  338. package/dist/tools/shared/response.js +61 -7
  339. package/dist/tools/shared/response.js.map +1 -1
  340. package/dist/tools/shared/runTracker.d.ts +2 -0
  341. package/dist/tools/shared/runTracker.d.ts.map +1 -1
  342. package/dist/tools/shared/runTracker.js +38 -0
  343. package/dist/tools/shared/runTracker.js.map +1 -1
  344. package/dist/tools/shared/storeRead.d.ts +153 -0
  345. package/dist/tools/shared/storeRead.d.ts.map +1 -0
  346. package/dist/tools/shared/storeRead.js +242 -0
  347. package/dist/tools/shared/storeRead.js.map +1 -0
  348. package/dist/tools/swarm.d.ts +3 -1
  349. package/dist/tools/swarm.d.ts.map +1 -1
  350. package/dist/tools/swarm.js +6 -12
  351. package/dist/tools/swarm.js.map +1 -1
  352. package/dist/tools/testSpec.d.ts +3 -2
  353. package/dist/tools/testSpec.d.ts.map +1 -1
  354. package/dist/tools/testSpec.js +51 -14
  355. package/dist/tools/testSpec.js.map +1 -1
  356. package/dist/tools/vector.d.ts +33 -1
  357. package/dist/tools/vector.d.ts.map +1 -1
  358. package/dist/tools/vector.js +31 -5
  359. package/dist/tools/vector.js.map +1 -1
  360. package/dist/tools/voice/index.d.ts +1 -0
  361. package/dist/tools/voice/index.d.ts.map +1 -1
  362. package/dist/tools/voice/index.js +33 -2
  363. package/dist/tools/voice/index.js.map +1 -1
  364. package/dist/tools/voice.d.ts +48 -1
  365. package/dist/tools/voice.d.ts.map +1 -1
  366. package/dist/tools/voice.js +63 -3
  367. package/dist/tools/voice.js.map +1 -1
  368. package/dist/tools/zoom/index.d.ts +15 -0
  369. package/dist/tools/zoom/index.d.ts.map +1 -0
  370. package/dist/tools/zoom/index.js +174 -0
  371. package/dist/tools/zoom/index.js.map +1 -0
  372. package/dist/tools/zoom.d.ts +234 -0
  373. package/dist/tools/zoom.d.ts.map +1 -0
  374. package/dist/tools/zoom.js +627 -0
  375. package/dist/tools/zoom.js.map +1 -0
  376. package/dist/transports/bridge.d.ts +1 -1
  377. package/dist/transports/bridge.d.ts.map +1 -1
  378. package/dist/transports/bridge.js +4 -1
  379. package/dist/transports/bridge.js.map +1 -1
  380. package/dist/transports/http.d.ts +1 -1
  381. package/dist/transports/http.d.ts.map +1 -1
  382. package/dist/transports/http.js +3 -1
  383. package/dist/transports/http.js.map +1 -1
  384. package/dist/transports/index.d.ts +1 -0
  385. package/dist/transports/index.d.ts.map +1 -1
  386. package/dist/transports/index.js +1 -0
  387. package/dist/transports/index.js.map +1 -1
  388. package/dist/transports/mcp.d.ts +1 -1
  389. package/dist/transports/mcp.d.ts.map +1 -1
  390. package/dist/transports/mcp.js +9 -4
  391. package/dist/transports/mcp.js.map +1 -1
  392. package/dist/transports/stdio.d.ts +1 -1
  393. package/dist/transports/stdio.d.ts.map +1 -1
  394. package/dist/transports/stdio.js +2 -0
  395. package/dist/transports/stdio.js.map +1 -1
  396. package/dist/transports/thinStdio.d.ts +22 -0
  397. package/dist/transports/thinStdio.d.ts.map +1 -0
  398. package/dist/transports/thinStdio.js +218 -0
  399. package/dist/transports/thinStdio.js.map +1 -0
  400. package/dist/transports/types.d.ts +8 -1
  401. package/dist/transports/types.d.ts.map +1 -1
  402. package/dist/types/agent-services.d.ts +7 -0
  403. package/dist/types/agent-services.d.ts.map +1 -1
  404. package/dist/version.d.ts +5 -0
  405. package/dist/version.d.ts.map +1 -0
  406. package/dist/version.js +23 -0
  407. package/dist/version.js.map +1 -0
  408. package/package.json +20 -4
  409. package/templates/AGENT.md +3 -0
  410. package/templates/CLAUDE-decibel.md +11 -0
  411. package/templates/com.decibel.daemon.plist +6 -1
  412. package/dist/tools/deck.d.ts +0 -11
  413. package/dist/tools/deck.d.ts.map +0 -1
  414. package/dist/tools/deck.js +0 -1656
  415. package/dist/tools/deck.js.map +0 -1
  416. package/dist/tools/mother.d.ts +0 -11
  417. package/dist/tools/mother.d.ts.map +0 -1
  418. package/dist/tools/mother.js +0 -503
  419. package/dist/tools/mother.js.map +0 -1
  420. package/dist/tools/registry.d.ts +0 -3
  421. package/dist/tools/registry.d.ts.map +0 -1
  422. package/dist/tools/registry.js +0 -189
  423. package/dist/tools/registry.js.map +0 -1
  424. package/dist/tools/senken.d.ts +0 -11
  425. package/dist/tools/senken.d.ts.map +0 -1
  426. package/dist/tools/senken.js +0 -482
  427. package/dist/tools/senken.js.map +0 -1
  428. package/dist/tools/terminal.d.ts +0 -17
  429. package/dist/tools/terminal.d.ts.map +0 -1
  430. package/dist/tools/terminal.js +0 -968
  431. package/dist/tools/terminal.js.map +0 -1
  432. package/dist/tools/toolsIndex.d.ts +0 -5
  433. package/dist/tools/toolsIndex.d.ts.map +0 -1
  434. package/dist/tools/toolsIndex.js +0 -37
  435. package/dist/tools/toolsIndex.js.map +0 -1
package/dist/daemon.js CHANGED
@@ -10,16 +10,22 @@ import { homedir } from 'os';
10
10
  import { execSync } from 'child_process';
11
11
  import { fileURLToPath } from 'url';
12
12
  import { log } from './config.js';
13
+ import { metaPath, daemonStateDir, readDaemonMeta, heldByAnotherProcess, } from './runtime/daemonMeta.js';
13
14
  // ============================================================================
14
15
  // Paths
15
16
  // ============================================================================
16
17
  const DECIBEL_HOME = join(homedir(), '.decibel');
17
- const PID_PATH = join(DECIBEL_HOME, 'daemon.pid');
18
- const LOG_DIR = join(DECIBEL_HOME, 'logs');
18
+ // Pid and logs follow DECIBEL_DAEMON_SIDECAR; the env file stays shared.
19
+ const STATE_DIR = daemonStateDir();
20
+ const PID_PATH = join(STATE_DIR, 'daemon.pid');
21
+ const LOG_DIR = join(STATE_DIR, 'logs');
19
22
  const LOG_PATH = join(LOG_DIR, 'daemon.log');
20
- const PLIST_NAME = 'com.decibel.daemon.plist';
23
+ const LAUNCHD_LABEL = 'com.decibel.daemon';
24
+ const PLIST_NAME = `${LAUNCHD_LABEL}.plist`;
21
25
  const LAUNCH_AGENTS_DIR = join(homedir(), 'Library', 'LaunchAgents');
22
26
  const PLIST_DEST = join(LAUNCH_AGENTS_DIR, PLIST_NAME);
27
+ const SYSTEM_LAUNCH_AGENTS_DIR = '/Library/LaunchAgents';
28
+ const ENV_FILE_PATH = join(DECIBEL_HOME, 'env');
23
29
  function ensureDir(dir) {
24
30
  if (!existsSync(dir)) {
25
31
  mkdirSync(dir, { recursive: true });
@@ -57,7 +63,7 @@ export function readPid() {
57
63
  * Write current process PID to file.
58
64
  */
59
65
  export function writePid() {
60
- ensureDir(DECIBEL_HOME);
66
+ ensureDir(STATE_DIR);
61
67
  writeFileSync(PID_PATH, String(process.pid), 'utf-8');
62
68
  log(`Daemon: PID ${process.pid} written to ${PID_PATH}`);
63
69
  }
@@ -136,28 +142,36 @@ export function rotateLog(filePath, maxSizeBytes = DEFAULT_MAX_LOG_BYTES, maxFil
136
142
  // ============================================================================
137
143
  // Crash Loop Protection
138
144
  // ============================================================================
139
- const META_PATH = join(DECIBEL_HOME, 'daemon.meta');
140
145
  const MAX_CRASH_COUNT = 5;
141
146
  const CRASH_WINDOW_MS = 60_000; // 60 seconds
142
147
  const HEALTH_RESET_MS = 5 * 60_000; // 5 minutes
143
148
  function readMeta() {
144
- try {
145
- return JSON.parse(readFileSync(META_PATH, 'utf-8'));
146
- }
147
- catch {
148
- return null;
149
- }
149
+ return readDaemonMeta();
150
150
  }
151
151
  function writeMeta(meta) {
152
- ensureDir(DECIBEL_HOME);
153
- writeFileSync(META_PATH, JSON.stringify(meta), 'utf-8');
152
+ ensureDir(STATE_DIR);
153
+ // Merge so crash-loop / reset writes (and a second instance that exits on
154
+ // "already running") don't drop the port/pid setDaemonPort recorded.
155
+ writeFileSync(metaPath(), JSON.stringify({ ...readMeta(), ...meta }), 'utf-8');
154
156
  }
155
157
  /**
156
158
  * Record the bound port and pid in daemon.meta so clients (HQ, CLI, scripts)
157
- * can discover the daemon without hardcoding 8787. Called after the HTTP
158
- * server has actually bound the port.
159
+ * can discover the daemon without hardcoding a port. Called after the HTTP
160
+ * server has actually bound, and ONLY by the daemon — see daemonMeta.ts for why
161
+ * a plain `--http` run advertising here broke every hook on the machine.
162
+ *
163
+ * Refuses to take discovery from a live process that is not us. Two daemons
164
+ * cannot both be "the" daemon, and the loser of that race used to be whichever
165
+ * one started first, silently. Returns false when it declined.
159
166
  */
160
167
  export function setDaemonPort(port) {
168
+ const incumbent = heldByAnotherProcess();
169
+ if (incumbent) {
170
+ log(`Daemon: NOT advertising port ${port} — pid ${incumbent.pid} is alive and already ` +
171
+ `advertising port ${incumbent.port}. Clients keep following it. ` +
172
+ `Stop that process first if this one should own discovery.`);
173
+ return false;
174
+ }
161
175
  const existing = readMeta();
162
176
  writeMeta({
163
177
  started_at: existing?.started_at ?? new Date().toISOString(),
@@ -165,6 +179,25 @@ export function setDaemonPort(port) {
165
179
  port,
166
180
  pid: process.pid,
167
181
  });
182
+ return true;
183
+ }
184
+ /**
185
+ * Withdraw our advertisement on the way out, so a clean shutdown does not leave
186
+ * clients dialling a port we are no longer serving. Only clears an entry that
187
+ * is ours — a successor that already took over must not be erased.
188
+ */
189
+ export function clearDaemonPort() {
190
+ const meta = readMeta();
191
+ if (!meta || meta.pid !== process.pid)
192
+ return;
193
+ try {
194
+ const { port: _port, pid: _pid, ...rest } = meta;
195
+ writeFileSync(metaPath(), JSON.stringify(rest), 'utf-8');
196
+ log('Daemon: withdrew port advertisement from daemon.meta');
197
+ }
198
+ catch (err) {
199
+ log(`Daemon: failed to withdraw advertisement: ${err instanceof Error ? err.message : String(err)}`);
200
+ }
168
201
  }
169
202
  /**
170
203
  * Check for crash loop. Returns true if safe to start, false if should exit.
@@ -253,11 +286,124 @@ export function installShutdownHandlers(cleanup) {
253
286
  // ============================================================================
254
287
  // launchd Integration (macOS)
255
288
  // ============================================================================
289
+ /** The launchd domain for the current user, e.g. `gui/501`. */
290
+ function launchdDomain() {
291
+ return `gui/${process.getuid?.() ?? 0}`;
292
+ }
293
+ /**
294
+ * True when `path` lives on the boot volume.
295
+ *
296
+ * launchd refuses to bootstrap user agents from any other volume — it fails
297
+ * with `5: Input/output error`. Used only to explain a failure, never to
298
+ * decide whether the install succeeded (that comes from `isLaunchdLoaded`).
299
+ */
300
+ function isOnBootVolume(path) {
301
+ // Walk up to the nearest component that exists — the leaf may not be written yet.
302
+ let probe = path;
303
+ while (!existsSync(probe)) {
304
+ const parent = dirname(probe);
305
+ if (parent === probe)
306
+ return false;
307
+ probe = parent;
308
+ }
309
+ try {
310
+ const dev = statSync(probe).dev;
311
+ // On APFS volume groups `/` and the Data volume report the same st_dev,
312
+ // but check both so this holds on older layouts too.
313
+ for (const root of ['/', '/System/Volumes/Data']) {
314
+ try {
315
+ if (statSync(root).dev === dev)
316
+ return true;
317
+ }
318
+ catch {
319
+ // Root probe missing — try the next one.
320
+ }
321
+ }
322
+ }
323
+ catch {
324
+ // Unstattable: treat as off-volume so we surface the hint rather than hide it.
325
+ }
326
+ return false;
327
+ }
328
+ /**
329
+ * Ask launchd whether the agent is actually loaded.
330
+ *
331
+ * This is the only trustworthy signal. `launchctl load` exits 0 even when it
332
+ * fails, which is what let install report success for months (ISS-0127).
333
+ */
334
+ export function isLaunchdLoaded() {
335
+ try {
336
+ execSync(`launchctl print ${launchdDomain()}/${LAUNCHD_LABEL}`, { stdio: 'pipe' });
337
+ return true;
338
+ }
339
+ catch {
340
+ return false;
341
+ }
342
+ }
343
+ /**
344
+ * Remedies for the case where $HOME is not on the boot volume, so launchd will
345
+ * never load the plist we just wrote. Returns [] when that is not the problem.
346
+ */
347
+ function offBootVolumeAdvice(nodePath, serverPath, port) {
348
+ if (isOnBootVolume(LAUNCH_AGENTS_DIR))
349
+ return [];
350
+ const systemPlist = join(SYSTEM_LAUNCH_AGENTS_DIR, PLIST_NAME);
351
+ return [
352
+ '',
353
+ ` Cause: your home directory (${homedir()}) is not on the boot volume, and`,
354
+ ' launchd will not load user agents from another volume.',
355
+ '',
356
+ ' Remedy A — install to the boot volume (needs sudo, survives reboot):',
357
+ ` sudo cp ${PLIST_DEST} ${systemPlist}`,
358
+ ` sudo chown root:wheel ${systemPlist}`,
359
+ ` launchctl bootstrap ${launchdDomain()} ${systemPlist}`,
360
+ '',
361
+ ' Remedy B — cron, no sudo required:',
362
+ ` (crontab -l 2>/dev/null; echo "@reboot ${nodePath} ${serverPath} --daemon --port ${port}") | crontab -`,
363
+ ];
364
+ }
256
365
  function getTemplateDir() {
257
366
  const __filename = fileURLToPath(import.meta.url);
258
367
  const __dirname = dirname(__filename);
259
368
  return join(__dirname, '..', 'templates');
260
369
  }
370
+ /**
371
+ * Fill in the launchd plist template. Split out from `installLaunchd` so the
372
+ * substitution can be tested without touching launchctl or ~/Library.
373
+ */
374
+ export function renderPlist(options) {
375
+ const templatePath = join(getTemplateDir(), PLIST_NAME);
376
+ let plist = readFileSync(templatePath, 'utf-8');
377
+ const serverPath = join(dirname(fileURLToPath(import.meta.url)), '..', 'dist', 'server.js');
378
+ const port = options?.port || 4888;
379
+ // Carry the installing shell's tier opt-in into the agent. Deliberately not
380
+ // hardcoded in the template: a plist in /Library/LaunchAgents is world-readable,
381
+ // and guardian flags DECIBEL_PRO=1 in production as an over-grant.
382
+ //
383
+ // DECIBEL_APPS is gone (EPIC-0038 Phase 7). Private facades come from the
384
+ // allowlist in ~/.decibel/config.yaml, which is the owner's file at mode 600
385
+ // rather than a world-readable plist that has to be regenerated correctly.
386
+ // Losing that flag on a regenerate is exactly how four facades disappeared
387
+ // with no error on 2026-09-01.
388
+ const tierEnv = ['DECIBEL_PRO']
389
+ .filter(k => process.env[k] === '1')
390
+ .map(k => ` <key>${k}</key>\n <string>1</string>\n`)
391
+ .join('');
392
+ const substitutions = {
393
+ '{{NODE_PATH}}': process.execPath,
394
+ '{{SERVER_PATH}}': serverPath,
395
+ '{{PORT}}': String(port),
396
+ '{{LOG_PATH}}': LOG_PATH,
397
+ '{{ERROR_LOG_PATH}}': join(LOG_DIR, 'daemon-error.log'),
398
+ '{{ENV_FILE}}': ENV_FILE_PATH,
399
+ '{{HOME}}': homedir(),
400
+ '{{TIER_ENV}}': tierEnv,
401
+ };
402
+ for (const [token, value] of Object.entries(substitutions)) {
403
+ plist = plist.split(token).join(value);
404
+ }
405
+ return { plist, serverPath, port };
406
+ }
261
407
  /**
262
408
  * Install the launchd plist so the daemon auto-starts on login.
263
409
  */
@@ -270,60 +416,80 @@ export function installLaunchd(options) {
270
416
  message: `Template not found: ${templatePath}`,
271
417
  };
272
418
  }
273
- // Read template and substitute variables
274
- let plist = readFileSync(templatePath, 'utf-8');
275
- const serverPath = join(dirname(fileURLToPath(import.meta.url)), '..', 'dist', 'server.js');
276
- const port = options?.port || 4888;
277
- plist = plist.replace('{{NODE_PATH}}', process.execPath);
278
- plist = plist.replace('{{SERVER_PATH}}', serverPath);
279
- plist = plist.replace('{{PORT}}', String(port));
280
- plist = plist.replace('{{LOG_PATH}}', LOG_PATH);
281
- plist = plist.replace('{{ERROR_LOG_PATH}}', join(LOG_DIR, 'daemon-error.log'));
419
+ const { plist, serverPath, port } = renderPlist(options);
282
420
  // Write to LaunchAgents
283
421
  ensureDir(LAUNCH_AGENTS_DIR);
284
422
  writeFileSync(PLIST_DEST, plist, 'utf-8');
285
- // Load the agent
423
+ // Reload rather than load: bootstrap refuses a label that is already present,
424
+ // and a reinstall must pick up the plist we just wrote.
425
+ const domain = launchdDomain();
286
426
  try {
287
- execSync(`launchctl load ${PLIST_DEST}`, { stdio: 'pipe' });
427
+ execSync(`launchctl bootout ${domain}/${LAUNCHD_LABEL}`, { stdio: 'pipe' });
288
428
  }
289
429
  catch {
290
- // May already be loaded — try unload then load
291
- try {
292
- execSync(`launchctl unload ${PLIST_DEST}`, { stdio: 'pipe' });
293
- execSync(`launchctl load ${PLIST_DEST}`, { stdio: 'pipe' });
294
- }
295
- catch (e) {
296
- return {
297
- installed: true,
298
- path: PLIST_DEST,
299
- message: `Plist written but launchctl load failed: ${e}`,
300
- };
301
- }
430
+ // Not loaded — nothing to boot out.
302
431
  }
303
- return {
304
- installed: true,
305
- path: PLIST_DEST,
306
- message: `Installed and loaded. Daemon will auto-start on login (port ${port}).`,
307
- };
432
+ let bootstrapError = '';
433
+ try {
434
+ execSync(`launchctl bootstrap ${domain} ${PLIST_DEST}`, { stdio: 'pipe' });
435
+ }
436
+ catch (e) {
437
+ const err = e;
438
+ bootstrapError = String(err.stderr?.toString() || err.message || e).trim();
439
+ }
440
+ // Never trust the exit code alone — ask launchd what it actually holds.
441
+ if (isLaunchdLoaded()) {
442
+ return {
443
+ installed: true,
444
+ path: PLIST_DEST,
445
+ message: `Installed and loaded. Daemon will auto-start on login (port ${port}).`,
446
+ };
447
+ }
448
+ const lines = [
449
+ `Plist written to ${PLIST_DEST}, but launchd did not load it —`,
450
+ 'the daemon will NOT auto-start.',
451
+ ];
452
+ if (bootstrapError)
453
+ lines.push(` launchctl: ${bootstrapError}`);
454
+ lines.push(...offBootVolumeAdvice(process.execPath, serverPath, port));
455
+ return { installed: false, path: PLIST_DEST, message: lines.join('\n') };
308
456
  }
309
457
  /**
310
458
  * Uninstall the launchd plist and stop the daemon.
311
459
  */
312
460
  export function uninstallLaunchd() {
313
- if (!existsSync(PLIST_DEST)) {
314
- return { uninstalled: false, message: 'Plist not found — daemon not installed.' };
461
+ const domain = launchdDomain();
462
+ const wasLoaded = isLaunchdLoaded();
463
+ if (wasLoaded) {
464
+ try {
465
+ execSync(`launchctl bootout ${domain}/${LAUNCHD_LABEL}`, { stdio: 'pipe' });
466
+ }
467
+ catch {
468
+ // Verified below rather than trusted here.
469
+ }
315
470
  }
316
- try {
317
- execSync(`launchctl unload ${PLIST_DEST}`, { stdio: 'pipe' });
471
+ if (isLaunchdLoaded()) {
472
+ return {
473
+ uninstalled: false,
474
+ message: `Failed to unload ${LAUNCHD_LABEL}. If it was bootstrapped from ` +
475
+ `${SYSTEM_LAUNCH_AGENTS_DIR}, remove it with:\n` +
476
+ ` sudo launchctl bootout ${domain}/${LAUNCHD_LABEL}\n` +
477
+ ` sudo rm ${join(SYSTEM_LAUNCH_AGENTS_DIR, PLIST_NAME)}`,
478
+ };
318
479
  }
319
- catch {
320
- // May not be loaded
480
+ if (!existsSync(PLIST_DEST)) {
481
+ return {
482
+ uninstalled: wasLoaded,
483
+ message: wasLoaded
484
+ ? `Unloaded ${LAUNCHD_LABEL}. No plist at ${PLIST_DEST} to remove — it was loaded from elsewhere.`
485
+ : 'Plist not found — daemon not installed.',
486
+ };
321
487
  }
322
488
  try {
323
489
  unlinkSync(PLIST_DEST);
324
490
  }
325
491
  catch {
326
- return { uninstalled: false, message: 'Failed to remove plist file.' };
492
+ return { uninstalled: false, message: `Unloaded, but failed to remove ${PLIST_DEST}.` };
327
493
  }
328
494
  return { uninstalled: true, message: 'Daemon uninstalled. Will no longer auto-start.' };
329
495
  }
@@ -337,7 +503,9 @@ export function daemonStatus() {
337
503
  pid,
338
504
  pidFile: PID_PATH,
339
505
  logFile: LOG_PATH,
340
- launchd: existsSync(PLIST_DEST),
506
+ // Whether launchd actually holds the job — not merely whether a file exists.
507
+ launchd: isLaunchdLoaded(),
508
+ launchdPlist: existsSync(PLIST_DEST),
341
509
  port: null, // Would need to read from config or PID metadata
342
510
  };
343
511
  }
@@ -442,7 +610,12 @@ export function handleDaemonSubcommand(args) {
442
610
  }
443
611
  console.log(` PID file: ${status.pidFile}`);
444
612
  console.log(` Log file: ${status.logFile}`);
445
- console.log(` launchd: ${status.launchd ? 'installed' : 'not installed'}`);
613
+ const launchdState = status.launchd
614
+ ? 'loaded (auto-starts on login)'
615
+ : status.launchdPlist
616
+ ? 'plist present but NOT loaded — will not auto-start'
617
+ : 'not installed';
618
+ console.log(` launchd: ${launchdState}`);
446
619
  process.exit(0);
447
620
  return true;
448
621
  }
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,55 @@ export interface DaemonConfig {
13
13
  rate_limit_rpm: number;
14
14
  gc_interval_secs: number;
15
15
  };
16
+ /** AgentHQ post office (EPIC-0037). The token is a secret — see tools/postoffice.ts. */
17
+ hq?: {
18
+ url?: string;
19
+ token?: string;
20
+ };
16
21
  license?: {
17
22
  key?: string;
18
23
  };
24
+ /**
25
+ * Zoom AI Companion ingestion (EPIC-0036). Server-to-Server OAuth credentials.
26
+ * These are ACCOUNT-WIDE ADMIN scope — meeting_summary:read:admin reads every
27
+ * meeting in the account, not only client ones. See ISS-0123.
28
+ */
29
+ zoom?: {
30
+ account_id?: string;
31
+ client_id?: string;
32
+ client_secret?: string;
33
+ };
34
+ /**
35
+ * Private facades loaded at boot (EPIC-0038 Phase 7). `allow` holds absolute
36
+ * paths to extension modules; anything else is rejected by the loader. This
37
+ * lives in config rather than the environment on purpose — see the trust
38
+ * boundary note in runtime/extensions.ts.
39
+ */
40
+ extensions?: {
41
+ allow?: string[];
42
+ };
43
+ /**
44
+ * Hosted sessions (ADR-0012 / decibel-hq EPIC-0015). The session WRITE routes
45
+ * — attach-token, control, spawn, WS attach — can start `claude` and type into
46
+ * it, so they are gated on their own bearer rather than the daemon's, which is
47
+ * usually unset on a localhost daemon. No token = those routes fail closed.
48
+ * The token is a secret (POL-0002): it never reaches a browser; the HQ dev
49
+ * proxy injects it server-side.
50
+ */
51
+ sessions?: {
52
+ token?: string;
53
+ allowed_origins?: string[];
54
+ };
55
+ /**
56
+ * claude-peers broker supervision (ISS-0193). When `broker.command` is set,
57
+ * the daemon keeps the broker on 127.0.0.1:7899 alive, starting it detached
58
+ * when /health does not answer. Absolute paths only.
59
+ */
60
+ peers?: {
61
+ broker?: {
62
+ command?: string[];
63
+ };
64
+ };
19
65
  agents?: Record<string, AgentConfig>;
20
66
  }
21
67
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"daemonConfig.d.ts","sourceRoot":"","sources":["../src/daemonConfig.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACtC;AAuBD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,YAAY,CA8BzC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CASjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,YAAY,CAad;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,GACpB;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAiCvE"}
1
+ {"version":3,"file":"daemonConfig.d.ts","sourceRoot":"","sources":["../src/daemonConfig.ts"],"names":[],"mappings":"AAiCA,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,wFAAwF;IACxF,EAAE,CAAC,EAAE;QACH,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF;;;;OAIG;IACH,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF;;;;;OAKG;IACH,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAC;IACF;;;;OAIG;IACH,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE;YACP,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;SACpB,CAAC;KACH,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACtC;AA+BD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAiDzC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CASjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,YAAY,CAad;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,GACpB;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAqCvE"}
@@ -7,8 +7,22 @@
7
7
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
8
8
  import { join, dirname } from 'path';
9
9
  import { homedir } from 'os';
10
- import YAML from 'yaml';
10
+ import { createRequire } from 'module';
11
11
  import { log } from './config.js';
12
+ // `yaml` costs ~12 MB resident to import, and this module is loaded by every
13
+ // process that reads a port number — including the thin stdio client, which
14
+ // owns no runtime. loadConfig() returns defaults without parsing anything when
15
+ // ~/.decibel/config.yaml is absent, which is the common case, so the parser is
16
+ // pulled in on first actual parse rather than at module load. Kept sync via
17
+ // createRequire because both callers are sync and making them async would
18
+ // ripple into daemon startup ordering.
19
+ let yamlModule = null;
20
+ function yaml() {
21
+ if (!yamlModule) {
22
+ yamlModule = createRequire(import.meta.url)('yaml');
23
+ }
24
+ return yamlModule;
25
+ }
12
26
  const DEFAULT_CONFIG = {
13
27
  daemon: {
14
28
  port: 4888,
@@ -22,7 +36,15 @@ const DEFAULT_CONFIG = {
22
36
  // ============================================================================
23
37
  // Config Path
24
38
  // ============================================================================
25
- const CONFIG_PATH = join(homedir(), '.decibel', 'config.yaml');
39
+ /**
40
+ * Resolved per call rather than captured at import. os.homedir() tracks $HOME,
41
+ * and a module-level constant freezes whatever HOME was when the module first
42
+ * loaded — which is wrong for a daemon that reloads config on SIGHUP, and
43
+ * untestable for anything that needs to point at a different home.
44
+ */
45
+ function configPath() {
46
+ return join(homedir(), '.decibel', 'config.yaml');
47
+ }
26
48
  // ============================================================================
27
49
  // Load & Parse
28
50
  // ============================================================================
@@ -31,12 +53,12 @@ const CONFIG_PATH = join(homedir(), '.decibel', 'config.yaml');
31
53
  * Returns defaults if file doesn't exist or is invalid.
32
54
  */
33
55
  export function loadConfig() {
34
- if (!existsSync(CONFIG_PATH)) {
56
+ if (!existsSync(configPath())) {
35
57
  return { ...DEFAULT_CONFIG };
36
58
  }
37
59
  try {
38
- const raw = readFileSync(CONFIG_PATH, 'utf-8');
39
- const parsed = YAML.parse(raw);
60
+ const raw = readFileSync(configPath(), 'utf-8');
61
+ const parsed = yaml().parse(raw);
40
62
  if (!parsed)
41
63
  return { ...DEFAULT_CONFIG };
42
64
  return {
@@ -49,14 +71,33 @@ export function loadConfig() {
49
71
  rate_limit_rpm: parsed.daemon?.rate_limit_rpm ?? DEFAULT_CONFIG.daemon.rate_limit_rpm,
50
72
  gc_interval_secs: parsed.daemon?.gc_interval_secs ?? DEFAULT_CONFIG.daemon.gc_interval_secs,
51
73
  },
74
+ hq: parsed.hq ? {
75
+ url: parsed.hq.url,
76
+ token: parsed.hq.token,
77
+ } : undefined,
52
78
  license: parsed.license ? {
53
79
  key: parsed.license.key,
54
80
  } : undefined,
81
+ zoom: parsed.zoom ? {
82
+ account_id: parsed.zoom.account_id,
83
+ client_id: parsed.zoom.client_id,
84
+ client_secret: parsed.zoom.client_secret,
85
+ } : undefined,
86
+ extensions: parsed.extensions ? {
87
+ allow: parsed.extensions.allow,
88
+ } : undefined,
89
+ sessions: parsed.sessions ? {
90
+ token: parsed.sessions.token,
91
+ allowed_origins: parsed.sessions.allowed_origins,
92
+ } : undefined,
93
+ peers: parsed.peers?.broker ? {
94
+ broker: { command: parsed.peers.broker.command },
95
+ } : undefined,
55
96
  agents: parsed.agents,
56
97
  };
57
98
  }
58
99
  catch (err) {
59
- log(`Config: Failed to parse ${CONFIG_PATH}: ${err}`);
100
+ log(`Config: Failed to parse ${configPath()}: ${err}`);
60
101
  return { ...DEFAULT_CONFIG };
61
102
  }
62
103
  }
@@ -64,7 +105,7 @@ export function loadConfig() {
64
105
  * Get the config file path (for display purposes).
65
106
  */
66
107
  export function getConfigPath() {
67
- return CONFIG_PATH;
108
+ return configPath();
68
109
  }
69
110
  /**
70
111
  * Write a license key into ~/.decibel/config.yaml, creating the file if
@@ -72,12 +113,12 @@ export function getConfigPath() {
72
113
  * this file is hand-edited by users.
73
114
  */
74
115
  export function writeLicenseKey(key) {
75
- mkdirSync(dirname(CONFIG_PATH), { recursive: true });
76
- const doc = existsSync(CONFIG_PATH)
77
- ? YAML.parseDocument(readFileSync(CONFIG_PATH, 'utf-8'))
78
- : new YAML.Document({});
116
+ mkdirSync(dirname(configPath()), { recursive: true });
117
+ const doc = existsSync(configPath())
118
+ ? yaml().parseDocument(readFileSync(configPath(), 'utf-8'))
119
+ : new (yaml().Document)({});
79
120
  doc.setIn(['license', 'key'], key);
80
- writeFileSync(CONFIG_PATH, doc.toString(), 'utf-8');
121
+ writeFileSync(configPath(), doc.toString(), 'utf-8');
81
122
  }
82
123
  /**
83
124
  * Merge CLI flags over config file values. CLI takes precedence.
@@ -127,6 +168,10 @@ export function reloadConfig(current) {
127
168
  if (reloaded.daemon.gc_interval_secs !== current.daemon.gc_interval_secs) {
128
169
  changes.push(`gc_interval_secs: ${current.daemon.gc_interval_secs} → ${reloaded.daemon.gc_interval_secs}`);
129
170
  }
171
+ if (JSON.stringify(reloaded.peers) !== JSON.stringify(current.peers)) {
172
+ changes.push('peers: config changed (takes effect on restart)');
173
+ requiresRestart = true;
174
+ }
130
175
  if (JSON.stringify(reloaded.agents) !== JSON.stringify(current.agents)) {
131
176
  changes.push('agents: config changed');
132
177
  }