@songsid/agend 2.3.0-beta.26 → 2.3.0-beta.27

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 (52) hide show
  1. package/README.md +7 -5
  2. package/README.zh-TW.md +7 -5
  3. package/dist/agent-whats-new.js +12 -2
  4. package/dist/agent-whats-new.js.map +1 -1
  5. package/dist/channel/adapters/discord.d.ts +2 -0
  6. package/dist/channel/adapters/discord.js +11 -1
  7. package/dist/channel/adapters/discord.js.map +1 -1
  8. package/dist/cli.d.ts +1 -0
  9. package/dist/cli.js +29 -0
  10. package/dist/cli.js.map +1 -1
  11. package/dist/config-validator.js +4 -2
  12. package/dist/config-validator.js.map +1 -1
  13. package/dist/daemon.js +3 -1
  14. package/dist/daemon.js.map +1 -1
  15. package/dist/doctor.d.ts +3 -0
  16. package/dist/doctor.js +10 -0
  17. package/dist/doctor.js.map +1 -1
  18. package/dist/fleet-manager.d.ts +8 -1
  19. package/dist/fleet-manager.js +83 -13
  20. package/dist/fleet-manager.js.map +1 -1
  21. package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +10 -10
  22. package/dist/general-knowledge/skills/web-dashboard/SKILL.md +10 -10
  23. package/dist/idle-gate-log.d.ts +19 -0
  24. package/dist/idle-gate-log.js +15 -0
  25. package/dist/idle-gate-log.js.map +1 -0
  26. package/dist/locale.js +18 -6
  27. package/dist/locale.js.map +1 -1
  28. package/dist/public-web-gateway.js +3 -0
  29. package/dist/public-web-gateway.js.map +1 -1
  30. package/dist/start-attempt.d.ts +1 -0
  31. package/dist/start-attempt.js +18 -0
  32. package/dist/start-attempt.js.map +1 -0
  33. package/dist/start-failure-notice.d.ts +4 -0
  34. package/dist/start-failure-notice.js +20 -0
  35. package/dist/start-failure-notice.js.map +1 -0
  36. package/dist/start-failure.d.ts +147 -0
  37. package/dist/start-failure.js +281 -0
  38. package/dist/start-failure.js.map +1 -0
  39. package/dist/types.d.ts +2 -0
  40. package/dist/ui/chat-render.js +6 -2
  41. package/dist/ui/chat-strings.js +2 -2
  42. package/dist/ui/panel-chat.js +21 -9
  43. package/dist/ui/shared/app-shell.js +50 -9
  44. package/dist/ui/shared/app.css +34 -14
  45. package/dist/ui/shared/tokens.css +4 -0
  46. package/dist/update-progress.d.ts +3 -1
  47. package/dist/update-progress.js +3 -1
  48. package/dist/update-progress.js.map +1 -1
  49. package/dist/web-api.d.ts +4 -0
  50. package/dist/web-api.js +6 -3
  51. package/dist/web-api.js.map +1 -1
  52. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"public-web-gateway.js","sourceRoot":"","sources":["../src/public-web-gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public-web-gateway.js","sourceRoot":"","sources":["../src/public-web-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAC;AAEjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,8HAA8H;AAC9H,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD,2FAA2F;AAC3F,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,IAAY;IAC3D,MAAM,KAAK,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC;IACpD,4FAA4F;IAC5F,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAClE,IAAI,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChM,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjH,kHAAkH;IAClH,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3G,IAAI,MAAM,KAAK,QAAQ,IAAI,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3F,IAAI,KAAK,IAAI,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,sHAAsH;IACtH,mFAAmF;IACnF,IAAI,MAAM,KAAK,MAAM,IAAI,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACpF,IAAI,MAAM,KAAK,QAAQ,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAG,gDAAgD;IAC/H,iHAAiH;IACjH,wDAAwD;IACxD,IAAI,KAAK,IAAI,gDAAgD,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtF,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtH,IAAI,MAAM,KAAK,QAAQ,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAG,aAAa;IAC1F,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrH,IAAI,MAAM,KAAK,KAAK,IAAI,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9E,yGAAyG;IACzG,IAAI,MAAM,KAAK,KAAK,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,IAAI,MAAM,KAAK,KAAK,IAAI,kNAAkN,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnQ,mHAAmH;IACnH,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrH,oGAAoG;IACpG,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,wBAAwB,IAAI,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjI,sFAAsF;IACtF,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,oBAAoB,IAAI,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/H,+GAA+G;IAC/G,IAAI,MAAM,KAAK,KAAK,IAAI,8DAA8D,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/G,IAAI,MAAM,KAAK,MAAM,IAAI,8JAA8J,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChN,qHAAqH;IACrH,2GAA2G;IAC3G,2FAA2F;IAC3F,IAAI,MAAM,KAAK,KAAK,IAAI,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9E,0HAA0H;IAC1H,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,oBAAoB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9F,iFAAiF;IACjF,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IACnF,yGAAyG;IACzG,qGAAqG;IACrG,oFAAoF;IACpF,OAAO,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC;AACD,SAAS,qBAAqB,CAAC,MAAc,EAAE,IAAY;IACzD,IAAI,MAAM,KAAK,KAAK,IAAI,+CAA+C,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChG,IAAI,MAAM,KAAK,QAAQ,IAAI,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9F,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,0KAA0K,CAAC,IAAI,CAAC,IAAI,CAAC;eAC7M,oEAAoE,CAAC,IAAI,CAAC,IAAI,CAAC;eAC/E,uEAAuE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxF,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,yHAAyH,CAAC,IAAI,CAAC,IAAI,CAAC;eAC7J,sEAAsE,CAAC,IAAI,CAAC,IAAI,CAAC;eACjF,yEAAyE,CAAC,IAAI,CAAC,IAAI,CAAC;eACpF,mDAAmD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,uEAAuE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChH,IAAI,MAAM,KAAK,OAAO,IAAI,6CAA6C,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChG,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,4CAA4C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjH,CAAC;AASD,MAAM,UAAU,sBAAsB,CAAC,IAStC;IACC,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,MAAM,MAAM,GAAG,gBAAgB,IAAI,CAAC,UAAU,EAAE,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,MAAM,GAAG,CAAC,GAAmB,EAAE,MAAc,EAAQ,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3J,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACxD,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC7B,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAC3C,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAChD,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAC3B,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrF,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACjH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;YAC5C,iFAAiF;YACjF,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/G,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAClF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;oBAAC,GAAG,CAAC,GAAG,CAAC,eAAe,MAAM,gBAAgB,CAAC,CAAC;oBAAC,OAAO;gBAC7H,CAAC;gBACD,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1B,CAAC;YACD,6GAA6G;YAC7G,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;YAC9E,kBAAkB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,WAAW,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC3K,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,GAAG,CAAC,WAAW;gBAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;;gBAAM,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,eAAe,GAAG,EAAE,CAAC;IAC5B,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,sHAAsH;IACtH,6GAA6G;IAC7G,MAAM,CAAC,cAAc,GAAG,yBAAyB,CAAC;IAClD,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpK,2FAA2F;IAC3F,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO;QACL,MAAM,EAAE,eAAe,EAAE,MAAM;QAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE;YAClD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;gBAC9C,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAClC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAAC,YAAY,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBACtG,OAAO,CAAC,IAAI,GAAG,CAAC,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,EAAE;YACf,0DAA0D;YAC1D,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACnL,IAAI,GAAG,KAAK,CAAC;QACf,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,IAAI,GAAG,IAAI,CAAC;YACZ,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAC7B,KAAK,MAAM,MAAM,IAAI,OAAO;gBAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ /**
2
+ * #2481: the first thing `fleet start` does — before the rest of dist/cli.js's module graph is evaluated (this is its
3
+ * first import), so a fleet that dies anywhere later in its start still counts the attempt. See start-failure.ts.
4
+ * Every other command, and any failure here, does nothing: recording an attempt must never stop a start.
5
+ */
6
+ import { getAgendHome } from "./paths.js";
7
+ import { notifyOnce, ownPackage, recordStartAttempt } from "./start-failure.js";
8
+ if (process.argv[2] === "fleet" && process.argv[3] === "start") {
9
+ try {
10
+ const version = ownPackage().version;
11
+ if (version) {
12
+ const home = getAgendHome();
13
+ notifyOnce(home, recordStartAttempt(home, version, Date.now()));
14
+ }
15
+ }
16
+ catch { /* never in the way of a start */ }
17
+ }
18
+ //# sourceMappingURL=start-attempt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-attempt.js","sourceRoot":"","sources":["../src/start-attempt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEhF,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC,OAAO,CAAC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,iCAAiC,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { StartFailure } from "./start-failure.js";
2
+ export declare function startFailureLines(failure: Extract<StartFailure, {
3
+ failing: true;
4
+ }>, home: string): string[];
@@ -0,0 +1,20 @@
1
+ /**
2
+ * #2481: the words for a fleet that fails to start after an upgrade — every `agend` command's banner and `agend doctor`.
3
+ * What to run to go back, and where the error is; never a restore of its own.
4
+ */
5
+ import { join } from "node:path";
6
+ import { t } from "./locale.js";
7
+ export function startFailureLines(failure, home) {
8
+ const lines = [t("startfail.banner", failure.version, failure.detail)];
9
+ if (failure.previous) {
10
+ lines.push(t("startfail.back", failure.previous.version));
11
+ if (failure.previous.copy)
12
+ lines.push(t("startfail.copy", failure.previous.version, failure.previous.copy));
13
+ }
14
+ else {
15
+ lines.push(t("startfail.back_unknown"));
16
+ }
17
+ lines.push(t("startfail.report", join(home, "fleet.log")));
18
+ return lines;
19
+ }
20
+ //# sourceMappingURL=start-failure-notice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-failure-notice.js","sourceRoot":"","sources":["../src/start-failure-notice.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAGhC,MAAM,UAAU,iBAAiB,CAAC,OAAiD,EAAE,IAAY;IAC/F,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9G,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * #2481: a fleet that cannot start after an upgrade is told, plainly, to the person — never rolled back.
3
+ *
4
+ * An updater can only judge what it sees while it runs. 2.2.6's, under launchd, takes the first running pid of the new
5
+ * job for a successful start (#2481), and any updater misses a fleet that starts and then fails a few minutes later.
6
+ * The installed version then crash-loops under the service manager, with the person told the update succeeded. This
7
+ * module is what every `agend` command and `agend doctor` consult afterwards:
8
+ *
9
+ * - `fleet-start-attempts.json` — written by `fleet start` as the first import of dist/cli.js (start-attempt.ts), so
10
+ * before anything later in the module graph can throw; the last attempts of the installed version.
11
+ * - `fleet-started.json` — written by the fleet only when its startup completes (with READY=1); the versions that ran.
12
+ * - the service manager's own counters — launchd's runs and last exit code, systemd's state, result and restarts — for
13
+ * failures before any of our code runs (a broken package, a missing file).
14
+ *
15
+ * The check costs nothing once the installed version has started: `fleet-started.json` names it and nothing else is
16
+ * read. It never fires for a slow start (one attempt, the job running), a deliberate stop (the job not loaded, or
17
+ * systemd inactive with Result=success), or a package installed less than 90 s ago.
18
+ *
19
+ * Only node built-ins (and child-process.ts, itself only built-ins): start-attempt.ts imports this before the rest of the CLI.
20
+ */
21
+ import { type SpawnOptions } from "node:child_process";
22
+ export declare const STARTED_FILE = "fleet-started.json";
23
+ export declare const ATTEMPTS_FILE = "fleet-start-attempts.json";
24
+ /** Attempts of one version within this window, with no start completed, count as a crash loop (no service to ask). */
25
+ export declare const ATTEMPT_WINDOW_MS: number;
26
+ export declare const LOOP_ATTEMPTS = 3;
27
+ /** A version trying to start for less than this (since its first attempt, else its install) is never judged. */
28
+ export declare const FRESH_INSTALL_MS: number;
29
+ export interface StartedRecord {
30
+ version: string;
31
+ at: string;
32
+ pid: number;
33
+ history: string[];
34
+ }
35
+ export interface AttemptsRecord {
36
+ version: string;
37
+ attempts: string[];
38
+ notified?: boolean;
39
+ }
40
+ export declare function readStarted(home: string): StartedRecord | null;
41
+ export declare function readAttempts(home: string): AttemptsRecord | null;
42
+ /** `fleet start` is running this version now. Returns the record as written. */
43
+ export declare function recordStartAttempt(home: string, version: string, now: number): AttemptsRecord;
44
+ /** The fleet's startup completed on this version: it runs; its attempts are history. */
45
+ export declare function recordStarted(home: string, version: string, pid: number, now: number): void;
46
+ /** A deliberate stop: the attempts so far are not a crash loop. */
47
+ export declare function clearStartAttempts(home: string): void;
48
+ /** What the service manager says of the fleet's job; null when it cannot be read. */
49
+ export type ManagerView = {
50
+ kind: "launchd";
51
+ loaded: false;
52
+ } | {
53
+ kind: "launchd";
54
+ loaded: true;
55
+ state: string;
56
+ runs: number | null;
57
+ lastExit: number | null;
58
+ pid: number | null;
59
+ } | {
60
+ kind: "systemd";
61
+ active: string;
62
+ sub: string;
63
+ result: string;
64
+ restarts: number | null;
65
+ status: number | null;
66
+ };
67
+ export declare function parseLaunchctlPrint(stdout: string): ManagerView;
68
+ export declare function parseSystemctlShow(stdout: string): ManagerView;
69
+ /**
70
+ * Does the manager show this job failing to start, again and again? `recentAttempts`: this version's, within the window.
71
+ * launchd keeps `last exit code` and counts `runs` for as long as the job stays loaded: a job running now (a pid) may
72
+ * just be slow — a #2461 memory-deferred start takes minutes — so for it only our own recent attempts say it restarts.
73
+ */
74
+ export declare function managerShowsLoop(view: ManagerView, recentAttempts: number): boolean;
75
+ export type StartFailure = {
76
+ failing: false;
77
+ } | {
78
+ failing: true;
79
+ version: string;
80
+ previous: Previous | null;
81
+ detail: string;
82
+ };
83
+ /** The version to go back to, and the package copy an updater kept of it (its path), when there is one. */
84
+ export interface Previous {
85
+ version: string;
86
+ copy: string | null;
87
+ }
88
+ /** A package copy an updater kept: `<prefix>/.agend-rollback/<version>-<time>[-<pid>]/agend`. */
89
+ export interface KeptCopy {
90
+ version: string;
91
+ path: string;
92
+ }
93
+ /**
94
+ * The decision, from what was read (pure). `manager`: undefined — no service installed; null — one is, but it could
95
+ * not be read; then only our own attempts record can tell.
96
+ */
97
+ export declare function judgeStartFailure(input: {
98
+ installed: string;
99
+ packageAgeMs: number;
100
+ now: number;
101
+ started: StartedRecord | null;
102
+ attempts: AttemptsRecord | null;
103
+ manager: ManagerView | null | undefined;
104
+ keptCopies?: KeptCopy[];
105
+ }): StartFailure;
106
+ /**
107
+ * The version to go back to: the newest that ran here, else the newest copy an updater kept (2.2.6's updater keeps the
108
+ * one it took before a launchd activation it judged successful); never the installed one. Its kept copy, when there is
109
+ * one, is named too — for the person to see; nothing here restores it.
110
+ */
111
+ export declare function previousVersion(installed: string, started: StartedRecord | null, kept: KeptCopy[]): Previous | null;
112
+ /** The package copies updaters kept in `<prefix>/.agend-rollback/<version>-<time>[-<pid>]/agend`, newest first. */
113
+ export declare function keptCopies(prefix: string): KeptCopy[];
114
+ /** This package: its root, version and npm prefix (`<prefix>/lib/node_modules/@songsid/agend`, or Windows' layout). */
115
+ export declare function ownPackage(): {
116
+ root: string;
117
+ version: string | null;
118
+ prefix: string | null;
119
+ };
120
+ /** npm's global prefix for a package root: `<prefix>/lib/node_modules/…` (Unix) or `<prefix>/node_modules/…`; else null. */
121
+ export declare function npmPrefixOf(root: string): string | null;
122
+ type Run = (cmd: string, args: string[]) => {
123
+ status: number | null;
124
+ stdout: string;
125
+ error?: unknown;
126
+ };
127
+ /** The AgEnD service on this host, as `agend restart` chooses it; undefined when none is installed. */
128
+ export declare function readManager(run?: Run, opts?: {
129
+ platform?: NodeJS.Platform;
130
+ home?: string;
131
+ uid?: number;
132
+ }): ManagerView | null | undefined;
133
+ /** The whole check for this installed package; `{failing:false}` at once when it has started here. */
134
+ export declare function checkStartFailure(home: string, now?: number, run?: Run): StartFailure;
135
+ /** The last lines of fleet.log — the service's own stdout/stderr — where the failure itself is. */
136
+ export declare function fleetLogTail(home: string, lines?: number): string[];
137
+ /**
138
+ * macOS: one notification per version, the 3rd failed attempt in a row (best effort; never blocks, never throws).
139
+ * English only: it runs before any config is read; `agend doctor` says the rest in the fleet's language.
140
+ */
141
+ /** How the notification is launched (tests pass a fake). */
142
+ export type Launch = (cmd: string, args: string[], opts: SpawnOptions) => {
143
+ on?: (event: "error", cb: () => void) => unknown;
144
+ unref?: () => void;
145
+ };
146
+ export declare function notifyOnce(home: string, record: AttemptsRecord, platform?: NodeJS.Platform, launch?: Launch): boolean;
147
+ export {};
@@ -0,0 +1,281 @@
1
+ /**
2
+ * #2481: a fleet that cannot start after an upgrade is told, plainly, to the person — never rolled back.
3
+ *
4
+ * An updater can only judge what it sees while it runs. 2.2.6's, under launchd, takes the first running pid of the new
5
+ * job for a successful start (#2481), and any updater misses a fleet that starts and then fails a few minutes later.
6
+ * The installed version then crash-loops under the service manager, with the person told the update succeeded. This
7
+ * module is what every `agend` command and `agend doctor` consult afterwards:
8
+ *
9
+ * - `fleet-start-attempts.json` — written by `fleet start` as the first import of dist/cli.js (start-attempt.ts), so
10
+ * before anything later in the module graph can throw; the last attempts of the installed version.
11
+ * - `fleet-started.json` — written by the fleet only when its startup completes (with READY=1); the versions that ran.
12
+ * - the service manager's own counters — launchd's runs and last exit code, systemd's state, result and restarts — for
13
+ * failures before any of our code runs (a broken package, a missing file).
14
+ *
15
+ * The check costs nothing once the installed version has started: `fleet-started.json` names it and nothing else is
16
+ * read. It never fires for a slow start (one attempt, the job running), a deliberate stop (the job not loaded, or
17
+ * systemd inactive with Result=success), or a package installed less than 90 s ago.
18
+ *
19
+ * Only node built-ins (and child-process.ts, itself only built-ins): start-attempt.ts imports this before the rest of the CLI.
20
+ */
21
+ import { spawnSync } from "node:child_process";
22
+ import { spawn } from "./child-process.js";
23
+ import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, statSync, unlinkSync, writeFileSync } from "node:fs";
24
+ import { homedir } from "node:os";
25
+ import { dirname, join } from "node:path";
26
+ import { fileURLToPath } from "node:url";
27
+ export const STARTED_FILE = "fleet-started.json";
28
+ export const ATTEMPTS_FILE = "fleet-start-attempts.json";
29
+ /** Attempts of one version within this window, with no start completed, count as a crash loop (no service to ask). */
30
+ export const ATTEMPT_WINDOW_MS = 10 * 60 * 1000;
31
+ export const LOOP_ATTEMPTS = 3;
32
+ /** A version trying to start for less than this (since its first attempt, else its install) is never judged. */
33
+ export const FRESH_INSTALL_MS = 90 * 1000;
34
+ const KEEP_ATTEMPTS = 20;
35
+ const KEEP_HISTORY = 5;
36
+ function readJson(file) {
37
+ try {
38
+ return JSON.parse(readFileSync(file, "utf8"));
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ }
44
+ function writeJson(file, value) {
45
+ mkdirSync(dirname(file), { recursive: true });
46
+ const tmp = `${file}.${process.pid}.tmp`;
47
+ writeFileSync(tmp, JSON.stringify(value) + "\n", { mode: 0o600 });
48
+ renameSync(tmp, file);
49
+ }
50
+ export function readStarted(home) {
51
+ const r = readJson(join(home, STARTED_FILE));
52
+ return r && typeof r.version === "string" && Array.isArray(r.history) ? r : null;
53
+ }
54
+ export function readAttempts(home) {
55
+ const r = readJson(join(home, ATTEMPTS_FILE));
56
+ return r && typeof r.version === "string" && Array.isArray(r.attempts) ? r : null;
57
+ }
58
+ /** `fleet start` is running this version now. Returns the record as written. */
59
+ export function recordStartAttempt(home, version, now) {
60
+ const prior = readAttempts(home);
61
+ const same = prior?.version === version;
62
+ const record = {
63
+ version,
64
+ attempts: [...(same ? prior.attempts : []), new Date(now).toISOString()].slice(-KEEP_ATTEMPTS),
65
+ ...(same && prior.notified ? { notified: true } : {}),
66
+ };
67
+ writeJson(join(home, ATTEMPTS_FILE), record);
68
+ return record;
69
+ }
70
+ /** The fleet's startup completed on this version: it runs; its attempts are history. */
71
+ export function recordStarted(home, version, pid, now) {
72
+ const prior = readStarted(home);
73
+ const history = [version, ...(prior?.history ?? []).filter(v => v !== version)].slice(0, KEEP_HISTORY);
74
+ writeJson(join(home, STARTED_FILE), { version, at: new Date(now).toISOString(), pid, history });
75
+ clearStartAttempts(home);
76
+ }
77
+ /** A deliberate stop: the attempts so far are not a crash loop. */
78
+ export function clearStartAttempts(home) {
79
+ try {
80
+ unlinkSync(join(home, ATTEMPTS_FILE));
81
+ }
82
+ catch { /* none */ }
83
+ }
84
+ export function parseLaunchctlPrint(stdout) {
85
+ const field = (key) => new RegExp(`^\\s*${key} = (.+?)\\s*$`, "m").exec(stdout)?.[1] ?? null;
86
+ const num = (v) => (v !== null && /^-?\d+$/.test(v) ? Number(v) : null);
87
+ return { kind: "launchd", loaded: true, state: field("state") ?? "", runs: num(field("runs")), lastExit: num(field("last exit code")), pid: num(field("pid")) };
88
+ }
89
+ export function parseSystemctlShow(stdout) {
90
+ const props = {};
91
+ for (const line of stdout.split("\n")) {
92
+ const at = line.indexOf("=");
93
+ if (at > 0)
94
+ props[line.slice(0, at)] = line.slice(at + 1).trim();
95
+ }
96
+ const num = (v) => (v !== undefined && /^\d+$/.test(v) ? Number(v) : null);
97
+ return { kind: "systemd", active: props.ActiveState ?? "", sub: props.SubState ?? "", result: props.Result ?? "", restarts: num(props.NRestarts), status: num(props.ExecMainStatus) };
98
+ }
99
+ const FAILED_RESULTS = new Set(["exit-code", "signal", "core-dump", "start-limit-hit", "timeout", "watchdog"]);
100
+ /**
101
+ * Does the manager show this job failing to start, again and again? `recentAttempts`: this version's, within the window.
102
+ * launchd keeps `last exit code` and counts `runs` for as long as the job stays loaded: a job running now (a pid) may
103
+ * just be slow — a #2461 memory-deferred start takes minutes — so for it only our own recent attempts say it restarts.
104
+ */
105
+ export function managerShowsLoop(view, recentAttempts) {
106
+ if (view.kind === "launchd") {
107
+ if (!view.loaded)
108
+ return false; // not loaded: stopped on purpose
109
+ const exitedBadly = view.lastExit !== null && view.lastExit !== 0;
110
+ if (!exitedBadly)
111
+ return false;
112
+ if (view.state === "running" && view.pid !== null)
113
+ return recentAttempts >= LOOP_ATTEMPTS;
114
+ return recentAttempts >= 2 || (view.runs ?? 0) >= LOOP_ATTEMPTS;
115
+ }
116
+ if (view.active === "failed")
117
+ return view.result !== "success";
118
+ if (view.sub === "auto-restart")
119
+ return true;
120
+ return FAILED_RESULTS.has(view.result) && (view.restarts ?? 0) >= 2;
121
+ }
122
+ /**
123
+ * The decision, from what was read (pure). `manager`: undefined — no service installed; null — one is, but it could
124
+ * not be read; then only our own attempts record can tell.
125
+ */
126
+ export function judgeStartFailure(input) {
127
+ const { installed, started } = input;
128
+ if (started?.version === installed)
129
+ return { failing: false };
130
+ const mine = input.attempts?.version === installed ? input.attempts.attempts : [];
131
+ // How long this version has been trying to start: since its first recorded attempt, else since it was installed.
132
+ const firstAttempt = mine.length ? Date.parse(mine[0]) : NaN;
133
+ const tryingMs = Number.isFinite(firstAttempt) ? input.now - firstAttempt : input.packageAgeMs;
134
+ if (tryingMs < FRESH_INSTALL_MS)
135
+ return { failing: false };
136
+ const recent = mine.filter(a => { const at = Date.parse(a); return Number.isFinite(at) && input.now - at <= ATTEMPT_WINDOW_MS && at <= input.now; });
137
+ let detail = null;
138
+ if (input.manager) {
139
+ if (!managerShowsLoop(input.manager, recent.length))
140
+ return { failing: false };
141
+ detail = input.manager.kind === "launchd"
142
+ ? `launchd: exit ${input.manager.lastExit}, started ${input.manager.runs ?? "?"} times`
143
+ : `systemd: ${input.manager.active}/${input.manager.sub}, result ${input.manager.result || "?"}, restarted ${input.manager.restarts ?? "?"} times`;
144
+ }
145
+ else {
146
+ if (input.manager === undefined && started === null && mine.length === 0)
147
+ return { failing: false }; // never run here
148
+ if (recent.length < LOOP_ATTEMPTS)
149
+ return { failing: false };
150
+ detail = `${recent.length} start attempts in the last ${ATTEMPT_WINDOW_MS / 60000} minutes, none completed`;
151
+ }
152
+ return { failing: true, version: installed, previous: previousVersion(installed, started, input.keptCopies ?? []), detail };
153
+ }
154
+ /**
155
+ * The version to go back to: the newest that ran here, else the newest copy an updater kept (2.2.6's updater keeps the
156
+ * one it took before a launchd activation it judged successful); never the installed one. Its kept copy, when there is
157
+ * one, is named too — for the person to see; nothing here restores it.
158
+ */
159
+ export function previousVersion(installed, started, kept) {
160
+ const copyOf = (v) => kept.find(c => c.version === v)?.path ?? null;
161
+ for (const v of started?.history ?? [])
162
+ if (v !== installed)
163
+ return { version: v, copy: copyOf(v) };
164
+ for (const c of kept)
165
+ if (c.version !== installed)
166
+ return { version: c.version, copy: c.path };
167
+ return null;
168
+ }
169
+ /** The package copies updaters kept in `<prefix>/.agend-rollback/<version>-<time>[-<pid>]/agend`, newest first. */
170
+ export function keptCopies(prefix) {
171
+ const base = join(prefix, ".agend-rollback");
172
+ let names = [];
173
+ try {
174
+ names = readdirSync(base);
175
+ }
176
+ catch {
177
+ return [];
178
+ }
179
+ return names
180
+ .map(name => ({ name, version: /^(\d+\.\d+\.\d+(?:-[0-9A-Za-z.]+?)?)-\d{4}-\d\d-\d\dT/.exec(name)?.[1] ?? null, mtime: (() => { try {
181
+ return statSync(join(base, name)).mtimeMs;
182
+ }
183
+ catch {
184
+ return 0;
185
+ } })() }))
186
+ .filter((e) => e.version !== null && existsSync(join(base, e.name, "agend", "package.json")))
187
+ .sort((a, b) => b.mtime - a.mtime)
188
+ .map(e => ({ version: e.version, path: join(base, e.name, "agend") }));
189
+ }
190
+ /** This package: its root, version and npm prefix (`<prefix>/lib/node_modules/@songsid/agend`, or Windows' layout). */
191
+ export function ownPackage() {
192
+ const root = join(dirname(fileURLToPath(import.meta.url)), "..");
193
+ const version = readJson(join(root, "package.json"))?.version ?? null;
194
+ return { root, version, prefix: npmPrefixOf(root) };
195
+ }
196
+ /** npm's global prefix for a package root: `<prefix>/lib/node_modules/…` (Unix) or `<prefix>/node_modules/…`; else null. */
197
+ export function npmPrefixOf(root) {
198
+ const parts = root.split(/[\\/]/);
199
+ const at = parts.lastIndexOf("node_modules");
200
+ if (at <= 0)
201
+ return null;
202
+ return parts.slice(0, parts[at - 1] === "lib" ? at - 1 : at).join("/") || "/";
203
+ }
204
+ const defaultRun = (cmd, args) => {
205
+ const r = spawnSync(cmd, args, { encoding: "utf8", timeout: 3000, stdio: ["ignore", "pipe", "ignore"] });
206
+ return { status: r.status, stdout: r.stdout ?? "", error: r.error };
207
+ };
208
+ /** The AgEnD service on this host, as `agend restart` chooses it; undefined when none is installed. */
209
+ export function readManager(run = defaultRun, opts = {}) {
210
+ const platform = opts.platform ?? process.platform;
211
+ const home = opts.home ?? homedir();
212
+ if (platform === "darwin") {
213
+ if (!existsSync(join(home, "Library", "LaunchAgents", "com.agend.fleet.plist")))
214
+ return undefined;
215
+ const r = run("launchctl", ["print", `gui/${opts.uid ?? process.getuid?.() ?? 501}/com.agend.fleet`]);
216
+ if (r.error || r.status === null)
217
+ return null;
218
+ if (r.status === 113 || r.status === 125)
219
+ return { kind: "launchd", loaded: false };
220
+ return r.status === 0 ? parseLaunchctlPrint(r.stdout) : null;
221
+ }
222
+ const system = existsSync("/etc/systemd/system/agend.service");
223
+ const user = existsSync(join(home, ".config", "systemd", "user", "com.agend.fleet.service"));
224
+ if (!system && !user)
225
+ return undefined;
226
+ const r = run("systemctl", [...(system ? [] : ["--user"]), "show", "-p", "ActiveState,SubState,Result,NRestarts,ExecMainStatus", system ? "agend" : "com.agend.fleet"]);
227
+ if (r.error || r.status !== 0)
228
+ return null;
229
+ return parseSystemctlShow(r.stdout);
230
+ }
231
+ /** The whole check for this installed package; `{failing:false}` at once when it has started here. */
232
+ export function checkStartFailure(home, now = Date.now(), run) {
233
+ const own = ownPackage();
234
+ if (!own.version)
235
+ return { failing: false };
236
+ const started = readStarted(home);
237
+ if (started?.version === own.version)
238
+ return { failing: false };
239
+ // No attempt of this version recorded: its fleet never reached dist/cli.js's first import — and then this CLI, the same
240
+ // entry, would not be running either. Nothing to judge, and no service manager is asked (every command stays as it was).
241
+ const attempts = readAttempts(home);
242
+ if (attempts?.version !== own.version)
243
+ return { failing: false };
244
+ let packageAgeMs = 0;
245
+ try {
246
+ packageAgeMs = now - statSync(own.root).mtimeMs;
247
+ }
248
+ catch {
249
+ return { failing: false };
250
+ }
251
+ return judgeStartFailure({
252
+ installed: own.version, packageAgeMs, now, started, attempts,
253
+ manager: readManager(run), keptCopies: own.prefix ? keptCopies(own.prefix) : [],
254
+ });
255
+ }
256
+ /** The last lines of fleet.log — the service's own stdout/stderr — where the failure itself is. */
257
+ export function fleetLogTail(home, lines = 15) {
258
+ try {
259
+ return readFileSync(join(home, "fleet.log"), "utf8").trimEnd().split("\n").slice(-lines);
260
+ }
261
+ catch {
262
+ return [];
263
+ }
264
+ }
265
+ const defaultLaunch = (cmd, args, opts) => spawn(cmd, args, opts);
266
+ export function notifyOnce(home, record, platform = process.platform, launch = defaultLaunch) {
267
+ if (platform !== "darwin" || record.notified || record.attempts.length < LOOP_ATTEMPTS)
268
+ return false;
269
+ try {
270
+ writeJson(join(home, ATTEMPTS_FILE), { ...record, notified: true });
271
+ const text = `AgEnD v${record.version} is installed but the fleet fails to start. Run: agend doctor`;
272
+ const child = launch("osascript", ["-e", `display notification ${JSON.stringify(text)} with title "AgEnD"`], { detached: true, stdio: "ignore" });
273
+ child.on?.("error", () => { });
274
+ child.unref?.();
275
+ return true;
276
+ }
277
+ catch {
278
+ return false;
279
+ }
280
+ }
281
+ //# sourceMappingURL=start-failure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-failure.js","sourceRoot":"","sources":["../src/start-failure.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -404,9 +404,11 @@ export interface WebConfig {
404
404
  * index of its own (search.db, kept `retention_days`, default 90; search/search-index.ts). `enabled: false`: no index
405
405
  * from the next fleet start (the file is left as it is), and searches are refused at once.
406
406
  */
407
+ /** #2293 global search. #2478: `public_link` (default true) — false keeps it off the temporary public link. */
407
408
  search?: {
408
409
  enabled?: boolean;
409
410
  retention_days?: number;
411
+ public_link?: boolean;
410
412
  };
411
413
  /** Expose provider API-key verify/apply endpoints (default false until dark-shipped). */
412
414
  provider_secrets?: boolean;
@@ -509,9 +509,13 @@
509
509
  /** Whether the chat shows "working" and its Stop button for an instance in this execution state. */
510
510
  function isBusy(state) { return state === "working" || state === "stuck"; }
511
511
 
512
- /** What a key in the composer does: Enter sends, Shift+Enter is a new line, nothing happens mid-IME-composition. */
513
- function composerKey(ev) {
512
+ /**
513
+ * What a key in the composer does: Enter sends, Shift+Enter is a new line, nothing happens mid-IME-composition.
514
+ * #2478 (the user's request): on a touch screen (a coarse pointer) Return is a new line — the Send button sends.
515
+ */
516
+ function composerKey(ev, opts) {
514
517
  if (!ev || ev.key !== "Enter" || ev.isComposing || ev.keyCode === 229) return "none";
518
+ if (opts && opts.touch) return "newline";
515
519
  if (ev.shiftKey || ev.altKey || ev.ctrlKey || ev.metaKey) return "newline";
516
520
  return "send";
517
521
  }
@@ -56,7 +56,7 @@ register("chat", {
56
56
  a11yWorking: "{0} started working", a11yIdle: "{0} finished", a11yReplied: "{0} replied", conversationWith: "Conversation with {0}",
57
57
  stopping: "Stopping {0}…", awaiting: "{0} is waiting for your input", approxNote: "Read from the terminal, so approximate", elapsedTitle: "Time since this page saw it start (approximate)",
58
58
  dropHere: "Drop files to attach them", asText: "As text", pasteAttached: "A long paste ({0} characters) was attached as a text file", pasteKeptAsText: "No room for another attachment: the long paste stays as text",
59
- send: "Send", composerPlaceholder: "Message {0}…", composerHint: "Enter to send · Shift+Enter for a new line", composerMore: "/ for commands · Esc stops the reply", guestMore: "Esc stops the reply",
59
+ send: "Send", composerPlaceholder: "Message {0}…", composerHint: "Enter to send · Shift+Enter for a new line", composerHintTouch: "Return adds a line · tap Send to send", composerMore: "/ for commands · Esc stops the reply", guestMore: "Esc stops the reply",
60
60
  guestNote: "You're a guest: the agent sees your messages as a guest's (recognition only).", guestNoCommands: "Guests can't run commands — send it without the leading /.", attachTitle: "Attach files (any type — or paste / drop them)",
61
61
  pvPreview: "Preview", pvStop: "Stop", pvDownload: "Download", pvMenu: "Preview options", pvHtml: "HTML",
62
62
  pvAllowButton: "Allow previews", pvAllow: "Allow HTML previews — they may be able to send data out", pvDisallow: "Stop allowing HTML previews",
@@ -197,7 +197,7 @@ register("chat", {
197
197
  a11yWorking: "{0} 開始工作", a11yIdle: "{0} 已完成", a11yReplied: "{0} 已回覆", conversationWith: "與 {0} 的對話",
198
198
  stopping: "正在中止 {0}…", awaiting: "{0} 正在等你回應", approxNote: "從終端畫面判讀,僅供參考", elapsedTitle: "從這個頁面看到它開始工作起算(約略)",
199
199
  dropHere: "放開即可附加檔案", asText: "改為文字", pasteAttached: "貼上的長文字({0} 個字元)已改為文字檔附加", pasteKeptAsText: "附件已滿,貼上的長文字保留為一般文字",
200
- send: "送出", composerPlaceholder: "傳訊息給 {0}…", composerHint: "Enter 送出 · Shift+Enter 換行", composerMore: "/ 叫出指令 · Esc 中止回覆", guestMore: "Esc 中止回覆",
200
+ send: "送出", composerPlaceholder: "傳訊息給 {0}…", composerHint: "Enter 送出 · Shift+Enter 換行", composerHintTouch: "Return 換行 · 按「送出」傳送", composerMore: "/ 叫出指令 · Esc 中止回覆", guestMore: "Esc 中止回覆",
201
201
  guestNote: "你是訪客:agent 會把你的訊息視為訪客的訊息(僅供辨識)。", guestNoCommands: "訪客不能執行指令,請去掉開頭的 / 再送出。", attachTitle: "附加檔案(任何類型,也可以貼上或拖曳)",
202
202
  pvPreview: "預覽", pvStop: "停止", pvDownload: "下載", pvMenu: "預覽選項", pvHtml: "HTML",
203
203
  pvAllowButton: "允許預覽", pvAllow: "允許預覽 HTML(預覽可能把資料傳出去)", pvDisallow: "不再允許預覽 HTML",