platformforge 0.3.1__tar.gz → 0.3.2__tar.gz

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 (1424) hide show
  1. {platformforge-0.3.1 → platformforge-0.3.2}/CHANGELOG.md +6 -0
  2. {platformforge-0.3.1 → platformforge-0.3.2}/PKG-INFO +1 -1
  3. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy-parity/VALIDATION-RECEIPT.json +21 -21
  4. {platformforge-0.3.1 → platformforge-0.3.2}/forge.agentic.json +1 -1
  5. {platformforge-0.3.1 → platformforge-0.3.2}/install.ps1 +1 -1
  6. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/__init__.py +1 -1
  7. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/_forge_portal.py +48 -1
  8. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/runstore.py +19 -3
  9. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/discovery.py +4 -1
  10. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ui/wizard.py +2 -1
  11. platformforge-0.3.2/portal/assets/chunk-1iuKGU-7.js +1 -0
  12. platformforge-0.3.2/portal/assets/chunk-7-Y5u2eJ.js +1 -0
  13. platformforge-0.3.2/portal/assets/chunk-B-t6XS2l.js +1 -0
  14. platformforge-0.3.2/portal/assets/chunk-B2d27oUY.js +1 -0
  15. platformforge-0.3.2/portal/assets/chunk-B3Nny4Hq.js +1 -0
  16. platformforge-0.3.2/portal/assets/chunk-B4ycI2EB.js +1 -0
  17. platformforge-0.3.1/portal/assets/chunk-BYYLUO5t.js → platformforge-0.3.2/portal/assets/chunk-B5HYcMEE.js +1 -1
  18. platformforge-0.3.2/portal/assets/chunk-B5JQ6TGK.js +1 -0
  19. platformforge-0.3.2/portal/assets/chunk-B9OrzqvU.js +1 -0
  20. platformforge-0.3.2/portal/assets/chunk-BIDwjg32.js +6 -0
  21. platformforge-0.3.2/portal/assets/chunk-BQNy1boK.js +5 -0
  22. platformforge-0.3.2/portal/assets/chunk-BZz-ye3r.js +1 -0
  23. platformforge-0.3.2/portal/assets/chunk-B_rxrs7-.js +1 -0
  24. platformforge-0.3.2/portal/assets/chunk-BbIMdb8I.js +1 -0
  25. platformforge-0.3.1/portal/assets/chunk-Wd_5yY1t.js → platformforge-0.3.2/portal/assets/chunk-Bcwvgz_t.js +1 -1
  26. platformforge-0.3.2/portal/assets/chunk-BfXakSL4.js +1 -0
  27. platformforge-0.3.2/portal/assets/chunk-Bu575p0q.js +1 -0
  28. platformforge-0.3.2/portal/assets/chunk-Bwkw4aE7.js +1 -0
  29. platformforge-0.3.2/portal/assets/chunk-BzL6fA27.js +1 -0
  30. platformforge-0.3.2/portal/assets/chunk-C5GjvaMe.js +3 -0
  31. platformforge-0.3.2/portal/assets/chunk-CCGQfoG6.js +1 -0
  32. platformforge-0.3.2/portal/assets/chunk-CQCTGQlt.js +1 -0
  33. platformforge-0.3.2/portal/assets/chunk-CUoEJqdd.js +1 -0
  34. platformforge-0.3.1/portal/assets/chunk-C8bgMzTS.js → platformforge-0.3.2/portal/assets/chunk-CXnR4khc.js +1 -1
  35. platformforge-0.3.2/portal/assets/chunk-CbaGjiyC.js +1 -0
  36. platformforge-0.3.2/portal/assets/chunk-CblowMDs.js +1 -0
  37. platformforge-0.3.2/portal/assets/chunk-Cbn3-eJz.js +1 -0
  38. platformforge-0.3.2/portal/assets/chunk-Cc1Ljpp9.js +3 -0
  39. platformforge-0.3.2/portal/assets/chunk-CgS3he5O.js +1 -0
  40. platformforge-0.3.2/portal/assets/chunk-Chbgw2Fv.js +1 -0
  41. platformforge-0.3.2/portal/assets/chunk-CpDhHwF4.js +1 -0
  42. platformforge-0.3.2/portal/assets/chunk-CpWa9uuU.js +1 -0
  43. platformforge-0.3.2/portal/assets/chunk-CvsFhhBP.js +1 -0
  44. platformforge-0.3.2/portal/assets/chunk-D0z3RnwW.js +1 -0
  45. platformforge-0.3.2/portal/assets/chunk-D6EC9BI9.js +1 -0
  46. platformforge-0.3.2/portal/assets/chunk-DA83Qyaa.js +1 -0
  47. platformforge-0.3.2/portal/assets/chunk-DEMgMSVD.js +1 -0
  48. platformforge-0.3.2/portal/assets/chunk-DEzeYLEb.js +1 -0
  49. platformforge-0.3.2/portal/assets/chunk-DFkLw9sv.js +5 -0
  50. platformforge-0.3.2/portal/assets/chunk-DIezziLc.js +1 -0
  51. platformforge-0.3.2/portal/assets/chunk-DSGvsaI9.js +1 -0
  52. platformforge-0.3.2/portal/assets/chunk-DSwgHJOQ.js +1 -0
  53. platformforge-0.3.2/portal/assets/chunk-DTKJQMB6.js +1 -0
  54. platformforge-0.3.2/portal/assets/chunk-DVxh841H.js +1 -0
  55. platformforge-0.3.2/portal/assets/chunk-DXHPaPjR.js +1 -0
  56. platformforge-0.3.2/portal/assets/chunk-DfjZqKcB.js +1 -0
  57. platformforge-0.3.2/portal/assets/chunk-DgT2vlLh.js +1 -0
  58. platformforge-0.3.2/portal/assets/chunk-Dmw4nG6c.js +1 -0
  59. platformforge-0.3.2/portal/assets/chunk-Dy0VvzT2.js +1 -0
  60. platformforge-0.3.2/portal/assets/chunk-MHTSm7mW.js +1 -0
  61. platformforge-0.3.2/portal/assets/chunk-QjrSdDLo.js +1 -0
  62. platformforge-0.3.2/portal/assets/chunk-U7iFiV1z.js +5 -0
  63. platformforge-0.3.1/portal/assets/chunk-C6ri1BES.js → platformforge-0.3.2/portal/assets/chunk-_YJOtIws.js +1 -1
  64. platformforge-0.3.2/portal/assets/chunk-cS-8T4yH.js +1 -0
  65. platformforge-0.3.2/portal/assets/chunk-guGmD9Tx.js +1 -0
  66. platformforge-0.3.2/portal/assets/chunk-iWllghAH.js +1 -0
  67. platformforge-0.3.2/portal/assets/chunk-jX1R4p3z.js +1 -0
  68. platformforge-0.3.2/portal/assets/chunk-m8P7NI_B.js +1 -0
  69. platformforge-0.3.2/portal/assets/chunk-tSc99X9O.js +1 -0
  70. {platformforge-0.3.1 → platformforge-0.3.2}/portal/assets/index.html +2 -2
  71. platformforge-0.3.2/portal/assets/main-FURAVAHM.js +1 -0
  72. platformforge-0.3.2/portal/assets/styles-73X6VTUL.css +1 -0
  73. platformforge-0.3.2/portal/manifest.json +274 -0
  74. {platformforge-0.3.1 → platformforge-0.3.2}/pyproject.toml +1 -1
  75. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/validate.py +42 -23
  76. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_agent_debate.py +3 -2
  77. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_contracts.py +1 -1
  78. platformforge-0.3.1/portal/assets/chunk-6_bITucK.js +0 -1
  79. platformforge-0.3.1/portal/assets/chunk-B5AB8czV.js +0 -1
  80. platformforge-0.3.1/portal/assets/chunk-BJbNCJrv.js +0 -1
  81. platformforge-0.3.1/portal/assets/chunk-BWjIRvH1.js +0 -1
  82. platformforge-0.3.1/portal/assets/chunk-BXk7RxGM.js +0 -1
  83. platformforge-0.3.1/portal/assets/chunk-BYc3t4cg.js +0 -1
  84. platformforge-0.3.1/portal/assets/chunk-BglFR9Wn.js +0 -1
  85. platformforge-0.3.1/portal/assets/chunk-Bj5_93Ey.js +0 -1
  86. platformforge-0.3.1/portal/assets/chunk-Bkokxnl9.js +0 -1
  87. platformforge-0.3.1/portal/assets/chunk-BnZq9uBz.js +0 -1
  88. platformforge-0.3.1/portal/assets/chunk-BpIbIo4H.js +0 -1
  89. platformforge-0.3.1/portal/assets/chunk-C-R9EDEw.js +0 -1
  90. platformforge-0.3.1/portal/assets/chunk-C1jICkBx.js +0 -1
  91. platformforge-0.3.1/portal/assets/chunk-C2Vik-mF.js +0 -1
  92. platformforge-0.3.1/portal/assets/chunk-CV7TSqiz.js +0 -5
  93. platformforge-0.3.1/portal/assets/chunk-CWCQmMmw.js +0 -1
  94. platformforge-0.3.1/portal/assets/chunk-CZreZLNQ.js +0 -1
  95. platformforge-0.3.1/portal/assets/chunk-CaHx1phd.js +0 -1
  96. platformforge-0.3.1/portal/assets/chunk-Cp1ysZIS.js +0 -1
  97. platformforge-0.3.1/portal/assets/chunk-CzfElE0B.js +0 -1
  98. platformforge-0.3.1/portal/assets/chunk-D-GKcz1x.js +0 -1
  99. platformforge-0.3.1/portal/assets/chunk-D0sdF23X.js +0 -1
  100. platformforge-0.3.1/portal/assets/chunk-D4e-ThVc.js +0 -1
  101. platformforge-0.3.1/portal/assets/chunk-DAuZ25Se.js +0 -1
  102. platformforge-0.3.1/portal/assets/chunk-DNdMiBOi.js +0 -1
  103. platformforge-0.3.1/portal/assets/chunk-Df-i8acd.js +0 -1
  104. platformforge-0.3.1/portal/assets/chunk-DiTrvQme.js +0 -1
  105. platformforge-0.3.1/portal/assets/chunk-E37BkvkU.js +0 -1
  106. platformforge-0.3.1/portal/assets/chunk-RSTfWegd.js +0 -1
  107. platformforge-0.3.1/portal/assets/chunk-SeIyT7eK.js +0 -1
  108. platformforge-0.3.1/portal/assets/chunk-mfSjBx6W.js +0 -1
  109. platformforge-0.3.1/portal/assets/chunk-tc9WQav2.js +0 -1
  110. platformforge-0.3.1/portal/assets/chunk-vIImL6Fw.js +0 -1
  111. platformforge-0.3.1/portal/assets/chunk-yM6DMc_W.js +0 -1
  112. platformforge-0.3.1/portal/assets/chunk-yaTNqnhj.js +0 -3
  113. platformforge-0.3.1/portal/assets/main-YKFPUKID.js +0 -1
  114. platformforge-0.3.1/portal/assets/styles-B6ZRGG3C.css +0 -1
  115. platformforge-0.3.1/portal/manifest.json +0 -194
  116. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/pf-extractor.md +0 -0
  117. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/pf-graph-builder.md +0 -0
  118. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/pf-inventory.md +0 -0
  119. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/pf-judge.md +0 -0
  120. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/pf-reconciler.md +0 -0
  121. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/pf-simulator.md +0 -0
  122. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/pf-synthesizer.md +0 -0
  123. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/pf-verifier.md +0 -0
  124. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-adversarial-critic.md +0 -0
  125. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-ai-infra-specialist.md +0 -0
  126. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-architecture-reviewer.md +0 -0
  127. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-aws-specialist.md +0 -0
  128. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-capacity-specialist.md +0 -0
  129. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-change-coordinator.md +0 -0
  130. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-crossplane-specialist.md +0 -0
  131. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-debate-referee.md +0 -0
  132. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-economy-reviewer.md +0 -0
  133. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-evidence-reviewer.md +0 -0
  134. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-federation-specialist.md +0 -0
  135. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-finops-specialist.md +0 -0
  136. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-fleet-coordinator.md +0 -0
  137. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-fleet-specialist.md +0 -0
  138. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-gitops-specialist.md +0 -0
  139. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-graph-specialist.md +0 -0
  140. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-iac-specialist.md +0 -0
  141. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-incident-coordinator.md +0 -0
  142. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-kubernetes-specialist.md +0 -0
  143. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-operations-safety-reviewer.md +0 -0
  144. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-optimization-coordinator.md +0 -0
  145. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-orchestrator.md +0 -0
  146. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-planner.md +0 -0
  147. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-policy-specialist.md +0 -0
  148. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-privacy-reviewer.md +0 -0
  149. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-product-coordinator.md +0 -0
  150. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-product-specialist.md +0 -0
  151. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-release-guardian.md +0 -0
  152. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-security-reviewer.md +0 -0
  153. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-security-specialist.md +0 -0
  154. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-sre-specialist.md +0 -0
  155. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-task-spec-reviewer.md +0 -0
  156. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/agents/platform-verifier.md +0 -0
  157. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/skills/platformforge-agents/SKILL.md +0 -0
  158. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/skills/platformforge-change/SKILL.md +0 -0
  159. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/skills/platformforge-core/SKILL.md +0 -0
  160. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/skills/platformforge-economy/SKILL.md +0 -0
  161. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/skills/platformforge-finops/SKILL.md +0 -0
  162. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/skills/platformforge-fleet/SKILL.md +0 -0
  163. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/skills/platformforge-governance/SKILL.md +0 -0
  164. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/skills/platformforge-graph/SKILL.md +0 -0
  165. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/skills/platformforge-lab/SKILL.md +0 -0
  166. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/skills/platformforge-sdd/SKILL.md +0 -0
  167. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/skills/platformforge-security/SKILL.md +0 -0
  168. {platformforge-0.3.1 → platformforge-0.3.2}/.agents/skills/platformforge-sre/SKILL.md +0 -0
  169. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/pf-extractor.md +0 -0
  170. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/pf-graph-builder.md +0 -0
  171. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/pf-inventory.md +0 -0
  172. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/pf-judge.md +0 -0
  173. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/pf-reconciler.md +0 -0
  174. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/pf-simulator.md +0 -0
  175. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/pf-synthesizer.md +0 -0
  176. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/pf-verifier.md +0 -0
  177. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-adversarial-critic.md +0 -0
  178. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-ai-infra-specialist.md +0 -0
  179. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-architecture-reviewer.md +0 -0
  180. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-aws-specialist.md +0 -0
  181. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-capacity-specialist.md +0 -0
  182. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-change-coordinator.md +0 -0
  183. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-crossplane-specialist.md +0 -0
  184. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-debate-referee.md +0 -0
  185. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-economy-reviewer.md +0 -0
  186. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-evidence-reviewer.md +0 -0
  187. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-federation-specialist.md +0 -0
  188. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-finops-specialist.md +0 -0
  189. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-fleet-coordinator.md +0 -0
  190. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-fleet-specialist.md +0 -0
  191. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-gitops-specialist.md +0 -0
  192. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-graph-specialist.md +0 -0
  193. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-iac-specialist.md +0 -0
  194. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-incident-coordinator.md +0 -0
  195. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-kubernetes-specialist.md +0 -0
  196. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-operations-safety-reviewer.md +0 -0
  197. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-optimization-coordinator.md +0 -0
  198. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-orchestrator.md +0 -0
  199. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-planner.md +0 -0
  200. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-policy-specialist.md +0 -0
  201. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-privacy-reviewer.md +0 -0
  202. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-product-coordinator.md +0 -0
  203. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-product-specialist.md +0 -0
  204. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-release-guardian.md +0 -0
  205. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-security-reviewer.md +0 -0
  206. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-security-specialist.md +0 -0
  207. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-sre-specialist.md +0 -0
  208. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-task-spec-reviewer.md +0 -0
  209. {platformforge-0.3.1 → platformforge-0.3.2}/.claude/agents/platform-verifier.md +0 -0
  210. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/pf-extractor.toml +0 -0
  211. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/pf-graph-builder.toml +0 -0
  212. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/pf-inventory.toml +0 -0
  213. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/pf-judge.toml +0 -0
  214. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/pf-reconciler.toml +0 -0
  215. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/pf-simulator.toml +0 -0
  216. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/pf-synthesizer.toml +0 -0
  217. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/pf-verifier.toml +0 -0
  218. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-adversarial-critic.toml +0 -0
  219. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-ai-infra-specialist.toml +0 -0
  220. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-architecture-reviewer.toml +0 -0
  221. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-aws-specialist.toml +0 -0
  222. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-capacity-specialist.toml +0 -0
  223. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-change-coordinator.toml +0 -0
  224. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-crossplane-specialist.toml +0 -0
  225. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-debate-referee.toml +0 -0
  226. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-economy-reviewer.toml +0 -0
  227. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-evidence-reviewer.toml +0 -0
  228. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-federation-specialist.toml +0 -0
  229. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-finops-specialist.toml +0 -0
  230. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-fleet-coordinator.toml +0 -0
  231. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-fleet-specialist.toml +0 -0
  232. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-gitops-specialist.toml +0 -0
  233. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-graph-specialist.toml +0 -0
  234. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-iac-specialist.toml +0 -0
  235. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-incident-coordinator.toml +0 -0
  236. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-kubernetes-specialist.toml +0 -0
  237. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-operations-safety-reviewer.toml +0 -0
  238. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-optimization-coordinator.toml +0 -0
  239. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-orchestrator.toml +0 -0
  240. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-planner.toml +0 -0
  241. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-policy-specialist.toml +0 -0
  242. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-privacy-reviewer.toml +0 -0
  243. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-product-coordinator.toml +0 -0
  244. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-product-specialist.toml +0 -0
  245. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-release-guardian.toml +0 -0
  246. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-security-reviewer.toml +0 -0
  247. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-security-specialist.toml +0 -0
  248. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-sre-specialist.toml +0 -0
  249. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-task-spec-reviewer.toml +0 -0
  250. {platformforge-0.3.1 → platformforge-0.3.2}/.codex/agents/platform-verifier.toml +0 -0
  251. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/pf-extractor.md +0 -0
  252. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/pf-graph-builder.md +0 -0
  253. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/pf-inventory.md +0 -0
  254. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/pf-judge.md +0 -0
  255. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/pf-reconciler.md +0 -0
  256. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/pf-simulator.md +0 -0
  257. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/pf-synthesizer.md +0 -0
  258. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/pf-verifier.md +0 -0
  259. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-adversarial-critic.md +0 -0
  260. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-ai-infra-specialist.md +0 -0
  261. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-architecture-reviewer.md +0 -0
  262. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-aws-specialist.md +0 -0
  263. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-capacity-specialist.md +0 -0
  264. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-change-coordinator.md +0 -0
  265. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-crossplane-specialist.md +0 -0
  266. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-debate-referee.md +0 -0
  267. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-economy-reviewer.md +0 -0
  268. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-evidence-reviewer.md +0 -0
  269. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-federation-specialist.md +0 -0
  270. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-finops-specialist.md +0 -0
  271. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-fleet-coordinator.md +0 -0
  272. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-fleet-specialist.md +0 -0
  273. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-gitops-specialist.md +0 -0
  274. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-graph-specialist.md +0 -0
  275. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-iac-specialist.md +0 -0
  276. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-incident-coordinator.md +0 -0
  277. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-kubernetes-specialist.md +0 -0
  278. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-operations-safety-reviewer.md +0 -0
  279. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-optimization-coordinator.md +0 -0
  280. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-orchestrator.md +0 -0
  281. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-planner.md +0 -0
  282. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-policy-specialist.md +0 -0
  283. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-privacy-reviewer.md +0 -0
  284. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-product-coordinator.md +0 -0
  285. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-product-specialist.md +0 -0
  286. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-release-guardian.md +0 -0
  287. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-security-reviewer.md +0 -0
  288. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-security-specialist.md +0 -0
  289. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-sre-specialist.md +0 -0
  290. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-task-spec-reviewer.md +0 -0
  291. {platformforge-0.3.1 → platformforge-0.3.2}/.devin/agents/platform-verifier.md +0 -0
  292. {platformforge-0.3.1 → platformforge-0.3.2}/.github/CODEOWNERS +0 -0
  293. {platformforge-0.3.1 → platformforge-0.3.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  294. {platformforge-0.3.1 → platformforge-0.3.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  295. {platformforge-0.3.1 → platformforge-0.3.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  296. {platformforge-0.3.1 → platformforge-0.3.2}/.github/workflows/ci.yml +0 -0
  297. {platformforge-0.3.1 → platformforge-0.3.2}/.github/workflows/publish-pypi.yml +0 -0
  298. {platformforge-0.3.1 → platformforge-0.3.2}/.gitignore +0 -0
  299. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/golden/argo-bad-rollout/case.yaml +0 -0
  300. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/golden/aws-dump/case.yaml +0 -0
  301. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/golden/container-unsigned/case.yaml +0 -0
  302. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/golden/gitops-drift/case.yaml +0 -0
  303. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/golden/k8s-bad-readiness/case.yaml +0 -0
  304. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/golden/k8s-single-replica/case.yaml +0 -0
  305. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/golden/network-policy-missing/case.yaml +0 -0
  306. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/golden/secret-exposure/case.yaml +0 -0
  307. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/golden/slo-burn/case.yaml +0 -0
  308. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/golden/terraform-public-bucket/case.yaml +0 -0
  309. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/holdout/cost-idle-workload/case.yaml +0 -0
  310. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/holdout/crossplane-platform/case.yaml +0 -0
  311. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/holdout/demo-platform/case.yaml +0 -0
  312. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/holdout/k8s-missing-limits/case.yaml +0 -0
  313. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/holdout/secret-prose-mixed/case.yaml +0 -0
  314. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/cases/holdout/terraform-iam-wildcard/case.yaml +0 -0
  315. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/ledgers/false-negatives.yaml +0 -0
  316. {platformforge-0.3.1 → platformforge-0.3.2}/.platformforge/ledgers/false-positives.yaml +0 -0
  317. {platformforge-0.3.1 → platformforge-0.3.2}/AGENTIC-OS.md +0 -0
  318. {platformforge-0.3.1 → platformforge-0.3.2}/AGENTS.md +0 -0
  319. {platformforge-0.3.1 → platformforge-0.3.2}/AI-PLATFORM.md +0 -0
  320. {platformforge-0.3.1 → platformforge-0.3.2}/APPROVALS.md +0 -0
  321. {platformforge-0.3.1 → platformforge-0.3.2}/ARCHITECTURE.md +0 -0
  322. {platformforge-0.3.1 → platformforge-0.3.2}/CAPABILITIES.md +0 -0
  323. {platformforge-0.3.1 → platformforge-0.3.2}/CAPACITY.md +0 -0
  324. {platformforge-0.3.1 → platformforge-0.3.2}/CLI-REFERENCE.md +0 -0
  325. {platformforge-0.3.1 → platformforge-0.3.2}/CLOUD.md +0 -0
  326. {platformforge-0.3.1 → platformforge-0.3.2}/CODE_OF_CONDUCT.md +0 -0
  327. {platformforge-0.3.1 → platformforge-0.3.2}/COLLECTORS.md +0 -0
  328. {platformforge-0.3.1 → platformforge-0.3.2}/COMPATIBILITY.md +0 -0
  329. {platformforge-0.3.1 → platformforge-0.3.2}/CONTRIBUTING.md +0 -0
  330. {platformforge-0.3.1 → platformforge-0.3.2}/CREDITS.md +0 -0
  331. {platformforge-0.3.1 → platformforge-0.3.2}/DEPRECATION.md +0 -0
  332. {platformforge-0.3.1 → platformforge-0.3.2}/DOMAIN-MAP.md +0 -0
  333. {platformforge-0.3.1 → platformforge-0.3.2}/ECONOMY.md +0 -0
  334. {platformforge-0.3.1 → platformforge-0.3.2}/ENTERPRISE.md +0 -0
  335. {platformforge-0.3.1 → platformforge-0.3.2}/EVALS.md +0 -0
  336. {platformforge-0.3.1 → platformforge-0.3.2}/EXECUTION.md +0 -0
  337. {platformforge-0.3.1 → platformforge-0.3.2}/FEDERATION.md +0 -0
  338. {platformforge-0.3.1 → platformforge-0.3.2}/FLEET.md +0 -0
  339. {platformforge-0.3.1 → platformforge-0.3.2}/GLOSSARY.md +0 -0
  340. {platformforge-0.3.1 → platformforge-0.3.2}/GOLDEN-PATH-ANALYTICS.md +0 -0
  341. {platformforge-0.3.1 → platformforge-0.3.2}/GOLDEN-PATHS.md +0 -0
  342. {platformforge-0.3.1 → platformforge-0.3.2}/GRAPHFY.md +0 -0
  343. {platformforge-0.3.1 → platformforge-0.3.2}/INCIDENTS.md +0 -0
  344. {platformforge-0.3.1 → platformforge-0.3.2}/KNOWLEDGE.md +0 -0
  345. {platformforge-0.3.1 → platformforge-0.3.2}/LICENSE +0 -0
  346. {platformforge-0.3.1 → platformforge-0.3.2}/LIVE.md +0 -0
  347. {platformforge-0.3.1 → platformforge-0.3.2}/MCP.md +0 -0
  348. {platformforge-0.3.1 → platformforge-0.3.2}/MULTI-CLUSTER.md +0 -0
  349. {platformforge-0.3.1 → platformforge-0.3.2}/OBSERVATION-MODEL.md +0 -0
  350. {platformforge-0.3.1 → platformforge-0.3.2}/OPS.md +0 -0
  351. {platformforge-0.3.1 → platformforge-0.3.2}/OPTIMIZATION.md +0 -0
  352. {platformforge-0.3.1 → platformforge-0.3.2}/PLATFORM-ANALYTICS.md +0 -0
  353. {platformforge-0.3.1 → platformforge-0.3.2}/PLATFORM-MEASUREMENT.md +0 -0
  354. {platformforge-0.3.1 → platformforge-0.3.2}/POLICY-INTELLIGENCE.md +0 -0
  355. {platformforge-0.3.1 → platformforge-0.3.2}/QUALITY-PER-TOKEN.md +0 -0
  356. {platformforge-0.3.1 → platformforge-0.3.2}/README.md +0 -0
  357. {platformforge-0.3.1 → platformforge-0.3.2}/README.pt-BR.md +0 -0
  358. {platformforge-0.3.1 → platformforge-0.3.2}/RECONCILIATION.md +0 -0
  359. {platformforge-0.3.1 → platformforge-0.3.2}/RESEARCH.md +0 -0
  360. {platformforge-0.3.1 → platformforge-0.3.2}/ROADMAP.md +0 -0
  361. {platformforge-0.3.1 → platformforge-0.3.2}/ROLLBACK.md +0 -0
  362. {platformforge-0.3.1 → platformforge-0.3.2}/RULES.md +0 -0
  363. {platformforge-0.3.1 → platformforge-0.3.2}/RUNBOOKS.md +0 -0
  364. {platformforge-0.3.1 → platformforge-0.3.2}/RUNTIME-TOPOLOGY.md +0 -0
  365. {platformforge-0.3.1 → platformforge-0.3.2}/SDD.md +0 -0
  366. {platformforge-0.3.1 → platformforge-0.3.2}/SECURITY.md +0 -0
  367. {platformforge-0.3.1 → platformforge-0.3.2}/SOURCES.md +0 -0
  368. {platformforge-0.3.1 → platformforge-0.3.2}/SUPPORT.md +0 -0
  369. {platformforge-0.3.1 → platformforge-0.3.2}/VERIFICATION.md +0 -0
  370. {platformforge-0.3.1 → platformforge-0.3.2}/agents/pf-extractor.md +0 -0
  371. {platformforge-0.3.1 → platformforge-0.3.2}/agents/pf-graph-builder.md +0 -0
  372. {platformforge-0.3.1 → platformforge-0.3.2}/agents/pf-inventory.md +0 -0
  373. {platformforge-0.3.1 → platformforge-0.3.2}/agents/pf-judge.md +0 -0
  374. {platformforge-0.3.1 → platformforge-0.3.2}/agents/pf-reconciler.md +0 -0
  375. {platformforge-0.3.1 → platformforge-0.3.2}/agents/pf-simulator.md +0 -0
  376. {platformforge-0.3.1 → platformforge-0.3.2}/agents/pf-synthesizer.md +0 -0
  377. {platformforge-0.3.1 → platformforge-0.3.2}/agents/pf-verifier.md +0 -0
  378. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-adversarial-critic.md +0 -0
  379. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-ai-infra-specialist.md +0 -0
  380. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-architecture-reviewer.md +0 -0
  381. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-aws-specialist.md +0 -0
  382. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-capacity-specialist.md +0 -0
  383. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-change-coordinator.md +0 -0
  384. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-crossplane-specialist.md +0 -0
  385. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-debate-referee.md +0 -0
  386. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-economy-reviewer.md +0 -0
  387. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-evidence-reviewer.md +0 -0
  388. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-federation-specialist.md +0 -0
  389. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-finops-specialist.md +0 -0
  390. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-fleet-coordinator.md +0 -0
  391. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-fleet-specialist.md +0 -0
  392. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-gitops-specialist.md +0 -0
  393. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-graph-specialist.md +0 -0
  394. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-iac-specialist.md +0 -0
  395. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-incident-coordinator.md +0 -0
  396. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-kubernetes-specialist.md +0 -0
  397. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-operations-safety-reviewer.md +0 -0
  398. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-optimization-coordinator.md +0 -0
  399. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-orchestrator.md +0 -0
  400. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-planner.md +0 -0
  401. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-policy-specialist.md +0 -0
  402. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-privacy-reviewer.md +0 -0
  403. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-product-coordinator.md +0 -0
  404. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-product-specialist.md +0 -0
  405. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-release-guardian.md +0 -0
  406. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-security-reviewer.md +0 -0
  407. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-security-specialist.md +0 -0
  408. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-sre-specialist.md +0 -0
  409. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-task-spec-reviewer.md +0 -0
  410. {platformforge-0.3.1 → platformforge-0.3.2}/agents/platform-verifier.md +0 -0
  411. {platformforge-0.3.1 → platformforge-0.3.2}/config.example.yaml +0 -0
  412. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/agent-handoff.schema.json +0 -0
  413. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/agent-run.schema.json +0 -0
  414. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/agent-spec.schema.json +0 -0
  415. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/capability.schema.json +0 -0
  416. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/change-event.schema.json +0 -0
  417. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/change-intent.schema.json +0 -0
  418. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/change-plan.schema.json +0 -0
  419. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/collector-receipt.schema.json +0 -0
  420. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/context-pack.schema.json +0 -0
  421. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/debate.schema.json +0 -0
  422. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/distribution-manifest-v1.schema.json +0 -0
  423. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/drift-event.schema.json +0 -0
  424. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/fact.schema.json +0 -0
  425. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/finding.schema.json +0 -0
  426. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/graph-v2.schema.json +0 -0
  427. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/graph.schema.json +0 -0
  428. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/install-receipt-v1.schema.json +0 -0
  429. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/observation.schema.json +0 -0
  430. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/receipt.schema.json +0 -0
  431. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/recommendation.schema.json +0 -0
  432. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/refusal.schema.json +0 -0
  433. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/slo-contract.schema.json +0 -0
  434. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/task-spec.schema.json +0 -0
  435. {platformforge-0.3.1 → platformforge-0.3.2}/contracts/workspace-manifest-v1.schema.json +0 -0
  436. {platformforge-0.3.1 → platformforge-0.3.2}/docs/CLI-SURFACE.md +0 -0
  437. {platformforge-0.3.1 → platformforge-0.3.2}/docs/INDEX.md +0 -0
  438. {platformforge-0.3.1 → platformforge-0.3.2}/docs/README.md +0 -0
  439. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0001-deterministic-core-first.md +0 -0
  440. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0002-graphfy-as-spine.md +0 -0
  441. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0003-economy-by-architecture.md +0 -0
  442. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0004-planned-provenance.md +0 -0
  443. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0005-context-redaction.md +0 -0
  444. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0006-rule-provenance.md +0 -0
  445. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0007-version-unresolved-semantics.md +0 -0
  446. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0008-quality-per-token.md +0 -0
  447. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0009-cloud-common-model.md +0 -0
  448. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0010-golden-path-model.md +0 -0
  449. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0011-observation-model.md +0 -0
  450. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0012-collector-boundary.md +0 -0
  451. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0013-absence-semantics.md +0 -0
  452. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0014-freshness-coverage.md +0 -0
  453. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0015-temporal-graphfy.md +0 -0
  454. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0016-identity-resolution.md +0 -0
  455. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0017-reconciliation-classes.md +0 -0
  456. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0018-runtime-edge-semantics.md +0 -0
  457. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0019-credential-boundary.md +0 -0
  458. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0020-provider-call-economy.md +0 -0
  459. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0021-no-arbitrary-shell.md +0 -0
  460. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0022-source-of-truth-first.md +0 -0
  461. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0023-autonomy-levels.md +0 -0
  462. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0024-risk-classes.md +0 -0
  463. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0025-approval-hash-binding.md +0 -0
  464. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0026-operation-state-machine.md +0 -0
  465. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0027-execution-adapter-boundary.md +0 -0
  466. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0028-verification-not-command-success.md +0 -0
  467. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0029-rollback-semantics.md +0 -0
  468. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0030-policy-precedence.md +0 -0
  469. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0031-fleet-canonical-model.md +0 -0
  470. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0032-org-graphfy-layers.md +0 -0
  471. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0033-history-boundaries.md +0 -0
  472. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0034-deterministic-baseline-first.md +0 -0
  473. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0035-platform-metric-provenance.md +0 -0
  474. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0036-optimization-changeintent.md +0 -0
  475. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0037-federation-no-credentials.md +0 -0
  476. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0038-no-individual-scoring.md +0 -0
  477. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0039-ai-platform-boundary.md +0 -0
  478. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0040-pluggable-analytics-storage.md +0 -0
  479. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0041-canonical-agent-roster.md +0 -0
  480. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0042-agents-vs-engines.md +0 -0
  481. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0043-coordinator-dispatch-boundary.md +0 -0
  482. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0044-verifier-independence.md +0 -0
  483. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0045-agent-budget-model.md +0 -0
  484. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0046-agent-context-economy.md +0 -0
  485. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0047-debate-referee-contract.md +0 -0
  486. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0048-host-mirror-generation.md +0 -0
  487. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0049-zero-subagent-fallback.md +0 -0
  488. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0050-agent-operation-boundary.md +0 -0
  489. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0051-fleet-scale-context-policy.md +0 -0
  490. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0052-architecture-freeze-policy.md +0 -0
  491. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0053-economy-control-plane.md +0 -0
  492. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0054-multilayer-cache-invalidation.md +0 -0
  493. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0055-context-gateway-as-the-single-context-entry-point.md +0 -0
  494. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0056-budgetenvelope-dimensions-and-hard-soft-limits.md +0 -0
  495. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0057-checkpoint-and-resume-carry-spend.md +0 -0
  496. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0058-observed-vs-estimated-accounting.md +0 -0
  497. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0059-declared-provider-pricing.md +0 -0
  498. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0060-selective-verification,-not-test-skipping.md +0 -0
  499. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0061-agent-fanout-economy.md +0 -0
  500. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0062-champion-challenger-routing.md +0 -0
  501. {platformforge-0.3.1 → platformforge-0.3.2}/docs/adr/0063-fleet-context-boundary.md +0 -0
  502. {platformforge-0.3.1 → platformforge-0.3.2}/docs/agents/AGENT_ARCHITECTURE.md +0 -0
  503. {platformforge-0.3.1 → platformforge-0.3.2}/docs/agents/AGENT_OUTPUT_CONTRACT.md +0 -0
  504. {platformforge-0.3.1 → platformforge-0.3.2}/docs/agents/AGENT_PROTOCOL.md +0 -0
  505. {platformforge-0.3.1 → platformforge-0.3.2}/docs/agents/AGENT_RISK_MATRIX.md +0 -0
  506. {platformforge-0.3.1 → platformforge-0.3.2}/docs/agents/AGENT_SKILL_MATRIX.md +0 -0
  507. {platformforge-0.3.1 → platformforge-0.3.2}/docs/agents/AGENT_TOOL_MATRIX.md +0 -0
  508. {platformforge-0.3.1 → platformforge-0.3.2}/docs/agents/DEBATE.md +0 -0
  509. {platformforge-0.3.1 → platformforge-0.3.2}/docs/agents/ECONOMY.md +0 -0
  510. {platformforge-0.3.1 → platformforge-0.3.2}/docs/agents/HOST_PARITY.md +0 -0
  511. {platformforge-0.3.1 → platformforge-0.3.2}/docs/agents/ROUTING.md +0 -0
  512. {platformforge-0.3.1 → platformforge-0.3.2}/docs/agents/VERIFICATION.md +0 -0
  513. {platformforge-0.3.1 → platformforge-0.3.2}/docs/assets/logo.png +0 -0
  514. {platformforge-0.3.1 → platformforge-0.3.2}/docs/audits/FORGE_CONTEXT_BASELINE.md +0 -0
  515. {platformforge-0.3.1 → platformforge-0.3.2}/docs/audits/FORGE_CONTEXT_FINAL_HOMOLOGATION.md +0 -0
  516. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle2/ARCHITECTURAL-REVIEW.md +0 -0
  517. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle2/FINAL-ECONOMY.md +0 -0
  518. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle2/FINAL-MATRIX.md +0 -0
  519. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle2/FINAL-QUALITY.md +0 -0
  520. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle2/FINAL-REPORT.md +0 -0
  521. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle2/FINAL-SECURITY.md +0 -0
  522. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle2/NORTH-STAR.md +0 -0
  523. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle2.1/BASELINE.md +0 -0
  524. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle2.1/CI-VALIDATION.md +0 -0
  525. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle2.1/FINAL-MATRIX.md +0 -0
  526. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle2.1/VALIDATION-RECEIPT.json +0 -0
  527. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle3/BASELINE.md +0 -0
  528. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle3/FINAL-REPORT.md +0 -0
  529. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle3/PROPOSAL.md +0 -0
  530. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle3/RESEARCH-LEDGER.md +0 -0
  531. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle4/BASELINE.md +0 -0
  532. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle4/FINAL-REPORT.md +0 -0
  533. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle4/RESEARCH-LEDGER.md +0 -0
  534. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle4.1/BASELINE.md +0 -0
  535. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle4.1/FINAL-MATRIX.md +0 -0
  536. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle4.1/FINAL-REPORT.md +0 -0
  537. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle4.1/VALIDATION-RECEIPT.md +0 -0
  538. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5/BASELINE.md +0 -0
  539. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5/ECONOMY-REPORT.md +0 -0
  540. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5/ENTERPRISE-REVIEW.md +0 -0
  541. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5/FINAL-MATRIX.md +0 -0
  542. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5/FINAL-REPORT.md +0 -0
  543. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5/OPTIMIZATION-REPORT.md +0 -0
  544. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5/RESEARCH-LEDGER.md +0 -0
  545. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5/SCALE-BENCHMARKS.md +0 -0
  546. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5/SECURITY-PRIVACY-REVIEW.md +0 -0
  547. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5/VALIDATION-RECEIPT.json +0 -0
  548. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5.1/AGENT-BENCHMARKS.md +0 -0
  549. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5.1/AGENT-MATRIX.md +0 -0
  550. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5.1/AGENTIC-RUNTIME-REPORT.md +0 -0
  551. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5.1/BASELINE.md +0 -0
  552. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5.1/FINAL-MATRIX.md +0 -0
  553. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5.1/FINAL-REPORT.md +0 -0
  554. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5.1/FREEZE-REVIEW.md +0 -0
  555. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5.1/SCALE-BENCHMARKS.md +0 -0
  556. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5.1/SOAK-REPORT.md +0 -0
  557. {platformforge-0.3.1 → platformforge-0.3.2}/docs/cycle5.1/VALIDATION-RECEIPT.json +0 -0
  558. {platformforge-0.3.1 → platformforge-0.3.2}/docs/discovery/forge-audit.md +0 -0
  559. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy/AGENTIC-ECONOMY.md +0 -0
  560. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy/ARCHITECTURE.md +0 -0
  561. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy/BUDGETS.md +0 -0
  562. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy/CACHE.md +0 -0
  563. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy/CHECKPOINT-RESUME.md +0 -0
  564. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy/CONTEXT-GATEWAY.md +0 -0
  565. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy/PRICING.md +0 -0
  566. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy/RECONCILIATION.md +0 -0
  567. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy/ROUTING.md +0 -0
  568. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy/VERIFICATION-ECONOMY.md +0 -0
  569. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy-parity/AGENTIC-ECONOMY-REPORT.md +0 -0
  570. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy-parity/BASELINE.md +0 -0
  571. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy-parity/BENCHMARKS.json +0 -0
  572. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy-parity/CACHE-REPORT.md +0 -0
  573. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy-parity/ECONOMY-BENCHMARKS.md +0 -0
  574. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy-parity/FINAL-MATRIX.md +0 -0
  575. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy-parity/FINAL-REPORT.md +0 -0
  576. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy-parity/GAP-MATRIX.md +0 -0
  577. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy-parity/POLISH-BASELINE.md +0 -0
  578. {platformforge-0.3.1 → platformforge-0.3.2}/docs/economy.md +0 -0
  579. {platformforge-0.3.1 → platformforge-0.3.2}/docs/engineering-excellence/fitness-and-gates.md +0 -0
  580. {platformforge-0.3.1 → platformforge-0.3.2}/docs/evals-taxonomy.md +0 -0
  581. {platformforge-0.3.1 → platformforge-0.3.2}/docs/experience/accessibility.md +0 -0
  582. {platformforge-0.3.1 → platformforge-0.3.2}/docs/experience/automation-mode.md +0 -0
  583. {platformforge-0.3.1 → platformforge-0.3.2}/docs/experience/fase4-report.md +0 -0
  584. {platformforge-0.3.1 → platformforge-0.3.2}/docs/experience/installation-wizard.md +0 -0
  585. {platformforge-0.3.1 → platformforge-0.3.2}/docs/experience/interactive-cli.md +0 -0
  586. {platformforge-0.3.1 → platformforge-0.3.2}/docs/experience/themes.md +0 -0
  587. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/AGENTIC-RECEIPT.json +0 -0
  588. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/ARCHITECTURE-FREEZE-REVIEW.md +0 -0
  589. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/DOGFOOD.md +0 -0
  590. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/FINAL-MATRIX.md +0 -0
  591. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/FINAL-REPORT.md +0 -0
  592. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/FREEZE-MANIFEST.md +0 -0
  593. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/KNOWLEDGE-REVIEW.md +0 -0
  594. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/LICENSE-INVENTORY.txt +0 -0
  595. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/LIFECYCLE.md +0 -0
  596. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/PERFORMANCE-BASELINE.json +0 -0
  597. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/PERFORMANCE-RECEIPT.json +0 -0
  598. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/README.md +0 -0
  599. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/REAL-WORLD-ISSUES.md +0 -0
  600. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/RELEASE-HARDENING.md +0 -0
  601. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/SBOM.cdx.json +0 -0
  602. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/SECURITY-REVIEW.md +0 -0
  603. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/SOAK-RECEIPT.json +0 -0
  604. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/UNFREEZE-RFC.md +0 -0
  605. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/VALIDATION-RECEIPT.json +0 -0
  606. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/dogfood/api-collect.json +0 -0
  607. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/dogfood/api-inspect.json +0 -0
  608. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/dogfood/context-audit.json +0 -0
  609. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/dogfood/route-audit.json +0 -0
  610. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/dogfood/self-analyze-iac.json +0 -0
  611. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/dogfood/self-analyze-k8s.json +0 -0
  612. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/dogfood/self-analyze-secrets.json +0 -0
  613. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/dogfood/self-collect.json +0 -0
  614. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/dogfood/self-graph.json +0 -0
  615. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/dogfood/self-inspect.json +0 -0
  616. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/dogfood/spark-collect.json +0 -0
  617. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/dogfood/spark-inspect.json +0 -0
  618. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/exceptions/FE-000-template.json +0 -0
  619. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/exceptions/FE-001.json +0 -0
  620. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/exceptions/FE-002.json +0 -0
  621. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/exceptions/FE-003.json +0 -0
  622. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/exceptions/FE-004.json +0 -0
  623. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/rfc/RFC-ECONOMY-UNFREEZE.md +0 -0
  624. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/rfc/RFC-PORTABLE-DISTRIBUTION.md +0 -0
  625. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/snapshots/agents.json +0 -0
  626. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/snapshots/capabilities.json +0 -0
  627. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/snapshots/cli.json +0 -0
  628. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/snapshots/knowledge.json +0 -0
  629. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/snapshots/mcp.json +0 -0
  630. {platformforge-0.3.1 → platformforge-0.3.2}/docs/freeze/snapshots/schemas.json +0 -0
  631. {platformforge-0.3.1 → platformforge-0.3.2}/docs/install/DISTRIBUTION_PARITY.md +0 -0
  632. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/account-installation.md +0 -0
  633. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/claude-code.md +0 -0
  634. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/codex-cli.md +0 -0
  635. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/copilot-cli.md +0 -0
  636. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/devin-cli.md +0 -0
  637. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/global-installation.md +0 -0
  638. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/mcp.md +0 -0
  639. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/portable-installation.md +0 -0
  640. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/quickstart.en.md +0 -0
  641. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/quickstart.md +0 -0
  642. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/troubleshooting.en.md +0 -0
  643. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/troubleshooting.md +0 -0
  644. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/uninstall.md +0 -0
  645. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/update-and-repair.md +0 -0
  646. {platformforge-0.3.1 → platformforge-0.3.2}/docs/installation/workspace-installation.md +0 -0
  647. {platformforge-0.3.1 → platformforge-0.3.2}/docs/knowledge-program/broken-link-report.md +0 -0
  648. {platformforge-0.3.1 → platformforge-0.3.2}/docs/knowledge-program/classification-report.md +0 -0
  649. {platformforge-0.3.1 → platformforge-0.3.2}/docs/knowledge-program/command-drift-report.md +0 -0
  650. {platformforge-0.3.1 → platformforge-0.3.2}/docs/knowledge-program/context-map.jsonl +0 -0
  651. {platformforge-0.3.1 → platformforge-0.3.2}/docs/knowledge-program/documentation-quality-report.md +0 -0
  652. {platformforge-0.3.1 → platformforge-0.3.2}/docs/knowledge-program/duplicate-content-report.md +0 -0
  653. {platformforge-0.3.1 → platformforge-0.3.2}/docs/knowledge-program/final-report.md +0 -0
  654. {platformforge-0.3.1 → platformforge-0.3.2}/docs/knowledge-program/inventory.jsonl +0 -0
  655. {platformforge-0.3.1 → platformforge-0.3.2}/docs/knowledge-program/obsolete-document-report.md +0 -0
  656. {platformforge-0.3.1 → platformforge-0.3.2}/docs/knowledge-program/pipeline.json +0 -0
  657. {platformforge-0.3.1 → platformforge-0.3.2}/docs/knowledge-program/semantic-review-ledger.jsonl +0 -0
  658. {platformforge-0.3.1 → platformforge-0.3.2}/docs/knowledge-program/tutorial-coverage-report.md +0 -0
  659. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/README.md +0 -0
  660. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/cicd.md +0 -0
  661. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/custos.md +0 -0
  662. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/graph-deps.md +0 -0
  663. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/graph-studio.md +0 -0
  664. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/hosts.md +0 -0
  665. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/impacto-blast.md +0 -0
  666. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/inspect-repo.md +0 -0
  667. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/judge-policy.md +0 -0
  668. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/kubernetes.md +0 -0
  669. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/seguranca.md +0 -0
  670. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/sre.md +0 -0
  671. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/terraform.md +0 -0
  672. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/usar-agents.md +0 -0
  673. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/usar-skills.md +0 -0
  674. {platformforge-0.3.1 → platformforge-0.3.2}/docs/learn/recipes/verificar-mcp.md +0 -0
  675. {platformforge-0.3.1 → platformforge-0.3.2}/docs/portable/ARCHITECTURE.md +0 -0
  676. {platformforge-0.3.1 → platformforge-0.3.2}/docs/portable/FINAL-MATRIX.md +0 -0
  677. {platformforge-0.3.1 → platformforge-0.3.2}/docs/portable/FINAL-REPORT.md +0 -0
  678. {platformforge-0.3.1 → platformforge-0.3.2}/docs/portable/INSTALL.md +0 -0
  679. {platformforge-0.3.1 → platformforge-0.3.2}/docs/portable/OFFLINE.md +0 -0
  680. {platformforge-0.3.1 → platformforge-0.3.2}/docs/portable/WORKSPACES.md +0 -0
  681. {platformforge-0.3.1 → platformforge-0.3.2}/docs/reference/agents.md +0 -0
  682. {platformforge-0.3.1 → platformforge-0.3.2}/docs/reference/command-rationale.json +0 -0
  683. {platformforge-0.3.1 → platformforge-0.3.2}/docs/reference/commands.generated.json +0 -0
  684. {platformforge-0.3.1 → platformforge-0.3.2}/docs/reference/commands.md +0 -0
  685. {platformforge-0.3.1 → platformforge-0.3.2}/docs/reference/divergence.generated.json +0 -0
  686. {platformforge-0.3.1 → platformforge-0.3.2}/docs/reference/skills.md +0 -0
  687. {platformforge-0.3.1 → platformforge-0.3.2}/docs/releasing/pypi-patch-plan.md +0 -0
  688. {platformforge-0.3.1 → platformforge-0.3.2}/docs/reports/experience-3.md +0 -0
  689. {platformforge-0.3.1 → platformforge-0.3.2}/docs/tutorials/first-run.md +0 -0
  690. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/agent-budget-exhaustion/case.yaml +0 -0
  691. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/agent-conflicting-specialists/case.yaml +0 -0
  692. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/agent-fleet-optimization/case.yaml +0 -0
  693. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/agent-host-no-subagents/case.yaml +0 -0
  694. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/agent-incident-multi/case.yaml +0 -0
  695. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/agent-missing-evidence/case.yaml +0 -0
  696. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/agent-multi-domain-audit/case.yaml +0 -0
  697. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/agent-production-change/case.yaml +0 -0
  698. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/agent-security-mandatory/case.yaml +0 -0
  699. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/agent-simple-iac/case.yaml +0 -0
  700. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/approval-integrity-seal/case.yaml +0 -0
  701. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/capacity-hot/case.yaml +0 -0
  702. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/capacity-hot/fixture/capacity.json +0 -0
  703. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/catalog-noowner/case.yaml +0 -0
  704. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/catalog-noowner/fixture/catalog-info.yaml +0 -0
  705. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/contract-fact/case.yaml +0 -0
  706. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/contract-fact/fixture/doc.json +0 -0
  707. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/cosign-unverified/case.yaml +0 -0
  708. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/cosign-unverified/fixture/sig.json +0 -0
  709. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/expected-delta-refusal/case.yaml +0 -0
  710. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/finops-noattr/case.yaml +0 -0
  711. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/finops-noattr/fixture/costs.json +0 -0
  712. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-absent-allocation-unknown/case.yaml +0 -0
  713. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-centrality-not-criticality/case.yaml +0 -0
  714. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-correlation-not-causality/case.yaml +0 -0
  715. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-dx-no-person-metrics/case.yaml +0 -0
  716. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-federation-restricted-denied/case.yaml +0 -0
  717. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-federation-secret-denied/case.yaml +0 -0
  718. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-history-window-deterministic/case.yaml +0 -0
  719. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-low-util-not-deletable/case.yaml +0 -0
  720. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-member-key-deterministic/case.yaml +0 -0
  721. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-missing-denominator/case.yaml +0 -0
  722. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-partial-coverage-visible/case.yaml +0 -0
  723. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-plan-changeintent-only/case.yaml +0 -0
  724. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-report-all-cited/case.yaml +0 -0
  725. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-small-sample-confidence/case.yaml +0 -0
  726. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/fleet-inv-uncertain-optimization-suppressed/case.yaml +0 -0
  727. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/gha-dangerous/case.yaml +0 -0
  728. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/gha-dangerous/fixture/.github/workflows/ci.yaml +0 -0
  729. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/gitops-v2/case.yaml +0 -0
  730. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/gitops-v2/fixture/argo.yaml +0 -0
  731. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/graph-k8s-blast/case.yaml +0 -0
  732. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/graph-k8s-blast/fixture/deploy.yaml +0 -0
  733. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/iac-module-nopin/case.yaml +0 -0
  734. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/iac-module-nopin/fixture/main.tf +0 -0
  735. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/iac-plan-replace/case.yaml +0 -0
  736. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/iac-plan-replace/fixture/plan.json +0 -0
  737. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/iac-sg-open/case.yaml +0 -0
  738. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/iac-sg-open/fixture/main.tf +0 -0
  739. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/iam-oidc/case.yaml +0 -0
  740. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/iam-oidc/fixture/policy.json +0 -0
  741. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/iam-wildcard-positive/case.yaml +0 -0
  742. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/iam-wildcard-positive/fixture/policy.json +0 -0
  743. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-bad-actor/case.yaml +0 -0
  744. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-bad-actor/fixture/app.yaml +0 -0
  745. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-beta-api/case.yaml +0 -0
  746. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-beta-api/fixture/cr.yaml +0 -0
  747. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-dep-api-boundary/case.yaml +0 -0
  748. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-dep-api-boundary/fixture/app.yaml +0 -0
  749. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-dep-api-clean/case.yaml +0 -0
  750. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-dep-api-clean/fixture/app.yaml +0 -0
  751. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-dep-api-unknown/case.yaml +0 -0
  752. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-dep-api-unknown/fixture/app.yaml +0 -0
  753. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-dep-api-v120/case.yaml +0 -0
  754. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-dep-api-v120/fixture/app.yaml +0 -0
  755. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-dep-api-v129/case.yaml +0 -0
  756. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-dep-api-v129/fixture/app.yaml +0 -0
  757. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-hpa-noreq/case.yaml +0 -0
  758. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-hpa-noreq/fixture/app.yaml +0 -0
  759. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-limits-boundary/case.yaml +0 -0
  760. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-limits-boundary/fixture/app.yaml +0 -0
  761. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-limits-negative/case.yaml +0 -0
  762. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-limits-negative/fixture/deploy.yaml +0 -0
  763. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-limits-positive/case.yaml +0 -0
  764. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-limits-positive/fixture/deploy.yaml +0 -0
  765. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-nopdb/case.yaml +0 -0
  766. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/k8s-nopdb/fixture/app.yaml +0 -0
  767. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/knowledge-registry/case.yaml +0 -0
  768. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/kyverno-dep/case.yaml +0 -0
  769. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/kyverno-dep/fixture/pol.yaml +0 -0
  770. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/kyverno-legacy/case.yaml +0 -0
  771. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/kyverno-legacy/fixture/pol.yaml +0 -0
  772. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-aws-collect/case.yaml +0 -0
  773. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-aws-collect/fixture/aws/ec2_describe-vpcs.json +0 -0
  774. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-aws-collect/fixture/aws/iam_list-users.denied.txt +0 -0
  775. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-aws-collect/fixture/aws/sts_get-caller-identity.json +0 -0
  776. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-drift/case.yaml +0 -0
  777. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-drift/fixture/after.json +0 -0
  778. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-drift/fixture/before.json +0 -0
  779. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-incident/case.yaml +0 -0
  780. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-incident/fixture/changes.json +0 -0
  781. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-incident/fixture/incident.json +0 -0
  782. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-k8s-collect/case.yaml +0 -0
  783. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-k8s-collect/fixture/kubectl/get_configmaps.denied.txt +0 -0
  784. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-k8s-collect/fixture/kubectl/get_deployments.apps.json +0 -0
  785. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-k8s-collect/fixture/kubectl/get_pods.json +0 -0
  786. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-k8s-collect/fixture/kubectl/get_secrets.json +0 -0
  787. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-multicluster/case.yaml +0 -0
  788. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-multicluster/fixture/clusters.json +0 -0
  789. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-plan/case.yaml +0 -0
  790. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-plan/fixture/drift.json +0 -0
  791. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-reconcile/case.yaml +0 -0
  792. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-reconcile/fixture/desired.json +0 -0
  793. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-reconcile/fixture/observed.json +0 -0
  794. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-secrets-boundary/case.yaml +0 -0
  795. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-secrets-boundary/fixture/envelope.json +0 -0
  796. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-temporal-graph/case.yaml +0 -0
  797. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/live-temporal-graph/fixture/graph.json +0 -0
  798. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/ops-approval/case.yaml +0 -0
  799. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/ops-convergence/case.yaml +0 -0
  800. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/ops-execution-safety/case.yaml +0 -0
  801. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/ops-intent/case.yaml +0 -0
  802. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/ops-planning/case.yaml +0 -0
  803. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/ops-policy/case.yaml +0 -0
  804. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/ops-rollback/case.yaml +0 -0
  805. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/ops-verification/case.yaml +0 -0
  806. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/rollback-argocd-revision/case.yaml +0 -0
  807. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/rollback-blind-inverse/case.yaml +0 -0
  808. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/rollback-git-commit/case.yaml +0 -0
  809. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/rollback-impossible/case.yaml +0 -0
  810. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/rollback-k8s-annotation-restore/case.yaml +0 -0
  811. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/rollback-k8s-scale/case.yaml +0 -0
  812. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/rollback-material-tamper/case.yaml +0 -0
  813. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/rollback-terraform-replan/case.yaml +0 -0
  814. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/rollback-unknown/case.yaml +0 -0
  815. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/routing-specialist/case.yaml +0 -0
  816. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/rtk-roundtrip/case.yaml +0 -0
  817. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/rtk-roundtrip/fixture/verbose.txt +0 -0
  818. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/sbom-vuln/case.yaml +0 -0
  819. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/sbom-vuln/fixture/sbom.json +0 -0
  820. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/secret-prose-mixed/fixture/app.env +0 -0
  821. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/secret-prose-mixed/fixture/policy-notes.md +0 -0
  822. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/secrets-noleak/case.yaml +0 -0
  823. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/secrets-noleak/fixture/app.env +0 -0
  824. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/slo-fastburn/case.yaml +0 -0
  825. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/slo-fastburn/fixture/events.yaml +0 -0
  826. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/slo-fastburn/fixture/slo.yaml +0 -0
  827. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/slo-noinput/case.yaml +0 -0
  828. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/slo-noinput/fixture/events.yaml +0 -0
  829. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/slo-noinput/fixture/slo.yaml +0 -0
  830. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/sot-conflict/case.yaml +0 -0
  831. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/token-budget/case.yaml +0 -0
  832. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/token-budget/fixture/big.py +0 -0
  833. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/xr-delete/case.yaml +0 -0
  834. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/xr-delete/fixture/xr.yaml +0 -0
  835. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/xr-graph-chain/case.yaml +0 -0
  836. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/xr-graph-chain/fixture/xrd.yaml +0 -0
  837. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/xr-negative-crd/case.yaml +0 -0
  838. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/xr-negative-crd/fixture/widget.yaml +0 -0
  839. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/xr-upbound-mr/case.yaml +0 -0
  840. {platformforge-0.3.1 → platformforge-0.3.2}/evals/cases/xr-upbound-mr/fixture/bucket.yaml +0 -0
  841. {platformforge-0.3.1 → platformforge-0.3.2}/evals/qpt-bench/change-review/case.yaml +0 -0
  842. {platformforge-0.3.1 → platformforge-0.3.2}/evals/qpt-bench/change-review/fixture/plan.json +0 -0
  843. {platformforge-0.3.1 → platformforge-0.3.2}/evals/qpt-bench/gha-security/case.yaml +0 -0
  844. {platformforge-0.3.1 → platformforge-0.3.2}/evals/qpt-bench/gha-security/fixture/ci.yml +0 -0
  845. {platformforge-0.3.1 → platformforge-0.3.2}/evals/qpt-bench/iam-investigate/case.yaml +0 -0
  846. {platformforge-0.3.1 → platformforge-0.3.2}/evals/qpt-bench/iam-investigate/fixture/policy.json +0 -0
  847. {platformforge-0.3.1 → platformforge-0.3.2}/evals/qpt-bench/incident-analysis/case.yaml +0 -0
  848. {platformforge-0.3.1 → platformforge-0.3.2}/evals/qpt-bench/incident-analysis/fixture/query.json +0 -0
  849. {platformforge-0.3.1 → platformforge-0.3.2}/evals/qpt-bench/incident-analysis/fixture/rules.yaml +0 -0
  850. {platformforge-0.3.1 → platformforge-0.3.2}/evals/qpt-bench/k8s-review/case.yaml +0 -0
  851. {platformforge-0.3.1 → platformforge-0.3.2}/evals/qpt-bench/k8s-review/fixture/deploy.yaml +0 -0
  852. {platformforge-0.3.1 → platformforge-0.3.2}/evals/qpt-bench/tf-security/case.yaml +0 -0
  853. {platformforge-0.3.1 → platformforge-0.3.2}/evals/qpt-bench/tf-security/fixture/main.tf +0 -0
  854. {platformforge-0.3.1 → platformforge-0.3.2}/factory/specs/archive/2026/cyc9-07-scenarios-platform.md +0 -0
  855. {platformforge-0.3.1 → platformforge-0.3.2}/forge.json +0 -0
  856. {platformforge-0.3.1 → platformforge-0.3.2}/install.sh +0 -0
  857. {platformforge-0.3.1 → platformforge-0.3.2}/install.windows.sh +0 -0
  858. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/aws/eks.yaml +0 -0
  859. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/aws/iam.yaml +0 -0
  860. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/aws/network-exposure.yaml +0 -0
  861. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/aws/organizations.yaml +0 -0
  862. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/crossplane/composition-providers.yaml +0 -0
  863. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/crossplane/managed-resources.yaml +0 -0
  864. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/crossplane/v1-v2.yaml +0 -0
  865. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/kubernetes/api-deprecations.yaml +0 -0
  866. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/kubernetes/autoscaling-rbac.yaml +0 -0
  867. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/kubernetes/gateway-api.yaml +0 -0
  868. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/kubernetes/pod-security.yaml +0 -0
  869. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/sources.yaml +0 -0
  870. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/terraform/lifecycle.yaml +0 -0
  871. {platformforge-0.3.1 → platformforge-0.3.2}/knowledge/terraform/plan-semantics.yaml +0 -0
  872. {platformforge-0.3.1 → platformforge-0.3.2}/lab/chaos-pod-kill/chaos.yaml +0 -0
  873. {platformforge-0.3.1 → platformforge-0.3.2}/lab/chaos-pod-kill/facts.json +0 -0
  874. {platformforge-0.3.1 → platformforge-0.3.2}/lab/fleets/acme/capacity.yaml +0 -0
  875. {platformforge-0.3.1 → platformforge-0.3.2}/lab/fleets/acme/costs.yaml +0 -0
  876. {platformforge-0.3.1 → platformforge-0.3.2}/lab/fleets/acme/events.yaml +0 -0
  877. {platformforge-0.3.1 → platformforge-0.3.2}/lab/fleets/acme/fleet.yaml +0 -0
  878. {platformforge-0.3.1 → platformforge-0.3.2}/lab/fleets/acme/graph.yaml +0 -0
  879. {platformforge-0.3.1 → platformforge-0.3.2}/lab/fleets/acme/policies.yaml +0 -0
  880. {platformforge-0.3.1 → platformforge-0.3.2}/lab/fleets/acme/requests.yaml +0 -0
  881. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/argo-bad-rollout/expected.yaml +0 -0
  882. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/argo-bad-rollout/fixture/app.yaml +0 -0
  883. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/aws-dump/expected.yaml +0 -0
  884. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/aws-dump/fixture/compute.json +0 -0
  885. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/aws-dump/fixture/iam.json +0 -0
  886. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/aws-dump/fixture/network.json +0 -0
  887. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/aws-dump/fixture/org.json +0 -0
  888. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/aws-dump/fixture/storage.json +0 -0
  889. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/container-unsigned/expected.yaml +0 -0
  890. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/container-unsigned/fixture/supply.json +0 -0
  891. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/cost-idle-workload/expected.yaml +0 -0
  892. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/cost-idle-workload/fixture/costs.json +0 -0
  893. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/crossplane-platform/expected.yaml +0 -0
  894. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/crossplane-platform/fixture/negative.yaml +0 -0
  895. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/crossplane-platform/fixture/xrd.yaml +0 -0
  896. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/demo-platform/expected.yaml +0 -0
  897. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/demo-platform/fixture/.github/workflows/ci.yml +0 -0
  898. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/demo-platform/fixture/deploy.yaml +0 -0
  899. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/demo-platform/fixture/infra.tf +0 -0
  900. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/fleet-ai/expected.yaml +0 -0
  901. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/fleet-capacity/expected.yaml +0 -0
  902. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/fleet-cost/expected.yaml +0 -0
  903. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/fleet-federation/expected.yaml +0 -0
  904. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/fleet-golden-path/expected.yaml +0 -0
  905. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/fleet-op-hotspot/expected.yaml +0 -0
  906. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/fleet-ownership/expected.yaml +0 -0
  907. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/fleet-partial/expected.yaml +0 -0
  908. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/fleet-policy-friction/expected.yaml +0 -0
  909. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/fleet-recurring-incident/expected.yaml +0 -0
  910. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/fleet-report/expected.yaml +0 -0
  911. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/fleet-risk/expected.yaml +0 -0
  912. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/gitops-drift/expected.yaml +0 -0
  913. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/gitops-drift/fixture/app.yaml +0 -0
  914. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/k8s-bad-readiness/expected.yaml +0 -0
  915. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/k8s-bad-readiness/fixture/deploy.yaml +0 -0
  916. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/k8s-bad-readiness/fixture/netpol.yaml +0 -0
  917. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/k8s-missing-limits/expected.yaml +0 -0
  918. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/k8s-missing-limits/fixture/deploy.yaml +0 -0
  919. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/k8s-missing-limits/fixture/netpol.yaml +0 -0
  920. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/k8s-single-replica/expected.yaml +0 -0
  921. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/k8s-single-replica/fixture/deploy.yaml +0 -0
  922. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/k8s-single-replica/fixture/netpol.yaml +0 -0
  923. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-aws-collect/expected.yaml +0 -0
  924. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-aws-collect/fixture/aws/ec2_describe-vpcs.json +0 -0
  925. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-aws-collect/fixture/aws/iam_list-users.denied.txt +0 -0
  926. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-aws-collect/fixture/aws/sts_get-caller-identity.json +0 -0
  927. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-k8s-collect/expected.yaml +0 -0
  928. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_configmaps.denied.txt +0 -0
  929. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_deployments.apps.json +0 -0
  930. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_pods.json +0 -0
  931. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_secrets.json +0 -0
  932. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-kind/expected.yaml +0 -0
  933. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-kind/fixture/kubectl/get_configmaps.denied.txt +0 -0
  934. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-kind/fixture/kubectl/get_deployments.apps.json +0 -0
  935. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-kind/fixture/kubectl/get_pods.json +0 -0
  936. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/live-kind/fixture/kubectl/get_secrets.json +0 -0
  937. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/network-policy-missing/expected.yaml +0 -0
  938. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/network-policy-missing/fixture/deploy.yaml +0 -0
  939. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-bad-rollout/expected.yaml +0 -0
  940. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-bad-rollout/fixture/ops.yaml +0 -0
  941. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-break-glass/expected.yaml +0 -0
  942. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-break-glass/fixture/ops.yaml +0 -0
  943. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-broken-selector/expected.yaml +0 -0
  944. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-broken-selector/fixture/ops.yaml +0 -0
  945. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-changed-plan-hash/expected.yaml +0 -0
  946. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-changed-plan-hash/fixture/ops.yaml +0 -0
  947. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-conflicting-operation/expected.yaml +0 -0
  948. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-conflicting-operation/fixture/ops.yaml +0 -0
  949. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-expired-approval/expected.yaml +0 -0
  950. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-expired-approval/fixture/ops.yaml +0 -0
  951. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-partial-failure/expected.yaml +0 -0
  952. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-partial-failure/fixture/ops.yaml +0 -0
  953. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-policy-denial/expected.yaml +0 -0
  954. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-policy-denial/fixture/ops.yaml +0 -0
  955. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-replica-drift/expected.yaml +0 -0
  956. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-replica-drift/fixture/ops.yaml +0 -0
  957. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-rollback-annotate/expected.yaml +0 -0
  958. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-rollback-annotate/fixture/ops.yaml +0 -0
  959. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-rollback-gitops/expected.yaml +0 -0
  960. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-rollback-gitops/fixture/ops.yaml +0 -0
  961. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-rollback-impossible/expected.yaml +0 -0
  962. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-rollback-impossible/fixture/ops.yaml +0 -0
  963. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-rollback-scale/expected.yaml +0 -0
  964. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-rollback-scale/fixture/ops.yaml +0 -0
  965. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-rollback-terraform/expected.yaml +0 -0
  966. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-rollback-terraform/fixture/ops.yaml +0 -0
  967. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-rollback-terraform/fixture/tf/tfplan.bin +0 -0
  968. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-stale-observation/expected.yaml +0 -0
  969. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/ops-stale-observation/fixture/ops.yaml +0 -0
  970. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/secret-exposure/expected.yaml +0 -0
  971. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/secret-exposure/fixture/app.env +0 -0
  972. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/slo-burn/expected.yaml +0 -0
  973. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/slo-burn/fixture/events.yaml +0 -0
  974. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/slo-burn/fixture/slo.yaml +0 -0
  975. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/terraform-iam-wildcard/expected.yaml +0 -0
  976. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/terraform-iam-wildcard/fixture/policy.json +0 -0
  977. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/terraform-public-bucket/expected.yaml +0 -0
  978. {platformforge-0.3.1 → platformforge-0.3.2}/lab/scenarios/terraform-public-bucket/fixture/main.tf +0 -0
  979. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/__main__.py +0 -0
  980. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/_forgecontext.py +0 -0
  981. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/_graphstudio.py +0 -0
  982. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/_graphview.py +0 -0
  983. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/_installkit.py +0 -0
  984. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/_portal_telemetry.py +0 -0
  985. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/__init__.py +0 -0
  986. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/bench.py +0 -0
  987. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/contextpack.py +0 -0
  988. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/contracts.py +0 -0
  989. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/coordinators.py +0 -0
  990. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/critic.py +0 -0
  991. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/debate.py +0 -0
  992. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/executors.py +0 -0
  993. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/guardian.py +0 -0
  994. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/mirrors.py +0 -0
  995. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/orchestrator.py +0 -0
  996. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/planner.py +0 -0
  997. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/playbook.py +0 -0
  998. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/referee.py +0 -0
  999. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/reviewers.py +0 -0
  1000. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/roster.py +0 -0
  1001. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/runledger.py +0 -0
  1002. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/specialists.py +0 -0
  1003. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/taskspec.py +0 -0
  1004. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/uniqueness.py +0 -0
  1005. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/agents/verifier.py +0 -0
  1006. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/aiplat/__init__.py +0 -0
  1007. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/aiplat/models.py +0 -0
  1008. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/__init__.py +0 -0
  1009. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/capacity.py +0 -0
  1010. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/debt.py +0 -0
  1011. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/dx.py +0 -0
  1012. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/finops_v4.py +0 -0
  1013. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/goldenpath.py +0 -0
  1014. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/history.py +0 -0
  1015. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/measurement.py +0 -0
  1016. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/models.py +0 -0
  1017. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/opsanalytics.py +0 -0
  1018. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/policyintel.py +0 -0
  1019. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/reliability.py +0 -0
  1020. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/soak.py +0 -0
  1021. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/analytics/store.py +0 -0
  1022. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/bench.py +0 -0
  1023. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cases/__init__.py +0 -0
  1024. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cases/casefile.py +0 -0
  1025. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cases/context_audit.py +0 -0
  1026. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cases/ledgers.py +0 -0
  1027. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cases/replay.py +0 -0
  1028. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cases/routing_audit.py +0 -0
  1029. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/caveman/__init__.py +0 -0
  1030. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/caveman/compress.py +0 -0
  1031. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cicd/__init__.py +0 -0
  1032. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cicd/backstage.py +0 -0
  1033. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cicd/dockerfile.py +0 -0
  1034. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cicd/github_actions.py +0 -0
  1035. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cicd/gitlab_ci.py +0 -0
  1036. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cicd/gitops.py +0 -0
  1037. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cli/__init__.py +0 -0
  1038. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cli/fleetcmd.py +0 -0
  1039. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cli/main.py +0 -0
  1040. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cloud/__init__.py +0 -0
  1041. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cloud/aws.py +0 -0
  1042. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cloud/common.py +0 -0
  1043. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/cloud/multicloud.py +0 -0
  1044. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/collect/__init__.py +0 -0
  1045. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/collect/detect.py +0 -0
  1046. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/context/__init__.py +0 -0
  1047. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/context/capsule.py +0 -0
  1048. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/context/gateway.py +0 -0
  1049. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/context/refs.py +0 -0
  1050. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/context/sufficiency.py +0 -0
  1051. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/core/__init__.py +0 -0
  1052. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/core/hashing.py +0 -0
  1053. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/core/ownership.py +0 -0
  1054. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/core/receipts.py +0 -0
  1055. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/core/redaction.py +0 -0
  1056. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/core/store.py +0 -0
  1057. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/core/workspace.py +0 -0
  1058. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/data/portable_skills/platformforge-agents/SKILL.md +0 -0
  1059. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/data/portable_skills/platformforge-change/SKILL.md +0 -0
  1060. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/data/portable_skills/platformforge-core/SKILL.md +0 -0
  1061. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/data/portable_skills/platformforge-economy/SKILL.md +0 -0
  1062. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/data/portable_skills/platformforge-finops/SKILL.md +0 -0
  1063. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/data/portable_skills/platformforge-fleet/SKILL.md +0 -0
  1064. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/data/portable_skills/platformforge-governance/SKILL.md +0 -0
  1065. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/data/portable_skills/platformforge-graph/SKILL.md +0 -0
  1066. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/data/portable_skills/platformforge-lab/SKILL.md +0 -0
  1067. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/data/portable_skills/platformforge-sdd/SKILL.md +0 -0
  1068. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/data/portable_skills/platformforge-security/SKILL.md +0 -0
  1069. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/data/portable_skills/platformforge-sre/SKILL.md +0 -0
  1070. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/diagnose/__init__.py +0 -0
  1071. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/discovery_ops.py +0 -0
  1072. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/distribution/__init__.py +0 -0
  1073. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/distribution/bundle.py +0 -0
  1074. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/distribution/hostflow.py +0 -0
  1075. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/distribution/models.py +0 -0
  1076. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/distribution/service.py +0 -0
  1077. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/__init__.py +0 -0
  1078. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/bench.py +0 -0
  1079. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/budget.py +0 -0
  1080. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/cache.py +0 -0
  1081. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/checkpoint.py +0 -0
  1082. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/collection.py +0 -0
  1083. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/doctor.py +0 -0
  1084. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/engine.py +0 -0
  1085. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/envelope.py +0 -0
  1086. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/fleetpack.py +0 -0
  1087. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/ledger.py +0 -0
  1088. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/plan.py +0 -0
  1089. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/pricing.py +0 -0
  1090. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/qpt.py +0 -0
  1091. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/reconcile.py +0 -0
  1092. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/verifyplan.py +0 -0
  1093. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/economy/waste.py +0 -0
  1094. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/evals/__init__.py +0 -0
  1095. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/evals/coverage.py +0 -0
  1096. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/evals/fleet_invariants.py +0 -0
  1097. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/evals/ops_invariants.py +0 -0
  1098. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/evals/runner.py +0 -0
  1099. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/evals/surface.py +0 -0
  1100. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/evals/taxonomy.py +0 -0
  1101. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/federation/__init__.py +0 -0
  1102. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/federation/node.py +0 -0
  1103. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/finops/__init__.py +0 -0
  1104. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/finops/alloc.py +0 -0
  1105. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/finops/costs.py +0 -0
  1106. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/finops/focus.py +0 -0
  1107. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/finops/graph_cost.py +0 -0
  1108. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/finops/ingest.py +0 -0
  1109. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/finops/insights.py +0 -0
  1110. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/finops/unit.py +0 -0
  1111. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/fleet/__init__.py +0 -0
  1112. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/fleet/loader.py +0 -0
  1113. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/fleet/models.py +0 -0
  1114. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/fleet/orggraph.py +0 -0
  1115. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/fleet/query.py +0 -0
  1116. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/forge/__init__.py +0 -0
  1117. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/forge/collect.py +0 -0
  1118. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/forge/delegate.py +0 -0
  1119. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/forge/manifest.py +0 -0
  1120. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/freeze/__init__.py +0 -0
  1121. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/freeze/exceptions.py +0 -0
  1122. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/freeze/manifest.py +0 -0
  1123. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/freeze/snapshots.py +0 -0
  1124. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graph/__init__.py +0 -0
  1125. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graph/backend.py +0 -0
  1126. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graph/bench.py +0 -0
  1127. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graph/build.py +0 -0
  1128. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graph/delivery.py +0 -0
  1129. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graph/diff.py +0 -0
  1130. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graph/events.py +0 -0
  1131. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graph/migrate.py +0 -0
  1132. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graph/model.py +0 -0
  1133. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graph/persist.py +0 -0
  1134. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graph/query.py +0 -0
  1135. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graph/temporal.py +0 -0
  1136. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graph/vocab.py +0 -0
  1137. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/graphview.py +0 -0
  1138. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/iac/__init__.py +0 -0
  1139. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/iac/drift.py +0 -0
  1140. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/iac/plan.py +0 -0
  1141. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/iac/terraform.py +0 -0
  1142. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/install/__init__.py +0 -0
  1143. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/install/service.py +0 -0
  1144. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/k8s/__init__.py +0 -0
  1145. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/k8s/helm.py +0 -0
  1146. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/k8s/hubble.py +0 -0
  1147. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/k8s/manifests.py +0 -0
  1148. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/knowledge/__init__.py +0 -0
  1149. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/knowledge/packs.py +0 -0
  1150. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/knowledge/registry.py +0 -0
  1151. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/knowledge/select.py +0 -0
  1152. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/lab/__init__.py +0 -0
  1153. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/lab/chaos.py +0 -0
  1154. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/lab/fleetlab.py +0 -0
  1155. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/lab/opslab.py +0 -0
  1156. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/lab/runner.py +0 -0
  1157. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/__init__.py +0 -0
  1158. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/budget.py +0 -0
  1159. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/capability.py +0 -0
  1160. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/collectors/__init__.py +0 -0
  1161. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/collectors/aws.py +0 -0
  1162. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/collectors/aws_transport.py +0 -0
  1163. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/collectors/k8s.py +0 -0
  1164. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/collectors/k8s_transport.py +0 -0
  1165. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/cursors.py +0 -0
  1166. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/drift.py +0 -0
  1167. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/envelope.py +0 -0
  1168. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/federation.py +0 -0
  1169. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/fixtures.py +0 -0
  1170. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/identity.py +0 -0
  1171. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/incident.py +0 -0
  1172. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/models.py +0 -0
  1173. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/reconcile.py +0 -0
  1174. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/remediate.py +0 -0
  1175. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/store.py +0 -0
  1176. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/live/topology.py +0 -0
  1177. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/mcp/__init__.py +0 -0
  1178. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/mcp/parity.py +0 -0
  1179. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/mcp/registry.py +0 -0
  1180. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/mcp/server.py +0 -0
  1181. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/mcp/tools.py +0 -0
  1182. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/models/__init__.py +0 -0
  1183. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/models/base.py +0 -0
  1184. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/observe/__init__.py +0 -0
  1185. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/observe/capacity.py +0 -0
  1186. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/observe/dr.py +0 -0
  1187. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/observe/grafana.py +0 -0
  1188. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/observe/incident.py +0 -0
  1189. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/observe/otel.py +0 -0
  1190. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/observe/postmortem.py +0 -0
  1191. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/observe/prometheus.py +0 -0
  1192. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/observe/slo.py +0 -0
  1193. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/__init__.py +0 -0
  1194. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/actions.py +0 -0
  1195. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/analytics.py +0 -0
  1196. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/approval.py +0 -0
  1197. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/autorem.py +0 -0
  1198. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/config.py +0 -0
  1199. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/engine.py +0 -0
  1200. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/envelope.py +0 -0
  1201. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/executors/__init__.py +0 -0
  1202. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/executors/base.py +0 -0
  1203. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/executors/git.py +0 -0
  1204. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/executors/gitops.py +0 -0
  1205. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/executors/terraform.py +0 -0
  1206. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/gates.py +0 -0
  1207. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/goldenpath.py +0 -0
  1208. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/material.py +0 -0
  1209. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/models.py +0 -0
  1210. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/operation.py +0 -0
  1211. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/opgraph.py +0 -0
  1212. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/policy.py +0 -0
  1213. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/preconditions.py +0 -0
  1214. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/registry.py +0 -0
  1215. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/risk.py +0 -0
  1216. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/rollback.py +0 -0
  1217. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/rollback_builders.py +0 -0
  1218. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/runbook.py +0 -0
  1219. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/simulate.py +0 -0
  1220. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/source_of_truth.py +0 -0
  1221. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/store.py +0 -0
  1222. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ops/verify.py +0 -0
  1223. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/optimize/__init__.py +0 -0
  1224. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/optimize/engine.py +0 -0
  1225. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/optimize/models.py +0 -0
  1226. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/optimize/scan.py +0 -0
  1227. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/plan/__init__.py +0 -0
  1228. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/portable_cli.py +0 -0
  1229. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/portal_adapter.py +0 -0
  1230. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/product/__init__.py +0 -0
  1231. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/product/backstage.py +0 -0
  1232. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/product/catalog.py +0 -0
  1233. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/product/crossplane.py +0 -0
  1234. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/product/golden_paths/__init__.py +0 -0
  1235. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/product/golden_paths/engine.py +0 -0
  1236. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/product/golden_paths/library.yaml +0 -0
  1237. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/product/golden_paths/model.py +0 -0
  1238. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/product/maturity.py +0 -0
  1239. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/product/scorecards.py +0 -0
  1240. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/resources.py +0 -0
  1241. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/risk/__init__.py +0 -0
  1242. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/risk/engine.py +0 -0
  1243. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/risk/signals.py +0 -0
  1244. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/routing/__init__.py +0 -0
  1245. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/routing/decision.py +0 -0
  1246. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/routing/router.py +0 -0
  1247. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/rtk/__init__.py +0 -0
  1248. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/rtk/compact.py +0 -0
  1249. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/rtk/parsers.py +0 -0
  1250. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/rules/__init__.py +0 -0
  1251. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/rules/engine.py +0 -0
  1252. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/sandbox/__init__.py +0 -0
  1253. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/sandbox/env.py +0 -0
  1254. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/sandbox/review.py +0 -0
  1255. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/sdd/__init__.py +0 -0
  1256. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/sdd/lifecycle.py +0 -0
  1257. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/security/__init__.py +0 -0
  1258. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/security/cosign.py +0 -0
  1259. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/security/iam.py +0 -0
  1260. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/security/identity.py +0 -0
  1261. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/security/kyverno.py +0 -0
  1262. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/security/sbom.py +0 -0
  1263. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/security/scan.py +0 -0
  1264. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/security/slsa.py +0 -0
  1265. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/security/supply.py +0 -0
  1266. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/tokensave/__init__.py +0 -0
  1267. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/tokensave/budget.py +0 -0
  1268. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/tokensave/estimate.py +0 -0
  1269. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/tokensave/index.py +0 -0
  1270. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/tokensave/ledger.py +0 -0
  1271. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/tokensave/packs.py +0 -0
  1272. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ui/__init__.py +0 -0
  1273. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ui/app.py +0 -0
  1274. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ui/home.py +0 -0
  1275. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ui/i18n.py +0 -0
  1276. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ui/kit.py +0 -0
  1277. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ui/screen.py +0 -0
  1278. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/ui/tui.py +0 -0
  1279. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/workspace/__init__.py +0 -0
  1280. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/workspace/models.py +0 -0
  1281. {platformforge-0.3.1 → platformforge-0.3.2}/platformforge/workspace/service.py +0 -0
  1282. {platformforge-0.3.1 → platformforge-0.3.2}/portal/assets/chunk-C0nXO1-7.js +0 -0
  1283. {platformforge-0.3.1 → platformforge-0.3.2}/portal/assets/chunk-D-7Jr8A3.js +0 -0
  1284. {platformforge-0.3.1 → platformforge-0.3.2}/portal/assets/chunk-DuZy_X7l.js +0 -0
  1285. {platformforge-0.3.1 → platformforge-0.3.2}/portal/assets/favicon.ico +0 -0
  1286. {platformforge-0.3.1 → platformforge-0.3.2}/rules/catalog/finops.yaml +0 -0
  1287. {platformforge-0.3.1 → platformforge-0.3.2}/rules/catalog/gitops.yaml +0 -0
  1288. {platformforge-0.3.1 → platformforge-0.3.2}/rules/catalog/iac.yaml +0 -0
  1289. {platformforge-0.3.1 → platformforge-0.3.2}/rules/catalog/k8s.yaml +0 -0
  1290. {platformforge-0.3.1 → platformforge-0.3.2}/rules/catalog/orchestration.yaml +0 -0
  1291. {platformforge-0.3.1 → platformforge-0.3.2}/rules/catalog/product.yaml +0 -0
  1292. {platformforge-0.3.1 → platformforge-0.3.2}/rules/catalog/routing.yaml +0 -0
  1293. {platformforge-0.3.1 → platformforge-0.3.2}/rules/catalog/security.yaml +0 -0
  1294. {platformforge-0.3.1 → platformforge-0.3.2}/rules/catalog/sre.yaml +0 -0
  1295. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/bench_economy.py +0 -0
  1296. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/docs/check_docs.py +0 -0
  1297. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/docs/doc_catalogs.py +0 -0
  1298. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/docs/doc_index.py +0 -0
  1299. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/docs/doc_inventory.py +0 -0
  1300. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/docs/doc_manifest.py +0 -0
  1301. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/docs/doc_reference.py +0 -0
  1302. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/docs/final_report.py +0 -0
  1303. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/docs/regen_docs.py +0 -0
  1304. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/forge_bootstrap.py +0 -0
  1305. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/forge_installkit.py +0 -0
  1306. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/freeze_perf_receipt.py +0 -0
  1307. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/freeze_soak_receipt.py +0 -0
  1308. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/freeze_validation_receipt.py +0 -0
  1309. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/gen_cli_surface.py +0 -0
  1310. {platformforge-0.3.1 → platformforge-0.3.2}/scripts/lab/platformforge_lab.py +0 -0
  1311. {platformforge-0.3.1 → platformforge-0.3.2}/setup.ps1 +0 -0
  1312. {platformforge-0.3.1 → platformforge-0.3.2}/setup.sh +0 -0
  1313. {platformforge-0.3.1 → platformforge-0.3.2}/tests/__init__.py +0 -0
  1314. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_agent_adversarial.py +0 -0
  1315. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_agent_budget.py +0 -0
  1316. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_agent_economy.py +0 -0
  1317. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_agent_handoffs.py +0 -0
  1318. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_agent_mirrors.py +0 -0
  1319. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_agent_protocol.py +0 -0
  1320. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_agent_routing.py +0 -0
  1321. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_agents.py +0 -0
  1322. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_artifact_contents.py +0 -0
  1323. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_cases.py +0 -0
  1324. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_cicd.py +0 -0
  1325. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_cli_ops.py +0 -0
  1326. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_cloud.py +0 -0
  1327. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_command_rationale.py +0 -0
  1328. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_coordinators.py +0 -0
  1329. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_core.py +0 -0
  1330. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_crossplane.py +0 -0
  1331. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_cycle5_analytics.py +0 -0
  1332. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_cycle5_hardening.py +0 -0
  1333. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_discovery_ops.py +0 -0
  1334. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_doc_drift.py +0 -0
  1335. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_doc_manifest.py +0 -0
  1336. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_docs_drift.py +0 -0
  1337. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_economy.py +0 -0
  1338. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_economy_agents_waste.py +0 -0
  1339. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_economy_cache.py +0 -0
  1340. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_economy_closure.py +0 -0
  1341. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_economy_contracts.py +0 -0
  1342. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_economy_evals.py +0 -0
  1343. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_economy_fleet_qpt.py +0 -0
  1344. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_economy_gateway.py +0 -0
  1345. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_economy_pricing_verify.py +0 -0
  1346. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_economy_v2.py +0 -0
  1347. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_evals_surface.py +0 -0
  1348. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_executors.py +0 -0
  1349. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_federation.py +0 -0
  1350. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_finops.py +0 -0
  1351. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_fleet.py +0 -0
  1352. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_fleet_adversarial.py +0 -0
  1353. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_forge.py +0 -0
  1354. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_freeze.py +0 -0
  1355. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_graph.py +0 -0
  1356. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_graph_v2.py +0 -0
  1357. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_hardening.py +0 -0
  1358. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_hosts_flow.py +0 -0
  1359. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_iac.py +0 -0
  1360. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_install_lifecycle.py +0 -0
  1361. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_k8s.py +0 -0
  1362. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_k8s_depth.py +0 -0
  1363. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_knowledge_packs.py +0 -0
  1364. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_lab.py +0 -0
  1365. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ledgers.py +0 -0
  1366. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_live_aws.py +0 -0
  1367. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_live_capability.py +0 -0
  1368. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_live_drift.py +0 -0
  1369. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_live_identity.py +0 -0
  1370. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_live_incident.py +0 -0
  1371. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_live_k8s.py +0 -0
  1372. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_live_remediate.py +0 -0
  1373. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_live_security_props.py +0 -0
  1374. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_mcp.py +0 -0
  1375. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_missing_input_refusals.py +0 -0
  1376. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_observation.py +0 -0
  1377. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_observe.py +0 -0
  1378. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_observe_v2.py +0 -0
  1379. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_offline.py +0 -0
  1380. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_adversarial41.py +0 -0
  1381. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_approval.py +0 -0
  1382. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_autorem.py +0 -0
  1383. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_executors.py +0 -0
  1384. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_gapwave.py +0 -0
  1385. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_goldenpath.py +0 -0
  1386. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_hardening.py +0 -0
  1387. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_models.py +0 -0
  1388. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_operation.py +0 -0
  1389. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_opgraph.py +0 -0
  1390. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_pipeline.py +0 -0
  1391. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_policy.py +0 -0
  1392. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_property.py +0 -0
  1393. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_risk.py +0 -0
  1394. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_rollback.py +0 -0
  1395. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_runbook.py +0 -0
  1396. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_runbook41.py +0 -0
  1397. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ops_verify.py +0 -0
  1398. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_orchestrator.py +0 -0
  1399. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_portable_distribution.py +0 -0
  1400. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_portable_workspace.py +0 -0
  1401. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_portal_adapter.py +0 -0
  1402. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_product.py +0 -0
  1403. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_product_v2.py +0 -0
  1404. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_qpt_v2.py +0 -0
  1405. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_reconcile.py +0 -0
  1406. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_redaction.py +0 -0
  1407. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_reviewers.py +0 -0
  1408. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_routing_audit.py +0 -0
  1409. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_sdd.py +0 -0
  1410. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_security.py +0 -0
  1411. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_soak.py +0 -0
  1412. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_specialists.py +0 -0
  1413. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_surface.py +0 -0
  1414. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_topology.py +0 -0
  1415. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_truth.py +0 -0
  1416. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ui_resilience.py +0 -0
  1417. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_ui_tui.py +0 -0
  1418. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_vcs_marker.py +0 -0
  1419. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_wave_h.py +0 -0
  1420. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_wave_k.py +0 -0
  1421. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_wave_l.py +0 -0
  1422. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_wave_n.py +0 -0
  1423. {platformforge-0.3.1 → platformforge-0.3.2}/tests/test_wheel_isolation.py +0 -0
  1424. {platformforge-0.3.1 → platformforge-0.3.2}/uv.lock +0 -0
@@ -1,5 +1,11 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## [0.3.2] — 2026-11-04
4
+
5
+ ### Fixed
6
+
7
+ - Synced the hardened Forge Portal runtime and refreshed bundled portal assets.
8
+
3
9
  All notable changes. Format: wave/feature, the "why", key commits.
4
10
  ## [0.2.3] - 2026-10-23
5
11
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: platformforge
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Agentic Platform Engineering intelligence platform — deterministic, offline-first, evidence-first
5
5
  Project-URL: Homepage, https://github.com/EdgarSocrates98/platform-forge
6
6
  Project-URL: Repository, https://github.com/EdgarSocrates98/platform-forge
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "benchmarks": {
3
3
  "control_plane_overhead": "docs/economy-parity/ECONOMY-BENCHMARKS.md",
4
- "end_to_end": "insufficient evidence — no production corpus claimed"
4
+ "end_to_end": "insufficient evidence \u2014 no production corpus claimed"
5
5
  },
6
6
  "closure_sha": null,
7
7
  "cycle": "economy-parity",
@@ -11,81 +11,81 @@
11
11
  "economy-agentic": {
12
12
  "ok": true,
13
13
  "reproduce": "pytest -q tests/test_economy_agents_waste.py tests/test_economy_evals.py -k uniqueness or debate or duplication or fanout or waste or stagnant",
14
- "seconds": 3.87
14
+ "seconds": 2.32
15
15
  },
16
16
  "economy-budget": {
17
17
  "ok": true,
18
18
  "reproduce": "pytest -q tests/test_economy_contracts.py -k budget or limit or protected or dimension",
19
- "seconds": 2.49
19
+ "seconds": 1.61
20
20
  },
21
21
  "economy-cache": {
22
22
  "ok": true,
23
23
  "reproduce": "pytest -q tests/test_economy_cache.py",
24
- "seconds": 2.77
24
+ "seconds": 1.91
25
25
  },
26
26
  "economy-closure": {
27
27
  "ok": true,
28
28
  "reproduce": "python -c import sys\nfrom pathlib import Path\nreq = {'docs/economy-parity/FINAL-REPORT.md':\n ['validated_sha', 'remote_ci', 'known gap'],\n 'docs/economy-parity/FINAL-MATRIX.md':\n ['validated', 'externally-unverified'],\n 'docs/economy-parity/ECONOMY-BENCHMARKS.md':\n ['Control Plane Overhead', 'End-to-End'],\n 'docs/economy/ROUTING.md':\n ['decide', 'advisory'],\n 'docs/economy-parity/POLISH-BASELINE.md': ['drift']}\nbad = []\nfor f, needles in req.items():\n p = Path(f)\n if not p.is_file(): bad.append(('missing', f)); continue\n txt = p.read_text()\n for n in needles:\n if n not in txt: bad.append((f, n))\nm = Path('docs/economy-parity/FINAL-MATRIX.md').read_text()\nif '\\n' + '|' in m and ' fully-production' in m:\n bad.append(('matrix', 'overclaimed status'))\nif bad: print(bad); sys.exit(1)\nprint('closure docs coherent')\n && pytest -q tests/test_economy_closure.py",
29
- "seconds": 3.45
29
+ "seconds": 2.36
30
30
  },
31
31
  "economy-context": {
32
32
  "ok": true,
33
33
  "reproduce": "pytest -q tests/test_economy_gateway.py -k TestGateway or TestLazy or TestRole or Suff",
34
- "seconds": 2.65
34
+ "seconds": 1.75
35
35
  },
36
36
  "economy-contracts": {
37
37
  "ok": true,
38
38
  "reproduce": "pytest -q tests/test_economy_contracts.py tests/test_economy_v2.py",
39
- "seconds": 3.97
39
+ "seconds": 2.13
40
40
  },
41
41
  "economy-evals": {
42
42
  "ok": true,
43
43
  "reproduce": "pytest -q tests/test_economy_evals.py",
44
- "seconds": 3.24
44
+ "seconds": 2.06
45
45
  },
46
46
  "economy-qpt": {
47
47
  "ok": true,
48
48
  "reproduce": "pytest -q tests/test_qpt_v2.py tests/test_economy_fleet_qpt.py",
49
- "seconds": 8.76
49
+ "seconds": 2.82
50
50
  },
51
51
  "economy-receipt": {
52
52
  "ok": true,
53
- "reproduce": "python -c import json, re, subprocess, sys\nfrom pathlib import Path\nsys.path.insert(0, 'scripts')\nimport validate as V\np = Path(V.ECONOMY_RECEIPT_PATH)\nif not p.is_file():\n print('missing receipt:', p); sys.exit(1)\nr = json.loads(p.read_text())\nbad = []\nif r.get('schema') != V.ECONOMY_RECEIPT_SCHEMA:\n bad.append(('schema', r.get('schema')))\nvs = r.get('validated_sha') or ''\nok_sha = subprocess.run(['git','cat-file','-e',\n vs + '^{commit}'], capture_output=True).returncode == 0\nif not ok_sha: bad.append(('validated_sha-not-a-commit', vs))\nhead = subprocess.run(['git','rev-parse','HEAD'],\n capture_output=True, text=True).stdout.strip()\n# PR merge ref: HEAD^2 is the pushed branch tip — the Option-A\n# pair (functional commit + receipt commit) sits one level down.\nhead2 = subprocess.run(['git','rev-parse','HEAD^2'],\n capture_output=True, text=True).stdout.strip()\nbase = head2 if __import__('re').fullmatch(r'[0-9a-f]{40}', head2) else head\nhead1 = subprocess.run(['git','rev-parse', base + '~1'],\n capture_output=True, text=True).stdout.strip()\nif vs not in (base, head1):\n bad.append(('validated_sha-stale', vs, head))\ncanon = set(V._economy_gate_names())\nextra = set(r.get('gates', {})) - canon\nif extra: bad.append(('noncanonical-gates', sorted(extra)))\npat = re.compile('tests/' + r'\\S+' + r'\\.py')\nfor g, e in r.get('gates', {}).items():\n for t in pat.findall(e.get('reproduce') or ''):\n if not Path(t).is_file():\n bad.append(('dead-reproduce-path', g, t))\nif r.get('verdict') not in ('validated', 'failed'):\n bad.append(('verdict', r.get('verdict')))\nif bad: print(bad); sys.exit(1)\nprint('receipt coherent:', len(r['gates']), 'gates,',\n 'sha bound')\n",
54
- "seconds": 0.34
53
+ "reproduce": "python -c import json, re, subprocess, sys\nfrom pathlib import Path\nsys.path.insert(0, 'scripts')\nimport validate as V\np = Path(V.ECONOMY_RECEIPT_PATH)\nif not p.is_file():\n print('missing receipt:', p); sys.exit(1)\nr = json.loads(p.read_text())\nbad = []\nif r.get('schema') != V.ECONOMY_RECEIPT_SCHEMA:\n bad.append(('schema', r.get('schema')))\nvs = r.get('validated_sha') or ''\nok_sha = subprocess.run(['git','cat-file','-e',\n vs + '^{commit}'], capture_output=True).returncode == 0\nif not ok_sha: bad.append(('validated_sha-not-a-commit', vs))\nhead = subprocess.run(['git','rev-parse','HEAD'],\n capture_output=True, text=True).stdout.strip()\n# PR merge ref: HEAD^2 is the pushed branch tip \u2014 the Option-A\n# pair (functional commit + receipt commit) sits one level down.\nhead2 = subprocess.run(['git','rev-parse','HEAD^2'],\n capture_output=True, text=True).stdout.strip()\nbase = head2 if __import__('re').fullmatch(r'[0-9a-f]{40}', head2) else head\nhead1 = subprocess.run(['git','rev-parse', base + '~1'],\n capture_output=True, text=True).stdout.strip()\nif vs not in (base, head1):\n bad.append(('validated_sha-stale', vs, head))\ncanon = set(V._economy_gate_names())\nextra = set(r.get('gates', {})) - canon\nif extra: bad.append(('noncanonical-gates', sorted(extra)))\npat = re.compile('tests/' + r'\\S+' + r'\\.py')\nfor g, e in r.get('gates', {}).items():\n for t in pat.findall(e.get('reproduce') or ''):\n if not Path(t).is_file():\n bad.append(('dead-reproduce-path', g, t))\nif r.get('verdict') not in ('validated', 'failed'):\n bad.append(('verdict', r.get('verdict')))\nif bad: print(bad); sys.exit(1)\nprint('receipt coherent:', len(r['gates']), 'gates,',\n 'sha bound')\n",
54
+ "seconds": 0.3
55
55
  },
56
56
  "economy-reconcile": {
57
57
  "ok": true,
58
58
  "reproduce": "pytest -q tests/test_economy_gateway.py tests/test_economy_evals.py -k reconcil or mismatch or unobserved",
59
- "seconds": 2.91
59
+ "seconds": 1.77
60
60
  },
61
61
  "economy-resume": {
62
62
  "ok": true,
63
63
  "reproduce": "pytest -q tests/test_economy_gateway.py -k resume or checkpoint",
64
- "seconds": 2.58
64
+ "seconds": 1.57
65
65
  },
66
66
  "economy-routing": {
67
67
  "ok": true,
68
68
  "reproduce": "pytest -q tests/test_economy_evals.py -k routing or profile or champion or simple_task",
69
- "seconds": 2.86
69
+ "seconds": 1.7
70
70
  },
71
71
  "economy-surface": {
72
72
  "ok": true,
73
- "reproduce": "python -c import subprocess, sys\ncmds = [\n ['platformforge','economy','doctor'],\n ['platformforge','economy','checkpoint','--run-id','gate',\n '--spent','{\"tokens\":1}'],\n ['platformforge','economy','resume','--run-id','gate'],\n ['platformforge','economy','reconcile',\n '--planned','{\"tokens\":1}','--observed','{\"tokens\":2}'],\n ['platformforge','economy','explain','--run-id','gate'],\n ['platformforge','cache','stats'],\n ['platformforge','cache','gc'],\n ['platformforge','context','capsule','--task','t',\n '--facts','[{\"fact_id\":\"f\"}]'],\n ['platformforge','context','gc'],\n ['platformforge','routing','explain','--signal','{}'],\n ['platformforge','routing','compare',\n '--champion','{}','--challenger','{}'],\n]\nfor c in cmds:\n r = subprocess.run(c, capture_output=True)\n if r.returncode not in (0, 2):\n print('FAIL', c, r.returncode, r.stderr[-300:])\n sys.exit(1)\nprint('all economy verbs respond')\n",
74
- "seconds": 15.82
73
+ "reproduce": "python -c import subprocess, sys\ncmds = [\n [sys.executable,'-m','platformforge','economy','doctor'],\n [sys.executable,'-m','platformforge','economy','checkpoint','--run-id','gate',\n '--spent','{\"tokens\":1}'],\n [sys.executable,'-m','platformforge','economy','resume','--run-id','gate'],\n [sys.executable,'-m','platformforge','economy','reconcile',\n '--planned','{\"tokens\":1}','--observed','{\"tokens\":2}'],\n [sys.executable,'-m','platformforge','economy','explain','--run-id','gate'],\n [sys.executable,'-m','platformforge','cache','stats'],\n [sys.executable,'-m','platformforge','cache','gc'],\n [sys.executable,'-m','platformforge','context','capsule','--task','t',\n '--facts','[{\"fact_id\":\"f\"}]'],\n [sys.executable,'-m','platformforge','context','gc'],\n [sys.executable,'-m','platformforge','routing','explain','--signal','{}'],\n [sys.executable,'-m','platformforge','routing','compare',\n '--champion','{}','--challenger','{}'],\n]\nfor c in cmds:\n r = subprocess.run(c, capture_output=True)\n if r.returncode not in (0, 2):\n print('FAIL', c, r.returncode, r.stderr[-300:])\n sys.exit(1)\nprint('all economy verbs respond')\n",
74
+ "seconds": 5.66
75
75
  },
76
76
  "economy-verification": {
77
77
  "ok": true,
78
78
  "reproduce": "pytest -q tests/test_economy_pricing_verify.py",
79
- "seconds": 2.73
79
+ "seconds": 1.74
80
80
  }
81
81
  },
82
- "generated_at": "2026-10-23T10:19:50Z",
82
+ "generated_at": "2026-11-04T21:08:20Z",
83
83
  "kind": "platformforge/economy-validation-receipt/1",
84
84
  "known_gaps": [
85
85
  "real provider pricing catalog not bundled (declared-rates engine only, by design)",
86
- "money axis lacks a real model-call corpus — QPC money is unresolved without declared pricing + measured usage",
86
+ "money axis lacks a real model-call corpus \u2014 QPC money is unresolved without declared pricing + measured usage",
87
87
  "production savings unproven; microbench overhead only",
88
- "analysis cache reuse requires identical evidence/policy/risk tuple — conservative by construction"
88
+ "analysis cache reuse requires identical evidence/policy/risk tuple \u2014 conservative by construction"
89
89
  ],
90
90
  "quality": {
91
91
  "note": "QPT/QPC floors enforced inside economy-qpt / economy-evals gates; quality floors gate every economy claim"
@@ -93,7 +93,7 @@
93
93
  "remote_ci": "not independently verified",
94
94
  "schema": "platformforge/economy-validation-receipt/v1",
95
95
  "spec": "prompt_evo_economy.md",
96
- "validated_sha": "4b82edf74a9294de2647378a50499ba84a1becd6",
96
+ "validated_sha": "402620b7603f1dcbc00c4d6246d67a9428c6361b",
97
97
  "validator": "scripts/validate.py",
98
98
  "validator_version": "economy-validation-receipt/v1",
99
99
  "verdict": "validated"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema": "forge/SpecialistAgenticManifest/v1",
3
3
  "provider": "platform-forge",
4
- "version": "0.3.1",
4
+ "version": "0.3.2",
5
5
  "cli": "platformforge",
6
6
  "cli_entry": "platformforge.cli.main:main",
7
7
  "workflows": [
@@ -10,7 +10,7 @@ try {
10
10
  $py = $null
11
11
  $pyArgs = @()
12
12
  foreach ($c in @("python3", "python", "py")) {
13
- $cmd = Get-Command $c -CommandType Application -ErrorAction SilentlyContinue
13
+ $cmd = Get-Command $c -CommandType Application -ErrorAction SilentlyContinue | Select-Object -First 1
14
14
  if ($cmd) {
15
15
  $py = $cmd.Source
16
16
  if ([IO.Path]::GetFileName($py) -in @("py.exe", "py")) { $pyArgs = @("-3") }
@@ -4,4 +4,4 @@ Deterministic-first, offline-first, evidence-first. The core never imports
4
4
  LLM SDKs, cloud SDKs, or MCP — those live behind optional adapters.
5
5
  """
6
6
 
7
- __version__ = "0.3.1"
7
+ __version__ = "0.3.2"
@@ -243,7 +243,7 @@ class PortalAdapter:
243
243
  return detect_account_environment(self)
244
244
 
245
245
 
246
- PORTAL_VERSION = "1.0.0"
246
+ PORTAL_VERSION = "1.1.1"
247
247
 
248
248
 
249
249
  def portal_version() -> str:
@@ -997,6 +997,7 @@ class PortalServer(ThreadingHTTPServer):
997
997
  max_workers=8, thread_name_prefix="forge-portal"
998
998
  )
999
999
  super().__init__((host, port), PortalHandler)
1000
+ self._serve_thread: threading.Thread | None = None
1000
1001
 
1001
1002
  # -- helpers used by the handler --------------------------------------
1002
1003
  def log(self, msg: str) -> None:
@@ -1060,9 +1061,55 @@ class PortalServer(ThreadingHTTPServer):
1060
1061
 
1061
1062
  def serve_in_thread(self) -> threading.Thread:
1062
1063
  t = threading.Thread(target=self.serve_forever, name="forge-portal-http", daemon=True)
1064
+ self._serve_thread = t
1063
1065
  t.start()
1064
1066
  return t
1065
1067
 
1068
+ def serve_forever(self, poll_interval: float = 0.5) -> None:
1069
+ """Track direct ``serve_forever`` callers as well as our helper.
1070
+
1071
+ Embedded integrations often run the server directly in a thread
1072
+ instead of calling :meth:`serve_in_thread`. Tracking that thread
1073
+ keeps ``shutdown(); server_close()`` ordered on Windows, where the
1074
+ selector otherwise can briefly observe a closed socket.
1075
+ """
1076
+ self._serve_thread = threading.current_thread()
1077
+ try:
1078
+ super().serve_forever(poll_interval=poll_interval)
1079
+ finally:
1080
+ self._serve_thread = None
1081
+
1082
+ def shutdown(self) -> None:
1083
+ """Stop the accept loop before the socket is closed.
1084
+
1085
+ Tests and embedded callers commonly call ``shutdown(); server_close()``
1086
+ immediately. Joining the serving thread here prevents the Windows
1087
+ selector from observing a closed socket and emitting a spurious
1088
+ ``WinError 10038`` warning.
1089
+ """
1090
+ super().shutdown()
1091
+ thread = self._serve_thread
1092
+ if thread and thread is not threading.current_thread():
1093
+ thread.join(timeout=5)
1094
+ self._executor.shutdown(wait=False, cancel_futures=True)
1095
+
1096
+ def server_close(self) -> None:
1097
+ """Make direct ``server_close`` callers safe too.
1098
+
1099
+ ``ThreadingHTTPServer`` callers sometimes only retain the stdlib
1100
+ lifecycle and invoke ``server_close`` without an earlier
1101
+ ``shutdown``. Closing the selector socket underneath a live
1102
+ ``serve_forever`` thread raises WinError 10038 on Windows. Stop and
1103
+ join the loop before closing the descriptor, while keeping the
1104
+ regular ``shutdown(); server_close()`` sequence idempotent.
1105
+ """
1106
+ thread = self._serve_thread
1107
+ if thread and thread.is_alive() and thread is not threading.current_thread():
1108
+ super().shutdown()
1109
+ thread.join(timeout=5)
1110
+ super().server_close()
1111
+ self._executor.shutdown(wait=False, cancel_futures=True)
1112
+
1066
1113
 
1067
1114
  def default_operations(adapter: PortalAdapter) -> list[Operation]:
1068
1115
  """Core read-only surface every portal gets for free, mapped to
@@ -13,7 +13,7 @@ continuing (§141–142).
13
13
  from __future__ import annotations
14
14
 
15
15
  import json
16
- from pathlib import Path
16
+ from pathlib import Path, PurePosixPath, PureWindowsPath
17
17
  from typing import Any
18
18
 
19
19
  from platformforge.agents.contracts import AgentRunRecord
@@ -25,9 +25,25 @@ class RunStore:
25
25
  self.dir.mkdir(parents=True, exist_ok=True)
26
26
 
27
27
  def _path(self, run_id: str) -> Path:
28
- if "/" in run_id or ".." in run_id:
28
+ # Run ids are data, not path authority. Check both path syntaxes so
29
+ # a Windows drive/UNC path or backslash traversal cannot escape when
30
+ # this code is exercised from another host or by a hostile MCP peer.
31
+ if (
32
+ not isinstance(run_id, str)
33
+ or not run_id
34
+ or any(char in run_id for char in ("/", "\\", ":", "\x00"))
35
+ or run_id in {".", ".."}
36
+ or any(part == ".." for part in PurePosixPath(run_id).parts)
37
+ or any(part == ".." for part in PureWindowsPath(run_id).parts)
38
+ or PurePosixPath(run_id).is_absolute()
39
+ or PureWindowsPath(run_id).is_absolute()
40
+ ):
29
41
  raise ValueError(f"bad run_id {run_id!r}")
30
- return self.dir / f"{run_id}.json"
42
+ path = self.dir / f"{run_id}.json"
43
+ # Do not follow a pre-existing symlink planted in the run directory.
44
+ if path.is_symlink():
45
+ raise ValueError(f"bad run_id {run_id!r}: symlinked record")
46
+ return path
31
47
 
32
48
  def save(self, record: AgentRunRecord) -> Path:
33
49
  p = self._path(record.run_id)
@@ -217,7 +217,10 @@ def knowledge_search(
217
217
  def knowledge_get(file: str) -> dict[str, Any]:
218
218
  root = _knowledge_root().resolve()
219
219
  target = (root / file).resolve()
220
- if not str(target).startswith(str(root) + "/"):
220
+ # ``Path.is_relative_to`` is separator-aware on Windows. The previous
221
+ # string-prefix check only accepted POSIX separators, so a valid
222
+ # knowledge reference was rejected on Windows as an apparent path escape.
223
+ if not target.is_relative_to(root):
221
224
  raise DiscoveryError(f"path escapes knowledge root: {file!r}")
222
225
  if not target.is_file():
223
226
  raise DiscoveryError(f"{file!r} not present in knowledge root {root}")
@@ -67,7 +67,8 @@ def _scope_choices(ctx: UIContext) -> list[str]:
67
67
  _c(
68
68
  ctx,
69
69
  "33",
70
- " No repository detected; choose Entire workspace to use this directory or My user account.",
70
+ " No repository detected; choose Entire workspace to use this directory "
71
+ "or My user account.",
71
72
  )
72
73
  )
73
74
  scopes.remove("project")
@@ -0,0 +1 @@
1
+ import{A as Lr,At as kT,Bt as on,D as Kl,Dt as hy,F as Mc,Ft as mb,H as OT,Ht as p,I as Md,Kt as py,L as NS,M as MD,N as MS,P as MT,Q as TE,U as Oa,Ut as pb,W as PS,X as RS,Z as SS,dt as _S,f as EE,ft as _T,g as FS,ht as ai,k as La,kt as ja,l as CS,ln as xr,m as Ea,q as Qh,r as Ad,sn as xT,st as Xm,t as $,u as CT,vt as dT,x as IE,y as Gh,zt as nn}from"./chunk-DFkLw9sv.js";import{t as a}from"./chunk-B3Nny4Hq.js";import{a as d}from"./main-FURAVAHM.js";import{t as D}from"./chunk-CgS3he5O.js";import{t as h}from"./chunk-QjrSdDLo.js";import{t as u}from"./chunk-BfXakSL4.js";import{t as T}from"./chunk-CpDhHwF4.js";import{a as l}from"./chunk-BZz-ye3r.js";import{t as _}from"./chunk-Chbgw2Fv.js";import{l as pn,o as je$1,r as _n,t as Lt$1}from"./chunk-cS-8T4yH.js";import{i as x,n as f,t as M}from"./chunk-D-7Jr8A3.js";import{n as k,t as V}from"./chunk-Bu575p0q.js";var L=()=>[];var Ce=(i,n)=>n[0];var be=(i,n)=>n.id;var xe=(i,n)=>n.path;var ke=(i,n)=>n.path??n;var ge=(i,n)=>n.member;function Se(i,n){if(i&1&&(Ea(0,`span`,3),dT(1),Md()),i&2){let e=FS();MD(),Ad(`· `,e.operation)}}function he(i,n){if(i&1&&(Ea(0,`div`,6)(1,`dt`),dT(2),xT(3,`t`),Md(),Ea(4,`dd`),dT(5),Md()()),i&2){let e=n.$implicit;MD(2),hy(OT(3,2,e[0])),MD(3),hy(e[1])}}function Ee(i,n){if(i&1&&(Ea(0,`span`,14),dT(1),Md()),i&2){let e=FS().$implicit;MD(),hy(e.detail)}}function Pe(i,n){i&1&&(Ea(0,`span`,15),dT(1),xT(2,`t`),Md()),i&2&&(MD(),hy(OT(2,1,`fdoc.repairable`)))}function Te(i,n){if(i&1&&(Ea(0,`li`),Oa(1,`ui-state-badge`,12),Ea(2,`code`,13),dT(3),Md(),SS(4,Ee,2,1,`span`,14),SS(5,Pe,3,3,`span`,15),Md()),i&2){let e=n.$implicit;MD(),Xm(`state`,e.status??`unverified`)(`labelOverride`,e.status??null),MD(2),hy(e.id),MD(),CS(e.detail?4:-1),MD(),CS(e.repairable?5:-1)}}function Ie(i,n){if(i&1&&(Ea(0,`h3`),dT(1),xT(2,`t`),Md(),Ea(3,`ul`,11),NS(4,Te,6,5,`li`,null,be),Md()),i&2){let e=FS();MD(),hy(OT(2,1,`fdoc.checks`)),MD(3),RS(e.checks)}}function we(i,n){if(i&1&&(Ea(0,`div`,20),Oa(1,`ui-state-badge`,12),Ea(2,`code`),dT(3),Md()()),i&2){let e=n.$implicit;MD(),Xm(`state`,e.status??`modified`)(`labelOverride`,e.status??null),MD(2),hy(e.path)}}function Ne(i,n){if(i&1&&(Ea(0,`h3`),dT(1),xT(2,`t`),Md(),Ea(3,`p`,16)(4,`span`,17),dT(5),Md(),Ea(6,`span`,18),dT(7),xT(8,`t`),Md(),Ea(9,`span`,19),dT(10),xT(11,`t`),Md()(),NS(12,we,4,3,`div`,20,xe)),i&2){let e=FS(),l=FS(2);MD(),hy(OT(2,6,`fdoc.drift`)),MD(4),Ad(`ok `,e.ok),MD(2),py(``,OT(8,8,`fdoc.modified`),` `,e.modified?.length??0),MD(3),py(``,OT(11,10,`fdoc.missing`),` `,e.missing?.length??0),MD(2),RS(l.driftFiles(e))}}function Me(i,n){i&1&&SS(0,Ne,14,12),i&2&&CS(n.ok!==void 0?0:-1)}function Oe(i,n){if(i&1&&(Ea(0,`div`,20)(1,`code`),dT(2),Md()()),i&2){let e=n.$implicit;MD(2),hy(e.path??e)}}function Fe(i,n){if(i&1&&(Ea(0,`p`,22),dT(1),xT(2,`t`),Md()),i&2){let e=FS(2);MD(),py(`… `,e.list.length-8,` `,OT(2,2,`fdoc.more`))}}function Be(i,n){if(i&1&&(Ea(0,`h3`),dT(1),xT(2,`t`),Md(),Ea(3,`p`,21),dT(4),Md(),NS(5,Oe,3,1,`div`,20,ke),SS(7,Fe,3,4,`p`,22)),i&2){let e=FS();MD(),hy(OT(2,3,e.label)),MD(3),hy(e.list.length),MD(),RS(e.list.slice(0,8)),MD(2),CS(e.list.length>8?7:-1)}}function De(i,n){i&1&&SS(0,Be,8,5),i&2&&CS(n.list.length?0:-1)}function Ve(i,n){if(i&1&&(Ea(0,`code`),dT(1),Md()),i&2){let e=FS();MD(),hy(e.install_root??e.manifest)}}function Ue(i,n){i&1&&(Ea(0,`span`,22),dT(1),xT(2,`t`),Md()),i&2&&(MD(),hy(OT(2,1,`fdoc.portal.vendored`)))}function ze(i,n){if(i&1&&(Ea(0,`h3`),dT(1),xT(2,`t`),Md(),Ea(3,`p`,23),Oa(4,`ui-state-badge`,12),SS(5,Ve,2,1,`code`)(6,Ue,3,3,`span`,22),Md()),i&2){let e=n;MD(),hy(OT(2,4,`fdoc.portal`)),MD(3),Xm(`state`,e.state??`unverified`)(`labelOverride`,e.state??null),MD(),CS(e.install_root||e.manifest?5:e.state===`vendored`?6:-1)}}function Ae(i,n){if(i&1&&(Ea(0,`div`,20)(1,`code`),dT(2),Md()()),i&2){let e=n.$implicit;MD(2),hy(e.path)}}function Re(i,n){if(i&1&&(Ea(0,`div`,20),Oa(1,`ui-state-badge`,24),Ea(2,`code`),dT(3),Md(),dT(4),Md()),i&2){let e=n.$implicit;MD(),Xm(`labelOverride`,`conflict`),MD(2),hy(e.member),MD(),py(` `,e.forge_id,`: `,e.decision,` `)}}function $e(i,n){if(i&1&&(Ea(0,`div`,20),Oa(1,`ui-state-badge`,25),Ea(2,`code`),dT(3),Md()()),i&2){let e=n.$implicit;MD(),Xm(`labelOverride`,`unknown`),MD(2),hy(e)}}function Le(i,n){if(i&1&&(Ea(0,`div`,20),Oa(1,`ui-state-badge`,12),Ea(2,`code`),dT(3),Md()()),i&2){let e=n.$implicit;MD(),Xm(`state`,e.status??`unverified`)(`labelOverride`,e.status??null),MD(2),hy(e.member)}}function je(i,n){if(i&1&&(Ea(0,`h3`),dT(1),xT(2,`t`),Md(),NS(3,Ae,3,1,`div`,20,xe),NS(5,Re,5,4,`div`,20,ge),NS(7,$e,4,2,`div`,20,_S),NS(9,Le,4,3,`div`,20,ge)),i&2){let e=n;MD(),hy(OT(2,1,`fdoc.workspace`)),MD(2),RS(e.members??CT(3,L)),MD(2),RS(e.conflicts??CT(4,L)),MD(2),RS(e.unknown_members??CT(5,L)),MD(2),RS(e.member_results??CT(6,L))}}function Ge(i,n){if(i&1&&(Ea(0,`p`,7),dT(1),xT(2,`t`),Oa(3,`ui-state-badge`,4),Md()),i&2){let e=FS();MD(),Ad(` `,OT(2,2,`fdoc.verification`),` `),MD(2),Xm(`state`,e.verification.status)}}function Ke(i,n){if(i&1&&(Ea(0,`p`),dT(1),Md()),i&2){let e=FS(2);MD(),hy(e.error.detail)}}function qe(i,n){if(i&1&&(Ea(0,`p`,26),dT(1),xT(2,`t`),Md()),i&2){let e=FS(2);MD(),py(``,OT(2,2,`fdoc.unlock`),` `,e.error.unlock)}}function Je(i,n){if(i&1&&(Ea(0,`div`,8)(1,`p`)(2,`code`),dT(3),Md()(),SS(4,Ke,2,1,`p`),SS(5,qe,3,4,`p`,26),Md()),i&2){let e=FS();MD(3),hy(e.error.kind),MD(),CS(e.error.detail?4:-1),MD(),CS(e.error.unlock?5:-1)}}function He(i,n){if(i&1&&(Ea(0,`p`,9),Oa(1,`ui-icon`,27),dT(2),xT(3,`t`),Ea(4,`code`),dT(5),Md()()),i&2){let e=FS();MD(),Xm(`size`,13),MD(),Ad(` `,OT(3,3,`fdoc.repair`),` `),MD(3),hy(e.repair_hint)}}function Qe(i,n){if(i&1&&(Ea(0,`div`,0)(1,`div`,1)(2,`span`,2),dT(3),Md(),SS(4,Se,2,1,`span`,3),Oa(5,`ui-state-badge`,4),Md(),Ea(6,`dl`,5),NS(7,he,6,4,`div`,6,Ce),Md(),SS(9,Ie,6,3),SS(10,Me,1,1),SS(11,De,1,1),SS(12,ze,7,6),SS(13,je,11,7),SS(14,Ge,4,4,`p`,7),SS(15,Je,6,3,`div`,8),SS(16,He,6,5,`p`,9),Ea(17,`details`,10)(18,`summary`),dT(19),xT(20,`t`),Md(),Ea(21,`pre`),dT(22),Md()()()),i&2){let e,l,s,f,b=n,M=FS();MD(3),hy(b.forge_id??`forge`),MD(),CS(b.operation?4:-1),MD(),Xm(`state`,b.status??`unverified`),MD(2),RS(M.meta(b)),MD(2),CS(b.checks?.length?9:-1),MD(),CS((e=b.drift)?10:-1,e),MD(),CS((l=M.files(b))?11:-1,l),MD(),CS((s=b.forge_portal)?12:-1,s),MD(),CS((f=b.workspace)?13:-1,f),MD(),CS(b.verification?.status?14:-1),MD(),CS(b.error&&(b.error.kind||b.error.detail)?15:-1),MD(),CS(b.repair_hint?16:-1),MD(3),hy(OT(20,13,`fdoc.raw`)),MD(3),hy(M.raw())}}var j=class i{doc=on.required();raw=$(``);ngOnChanges(){this.raw.set(JSON.stringify(this.doc(),null,2))}meta(n){let e=[];n.target_root&&e.push([`doc.target`,n.target_root]),n.scope&&e.push([`doc.scope`,n.scope]),n.version&&e.push([`doc.version`,n.version]);let l=n.context?.profile??n.profile;return l&&e.push([`doc.profile`,l]),n.state_dir&&e.push([`doc.state_dir`,n.state_dir]),n.ledger_entries!==void 0&&e.push([`doc.managed`,`${n.ledger_entries}`]),e}driftFiles(n){return[...n.modified??[],...n.missing??[]].slice(0,8)}files(n){return n.managed_files?{label:`fdoc.managed_files`,list:n.managed_files}:n.planned_files?{label:`fdoc.planned_files`,list:n.planned_files}:null}static ɵfac=function(e){return new(e||i)};static ɵcmp=ai({type:i,selectors:[[`ui-forge-doc`]],inputs:{doc:[1,`doc`]},features:[xr],decls:1,vars:1,consts:[[1,`fdoc`],[1,`fdoc__head`],[1,`fdoc__title`],[1,`fdoc__op`],[3,`state`],[1,`fdoc__meta`],[1,`kv`],[1,`fdoc__verif`],[1,`fdoc__refusal`],[1,`fdoc__repair`],[1,`fdoc__raw`],[1,`fdoc__checks`],[3,`state`,`labelOverride`],[1,`cid`],[1,`detail`],[1,`repairable`],[1,`fdoc__drift`],[1,`ok`],[1,`warn`],[1,`bad`],[1,`fdoc__file`],[1,`fdoc__count`],[1,`muted`],[1,`fdoc__portal`],[`state`,`degraded`,3,`labelOverride`],[`state`,`unverified`,3,`labelOverride`],[1,`unlock`],[`name`,`refresh`,3,`size`]],template:function(e,l){if(e&1&&SS(0,Qe,23,15,`div`,0),e&2){let s;CS((s=l.doc())?0:-1,s)}},dependencies:[u,IE,EE],styles:[`.fdoc[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm)}.fdoc__head[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.fdoc__title[_ngcontent-%COMP%]{font-weight:700;font-size:var(--%NS%font-lg);letter-spacing:-.01em}.fdoc__op[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-weight:600}.fdoc__meta[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--%NS%space-2) var(--%NS%space-4);margin:0 0 var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);text-transform:uppercase;letter-spacing:.04em}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:550;word-break:break-all}h3[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0 var(--%NS%space-2);font-size:var(--%NS%font-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--%NS%fg-muted)}.fdoc__checks[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:var(--%NS%space-2)}.fdoc__checks[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-2);flex-wrap:wrap}.cid[_ngcontent-%COMP%]{font-weight:650}.detail[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.repairable[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);font-size:var(--%NS%font-xs);font-weight:650}.fdoc__drift[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-3);font-weight:650}.ok[_ngcontent-%COMP%]{color:var(--%NS%ok)}.warn[_ngcontent-%COMP%]{color:var(--%NS%warn)}.bad[_ngcontent-%COMP%]{color:var(--%NS%bad)}.fdoc__file[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-2);padding:2px 0}.fdoc__count[_ngcontent-%COMP%]{font-weight:650;margin:0}.fdoc__portal[_ngcontent-%COMP%], .fdoc__verif[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.fdoc__refusal[_ngcontent-%COMP%]{border-left:3px solid var(--%NS%bad);padding:var(--%NS%space-1) var(--%NS%space-3);margin:var(--%NS%space-3) 0;color:var(--%NS%bad)}.fdoc__refusal[_ngcontent-%COMP%] .unlock[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.fdoc__repair[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);color:var(--%NS%accent-ink)}.fdoc__raw[_ngcontent-%COMP%]{margin-top:var(--%NS%space-4)}.fdoc__raw[_ngcontent-%COMP%] pre[_ngcontent-%COMP%]{background:var(--%NS%bg);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);padding:var(--%NS%space-3);overflow-x:auto;font-size:var(--%NS%font-xs)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}`]})};var We=i=>({count:i});var Xe=()=>[`/tasks`];var Ye=i=>({task:i});var Ze=()=>[`/observe`];var et=i=>({cid:i});var tt=(i,n)=>({current:i,total:n});var it=(i,n)=>n[0];var nt=(i,n)=>n.task.id;var at=(i,n)=>n.id;var rt=(i,n)=>n.i;function ot(i,n){i&1&&(Ea(0,`section`,11),Oa(1,`div`,31),Ea(2,`p`,21),dT(3),xT(4,`t`),Md()()),i&2&&(MD(3),hy(OT(4,1,`tasks.executing`)))}function lt(i,n){if(i&1){let e=PS();Ea(0,`section`,12)(1,`h2`),dT(2),xT(3,`t`),Md(),Ea(4,`p`)(5,`code`),dT(6),Md(),dT(7),Md(),Ea(8,`p`,21),dT(9),xT(10,`t`),Md(),Ea(11,`div`,32)(12,`button`,33),La(`click`,function(){Gh(e);let s=FS();return Qh(s.regenerate())}),Oa(13,`ui-icon`,2),dT(14),xT(15,`t`),Md(),Ea(16,`button`,34),La(`click`,function(){Gh(e);let s=FS();return Qh(s.stale.set(null))}),dT(17),xT(18,`t`),Md()()()}if(i&2){let e=n,l=FS();MD(2),hy(OT(3,8,`tasks.stale.title`)),MD(4),hy(e.body.code),MD(),Ad(` `,e.body.message,` `),MD(2),hy(OT(10,10,`tasks.stale.hint`)),MD(3),Xm(`disabled`,l.busy()),MD(),Xm(`size`,14),MD(),Ad(` `,OT(15,12,`tasks.stale.regenerate`),` `),MD(3),hy(OT(18,14,`state.close`))}}function dt(i,n){if(i&1&&(Ea(0,`div`,36)(1,`dt`)(2,`code`),dT(3),Md()(),Ea(4,`dd`),dT(5),Md()()),i&2){let e=n.$implicit;MD(3),hy(e[0]),MD(2),hy(e[1])}}function st(i,n){if(i&1){let e=PS();Ea(0,`section`,13)(1,`h2`),dT(2),xT(3,`t`),Md(),Ea(4,`p`,21),dT(5),xT(6,`t`),Md(),Ea(7,`dl`,35)(8,`div`,36)(9,`dt`),dT(10),xT(11,`t`),Md(),Ea(12,`dd`),dT(13),Md()(),Ea(14,`div`,36)(15,`dt`),dT(16),xT(17,`t`),Md(),Ea(18,`dd`)(19,`code`),dT(20),Md()()(),Ea(21,`div`,36)(22,`dt`),dT(23),xT(24,`t`),Md(),Ea(25,`dd`),dT(26),Md()(),Ea(27,`div`,36)(28,`dt`),dT(29),xT(30,`t`),Md(),Ea(31,`dd`,37)(32,`code`),dT(33),Md()()(),NS(34,dt,6,2,`div`,36,it),Md(),Ea(36,`details`,38)(37,`summary`),dT(38),xT(39,`t`),Md(),Ea(40,`pre`),dT(41),Md()(),Ea(42,`div`,32)(43,`button`,39),La(`click`,function(){let s=Gh(e),f=FS();return Qh(f.execute(s.plan,s.plan_token))}),Oa(44,`ui-icon`,10),dT(45),xT(46,`t`),Md(),Ea(47,`button`,34),La(`click`,function(){Gh(e);let s=FS();return Qh(s.pending.set(null))}),dT(48),xT(49,`t`),Md()()()}if(i&2){let e=n,l=FS();MD(2),hy(OT(3,17,`tasks.plan`)),MD(3),hy(OT(6,19,`tasks.plan.review`)),MD(5),hy(OT(11,21,`tasks.plan.task`)),MD(3),hy(l.planField(e.plan,`label`)||l.planField(e.plan,`verb`)),MD(3),hy(OT(17,23,`tasks.plan.verb`)),MD(4),hy(l.planField(e.plan,`verb`)),MD(3),hy(OT(24,25,`tasks.plan.intent`)),MD(3),hy(l.planField(e.plan,`intent`)),MD(3),hy(OT(30,27,`tasks.correlation`)),MD(2),Lr(`title`,l.realCorrelation(l.planCorrelation(e))),MD(2),hy(l.planCorrelation(e)),MD(),RS(l.planArgs(e.plan)),MD(4),hy(OT(39,29,`fdoc.raw`)),MD(3),hy(l.planText(e.plan)),MD(2),Xm(`disabled`,l.busy()),MD(),Xm(`size`,14),MD(),Ad(` `,OT(46,31,`tasks.execute`),` `),MD(3),hy(OT(49,33,`state.cancel`))}}function ct(i,n){if(i&1&&Oa(0,`ui-state-badge`,42),i&2){let e=FS(),l=FS();Xm(`state`,l.stageKind(e.task.stage))(`labelOverride`,e.task.stage)}}function pt(i,n){if(i&1&&(Ea(0,`span`,21),dT(1),Md()),i&2){let e=FS();MD(),Ad(`exit `,e.task.exit_code)}}function _t(i,n){if(i&1&&(Ea(0,`span`),dT(1),Md()),i&2){let e=FS();MD(),hy(e.detail)}}function mt(i,n){if(i&1&&(Ea(0,`div`,36)(1,`dt`),dT(2),xT(3,`t`),Md(),Ea(4,`dd`),dT(5),Md()(),Ea(6,`div`,36)(7,`dt`),dT(8),xT(9,`t`),Md(),Ea(10,`dd`,48),dT(11),Md()()),i&2){let e=FS(),l=FS();MD(2),hy(OT(3,4,`table.task`)),MD(3),hy(e.task.label),MD(3),hy(OT(9,6,`table.duration`)),MD(3),hy(l.duration(e.task))}}function ut(i,n){if(i&1&&dT(0),i&2){let e=FS(2);Ad(` — `,e.unlock,` `)}}function gt(i,n){if(i&1&&(Ea(0,`p`,43)(1,`code`),dT(2),Md(),SS(3,ut,1,1),Md()),i&2){let e=FS();MD(2),hy(e.refusal??e.task.refusal),MD(),CS(e.unlock?3:-1)}}function xt(i,n){if(i&1&&(Ea(0,`li`)(1,`code`),dT(2),Md(),Ea(3,`code`,49),dT(4),Md(),Ea(5,`span`),dT(6),Md()()),i&2){let e=n.$implicit;MD(2),hy(e.status),MD(2),hy(e.kind),MD(2),hy(e.path)}}function ft(i,n){if(i&1&&(Ea(0,`ul`,44),NS(1,xt,7,3,`li`,null,MS),Md()),i&2){let e=FS();MD(),RS(e.actions)}}function yt(i,n){i&1&&Oa(0,`ui-forge-doc`,45),i&2&&Xm(`doc`,n)}function vt(i,n){if(i&1){let e=PS();Ea(0,`section`,14)(1,`h2`),dT(2),xT(3,`t`),Md(),Ea(4,`p`,40),Oa(5,`ui-state-badge`,41),SS(6,ct,1,2,`ui-state-badge`,42),SS(7,pt,2,1,`span`,21),SS(8,_t,2,1,`span`),Md(),Ea(9,`dl`,35)(10,`div`,36)(11,`dt`),dT(12),xT(13,`t`),Md(),Ea(14,`dd`,37)(15,`code`),dT(16),Md()()(),SS(17,mt,12,8),Md(),SS(18,gt,4,2,`p`,43),SS(19,ft,3,0,`ul`,44),SS(20,yt,1,1,`ui-forge-doc`,45),Ea(21,`details`,38)(22,`summary`),dT(23),xT(24,`t`),Md(),Ea(25,`pre`),dT(26),Md()(),Ea(27,`div`,32)(28,`button`,46),La(`click`,function(){let s=Gh(e),f=FS();return Qh(f.exportReceipt(s))}),Oa(29,`ui-icon`,47),dT(30),xT(31,`t`),Md(),Ea(32,`button`,34),La(`click`,function(){Gh(e);let s=FS();return Qh(s.receipt.set(null))}),dT(33),xT(34,`t`),Md()()()}if(i&2){let e,l=n,s=FS();MD(2),hy(OT(3,17,`tasks.result`)),MD(3),Xm(`state`,l.status),MD(),CS(l.task?.stage?6:-1),MD(),CS(l.task?.exit_code!==null&&l.task?.exit_code!==void 0?7:-1),MD(),CS(l.detail?8:-1),MD(4),hy(OT(13,19,`tasks.correlation`)),MD(2),Lr(`title`,s.realCorrelation(s.receiptCorrelation(l))),MD(2),hy(s.receiptCorrelation(l)),MD(),CS(l.task?17:-1),MD(),CS(l.refusal||l.task?.refusal?18:-1),MD(),CS(l.actions?.length?19:-1),MD(),CS((e=s.receiptDoc(l))?20:-1,e),MD(3),hy(OT(24,21,`fdoc.raw`)),MD(3),hy(s.receiptText(l)),MD(3),Xm(`size`,14),MD(),Ad(` `,OT(31,23,`tasks.export`),` `),MD(3),hy(OT(34,25,`state.close`))}}function Ct(i,n){if(i&1){let e=PS();Ea(0,`ui-error`,50),La(`retry`,function(){Gh(e);let s=FS();return Qh(s.load())}),Md()}i&2&&Xm(`error`,n)}function bt(i,n){i&1&&Oa(0,`ui-state-badge`,52)}function kt(i,n){if(i&1){let e=PS();Ea(0,`div`,56)(1,`button`,59),La(`click`,function(){let s=Gh(e).$implicit,f=FS(4);return Qh(f.selectTask(s.task))}),Ea(2,`span`,60),dT(3),Md(),Ea(4,`span`,61),Oa(5,`span`,62),Md(),Ea(6,`span`,63),dT(7),Md()()()}if(i&2){let e=n.$implicit,l=n.$index,s=FS(2),f=FS(2);Lr(`aria-setsize`,s.rows.length)(`aria-posinset`,f.tlSlice().start+l+1),MD(),Lr(`data-selected`,f.selectedId()===e.task.id||null),MD(),Lr(`title`,e.task.label||e.task.verb),MD(),hy(e.task.label||e.task.verb),MD(2),ja(`left`,`clamp(0px, `+e.leftPct+`%, calc(100% - 3px))`)(`width`,e.widthPct,`%`),Xm(`title`,f.tipFor(e)),Lr(`data-kind`,f.stageKind(e.task.stage))(`data-open`,e.endMs===null||null),MD(2),hy(f.duration(e.task))}}function St(i,n){if(i&1&&(Ea(0,`p`,58),dT(1),xT(2,`t`),Md()),i&2){let e=FS(2);MD(),Ad(` `,kT(2,1,`tasks.timeline.unplaced`,MT(4,We,e.unplaced.length)),` `)}}function ht(i,n){if(i&1){let e=PS();Ea(0,`div`,54),xT(1,`t`),Ea(2,`div`,55)(3,`span`),dT(4),Md(),Ea(5,`span`),dT(6),Md()(),NS(7,kt,8,13,`div`,56,nt),Md(),Ea(9,`ui-pager`,57),xT(10,`t`),La(`pageChange`,function(s){Gh(e);let f=FS(3);return Qh(f.tlPage.set(s))}),Md(),SS(11,St,3,6,`p`,58)}if(i&2){let e=FS(),l=FS(2);Lr(`aria-label`,OT(1,8,`tasks.timeline.title`)),MD(4),hy(l.fmtAt(e.windowStart)),MD(2),hy(l.fmtAt(e.windowEnd)),MD(),RS(l.pagedTlRows()),MD(2),Xm(`total`,e.rows.length)(`pageSize`,l.LIST_PAGE)(`page`,l.tlSlice().page)(`label`,OT(10,10,`tasks.timeline.title`)),MD(2),CS(e.unplaced.length?11:-1)}}function Et(i,n){i&1&&(Oa(0,`ui-empty`,53),xT(1,`t`)),i&2&&Xm(`title`,OT(1,1,`tasks.timeline.empty`))}function Pt(i,n){i&1&&SS(0,ht,12,12)(1,Et,2,3,`ui-empty`,53),i&2&&CS(n.rows.length?0:1)}function Tt(i,n){if(i&1&&(Ea(0,`section`,27)(1,`h2`,51),dT(2),xT(3,`t`),SS(4,bt,1,0,`ui-state-badge`,52),Md(),Ea(5,`p`,21),dT(6),xT(7,`t`),Md(),SS(8,Pt,2,1),Md()),i&2){let e,l=FS();MD(2),Ad(` `,OT(3,4,`tasks.timeline.title`),` `),MD(2),CS(l.timeline().partial?4:-1),MD(2),hy(OT(7,6,`tasks.timeline.hint`)),MD(2),CS((e=l.timeline())?8:-1,e)}}function It(i,n){i&1&&Oa(0,`ui-skeleton`,29)}function wt(i,n){if(i&1&&(Ea(0,`tr`)(1,`td`)(2,`a`,67),dT(3),Md()(),Ea(4,`td`)(5,`code`),dT(6),Md()(),Ea(7,`td`),Oa(8,`ui-state-badge`,42),Md(),Ea(9,`td`,37)(10,`code`),dT(11),Md()(),Ea(12,`td`,48),dT(13),Md(),Ea(14,`td`),dT(15),Md()()),i&2){let e=n.$implicit,l=n.$index,s=FS(2);Lr(`data-selected`,s.selectedId()===e.id||null)(`aria-rowindex`,s.histSlice().start+l+2),MD(2),Xm(`routerLink`,CT(12,Xe))(`queryParams`,MT(13,Ye,e.id)),MD(),Ad(` `,e.label,` `),MD(3),hy(e.verb),MD(2),Xm(`state`,s.stageKind(e.stage))(`labelOverride`,e.stage),MD(),Lr(`title`,e.correlation_id??null),MD(2),hy(e.correlation_id??`—`),MD(2),hy(s.duration(e)),MD(2),hy(e.exit_code??`—`)}}function Nt(i,n){if(i&1){let e=PS();Ea(0,`table`,64)(1,`thead`)(2,`tr`)(3,`th`,65)(4,`span`,66),dT(5),xT(6,`t`),Md()(),Ea(7,`th`,65),dT(8),xT(9,`t`),Md(),Ea(10,`th`,65),dT(11),xT(12,`t`),Md(),Ea(13,`th`,65),dT(14),xT(15,`t`),Md(),Ea(16,`th`,65),dT(17),xT(18,`t`),Md(),Ea(19,`th`,65),dT(20),xT(21,`t`),Md()()(),Ea(22,`tbody`),NS(23,wt,16,15,`tr`,null,at),Md()(),Ea(25,`ui-pager`,57),xT(26,`t`),La(`pageChange`,function(s){Gh(e);let f=FS();return Qh(f.histPage.set(s))}),Md()}if(i&2){let e=FS();Lr(`aria-rowcount`,e.tasks().length+1),MD(5),hy(OT(6,11,`table.task`)),MD(3),hy(OT(9,13,`table.verb`)),MD(3),hy(OT(12,15,`table.stage`)),MD(3),hy(OT(15,17,`table.correlation`)),MD(3),hy(OT(18,19,`table.duration`)),MD(3),hy(OT(21,21,`table.exit`)),MD(3),RS(e.pagedTasks()),MD(2),Xm(`total`,e.tasks().length)(`pageSize`,e.LIST_PAGE)(`page`,e.histSlice().page)(`label`,OT(26,23,`tasks.recent`))}}function Mt(i,n){i&1&&(Oa(0,`ui-empty`,53),xT(1,`t`)),i&2&&Xm(`title`,OT(1,1,`tasks.empty`))}function Ot(i,n){if(i&1&&SS(0,Mt,2,3,`ui-empty`,53),i&2){let e=FS();CS(e.loading()?-1:0)}}function Ft(i,n){i&1&&(Ea(0,`a`,71),dT(1),xT(2,`t`),Md()),i&2&&(Xm(`routerLink`,CT(5,Ze))(`queryParams`,MT(6,et,n)),MD(),Ad(` `,OT(2,3,`tasks.events`),` `))}function Bt(i,n){if(i&1&&(Ea(0,`div`,36)(1,`dt`),dT(2),xT(3,`t`),Md(),Ea(4,`dd`)(5,`code`),dT(6),Md()()()),i&2){let e=FS();MD(2),hy(OT(3,2,`tasks.refusal`)),MD(4),hy(e.refusal)}}function Dt(i,n){i&1&&Oa(0,`ui-state-badge`,52)}function Vt(i,n){if(i&1&&(Ea(0,`span`,48),dT(1),Md()),i&2){let e=FS().$implicit;MD(),Ad(``,e.step.duration_ms,` ms`)}}function Ut(i,n){if(i&1&&(Ea(0,`span`,86),dT(1),Md()),i&2){let e=FS().$implicit;MD(),hy(e.step.detail)}}function zt(i,n){if(i&1){let e=PS();Ea(0,`li`)(1,`button`,82),La(`click`,function(){let s=Gh(e).$implicit,f=FS(4);return Qh(f.replayIdx.set(s.i))}),Ea(2,`code`,83),dT(3),Md(),Ea(4,`span`,84),dT(5),Md(),Oa(6,`ui-state-badge`,42),SS(7,Vt,2,1,`span`,48),Ea(8,`span`,85),dT(9),Md(),SS(10,Ut,2,1,`span`,86),Md()()}if(i&2){let e=n.$implicit,l=FS(2),s=FS(2);Lr(`data-current`,e.i===s.replayIdx()||null)(`data-kind-tone`,s.statusKind(e.step.status))(`aria-setsize`,l.steps.length)(`aria-posinset`,e.i+1),MD(),Lr(`data-current`,e.i===s.replayIdx()||null),MD(2),hy(e.step.kind),MD(2),hy(e.at),MD(),Xm(`state`,s.statusKind(e.step.status))(`labelOverride`,e.step.status),MD(),CS(e.step.duration_ms!==null?7:-1),MD(2),hy(e.step.origin),MD(),CS(e.step.detail?10:-1)}}function At(i,n){if(i&1){let e=PS();Ea(0,`div`,78)(1,`button`,79),La(`click`,function(){Gh(e);let s=FS(3);return Qh(s.stepReplay(-1))}),dT(2),xT(3,`t`),Md(),Ea(4,`span`,21),dT(5),xT(6,`t`),Md(),Ea(7,`button`,80),La(`click`,function(){Gh(e);let s=FS(3);return Qh(s.stepReplay(1))}),dT(8),xT(9,`t`),Md()(),Ea(10,`ol`,81),NS(11,zt,11,12,`li`,null,rt),Md(),Ea(13,`ui-pager`,57),xT(14,`t`),La(`pageChange`,function(s){Gh(e);let f=FS(3);return Qh(f.replayManual.set(s))}),Md()}if(i&2){let e=FS(),l=FS(2);MD(),Xm(`disabled`,l.replayIdx()<=0),MD(),Ad(` `,OT(3,9,`tasks.replay.prev`),` `),MD(3),Ad(` `,kT(6,11,`tasks.replay.step`,_T(18,tt,l.replayIdx()+1,e.steps.length)),` `),MD(2),Xm(`disabled`,l.replayIdx()>=e.steps.length-1),MD(),Ad(` `,OT(9,14,`tasks.replay.next`),` `),MD(3),RS(l.pagedReplaySteps(e.steps)),MD(2),Xm(`total`,e.steps.length)(`pageSize`,l.LIST_PAGE)(`page`,l.replaySlice(e.steps.length).page)(`label`,OT(14,16,`tasks.replay.title`))}}function Rt(i,n){i&1&&(Ea(0,`p`,75),dT(1),xT(2,`t`),Md()),i&2&&(MD(),hy(OT(2,1,`tasks.replay.empty`)))}function $t(i,n){i&1&&(Ea(0,`p`,76),dT(1),xT(2,`t`),Md()),i&2&&(MD(),Ad(` `,OT(2,1,`tasks.replay.noCorrelation`),` `))}function Lt(i,n){i&1&&(Ea(0,`p`,77),Oa(1,`ui-state-badge`,87),Ea(2,`span`,21),dT(3),xT(4,`t`),Md()()),i&2&&(MD(3),hy(OT(4,1,`tasks.replay.unavailable`)))}function jt(i,n){if(i&1&&(Ea(0,`div`,72)(1,`h3`,73),Oa(2,`ui-icon`,74),dT(3),xT(4,`t`),SS(5,Dt,1,0,`ui-state-badge`,52),Md(),Ea(6,`p`,21),dT(7),xT(8,`t`),Md(),SS(9,At,15,21)(10,Rt,3,3,`p`,75)(11,$t,3,3,`p`,76)(12,Lt,5,3,`p`,77),Md()),i&2){let e,l=n;MD(2),Xm(`size`,14),MD(),Ad(` `,OT(4,5,`tasks.replay.title`),` `),MD(2),CS(l.truncated?5:-1),MD(2),hy(OT(8,7,`tasks.replay.hint`)),MD(2),CS((e=l.state)===`ready`?9:e===`empty`?10:e===`no-correlation`?11:e===`unavailable`?12:-1)}}function Gt(i,n){if(i&1){let e=PS();Ea(0,`section`,30)(1,`header`,68)(2,`h2`),Oa(3,`ui-icon`,10),dT(4),Md(),Ea(5,`button`,69),xT(6,`t`),La(`click`,function(){Gh(e);let s=FS();return Qh(s.selectedId.set(null))}),Oa(7,`ui-icon`,70),Md()(),Ea(8,`dl`,35)(9,`div`,36)(10,`dt`),dT(11),xT(12,`t`),Md(),Ea(13,`dd`)(14,`code`),dT(15),Md()()(),Ea(16,`div`,36)(17,`dt`),dT(18),xT(19,`t`),Md(),Ea(20,`dd`)(21,`code`),dT(22),Md()()(),Ea(23,`div`,36)(24,`dt`),dT(25),xT(26,`t`),Md(),Ea(27,`dd`),Oa(28,`ui-state-badge`,42),Md()(),Ea(29,`div`,36)(30,`dt`),dT(31),xT(32,`t`),Md(),Ea(33,`dd`),dT(34),Md()(),Ea(35,`div`,36)(36,`dt`),dT(37),xT(38,`t`),Md(),Ea(39,`dd`),dT(40),Md()(),Ea(41,`div`,36)(42,`dt`),dT(43),xT(44,`t`),Md(),Ea(45,`dd`,48),dT(46),Md()(),Ea(47,`div`,36)(48,`dt`),dT(49),xT(50,`t`),Md(),Ea(51,`dd`),dT(52),Md()(),Ea(53,`div`,36)(54,`dt`),dT(55),xT(56,`t`),Md(),Ea(57,`dd`,37)(58,`code`),dT(59),Md(),SS(60,Ft,3,8,`a`,71),Md()(),SS(61,Bt,7,4,`div`,36),Md(),SS(62,jt,13,9,`div`,72),Md()}if(i&2){let e,l,s=n,f=FS();MD(3),Xm(`size`,15),MD(),hy(s.label||s.verb),MD(),Lr(`aria-label`,OT(6,25,`state.close`)),MD(2),Xm(`size`,14),MD(4),hy(OT(12,27,`table.id`)),MD(4),hy(s.id),MD(3),hy(OT(19,29,`table.verb`)),MD(4),hy(s.verb),MD(3),hy(OT(26,31,`table.stage`)),MD(3),Xm(`state`,f.stageKind(s.stage))(`labelOverride`,s.stage),MD(3),hy(OT(32,33,`table.started`)),MD(3),hy(s.started_at?f.fmtEventAt(s.started_at):`—`),MD(3),hy(OT(38,35,`table.finished`)),MD(3),hy(s.finished_at?f.fmtEventAt(s.finished_at):`—`),MD(3),hy(OT(44,37,`table.duration`)),MD(3),hy(f.duration(s)),MD(3),hy(OT(50,39,`table.exit`)),MD(3),hy(s.exit_code??`—`),MD(3),hy(OT(56,41,`tasks.correlation`)),MD(2),Lr(`title`,s.correlation_id??null),MD(2),hy(s.correlation_id??`—`),MD(),CS((e=s.correlation_id)?60:-1,e),MD(),CS(s.refusal?61:-1),MD(),CS((l=f.replay())?62:-1,l)}}var fe=class i{api=p(d);task=on(``);intent=$(``);pending=$(null);receipt=$(null);tasks=$([]);error=$(null);stale=$(null);busy=$(!1);executing=$(!1);loading=$(!0);metricsSrc=new l;selectedId=$(null);replayIdx=$(0);deepApplied=$(null);histPage=$(0);tlPage=$(0);replayManual=$(null);LIST_PAGE=50;timeline=nn(()=>M(this.tasks()));selectedTask=nn(()=>this.tasks().find(n=>n.id===this.selectedId())??null);replay=nn(()=>x(this.metricsSrc.data(),this.selectedTask()));histSlice=nn(()=>V(this.tasks().length,this.LIST_PAGE,this.histPage()));pagedTasks=nn(()=>this.tasks().slice(this.histSlice().start,this.histSlice().end));tlSlice=nn(()=>V(this.timeline().rows.length,this.LIST_PAGE,this.tlPage()));pagedTlRows=nn(()=>this.timeline().rows.slice(this.tlSlice().start,this.tlSlice().end));replaySlice(n){let l=this.replayManual()??Math.floor(this.replayIdx()/this.LIST_PAGE);return V(n,this.LIST_PAGE,l)}stepReplay(n){this.replayManual.set(null);let e=this.replay()?.steps??[],l=this.replayIdx()+n;this.replayIdx.set(Math.max(0,Math.min(l,e.length-1)))}pagedReplaySteps(n){let e=this.replaySlice(n.length);return n.slice(e.start,e.end).map((l,s)=>({step:l,i:e.start+s,at:this.fmtEventAt(l.at)}))}constructor(){Kl(()=>{let n=this.task();!n||n===this.deepApplied()||this.loading()||(this.deepApplied.set(n),this.tasks().some(e=>e.id===n)&&(this.selectedId.set(n),this.replayIdx.set(0)))}),Kl(()=>{this.tasks(),this.histPage.set(0),this.tlPage.set(0)}),Kl(()=>{this.replay(),this.replayManual.set(null)}),this.load()}async load(){let n=this.metricsSrc.load(()=>this.api.metrics());try{this.tasks.set(await TE(this.api.tasks()))}catch(e){this.error.set(e instanceof a?e:new a(0))}finally{this.loading.set(!1)}await n}selectTask(n){this.selectedId.set(n.id),this.replayIdx.set(0)}fmtAt(n){return n===null?`—`:new Date(n).toLocaleString()}fmtEventAt(n){let e=Date.parse(n);return Number.isNaN(e)?n:new Date(e).toLocaleString()}tipFor(n){return`${this.fmtAt(n.startMs)} \u2192 ${n.endMs===null?`—`:this.fmtAt(n.endMs)}`}statusKind(n){let e=(n||``).toLowerCase();return[`ok`,`done`,`completed`,`success`,`succeeded`,`pass`,`passed`].includes(e)?`supported`:[`failed`,`fail`,`error`,`refused`,`denied`].includes(e)?`error`:[`skipped`,`cancelled`,`canceled`,`partial`,`degraded`].includes(e)?`warn`:[`running`,`pending`,`started`,`in_progress`,`planning`,`verifying`].includes(e)?`info`:`muted`}async plan(){if(!(this.busy()||!this.intent().trim())){this.busy.set(!0),this.error.set(null),this.stale.set(null),this.receipt.set(null);try{let n=await TE(this.api.tasksPlan({intent:this.intent()})),e=n.correlation_id;this.pending.set({plan_token:n.plan_token,plan:n.plan,correlation_id:typeof e==`string`&&e?e:null})}catch(n){this.error.set(n instanceof a?n:new a(0))}finally{this.busy.set(!1)}}}async execute(n,e){if(!this.busy()){this.busy.set(!0),this.executing.set(!0),this.error.set(null);try{this.receipt.set(await TE(this.api.tasksExecute(n,e))),this.pending.set(null),await this.load()}catch(l){let s=l instanceof a?l:new a(0);s.body.code===`PORTAL-PLAN-STALE`?(this.pending.set(null),this.stale.set(s)):this.error.set(s)}finally{this.busy.set(!1),this.executing.set(!1)}}}async regenerate(){this.busy()||!this.stale()||(this.stale.set(null),await this.plan())}exportReceipt(n){let e=new Blob([JSON.stringify(n,null,2)],{type:`application/json`}),l=URL.createObjectURL(e),s=document.createElement(`a`);s.href=l,s.download=n.task?.id?`receipt-${n.task.id}.json`:`receipt.json`,s.click(),URL.revokeObjectURL(l)}planText(n){return JSON.stringify(n,null,2)}receiptText(n){return JSON.stringify(n,null,2)}planCorrelation(n){if(n.correlation_id)return n.correlation_id;let e=n.plan.correlation_id;return typeof e==`string`&&e?e:`—`}receiptCorrelation(n){let e=n.task?.correlation_id;if(e)return e;let l=n.correlation_id;return typeof l==`string`&&l?l:`—`}realCorrelation(n){return n===`—`?null:n}duration(n){return f(n)}planField(n,e){let l=n[e];return l==null?``:String(l)}planArgs(n){let e=n.args;return!e||typeof e!=`object`?[]:Object.entries(e).map(([l,s])=>[l,typeof s==`object`?JSON.stringify(s):String(s)])}receiptDoc(n){let e=n.task?.receipt;return e&&typeof e==`object`?e:null}stageKind(n){let e=(n||``).toLowerCase();return e===`completed`?`supported`:[`failed`,`refused`,`cancelled`].includes(e)?`error`:[`awaiting_approval`,`partial`].includes(e)?`warn`:[`running`,`planning`,`verifying`].includes(e)?`info`:`muted`}static ɵfac=function(e){return new(e||i)};static ɵcmp=ai({type:i,selectors:[[`page-tasks`]],inputs:{task:[1,`task`]},decls:69,vars:61,consts:[[`hintId`,`diagnose`,3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`data-section`,`intent`,1,`card`],[`for`,`intent`,1,`lbl`],[1,`intent-row`],[1,`search-field`,`intent-field`],[`name`,`terminal`,3,`size`],[`id`,`intent`,`type`,`text`,1,`input`,3,`ngModelChange`,`keydown.enter`,`placeholder`,`ngModel`,`disabled`],[`data-action`,`plan`,1,`btn`,`btn--primary`,3,`click`,`disabled`],[`name`,`tasks`,3,`size`],[`role`,`status`,`aria-live`,`polite`,`data-section`,`running`,1,`card`,`running`],[`role`,`alert`,`data-section`,`stale`,1,`card`,`stale`],[`data-lift`,``,`data-section`,`plan`,1,`card`],[`data-lift`,``,`data-section`,`receipt`,`aria-live`,`polite`,1,`card`],[3,`error`],[`aria-labelledby`,`ops-h`,`data-section`,`ops`,1,`card`,`ops`],[`id`,`ops-h`],[1,`ops__list`],[`data-op`,`plan`,1,`op`],[1,`op__body`],[1,`muted`],[`state`,`supported`],[`data-op`,`execute`,1,`op`],[`data-op`,`cancel`,`data-state`,`unverified`,1,`op`],[`state`,`unverified`],[1,`muted`,`limits`],[`data-section`,`timeline`,`aria-labelledby`,`tl-h`,1,`card`],[`data-section`,`history`,1,`card`],[`kind`,`card`],[`data-section`,`task-detail`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[`aria-hidden`,`true`,1,`running__spinner`],[1,`row`],[`data-action`,`regenerate`,1,`btn`,`btn--primary`,3,`click`,`disabled`],[1,`btn`,3,`click`],[1,`plan-card`],[1,`kv`],[1,`corr`],[1,`raw`],[`data-action`,`execute`,1,`btn`,`btn--primary`,3,`click`,`disabled`],[1,`receipt__status`],[3,`state`],[3,`state`,`labelOverride`],[`role`,`alert`,1,`refusal`],[1,`actions`],[3,`doc`],[`data-action`,`export`,1,`btn`,3,`click`],[`name`,`install`,3,`size`],[1,`num`],[1,`actions__kind`],[3,`retry`,`error`],[`id`,`tl-h`],[`state`,`PARTIAL`],[`icon`,`tasks`,3,`title`],[`role`,`list`,1,`tl`],[`aria-hidden`,`true`,1,`tl__axis`],[`role`,`listitem`,1,`tl__item`],[3,`pageChange`,`total`,`pageSize`,`page`,`label`],[`data-note`,`unplaced`,1,`muted`,`tl__unplaced`],[`type`,`button`,1,`tl__row`,3,`click`],[1,`tl__label`],[1,`tl__track`],[1,`tl__bar`,3,`title`],[1,`tl__dur`,`num`],[1,`table`],[`scope`,`col`],[1,`sr-only`],[`data-action`,`inspect`,1,`linklike`,3,`routerLink`,`queryParams`],[1,`detail__head`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[`data-action`,`correlated`,1,`linklike`,`corr__events`,3,`routerLink`,`queryParams`],[`data-section`,`replay`,1,`replay`],[1,`replay__title`],[`name`,`history`,3,`size`],[`data-state`,`empty`,1,`muted`],[`data-state`,`no-correlation`,1,`muted`],[`data-state`,`unavailable`,1,`unv-cell`],[1,`replay__controls`],[`data-action`,`prev`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[`data-action`,`next`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[1,`replay__steps`],[`type`,`button`,1,`replay__step`,3,`click`],[1,`replay__kind`],[1,`replay__at`],[1,`replay__origin`],[1,`replay__detail`],[`state`,`UNVERIFIED`]],template:function(e,l){if(e&1&&(Ea(0,`ui-page-header`,0),xT(1,`t`),xT(2,`t`),Ea(3,`button`,1),La(`click`,function(){return l.load()}),Oa(4,`ui-icon`,2),dT(5),xT(6,`t`),Md()(),Ea(7,`section`,3)(8,`label`,4),dT(9),xT(10,`t`),Md(),Ea(11,`div`,5)(12,`div`,6),Oa(13,`ui-icon`,7),Ea(14,`input`,8),xT(15,`t`),pb(),La(`ngModelChange`,function(f){return l.intent.set(f)})(`keydown.enter`,function(){return l.plan()}),Md()(),Ea(16,`button`,9),La(`click`,function(){return l.plan()}),Oa(17,`ui-icon`,10),dT(18),xT(19,`t`),Md()()(),SS(20,ot,5,3,`section`,11),SS(21,lt,19,16,`section`,12),SS(22,st,50,35,`section`,13),SS(23,vt,35,27,`section`,14),SS(24,Ct,1,1,`ui-error`,15),Ea(25,`section`,16)(26,`h2`,17),dT(27),xT(28,`t`),Md(),Ea(29,`ul`,18)(30,`li`,19)(31,`span`,20)(32,`strong`),dT(33),xT(34,`t`),Md(),Ea(35,`small`,21),dT(36),xT(37,`t`),Md()(),Oa(38,`ui-state-badge`,22),Md(),Ea(39,`li`,23)(40,`span`,20)(41,`strong`),dT(42),xT(43,`t`),Md(),Ea(44,`small`,21),dT(45),xT(46,`t`),Md()(),Oa(47,`ui-state-badge`,22),Md(),Ea(48,`li`,24)(49,`span`,20)(50,`strong`),dT(51),xT(52,`t`),Md(),Ea(53,`small`,21),dT(54),xT(55,`t`),Md()(),Oa(56,`ui-state-badge`,25),Md()(),Ea(57,`p`,26),dT(58),xT(59,`t`),Md()(),SS(60,Tt,9,8,`section`,27),Ea(61,`section`,28)(62,`h2`),dT(63),xT(64,`t`),Md(),SS(65,It,1,0,`ui-skeleton`,29),SS(66,Nt,27,25)(67,Ot,1,1),Md(),SS(68,Gt,63,43,`section`,30)),e&2){let s,f,b,M,K;Xm(`title`,OT(1,31,`tasks.title`))(`subtitle`,OT(2,33,`tasks.subtitle`)),MD(3),Xm(`disabled`,l.busy()),MD(),Xm(`size`,15),MD(),Ad(` `,OT(6,35,`state.refresh`),` `),MD(4),hy(OT(10,37,`tasks.intent.label`)),MD(4),Xm(`size`,15),MD(),Xm(`placeholder`,OT(15,39,`tasks.intent.placeholder`))(`ngModel`,l.intent())(`disabled`,l.busy()),mb(),MD(2),Xm(`disabled`,l.busy()||!l.intent().trim()),MD(),Xm(`size`,14),MD(),Ad(` `,OT(19,41,`tasks.intent.run`),` `),MD(2),CS(l.executing()?20:-1),MD(),CS((s=l.stale())?21:-1,s),MD(),CS((f=l.pending())?22:-1,f),MD(),CS((b=l.receipt())?23:-1,b),MD(),CS((M=l.error())?24:-1,M),MD(3),hy(OT(28,43,`tasks.ops.title`)),MD(6),hy(OT(34,45,`tasks.intent.run`)),MD(3),hy(OT(37,47,`tasks.ops.plan.hint`)),MD(6),hy(OT(43,49,`tasks.execute`)),MD(3),hy(OT(46,51,`tasks.ops.execute.hint`)),MD(6),hy(OT(52,53,`state.cancel`)),MD(3),hy(OT(55,55,`tasks.ops.cancel.hint`)),MD(4),hy(OT(59,57,`tasks.limits`)),MD(2),CS(l.tasks().length?60:-1),MD(3),hy(OT(64,59,`tasks.recent`)),MD(2),CS(l.loading()?65:-1),MD(),CS(l.tasks().length?66:67),MD(2),CS((K=l.selectedTask())?68:-1,K)}},dependencies:[_n,je$1,pn,Lt$1,Mc,T,u,_,D,IE,j,h,k,EE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);text-transform:uppercase;letter-spacing:.04em}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:550;word-break:break-all}.corr[_ngcontent-%COMP%]{max-width:170px}.corr[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.corr__events[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs)}.limits[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0 0;font-size:var(--%NS%font-xs)}.receipt__status[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-3)}.actions[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-sm);margin:0 0 var(--%NS%space-3);max-height:200px;overflow:auto}.actions[_ngcontent-%COMP%] li[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);flex:none}.actions__kind[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)!important}.row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-top:var(--%NS%space-3)}.tl[_ngcontent-%COMP%]{display:grid;gap:4px;margin-top:var(--%NS%space-3)}.tl__axis[_ngcontent-%COMP%]{display:flex;justify-content:space-between;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);margin-left:12rem;font-variant-numeric:tabular-nums}.tl__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:12rem 1fr 5.5rem;align-items:center;gap:var(--%NS%space-2);border:1px solid transparent;border-radius:var(--%NS%radius-md);background:none;font:inherit;color:inherit;text-align:left;padding:3px var(--%NS%space-2);cursor:pointer;width:100%;transition:background var(--%NS%motion-fast),border-color var(--%NS%motion-fast)}.tl__row[_ngcontent-%COMP%]:hover{background:var(--%NS%bg-hover)}.tl__row[data-selected][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);background:var(--%NS%accent-bg)}.tl__label[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm);font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl__track[_ngcontent-%COMP%]{position:relative;height:14px;border-radius:var(--%NS%radius-pill);background:var(--%NS%bg);border:1px solid var(--%NS%border);overflow:hidden}.tl__bar[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;min-width:3px;border-radius:var(--%NS%radius-pill);background:var(--%NS%bar-fg, var(--%NS%fg-muted))}.tl__bar[data-open][_ngcontent-%COMP%]{background:repeating-linear-gradient(-45deg,var(--%NS%bar-fg, var(--%NS%fg-muted)) 0 3px,transparent 3px 6px);border-right:2px dashed var(--%NS%bar-fg, var(--%NS%fg-muted))}.tl__bar[data-kind=supported][_ngcontent-%COMP%]{--%NS%bar-fg: var(--%NS%ok)}.tl__bar[data-kind=error][_ngcontent-%COMP%]{--%NS%bar-fg: var(--%NS%error)}.tl__bar[data-kind=warn][_ngcontent-%COMP%]{--%NS%bar-fg: var(--%NS%warn)}.tl__bar[data-kind=info][_ngcontent-%COMP%]{--%NS%bar-fg: var(--%NS%info)}.tl__dur[_ngcontent-%COMP%]{text-align:right}.tl__dur[_ngcontent-%COMP%], .tl__unplaced[_ngcontent-%COMP%], .replay__at[_ngcontent-%COMP%], .replay__origin[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.tl__unplaced[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0}.detail[_ngcontent-%COMP%]{border-left:3px solid var(--%NS%accent)}.detail__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.replay[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3);border-top:1px solid var(--%NS%border);padding-top:var(--%NS%space-3)}.replay__title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-1);font-size:var(--%NS%font-md)}.replay__title[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.replay__controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:var(--%NS%space-2) 0}.replay__steps[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:4px}.replay__step[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-2);width:100%;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:none;font:inherit;color:inherit;text-align:left;padding:var(--%NS%space-2) var(--%NS%space-3);cursor:pointer;transition:border-color var(--%NS%motion-fast),box-shadow var(--%NS%motion-fast),background var(--%NS%motion-fast)}.replay__step[_ngcontent-%COMP%]:hover, .replay__step[data-current][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink)}.replay__step[data-current][_ngcontent-%COMP%]{box-shadow:0 0 0 1px var(--%NS%accent);background:var(--%NS%accent-bg)}.replay__kind[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.replay__at[_ngcontent-%COMP%]{font-variant-numeric:tabular-nums}.replay__detail[_ngcontent-%COMP%]{flex-basis:100%;font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted);overflow-wrap:anywhere}#tl-h[_ngcontent-%COMP%], .detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap}@media(max-width:720px){.tl__axis[_ngcontent-%COMP%]{margin-left:0}.tl__row[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:2px}.tl__dur[_ngcontent-%COMP%]{text-align:left}}`]})};export{fe as TasksPage};
@@ -0,0 +1 @@
1
+ import{A as Lr,Dt as hy,F as Mc,H as OT,I as Md,L as NS,M as MD,U as Oa,X as RS,f as EE,ht as ai,m as Ea,r as Ad,sn as xT,st as Xm,vt as dT,x as IE}from"./chunk-DFkLw9sv.js";import"./main-FURAVAHM.js";import{t as T}from"./chunk-CpDhHwF4.js";var S=(i,n)=>n.id;var x=(i,n)=>n.route;function N(i,n){if(i&1&&(Ea(0,`a`,3),Oa(1,`ui-icon`,5),dT(2),xT(3,`t`),Md()),i&2){let e=n.$implicit;Xm(`routerLink`,`/guide`)(`fragment`,e.id),MD(),Xm(`name`,e.icon)(`size`,14),MD(),Ad(` `,OT(3,5,e.titleKey),` `)}}function P(i,n){if(i&1&&(Ea(0,`a`,8),dT(1),xT(2,`t`),Oa(3,`ui-icon`,9),Md()),i&2){let e=n.$implicit;Xm(`routerLink`,e.route),MD(),Ad(` `,OT(2,3,e.labelKey),` `),MD(2),Xm(`size`,13)}}function C(i,n){if(i&1&&(Ea(0,`section`,4)(1,`h2`),Oa(2,`ui-icon`,5),dT(3),xT(4,`t`),Md(),Ea(5,`p`,6),dT(6),xT(7,`t`),Md(),Ea(8,`p`,7),NS(9,P,4,5,`a`,8,x),Md()()),i&2){let e=n.$implicit;Xm(`id`,e.id),MD(2),Xm(`name`,e.icon)(`size`,17),MD(),Ad(` `,OT(4,5,e.titleKey),` `),MD(3),hy(OT(7,7,e.bodyKey)),MD(3),RS(e.links)}}var M=[{id:`start`,icon:`dashboard`,titleKey:`guide.start.title`,bodyKey:`guide.start.body`,links:[{route:`/dashboard`,labelKey:`nav.dashboard`}]},{id:`forge`,icon:`gem`,titleKey:`guide.forge.title`,bodyKey:`guide.forge.body`,links:[{route:`/forges`,labelKey:`nav.forges`},{route:`/federation`,labelKey:`nav.federation`}]},{id:`agent`,icon:`agents`,titleKey:`guide.agent.title`,bodyKey:`guide.agent.body`,links:[{route:`/agents`,labelKey:`nav.agents`},{route:`/match`,labelKey:`nav.match`}]},{id:`skill`,icon:`skills`,titleKey:`guide.skill.title`,bodyKey:`guide.skill.body`,links:[{route:`/skills`,labelKey:`nav.skills`}]},{id:`mcp`,icon:`mcp`,titleKey:`guide.mcp.title`,bodyKey:`guide.mcp.body`,links:[{route:`/mcp`,labelKey:`nav.mcp`},{route:`/hosts`,labelKey:`nav.hosts`}]},{id:`graph`,icon:`graph`,titleKey:`guide.graph.title`,bodyKey:`guide.graph.body`,links:[{route:`/graph`,labelKey:`nav.graph`},{route:`/knowledge`,labelKey:`nav.knowledge`}]},{id:`install`,icon:`install`,titleKey:`guide.install.title`,bodyKey:`guide.install.body`,links:[{route:`/install`,labelKey:`nav.install`},{route:`/profiles`,labelKey:`nav.profiles`}]},{id:`diagnose`,icon:`pulse`,titleKey:`guide.diagnose.title`,bodyKey:`guide.diagnose.body`,links:[{route:`/tasks`,labelKey:`nav.tasks`},{route:`/observe`,labelKey:`nav.observe`}]},{id:`evidence`,icon:`execution`,titleKey:`guide.evidence.title`,bodyKey:`guide.evidence.body`,links:[{route:`/execution`,labelKey:`nav.execution`},{route:`/tasks`,labelKey:`nav.tasks`}]}];var h=class i{sections=M;static ɵfac=function(e){return new(e||i)};static ɵcmp=ai({type:i,selectors:[[`page-guide`]],decls:12,vars:12,consts:[[3,`title`,`subtitle`],[1,`intro`],[1,`toc`],[1,`toc__item`,3,`routerLink`,`fragment`],[1,`card`,`gsec`,3,`id`],[3,`name`,`size`],[1,`gsec__body`],[1,`gsec__links`],[1,`gsec__link`,3,`routerLink`],[`name`,`chevron-right`,3,`size`]],template:function(e,m){e&1&&(Oa(0,`ui-page-header`,0),xT(1,`t`),xT(2,`t`),Ea(3,`p`,1),dT(4),xT(5,`t`),Md(),Ea(6,`nav`,2),xT(7,`t`),NS(8,N,4,7,`a`,3,S),Md(),NS(10,C,11,9,`section`,4,S)),e&2&&(Xm(`title`,OT(1,4,`guide.title`))(`subtitle`,OT(2,6,`guide.subtitle`)),MD(4),hy(OT(5,8,`guide.intro`)),MD(2),Lr(`aria-label`,OT(7,10,`guide.toc`)),MD(2),RS(m.sections),MD(2),RS(m.sections))},dependencies:[Mc,T,IE,EE],styles:[`.intro[_ngcontent-%COMP%]{max-width:70ch;color:var(--%NS%fg-muted);margin:0 0 var(--%NS%space-4)}.toc[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-5)}.toc__item[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:2px var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-pill);background:var(--%NS%bg-elevated);color:var(--%NS%fg);font-size:var(--%NS%font-sm);font-weight:550;text-decoration:none;transition:border-color var(--%NS%motion-fast),background var(--%NS%motion-fast)}.toc__item[_ngcontent-%COMP%]:hover{border-color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);color:var(--%NS%accent-ink)}.gsec[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);max-width:72ch;scroll-margin-top:calc(var(--%NS%topbar-h) + var(--%NS%space-3))}.gsec[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.gsec[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.gsec__body[_ngcontent-%COMP%]{margin:0;color:var(--%NS%fg-muted);line-height:1.6}.gsec__links[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2) var(--%NS%space-4);margin:var(--%NS%space-3) 0 0}.gsec__link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;min-height:24px;font-size:var(--%NS%font-sm);font-weight:600;text-decoration:none}.gsec__link[_ngcontent-%COMP%]:hover{color:var(--%NS%accent-ink)}`]})};export{h as GuidePage};
@@ -0,0 +1 @@
1
+ import{A as Lr,At as kT,Bt as on,Ct as ge,D as Kl,Dt as hy,F as Mc,H as OT,Ht as p,I as Md,L as NS,M as MD,P as MT,U as Oa,W as PS,X as RS,Z as SS,dt as _S,f as EE,ft as _T,g as FS,ht as ai,i as At$1,k as La,kt as ja,l as CS,m as Ea,q as Qh,r as Ad,sn as xT,st as Xm,t as $,u as CT,vt as dT,x as IE,y as Gh,zt as nn}from"./chunk-DFkLw9sv.js";import{a as d}from"./main-FURAVAHM.js";import{t as D$1}from"./chunk-CgS3he5O.js";import{t as h}from"./chunk-QjrSdDLo.js";import{t as u}from"./chunk-BfXakSL4.js";import{t as T}from"./chunk-CpDhHwF4.js";import{a as l,s as y}from"./chunk-BZz-ye3r.js";import{t as _}from"./chunk-Chbgw2Fv.js";import{r as p$1}from"./chunk-D-7Jr8A3.js";import{n as k,t as V}from"./chunk-Bu575p0q.js";function Ne(t){if(!t)return null;let n=Date.parse(t);return Number.isFinite(n)?n:null}var ve=t=>t.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();function fe(t){let n=t.map((a,s)=>({event:a,idx:s,timeMs:Ne(a.timestamp)}));return{placed:n.filter(a=>a.timeMs!==null).sort((a,s)=>a.timeMs-s.timeMs||a.idx-s.idx),unplaced:n.filter(a=>a.timeMs===null)}}var Oe=new Set([`refused`,`failed`,`timeout`,`error`,`denied`]);function Be(t){return Oe.has((t.status??``).toLowerCase())}function Ce(t){let n=new Map,e=[];for(let m of t){let h=m.correlation_id;if(h){let N=n.get(h);N?N.push(m):n.set(h,[m])}else e.push(m)}let o=[],a=(m,h)=>{let{placed:N,unplaced:J}=fe(h),G=N.length?N[0].timeMs:null,z=N.length?N[N.length-1].timeMs:null;return{key:m??``,correlationId:m,events:[...N,...J],placed:N,unplaced:J,startMs:G,endMs:z,durationMs:G!==null&&z!==null?z-G:null,errorCount:h.filter(Be).length,spans:Ve(N),leftPct:0,widthPct:0,tickGradient:Fe(N,G,z),partial:J.length>0}};for(let[m,h]of n)o.push(a(m,h));let s=[];if(e.length){let m=a(null,e);s=m.events,o.push(m)}o.sort((m,h)=>m.startMs===null&&h.startMs===null?m.key<h.key?-1:1:m.startMs===null?1:h.startMs===null?-1:m.startMs-h.startMs||(m.key<h.key?-1:1));let y=o.map(m=>m.startMs).filter(m=>m!==null),x=o.map(m=>m.endMs).filter(m=>m!==null),M=y.length?Math.min(...y):null,F=x.length?Math.max(...x):null,O=M!==null&&F!==null?F-M:0;for(let m of o){m.startMs===null||M===null||!O?(m.leftPct=0,m.widthPct=m.startMs===null?0:100):(m.leftPct=(m.startMs-M)/O*100,m.widthPct=Math.max(0,((m.endMs??m.startMs)-m.startMs)/O*100));for(let h of m.spans)M===null||!O?(h.leftPct=0,h.widthPct=0):(h.leftPct=(h.startMs-M)/O*100,h.widthPct=Math.max(0,(h.endMs-h.startMs)/O*100))}let Z=o.reduce((m,h)=>m+h.unplaced.length,0);return{groups:o,windowStart:M,windowEnd:F,unlinked:s,unplacedCount:Z,partial:Z>0}}function Ve(t){let n=new Map;for(let o of t){let a=o.timeMs;if(a===null)continue;let s=o.event.span_id??``,y=n.get(s)??{},x=o.event.duration_ms;typeof x==`number`&&x>=0&&(y.end=a,y.start=a-x),o.event.event_type.endsWith(`.start`)&&(y.start=y.start===void 0?a:Math.min(y.start,a)),n.set(s,y)}let e=[];for(let[o,a]of n)a.start===void 0||a.end===void 0||a.end<a.start||o&&e.push({spanId:o,startMs:a.start,endMs:a.end,leftPct:0,widthPct:0});return e.sort((o,a)=>o.startMs-a.startMs||(o.spanId<a.spanId?-1:1))}var H={supported:`var(--ok)`,error:`var(--error)`,warn:`var(--warn)`,info:`var(--info)`,muted:`var(--fg-muted)`};var j=.8;function Fe(t,n,e){if(!t.length||n===null||e===null)return``;let o=e-n,a=x=>+x.toFixed(3);if(o<=0){let x=t[t.length-1],M=H[D(x.event.status)]??H.muted;return`linear-gradient(90deg, ${M} 0%, ${M} ${j}%, transparent ${j}%)`}let s=t.map(x=>Math.max(0,Math.min((x.timeMs-n)/o*100,100-j))),y=[`transparent 0%`];for(let x=0;x<t.length;x++){let M=s[x],F=Math.min(M+j,x+1<s.length?s[x+1]:100),O=H[D(t[x].event.status)]??H.muted;y.push(`transparent ${a(M)}%`,`${O} ${a(M)}%`,`${O} ${a(F)}%`,`transparent ${a(F)}%`)}return y.push(`transparent 100%`),`linear-gradient(90deg, ${y.join(`, `)})`}var De=5e3;function Ee(t){let{placed:n,unplaced:e}=fe(t),o=[...n,...e],a=[],s=null;for(let y of o){let x=null;s!==null&&y.timeMs!==null&&(x=Math.max(0,y.timeMs-s)),y.timeMs!==null&&(s=y.timeMs);let M=x===null?0:Math.min(x,De);a.push({event:y,gapMs:x,waitMs:M,compressed:x!==null&&x>M})}return a}function be(t){return[t.event_type,t.source??``,t.target??``,t.correlation_id??``,t.span_id??``,t.status??``,JSON.stringify(t.metadata??{}),JSON.stringify(t.evidence??{})].map(ve).join(` `)}function he(t){return new Map(t.map(n=>[n,be(n)]))}function Se(t,n,e){let o=n.correlation.trim(),a=ve(n.q);return t.filter(s=>n.type!==null&&s.event_type!==n.type||n.status!==null&&s.status!==n.status||o&&!(s.correlation_id??``).includes(o)?!1:a?(e?.get(s)??be(s)).includes(a):!0)}function Pe(t){let n=new Map,e=new Map,o=new Map;return t.forEach((a,s)=>{if(o.set(a,s),a.correlation_id){let y=n.get(a.correlation_id);y?y.push(a):n.set(a.correlation_id,[a])}if(a.span_id){let y=e.get(a.span_id);y?y.push(a):e.set(a.span_id,[a])}}),{byCorrelation:n,bySpan:e,pos:o}}function Me(t,n){let e=new Set;for(let o of n.byCorrelation.get(t.correlation_id??``)??[])o!==t&&e.add(o);for(let o of n.bySpan.get(t.span_id??``)??[])o!==t&&e.add(o);return[...e].sort((o,a)=>(n.pos.get(o)??0)-(n.pos.get(a)??0))}function we(t,n){return t.parent_span_id?n.bySpan.get(t.parent_span_id)?.[0]??null:null}function D(t){let n=(t??``).toLowerCase();return[`ok`,`done`,`completed`,`success`,`succeeded`,`pass`,`passed`].includes(n)?`supported`:[`failed`,`fail`,`error`,`refused`,`denied`].includes(n)?`error`:[`skipped`,`cancelled`,`canceled`,`partial`,`degraded`,`timeout`].includes(n)?`warn`:[`running`,`pending`,`started`,`in_progress`,`planning`,`verifying`].includes(n)?`info`:`muted`}function X(t){return t?t.length>10?`${t.slice(0,8)}\u2026`:t:`—`}function U(t){if(!t)return`—`;let n=new Date(t);return Number.isNaN(n.getTime())?t:n.toLocaleString()}function Re(t){return t===null?`—`:`+${p$1(t)}`}function Ie(t,n=0){return t.map((e,o)=>({e,position:n+o+1,at:U(e.timestamp),kind:D(e.status),label:e.status??`—`,dur:e.duration_ms!==void 0?`${e.duration_ms} ms`:null,flow:e.source||e.target?`${e.source??`—`} \u2192 ${e.target??`—`}`:null,cidShort:e.correlation_id?X(e.correlation_id):null,cidFull:e.correlation_id??null}))}function ke(t,n=0){return t.map((e,o)=>{let a=n+o,s=e.event.event;return{step:e,index:a,gap:Re(e.gapMs),at:U(s.timestamp),kind:D(s.status),label:s.status??`—`,dur:s.duration_ms!==void 0?`${s.duration_ms} ms`:null,flow:s.source||s.target?`${s.source??`—`} \u2192 ${s.target??`—`}`:null,unplaced:e.event.timeMs===null}})}var $e=t=>({time:t});var Ae=t=>({dropped:t});var Ge=t=>({count:t});var ze=(t,n)=>({current:t,total:n});var Le=()=>[`/tasks`];var Ke=t=>({task:t});var qe=(t,n)=>n.key||`unlinked`;var He=(t,n)=>n.spanId;var je=(t,n)=>n.step.event.idx;var Ue=(t,n)=>n.e.event_id??n.position;var Je=(t,n)=>n.event_id??t;function We(t,n){t&1&&(Ea(0,`section`,5),Oa(1,`ui-state-badge`,8),Ea(2,`span`,9),dT(3),xT(4,`t`),Md()()),t&2&&(MD(3),hy(OT(4,1,`execution.unavailable`)))}function Qe(t,n){if(t&1){let e=PS();Ea(0,`ui-error`,10),La(`retry`,function(){Gh(e);let a=FS();return Qh(a.load())}),Md()}t&2&&Xm(`error`,n)}function Xe(t,n){t&1&&(Ea(0,`section`,7),xT(1,`t`),Oa(2,`ui-skeleton`,11),Md()),t&2&&(Lr(`aria-label`,OT(1,2,`state.loading`)),MD(2),Xm(`lines`,3))}function Ye(t,n){if(t&1&&(Ea(0,`span`),dT(1),xT(2,`t`),Md()),t&2){let e=FS(2);MD(),Ad(` · `,kT(2,1,`common.updatedAt`,MT(4,$e,e.stamp(n))))}}function Ze(t,n){if(t&1&&(Ea(0,`p`,23),Oa(1,`ui-icon`,31),Ea(2,`span`),dT(3),xT(4,`t`),Md()()),t&2){let e=FS();MD(),Xm(`size`,14),MD(2),hy(kT(4,2,`execution.truncated`,MT(5,Ae,e.dropped)))}}function et(t,n){if(t&1){let e=PS();Ea(0,`a`,32),La(`click`,function(a){Gh(e);let s=FS(2);return Qh(s.skipToEvents(a))}),dT(1),xT(2,`t`),Md()}t&2&&(MD(),hy(OT(2,1,`execution.skipToEvents`)))}function tt(t,n){t&1&&Oa(0,`ui-state-badge`,34)}function nt(t,n){if(t&1&&(Ea(0,`code`),dT(1),Md()),t&2){let e=FS().$implicit,o=FS(4);MD(),hy(o.shortId(e.correlationId))}}function it(t,n){t&1&&(Ea(0,`span`,9),dT(1),xT(2,`t`),Md()),t&2&&(MD(),hy(OT(2,1,`execution.unlinked`)))}function at(t,n){if(t&1&&Oa(0,`span`,47),t&2){let e=n.$implicit;ja(`left`,e.leftPct,`%`)(`width`,e.widthPct,`%`)}}function ot(t,n){if(t&1){let e=PS();Ea(0,`div`,38)(1,`button`,41),La(`click`,function(){let a=Gh(e).$implicit,s=FS(4);return Qh(s.selectExecution(a))}),Ea(2,`span`,42),SS(3,nt,2,1,`code`)(4,it,3,3,`span`,9),Ea(5,`span`,43),dT(6),Md()(),Ea(7,`span`,44),NS(8,at,1,4,`span`,45,He),Md(),Ea(10,`span`,46),dT(11),Md()()()}if(t&2){let e=n.$implicit,o=n.$index,a=FS(4);Lr(`aria-setsize`,a.executions().groups.length)(`aria-posinset`,a.tlSlice().start+o+1),MD(),Lr(`data-execution`,e.correlationId??`unlinked`)(`data-idx`,a.tlSlice().start+o)(`data-selected`,a.selectedCid()===e.correlationId||null)(`data-errors`,e.errorCount||null)(`tabindex`,a.tlSlice().start+o===a.tlTabIdx()?0:-1),MD(),Lr(`title`,e.correlationId),MD(),CS(e.correlationId?3:4),MD(3),hy(e.events.length),MD(),ja(`background-image`,e.tickGradient||null),Lr(`data-ticks`,e.placed.length),MD(),RS(e.spans),MD(3),hy(e.durationMs===null?`—`:a.fmtDur(e.durationMs))}}function rt(t,n){if(t&1&&(Ea(0,`p`,40),dT(1),xT(2,`t`),Md()),t&2){let e=FS(4);MD(),Ad(` `,kT(2,1,`execution.timeline.unplaced`,MT(4,Ge,e.executions().unplacedCount)),` `)}}function lt(t,n){if(t&1){let e=PS();Ea(0,`div`,36),xT(1,`t`),La(`keydown`,function(a){Gh(e);let s=FS(3);return Qh(s.onTlKeys(a))}),Ea(2,`div`,37)(3,`span`),dT(4),Md(),Ea(5,`span`),dT(6),Md()(),NS(7,ot,12,14,`div`,38,qe),Md(),Ea(9,`ui-pager`,39),xT(10,`t`),La(`pageChange`,function(a){Gh(e);let s=FS(3);return Qh(s.tlPage.set(a))}),Md(),SS(11,rt,3,6,`p`,40)}if(t&2){let e=FS(3);Lr(`aria-label`,OT(1,8,`execution.timeline.title`)),MD(4),hy(e.fmtMs(e.executions().windowStart)),MD(2),hy(e.fmtMs(e.executions().windowEnd)),MD(),RS(e.pagedGroups()),MD(2),Xm(`total`,e.executions().groups.length)(`pageSize`,e.TL_PAGE)(`page`,e.tlSlice().page)(`label`,OT(10,10,`execution.timeline.title`)),MD(2),CS(e.executions().unplacedCount?11:-1)}}function dt(t,n){t&1&&(Oa(0,`ui-empty`,35),xT(1,`t`)),t&2&&Xm(`title`,OT(1,1,`execution.timeline.empty`))}function st(t,n){if(t&1&&(Ea(0,`section`,25)(1,`h2`,33),dT(2),xT(3,`t`),SS(4,tt,1,0,`ui-state-badge`,34),Md(),Ea(5,`p`,9),dT(6),xT(7,`t`),Md(),SS(8,lt,12,12)(9,dt,2,3,`ui-empty`,35),Md()),t&2){let e=FS(2);MD(2),Ad(` `,OT(3,4,`execution.timeline.title`),` `),MD(2),CS(e.executions().partial?4:-1),MD(2),hy(OT(7,6,`execution.timeline.hint`)),MD(2),CS(e.executions().windowStart!==null?8:9)}}function ct(t,n){if(t&1){let e=PS();Ea(0,`button`,60),La(`click`,function(){Gh(e);let a=FS(3);return Qh(a.pause())}),dT(1),xT(2,`t`),Md()}t&2&&(MD(),Ad(` `,OT(2,1,`execution.replay.pause`),` `))}function pt(t,n){if(t&1){let e=PS();Ea(0,`button`,61),La(`click`,function(){Gh(e);let a=FS(3);return Qh(a.play())}),dT(1),xT(2,`t`),Md()}if(t&2){let e=FS(3);Xm(`disabled`,e.replayIdx()>=e.replaySteps().length-1),MD(),Ad(` `,OT(2,2,`execution.replay.play`),` `)}}function ut(t,n){if(t&1&&(Ea(0,`option`,58),dT(1),Md()),t&2){let e=n.$implicit,o=FS(3);Xm(`value`,e)(`selected`,o.speed()===e),MD(),Ad(`×`,e)}}function _t(t,n){t&1&&(Ea(0,`span`,64),xT(1,`t`),dT(2,`⇥`),Md()),t&2&&Xm(`title`,OT(1,1,`execution.replay.compressed`))}function mt(t,n){if(t&1&&(Ea(0,`span`,68),dT(1),Md()),t&2){let e=FS().$implicit;MD(),hy(e.dur)}}function xt(t,n){if(t&1&&(Ea(0,`span`,69),dT(1),Md()),t&2){let e=FS().$implicit;MD(),hy(e.flow)}}function gt(t,n){t&1&&(Ea(0,`span`,70),dT(1),xT(2,`t`),Md()),t&2&&(MD(),hy(OT(2,1,`execution.noTimestamp`)))}function yt(t,n){if(t&1){let e=PS();Ea(0,`li`)(1,`button`,62),La(`click`,function(){let a=Gh(e).$implicit,s=FS(3);return s.inspect(a.step.event.event),Qh(s.replayIdx.set(a.index))}),Ea(2,`span`,63),xT(3,`t`),dT(4),Md(),SS(5,_t,3,3,`span`,64),Ea(6,`code`,65),dT(7),Md(),Ea(8,`span`,66),dT(9),Md(),Oa(10,`ui-state-badge`,67),SS(11,mt,2,1,`span`,68),SS(12,xt,2,1,`span`,69),SS(13,gt,3,3,`span`,70),Md()()}if(t&2){let e=n.$implicit,o=FS(3);Lr(`data-current`,e.index===o.replayIdx()||null)(`aria-setsize`,o.replaySteps().length)(`aria-posinset`,e.index+1),MD(),Lr(`data-idx`,e.index)(`data-current`,e.index===o.replayIdx()||null)(`tabindex`,e.index===o.stepTabIdx()?0:-1),MD(),Lr(`title`,OT(3,16,`execution.replay.gap`)),MD(2),hy(e.gap),MD(),CS(e.step.compressed?5:-1),MD(2),hy(e.step.event.event.event_type),MD(2),hy(e.at),MD(),Xm(`state`,e.kind)(`labelOverride`,e.label),MD(),CS(e.dur?11:-1),MD(),CS(e.flow?12:-1),MD(),CS(e.unplaced?13:-1)}}function vt(t,n){if(t&1){let e=PS();Ea(0,`section`,26)(1,`h2`,48),Oa(2,`ui-icon`,49),dT(3),xT(4,`t`),Ea(5,`span`,50),dT(6),Md()(),Ea(7,`p`,9),dT(8),xT(9,`t`),Md(),Ea(10,`div`,51)(11,`button`,52),La(`click`,function(){Gh(e);let a=FS(2);return Qh(a.stepReplay(-1))}),dT(12),xT(13,`t`),Md(),SS(14,ct,3,3,`button`,53)(15,pt,3,4,`button`,54),Ea(16,`button`,55),La(`click`,function(){Gh(e);let a=FS(2);return Qh(a.stepReplay(1))}),dT(17),xT(18,`t`),Md(),Ea(19,`label`,56)(20,`span`,9),dT(21),xT(22,`t`),Md(),Ea(23,`select`,57),xT(24,`t`),La(`change`,function(a){Gh(e);let s=FS(2);return Qh(s.setSpeed(a))}),NS(25,ut,2,3,`option`,58,_S),Md()(),Ea(27,`span`,9),dT(28),xT(29,`t`),Md()(),Ea(30,`ol`,59),La(`keydown`,function(a){Gh(e);let s=FS(2);return Qh(s.onStepKeys(a))}),NS(31,yt,14,18,`li`,null,je),Md(),Ea(33,`ui-pager`,39),xT(34,`t`),La(`pageChange`,function(a){Gh(e);let s=FS(2);return Qh(s.stepManual.set(a))}),Md()()}if(t&2){let e=FS(2);MD(2),Xm(`size`,14),MD(),Ad(` `,OT(4,16,`execution.replay.title`),` `),MD(3),hy(e.replayScope()),MD(2),hy(OT(9,18,`execution.replay.hint`)),MD(3),Xm(`disabled`,e.replayIdx()<=0),MD(),Ad(` `,OT(13,20,`execution.replay.prev`),` `),MD(2),CS(e.playing()?14:15),MD(2),Xm(`disabled`,e.replayIdx()>=e.replaySteps().length-1),MD(),Ad(` `,OT(18,22,`execution.replay.next`),` `),MD(4),hy(OT(22,24,`execution.replay.speed`)),MD(2),Lr(`aria-label`,OT(24,26,`execution.replay.speed`)),MD(2),RS(e.SPEEDS),MD(3),Ad(` `,kT(29,28,`execution.replay.step`,_T(33,ze,e.replayIdx()+1,e.replaySteps().length)),` `),MD(3),RS(e.pagedStepRows()),MD(2),Xm(`total`,e.replaySteps().length)(`pageSize`,e.STEPS_PAGE)(`page`,e.stepSlice().page)(`label`,OT(34,31,`execution.replay.title`))}}function ft(t,n){if(t&1&&(Ea(0,`option`,58),dT(1),Md()),t&2){let e=n.$implicit,o=FS(3);Xm(`value`,e)(`selected`,o.typeFilter()===e),MD(),hy(e)}}function Ct(t,n){if(t&1&&(Ea(0,`option`,58),dT(1),Md()),t&2){let e=n.$implicit,o=FS(3);Xm(`value`,e)(`selected`,o.statusFilter()===e),MD(),hy(e)}}function Et(t,n){if(t&1){let e=PS();Ea(0,`div`,29)(1,`label`,71)(2,`span`,72),dT(3),xT(4,`t`),Md(),Ea(5,`select`,73),La(`change`,function(a){Gh(e);let s=FS(2);return Qh(s.setType(a))}),Ea(6,`option`,74),dT(7),xT(8,`t`),Md(),NS(9,ft,2,3,`option`,58,_S),Md()(),Ea(11,`label`,71)(12,`span`,72),dT(13),xT(14,`t`),Md(),Ea(15,`select`,75),La(`change`,function(a){Gh(e);let s=FS(2);return Qh(s.setStatus(a))}),Ea(16,`option`,74),dT(17),xT(18,`t`),Md(),NS(19,Ct,2,3,`option`,58,_S),Md()(),Ea(21,`label`,71)(22,`span`,72),dT(23),xT(24,`t`),Md(),Ea(25,`input`,76),xT(26,`t`),La(`input`,function(a){Gh(e);let s=FS(2);return Qh(s.setCorr(a))}),Md()(),Ea(27,`label`,71)(28,`span`,72),dT(29),xT(30,`t`),Md(),Ea(31,`input`,77),xT(32,`t`),La(`input`,function(a){Gh(e);let s=FS(2);return Qh(s.setQuery(a))}),Md()()()}if(t&2){let e=FS(2);MD(3),hy(OT(4,12,`execution.filter.type`)),MD(3),Xm(`selected`,e.typeFilter()===null),MD(),hy(OT(8,14,`state.all`)),MD(2),RS(e.typeOptions()),MD(4),hy(OT(14,16,`execution.filter.status`)),MD(3),Xm(`selected`,e.statusFilter()===null),MD(),hy(OT(18,18,`state.all`)),MD(2),RS(e.statusOptions()),MD(4),hy(OT(24,20,`execution.filter.corr`)),MD(2),Xm(`value`,e.corrFilter()),Lr(`aria-label`,OT(26,22,`execution.filter.corr`)),MD(4),hy(OT(30,24,`execution.filter.search`)),MD(2),Xm(`value`,e.qFilter()),Lr(`aria-label`,OT(32,26,`execution.filter.search`))}}function bt(t,n){if(t&1&&dT(0),t&2){let e=FS().$implicit;Ad(` `,e.flow,` `)}}function ht(t,n){t&1&&(Ea(0,`span`,9),dT(1,`—`),Md())}function St(t,n){if(t&1&&dT(0),t&2){let e=FS().$implicit;Ad(` `,e.dur,` `)}}function Pt(t,n){t&1&&(Ea(0,`span`,9),dT(1,`—`),Md())}function Mt(t,n){if(t&1&&(Ea(0,`code`,85),dT(1),Md()),t&2){let e=FS().$implicit;Lr(`title`,n),MD(),hy(e.cidShort)}}function wt(t,n){t&1&&(Ea(0,`span`,9),dT(1,`—`),Md())}function It(t,n){if(t&1){let e=PS();Ea(0,`tr`,83),La(`click`,function(){let a=Gh(e).$implicit,s=FS(3);return Qh(s.inspect(a.e))})(`keydown.enter`,function(){let a=Gh(e).$implicit,s=FS(3);return Qh(s.inspect(a.e))})(`keydown.space`,function(a){let s=Gh(e).$implicit;return FS(3).inspect(s.e),Qh(a.preventDefault())}),Ea(1,`td`)(2,`code`),dT(3),Md()(),Ea(4,`td`,68),dT(5),Md(),Ea(6,`td`),Oa(7,`ui-state-badge`,67),Md(),Ea(8,`td`,84),SS(9,bt,1,1)(10,ht,2,0,`span`,9),Md(),Ea(11,`td`,68),SS(12,St,1,1)(13,Pt,2,0,`span`,9),Md(),Ea(14,`td`),SS(15,Mt,2,2,`code`,85)(16,wt,2,0,`span`,9),Md()()}if(t&2){let e,o=n.$implicit,a=FS(3);Xm(`tabindex`,o.position-1===a.evTabIdx()?0:-1),Lr(`data-idx`,o.position-1)(`data-selected`,a.inspected()===o.e||null)(`aria-rowindex`,o.position+1),MD(3),hy(o.e.event_type),MD(2),hy(o.at),MD(2),Xm(`state`,o.kind)(`labelOverride`,o.label),MD(2),CS(o.flow?9:10),MD(3),CS(o.dur?12:13),MD(3),CS((e=o.cidFull)?15:16,e)}}function kt(t,n){if(t&1){let e=PS();Ea(0,`div`,78)(1,`table`,79)(2,`thead`)(3,`tr`)(4,`th`,80),dT(5),xT(6,`t`),Md(),Ea(7,`th`,80),dT(8),xT(9,`t`),Md(),Ea(10,`th`,80),dT(11),xT(12,`t`),Md(),Ea(13,`th`,80),dT(14),xT(15,`t`),Md(),Ea(16,`th`,80),dT(17),xT(18,`t`),Md(),Ea(19,`th`,80),dT(20),xT(21,`t`),Md()()(),Ea(22,`tbody`,81),La(`keydown`,function(a){Gh(e);let s=FS(2);return Qh(s.onEventKeys(a))}),NS(23,It,17,11,`tr`,82,Ue),Md()()(),Ea(25,`ui-pager`,39),xT(26,`t`),La(`pageChange`,function(a){Gh(e);let s=FS(2);return Qh(s.eventsPage.set(a))}),Md()}if(t&2){let e=FS(2);MD(),Lr(`aria-rowcount`,e.filteredEvents().length+1),MD(4),hy(OT(6,11,`execution.col.type`)),MD(3),hy(OT(9,13,`execution.col.at`)),MD(3),hy(OT(12,15,`execution.col.status`)),MD(3),hy(OT(15,17,`execution.col.flow`)),MD(3),hy(OT(18,19,`execution.col.duration`)),MD(3),hy(OT(21,21,`execution.col.correlation`)),MD(3),RS(e.pagedEventRows()),MD(2),Xm(`total`,e.filteredEvents().length)(`pageSize`,e.EVENTS_PAGE)(`page`,e.eventSlice().page)(`label`,OT(26,23,`execution.events`))}}function Tt(t,n){t&1&&(Oa(0,`ui-empty`,86),xT(1,`t`)),t&2&&Xm(`title`,OT(1,1,`execution.noMatches`))}function Nt(t,n){t&1&&(Oa(0,`ui-empty`,87),xT(1,`t`),xT(2,`t`)),t&2&&Xm(`title`,OT(1,2,`execution.empty`))(`hint`,OT(2,4,`execution.empty.hint`))}function Ot(t,n){if(t&1&&SS(0,Tt,2,3,`ui-empty`,86)(1,Nt,3,6,`ui-empty`,87),t&2){let e=FS(2);CS(e.events().length?0:1)}}function Bt(t,n){if(t&1&&(Ea(0,`span`,91),dT(1),Md()),t&2){let e=FS();MD(),hy(e.event_id)}}function Vt(t,n){if(t&1&&(Ea(0,`div`,95)(1,`dt`),dT(2),xT(3,`t`),Md(),Ea(4,`dd`)(5,`a`,99),dT(6),Md()()()),t&2){let e=n;MD(2),hy(OT(3,4,`execution.insp.task`)),MD(3),Xm(`routerLink`,CT(6,Le))(`queryParams`,MT(7,Ke,e)),MD(),Ad(` `,e,` `)}}function Ft(t,n){if(t&1){let e=PS();Ea(0,`p`,96),dT(1),xT(2,`t`),Ea(3,`button`,100),La(`click`,function(){let a=Gh(e),s=FS(3);return Qh(s.inspect(a))}),Ea(4,`code`),dT(5),Md()()()}t&2&&(MD(),Ad(` `,OT(2,2,`execution.insp.causedBy`),` `),MD(4),hy(n.event_type))}function Dt(t,n){if(t&1&&(Ea(0,`details`,97)(1,`summary`),dT(2),xT(3,`t`),Md(),Ea(4,`pre`),dT(5),Md()()),t&2){let e=FS(),o=FS(2);MD(2),hy(OT(3,2,`execution.insp.metadata`)),MD(3),hy(o.json(e.metadata))}}function Rt(t,n){if(t&1&&(Ea(0,`details`,97)(1,`summary`),dT(2),xT(3,`t`),Md(),Ea(4,`pre`),dT(5),Md()()),t&2){let e=FS(),o=FS(2);MD(2),hy(OT(3,2,`execution.insp.evidence`)),MD(3),hy(o.json(e.evidence))}}function $t(t,n){if(t&1){let e=PS();Ea(0,`li`)(1,`button`,101),La(`click`,function(){let a=Gh(e).$implicit,s=FS(4);return Qh(s.inspect(a))}),Ea(2,`code`),dT(3),Md()(),Ea(4,`span`,9),dT(5),Md()()}if(t&2){let e=n.$implicit,o=FS(4);MD(3),hy(e.event_type),MD(2),hy(o.fmtAt(e.timestamp))}}function At(t,n){if(t&1&&(Ea(0,`div`,98)(1,`h3`),dT(2),xT(3,`t`),Md(),Ea(4,`ul`),NS(5,$t,6,2,`li`,null,Je),Md()()),t&2){let e=FS(),o=FS(2);MD(2),hy(OT(3,1,`execution.insp.related`)),MD(3),RS(o.related(e))}}function Gt(t,n){if(t&1){let e=PS();Ea(0,`section`,88),La(`keydown.escape`,function(){Gh(e);let a=FS(2);return Qh(a.closeInspector())}),Ea(1,`header`,89)(2,`h2`),Oa(3,`ui-icon`,90),Ea(4,`code`),dT(5),Md(),SS(6,Bt,2,1,`span`,91),Md(),Ea(7,`button`,92),xT(8,`t`),La(`click`,function(){Gh(e);let a=FS(2);return Qh(a.closeInspector())}),Oa(9,`ui-icon`,93),Md()(),Ea(10,`dl`,94)(11,`div`,95)(12,`dt`),dT(13),xT(14,`t`),Md(),Ea(15,`dd`)(16,`code`),dT(17),Md()()(),Ea(18,`div`,95)(19,`dt`),dT(20),xT(21,`t`),Md(),Ea(22,`dd`),dT(23),Md()(),Ea(24,`div`,95)(25,`dt`),dT(26),xT(27,`t`),Md(),Ea(28,`dd`),Oa(29,`ui-state-badge`,67),Md()(),Ea(30,`div`,95)(31,`dt`),dT(32),xT(33,`t`),Md(),Ea(34,`dd`,68),dT(35),Md()(),Ea(36,`div`,95)(37,`dt`),dT(38),xT(39,`t`),Md(),Ea(40,`dd`,85)(41,`code`),dT(42),Md()()(),Ea(43,`div`,95)(44,`dt`),dT(45),xT(46,`t`),Md(),Ea(47,`dd`)(48,`code`),dT(49),Md()()(),Ea(50,`div`,95)(51,`dt`),dT(52),xT(53,`t`),Md(),Ea(54,`dd`)(55,`code`),dT(56),Md()()(),Ea(57,`div`,95)(58,`dt`),dT(59),xT(60,`t`),Md(),Ea(61,`dd`)(62,`code`),dT(63),Md()()(),Ea(64,`div`,95)(65,`dt`),dT(66),xT(67,`t`),Md(),Ea(68,`dd`)(69,`code`),dT(70),Md()()(),Ea(71,`div`,95)(72,`dt`),dT(73),xT(74,`t`),Md(),Ea(75,`dd`)(76,`code`),dT(77),Md()()(),SS(78,Vt,7,9,`div`,95),Md(),SS(79,Ft,6,4,`p`,96),SS(80,Dt,6,4,`details`,97),SS(81,Rt,6,4,`details`,97),SS(82,At,7,3,`div`,98),Md()}if(t&2){let e,o,a=n,s=FS(2);MD(3),Xm(`size`,15),MD(2),hy(a.event_type),MD(),CS(a.event_id?6:-1),MD(),Lr(`aria-label`,OT(8,32,`state.close`)),MD(2),Xm(`size`,14),MD(4),hy(OT(14,34,`execution.insp.schema`)),MD(4),hy(a.schema),MD(3),hy(OT(21,36,`execution.insp.at`)),MD(3),hy(s.fmtAt(a.timestamp)),MD(3),hy(OT(27,38,`execution.insp.status`)),MD(3),Xm(`state`,s.statusKind(a.status))(`labelOverride`,a.status??`—`),MD(3),hy(OT(33,40,`execution.insp.duration`)),MD(3),hy(a.duration_ms!==void 0?a.duration_ms+` ms`:`—`),MD(3),hy(OT(39,42,`execution.insp.correlation`)),MD(2),Lr(`title`,a.correlation_id??null),MD(2),hy(a.correlation_id??`—`),MD(3),hy(OT(46,44,`execution.insp.span`)),MD(4),hy(a.span_id??`—`),MD(3),hy(OT(53,46,`execution.insp.parent`)),MD(4),hy(a.parent_span_id??`—`),MD(3),hy(OT(60,48,`execution.insp.trace`)),MD(4),hy(a.trace_id??`—`),MD(3),hy(OT(67,50,`execution.insp.source`)),MD(4),hy(a.source??`—`),MD(3),hy(OT(74,52,`execution.insp.target`)),MD(4),hy(a.target??`—`),MD(),CS((e=s.taskIdOf(a))?78:-1,e),MD(),CS((o=s.causedByOf(a))?79:-1,o),MD(),CS(a.metadata?80:-1),MD(),CS(a.evidence?81:-1),MD(),CS(s.related(a).length?82:-1)}}function zt(t,n){if(t&1&&(Ea(0,`section`,12)(1,`div`,13)(2,`div`)(3,`h2`,14),dT(4),xT(5,`t`),Md(),Ea(6,`p`,15)(7,`code`),dT(8,`GET /api/v1/events`),Md(),SS(9,Ye,3,6,`span`),Md()()(),Ea(10,`div`,16)(11,`div`,17)(12,`span`,18),dT(13),Md(),Ea(14,`span`,19),dT(15),xT(16,`t`),Md()(),Ea(17,`div`,20)(18,`span`,18),dT(19),Md(),Ea(20,`span`,19),dT(21),xT(22,`t`),Md()(),Ea(23,`div`,21)(24,`span`,18),dT(25),Md(),Ea(26,`span`,19),dT(27),xT(28,`t`),Md()(),Ea(29,`div`,22)(30,`span`,18),dT(31),Md(),Ea(32,`span`,19),dT(33),xT(34,`t`),Md()()(),SS(35,Ze,5,7,`p`,23),Md(),SS(36,et,3,3,`a`,24),SS(37,st,10,8,`section`,25),SS(38,vt,35,36,`section`,26),Ea(39,`section`,27)(40,`div`,13)(41,`div`)(42,`h2`,28),dT(43),xT(44,`t`),Md()()(),SS(45,Et,33,28,`div`,29),SS(46,kt,27,25)(47,Ot,2,1),Md(),SS(48,Gt,83,54,`section`,30)),t&2){let e,o,a=n,s=FS();MD(4),hy(OT(5,18,`execution.summary`)),MD(5),CS((e=s.src.loadedAt())?9:-1,e),MD(4),hy(a.count),MD(2),hy(OT(16,20,`execution.count.events`)),MD(4),hy(s.executions().groups.length),MD(2),hy(OT(22,22,`execution.count.executions`)),MD(4),hy(a.dropped),MD(2),hy(OT(28,24,`execution.count.dropped`)),MD(4),hy(a.capacity),MD(2),hy(OT(34,26,`execution.count.capacity`)),MD(2),CS(a.truncated?35:-1),MD(),CS(s.filteredEvents().length?36:-1),MD(),CS(s.executions().groups.length?37:-1),MD(),CS(s.replaySteps().length?38:-1),MD(5),hy(OT(44,28,`execution.events`)),MD(2),CS(s.events().length?45:-1),MD(),CS(s.filteredEvents().length?46:47),MD(2),CS((o=s.inspected())?48:-1,o)}}function Y(t,n){return n.end<=n.start?-1:Math.min(Math.max(t,n.start),n.end-1)}var Te=class t{api=p(d);destroyRef=p(ge);host=p(At$1);cid=on(``);q=on(``);src=new l;report=nn(()=>this.src.data());typeFilter=$(null);statusFilter=$(null);corrFilter=$(``);qFilter=$(``);selectedCid=$(void 0);inspected=$(null);replayIdx=$(0);playing=$(!1);speed=$(1);SPEEDS=[1,4,16,64];eventsPage=$(0);tlPage=$(0);stepManual=$(null);EVENTS_PAGE=100;TL_PAGE=50;STEPS_PAGE=100;evCursor=$(0);tlCursor=$(0);stepCursor=$(0);replayTimer=null;deepApplied=$(null);events=nn(()=>this.report()?.events??[]);searchIndex=nn(()=>he(this.events()));relationIndex=nn(()=>Pe(this.events()));typeOptions=nn(()=>[...new Set(this.events().map(n=>n.event_type))].sort((n,e)=>n.localeCompare(e)));statusOptions=nn(()=>[...new Set(this.events().map(n=>n.status).filter(n=>!!n))].sort((n,e)=>n.localeCompare(e)));filteredEvents=nn(()=>Se(this.events(),{type:this.typeFilter(),status:this.statusFilter(),correlation:this.corrFilter(),q:this.qFilter()},this.searchIndex()));executions=nn(()=>Ce(this.filteredEvents()));tlSlice=nn(()=>V(this.executions().groups.length,this.TL_PAGE,this.tlPage()));pagedGroups=nn(()=>this.executions().groups.slice(this.tlSlice().start,this.tlSlice().end));tlTabIdx=nn(()=>Y(this.tlCursor(),this.tlSlice()));eventSlice=nn(()=>V(this.filteredEvents().length,this.EVENTS_PAGE,this.eventsPage()));pagedEventRows=nn(()=>Ie(this.filteredEvents().slice(this.eventSlice().start,this.eventSlice().end),this.eventSlice().start));evTabIdx=nn(()=>Y(this.evCursor(),this.eventSlice()));selectedGroup=nn(()=>{let n=this.selectedCid();return n===void 0?null:this.executions().groups.find(e=>e.correlationId===n)??null});replaySteps=nn(()=>Ee(this.selectedGroup()?.events.map(n=>n.event)??this.filteredEvents()));replayScope=nn(()=>{let n=this.selectedCid();return n===void 0?``:n??`unlinked`});stepPage=nn(()=>this.stepManual()??Math.floor(this.replayIdx()/this.STEPS_PAGE));stepSlice=nn(()=>V(this.replaySteps().length,this.STEPS_PAGE,this.stepPage()));pagedStepRows=nn(()=>ke(this.replaySteps().slice(this.stepSlice().start,this.stepSlice().end),this.stepSlice().start));stepTabIdx=nn(()=>Y(this.stepCursor(),this.stepSlice()));stamp=y;fmtAt=U;shortId=X;statusKind=D;constructor(){Kl(()=>{let n=this.cid();!n||n===this.deepApplied()||!this.report()||(this.deepApplied.set(n),this.corrFilter.set(n),this.selectedCid.set(n))}),Kl(()=>{let n=this.q();n&&this.qFilter.set(n)}),Kl(()=>{this.filteredEvents(),this.eventsPage.set(0),this.tlPage.set(0)}),Kl(()=>{this.replaySteps(),this.replayIdx.set(0),this.stepManual.set(null),this.pause()}),this.destroyRef.onDestroy(()=>this.clearTimer()),this.load()}async load(){await this.src.load(()=>this.api.events())}selectExecution(n){let e=this.selectedCid()===n.correlationId?void 0:n.correlationId;this.selectedCid.set(e),this.replayIdx.set(0)}inspect(n){this.inspected.set(n)}closeInspector(){let n=this.inspected();if(this.inspected.set(null),!n)return;let e=this.filteredEvents().indexOf(n),o=e>=0?e:this.evTabIdx();o<0||(e>=0&&(this.evCursor.set(e),this.eventsPage.set(Math.floor(e/this.EVENTS_PAGE))),this.focusIdx(`.table tbody`,o))}skipToEvents(n){n.preventDefault();let e=this.evTabIdx();e>=0&&this.focusIdx(`.table tbody`,e)}listKeyNav(n,e,o,a){if(n.altKey||n.ctrlKey||n.metaKey)return;let s=n.target.closest(`[data-idx]`);if(!s)return;let y=Number(s.dataset.idx),x;switch(n.key){case`ArrowDown`:x=y+1;break;case`ArrowUp`:x=y-1;break;case`Home`:x=0;break;case`End`:x=e-1;break;case`PageDown`:x=y+o;break;case`PageUp`:x=y-o;break;default:return}n.preventDefault(),!(e<=0||!Number.isFinite(y))&&a(Math.min(Math.max(x,0),e-1))}onTlKeys(n){this.listKeyNav(n,this.executions().groups.length,this.TL_PAGE,e=>{this.tlCursor.set(e),this.tlPage.set(Math.floor(e/this.TL_PAGE)),this.focusIdx(`.tl`,e)})}onStepKeys(n){this.listKeyNav(n,this.replaySteps().length,this.STEPS_PAGE,e=>{this.stepCursor.set(e),this.stepManual.set(Math.floor(e/this.STEPS_PAGE)),this.focusIdx(`.rp__steps`,e)})}onEventKeys(n){if(n.key===`Escape`){this.closeInspector();return}this.listKeyNav(n,this.filteredEvents().length,this.EVENTS_PAGE,e=>{this.evCursor.set(e),this.eventsPage.set(Math.floor(e/this.EVENTS_PAGE)),this.focusIdx(`.table tbody`,e)})}focusIdx(n,e){setTimeout(()=>{this.host.nativeElement.querySelector(`${n} [data-idx="${e}"]`)?.focus()})}fmtMs(n){return n===null?`—`:new Date(n).toLocaleString()}fmtDur(n){return n<1e3?`${n} ms`:`${Number((n/1e3).toFixed(1))} s`}json(n){return JSON.stringify(n,null,2)}related(n){return Me(n,this.relationIndex())}causedByOf(n){return we(n,this.relationIndex())}taskIdOf(n){let e=n.metadata?.task_id;return typeof e==`string`&&e?e:null}setType(n){let e=n.target.value;this.typeFilter.set(e===``?null:e)}setStatus(n){let e=n.target.value;this.statusFilter.set(e===``?null:e)}setCorr(n){this.corrFilter.set(n.target.value)}setQuery(n){this.qFilter.set(n.target.value)}setSpeed(n){let e=Number(n.target.value);this.speed.set(this.SPEEDS.includes(e)?e:1)}play(){this.playing()||this.replayIdx()>=this.replaySteps().length-1||(this.playing.set(!0),this.scheduleNext())}pause(){this.playing.set(!1),this.clearTimer()}stepReplay(n){this.pause(),this.stepManual.set(null);let e=this.replayIdx()+n,o=this.replaySteps().length-1;this.replayIdx.set(Math.max(0,Math.min(e,o)))}scheduleNext(){if(this.clearTimer(),!this.playing())return;let n=this.replayIdx()+1,e=this.replaySteps();if(n>=e.length){this.playing.set(!1);return}let o=e[n].waitMs/this.speed();this.replayTimer=setTimeout(()=>{this.replayTimer=null,this.stepManual.set(null),this.replayIdx.set(n),this.scheduleNext()},Math.min(o,8e3))}clearTimer(){this.replayTimer&&(clearTimeout(this.replayTimer),this.replayTimer=null)}static ɵfac=function(e){return new(e||t)};static ɵcmp=ai({type:t,selectors:[[`page-execution`]],inputs:{cid:[1,`cid`],q:[1,`q`]},decls:16,vars:19,consts:[[`hintId`,`evidence`,3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`data-section`,`local-only`,`role`,`note`,1,`local`],[`name`,`shield-check`,3,`size`],[`data-section`,`unavailable`,`role`,`note`,1,`card`,`unv`],[3,`error`],[`role`,`status`,1,`card`],[`state`,`UNVERIFIED`],[1,`muted`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[`data-section`,`summary`,`aria-labelledby`,`ex-sum`,1,`card`],[1,`sec__head`],[`id`,`ex-sum`],[1,`src`],[1,`counts`],[`data-count`,`events`,1,`count`],[1,`count__value`],[1,`count__key`],[`data-count`,`executions`,1,`count`],[`data-count`,`dropped`,1,`count`],[`data-count`,`capacity`,1,`count`],[`data-note`,`truncated`,`role`,`note`,1,`truncated`],[`href`,`#ex-ev`,`data-action`,`skip-events`,1,`kb-skip`,`sr-only`],[`data-section`,`timeline`,`aria-labelledby`,`ex-tl`,1,`card`],[`data-section`,`replay`,`aria-labelledby`,`ex-rp`,1,`card`],[`data-section`,`events`,`aria-labelledby`,`ex-ev`,1,`card`],[`id`,`ex-ev`],[`data-section`,`filters`,1,`filters`],[`data-section`,`inspector`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[`name`,`alert`,3,`size`],[`href`,`#ex-ev`,`data-action`,`skip-events`,1,`kb-skip`,`sr-only`,3,`click`],[`id`,`ex-tl`],[`state`,`PARTIAL`],[`icon`,`execution`,3,`title`],[`role`,`list`,1,`tl`,3,`keydown`],[`aria-hidden`,`true`,1,`tl__axis`],[`role`,`listitem`,1,`tl__item`],[3,`pageChange`,`total`,`pageSize`,`page`,`label`],[`data-note`,`unplaced`,1,`muted`,`tl__unplaced`],[`type`,`button`,1,`tl__row`,3,`click`],[1,`tl__label`],[1,`tl__n`],[`aria-hidden`,`true`,1,`tl__track`],[1,`tl__span`,3,`left`,`width`],[1,`tl__dur`,`num`],[1,`tl__span`],[`id`,`ex-rp`,1,`rp__title`],[`name`,`history`,3,`size`],[1,`muted`,`rp__scope`],[`data-section`,`replay-controls`,1,`rp__controls`],[`data-action`,`step-prev`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[`data-action`,`pause`,1,`btn`,`btn--mini`],[`data-action`,`play`,1,`btn`,`btn--mini`,3,`disabled`],[`data-action`,`step-next`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[1,`rp__speed`],[`data-control`,`speed`,1,`select`,3,`change`],[3,`value`,`selected`],[1,`rp__steps`,3,`keydown`],[`data-action`,`pause`,1,`btn`,`btn--mini`,3,`click`],[`data-action`,`play`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[`type`,`button`,`data-action`,`inspect`,1,`rp__step`,3,`click`],[1,`rp__gap`],[1,`rp__compressed`,3,`title`],[1,`rp__kind`],[1,`rp__at`],[3,`state`,`labelOverride`],[1,`num`],[1,`rp__flow`],[1,`rp__unplaced`,`muted`],[1,`filter`],[1,`filter__lbl`],[`data-filter`,`type`,1,`select`,3,`change`],[`value`,``,3,`selected`],[`data-filter`,`status`,1,`select`,3,`change`],[`type`,`search`,`data-filter`,`correlation`,1,`input`,3,`input`,`value`],[`type`,`search`,`data-filter`,`search`,1,`input`,3,`input`,`value`],[1,`table-wrap`],[`aria-keyshortcuts`,`ArrowUp ArrowDown Home End PageUp PageDown Enter Escape`,1,`table`],[`scope`,`col`],[3,`keydown`],[`data-action`,`inspect`,3,`tabindex`],[`data-action`,`inspect`,3,`click`,`keydown.enter`,`keydown.space`,`tabindex`],[1,`flow`],[1,`corr`],[`icon`,`search`,`data-empty`,`no-matches`,3,`title`],[`icon`,`inbox`,`data-empty`,`events`,3,`title`,`hint`],[`data-section`,`inspector`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`,3,`keydown.escape`],[1,`detail__head`],[`name`,`execution`,3,`size`],[1,`muted`,`detail__id`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[1,`plan-card`],[1,`kv`],[`data-note`,`caused-by`,1,`muted`,`cause`],[`open`,``,1,`raw`],[`data-section`,`related`,1,`related`],[`data-action`,`task`,1,`linklike`,3,`routerLink`,`queryParams`],[`data-action`,`parent`,1,`linklike`,3,`click`],[`data-action`,`related`,1,`linklike`,3,`click`]],template:function(e,o){if(e&1&&(Ea(0,`ui-page-header`,0),xT(1,`t`),xT(2,`t`),Ea(3,`button`,1),La(`click`,function(){return o.load()}),Oa(4,`ui-icon`,2),dT(5),xT(6,`t`),Md()(),Ea(7,`p`,3),Oa(8,`ui-icon`,4),Ea(9,`span`),dT(10),xT(11,`t`),Md()(),SS(12,We,5,3,`section`,5),SS(13,Qe,1,1,`ui-error`,6),SS(14,Xe,3,4,`section`,7),SS(15,zt,49,30)),e&2){let a,s;Xm(`title`,OT(1,11,`execution.title`))(`subtitle`,OT(2,13,`execution.subtitle`)),MD(3),Xm(`disabled`,o.src.loading()),MD(),Xm(`size`,15),MD(),Ad(` `,OT(6,15,`state.refresh`),` `),MD(3),Xm(`size`,15),MD(2),hy(OT(11,17,`execution.localOnly`)),MD(2),CS(o.src.unavailable()?12:-1),MD(),CS((a=o.src.error())?13:-1,a),MD(),CS(o.src.loading()&&!o.report()?14:-1),MD(),CS((s=o.report())?15:-1,s)}},dependencies:[Mc,T,u,_,D$1,IE,h,k,EE],styles:[`.src[_ngcontent-%COMP%], .count__key[_ngcontent-%COMP%], .tl__axis[_ngcontent-%COMP%], .tl__n[_ngcontent-%COMP%], .tl__dur[_ngcontent-%COMP%], .tl__unplaced[_ngcontent-%COMP%], .filter__lbl[_ngcontent-%COMP%], .kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%], .local[_ngcontent-%COMP%], .truncated[_ngcontent-%COMP%], .corr[_ngcontent-%COMP%], .flow[_ngcontent-%COMP%], .detail__id[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.src[_ngcontent-%COMP%], .count__key[_ngcontent-%COMP%], .tl__axis[_ngcontent-%COMP%], .tl__n[_ngcontent-%COMP%], .tl__dur[_ngcontent-%COMP%], .tl__unplaced[_ngcontent-%COMP%], .corr[_ngcontent-%COMP%], .flow[_ngcontent-%COMP%], .filter__lbl[_ngcontent-%COMP%], .kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%], .detail__id[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs)}.filter__lbl[_ngcontent-%COMP%], .kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{text-transform:uppercase;letter-spacing:.04em}.local[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-4);padding:var(--%NS%space-3);border:1px dashed var(--%NS%border);border-radius:var(--%NS%radius-md);font-size:var(--%NS%font-sm)}.local[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%], .truncated[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{flex:none}.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%], #ex-tl[_ngcontent-%COMP%], .detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.src[_ngcontent-%COMP%]{margin:4px 0 0}.unv[_ngcontent-%COMP%], .truncated[_ngcontent-%COMP%]{display:flex;align-items:center;border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.unv[_ngcontent-%COMP%]{gap:var(--%NS%space-3)}.counts[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:var(--%NS%space-3)}.count[_ngcontent-%COMP%]{display:grid;gap:2px;padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:color-mix(in srgb,var(--%NS%bg-hover) 40%,transparent)}.count__value[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-2xl);font-weight:650}.truncated[_ngcontent-%COMP%]{gap:var(--%NS%space-2);margin:var(--%NS%space-3) 0 0;padding:var(--%NS%space-2) var(--%NS%space-3);border-radius:var(--%NS%radius-md)}.truncated[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%warn)}.tl[_ngcontent-%COMP%]{display:grid;gap:4px;margin-top:var(--%NS%space-3)}.tl__axis[_ngcontent-%COMP%]{display:flex;justify-content:space-between;margin-left:12rem;font-variant-numeric:tabular-nums}.tl__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:12rem 1fr 5.5rem;align-items:center;gap:var(--%NS%space-2);width:100%;border:1px solid transparent;border-radius:var(--%NS%radius-md);background:none;font:inherit;color:inherit;text-align:left;padding:3px var(--%NS%space-2);cursor:pointer;transition:background var(--%NS%motion-fast),border-color var(--%NS%motion-fast)}.tl__row[_ngcontent-%COMP%]:hover{background:var(--%NS%bg-hover)}.tl__row[data-selected][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);background:var(--%NS%accent-bg)}.tl__label[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm);font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:baseline;gap:var(--%NS%space-2)}.tl__track[_ngcontent-%COMP%]{position:relative;height:16px;border-radius:var(--%NS%radius-pill);background:var(--%NS%bg);border:1px solid var(--%NS%border);overflow:hidden}.tl__span[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;background:color-mix(in srgb,var(--%NS%info) 28%,transparent);border-radius:var(--%NS%radius-pill)}.tl__dur[_ngcontent-%COMP%]{text-align:right}.tl__unplaced[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0}.filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.filter[_ngcontent-%COMP%]{display:grid;gap:4px;min-width:150px}.filter[_ngcontent-%COMP%] .input[_ngcontent-%COMP%]{min-width:190px}.kb-skip[_ngcontent-%COMP%]:focus-visible{position:static;width:auto;height:auto;margin:0 0 var(--%NS%space-3);padding:var(--%NS%space-2) var(--%NS%space-3);overflow:visible;clip:auto;white-space:normal;border:1px solid var(--%NS%border-strong);border-radius:var(--%NS%radius-md);background:var(--%NS%bg-elevated)}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.table[_ngcontent-%COMP%]{min-width:840px}.table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]{cursor:pointer}.detail[_ngcontent-%COMP%]{border-left:3px solid var(--%NS%accent)}.detail__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:550;word-break:break-all}.cause[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 var(--%NS%space-3);font-size:var(--%NS%font-sm)}.related[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3);border-top:1px solid var(--%NS%border);padding-top:var(--%NS%space-3)}.related[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-md)}.related[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:4px}.related[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}@media(max-width:720px){.tl__axis[_ngcontent-%COMP%]{margin-left:0}.tl__row[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:2px}.tl__dur[_ngcontent-%COMP%]{text-align:left}}`]})};export{Te as ExecutionPage};
@@ -0,0 +1 @@
1
+ import{A as Lr,At as kT,Dt as hy,H as OT,Ht as p,I as Md,L as NS,M as MD,N as MS,P as MT,U as Oa,W as PS,X as RS,Z as SS,f as EE,g as FS,ht as ai,k as La,l as CS,m as Ea,q as Qh,r as Ad,sn as xT,st as Xm,vt as dT,x as IE,y as Gh,zt as nn}from"./chunk-DFkLw9sv.js";import{a as d}from"./main-FURAVAHM.js";import{t as D}from"./chunk-CgS3he5O.js";import{t as h}from"./chunk-QjrSdDLo.js";import{t as u}from"./chunk-BfXakSL4.js";import{t as T}from"./chunk-CpDhHwF4.js";import{a as l,s as y}from"./chunk-BZz-ye3r.js";import{t as _}from"./chunk-Chbgw2Fv.js";var H=e=>({time:e});var L=(e,r)=>r.file;function R(e,r){e&1&&(Ea(0,`section`,3),Oa(1,`ui-state-badge`,6),Ea(2,`span`,7),dT(3),xT(4,`t`),Md()()),e&2&&(MD(3),hy(OT(4,1,`versions.unavailable`)))}function q(e,r){if(e&1){let a=PS();Ea(0,`ui-error`,8),La(`retry`,function(){Gh(a);let y=FS();return Qh(y.load())}),Md()}e&2&&Xm(`error`,r)}function J(e,r){e&1&&(Ea(0,`section`,5),xT(1,`t`),Oa(2,`ui-skeleton`,9),Md()),e&2&&(Lr(`aria-label`,OT(1,2,`state.loading`)),MD(2),Xm(`lines`,3))}function K(e,r){if(e&1&&(Ea(0,`span`),dT(1),xT(2,`t`),Md()),e&2){let a=FS(2);MD(),Ad(` · `,kT(2,1,`common.updatedAt`,MT(4,H,a.stamp(r))))}}function Q(e,r){if(e&1&&(Ea(0,`code`),dT(1),Md()),e&2){let a=FS();MD(),hy(a.installed.version)}}function W(e,r){e&1&&(Ea(0,`span`,15),dT(1),xT(2,`t`),Md()),e&2&&(MD(),Ad(`— `,OT(2,1,`state.unverified`)))}function X(e,r){if(e&1&&(Ea(0,`code`),dT(1),Md()),e&2){let a=FS();MD(),hy(a.installed.origin)}}function Y(e,r){e&1&&(Ea(0,`span`,15),dT(1),xT(2,`t`),Md()),e&2&&(MD(),Ad(`— `,OT(2,1,`state.unverified`)))}function Z(e,r){if(e&1&&dT(0),e&2){let a=FS();Ad(` `,a.installed.channel,` `)}}function ee(e,r){e&1&&(Ea(0,`span`,15),dT(1),xT(2,`t`),Md()),e&2&&(MD(),Ad(`— `,OT(2,1,`state.unverified`)))}function ie(e,r){if(e&1&&(Ea(0,`dl`,14)(1,`div`)(2,`dt`),dT(3),xT(4,`t`),Md(),Ea(5,`dd`)(6,`code`),dT(7),Md()()()()),e&2){let a=FS();MD(3),hy(OT(4,2,`versions.available.version`)),MD(4),hy(a.available.version)}}function te(e,r){e&1&&(Ea(0,`div`,18),Oa(1,`ui-state-badge`,6),Ea(2,`span`),dT(3),xT(4,`t`),Md()()),e&2&&(MD(3),hy(OT(4,1,`versions.offline`)))}function ne(e,r){if(e&1&&(Ea(0,`code`),dT(1),Md()),e&2){let a=FS(2);MD(),hy(a.integrity.manifest_release)}}function ae(e,r){e&1&&(Ea(0,`span`,15),dT(1),xT(2,`t`),Md()),e&2&&(MD(),Ad(`— `,OT(2,1,`state.unverified`)))}function oe(e,r){if(e&1&&(Ea(0,`code`,33),dT(1),Md()),e&2){let a=FS(2);MD(),hy(a.integrity.manifest_sha256)}}function re(e,r){e&1&&(Ea(0,`span`,15),dT(1),xT(2,`t`),Md()),e&2&&(MD(),Ad(`— `,OT(2,1,`state.unverified`)))}function de(e,r){if(e&1&&(Ea(0,`section`,19)(1,`div`,11)(2,`div`)(3,`h2`),Oa(4,`ui-icon`,24),dT(5),xT(6,`t`),Md()()(),Ea(7,`dl`,14)(8,`div`)(9,`dt`),dT(10),xT(11,`t`),Md(),Ea(12,`dd`),SS(13,ne,2,1,`code`)(14,ae,3,3,`span`,15),Md()(),Ea(15,`div`)(16,`dt`),dT(17),xT(18,`t`),Md(),Ea(19,`dd`),SS(20,oe,2,1,`code`,33)(21,re,3,3,`span`,15),Md()()()()),e&2){let a=FS();MD(4),Xm(`size`,15),MD(),hy(OT(6,6,`versions.integrity`)),MD(5),hy(OT(11,8,`versions.integrity.release`)),MD(3),CS(a.integrity.manifest_release?13:14),MD(4),hy(OT(18,10,`versions.integrity.sha256`)),MD(3),CS(a.integrity.manifest_sha256?20:21)}}function le(e,r){if(e&1&&(Ea(0,`div`)(1,`dt`),dT(2),xT(3,`t`),Md(),Ea(4,`dd`),dT(5),Md()()),e&2){let a=FS(2);MD(2),hy(OT(3,2,`versions.pending.updates`)),MD(3),hy(a.pending)}}function pe(e,r){if(e&1&&(Ea(0,`div`)(1,`dt`),dT(2),xT(3,`t`),Md(),Ea(4,`dd`),dT(5),Md()()),e&2){let a=FS(2);MD(2),hy(OT(3,2,`versions.pending.plan`)),MD(3),hy(a.upgrade_plan)}}function se(e,r){if(e&1&&(Ea(0,`dl`,14),SS(1,le,6,4,`div`),SS(2,pe,6,4,`div`),Md()),e&2){let a=FS();MD(),CS(a.pending?1:-1),MD(),CS(a.upgrade_plan?2:-1)}}function ce(e,r){e&1&&(Ea(0,`div`,21),Oa(1,`ui-state-badge`,6),Ea(2,`span`),dT(3),xT(4,`t`),Md()()),e&2&&(MD(3),hy(OT(4,1,`versions.pending.cli`)))}function me(e,r){if(e&1&&(Ea(0,`tr`)(1,`td`)(2,`code`),dT(3),Md()(),Ea(4,`td`),dT(5),Md(),Ea(6,`td`),dT(7),Md()()),e&2){let a=r.$implicit;MD(3),hy(a.file),MD(2),hy(a.operation??`—`),MD(2),hy(a.status??`—`)}}function _e(e,r){if(e&1&&(Ea(0,`section`,22)(1,`div`,11)(2,`div`)(3,`h2`),Oa(4,`ui-icon`,12),dT(5),xT(6,`t`),Md()()(),Ea(7,`div`,28)(8,`table`,34)(9,`thead`)(10,`tr`)(11,`th`,35),dT(12),xT(13,`t`),Md(),Ea(14,`th`,35),dT(15),xT(16,`t`),Md(),Ea(17,`th`,35),dT(18),xT(19,`t`),Md()()(),Ea(20,`tbody`),NS(21,me,8,3,`tr`,null,L),Md()()()()),e&2){let a=FS();MD(4),Xm(`size`,15),MD(),hy(OT(6,5,`versions.receipts`)),MD(7),hy(OT(13,7,`versions.receipts.file`)),MD(3),hy(OT(16,9,`versions.receipts.operation`)),MD(3),hy(OT(19,11,`versions.receipts.status`)),MD(3),RS(a.receipts)}}function ve(e,r){if(e&1&&(Ea(0,`pre`,25),dT(1),Md()),e&2){let a=FS();MD(),hy(a.changelog)}}function xe(e,r){e&1&&(Ea(0,`p`,15),dT(1),xT(2,`t`),Md()),e&2&&(MD(),Ad(`— `,OT(2,1,`state.unverified`)))}function ue(e,r){if(e&1&&(Ea(0,`code`),dT(1),Md()),e&2){let a=FS().$implicit;MD(),hy(a.version)}}function ye(e,r){e&1&&(Ea(0,`span`,15),dT(1),xT(2,`t`),Md()),e&2&&(MD(),Ad(`— `,OT(2,1,`state.unverified`)))}function ge(e,r){if(e&1&&dT(0),e&2){let a=FS().$implicit,s=FS(3);Ad(` `,s.fmt(a.at),` `)}}function fe(e,r){e&1&&(Ea(0,`span`,7),dT(1,`—`),Md())}function Ce(e,r){if(e&1&&dT(0),e&2){let a=FS().$implicit;Ad(` `,a.detail,` `)}}function Se(e,r){e&1&&(Ea(0,`span`,7),dT(1,`—`),Md())}function be(e,r){if(e&1&&(Ea(0,`tr`)(1,`td`),SS(2,ue,2,1,`code`)(3,ye,3,3,`span`,15),Md(),Ea(4,`td`,36),SS(5,ge,1,1)(6,fe,2,0,`span`,7),Md(),Ea(7,`td`),SS(8,Ce,1,1)(9,Se,2,0,`span`,7),Md()()),e&2){let a=r.$implicit;MD(2),CS(a.version?2:3),MD(3),CS(a.at?5:6),MD(3),CS(a.detail?8:9)}}function Ee(e,r){if(e&1&&(Ea(0,`div`,28)(1,`table`,34)(2,`thead`)(3,`tr`)(4,`th`,35),dT(5),xT(6,`t`),Md(),Ea(7,`th`,35),dT(8),xT(9,`t`),Md(),Ea(10,`th`,35),dT(11),xT(12,`t`),Md()()(),Ea(13,`tbody`),NS(14,be,10,3,`tr`,null,MS),Md()()()),e&2){let a=FS();MD(5),hy(OT(6,3,`versions.history.version`)),MD(3),hy(OT(9,5,`versions.history.at`)),MD(3),hy(OT(12,7,`versions.history.detail`)),MD(3),RS(a.history)}}function he(e,r){e&1&&(Oa(0,`ui-empty`,29),xT(1,`t`)),e&2&&Xm(`title`,OT(1,1,`versions.history.empty`))}function Pe(e,r){if(e&1&&(Ea(0,`p`,32)(1,`code`),dT(2),Md()()),e&2){let a=FS();MD(2),hy(a.rollback.hint)}}function Ie(e,r){if(e&1&&(Ea(0,`section`,10)(1,`div`,11)(2,`div`)(3,`h2`),Oa(4,`ui-icon`,12),dT(5),xT(6,`t`),Md(),Ea(7,`p`,13)(8,`code`),dT(9,`GET /api/v1/versions`),Md(),SS(10,K,3,6,`span`),Md()()(),Ea(11,`dl`,14)(12,`div`)(13,`dt`),dT(14),xT(15,`t`),Md(),Ea(16,`dd`),SS(17,Q,2,1,`code`)(18,W,3,3,`span`,15),Md()(),Ea(19,`div`)(20,`dt`),dT(21),xT(22,`t`),Md(),Ea(23,`dd`),SS(24,X,2,1,`code`)(25,Y,3,3,`span`,15),Md()(),Ea(26,`div`)(27,`dt`),dT(28),xT(29,`t`),Md(),Ea(30,`dd`),SS(31,Z,1,1)(32,ee,3,3,`span`,15),Md()(),Ea(33,`div`)(34,`dt`),dT(35),xT(36,`t`),Md(),Ea(37,`dd`)(38,`code`),dT(39),Md()()()()(),Ea(40,`section`,16)(41,`div`,11)(42,`div`)(43,`h2`),Oa(44,`ui-icon`,17),dT(45),xT(46,`t`),Md(),Ea(47,`p`,13),dT(48),xT(49,`t`),Ea(50,`code`),dT(51),Md()()()(),SS(52,ie,8,4,`dl`,14)(53,te,5,3,`div`,18),Md(),SS(54,de,22,12,`section`,19),Ea(55,`section`,20)(56,`div`,11)(57,`div`)(58,`h2`),Oa(59,`ui-icon`,2),dT(60),xT(61,`t`),Md()()(),SS(62,se,3,2,`dl`,14)(63,ce,5,3,`div`,21),Md(),SS(64,_e,23,13,`section`,22),Ea(65,`section`,23)(66,`div`,11)(67,`div`)(68,`h2`),Oa(69,`ui-icon`,24),dT(70),xT(71,`t`),Md()()(),SS(72,ve,2,1,`pre`,25)(73,xe,3,3,`p`,15),Md(),Ea(74,`section`,26)(75,`div`,11)(76,`div`)(77,`h2`),Oa(78,`ui-icon`,27),dT(79),xT(80,`t`),Md()()(),SS(81,Ee,16,9,`div`,28)(82,he,2,3,`ui-empty`,29),Md(),Ea(83,`section`,30)(84,`div`,11)(85,`div`)(86,`h2`),Oa(87,`ui-icon`,2),dT(88),xT(89,`t`),Md()(),Oa(90,`ui-state-badge`,31),Md(),SS(91,Pe,3,1,`p`,32),Md()),e&2){let a,s=r,y=FS();MD(4),Xm(`size`,15),MD(),hy(OT(6,31,`versions.installed`)),MD(5),CS((a=y.src.loadedAt())?10:-1,a),MD(4),hy(OT(15,33,`versions.installed.version`)),MD(3),CS(s.installed.version?17:18),MD(4),hy(OT(22,35,`versions.installed.origin`)),MD(3),CS(s.installed.origin?24:25),MD(4),hy(OT(29,37,`versions.installed.channel`)),MD(3),CS(s.installed.channel?31:32),MD(4),hy(OT(36,39,`versions.compat`)),MD(4),hy(s.compat),MD(5),Xm(`size`,15),MD(),hy(OT(46,41,`versions.available`)),MD(3),Ad(` `,OT(49,43,`versions.available.source`),`: `),MD(3),hy(s.available.source),MD(),CS(s.available.version?52:53),MD(2),CS(s.integrity?54:-1),MD(5),Xm(`size`,15),MD(),hy(OT(61,45,`versions.pending`)),MD(2),CS(s.pending||s.upgrade_plan?62:63),MD(2),CS(s.receipts?.length?64:-1),MD(5),Xm(`size`,15),MD(),hy(OT(71,47,`versions.changelog`)),MD(2),CS(s.changelog?72:73),MD(6),Xm(`size`,15),MD(),hy(OT(80,49,`versions.history`)),MD(2),CS(s.history.length?81:82),MD(6),Xm(`size`,15),MD(),hy(OT(89,51,`versions.rollback`)),MD(2),Xm(`state`,s.rollback.supported?`supported`:`unsupported`),MD(),CS(s.rollback.hint?91:-1)}}var G=class e{api=p(d);src=new l;info=nn(()=>this.src.data());stamp=y;constructor(){this.load()}async load(){await this.src.load(()=>this.api.versions())}fmt(r){let a=new Date(r);return Number.isNaN(a.getTime())?r:a.toLocaleString()}static ɵfac=function(a){return new(a||e)};static ɵcmp=ai({type:e,selectors:[[`page-versions`]],decls:11,vars:15,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`data-section`,`unavailable`,`role`,`note`,1,`card`,`unv`],[3,`error`],[`role`,`status`,1,`card`],[`state`,`UNVERIFIED`],[1,`muted`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[`data-section`,`installed`,1,`card`],[1,`sec__head`],[`name`,`install`,3,`size`],[1,`src`],[1,`kv`],[`data-unverified`,``,1,`muted`],[`data-section`,`available`,1,`card`],[`name`,`external`,3,`size`],[`data-note`,`offline`,`role`,`note`,1,`unv`],[`data-section`,`integrity`,1,`card`],[`data-section`,`pending`,1,`card`],[`data-note`,`cli`,`role`,`note`,1,`unv`],[`data-section`,`receipts`,1,`card`],[`data-section`,`changelog`,1,`card`],[`name`,`knowledge`,3,`size`],[1,`changelog`],[`data-section`,`history`,1,`card`],[`name`,`history`,3,`size`],[1,`table-wrap`],[`icon`,`history`,3,`title`],[`data-section`,`rollback`,1,`card`],[3,`state`],[1,`hint`],[1,`hash`],[1,`table`],[`scope`,`col`],[1,`nowrap`]],template:function(a,s){if(a&1&&(Ea(0,`ui-page-header`,0),xT(1,`t`),xT(2,`t`),Ea(3,`button`,1),La(`click`,function(){return s.load()}),Oa(4,`ui-icon`,2),dT(5),xT(6,`t`),Md()(),SS(7,R,5,3,`section`,3),SS(8,q,1,1,`ui-error`,4),SS(9,J,3,4,`section`,5),SS(10,Ie,92,53)),a&2){let y,S;Xm(`title`,OT(1,9,`versions.title`))(`subtitle`,OT(2,11,`versions.subtitle`)),MD(3),Xm(`disabled`,s.src.loading()),MD(),Xm(`size`,15),MD(),Ad(` `,OT(6,13,`state.refresh`),` `),MD(2),CS(s.src.unavailable()?7:-1),MD(),CS((y=s.src.error())?8:-1,y),MD(),CS(s.src.loading()&&!s.info()?9:-1),MD(),CS((S=s.info())?10:-1,S)}},dependencies:[T,u,_,D,IE,h,EE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.src[_ngcontent-%COMP%]{margin:4px 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:9rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);flex:none}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0;overflow-wrap:anywhere}.changelog[_ngcontent-%COMP%]{margin:0;padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:var(--%NS%bg);font-size:var(--%NS%font-xs);overflow-x:auto;white-space:pre-wrap}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.nowrap[_ngcontent-%COMP%]{white-space:nowrap}.hint[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-sm);overflow-wrap:anywhere}`]})};export{G as VersionsPage};
@@ -0,0 +1 @@
1
+ var a=class extends Error{transport;status;body;constructor(e,r){let o=r?.message??`request failed (${e||`network`})`;super(o),this.status=e,this.transport=e===0,this.body={code:r?.code??(e===0?`PORTAL-UNREACHABLE`:`HTTP-${e}`),message:o,message_key:r?.message_key??(e===0?`error.unreachable`:void 0),details:r?.details,severity:r?.severity??`error`,retryable:r?.retryable??(e===0||e>=500),action:r?.action}}};export{a as t};
@@ -0,0 +1 @@
1
+ import{i as m,r as l}from"./chunk-B5HYcMEE.js";import{Dt as hy,H as OT,Ht as p,I as Md,L as NS,M as MD,U as Oa,W as PS,X as RS,f as EE,g as FS,ht as ai,k as La,m as Ea,q as Qh,r as Ad,sn as xT,st as Xm,vt as dT,y as Gh}from"./chunk-DFkLw9sv.js";import{s as f}from"./main-FURAVAHM.js";import{t as u}from"./chunk-BfXakSL4.js";import{t as T}from"./chunk-CpDhHwF4.js";var A=(s,o)=>o.id;function B(s,o){if(s&1){let e=PS();Ea(0,`article`,2)(1,`header`)(2,`h2`),dT(3),Md(),Oa(4,`ui-state-badge`,3),Md(),Ea(5,`p`,4),dT(6),Md(),Ea(7,`dl`,5)(8,`dt`),dT(9),xT(10,`t`),Md(),Ea(11,`dd`,6),dT(12),Md(),Ea(13,`dt`),dT(14),xT(15,`t`),Md(),Ea(16,`dd`,6),dT(17),Md(),Ea(18,`dt`),dT(19),xT(20,`t`),Md(),Ea(21,`dd`,6),dT(22),Md(),Ea(23,`dt`),dT(24),xT(25,`t`),Md(),Ea(26,`dd`),dT(27),Md()(),Ea(28,`p`,7)(29,`strong`),dT(30),xT(31,`t`),Md(),dT(32),Md(),Ea(33,`div`,8)(34,`button`,9),La(`click`,function(){let M=Gh(e).$implicit,O=FS();return Qh(O.copy(M))}),dT(35),xT(36,`t`),Md()()()}if(s&2){let e=o.$implicit;MD(3),hy(e.name),MD(),Xm(`state`,e.risk)(`labelOverride`,e.risk+` risk`),MD(2),hy(e.goal),MD(3),hy(OT(10,15,`pf.templates.persona`)),MD(3),hy(e.persona),MD(2),hy(OT(15,17,`pf.templates.tools`)),MD(3),hy(e.tools.join(`, `)),MD(2),hy(OT(20,19,`pf.templates.evalGate`)),MD(3),Ad(`≥ `,e.evalThreshold.toFixed(2)),MD(2),hy(OT(25,21,`pf.templates.capabilities`)),MD(3),hy(e.capabilities.join(` · `)),MD(3),hy(OT(31,23,`pf.templates.boundary`)),MD(2),Ad(` `,e.boundary,` `),MD(3),Ad(` `,OT(36,25,`pf.templates.copySpec`),` `)}}var D=[{id:`knowledge-curator`,name:`Knowledge Curator`,persona:`pf-knowledge`,goal:`Import, dedupe and keep product knowledge cited and fresh.`,tools:[`pf_knowledge_import`,`pf_knowledge_query`],risk:`low`,capabilities:[`chat`,`files`],evalThreshold:.5,boundary:`Never answers without a chunk citation; never mutates sources.`},{id:`data-investigator`,name:`Data Investigator`,persona:`pf-sql + pf-analytics`,goal:`Read-only SQL investigation against registered sources.`,tools:[`pf_sql_run`,`pf_source_describe`],risk:`medium`,capabilities:[`chat`,`tools`,`files`],evalThreshold:.65,boundary:`Read-only queries only; writes are refused before execution.`},{id:`release-sentinel`,name:`Release Sentinel`,persona:`pf-governance`,goal:`Watch audit trail + approvals; flag unsigned changes.`,tools:[`pf_audit_query`,`pf_approval_list`],risk:`medium`,capabilities:[`chat`,`approvals`],evalThreshold:.65,boundary:`Reports anomalies; cannot approve or mutate anything.`},{id:`publish-pipeline`,name:`Publish Pipeline`,persona:`pf-agent-factory`,goal:`Create → eval → publish agents through the gated pipeline.`,tools:[`pf_agent_create`,`pf_agent_eval`,`pf_agent_publish`],risk:`high`,capabilities:[`chat`,`tools`,`approvals`],evalThreshold:.8,boundary:`High-risk tier: needs eval ≥ 0.80 AND owner approval.`}];var I=class s{toast=p(f);templates=D;async copy(o){let e=m(l({schema:`forge/AgentTemplate/v1`},o),{note:`Author via productforge agent create — eval gate applies at publish.`});try{await navigator.clipboard.writeText(JSON.stringify(e,null,1)),this.toast.show(`"${o.name}" spec copied`,`success`)}catch{this.toast.show(`Clipboard unavailable`,`error`)}}static ɵfac=function(e){return new(e||s)};static ɵcmp=ai({type:s,selectors:[[`page-pf-templates`]],decls:4,vars:0,consts:[[`title`,`Agent Templates`,`subtitle`,`Curated agent starting points — risk tier and eval gate shown up front.`],[`role`,`list`,1,`cards`],[`role`,`listitem`,1,`card`,`tpl`],[3,`state`,`labelOverride`],[1,`goal`],[1,`kv`],[1,`mono`],[1,`boundary`],[1,`actions`],[1,`btn`,`btn--mini`,3,`click`]],template:function(e,m){e&1&&(Oa(0,`ui-page-header`,0),Ea(1,`div`,1),NS(2,B,37,27,`article`,2,A),Md()),e&2&&(MD(2),RS(m.templates))},dependencies:[T,u,EE],styles:[`.cards[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.tpl[_ngcontent-%COMP%] header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline}.goal[_ngcontent-%COMP%]{min-height:2.5em}.kv[_ngcontent-%COMP%]{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:13px}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{font-weight:600}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0}.boundary[_ngcontent-%COMP%]{font-size:12px;color:var(--%NS%fg-muted)}.actions[_ngcontent-%COMP%]{margin-top:8px}`]})};export{I as PfTemplatesPage};