wezard 1.4.2 → 2.0.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 (69) hide show
  1. package/CLAUDE.md +12 -7
  2. package/README.md +121 -67
  3. package/dist/daemon/approval.js +9 -3
  4. package/dist/daemon/approval.js.map +1 -1
  5. package/dist/daemon/cc-bridge.js.map +1 -1
  6. package/dist/daemon/chat-name.js +8 -18
  7. package/dist/daemon/chat-name.js.map +1 -1
  8. package/dist/daemon/detail.js +53 -12
  9. package/dist/daemon/detail.js.map +1 -1
  10. package/dist/daemon/graph.js +5 -7
  11. package/dist/daemon/graph.js.map +1 -1
  12. package/dist/daemon/inbound.js +135 -158
  13. package/dist/daemon/inbound.js.map +1 -1
  14. package/dist/daemon/index.js +381 -192
  15. package/dist/daemon/index.js.map +1 -1
  16. package/dist/daemon/jobs.js +2 -2
  17. package/dist/daemon/mirror-bridge.js +221 -134
  18. package/dist/daemon/mirror-bridge.js.map +1 -1
  19. package/dist/daemon/mirror-store.js.map +1 -1
  20. package/dist/daemon/model-select.js +74 -0
  21. package/dist/daemon/model-select.js.map +1 -0
  22. package/dist/daemon/peers.js +10 -16
  23. package/dist/daemon/peers.js.map +1 -1
  24. package/dist/daemon/spawn-tmux.js +27 -4
  25. package/dist/daemon/spawn-tmux.js.map +1 -1
  26. package/dist/daemon/task-gate.js +97 -0
  27. package/dist/daemon/task-gate.js.map +1 -0
  28. package/dist/daemon/task-registry.js +132 -0
  29. package/dist/daemon/task-registry.js.map +1 -0
  30. package/dist/daemon/tasks.js +126 -54
  31. package/dist/daemon/tasks.js.map +1 -1
  32. package/dist/daemon/wizard-memory.js +57 -0
  33. package/dist/daemon/wizard-memory.js.map +1 -0
  34. package/dist/daemon/wizard.js +84 -38
  35. package/dist/daemon/wizard.js.map +1 -1
  36. package/dist/mcp/server.js +138 -76
  37. package/dist/mcp/server.js.map +1 -1
  38. package/dist/shared/chat-http.js +185 -108
  39. package/dist/shared/chat-http.js.map +1 -1
  40. package/dist/shared/chat-render.js +26 -34
  41. package/dist/shared/chat-render.js.map +1 -1
  42. package/dist/shared/chat-view.js +14 -2
  43. package/dist/shared/chat-view.js.map +1 -1
  44. package/dist/shared/config.js +23 -4
  45. package/dist/shared/config.js.map +1 -1
  46. package/dist/shared/detail-render.js +12 -6
  47. package/dist/shared/detail-render.js.map +1 -1
  48. package/dist/shared/detail-store.js.map +1 -1
  49. package/dist/shared/role-render.js +52 -0
  50. package/dist/shared/role-render.js.map +1 -0
  51. package/dist/shared/role-view.js +210 -0
  52. package/dist/shared/role-view.js.map +1 -0
  53. package/dist/shared/schedule-spec.js +92 -116
  54. package/dist/shared/schedule-spec.js.map +1 -1
  55. package/dist/shared/session-label.js +103 -72
  56. package/dist/shared/session-label.js.map +1 -1
  57. package/dist/shared/std.js +3 -0
  58. package/dist/shared/std.js.map +1 -1
  59. package/dist/shared/task-file.js +120 -0
  60. package/dist/shared/task-file.js.map +1 -0
  61. package/dist/shared/trigger.js +232 -0
  62. package/dist/shared/trigger.js.map +1 -0
  63. package/dist/shared/world.js +7 -5
  64. package/dist/shared/world.js.map +1 -1
  65. package/dist/svr/index.js +67 -2
  66. package/dist/svr/index.js.map +1 -1
  67. package/package.json +1 -1
  68. package/web/chat.css +407 -212
  69. package/web/chat.js +932 -321
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-spec.js","sourceRoot":"","sources":["../../shared/schedule-spec.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,8CAA8C;AAC9C,EAAE;AACF,8BAA8B;AAC9B,uDAAuD;AACvD,mDAAmD;AACnD,kEAAkE;AAClE,EAAE;AACF,mDAAmD;AACnD,mDAAmD;AAOnD,kDAAkD;AAClD,uBAAuB;AACvB,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC;AAE9B,mEAAmE;AACnE,MAAM,QAAQ,GAAqC;IACjD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;CAC9B,CAAC;AAEF,kDAAkD;AAClD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAsB,EAAE;IACzD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3D,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,CAAE,CAAC;IAChD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAE,CAAE,CAAC;IAClE,OAAO,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,oBAAoB,CAAC;AAEjC,qEAAqE;AACrE,MAAM,UAAU,GAAqC;IACnD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CAC/C,CAAC;AACF,MAAM,UAAU,GAAqC;IACnD,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;CACvD,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,EAAY,EAAY,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAEtF,2CAA2C;AAC3C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAwB,EAAE;IAC3D,IAAI,gDAAgD,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrF,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;SAClE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;IACzD,IAAI,EAAE,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAE,CAAC,CAAC;IACrH,IAAI,EAAE,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,wCAAwC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAChE,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,qEAAqE;AACrE,uDAAuD;AACvD,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IACrD,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,CAAC,CAAC;IACrB,IAAI,wCAAwC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACpF,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACxD,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,mCAAmC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,OAAO,GAAqC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAE5E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAS,EAAgD,EAAE;IACxF,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACxD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,wDAAwD,GAAG,eAAe,CAAC,CAAC,CAAC;IACtH,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,SAAS,CAAC;QAClD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;IAC7D,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC/C,IAAI,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACpF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,qEAAqE;AACrE,MAAM,QAAQ,GAAqC;IACjD,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;IACzE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI;CACjD,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAS,EAAsB,EAAE;IAC7D,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC5D,IAAI,IAAI;QAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,eAAe,GAAG,qCAAqC,CAAC,CAAC,CAAC;IACxF,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,CAAC;IACD,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACvF,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,oEAAoE;AACpE,MAAM,IAAI,GAAG,CAAC,GAAS,EAAE,OAAe,EAAE,IAAY,EAAE,MAAc,EAAU,EAAE,CAChF,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAErG,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,GAAS,EAAoB,EAAE;IAC3D,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,8CAA8C,CAAC,CAAC;WACnF,CAAC,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;IAC/E,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;IACxF,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACvE,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxG,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AACxE,CAAC,CAAC;AAEF,qEAAqE;AACrE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,MAAY,IAAI,IAAI,EAAE,EAAoB,EAAE;IAClF,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAC9B,0CAA0C;IAC1C,uBAAuB;IACvB,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC7F,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IACxF,IAAI,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,uBAAuB;IACrF,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACrF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,qEAAqE;AACrE,MAAM,YAAY,GAAG,CAAC,CAAmC,EAAE,GAAS,EAAsB,EAAE;IAC1F,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IACtE,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AACrB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAU,EAAE,GAAS,EAAE,KAAa,EAAW,EAAE;IACrE,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IACxB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;QACzC,KAAK,OAAO;YACV,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAC5C,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrC,OAAO,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,UAAU,IAAI,KAAK,GAAG,IAAI,CAAC;QAClF,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,kCAAkC;AAClC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAE,KAAa,EAAE,MAAY,IAAI,IAAI,EAAE,EAAU,EAAE;IACpF,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC,EAAE,CAAC;IACzC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACzF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/G,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,qEAAqE;AACrE,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC7G,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAExD,MAAM,SAAS,GAAG,CAAC,IAAc,EAAU,EAAE;IAC3C,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC;IACtC,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC;IAC/B,OAAO,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3D,CAAC,CAAC;AAEF,kCAAkC;AAClC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAU,EAAU,EAAE;IACjD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;YAC7C,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;YAC1C,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QACzE,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5B,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC;QAC9J,CAAC;IACH,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"schedule-spec.js","sourceRoot":"","sources":["../../shared/schedule-spec.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,gDAAgD;AAChD,oDAAoD;AACpD,mBAAmB;AACnB,EAAE;AACF,mDAAmD;AACnD,oDAAoD;AAOpD,mEAAmE;AACnE,MAAM,QAAQ,GAAqC;IACjD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;CAC9B,CAAC;AAEF,kDAAkD;AAClD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAsB,EAAE;IACzD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3D,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,CAAE,CAAC;IAChD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAE,CAAE,CAAC;IAClE,OAAO,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,oBAAoB,CAAC;AACjC,+CAA+C;AAC/C,MAAM,UAAU,GAAG,UAAU,CAAC;AAE9B,qEAAqE;AACrE,MAAM,UAAU,GAAqC;IACnD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CAC/C,CAAC;AACF,MAAM,UAAU,GAAqC;IACnD,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;CACvD,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,EAAY,EAAY,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAEtF,2CAA2C;AAC3C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAwB,EAAE;IAC3D,IAAI,gDAAgD,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrF,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;SAClE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;IACzD,IAAI,EAAE,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAE,CAAC,CAAC;IACrH,IAAI,EAAE,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,wCAAwC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAChE,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAgC,EAAY,EAAE,CACnE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAa,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAE5F,qEAAqE;AACrE,uDAAuD;AACvD,MAAM,QAAQ,GAAG,uFAAuF,CAAC;AAEzG,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IACrD,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,CAAC,CAAC;IACrB,IAAI,wCAAwC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACpF,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACxD,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,mCAAmC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,OAAO,GAAqC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAE5E;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAS,EAAE,MAAc,CAAC,EAAkB,EAAE;IAC3E,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACvC,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACxD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,wDAAwD,GAAG,eAAe,CAAC,CAAC,CAAC;IACtH,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,SAAS,CAAC;QAClD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;IAC/D,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC/C,IAAI,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACpF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,qEAAqE;AACrE,MAAM,QAAQ,GAAqC;IACjD,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;IAClF,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI;CACjD,CAAC;AAEF,MAAM,OAAO,GAAG,yBAAyB,CAAC;AAC1C,uDAAuD;AACvD,MAAM,YAAY,GAAG,aAAa,CAAC;AAEnC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAoB,EAAsB,EAAE;IACxE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,UAAU,QAAQ,OAAO,IAAI,CAAC,CAAC,CAAC;IACzE,IAAI,IAAI;QAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,aAAa,UAAU,QAAQ,OAAO,IAAI,CAAC,CAAC,CAAC;IACnF,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,CAAC;IACD,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC/E,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,oDAAoD;AACpD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAS,EAAsB,EAAE;IAC7D,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,mBAAmB,UAAU,QAAQ,OAAO,QAAQ,CAAC,CAAC,CAAC;IACvF,IAAI,IAAI;QAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,eAAe,GAAG,aAAa,UAAU,QAAQ,OAAO,GAAG,CAAC,CAAC,CAAC;IAC5F,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,cAAc,UAAU,QAAQ,YAAY,GAAG,CAAC,CAAC,CAAC;IAClF,IAAI,IAAI;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACvF,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,mEAAmE;AACnE,+CAA+C;AAC/C,8CAA8C;AAC9C,oDAAoD;AACpD,4CAA4C;AAC5C,MAAM,YAAY,GAA2E;IAC3F,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;IACpE,EAAE,EAAE,EAAE,sDAAsD,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;IACvG,EAAE,EAAE,EAAE,sCAAsC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;CACvF,CAAC;AAEF,MAAM,GAAG,GAAG,mBAAmB,CAAC;AAChC,iDAAiD;AACjD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,uCAAuC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;AAI9F,wDAAwD;AACxD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAsB,EAAE;IAC3D,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,IAAI,IAAI,EAAE;YAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACnE,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,KAAK;QACV,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAE,EAAE,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;QACzG,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC;AAEF,oEAAoE;AACpE,MAAM,IAAI,GAAG,CAAC,GAAS,EAAE,OAAe,EAAE,IAAY,EAAE,MAAc,EAAU,EAAE,CAChF,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAErG,gEAAgE;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,GAAS,EAAsB,EAAE;IACtE,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,aAAa,UAAU,QAAQ,OAAO,cAAc,CAAC,CAAC;WACzF,CAAC,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;IAC/E,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;IAClE,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACvE,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxG,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAK,EAAU,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAEjH,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAuB,EAAU,EAAE;IAC3D,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC;IACtC,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC;IAC/B,OAAO,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAS,EAAU,EAAE;IACjD,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC;IAC3C,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;IACxC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACrE,CAAC,CAAC"}
@@ -25,49 +25,32 @@ export const labelFor = (sessionId) => {
25
25
  return "❔";
26
26
  return ANIMALS[hash(sessionId) % ANIMALS.length] ?? "❔";
27
27
  };
