@theodo/bernard 0.1.0-beta.0 → 0.1.0-beta.1

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 (260) hide show
  1. package/README.md +13 -12
  2. package/core/README.md +1 -1
  3. package/core/agents/review-quality.md +13 -12
  4. package/core/agents/review-security-bugs.md +1 -1
  5. package/core/agents/review-tests.md +1 -1
  6. package/core/coder/template/main.tf +14 -1
  7. package/core/skills/pull-request/SKILL.md +17 -7
  8. package/core/skills/pull-request/ci-fixer.md +3 -3
  9. package/dist/bin.mjs +4979 -3176
  10. package/dist/{config-BawD0TwQ.mjs → config-DtCwJKWe.mjs} +70 -6
  11. package/dist/config.d.mts +72 -4
  12. package/dist/config.mjs +1 -1
  13. package/dist/docs/404.html +23 -0
  14. package/dist/docs/CLAUDE.html +30 -0
  15. package/dist/docs/CONTEXT.html +30 -0
  16. package/dist/docs/CONTRIBUTING.html +62 -0
  17. package/dist/docs/assets/CLAUDE.md.BLSB-5gK.js +1 -0
  18. package/dist/docs/assets/CLAUDE.md.BLSB-5gK.lean.js +1 -0
  19. package/dist/docs/assets/CONTEXT.md.BovnvMGK.js +1 -0
  20. package/dist/docs/assets/CONTEXT.md.BovnvMGK.lean.js +1 -0
  21. package/dist/docs/assets/CONTRIBUTING.md.DwJsKrz3.js +33 -0
  22. package/dist/docs/assets/CONTRIBUTING.md.DwJsKrz3.lean.js +1 -0
  23. package/dist/docs/assets/app.URmpjWHb.js +312 -0
  24. package/dist/docs/assets/bernard.RCgrvDdX.svg +94 -0
  25. package/dist/docs/assets/chunks/@localSearchIndexroot.Ylq685Cw.js +1 -0
  26. package/dist/docs/assets/chunks/VPLocalSearchBox.C8gcRVj0.js +9 -0
  27. package/dist/docs/assets/chunks/dagre-GXQ25YYZ.2qvw8AqH.js +4 -0
  28. package/dist/docs/assets/chunks/framework.hgjl6W6o.js +20 -0
  29. package/dist/docs/assets/chunks/sizeCapture-INFHLROL.BEqL2zFi.js +1 -0
  30. package/dist/docs/assets/chunks/stateDiagram-v2-MP3YSRHH.3X7wNXKX.js +231 -0
  31. package/dist/docs/assets/chunks/theme.Cksh_UJH.js +2 -0
  32. package/dist/docs/assets/chunks/virtual_mermaid-config.DDnGl6nM.js +1 -0
  33. package/dist/docs/assets/core_README.md.DyxYsikc.js +15 -0
  34. package/dist/docs/assets/core_README.md.DyxYsikc.lean.js +1 -0
  35. package/dist/docs/assets/demo_README.md.Cpi2pUU9.js +18 -0
  36. package/dist/docs/assets/demo_README.md.Cpi2pUU9.lean.js +1 -0
  37. package/dist/docs/assets/docs_adr_0001-what-the-core-is-built-for.md.BxOoMjST.js +1 -0
  38. package/dist/docs/assets/docs_adr_0001-what-the-core-is-built-for.md.BxOoMjST.lean.js +1 -0
  39. package/dist/docs/assets/docs_adr_0002-which-harness-a-project-runs-on.md.2GwF-nj0.js +1 -0
  40. package/dist/docs/assets/docs_adr_0002-which-harness-a-project-runs-on.md.2GwF-nj0.lean.js +1 -0
  41. package/dist/docs/assets/docs_adr_0003-how-core-content-reaches-each-harness.md.BMWE00Mf.js +1 -0
  42. package/dist/docs/assets/docs_adr_0003-how-core-content-reaches-each-harness.md.BMWE00Mf.lean.js +1 -0
  43. package/dist/docs/assets/docs_adr_0004-how-the-core-uses-external-tools.md.B7dtE7MB.js +1 -0
  44. package/dist/docs/assets/docs_adr_0004-how-the-core-uses-external-tools.md.B7dtE7MB.lean.js +1 -0
  45. package/dist/docs/assets/docs_adr_0005-what-drives-the-pipeline.md.DGn0CJeq.js +1 -0
  46. package/dist/docs/assets/docs_adr_0005-what-drives-the-pipeline.md.DGn0CJeq.lean.js +1 -0
  47. package/dist/docs/assets/docs_adr_0006-what-steps-hand-off-to-each-other.md.BflT5ugJ.js +1 -0
  48. package/dist/docs/assets/docs_adr_0006-what-steps-hand-off-to-each-other.md.BflT5ugJ.lean.js +1 -0
  49. package/dist/docs/assets/docs_adr_0007-how-humans-take-part-in-the-pipeline.md.CNX3gUD-.js +1 -0
  50. package/dist/docs/assets/docs_adr_0007-how-humans-take-part-in-the-pipeline.md.CNX3gUD-.lean.js +1 -0
  51. package/dist/docs/assets/docs_adr_0008-where-a-steps-reviewers-run.md.aGbaBOpB.js +1 -0
  52. package/dist/docs/assets/docs_adr_0008-where-a-steps-reviewers-run.md.aGbaBOpB.lean.js +1 -0
  53. package/dist/docs/assets/docs_adr_0009-where-pipeline-state-and-handoffs-live.md.C3tKmV-E.js +1 -0
  54. package/dist/docs/assets/docs_adr_0009-where-pipeline-state-and-handoffs-live.md.C3tKmV-E.lean.js +1 -0
  55. package/dist/docs/assets/docs_adr_0010-how-a-project-adapts-the-core.md.Bp7N6tUE.js +1 -0
  56. package/dist/docs/assets/docs_adr_0010-how-a-project-adapts-the-core.md.Bp7N6tUE.lean.js +1 -0
  57. package/dist/docs/assets/docs_adr_0011-how-the-factory-is-packaged-and-versioned.md.BBJIwnqa.js +1 -0
  58. package/dist/docs/assets/docs_adr_0011-how-the-factory-is-packaged-and-versioned.md.BBJIwnqa.lean.js +1 -0
  59. package/dist/docs/assets/docs_adr_0012-how-a-steps-failures-are-told-apart-and-routed.md.uCyrBfug.js +1 -0
  60. package/dist/docs/assets/docs_adr_0012-how-a-steps-failures-are-told-apart-and-routed.md.uCyrBfug.lean.js +1 -0
  61. package/dist/docs/assets/docs_adr_0013-when-code-lands.md.oXgiobfz.js +1 -0
  62. package/dist/docs/assets/docs_adr_0013-when-code-lands.md.oXgiobfz.lean.js +1 -0
  63. package/dist/docs/assets/docs_adr_0014-what-a-step-may-change.md.Zslg3bnJ.js +1 -0
  64. package/dist/docs/assets/docs_adr_0014-what-a-step-may-change.md.Zslg3bnJ.lean.js +1 -0
  65. package/dist/docs/assets/docs_adr_0015-how-a-project-shapes-its-ticket-flow.md.DNHMxwIT.js +1 -0
  66. package/dist/docs/assets/docs_adr_0015-how-a-project-shapes-its-ticket-flow.md.DNHMxwIT.lean.js +1 -0
  67. package/dist/docs/assets/docs_adr_0016-which-core-the-factory-repo-runs.md.CLN6LqBZ.js +1 -0
  68. package/dist/docs/assets/docs_adr_0016-which-core-the-factory-repo-runs.md.CLN6LqBZ.lean.js +1 -0
  69. package/dist/docs/assets/docs_adr_0017-where-a-tickets-record-lives.md.jjUeM-ex.js +1 -0
  70. package/dist/docs/assets/docs_adr_0017-where-a-tickets-record-lives.md.jjUeM-ex.lean.js +1 -0
  71. package/dist/docs/assets/docs_adr_0018-the-products-name.md.6xaX9vDs.js +1 -0
  72. package/dist/docs/assets/docs_adr_0018-the-products-name.md.6xaX9vDs.lean.js +1 -0
  73. package/dist/docs/assets/docs_adr_0019-how-a-finding-is-answered-and-judged.md.CKKoO9-3.js +1 -0
  74. package/dist/docs/assets/docs_adr_0019-how-a-finding-is-answered-and-judged.md.CKKoO9-3.lean.js +1 -0
  75. package/dist/docs/assets/docs_adr_0020-how-an-interrupted-run-resumes.md.DTIP-MBK.js +1 -0
  76. package/dist/docs/assets/docs_adr_0020-how-an-interrupted-run-resumes.md.DTIP-MBK.lean.js +1 -0
  77. package/dist/docs/assets/docs_adr_0021-how-a-step-runs-in-its-workspace.md.B2r3-FPg.js +1 -0
  78. package/dist/docs/assets/docs_adr_0021-how-a-step-runs-in-its-workspace.md.B2r3-FPg.lean.js +1 -0
  79. package/dist/docs/assets/docs_adr_0022-who-names-the-branches.md.DaVk8X0i.js +1 -0
  80. package/dist/docs/assets/docs_adr_0022-who-names-the-branches.md.DaVk8X0i.lean.js +1 -0
  81. package/dist/docs/assets/docs_adr_0023-how-a-version-ships-before-npm.md.C7-wuCbq.js +1 -0
  82. package/dist/docs/assets/docs_adr_0023-how-a-version-ships-before-npm.md.C7-wuCbq.lean.js +1 -0
  83. package/dist/docs/assets/docs_adr_0024-how-the-config-type-carries-its-docs.md.CQmwhWXs.js +1 -0
  84. package/dist/docs/assets/docs_adr_0024-how-the-config-type-carries-its-docs.md.CQmwhWXs.lean.js +1 -0
  85. package/dist/docs/assets/docs_adr_0025-how-a-steps-handoff-is-written-and-checked.md.CgXYdF2v.js +1 -0
  86. package/dist/docs/assets/docs_adr_0025-how-a-steps-handoff-is-written-and-checked.md.CgXYdF2v.lean.js +1 -0
  87. package/dist/docs/assets/docs_adr_0026-support-for-github-copilot.md.DJsawm-R.js +1 -0
  88. package/dist/docs/assets/docs_adr_0026-support-for-github-copilot.md.DJsawm-R.lean.js +1 -0
  89. package/dist/docs/assets/docs_adr_0027-which-forge-a-project-is-on.md.CY0qy9xh.js +1 -0
  90. package/dist/docs/assets/docs_adr_0027-which-forge-a-project-is-on.md.CY0qy9xh.lean.js +1 -0
  91. package/dist/docs/assets/docs_adr_0028-several-ticket-flows-in-one-pipeline.md.oxffo2qg.js +1 -0
  92. package/dist/docs/assets/docs_adr_0028-several-ticket-flows-in-one-pipeline.md.oxffo2qg.lean.js +1 -0
  93. package/dist/docs/assets/docs_adr_0029-the-branch-a-feature-works-on.md.CrgkP6YJ.js +1 -0
  94. package/dist/docs/assets/docs_adr_0029-the-branch-a-feature-works-on.md.CrgkP6YJ.lean.js +1 -0
  95. package/dist/docs/assets/docs_adr_0030-a-runner-without-coder.md.CW8sF7jK.js +1 -0
  96. package/dist/docs/assets/docs_adr_0030-a-runner-without-coder.md.CW8sF7jK.lean.js +1 -0
  97. package/dist/docs/assets/docs_adr_0031-how-the-run-viewer-reads-its-runs.md.opQYnVF2.js +1 -0
  98. package/dist/docs/assets/docs_adr_0031-how-the-run-viewer-reads-its-runs.md.opQYnVF2.lean.js +1 -0
  99. package/dist/docs/assets/docs_adr_0032-how-a-project-gets-the-viewer.md.DB9NjYJf.js +1 -0
  100. package/dist/docs/assets/docs_adr_0032-how-a-project-gets-the-viewer.md.DB9NjYJf.lean.js +1 -0
  101. package/dist/docs/assets/docs_adr_0033-the-repos-license.md.NPlkrPj8.js +1 -0
  102. package/dist/docs/assets/docs_adr_0033-the-repos-license.md.NPlkrPj8.lean.js +1 -0
  103. package/dist/docs/assets/docs_adr_0034-how-code-review-launches-its-reviewers.md.DSNpkfaL.js +1 -0
  104. package/dist/docs/assets/docs_adr_0034-how-code-review-launches-its-reviewers.md.DSNpkfaL.lean.js +1 -0
  105. package/dist/docs/assets/docs_adr_0035-how-the-package-is-published.md.C1f4B5eb.js +1 -0
  106. package/dist/docs/assets/docs_adr_0035-how-the-package-is-published.md.C1f4B5eb.lean.js +1 -0
  107. package/dist/docs/assets/docs_adr_0036-what-the-cores-pull-request-skill-does.md.op39HLAT.js +1 -0
  108. package/dist/docs/assets/docs_adr_0036-what-the-cores-pull-request-skill-does.md.op39HLAT.lean.js +1 -0
  109. package/dist/docs/assets/docs_adr_0037-how-a-team-reads-the-factorys-documentation.md.Dar_Xo4t.js +1 -0
  110. package/dist/docs/assets/docs_adr_0037-how-a-team-reads-the-factorys-documentation.md.Dar_Xo4t.lean.js +1 -0
  111. package/dist/docs/assets/docs_adr_0038-where-adapters-live.md.CkVD3riv.js +1 -0
  112. package/dist/docs/assets/docs_adr_0038-where-adapters-live.md.CkVD3riv.lean.js +1 -0
  113. package/dist/docs/assets/docs_adr_0039-the-repos-license.md.C_rraWpb.js +1 -0
  114. package/dist/docs/assets/docs_adr_0039-the-repos-license.md.C_rraWpb.lean.js +1 -0
  115. package/dist/docs/assets/docs_adr_0040-how-a-version-is-released.md.CCdwC07z.js +1 -0
  116. package/dist/docs/assets/docs_adr_0040-how-a-version-is-released.md.CCdwC07z.lean.js +1 -0
  117. package/dist/docs/assets/docs_adr_0041-who-opens-the-features-pull-request.md.qLu9WLaG.js +1 -0
  118. package/dist/docs/assets/docs_adr_0041-who-opens-the-features-pull-request.md.qLu9WLaG.lean.js +1 -0
  119. package/dist/docs/assets/docs_adr_0042-how-secrets-are-kept-out-of-committed-records.md.DJWazI4H.js +1 -0
  120. package/dist/docs/assets/docs_adr_0042-how-secrets-are-kept-out-of-committed-records.md.DJWazI4H.lean.js +1 -0
  121. package/dist/docs/assets/docs_getting-started.md.BpQFS8Gr.js +12 -0
  122. package/dist/docs/assets/docs_getting-started.md.BpQFS8Gr.lean.js +1 -0
  123. package/dist/docs/assets/docs_github.md.D4gkW71G.js +1 -0
  124. package/dist/docs/assets/docs_github.md.D4gkW71G.lean.js +1 -0
  125. package/dist/docs/assets/docs_overlay.md.DoWVb6OM.js +35 -0
  126. package/dist/docs/assets/docs_overlay.md.DoWVb6OM.lean.js +1 -0
  127. package/dist/docs/assets/docs_pipeline.md.DdHywWSk.js +1 -0
  128. package/dist/docs/assets/docs_pipeline.md.DdHywWSk.lean.js +1 -0
  129. package/dist/docs/assets/docs_recipes.md.8Xf6BsRA.js +45 -0
  130. package/dist/docs/assets/docs_recipes.md.8Xf6BsRA.lean.js +1 -0
  131. package/dist/docs/assets/fixtures_README.md.DzbQ0hft.js +1 -0
  132. package/dist/docs/assets/fixtures_README.md.DzbQ0hft.lean.js +1 -0
  133. package/dist/docs/assets/index.md.DHgL6CzS.js +28 -0
  134. package/dist/docs/assets/index.md.DHgL6CzS.lean.js +1 -0
  135. package/dist/docs/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  136. package/dist/docs/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  137. package/dist/docs/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  138. package/dist/docs/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  139. package/dist/docs/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  140. package/dist/docs/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  141. package/dist/docs/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  142. package/dist/docs/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  143. package/dist/docs/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  144. package/dist/docs/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  145. package/dist/docs/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  146. package/dist/docs/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  147. package/dist/docs/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  148. package/dist/docs/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  149. package/dist/docs/assets/packages_docs_README.md.PV1a27nC.js +3 -0
  150. package/dist/docs/assets/packages_docs_README.md.PV1a27nC.lean.js +1 -0
  151. package/dist/docs/assets/packages_viewer_README.md.BynKZSdN.js +3 -0
  152. package/dist/docs/assets/packages_viewer_README.md.BynKZSdN.lean.js +1 -0
  153. package/dist/docs/assets/style.C3E8Ltp6.css +1 -0
  154. package/dist/docs/bernard.svg +94 -0
  155. package/dist/docs/core/README.html +44 -0
  156. package/dist/docs/demo/README.html +47 -0
  157. package/dist/docs/docs/adr/0001-what-the-core-is-built-for.html +30 -0
  158. package/dist/docs/docs/adr/0002-which-harness-a-project-runs-on.html +30 -0
  159. package/dist/docs/docs/adr/0003-how-core-content-reaches-each-harness.html +30 -0
  160. package/dist/docs/docs/adr/0004-how-the-core-uses-external-tools.html +30 -0
  161. package/dist/docs/docs/adr/0005-what-drives-the-pipeline.html +30 -0
  162. package/dist/docs/docs/adr/0006-what-steps-hand-off-to-each-other.html +30 -0
  163. package/dist/docs/docs/adr/0007-how-humans-take-part-in-the-pipeline.html +30 -0
  164. package/dist/docs/docs/adr/0008-where-a-steps-reviewers-run.html +30 -0
  165. package/dist/docs/docs/adr/0009-where-pipeline-state-and-handoffs-live.html +30 -0
  166. package/dist/docs/docs/adr/0010-how-a-project-adapts-the-core.html +30 -0
  167. package/dist/docs/docs/adr/0011-how-the-factory-is-packaged-and-versioned.html +30 -0
  168. package/dist/docs/docs/adr/0012-how-a-steps-failures-are-told-apart-and-routed.html +30 -0
  169. package/dist/docs/docs/adr/0013-when-code-lands.html +30 -0
  170. package/dist/docs/docs/adr/0014-what-a-step-may-change.html +30 -0
  171. package/dist/docs/docs/adr/0015-how-a-project-shapes-its-ticket-flow.html +30 -0
  172. package/dist/docs/docs/adr/0016-which-core-the-factory-repo-runs.html +30 -0
  173. package/dist/docs/docs/adr/0017-where-a-tickets-record-lives.html +30 -0
  174. package/dist/docs/docs/adr/0018-the-products-name.html +30 -0
  175. package/dist/docs/docs/adr/0019-how-a-finding-is-answered-and-judged.html +30 -0
  176. package/dist/docs/docs/adr/0020-how-an-interrupted-run-resumes.html +30 -0
  177. package/dist/docs/docs/adr/0021-how-a-step-runs-in-its-workspace.html +30 -0
  178. package/dist/docs/docs/adr/0022-who-names-the-branches.html +30 -0
  179. package/dist/docs/docs/adr/0023-how-a-version-ships-before-npm.html +30 -0
  180. package/dist/docs/docs/adr/0024-how-the-config-type-carries-its-docs.html +30 -0
  181. package/dist/docs/docs/adr/0025-how-a-steps-handoff-is-written-and-checked.html +30 -0
  182. package/dist/docs/docs/adr/0026-support-for-github-copilot.html +30 -0
  183. package/dist/docs/docs/adr/0027-which-forge-a-project-is-on.html +30 -0
  184. package/dist/docs/docs/adr/0028-several-ticket-flows-in-one-pipeline.html +30 -0
  185. package/dist/docs/docs/adr/0029-the-branch-a-feature-works-on.html +30 -0
  186. package/dist/docs/docs/adr/0030-a-runner-without-coder.html +30 -0
  187. package/dist/docs/docs/adr/0031-how-the-run-viewer-reads-its-runs.html +30 -0
  188. package/dist/docs/docs/adr/0032-how-a-project-gets-the-viewer.html +30 -0
  189. package/dist/docs/docs/adr/0033-the-repos-license.html +30 -0
  190. package/dist/docs/docs/adr/0034-how-code-review-launches-its-reviewers.html +30 -0
  191. package/dist/docs/docs/adr/0035-how-the-package-is-published.html +30 -0
  192. package/dist/docs/docs/adr/0036-what-the-cores-pull-request-skill-does.html +30 -0
  193. package/dist/docs/docs/adr/0037-how-a-team-reads-the-factorys-documentation.html +30 -0
  194. package/dist/docs/docs/adr/0038-where-adapters-live.html +30 -0
  195. package/dist/docs/docs/adr/0039-the-repos-license.html +30 -0
  196. package/dist/docs/docs/adr/0040-how-a-version-is-released.html +30 -0
  197. package/dist/docs/docs/adr/0041-who-opens-the-features-pull-request.html +30 -0
  198. package/dist/docs/docs/adr/0042-how-secrets-are-kept-out-of-committed-records.html +30 -0
  199. package/dist/docs/docs/getting-started.html +41 -0
  200. package/dist/docs/docs/github.html +30 -0
  201. package/dist/docs/docs/overlay.html +64 -0
  202. package/dist/docs/docs/pipeline.html +30 -0
  203. package/dist/docs/docs/recipes.html +74 -0
  204. package/dist/docs/fixtures/README.html +30 -0
  205. package/dist/docs/hashmap.json +1 -0
  206. package/dist/docs/index.html +57 -0
  207. package/dist/docs/packages/docs/README.html +32 -0
  208. package/dist/docs/packages/viewer/README.html +32 -0
  209. package/dist/docs/vp-icons.css +0 -0
  210. package/dist/viewer/assets/Heading-C5Va5XMQ.js +1 -0
  211. package/dist/viewer/assets/SelectionIndicator-DxHiKGW_.js +1 -0
  212. package/dist/viewer/assets/alert-BI2omIo2.js +1 -0
  213. package/dist/viewer/assets/attempt-Dunc67N6.js +1 -0
  214. package/dist/viewer/assets/card-IsZ2ZhSn.js +1 -0
  215. package/dist/viewer/assets/{chunk-WQQL4CDK-DSpW9ZO8.js → chunk-WQQL4CDK-Bd4bkond.js} +1 -1
  216. package/dist/viewer/assets/context-CzP3x3DO.js +7 -0
  217. package/dist/viewer/assets/{dagre-NK4GIZVX-BzzW8pOj.js → dagre-NK4GIZVX-Bhq8pl9Y.js} +1 -1
  218. package/dist/viewer/assets/{index-CnzUhLCJ.css → index-B90XVeY-.css} +1 -1
  219. package/dist/viewer/assets/index-tH-KNwJL.js +10 -0
  220. package/dist/viewer/assets/{mermaid.core-D1FXi6mg.js → mermaid.core-I426eCuN.js} +4 -4
  221. package/dist/viewer/assets/pipeline-Hw_7tocN.js +1 -0
  222. package/dist/viewer/assets/routes-BOl7_JgK.js +1 -0
  223. package/dist/viewer/assets/runs._runId-D4q1mLCt.js +6 -0
  224. package/dist/viewer/assets/runs._runId.index-B-woIhKA.js +1 -0
  225. package/dist/viewer/assets/runs._runId.machines-SkWqrTI6.js +2 -0
  226. package/dist/viewer/assets/runs._runId.sessions-DBVWEbLY.js +1 -0
  227. package/dist/viewer/assets/{stateDiagram-v2-A6IESKWZ-J9KnYRFT.js → stateDiagram-v2-A6IESKWZ-DUwIje_A.js} +1 -1
  228. package/dist/viewer/assets/surface-B6LupC_E.js +1 -0
  229. package/dist/viewer/assets/table-B8t5lQz5.js +1 -0
  230. package/dist/viewer/assets/useEvent-DXj38gmC.js +1 -0
  231. package/dist/viewer/assets/useToggleState-D_NUC1vr.js +2 -0
  232. package/dist/viewer/index.html +5 -5
  233. package/fixtures/starters/azure-devops/.factory/factory.config.ts +2 -7
  234. package/fixtures/starters/azure-devops/.factory/factory.lock.json +7 -8
  235. package/fixtures/starters/github/.factory/factory.config.ts +2 -0
  236. package/fixtures/starters/github/.factory/factory.lock.json +6 -7
  237. package/fixtures/starters/gitlab/.factory/factory.config.ts +9 -0
  238. package/fixtures/starters/gitlab/.factory/factory.lock.json +19 -0
  239. package/fixtures/starters/gitlab/.factory/slots/checks.command.md +1 -0
  240. package/fixtures/starters/gitlab/.factory/slots/context.sources.md +3 -0
  241. package/fixtures/starters/gitlab/.factory/slots/review.detectors.md +5 -0
  242. package/package.json +9 -7
  243. package/core/skills/pull-request/scripts/pr-drive.sh +0 -208
  244. package/dist/viewer/assets/Heading-Dm1Q0gV2.js +0 -1
  245. package/dist/viewer/assets/api-C4lMOGdC.js +0 -7
  246. package/dist/viewer/assets/attempt-lbW5voCR.js +0 -1
  247. package/dist/viewer/assets/card-CtJKot3P.js +0 -1
  248. package/dist/viewer/assets/context-DEB-Y3Iz.js +0 -1
  249. package/dist/viewer/assets/index-Co9KwXRI.js +0 -10
  250. package/dist/viewer/assets/jsx-runtime-CkXRJ162.js +0 -1
  251. package/dist/viewer/assets/pipeline-B-myvM6K.js +0 -1
  252. package/dist/viewer/assets/routes-BzvVN6y-.js +0 -1
  253. package/dist/viewer/assets/runs._runId-BVT2VH_w.js +0 -6
  254. package/dist/viewer/assets/runs._runId.index-C3bbzwAC.js +0 -1
  255. package/dist/viewer/assets/runs._runId.machines-Cj21KdLd.js +0 -2
  256. package/dist/viewer/assets/runs._runId.sessions-Tg6Ou3_9.js +0 -1
  257. package/dist/viewer/assets/table-DzduWiYu.js +0 -1
  258. package/dist/viewer/assets/useEvent-CtTfOmE7.js +0 -1
  259. package/dist/viewer/assets/useToggleState-DfzJwOaN.js +0 -2
  260. package/fixtures/starters/azure-devops/.factory/skills/pull-request/SKILL.md +0 -29
