@ashlr/hub 2.2.0 → 3.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 (177) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +59 -2
  3. package/dist/api/plugin.d.ts +1 -0
  4. package/dist/cli/backlog.js +2 -0
  5. package/dist/cli/backlog.js.map +1 -1
  6. package/dist/cli/digest.d.ts +6 -0
  7. package/dist/cli/digest.js +127 -2
  8. package/dist/cli/digest.js.map +1 -1
  9. package/dist/cli/eval-fixtures.d.ts +18 -0
  10. package/dist/cli/eval-fixtures.js +38 -0
  11. package/dist/cli/eval-fixtures.js.map +1 -0
  12. package/dist/cli/eval.d.ts +56 -0
  13. package/dist/cli/eval.js +283 -0
  14. package/dist/cli/eval.js.map +1 -0
  15. package/dist/cli/fleet.d.ts +27 -0
  16. package/dist/cli/fleet.js +222 -0
  17. package/dist/cli/fleet.js.map +1 -0
  18. package/dist/cli/goal.d.ts +15 -0
  19. package/dist/cli/goal.js +91 -0
  20. package/dist/cli/goal.js.map +1 -0
  21. package/dist/cli/help.js +10 -3
  22. package/dist/cli/help.js.map +1 -1
  23. package/dist/cli/inbox.d.ts +6 -0
  24. package/dist/cli/inbox.js +183 -8
  25. package/dist/cli/inbox.js.map +1 -1
  26. package/dist/cli/index.js +42 -0
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/cli/loop.d.ts +16 -0
  29. package/dist/cli/loop.js +66 -0
  30. package/dist/cli/loop.js.map +1 -0
  31. package/dist/cli/mcp.d.ts +12 -0
  32. package/dist/cli/mcp.js +148 -0
  33. package/dist/cli/mcp.js.map +1 -1
  34. package/dist/cli/onboard.d.ts +16 -0
  35. package/dist/cli/onboard.js +71 -0
  36. package/dist/cli/onboard.js.map +1 -1
  37. package/dist/cli/plugins.js +9 -8
  38. package/dist/cli/plugins.js.map +1 -1
  39. package/dist/cli/pulse.d.ts +10 -0
  40. package/dist/cli/pulse.js +261 -0
  41. package/dist/cli/pulse.js.map +1 -1
  42. package/dist/cli/run.js +21 -3
  43. package/dist/cli/run.js.map +1 -1
  44. package/dist/cli/stack.d.ts +34 -0
  45. package/dist/cli/stack.js +221 -0
  46. package/dist/cli/stack.js.map +1 -0
  47. package/dist/cli/update.js +12 -5
  48. package/dist/cli/update.js.map +1 -1
  49. package/dist/core/daemon/loop.d.ts +10 -5
  50. package/dist/core/daemon/loop.js +167 -37
  51. package/dist/core/daemon/loop.js.map +1 -1
  52. package/dist/core/env-bridge.js +3 -2
  53. package/dist/core/env-bridge.js.map +1 -1
  54. package/dist/core/fleet/automerge-pass.d.ts +33 -0
  55. package/dist/core/fleet/automerge-pass.js +61 -0
  56. package/dist/core/fleet/automerge-pass.js.map +1 -0
  57. package/dist/core/fleet/quota.d.ts +70 -0
  58. package/dist/core/fleet/quota.js +198 -0
  59. package/dist/core/fleet/quota.js.map +1 -0
  60. package/dist/core/fleet/router.d.ts +46 -0
  61. package/dist/core/fleet/router.js +121 -0
  62. package/dist/core/fleet/router.js.map +1 -0
  63. package/dist/core/fleet/self.d.ts +58 -0
  64. package/dist/core/fleet/self.js +187 -0
  65. package/dist/core/fleet/self.js.map +1 -0
  66. package/dist/core/fleet/status.d.ts +54 -0
  67. package/dist/core/fleet/status.js +157 -0
  68. package/dist/core/fleet/status.js.map +1 -0
  69. package/dist/core/foundry/provenance.d.ts +78 -0
  70. package/dist/core/foundry/provenance.js +172 -0
  71. package/dist/core/foundry/provenance.js.map +1 -0
  72. package/dist/core/git.d.ts +13 -0
  73. package/dist/core/git.js +26 -0
  74. package/dist/core/git.js.map +1 -1
  75. package/dist/core/inbox/merge.d.ts +151 -0
  76. package/dist/core/inbox/merge.js +858 -0
  77. package/dist/core/inbox/merge.js.map +1 -0
  78. package/dist/core/inbox/store.js +10 -1
  79. package/dist/core/inbox/store.js.map +1 -1
  80. package/dist/core/integrations/markdown.d.ts +66 -0
  81. package/dist/core/integrations/markdown.js +132 -0
  82. package/dist/core/integrations/markdown.js.map +1 -0
  83. package/dist/core/integrations/secrets.d.ts +37 -0
  84. package/dist/core/integrations/secrets.js +67 -0
  85. package/dist/core/integrations/secrets.js.map +1 -0
  86. package/dist/core/integrations/stack.d.ts +47 -0
  87. package/dist/core/integrations/stack.js +107 -0
  88. package/dist/core/integrations/stack.js.map +1 -0
  89. package/dist/core/mcp-native-engineer.d.ts +123 -0
  90. package/dist/core/mcp-native-engineer.js +936 -0
  91. package/dist/core/mcp-native-engineer.js.map +1 -0
  92. package/dist/core/mcp-native.js +20 -42
  93. package/dist/core/mcp-native.js.map +1 -1
  94. package/dist/core/mcp-registry.js +2 -0
  95. package/dist/core/mcp-registry.js.map +1 -1
  96. package/dist/core/observability/codex-source.d.ts +53 -0
  97. package/dist/core/observability/codex-source.js +390 -0
  98. package/dist/core/observability/codex-source.js.map +1 -0
  99. package/dist/core/observability/estimate.d.ts +12 -0
  100. package/dist/core/observability/estimate.js +26 -0
  101. package/dist/core/observability/estimate.js.map +1 -1
  102. package/dist/core/observability/limits.d.ts +52 -0
  103. package/dist/core/observability/limits.js +316 -0
  104. package/dist/core/observability/limits.js.map +1 -0
  105. package/dist/core/observability/usage-source.js +3 -1
  106. package/dist/core/observability/usage-source.js.map +1 -1
  107. package/dist/core/portfolio/scanners.d.ts +1 -0
  108. package/dist/core/portfolio/scanners.js +40 -1
  109. package/dist/core/portfolio/scanners.js.map +1 -1
  110. package/dist/core/providers.js +4 -0
  111. package/dist/core/providers.js.map +1 -1
  112. package/dist/core/quality/health.js +1 -0
  113. package/dist/core/quality/health.js.map +1 -1
  114. package/dist/core/run/agent-loop.d.ts +8 -0
  115. package/dist/core/run/agent-loop.js +24 -14
  116. package/dist/core/run/agent-loop.js.map +1 -1
  117. package/dist/core/run/engine-registry.d.ts +48 -0
  118. package/dist/core/run/engine-registry.js +190 -0
  119. package/dist/core/run/engine-registry.js.map +1 -0
  120. package/dist/core/run/engines.d.ts +17 -3
  121. package/dist/core/run/engines.js +63 -44
  122. package/dist/core/run/engines.js.map +1 -1
  123. package/dist/core/run/learned-router.d.ts +121 -0
  124. package/dist/core/run/learned-router.js +374 -0
  125. package/dist/core/run/learned-router.js.map +1 -0
  126. package/dist/core/run/model-manager.js +3 -3
  127. package/dist/core/run/model-manager.js.map +1 -1
  128. package/dist/core/run/model-profile.d.ts +67 -0
  129. package/dist/core/run/model-profile.js +132 -0
  130. package/dist/core/run/model-profile.js.map +1 -0
  131. package/dist/core/run/orchestrator.d.ts +1 -1
  132. package/dist/core/run/orchestrator.js +642 -510
  133. package/dist/core/run/orchestrator.js.map +1 -1
  134. package/dist/core/run/prompts/budget.d.ts +25 -0
  135. package/dist/core/run/prompts/budget.js +51 -0
  136. package/dist/core/run/prompts/budget.js.map +1 -0
  137. package/dist/core/run/prompts/index.d.ts +14 -0
  138. package/dist/core/run/prompts/index.js +59 -0
  139. package/dist/core/run/prompts/index.js.map +1 -0
  140. package/dist/core/run/prompts/layers.d.ts +26 -0
  141. package/dist/core/run/prompts/layers.js +73 -0
  142. package/dist/core/run/prompts/layers.js.map +1 -0
  143. package/dist/core/run/prompts/roles.d.ts +23 -0
  144. package/dist/core/run/prompts/roles.js +48 -0
  145. package/dist/core/run/prompts/roles.js.map +1 -0
  146. package/dist/core/run/prompts/types.d.ts +38 -0
  147. package/dist/core/run/prompts/types.js +5 -0
  148. package/dist/core/run/prompts/types.js.map +1 -0
  149. package/dist/core/run/provider-client.d.ts +6 -24
  150. package/dist/core/run/provider-client.js +125 -61
  151. package/dist/core/run/provider-client.js.map +1 -1
  152. package/dist/core/run/router.js +8 -0
  153. package/dist/core/run/router.js.map +1 -1
  154. package/dist/core/run/sandboxed-engine.d.ts +66 -0
  155. package/dist/core/run/sandboxed-engine.js +262 -0
  156. package/dist/core/run/sandboxed-engine.js.map +1 -0
  157. package/dist/core/run/verify-commands.d.ts +83 -0
  158. package/dist/core/run/verify-commands.js +234 -0
  159. package/dist/core/run/verify-commands.js.map +1 -0
  160. package/dist/core/run/verify.d.ts +31 -1
  161. package/dist/core/run/verify.js +48 -0
  162. package/dist/core/run/verify.js.map +1 -1
  163. package/dist/core/sandbox/audit.d.ts +27 -0
  164. package/dist/core/sandbox/audit.js +34 -0
  165. package/dist/core/sandbox/audit.js.map +1 -1
  166. package/dist/core/sandbox/confine.d.ts +134 -0
  167. package/dist/core/sandbox/confine.js +370 -0
  168. package/dist/core/sandbox/confine.js.map +1 -0
  169. package/dist/core/types.d.ts +227 -5
  170. package/dist/core/web/api.js +77 -28
  171. package/dist/core/web/api.js.map +1 -1
  172. package/dist/core/web/control.d.ts +116 -0
  173. package/dist/core/web/control.js +307 -0
  174. package/dist/core/web/control.js.map +1 -0
  175. package/dist/core/web/public/app.js +512 -6
  176. package/dist/core/web/public/styles.css +468 -0
  177. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/core/inbox/merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GAEjB,MAAM,2BAA2B,CAAC;AAEnC,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,gFAAgF;AAChF,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAE3C,uCAAuC;AACvC,MAAM,WAAW,GAAG,MAAM,CAAC;AAE3B,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,qDAAqD;AACrD,SAAS,MAAM,CAAC,GAAW,EAAE,IAAc;IACzC,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;QAC/B,GAAG;QACH,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,qEAAqE;AACrE,SAAS,MAAM,CAAC,GAAW,EAAE,IAAc;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpE,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,CAAC,CAAC;AACX,CAAC;AAQD,+DAA+D;AAC/D,MAAM,UAAU,GAA8B,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAE7E;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,SAAS;QACvC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,sEAAsE;QACtE,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,GAAG,IAAI,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,WAAW;YAAE,SAAS;QAChC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mDAAmD;AACnD,SAAS,QAAQ,CAAC,CAAS;IACzB,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7D,CAAC;AAED,qEAAqE;AACrE,SAAS,SAAS,CAAC,CAAS;IAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1E,CAAC;AAED,yEAAyE;AACzE,SAAS,UAAU,CAAC,CAAS;IAC3B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CACL,CAAC,KAAK,mBAAmB;QACzB,CAAC,KAAK,gBAAgB;QACtB,CAAC,KAAK,WAAW;QACjB,CAAC,KAAK,WAAW;QACjB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CACpB,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,SAAS,UAAU,CAAC,CAAS;IAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9B,IACE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;QACzB,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC1B,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QACzB,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,kEAAkE;AAClE,SAAS,YAAY,CAAC,CAAS;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9B,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CACL,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CACpB,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,SAAS,YAAY,CAAC,CAAS;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9B,OAAO,oFAAoF,CAAC,IAAI,CAC9F,KAAK,CACN,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,CAAS;IACtC,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,+DAA+D;IAC/D,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,6BAA6B;IAC7B,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,6CAA6C;IAC7C,IACE,CAAC,KAAK,cAAc;QACpB,CAAC,KAAK,mBAAmB;QACzB,CAAC,KAAK,gBAAgB;QACtB,CAAC,KAAK,WAAW;QACjB,CAAC,KAAK,WAAW;QACjB,CAAC,KAAK,gBAAgB;QACtB,CAAC,KAAK,QAAQ;QACd,CAAC,KAAK,SAAS;QACf,CAAC,KAAK,UAAU;QAChB,CAAC,KAAK,YAAY,EAClB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,uDAAuD;IACvD,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0EAA0E;AAC1E,SAAS,mBAAmB,CAAC,CAAS;IACpC,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9B,OAAO,CACL,0KAA0K,CAAC,IAAI,CAC7K,KAAK,CACN,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CACxC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAEzC,mEAAmE;IACnE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEtC,gFAAgF;IAChF,8EAA8E;IAC9E,uEAAuE;IACvE,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,+DAA+D;IAC/D,yDAAyD;IACzD,MAAM,aAAa,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACnF,IACE,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAC/B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,8EAA8E;IAC9E,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS;QAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,YAAY,EAAE,CAAC;IACnE,CAAC;IACD,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,WAAW,GAAG,GAAG,CAAC;IACxB,IAAI,KAAK,CAAC,MAAM,GAAG,WAAW,IAAI,YAAY,GAAG,WAAW;QAAE,OAAO,MAAM,CAAC;IAE5E,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE/C,8EAA8E;IAC9E,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CACtD,CAAC;IACF,IAAI,WAAW;QAAE,OAAO,KAAK,CAAC;IAE9B,8EAA8E;IAC9E,8EAA8E;IAC9E,uDAAuD;IACvD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,IAAI,eAAe,EAAE,CAAC;YAChE,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wEAAwE;IACxE,+EAA+E;IAC/E,oEAAoE;IACpE,4EAA4E;IAC5E,6EAA6E;IAC7E,gEAAgE;IAChE,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CACzE,CAAC;IACF,OAAO,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3C,CAAC;AAWD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAkB,EAClB,GAAgB;IAEhB,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACvC,4EAA4E;QAC5E,iEAAiE;QACjE,iDAAiD;QACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC;QAC5C,MAAM,IAAI,GACR,IAAI,KAAK,KAAK;YACZ,CAAC,CAAC,gEAAgE;YAClE,CAAC,CAAC,EAAE,CAAC;QACT,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,kBAAkB,IAAI,mEAAmE,IAAI,EAAE;SACxG,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IACzC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,6DAA6D;SACtE,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,gBAAgB,WAAW,uFAAuF;SAC3H,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC;IAC9C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,yEAAyE;SAClF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,WAAW,CAAC,CAAC;IAC9E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,gBAAgB,WAAW,wCAAwC;SAC5E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,qBAAqB,WAAW,0BAA0B;KACnE,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,kBAAkB,CAAC,IAAiB;IAClD,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,QAAQ,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAkB,EAAE,GAAgB;IAC1E,IAAI,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,gFAAgF;SACzF,CAAC;IACJ,CAAC;IACD,IAAI,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,eAAe,QAAQ,CAAC,UAAU,IAAI,OAAO,0CAA0C;SAChG,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IACzC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,gBAAgB,WAAW,IAAI,OAAO,gCAAgC;SAC/E,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,WAAW,2CAA2C,EAAE,CAAC;AAC9G,CAAC;AAED,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAE9E,iFAAiF;AACjF,iCAAiC;AACjC,OAAO,EAAE,aAAa,EAAE,CAAC;AAYzB;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAkB,EAClB,GAAgB;IAEhB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,yBAAyB,IAAI,IAAI,QAAQ,EAAE,EAAE,CAAC;IACrF,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;IAC1E,CAAC;IAED,+EAA+E;IAC/E,oEAAoE;IACpE,2EAA2E;IAC3E,yEAAyE;IACzE,wEAAwE;IACxE,wEAAwE;IACxE,IAAI,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,sBAAsB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,0EAA0E;IAC1E,gFAAgF;IAChF,gFAAgF;IAChF,wEAAwE;IACxE,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,+DAA+D;SACxE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,gFAAgF;IAChF,MAAM,QAAQ,GACZ,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,uBAAuB,IAAI,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,6CAA6C,IAAI,GAAG,EAAE,CAAC;IAC9F,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEzF,gFAAgF;IAChF,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACpC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACvF,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,8EAA8E;QAC9E,6EAA6E;QAC7E,uEAAuE;QACvE,6EAA6E;QAC7E,4EAA4E;QAC5E,sEAAsE;QACtE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,wBAAwB,KAAK,IAAI,CAAC;YACxE,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,GAAG,EAAE,EAAE;gBACP,MAAM,EAAE,KAAK;oBACX,CAAC,CAAC,sEAAsE;oBACxE,CAAC,CAAC,8EAA8E;aACnF,CAAC;QACJ,CAAC;QAED,uEAAuE;QACvE,8EAA8E;QAC9E,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,GAAG,EAAE,EAAE;gBACP,MAAM,EAAE,wCAAwC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;aACnG,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,GAAG;oBACH,MAAM,EAAE,WAAW,EAAE,CAAC,IAAI,kBAAkB,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,OAAO,EAAE;iBAC5E,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,EAAE,EAAE,IAAI;YACR,GAAG;YACH,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC3F,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,GAAG;YACH,MAAM,EAAE,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACpF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,UAAU,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAeD;uEACuE;AACvE,SAAS,gBAAgB,CACvB,IAAY,EACZ,EAAU,EACV,IAAY,EACZ,IAAY;IAEZ,MAAM,MAAM,GAAG,GAAG,mBAAmB,GAAG,EAAE,EAAE,CAAC;IAC7C,MAAM,QAAQ,GACZ,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,uBAAuB,IAAI,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,6CAA6C,IAAI,GAAG,EAAE,CAAC;IACxF,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzF,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACpC,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACvF,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,IAAI,CAAC;QACH,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,8BAA8B,EAAE,EAAE,CAAC,CAAC,CAAC;YACpF,EAAE,GAAG,IAAI,CAAC;YACV,MAAM,GAAG,aAAa,MAAM,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACtF,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,UAAU,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5D,CAAC;AAED;8EAC8E;AAC9E,SAAS,YAAY,CACnB,IAAY,EACZ,MAAc,EACd,IAAY;IAEZ,6EAA6E;IAC7E,6EAA6E;IAC7E,mDAAmD;IACnD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,mBAAmB,IAAI,wEAAwE,MAAM,yBAAyB;SACvI,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,6EAA6E;IAC7E,+EAA+E;IAC/E,4EAA4E;IAC5E,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QACpD,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QACpC,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YAC9C,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,0DAA0D,IAAI,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,qCAAqC,MAAM,yBAAyB;aACpK,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7F,+EAA+E;IAC/E,+EAA+E;IAC/E,uCAAuC;IACvC,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACpC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,yBAAyB,IAAI,aAAa,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACrG,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QACnD,EAAE,GAAG,IAAI,CAAC;QACV,MAAM,GAAG,WAAW,MAAM,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC;IAC1G,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACzF,+DAA+D;QAC/D,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IACvC,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAU,EACV,GAAgB;IAEhB,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,OAAsB,IAAI,EAAmB,EAAE;QAC7E,KAAK,CAAC;YACJ,MAAM,EAAE,kBAAkB;YAC1B,IAAI;YACJ,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,YAAY,MAAM,EAAE;YAC7B,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC9C,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,4EAA4E;QAC5E,IAAI,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7C,OAAO,MAAM,CAAC,8DAA8D,CAAC,CAAC;QAChF,CAAC;QAED,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxD,OAAO,MAAM,CAAC,kBAAkB,QAAQ,CAAC,IAAI,oCAAoC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpG,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,+BAA+B,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAEjD,4EAA4E;QAC5E,IAAI,YAAY,EAAE,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC;YACH,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACxE,CAAC;QAED,4EAA4E;QAC5E,0EAA0E;QAC1E,iFAAiF;QACjF,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;QACjC,MAAM,SAAS,GACb,MAAM,KAAK,MAAM;YACf,CAAC,CAAC,sBAAsB,CAAC,QAAQ,EAAE,GAAG,CAAC;YACvC,CAAC,CAAC,MAAM,KAAK,QAAQ;gBACnB,CAAC,CAAC,uBAAuB,CAAC,QAAQ,EAAE,GAAG,CAAC;gBACxC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,QAAQ,CAAC,UAAU,IAAI,OAAO,4BAA4B,EAAE,CAAC;QACjH,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,2BAA2B,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QACrE,CAAC;QAED,4EAA4E;QAC5E,yEAAyE;QACzE,qEAAqE;QACrE,yEAAyE;QACzE,yEAAyE;QACzE,gDAAgD;QAChD,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,4BAA4B,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC;QAED,2EAA2E;QAC3E,MAAM,OAAO,GAAc,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,KAAK,CAAC;QACpE,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC,eAAe,IAAI,sBAAsB,OAAO,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3E,CAAC;QAED,4EAA4E;QAC5E,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,MAAM,CAAC,wBAAwB,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QAED,4EAA4E;QAC5E,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,iCAAiC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE7B,yEAAyE;QACzE,2BAA2B;QAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,KAAK,IAAI,CAAC;QACjE,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC;QAElD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,aAAa,GAAG,KAAK,CAAC,CAAC,oDAAoD;QAC/E,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,KAAyB,CAAC;QAE9B,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;YAC5B,wEAAwE;YACxE,2EAA2E;YAC3E,uEAAuE;YACvE,sEAAsE;YACtE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC;YACvE,KAAK,CAAC;gBACJ,MAAM,EAAE,kBAAkB;gBAC1B,IAAI;gBACJ,SAAS,EAAE,EAAE;gBACb,OAAO,EAAE,wBAAwB,MAAM,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACjF,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;aAChC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,+BAA+B;iBACxC,CAAC;YACJ,CAAC;YAED,0EAA0E;YAC1E,wEAAwE;YACxE,mCAAmC;YACnC,MAAM,SAAS,GAAG,YAAY,CAAC,qBAAqB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACpF,MAAM,QAAQ,GAAG,YAAY,CAC3B,GAAG,QAAQ,CAAC,OAAO,MAAM;gBACvB,kCAAkC,IAAI,KAAK,SAAS,CAAC,MAAM,KAAK;gBAChE,aAAa,MAAM,CAAC,MAAM,GAAG,CAChC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAEjB,2EAA2E;YAC3E,2CAA2C;YAC3C,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;gBAC9B,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,QAAQ;gBACd,IAAI;gBACJ,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,GAAG,aAAa,MAAM,4BAA4B,EAAE,CAAC,MAAM,EAAE,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,SAAS,CAAC;gBAC5B,oEAAoE;gBACpE,sDAAsD;gBACtD,wEAAwE;gBACxE,gEAAgE;gBAChE,IAAI,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,wDAAwD,CAAC;gBAChG,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;oBACpB,IAAI,CAAC;wBACH,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE;4BAChE,GAAG,EAAE,IAAI;4BACT,OAAO,EAAE,WAAW;4BACpB,KAAK,EAAE,MAAM;4BACb,QAAQ,EAAE,MAAM;4BAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;yBACnE,CAAC,CAAC;wBACH,MAAM,GAAG,IAAI,CAAC;wBACd,SAAS,GAAG,6BAA6B,CAAC;oBAC5C,CAAC;oBAAC,MAAM,CAAC;wBACP,SAAS,GAAG,+CAA+C,CAAC;oBAC9D,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;oBAC5B,aAAa,GAAG,IAAI,CAAC;gBACvB,CAAC;gBACD,MAAM,GAAG,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACtD,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,2EAA2E;YAC3E,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC/C,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC;YAClB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,sEAAsE;YACtE,+BAA+B;YAC/B,aAAa,GAAG,IAAI,CAAC;YACrB,MAAM,GAAG,+DAA+D,MAAM,EAAE,CAAC;QACnF,CAAC;QAED,4EAA4E;QAC5E,4EAA4E;QAC5E,2EAA2E;QAC3E,6EAA6E;QAC7E,MAAM,OAAO,GAAG,MAAM,IAAI,aAAa,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,MAAM,GAAoB;YAC9B,EAAE,EAAE,OAAO;YACX,MAAM;YACN,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM;YACN,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5B,CAAC;QACF,KAAK,CAAC;YACJ,MAAM,EAAE,kBAAkB;YAC1B,IAAI;YACJ,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,YAAY,EAAE,eAAe,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,KAAK,MAAM,EAAE;YACrH,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;SACjC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,8DAA8D;QAC9D,OAAO,MAAM,CAAC,qBAAqB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;AACH,CAAC"}