28
- // ── `#tag` lexicon ──────────────────────────────────────────────────────
29
- // One rule for what counts as a tag token, shared by everything that reads
30
- // them out of user prose: the inbound router (FIRST match = which session gets
31
- // the message) and peer-mention annotation (the REST = references to sibling
32
- // sessions). Two readers of the same text must not disagree on where the tokens
33
- // are, or a mention the router left in the body could go unannotated.
34
- // Must be space-delimited or edge-of-string so genuine URLs / paths like
35
- // "#L45-foo/bar" survive. 右边界除空白/行尾外,零宽与 word-joiner 等不可见格式
36
- // 字符也算分隔 —— 输入法/复制常在 tag 后夹一个 U+2060 之类。
37
- const TAG_TOKEN = "(^|\\s)#([\\p{L}\\p{N}_-]{1,32})(?=[\\s\\u200B-\\u200D\\u2060\\uFEFF]|$)";
38
- /** Fresh non-global matcher — capture 2 is the tag. Own instance per caller so
28
+ // ── `.name` lexicon ─────────────────────────────────────────────────────
29
+ // A wizard is addressed by its GLOBAL name, written `.name` — in a chat, in a
30
+ // peer message, in a bubble header. One rule for what counts as a name token,
31
+ // shared by everything that reads them out of prose: the inbound router (FIRST
32
+ // match = who gets the message) and mention annotation (the REST). Two readers
33
+ // of the same text must not disagree on where the tokens are.
34
+ // Must be space-delimited or edge-of-string so paths / extensions like
35
+ // `a.ts` / `./foo` survive. 右边界除空白/行尾外,零宽与 word-joiner 等不可见格式
36
+ // 字符也算分隔 —— 输入法/复制常在名字后夹一个 U+2060 之类。
37
+ const NAME_CHARS = "[\\p{L}\\p{N}_-]";
38
+ const NAME_TOKEN = `(^|\\s)\\.(${NAME_CHARS}{1,32})(?=[\\s\\u200B-\\u200D\\u2060\\uFEFF]|$)`;
39
+ /** Fresh non-global matcher — capture 2 is the name. Own instance per caller so
39
40
  * nobody inherits another's `lastIndex`. */
