@dylanpiercey/work 0.0.6 → 0.0.7

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 (156) hide show
  1. package/bin/work.mjs +25 -2
  2. package/dist/index.mjs +992 -688
  3. package/dist/public/assets/{_lO429-VP.js → _B-_0cKbG.js} +2 -2
  4. package/dist/public/assets/{_lO429-VP.js.map → _B-_0cKbG.js.map} +1 -1
  5. package/dist/public/assets/{_kf1lUDoU2.js → _B1F2GQHq2.js} +2 -2
  6. package/dist/public/assets/{_kf1lUDoU2.js.map → _B1F2GQHq2.js.map} +1 -1
  7. package/dist/public/assets/{_D1AvypB0.js → _B49hrT7F.js} +2 -2
  8. package/dist/public/assets/{_D1AvypB0.js.map → _B49hrT7F.js.map} +1 -1
  9. package/dist/public/assets/{_lENTdKos.js → _B4R8SNvy.js} +2 -2
  10. package/dist/public/assets/{_lENTdKos.js.map → _B4R8SNvy.js.map} +1 -1
  11. package/dist/public/assets/{_T-HpFRXH.js → _B7K5PePe.js} +2 -2
  12. package/dist/public/assets/{_T-HpFRXH.js.map → _B7K5PePe.js.map} +1 -1
  13. package/dist/public/assets/{_BqB9YKHu.js → _B8mEgNvE.js} +2 -2
  14. package/dist/public/assets/{_BqB9YKHu.js.map → _B8mEgNvE.js.map} +1 -1
  15. package/dist/public/assets/{_BSe5zjTJ2.js → _BBbcogWL2.js} +2 -2
  16. package/dist/public/assets/{_BSe5zjTJ2.js.map → _BBbcogWL2.js.map} +1 -1
  17. package/dist/public/assets/{_CUCwB86v.js → _BDxD__Ca.js} +2 -2
  18. package/dist/public/assets/{_CUCwB86v.js.map → _BDxD__Ca.js.map} +1 -1
  19. package/dist/public/assets/{_D8RDRYsV.js → _BE5Ltp0D.js} +2 -2
  20. package/dist/public/assets/{_D8RDRYsV.js.map → _BE5Ltp0D.js.map} +1 -1
  21. package/dist/public/assets/{_BvkUWaoR.js → _BE8gA6TO.js} +2 -2
  22. package/dist/public/assets/{_BvkUWaoR.js.map → _BE8gA6TO.js.map} +1 -1
  23. package/dist/public/assets/{_Bt1hNExm.js → _BEY9qyEj.js} +2 -2
  24. package/dist/public/assets/{_Bt1hNExm.js.map → _BEY9qyEj.js.map} +1 -1
  25. package/dist/public/assets/{_kN8jmSEy2.js → _BFPTVBh82.js} +2 -2
  26. package/dist/public/assets/{_kN8jmSEy2.js.map → _BFPTVBh82.js.map} +1 -1
  27. package/dist/public/assets/{_DcCF4p4b2.js → _BKNwgsJI2.js} +2 -2
  28. package/dist/public/assets/{_DcCF4p4b2.js.map → _BKNwgsJI2.js.map} +1 -1
  29. package/dist/public/assets/{_B7WJMKdz.js → _BLuo0bJF.js} +2 -2
  30. package/dist/public/assets/{_B7WJMKdz.js.map → _BLuo0bJF.js.map} +1 -1
  31. package/dist/public/assets/{_D4Z_UM_B2.js → _BMbg6Q_32.js} +2 -2
  32. package/dist/public/assets/{_D4Z_UM_B2.js.map → _BMbg6Q_32.js.map} +1 -1
  33. package/dist/public/assets/{_ChbGErmQ.js → _BQqn5S5j.js} +2 -2
  34. package/dist/public/assets/{_ChbGErmQ.js.map → _BQqn5S5j.js.map} +1 -1
  35. package/dist/public/assets/{_BGjK3KLI.js → _BTJ_-CIz.js} +2 -2
  36. package/dist/public/assets/{_BGjK3KLI.js.map → _BTJ_-CIz.js.map} +1 -1
  37. package/dist/public/assets/{_D7AQAhlo.js → _BTnhYWUT.js} +2 -2
  38. package/dist/public/assets/{_D7AQAhlo.js.map → _BTnhYWUT.js.map} +1 -1
  39. package/dist/public/assets/{_DOeCLKRd.js → _B_U5SPso.js} +2 -2
  40. package/dist/public/assets/{_DOeCLKRd.js.map → _B_U5SPso.js.map} +1 -1
  41. package/dist/public/assets/{_38qjx0VE.js → _BfxQEfor.js} +2 -2
  42. package/dist/public/assets/{_38qjx0VE.js.map → _BfxQEfor.js.map} +1 -1
  43. package/dist/public/assets/{_CeDXSlq_2.js → _Bhn-MKXG2.js} +2 -2
  44. package/dist/public/assets/{_CeDXSlq_2.js.map → _Bhn-MKXG2.js.map} +1 -1
  45. package/dist/public/assets/{_17ixsFjl2.js → _BkEOzqHA2.js} +2 -2
  46. package/dist/public/assets/{_17ixsFjl2.js.map → _BkEOzqHA2.js.map} +1 -1
  47. package/dist/public/assets/{_D9oMqxHc.js → _BqeWVi6c.js} +2 -2
  48. package/dist/public/assets/{_D9oMqxHc.js.map → _BqeWVi6c.js.map} +1 -1
  49. package/dist/public/assets/{_Dfi8Atag.js → _Bx6coq7v.js} +2 -2
  50. package/dist/public/assets/{_Dfi8Atag.js.map → _Bx6coq7v.js.map} +1 -1
  51. package/dist/public/assets/{_CjoA9dbQ.js → _BxWguH11.js} +2 -2
  52. package/dist/public/assets/{_CjoA9dbQ.js.map → _BxWguH11.js.map} +1 -1
  53. package/dist/public/assets/{_C52df4172.js → _C2TX6Jrr2.js} +2 -2
  54. package/dist/public/assets/{_C52df4172.js.map → _C2TX6Jrr2.js.map} +1 -1
  55. package/dist/public/assets/{_B01vNcBH.js → _C8Lw1Tmb.js} +2 -2
  56. package/dist/public/assets/{_B01vNcBH.js.map → _C8Lw1Tmb.js.map} +1 -1
  57. package/dist/public/assets/{_Czy_Rmr8.js → _CDtlFxZX.js} +2 -2
  58. package/dist/public/assets/{_Czy_Rmr8.js.map → _CDtlFxZX.js.map} +1 -1
  59. package/dist/public/assets/{_xikqPUw52.js → _CF3V7ZyO2.js} +2 -2
  60. package/dist/public/assets/{_xikqPUw52.js.map → _CF3V7ZyO2.js.map} +1 -1
  61. package/dist/public/assets/{_CgK4NAc5.js → _CIUf_Jmq.js} +2 -2
  62. package/dist/public/assets/{_CgK4NAc5.js.map → _CIUf_Jmq.js.map} +1 -1
  63. package/dist/public/assets/{_Dg2FAYj_2.js → _CJlF2h3E2.js} +2 -2
  64. package/dist/public/assets/{_Dg2FAYj_2.js.map → _CJlF2h3E2.js.map} +1 -1
  65. package/dist/public/assets/{_CPMq9qKD.js → _CNDjHC1Q.js} +2 -2
  66. package/dist/public/assets/{_CPMq9qKD.js.map → _CNDjHC1Q.js.map} +1 -1
  67. package/dist/public/assets/{_D-u1ssE0.js → _CTkR0S8t.js} +2 -2
  68. package/dist/public/assets/{_D-u1ssE0.js.map → _CTkR0S8t.js.map} +1 -1
  69. package/dist/public/assets/{_DpRvij_q.js → _C_K-IZx7.js} +2 -2
  70. package/dist/public/assets/{_DpRvij_q.js.map → _C_K-IZx7.js.map} +1 -1
  71. package/dist/public/assets/{_rDdCnzAf.js → _CawcEo7A.js} +2 -2
  72. package/dist/public/assets/{_rDdCnzAf.js.map → _CawcEo7A.js.map} +1 -1
  73. package/dist/public/assets/{_DtkPfG0P2.js → _Ch0uVmAz2.js} +2 -2
  74. package/dist/public/assets/{_DtkPfG0P2.js.map → _Ch0uVmAz2.js.map} +1 -1
  75. package/dist/public/assets/{_DWSSCCOX.js → _Ck30GMoL.js} +2 -2
  76. package/dist/public/assets/{_DWSSCCOX.js.map → _Ck30GMoL.js.map} +1 -1
  77. package/dist/public/assets/{_BjlFBd9j.js → _Cpqbvj5d.js} +2 -2
  78. package/dist/public/assets/{_BjlFBd9j.js.map → _Cpqbvj5d.js.map} +1 -1
  79. package/dist/public/assets/{_BCmJwCZ4.js → _CqNVh0h5.js} +2 -2
  80. package/dist/public/assets/{_BCmJwCZ4.js.map → _CqNVh0h5.js.map} +1 -1
  81. package/dist/public/assets/{_CUdHfuKf2.js → _Cx_br0wh2.js} +2 -2
  82. package/dist/public/assets/{_CUdHfuKf2.js.map → _Cx_br0wh2.js.map} +1 -1
  83. package/dist/public/assets/{_nv0goT4Z.js → _CzBadWXq.js} +2 -2
  84. package/dist/public/assets/{_nv0goT4Z.js.map → _CzBadWXq.js.map} +1 -1
  85. package/dist/public/assets/{_DDDACu2e.js → _D0Dk2eMz.js} +2 -2
  86. package/dist/public/assets/{_DDDACu2e.js.map → _D0Dk2eMz.js.map} +1 -1
  87. package/dist/public/assets/{_nfuFU9Un2.js → _D0PyqJyr2.js} +2 -2
  88. package/dist/public/assets/{_nfuFU9Un2.js.map → _D0PyqJyr2.js.map} +1 -1
  89. package/dist/public/assets/{_CscsJi7i.js → _D409hg3n.js} +2 -2
  90. package/dist/public/assets/{_CscsJi7i.js.map → _D409hg3n.js.map} +1 -1
  91. package/dist/public/assets/{_DtpDQy9c.js → _D4uduNrb.js} +2 -2
  92. package/dist/public/assets/{_DtpDQy9c.js.map → _D4uduNrb.js.map} +1 -1
  93. package/dist/public/assets/{_Dlbc7SgI.js → _DBj-L0Ww.js} +2 -2
  94. package/dist/public/assets/{_Dlbc7SgI.js.map → _DBj-L0Ww.js.map} +1 -1
  95. package/dist/public/assets/{_DsK9qp5z2.js → _DC9uMckf2.js} +2 -2
  96. package/dist/public/assets/{_DsK9qp5z2.js.map → _DC9uMckf2.js.map} +1 -1
  97. package/dist/public/assets/{_DpdFHjlT.js → _DHsfzMP_.js} +2 -2
  98. package/dist/public/assets/{_DpdFHjlT.js.map → _DHsfzMP_.js.map} +1 -1
  99. package/dist/public/assets/{_C0fM-yEd.js → _DPDjFNn3.js} +2 -2
  100. package/dist/public/assets/{_C0fM-yEd.js.map → _DPDjFNn3.js.map} +1 -1
  101. package/dist/public/assets/{_vd_LQrD6.js → _DS1r4Da7.js} +2 -2
  102. package/dist/public/assets/{_vd_LQrD6.js.map → _DS1r4Da7.js.map} +1 -1
  103. package/dist/public/assets/{_BGfZ-AIc.js → _DZp-Xvf0.js} +2 -2
  104. package/dist/public/assets/{_BGfZ-AIc.js.map → _DZp-Xvf0.js.map} +1 -1
  105. package/dist/public/assets/{_Cm0oW23H.js → _DbP8pES9.js} +2 -2
  106. package/dist/public/assets/{_Cm0oW23H.js.map → _DbP8pES9.js.map} +1 -1
  107. package/dist/public/assets/{_Bj_P-is9.js → _DhqQ2yva.js} +2 -2
  108. package/dist/public/assets/{_Bj_P-is9.js.map → _DhqQ2yva.js.map} +1 -1
  109. package/dist/public/assets/{_tf4220G9.js → _Din9HEMs.js} +2 -2
  110. package/dist/public/assets/{_tf4220G9.js.map → _Din9HEMs.js.map} +1 -1
  111. package/dist/public/assets/{_kzd-9LxV.js → _Dk-i8IAv.js} +2 -2
  112. package/dist/public/assets/{_kzd-9LxV.js.map → _Dk-i8IAv.js.map} +1 -1
  113. package/dist/public/assets/{_CIE37fGr.js → _DvdWf5o-.js} +2 -2
  114. package/dist/public/assets/{_CIE37fGr.js.map → _DvdWf5o-.js.map} +1 -1
  115. package/dist/public/assets/{_U-btoBCb2.js → _DwmbSeOR2.js} +2 -2
  116. package/dist/public/assets/{_U-btoBCb2.js.map → _DwmbSeOR2.js.map} +1 -1
  117. package/dist/public/assets/{_DoTuVtdo.js → _Dz57V0my.js} +2 -2
  118. package/dist/public/assets/{_DoTuVtdo.js.map → _Dz57V0my.js.map} +1 -1
  119. package/dist/public/assets/{_CATT-8QU2.js → _JDPB-L9T2.js} +2 -2
  120. package/dist/public/assets/{_CATT-8QU2.js.map → _JDPB-L9T2.js.map} +1 -1
  121. package/dist/public/assets/{_PBOdFezG2.js → _T3Aahgg12.js} +2 -2
  122. package/dist/public/assets/{_PBOdFezG2.js.map → _T3Aahgg12.js.map} +1 -1
  123. package/dist/public/assets/{_Q7i-xAMZ.js → _Tbp9N0Pq.js} +2 -2
  124. package/dist/public/assets/{_Q7i-xAMZ.js.map → _Tbp9N0Pq.js.map} +1 -1
  125. package/dist/public/assets/{_Bs-d5a142.js → _Tqwd1-8Z2.js} +2 -2
  126. package/dist/public/assets/{_Bs-d5a142.js.map → _Tqwd1-8Z2.js.map} +1 -1
  127. package/dist/public/assets/{_uhGymT-L.js → _UPkRAhR-.js} +2 -2
  128. package/dist/public/assets/{_uhGymT-L.js.map → _UPkRAhR-.js.map} +1 -1
  129. package/dist/public/assets/{_CVvMxylB2.js → _WO2um4ce2.js} +2 -2
  130. package/dist/public/assets/{_CVvMxylB2.js.map → _WO2um4ce2.js.map} +1 -1
  131. package/dist/public/assets/{_BV7Qzzwy2.js → _WXstblxD2.js} +2 -2
  132. package/dist/public/assets/{_BV7Qzzwy2.js.map → _WXstblxD2.js.map} +1 -1
  133. package/dist/public/assets/{_DFLlSEDh2.js → _Wq5Lwig62.js} +2 -2
  134. package/dist/public/assets/{_DFLlSEDh2.js.map → _Wq5Lwig62.js.map} +1 -1
  135. package/dist/public/assets/{_VVnpWsa-2.js → _YMDMk2XX2.js} +2 -2
  136. package/dist/public/assets/{_VVnpWsa-2.js.map → _YMDMk2XX2.js.map} +1 -1
  137. package/dist/public/assets/{_CLjg6iH5.js → _b9uzSPzx.js} +2 -2
  138. package/dist/public/assets/{_CLjg6iH5.js.map → _b9uzSPzx.js.map} +1 -1
  139. package/dist/public/assets/{_BO1auSkL2.js → _dfWRmwy82.js} +2 -2
  140. package/dist/public/assets/{_BO1auSkL2.js.map → _dfWRmwy82.js.map} +1 -1
  141. package/dist/public/assets/{_DvigaXuY.js → _ehtlhcCR.js} +2 -2
  142. package/dist/public/assets/{_DvigaXuY.js.map → _ehtlhcCR.js.map} +1 -1
  143. package/dist/public/assets/{_CDUUTPIa.js → _fZl_Qerv.js} +2 -2
  144. package/dist/public/assets/{_CDUUTPIa.js.map → _fZl_Qerv.js.map} +1 -1
  145. package/dist/public/assets/{_BZgEX-SR.js → _js4WyaBT.js} +2 -2
  146. package/dist/public/assets/{_BZgEX-SR.js.map → _js4WyaBT.js.map} +1 -1
  147. package/dist/public/assets/{_B5_K4U35.js → _okHqOb61.js} +2 -2
  148. package/dist/public/assets/{_B5_K4U35.js.map → _okHqOb61.js.map} +1 -1
  149. package/dist/public/assets/{_o_JLlSoU2.js → _rMU5-5Oc2.js} +2 -2
  150. package/dist/public/assets/{_o_JLlSoU2.js.map → _rMU5-5Oc2.js.map} +1 -1
  151. package/dist/public/assets/{index-BwlA-lgI.js → index-Bx9UtyrE.js} +63 -61
  152. package/dist/public/assets/index-Bx9UtyrE.js.map +1 -0
  153. package/dist/public/assets/{index-KIy0rCx1.css → index-C_YqjXeW.css} +1 -1
  154. package/package.json +1 -1
  155. package/scripts/migrate.mjs +141 -0
  156. package/dist/public/assets/index-BwlA-lgI.js.map +0 -1