@@ -28,8 +28,17 @@ import { audit } from '../sandbox/audit.js';
28
28
  export function inboxDir() {
29
29
  return join(homedir(), '.ashlr', 'inbox');
30
30
  }
31
- /** Absolute path to a specific proposal file. */
31
+ /**
32
+ * Absolute path to a specific proposal file.
33
+ * M32 hardening: ids reach this from the web API (GET/POST /api/inbox/:id),
34
+ * so validate the shape here too — defense in depth against path traversal,
35
+ * matching runFilePath's guard in core/run/orchestrator.ts. Generated ids
36
+ * are always [a-z0-9-], so this never rejects a legitimate proposal.
37
+ */
32
38
  function proposalPath(id) {
39
+ if (!/^[\w.-]+$/.test(id)) {
40
+ throw new Error(`Invalid proposal id: ${JSON.stringify(id)}`);
41
+ }
33
42
  return join(inboxDir(), `${id}.json`);
34
43
  }
35
44
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/core/inbox/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/core/inbox/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * M68: ashlr-md rendering integration — opt-in, best-effort, never-throws.
3
+ *
4
+ * When ashlr-md (https://github.com/ashlrai/ashlr-md) is installed, operators
5
+ * can open generated Markdown (proposals, digests, specs) in the beautiful
6
+ * AI-native viewer instead of receiving a raw terminal dump.
7
+ *
8
+ * The integration is strictly additive:
9
+ * - When ashlr-md is absent, every function degrades gracefully: no error,
10
+ * no side-effect, caller receives ok:false / rendered:false and falls back
11
+ * to its own terminal output.
12
+ * - When ashlr-md IS present, a temp .md file is written to
13
+ * ~/.ashlr/tmp (or os.tmpdir() as fallback) and opened via `mdopen <file>`.
14
+ * The spawn is detached and unref()d — it never blocks the hub process.
15
+ *
16
+ * CLI command confirmed from ashlr-md's install.sh:
17
+ * mdopen <path-to-file.md>
18
+ * Installed to /usr/local/bin/mdopen or ~/.local/bin/mdopen by the ashlr-md
19
+ * installer script.
20
+ *
21
+ * Seam: `ashlr inbox` / `ashlr digest` will call `presentMarkdown(title, body)`
22
+ * and fall back to their existing terminal rendering when rendered === false.
23
+ */
24
+ /**
25
+ * Returns true when `mdopen` is on PATH (i.e. ashlr-md CLI is installed).
26
+ * Never throws.
27
+ */
28
+ export declare function ashlrMdInstalled(): boolean;
29
+ /**
30
+ * Open a .md file in the ashlr-md viewer (detached, non-blocking).
31
+ *
32
+ * Returns { ok: true } when the spawn is successfully started, or
33
+ * { ok: false, detail: <reason> } when ashlr-md is not installed or the
34
+ * spawn fails. Never throws.
35
+ *
36
+ * The child process is detached and unref()d: it outlives the hub process
37
+ * (the user sees the GUI window) without keeping the event loop alive.
38
+ */
39
+ export declare function openInAshlrMd(filePath: string): {
40
+ ok: boolean;
41
+ detail: string;
42
+ };
43
+ /**
44
+ * Write a Markdown document to a temp file and return its path.
45
+ *
46
+ * Writes to ~/.ashlr/tmp/ (created on demand) with a timestamp-based name so
47
+ * multiple calls don't collide. Falls back to os.tmpdir() if the ashlr dir
48
+ * cannot be created. Returns null on any write failure. Never throws.
49
+ */
50
+ export declare function renderToTempMarkdown(title: string, body: string): string | null;
51
+ /**
52
+ * Write a temp Markdown file and open it in ashlr-md if installed.
53
+ *
54
+ * This is the primary seam for `ashlr inbox` / `ashlr digest`. Callers should
55
+ * check `rendered` and fall back to terminal output when false.
56
+ *
57
+ * @returns
58
+ * - { rendered: true, path: string, detail: string } — file written + viewer launched
59
+ * - { rendered: false, path: string, detail: string } — file written but viewer absent/failed
60
+ * - { rendered: false, detail: string } — temp write failed
61
+ */
62
+ export declare function presentMarkdown(title: string, body: string): {
63
+ rendered: boolean;
64
+ path?: string;
65
+ detail: string;
66
+ };
@@ -0,0 +1,132 @@
1
+ /**
2
+ * M68: ashlr-md rendering integration — opt-in, best-effort, never-throws.
3
+ *
4
+ * When ashlr-md (https://github.com/ashlrai/ashlr-md) is installed, operators
5
+ * can open generated Markdown (proposals, digests, specs) in the beautiful
6
+ * AI-native viewer instead of receiving a raw terminal dump.
7
+ *
8
+ * The integration is strictly additive:
9
+ * - When ashlr-md is absent, every function degrades gracefully: no error,
10
+ * no side-effect, caller receives ok:false / rendered:false and falls back
11
+ * to its own terminal output.
12
+ * - When ashlr-md IS present, a temp .md file is written to
13
+ * ~/.ashlr/tmp (or os.tmpdir() as fallback) and opened via `mdopen <file>`.
14
+ * The spawn is detached and unref()d — it never blocks the hub process.
15
+ *
16
+ * CLI command confirmed from ashlr-md's install.sh:
17
+ * mdopen <path-to-file.md>
18
+ * Installed to /usr/local/bin/mdopen or ~/.local/bin/mdopen by the ashlr-md
19
+ * installer script.
20
+ *
21
+ * Seam: `ashlr inbox` / `ashlr digest` will call `presentMarkdown(title, body)`
22
+ * and fall back to their existing terminal rendering when rendered === false.
23
+ */
24
+ import { execFileSync, spawn } from 'node:child_process';
25
+ import { mkdirSync, writeFileSync } from 'node:fs';
26
+ import { homedir, tmpdir } from 'node:os';
27
+ import { join } from 'node:path';
28
+ /** Timeout (ms) for the `which mdopen` probe. Must be short — it's synchronous. */
29
+ const WHICH_TIMEOUT_MS = 2_000;
30
+ /**
31
+ * Returns true when `mdopen` is on PATH (i.e. ashlr-md CLI is installed).
32
+ * Never throws.
33
+ */
34
+ export function ashlrMdInstalled() {
35
+ try {
36
+ execFileSync('which', ['mdopen'], {
37
+ timeout: WHICH_TIMEOUT_MS,
38
+ stdio: 'ignore',
39
+ });
40
+ return true;
41
+ }
42
+ catch {
43
+ return false;
44
+ }
45
+ }
46
+ /**
47
+ * Open a .md file in the ashlr-md viewer (detached, non-blocking).
48
+ *
49
+ * Returns { ok: true } when the spawn is successfully started, or
50
+ * { ok: false, detail: <reason> } when ashlr-md is not installed or the
51
+ * spawn fails. Never throws.
52
+ *
53
+ * The child process is detached and unref()d: it outlives the hub process
54
+ * (the user sees the GUI window) without keeping the event loop alive.
55
+ */
56
+ export function openInAshlrMd(filePath) {
57
+ if (!ashlrMdInstalled()) {
58
+ return { ok: false, detail: 'mdopen not found on PATH — ashlr-md not installed' };
59
+ }
60
+ try {
61
+ const child = spawn('mdopen', [filePath], {
62
+ detached: true,
63
+ stdio: 'ignore',
64
+ });
65
+ child.unref();
66
+ return { ok: true, detail: `opened ${filePath} in ashlr-md` };
67
+ }
68
+ catch (err) {
69
+ const msg = err instanceof Error ? err.message : String(err);
70
+ return { ok: false, detail: `mdopen spawn failed: ${msg}` };
71
+ }
72
+ }
73
+ /**
74
+ * Write a Markdown document to a temp file and return its path.
75
+ *
76
+ * Writes to ~/.ashlr/tmp/ (created on demand) with a timestamp-based name so
77
+ * multiple calls don't collide. Falls back to os.tmpdir() if the ashlr dir
78
+ * cannot be created. Returns null on any write failure. Never throws.
79
+ */
80
+ export function renderToTempMarkdown(title, body) {
81
+ try {
82
+ // Prefer ~/.ashlr/tmp so files land in a predictable, inspectable place.
83
+ let dir;
84
+ try {
85
+ dir = join(homedir(), '.ashlr', 'tmp');
86
+ mkdirSync(dir, { recursive: true });
87
+ }
88
+ catch {
89
+ dir = tmpdir();
90
+ }
91
+ const slug = title
92
+ .toLowerCase()
93
+ .replace(/[^a-z0-9]+/g, '-')
94
+ .replace(/^-+|-+$/g, '')
95
+ .slice(0, 40) || 'ashlr-doc';
96
+ const ts = Date.now();
97
+ // Add a random suffix so two calls in the same millisecond never collide.
98
+ const rand = Math.random().toString(36).slice(2, 8);
99
+ const filename = `${slug}-${ts}-${rand}.md`;
100
+ const filePath = join(dir, filename);
101
+ const content = `# ${title}\n\n${body}\n`;
102
+ writeFileSync(filePath, content, 'utf8');
103
+ return filePath;
104
+ }
105
+ catch {
106
+ return null;
107
+ }
108
+ }
109
+ /**
110
+ * Write a temp Markdown file and open it in ashlr-md if installed.
111
+ *
112
+ * This is the primary seam for `ashlr inbox` / `ashlr digest`. Callers should
113
+ * check `rendered` and fall back to terminal output when false.
114
+ *
115
+ * @returns
116
+ * - { rendered: true, path: string, detail: string } — file written + viewer launched
117
+ * - { rendered: false, path: string, detail: string } — file written but viewer absent/failed
118
+ * - { rendered: false, detail: string } — temp write failed
119
+ */
120
+ export function presentMarkdown(title, body) {
121
+ const path = renderToTempMarkdown(title, body);
122
+ if (path === null) {
123
+ return { rendered: false, detail: 'failed to write temp markdown file' };
124
+ }
125
+ const result = openInAshlrMd(path);
126
+ return {
127
+ rendered: result.ok,
128
+ path,
129
+ detail: result.detail,
130
+ };
131
+ }
132
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/core/integrations/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * integrations/secrets.ts — M65: phantom-vault credential resolution for the
3
+ * IN-PROCESS api-model backends (NVIDIA NIMs, Kimi/Moonshot, Hermes-API, …).
4
+ *
5
+ * WHY THIS IS SEPARATE FROM core/phantom.ts: that module is INTENTIONALLY
6
+ * values-free (it only ever inspects names/metadata). This module is the single,
7
+ * deliberate place where a real secret VALUE is pulled into the ashlr process —
8
+ * and only for an in-process network call that genuinely needs it.
9
+ *
10
+ * THE PHANTOM MODEL: `phantom init` rewrites .env real secrets into worthless
11
+ * phantom TOKENS; a local proxy swaps the real value in at the network layer for
12
+ * subprocesses run under `phantom exec` (that's how the CLI-agent backends stay
13
+ * leak-free — engines.ts phantomWrap). But an api-model backend makes its fetch
14
+ * IN-PROCESS, so a plain `process.env[KEY]` read would hand the API a worthless
15
+ * token. When phantom manages the key we therefore `phantom reveal` the real
16
+ * value for that one call. CLI-agent backends remain exec-proxied and never see
17
+ * a real key; this in-process reveal is the documented, narrow exception.
18
+ *
19
+ * SAFETY: never throws; never logs the value; resolves on demand (no caching, so
20
+ * a rotated secret is always current and the value isn't held longer than needed).
21
+ */
22
+ import type { AshlrConfig } from '../types.js';
23
+ /**
24
+ * Reveal a phantom-vault secret value for in-process use. Returns null when
25
+ * phantom can't provide it (not installed, name not in the vault, non-zero exit,
26
+ * empty). Uses `-y` (skip confirmation) + `--quiet` for non-interactive use.
27
+ * Never throws; never logs the value.
28
+ */
29
+ export declare function revealSecret(name: string): string | null;
30
+ /**
31
+ * Resolve a provider API key by env-var name. When phantom is ENABLED and
32
+ * installed, prefer the phantom-vault value (because `phantom init` rewrites the
33
+ * env to a worthless token — a raw env read would send that token to the API);
34
+ * fall back to `process.env[envKey]` for keys phantom doesn't manage or when
35
+ * phantom is off. Returns undefined when neither source has a non-empty value.
36
+ */
37
+ export declare function resolveProviderKey(envKey: string, cfg: AshlrConfig): string | undefined;
@@ -0,0 +1,67 @@
1
+ /**
2
+ * integrations/secrets.ts — M65: phantom-vault credential resolution for the
3
+ * IN-PROCESS api-model backends (NVIDIA NIMs, Kimi/Moonshot, Hermes-API, …).
4
+ *
5
+ * WHY THIS IS SEPARATE FROM core/phantom.ts: that module is INTENTIONALLY
6
+ * values-free (it only ever inspects names/metadata). This module is the single,
7
+ * deliberate place where a real secret VALUE is pulled into the ashlr process —
8
+ * and only for an in-process network call that genuinely needs it.
9
+ *
10
+ * THE PHANTOM MODEL: `phantom init` rewrites .env real secrets into worthless
11
+ * phantom TOKENS; a local proxy swaps the real value in at the network layer for
12
+ * subprocesses run under `phantom exec` (that's how the CLI-agent backends stay
13
+ * leak-free — engines.ts phantomWrap). But an api-model backend makes its fetch
14
+ * IN-PROCESS, so a plain `process.env[KEY]` read would hand the API a worthless
15
+ * token. When phantom manages the key we therefore `phantom reveal` the real
16
+ * value for that one call. CLI-agent backends remain exec-proxied and never see
17
+ * a real key; this in-process reveal is the documented, narrow exception.
18
+ *
19
+ * SAFETY: never throws; never logs the value; resolves on demand (no caching, so
20
+ * a rotated secret is always current and the value isn't held longer than needed).
21
+ */
22
+ import { spawnSync } from 'node:child_process';
23
+ import { phantomInstalled } from '../phantom.js';
24
+ const PHANTOM_BIN = 'phantom';
25
+ const TIMEOUT_MS = 5_000;
26
+ /**
27
+ * Reveal a phantom-vault secret value for in-process use. Returns null when
28
+ * phantom can't provide it (not installed, name not in the vault, non-zero exit,
29
+ * empty). Uses `-y` (skip confirmation) + `--quiet` for non-interactive use.
30
+ * Never throws; never logs the value.
31
+ */
32
+ export function revealSecret(name) {
33
+ try {
34
+ const res = spawnSync(PHANTOM_BIN, ['reveal', name, '--yes', '--quiet'], {
35
+ encoding: 'utf8',
36
+ timeout: TIMEOUT_MS,
37
+ stdio: ['ignore', 'pipe', 'ignore'],
38
+ env: { ...process.env, PHANTOM_NO_UPDATE_CHECK: '1' },
39
+ });
40
+ if (res.status !== 0 || res.error)
41
+ return null;
42
+ const value = (res.stdout ?? '').trim();
43
+ return value.length > 0 ? value : null;
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
49
+ /**
50
+ * Resolve a provider API key by env-var name. When phantom is ENABLED and
51
+ * installed, prefer the phantom-vault value (because `phantom init` rewrites the
52
+ * env to a worthless token — a raw env read would send that token to the API);
53
+ * fall back to `process.env[envKey]` for keys phantom doesn't manage or when
54
+ * phantom is off. Returns undefined when neither source has a non-empty value.
55
+ */
56
+ export function resolveProviderKey(envKey, cfg) {
57
+ if (!envKey)
58
+ return undefined;
59
+ if (cfg.phantom?.enabled && phantomInstalled()) {
60
+ const fromVault = revealSecret(envKey);
61
+ if (fromVault)
62
+ return fromVault;
63
+ }
64
+ const fromEnv = process.env[envKey];
65
+ return fromEnv && fromEnv.trim().length > 0 ? fromEnv : undefined;
66
+ }
67
+ //# sourceMappingURL=secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/core/integrations/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,UAAU,GAAG,KAAK,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;YACvE,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,uBAAuB,EAAE,GAAG,EAAE;SACtD,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,GAAgB;IACjE,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;IAClC,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * integrations/stack.ts — M69: detect + read the ecosystem `stack` tool
3
+ * (service control plane: OAuth → provider → secrets, Phantom-wired).
4
+ *
5
+ * READ-ONLY / ADVISORY by design: the hub DETECTS stack and reports status so an
6
+ * agent or the operator knows what services are wired — it never auto-provisions
7
+ * (`stack apply` stays a deliberate, user-initiated action). Never throws.
8
+ *
9
+ * M73: adds stackRun() — a bounded, never-throw passthrough runner used by the
10
+ * `ashlr stack` CLI layer. Mutating actions (add/apply) are gated at the CLI
11
+ * layer BEFORE calling stackRun; the runner itself is intentionally neutral.
12
+ */
13
+ /** Whether the `stack` CLI is on PATH. Never throws. */
14
+ export declare function stackInstalled(): boolean;
15
+ /** Whether a repo has a committed stack config (.stack.toml). Never throws. */
16
+ export declare function stackProjectConfigured(repo: string): boolean;
17
+ export interface StackStatus {
18
+ ok: boolean;
19
+ /** Service names stack reports as wired (best-effort parse). */
20
+ services?: string[];
21
+ detail: string;
22
+ }
23
+ /**
24
+ * Read `stack status --json` for a repo (best-effort). ok:false (never throws)
25
+ * when stack is absent, errors, or times out. Tolerates an unparsable payload
26
+ * (returns ok:true with an empty service list).
27
+ */
28
+ export declare function stackStatus(repo?: string): StackStatus;
29
+ export interface StackRunResult {
30
+ /** Whether the process exited 0. */
31
+ ok: boolean;
32
+ /** Combined stdout captured (may be empty for streaming calls). */
33
+ stdout: string;
34
+ /** Exit code (null when the process couldn't be launched). */
35
+ code: number | null;
36
+ }
37
+ /**
38
+ * Run `stack <args>` and return {ok, stdout, code}. Never throws. Bounded by
39
+ * TIMEOUT_MS. Mutating actions (add / apply) MUST be gated by the CLI layer
40
+ * (cmdStack) BEFORE this is called — this runner is intentionally neutral.
41
+ *
42
+ * @param args Arguments to pass to the `stack` binary (e.g. ['add', 'postgres']).
43
+ * @param opts.cwd Optional working directory (default: process.cwd()).
44
+ */
45
+ export declare function stackRun(args: string[], opts?: {
46
+ cwd?: string;
47
+ }): StackRunResult;
@@ -0,0 +1,107 @@
1
+ /**
2
+ * integrations/stack.ts — M69: detect + read the ecosystem `stack` tool
3
+ * (service control plane: OAuth → provider → secrets, Phantom-wired).
4
+ *
5
+ * READ-ONLY / ADVISORY by design: the hub DETECTS stack and reports status so an
6
+ * agent or the operator knows what services are wired — it never auto-provisions
7
+ * (`stack apply` stays a deliberate, user-initiated action). Never throws.
8
+ *
9
+ * M73: adds stackRun() — a bounded, never-throw passthrough runner used by the
10
+ * `ashlr stack` CLI layer. Mutating actions (add/apply) are gated at the CLI
11
+ * layer BEFORE calling stackRun; the runner itself is intentionally neutral.
12
+ */
13
+ import { spawnSync } from 'node:child_process';
14
+ import { existsSync } from 'node:fs';
15
+ import { join } from 'node:path';
16
+ const STACK_BIN = 'stack';
17
+ const TIMEOUT_MS = 5_000;
18
+ /** Whether the `stack` CLI is on PATH. Never throws. */
19
+ export function stackInstalled() {
20
+ try {
21
+ const probe = process.platform === 'win32' ? 'where' : 'which';
22
+ return spawnSync(probe, [STACK_BIN], { stdio: 'ignore' }).status === 0;
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ /** Whether a repo has a committed stack config (.stack.toml). Never throws. */
29
+ export function stackProjectConfigured(repo) {
30
+ try {
31
+ return existsSync(join(repo, '.stack.toml'));
32
+ }
33
+ catch {
34
+ return false;
35
+ }
36
+ }
37
+ /**
38
+ * Read `stack status --json` for a repo (best-effort). ok:false (never throws)
39
+ * when stack is absent, errors, or times out. Tolerates an unparsable payload
40
+ * (returns ok:true with an empty service list).
41
+ */
42
+ export function stackStatus(repo) {
43
+ if (!stackInstalled())
44
+ return { ok: false, detail: 'stack not installed' };
45
+ try {
46
+ const res = spawnSync(STACK_BIN, ['status', '--json'], {
47
+ cwd: repo,
48
+ encoding: 'utf8',
49
+ timeout: TIMEOUT_MS,
50
+ stdio: ['ignore', 'pipe', 'ignore'],
51
+ env: { ...process.env },
52
+ });
53
+ if (res.status !== 0 || res.error) {
54
+ return { ok: false, detail: `stack status exit ${res.status ?? 'error'}` };
55
+ }
56
+ const out = (res.stdout ?? '').trim();
57
+ try {
58
+ const parsed = JSON.parse(out);
59
+ const raw = parsed['services'];
60
+ const services = Array.isArray(raw)
61
+ ? raw
62
+ .map((s) => (typeof s === 'string' ? s : s?.['name']))
63
+ .filter((s) => typeof s === 'string' && s.length > 0)
64
+ : [];
65
+ return { ok: true, services, detail: `${services.length} service(s)` };
66
+ }
67
+ catch {
68
+ return { ok: true, services: [], detail: 'stack reachable (status not JSON-parseable)' };
69
+ }
70
+ }
71
+ catch (err) {
72
+ return { ok: false, detail: err instanceof Error ? err.message : String(err) };
73
+ }
74
+ }
75
+ /**
76
+ * Run `stack <args>` and return {ok, stdout, code}. Never throws. Bounded by
77
+ * TIMEOUT_MS. Mutating actions (add / apply) MUST be gated by the CLI layer
78
+ * (cmdStack) BEFORE this is called — this runner is intentionally neutral.
79
+ *
80
+ * @param args Arguments to pass to the `stack` binary (e.g. ['add', 'postgres']).
81
+ * @param opts.cwd Optional working directory (default: process.cwd()).
82
+ */
83
+ export function stackRun(args, opts) {
84
+ if (!stackInstalled()) {
85
+ return { ok: false, stdout: '', code: null };
86
+ }
87
+ try {
88
+ const res = spawnSync(STACK_BIN, args, {
89
+ cwd: opts?.cwd,
90
+ encoding: 'utf8',
91
+ timeout: TIMEOUT_MS,
92
+ stdio: ['ignore', 'pipe', 'pipe'],
93
+ env: { ...process.env },
94
+ });
95
+ if (res.error) {
96
+ return { ok: false, stdout: '', code: null };
97
+ }
98
+ const stdout = (res.stdout ?? '').trimEnd();
99
+ const code = res.status ?? null;
100
+ return { ok: code === 0, stdout, code };
101
+ }
102
+ catch (err) {
103
+ void err;
104
+ return { ok: false, stdout: '', code: null };
105
+ }
106
+ }
107
+ //# sourceMappingURL=stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../src/core/integrations/stack.ts"],"names":[],"mappings":"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"}