@@ -0,0 +1,32 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en-US" dir="ltr">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <title>Run viewer | Bernard the taktician</title>
7
+ <meta name="description" content="An agentic factory for new builds and legacy migrations.">
8
+ <meta name="generator" content="VitePress v1.6.4">
9
+ <link rel="preload stylesheet" href="/docs/assets/style.C3E8Ltp6.css" as="style">
10
+ <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
+
12
+ <script type="module" src="/docs/assets/app.URmpjWHb.js"></script>
13
+ <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
+ <link rel="modulepreload" href="/docs/assets/chunks/framework.hgjl6W6o.js">
15
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.Cksh_UJH.js">
16
+ <link rel="modulepreload" href="/docs/assets/chunks/sizeCapture-INFHLROL.BEqL2zFi.js">
17
+ <link rel="modulepreload" href="/docs/assets/chunks/dagre-GXQ25YYZ.2qvw8AqH.js">
18
+ <link rel="modulepreload" href="/docs/assets/chunks/stateDiagram-v2-MP3YSRHH.3X7wNXKX.js">
19
+ <link rel="modulepreload" href="/docs/assets/chunks/virtual_mermaid-config.DDnGl6nM.js">
20
+ <link rel="modulepreload" href="/docs/assets/packages_viewer_README.md.BynKZSdN.lean.js">
21
+ <link rel="icon" href="/docs/bernard.svg" type="image/svg+xml">
22
+ <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
23
+ <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
24
+ </head>
25
+ <body>
26
+ <div id="app"><div class="Layout" data-v-f87bd3ac><!--[--><!--]--><!--[--><span tabindex="-1" data-v-26966a6b></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-26966a6b>Skip to content</a><!--]--><!----><header class="VPNav" data-v-f87bd3ac data-v-a776a728><div class="VPNavBar" data-v-a776a728 data-v-257d37ee><div class="wrapper" data-v-257d37ee><div class="container" data-v-257d37ee><div class="title" data-v-257d37ee><div class="VPNavBarTitle has-sidebar" data-v-257d37ee data-v-1b9c14bd><a class="title" href="/docs/" data-v-1b9c14bd><!--[--><!--]--><!--[--><img class="VPImage logo" src="/docs/bernard.svg" alt data-v-4a9aa8e2><!--]--><span data-v-1b9c14bd>Bernard</span><!--[--><!--]--></a></div></div><div class="content" data-v-257d37ee><div class="content-body" data-v-257d37ee><!--[--><!--]--><div class="VPNavBarSearch search" data-v-257d37ee><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-257d37ee data-v-96ed2429><span id="main-nav-aria-label" class="visually-hidden" data-v-96ed2429> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/docs/getting-started.html" tabindex="0" data-v-96ed2429 data-v-c21a295c><!--[--><span data-v-c21a295c>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/CONTRIBUTING.html" tabindex="0" data-v-96ed2429 data-v-c21a295c><!--[--><span data-v-c21a295c>Contributing</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/docs/adr/0001-what-the-core-is-built-for.html" tabindex="0" data-v-96ed2429 data-v-c21a295c><!--[--><span data-v-c21a295c>Decisions</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-257d37ee data-v-772a648f><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-772a648f data-v-32dadf2f data-v-033bec8f><span class="check" data-v-033bec8f><span class="icon" data-v-033bec8f><!--[--><span class="vpi-sun sun" data-v-32dadf2f></span><span class="vpi-moon moon" data-v-32dadf2f></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-257d37ee data-v-6a77a12d data-v-6ff730e4><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-6ff730e4><span class="vpi-more-horizontal icon" data-v-6ff730e4></span></button><div class="menu" data-v-6ff730e4><div class="VPMenu" data-v-6ff730e4 data-v-7e1ab185><!----><!--[--><!--[--><!----><div class="group" data-v-6a77a12d><div class="item appearance" data-v-6a77a12d><p class="label" data-v-6a77a12d>Appearance</p><div class="appearance-action" data-v-6a77a12d><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6a77a12d data-v-32dadf2f data-v-033bec8f><span class="check" data-v-033bec8f><span class="icon" data-v-033bec8f><!--[--><span class="vpi-sun sun" data-v-32dadf2f></span><span class="vpi-moon moon" data-v-32dadf2f></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--[--><!--[--><a class="viewer-switch" href="/">Run viewer</a><!--]--><!--]--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-257d37ee data-v-33d7d0d7><span class="container" data-v-33d7d0d7><span class="top" data-v-33d7d0d7></span><span class="middle" data-v-33d7d0d7></span><span class="bottom" data-v-33d7d0d7></span></span></button></div></div></div></div><div class="divider" data-v-257d37ee><div class="divider-line" data-v-257d37ee></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-f87bd3ac data-v-c5f097a9><div class="container" data-v-c5f097a9><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-c5f097a9><span class="vpi-align-left menu-icon" data-v-c5f097a9></span><span class="menu-text" data-v-c5f097a9>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-c5f097a9 data-v-cb88d934><button data-v-cb88d934>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-f87bd3ac data-v-979e8f18><div class="curtain" data-v-979e8f18></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-979e8f18><span class="visually-hidden" id="sidebar-aria-label" data-v-979e8f18> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-b9208f43><section class="VPSidebarItem level-0 collapsible" data-v-b9208f43 data-v-0b328883><div class="item" role="button" tabindex="0" data-v-0b328883><div class="indicator" data-v-0b328883></div><h2 class="text" data-v-0b328883>Bernard</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-0b328883><span class="vpi-chevron-right caret-icon" data-v-0b328883></span></div></div><div class="items" data-v-0b328883><!--[--><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/" data-v-0b328883><!--[--><p class="text" data-v-0b328883>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/CONTEXT.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>Vocabulary</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-b9208f43><section class="VPSidebarItem level-0 collapsible" data-v-b9208f43 data-v-0b328883><div class="item" role="button" tabindex="0" data-v-0b328883><div class="indicator" data-v-0b328883></div><h2 class="text" data-v-0b328883>Guides</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-0b328883><span class="vpi-chevron-right caret-icon" data-v-0b328883></span></div></div><div class="items" data-v-0b328883><!--[--><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/getting-started.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>Getting started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/overlay.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>The overlay</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/recipes.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>Recipes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/pipeline.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>Pipeline</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-b9208f43><section class="VPSidebarItem level-0 collapsible has-active" data-v-b9208f43 data-v-0b328883><div class="item" role="button" tabindex="0" data-v-0b328883><div class="indicator" data-v-0b328883></div><h2 class="text" data-v-0b328883>Contributing</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-0b328883><span class="vpi-chevron-right caret-icon" data-v-0b328883></span></div></div><div class="items" data-v-0b328883><!--[--><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/CONTRIBUTING.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>Contributing</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/CLAUDE.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>Rules for agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/github.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/core/README.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>Core content</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/packages/viewer/README.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>Run viewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/packages/docs/README.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>Documentation site</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/fixtures/README.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>Fixtures</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/demo/README.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>Demo</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-b9208f43><section class="VPSidebarItem level-0 collapsible collapsed" data-v-b9208f43 data-v-0b328883><div class="item" role="button" tabindex="0" data-v-0b328883><div class="indicator" data-v-0b328883></div><h2 class="text" data-v-0b328883>Decisions</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-0b328883><span class="vpi-chevron-right caret-icon" data-v-0b328883></span></div></div><div class="items" data-v-0b328883><!--[--><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0001-what-the-core-is-built-for.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0001 · What the core is built for</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0002-which-harness-a-project-runs-on.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0002 · Which harness a project runs on</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0003-how-core-content-reaches-each-harness.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0003 · How core content reaches each harness</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0004-how-the-core-uses-external-tools.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0004 · How the core uses external tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0005-what-drives-the-pipeline.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0005 · What drives the pipeline</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0006-what-steps-hand-off-to-each-other.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0006 · What steps hand off to each other</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0007-how-humans-take-part-in-the-pipeline.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0007 · How humans take part in the pipeline</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0008-where-a-steps-reviewers-run.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0008 · Where a step's reviewers run</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0009-where-pipeline-state-and-handoffs-live.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0009 · Where pipeline state and handoffs live</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0010-how-a-project-adapts-the-core.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0010 · How a project adapts the core</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0011-how-the-factory-is-packaged-and-versioned.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0011 · How the factory is packaged and versioned</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0012-how-a-steps-failures-are-told-apart-and-routed.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0012 · How a step's failures are told apart and routed</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0013-when-code-lands.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0013 · When code lands</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0014-what-a-step-may-change.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0014 · What a step may change</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0015-how-a-project-shapes-its-ticket-flow.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0015 · How a project shapes its ticket flow</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0016-which-core-the-factory-repo-runs.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0016 · Which core the factory repo runs</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0017-where-a-tickets-record-lives.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0017 · Where a ticket's record lives</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0018-the-products-name.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0018 · The product's name</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0019-how-a-finding-is-answered-and-judged.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0019 · How a finding is answered and judged</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0020-how-an-interrupted-run-resumes.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0020 · How an interrupted run resumes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0021-how-a-step-runs-in-its-workspace.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0021 · How a step runs in its workspace</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0022-who-names-the-branches.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0022 · Who names the branches</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0023-how-a-version-ships-before-npm.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0023 · How a version ships before npm</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0024-how-the-config-type-carries-its-docs.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0024 · How the config type carries its docs</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0025-how-a-steps-handoff-is-written-and-checked.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0025 · How a step's handoff is written and checked</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0026-support-for-github-copilot.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0026 · Support for GitHub Copilot</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0027-which-forge-a-project-is-on.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0027 · Which forge a project is on</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0028-several-ticket-flows-in-one-pipeline.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0028 · Several ticket flows in one pipeline</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0029-the-branch-a-feature-works-on.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0029 · The branch a feature works on</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0030-a-runner-without-coder.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0030 · A runner without Coder</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0031-how-the-run-viewer-reads-its-runs.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0031 · How the run viewer reads its runs</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0032-how-a-project-gets-the-viewer.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0032 · How a project gets the viewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0033-the-repos-license.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0033 · The repo's license</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0034-how-code-review-launches-its-reviewers.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0034 · How code review launches its reviewers</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0035-how-the-package-is-published.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0035 · How the package is published</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0036-what-the-cores-pull-request-skill-does.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0036 · What the core's pull-request skill does</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0037-how-a-team-reads-the-factorys-documentation.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0037 · How a team reads the factory's documentation</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0038-where-adapters-live.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0038 · Where adapters live</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0039-the-repos-license.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0039 · The repo's license</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0040-how-a-version-is-released.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0040 · How a version is released</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0041-who-opens-the-features-pull-request.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0041 · Who opens the feature's pull request, and how a ticket reaches it</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-0b328883><div class="item" data-v-0b328883><div class="indicator" data-v-0b328883></div><a class="VPLink link link" href="/docs/docs/adr/0042-how-secrets-are-kept-out-of-committed-records.html" data-v-0b328883><!--[--><p class="text" data-v-0b328883>0042 · How secrets are kept out of committed records</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-f87bd3ac data-v-67e000d0><div class="VPDoc has-sidebar has-aside" data-v-67e000d0 data-v-f8622dbf><!--[--><!--]--><div class="container" data-v-f8622dbf><div class="aside" data-v-f8622dbf><div class="aside-curtain" data-v-f8622dbf></div><div class="aside-container" data-v-f8622dbf><div class="aside-content" data-v-f8622dbf><div class="VPDocAside" data-v-f8622dbf data-v-fc01c646><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-fc01c646 data-v-172fd98a><div class="content" data-v-172fd98a><div class="outline-marker" data-v-172fd98a></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-172fd98a>On this page</div><ul class="VPDocOutlineItem root" data-v-172fd98a data-v-ea4171dd><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-fc01c646></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-f8622dbf><div class="content-container" data-v-f8622dbf><!--[--><!--]--><main class="main" data-v-f8622dbf><div style="position:relative;" class="vp-doc _docs_packages_viewer_README" data-v-f8622dbf><div><h1 id="run-viewer" tabindex="-1">Run viewer <a class="header-anchor" href="#run-viewer" aria-label="Permalink to &quot;Run viewer&quot;">​</a></h1><p>A live page on a project&#39;s runs: the feature&#39;s steps, each ticket&#39;s graph of steps with every attempt and the subagents its session launched, the sessions&#39; logs as they are written, the decisions taken without a human, the environments the runner worked in, and the XState machines and their snapshots.</p><p>A single-page app: Vite, React 19, TanStack Router and Query, HeroUI v3 on Tailwind CSS v4. A small Node API serves it the runs, read through the telemetry port (ADR-0031).</p><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">bernard</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> view</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [--port </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">4321]</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [--cwd </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">projec</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">t</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">]</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # the built page, on the project&#39;s telemetry</span></span>
27
+ <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev:viewer</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # from the factory&#39;s repo: Vite, on tmp/factory/runs or $BERNARD_RUNS</span></span>
28
+ <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> build</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # the CLI, then this page into dist/viewer/</span></span></code></pre></div><p>The package ships the page in <code>dist/viewer/</code>, which <code>bernard view</code> serves (ADR-0035). From this repo&#39;s source, <code>pnpm bernard view</code> serves the <code>dist/viewer/</code> that <code>pnpm build</code> built.</p><p><code>bernard view</code> also serves the documentation site in <code>dist/docs/</code> under <code>/docs/</code> (ADR-0037). The header&#39;s <em>Documentation</em> button opens it, and the site&#39;s <em>Run viewer</em> button comes back. <code>pnpm dev:viewer</code> does not serve it: <code>pnpm dev:docs</code> does, live.</p><p>The page draws only the kind of diagram the orchestrator draws, <code>MERMAID_DIAGRAM</code>: the build drops Mermaid&#39;s other diagram types, its other layout engines and KaTeX (<code>mermaid-diagram.ts</code>), over 4 MB. Drawing another kind of diagram means allowing it there. The documentation site uses the same plugin.</p><p>Node 24 and pnpm. The repository&#39;s <code>pnpm lint</code> and <code>pnpm typecheck</code> check it with the rest.</p><h2 id="what-it-reads" tabindex="-1">What it reads <a class="header-anchor" href="#what-it-reads" aria-label="Permalink to &quot;What it reads&quot;">​</a></h2><p>It reads, and never writes, through the project&#39;s telemetry:</p><ul><li>each run&#39;s trace, followed live, and once in full for a run another one resumed;</li><li>the pipeline&#39;s XState machines and each actor&#39;s latest snapshot;</li><li>a session&#39;s readable log, followed live, and its raw output, for the subagents it launched.</li></ul><p>Runs that wrote no machines show none.</p><h2 id="resumed-runs" tabindex="-1">Resumed runs <a class="header-anchor" href="#resumed-runs" aria-label="Permalink to &quot;Resumed runs&quot;">​</a></h2><p><code>bernard resume</code> starts a new run, whose trace holds only what happens from then on. The API links it to the run it resumed, the latest earlier run of its feature, and the viewer shows the chain as one: the newest run&#39;s page has every attempt of every run of it, the <em>Reprises</em> card says where each run stopped and what <code>bernard resume</code> sent, and an earlier run&#39;s URL leads to the newest one. The run selector lists the newest run of each chain.</p><h2 id="pages" tabindex="-1">Pages <a class="header-anchor" href="#pages" aria-label="Permalink to &quot;Pages&quot;">​</a></h2><p>Every page is a URL, the drawer included:</p><ul><li><code>/</code>: the runs in flight, each actor&#39;s state and the session it runs now, then the recent runs;</li><li><code>/runs/&lt;run&gt;</code>: the pipeline, the resumes, the environments and the decisions. A step opens its last attempt&#39;s session, as its chip does;</li><li><code>/runs/&lt;run&gt;/sessions</code>: every attempt, newest first;</li><li><code>/runs/&lt;run&gt;/machines?actor=ticket-02</code>: an actor&#39;s machine, its active states highlighted, and its snapshot;</li><li><code>?session=&lt;run&gt;/&lt;where&gt;/&lt;name&gt;</code> on any of them opens a session&#39;s log, with its handoff once the step has ended. The run comes first: each run numbers its sessions anew.</li></ul><h2 id="layout" tabindex="-1">Layout <a class="header-anchor" href="#layout" aria-label="Permalink to &quot;Layout&quot;">​</a></h2><ul><li><code>shared/</code>: what the API returns. The trace&#39;s events are the telemetry&#39;s (<code>packages/telemetry/src/trace.ts</code>), named in <code>src/run/trace.ts</code>.</li><li><code>server/</code>: the API on the telemetry port (<code>api.ts</code>), the runs&#39; summaries and a session&#39;s subagents (<code>runs.ts</code>), a growing stream as server-sent events (<code>stream.ts</code>), and the server of the built page and of the documentation site that <code>bernard view</code> starts (<code>serve.ts</code>).</li><li><code>src/run/</code>: the run&#39;s view, derived from its trace (<code>derive.ts</code>) and followed live (<code>tail.ts</code>, <code>context.tsx</code>), and what it tells the viewer while the page is open: the tab&#39;s title and toasts (<code>notify.ts</code>).</li><li><code>src/routes/</code>: TanStack Router&#39;s file routes; its Vite plugin generates <code>src/routeTree.gen.ts</code>.</li><li><code>src/theme.css</code>: HeroUI&#39;s theme in Bernard&#39;s colors, light and dark; <code>src/theme.ts</code> picks one, the system&#39;s unless the viewer chose.</li><li><code>src/components/</code>: the lanes, chips, drawer, a session&#39;s log, the Mermaid diagram, and Bernard, the factory&#39;s hermit crab, drawn from <code>docs/assets/bernard.svg</code>: he works while a run goes on.</li><li><code>src/index.css</code> and <code>src/motion.ts</code>: the motion, kept light. Only <code>transform</code> and <code>opacity</code> animate; what loops (Bernard at work, a live dot) loops only while something goes on, pauses while the tab is hidden, stops offscreen, and nothing moves under <code>prefers-reduced-motion</code>.</li></ul></div></div></main><footer class="VPDocFooter" data-v-f8622dbf data-v-020e2df0><!--[--><!--]--><div class="edit-info" data-v-020e2df0><div class="edit-link" data-v-020e2df0><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/theodo-group/bernard/edit/main/packages/viewer/README.md" target="_blank" rel="noreferrer" data-v-020e2df0><!--[--><span class="vpi-square-pen edit-link-icon" data-v-020e2df0></span> Edit this page on GitHub<!--]--></a></div><!----></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-020e2df0><span class="visually-hidden" id="doc-footer-aria-label" data-v-020e2df0>Pager</span><div class="pager" data-v-020e2df0><a class="VPLink link pager-link prev" href="/docs/core/README.html" data-v-020e2df0><!--[--><span class="desc" data-v-020e2df0>Previous page</span><span class="title" data-v-020e2df0>Core content</span><!--]--></a></div><div class="pager" data-v-020e2df0><a class="VPLink link pager-link next" href="/docs/packages/docs/README.html" data-v-020e2df0><!--[--><span class="desc" data-v-020e2df0>Next page</span><span class="title" data-v-020e2df0>Documentation site</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
29
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"claude.md\":\"BLSB-5gK\",\"context.md\":\"BovnvMGK\",\"contributing.md\":\"DwJsKrz3\",\"core_readme.md\":\"DyxYsikc\",\"demo_readme.md\":\"Cpi2pUU9\",\"docs_adr_0001-what-the-core-is-built-for.md\":\"BxOoMjST\",\"docs_adr_0002-which-harness-a-project-runs-on.md\":\"2GwF-nj0\",\"docs_adr_0003-how-core-content-reaches-each-harness.md\":\"BMWE00Mf\",\"docs_adr_0004-how-the-core-uses-external-tools.md\":\"B7dtE7MB\",\"docs_adr_0005-what-drives-the-pipeline.md\":\"DGn0CJeq\",\"docs_adr_0006-what-steps-hand-off-to-each-other.md\":\"BflT5ugJ\",\"docs_adr_0007-how-humans-take-part-in-the-pipeline.md\":\"CNX3gUD-\",\"docs_adr_0008-where-a-steps-reviewers-run.md\":\"aGbaBOpB\",\"docs_adr_0009-where-pipeline-state-and-handoffs-live.md\":\"C3tKmV-E\",\"docs_adr_0010-how-a-project-adapts-the-core.md\":\"Bp7N6tUE\",\"docs_adr_0011-how-the-factory-is-packaged-and-versioned.md\":\"BBJIwnqa\",\"docs_adr_0012-how-a-steps-failures-are-told-apart-and-routed.md\":\"uCyrBfug\",\"docs_adr_0013-when-code-lands.md\":\"oXgiobfz\",\"docs_adr_0014-what-a-step-may-change.md\":\"Zslg3bnJ\",\"docs_adr_0015-how-a-project-shapes-its-ticket-flow.md\":\"DNHMxwIT\",\"docs_adr_0016-which-core-the-factory-repo-runs.md\":\"CLN6LqBZ\",\"docs_adr_0017-where-a-tickets-record-lives.md\":\"jjUeM-ex\",\"docs_adr_0018-the-products-name.md\":\"6xaX9vDs\",\"docs_adr_0019-how-a-finding-is-answered-and-judged.md\":\"CKKoO9-3\",\"docs_adr_0020-how-an-interrupted-run-resumes.md\":\"DTIP-MBK\",\"docs_adr_0021-how-a-step-runs-in-its-workspace.md\":\"B2r3-FPg\",\"docs_adr_0022-who-names-the-branches.md\":\"DaVk8X0i\",\"docs_adr_0023-how-a-version-ships-before-npm.md\":\"C7-wuCbq\",\"docs_adr_0024-how-the-config-type-carries-its-docs.md\":\"CQmwhWXs\",\"docs_adr_0025-how-a-steps-handoff-is-written-and-checked.md\":\"CgXYdF2v\",\"docs_adr_0026-support-for-github-copilot.md\":\"DJsawm-R\",\"docs_adr_0027-which-forge-a-project-is-on.md\":\"CY0qy9xh\",\"docs_adr_0028-several-ticket-flows-in-one-pipeline.md\":\"oxffo2qg\",\"docs_adr_0029-the-branch-a-feature-works-on.md\":\"CrgkP6YJ\",\"docs_adr_0030-a-runner-without-coder.md\":\"CW8sF7jK\",\"docs_adr_0031-how-the-run-viewer-reads-its-runs.md\":\"opQYnVF2\",\"docs_adr_0032-how-a-project-gets-the-viewer.md\":\"DB9NjYJf\",\"docs_adr_0033-the-repos-license.md\":\"NPlkrPj8\",\"docs_adr_0034-how-code-review-launches-its-reviewers.md\":\"DSNpkfaL\",\"docs_adr_0035-how-the-package-is-published.md\":\"C1f4B5eb\",\"docs_adr_0036-what-the-cores-pull-request-skill-does.md\":\"op39HLAT\",\"docs_adr_0037-how-a-team-reads-the-factorys-documentation.md\":\"Dar_Xo4t\",\"docs_adr_0038-where-adapters-live.md\":\"CkVD3riv\",\"docs_adr_0039-the-repos-license.md\":\"C_rraWpb\",\"docs_adr_0040-how-a-version-is-released.md\":\"CCdwC07z\",\"docs_adr_0041-who-opens-the-features-pull-request.md\":\"qLu9WLaG\",\"docs_adr_0042-how-secrets-are-kept-out-of-committed-records.md\":\"DJWazI4H\",\"docs_getting-started.md\":\"BpQFS8Gr\",\"docs_github.md\":\"D4gkW71G\",\"docs_overlay.md\":\"DoWVb6OM\",\"docs_pipeline.md\":\"DdHywWSk\",\"docs_recipes.md\":\"8Xf6BsRA\",\"fixtures_readme.md\":\"DzbQ0hft\",\"index.md\":\"DHgL6CzS\",\"packages_docs_readme.md\":\"PV1a27nC\",\"packages_viewer_readme.md\":\"BynKZSdN\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Bernard the taktician\",\"description\":\"An agentic factory for new builds and legacy migrations.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"/bernard.svg\",\"siteTitle\":\"Bernard\",\"outline\":[2,3],\"search\":{\"provider\":\"local\"},\"nav\":[{\"text\":\"Guides\",\"link\":\"/docs/getting-started\"},{\"text\":\"Contributing\",\"link\":\"/CONTRIBUTING\"},{\"text\":\"Decisions\",\"link\":\"/docs/adr/0001-what-the-core-is-built-for\"}],\"sidebar\":[{\"text\":\"Bernard\",\"collapsed\":false,\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Vocabulary\",\"link\":\"/CONTEXT\"}]},{\"text\":\"Guides\",\"collapsed\":false,\"items\":[{\"text\":\"Getting started\",\"link\":\"/docs/getting-started\"},{\"text\":\"The overlay\",\"link\":\"/docs/overlay\"},{\"text\":\"Recipes\",\"link\":\"/docs/recipes\"},{\"text\":\"Pipeline\",\"link\":\"/docs/pipeline\"}]},{\"text\":\"Contributing\",\"collapsed\":false,\"items\":[{\"text\":\"Contributing\",\"link\":\"/CONTRIBUTING\"},{\"text\":\"Rules for agents\",\"link\":\"/CLAUDE\"},{\"text\":\"GitHub\",\"link\":\"/docs/github\"},{\"text\":\"Core content\",\"link\":\"/core/README\"},{\"text\":\"Run viewer\",\"link\":\"/packages/viewer/README\"},{\"text\":\"Documentation site\",\"link\":\"/packages/docs/README\"},{\"text\":\"Fixtures\",\"link\":\"/fixtures/README\"},{\"text\":\"Demo\",\"link\":\"/demo/README\"}]},{\"text\":\"Decisions\",\"collapsed\":true,\"items\":[{\"text\":\"0001 · What the core is built for\",\"link\":\"/docs/adr/0001-what-the-core-is-built-for\"},{\"text\":\"0002 · Which harness a project runs on\",\"link\":\"/docs/adr/0002-which-harness-a-project-runs-on\"},{\"text\":\"0003 · How core content reaches each harness\",\"link\":\"/docs/adr/0003-how-core-content-reaches-each-harness\"},{\"text\":\"0004 · How the core uses external tools\",\"link\":\"/docs/adr/0004-how-the-core-uses-external-tools\"},{\"text\":\"0005 · What drives the pipeline\",\"link\":\"/docs/adr/0005-what-drives-the-pipeline\"},{\"text\":\"0006 · What steps hand off to each other\",\"link\":\"/docs/adr/0006-what-steps-hand-off-to-each-other\"},{\"text\":\"0007 · How humans take part in the pipeline\",\"link\":\"/docs/adr/0007-how-humans-take-part-in-the-pipeline\"},{\"text\":\"0008 · Where a step's reviewers run\",\"link\":\"/docs/adr/0008-where-a-steps-reviewers-run\"},{\"text\":\"0009 · Where pipeline state and handoffs live\",\"link\":\"/docs/adr/0009-where-pipeline-state-and-handoffs-live\"},{\"text\":\"0010 · How a project adapts the core\",\"link\":\"/docs/adr/0010-how-a-project-adapts-the-core\"},{\"text\":\"0011 · How the factory is packaged and versioned\",\"link\":\"/docs/adr/0011-how-the-factory-is-packaged-and-versioned\"},{\"text\":\"0012 · How a step's failures are told apart and routed\",\"link\":\"/docs/adr/0012-how-a-steps-failures-are-told-apart-and-routed\"},{\"text\":\"0013 · When code lands\",\"link\":\"/docs/adr/0013-when-code-lands\"},{\"text\":\"0014 · What a step may change\",\"link\":\"/docs/adr/0014-what-a-step-may-change\"},{\"text\":\"0015 · How a project shapes its ticket flow\",\"link\":\"/docs/adr/0015-how-a-project-shapes-its-ticket-flow\"},{\"text\":\"0016 · Which core the factory repo runs\",\"link\":\"/docs/adr/0016-which-core-the-factory-repo-runs\"},{\"text\":\"0017 · Where a ticket's record lives\",\"link\":\"/docs/adr/0017-where-a-tickets-record-lives\"},{\"text\":\"0018 · The product's name\",\"link\":\"/docs/adr/0018-the-products-name\"},{\"text\":\"0019 · How a finding is answered and judged\",\"link\":\"/docs/adr/0019-how-a-finding-is-answered-and-judged\"},{\"text\":\"0020 · How an interrupted run resumes\",\"link\":\"/docs/adr/0020-how-an-interrupted-run-resumes\"},{\"text\":\"0021 · How a step runs in its workspace\",\"link\":\"/docs/adr/0021-how-a-step-runs-in-its-workspace\"},{\"text\":\"0022 · Who names the branches\",\"link\":\"/docs/adr/0022-who-names-the-branches\"},{\"text\":\"0023 · How a version ships before npm\",\"link\":\"/docs/adr/0023-how-a-version-ships-before-npm\"},{\"text\":\"0024 · How the config type carries its docs\",\"link\":\"/docs/adr/0024-how-the-config-type-carries-its-docs\"},{\"text\":\"0025 · How a step's handoff is written and checked\",\"link\":\"/docs/adr/0025-how-a-steps-handoff-is-written-and-checked\"},{\"text\":\"0026 · Support for GitHub Copilot\",\"link\":\"/docs/adr/0026-support-for-github-copilot\"},{\"text\":\"0027 · Which forge a project is on\",\"link\":\"/docs/adr/0027-which-forge-a-project-is-on\"},{\"text\":\"0028 · Several ticket flows in one pipeline\",\"link\":\"/docs/adr/0028-several-ticket-flows-in-one-pipeline\"},{\"text\":\"0029 · The branch a feature works on\",\"link\":\"/docs/adr/0029-the-branch-a-feature-works-on\"},{\"text\":\"0030 · A runner without Coder\",\"link\":\"/docs/adr/0030-a-runner-without-coder\"},{\"text\":\"0031 · How the run viewer reads its runs\",\"link\":\"/docs/adr/0031-how-the-run-viewer-reads-its-runs\"},{\"text\":\"0032 · How a project gets the viewer\",\"link\":\"/docs/adr/0032-how-a-project-gets-the-viewer\"},{\"text\":\"0033 · The repo's license\",\"link\":\"/docs/adr/0033-the-repos-license\"},{\"text\":\"0034 · How code review launches its reviewers\",\"link\":\"/docs/adr/0034-how-code-review-launches-its-reviewers\"},{\"text\":\"0035 · How the package is published\",\"link\":\"/docs/adr/0035-how-the-package-is-published\"},{\"text\":\"0036 · What the core's pull-request skill does\",\"link\":\"/docs/adr/0036-what-the-cores-pull-request-skill-does\"},{\"text\":\"0037 · How a team reads the factory's documentation\",\"link\":\"/docs/adr/0037-how-a-team-reads-the-factorys-documentation\"},{\"text\":\"0038 · Where adapters live\",\"link\":\"/docs/adr/0038-where-adapters-live\"},{\"text\":\"0039 · The repo's license\",\"link\":\"/docs/adr/0039-the-repos-license\"},{\"text\":\"0040 · How a version is released\",\"link\":\"/docs/adr/0040-how-a-version-is-released\"},{\"text\":\"0041 · Who opens the feature's pull request, and how a ticket reaches it\",\"link\":\"/docs/adr/0041-who-opens-the-features-pull-request\"},{\"text\":\"0042 · How secrets are kept out of committed records\",\"link\":\"/docs/adr/0042-how-secrets-are-kept-out-of-committed-records\"}]}],\"editLink\":{\"pattern\":\"https://github.com/theodo-group/bernard/edit/main/:path\",\"text\":\"Edit this page on GitHub\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
30
+
31
+ </body>
32
+ </html>
File without changes
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-WkwZ5CU-.js";import{On as t,ct as n,pt as r}from"./context-CzP3x3DO.js";var i=e(t(),1),a=(0,i.createContext)({}),o=(0,i.forwardRef)(function(e,t){[e,t]=n(e,t,a);let{children:o,level:s=3,className:c,...l}=e,u=r[`h${s}`];return i.createElement(u,{...l,ref:t,className:c??`react-aria-Heading`},o)});export{a as n,o as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-WkwZ5CU-.js";import{$t as t,At as n,Dt as r,Ft as i,G as a,Gt as o,H as s,Mt as c,On as l,Ot as u,Pt as d,Rt as f,Tt as p,U as m,Ut as h,X as g,an as _,bt as v,ct as y,et as b,lt as x,nn as S,pt as C,tt as w,xt as T,zt as E}from"./context-CzP3x3DO.js";var D=e(l(),1),ee=class{constructor(e,t,n,r){this._walkerStack=[],this._currentSetFor=new Set,this._acceptNode=e=>{if(e.nodeType===Node.ELEMENT_NODE){let t=e.shadowRoot;if(t){let e=this._doc.createTreeWalker(t,this.whatToShow,{acceptNode:this._acceptNode});return this._walkerStack.unshift(e),NodeFilter.FILTER_ACCEPT}if(typeof this.filter==`function`)return this.filter(e);if(this.filter?.acceptNode)return this.filter.acceptNode(e);if(this.filter===null)return NodeFilter.FILTER_ACCEPT}return NodeFilter.FILTER_SKIP},this._doc=e,this.root=t,this.filter=r??null,this.whatToShow=n??NodeFilter.SHOW_ALL,this._currentNode=t,this._walkerStack.unshift(e.createTreeWalker(t,n,this._acceptNode));let i=t.shadowRoot;if(i){let e=this._doc.createTreeWalker(i,this.whatToShow,{acceptNode:this._acceptNode});this._walkerStack.unshift(e)}}get currentNode(){return this._currentNode}set currentNode(e){if(!n(this.root,e))throw Error(`Cannot set currentNode to a node that is not contained by the root node.`);let t=[],r=e,i=e;for(this._currentNode=e;r&&r!==this.root;)if(r.nodeType===Node.DOCUMENT_FRAGMENT_NODE){let e=r,n=this._doc.createTreeWalker(e,this.whatToShow,{acceptNode:this._acceptNode});t.push(n),n.currentNode=i,this._currentSetFor.add(n),r=i=e.host}else r=r.parentNode;let a=this._doc.createTreeWalker(this.root,this.whatToShow,{acceptNode:this._acceptNode});t.push(a),a.currentNode=i,this._currentSetFor.add(a),this._walkerStack=t}get doc(){return this._doc}firstChild(){let e=this.currentNode,t=this.nextNode();return n(e,t)?(t&&(this.currentNode=t),t):(this.currentNode=e,null)}lastChild(){let e=this._walkerStack[0].lastChild();return e&&(this.currentNode=e),e}nextNode(){let e=this._walkerStack[0].nextNode();if(e){if(e.shadowRoot){let t;if(typeof this.filter==`function`?t=this.filter(e):this.filter?.acceptNode&&(t=this.filter.acceptNode(e)),t===NodeFilter.FILTER_ACCEPT)return this.currentNode=e,e;let n=this.nextNode();return n&&(this.currentNode=n),n}return e&&(this.currentNode=e),e}if(this._walkerStack.length>1){this._walkerStack.shift();let e=this.nextNode();return e&&(this.currentNode=e),e}return null}previousNode(){let e=this._walkerStack[0];if(e.currentNode===e.root){if(this._currentSetFor.has(e)){if(this._currentSetFor.delete(e),this._walkerStack.length>1){this._walkerStack.shift();let e=this.previousNode();return e&&(this.currentNode=e),e}return null}return null}let t=e.previousNode();if(t){if(t.shadowRoot){let e;if(typeof this.filter==`function`?e=this.filter(t):this.filter?.acceptNode&&(e=this.filter.acceptNode(t)),e===NodeFilter.FILTER_ACCEPT)return t&&(this.currentNode=t),t;let n=this.lastChild();return n&&(this.currentNode=n),n}return t&&(this.currentNode=t),t}if(this._walkerStack.length>1){this._walkerStack.shift();let e=this.previousNode();return e&&(this.currentNode=e),e}return null}nextSibling(){return null}previousSibling(){return null}parentNode(){return null}};function O(e,t,n,r){return i()?new ee(e,t,n,r):e.createTreeWalker(t,n,r)}typeof HTMLTemplateElement<`u`&&(Object.defineProperty(HTMLTemplateElement.prototype,"firstChild",{configurable:!0,enumerable:!0,get:function(){return this.content.firstChild}}),Object.defineProperty(HTMLTemplateElement.prototype,"appendChild",{configurable:!0,enumerable:!0,value:function(e){return this.content.appendChild(e)}}),Object.defineProperty(HTMLTemplateElement.prototype,"removeChild",{configurable:!0,enumerable:!0,value:function(e){return this.content.removeChild(e)}}),Object.defineProperty(HTMLTemplateElement.prototype,"insertBefore",{configurable:!0,enumerable:!0,value:function(e,t){return this.content.insertBefore(e,t)}}));var k=(0,D.createContext)(!1);function te(e){if((0,D.useContext)(k))return D.createElement(D.Fragment,null,e.children);let t=D.createElement(k.Provider,{value:!0},e.children);return D.createElement(`template`,null,t)}function A(e){let t=(t,n)=>(0,D.useContext)(k)?null:e(t,n);return t.displayName=e.displayName||e.name,(0,D.forwardRef)(t)}function ne(){return(0,D.useContext)(k)}var re=(0,D.createContext)(null),j=7e3,M=null;function N(e,t=`assertive`,n=j){M?M.announce(e,t,n):(M=new ie,(typeof IS_REACT_ACT_ENVIRONMENT==`boolean`?IS_REACT_ACT_ENVIRONMENT:typeof jest<`u`)?M.announce(e,t,n):setTimeout(()=>{M?.isAttached()&&M?.announce(e,t,n)},100))}var ie=class{constructor(){this.node=null,this.assertiveLog=null,this.politeLog=null,typeof document<`u`&&(this.node=document.createElement(`div`),this.node.dataset.liveAnnouncer=`true`,Object.assign(this.node.style,{border:0,clip:`rect(0 0 0 0)`,clipPath:`inset(50%)`,height:`1px`,margin:`-1px`,overflow:`hidden`,padding:0,position:`absolute`,width:`1px`,whiteSpace:`nowrap`}),this.assertiveLog=this.createLog(`assertive`),this.node.appendChild(this.assertiveLog),this.politeLog=this.createLog(`polite`),this.node.appendChild(this.politeLog),document.body.prepend(this.node))}isAttached(){return this.node?.isConnected}createLog(e){let t=document.createElement(`div`);return t.setAttribute(`role`,`log`),t.setAttribute(`aria-live`,e),t.setAttribute(`aria-relevant`,`additions`),t}destroy(){this.node&&=(document.body.removeChild(this.node),null)}announce(e,t=`assertive`,n=j){if(!this.node)return;let r=document.createElement(`div`);typeof e==`object`?(r.setAttribute(`role`,`img`),r.setAttribute(`aria-labelledby`,e[`aria-labelledby`])):r.textContent=e,t===`assertive`?this.assertiveLog?.appendChild(r):this.politeLog?.appendChild(r),e!==``&&setTimeout(()=>{r.remove()},n)}clear(e){this.node&&((!e||e===`assertive`)&&this.assertiveLog&&(this.assertiveLog.innerHTML=``),(!e||e===`polite`)&&this.politeLog&&(this.politeLog.innerHTML=``))}};function P(e,t){let{elementType:n=`button`,isDisabled:i,onPress:o,onPressStart:s,onPressEnd:c,onPressUp:l,onPressChange:d,preventFocusOnPress:f,allowFocusWhenDisabled:p,onClick:m,href:h,target:_,rel:v,type:y=`button`}=e,b;b=n===`button`?{type:y,disabled:i,form:e.form,formAction:e.formAction,formEncType:e.formEncType,formMethod:e.formMethod,formNoValidate:e.formNoValidate,formTarget:e.formTarget,name:e.name,value:e.value}:{role:`button`,href:n===`a`&&!i?h:void 0,target:n===`a`?_:void 0,type:n===`input`?y:void 0,disabled:n===`input`?i:void 0,"aria-disabled":!i||n===`input`?void 0:i,rel:n===`a`?v:void 0};let{pressProps:x,isPressed:S}=a({onPressStart:s,onPressEnd:c,onPressChange:d,onPress:o,onPressUp:l,onClick:m,isDisabled:i,preventFocusOnPress:f,ref:t}),{focusableProps:C}=g(e,t);p&&(C.tabIndex=i?-1:C.tabIndex);let w=u(C,x,r(e,{labelable:!0}));return{isPressed:S,buttonProps:u(b,w,{"aria-haspopup":e[`aria-haspopup`],"aria-expanded":e[`aria-expanded`],"aria-controls":e[`aria-controls`],"aria-pressed":e[`aria-pressed`],"aria-current":e[`aria-current`],"aria-disabled":e[`aria-disabled`]})}}var F=(0,D.createContext)({}),ae=A(function(e,t){[e,t]=y(e,t,F);let n=e,{isPending:i}=n,{buttonProps:a,isPressed:o}=P(e,t);a=se(a,i);let{focusProps:c,isFocused:l,isFocusVisible:d}=m(e),{hoverProps:f,isHovered:p}=s({...e,isDisabled:e.isDisabled||i}),g={isHovered:p,isPressed:(n.isPressed||o)&&!i,isFocused:l,isFocusVisible:d,isDisabled:e.isDisabled||!1,isPending:i??!1},_=x({...e,values:g,defaultClassName:`react-aria-Button`}),v=h(a.id),b=h(),S=a[`aria-labelledby`];i&&(S?S=`${S} ${b}`:a[`aria-label`]&&(S=`${v} ${b}`));let w=(0,D.useRef)(i);(0,D.useEffect)(()=>{let e={"aria-labelledby":S||v};(!w.current&&l&&i||w.current&&l&&!i)&&N(e,`assertive`),w.current=i},[i,l,S,v]);let T=r(e,{global:!0});return delete T.onClick,D.createElement(C.button,{...u(T,_,a,c,f),type:a.type===`submit`&&i?`button`:a.type,id:v,ref:t,"aria-labelledby":S,slot:e.slot||void 0,"aria-disabled":i?`true`:a[`aria-disabled`],"data-disabled":e.isDisabled||void 0,"data-pressed":g.isPressed||void 0,"data-hovered":p||void 0,"data-focused":l||void 0,"data-pending":i||void 0,"data-focus-visible":d||void 0},D.createElement(re.Provider,{value:{id:b}},_.children))}),oe=/Focus|Blur|Hover|Pointer(Enter|Leave|Over|Out)|Mouse(Enter|Leave|Over|Out)/;function se(e,t){if(t){for(let t in e)t.startsWith(`on`)&&!oe.test(t)&&(e[t]=void 0);e.href=void 0,e.target=void 0}return e}var I=D.createContext(null),L=`react-aria-focus-scope-restore`,R=null;function ce(e){let{children:t,contain:n,restoreFocus:r,autoFocus:i}=e,a=(0,D.useRef)(null),s=(0,D.useRef)(null),l=(0,D.useRef)([]),{parentNode:u}=(0,D.useContext)(I)||{},d=(0,D.useMemo)(()=>new Q({scopeRef:l}),[l]);o(()=>{let e=u||$.root;if($.getTreeNode(e.scopeRef)&&R&&!W(R,e.scopeRef)){let t=$.getTreeNode(R);t&&(e=t)}e.addChild(d),$.addNode(d)},[d,u]),o(()=>{let e=$.getTreeNode(l);e&&(e.contain=!!n)},[n]),o(()=>{let e=a.current?.nextSibling,t=[],n=e=>e.stopPropagation();for(;e&&e!==s.current;)t.push(e),e.addEventListener(L,n),e=e.nextSibling;return l.current=t,()=>{for(let e of t)e.removeEventListener(L,n)}},[t]),he(l,r,n),fe(l,n),ge(l,r,n),me(l,i),(0,D.useEffect)(()=>{let e=c(f(l.current?l.current[0]:void 0)),t=null;if(H(e,l.current)){for(let n of $.traverse())n.scopeRef&&H(e,n.scopeRef.current)&&(t=n);t===$.getTreeNode(l)&&(R=t.scopeRef)}},[l]),o(()=>()=>{let e=$.getTreeNode(l)?.parent?.scopeRef??null;l!==R&&!W(l,R)||e&&!$.getTreeNode(e)||(R=e),$.removeTreeNode(l)},[l]);let p=(0,D.useMemo)(()=>le(l),[]),m=(0,D.useMemo)(()=>({focusManager:p,parentNode:d}),[d,p]);return D.createElement(I.Provider,{value:m},D.createElement(`span`,{"data-focus-scope-start":!0,hidden:!0,ref:a}),t,D.createElement(`span`,{"data-focus-scope-end":!0,hidden:!0,ref:s}))}function le(e){return{focusNext(t={}){let n=e.current,{from:r,tabbable:i,wrap:a,accept:o}=t,s=r||c(f(n[0]??void 0)),l=n[0].previousElementSibling,u=X(z(n),{tabbable:i,accept:o},n);u.currentNode=H(s,n)?s:l;let d=u.nextNode();return!d&&a&&(u.currentNode=l,d=u.nextNode()),d&&G(d,!0),d},focusPrevious(t={}){let n=e.current,{from:r,tabbable:i,wrap:a,accept:o}=t,s=r||c(f(n[0]??void 0)),l=n[n.length-1].nextElementSibling,u=X(z(n),{tabbable:i,accept:o},n);u.currentNode=H(s,n)?s:l;let d=u.previousNode();return!d&&a&&(u.currentNode=l,d=u.previousNode()),d&&G(d,!0),d},focusFirst(t={}){let n=e.current,{tabbable:r,accept:i}=t,a=X(z(n),{tabbable:r,accept:i},n);a.currentNode=n[0].previousElementSibling;let o=a.nextNode();return o&&G(o,!0),o},focusLast(t={}){let n=e.current,{tabbable:r,accept:i}=t,a=X(z(n),{tabbable:r,accept:i},n);a.currentNode=n[n.length-1].nextElementSibling;let o=a.previousNode();return o&&G(o,!0),o}}}function z(e){return e[0].parentElement}function B(e){let t=$.getTreeNode(R);for(;t&&t.scopeRef!==e;){if(t.contain)return!1;t=t.parent}return!0}function ue(e){if(!e.form)return Array.from(f(e).querySelectorAll(`input[type="radio"][name="${CSS.escape(e.name)}"]`)).filter(e=>!e.form);let t=e.form.elements.namedItem(e.name),n=E(e);return t instanceof n.RadioNodeList?Array.from(t).filter(e=>e instanceof n.HTMLInputElement):t instanceof n.HTMLInputElement?[t]:[]}function de(e){if(e.checked)return!0;let t=ue(e);return t.length>0&&!t.some(e=>e.checked)}function fe(e,n){let r=(0,D.useRef)(void 0),i=(0,D.useRef)(void 0);o(()=>{let a=e.current;if(!n){i.current&&=(cancelAnimationFrame(i.current),void 0);return}let o=f(a?a[0]:void 0),s=t=>{if(t.key!==`Tab`||t.altKey||t.ctrlKey||t.metaKey||!B(e)||t.isComposing)return;let n=c(o),r=e.current;if(!r||!H(n,r))return;let i=X(z(r),{tabbable:!0},r);if(!n)return;i.currentNode=n;let a=t.shiftKey?i.previousNode():i.nextNode();a||=(i.currentNode=t.shiftKey?r[r.length-1].nextElementSibling:r[0].previousElementSibling,t.shiftKey?i.previousNode():i.nextNode()),t.preventDefault(),a&&(G(a,!0),a instanceof E(a).HTMLInputElement&&a.select())},l=t=>{(!R||W(R,e))&&H(d(t),e.current)?(R=e,r.current=d(t)):B(e)&&!U(d(t),e)?r.current?G(r.current):R&&R.current&&q(R.current):B(e)&&(r.current=d(t))},u=n=>{i.current&&cancelAnimationFrame(i.current),i.current=requestAnimationFrame(()=>{let i=w(),a=(i===`virtual`||i===null)&&S()&&t(),s=c(o);if(!a&&s&&B(e)&&!U(s,e)){R=e;let t=d(n);t&&t.isConnected?(r.current=t,G(r.current)):R.current&&q(R.current)}})};return o.addEventListener(`keydown`,s,!1),o.addEventListener(`focusin`,l,!1),a?.forEach(e=>e.addEventListener(`focusin`,l,!1)),a?.forEach(e=>e.addEventListener(`focusout`,u,!1)),()=>{o.removeEventListener(`keydown`,s,!1),o.removeEventListener(`focusin`,l,!1),a?.forEach(e=>e.removeEventListener(`focusin`,l,!1)),a?.forEach(e=>e.removeEventListener(`focusout`,u,!1))}},[e,n]),o(()=>()=>{i.current&&cancelAnimationFrame(i.current)},[i])}function V(e){return U(e)}function H(e,t){return!e||!t?!1:t.some(t=>n(t,e))}function U(e,t=null){if(e instanceof Element&&e.closest(`[data-react-aria-top-layer]`))return!0;for(let{scopeRef:n}of $.traverse($.getTreeNode(t)))if(n&&H(e,n.current))return!0;return!1}function pe(e){return U(e,R)}function W(e,t){let n=$.getTreeNode(t)?.parent;for(;n;){if(n.scopeRef===e)return!0;n=n.parent}return!1}function G(e,t=!1){if(e!=null&&!t)try{b(e)}catch{}else if(e!=null)try{e.focus()}catch{}}function K(e,t=!0){let n=e[0].previousElementSibling,r=z(e),i=X(r,{tabbable:t},e);i.currentNode=n;let a=i.nextNode();return t&&!a&&(r=z(e),i=X(r,{tabbable:!1},e),i.currentNode=n,a=i.nextNode()),a}function q(e,t=!0){G(K(e,t))}function me(e,t){let n=D.useRef(t);(0,D.useEffect)(()=>{if(n.current){R=e;let t=f(e.current?e.current[0]:void 0);!H(c(t),R.current)&&e.current&&q(e.current)}n.current=!1},[e])}function he(e,t,n){o(()=>{if(t||n)return;let r=e.current,i=f(r?r[0]:void 0),a=t=>{let n=d(t);H(n,e.current)?R=e:V(n)||(R=null)};return i.addEventListener(`focusin`,a,!1),r?.forEach(e=>e.addEventListener(`focusin`,a,!1)),()=>{i.removeEventListener(`focusin`,a,!1),r?.forEach(e=>e.removeEventListener(`focusin`,a,!1))}},[e,t,n])}function J(e){let t=$.getTreeNode(R);for(;t&&t.scopeRef!==e;){if(t.nodeToRestore)return!1;t=t.parent}return t?.scopeRef===e}function ge(e,t,n){let r=(0,D.useRef)(typeof document<`u`?c(f(e.current?e.current[0]:void 0)):null);o(()=>{let r=e.current,i=f(r?r[0]:void 0);if(!t||n)return;let a=()=>{(!R||W(R,e))&&H(c(i),e.current)&&(R=e)};return i.addEventListener(`focusin`,a,!1),r?.forEach(e=>e.addEventListener(`focusin`,a,!1)),()=>{i.removeEventListener(`focusin`,a,!1),r?.forEach(e=>e.removeEventListener(`focusin`,a,!1))}},[e,n]),o(()=>{let r=f(e.current?e.current[0]:void 0);if(!t)return;let i=t=>{if(t.key!==`Tab`||t.altKey||t.ctrlKey||t.metaKey||!B(e)||t.isComposing)return;let n=r.activeElement;if(!U(n,e)||!J(e))return;let i=$.getTreeNode(e);if(!i)return;let a=i.nodeToRestore,o=X(r.body,{tabbable:!0});o.currentNode=n;let s=t.shiftKey?o.previousNode():o.nextNode();if(a&&a.isConnected&&a!==r.body||(a=void 0,i.nodeToRestore=void 0),(!s||!U(s,e))&&a){o.currentNode=a;do s=t.shiftKey?o.previousNode():o.nextNode();while(U(s,e));t.preventDefault(),t.stopPropagation(),s?G(s,!0):V(a)?G(a,!0):n.blur()}};return n||r.addEventListener(`keydown`,i,!0),()=>{n||r.removeEventListener(`keydown`,i,!0)}},[e,t,n]),o(()=>{let n=f(e.current?e.current[0]:void 0);if(!t)return;let i=$.getTreeNode(e);if(i)return i.nodeToRestore=r.current??void 0,()=>{let r=$.getTreeNode(e);if(!r)return;let i=r.nodeToRestore,a=c(n);if(t&&i&&(a&&U(a,e)||a===n.body&&J(e))){let t=$.clone();requestAnimationFrame(()=>{if(n.activeElement===n.body){let n=t.getTreeNode(e);for(;n;){if(n.nodeToRestore&&n.nodeToRestore.isConnected){Y(n.nodeToRestore);return}n=n.parent}for(n=t.getTreeNode(e);n;){if(n.scopeRef&&n.scopeRef.current&&$.getTreeNode(n.scopeRef)){let e=K(n.scopeRef.current,!0);if(e){Y(e);return}}n=n.parent}}})}}},[e,t])}function Y(e){e.dispatchEvent(new CustomEvent(L,{bubbles:!0,cancelable:!0}))&&G(e)}function X(e,t,r){let i=t?.tabbable?T:v,a=e?.nodeType===Node.ELEMENT_NODE?e:null,o=f(a),s=O(o,e||o,NodeFilter.SHOW_ELEMENT,{acceptNode(e){return n(t?.from,e)||t?.tabbable&&e.tagName===`INPUT`&&e.getAttribute(`type`)===`radio`&&(!de(e)||s.currentNode.tagName===`INPUT`&&s.currentNode.type===`radio`&&s.currentNode.name===e.name)?NodeFilter.FILTER_REJECT:i(e)&&(!r||H(e,r))&&(!t?.accept||t.accept(e))?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});return t?.from&&(s.currentNode=t.from),s}function _e(e,t={}){return{focusNext(r={}){let i=e.current;if(!i)return null;let{from:a,tabbable:o=t.tabbable,wrap:s=t.wrap,accept:l=t.accept}=r,u=a||c(f(i)),d=X(i,{tabbable:o,accept:l});n(i,u)&&(d.currentNode=u);let p=d.nextNode();return!p&&s&&(d.currentNode=i,p=d.nextNode()),p&&G(p,!0),p},focusPrevious(r=t){let i=e.current;if(!i)return null;let{from:a,tabbable:o=t.tabbable,wrap:s=t.wrap,accept:l=t.accept}=r,u=a||c(f(i)),d=X(i,{tabbable:o,accept:l});if(n(i,u))d.currentNode=u;else{let e=Z(d);return e&&G(e,!0),e??null}let p=d.previousNode();if(!p&&s){d.currentNode=i;let e=Z(d);if(!e)return null;p=e}return p&&G(p,!0),p??null},focusFirst(n=t){let r=e.current;if(!r)return null;let{tabbable:i=t.tabbable,accept:a=t.accept}=n,o=X(r,{tabbable:i,accept:a}).nextNode();return o&&G(o,!0),o},focusLast(n=t){let r=e.current;if(!r)return null;let{tabbable:i=t.tabbable,accept:a=t.accept}=n,o=Z(X(r,{tabbable:i,accept:a}));return o&&G(o,!0),o??null}}}function Z(e){let t,n;do n=e.lastChild(),n&&(t=n);while(n);return t}var ve=class e{constructor(){this.fastMap=new Map,this.root=new Q({scopeRef:null}),this.fastMap.set(null,this.root)}get size(){return this.fastMap.size}getTreeNode(e){return this.fastMap.get(e)}addTreeNode(e,t,n){let r=this.fastMap.get(t??null);if(!r)return;let i=new Q({scopeRef:e});r.addChild(i),i.parent=r,this.fastMap.set(e,i),n&&(i.nodeToRestore=n)}addNode(e){this.fastMap.set(e.scopeRef,e)}removeTreeNode(e){if(e===null)return;let t=this.fastMap.get(e);if(!t)return;let n=t.parent;for(let e of this.traverse())e!==t&&t.nodeToRestore&&e.nodeToRestore&&t.scopeRef&&t.scopeRef.current&&H(e.nodeToRestore,t.scopeRef.current)&&(e.nodeToRestore=t.nodeToRestore);let r=t.children;n&&(n.removeChild(t),r.size>0&&r.forEach(e=>n&&n.addChild(e))),this.fastMap.delete(t.scopeRef)}*traverse(e=this.root){if(e.scopeRef!=null&&(yield e),e.children.size>0)for(let t of e.children)yield*this.traverse(t)}clone(){let t=new e;for(let e of this.traverse())t.addTreeNode(e.scopeRef,e.parent?.scopeRef??null,e.nodeToRestore);return t}},Q=class{constructor(e){this.children=new Set,this.contain=!1,this.scopeRef=e.scopeRef}addChild(e){this.children.add(e),e.parent=this}removeChild(e){this.children.delete(e),e.parent=void 0}},$=new ve,ye=e(_(),1),be=(0,D.createContext)(null);function xe(e){let t=(0,D.useRef)({});return D.createElement(be.Provider,{value:t},e.children)}var Se=(0,D.forwardRef)(function(e,t){let{name:n,isVisible:r=!0,children:i,className:a,style:s,render:c,...l}=e,[u,d]=(0,D.useState)(r?`visible`:`hidden`),f=(0,D.useContext)(be);if(!f)throw Error(`<SharedElement> must be rendered inside a <SharedElementTransition>`);r&&u===`hidden`&&d(`visible`),t=p(t),o(()=>{let e=t.current,i=f.current,a=i[n],o=null;if(e&&r&&a){d(`visible`);let t=e.getAnimations(),r=a.style.map(([t,n])=>{let r=e.style[t];if(t===`translate`){let t=a.rect,n=e.getBoundingClientRect(),r=t.left-n?.left,i=t.top-n?.top;e.style.translate=`${r}px ${i}px`}else e.style[t]=n;return[t,r]});for(let n of e.getAnimations())t.includes(n)||n.cancel();o=requestAnimationFrame(()=>{o=null;for(let[t,n]of r)e.style[t]=n}),delete i[n]}else e&&r&&!a?(queueMicrotask(()=>(0,ye.flushSync)(()=>d(`entering`))),o=requestAnimationFrame(()=>{o=null,d(`visible`)})):e&&!r&&queueMicrotask(()=>{i[n]?(delete i[n],(0,ye.flushSync)(()=>d(`exiting`)),Promise.all(e.getAnimations().map(e=>e.finished)).then(()=>d(`hidden`)).catch(()=>{})):d(`hidden`)});return()=>{if(o!=null&&cancelAnimationFrame(o),e&&e.isConnected&&!e.hasAttribute(`data-exiting`)){let t=window.getComputedStyle(e);if(t.transitionProperty!==`none`){let r=t.transitionProperty.split(/\s*,\s*/);i[n]={rect:e.getBoundingClientRect(),style:r.map(e=>[e,t[e]])}}}}},[t,f,n,r]);let m=x({children:i,className:a,style:s,render:c,values:{isEntering:u===`entering`,isExiting:u===`exiting`}});return u===`hidden`?null:D.createElement(C.div,{...l,...m,ref:t,"data-entering":u===`entering`||void 0,"data-exiting":u===`exiting`||void 0})}),Ce=(0,D.createContext)({isSelected:!1}),we=(0,D.forwardRef)(function(e,t){[e,t]=y(e,t,Ce);let{isSelected:n,...r}=e;return D.createElement(Se,{...r,ref:t,className:e.className||`react-aria-SelectionIndicator`,name:`SelectionIndicator`,isVisible:n})});export{ce as a,F as c,N as d,A as f,O as h,pe as i,ae as l,ne as m,Ce as n,X as o,te as p,xe as r,_e as s,we as t,P as u};
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-WkwZ5CU-.js";import{Dn as t,F as n,I as r,L as i,On as a,R as o,_t as s,k as c,vt as l}from"./context-CzP3x3DO.js";import{t as u}from"./surface-B6LupC_E.js";var d=s({defaultVariants:{status:`default`},slots:{base:`alert`,content:`alert__content`,description:`alert__description`,indicator:`alert__indicator`,title:`alert__title`},variants:{status:{accent:{base:`alert--accent`},danger:{base:`alert--danger`},default:{base:`alert--default`},success:{base:`alert--success`},warning:{base:`alert--warning`}}}}),f=e(a(),1),p=t(),m=(0,f.createContext)({}),h={variant:`default`},g=({children:e,className:t,status:n,...r})=>{let i=f.useMemo(()=>d({status:n}),[n]),a=f.useMemo(()=>({slots:i,status:n}),[i,n]);return(0,p.jsx)(m,{value:a,children:(0,p.jsx)(u,{value:h,children:(0,p.jsx)(l.div,{className:i?.base({className:t}),"data-slot":`alert-root`,...r,children:e})})})},_=Object.assign(g,{Root:g,Indicator:({children:e,className:t,...a})=>{let{slots:s,status:u}=(0,f.use)(m),d=()=>{switch(u){case`accent`:return(0,p.jsx)(n,{"data-slot":`alert-default-icon`});case`success`:return(0,p.jsx)(r,{"data-slot":`alert-default-icon`});case`warning`:return(0,p.jsx)(i,{"data-slot":`alert-default-icon`});case`danger`:return(0,p.jsx)(c,{"data-slot":`alert-default-icon`});default:return(0,p.jsx)(n,{"data-slot":`alert-default-icon`})}};return(0,p.jsx)(l.div,{className:o(s?.indicator,t),"data-slot":`alert-indicator`,...a,children:e??d()})},Content:({children:e,className:t,...n})=>{let{slots:r}=(0,f.use)(m);return(0,p.jsx)(l.div,{className:o(r?.content,t),"data-slot":`alert-content`,...n,children:e})},Title:({children:e,className:t,...n})=>{let{slots:r}=(0,f.use)(m);return(0,p.jsx)(l.p,{className:o(r?.title,t),"data-slot":`alert-title`,...n,children:e})},Description:({children:e,className:t,...n})=>{let{slots:r}=(0,f.use)(m);return(0,p.jsx)(l.span,{className:o(r?.description,t),"data-slot":`alert-description`,...n,children:e})}});export{_ as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-WkwZ5CU-.js";import{A as t,B as n,D as r,Dn as i,Dt as a,G as o,H as s,Jt as c,Kt as l,On as u,Ot as d,R as f,U as p,X as m,Xt as h,_t as g,b as _,ct as v,ln as y,lt as b,m as x,o as S,p as C,pt as w,s as T,vt as E,z as D}from"./context-CzP3x3DO.js";import{s as O}from"./index-tH-KNwJL.js";var k=e(u()),A=e=>k.createElement(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,width:16,height:16,fill:`none`,viewBox:`0 0 16 16`},e),k.createElement(`path`,{fill:`currentColor`,fillRule:`evenodd`,d:`M5.5 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m0 1.5a3 3 0 1 0 0-6 3 3 0 0 0 0 6m-3.029 2.886c-.777.54-.971 1.063-.971 1.306 0 .446.362.808.808.808h6.384a.81.81 0 0 0 .808-.808c0-.244-.194-.767-.971-1.306C7.792 9.875 6.719 9.5 5.5 9.5s-2.292.375-3.029.886M0 11.692C0 9.846 2.475 8 5.5 8c1.18 0 2.278.281 3.177.734A5.67 5.67 0 0 1 11.5 8c2.475 0 4.5 1.538 4.5 3.077A1.923 1.923 0 0 1 14.077 13h-3.483c-.416.604-1.113 1-1.902 1H2.308A2.31 2.31 0 0 1 0 11.692m10.991-.192h3.086c.234 0 .423-.19.423-.423 0-.103-.096-.472-.688-.89-.554-.393-1.375-.687-2.312-.687-.517 0-.999.09-1.42.236.526.534.854 1.146.911 1.764M12.5 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0M14 5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0`,clipRule:`evenodd`})),j=g({slots:{base:`link`,icon:`link__icon`}});function M(e,t){let{elementType:n=`a`,onPress:r,onPressStart:i,onPressEnd:s,onPressChange:u,onClick:f,isDisabled:p,...g}=e,_={};n!==`a`&&(_={role:`link`,tabIndex:p?void 0:0});let{focusableProps:v}=m(e,t),{pressProps:y,isPressed:b}=o({onPress:r,onPressStart:i,onPressEnd:s,onPressChange:u,onClick:f,isDisabled:p,ref:t}),x=a(g,{labelable:!0}),S=d(v,y),C=h(),w=c(e);return{isPressed:b,linkProps:d(x,w,{...S,..._,"aria-disabled":p||void 0,"aria-current":e[`aria-current`],onClick:t=>{y.onClick?.(t),l(t,C,e.href,e.routerOptions)}})}}var N=(0,k.createContext)(null),P=(0,k.forwardRef)(function(e,t){[e,t]=v(e,t,N);let n=e.href&&!e.isDisabled?`a`:`span`,{linkProps:r,isPressed:i}=M({...e,elementType:n},t),o=w[n],{hoverProps:c,isHovered:l}=s(e),{focusProps:u,isFocused:f,isFocusVisible:m}=p(),h=b({...e,defaultClassName:`react-aria-Link`,values:{isCurrent:!!e[`aria-current`],isDisabled:e.isDisabled||!1,isPressed:i,isHovered:l,isFocused:f,isFocusVisible:m}}),g=a(e,{global:!0});return delete g.onClick,k.createElement(o,{ref:t,slot:e.slot||void 0,...d(g,h,r,c,u),"data-focused":f||void 0,"data-hovered":l||void 0,"data-pressed":i||void 0,"data-focus-visible":m||void 0,"data-current":!!e[`aria-current`]||void 0,"data-disabled":e.isDisabled||void 0},h.children)}),F=i(),I=(0,k.createContext)({}),L=({children:e,className:t,...n})=>{let r=k.useMemo(()=>j(),[]),i=k.useMemo(()=>({slots:r}),[r]);return(0,F.jsx)(I,{value:i,children:(0,F.jsx)(P,{"data-slot":`link`,...n,className:D(t,r?.base()),children:t=>(0,F.jsx)(F.Fragment,{children:typeof e==`function`?e(t):e})})})},R=Object.assign(L,{Root:L,Icon:({children:e,className:r,...i})=>{let{slots:a}=(0,k.use)(I);return(0,F.jsx)(E.span,{className:f(a?.icon,r),"data-default-icon":n(!e),"data-slot":`link-icon`,...i,children:e??(0,F.jsx)(t,{"data-slot":`link-default-icon`})})}}),z=e=>e?new Date(e).toLocaleTimeString(`fr-FR`):``,B=e=>e?new Date(e).toLocaleString(`fr-FR`,{dateStyle:`short`,timeStyle:`short`}):``;function V(e,t,n){if(!e)return``;let r=Math.max(0,Math.round(((t?new Date(t).getTime():n)-new Date(e).getTime())/1e3));return r<60?`${r} s`:r<3600?`${Math.floor(r/60)} min ${String(r%60).padStart(2,`0`)}`:`${Math.floor(r/3600)} h ${String(Math.floor(r%3600/60)).padStart(2,`0`)}`}var H=e=>e===void 0?``:`$${e.toFixed(2)}`,U=e=>e===void 0?``:`${Math.round(e/1e3)}k tok`;function W(e){let[t,n]=(0,k.useState)(Date.now);return(0,k.useEffect)(()=>{if(!e)return;let t=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(t)},[e]),t}var G=e=>({to:`.`,search:t=>({...t,session:x(e)})}),K=`lift rounded-full hover:no-underline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2`,q=(e,t)=>V(e.startedAt,e.endedAt,t);function J({attempt:e}){let t=e.status===`running`,n=W(t),{symbol:i,tone:a,label:o}=T[e.status],s=C(e);return(0,F.jsxs)(O,{delay:150,children:[(0,F.jsx)(R,{"aria-label":`${e.step} #${e.attempt}, ${o}`,className:K,href:G(e),children:(0,F.jsxs)(r,{className:`font-mono`,color:a,size:`sm`,variant:`soft`,children:[t?(0,F.jsx)(S,{}):i,(0,F.jsxs)(r.Label,{children:[`#`,e.attempt,t&&` · ${q(e,n)}`]})]})}),(0,F.jsxs)(O.Content,{className:`max-w-sm`,children:[(0,F.jsxs)(`p`,{className:`font-medium`,children:[e.step,` #`,e.attempt,` · `,o,e.cost!==void 0&&` · ${H(e.cost)}`]}),s&&(0,F.jsx)(`p`,{className:`text-xs`,children:s.length>280?`${s.slice(0,280)}…`:s})]})]})}var Y=e=>e.status===`completed`?`success`:e.status===`running`?`accent`:`danger`,X={success:`✓`,accent:`…`,danger:`✗`,default:``,warning:``};function Z({attempt:e}){let{data:t=[]}=y(_(e.run,e.session,e.status===`running`));if(t.length===0)return null;let n=t.filter(e=>e.status===`completed`).length,i=t.some(e=>e.status===`running`)?`accent`:n<t.length?`danger`:`default`;return(0,F.jsxs)(O,{delay:150,children:[(0,F.jsx)(R,{"aria-label":`${t.length} subagents, ${n} terminés`,className:K,href:G(e),children:(0,F.jsxs)(r,{className:`font-mono`,color:i,size:`sm`,variant:`tertiary`,children:[(0,F.jsx)(A,{className:`size-3`}),(0,F.jsx)(r.Label,{children:n<t.length?`${n}/${t.length}`:t.length})]})}),(0,F.jsxs)(O.Content,{className:`max-w-md`,children:[(0,F.jsxs)(`p`,{className:`font-medium`,children:[t.length,` subagents de `,e.step,` #`,e.attempt]}),(0,F.jsx)(`ul`,{className:`font-mono text-xs`,children:t.map((e,t)=>(0,F.jsxs)(`li`,{children:[X[Y(e)],` `,e.agent.replace(/^review-/,``),e.tokens!==void 0&&` · ${U(e.tokens)}`,e.durationMs!==void 0&&` · ${Math.round(e.durationMs/1e3)} s`,e.writes.length>0&&` · ${e.writes.map(e=>e.split(`/`).at(-1)).join(`, `)}`]},t))})]})]})}export{z as a,H as c,R as d,G as i,U as l,Z as n,B as o,q as r,V as s,J as t,W as u};
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-WkwZ5CU-.js";import{Dn as t,On as n,R as r,_t as i,vt as a}from"./context-CzP3x3DO.js";import{t as o}from"./surface-B6LupC_E.js";var s=i({defaultVariants:{variant:`default`},slots:{base:`card`,content:`card__content`,description:`card__description`,footer:`card__footer`,header:`card__header`,title:`card__title`},variants:{variant:{default:{base:`card--default`},secondary:{base:`card--secondary`},tertiary:{base:`card--tertiary`},transparent:{base:`card--transparent`}}}}),c=e(n(),1),l=t(),u=(0,c.createContext)({}),d=({children:e,className:t,variant:n=`default`,...r})=>{let i=c.useMemo(()=>s({variant:n}),[n]),d=c.useMemo(()=>({slots:i}),[i]),f=c.useMemo(()=>({variant:n}),[n]),p=(0,l.jsx)(a.div,{className:i.base({className:t}),"data-slot":`card`,...r,children:e});return(0,l.jsx)(u,{value:d,children:n===`transparent`?p:(0,l.jsx)(o,{value:f,children:p})})},f=Object.assign(d,{Root:d,Header:({className:e,...t})=>{let{slots:n}=(0,c.use)(u);return(0,l.jsx)(a.div,{className:r(n?.header,e),"data-slot":`card-header`,...t})},Title:({children:e,className:t,...n})=>{let{slots:i}=(0,c.use)(u);return(0,l.jsx)(a.h3,{className:r(i?.title,t),"data-slot":`card-title`,...n,children:e})},Description:({children:e,className:t,...n})=>{let{slots:i}=(0,c.use)(u);return(0,l.jsx)(a.p,{className:r(i?.description,t),"data-slot":`card-description`,...n,children:e})},Content:({className:e,...t})=>{let{slots:n}=(0,c.use)(u);return(0,l.jsx)(a.div,{className:r(n?.content,e),"data-slot":`card-content`,...t})},Footer:({className:e,...t})=>{let{slots:n}=(0,c.use)(u);return(0,l.jsx)(a.div,{className:r(n?.footer,e),"data-slot":`card-footer`,...t})}});export{f as t};