40
- export const tagTokenRe = () => new RegExp(TAG_TOKEN, "u");
41
- /** Every distinct `#tag` in `text`, in first-appearance order. */
42
- export const allTags = (text) => [
43
- ...new Set([...text.matchAll(new RegExp(TAG_TOKEN, "gu"))].map((m) => m[2] ?? "").filter(Boolean)),
41
+ export const nameTokenRe = () => new RegExp(NAME_TOKEN, "u");
42
+ /** Every distinct `.name` in `text`, in first-appearance order. */
43
+ export const allNames = (text) => [
44
+ ...new Set([...text.matchAll(new RegExp(NAME_TOKEN, "gu"))].map((m) => m[2] ?? "").filter(Boolean)),
44
45
  ];
45
- // Compound address: `chatName#tag` (no space before `#`). Captures word-boundary
46
- // delimited `name#tag` tokens that TAG_TOKEN misses because the `#` isn't preceded
47
- // by whitespace. The left part MIGHT be a chat name — caller must validate.
48
- const COMPOUND_ADDR = "(?:^|(?<=\\s))([\\p{L}\\p{N}_-]{1,32})#([\\p{L}\\p{N}_-]{1,32})(?=[\\s\\u200B-\\u200D\\u2060\\uFEFF]|$)";
49
- /** Every distinct `name#tag` compound address in `text`. */
50
- export const allCompoundAddresses = (text) => {
51
- const seen = new Set();
52
- const results = [];
53
- for (const m of text.matchAll(new RegExp(COMPOUND_ADDR, "gu"))) {
54
- const raw = m[0].trim();
55
- if (seen.has(raw))
56
- continue;
57
- seen.add(raw);
58
- results.push({ raw, chat: m[1], tag: m[2] });
59
- }
60
- return results;
61
- };
62
- // ── Target-key tagging ──────────────────────────────────────────────────
63
- // Daemon-internal target keys are `user:xxx[#tag]` / `chat:xxx[#tag]`. Every
64
- // user-visible artifact bound to a TAGGED session must carry the same visual
65
- // so a chat hosting parallel sessions stays disambiguated:
66
- // • markdown bubbles → `emoji \`#tag\`` header line (withTagHeader)
67
- // • card titles → `emoji ` badge (tagBadge)
68
- // Untagged (default session) passes through unchanged — single-session users
69
- // see no extra glyphs. Emoji is keyed on the TAG STRING, not the sessionId,
70
- // so it survives `/clear` rotations.
46
+ /** `.fix` / `fix` / `#fix` (旧写法) → `fix`; 其余原样 trim。 */
47
+ export const stripSigil = (raw) => (raw ?? "").trim().replace(/^[.#@]+/, "");
48
+ // ── Target keys ─────────────────────────────────────────────────────────
49
+ // Daemon-internal target keys are `user:xxx[#k]` / `chat:xxx[#k]`: the chat a
50
+ // wizard was BORN in (its home) plus an internal slot id. The slot id is NOT
51
+ // the wizard's name — the name is global, lives in the wizard registry, and
52
+ // is what every human/wizard-facing surface shows (`.name`). A rename never
53
+ // rekeys a session. Every bubble carries `emoji .name`; emoji keyed on the name.
71
54
  /** `#tag` suffix of a target key, "" when untagged. */
72
55
  export const tagOfKey = (target) => {
73
56
  if (!target)
@@ -84,53 +67,50 @@ export const baseOfKey = (target) => {
84
67
  };
85
68
  /** Compose a session key from a base principal and a tag ("" → default session). */
86
69
  export const keyOf = (base, tag) => (tag ? `${base}#${tag}` : base);
87
- /** Coerce an arbitrary string into the tag charset `TAG_TOKEN` accepts — an
88
- * agent-supplied tag that the header parser can't round-trip would make its
89
- * own bubbles unaddressable. "" when nothing usable survives. */
90
- export const normalizeTag = (raw) => (raw ?? "")
91
- .trim()
92
- .replace(/^#+/, "")
70
+ /** Coerce an arbitrary string into the name charset `NAME_TOKEN` accepts — a
71
+ * name the header parser can't round-trip would make its own bubbles
72
+ * unaddressable. "" when nothing usable survives. Also the slot-id charset. */
73
+ export const normalizeTag = (raw) => stripSigil(raw)
93
74
  .replace(/[^\p{L}\p{N}_-]+/gu, "-")
94
75
  .replace(/^-+|-+$/g, "")
95
76
  .slice(0, 32);
96
77
  /** Default tag for a session spawned in `cwd` — the project's own name is what
97
78
  * a human would have typed. */
98
79
  export const tagFromCwd = (cwd) => normalizeTag(cwd.split("/").filter(Boolean).pop());
99
- /** `want`, or the first `want-N` its chat isn't already using. */
80
+ /** `want`, or the first `want-N` not already in `taken`. */
100
81
  export const uniqueTag = (want, taken, n = 1) => {
101
82
  const candidate = n < 2 ? want : `${want.slice(0, 29)}-${n}`;
102
83
  return taken.has(candidate) ? uniqueTag(want, taken, n + 1) : candidate;
103
84
  };
104
- // 出站气泡的头 (`🦊 #fix …` / 未打 tag 的 `🧙 …`) 是可被「引用」的路由信息:
105
- // 群里要跟某个 `#tag` 会话说话,引用它的气泡比手打 tag 快得多。这里做反向解析。
106
- // 头部 emoji 取自固定表 —— 用户消息以这些 emoji 开头且后接 `#tag` 的概率可忽略。
107
- // 分片序号 (`2/5`) 也属于头,一并吃掉 —— 留在 body 里会污染"引用内容是否已在
108
- // 目标 context 里"的比对。
109
- // 头有两种形态,都要认:裸 `🦊 #fix …`,以及 mirror 的 chat-detail 链接形态
110
- // `[🦊 #fix](https://…) …`(无 tag 时是 `[🧙](url)`)。链接里的 URL 若留在 body
111
- // 里,既污染比对又会被当成用户内容贴进 prompt。
85
+ // 出站气泡的头 (`🦊 .fix …`) 是可被「引用」的路由信息: 群里要跟某个 wizard 说话,
86
+ // 引用它的气泡比手打名字快得多。这里做反向解析。头部 emoji 取自固定表 —— 用户
87
+ // 消息以这些 emoji 开头且后接 `.name` 的概率可忽略。
88
+ // 头有两种形态,都要认:裸 `🦊 .fix …`,以及 rolepage 链接形态 `[🦊 .fix](https://…) …`。
89
+ // 链接里的 URL 若留在 body 里,既污染比对又会被当成用户内容贴进 prompt。
90
+ // 旧气泡的 `#tag` 头 (改名前发出去的) 仍被认 —— 迁移时名字取自 tag, 所以它照旧指得对人。
91
+ // 公开频道里 wizard 之间说话的头是 `🦊 .a → .b`, 路由信息取发话方 (引用它 = 跟 a 说)。
112
92
  // 分片序号 (`2/5`) 与折叠气泡的 `← View chat details` 提示同理,一并算作头。
113
93
  const HEAD_EMOJI = [...ANIMALS, "🧙", "❔"];
114
94
  const EMO = `(?:${HEAD_EMOJI.join("|")})`;
115
- const TAG_PART = `(?:\\s+#([\\p{L}\\p{N}_-]{1,32}))?`;
116
- const HEADER_RE = new RegExp(`^(?:\\[${EMO}${TAG_PART}\\]\\([^)]*\\)|${EMO}${TAG_PART})` +
95
+ const NAME_PART = `(?:\\s+[.#](${NAME_CHARS}{1,32}))?(?:\\s*→\\s*[.#]${NAME_CHARS}{1,32})?`;
96
+ const HEADER_RE = new RegExp(`^(?:\\[${EMO}${NAME_PART}\\]\\([^)]*\\)|${EMO}${NAME_PART})` +
117
97
  `(?:\\s+\\d+/\\d+)?(?:\\s*←\\s*View chat details)?(?![\\p{L}\\p{N}_-])\\s*`, "u");
118
- /** 反解一条出站气泡的 `emoji #tag` 头,返回 tag 与剥头后的正文。
98
+ /** 反解一条出站气泡的 `emoji .name` 头,返回名字与剥头后的正文。
119
99
  * `fromBot=false` 表示这不是 wezard 发的,body 原样返回。
120
- * 只切掉头那一段,body 原样保留 —— last-response 里存的是剥头后的同一整串,
121
- * `canonContains` 子串比对才能命中。 */
100
+ * 只切掉头那一段; 正文里 linkNames 挂上的 `[.fix](url)` 还原成裸 `.fix` —— 引用
101
+ * 内容要跟 transcript 尾部比对, 也可能被贴进 prompt, URL 两头都是噪声。 */
122
102
  export const parseTagHeader = (text) => {
123
103
  const t = text.trim();
124
104
  const m = HEADER_RE.exec(t);
125
105
  if (!m)
126
106
  return { fromBot: false, tag: "", body: t };
127
107
  const tag = m[1] ?? m[2] ?? "";
128
- return { fromBot: true, tag, body: t.slice(m[0].length).trim() };
108
+ return { fromBot: true, tag, body: unlinkTags(t.slice(m[0].length).trim()) };
129
109
  };
130
- /** Trailing-space emoji badge for card titles; "" for untagged targets. */
110
+ /** Trailing-space emoji badge for card titles. */
131
111
  export const tagBadge = (target) => {
132
- const tag = tagOfKey(target);
133
- return tag ? `${labelFor(tag)} ` : "🧙 ";
112
+ const name = target ? linker?.nameOf(target) || tagOfKey(target) : "";
113
+ return name ? `${labelFor(name)} ` : "🧙 ";
134
114
  };
135
115
  /** 头与正文之间该留多少空白。默认同行一个空格 —— 头只是一句话的前缀,省一行。
136
116
  * 块级语法认行首,两种例外:
@@ -139,13 +119,64 @@ export const tagBadge = (target) => {
139
119
  * 段的续行,整张表塌成一行带竖线的文字。所以表格必须空行隔开。
140
120
  * HEADER_RE 尾部的 \s* 吃得掉这些换行,parseTagHeader 剥头不受影响。 */
141
121
  export const headSep = (content) => content.startsWith("```") ? "\n" : content.startsWith("|") ? "\n\n" : " ";
142
- /** Prefix markdown content with the `emoji \`#tag\`` header; identity when untagged.
122
+ let linker;
123
+ export const bindTagLinker = (l) => { linker = l; };
124
+ /** target 的对外名字: 名册里的全局名, 名册没绑定时退回 slot id。 */
125
+ export const displayName = (target) => target ? linker?.nameOf(target) || tagOfKey(target) : "";
126
+ // 正文里最多挂几个链接: 一条 URL 两百来字节, 分片预算 (mirror 的 TAG_HEADER_BUDGET)
127
+ // 按「头 + 这么多个」留的余量。同一个名字只挂第一次出现。
128
+ export const MAX_BODY_LINKS = 2;
129
+ // 右边界比路由用的 NAME_TOKEN 宽: 正文里 `.fix。` `.fix,` 也是提及; 后接 `]` 说明它已在
130
+ // 某个链接文本里, 不再套一层。左边界必须是空白/行首 —— `a.ts` 不是提及。
131
+ const MENTION_RE = /(^|\s)(\.([\p{L}\p{N}_-]{1,32}))(?![\p{L}\p{N}_\].-])/gu;
132
+ // 代码里的 `.x` 是字面量, 不是提及: 栅栏块与行内代码原样放过 (split 的捕获组落在奇数位)。
133
+ const CODE_RE = /(```[\s\S]*?(?:```|$)|`[^`\n]*`)/;
134
+ const LINKED_RE = /\[([.#][\p{L}\p{N}_-]{1,32})\]\([^)\s]*\)/gu;
135
+ /** `text` 挂上 `target` 的 rolepage; 拿不到票据原样返回。 */
136
+ export const tagLink = (target, text) => {
137
+ const url = linker?.urlOf(target);
138
+ return url ? `[${text}](${url})` : text;
139
+ };
140
+ /** 正文里指向已知 wizard 的 `.name` 挂上它的 rolepage。 */
141
+ export const linkTags = (target, text) => {
142
+ const l = linker;
143
+ if (!l || !target)
144
+ return text;
145
+ const seen = new Set();
146
+ const link = (whole, lead, token, name) => {
147
+ if (seen.size >= MAX_BODY_LINKS || seen.has(token))
148
+ return whole;
149
+ const t = l.resolve(name);
150
+ const linked = t ? tagLink(t, token) : token;
151
+ if (linked === token)
152
+ return whole;
153
+ seen.add(token);
154
+ return `${lead}${linked}`;
155
+ };
156
+ return text
157
+ .split(CODE_RE)
158
+ .map((seg, i) => (i % 2 ? seg : seg.replace(MENTION_RE, link)))
159
+ .join("");
160
+ };
161
+ /** linkTags 的逆: `[.fix](url)` → `.fix`。 */
162
+ export const unlinkTags = (text) => text.replace(LINKED_RE, "$1");
163
+ /** 头的裸形态 `emoji .name`; 名字都拿不到时是 `🧙`。 */
164
+ export const tagHead = (target) => {
165
+ const name = displayName(target);
166
+ return name ? `${labelFor(name)} .${name}` : "🧙";
167
+ };
168
+ /** 头的链接形态 `[emoji .name](url)` —— 点它就进那个 wizard 的 rolepage。
169
+ * HEADER_RE 认得这一形态, parseTagHeader 照样剥得掉。 */
170
+ export const linkedTagHead = (target, url) => `[${tagHead(target)}](${url})`;
171
+ /** 头挂上指定的 rolepage 链接 (mirror 用本轮 turn 的票据), 正文里的名字一并挂链。
172
+ * url 为空时退回裸头 —— 头那一段是路由信息, 少了链接只是少一层可点, 不能因此不写。
143
173
  * `seq` ("2/5") marks one piece of a split push — it rides in the same header
144
- * line so every chunk of a long reply is attributable on its own, and shows
145
- * alone when the session is untagged. */
146
- export const withTagHeader = (target, content, seq) => {
147
- const tag = tagOfKey(target);
148
- const head = [tag ? `${labelFor(tag)} #${tag}` : "🧙", seq ?? ""].filter(Boolean).join(" ");
149
- return `${head}${headSep(content)}${content}`;
174
+ * line so every chunk of a long reply is attributable on its own. */
175
+ export const withLinkedTagHeader = (target, content, url, seq) => {
176
+ const head = [url ? linkedTagHead(target, url) : tagHead(target), seq ?? ""].filter(Boolean).join(" ");
177
+ const body = linkTags(target, content);
178
+ return `${head}${headSep(body)}${body}`;
150
179
  };
180
+ /** 给气泡加 `emoji .name` 头, 链接取该 wizard 自己的 rolepage (bindTagLinker)。 */
181
+ export const withTagHeader = (target, content, seq) => withLinkedTagHeader(target, content, target ? linker?.urlOf(target) : undefined, seq);
151
182
  //# sourceMappingURL=session-label.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-label.js","sourceRoot":"","sources":["../../shared/session-label.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-label.js","sourceRoot":"","sources":["../../shared/session-label.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6EAA6E;AAC7E,4EAA4E;AAC5E,qEAAqE;AACrE,EAAE;AACF,uEAAuE;AACvE,mCAAmC;AAEnC,MAAM,OAAO,GAAG;IACd,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACnC,CAAC;AAEF,yDAAyD;AACzD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE;IACjC,IAAI,CAAC,GAAG,UAAU,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAU,EAAE;IACpD,IAAI,CAAC,SAAS;QAAE,OAAO,GAAG,CAAC;IAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;AAC1D,CAAC,CAAC;AAEF,2EAA2E;AAC3E,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,8DAA8D;AAC9D,uEAAuE;AACvE,8DAA8D;AAC9D,sCAAsC;AACtC,MAAM,UAAU,GAAG,kBAAkB,CAAC;AACtC,MAAM,UAAU,GAAG,cAAc,UAAU,iDAAiD,CAAC;AAE7F;6CAC6C;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,GAAW,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAErE,mEAAmE;AACnE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAY,EAAE,CAAC;IAClD,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;CACpG,CAAC;AAEF,wDAAwD;AACxD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAuB,EAAU,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAEzG,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,iFAAiF;AAEjF,uDAAuD;AACvD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAA0B,EAAU,EAAE;IAC7D,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC,CAAC;AAEF;;uEAEuE;AACvE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAc,EAAU,EAAE;IAClD,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9C,CAAC,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,GAAW,EAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5F;;gFAEgF;AAChF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAuB,EAAU,EAAE,CAC9D,UAAU,CAAC,GAAG,CAAC;KACZ,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC;KAClC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;KACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAElB;gCACgC;AAChC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAEtG,4DAA4D;AAC5D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,KAA0B,EAAE,CAAC,GAAG,CAAC,EAAU,EAAE;IACnF,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7D,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC,CAAC;AAEF,uDAAuD;AACvD,8CAA8C;AAC9C,oCAAoC;AACpC,sEAAsE;AACtE,+CAA+C;AAC/C,yDAAyD;AACzD,6DAA6D;AAC7D,wDAAwD;AACxD,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1C,MAAM,SAAS,GAAG,eAAe,UAAU,4BAA4B,UAAU,UAAU,CAAC;AAC5F,MAAM,SAAS,GAAG,IAAI,MAAM,CAC1B,UAAU,GAAG,GAAG,SAAS,kBAAkB,GAAG,GAAG,SAAS,GAAG;IAC3D,2EAA2E,EAC7E,GAAG,CACJ,CAAC;AAEF;;;uDAGuD;AACvD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAmD,EAAE;IAC9F,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACpD,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/E,CAAC,CAAC;AAEF,kDAAkD;AAClD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAA0B,EAAU,EAAE;IAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7C,CAAC,CAAC;AAEF;;;;;uDAKuD;AACvD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAU,EAAE,CACjD,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AAe5E,IAAI,MAA6B,CAAC;AAClC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAY,EAAQ,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAErE,+CAA+C;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAA0B,EAAU,EAAE,CAChE,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAE3D,8DAA8D;AAC9D,gCAAgC;AAChC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,gEAAgE;AAChE,6CAA6C;AAC7C,MAAM,UAAU,GAAG,yDAAyD,CAAC;AAC7E,wDAAwD;AACxD,MAAM,OAAO,GAAG,kCAAkC,CAAC;AACnD,MAAM,SAAS,GAAG,6CAA6C,CAAC;AAEhE,gDAAgD;AAChD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,IAAY,EAAU,EAAE;IAC9D,MAAM,GAAG,GAAG,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAA0B,EAAE,IAAY,EAAU,EAAE;IAC3E,MAAM,CAAC,GAAG,MAAM,CAAC;IACjB,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,KAAa,EAAE,IAAY,EAAU,EAAE;QAChF,IAAI,IAAI,CAAC,IAAI,IAAI,cAAc,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACjE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC7C,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;IAC5B,CAAC,CAAC;IACF,OAAO,IAAI;SACR,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;SAC9D,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC;AAEF,2CAA2C;AAC3C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAElF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAA0B,EAAU,EAAE;IAC5D,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC,CAAC;AAEF;8CAC8C;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,GAAW,EAAU,EAAE,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;AAEjH;;;sEAGsE;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAA0B,EAC1B,OAAe,EACf,GAAuB,EACvB,GAAY,EACJ,EAAE;IACV,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvG,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AAC1C,CAAC,CAAC;AAEF,sEAAsE;AACtE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,OAAe,EAAE,GAAY,EAAU,EAAE,CACjG,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC"}
@@ -23,4 +23,7 @@ export const mapLimit = async (xs, limit, f) => {
23
23
  await Promise.all(Array.from({ length: Math.max(1, Math.min(limit, xs.length)) }, worker));
24
24
  return out;
25
25
  };
26
+ /** Substitute `{{…}}` refs from a context map. Unknown keys are left verbatim —
27
+ * a prompt legitimately containing `{{foo}}` shouldn't be silently emptied. */
28
+ export const interpolate = (template, ctx) => template.replace(/\{\{\s*#?([\p{L}\p{N}_-]+)\s*\}\}/gu, (whole, key) => key in ctx ? ctx[key] : whole);
26
29
  //# sourceMappingURL=std.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"std.js","sourceRoot":"","sources":["../../shared/std.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAE1F,4DAA4D;AAC5D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,GAAW,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAE1G,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAS,EAAE,GAAW,EAAU,EAAE,CAClE,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC;AAElE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,GAAW,EAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;AAEzG;;;;;;iBAMiB;AACjB,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,EAAgB,EAChB,KAAa,EACb,CAAkC,EACpB,EAAE;IAChB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAI,EAAE,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE;QACvC,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC;IACF,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3F,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
1
+ {"version":3,"file":"std.js","sourceRoot":"","sources":["../../shared/std.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAE1F,4DAA4D;AAC5D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,GAAW,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAE1G,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAS,EAAE,GAAW,EAAU,EAAE,CAClE,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC;AAElE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,GAAW,EAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;AAEzG;;;;;;iBAMiB;AACjB,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,EAAgB,EAChB,KAAa,EACb,CAAkC,EACpB,EAAE;IAChB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAI,EAAE,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE;QACvC,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC;IACF,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3F,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;gFACgF;AAChF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,QAAgB,EAChB,GAAqC,EAC7B,EAAE,CACV,QAAQ,CAAC,OAAO,CAAC,qCAAqC,EAAE,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE,CAC7E,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,KAAK,CAC/B,CAAC"}
@@ -0,0 +1,120 @@
1
+ // 一条定时任务 = 一份**可注入代码的配置**: `~/.wezard/tasks/<id>.task.mjs`。
2
+ //
3
+ // 为什么是文件而不是 config 里的一行记录: 定时任务天生是「到点跑一段逻辑」, 而
4
+ // 逻辑写不进 json。旧形状里 wizard 只能通过人话解析器间接碰到「什么时候」, 碰不到
5
+ // 的说法就做不到; 「放枪前先看一眼有没有活」更是完全无处安放, 只能到点先起一个
6
+ // wizard 再让它自己判断要不要干 —— 每一次空转都是一个 pane 加一份上下文。
7
+ //
8
+ // 现在这份文件就是配置本身: wizard 用 Read/Edit 直接改它, 存盘即生效。它导出四件
9
+ // 事, 每一件都可以被单独替换 (Strategy):
10
+ //
11
+ // when 何时放枪 —— 人话, 或 helpers 组合出的规约 (shared/trigger.ts)
12
+ // gate 放枪前的检查 (可选) —— 有副作用、可以跑命令; 返回 false 这一轮就不放
13
+ // prompt 到点说给 wizard 听的话, `{{var}}` 由 gate 填
14
+ // target/fresh 在谁的聊天/目录下办, 是否每次新起一个白板 wizard
15
+ // createdBy 排班的 wizard —— 日程归它 (owner), fresh 执行体挂在它的家谱下
16
+ //
17
+ // 本模块只做纯的那一半: 形状、校验、模板渲染、路径。加载与执行在 daemon/。
18
+ import { basename, join } from "node:path";
19
+ import { describeTrigger, toTrigger } from "./trigger.js";
20
+ export const TASKS_DIR = "~/.wezard/tasks";
21
+ export const TASK_EXT = ".task.mjs";
22
+ const DEFAULT_GATE_TIMEOUT = 120;
23
+ export const taskIdOfFile = (file) => basename(file).replace(/\.task\.mjs$/, "");
24
+ export const fileOfTaskId = (dir, id) => join(dir, `${id}${TASK_EXT}`);
25
+ /** 文件名即 id, 所以它必须既好认又能当路径。 */
26
+ export const slugify = (raw, fallback) => {
27
+ const s = raw.toLowerCase().replace(/[^\p{L}\p{N}]+/gu, "-").slice(0, 24).replace(/^-+|-+$/g, "");
28
+ return s || fallback;
29
+ };
30
+ export const uniqueId = (want, taken) => taken.has(want) ? [...Array(99).keys()].map((i) => `${want}-${i + 2}`).find((c) => !taken.has(c)) ?? `${want}-${Date.now() % 1000}` : want;
31
+ /** 模块 → 记录。认不出的 when / 空 prompt 在这里被挡住, 连带一句人话的理由。 */
32
+ export const normalizeTask = (mod, id, file, now = new Date()) => {
33
+ if (!mod || typeof mod !== "object")
34
+ return { ok: false, reason: "任务文件要 `export default { when, prompt }`" };
35
+ const m = mod;
36
+ const prompt = (m.prompt ?? "").toString().trim();
37
+ if (!prompt)
38
+ return { ok: false, reason: "prompt 不能为空" };
39
+ const tr = toTrigger(m.when, now);
40
+ if (!tr.ok)
41
+ return { ok: false, reason: tr.reason };
42
+ return {
43
+ ok: true,
44
+ task: {
45
+ id,
46
+ file,
47
+ trigger: tr.trigger,
48
+ when: describeTrigger(tr.trigger),
49
+ prompt,
50
+ note: (m.note ?? "").toString(),
51
+ target: (m.target ?? "").toString(),
52
+ fresh: m.fresh !== false,
53
+ enabled: m.enabled !== false,
54
+ hasGate: typeof m.gate === "function",
55
+ gateTimeoutSec: Math.max(5, Math.min(900, m.gateTimeoutSec ?? DEFAULT_GATE_TIMEOUT)),
56
+ createdBy: (m.createdBy ?? "").toString(),
57
+ owner: (m.createdBy ?? "").toString() || (m.target ?? "").toString(),
58
+ },
59
+ };
60
+ };
61
+ // ── 生成 ────────────────────────────────────────────────────────────
62
+ const js = (s) => JSON.stringify(s);
63
+ /** 人话 → 源码里那一行 `when`。认出来是什么就写什么, 别把原话塞进去 ——
64
+ * 「20 分钟后」在下一次 reload 时会重新往后数 20 分钟。 */
65
+ const renderWhen = (tr) => {
66
+ const guards = tr.guards.map((g) => g.kind === "between" ? `between("${String(g.from.hour).padStart(2, "0")}:${String(g.from.minute).padStart(2, "0")}", "${String(g.to.hour).padStart(2, "0")}:${String(g.to.minute).padStart(2, "0")}")`
67
+ : g.kind === "onDays" ? `onDays(${JSON.stringify(g.days)})`
68
+ : `not(/* ${g.kind} */)`);
69
+ const c = tr.clock;
70
+ const clock = c.kind === "every" ? `every(${c.minutes})`
71
+ : c.kind === "once" ? `at(${c.at})`
72
+ : `daily(${c.times.map((t) => `"${String(t.hour).padStart(2, "0")}:${String(t.minute).padStart(2, "0")}"`).join(", ")})`;
73
+ const helpers = [
74
+ ...(guards.length ? ["and"] : []),
75
+ ...(c.kind === "every" ? ["every"] : c.kind === "once" ? ["at"] : ["daily"]),
76
+ ...new Set(tr.guards.map((g) => (g.kind === "between" ? "between" : g.kind === "onDays" ? "onDays" : "not"))),
77
+ ];
78
+ const body = guards.length ? `and(${clock}, ${guards.join(", ")})` : clock;
79
+ return `({ ${helpers.join(", ")} }) => ${body}`;
80
+ };
81
+ /**
82
+ * 新任务的源码。头上那段注释是 wizard 唯一的说明书 —— 它 Read 这个文件时看到的
83
+ * 就是这些, 所以写全: 能改什么、gate 拿得到什么、改完要不要重启 (不要)。
84
+ */
85
+ export const renderTaskFile = (d) => `// wezard 定时任务 · ${d.id}
86
+ // 这份文件**就是配置**: 直接改, 存盘即生效 (守护进程盯着这个目录, 不用 reload)。
87
+ //
88
+ // when 何时放枪。人话 ("每个工作日晚上9:30") 或组合:
89
+ // every("1h") | daily("09:00","18:00") | at(<epoch ms>) ← 产生时刻
90
+ // between("08:00","20:00") | onDays("工作日") | not(…) ← 只做筛选
91
+ // and(every("1h"), between("08:00","20:00")) ← 时钟 ∧ 筛子
92
+ // gate 放枪前的检查, 可选。**没拉到活就别惊动 wizard** 用它:
93
+ // 返回 false → 这一轮不放枪 (不起 wizard, 群里也不出声)
94
+ // 返回 { vars } → 放枪, vars 填进 prompt 里的 {{名字}}
95
+ // 返回 { state } → 存下来, 下一轮从 ctx.state 拿得到
96
+ // ctx = { now, task:{id,target,cwd}, sh(cmd), state, log }
97
+ // sh 的 cwd 默认是目标 wizard 的工作区; 抛错等同于返回 false。
98
+ // prompt 到点说给 wizard 听的话。写成零上下文也能执行的完整指令 —— 到点接活的
99
+ // 多半是个刚出生的白板 wizard, 它只看得见这一句。
100
+ //
101
+ // 停掉这条任务: enabled: false (留档), 或直接删掉本文件。
102
+ export default {
103
+ note: ${js(d.note)},
104
+ target: ${js(d.target)},
105
+ fresh: ${d.fresh},
106
+ enabled: true,
107
+ createdBy: ${js(d.createdBy)},
108
+
109
+ when: ${renderWhen(d.trigger)},
110
+
111
+ // gate: async ({ sh, state, log }) => {
112
+ // const out = await sh("git fetch -q && git log --oneline HEAD..@{u}");
113
+ // if (!out.trim()) return false; // 没新东西 → 这一轮不放枪
114
+ // return { vars: { commits: out.trim() } }; // 有 → prompt 里的 {{commits}}
115
+ // },
116
+
117
+ prompt: ${JSON.stringify(d.prompt)},
118
+ };
119
+ `;
120
+ //# sourceMappingURL=task-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-file.js","sourceRoot":"","sources":["../../shared/task-file.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,+CAA+C;AAC/C,kDAAkD;AAClD,2CAA2C;AAC3C,+CAA+C;AAC/C,EAAE;AACF,qDAAqD;AACrD,6BAA6B;AAC7B,EAAE;AACF,6DAA6D;AAC7D,uDAAuD;AACvD,gDAAgD;AAChD,gDAAgD;AAChD,+DAA+D;AAC/D,EAAE;AACF,4CAA4C;AAC5C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,CAAC,MAAM,SAAS,GAAG,iBAAiB,CAAC;AAC3C,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC;AAkEpC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AACjG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAU,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;AAE/F,8BAA8B;AAC9B,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAU,EAAE;IAC/D,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAClG,OAAO,CAAC,IAAI,QAAQ,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,KAA0B,EAAU,EAAE,CAC3E,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAE7I,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,GAAY,EACZ,EAAU,EACV,IAAY,EACZ,MAAY,IAAI,IAAI,EAAE,EAC0C,EAAE;IAClE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAC;IAC7G,MAAM,CAAC,GAAG,GAAiB,CAAC;IAC5B,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACzD,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;IACpD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,IAAI,EAAE;YACJ,EAAE;YACF,IAAI;YACJ,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC;YACjC,MAAM;YACN,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;YAC/B,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;YACnC,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,KAAK;YACxB,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK;YAC5B,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU;YACrC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,cAAc,IAAI,oBAAoB,CAAC,CAAC;YACpF,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;YACzC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;SACrE;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,qEAAqE;AACrE,MAAM,EAAE,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEpD;yCACyC;AACzC,MAAM,UAAU,GAAG,CAAC,EAAW,EAAU,EAAE;IACzC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACjC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI;QACpM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;YACzD,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,MAAM,CAC7B,CAAC;IACF,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;IACnB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG;QACtD,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG;YACjC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7H,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5E,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9G,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3E,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;AAClD,CAAC,CAAC;AAYF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAY,EAAU,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;UAkBtE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACR,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;WACb,CAAC,CAAC,KAAK;;eAEH,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;;UAEpB,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;;;;;;;;YAQnB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;;CAEnC,CAAC"}