package/bin/work.mjs CHANGED
@@ -145,6 +145,25 @@ function servicePath() {
145
145
  ].join(":");
146
146
  }
147
147
 
148
+ /** Argv prefix that keeps the host awake while the server runs. A suspended
149
+ * host is a dead host: agents keep running in tmux, but the machine stops
150
+ * answering, so remote sessions look hung until someone wakes it by hand. The
151
+ * inhibitor needs no privileges and lifts when the service stops — masking
152
+ * sleep.target is the stronger machine-wide version, but that wants sudo. */
153
+ function awakePrefix() {
154
+ if (process.platform === "darwin")
155
+ return have("caffeinate") ? ["/usr/bin/caffeinate", "-s"] : [];
156
+ if (process.platform === "linux" && have("systemd-inhibit"))
157
+ return [
158
+ "systemd-inhibit",
159
+ "--what=sleep:idle",
160
+ "--who=work",
161
+ "--why=work server is running",
162
+ "--mode=block",
163
+ ];
164
+ return [];
165
+ }
166
+
148
167
  /** Where installService() writes the service definition — also the store we
149
168
  * read settings back out of, so there is no second config file to keep. */
150
169
  function serviceFile() {
@@ -206,7 +225,7 @@ function installService() {
206
225
  <dict>
207
226
  <key>Label</key><string>dev.work.app</string>
208
227
  <key>ProgramArguments</key>
209
- <array><string>${process.execPath}</string><string>${cliPath}</string><string>start</string></array>
228
+ <array>${[...awakePrefix(), process.execPath, cliPath, "start"].map((a) => `<string>${a}</string>`).join("")}</array>
210
229
  <key>RunAtLoad</key><true/>
211
230
  <key>KeepAlive</key><true/>
212
231
  <key>StandardOutPath</key><string>${os.homedir()}/Library/Logs/work.log</string>
@@ -240,6 +259,10 @@ ${envXml}
240
259
  const envLines = Object.entries(serviceEnv())
241
260
  .map(([k, v]) => `Environment=${k}=${v}`)
242
261
  .join("\n");
262
+ // systemd splits ExecStart on whitespace, so quote the inhibitor's --why.
263
+ const execStart = [...awakePrefix(), process.execPath, cliPath, "start"]
264
+ .map((a) => (a.includes(" ") ? `"${a}"` : a))
265
+ .join(" ");
243
266
  fs.writeFileSync(
244
267
  unitFile,
245
268
  `[Unit]
@@ -249,7 +272,7 @@ Description=work — agentic dev workspace GUI
249
272
  StartLimitIntervalSec=0
250
273
 
251
274
  [Service]
252
- ExecStart=${process.execPath} ${cliPath} start
275
+ ExecStart=${execStart}
253
276
  # always, not on-failure: a stray SIGTERM (an agent running \`pkill node\`) or a
254
277
  # clean exit looks like success to systemd and leaves the service down until
255
278
  # someone notices. Matches launchd's KeepAlive on the macOS side.