@covro/covro 0.6.1-dev.3 → 0.6.1-dev.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +2 -2
  2. package/README.zh-CN.md +2 -2
  3. package/dist/cli/background.js +10 -7
  4. package/dist/cli/background.js.map +2 -2
  5. package/dist/cli/daemon.js +3 -1
  6. package/dist/cli/daemon.js.map +2 -2
  7. package/dist/cli/launch-environment.js +5 -2
  8. package/dist/cli/launch-environment.js.map +2 -2
  9. package/dist/cli/launchd.js +14 -8
  10. package/dist/cli/launchd.js.map +2 -2
  11. package/dist/cli/runtime-launch.js +108 -0
  12. package/dist/cli/runtime-launch.js.map +7 -0
  13. package/dist/cli/runtime.js +12 -0
  14. package/dist/cli/runtime.js.map +7 -0
  15. package/dist/cli/service.js +7 -4
  16. package/dist/cli/service.js.map +2 -2
  17. package/dist/shared/thread-summary.js +4 -0
  18. package/dist/shared/thread-summary.js.map +2 -2
  19. package/dist/shared/updates.js.map +2 -2
  20. package/dist/update-worker.cjs +1111 -754
  21. package/dist/updates/manager.js +89 -8
  22. package/dist/updates/manager.js.map +2 -2
  23. package/dist/updates/registry.js +7 -6
  24. package/dist/updates/registry.js.map +2 -2
  25. package/dist/updates/runtime.js +183 -0
  26. package/dist/updates/runtime.js.map +7 -0
  27. package/dist/updates/transaction.js +8 -4
  28. package/dist/updates/transaction.js.map +2 -2
  29. package/dist/updates/worker.js +177 -112
  30. package/dist/updates/worker.js.map +3 -3
  31. package/dist/web/assets/{abnfDiagram-WEYOIA3C-BzVXOBcA.js → abnfDiagram-WEYOIA3C-DN4mnCRv.js} +1 -1
  32. package/dist/web/assets/{arc-CyQWAnQd.js → arc-C-ZpXoln.js} +1 -1
  33. package/dist/web/assets/{architecture-WOLXFQ4H-BEoyxwG0.js → architecture-WOLXFQ4H-CUd0gqqM.js} +1 -1
  34. package/dist/web/assets/{architectureDiagram-ZHVYKT53-CCXl4OZW.js → architectureDiagram-ZHVYKT53-Oj_a5GsP.js} +1 -1
  35. package/dist/web/assets/{blockDiagram-RJAE7QA3-D7dGEImG.js → blockDiagram-RJAE7QA3-4PplVGym.js} +1 -1
  36. package/dist/web/assets/{c4Diagram-XDPPPE54-DV8znYp0.js → c4Diagram-XDPPPE54-BKYdqaeZ.js} +1 -1
  37. package/dist/web/assets/channel-BlMZHyyx.js +1 -0
  38. package/dist/web/assets/{chunk-2E7WHVMD-0QrTjfW_.js → chunk-2E7WHVMD-BfeTdvKO.js} +1 -1
  39. package/dist/web/assets/{chunk-4EMNKR2T-D-zlzBAy.js → chunk-4EMNKR2T-B9uysHHs.js} +1 -1
  40. package/dist/web/assets/{chunk-55XCU76K-CVHEMROA.js → chunk-55XCU76K-B-m_sR0p.js} +1 -1
  41. package/dist/web/assets/{chunk-7S6XSTFO-C2rIevGp.js → chunk-7S6XSTFO-wxf9J33v.js} +1 -1
  42. package/dist/web/assets/{chunk-AQDTSKZB-DYAv-Riy.js → chunk-AQDTSKZB-xAl5XCFS.js} +1 -1
  43. package/dist/web/assets/{chunk-DSNLSHJZ-DWI7CHhD.js → chunk-DSNLSHJZ-D_jNJgxP.js} +1 -1
  44. package/dist/web/assets/{chunk-HAGFOTED-CO_q1459.js → chunk-HAGFOTED-DUb1P6Lg.js} +1 -1
  45. package/dist/web/assets/{chunk-HNE4Q36P-CgksCWEg.js → chunk-HNE4Q36P-C0mADYC8.js} +1 -1
  46. package/dist/web/assets/{chunk-NQOKRVIF-BkpxlXF9.js → chunk-NQOKRVIF-B9EU1hAw.js} +1 -1
  47. package/dist/web/assets/{chunk-UHW7PFBP-BMZQKGkg.js → chunk-UHW7PFBP-CYo95j3t.js} +1 -1
  48. package/dist/web/assets/{chunk-VQ5W62QI-DxCsqxIr.js → chunk-VQ5W62QI-D_x94xfE.js} +1 -1
  49. package/dist/web/assets/{chunk-WQQL4CDK-Drs4qCbY.js → chunk-WQQL4CDK-DF_09FKy.js} +1 -1
  50. package/dist/web/assets/{chunk-XXDRQBXY--mv0FkSH.js → chunk-XXDRQBXY-Db0qxb9k.js} +1 -1
  51. package/dist/web/assets/{chunk-YZO67HFG-BrXN1Efx.js → chunk-YZO67HFG-CON1o7vr.js} +1 -1
  52. package/dist/web/assets/{chunk-ZAUX2LTX-DWiVb0QN.js → chunk-ZAUX2LTX-D_THMk3G.js} +1 -1
  53. package/dist/web/assets/{chunk-ZCHMQSOR-p8m3-BJN.js → chunk-ZCHMQSOR-B74rMqiV.js} +1 -1
  54. package/dist/web/assets/{classDiagram-v2-4MYWR3UA-lnHHmraY.js → classDiagram-v2-4MYWR3UA-B-eMJTUo.js} +1 -1
  55. package/dist/web/assets/{cose-bilkent-JH36ORCC-B1BVV8Wv.js → cose-bilkent-JH36ORCC-7TsshBUy.js} +1 -1
  56. package/dist/web/assets/{cynefin-EF2NZ3EQ-C4TULYfr.js → cynefin-EF2NZ3EQ-DsCa_-B0.js} +1 -1
  57. package/dist/web/assets/{cynefinDiagram-WF24UDRP-rExRJUWB.js → cynefinDiagram-WF24UDRP-COlV9HVd.js} +1 -1
  58. package/dist/web/assets/{dagre-NK4GIZVX-DI6KC0Pk.js → dagre-NK4GIZVX-y1uFNAA0.js} +1 -1
  59. package/dist/web/assets/{diagram-CBK3MWTC-Don_Jr-E.js → diagram-CBK3MWTC-zaamCZvC.js} +1 -1
  60. package/dist/web/assets/{diagram-I5XIIV2D-BW1FwPhX.js → diagram-I5XIIV2D-CMxdsgeZ.js} +1 -1
  61. package/dist/web/assets/{diagram-ODIL2UCW-DxqQXqCa.js → diagram-ODIL2UCW-DONbiSY-.js} +1 -1
  62. package/dist/web/assets/{diagram-PFBEJUXE-DeFKndZw.js → diagram-PFBEJUXE-Bq9WERRa.js} +1 -1
  63. package/dist/web/assets/{diagram-RJA3I4VV-CM31q1uK.js → diagram-RJA3I4VV-Q6hrefc7.js} +1 -1
  64. package/dist/web/assets/{diagram-TYUNFSNR-DTq2AOnu.js → diagram-TYUNFSNR-Bx9b4xG0.js} +1 -1
  65. package/dist/web/assets/{dist-V4sbzI-h.js → dist-BFIN0Mr2.js} +1 -1
  66. package/dist/web/assets/{ebnfDiagram-V4P3TTPT-DF58HT_y.js → ebnfDiagram-V4P3TTPT-De7TCGcY.js} +1 -1
  67. package/dist/web/assets/{elk-QONTBCTQ-BwrVYRCb.js → elk-QONTBCTQ-BgYMjUWn.js} +1 -1
  68. package/dist/web/assets/{erDiagram-KYQIGQAA-P1WxHJun.js → erDiagram-KYQIGQAA-D3amc4E1.js} +1 -1
  69. package/dist/web/assets/{eventmodeling-K75KTNOO-BtccOmRK.js → eventmodeling-K75KTNOO-BegOALGD.js} +1 -1
  70. package/dist/web/assets/flowDiagram-IUGLLWBU-DME3RNol.js +1 -0
  71. package/dist/web/assets/{ganttDiagram-R7GPNTJY-D3qJC4vO.js → ganttDiagram-R7GPNTJY-BL9IY5nq.js} +1 -1
  72. package/dist/web/assets/{gitGraph-VSP46ZUC-BVY9Gtih.js → gitGraph-VSP46ZUC-Bg1tW8cd.js} +1 -1
  73. package/dist/web/assets/{gitGraphDiagram-PDYL7XHY-CZvvvj3Q.js → gitGraphDiagram-PDYL7XHY-C8-u9iWe.js} +1 -1
  74. package/dist/web/assets/{index-_yn3Nt0h.css → index-CSpioreu.css} +1 -1
  75. package/dist/web/assets/index-rvghHwv5.js +158 -0
  76. package/dist/web/assets/{info-OHQRW6UA-BGqiJ9Yx.js → info-OHQRW6UA-Cc5BTYJn.js} +1 -1
  77. package/dist/web/assets/{infoDiagram-MVDRKAX5-DxdTuj3n.js → infoDiagram-MVDRKAX5-D92gDvBR.js} +1 -1
  78. package/dist/web/assets/{ishikawaDiagram-HPEHV2GE-DbhjLHsb.js → ishikawaDiagram-HPEHV2GE-zki0eNoE.js} +1 -1
  79. package/dist/web/assets/{journeyDiagram-BOSHW7O7-DJROkZUW.js → journeyDiagram-BOSHW7O7-DpZwAn8r.js} +1 -1
  80. package/dist/web/assets/{kanban-definition-FNSA4HC5-D4HijqrG.js → kanban-definition-FNSA4HC5-nteh73k_.js} +1 -1
  81. package/dist/web/assets/{line-d2EHEr40.js → line-GGfSCUVv.js} +1 -1
  82. package/dist/web/assets/{linear-CnT_m8Aq.js → linear-DsrUgoDk.js} +1 -1
  83. package/dist/web/assets/{mermaid-parser.core-BqD0_cdI.js → mermaid-parser.core-D2VjaGHb.js} +3 -3
  84. package/dist/web/assets/{mermaid.core-Dd1sHHm2.js → mermaid.core-DKrt1syo.js} +4 -4
  85. package/dist/web/assets/{mindmap-definition-6OY57UG3-KPpq2dAV.js → mindmap-definition-6OY57UG3-BgwyzJR4.js} +1 -1
  86. package/dist/web/assets/{packet-JDAUHWVQ-CXnrw9bC.js → packet-JDAUHWVQ-DlkrCo2p.js} +1 -1
  87. package/dist/web/assets/{pegDiagram-ECIUJNBX-BIXIhs7W.js → pegDiagram-ECIUJNBX-BBxWOSAZ.js} +1 -1
  88. package/dist/web/assets/{pie-XZMESJXO-TrDzTbhs.js → pie-XZMESJXO-CCOFAE_a.js} +1 -1
  89. package/dist/web/assets/{pieDiagram-GNMPY74T-D8a4Sfn1.js → pieDiagram-GNMPY74T-BhhgQQgy.js} +1 -1
  90. package/dist/web/assets/{quadrantDiagram-D57K4MC3-Bt2I_ygO.js → quadrantDiagram-D57K4MC3-ChYzgEki.js} +1 -1
  91. package/dist/web/assets/{radar-ABXABTNO-BZDG4zL1.js → radar-ABXABTNO-Ca46pD68.js} +1 -1
  92. package/dist/web/assets/{railroad-I3PHUGI6-CVZI3RsT.js → railroad-I3PHUGI6-CBT-Uh0I.js} +1 -1
  93. package/dist/web/assets/{railroad-abnf-LNEFI6M7-BLFBfBsa.js → railroad-abnf-LNEFI6M7-DdhQyUIi.js} +1 -1
  94. package/dist/web/assets/{railroad-ebnf-DWYD2UWJ-CKhl-KNN.js → railroad-ebnf-DWYD2UWJ-fm1rpPox.js} +1 -1
  95. package/dist/web/assets/{railroad-peg-JR7BVNR7-CaxuMu1-.js → railroad-peg-JR7BVNR7-Ljf_B2A2.js} +1 -1
  96. package/dist/web/assets/{railroadDiagram-Y72NRBL7-BmN9o9yG.js → railroadDiagram-Y72NRBL7-Brl-l-62.js} +1 -1
  97. package/dist/web/assets/{requirementDiagram-EQYSW5RA-CytiXIk0.js → requirementDiagram-EQYSW5RA-B7tDoggO.js} +1 -1
  98. package/dist/web/assets/{sankeyDiagram-SY24JHO5-2oasnbjI.js → sankeyDiagram-SY24JHO5-CEl9woly.js} +1 -1
  99. package/dist/web/assets/{sequenceDiagram-BLEHNHQU-CgKYeJhF.js → sequenceDiagram-BLEHNHQU-_sIeQycH.js} +1 -1
  100. package/dist/web/assets/{src-DeJ6DlL6.js → src-CzJBK7wO.js} +1 -1
  101. package/dist/web/assets/{stateDiagram-v2-A6IESKWZ-BcBo9Tt9.js → stateDiagram-v2-A6IESKWZ-BmDfkrLq.js} +1 -1
  102. package/dist/web/assets/{swimlanes-B3ENRKFQ-DHvDY449.js → swimlanes-B3ENRKFQ-BF2Dkqgm.js} +1 -1
  103. package/dist/web/assets/swimlanesDiagram-AYQRV4AK-xiCDl7CJ.js +8 -0
  104. package/dist/web/assets/{timeline-definition-JXYKGLGB-DHOYx58-.js → timeline-definition-JXYKGLGB-BeZ2Am0y.js} +1 -1
  105. package/dist/web/assets/{treeView-D4JQ5SDB-BKzsH1H3.js → treeView-D4JQ5SDB-Cz5TtugL.js} +1 -1
  106. package/dist/web/assets/{treemap-SAJKECNS-Dznq3JYy.js → treemap-SAJKECNS-DgtBi066.js} +1 -1
  107. package/dist/web/assets/{usecaseDiagram-WPOLBNNX-B_Qb6GIb.js → usecaseDiagram-WPOLBNNX-CcdkLEBI.js} +1 -1
  108. package/dist/web/assets/{vennDiagram-Q3Y3IDCW-DDRYcnZj.js → vennDiagram-Q3Y3IDCW-DuZaWIS3.js} +1 -1
  109. package/dist/web/assets/{wardley-7MLQ67FV-CwCK5TZf.js → wardley-7MLQ67FV-wn9nqF2d.js} +1 -1
  110. package/dist/web/assets/{wardleyDiagram-IVAIDKWA-DW68fX4l.js → wardleyDiagram-IVAIDKWA-DfZJvZQO.js} +1 -1
  111. package/dist/web/assets/{xychartDiagram-4URNHDU4-Cdk5RxaR.js → xychartDiagram-4URNHDU4-BwVyqdut.js} +1 -1
  112. package/dist/web/index.html +2 -2
  113. package/dist/web/notification-worker.js +33 -0
  114. package/package.json +3 -3
  115. package/dist/web/assets/channel-kBOj6wNa.js +0 -1
  116. package/dist/web/assets/flowDiagram-IUGLLWBU-DnTlbOxw.js +0 -1
  117. package/dist/web/assets/index-B9qAZAx0.js +0 -156
  118. package/dist/web/assets/swimlanesDiagram-AYQRV4AK-2cPOFNNL.js +0 -8
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/cli/service.ts"],
4
- "sourcesContent": ["import { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { mkdir, rm, writeFile } from 'node:fs/promises';\nimport { stopAndWait } from './control.js';\nimport { saveJson } from '../updates/files.js';\nimport { ensureConfig, packageRoot, type CovroPaths } from './paths.js';\nimport { macOSLoginService } from './background.js';\n\nconst exec = promisify(execFile);\nconst unit = (value: string) =>\n `\"${value.replaceAll('\\\\', '\\\\\\\\').replaceAll('\"', '\\\\\"').replaceAll('%', '%%')}\"`;\n\nexport async function service(location: CovroPaths, install: boolean) {\n if (!['darwin', 'linux'].includes(process.platform))\n throw new Error(\n '\u767B\u5F55\u81EA\u542F\u76EE\u524D\u652F\u6301 macOS launchd \u548C Linux systemd --user\uFF1B\u53EF\u4F7F\u7528 covro start \u540E\u53F0\u8FD0\u884C\u3002',\n );\n const label = `dev.covro.${location.key}`;\n const entry = join(packageRoot, 'bin/covro.mjs');\n if (process.platform === 'darwin') {\n if (install) await ensureConfig(location);\n await macOSLoginService(location, entry, install);\n return;\n }\n if (install) {\n await stopAndWait(location);\n await mkdir(location.state, { recursive: true, mode: 0o700 });\n }\n const directory = join(homedir(), '.config/systemd/user');\n const filename = join(directory, `${label}.service`);\n if (install) {\n await mkdir(directory, { recursive: true });\n if (/[\\r\\n]/.test([entry, location.config, location.home, process.env.PATH].join('')))\n throw new Error('\u670D\u52A1\u8DEF\u5F84\u548C PATH \u4E0D\u80FD\u5305\u542B\u6362\u884C');\n await writeFile(\n filename,\n `[Unit]\\nDescription=Covro\\n[Service]\\nExecStart=${[process.execPath, entry, 'run', '--config', location.config].map(unit).join(' ')}\\nEnvironment=${unit(`COVRO_HOME=${location.home}`)} ${unit(`PATH=${process.env.PATH ?? '/usr/bin:/bin'}`)}\\nRestart=on-failure\\nRestartSec=30\\n[Install]\\nWantedBy=default.target\\n`,\n { mode: 0o600 },\n );\n await exec('systemctl', ['--user', 'daemon-reload']);\n await exec('systemctl', ['--user', 'enable', '--now', `${label}.service`]);\n await saveJson(join(location.state, 'service.json'), { platform: 'linux', label });\n } else {\n await exec('systemctl', ['--user', 'disable', '--now', `${label}.service`]);\n await rm(filename);\n await rm(join(location.state, 'service.json'), { force: true });\n await exec('systemctl', ['--user', 'daemon-reload']);\n }\n}\n"],
5
- "mappings": "AAAA,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,YAAY;AACrB,SAAS,OAAO,IAAI,iBAAiB;AACrC,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB;AACzB,SAAS,cAAc,mBAAoC;AAC3D,SAAS,yBAAyB;AAElC,MAAM,OAAO,UAAU,QAAQ;AAC/B,MAAM,OAAO,CAAC,UACZ,IAAI,MAAM,WAAW,MAAM,MAAM,EAAE,WAAW,KAAK,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AAEjF,eAAsB,QAAQ,UAAsB,SAAkB;AACpE,MAAI,CAAC,CAAC,UAAU,OAAO,EAAE,SAAS,QAAQ,QAAQ;AAChD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AACF,QAAM,QAAQ,aAAa,SAAS,GAAG;AACvC,QAAM,QAAQ,KAAK,aAAa,eAAe;AAC/C,MAAI,QAAQ,aAAa,UAAU;AACjC,QAAI,QAAS,OAAM,aAAa,QAAQ;AACxC,UAAM,kBAAkB,UAAU,OAAO,OAAO;AAChD;AAAA,EACF;AACA,MAAI,SAAS;AACX,UAAM,YAAY,QAAQ;AAC1B,UAAM,MAAM,SAAS,OAAO,EAAE,WAAW,MAAM,MAAM,IAAM,CAAC;AAAA,EAC9D;AACA,QAAM,YAAY,KAAK,QAAQ,GAAG,sBAAsB;AACxD,QAAM,WAAW,KAAK,WAAW,GAAG,KAAK,UAAU;AACnD,MAAI,SAAS;AACX,UAAM,MAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAC1C,QAAI,SAAS,KAAK,CAAC,OAAO,SAAS,QAAQ,SAAS,MAAM,QAAQ,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;AAClF,YAAM,IAAI,MAAM,0EAAmB;AACrC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA;AAAA;AAAA,YAAmD,CAAC,QAAQ,UAAU,OAAO,OAAO,YAAY,SAAS,MAAM,EAAE,IAAI,IAAI,EAAE,KAAK,GAAG,CAAC;AAAA,cAAiB,KAAK,cAAc,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,QAAQ,IAAI,QAAQ,eAAe,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAC/O,EAAE,MAAM,IAAM;AAAA,IAChB;AACA,UAAM,KAAK,aAAa,CAAC,UAAU,eAAe,CAAC;AACnD,UAAM,KAAK,aAAa,CAAC,UAAU,UAAU,SAAS,GAAG,KAAK,UAAU,CAAC;AACzE,UAAM,SAAS,KAAK,SAAS,OAAO,cAAc,GAAG,EAAE,UAAU,SAAS,MAAM,CAAC;AAAA,EACnF,OAAO;AACL,UAAM,KAAK,aAAa,CAAC,UAAU,WAAW,SAAS,GAAG,KAAK,UAAU,CAAC;AAC1E,UAAM,GAAG,QAAQ;AACjB,UAAM,GAAG,KAAK,SAAS,OAAO,cAAc,GAAG,EAAE,OAAO,KAAK,CAAC;AAC9D,UAAM,KAAK,aAAa,CAAC,UAAU,eAAe,CAAC;AAAA,EACrD;AACF;",
4
+ "sourcesContent": ["import { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { mkdir, rm, writeFile } from 'node:fs/promises';\nimport { stopAndWait } from './control.js';\nimport { saveJson } from '../updates/files.js';\nimport { ensureConfig, packageRoot, type CovroPaths } from './paths.js';\nimport { macOSLoginService } from './background.js';\nimport { launchRuntime, systemdQuote as unit } from './runtime-launch.js';\n\nconst exec = promisify(execFile);\n\nexport async function service(location: CovroPaths, install: boolean) {\n if (!['darwin', 'linux'].includes(process.platform))\n throw new Error(\n '\u767B\u5F55\u81EA\u542F\u76EE\u524D\u652F\u6301 macOS launchd \u548C Linux systemd --user\uFF1B\u53EF\u4F7F\u7528 covro start \u540E\u53F0\u8FD0\u884C\u3002',\n );\n const label = `dev.covro.${location.key}`;\n const entry = join(packageRoot, 'bin/covro.mjs');\n if (process.platform === 'darwin') {\n if (install) await ensureConfig(location);\n await macOSLoginService(location, entry, install);\n return;\n }\n if (install) {\n await stopAndWait(location);\n await mkdir(location.state, { recursive: true, mode: 0o700 });\n }\n const directory = join(homedir(), '.config/systemd/user');\n const filename = join(directory, `${label}.service`);\n if (install) {\n await mkdir(directory, { recursive: true });\n const runtime = await launchRuntime(location, entry);\n if (\n /[\\r\\n]/.test(\n [runtime.node, runtime.entry, location.config, location.home, runtime.path].join(''),\n )\n )\n throw new Error('\u670D\u52A1\u8DEF\u5F84\u548C PATH \u4E0D\u80FD\u5305\u542B\u6362\u884C');\n await writeFile(\n filename,\n `[Unit]\\nDescription=Covro\\n[Service]\\nExecStart=${[runtime.node, runtime.entry, 'run', '--config', location.config].map(unit).join(' ')}\\nEnvironment=${unit(`COVRO_HOME=${location.home}`)} ${unit(`PATH=${runtime.path}`)}\\nRestart=on-failure\\nRestartSec=30\\n[Install]\\nWantedBy=default.target\\n`,\n { mode: 0o600 },\n );\n await exec('systemctl', ['--user', 'daemon-reload']);\n await exec('systemctl', ['--user', 'enable', '--now', `${label}.service`]);\n await saveJson(join(location.state, 'service.json'), { platform: 'linux', label });\n } else {\n await exec('systemctl', ['--user', 'disable', '--now', `${label}.service`]);\n await rm(filename);\n await rm(join(location.state, 'service.json'), { force: true });\n await exec('systemctl', ['--user', 'daemon-reload']);\n }\n}\n"],
5
+ "mappings": "AAAA,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,YAAY;AACrB,SAAS,OAAO,IAAI,iBAAiB;AACrC,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB;AACzB,SAAS,cAAc,mBAAoC;AAC3D,SAAS,yBAAyB;AAClC,SAAS,eAAe,gBAAgB,YAAY;AAEpD,MAAM,OAAO,UAAU,QAAQ;AAE/B,eAAsB,QAAQ,UAAsB,SAAkB;AACpE,MAAI,CAAC,CAAC,UAAU,OAAO,EAAE,SAAS,QAAQ,QAAQ;AAChD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AACF,QAAM,QAAQ,aAAa,SAAS,GAAG;AACvC,QAAM,QAAQ,KAAK,aAAa,eAAe;AAC/C,MAAI,QAAQ,aAAa,UAAU;AACjC,QAAI,QAAS,OAAM,aAAa,QAAQ;AACxC,UAAM,kBAAkB,UAAU,OAAO,OAAO;AAChD;AAAA,EACF;AACA,MAAI,SAAS;AACX,UAAM,YAAY,QAAQ;AAC1B,UAAM,MAAM,SAAS,OAAO,EAAE,WAAW,MAAM,MAAM,IAAM,CAAC;AAAA,EAC9D;AACA,QAAM,YAAY,KAAK,QAAQ,GAAG,sBAAsB;AACxD,QAAM,WAAW,KAAK,WAAW,GAAG,KAAK,UAAU;AACnD,MAAI,SAAS;AACX,UAAM,MAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAC1C,UAAM,UAAU,MAAM,cAAc,UAAU,KAAK;AACnD,QACE,SAAS;AAAA,MACP,CAAC,QAAQ,MAAM,QAAQ,OAAO,SAAS,QAAQ,SAAS,MAAM,QAAQ,IAAI,EAAE,KAAK,EAAE;AAAA,IACrF;AAEA,YAAM,IAAI,MAAM,0EAAmB;AACrC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA;AAAA;AAAA,YAAmD,CAAC,QAAQ,MAAM,QAAQ,OAAO,OAAO,YAAY,SAAS,MAAM,EAAE,IAAI,IAAI,EAAE,KAAK,GAAG,CAAC;AAAA,cAAiB,KAAK,cAAc,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,QAAQ,IAAI,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAC5N,EAAE,MAAM,IAAM;AAAA,IAChB;AACA,UAAM,KAAK,aAAa,CAAC,UAAU,eAAe,CAAC;AACnD,UAAM,KAAK,aAAa,CAAC,UAAU,UAAU,SAAS,GAAG,KAAK,UAAU,CAAC;AACzE,UAAM,SAAS,KAAK,SAAS,OAAO,cAAc,GAAG,EAAE,UAAU,SAAS,MAAM,CAAC;AAAA,EACnF,OAAO;AACL,UAAM,KAAK,aAAa,CAAC,UAAU,WAAW,SAAS,GAAG,KAAK,UAAU,CAAC;AAC1E,UAAM,GAAG,QAAQ;AACjB,UAAM,GAAG,KAAK,SAAS,OAAO,cAAc,GAAG,EAAE,OAAO,KAAK,CAAC;AAC9D,UAAM,KAAK,aAAa,CAAC,UAAU,eAAe,CAAC;AAAA,EACrD;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,4 @@
1
+ import { pendingAttention } from "./thread-attention.js";
1
2
  function toThreadSummary(thread) {
2
3
  const lastTurn = thread.turns.at(-1);
3
4
  return {
@@ -15,6 +16,9 @@ function toThreadSummary(thread) {
15
16
  pendingActionCount: thread.actions.filter(
16
17
  (action) => action.status === "pending" || action.status === "responding"
17
18
  ).length,
19
+ pendingQuestionCount: pendingAttention(thread).filter(
20
+ (request) => request.target.kind === "question"
21
+ ).length,
18
22
  ...lastTurn === void 0 ? {} : { lastTurnId: lastTurn.id, lastTurnStatus: lastTurn.status }
19
23
  };
20
24
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/shared/thread-summary.ts"],
4
- "sourcesContent": ["import type { ThreadSummary, ThreadView } from './types.js';\n\n/** Overview messages deliberately omit conversation content and control payloads. */\nexport function toThreadSummary(thread: ThreadView): ThreadSummary {\n const lastTurn = thread.turns.at(-1);\n return {\n id: thread.id,\n ...(thread.archived === undefined ? {} : { archived: thread.archived }),\n ...(thread.forkedFromId === undefined ? {} : { forkedFromId: thread.forkedFromId }),\n projectId: thread.projectId,\n source: thread.source,\n originator: thread.originator ?? null,\n title: thread.title,\n status: thread.status,\n managed: thread.managed,\n ...(thread.historyVisible === undefined ? {} : { historyVisible: thread.historyVisible }),\n ...(thread.updatedAt === undefined ? {} : { updatedAt: thread.updatedAt }),\n pendingActionCount: thread.actions.filter(\n (action) => action.status === 'pending' || action.status === 'responding',\n ).length,\n ...(lastTurn === undefined ? {} : { lastTurnId: lastTurn.id, lastTurnStatus: lastTurn.status }),\n };\n}\n"],
5
- "mappings": "AAGO,SAAS,gBAAgB,QAAmC;AACjE,QAAM,WAAW,OAAO,MAAM,GAAG,EAAE;AACnC,SAAO;AAAA,IACL,IAAI,OAAO;AAAA,IACX,GAAI,OAAO,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,IACrE,GAAI,OAAO,iBAAiB,SAAY,CAAC,IAAI,EAAE,cAAc,OAAO,aAAa;AAAA,IACjF,WAAW,OAAO;AAAA,IAClB,QAAQ,OAAO;AAAA,IACf,YAAY,OAAO,cAAc;AAAA,IACjC,OAAO,OAAO;AAAA,IACd,QAAQ,OAAO;AAAA,IACf,SAAS,OAAO;AAAA,IAChB,GAAI,OAAO,mBAAmB,SAAY,CAAC,IAAI,EAAE,gBAAgB,OAAO,eAAe;AAAA,IACvF,GAAI,OAAO,cAAc,SAAY,CAAC,IAAI,EAAE,WAAW,OAAO,UAAU;AAAA,IACxE,oBAAoB,OAAO,QAAQ;AAAA,MACjC,CAAC,WAAW,OAAO,WAAW,aAAa,OAAO,WAAW;AAAA,IAC/D,EAAE;AAAA,IACF,GAAI,aAAa,SAAY,CAAC,IAAI,EAAE,YAAY,SAAS,IAAI,gBAAgB,SAAS,OAAO;AAAA,EAC/F;AACF;",
4
+ "sourcesContent": ["import type { ThreadSummary, ThreadView } from './types.js';\nimport { pendingAttention } from './thread-attention.js';\n\n/** Overview messages deliberately omit conversation content and control payloads. */\nexport function toThreadSummary(thread: ThreadView): ThreadSummary {\n const lastTurn = thread.turns.at(-1);\n return {\n id: thread.id,\n ...(thread.archived === undefined ? {} : { archived: thread.archived }),\n ...(thread.forkedFromId === undefined ? {} : { forkedFromId: thread.forkedFromId }),\n projectId: thread.projectId,\n source: thread.source,\n originator: thread.originator ?? null,\n title: thread.title,\n status: thread.status,\n managed: thread.managed,\n ...(thread.historyVisible === undefined ? {} : { historyVisible: thread.historyVisible }),\n ...(thread.updatedAt === undefined ? {} : { updatedAt: thread.updatedAt }),\n pendingActionCount: thread.actions.filter(\n (action) => action.status === 'pending' || action.status === 'responding',\n ).length,\n pendingQuestionCount: pendingAttention(thread).filter(\n (request) => request.target.kind === 'question',\n ).length,\n ...(lastTurn === undefined ? {} : { lastTurnId: lastTurn.id, lastTurnStatus: lastTurn.status }),\n };\n}\n"],
5
+ "mappings": "AACA,SAAS,wBAAwB;AAG1B,SAAS,gBAAgB,QAAmC;AACjE,QAAM,WAAW,OAAO,MAAM,GAAG,EAAE;AACnC,SAAO;AAAA,IACL,IAAI,OAAO;AAAA,IACX,GAAI,OAAO,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,IACrE,GAAI,OAAO,iBAAiB,SAAY,CAAC,IAAI,EAAE,cAAc,OAAO,aAAa;AAAA,IACjF,WAAW,OAAO;AAAA,IAClB,QAAQ,OAAO;AAAA,IACf,YAAY,OAAO,cAAc;AAAA,IACjC,OAAO,OAAO;AAAA,IACd,QAAQ,OAAO;AAAA,IACf,SAAS,OAAO;AAAA,IAChB,GAAI,OAAO,mBAAmB,SAAY,CAAC,IAAI,EAAE,gBAAgB,OAAO,eAAe;AAAA,IACvF,GAAI,OAAO,cAAc,SAAY,CAAC,IAAI,EAAE,WAAW,OAAO,UAAU;AAAA,IACxE,oBAAoB,OAAO,QAAQ;AAAA,MACjC,CAAC,WAAW,OAAO,WAAW,aAAa,OAAO,WAAW;AAAA,IAC/D,EAAE;AAAA,IACF,sBAAsB,iBAAiB,MAAM,EAAE;AAAA,MAC7C,CAAC,YAAY,QAAQ,OAAO,SAAS;AAAA,IACvC,EAAE;AAAA,IACF,GAAI,aAAa,SAAY,CAAC,IAAI,EAAE,YAAY,SAAS,IAAI,gBAAgB,SAAS,OAAO;AAAA,EAC/F;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/shared/updates.ts"],
4
- "sourcesContent": ["import type {\n CodexCompatibility,\n CodexCompatibilityManifest,\n CodexUpdateConfirmation,\n} from './codex-compatibility.js';\nexport const releaseChannels = ['stable', 'beta', 'dev'] as const;\nexport type ReleaseChannel = (typeof releaseChannels)[number];\nexport interface UpdateSettings {\n channel: ReleaseChannel;\n automatic: boolean;\n}\nexport type UpdatePhase =\n 'installing' | 'waiting' | 'stopping' | 'verifying' | 'succeeded' | 'rolledBack' | 'failed';\nexport interface UpdateRun {\n id: string;\n from: string;\n target: string;\n /** Subscribed channel after activation, independent of the candidate's source. */\n channel: ReleaseChannel;\n /** Optional for update records created by older versions. */\n sourceChannel?: ReleaseChannel;\n commit?: string;\n phase: UpdatePhase;\n message: string;\n startedAt: number;\n updatedAt: number;\n committed?: boolean;\n codex?: { version: string; manifest: CodexCompatibilityManifest; confirmedUnverified: boolean };\n}\nexport interface UpdateStatus {\n version: string;\n commit?: string;\n source: 'npm';\n codex: CodexCompatibility;\n settings: UpdateSettings;\n available?: {\n version: string;\n requestedChannel: ReleaseChannel;\n /** Actual npm source of the selected version. */\n channel: ReleaseChannel;\n commit?: string;\n downgrade: boolean;\n codex: CodexCompatibility;\n };\n checkedAt?: number;\n checkError?: string;\n supported: boolean;\n unsupportedReason?: string;\n run?: UpdateRun;\n}\nexport const updateActive = (run?: UpdateRun) =>\n Boolean(run && ['installing', 'waiting', 'stopping', 'verifying'].includes(run.phase));\nexport interface UpdateController {\n status(): Promise<UpdateStatus>;\n check(channel?: ReleaseChannel): Promise<UpdateStatus>;\n configure(settings: UpdateSettings): Promise<UpdateStatus>;\n start(input: {\n clientOperationId: string;\n channel?: ReleaseChannel;\n allowDowngrade?: boolean;\n codexConfirmation?: CodexUpdateConfirmation;\n }): Promise<UpdateStatus>;\n close(): void;\n}\n"],
5
- "mappings": "AAKO,MAAM,kBAAkB,CAAC,UAAU,QAAQ,KAAK;AA6ChD,MAAM,eAAe,CAAC,QAC3B,QAAQ,OAAO,CAAC,cAAc,WAAW,YAAY,WAAW,EAAE,SAAS,IAAI,KAAK,CAAC;",
4
+ "sourcesContent": ["import type {\n CodexCompatibility,\n CodexCompatibilityManifest,\n CodexUpdateConfirmation,\n} from './codex-compatibility.js';\nexport const releaseChannels = ['stable', 'beta', 'dev'] as const;\nexport type ReleaseChannel = (typeof releaseChannels)[number];\nexport interface UpdateSettings {\n channel: ReleaseChannel;\n automatic: boolean;\n}\nexport type UpdatePhase =\n 'installing' | 'waiting' | 'stopping' | 'verifying' | 'succeeded' | 'rolledBack' | 'failed';\nexport interface RuntimeIdentity {\n node: string;\n nodeVersion: string;\n root: string;\n entry: string;\n npm?: string;\n npmVersion?: string;\n globalRoot?: string;\n}\nexport interface UpdateRun {\n id: string;\n from: string;\n target: string;\n /** Subscribed channel after activation, independent of the candidate's source. */\n channel: ReleaseChannel;\n /** Optional for update records created by older versions. */\n sourceChannel?: ReleaseChannel;\n commit?: string;\n phase: UpdatePhase;\n message: string;\n startedAt: number;\n updatedAt: number;\n committed?: boolean;\n runtime?: { from: RuntimeIdentity; target: RuntimeIdentity; actual?: RuntimeIdentity };\n codex?: { version: string; manifest: CodexCompatibilityManifest; confirmedUnverified: boolean };\n}\nexport interface UpdateStatus {\n version: string;\n commit?: string;\n source: 'npm';\n codex: CodexCompatibility;\n settings: UpdateSettings;\n available?: {\n version: string;\n requestedChannel: ReleaseChannel;\n /** Actual npm source of the selected version. */\n channel: ReleaseChannel;\n commit?: string;\n downgrade: boolean;\n codex: CodexCompatibility;\n };\n checkedAt?: number;\n checkError?: string;\n supported: boolean;\n unsupportedReason?: string;\n run?: UpdateRun;\n runtime?: {\n current: RuntimeIdentity;\n target?: RuntimeIdentity;\n migration: boolean;\n error?: string;\n };\n}\nexport const updateActive = (run?: UpdateRun) =>\n Boolean(run && ['installing', 'waiting', 'stopping', 'verifying'].includes(run.phase));\nexport interface UpdateController {\n status(): Promise<UpdateStatus>;\n check(channel?: ReleaseChannel): Promise<UpdateStatus>;\n configure(settings: UpdateSettings): Promise<UpdateStatus>;\n start(input: {\n clientOperationId: string;\n channel?: ReleaseChannel;\n allowDowngrade?: boolean;\n codexConfirmation?: CodexUpdateConfirmation;\n }): Promise<UpdateStatus>;\n close(): void;\n}\n"],
5
+ "mappings": "AAKO,MAAM,kBAAkB,CAAC,UAAU,QAAQ,KAAK;AA6DhD,MAAM,eAAe,CAAC,QAC3B,QAAQ,OAAO,CAAC,cAAc,WAAW,YAAY,WAAW,EAAE,SAAS,IAAI,KAAK,CAAC;",
6
6
  "names": []
7
7
  }