platformforge 0.1.5__tar.gz → 0.1.6__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 (1358) hide show
  1. {platformforge-0.1.5 → platformforge-0.1.6}/CHANGELOG.md +8 -1
  2. {platformforge-0.1.5 → platformforge-0.1.6}/PKG-INFO +1 -1
  3. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy-parity/VALIDATION-RECEIPT.json +16 -16
  4. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/__init__.py +1 -1
  5. platformforge-0.1.5/portal/assets/chunk-CjeK9yK-.js → platformforge-0.1.6/portal/assets/chunk-6_bITucK.js +1 -1
  6. platformforge-0.1.5/portal/assets/chunk-CuWqH_Ir.js → platformforge-0.1.6/portal/assets/chunk-B5AB8czV.js +1 -1
  7. platformforge-0.1.5/portal/assets/chunk-CfvzN8YR.js → platformforge-0.1.6/portal/assets/chunk-BJbNCJrv.js +1 -1
  8. platformforge-0.1.5/portal/assets/chunk-D4naGiby.js → platformforge-0.1.6/portal/assets/chunk-BWjIRvH1.js +1 -1
  9. platformforge-0.1.5/portal/assets/chunk-CyHeJo8Y.js → platformforge-0.1.6/portal/assets/chunk-BXk7RxGM.js +1 -1
  10. platformforge-0.1.5/portal/assets/chunk-BaboM5_0.js → platformforge-0.1.6/portal/assets/chunk-BYc3t4cg.js +1 -1
  11. platformforge-0.1.5/portal/assets/chunk-eTHRlXl3.js → platformforge-0.1.6/portal/assets/chunk-BglFR9Wn.js +1 -1
  12. platformforge-0.1.5/portal/assets/chunk-D6LBFyFU.js → platformforge-0.1.6/portal/assets/chunk-Bj5_93Ey.js +1 -1
  13. platformforge-0.1.5/portal/assets/chunk-DPbsTdeu.js → platformforge-0.1.6/portal/assets/chunk-Bkokxnl9.js +1 -1
  14. platformforge-0.1.5/portal/assets/chunk-CKDTf80M.js → platformforge-0.1.6/portal/assets/chunk-BnZq9uBz.js +1 -1
  15. platformforge-0.1.5/portal/assets/chunk-BCvhFxiQ.js → platformforge-0.1.6/portal/assets/chunk-BpIbIo4H.js +1 -1
  16. platformforge-0.1.5/portal/assets/chunk-C5VOb7zX.js → platformforge-0.1.6/portal/assets/chunk-C-R9EDEw.js +1 -1
  17. platformforge-0.1.6/portal/assets/chunk-C1jICkBx.js +1 -0
  18. platformforge-0.1.5/portal/assets/chunk-D2euRURa.js → platformforge-0.1.6/portal/assets/chunk-C2Vik-mF.js +1 -1
  19. platformforge-0.1.5/portal/assets/chunk-zZVj9gH0.js → platformforge-0.1.6/portal/assets/chunk-CV7TSqiz.js +1 -1
  20. platformforge-0.1.5/portal/assets/chunk-BDNGRBqK.js → platformforge-0.1.6/portal/assets/chunk-CWCQmMmw.js +1 -1
  21. platformforge-0.1.5/portal/assets/chunk-Vydm7BVh.js → platformforge-0.1.6/portal/assets/chunk-CZreZLNQ.js +1 -1
  22. platformforge-0.1.5/portal/assets/chunk-C4JWE0XB.js → platformforge-0.1.6/portal/assets/chunk-CaHx1phd.js +1 -1
  23. platformforge-0.1.6/portal/assets/chunk-Cp1ysZIS.js +1 -0
  24. platformforge-0.1.5/portal/assets/chunk-DipQglSu.js → platformforge-0.1.6/portal/assets/chunk-CzfElE0B.js +1 -1
  25. platformforge-0.1.5/portal/assets/chunk-C2qw81G-.js → platformforge-0.1.6/portal/assets/chunk-D-GKcz1x.js +1 -1
  26. platformforge-0.1.5/portal/assets/chunk-D3bpDtjN.js → platformforge-0.1.6/portal/assets/chunk-D0sdF23X.js +1 -1
  27. platformforge-0.1.5/portal/assets/chunk-eu1uoxP8.js → platformforge-0.1.6/portal/assets/chunk-D4e-ThVc.js +1 -1
  28. platformforge-0.1.5/portal/assets/chunk-Dtcaean-.js → platformforge-0.1.6/portal/assets/chunk-DAuZ25Se.js +1 -1
  29. platformforge-0.1.5/portal/assets/chunk-DrnuOLKj.js → platformforge-0.1.6/portal/assets/chunk-DNdMiBOi.js +1 -1
  30. platformforge-0.1.5/portal/assets/chunk-D0U3vsnA.js → platformforge-0.1.6/portal/assets/chunk-Df-i8acd.js +1 -1
  31. platformforge-0.1.6/portal/assets/chunk-DiTrvQme.js +1 -0
  32. platformforge-0.1.6/portal/assets/chunk-E37BkvkU.js +1 -0
  33. platformforge-0.1.6/portal/assets/chunk-RSTfWegd.js +1 -0
  34. platformforge-0.1.5/portal/assets/chunk-BHhRroyJ.js → platformforge-0.1.6/portal/assets/chunk-SeIyT7eK.js +1 -1
  35. platformforge-0.1.5/portal/assets/chunk-CCIIuOeH.js → platformforge-0.1.6/portal/assets/chunk-mfSjBx6W.js +1 -1
  36. platformforge-0.1.5/portal/assets/chunk-AzNeOIZY.js → platformforge-0.1.6/portal/assets/chunk-tc9WQav2.js +1 -1
  37. platformforge-0.1.5/portal/assets/chunk-BGflgB1L.js → platformforge-0.1.6/portal/assets/chunk-vIImL6Fw.js +1 -1
  38. platformforge-0.1.5/portal/assets/chunk-YAMUupB7.js → platformforge-0.1.6/portal/assets/chunk-yM6DMc_W.js +1 -1
  39. platformforge-0.1.5/portal/assets/chunk-DDdpn2Pr.js → platformforge-0.1.6/portal/assets/chunk-yaTNqnhj.js +1 -1
  40. {platformforge-0.1.5 → platformforge-0.1.6}/portal/assets/index.html +1 -1
  41. platformforge-0.1.6/portal/assets/main-YKFPUKID.js +1 -0
  42. platformforge-0.1.6/portal/manifest.json +194 -0
  43. {platformforge-0.1.5 → platformforge-0.1.6}/pyproject.toml +1 -1
  44. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_contracts.py +1 -1
  45. {platformforge-0.1.5 → platformforge-0.1.6}/uv.lock +1 -1
  46. platformforge-0.1.5/portal/assets/chunk-BAPTGBSr.js +0 -1
  47. platformforge-0.1.5/portal/assets/chunk-DmAv8A_X.js +0 -1
  48. platformforge-0.1.5/portal/assets/chunk-Gdmlwu7Q.js +0 -1
  49. platformforge-0.1.5/portal/assets/main-CCFYCU3J.js +0 -1
  50. platformforge-0.1.5/portal/manifest.json +0 -186
  51. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/pf-extractor.md +0 -0
  52. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/pf-graph-builder.md +0 -0
  53. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/pf-inventory.md +0 -0
  54. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/pf-judge.md +0 -0
  55. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/pf-reconciler.md +0 -0
  56. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/pf-simulator.md +0 -0
  57. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/pf-synthesizer.md +0 -0
  58. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/pf-verifier.md +0 -0
  59. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-adversarial-critic.md +0 -0
  60. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-ai-infra-specialist.md +0 -0
  61. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-architecture-reviewer.md +0 -0
  62. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-aws-specialist.md +0 -0
  63. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-capacity-specialist.md +0 -0
  64. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-change-coordinator.md +0 -0
  65. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-crossplane-specialist.md +0 -0
  66. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-debate-referee.md +0 -0
  67. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-economy-reviewer.md +0 -0
  68. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-evidence-reviewer.md +0 -0
  69. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-federation-specialist.md +0 -0
  70. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-finops-specialist.md +0 -0
  71. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-fleet-coordinator.md +0 -0
  72. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-fleet-specialist.md +0 -0
  73. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-gitops-specialist.md +0 -0
  74. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-graph-specialist.md +0 -0
  75. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-iac-specialist.md +0 -0
  76. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-incident-coordinator.md +0 -0
  77. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-kubernetes-specialist.md +0 -0
  78. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-operations-safety-reviewer.md +0 -0
  79. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-optimization-coordinator.md +0 -0
  80. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-orchestrator.md +0 -0
  81. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-planner.md +0 -0
  82. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-policy-specialist.md +0 -0
  83. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-privacy-reviewer.md +0 -0
  84. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-product-coordinator.md +0 -0
  85. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-product-specialist.md +0 -0
  86. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-release-guardian.md +0 -0
  87. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-security-reviewer.md +0 -0
  88. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-security-specialist.md +0 -0
  89. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-sre-specialist.md +0 -0
  90. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-task-spec-reviewer.md +0 -0
  91. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/agents/platform-verifier.md +0 -0
  92. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/skills/platformforge-agents/SKILL.md +0 -0
  93. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/skills/platformforge-change/SKILL.md +0 -0
  94. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/skills/platformforge-core/SKILL.md +0 -0
  95. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/skills/platformforge-economy/SKILL.md +0 -0
  96. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/skills/platformforge-finops/SKILL.md +0 -0
  97. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/skills/platformforge-fleet/SKILL.md +0 -0
  98. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/skills/platformforge-governance/SKILL.md +0 -0
  99. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/skills/platformforge-graph/SKILL.md +0 -0
  100. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/skills/platformforge-lab/SKILL.md +0 -0
  101. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/skills/platformforge-sdd/SKILL.md +0 -0
  102. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/skills/platformforge-security/SKILL.md +0 -0
  103. {platformforge-0.1.5 → platformforge-0.1.6}/.agents/skills/platformforge-sre/SKILL.md +0 -0
  104. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/pf-extractor.md +0 -0
  105. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/pf-graph-builder.md +0 -0
  106. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/pf-inventory.md +0 -0
  107. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/pf-judge.md +0 -0
  108. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/pf-reconciler.md +0 -0
  109. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/pf-simulator.md +0 -0
  110. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/pf-synthesizer.md +0 -0
  111. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/pf-verifier.md +0 -0
  112. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-adversarial-critic.md +0 -0
  113. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-ai-infra-specialist.md +0 -0
  114. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-architecture-reviewer.md +0 -0
  115. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-aws-specialist.md +0 -0
  116. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-capacity-specialist.md +0 -0
  117. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-change-coordinator.md +0 -0
  118. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-crossplane-specialist.md +0 -0
  119. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-debate-referee.md +0 -0
  120. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-economy-reviewer.md +0 -0
  121. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-evidence-reviewer.md +0 -0
  122. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-federation-specialist.md +0 -0
  123. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-finops-specialist.md +0 -0
  124. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-fleet-coordinator.md +0 -0
  125. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-fleet-specialist.md +0 -0
  126. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-gitops-specialist.md +0 -0
  127. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-graph-specialist.md +0 -0
  128. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-iac-specialist.md +0 -0
  129. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-incident-coordinator.md +0 -0
  130. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-kubernetes-specialist.md +0 -0
  131. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-operations-safety-reviewer.md +0 -0
  132. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-optimization-coordinator.md +0 -0
  133. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-orchestrator.md +0 -0
  134. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-planner.md +0 -0
  135. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-policy-specialist.md +0 -0
  136. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-privacy-reviewer.md +0 -0
  137. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-product-coordinator.md +0 -0
  138. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-product-specialist.md +0 -0
  139. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-release-guardian.md +0 -0
  140. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-security-reviewer.md +0 -0
  141. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-security-specialist.md +0 -0
  142. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-sre-specialist.md +0 -0
  143. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-task-spec-reviewer.md +0 -0
  144. {platformforge-0.1.5 → platformforge-0.1.6}/.claude/agents/platform-verifier.md +0 -0
  145. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/pf-extractor.toml +0 -0
  146. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/pf-graph-builder.toml +0 -0
  147. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/pf-inventory.toml +0 -0
  148. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/pf-judge.toml +0 -0
  149. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/pf-reconciler.toml +0 -0
  150. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/pf-simulator.toml +0 -0
  151. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/pf-synthesizer.toml +0 -0
  152. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/pf-verifier.toml +0 -0
  153. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-adversarial-critic.toml +0 -0
  154. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-ai-infra-specialist.toml +0 -0
  155. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-architecture-reviewer.toml +0 -0
  156. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-aws-specialist.toml +0 -0
  157. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-capacity-specialist.toml +0 -0
  158. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-change-coordinator.toml +0 -0
  159. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-crossplane-specialist.toml +0 -0
  160. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-debate-referee.toml +0 -0
  161. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-economy-reviewer.toml +0 -0
  162. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-evidence-reviewer.toml +0 -0
  163. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-federation-specialist.toml +0 -0
  164. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-finops-specialist.toml +0 -0
  165. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-fleet-coordinator.toml +0 -0
  166. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-fleet-specialist.toml +0 -0
  167. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-gitops-specialist.toml +0 -0
  168. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-graph-specialist.toml +0 -0
  169. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-iac-specialist.toml +0 -0
  170. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-incident-coordinator.toml +0 -0
  171. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-kubernetes-specialist.toml +0 -0
  172. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-operations-safety-reviewer.toml +0 -0
  173. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-optimization-coordinator.toml +0 -0
  174. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-orchestrator.toml +0 -0
  175. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-planner.toml +0 -0
  176. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-policy-specialist.toml +0 -0
  177. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-privacy-reviewer.toml +0 -0
  178. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-product-coordinator.toml +0 -0
  179. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-product-specialist.toml +0 -0
  180. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-release-guardian.toml +0 -0
  181. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-security-reviewer.toml +0 -0
  182. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-security-specialist.toml +0 -0
  183. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-sre-specialist.toml +0 -0
  184. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-task-spec-reviewer.toml +0 -0
  185. {platformforge-0.1.5 → platformforge-0.1.6}/.codex/agents/platform-verifier.toml +0 -0
  186. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/pf-extractor.md +0 -0
  187. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/pf-graph-builder.md +0 -0
  188. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/pf-inventory.md +0 -0
  189. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/pf-judge.md +0 -0
  190. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/pf-reconciler.md +0 -0
  191. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/pf-simulator.md +0 -0
  192. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/pf-synthesizer.md +0 -0
  193. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/pf-verifier.md +0 -0
  194. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-adversarial-critic.md +0 -0
  195. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-ai-infra-specialist.md +0 -0
  196. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-architecture-reviewer.md +0 -0
  197. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-aws-specialist.md +0 -0
  198. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-capacity-specialist.md +0 -0
  199. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-change-coordinator.md +0 -0
  200. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-crossplane-specialist.md +0 -0
  201. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-debate-referee.md +0 -0
  202. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-economy-reviewer.md +0 -0
  203. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-evidence-reviewer.md +0 -0
  204. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-federation-specialist.md +0 -0
  205. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-finops-specialist.md +0 -0
  206. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-fleet-coordinator.md +0 -0
  207. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-fleet-specialist.md +0 -0
  208. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-gitops-specialist.md +0 -0
  209. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-graph-specialist.md +0 -0
  210. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-iac-specialist.md +0 -0
  211. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-incident-coordinator.md +0 -0
  212. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-kubernetes-specialist.md +0 -0
  213. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-operations-safety-reviewer.md +0 -0
  214. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-optimization-coordinator.md +0 -0
  215. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-orchestrator.md +0 -0
  216. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-planner.md +0 -0
  217. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-policy-specialist.md +0 -0
  218. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-privacy-reviewer.md +0 -0
  219. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-product-coordinator.md +0 -0
  220. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-product-specialist.md +0 -0
  221. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-release-guardian.md +0 -0
  222. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-security-reviewer.md +0 -0
  223. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-security-specialist.md +0 -0
  224. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-sre-specialist.md +0 -0
  225. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-task-spec-reviewer.md +0 -0
  226. {platformforge-0.1.5 → platformforge-0.1.6}/.devin/agents/platform-verifier.md +0 -0
  227. {platformforge-0.1.5 → platformforge-0.1.6}/.github/CODEOWNERS +0 -0
  228. {platformforge-0.1.5 → platformforge-0.1.6}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  229. {platformforge-0.1.5 → platformforge-0.1.6}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  230. {platformforge-0.1.5 → platformforge-0.1.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  231. {platformforge-0.1.5 → platformforge-0.1.6}/.github/workflows/ci.yml +0 -0
  232. {platformforge-0.1.5 → platformforge-0.1.6}/.github/workflows/publish-pypi.yml +0 -0
  233. {platformforge-0.1.5 → platformforge-0.1.6}/.gitignore +0 -0
  234. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/golden/argo-bad-rollout/case.yaml +0 -0
  235. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/golden/aws-dump/case.yaml +0 -0
  236. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/golden/container-unsigned/case.yaml +0 -0
  237. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/golden/gitops-drift/case.yaml +0 -0
  238. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/golden/k8s-bad-readiness/case.yaml +0 -0
  239. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/golden/k8s-single-replica/case.yaml +0 -0
  240. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/golden/network-policy-missing/case.yaml +0 -0
  241. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/golden/secret-exposure/case.yaml +0 -0
  242. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/golden/slo-burn/case.yaml +0 -0
  243. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/golden/terraform-public-bucket/case.yaml +0 -0
  244. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/holdout/cost-idle-workload/case.yaml +0 -0
  245. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/holdout/crossplane-platform/case.yaml +0 -0
  246. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/holdout/demo-platform/case.yaml +0 -0
  247. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/holdout/k8s-missing-limits/case.yaml +0 -0
  248. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/holdout/secret-prose-mixed/case.yaml +0 -0
  249. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/cases/holdout/terraform-iam-wildcard/case.yaml +0 -0
  250. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/ledgers/false-negatives.yaml +0 -0
  251. {platformforge-0.1.5 → platformforge-0.1.6}/.platformforge/ledgers/false-positives.yaml +0 -0
  252. {platformforge-0.1.5 → platformforge-0.1.6}/AGENTIC-OS.md +0 -0
  253. {platformforge-0.1.5 → platformforge-0.1.6}/AGENTS.md +0 -0
  254. {platformforge-0.1.5 → platformforge-0.1.6}/AI-PLATFORM.md +0 -0
  255. {platformforge-0.1.5 → platformforge-0.1.6}/APPROVALS.md +0 -0
  256. {platformforge-0.1.5 → platformforge-0.1.6}/ARCHITECTURE.md +0 -0
  257. {platformforge-0.1.5 → platformforge-0.1.6}/CAPABILITIES.md +0 -0
  258. {platformforge-0.1.5 → platformforge-0.1.6}/CAPACITY.md +0 -0
  259. {platformforge-0.1.5 → platformforge-0.1.6}/CLI-REFERENCE.md +0 -0
  260. {platformforge-0.1.5 → platformforge-0.1.6}/CLOUD.md +0 -0
  261. {platformforge-0.1.5 → platformforge-0.1.6}/CODE_OF_CONDUCT.md +0 -0
  262. {platformforge-0.1.5 → platformforge-0.1.6}/COLLECTORS.md +0 -0
  263. {platformforge-0.1.5 → platformforge-0.1.6}/COMPATIBILITY.md +0 -0
  264. {platformforge-0.1.5 → platformforge-0.1.6}/CONTRIBUTING.md +0 -0
  265. {platformforge-0.1.5 → platformforge-0.1.6}/CREDITS.md +0 -0
  266. {platformforge-0.1.5 → platformforge-0.1.6}/DEPRECATION.md +0 -0
  267. {platformforge-0.1.5 → platformforge-0.1.6}/DOMAIN-MAP.md +0 -0
  268. {platformforge-0.1.5 → platformforge-0.1.6}/ECONOMY.md +0 -0
  269. {platformforge-0.1.5 → platformforge-0.1.6}/ENTERPRISE.md +0 -0
  270. {platformforge-0.1.5 → platformforge-0.1.6}/EVALS.md +0 -0
  271. {platformforge-0.1.5 → platformforge-0.1.6}/EXECUTION.md +0 -0
  272. {platformforge-0.1.5 → platformforge-0.1.6}/FEDERATION.md +0 -0
  273. {platformforge-0.1.5 → platformforge-0.1.6}/FLEET.md +0 -0
  274. {platformforge-0.1.5 → platformforge-0.1.6}/GLOSSARY.md +0 -0
  275. {platformforge-0.1.5 → platformforge-0.1.6}/GOLDEN-PATH-ANALYTICS.md +0 -0
  276. {platformforge-0.1.5 → platformforge-0.1.6}/GOLDEN-PATHS.md +0 -0
  277. {platformforge-0.1.5 → platformforge-0.1.6}/GRAPHFY.md +0 -0
  278. {platformforge-0.1.5 → platformforge-0.1.6}/INCIDENTS.md +0 -0
  279. {platformforge-0.1.5 → platformforge-0.1.6}/KNOWLEDGE.md +0 -0
  280. {platformforge-0.1.5 → platformforge-0.1.6}/LICENSE +0 -0
  281. {platformforge-0.1.5 → platformforge-0.1.6}/LIVE.md +0 -0
  282. {platformforge-0.1.5 → platformforge-0.1.6}/MCP.md +0 -0
  283. {platformforge-0.1.5 → platformforge-0.1.6}/MULTI-CLUSTER.md +0 -0
  284. {platformforge-0.1.5 → platformforge-0.1.6}/OBSERVATION-MODEL.md +0 -0
  285. {platformforge-0.1.5 → platformforge-0.1.6}/OPS.md +0 -0
  286. {platformforge-0.1.5 → platformforge-0.1.6}/OPTIMIZATION.md +0 -0
  287. {platformforge-0.1.5 → platformforge-0.1.6}/PLATFORM-ANALYTICS.md +0 -0
  288. {platformforge-0.1.5 → platformforge-0.1.6}/PLATFORM-MEASUREMENT.md +0 -0
  289. {platformforge-0.1.5 → platformforge-0.1.6}/POLICY-INTELLIGENCE.md +0 -0
  290. {platformforge-0.1.5 → platformforge-0.1.6}/QUALITY-PER-TOKEN.md +0 -0
  291. {platformforge-0.1.5 → platformforge-0.1.6}/README.md +0 -0
  292. {platformforge-0.1.5 → platformforge-0.1.6}/README.pt-BR.md +0 -0
  293. {platformforge-0.1.5 → platformforge-0.1.6}/RECONCILIATION.md +0 -0
  294. {platformforge-0.1.5 → platformforge-0.1.6}/RESEARCH.md +0 -0
  295. {platformforge-0.1.5 → platformforge-0.1.6}/ROADMAP.md +0 -0
  296. {platformforge-0.1.5 → platformforge-0.1.6}/ROLLBACK.md +0 -0
  297. {platformforge-0.1.5 → platformforge-0.1.6}/RULES.md +0 -0
  298. {platformforge-0.1.5 → platformforge-0.1.6}/RUNBOOKS.md +0 -0
  299. {platformforge-0.1.5 → platformforge-0.1.6}/RUNTIME-TOPOLOGY.md +0 -0
  300. {platformforge-0.1.5 → platformforge-0.1.6}/SDD.md +0 -0
  301. {platformforge-0.1.5 → platformforge-0.1.6}/SECURITY.md +0 -0
  302. {platformforge-0.1.5 → platformforge-0.1.6}/SOURCES.md +0 -0
  303. {platformforge-0.1.5 → platformforge-0.1.6}/SUPPORT.md +0 -0
  304. {platformforge-0.1.5 → platformforge-0.1.6}/VERIFICATION.md +0 -0
  305. {platformforge-0.1.5 → platformforge-0.1.6}/agents/pf-extractor.md +0 -0
  306. {platformforge-0.1.5 → platformforge-0.1.6}/agents/pf-graph-builder.md +0 -0
  307. {platformforge-0.1.5 → platformforge-0.1.6}/agents/pf-inventory.md +0 -0
  308. {platformforge-0.1.5 → platformforge-0.1.6}/agents/pf-judge.md +0 -0
  309. {platformforge-0.1.5 → platformforge-0.1.6}/agents/pf-reconciler.md +0 -0
  310. {platformforge-0.1.5 → platformforge-0.1.6}/agents/pf-simulator.md +0 -0
  311. {platformforge-0.1.5 → platformforge-0.1.6}/agents/pf-synthesizer.md +0 -0
  312. {platformforge-0.1.5 → platformforge-0.1.6}/agents/pf-verifier.md +0 -0
  313. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-adversarial-critic.md +0 -0
  314. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-ai-infra-specialist.md +0 -0
  315. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-architecture-reviewer.md +0 -0
  316. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-aws-specialist.md +0 -0
  317. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-capacity-specialist.md +0 -0
  318. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-change-coordinator.md +0 -0
  319. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-crossplane-specialist.md +0 -0
  320. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-debate-referee.md +0 -0
  321. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-economy-reviewer.md +0 -0
  322. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-evidence-reviewer.md +0 -0
  323. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-federation-specialist.md +0 -0
  324. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-finops-specialist.md +0 -0
  325. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-fleet-coordinator.md +0 -0
  326. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-fleet-specialist.md +0 -0
  327. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-gitops-specialist.md +0 -0
  328. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-graph-specialist.md +0 -0
  329. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-iac-specialist.md +0 -0
  330. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-incident-coordinator.md +0 -0
  331. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-kubernetes-specialist.md +0 -0
  332. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-operations-safety-reviewer.md +0 -0
  333. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-optimization-coordinator.md +0 -0
  334. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-orchestrator.md +0 -0
  335. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-planner.md +0 -0
  336. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-policy-specialist.md +0 -0
  337. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-privacy-reviewer.md +0 -0
  338. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-product-coordinator.md +0 -0
  339. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-product-specialist.md +0 -0
  340. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-release-guardian.md +0 -0
  341. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-security-reviewer.md +0 -0
  342. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-security-specialist.md +0 -0
  343. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-sre-specialist.md +0 -0
  344. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-task-spec-reviewer.md +0 -0
  345. {platformforge-0.1.5 → platformforge-0.1.6}/agents/platform-verifier.md +0 -0
  346. {platformforge-0.1.5 → platformforge-0.1.6}/config.example.yaml +0 -0
  347. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/agent-handoff.schema.json +0 -0
  348. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/agent-run.schema.json +0 -0
  349. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/agent-spec.schema.json +0 -0
  350. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/capability.schema.json +0 -0
  351. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/change-event.schema.json +0 -0
  352. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/change-intent.schema.json +0 -0
  353. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/change-plan.schema.json +0 -0
  354. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/collector-receipt.schema.json +0 -0
  355. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/context-pack.schema.json +0 -0
  356. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/debate.schema.json +0 -0
  357. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/distribution-manifest-v1.schema.json +0 -0
  358. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/drift-event.schema.json +0 -0
  359. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/fact.schema.json +0 -0
  360. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/finding.schema.json +0 -0
  361. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/graph-v2.schema.json +0 -0
  362. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/graph.schema.json +0 -0
  363. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/install-receipt-v1.schema.json +0 -0
  364. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/observation.schema.json +0 -0
  365. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/receipt.schema.json +0 -0
  366. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/recommendation.schema.json +0 -0
  367. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/refusal.schema.json +0 -0
  368. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/slo-contract.schema.json +0 -0
  369. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/task-spec.schema.json +0 -0
  370. {platformforge-0.1.5 → platformforge-0.1.6}/contracts/workspace-manifest-v1.schema.json +0 -0
  371. {platformforge-0.1.5 → platformforge-0.1.6}/docs/CLI-SURFACE.md +0 -0
  372. {platformforge-0.1.5 → platformforge-0.1.6}/docs/INDEX.md +0 -0
  373. {platformforge-0.1.5 → platformforge-0.1.6}/docs/README.md +0 -0
  374. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0001-deterministic-core-first.md +0 -0
  375. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0002-graphfy-as-spine.md +0 -0
  376. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0003-economy-by-architecture.md +0 -0
  377. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0004-planned-provenance.md +0 -0
  378. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0005-context-redaction.md +0 -0
  379. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0006-rule-provenance.md +0 -0
  380. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0007-version-unresolved-semantics.md +0 -0
  381. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0008-quality-per-token.md +0 -0
  382. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0009-cloud-common-model.md +0 -0
  383. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0010-golden-path-model.md +0 -0
  384. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0011-observation-model.md +0 -0
  385. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0012-collector-boundary.md +0 -0
  386. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0013-absence-semantics.md +0 -0
  387. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0014-freshness-coverage.md +0 -0
  388. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0015-temporal-graphfy.md +0 -0
  389. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0016-identity-resolution.md +0 -0
  390. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0017-reconciliation-classes.md +0 -0
  391. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0018-runtime-edge-semantics.md +0 -0
  392. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0019-credential-boundary.md +0 -0
  393. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0020-provider-call-economy.md +0 -0
  394. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0021-no-arbitrary-shell.md +0 -0
  395. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0022-source-of-truth-first.md +0 -0
  396. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0023-autonomy-levels.md +0 -0
  397. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0024-risk-classes.md +0 -0
  398. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0025-approval-hash-binding.md +0 -0
  399. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0026-operation-state-machine.md +0 -0
  400. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0027-execution-adapter-boundary.md +0 -0
  401. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0028-verification-not-command-success.md +0 -0
  402. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0029-rollback-semantics.md +0 -0
  403. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0030-policy-precedence.md +0 -0
  404. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0031-fleet-canonical-model.md +0 -0
  405. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0032-org-graphfy-layers.md +0 -0
  406. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0033-history-boundaries.md +0 -0
  407. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0034-deterministic-baseline-first.md +0 -0
  408. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0035-platform-metric-provenance.md +0 -0
  409. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0036-optimization-changeintent.md +0 -0
  410. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0037-federation-no-credentials.md +0 -0
  411. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0038-no-individual-scoring.md +0 -0
  412. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0039-ai-platform-boundary.md +0 -0
  413. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0040-pluggable-analytics-storage.md +0 -0
  414. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0041-canonical-agent-roster.md +0 -0
  415. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0042-agents-vs-engines.md +0 -0
  416. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0043-coordinator-dispatch-boundary.md +0 -0
  417. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0044-verifier-independence.md +0 -0
  418. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0045-agent-budget-model.md +0 -0
  419. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0046-agent-context-economy.md +0 -0
  420. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0047-debate-referee-contract.md +0 -0
  421. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0048-host-mirror-generation.md +0 -0
  422. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0049-zero-subagent-fallback.md +0 -0
  423. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0050-agent-operation-boundary.md +0 -0
  424. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0051-fleet-scale-context-policy.md +0 -0
  425. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0052-architecture-freeze-policy.md +0 -0
  426. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0053-economy-control-plane.md +0 -0
  427. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0054-multilayer-cache-invalidation.md +0 -0
  428. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0055-context-gateway-as-the-single-context-entry-point.md +0 -0
  429. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0056-budgetenvelope-dimensions-and-hard-soft-limits.md +0 -0
  430. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0057-checkpoint-and-resume-carry-spend.md +0 -0
  431. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0058-observed-vs-estimated-accounting.md +0 -0
  432. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0059-declared-provider-pricing.md +0 -0
  433. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0060-selective-verification,-not-test-skipping.md +0 -0
  434. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0061-agent-fanout-economy.md +0 -0
  435. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0062-champion-challenger-routing.md +0 -0
  436. {platformforge-0.1.5 → platformforge-0.1.6}/docs/adr/0063-fleet-context-boundary.md +0 -0
  437. {platformforge-0.1.5 → platformforge-0.1.6}/docs/agents/AGENT_ARCHITECTURE.md +0 -0
  438. {platformforge-0.1.5 → platformforge-0.1.6}/docs/agents/AGENT_OUTPUT_CONTRACT.md +0 -0
  439. {platformforge-0.1.5 → platformforge-0.1.6}/docs/agents/AGENT_PROTOCOL.md +0 -0
  440. {platformforge-0.1.5 → platformforge-0.1.6}/docs/agents/AGENT_RISK_MATRIX.md +0 -0
  441. {platformforge-0.1.5 → platformforge-0.1.6}/docs/agents/AGENT_SKILL_MATRIX.md +0 -0
  442. {platformforge-0.1.5 → platformforge-0.1.6}/docs/agents/AGENT_TOOL_MATRIX.md +0 -0
  443. {platformforge-0.1.5 → platformforge-0.1.6}/docs/agents/DEBATE.md +0 -0
  444. {platformforge-0.1.5 → platformforge-0.1.6}/docs/agents/ECONOMY.md +0 -0
  445. {platformforge-0.1.5 → platformforge-0.1.6}/docs/agents/HOST_PARITY.md +0 -0
  446. {platformforge-0.1.5 → platformforge-0.1.6}/docs/agents/ROUTING.md +0 -0
  447. {platformforge-0.1.5 → platformforge-0.1.6}/docs/agents/VERIFICATION.md +0 -0
  448. {platformforge-0.1.5 → platformforge-0.1.6}/docs/assets/logo.png +0 -0
  449. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle2/ARCHITECTURAL-REVIEW.md +0 -0
  450. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle2/FINAL-ECONOMY.md +0 -0
  451. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle2/FINAL-MATRIX.md +0 -0
  452. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle2/FINAL-QUALITY.md +0 -0
  453. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle2/FINAL-REPORT.md +0 -0
  454. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle2/FINAL-SECURITY.md +0 -0
  455. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle2/NORTH-STAR.md +0 -0
  456. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle2.1/BASELINE.md +0 -0
  457. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle2.1/CI-VALIDATION.md +0 -0
  458. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle2.1/FINAL-MATRIX.md +0 -0
  459. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle2.1/VALIDATION-RECEIPT.json +0 -0
  460. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle3/BASELINE.md +0 -0
  461. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle3/FINAL-REPORT.md +0 -0
  462. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle3/PROPOSAL.md +0 -0
  463. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle3/RESEARCH-LEDGER.md +0 -0
  464. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle4/BASELINE.md +0 -0
  465. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle4/FINAL-REPORT.md +0 -0
  466. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle4/RESEARCH-LEDGER.md +0 -0
  467. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle4.1/BASELINE.md +0 -0
  468. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle4.1/FINAL-MATRIX.md +0 -0
  469. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle4.1/FINAL-REPORT.md +0 -0
  470. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle4.1/VALIDATION-RECEIPT.md +0 -0
  471. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5/BASELINE.md +0 -0
  472. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5/ECONOMY-REPORT.md +0 -0
  473. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5/ENTERPRISE-REVIEW.md +0 -0
  474. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5/FINAL-MATRIX.md +0 -0
  475. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5/FINAL-REPORT.md +0 -0
  476. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5/OPTIMIZATION-REPORT.md +0 -0
  477. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5/RESEARCH-LEDGER.md +0 -0
  478. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5/SCALE-BENCHMARKS.md +0 -0
  479. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5/SECURITY-PRIVACY-REVIEW.md +0 -0
  480. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5/VALIDATION-RECEIPT.json +0 -0
  481. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5.1/AGENT-BENCHMARKS.md +0 -0
  482. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5.1/AGENT-MATRIX.md +0 -0
  483. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5.1/AGENTIC-RUNTIME-REPORT.md +0 -0
  484. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5.1/BASELINE.md +0 -0
  485. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5.1/FINAL-MATRIX.md +0 -0
  486. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5.1/FINAL-REPORT.md +0 -0
  487. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5.1/FREEZE-REVIEW.md +0 -0
  488. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5.1/SCALE-BENCHMARKS.md +0 -0
  489. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5.1/SOAK-REPORT.md +0 -0
  490. {platformforge-0.1.5 → platformforge-0.1.6}/docs/cycle5.1/VALIDATION-RECEIPT.json +0 -0
  491. {platformforge-0.1.5 → platformforge-0.1.6}/docs/discovery/forge-audit.md +0 -0
  492. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy/AGENTIC-ECONOMY.md +0 -0
  493. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy/ARCHITECTURE.md +0 -0
  494. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy/BUDGETS.md +0 -0
  495. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy/CACHE.md +0 -0
  496. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy/CHECKPOINT-RESUME.md +0 -0
  497. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy/CONTEXT-GATEWAY.md +0 -0
  498. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy/PRICING.md +0 -0
  499. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy/RECONCILIATION.md +0 -0
  500. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy/ROUTING.md +0 -0
  501. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy/VERIFICATION-ECONOMY.md +0 -0
  502. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy-parity/AGENTIC-ECONOMY-REPORT.md +0 -0
  503. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy-parity/BASELINE.md +0 -0
  504. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy-parity/BENCHMARKS.json +0 -0
  505. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy-parity/CACHE-REPORT.md +0 -0
  506. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy-parity/ECONOMY-BENCHMARKS.md +0 -0
  507. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy-parity/FINAL-MATRIX.md +0 -0
  508. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy-parity/FINAL-REPORT.md +0 -0
  509. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy-parity/GAP-MATRIX.md +0 -0
  510. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy-parity/POLISH-BASELINE.md +0 -0
  511. {platformforge-0.1.5 → platformforge-0.1.6}/docs/economy.md +0 -0
  512. {platformforge-0.1.5 → platformforge-0.1.6}/docs/engineering-excellence/fitness-and-gates.md +0 -0
  513. {platformforge-0.1.5 → platformforge-0.1.6}/docs/experience/accessibility.md +0 -0
  514. {platformforge-0.1.5 → platformforge-0.1.6}/docs/experience/automation-mode.md +0 -0
  515. {platformforge-0.1.5 → platformforge-0.1.6}/docs/experience/fase4-report.md +0 -0
  516. {platformforge-0.1.5 → platformforge-0.1.6}/docs/experience/installation-wizard.md +0 -0
  517. {platformforge-0.1.5 → platformforge-0.1.6}/docs/experience/interactive-cli.md +0 -0
  518. {platformforge-0.1.5 → platformforge-0.1.6}/docs/experience/themes.md +0 -0
  519. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/AGENTIC-RECEIPT.json +0 -0
  520. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/ARCHITECTURE-FREEZE-REVIEW.md +0 -0
  521. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/DOGFOOD.md +0 -0
  522. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/FINAL-MATRIX.md +0 -0
  523. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/FINAL-REPORT.md +0 -0
  524. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/FREEZE-MANIFEST.md +0 -0
  525. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/KNOWLEDGE-REVIEW.md +0 -0
  526. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/LICENSE-INVENTORY.txt +0 -0
  527. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/LIFECYCLE.md +0 -0
  528. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/PERFORMANCE-BASELINE.json +0 -0
  529. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/PERFORMANCE-RECEIPT.json +0 -0
  530. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/README.md +0 -0
  531. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/REAL-WORLD-ISSUES.md +0 -0
  532. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/RELEASE-HARDENING.md +0 -0
  533. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/SBOM.cdx.json +0 -0
  534. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/SECURITY-REVIEW.md +0 -0
  535. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/SOAK-RECEIPT.json +0 -0
  536. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/UNFREEZE-RFC.md +0 -0
  537. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/VALIDATION-RECEIPT.json +0 -0
  538. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/dogfood/api-collect.json +0 -0
  539. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/dogfood/api-inspect.json +0 -0
  540. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/dogfood/context-audit.json +0 -0
  541. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/dogfood/route-audit.json +0 -0
  542. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/dogfood/self-analyze-iac.json +0 -0
  543. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/dogfood/self-analyze-k8s.json +0 -0
  544. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/dogfood/self-analyze-secrets.json +0 -0
  545. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/dogfood/self-collect.json +0 -0
  546. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/dogfood/self-graph.json +0 -0
  547. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/dogfood/self-inspect.json +0 -0
  548. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/dogfood/spark-collect.json +0 -0
  549. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/dogfood/spark-inspect.json +0 -0
  550. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/exceptions/FE-000-template.json +0 -0
  551. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/exceptions/FE-001.json +0 -0
  552. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/exceptions/FE-002.json +0 -0
  553. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/exceptions/FE-003.json +0 -0
  554. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/exceptions/FE-004.json +0 -0
  555. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/rfc/RFC-ECONOMY-UNFREEZE.md +0 -0
  556. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/rfc/RFC-PORTABLE-DISTRIBUTION.md +0 -0
  557. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/snapshots/agents.json +0 -0
  558. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/snapshots/capabilities.json +0 -0
  559. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/snapshots/cli.json +0 -0
  560. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/snapshots/knowledge.json +0 -0
  561. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/snapshots/mcp.json +0 -0
  562. {platformforge-0.1.5 → platformforge-0.1.6}/docs/freeze/snapshots/schemas.json +0 -0
  563. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/account-installation.md +0 -0
  564. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/claude-code.md +0 -0
  565. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/codex-cli.md +0 -0
  566. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/copilot-cli.md +0 -0
  567. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/devin-cli.md +0 -0
  568. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/global-installation.md +0 -0
  569. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/mcp.md +0 -0
  570. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/portable-installation.md +0 -0
  571. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/quickstart.en.md +0 -0
  572. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/quickstart.md +0 -0
  573. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/troubleshooting.en.md +0 -0
  574. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/troubleshooting.md +0 -0
  575. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/uninstall.md +0 -0
  576. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/update-and-repair.md +0 -0
  577. {platformforge-0.1.5 → platformforge-0.1.6}/docs/installation/workspace-installation.md +0 -0
  578. {platformforge-0.1.5 → platformforge-0.1.6}/docs/knowledge-program/broken-link-report.md +0 -0
  579. {platformforge-0.1.5 → platformforge-0.1.6}/docs/knowledge-program/classification-report.md +0 -0
  580. {platformforge-0.1.5 → platformforge-0.1.6}/docs/knowledge-program/command-drift-report.md +0 -0
  581. {platformforge-0.1.5 → platformforge-0.1.6}/docs/knowledge-program/context-map.jsonl +0 -0
  582. {platformforge-0.1.5 → platformforge-0.1.6}/docs/knowledge-program/documentation-quality-report.md +0 -0
  583. {platformforge-0.1.5 → platformforge-0.1.6}/docs/knowledge-program/duplicate-content-report.md +0 -0
  584. {platformforge-0.1.5 → platformforge-0.1.6}/docs/knowledge-program/final-report.md +0 -0
  585. {platformforge-0.1.5 → platformforge-0.1.6}/docs/knowledge-program/inventory.jsonl +0 -0
  586. {platformforge-0.1.5 → platformforge-0.1.6}/docs/knowledge-program/obsolete-document-report.md +0 -0
  587. {platformforge-0.1.5 → platformforge-0.1.6}/docs/knowledge-program/pipeline.json +0 -0
  588. {platformforge-0.1.5 → platformforge-0.1.6}/docs/knowledge-program/semantic-review-ledger.jsonl +0 -0
  589. {platformforge-0.1.5 → platformforge-0.1.6}/docs/knowledge-program/tutorial-coverage-report.md +0 -0
  590. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/README.md +0 -0
  591. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/cicd.md +0 -0
  592. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/custos.md +0 -0
  593. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/graph-deps.md +0 -0
  594. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/graph-studio.md +0 -0
  595. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/hosts.md +0 -0
  596. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/impacto-blast.md +0 -0
  597. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/inspect-repo.md +0 -0
  598. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/judge-policy.md +0 -0
  599. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/kubernetes.md +0 -0
  600. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/seguranca.md +0 -0
  601. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/sre.md +0 -0
  602. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/terraform.md +0 -0
  603. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/usar-agents.md +0 -0
  604. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/usar-skills.md +0 -0
  605. {platformforge-0.1.5 → platformforge-0.1.6}/docs/learn/recipes/verificar-mcp.md +0 -0
  606. {platformforge-0.1.5 → platformforge-0.1.6}/docs/portable/ARCHITECTURE.md +0 -0
  607. {platformforge-0.1.5 → platformforge-0.1.6}/docs/portable/FINAL-MATRIX.md +0 -0
  608. {platformforge-0.1.5 → platformforge-0.1.6}/docs/portable/FINAL-REPORT.md +0 -0
  609. {platformforge-0.1.5 → platformforge-0.1.6}/docs/portable/INSTALL.md +0 -0
  610. {platformforge-0.1.5 → platformforge-0.1.6}/docs/portable/OFFLINE.md +0 -0
  611. {platformforge-0.1.5 → platformforge-0.1.6}/docs/portable/WORKSPACES.md +0 -0
  612. {platformforge-0.1.5 → platformforge-0.1.6}/docs/reference/agents.md +0 -0
  613. {platformforge-0.1.5 → platformforge-0.1.6}/docs/reference/command-rationale.json +0 -0
  614. {platformforge-0.1.5 → platformforge-0.1.6}/docs/reference/commands.generated.json +0 -0
  615. {platformforge-0.1.5 → platformforge-0.1.6}/docs/reference/commands.md +0 -0
  616. {platformforge-0.1.5 → platformforge-0.1.6}/docs/reference/divergence.generated.json +0 -0
  617. {platformforge-0.1.5 → platformforge-0.1.6}/docs/reference/skills.md +0 -0
  618. {platformforge-0.1.5 → platformforge-0.1.6}/docs/releasing/pypi-patch-plan.md +0 -0
  619. {platformforge-0.1.5 → platformforge-0.1.6}/docs/reports/experience-3.md +0 -0
  620. {platformforge-0.1.5 → platformforge-0.1.6}/docs/tutorials/first-run.md +0 -0
  621. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/agent-budget-exhaustion/case.yaml +0 -0
  622. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/agent-conflicting-specialists/case.yaml +0 -0
  623. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/agent-fleet-optimization/case.yaml +0 -0
  624. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/agent-host-no-subagents/case.yaml +0 -0
  625. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/agent-incident-multi/case.yaml +0 -0
  626. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/agent-missing-evidence/case.yaml +0 -0
  627. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/agent-multi-domain-audit/case.yaml +0 -0
  628. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/agent-production-change/case.yaml +0 -0
  629. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/agent-security-mandatory/case.yaml +0 -0
  630. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/agent-simple-iac/case.yaml +0 -0
  631. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/approval-integrity-seal/case.yaml +0 -0
  632. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/capacity-hot/case.yaml +0 -0
  633. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/capacity-hot/fixture/capacity.json +0 -0
  634. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/catalog-noowner/case.yaml +0 -0
  635. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/catalog-noowner/fixture/catalog-info.yaml +0 -0
  636. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/contract-fact/case.yaml +0 -0
  637. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/contract-fact/fixture/doc.json +0 -0
  638. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/cosign-unverified/case.yaml +0 -0
  639. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/cosign-unverified/fixture/sig.json +0 -0
  640. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/expected-delta-refusal/case.yaml +0 -0
  641. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/finops-noattr/case.yaml +0 -0
  642. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/finops-noattr/fixture/costs.json +0 -0
  643. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-absent-allocation-unknown/case.yaml +0 -0
  644. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-centrality-not-criticality/case.yaml +0 -0
  645. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-correlation-not-causality/case.yaml +0 -0
  646. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-dx-no-person-metrics/case.yaml +0 -0
  647. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-federation-restricted-denied/case.yaml +0 -0
  648. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-federation-secret-denied/case.yaml +0 -0
  649. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-history-window-deterministic/case.yaml +0 -0
  650. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-low-util-not-deletable/case.yaml +0 -0
  651. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-member-key-deterministic/case.yaml +0 -0
  652. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-missing-denominator/case.yaml +0 -0
  653. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-partial-coverage-visible/case.yaml +0 -0
  654. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-plan-changeintent-only/case.yaml +0 -0
  655. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-report-all-cited/case.yaml +0 -0
  656. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-small-sample-confidence/case.yaml +0 -0
  657. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/fleet-inv-uncertain-optimization-suppressed/case.yaml +0 -0
  658. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/gha-dangerous/case.yaml +0 -0
  659. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/gha-dangerous/fixture/.github/workflows/ci.yaml +0 -0
  660. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/gitops-v2/case.yaml +0 -0
  661. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/gitops-v2/fixture/argo.yaml +0 -0
  662. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/graph-k8s-blast/case.yaml +0 -0
  663. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/graph-k8s-blast/fixture/deploy.yaml +0 -0
  664. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/iac-module-nopin/case.yaml +0 -0
  665. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/iac-module-nopin/fixture/main.tf +0 -0
  666. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/iac-plan-replace/case.yaml +0 -0
  667. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/iac-plan-replace/fixture/plan.json +0 -0
  668. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/iac-sg-open/case.yaml +0 -0
  669. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/iac-sg-open/fixture/main.tf +0 -0
  670. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/iam-oidc/case.yaml +0 -0
  671. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/iam-oidc/fixture/policy.json +0 -0
  672. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/iam-wildcard-positive/case.yaml +0 -0
  673. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/iam-wildcard-positive/fixture/policy.json +0 -0
  674. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-bad-actor/case.yaml +0 -0
  675. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-bad-actor/fixture/app.yaml +0 -0
  676. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-beta-api/case.yaml +0 -0
  677. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-beta-api/fixture/cr.yaml +0 -0
  678. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-dep-api-boundary/case.yaml +0 -0
  679. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-dep-api-boundary/fixture/app.yaml +0 -0
  680. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-dep-api-clean/case.yaml +0 -0
  681. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-dep-api-clean/fixture/app.yaml +0 -0
  682. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-dep-api-unknown/case.yaml +0 -0
  683. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-dep-api-unknown/fixture/app.yaml +0 -0
  684. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-dep-api-v120/case.yaml +0 -0
  685. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-dep-api-v120/fixture/app.yaml +0 -0
  686. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-dep-api-v129/case.yaml +0 -0
  687. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-dep-api-v129/fixture/app.yaml +0 -0
  688. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-hpa-noreq/case.yaml +0 -0
  689. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-hpa-noreq/fixture/app.yaml +0 -0
  690. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-limits-boundary/case.yaml +0 -0
  691. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-limits-boundary/fixture/app.yaml +0 -0
  692. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-limits-negative/case.yaml +0 -0
  693. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-limits-negative/fixture/deploy.yaml +0 -0
  694. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-limits-positive/case.yaml +0 -0
  695. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-limits-positive/fixture/deploy.yaml +0 -0
  696. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-nopdb/case.yaml +0 -0
  697. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/k8s-nopdb/fixture/app.yaml +0 -0
  698. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/knowledge-registry/case.yaml +0 -0
  699. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/kyverno-dep/case.yaml +0 -0
  700. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/kyverno-dep/fixture/pol.yaml +0 -0
  701. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/kyverno-legacy/case.yaml +0 -0
  702. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/kyverno-legacy/fixture/pol.yaml +0 -0
  703. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-aws-collect/case.yaml +0 -0
  704. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-aws-collect/fixture/aws/ec2_describe-vpcs.json +0 -0
  705. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-aws-collect/fixture/aws/iam_list-users.denied.txt +0 -0
  706. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-aws-collect/fixture/aws/sts_get-caller-identity.json +0 -0
  707. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-drift/case.yaml +0 -0
  708. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-drift/fixture/after.json +0 -0
  709. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-drift/fixture/before.json +0 -0
  710. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-incident/case.yaml +0 -0
  711. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-incident/fixture/changes.json +0 -0
  712. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-incident/fixture/incident.json +0 -0
  713. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-k8s-collect/case.yaml +0 -0
  714. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-k8s-collect/fixture/kubectl/get_configmaps.denied.txt +0 -0
  715. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-k8s-collect/fixture/kubectl/get_deployments.apps.json +0 -0
  716. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-k8s-collect/fixture/kubectl/get_pods.json +0 -0
  717. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-k8s-collect/fixture/kubectl/get_secrets.json +0 -0
  718. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-multicluster/case.yaml +0 -0
  719. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-multicluster/fixture/clusters.json +0 -0
  720. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-plan/case.yaml +0 -0
  721. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-plan/fixture/drift.json +0 -0
  722. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-reconcile/case.yaml +0 -0
  723. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-reconcile/fixture/desired.json +0 -0
  724. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-reconcile/fixture/observed.json +0 -0
  725. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-secrets-boundary/case.yaml +0 -0
  726. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-secrets-boundary/fixture/envelope.json +0 -0
  727. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-temporal-graph/case.yaml +0 -0
  728. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/live-temporal-graph/fixture/graph.json +0 -0
  729. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/ops-approval/case.yaml +0 -0
  730. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/ops-convergence/case.yaml +0 -0
  731. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/ops-execution-safety/case.yaml +0 -0
  732. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/ops-intent/case.yaml +0 -0
  733. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/ops-planning/case.yaml +0 -0
  734. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/ops-policy/case.yaml +0 -0
  735. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/ops-rollback/case.yaml +0 -0
  736. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/ops-verification/case.yaml +0 -0
  737. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/rollback-argocd-revision/case.yaml +0 -0
  738. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/rollback-blind-inverse/case.yaml +0 -0
  739. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/rollback-git-commit/case.yaml +0 -0
  740. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/rollback-impossible/case.yaml +0 -0
  741. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/rollback-k8s-annotation-restore/case.yaml +0 -0
  742. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/rollback-k8s-scale/case.yaml +0 -0
  743. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/rollback-material-tamper/case.yaml +0 -0
  744. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/rollback-terraform-replan/case.yaml +0 -0
  745. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/rollback-unknown/case.yaml +0 -0
  746. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/routing-specialist/case.yaml +0 -0
  747. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/rtk-roundtrip/case.yaml +0 -0
  748. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/rtk-roundtrip/fixture/verbose.txt +0 -0
  749. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/sbom-vuln/case.yaml +0 -0
  750. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/sbom-vuln/fixture/sbom.json +0 -0
  751. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/secret-prose-mixed/fixture/app.env +0 -0
  752. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/secret-prose-mixed/fixture/policy-notes.md +0 -0
  753. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/secrets-noleak/case.yaml +0 -0
  754. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/secrets-noleak/fixture/app.env +0 -0
  755. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/slo-fastburn/case.yaml +0 -0
  756. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/slo-fastburn/fixture/events.yaml +0 -0
  757. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/slo-fastburn/fixture/slo.yaml +0 -0
  758. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/slo-noinput/case.yaml +0 -0
  759. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/slo-noinput/fixture/events.yaml +0 -0
  760. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/slo-noinput/fixture/slo.yaml +0 -0
  761. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/sot-conflict/case.yaml +0 -0
  762. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/token-budget/case.yaml +0 -0
  763. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/token-budget/fixture/big.py +0 -0
  764. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/xr-delete/case.yaml +0 -0
  765. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/xr-delete/fixture/xr.yaml +0 -0
  766. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/xr-graph-chain/case.yaml +0 -0
  767. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/xr-graph-chain/fixture/xrd.yaml +0 -0
  768. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/xr-negative-crd/case.yaml +0 -0
  769. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/xr-negative-crd/fixture/widget.yaml +0 -0
  770. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/xr-upbound-mr/case.yaml +0 -0
  771. {platformforge-0.1.5 → platformforge-0.1.6}/evals/cases/xr-upbound-mr/fixture/bucket.yaml +0 -0
  772. {platformforge-0.1.5 → platformforge-0.1.6}/evals/qpt-bench/change-review/case.yaml +0 -0
  773. {platformforge-0.1.5 → platformforge-0.1.6}/evals/qpt-bench/change-review/fixture/plan.json +0 -0
  774. {platformforge-0.1.5 → platformforge-0.1.6}/evals/qpt-bench/gha-security/case.yaml +0 -0
  775. {platformforge-0.1.5 → platformforge-0.1.6}/evals/qpt-bench/gha-security/fixture/ci.yml +0 -0
  776. {platformforge-0.1.5 → platformforge-0.1.6}/evals/qpt-bench/iam-investigate/case.yaml +0 -0
  777. {platformforge-0.1.5 → platformforge-0.1.6}/evals/qpt-bench/iam-investigate/fixture/policy.json +0 -0
  778. {platformforge-0.1.5 → platformforge-0.1.6}/evals/qpt-bench/incident-analysis/case.yaml +0 -0
  779. {platformforge-0.1.5 → platformforge-0.1.6}/evals/qpt-bench/incident-analysis/fixture/query.json +0 -0
  780. {platformforge-0.1.5 → platformforge-0.1.6}/evals/qpt-bench/incident-analysis/fixture/rules.yaml +0 -0
  781. {platformforge-0.1.5 → platformforge-0.1.6}/evals/qpt-bench/k8s-review/case.yaml +0 -0
  782. {platformforge-0.1.5 → platformforge-0.1.6}/evals/qpt-bench/k8s-review/fixture/deploy.yaml +0 -0
  783. {platformforge-0.1.5 → platformforge-0.1.6}/evals/qpt-bench/tf-security/case.yaml +0 -0
  784. {platformforge-0.1.5 → platformforge-0.1.6}/evals/qpt-bench/tf-security/fixture/main.tf +0 -0
  785. {platformforge-0.1.5 → platformforge-0.1.6}/factory/specs/archive/2026/cyc9-07-scenarios-platform.md +0 -0
  786. {platformforge-0.1.5 → platformforge-0.1.6}/forge.agentic.json +0 -0
  787. {platformforge-0.1.5 → platformforge-0.1.6}/forge.json +0 -0
  788. {platformforge-0.1.5 → platformforge-0.1.6}/install.ps1 +0 -0
  789. {platformforge-0.1.5 → platformforge-0.1.6}/install.sh +0 -0
  790. {platformforge-0.1.5 → platformforge-0.1.6}/install.windows.sh +0 -0
  791. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/aws/eks.yaml +0 -0
  792. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/aws/iam.yaml +0 -0
  793. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/aws/network-exposure.yaml +0 -0
  794. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/aws/organizations.yaml +0 -0
  795. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/crossplane/composition-providers.yaml +0 -0
  796. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/crossplane/managed-resources.yaml +0 -0
  797. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/crossplane/v1-v2.yaml +0 -0
  798. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/kubernetes/api-deprecations.yaml +0 -0
  799. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/kubernetes/autoscaling-rbac.yaml +0 -0
  800. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/kubernetes/gateway-api.yaml +0 -0
  801. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/kubernetes/pod-security.yaml +0 -0
  802. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/sources.yaml +0 -0
  803. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/terraform/lifecycle.yaml +0 -0
  804. {platformforge-0.1.5 → platformforge-0.1.6}/knowledge/terraform/plan-semantics.yaml +0 -0
  805. {platformforge-0.1.5 → platformforge-0.1.6}/lab/chaos-pod-kill/chaos.yaml +0 -0
  806. {platformforge-0.1.5 → platformforge-0.1.6}/lab/chaos-pod-kill/facts.json +0 -0
  807. {platformforge-0.1.5 → platformforge-0.1.6}/lab/fleets/acme/capacity.yaml +0 -0
  808. {platformforge-0.1.5 → platformforge-0.1.6}/lab/fleets/acme/costs.yaml +0 -0
  809. {platformforge-0.1.5 → platformforge-0.1.6}/lab/fleets/acme/events.yaml +0 -0
  810. {platformforge-0.1.5 → platformforge-0.1.6}/lab/fleets/acme/fleet.yaml +0 -0
  811. {platformforge-0.1.5 → platformforge-0.1.6}/lab/fleets/acme/graph.yaml +0 -0
  812. {platformforge-0.1.5 → platformforge-0.1.6}/lab/fleets/acme/policies.yaml +0 -0
  813. {platformforge-0.1.5 → platformforge-0.1.6}/lab/fleets/acme/requests.yaml +0 -0
  814. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/argo-bad-rollout/expected.yaml +0 -0
  815. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/argo-bad-rollout/fixture/app.yaml +0 -0
  816. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/aws-dump/expected.yaml +0 -0
  817. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/aws-dump/fixture/compute.json +0 -0
  818. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/aws-dump/fixture/iam.json +0 -0
  819. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/aws-dump/fixture/network.json +0 -0
  820. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/aws-dump/fixture/org.json +0 -0
  821. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/aws-dump/fixture/storage.json +0 -0
  822. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/container-unsigned/expected.yaml +0 -0
  823. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/container-unsigned/fixture/supply.json +0 -0
  824. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/cost-idle-workload/expected.yaml +0 -0
  825. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/cost-idle-workload/fixture/costs.json +0 -0
  826. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/crossplane-platform/expected.yaml +0 -0
  827. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/crossplane-platform/fixture/negative.yaml +0 -0
  828. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/crossplane-platform/fixture/xrd.yaml +0 -0
  829. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/demo-platform/expected.yaml +0 -0
  830. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/demo-platform/fixture/.github/workflows/ci.yml +0 -0
  831. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/demo-platform/fixture/deploy.yaml +0 -0
  832. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/demo-platform/fixture/infra.tf +0 -0
  833. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/fleet-ai/expected.yaml +0 -0
  834. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/fleet-capacity/expected.yaml +0 -0
  835. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/fleet-cost/expected.yaml +0 -0
  836. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/fleet-federation/expected.yaml +0 -0
  837. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/fleet-golden-path/expected.yaml +0 -0
  838. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/fleet-op-hotspot/expected.yaml +0 -0
  839. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/fleet-ownership/expected.yaml +0 -0
  840. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/fleet-partial/expected.yaml +0 -0
  841. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/fleet-policy-friction/expected.yaml +0 -0
  842. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/fleet-recurring-incident/expected.yaml +0 -0
  843. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/fleet-report/expected.yaml +0 -0
  844. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/fleet-risk/expected.yaml +0 -0
  845. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/gitops-drift/expected.yaml +0 -0
  846. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/gitops-drift/fixture/app.yaml +0 -0
  847. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/k8s-bad-readiness/expected.yaml +0 -0
  848. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/k8s-bad-readiness/fixture/deploy.yaml +0 -0
  849. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/k8s-bad-readiness/fixture/netpol.yaml +0 -0
  850. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/k8s-missing-limits/expected.yaml +0 -0
  851. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/k8s-missing-limits/fixture/deploy.yaml +0 -0
  852. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/k8s-missing-limits/fixture/netpol.yaml +0 -0
  853. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/k8s-single-replica/expected.yaml +0 -0
  854. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/k8s-single-replica/fixture/deploy.yaml +0 -0
  855. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/k8s-single-replica/fixture/netpol.yaml +0 -0
  856. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-aws-collect/expected.yaml +0 -0
  857. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-aws-collect/fixture/aws/ec2_describe-vpcs.json +0 -0
  858. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-aws-collect/fixture/aws/iam_list-users.denied.txt +0 -0
  859. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-aws-collect/fixture/aws/sts_get-caller-identity.json +0 -0
  860. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-k8s-collect/expected.yaml +0 -0
  861. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_configmaps.denied.txt +0 -0
  862. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_deployments.apps.json +0 -0
  863. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_pods.json +0 -0
  864. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-k8s-collect/fixture/kubectl/get_secrets.json +0 -0
  865. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-kind/expected.yaml +0 -0
  866. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-kind/fixture/kubectl/get_configmaps.denied.txt +0 -0
  867. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-kind/fixture/kubectl/get_deployments.apps.json +0 -0
  868. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-kind/fixture/kubectl/get_pods.json +0 -0
  869. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/live-kind/fixture/kubectl/get_secrets.json +0 -0
  870. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/network-policy-missing/expected.yaml +0 -0
  871. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/network-policy-missing/fixture/deploy.yaml +0 -0
  872. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-bad-rollout/expected.yaml +0 -0
  873. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-bad-rollout/fixture/ops.yaml +0 -0
  874. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-break-glass/expected.yaml +0 -0
  875. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-break-glass/fixture/ops.yaml +0 -0
  876. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-broken-selector/expected.yaml +0 -0
  877. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-broken-selector/fixture/ops.yaml +0 -0
  878. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-changed-plan-hash/expected.yaml +0 -0
  879. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-changed-plan-hash/fixture/ops.yaml +0 -0
  880. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-conflicting-operation/expected.yaml +0 -0
  881. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-conflicting-operation/fixture/ops.yaml +0 -0
  882. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-expired-approval/expected.yaml +0 -0
  883. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-expired-approval/fixture/ops.yaml +0 -0
  884. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-partial-failure/expected.yaml +0 -0
  885. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-partial-failure/fixture/ops.yaml +0 -0
  886. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-policy-denial/expected.yaml +0 -0
  887. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-policy-denial/fixture/ops.yaml +0 -0
  888. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-replica-drift/expected.yaml +0 -0
  889. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-replica-drift/fixture/ops.yaml +0 -0
  890. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-rollback-annotate/expected.yaml +0 -0
  891. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-rollback-annotate/fixture/ops.yaml +0 -0
  892. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-rollback-gitops/expected.yaml +0 -0
  893. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-rollback-gitops/fixture/ops.yaml +0 -0
  894. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-rollback-impossible/expected.yaml +0 -0
  895. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-rollback-impossible/fixture/ops.yaml +0 -0
  896. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-rollback-scale/expected.yaml +0 -0
  897. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-rollback-scale/fixture/ops.yaml +0 -0
  898. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-rollback-terraform/expected.yaml +0 -0
  899. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-rollback-terraform/fixture/ops.yaml +0 -0
  900. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-rollback-terraform/fixture/tf/tfplan.bin +0 -0
  901. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-stale-observation/expected.yaml +0 -0
  902. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/ops-stale-observation/fixture/ops.yaml +0 -0
  903. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/secret-exposure/expected.yaml +0 -0
  904. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/secret-exposure/fixture/app.env +0 -0
  905. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/slo-burn/expected.yaml +0 -0
  906. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/slo-burn/fixture/events.yaml +0 -0
  907. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/slo-burn/fixture/slo.yaml +0 -0
  908. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/terraform-iam-wildcard/expected.yaml +0 -0
  909. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/terraform-iam-wildcard/fixture/policy.json +0 -0
  910. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/terraform-public-bucket/expected.yaml +0 -0
  911. {platformforge-0.1.5 → platformforge-0.1.6}/lab/scenarios/terraform-public-bucket/fixture/main.tf +0 -0
  912. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/__main__.py +0 -0
  913. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/_forge_portal.py +0 -0
  914. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/_graphstudio.py +0 -0
  915. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/_graphview.py +0 -0
  916. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/_installkit.py +0 -0
  917. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/_portal_telemetry.py +0 -0
  918. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/__init__.py +0 -0
  919. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/bench.py +0 -0
  920. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/contextpack.py +0 -0
  921. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/contracts.py +0 -0
  922. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/coordinators.py +0 -0
  923. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/critic.py +0 -0
  924. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/debate.py +0 -0
  925. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/executors.py +0 -0
  926. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/guardian.py +0 -0
  927. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/mirrors.py +0 -0
  928. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/orchestrator.py +0 -0
  929. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/planner.py +0 -0
  930. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/playbook.py +0 -0
  931. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/referee.py +0 -0
  932. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/reviewers.py +0 -0
  933. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/roster.py +0 -0
  934. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/runledger.py +0 -0
  935. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/runstore.py +0 -0
  936. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/specialists.py +0 -0
  937. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/taskspec.py +0 -0
  938. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/uniqueness.py +0 -0
  939. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/agents/verifier.py +0 -0
  940. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/aiplat/__init__.py +0 -0
  941. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/aiplat/models.py +0 -0
  942. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/__init__.py +0 -0
  943. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/capacity.py +0 -0
  944. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/debt.py +0 -0
  945. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/dx.py +0 -0
  946. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/finops_v4.py +0 -0
  947. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/goldenpath.py +0 -0
  948. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/history.py +0 -0
  949. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/measurement.py +0 -0
  950. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/models.py +0 -0
  951. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/opsanalytics.py +0 -0
  952. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/policyintel.py +0 -0
  953. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/reliability.py +0 -0
  954. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/soak.py +0 -0
  955. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/analytics/store.py +0 -0
  956. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/bench.py +0 -0
  957. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cases/__init__.py +0 -0
  958. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cases/casefile.py +0 -0
  959. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cases/context_audit.py +0 -0
  960. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cases/ledgers.py +0 -0
  961. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cases/replay.py +0 -0
  962. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cases/routing_audit.py +0 -0
  963. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/caveman/__init__.py +0 -0
  964. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/caveman/compress.py +0 -0
  965. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cicd/__init__.py +0 -0
  966. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cicd/backstage.py +0 -0
  967. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cicd/dockerfile.py +0 -0
  968. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cicd/github_actions.py +0 -0
  969. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cicd/gitlab_ci.py +0 -0
  970. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cicd/gitops.py +0 -0
  971. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cli/__init__.py +0 -0
  972. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cli/fleetcmd.py +0 -0
  973. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cli/main.py +0 -0
  974. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cloud/__init__.py +0 -0
  975. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cloud/aws.py +0 -0
  976. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cloud/common.py +0 -0
  977. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/cloud/multicloud.py +0 -0
  978. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/collect/__init__.py +0 -0
  979. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/collect/detect.py +0 -0
  980. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/context/__init__.py +0 -0
  981. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/context/capsule.py +0 -0
  982. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/context/gateway.py +0 -0
  983. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/context/refs.py +0 -0
  984. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/context/sufficiency.py +0 -0
  985. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/core/__init__.py +0 -0
  986. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/core/hashing.py +0 -0
  987. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/core/ownership.py +0 -0
  988. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/core/receipts.py +0 -0
  989. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/core/redaction.py +0 -0
  990. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/core/store.py +0 -0
  991. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/core/workspace.py +0 -0
  992. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/data/portable_skills/platformforge-agents/SKILL.md +0 -0
  993. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/data/portable_skills/platformforge-change/SKILL.md +0 -0
  994. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/data/portable_skills/platformforge-core/SKILL.md +0 -0
  995. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/data/portable_skills/platformforge-economy/SKILL.md +0 -0
  996. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/data/portable_skills/platformforge-finops/SKILL.md +0 -0
  997. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/data/portable_skills/platformforge-fleet/SKILL.md +0 -0
  998. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/data/portable_skills/platformforge-governance/SKILL.md +0 -0
  999. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/data/portable_skills/platformforge-graph/SKILL.md +0 -0
  1000. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/data/portable_skills/platformforge-lab/SKILL.md +0 -0
  1001. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/data/portable_skills/platformforge-sdd/SKILL.md +0 -0
  1002. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/data/portable_skills/platformforge-security/SKILL.md +0 -0
  1003. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/data/portable_skills/platformforge-sre/SKILL.md +0 -0
  1004. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/diagnose/__init__.py +0 -0
  1005. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/distribution/__init__.py +0 -0
  1006. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/distribution/bundle.py +0 -0
  1007. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/distribution/hostflow.py +0 -0
  1008. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/distribution/models.py +0 -0
  1009. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/distribution/service.py +0 -0
  1010. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/__init__.py +0 -0
  1011. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/bench.py +0 -0
  1012. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/budget.py +0 -0
  1013. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/cache.py +0 -0
  1014. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/checkpoint.py +0 -0
  1015. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/collection.py +0 -0
  1016. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/doctor.py +0 -0
  1017. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/engine.py +0 -0
  1018. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/envelope.py +0 -0
  1019. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/fleetpack.py +0 -0
  1020. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/ledger.py +0 -0
  1021. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/plan.py +0 -0
  1022. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/pricing.py +0 -0
  1023. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/qpt.py +0 -0
  1024. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/reconcile.py +0 -0
  1025. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/verifyplan.py +0 -0
  1026. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/economy/waste.py +0 -0
  1027. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/evals/__init__.py +0 -0
  1028. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/evals/coverage.py +0 -0
  1029. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/evals/fleet_invariants.py +0 -0
  1030. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/evals/ops_invariants.py +0 -0
  1031. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/evals/runner.py +0 -0
  1032. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/federation/__init__.py +0 -0
  1033. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/federation/node.py +0 -0
  1034. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/finops/__init__.py +0 -0
  1035. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/finops/alloc.py +0 -0
  1036. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/finops/costs.py +0 -0
  1037. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/finops/focus.py +0 -0
  1038. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/finops/graph_cost.py +0 -0
  1039. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/finops/ingest.py +0 -0
  1040. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/finops/insights.py +0 -0
  1041. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/finops/unit.py +0 -0
  1042. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/fleet/__init__.py +0 -0
  1043. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/fleet/loader.py +0 -0
  1044. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/fleet/models.py +0 -0
  1045. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/fleet/orggraph.py +0 -0
  1046. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/fleet/query.py +0 -0
  1047. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/forge/__init__.py +0 -0
  1048. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/forge/collect.py +0 -0
  1049. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/forge/delegate.py +0 -0
  1050. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/forge/manifest.py +0 -0
  1051. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/freeze/__init__.py +0 -0
  1052. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/freeze/exceptions.py +0 -0
  1053. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/freeze/manifest.py +0 -0
  1054. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/freeze/snapshots.py +0 -0
  1055. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graph/__init__.py +0 -0
  1056. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graph/backend.py +0 -0
  1057. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graph/bench.py +0 -0
  1058. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graph/build.py +0 -0
  1059. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graph/delivery.py +0 -0
  1060. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graph/diff.py +0 -0
  1061. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graph/events.py +0 -0
  1062. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graph/migrate.py +0 -0
  1063. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graph/model.py +0 -0
  1064. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graph/persist.py +0 -0
  1065. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graph/query.py +0 -0
  1066. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graph/temporal.py +0 -0
  1067. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graph/vocab.py +0 -0
  1068. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/graphview.py +0 -0
  1069. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/iac/__init__.py +0 -0
  1070. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/iac/drift.py +0 -0
  1071. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/iac/plan.py +0 -0
  1072. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/iac/terraform.py +0 -0
  1073. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/install/__init__.py +0 -0
  1074. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/install/service.py +0 -0
  1075. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/k8s/__init__.py +0 -0
  1076. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/k8s/helm.py +0 -0
  1077. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/k8s/hubble.py +0 -0
  1078. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/k8s/manifests.py +0 -0
  1079. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/knowledge/__init__.py +0 -0
  1080. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/knowledge/packs.py +0 -0
  1081. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/knowledge/registry.py +0 -0
  1082. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/knowledge/select.py +0 -0
  1083. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/lab/__init__.py +0 -0
  1084. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/lab/chaos.py +0 -0
  1085. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/lab/fleetlab.py +0 -0
  1086. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/lab/opslab.py +0 -0
  1087. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/lab/runner.py +0 -0
  1088. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/__init__.py +0 -0
  1089. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/budget.py +0 -0
  1090. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/capability.py +0 -0
  1091. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/collectors/__init__.py +0 -0
  1092. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/collectors/aws.py +0 -0
  1093. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/collectors/aws_transport.py +0 -0
  1094. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/collectors/k8s.py +0 -0
  1095. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/collectors/k8s_transport.py +0 -0
  1096. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/cursors.py +0 -0
  1097. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/drift.py +0 -0
  1098. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/envelope.py +0 -0
  1099. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/federation.py +0 -0
  1100. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/fixtures.py +0 -0
  1101. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/identity.py +0 -0
  1102. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/incident.py +0 -0
  1103. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/models.py +0 -0
  1104. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/reconcile.py +0 -0
  1105. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/remediate.py +0 -0
  1106. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/store.py +0 -0
  1107. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/live/topology.py +0 -0
  1108. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/mcp/__init__.py +0 -0
  1109. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/mcp/parity.py +0 -0
  1110. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/mcp/registry.py +0 -0
  1111. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/mcp/server.py +0 -0
  1112. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/mcp/tools.py +0 -0
  1113. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/models/__init__.py +0 -0
  1114. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/models/base.py +0 -0
  1115. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/observe/__init__.py +0 -0
  1116. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/observe/capacity.py +0 -0
  1117. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/observe/dr.py +0 -0
  1118. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/observe/grafana.py +0 -0
  1119. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/observe/incident.py +0 -0
  1120. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/observe/otel.py +0 -0
  1121. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/observe/postmortem.py +0 -0
  1122. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/observe/prometheus.py +0 -0
  1123. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/observe/slo.py +0 -0
  1124. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/__init__.py +0 -0
  1125. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/actions.py +0 -0
  1126. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/analytics.py +0 -0
  1127. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/approval.py +0 -0
  1128. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/autorem.py +0 -0
  1129. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/config.py +0 -0
  1130. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/engine.py +0 -0
  1131. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/envelope.py +0 -0
  1132. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/executors/__init__.py +0 -0
  1133. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/executors/base.py +0 -0
  1134. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/executors/git.py +0 -0
  1135. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/executors/gitops.py +0 -0
  1136. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/executors/terraform.py +0 -0
  1137. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/gates.py +0 -0
  1138. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/goldenpath.py +0 -0
  1139. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/material.py +0 -0
  1140. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/models.py +0 -0
  1141. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/operation.py +0 -0
  1142. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/opgraph.py +0 -0
  1143. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/policy.py +0 -0
  1144. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/preconditions.py +0 -0
  1145. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/registry.py +0 -0
  1146. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/risk.py +0 -0
  1147. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/rollback.py +0 -0
  1148. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/rollback_builders.py +0 -0
  1149. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/runbook.py +0 -0
  1150. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/simulate.py +0 -0
  1151. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/source_of_truth.py +0 -0
  1152. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/store.py +0 -0
  1153. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ops/verify.py +0 -0
  1154. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/optimize/__init__.py +0 -0
  1155. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/optimize/engine.py +0 -0
  1156. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/optimize/models.py +0 -0
  1157. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/optimize/scan.py +0 -0
  1158. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/plan/__init__.py +0 -0
  1159. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/portable_cli.py +0 -0
  1160. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/portal_adapter.py +0 -0
  1161. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/product/__init__.py +0 -0
  1162. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/product/backstage.py +0 -0
  1163. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/product/catalog.py +0 -0
  1164. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/product/crossplane.py +0 -0
  1165. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/product/golden_paths/__init__.py +0 -0
  1166. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/product/golden_paths/engine.py +0 -0
  1167. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/product/golden_paths/library.yaml +0 -0
  1168. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/product/golden_paths/model.py +0 -0
  1169. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/product/maturity.py +0 -0
  1170. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/product/scorecards.py +0 -0
  1171. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/resources.py +0 -0
  1172. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/risk/__init__.py +0 -0
  1173. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/risk/engine.py +0 -0
  1174. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/risk/signals.py +0 -0
  1175. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/routing/__init__.py +0 -0
  1176. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/routing/decision.py +0 -0
  1177. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/routing/router.py +0 -0
  1178. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/rtk/__init__.py +0 -0
  1179. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/rtk/compact.py +0 -0
  1180. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/rtk/parsers.py +0 -0
  1181. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/rules/__init__.py +0 -0
  1182. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/rules/engine.py +0 -0
  1183. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/sandbox/__init__.py +0 -0
  1184. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/sandbox/env.py +0 -0
  1185. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/sandbox/review.py +0 -0
  1186. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/sdd/__init__.py +0 -0
  1187. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/sdd/lifecycle.py +0 -0
  1188. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/security/__init__.py +0 -0
  1189. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/security/cosign.py +0 -0
  1190. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/security/iam.py +0 -0
  1191. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/security/identity.py +0 -0
  1192. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/security/kyverno.py +0 -0
  1193. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/security/sbom.py +0 -0
  1194. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/security/scan.py +0 -0
  1195. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/security/slsa.py +0 -0
  1196. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/security/supply.py +0 -0
  1197. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/tokensave/__init__.py +0 -0
  1198. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/tokensave/budget.py +0 -0
  1199. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/tokensave/estimate.py +0 -0
  1200. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/tokensave/index.py +0 -0
  1201. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/tokensave/ledger.py +0 -0
  1202. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/tokensave/packs.py +0 -0
  1203. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ui/__init__.py +0 -0
  1204. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ui/app.py +0 -0
  1205. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ui/home.py +0 -0
  1206. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ui/i18n.py +0 -0
  1207. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ui/kit.py +0 -0
  1208. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ui/screen.py +0 -0
  1209. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ui/tui.py +0 -0
  1210. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/ui/wizard.py +0 -0
  1211. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/workspace/__init__.py +0 -0
  1212. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/workspace/models.py +0 -0
  1213. {platformforge-0.1.5 → platformforge-0.1.6}/platformforge/workspace/service.py +0 -0
  1214. {platformforge-0.1.5 → platformforge-0.1.6}/portal/assets/chunk-BYYLUO5t.js +0 -0
  1215. {platformforge-0.1.5 → platformforge-0.1.6}/portal/assets/chunk-C0nXO1-7.js +0 -0
  1216. {platformforge-0.1.5 → platformforge-0.1.6}/portal/assets/chunk-C6ri1BES.js +0 -0
  1217. {platformforge-0.1.5 → platformforge-0.1.6}/portal/assets/chunk-C8bgMzTS.js +0 -0
  1218. {platformforge-0.1.5 → platformforge-0.1.6}/portal/assets/chunk-D-7Jr8A3.js +0 -0
  1219. {platformforge-0.1.5 → platformforge-0.1.6}/portal/assets/chunk-DuZy_X7l.js +0 -0
  1220. {platformforge-0.1.5 → platformforge-0.1.6}/portal/assets/chunk-Wd_5yY1t.js +0 -0
  1221. {platformforge-0.1.5 → platformforge-0.1.6}/portal/assets/favicon.ico +0 -0
  1222. {platformforge-0.1.5 → platformforge-0.1.6}/portal/assets/styles-B6ZRGG3C.css +0 -0
  1223. {platformforge-0.1.5 → platformforge-0.1.6}/rules/catalog/finops.yaml +0 -0
  1224. {platformforge-0.1.5 → platformforge-0.1.6}/rules/catalog/gitops.yaml +0 -0
  1225. {platformforge-0.1.5 → platformforge-0.1.6}/rules/catalog/iac.yaml +0 -0
  1226. {platformforge-0.1.5 → platformforge-0.1.6}/rules/catalog/k8s.yaml +0 -0
  1227. {platformforge-0.1.5 → platformforge-0.1.6}/rules/catalog/orchestration.yaml +0 -0
  1228. {platformforge-0.1.5 → platformforge-0.1.6}/rules/catalog/product.yaml +0 -0
  1229. {platformforge-0.1.5 → platformforge-0.1.6}/rules/catalog/routing.yaml +0 -0
  1230. {platformforge-0.1.5 → platformforge-0.1.6}/rules/catalog/security.yaml +0 -0
  1231. {platformforge-0.1.5 → platformforge-0.1.6}/rules/catalog/sre.yaml +0 -0
  1232. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/bench_economy.py +0 -0
  1233. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/docs/check_docs.py +0 -0
  1234. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/docs/doc_catalogs.py +0 -0
  1235. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/docs/doc_index.py +0 -0
  1236. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/docs/doc_inventory.py +0 -0
  1237. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/docs/doc_manifest.py +0 -0
  1238. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/docs/doc_reference.py +0 -0
  1239. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/docs/final_report.py +0 -0
  1240. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/docs/regen_docs.py +0 -0
  1241. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/forge_bootstrap.py +0 -0
  1242. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/forge_installkit.py +0 -0
  1243. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/freeze_perf_receipt.py +0 -0
  1244. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/freeze_soak_receipt.py +0 -0
  1245. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/freeze_validation_receipt.py +0 -0
  1246. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/gen_cli_surface.py +0 -0
  1247. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/lab/platformforge_lab.py +0 -0
  1248. {platformforge-0.1.5 → platformforge-0.1.6}/scripts/validate.py +0 -0
  1249. {platformforge-0.1.5 → platformforge-0.1.6}/setup.ps1 +0 -0
  1250. {platformforge-0.1.5 → platformforge-0.1.6}/setup.sh +0 -0
  1251. {platformforge-0.1.5 → platformforge-0.1.6}/tests/__init__.py +0 -0
  1252. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_agent_adversarial.py +0 -0
  1253. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_agent_budget.py +0 -0
  1254. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_agent_debate.py +0 -0
  1255. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_agent_economy.py +0 -0
  1256. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_agent_handoffs.py +0 -0
  1257. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_agent_mirrors.py +0 -0
  1258. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_agent_protocol.py +0 -0
  1259. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_agent_routing.py +0 -0
  1260. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_agents.py +0 -0
  1261. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_artifact_contents.py +0 -0
  1262. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_cases.py +0 -0
  1263. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_cicd.py +0 -0
  1264. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_cli_ops.py +0 -0
  1265. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_cloud.py +0 -0
  1266. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_command_rationale.py +0 -0
  1267. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_coordinators.py +0 -0
  1268. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_core.py +0 -0
  1269. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_crossplane.py +0 -0
  1270. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_cycle5_analytics.py +0 -0
  1271. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_cycle5_hardening.py +0 -0
  1272. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_doc_drift.py +0 -0
  1273. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_doc_manifest.py +0 -0
  1274. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_docs_drift.py +0 -0
  1275. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_economy.py +0 -0
  1276. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_economy_agents_waste.py +0 -0
  1277. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_economy_cache.py +0 -0
  1278. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_economy_closure.py +0 -0
  1279. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_economy_contracts.py +0 -0
  1280. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_economy_evals.py +0 -0
  1281. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_economy_fleet_qpt.py +0 -0
  1282. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_economy_gateway.py +0 -0
  1283. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_economy_pricing_verify.py +0 -0
  1284. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_economy_v2.py +0 -0
  1285. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_executors.py +0 -0
  1286. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_federation.py +0 -0
  1287. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_finops.py +0 -0
  1288. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_fleet.py +0 -0
  1289. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_fleet_adversarial.py +0 -0
  1290. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_forge.py +0 -0
  1291. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_freeze.py +0 -0
  1292. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_graph.py +0 -0
  1293. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_graph_v2.py +0 -0
  1294. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_hardening.py +0 -0
  1295. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_hosts_flow.py +0 -0
  1296. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_iac.py +0 -0
  1297. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_install_lifecycle.py +0 -0
  1298. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_k8s.py +0 -0
  1299. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_k8s_depth.py +0 -0
  1300. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_knowledge_packs.py +0 -0
  1301. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_lab.py +0 -0
  1302. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ledgers.py +0 -0
  1303. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_live_aws.py +0 -0
  1304. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_live_capability.py +0 -0
  1305. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_live_drift.py +0 -0
  1306. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_live_identity.py +0 -0
  1307. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_live_incident.py +0 -0
  1308. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_live_k8s.py +0 -0
  1309. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_live_remediate.py +0 -0
  1310. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_live_security_props.py +0 -0
  1311. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_mcp.py +0 -0
  1312. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_missing_input_refusals.py +0 -0
  1313. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_observation.py +0 -0
  1314. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_observe.py +0 -0
  1315. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_observe_v2.py +0 -0
  1316. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_offline.py +0 -0
  1317. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_adversarial41.py +0 -0
  1318. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_approval.py +0 -0
  1319. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_autorem.py +0 -0
  1320. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_executors.py +0 -0
  1321. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_gapwave.py +0 -0
  1322. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_goldenpath.py +0 -0
  1323. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_hardening.py +0 -0
  1324. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_models.py +0 -0
  1325. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_operation.py +0 -0
  1326. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_opgraph.py +0 -0
  1327. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_pipeline.py +0 -0
  1328. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_policy.py +0 -0
  1329. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_property.py +0 -0
  1330. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_risk.py +0 -0
  1331. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_rollback.py +0 -0
  1332. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_runbook.py +0 -0
  1333. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_runbook41.py +0 -0
  1334. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ops_verify.py +0 -0
  1335. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_orchestrator.py +0 -0
  1336. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_portable_distribution.py +0 -0
  1337. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_portable_workspace.py +0 -0
  1338. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_portal_adapter.py +0 -0
  1339. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_product.py +0 -0
  1340. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_product_v2.py +0 -0
  1341. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_qpt_v2.py +0 -0
  1342. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_reconcile.py +0 -0
  1343. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_redaction.py +0 -0
  1344. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_reviewers.py +0 -0
  1345. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_routing_audit.py +0 -0
  1346. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_sdd.py +0 -0
  1347. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_security.py +0 -0
  1348. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_soak.py +0 -0
  1349. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_specialists.py +0 -0
  1350. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_surface.py +0 -0
  1351. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_topology.py +0 -0
  1352. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_truth.py +0 -0
  1353. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ui_resilience.py +0 -0
  1354. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_ui_tui.py +0 -0
  1355. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_wave_h.py +0 -0
  1356. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_wave_k.py +0 -0
  1357. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_wave_l.py +0 -0
  1358. {platformforge-0.1.5 → platformforge-0.1.6}/tests/test_wave_n.py +0 -0
@@ -34,7 +34,14 @@ All notable changes. Format: wave/feature, the "why", key commits.
34
34
  ### Fixed
35
35
  - Portal vendored 2.1 final (Cycles 0-6)
36
36
 
37
- ## [Unreleased] — Architecture Freeze (stability & real-world validation)
37
+ ## [Unreleased]
38
+ ## [0.1.6] - 2026-10-21
39
+
40
+ ### Changed
41
+
42
+ - Integrations cycle: portal bundle re-vendored — Specialist/Delegation Explorer pages (lf-0032) now ship in the wheel.
43
+
44
+ — Architecture Freeze (stability & real-world validation)
38
45
 
39
46
  No new product capability — the freeze hardens, measures, and dogfoods
40
47
  the existing surface (docs/freeze/, prompt_evo_freezing.md).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: platformforge
3
- Version: 0.1.5
3
+ Version: 0.1.6
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
@@ -11,75 +11,75 @@
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": 4.39
14
+ "seconds": 5.8
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": 3.44
19
+ "seconds": 3.99
20
20
  },
21
21
  "economy-cache": {
22
22
  "ok": true,
23
23
  "reproduce": "pytest -q tests/test_economy_cache.py",
24
- "seconds": 4.03
24
+ "seconds": 4.48
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": 5.42
29
+ "seconds": 5.54
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": 3.78
34
+ "seconds": 4.22
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": 4.69
39
+ "seconds": 6.07
40
40
  },
41
41
  "economy-evals": {
42
42
  "ok": true,
43
43
  "reproduce": "pytest -q tests/test_economy_evals.py",
44
- "seconds": 4.44
44
+ "seconds": 4.88
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": 9.6
49
+ "seconds": 12.95
50
50
  },
51
51
  "economy-receipt": {
52
52
  "ok": true,
53
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.57
54
+ "seconds": 0.54
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": 3.66
59
+ "seconds": 4.81
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": 3.27
64
+ "seconds": 4.24
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": 3.29
69
+ "seconds": 4.86
70
70
  },
71
71
  "economy-surface": {
72
72
  "ok": true,
73
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": 22.89
74
+ "seconds": 24.3
75
75
  },
76
76
  "economy-verification": {
77
77
  "ok": true,
78
78
  "reproduce": "pytest -q tests/test_economy_pricing_verify.py",
79
- "seconds": 4.52
79
+ "seconds": 4.15
80
80
  }
81
81
  },
82
- "generated_at": "2026-10-21T10:09:08Z",
82
+ "generated_at": "2026-10-21T23:25:39Z",
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)",
@@ -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": "345ebca87e9496e9fedfc91c088d788ff0d4ab3c",
96
+ "validated_sha": "2ac39ceed085a2d4d2520e6d426c8240cb50db3c",
97
97
  "validator": "scripts/validate.py",
98
98
  "validator_version": "economy-validation-receipt/v1",
99
99
  "verdict": "validated"
@@ -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.1.5"
7
+ __version__ = "0.1.6"
@@ -1 +1 @@
1
- import{$t as wd,Bt as sE,Ct as mS,D as MS,Et as ni,F as Qm,Ft as pa,Ht as sy,Jt as uE,K as ZS,Kt as tn,L as Ra,Lt as rn,Mt as p,Nt as pC,O as Ma,Ot as ny,Pt as pS,Q as ay,St as mE,Ut as tC,V as Td,X as aC,Xt as vS,_ as IS,_t as ko,a as Bh,et as cC,f as ES,ht as k,i as Ar,l as Dc,nt as dE,o as CS,ot as fC,rn as zh,xt as mD}from"./chunk-zZVj9gH0.js";import{i as n,r as g,t as g$1}from"./main-CCFYCU3J.js";import{t as _}from"./chunk-D2euRURa.js";import{t as D}from"./chunk-BDNGRBqK.js";import{n as k$1,t as I}from"./chunk-C4JWE0XB.js";import{t as T}from"./chunk-YAMUupB7.js";import{t as h}from"./chunk-BCvhFxiQ.js";function F(e){return e.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().replace(/[^a-z0-9]+/g,` `).trim()}function de(e){let i=new Set;if(!e)return i;for(let t of F(e).split(/[^a-z0-9]+/))t&&i.add(t);return i}function se(e,i){if(e.size===0||i.size===0)return null;let t=0;for(let p of e)i.has(p)&&t++;let a=e.size+i.size-t;return a===0?null:t/a}function pe(e){return{entry:e,key:F(e.name||e.id),origin:e.origin?F(e.origin):null,version:e.version?F(e.version):null,desc:de(e.description)}}function ce(e,i,t){let a=[],p=se(e.desc,i.desc),m=e.origin!==null&&i.origin!==null&&e.origin===i.origin,f=e.origin!==null&&i.origin!==null&&e.origin!==i.origin,k=e.version!==null&&i.version!==null&&e.version!==i.version,y=p!==null&&p>=t,I;return m&&!k||y?(I=`possible-duplicate`,m&&a.push(`same origin (${e.origin})`),e.version!==null&&i.version!==null&&e.version===i.version&&a.push(`same version (${e.version})`),(e.version===null||i.version===null)&&a.push(`version unverified`),y&&a.push(`description similarity ${p.toFixed(2)} >= ${t}`),f&&a.push(`origins differ (${e.origin} vs ${i.origin})`),k&&a.push(`versions differ (${e.version} vs ${i.version})`)):(I=`same-name-different-entity`,f&&a.push(`different origins (${e.origin} vs ${i.origin})`),k&&a.push(`different versions (${e.version} vs ${i.version})`),p!==null?a.push(`description similarity ${p.toFixed(2)} < ${t}`):a.push(`description unverified — similarity not measurable`),!m&&!f&&a.push(`origin unverified`)),{a:e.entry.id,b:i.entry.id,verdict:I,reasons:a,similarity:p}}function ne(e,i=.8){let t=new Map;for(let p of e){let m=pe(p),f=m.key;if(!f)continue;let k=t.get(f);k?k.push(m):t.set(f,[m])}let a=[];for(let[p,m]of t){if(m.length<2)continue;let f=[];for(let y=0;y<m.length;y++)for(let I=y+1;I<m.length;I++)f.push(ce(m[y],m[I],i));let k=f.some(y=>y.verdict===`possible-duplicate`)?`possible-duplicate`:`same-name-different-entity`;a.push({key:p,entries:m.map(y=>y.entry),kind:k,pairs:f})}return a}var me=()=>[`/agents`];var ue=e=>({q:e});var le=()=>[`/hosts`];var oe=(e,i)=>i.id;var _e=(e,i)=>i.key;var ge=(e,i)=>i.a+`|`+i.b;function fe(e,i){if(e&1){let t=CS();pa(0,`ui-error`,6),Ra(`retry`,function(){Bh(t);let p=MS();return zh(p.load())}),wd()}e&2&&Qm(`error`,i)}function ye(e,i){e&1&&(pa(0,`div`,4),fC(1,`t`),Ma(2,`ui-skeleton`,7),wd()),e&2&&(Ar(`aria-label`,pC(1,2,`state.loading`)),mD(2),Qm(`lines`,2))}function ve(e,i){if(e&1){let t=CS();pa(0,`button`,9),Ra(`click`,function(){let p=Bh(t).$implicit,m=MS(2);return zh(m.toggleDomain(p))}),ZS(1),wd()}if(e&2){let t=i.$implicit,a=MS(2);Ar(`data-tone`,a.domain()===t?`accent`:null)(`aria-pressed`,a.domain()===t),mD(),Td(` `,t,` `)}}function xe(e,i){if(e&1){let t=CS();pa(0,`button`,25),Ra(`click`,function(){let p=Bh(t).$implicit,m=MS(4);return zh(m.pick(p.id))}),ZS(1),wd()}if(e&2){let t=i.$implicit;mD(),Td(` `,t.name||t.id,` `)}}function Se(e,i){if(e&1&&(pa(0,`li`)(1,`code`),ZS(2),wd(),ZS(3,` ↔ `),pa(4,`code`),ZS(5),wd(),ZS(6),wd()),e&2){let t=i.$implicit;mD(2),ny(t.a),mD(3),ny(t.b),mD(),Td(` — `,t.reasons.join(`; `),` `)}}function ke(e,i){if(e&1&&(pa(0,`li`),Ma(1,`ui-state-badge`,21),fC(2,`t`),pa(3,`span`,22),ES(4,xe,2,1,`button`,23,oe),wd(),pa(6,`ul`,24),ES(7,Se,7,3,`li`,null,ge),wd()()),e&2){let t=i.$implicit;mD(),Qm(`state`,t.kind===`possible-duplicate`?`unverified`:`warn`)(`labelOverride`,pC(2,2,t.kind===`possible-duplicate`?`skills.dedup.possible`:`skills.dedup.different`)),mD(3),IS(t.entries),mD(3),IS(t.pairs)}}function Ce(e,i){if(e&1&&(pa(0,`section`,11)(1,`header`,17)(2,`h2`),Ma(3,`ui-icon`,18),ZS(4),fC(5,`t`),wd(),pa(6,`span`,19),ZS(7),fC(8,`t`),wd()(),pa(9,`ul`,20),ES(10,ke,9,4,`li`,null,_e),wd()()),e&2){let t=MS(2);mD(3),Qm(`size`,15),mD(),ny(pC(5,3,`skills.dedup.title`)),mD(3),ny(pC(8,5,`skills.dedup.hint`)),mD(3),IS(t.findings())}}function be(e,i){if(e&1&&(ZS(0),pa(1,`code`),ZS(2),wd(),pa(3,`span`,36),ZS(4),fC(5,`t`),wd()),e&2){let t=i;Td(` `,t.forge_name,` `),mD(2),Td(`(`,t.forge_id,`)`),mD(2),ny(pC(5,3,`explorer.serving`))}}function he(e,i){e&1&&Ma(0,`ui-state-badge`,33)}function Pe(e,i){if(e&1&&(pa(0,`a`,37),ZS(1),wd()),e&2){let t=i.$implicit;Qm(`routerLink`,aC(3,le))(`fragment`,`host-`+t),mD(),ny(t)}}function Ee(e,i){if(e&1&&(pa(0,`span`,34),ES(1,Pe,2,4,`a`,37,vS),wd()),e&2){let t=MS();mD(),IS(t.hosts)}}function Ie(e,i){e&1&&Ma(0,`ui-state-badge`,33)}function Te(e,i){if(e&1&&(pa(0,`span`,19),ZS(1),wd()),e&2){let t=MS();mD(),Td(` · `,t.source)}}function De(e,i){if(e&1){let t=CS();pa(0,`section`,12)(1,`header`,26)(2,`h2`),Ma(3,`ui-icon`,27),ZS(4),wd(),pa(5,`span`,28)(6,`a`,29),ZS(7),fC(8,`t`),Ma(9,`ui-icon`,30),wd(),pa(10,`button`,31),fC(11,`t`),Ra(`click`,function(){Bh(t);let p=MS(2);return zh(p.selected.set(null))}),Ma(12,`ui-icon`,30),wd()()(),pa(13,`dl`,32)(14,`div`)(15,`dt`),ZS(16),fC(17,`t`),wd(),pa(18,`dd`)(19,`code`),ZS(20),wd()()(),pa(21,`div`)(22,`dt`),ZS(23),fC(24,`t`),wd(),pa(25,`dd`),ZS(26),fC(27,`t`),wd()(),pa(28,`div`)(29,`dt`),ZS(30),fC(31,`t`),wd(),pa(32,`dd`),ZS(33),fC(34,`t`),wd()(),pa(35,`div`)(36,`dt`),ZS(37),fC(38,`t`),wd(),pa(39,`dd`),Ma(40,`ui-state-badge`,21),wd()(),pa(41,`div`)(42,`dt`),ZS(43),fC(44,`t`),wd(),pa(45,`dd`),pS(46,be,6,5)(47,he,1,0,`ui-state-badge`,33),wd()(),pa(48,`div`)(49,`dt`),ZS(50),fC(51,`t`),wd(),pa(52,`dd`),pS(53,Ee,3,0,`span`,34)(54,Ie,1,0,`ui-state-badge`,33),wd()(),pa(55,`div`)(56,`dt`),ZS(57),fC(58,`t`),wd(),pa(59,`dd`,35),Ma(60,`ui-state-badge`,33),pa(61,`small`,19),ZS(62),fC(63,`t`),wd()()(),pa(64,`div`)(65,`dt`),ZS(66),fC(67,`t`),wd(),pa(68,`dd`,35),Ma(69,`ui-state-badge`,33),pa(70,`small`,19),ZS(71),fC(72,`t`),wd()()(),pa(73,`div`)(74,`dt`),ZS(75),fC(76,`t`),wd(),pa(77,`dd`,35),Ma(78,`ui-state-badge`,33),pa(79,`small`,19),ZS(80),fC(81,`t`),wd()()(),pa(82,`div`)(83,`dt`),ZS(84),fC(85,`t`),wd(),pa(86,`dd`,35),Ma(87,`ui-state-badge`,33),pa(88,`small`,19),ZS(89),fC(90,`t`),wd()()(),pa(91,`div`)(92,`dt`),ZS(93),fC(94,`t`),wd(),pa(95,`dd`,35),Ma(96,`ui-state-badge`,33),pa(97,`small`,19),ZS(98),fC(99,`t`),wd()()(),pa(100,`div`)(101,`dt`),ZS(102),fC(103,`t`),wd(),pa(104,`dd`)(105,`code`),ZS(106,`GET /api/v1/skills`),wd(),pS(107,Te,2,1,`span`,19),wd()()()()}if(e&2){let t,a=i,p=MS(2);mD(3),Qm(`size`,15),mD(),ny(a.name||a.id),mD(2),Qm(`routerLink`,aC(75,me))(`queryParams`,cC(76,ue,a.name||a.id)),mD(),Td(` `,pC(8,33,`skills.agentsLink`),` `),mD(2),Qm(`size`,13),mD(),Ar(`aria-label`,pC(11,35,`state.close`)),mD(2),Qm(`size`,14),mD(4),ny(pC(17,37,`table.id`)),mD(4),ny(a.id),mD(3),ny(pC(24,39,`skills.domain`)),mD(3),ny(a.domain??pC(27,41,`state.absent`)),mD(4),ny(pC(31,43,`skills.detail.description`)),mD(3),ny(a.description||pC(34,45,`state.absent`)),mD(4),ny(pC(38,47,`skills.state`)),mD(3),Qm(`state`,p.mapState(a.state))(`labelOverride`,a.state),mD(3),ny(pC(44,49,`skills.origin`)),mD(3),mS((t=p.store.descriptor())?46:47,t),mD(4),ny(pC(51,51,`skills.compatibility`)),mD(3),mS(a.hosts.length?53:54),mD(4),ny(pC(58,53,`settings.version`)),mD(5),ny(pC(63,55,`skills.notExposed`)),mD(4),ny(pC(67,57,`skills.prerequisites`)),mD(5),ny(pC(72,59,`skills.notExposed`)),mD(4),ny(pC(76,61,`skills.fileValidation`)),mD(5),ny(pC(81,63,`skills.notExposed`)),mD(4),ny(pC(85,65,`skills.deps`)),mD(5),ny(pC(90,67,`skills.notExposed`)),mD(4),ny(pC(94,69,`skills.actions`)),mD(5),ny(pC(99,71,`skills.actionsUnverified`)),mD(4),ny(pC(103,73,`skills.evidence`)),mD(5),mS(a.source?107:-1)}}function Me(e,i){if(e&1&&(pa(0,`a`,39),ZS(1),wd(),ZS(2)),e&2){let t=i.$implicit,a=i.$index,p=i.$count;Qm(`routerLink`,aC(4,le))(`fragment`,`host-`+t),mD(),ny(t),mD(),Td(``,a===p-1?``:`, `,` `)}}function Oe(e,i){if(e&1&&ES(0,Me,3,5,null,null,vS),e&2){let t=MS().$implicit;IS(t.hosts)}}function we(e,i){e&1&&Ma(0,`ui-state-badge`,33)}function Ne(e,i){if(e&1){let t=CS();pa(0,`tr`)(1,`td`)(2,`strong`),ZS(3),wd(),pa(4,`code`,38),ZS(5),wd(),pa(6,`p`,19),ZS(7),wd()(),pa(8,`td`),ZS(9),wd(),pa(10,`td`),Ma(11,`ui-state-badge`,21),wd(),pa(12,`td`),pS(13,Oe,2,0)(14,we,1,0,`ui-state-badge`,33),wd(),pa(15,`td`)(16,`button`,31),fC(17,`t`),Ra(`click`,function(){let p=Bh(t).$implicit,m=MS(2);return zh(m.selected.set(p))}),Ma(18,`ui-icon`,30),wd()()()}if(e&2){let t=i.$implicit,a=MS(2);Ar(`data-dup`,a.dupIds().has(t.id)||null),mD(3),ny(t.name||t.id),mD(2),ny(t.id),mD(2),ny(t.description),mD(2),ny(t.domain??`—`),mD(2),Qm(`state`,a.mapState(t.state))(`labelOverride`,t.state),mD(2),mS(t.hosts.length?13:14),mD(3),Ar(`aria-label`,pC(17,10,`state.viewDetails`)),mD(2),Qm(`size`,15)}}function Be(e,i){e&1&&(pa(0,`tr`)(1,`td`,40),Ma(2,`ui-empty`,5),fC(3,`t`),wd()()),e&2&&(mD(2),Qm(`title`,pC(3,1,`skills.empty`)))}function Fe(e,i){if(e&1&&pS(0,Be,4,3,`tr`),e&2){let t=MS(2);mS(t.loading()?-1:0)}}function $e(e,i){if(e&1){let t=CS();pa(0,`ui-filter-bar`,8),ay(`queryChange`,function(p){Bh(t);let m=MS();return tC(m.query,p)||(m.query=p),zh(p)}),pa(1,`button`,9),Ra(`click`,function(){Bh(t);let p=MS();return zh(p.domain.set(null))}),ZS(2),fC(3,`t`),wd(),ES(4,ve,2,3,`button`,10,vS),wd(),pS(6,Ce,12,7,`section`,11),pS(7,De,108,78,`section`,12),pa(8,`div`,13)(9,`table`,14)(10,`thead`)(11,`tr`)(12,`th`,15),ZS(13),fC(14,`t`),wd(),pa(15,`th`,15),ZS(16),fC(17,`t`),wd(),pa(18,`th`,15),ZS(19),fC(20,`t`),wd(),pa(21,`th`,15),ZS(22),fC(23,`t`),wd(),pa(24,`th`,15)(25,`span`,16),ZS(26),fC(27,`t`),wd()()()(),pa(28,`tbody`),ES(29,Ne,19,12,`tr`,null,oe,!1,Fe,1,1),wd()()()}if(e&2){let t,a=MS();sy(`query`,a.query),mD(),Ar(`data-tone`,a.domain()===null?`accent`:null)(`aria-pressed`,a.domain()===null),mD(),Td(` `,pC(3,12,`state.all`),` `),mD(2),IS(a.domainOptions()),mD(2),mS(a.findings().length?6:-1),mD(),mS((t=a.selected())?7:-1,t),mD(6),ny(pC(14,14,`table.id`)),mD(3),ny(pC(17,16,`skills.domain`)),mD(3),ny(pC(20,18,`skills.state`)),mD(3),ny(pC(23,20,`skills.hosts`)),mD(4),ny(pC(27,22,`state.viewDetails`)),mD(3),IS(a.filtered())}}function ze(e,i){e&1&&(Ma(0,`ui-empty`,5),fC(1,`t`)),e&2&&Qm(`title`,pC(1,1,`skills.none`))}var ae=e=>e.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();var re=class e{api=p(g);store=p(g$1);prefs=p(sE);q=rn(``);skills=k([]);error=k(null);query=k(``);domain=k(null);selected=k(null);loading=k(!0);domainOptions=tn(()=>{let i=new Set;for(let t of this.skills())t.domain&&i.add(t.domain);return[...i].sort()});filtered=tn(()=>{let i=ae(this.query()),t=this.domain();return this.skills().filter(a=>t!==null&&a.domain!==t?!1:i?[a.id,a.name,a.domain??``,a.description,...a.hosts].map(ae).join(` `).includes(i):!0)});findings=tn(()=>ne(this.skills().map(i=>({id:i.id,name:i.name||i.id,origin:this.store.descriptor()?.forge_id??null,version:null,description:i.description}))));dupIds=tn(()=>{let i=new Set;for(let t of this.findings())for(let a of t.entries)i.add(a.id);return i});constructor(){ko(()=>this.prefs.setFilter(`skills`,this.query())),this.load()}ngOnInit(){let i=this.q();if(i)this.query.set(i);else{let t=this.prefs.filterFor(`skills`);t&&this.query.set(t)}}async load(){this.error.set(null),this.loading.set(!0);try{this.skills.set(await mE(this.api.skills()))}catch(i){this.error.set(i instanceof n?i:new n(0))}finally{this.loading.set(!1)}}toggleDomain(i){this.domain.set(this.domain()===i?null:i)}pick(i){let t=this.skills().find(a=>a.id===i);t&&this.selected.set(t)}mapState(i){return[`invoked`,`available`,`installed`,`registered`].includes(i)?`supported`:i===`unverified`?`unverified`:`not_applicable`}static ɵfac=function(t){return new(t||e)};static ɵcmp=ni({type:e,selectors:[[`page-skills`]],inputs:{q:[1,`q`]},decls:11,vars:13,consts:[[`hintId`,`skill`,3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`status`],[`icon`,`skills`,3,`title`],[3,`retry`,`error`],[`kind`,`card`,3,`lines`],[`placeholder`,`skills.search`,3,`queryChange`,`query`],[`type`,`button`,1,`fg-pill`,3,`click`],[`type`,`button`,1,`fg-pill`],[`data-section`,`dedup`,1,`card`,`dedup`],[`data-section`,`skill-detail`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[1,`card`,`card--table`],[1,`table`],[`scope`,`col`],[1,`sr-only`],[1,`dedup__head`],[`name`,`diff`,3,`size`],[1,`muted`],[1,`dedup__list`],[3,`state`,`labelOverride`],[1,`dedup__names`],[`type`,`button`,1,`chip-link`],[1,`dedup__reasons`],[`type`,`button`,1,`chip-link`,3,`click`],[1,`detail__head`],[`name`,`skills`,3,`size`],[1,`detail__actions`],[`data-action`,`declaring-agents`,1,`btn`,`btn--mini`,3,`routerLink`,`queryParams`],[`name`,`chevron-right`,3,`size`],[1,`icon-btn`,3,`click`],[1,`kv`],[`state`,`UNVERIFIED`],[1,`links`],[1,`unv-cell`],[1,`chip`],[1,`chip-link`,3,`routerLink`,`fragment`],[1,`slug`],[1,`linklike`,3,`routerLink`,`fragment`],[`colspan`,`5`]],template:function(t,a){if(t&1&&(pa(0,`ui-page-header`,0),fC(1,`t`),fC(2,`t`),pa(3,`button`,1),Ra(`click`,function(){return a.load()}),Ma(4,`ui-icon`,2),ZS(5),fC(6,`t`),wd()(),pS(7,fe,1,1,`ui-error`,3),pS(8,ye,3,4,`div`,4),pS(9,$e,32,24)(10,ze,2,3,`ui-empty`,5)),t&2){let p;Qm(`title`,pC(1,7,`skills.title`))(`subtitle`,pC(2,9,`skills.subtitle`)),mD(4),Qm(`size`,15),mD(),Td(` `,pC(6,11,`state.refresh`),` `),mD(2),mS((p=a.error())?7:-1,p),mD(),mS(a.loading()?8:-1),mD(),mS(a.skills().length?9:!a.error()&&!a.loading()?10:-1)}},dependencies:[Dc,T,I,_,D,dE,k$1,h,uE],styles:[`.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);margin:4px 0 0;font-size:var(--%NS%font-sm)}.slug[_ngcontent-%COMP%]{display:block;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.card--table[_ngcontent-%COMP%]{padding:var(--%NS%space-3);overflow-x:auto}.card--table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%]{min-width:560px}tr[data-dup][_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-left:3px solid var(--%NS%warn)}.dedup[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);border-left:3px solid var(--%NS%warn)}.dedup__head[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3);flex-wrap:wrap;margin-bottom:var(--%NS%space-2)}.dedup__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)}.dedup__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%warn)}.dedup__list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:var(--%NS%space-3)}.dedup__list[_ngcontent-%COMP%] > li[_ngcontent-%COMP%]{display:grid;gap:4px}.dedup__names[_ngcontent-%COMP%]{display:inline-flex;flex-wrap:wrap;gap:4px}.dedup__reasons[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);display:grid;gap:2px}.detail[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);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%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.detail__actions[_ngcontent-%COMP%], .links[_ngcontent-%COMP%]{display:inline-flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-2)}.detail__actions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{text-decoration:none}.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}.unv-cell[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.chip[_ngcontent-%COMP%]{margin-left:4px}`]})};export{re as SkillsPage};
1
+ import{$t as wd,Bt as sE,Ct as mS,D as MS,Et as ni,F as Qm,Ft as pa,Ht as sy,Jt as uE,K as ZS,Kt as tn,L as Ra,Lt as rn,Mt as p,Nt as pC,O as Ma,Ot as ny,Pt as pS,Q as ay,St as mE,Ut as tC,V as Td,X as aC,Xt as vS,_ as IS,_t as ko,a as Bh,et as cC,f as ES,ht as k,i as Ar,l as Dc,nt as dE,o as CS,ot as fC,rn as zh,xt as mD}from"./chunk-CV7TSqiz.js";import{i as n,r as g,t as g$1}from"./main-YKFPUKID.js";import{t as h}from"./chunk-BpIbIo4H.js";import{t as _}from"./chunk-C2Vik-mF.js";import{t as D}from"./chunk-CWCQmMmw.js";import{n as k$1,t as I}from"./chunk-CaHx1phd.js";import{t as T}from"./chunk-yM6DMc_W.js";function F(e){return e.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().replace(/[^a-z0-9]+/g,` `).trim()}function de(e){let i=new Set;if(!e)return i;for(let t of F(e).split(/[^a-z0-9]+/))t&&i.add(t);return i}function se(e,i){if(e.size===0||i.size===0)return null;let t=0;for(let p of e)i.has(p)&&t++;let a=e.size+i.size-t;return a===0?null:t/a}function pe(e){return{entry:e,key:F(e.name||e.id),origin:e.origin?F(e.origin):null,version:e.version?F(e.version):null,desc:de(e.description)}}function ce(e,i,t){let a=[],p=se(e.desc,i.desc),m=e.origin!==null&&i.origin!==null&&e.origin===i.origin,f=e.origin!==null&&i.origin!==null&&e.origin!==i.origin,k=e.version!==null&&i.version!==null&&e.version!==i.version,y=p!==null&&p>=t,I;return m&&!k||y?(I=`possible-duplicate`,m&&a.push(`same origin (${e.origin})`),e.version!==null&&i.version!==null&&e.version===i.version&&a.push(`same version (${e.version})`),(e.version===null||i.version===null)&&a.push(`version unverified`),y&&a.push(`description similarity ${p.toFixed(2)} >= ${t}`),f&&a.push(`origins differ (${e.origin} vs ${i.origin})`),k&&a.push(`versions differ (${e.version} vs ${i.version})`)):(I=`same-name-different-entity`,f&&a.push(`different origins (${e.origin} vs ${i.origin})`),k&&a.push(`different versions (${e.version} vs ${i.version})`),p!==null?a.push(`description similarity ${p.toFixed(2)} < ${t}`):a.push(`description unverified — similarity not measurable`),!m&&!f&&a.push(`origin unverified`)),{a:e.entry.id,b:i.entry.id,verdict:I,reasons:a,similarity:p}}function ne(e,i=.8){let t=new Map;for(let p of e){let m=pe(p),f=m.key;if(!f)continue;let k=t.get(f);k?k.push(m):t.set(f,[m])}let a=[];for(let[p,m]of t){if(m.length<2)continue;let f=[];for(let y=0;y<m.length;y++)for(let I=y+1;I<m.length;I++)f.push(ce(m[y],m[I],i));let k=f.some(y=>y.verdict===`possible-duplicate`)?`possible-duplicate`:`same-name-different-entity`;a.push({key:p,entries:m.map(y=>y.entry),kind:k,pairs:f})}return a}var me=()=>[`/agents`];var ue=e=>({q:e});var le=()=>[`/hosts`];var oe=(e,i)=>i.id;var _e=(e,i)=>i.key;var ge=(e,i)=>i.a+`|`+i.b;function fe(e,i){if(e&1){let t=CS();pa(0,`ui-error`,6),Ra(`retry`,function(){Bh(t);let p=MS();return zh(p.load())}),wd()}e&2&&Qm(`error`,i)}function ye(e,i){e&1&&(pa(0,`div`,4),fC(1,`t`),Ma(2,`ui-skeleton`,7),wd()),e&2&&(Ar(`aria-label`,pC(1,2,`state.loading`)),mD(2),Qm(`lines`,2))}function ve(e,i){if(e&1){let t=CS();pa(0,`button`,9),Ra(`click`,function(){let p=Bh(t).$implicit,m=MS(2);return zh(m.toggleDomain(p))}),ZS(1),wd()}if(e&2){let t=i.$implicit,a=MS(2);Ar(`data-tone`,a.domain()===t?`accent`:null)(`aria-pressed`,a.domain()===t),mD(),Td(` `,t,` `)}}function xe(e,i){if(e&1){let t=CS();pa(0,`button`,25),Ra(`click`,function(){let p=Bh(t).$implicit,m=MS(4);return zh(m.pick(p.id))}),ZS(1),wd()}if(e&2){let t=i.$implicit;mD(),Td(` `,t.name||t.id,` `)}}function Se(e,i){if(e&1&&(pa(0,`li`)(1,`code`),ZS(2),wd(),ZS(3,` ↔ `),pa(4,`code`),ZS(5),wd(),ZS(6),wd()),e&2){let t=i.$implicit;mD(2),ny(t.a),mD(3),ny(t.b),mD(),Td(` — `,t.reasons.join(`; `),` `)}}function ke(e,i){if(e&1&&(pa(0,`li`),Ma(1,`ui-state-badge`,21),fC(2,`t`),pa(3,`span`,22),ES(4,xe,2,1,`button`,23,oe),wd(),pa(6,`ul`,24),ES(7,Se,7,3,`li`,null,ge),wd()()),e&2){let t=i.$implicit;mD(),Qm(`state`,t.kind===`possible-duplicate`?`unverified`:`warn`)(`labelOverride`,pC(2,2,t.kind===`possible-duplicate`?`skills.dedup.possible`:`skills.dedup.different`)),mD(3),IS(t.entries),mD(3),IS(t.pairs)}}function Ce(e,i){if(e&1&&(pa(0,`section`,11)(1,`header`,17)(2,`h2`),Ma(3,`ui-icon`,18),ZS(4),fC(5,`t`),wd(),pa(6,`span`,19),ZS(7),fC(8,`t`),wd()(),pa(9,`ul`,20),ES(10,ke,9,4,`li`,null,_e),wd()()),e&2){let t=MS(2);mD(3),Qm(`size`,15),mD(),ny(pC(5,3,`skills.dedup.title`)),mD(3),ny(pC(8,5,`skills.dedup.hint`)),mD(3),IS(t.findings())}}function be(e,i){if(e&1&&(ZS(0),pa(1,`code`),ZS(2),wd(),pa(3,`span`,36),ZS(4),fC(5,`t`),wd()),e&2){let t=i;Td(` `,t.forge_name,` `),mD(2),Td(`(`,t.forge_id,`)`),mD(2),ny(pC(5,3,`explorer.serving`))}}function he(e,i){e&1&&Ma(0,`ui-state-badge`,33)}function Pe(e,i){if(e&1&&(pa(0,`a`,37),ZS(1),wd()),e&2){let t=i.$implicit;Qm(`routerLink`,aC(3,le))(`fragment`,`host-`+t),mD(),ny(t)}}function Ee(e,i){if(e&1&&(pa(0,`span`,34),ES(1,Pe,2,4,`a`,37,vS),wd()),e&2){let t=MS();mD(),IS(t.hosts)}}function Ie(e,i){e&1&&Ma(0,`ui-state-badge`,33)}function Te(e,i){if(e&1&&(pa(0,`span`,19),ZS(1),wd()),e&2){let t=MS();mD(),Td(` · `,t.source)}}function De(e,i){if(e&1){let t=CS();pa(0,`section`,12)(1,`header`,26)(2,`h2`),Ma(3,`ui-icon`,27),ZS(4),wd(),pa(5,`span`,28)(6,`a`,29),ZS(7),fC(8,`t`),Ma(9,`ui-icon`,30),wd(),pa(10,`button`,31),fC(11,`t`),Ra(`click`,function(){Bh(t);let p=MS(2);return zh(p.selected.set(null))}),Ma(12,`ui-icon`,30),wd()()(),pa(13,`dl`,32)(14,`div`)(15,`dt`),ZS(16),fC(17,`t`),wd(),pa(18,`dd`)(19,`code`),ZS(20),wd()()(),pa(21,`div`)(22,`dt`),ZS(23),fC(24,`t`),wd(),pa(25,`dd`),ZS(26),fC(27,`t`),wd()(),pa(28,`div`)(29,`dt`),ZS(30),fC(31,`t`),wd(),pa(32,`dd`),ZS(33),fC(34,`t`),wd()(),pa(35,`div`)(36,`dt`),ZS(37),fC(38,`t`),wd(),pa(39,`dd`),Ma(40,`ui-state-badge`,21),wd()(),pa(41,`div`)(42,`dt`),ZS(43),fC(44,`t`),wd(),pa(45,`dd`),pS(46,be,6,5)(47,he,1,0,`ui-state-badge`,33),wd()(),pa(48,`div`)(49,`dt`),ZS(50),fC(51,`t`),wd(),pa(52,`dd`),pS(53,Ee,3,0,`span`,34)(54,Ie,1,0,`ui-state-badge`,33),wd()(),pa(55,`div`)(56,`dt`),ZS(57),fC(58,`t`),wd(),pa(59,`dd`,35),Ma(60,`ui-state-badge`,33),pa(61,`small`,19),ZS(62),fC(63,`t`),wd()()(),pa(64,`div`)(65,`dt`),ZS(66),fC(67,`t`),wd(),pa(68,`dd`,35),Ma(69,`ui-state-badge`,33),pa(70,`small`,19),ZS(71),fC(72,`t`),wd()()(),pa(73,`div`)(74,`dt`),ZS(75),fC(76,`t`),wd(),pa(77,`dd`,35),Ma(78,`ui-state-badge`,33),pa(79,`small`,19),ZS(80),fC(81,`t`),wd()()(),pa(82,`div`)(83,`dt`),ZS(84),fC(85,`t`),wd(),pa(86,`dd`,35),Ma(87,`ui-state-badge`,33),pa(88,`small`,19),ZS(89),fC(90,`t`),wd()()(),pa(91,`div`)(92,`dt`),ZS(93),fC(94,`t`),wd(),pa(95,`dd`,35),Ma(96,`ui-state-badge`,33),pa(97,`small`,19),ZS(98),fC(99,`t`),wd()()(),pa(100,`div`)(101,`dt`),ZS(102),fC(103,`t`),wd(),pa(104,`dd`)(105,`code`),ZS(106,`GET /api/v1/skills`),wd(),pS(107,Te,2,1,`span`,19),wd()()()()}if(e&2){let t,a=i,p=MS(2);mD(3),Qm(`size`,15),mD(),ny(a.name||a.id),mD(2),Qm(`routerLink`,aC(75,me))(`queryParams`,cC(76,ue,a.name||a.id)),mD(),Td(` `,pC(8,33,`skills.agentsLink`),` `),mD(2),Qm(`size`,13),mD(),Ar(`aria-label`,pC(11,35,`state.close`)),mD(2),Qm(`size`,14),mD(4),ny(pC(17,37,`table.id`)),mD(4),ny(a.id),mD(3),ny(pC(24,39,`skills.domain`)),mD(3),ny(a.domain??pC(27,41,`state.absent`)),mD(4),ny(pC(31,43,`skills.detail.description`)),mD(3),ny(a.description||pC(34,45,`state.absent`)),mD(4),ny(pC(38,47,`skills.state`)),mD(3),Qm(`state`,p.mapState(a.state))(`labelOverride`,a.state),mD(3),ny(pC(44,49,`skills.origin`)),mD(3),mS((t=p.store.descriptor())?46:47,t),mD(4),ny(pC(51,51,`skills.compatibility`)),mD(3),mS(a.hosts.length?53:54),mD(4),ny(pC(58,53,`settings.version`)),mD(5),ny(pC(63,55,`skills.notExposed`)),mD(4),ny(pC(67,57,`skills.prerequisites`)),mD(5),ny(pC(72,59,`skills.notExposed`)),mD(4),ny(pC(76,61,`skills.fileValidation`)),mD(5),ny(pC(81,63,`skills.notExposed`)),mD(4),ny(pC(85,65,`skills.deps`)),mD(5),ny(pC(90,67,`skills.notExposed`)),mD(4),ny(pC(94,69,`skills.actions`)),mD(5),ny(pC(99,71,`skills.actionsUnverified`)),mD(4),ny(pC(103,73,`skills.evidence`)),mD(5),mS(a.source?107:-1)}}function Me(e,i){if(e&1&&(pa(0,`a`,39),ZS(1),wd(),ZS(2)),e&2){let t=i.$implicit,a=i.$index,p=i.$count;Qm(`routerLink`,aC(4,le))(`fragment`,`host-`+t),mD(),ny(t),mD(),Td(``,a===p-1?``:`, `,` `)}}function Oe(e,i){if(e&1&&ES(0,Me,3,5,null,null,vS),e&2){let t=MS().$implicit;IS(t.hosts)}}function we(e,i){e&1&&Ma(0,`ui-state-badge`,33)}function Ne(e,i){if(e&1){let t=CS();pa(0,`tr`)(1,`td`)(2,`strong`),ZS(3),wd(),pa(4,`code`,38),ZS(5),wd(),pa(6,`p`,19),ZS(7),wd()(),pa(8,`td`),ZS(9),wd(),pa(10,`td`),Ma(11,`ui-state-badge`,21),wd(),pa(12,`td`),pS(13,Oe,2,0)(14,we,1,0,`ui-state-badge`,33),wd(),pa(15,`td`)(16,`button`,31),fC(17,`t`),Ra(`click`,function(){let p=Bh(t).$implicit,m=MS(2);return zh(m.selected.set(p))}),Ma(18,`ui-icon`,30),wd()()()}if(e&2){let t=i.$implicit,a=MS(2);Ar(`data-dup`,a.dupIds().has(t.id)||null),mD(3),ny(t.name||t.id),mD(2),ny(t.id),mD(2),ny(t.description),mD(2),ny(t.domain??`—`),mD(2),Qm(`state`,a.mapState(t.state))(`labelOverride`,t.state),mD(2),mS(t.hosts.length?13:14),mD(3),Ar(`aria-label`,pC(17,10,`state.viewDetails`)),mD(2),Qm(`size`,15)}}function Be(e,i){e&1&&(pa(0,`tr`)(1,`td`,40),Ma(2,`ui-empty`,5),fC(3,`t`),wd()()),e&2&&(mD(2),Qm(`title`,pC(3,1,`skills.empty`)))}function Fe(e,i){if(e&1&&pS(0,Be,4,3,`tr`),e&2){let t=MS(2);mS(t.loading()?-1:0)}}function $e(e,i){if(e&1){let t=CS();pa(0,`ui-filter-bar`,8),ay(`queryChange`,function(p){Bh(t);let m=MS();return tC(m.query,p)||(m.query=p),zh(p)}),pa(1,`button`,9),Ra(`click`,function(){Bh(t);let p=MS();return zh(p.domain.set(null))}),ZS(2),fC(3,`t`),wd(),ES(4,ve,2,3,`button`,10,vS),wd(),pS(6,Ce,12,7,`section`,11),pS(7,De,108,78,`section`,12),pa(8,`div`,13)(9,`table`,14)(10,`thead`)(11,`tr`)(12,`th`,15),ZS(13),fC(14,`t`),wd(),pa(15,`th`,15),ZS(16),fC(17,`t`),wd(),pa(18,`th`,15),ZS(19),fC(20,`t`),wd(),pa(21,`th`,15),ZS(22),fC(23,`t`),wd(),pa(24,`th`,15)(25,`span`,16),ZS(26),fC(27,`t`),wd()()()(),pa(28,`tbody`),ES(29,Ne,19,12,`tr`,null,oe,!1,Fe,1,1),wd()()()}if(e&2){let t,a=MS();sy(`query`,a.query),mD(),Ar(`data-tone`,a.domain()===null?`accent`:null)(`aria-pressed`,a.domain()===null),mD(),Td(` `,pC(3,12,`state.all`),` `),mD(2),IS(a.domainOptions()),mD(2),mS(a.findings().length?6:-1),mD(),mS((t=a.selected())?7:-1,t),mD(6),ny(pC(14,14,`table.id`)),mD(3),ny(pC(17,16,`skills.domain`)),mD(3),ny(pC(20,18,`skills.state`)),mD(3),ny(pC(23,20,`skills.hosts`)),mD(4),ny(pC(27,22,`state.viewDetails`)),mD(3),IS(a.filtered())}}function ze(e,i){e&1&&(Ma(0,`ui-empty`,5),fC(1,`t`)),e&2&&Qm(`title`,pC(1,1,`skills.none`))}var ae=e=>e.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();var re=class e{api=p(g);store=p(g$1);prefs=p(sE);q=rn(``);skills=k([]);error=k(null);query=k(``);domain=k(null);selected=k(null);loading=k(!0);domainOptions=tn(()=>{let i=new Set;for(let t of this.skills())t.domain&&i.add(t.domain);return[...i].sort()});filtered=tn(()=>{let i=ae(this.query()),t=this.domain();return this.skills().filter(a=>t!==null&&a.domain!==t?!1:i?[a.id,a.name,a.domain??``,a.description,...a.hosts].map(ae).join(` `).includes(i):!0)});findings=tn(()=>ne(this.skills().map(i=>({id:i.id,name:i.name||i.id,origin:this.store.descriptor()?.forge_id??null,version:null,description:i.description}))));dupIds=tn(()=>{let i=new Set;for(let t of this.findings())for(let a of t.entries)i.add(a.id);return i});constructor(){ko(()=>this.prefs.setFilter(`skills`,this.query())),this.load()}ngOnInit(){let i=this.q();if(i)this.query.set(i);else{let t=this.prefs.filterFor(`skills`);t&&this.query.set(t)}}async load(){this.error.set(null),this.loading.set(!0);try{this.skills.set(await mE(this.api.skills()))}catch(i){this.error.set(i instanceof n?i:new n(0))}finally{this.loading.set(!1)}}toggleDomain(i){this.domain.set(this.domain()===i?null:i)}pick(i){let t=this.skills().find(a=>a.id===i);t&&this.selected.set(t)}mapState(i){return[`invoked`,`available`,`installed`,`registered`].includes(i)?`supported`:i===`unverified`?`unverified`:`not_applicable`}static ɵfac=function(t){return new(t||e)};static ɵcmp=ni({type:e,selectors:[[`page-skills`]],inputs:{q:[1,`q`]},decls:11,vars:13,consts:[[`hintId`,`skill`,3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`status`],[`icon`,`skills`,3,`title`],[3,`retry`,`error`],[`kind`,`card`,3,`lines`],[`placeholder`,`skills.search`,3,`queryChange`,`query`],[`type`,`button`,1,`fg-pill`,3,`click`],[`type`,`button`,1,`fg-pill`],[`data-section`,`dedup`,1,`card`,`dedup`],[`data-section`,`skill-detail`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[1,`card`,`card--table`],[1,`table`],[`scope`,`col`],[1,`sr-only`],[1,`dedup__head`],[`name`,`diff`,3,`size`],[1,`muted`],[1,`dedup__list`],[3,`state`,`labelOverride`],[1,`dedup__names`],[`type`,`button`,1,`chip-link`],[1,`dedup__reasons`],[`type`,`button`,1,`chip-link`,3,`click`],[1,`detail__head`],[`name`,`skills`,3,`size`],[1,`detail__actions`],[`data-action`,`declaring-agents`,1,`btn`,`btn--mini`,3,`routerLink`,`queryParams`],[`name`,`chevron-right`,3,`size`],[1,`icon-btn`,3,`click`],[1,`kv`],[`state`,`UNVERIFIED`],[1,`links`],[1,`unv-cell`],[1,`chip`],[1,`chip-link`,3,`routerLink`,`fragment`],[1,`slug`],[1,`linklike`,3,`routerLink`,`fragment`],[`colspan`,`5`]],template:function(t,a){if(t&1&&(pa(0,`ui-page-header`,0),fC(1,`t`),fC(2,`t`),pa(3,`button`,1),Ra(`click`,function(){return a.load()}),Ma(4,`ui-icon`,2),ZS(5),fC(6,`t`),wd()(),pS(7,fe,1,1,`ui-error`,3),pS(8,ye,3,4,`div`,4),pS(9,$e,32,24)(10,ze,2,3,`ui-empty`,5)),t&2){let p;Qm(`title`,pC(1,7,`skills.title`))(`subtitle`,pC(2,9,`skills.subtitle`)),mD(4),Qm(`size`,15),mD(),Td(` `,pC(6,11,`state.refresh`),` `),mD(2),mS((p=a.error())?7:-1,p),mD(),mS(a.loading()?8:-1),mD(),mS(a.skills().length?9:!a.error()&&!a.loading()?10:-1)}},dependencies:[Dc,T,I,_,D,dE,k$1,h,uE],styles:[`.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);margin:4px 0 0;font-size:var(--%NS%font-sm)}.slug[_ngcontent-%COMP%]{display:block;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.card--table[_ngcontent-%COMP%]{padding:var(--%NS%space-3);overflow-x:auto}.card--table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%]{min-width:560px}tr[data-dup][_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-left:3px solid var(--%NS%warn)}.dedup[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);border-left:3px solid var(--%NS%warn)}.dedup__head[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3);flex-wrap:wrap;margin-bottom:var(--%NS%space-2)}.dedup__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)}.dedup__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%warn)}.dedup__list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:var(--%NS%space-3)}.dedup__list[_ngcontent-%COMP%] > li[_ngcontent-%COMP%]{display:grid;gap:4px}.dedup__names[_ngcontent-%COMP%]{display:inline-flex;flex-wrap:wrap;gap:4px}.dedup__reasons[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);display:grid;gap:2px}.detail[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);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%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.detail__actions[_ngcontent-%COMP%], .links[_ngcontent-%COMP%]{display:inline-flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-2)}.detail__actions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{text-decoration:none}.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}.unv-cell[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.chip[_ngcontent-%COMP%]{margin-left:4px}`]})};export{re as SkillsPage};
@@ -1 +1 @@
1
- import{i as m$1,r as l}from"./chunk-BYYLUO5t.js";import{B as Se$1,Gt as te,J as _r,Kt as tn,L as Ra,Mt as p$1,N as PE,R as Re$1,W as Wm,Wt as tS,Y as _t$1,Yt as ue,Z as ai,_t as ko,at as ey,c as Ca,d as E,dt as hs,en as xr,ht as k,i as Ar,it as ei,lt as hg,m as F$1,mt as jn,p as Ee$1,rt as ee,t as $$1,tn as xt,tt as ci,wt as mo,y as Ie$1,zt as sC}from"./chunk-zZVj9gH0.js";var Ce=(()=>{class n{_renderer;_elementRef;onChange=t=>{};onTouched=()=>{};constructor(t,r){this._renderer=t,this._elementRef=r}setProperty(t,r){this._renderer.setProperty(this._elementRef.nativeElement,t,r)}registerOnTouched(t){this.onTouched=t}registerOnChange(t){this.onChange=t}setDisabledState(t){this.setProperty(`disabled`,t)}static ɵfac=function(r){return new(r||n)(Se$1(jn),Se$1(_t$1))};static ɵdir=xr({type:n})}return n})();var Le=(()=>{class n extends Ce{static ɵfac=(()=>{let t;return function(i){return(t||(t=hg(n)))(i||n)}})();static ɵdir=xr({type:n,features:[Wm]})}return n})();var Ve=new E(``);var Be={provide:Ve,useExisting:hs(()=>De),multi:!0};function Ue(){let n=xt()?xt().getUserAgent():``;return/android (\d+)/.test(n.toLowerCase())}var He=new E(``);var De=(()=>{class n extends Ce{_compositionMode;_composing=!1;constructor(t,r,i){super(t,r),this._compositionMode=i,this._compositionMode??=!Ue()}writeValue(t){let r=t??``;this.setProperty(`value`,r)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}static ɵfac=function(r){return new(r||n)(Se$1(jn),Se$1(_t$1),Se$1(He,8))};static ɵdir=xr({type:n,selectors:[[`input`,`formControlName`,``,3,`type`,`checkbox`,3,`ngNoCva`,``],[`textarea`,`formControlName`,``,3,`ngNoCva`,``],[`input`,`formControl`,``,3,`type`,`checkbox`,3,`ngNoCva`,``],[`textarea`,`formControl`,``,3,`ngNoCva`,``],[`input`,`ngModel`,``,3,`type`,`checkbox`,3,`ngNoCva`,``],[`textarea`,`ngModel`,``,3,`ngNoCva`,``],[``,`ngDefaultControl`,``]],hostBindings:function(r,i){r&1&&Ra(`input`,function(l){return i._handleInput(l.target.value)})(`blur`,function(){return i.onTouched()})(`compositionstart`,function(){return i._compositionStart()})(`compositionend`,function(l){return i._compositionEnd(l.target.value)})},standalone:!1,features:[sC([Be]),Wm]})}return n})();function X(n){return n==null||Z(n)===0}function Z(n){return n==null?null:Array.isArray(n)||typeof n==`string`?n.length:n instanceof Set?n.size:null}var Ae=new E(``);var $e=new E(``);var qe=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;var H=class{static min(e){return We(e)}static max(e){return ze(e)}static required(e){return be(e)}static requiredTrue(e){return Ye(e)}static email(e){return Xe(e)}static minLength(e){return Ze(e)}static maxLength(e){return Ke(e)}static pattern(e){return Qe(e)}static nullValidator(e){return O()}static compose(e){return Fe(e)}static composeAsync(e){return we(e)}};function We(n){return e=>{if(e.value==null||n==null)return null;let t=parseFloat(e.value);return!isNaN(t)&&t<n?{min:{min:n,actual:e.value}}:null}}function ze(n){return e=>{if(e.value==null||n==null)return null;let t=parseFloat(e.value);return!isNaN(t)&&t>n?{max:{max:n,actual:e.value}}:null}}function be(n){return X(n.value)?{required:!0}:null}function Ye(n){return n.value===!0?null:{required:!0}}function Xe(n){return X(n.value)||qe.test(n.value)?null:{email:!0}}function Ze(n){return e=>{let t=e.value?.length??Z(e.value);return t===null||t===0?null:t<n?{minlength:{requiredLength:n,actualLength:t}}:null}}function Ke(n){return e=>{let t=e.value?.length??Z(e.value);return t!==null&&t>n?{maxlength:{requiredLength:n,actualLength:t}}:null}}function Qe(n){if(!n)return O;let e,t;return typeof n==`string`?(t=``,n.charAt(0)!==`^`&&(t+=`^`),t+=n,n.charAt(n.length-1)!==`$`&&(t+=`$`),e=new RegExp(t)):(t=n.toString(),e=n),r=>{if(X(r.value))return null;let i=r.value;return e.test(i)?null:{pattern:{requiredPattern:t,actualValue:i}}}}function O(n){return null}function Me(n){return n!=null}function Ee(n){return ei(n)?te(n):n}function Ne(n){let e={};return n.forEach(t=>{e=t!=null?l(l({},e),t):e}),Object.keys(e).length===0?null:e}function Ie(n,e){return e.map(t=>t(n))}function Je(n){return!n.validate}function Se(n){return n.map(e=>Je(e)?e:t=>e.validate(t))}function Fe(n){if(!n)return null;let e=n.filter(Me);return e.length==0?null:function(t){return Ne(Ie(t,e))}}function Oe(n){return n!=null?Fe(Se(n)):null}function we(n){if(!n)return null;let e=n.filter(Me);return e.length==0?null:function(t){let r=Ie(t,e).map(Ee);return PE(r).pipe($$1(Ne))}}function Re(n){return n!=null?we(Se(n)):null}function he(n,e){return n===null?[e]:Array.isArray(n)?[...n,e]:[n,e]}function et(n){return n._rawValidators}function tt(n){return n._rawAsyncValidators}function $(n){return n?Array.isArray(n)?n:[n]:[]}function w(n,e){return Array.isArray(n)?n.includes(e):n===e}function pe(n,e){let t=$(e);return $(n).forEach(i=>{w(t,i)||t.push(i)}),t}function fe(n,e){return $(e).filter(t=>!w(n,t))}var R=class{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(e){this._rawValidators=e||[],this._composedValidatorFn=Oe(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=Re(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(e){this._onDestroyCallbacks.push(e)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(e=>e()),this._onDestroyCallbacks=[]}reset(e=void 0){this.control?.reset(e)}hasError(e,t){return this.control?this.control.hasError(e,t):!1}getError(e,t){return this.control?this.control.getError(e,t):null}};var q=class extends R{name;get formDirective(){return null}get path(){return null}};var C=`VALID`;var F=`INVALID`;var g=`PENDING`;var V=`DISABLED`;var p=class{};var x=class extends p{value;source;constructor(e,t){super(),this.value=e,this.source=t}};var D=class extends p{pristine;source;constructor(e,t){super(),this.pristine=e,this.source=t}};var A=class extends p{touched;source;constructor(e,t){super(),this.touched=e,this.source=t}};var m=class extends p{status;source;constructor(e,t){super(),this.status=e,this.source=t}};var b=class extends p{source;constructor(e){super(),this.source=e}};function nt(n){return(T(n)?n.validators:n)||null}function rt(n){return Array.isArray(n)?Oe(n):n||null}function it(n,e){return(T(e)?e.asyncValidators:n)||null}function ot(n){return Array.isArray(n)?Re(n):n||null}function T(n){return n!=null&&!Array.isArray(n)&&typeof n==`object`}var W=class{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_hasRequired=k(!1);_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(e,t){this._assignValidators(e),this._assignAsyncValidators(t)}get validator(){return this._composedValidatorFn}set validator(e){this._rawValidators=this._composedValidatorFn=e,this._updateHasRequiredValidator()}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(e){this._rawAsyncValidators=this._composedAsyncValidatorFn=e}get parent(){return this._parent}get status(){return F$1(this.statusReactive)}set status(e){F$1(()=>this.statusReactive.set(e))}_status=tn(()=>this.statusReactive());statusReactive=k(void 0);get valid(){return this.status===C}get invalid(){return this.status===F}get pending(){return this.status===g}get disabled(){return this.status===V}get enabled(){return this.status!==V}errors;get pristine(){return F$1(this.pristineReactive)}set pristine(e){F$1(()=>this.pristineReactive.set(e))}_pristine=tn(()=>this.pristineReactive());pristineReactive=k(!0);get dirty(){return!this.pristine}get touched(){return F$1(this.touchedReactive)}set touched(e){F$1(()=>this.touchedReactive.set(e))}_touched=tn(()=>this.touchedReactive());touchedReactive=k(!1);get untouched(){return!this.touched}_events=new ee;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:`change`}setValidators(e){this._assignValidators(e)}setAsyncValidators(e){this._assignAsyncValidators(e)}addValidators(e){this.setValidators(pe(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(pe(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(fe(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(fe(e,this._rawAsyncValidators))}hasValidator(e){return w(this._rawValidators,e)}hasAsyncValidator(e){return w(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){let t=this.touched===!1;this.touched=!0;let r=e.sourceControl??this;e.onlySelf||this._parent?.markAsTouched(m$1(l({},e),{sourceControl:r})),t&&e.emitEvent!==!1&&this._events.next(new A(!0,r))}markAllAsDirty(e={}){this.markAsDirty({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsDirty(e))}markAllAsTouched(e={}){this.markAsTouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsTouched(e))}markAsUntouched(e={}){let t=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let r=e.sourceControl??this;this._forEachChild(i=>{i.markAsUntouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:r})}),e.onlySelf||this._parent?._updateTouched(e,r),t&&e.emitEvent!==!1&&this._events.next(new A(!1,r))}markAsDirty(e={}){let t=this.pristine===!0;this.pristine=!1;let r=e.sourceControl??this;e.onlySelf||this._parent?.markAsDirty(m$1(l({},e),{sourceControl:r})),t&&e.emitEvent!==!1&&this._events.next(new D(!1,r))}markAsPristine(e={}){let t=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let r=e.sourceControl??this;this._forEachChild(i=>{i.markAsPristine({onlySelf:!0,emitEvent:e.emitEvent})}),e.onlySelf||this._parent?._updatePristine(e,r),t&&e.emitEvent!==!1&&this._events.next(new D(!0,r))}markAsPending(e={}){this.status=g;let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new m(this.status,t)),this.statusChanges.emit(this.status)),e.onlySelf||this._parent?.markAsPending(m$1(l({},e),{sourceControl:t}))}disable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=V,this.errors=null,this._forEachChild(i=>{i.disable(m$1(l({},e),{onlySelf:!0}))}),this._updateValue();let r=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new x(this.value,r)),this._events.next(new m(this.status,r)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(m$1(l({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(i=>i(!0))}enable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=C,this._forEachChild(r=>{r.enable(m$1(l({},e),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(m$1(l({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(r=>r(!1))}_updateAncestors(e,t){e.onlySelf||(this._parent?.updateValueAndValidity(e),e.skipPristineCheck||this._parent?._updatePristine({},t),this._parent?._updateTouched({},t))}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let r=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===C||this.status===g)&&this._runAsyncValidator(r,e.emitEvent)}let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new x(this.value,t)),this._events.next(new m(this.status,t)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),e.onlySelf||this._parent?.updateValueAndValidity(m$1(l({},e),{sourceControl:t}))}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?V:C}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e,t){if(this.asyncValidator){this.status=g,this._hasOwnPendingAsyncValidator={emitEvent:t!==!1,shouldHaveEmitted:e!==!1};let r=Ee(this.asyncValidator(this));this._asyncValidationSubscription=r.subscribe(i=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(i,{emitEvent:t,shouldHaveEmitted:e})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let e=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,e}return!1}setErrors(e,t={}){this.errors=e,this._updateControlsErrors(t.emitEvent!==!1,this,t.shouldHaveEmitted)}get(e){let t=e;return t==null||(Array.isArray(t)||(t=t.split(`.`)),t.length===0)?null:t.reduce((r,i)=>r&&r._find(i),this)}getError(e,t){let r=t?this.get(t):this;return r?.errors?r.errors[e]:null}hasError(e,t){return!!this.getError(e,t)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e,t,r){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),(e||r)&&this._events.next(new m(this.status,t)),this._parent&&this._parent._updateControlsErrors(e,t,r)}_initObservables(){this.valueChanges=new Ee$1,this.statusChanges=new Ee$1}_calculateStatus(){return this._allControlsDisabled()?V:this.errors?F:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(g)?g:this._anyControlsHaveStatus(F)?F:C}_anyControlsHaveStatus(e){return this._anyControls(t=>t.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e,t){let r=!this._anyControlsDirty(),i=this.pristine!==r;this.pristine=r,e.onlySelf||this._parent?._updatePristine(e,t),i&&this._events.next(new D(this.pristine,t))}_updateTouched(e={},t){this.touched=this._anyControlsTouched(),this._events.next(new A(this.touched,t)),e.onlySelf||this._parent?._updateTouched(e,t)}_onDisabledChange=[];_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){T(e)&&e.updateOn!=null&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){return!e&&!!this._parent?.dirty&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=rt(this._rawValidators),this._updateHasRequiredValidator()}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=ot(this._rawAsyncValidators)}_updateHasRequiredValidator(){F$1(()=>this._hasRequired.set(this.hasValidator(H.required)))}};function st(n){return n.tagName===`INPUT`||n.tagName===`SELECT`||n.tagName===`TEXTAREA`}function at(n,e,t,r){switch(t){case`name`:n.setAttribute(e,t,r);break;case`disabled`:case`readonly`:case`required`:r?n.setAttribute(e,t,``):n.removeAttribute(e,t);break;case`max`:case`min`:case`minLength`:case`maxLength`:r!==void 0?n.setAttribute(e,t,r.toString()):n.removeAttribute(e,t)}}var z=class{kind;context;control;message;constructor({kind:e,context:t,control:r}){this.kind=e,this.context=t,this.control=r}};var lt=(()=>{class n{_validator=O;_onChange;_enabled;ngOnChanges(t){if(this.inputName in t){let r=this.normalizeInput(t[this.inputName].currentValue);this._enabled=this.enabled(r),this._validator=this._enabled?this.createValidator(r):O,this._onChange?.()}}validate(t){return this._validator(t)}registerOnValidatorChange(t){this._onChange=t}enabled(t){return t!=null}static ɵfac=function(r){return new(r||n)};static ɵdir=xr({type:n,features:[_r]})}return n})();var ut={provide:Ae,useExisting:hs(()=>xe),multi:!0};var xe=(()=>{class n extends lt{required;inputName=`required`;normalizeInput=ci;createValidator=t=>be;enabled(t){return t}static ɵfac=(()=>{let t;return function(i){return(t||(t=hg(n)))(i||n)}})();static ɵdir=xr({type:n,selectors:[[``,`required`,``,`formControlName`,``,3,`type`,`checkbox`],[``,`required`,``,`formControl`,``,3,`type`,`checkbox`],[``,`required`,``,`ngModel`,``,3,`type`,`checkbox`]],hostVars:1,hostBindings:function(r,i){r&2&&Ar(`required`,i._enabled?``:null)},inputs:{required:`required`},standalone:!1,features:[sC([ut]),Wm]})}return n})();var dt=new E(``);var Te=new E(``,{factory:()=>K});var K=`always`;function ct(n,e){return[...e.path,n]}function ge(n,e,t=K){pt(n,e),e.valueAccessor.writeValue(n.value),(n.disabled||t===`always`)&&e.valueAccessor.setDisabledState?.(n.disabled),ft(n,e),mt(n,e),gt(n,e),ht(n,e)}function me(n,e){n.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(e)})}function ht(n,e){if(e.valueAccessor.setDisabledState){let t=r=>{e.valueAccessor.setDisabledState(r)};n.registerOnDisabledChange(t),e._registerOnDestroy(()=>{n._unregisterOnDisabledChange(t)})}}function pt(n,e){let t=et(n);e.validator!==null?n.setValidators(he(t,e.validator)):typeof t==`function`&&n.setValidators([t]);let r=tt(n);e.asyncValidator!==null?n.setAsyncValidators(he(r,e.asyncValidator)):typeof r==`function`&&n.setAsyncValidators([r]);let i=()=>n.updateValueAndValidity();me(e._rawValidators,i),me(e._rawAsyncValidators,i)}function ft(n,e){e.valueAccessor.registerOnChange(t=>{n._pendingValue=t,n._pendingChange=!0,n._pendingDirty=!0,n.updateOn===`change`&&Pe(n,e)})}function gt(n,e){e.valueAccessor.registerOnTouched(()=>{n._pendingTouched=!0,n.updateOn===`blur`&&n._pendingChange&&Pe(n,e),n.updateOn!==`submit`&&n.markAsTouched()})}function Pe(n,e){n._pendingDirty&&n.markAsDirty(),n.setValue(n._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(n._pendingValue),n._pendingChange=!1}function mt(n,e){let t=(r,i)=>{e.valueAccessor.writeValue(r),i&&e.viewToModelUpdate(r)};n.registerOnChange(t),e._registerOnDestroy(()=>{n._unregisterOnChange(t)})}function yt(n,e){if(!Object.hasOwn(n,`model`))return!1;let t=n.model;return t.isFirstChange()?!0:!Object.is(e,t.currentValue)}function vt(n){return Object.getPrototypeOf(n.constructor)===Le}function _t(n,e){if(!e)return null;let t,r,i;return e.forEach(o=>{o.constructor===De?t=o:vt(o)?r=o:i=o}),i||r||t||null}var Ct={provide:dt,useFactory:()=>{let n=p$1(y,{self:!0});return{setParseErrors:e=>{n.setParseErrorSource(e)},set onReset(e){n.onReset=e}}}};var y=class extends R{_parent=null;name=null;valueAccessor=null;isCustomControlBased=!1;userOnReset;resetSubscription;set onReset(e){this.userOnReset=e,this.resetSubscription?.unsubscribe(),this.resetSubscription=void 0,this.control&&(this.resetSubscription=this.control.events.subscribe(t=>{t instanceof b&&this.control&&this.userOnReset?.(this.control.value)}),this.subscription?.add(this.resetSubscription))}isNativeFormElement=!1;rawValueAccessors;_selectedValueAccessor=null;get selectedValueAccessor(){return this._selectedValueAccessor??=_t(this,this.rawValueAccessors)}parseErrorsValidator=null;renderer;injector;requiredValidatorViaDi;subscription;customControlBindings=null;constructor(e,t,r){super(),this.injector=e,this.renderer=t,this.rawValueAccessors=r,this.injector?.get(Ie$1)?.onDestroy(()=>{this.removeParseErrorsValidator(this.control),this.subscription?.unsubscribe()})}setupCustomControl(){this.subscription?.unsubscribe();let e=this.injector?.get(ai);if(!this.control||!e)return;let t=e.markForCheck.bind(e);this.subscription=new ue,this.subscription.add(this.control.valueChanges.subscribe(t)),this.subscription.add(this.control.statusChanges.subscribe(t)),this.resetSubscription?.unsubscribe(),this.resetSubscription=void 0,this.userOnReset&&(this.resetSubscription=this.control.events.subscribe(r=>{r instanceof b&&this.control&&this.userOnReset?.(this.control.value)}),this.subscription.add(this.resetSubscription)),this.parseErrorsValidator&&this.control.addValidators(this.parseErrorsValidator)}ngControlCreate(e){!e.nativeElement.hasAttribute?.(`ngNoCva`)&&(this.rawValueAccessors&&this.rawValueAccessors.length>0||this.valueAccessor!==null)||!e.customControl||(this.isCustomControlBased=!0,e.listenToCustomControlModel(i=>{this.control?.markAsDirty(),this.control?.setValue(i,{emitModelToViewChange:!1}),this.viewToModelUpdate(i)}),e.listenToCustomControlOutput(`touch`,()=>{this.control?.markAsTouched()}),this.customControlBindings={},this.isNativeFormElement=st(e.nativeElement),this.requiredValidatorViaDi=this._rawValidators.find(i=>i instanceof xe))}ngControlUpdate(e,t){if(!this.isCustomControlBased)return;let r=this.control,i=this.customControlBindings;Object.is(i.value,r.value)||(i.value=r.value,e.setCustomControlModelInput(r.value)),this.bindControlProperty(e,i,`touched`,r.touched),this.bindControlProperty(e,i,`dirty`,r.dirty),this.bindControlProperty(e,i,`valid`,r.valid),this.bindControlProperty(e,i,`invalid`,r.invalid),this.bindControlProperty(e,i,`pending`,r.pending),this.bindControlProperty(e,i,`disabled`,r.disabled),this.shouldBindRequired&&this.bindControlProperty(e,i,`required`,this.isRequired);let o=r.errors;if(i.errors!==o){i.errors=o;let l=this._convertErrors(o);e.setInputOnDirectives(`errors`,l)}}get isRequired(){return(this.requiredValidatorViaDi?._enabled||this.control?._hasRequired())??!1}get shouldBindRequired(){return!0}bindControlProperty(e,t,r,i){if(t[r]===i)return;t[r]=i;let o=e.setInputOnDirectives(r,i);this.isNativeFormElement&&!o&&(r===`disabled`||r===`required`)&&this.renderer&&at(this.renderer,e.nativeElement,r,i)}_convertErrors(e){if(e===null)return[];let t=this.control;return Object.entries(e).map(([r,i])=>new z({context:i,kind:r,control:t}))}setParseErrorSource(e){if(e===void 0)return;let t=null,r=tn(()=>{let i=e();return i.length===0?null:i.reduce((o,l)=>(o[l.kind]=l,o),{})});this.parseErrorsValidator=(()=>t).bind(this),ko(()=>{t=r(),this.control?.updateValueAndValidity({emitEvent:!1})},{injector:this.injector})}removeParseErrorsValidator(e){this.parseErrorsValidator&&(e?.removeValidators(this.parseErrorsValidator),e?.updateValueAndValidity({emitEvent:!1}))}};var Y=class{_cd;constructor(e){this._cd=e}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}};var Yt=(()=>{class n extends Y{constructor(t){super(t)}static ɵfac=function(r){return new(r||n)(Se$1(y,2))};static ɵdir=xr({type:n,selectors:[[``,`formControlName`,``],[``,`ngModel`,``],[``,`formControl`,``]],hostVars:14,hostBindings:function(r,i){r&2&&ey(`ng-untouched`,i.isUntouched)(`ng-touched`,i.isTouched)(`ng-pristine`,i.isPristine)(`ng-dirty`,i.isDirty)(`ng-valid`,i.isValid)(`ng-invalid`,i.isInvalid)(`ng-pending`,i.isPending)},standalone:!1,features:[Wm]})}return n})();function ye(n,e){let t=n.indexOf(e);t>-1&&n.splice(t,1)}function ve(n){return typeof n==`object`&&n!==null&&Object.keys(n).length===2&&`value`in n&&`disabled`in n}var Vt=class extends W{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(e=null,t,r){super(nt(t),it(r,t)),this._applyFormState(e),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),T(t)&&(t.nonNullable||t.initialValueIsDefault)&&(ve(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,t={}){F$1(()=>{this.value=this._pendingValue=e,this._onChange.length&&t.emitModelToViewChange!==!1&&this._onChange.forEach(r=>r(this.value,t.emitViewToModelChange!==!1)),this.updateValueAndValidity(t)})}patchValue(e,t={}){this.setValue(e,t)}reset(e=this.defaultValue,t={}){this._applyFormState(e),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),t.overwriteDefaultValue&&(this.defaultValue=this.value),this._pendingChange=!1,t?.emitEvent!==!1&&this._events.next(new b(this))}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){ye(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){ye(this._onDisabledChange,e)}_forEachChild(e){}_syncPendingControls(){return this.updateOn===`submit`&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(e){ve(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e}};var Dt={provide:y,useExisting:hs(()=>At)};var _e=Promise.resolve();var At=(()=>{class n extends y{_changeDetectorRef;callSetDisabledState;control=new Vt;static ngAcceptInputType_isDisabled;_registered=!1;_ngModelInjector;viewModel;name=``;isDisabled;model;options;update=new Ee$1;constructor(t,r,i,o,l,je,Ge,ke){super(Ge,ke,o),this._changeDetectorRef=l,this.callSetDisabledState=je,this._parent=t,this._setValidators(r),this._setAsyncValidators(i)}ngOnChanges(t){if(this._registered,this._checkForErrors(),!this._registered||`name`in t){if(this._registered&&(this._checkName(),this.formDirective)){let r=t.name.previousValue;this.formDirective.removeControl({name:r,path:this._getPath(r)})}this._setUpControl()}`isDisabled`in t&&this._updateDisabled(t),yt(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective?.removeControl(this)}ɵngControlCreate(t){super.ngControlCreate(t)}ɵngControlUpdate(t){super.ngControlUpdate(t,!1)}get shouldBindRequired(){return!1}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){this.isCustomControlBased?this.setupCustomControl():(this.valueAccessor??=this.selectedValueAccessor,ge(this.control,this,this.callSetDisabledState)),this.control.updateValueAndValidity({emitEvent:!1})}_setupWithForm(t){this.isCustomControlBased?this.setupCustomControl():(this.valueAccessor??=this.selectedValueAccessor,ge(this.control,this,t))}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(t){_e.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(t){let r=t.isDisabled.currentValue,i=r!==0&&ci(r);_e.then(()=>{i&&!this.control.disabled?this.control.disable():!i&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(t){return this._parent?ct(t,this._parent):[t]}static ɵfac=function(r){return new(r||n)(Se$1(q,9),Se$1(Ae,10),Se$1($e,10),Se$1(Ve,10),Se$1(ai,8),Se$1(Te,8),Se$1(Re$1,8),Se$1(jn,8))};static ɵdir=xr({type:n,selectors:[[``,`ngModel`,``,3,`formControlName`,``,3,`formControl`,``]],inputs:{name:`name`,isDisabled:[0,`disabled`,`isDisabled`],model:[0,`ngModel`,`model`],options:[0,`ngModelOptions`,`options`]},outputs:{update:`ngModelChange`},exportAs:[`ngModel`],standalone:!1,features:[sC([Dt,Ct]),Wm,_r,tS(null)]})}return n})();var bt=(()=>{class n{static ɵfac=function(r){return new(r||n)};static ɵmod=Ca({type:n});static ɵinj=mo({})}return n})();var Zt=(()=>{class n{static withConfig(t){return{ngModule:n,providers:[{provide:Te,useValue:t.callSetDisabledState??K}]}}static ɵfac=function(r){return new(r||n)};static ɵmod=Ca({type:n});static ɵinj=mo({imports:[bt]})}return n})();export{Zt as i,De as n,Yt as r,At as t};
1
+ import{i as m$1,r as l}from"./chunk-BYYLUO5t.js";import{B as Se$1,Gt as te,J as _r,Kt as tn,L as Ra,Mt as p$1,N as PE,R as Re$1,W as Wm,Wt as tS,Y as _t$1,Yt as ue,Z as ai,_t as ko,at as ey,c as Ca,d as E,dt as hs,en as xr,ht as k,i as Ar,it as ei,lt as hg,m as F$1,mt as jn,p as Ee$1,rt as ee,t as $$1,tn as xt,tt as ci,wt as mo,y as Ie$1,zt as sC}from"./chunk-CV7TSqiz.js";var Ce=(()=>{class n{_renderer;_elementRef;onChange=t=>{};onTouched=()=>{};constructor(t,r){this._renderer=t,this._elementRef=r}setProperty(t,r){this._renderer.setProperty(this._elementRef.nativeElement,t,r)}registerOnTouched(t){this.onTouched=t}registerOnChange(t){this.onChange=t}setDisabledState(t){this.setProperty(`disabled`,t)}static ɵfac=function(r){return new(r||n)(Se$1(jn),Se$1(_t$1))};static ɵdir=xr({type:n})}return n})();var Le=(()=>{class n extends Ce{static ɵfac=(()=>{let t;return function(i){return(t||(t=hg(n)))(i||n)}})();static ɵdir=xr({type:n,features:[Wm]})}return n})();var Ve=new E(``);var Be={provide:Ve,useExisting:hs(()=>De),multi:!0};function Ue(){let n=xt()?xt().getUserAgent():``;return/android (\d+)/.test(n.toLowerCase())}var He=new E(``);var De=(()=>{class n extends Ce{_compositionMode;_composing=!1;constructor(t,r,i){super(t,r),this._compositionMode=i,this._compositionMode??=!Ue()}writeValue(t){let r=t??``;this.setProperty(`value`,r)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}static ɵfac=function(r){return new(r||n)(Se$1(jn),Se$1(_t$1),Se$1(He,8))};static ɵdir=xr({type:n,selectors:[[`input`,`formControlName`,``,3,`type`,`checkbox`,3,`ngNoCva`,``],[`textarea`,`formControlName`,``,3,`ngNoCva`,``],[`input`,`formControl`,``,3,`type`,`checkbox`,3,`ngNoCva`,``],[`textarea`,`formControl`,``,3,`ngNoCva`,``],[`input`,`ngModel`,``,3,`type`,`checkbox`,3,`ngNoCva`,``],[`textarea`,`ngModel`,``,3,`ngNoCva`,``],[``,`ngDefaultControl`,``]],hostBindings:function(r,i){r&1&&Ra(`input`,function(l){return i._handleInput(l.target.value)})(`blur`,function(){return i.onTouched()})(`compositionstart`,function(){return i._compositionStart()})(`compositionend`,function(l){return i._compositionEnd(l.target.value)})},standalone:!1,features:[sC([Be]),Wm]})}return n})();function X(n){return n==null||Z(n)===0}function Z(n){return n==null?null:Array.isArray(n)||typeof n==`string`?n.length:n instanceof Set?n.size:null}var Ae=new E(``);var $e=new E(``);var qe=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;var H=class{static min(e){return We(e)}static max(e){return ze(e)}static required(e){return be(e)}static requiredTrue(e){return Ye(e)}static email(e){return Xe(e)}static minLength(e){return Ze(e)}static maxLength(e){return Ke(e)}static pattern(e){return Qe(e)}static nullValidator(e){return O()}static compose(e){return Fe(e)}static composeAsync(e){return we(e)}};function We(n){return e=>{if(e.value==null||n==null)return null;let t=parseFloat(e.value);return!isNaN(t)&&t<n?{min:{min:n,actual:e.value}}:null}}function ze(n){return e=>{if(e.value==null||n==null)return null;let t=parseFloat(e.value);return!isNaN(t)&&t>n?{max:{max:n,actual:e.value}}:null}}function be(n){return X(n.value)?{required:!0}:null}function Ye(n){return n.value===!0?null:{required:!0}}function Xe(n){return X(n.value)||qe.test(n.value)?null:{email:!0}}function Ze(n){return e=>{let t=e.value?.length??Z(e.value);return t===null||t===0?null:t<n?{minlength:{requiredLength:n,actualLength:t}}:null}}function Ke(n){return e=>{let t=e.value?.length??Z(e.value);return t!==null&&t>n?{maxlength:{requiredLength:n,actualLength:t}}:null}}function Qe(n){if(!n)return O;let e,t;return typeof n==`string`?(t=``,n.charAt(0)!==`^`&&(t+=`^`),t+=n,n.charAt(n.length-1)!==`$`&&(t+=`$`),e=new RegExp(t)):(t=n.toString(),e=n),r=>{if(X(r.value))return null;let i=r.value;return e.test(i)?null:{pattern:{requiredPattern:t,actualValue:i}}}}function O(n){return null}function Me(n){return n!=null}function Ee(n){return ei(n)?te(n):n}function Ne(n){let e={};return n.forEach(t=>{e=t!=null?l(l({},e),t):e}),Object.keys(e).length===0?null:e}function Ie(n,e){return e.map(t=>t(n))}function Je(n){return!n.validate}function Se(n){return n.map(e=>Je(e)?e:t=>e.validate(t))}function Fe(n){if(!n)return null;let e=n.filter(Me);return e.length==0?null:function(t){return Ne(Ie(t,e))}}function Oe(n){return n!=null?Fe(Se(n)):null}function we(n){if(!n)return null;let e=n.filter(Me);return e.length==0?null:function(t){let r=Ie(t,e).map(Ee);return PE(r).pipe($$1(Ne))}}function Re(n){return n!=null?we(Se(n)):null}function he(n,e){return n===null?[e]:Array.isArray(n)?[...n,e]:[n,e]}function et(n){return n._rawValidators}function tt(n){return n._rawAsyncValidators}function $(n){return n?Array.isArray(n)?n:[n]:[]}function w(n,e){return Array.isArray(n)?n.includes(e):n===e}function pe(n,e){let t=$(e);return $(n).forEach(i=>{w(t,i)||t.push(i)}),t}function fe(n,e){return $(e).filter(t=>!w(n,t))}var R=class{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(e){this._rawValidators=e||[],this._composedValidatorFn=Oe(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=Re(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(e){this._onDestroyCallbacks.push(e)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(e=>e()),this._onDestroyCallbacks=[]}reset(e=void 0){this.control?.reset(e)}hasError(e,t){return this.control?this.control.hasError(e,t):!1}getError(e,t){return this.control?this.control.getError(e,t):null}};var q=class extends R{name;get formDirective(){return null}get path(){return null}};var C=`VALID`;var F=`INVALID`;var g=`PENDING`;var V=`DISABLED`;var p=class{};var x=class extends p{value;source;constructor(e,t){super(),this.value=e,this.source=t}};var D=class extends p{pristine;source;constructor(e,t){super(),this.pristine=e,this.source=t}};var A=class extends p{touched;source;constructor(e,t){super(),this.touched=e,this.source=t}};var m=class extends p{status;source;constructor(e,t){super(),this.status=e,this.source=t}};var b=class extends p{source;constructor(e){super(),this.source=e}};function nt(n){return(T(n)?n.validators:n)||null}function rt(n){return Array.isArray(n)?Oe(n):n||null}function it(n,e){return(T(e)?e.asyncValidators:n)||null}function ot(n){return Array.isArray(n)?Re(n):n||null}function T(n){return n!=null&&!Array.isArray(n)&&typeof n==`object`}var W=class{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_hasRequired=k(!1);_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(e,t){this._assignValidators(e),this._assignAsyncValidators(t)}get validator(){return this._composedValidatorFn}set validator(e){this._rawValidators=this._composedValidatorFn=e,this._updateHasRequiredValidator()}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(e){this._rawAsyncValidators=this._composedAsyncValidatorFn=e}get parent(){return this._parent}get status(){return F$1(this.statusReactive)}set status(e){F$1(()=>this.statusReactive.set(e))}_status=tn(()=>this.statusReactive());statusReactive=k(void 0);get valid(){return this.status===C}get invalid(){return this.status===F}get pending(){return this.status===g}get disabled(){return this.status===V}get enabled(){return this.status!==V}errors;get pristine(){return F$1(this.pristineReactive)}set pristine(e){F$1(()=>this.pristineReactive.set(e))}_pristine=tn(()=>this.pristineReactive());pristineReactive=k(!0);get dirty(){return!this.pristine}get touched(){return F$1(this.touchedReactive)}set touched(e){F$1(()=>this.touchedReactive.set(e))}_touched=tn(()=>this.touchedReactive());touchedReactive=k(!1);get untouched(){return!this.touched}_events=new ee;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:`change`}setValidators(e){this._assignValidators(e)}setAsyncValidators(e){this._assignAsyncValidators(e)}addValidators(e){this.setValidators(pe(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(pe(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(fe(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(fe(e,this._rawAsyncValidators))}hasValidator(e){return w(this._rawValidators,e)}hasAsyncValidator(e){return w(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){let t=this.touched===!1;this.touched=!0;let r=e.sourceControl??this;e.onlySelf||this._parent?.markAsTouched(m$1(l({},e),{sourceControl:r})),t&&e.emitEvent!==!1&&this._events.next(new A(!0,r))}markAllAsDirty(e={}){this.markAsDirty({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsDirty(e))}markAllAsTouched(e={}){this.markAsTouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsTouched(e))}markAsUntouched(e={}){let t=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let r=e.sourceControl??this;this._forEachChild(i=>{i.markAsUntouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:r})}),e.onlySelf||this._parent?._updateTouched(e,r),t&&e.emitEvent!==!1&&this._events.next(new A(!1,r))}markAsDirty(e={}){let t=this.pristine===!0;this.pristine=!1;let r=e.sourceControl??this;e.onlySelf||this._parent?.markAsDirty(m$1(l({},e),{sourceControl:r})),t&&e.emitEvent!==!1&&this._events.next(new D(!1,r))}markAsPristine(e={}){let t=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let r=e.sourceControl??this;this._forEachChild(i=>{i.markAsPristine({onlySelf:!0,emitEvent:e.emitEvent})}),e.onlySelf||this._parent?._updatePristine(e,r),t&&e.emitEvent!==!1&&this._events.next(new D(!0,r))}markAsPending(e={}){this.status=g;let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new m(this.status,t)),this.statusChanges.emit(this.status)),e.onlySelf||this._parent?.markAsPending(m$1(l({},e),{sourceControl:t}))}disable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=V,this.errors=null,this._forEachChild(i=>{i.disable(m$1(l({},e),{onlySelf:!0}))}),this._updateValue();let r=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new x(this.value,r)),this._events.next(new m(this.status,r)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(m$1(l({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(i=>i(!0))}enable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=C,this._forEachChild(r=>{r.enable(m$1(l({},e),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(m$1(l({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(r=>r(!1))}_updateAncestors(e,t){e.onlySelf||(this._parent?.updateValueAndValidity(e),e.skipPristineCheck||this._parent?._updatePristine({},t),this._parent?._updateTouched({},t))}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let r=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===C||this.status===g)&&this._runAsyncValidator(r,e.emitEvent)}let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new x(this.value,t)),this._events.next(new m(this.status,t)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),e.onlySelf||this._parent?.updateValueAndValidity(m$1(l({},e),{sourceControl:t}))}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?V:C}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e,t){if(this.asyncValidator){this.status=g,this._hasOwnPendingAsyncValidator={emitEvent:t!==!1,shouldHaveEmitted:e!==!1};let r=Ee(this.asyncValidator(this));this._asyncValidationSubscription=r.subscribe(i=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(i,{emitEvent:t,shouldHaveEmitted:e})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let e=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,e}return!1}setErrors(e,t={}){this.errors=e,this._updateControlsErrors(t.emitEvent!==!1,this,t.shouldHaveEmitted)}get(e){let t=e;return t==null||(Array.isArray(t)||(t=t.split(`.`)),t.length===0)?null:t.reduce((r,i)=>r&&r._find(i),this)}getError(e,t){let r=t?this.get(t):this;return r?.errors?r.errors[e]:null}hasError(e,t){return!!this.getError(e,t)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e,t,r){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),(e||r)&&this._events.next(new m(this.status,t)),this._parent&&this._parent._updateControlsErrors(e,t,r)}_initObservables(){this.valueChanges=new Ee$1,this.statusChanges=new Ee$1}_calculateStatus(){return this._allControlsDisabled()?V:this.errors?F:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(g)?g:this._anyControlsHaveStatus(F)?F:C}_anyControlsHaveStatus(e){return this._anyControls(t=>t.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e,t){let r=!this._anyControlsDirty(),i=this.pristine!==r;this.pristine=r,e.onlySelf||this._parent?._updatePristine(e,t),i&&this._events.next(new D(this.pristine,t))}_updateTouched(e={},t){this.touched=this._anyControlsTouched(),this._events.next(new A(this.touched,t)),e.onlySelf||this._parent?._updateTouched(e,t)}_onDisabledChange=[];_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){T(e)&&e.updateOn!=null&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){return!e&&!!this._parent?.dirty&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=rt(this._rawValidators),this._updateHasRequiredValidator()}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=ot(this._rawAsyncValidators)}_updateHasRequiredValidator(){F$1(()=>this._hasRequired.set(this.hasValidator(H.required)))}};function st(n){return n.tagName===`INPUT`||n.tagName===`SELECT`||n.tagName===`TEXTAREA`}function at(n,e,t,r){switch(t){case`name`:n.setAttribute(e,t,r);break;case`disabled`:case`readonly`:case`required`:r?n.setAttribute(e,t,``):n.removeAttribute(e,t);break;case`max`:case`min`:case`minLength`:case`maxLength`:r!==void 0?n.setAttribute(e,t,r.toString()):n.removeAttribute(e,t)}}var z=class{kind;context;control;message;constructor({kind:e,context:t,control:r}){this.kind=e,this.context=t,this.control=r}};var lt=(()=>{class n{_validator=O;_onChange;_enabled;ngOnChanges(t){if(this.inputName in t){let r=this.normalizeInput(t[this.inputName].currentValue);this._enabled=this.enabled(r),this._validator=this._enabled?this.createValidator(r):O,this._onChange?.()}}validate(t){return this._validator(t)}registerOnValidatorChange(t){this._onChange=t}enabled(t){return t!=null}static ɵfac=function(r){return new(r||n)};static ɵdir=xr({type:n,features:[_r]})}return n})();var ut={provide:Ae,useExisting:hs(()=>xe),multi:!0};var xe=(()=>{class n extends lt{required;inputName=`required`;normalizeInput=ci;createValidator=t=>be;enabled(t){return t}static ɵfac=(()=>{let t;return function(i){return(t||(t=hg(n)))(i||n)}})();static ɵdir=xr({type:n,selectors:[[``,`required`,``,`formControlName`,``,3,`type`,`checkbox`],[``,`required`,``,`formControl`,``,3,`type`,`checkbox`],[``,`required`,``,`ngModel`,``,3,`type`,`checkbox`]],hostVars:1,hostBindings:function(r,i){r&2&&Ar(`required`,i._enabled?``:null)},inputs:{required:`required`},standalone:!1,features:[sC([ut]),Wm]})}return n})();var dt=new E(``);var Te=new E(``,{factory:()=>K});var K=`always`;function ct(n,e){return[...e.path,n]}function ge(n,e,t=K){pt(n,e),e.valueAccessor.writeValue(n.value),(n.disabled||t===`always`)&&e.valueAccessor.setDisabledState?.(n.disabled),ft(n,e),mt(n,e),gt(n,e),ht(n,e)}function me(n,e){n.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(e)})}function ht(n,e){if(e.valueAccessor.setDisabledState){let t=r=>{e.valueAccessor.setDisabledState(r)};n.registerOnDisabledChange(t),e._registerOnDestroy(()=>{n._unregisterOnDisabledChange(t)})}}function pt(n,e){let t=et(n);e.validator!==null?n.setValidators(he(t,e.validator)):typeof t==`function`&&n.setValidators([t]);let r=tt(n);e.asyncValidator!==null?n.setAsyncValidators(he(r,e.asyncValidator)):typeof r==`function`&&n.setAsyncValidators([r]);let i=()=>n.updateValueAndValidity();me(e._rawValidators,i),me(e._rawAsyncValidators,i)}function ft(n,e){e.valueAccessor.registerOnChange(t=>{n._pendingValue=t,n._pendingChange=!0,n._pendingDirty=!0,n.updateOn===`change`&&Pe(n,e)})}function gt(n,e){e.valueAccessor.registerOnTouched(()=>{n._pendingTouched=!0,n.updateOn===`blur`&&n._pendingChange&&Pe(n,e),n.updateOn!==`submit`&&n.markAsTouched()})}function Pe(n,e){n._pendingDirty&&n.markAsDirty(),n.setValue(n._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(n._pendingValue),n._pendingChange=!1}function mt(n,e){let t=(r,i)=>{e.valueAccessor.writeValue(r),i&&e.viewToModelUpdate(r)};n.registerOnChange(t),e._registerOnDestroy(()=>{n._unregisterOnChange(t)})}function yt(n,e){if(!Object.hasOwn(n,`model`))return!1;let t=n.model;return t.isFirstChange()?!0:!Object.is(e,t.currentValue)}function vt(n){return Object.getPrototypeOf(n.constructor)===Le}function _t(n,e){if(!e)return null;let t,r,i;return e.forEach(o=>{o.constructor===De?t=o:vt(o)?r=o:i=o}),i||r||t||null}var Ct={provide:dt,useFactory:()=>{let n=p$1(y,{self:!0});return{setParseErrors:e=>{n.setParseErrorSource(e)},set onReset(e){n.onReset=e}}}};var y=class extends R{_parent=null;name=null;valueAccessor=null;isCustomControlBased=!1;userOnReset;resetSubscription;set onReset(e){this.userOnReset=e,this.resetSubscription?.unsubscribe(),this.resetSubscription=void 0,this.control&&(this.resetSubscription=this.control.events.subscribe(t=>{t instanceof b&&this.control&&this.userOnReset?.(this.control.value)}),this.subscription?.add(this.resetSubscription))}isNativeFormElement=!1;rawValueAccessors;_selectedValueAccessor=null;get selectedValueAccessor(){return this._selectedValueAccessor??=_t(this,this.rawValueAccessors)}parseErrorsValidator=null;renderer;injector;requiredValidatorViaDi;subscription;customControlBindings=null;constructor(e,t,r){super(),this.injector=e,this.renderer=t,this.rawValueAccessors=r,this.injector?.get(Ie$1)?.onDestroy(()=>{this.removeParseErrorsValidator(this.control),this.subscription?.unsubscribe()})}setupCustomControl(){this.subscription?.unsubscribe();let e=this.injector?.get(ai);if(!this.control||!e)return;let t=e.markForCheck.bind(e);this.subscription=new ue,this.subscription.add(this.control.valueChanges.subscribe(t)),this.subscription.add(this.control.statusChanges.subscribe(t)),this.resetSubscription?.unsubscribe(),this.resetSubscription=void 0,this.userOnReset&&(this.resetSubscription=this.control.events.subscribe(r=>{r instanceof b&&this.control&&this.userOnReset?.(this.control.value)}),this.subscription.add(this.resetSubscription)),this.parseErrorsValidator&&this.control.addValidators(this.parseErrorsValidator)}ngControlCreate(e){!e.nativeElement.hasAttribute?.(`ngNoCva`)&&(this.rawValueAccessors&&this.rawValueAccessors.length>0||this.valueAccessor!==null)||!e.customControl||(this.isCustomControlBased=!0,e.listenToCustomControlModel(i=>{this.control?.markAsDirty(),this.control?.setValue(i,{emitModelToViewChange:!1}),this.viewToModelUpdate(i)}),e.listenToCustomControlOutput(`touch`,()=>{this.control?.markAsTouched()}),this.customControlBindings={},this.isNativeFormElement=st(e.nativeElement),this.requiredValidatorViaDi=this._rawValidators.find(i=>i instanceof xe))}ngControlUpdate(e,t){if(!this.isCustomControlBased)return;let r=this.control,i=this.customControlBindings;Object.is(i.value,r.value)||(i.value=r.value,e.setCustomControlModelInput(r.value)),this.bindControlProperty(e,i,`touched`,r.touched),this.bindControlProperty(e,i,`dirty`,r.dirty),this.bindControlProperty(e,i,`valid`,r.valid),this.bindControlProperty(e,i,`invalid`,r.invalid),this.bindControlProperty(e,i,`pending`,r.pending),this.bindControlProperty(e,i,`disabled`,r.disabled),this.shouldBindRequired&&this.bindControlProperty(e,i,`required`,this.isRequired);let o=r.errors;if(i.errors!==o){i.errors=o;let l=this._convertErrors(o);e.setInputOnDirectives(`errors`,l)}}get isRequired(){return(this.requiredValidatorViaDi?._enabled||this.control?._hasRequired())??!1}get shouldBindRequired(){return!0}bindControlProperty(e,t,r,i){if(t[r]===i)return;t[r]=i;let o=e.setInputOnDirectives(r,i);this.isNativeFormElement&&!o&&(r===`disabled`||r===`required`)&&this.renderer&&at(this.renderer,e.nativeElement,r,i)}_convertErrors(e){if(e===null)return[];let t=this.control;return Object.entries(e).map(([r,i])=>new z({context:i,kind:r,control:t}))}setParseErrorSource(e){if(e===void 0)return;let t=null,r=tn(()=>{let i=e();return i.length===0?null:i.reduce((o,l)=>(o[l.kind]=l,o),{})});this.parseErrorsValidator=(()=>t).bind(this),ko(()=>{t=r(),this.control?.updateValueAndValidity({emitEvent:!1})},{injector:this.injector})}removeParseErrorsValidator(e){this.parseErrorsValidator&&(e?.removeValidators(this.parseErrorsValidator),e?.updateValueAndValidity({emitEvent:!1}))}};var Y=class{_cd;constructor(e){this._cd=e}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}};var Yt=(()=>{class n extends Y{constructor(t){super(t)}static ɵfac=function(r){return new(r||n)(Se$1(y,2))};static ɵdir=xr({type:n,selectors:[[``,`formControlName`,``],[``,`ngModel`,``],[``,`formControl`,``]],hostVars:14,hostBindings:function(r,i){r&2&&ey(`ng-untouched`,i.isUntouched)(`ng-touched`,i.isTouched)(`ng-pristine`,i.isPristine)(`ng-dirty`,i.isDirty)(`ng-valid`,i.isValid)(`ng-invalid`,i.isInvalid)(`ng-pending`,i.isPending)},standalone:!1,features:[Wm]})}return n})();function ye(n,e){let t=n.indexOf(e);t>-1&&n.splice(t,1)}function ve(n){return typeof n==`object`&&n!==null&&Object.keys(n).length===2&&`value`in n&&`disabled`in n}var Vt=class extends W{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(e=null,t,r){super(nt(t),it(r,t)),this._applyFormState(e),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),T(t)&&(t.nonNullable||t.initialValueIsDefault)&&(ve(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,t={}){F$1(()=>{this.value=this._pendingValue=e,this._onChange.length&&t.emitModelToViewChange!==!1&&this._onChange.forEach(r=>r(this.value,t.emitViewToModelChange!==!1)),this.updateValueAndValidity(t)})}patchValue(e,t={}){this.setValue(e,t)}reset(e=this.defaultValue,t={}){this._applyFormState(e),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),t.overwriteDefaultValue&&(this.defaultValue=this.value),this._pendingChange=!1,t?.emitEvent!==!1&&this._events.next(new b(this))}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){ye(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){ye(this._onDisabledChange,e)}_forEachChild(e){}_syncPendingControls(){return this.updateOn===`submit`&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(e){ve(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e}};var Dt={provide:y,useExisting:hs(()=>At)};var _e=Promise.resolve();var At=(()=>{class n extends y{_changeDetectorRef;callSetDisabledState;control=new Vt;static ngAcceptInputType_isDisabled;_registered=!1;_ngModelInjector;viewModel;name=``;isDisabled;model;options;update=new Ee$1;constructor(t,r,i,o,l,je,Ge,ke){super(Ge,ke,o),this._changeDetectorRef=l,this.callSetDisabledState=je,this._parent=t,this._setValidators(r),this._setAsyncValidators(i)}ngOnChanges(t){if(this._registered,this._checkForErrors(),!this._registered||`name`in t){if(this._registered&&(this._checkName(),this.formDirective)){let r=t.name.previousValue;this.formDirective.removeControl({name:r,path:this._getPath(r)})}this._setUpControl()}`isDisabled`in t&&this._updateDisabled(t),yt(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective?.removeControl(this)}ɵngControlCreate(t){super.ngControlCreate(t)}ɵngControlUpdate(t){super.ngControlUpdate(t,!1)}get shouldBindRequired(){return!1}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){this.isCustomControlBased?this.setupCustomControl():(this.valueAccessor??=this.selectedValueAccessor,ge(this.control,this,this.callSetDisabledState)),this.control.updateValueAndValidity({emitEvent:!1})}_setupWithForm(t){this.isCustomControlBased?this.setupCustomControl():(this.valueAccessor??=this.selectedValueAccessor,ge(this.control,this,t))}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(t){_e.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(t){let r=t.isDisabled.currentValue,i=r!==0&&ci(r);_e.then(()=>{i&&!this.control.disabled?this.control.disable():!i&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(t){return this._parent?ct(t,this._parent):[t]}static ɵfac=function(r){return new(r||n)(Se$1(q,9),Se$1(Ae,10),Se$1($e,10),Se$1(Ve,10),Se$1(ai,8),Se$1(Te,8),Se$1(Re$1,8),Se$1(jn,8))};static ɵdir=xr({type:n,selectors:[[``,`ngModel`,``,3,`formControlName`,``,3,`formControl`,``]],inputs:{name:`name`,isDisabled:[0,`disabled`,`isDisabled`],model:[0,`ngModel`,`model`],options:[0,`ngModelOptions`,`options`]},outputs:{update:`ngModelChange`},exportAs:[`ngModel`],standalone:!1,features:[sC([Dt,Ct]),Wm,_r,tS(null)]})}return n})();var bt=(()=>{class n{static ɵfac=function(r){return new(r||n)};static ɵmod=Ca({type:n});static ɵinj=mo({})}return n})();var Zt=(()=>{class n{static withConfig(t){return{ngModule:n,providers:[{provide:Te,useValue:t.callSetDisabledState??K}]}}static ɵfac=function(r){return new(r||n)};static ɵmod=Ca({type:n});static ɵinj=mo({imports:[bt]})}return n})();export{Zt as i,De as n,Yt as r,At as t};
@@ -1 +1 @@
1
- import{$t as wd,Et as ni,F as Qm,Ft as pa,Jt as uE,K as ZS,Nt as pC,O as Ma,Ot as ny,V as Td,_ as IS,f as ES,i as Ar,l as Dc,nt as dE,ot as fC,xt as mD}from"./chunk-zZVj9gH0.js";import{t as T}from"./chunk-YAMUupB7.js";var S=(i,n)=>n.id;var x=(i,n)=>n.route;function N(i,n){if(i&1&&(pa(0,`a`,3),Ma(1,`ui-icon`,5),ZS(2),fC(3,`t`),wd()),i&2){let e=n.$implicit;Qm(`routerLink`,`/guide`)(`fragment`,e.id),mD(),Qm(`name`,e.icon)(`size`,14),mD(),Td(` `,pC(3,5,e.titleKey),` `)}}function P(i,n){if(i&1&&(pa(0,`a`,8),ZS(1),fC(2,`t`),Ma(3,`ui-icon`,9),wd()),i&2){let e=n.$implicit;Qm(`routerLink`,e.route),mD(),Td(` `,pC(2,3,e.labelKey),` `),mD(2),Qm(`size`,13)}}function C(i,n){if(i&1&&(pa(0,`section`,4)(1,`h2`),Ma(2,`ui-icon`,5),ZS(3),fC(4,`t`),wd(),pa(5,`p`,6),ZS(6),fC(7,`t`),wd(),pa(8,`p`,7),ES(9,P,4,5,`a`,8,x),wd()()),i&2){let e=n.$implicit;Qm(`id`,e.id),mD(2),Qm(`name`,e.icon)(`size`,17),mD(),Td(` `,pC(4,5,e.titleKey),` `),mD(3),ny(pC(7,7,e.bodyKey)),mD(3),IS(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=ni({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&&(Ma(0,`ui-page-header`,0),fC(1,`t`),fC(2,`t`),pa(3,`p`,1),ZS(4),fC(5,`t`),wd(),pa(6,`nav`,2),fC(7,`t`),ES(8,N,4,7,`a`,3,S),wd(),ES(10,C,11,9,`section`,4,S)),e&2&&(Qm(`title`,pC(1,4,`guide.title`))(`subtitle`,pC(2,6,`guide.subtitle`)),mD(4),ny(pC(5,8,`guide.intro`)),mD(2),Ar(`aria-label`,pC(7,10,`guide.toc`)),mD(2),IS(m.sections),mD(2),IS(m.sections))},dependencies:[Dc,T,dE,uE],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};
1
+ import{$t as wd,Et as ni,F as Qm,Ft as pa,Jt as uE,K as ZS,Nt as pC,O as Ma,Ot as ny,V as Td,_ as IS,f as ES,i as Ar,l as Dc,nt as dE,ot as fC,xt as mD}from"./chunk-CV7TSqiz.js";import{t as T}from"./chunk-yM6DMc_W.js";var S=(i,n)=>n.id;var x=(i,n)=>n.route;function N(i,n){if(i&1&&(pa(0,`a`,3),Ma(1,`ui-icon`,5),ZS(2),fC(3,`t`),wd()),i&2){let e=n.$implicit;Qm(`routerLink`,`/guide`)(`fragment`,e.id),mD(),Qm(`name`,e.icon)(`size`,14),mD(),Td(` `,pC(3,5,e.titleKey),` `)}}function P(i,n){if(i&1&&(pa(0,`a`,8),ZS(1),fC(2,`t`),Ma(3,`ui-icon`,9),wd()),i&2){let e=n.$implicit;Qm(`routerLink`,e.route),mD(),Td(` `,pC(2,3,e.labelKey),` `),mD(2),Qm(`size`,13)}}function C(i,n){if(i&1&&(pa(0,`section`,4)(1,`h2`),Ma(2,`ui-icon`,5),ZS(3),fC(4,`t`),wd(),pa(5,`p`,6),ZS(6),fC(7,`t`),wd(),pa(8,`p`,7),ES(9,P,4,5,`a`,8,x),wd()()),i&2){let e=n.$implicit;Qm(`id`,e.id),mD(2),Qm(`name`,e.icon)(`size`,17),mD(),Td(` `,pC(4,5,e.titleKey),` `),mD(3),ny(pC(7,7,e.bodyKey)),mD(3),IS(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=ni({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&&(Ma(0,`ui-page-header`,0),fC(1,`t`),fC(2,`t`),pa(3,`p`,1),ZS(4),fC(5,`t`),wd(),pa(6,`nav`,2),fC(7,`t`),ES(8,N,4,7,`a`,3,S),wd(),ES(10,C,11,9,`section`,4,S)),e&2&&(Qm(`title`,pC(1,4,`guide.title`))(`subtitle`,pC(2,6,`guide.subtitle`)),mD(4),ny(pC(5,8,`guide.intro`)),mD(2),Ar(`aria-label`,pC(7,10,`guide.toc`)),mD(2),IS(m.sections),mD(2),IS(m.sections))},dependencies:[Dc,T,dE,uE],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};
@@ -1 +1 @@
1
- import{i as m,r as l}from"./chunk-BYYLUO5t.js";import{$t as wd,Bt as sE,Ct as mS,D as MS,Et as ni,F as Qm,Ft as pa,H as UU,Ht as sy,Jt as uE,K as ZS,Kt as tn,L as Ra,Lt as rn,Mt as p,Nt as pC,O as Ma,Ot as ny,Pt as pS,Q as ay,Rt as ry,St as mE,Ut as tC,V as Td,X as aC,Xt as vS,_ as IS,_t as ko,a as Bh,et as cC,f as ES,ht as k,i as Ar,l as Dc,n as AS,nn as yS,nt as dE,o as CS,ot as fC,r as Aa,rn as zh,x as Jm,xt as mD,y as Ie$1,yt as lC}from"./chunk-zZVj9gH0.js";import{i as n,r as g,t as g$1}from"./main-CCFYCU3J.js";import{a as l$1}from"./chunk-C5VOb7zX.js";import{t as _}from"./chunk-D2euRURa.js";import{t as D}from"./chunk-BDNGRBqK.js";import{n as k$1,t as I}from"./chunk-C4JWE0XB.js";import{t as T}from"./chunk-YAMUupB7.js";import{t as h}from"./chunk-BCvhFxiQ.js";import{c as x,n as F,u as e}from"./chunk-C8bgMzTS.js";import{n as H,o as x$1,t as E}from"./chunk-Wd_5yY1t.js";var z=`__undeclared__`;var Se=t=>t.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();function M(t,n=new Set){return E(t,n)}function ke(t,n,e=new Set){let l=Se(n.query);return t.filter(r=>{if(n.domain!==null&&!r.domains.includes(n.domain)||n.skill!==null&&!r.skills.includes(n.skill)||n.host!==null&&!r.hosts.includes(n.host))return!1;if(n.forge!==null){let T=M(r,e);if(n.forge===z?T!==null:T!==n.forge)return!1}return l?[r.id,r.name,r.role,r.description,r.authority??``,...r.domains,...r.skills,...r.hosts].map(Se).join(` `).includes(l):!0})}function L(t,n){let e=new Set;for(let l of t)for(let r of n(l))e.add(r);return[...e].sort((l,r)=>l.localeCompare(r))}var Ee=t=>L(t,n=>n.domains);var Pe=t=>L(t,n=>n.skills);var we=t=>L(t,n=>n.hosts);function Ie(t,n=new Set){let e=new Set,l=!1;for(let r of t){let m=M(r,n);m?e.add(m):l=!0}return{declared:[...e].sort((r,m)=>r.localeCompare(m)),hasUndeclared:l}}var A=t=>({text:t&&t.trim()?t:null,absent:!(t&&t.trim())});var B=t=>({text:t.length?t.join(`, `):null,absent:t.length===0});function Ne(t,n,e=new Set){return[{key:`table.id`,va:A(t.id),vb:A(n.id)},{key:`agents.role`,va:A(t.role),vb:A(n.role)},{key:`agents.responsibility`,va:A(t.description),vb:A(n.description)},{key:`agents.authority`,va:A(t.authority),vb:A(n.authority)},{key:`agents.origin`,va:A(M(t,e)),vb:A(M(n,e))},{key:`agents.domains`,va:B(t.domains),vb:B(n.domains)},{key:`agents.skills`,va:B(t.skills),vb:B(n.skills)},{key:`agents.compatibleHosts`,va:B(t.hosts),vb:B(n.hosts)},{key:`skills.state`,va:A(t.state),vb:A(n.state)}].map(({key:r,va:m,vb:T})=>({key:r,a:m,b:T,differ:!m.absent&&!T.absent&&m.text!==T.text}))}function Ae(t,n){let e=P=>P.startsWith(`agent:`)&&n.has(P.slice(6)),l$2=new Set,r=t.edges.filter(P=>!e(P.source)&&!e(P.target)?!1:(l$2.add(P.source),l$2.add(P.target),!0)),m$1=t.nodes.filter(P=>P.kind===`agent`?n.has(P.id.slice(6)):l$2.has(P.id)),T=Object.fromEntries(x$1.map(P=>[P,0]));for(let P of m$1)T[P.kind]+=1;return m(l({},t),{nodes:m$1,edges:r,counts:T})}var Be=[`canvasEl`];var Oe=(t,n)=>[t,n];var Fe=()=>[`/skills`];var De=t=>({q:t});var Me=()=>[`/hosts`];var G=(t,n)=>n.id;var Ve=(t,n)=>n.key;function Re(t,n){if(t&1){let e=CS();pa(0,`button`,9),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS();return zh(m.setMode(r))}),ZS(1),fC(2,`t`),wd()}if(t&2){let e=n.$implicit,l=MS();Ar(`data-view`,e)(`data-tone`,l.mode()===e?`accent`:null)(`aria-pressed`,l.mode()===e),mD(),Td(` `,pC(2,4,`agents.view.`+e),` `)}}function $e(t,n){if(t&1){let e=CS();pa(0,`ui-error`,10),Ra(`retry`,function(){Bh(e);let r=MS();return zh(r.load())}),wd()}t&2&&Qm(`error`,n)}function qe(t,n){t&1&&(pa(0,`section`,7),fC(1,`t`),Ma(2,`ui-skeleton`,11),wd()),t&2&&(Ar(`aria-label`,pC(1,2,`state.loading`)),mD(2),Qm(`lines`,3))}function ze(t,n){if(t&1){let e=CS();pa(0,`button`,9),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(2);return zh(m.toggleDomain(r))}),ZS(1),wd()}if(t&2){let e=n.$implicit,l=MS(2);Ar(`data-tone`,l.domain()===e?`accent`:null)(`aria-pressed`,l.domain()===e),mD(),Td(` `,e,` `)}}function Le(t,n){if(t&1&&(pa(0,`option`,24),ZS(1),wd()),t&2){let e=n.$implicit,l=MS(3);Qm(`value`,e)(`selected`,l.skill()===e),mD(),ny(e)}}function Ge(t,n){if(t&1){let e=CS();pa(0,`select`,22),fC(1,`t`),Ra(`change`,function(r){Bh(e);let m=MS(2);return zh(m.onSkill(r))}),pa(2,`option`,23),ZS(3),fC(4,`t`),fC(5,`t`),wd(),ES(6,Le,2,3,`option`,24,vS),wd()}if(t&2){let e=MS(2);Qm(`value`,e.skill()??``),Ar(`aria-label`,pC(1,4,`agents.skills`)),mD(3),ry(``,pC(4,6,`agents.skills`),`: `,pC(5,8,`state.all`)),mD(3),IS(e.skillOpts())}}function He(t,n){if(t&1&&(pa(0,`option`,24),ZS(1),wd()),t&2){let e=n.$implicit,l=MS(3);Qm(`value`,e)(`selected`,l.host()===e),mD(),ny(e)}}function je(t,n){if(t&1){let e=CS();pa(0,`select`,25),fC(1,`t`),Ra(`change`,function(r){Bh(e);let m=MS(2);return zh(m.onHost(r))}),pa(2,`option`,23),ZS(3),fC(4,`t`),fC(5,`t`),wd(),ES(6,He,2,3,`option`,24,vS),wd()}if(t&2){let e=MS(2);Qm(`value`,e.host()??``),Ar(`aria-label`,pC(1,4,`agents.compatibleHosts`)),mD(3),ry(``,pC(4,6,`agents.compatibleHosts`),`: `,pC(5,8,`state.all`)),mD(3),IS(e.hostOpts())}}function Ke(t,n){if(t&1&&(pa(0,`option`,24),ZS(1),wd()),t&2){let e=n.$implicit,l=MS(3);Qm(`value`,e)(`selected`,l.forge()===e),mD(),ny(e)}}function Ue(t,n){if(t&1&&(pa(0,`option`,24),ZS(1),fC(2,`t`),wd()),t&2){let e=MS(3);Qm(`value`,e.undeclared)(`selected`,e.forge()===e.undeclared),mD(),Td(` `,pC(2,3,`agents.undeclared`),` `)}}function We(t,n){if(t&1){let e=CS();pa(0,`select`,26),fC(1,`t`),Ra(`change`,function(r){Bh(e);let m=MS(2);return zh(m.onForge(r))}),pa(2,`option`,23),ZS(3),fC(4,`t`),fC(5,`t`),wd(),ES(6,Ke,2,3,`option`,24,vS),pS(8,Ue,3,5,`option`,24),wd()}if(t&2){let e=MS(2);Qm(`value`,e.forge()??``),Ar(`aria-label`,pC(1,5,`agents.declaredForge`)),mD(3),ry(``,pC(4,7,`agents.declaredForge`),`: `,pC(5,9,`state.all`)),mD(3),IS(e.forgeOpts().declared),mD(2),mS(e.forgeOpts().hasUndeclared?8:-1)}}function Qe(t,n){if(t&1){let e=CS();pa(0,`span`,28),ZS(1),pa(2,`button`,31),fC(3,`t`),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(3);return zh(m.toggleCompare(r))}),ZS(4,` × `),wd()()}if(t&2){let e=n.$implicit,l=MS(3);mD(),Td(` `,l.labelFor(e),` `),mD(),Ar(`aria-label`,pC(3,2,`agents.compare.remove`))}}function Ye(t,n){t&1&&(pa(0,`span`,29),ZS(1),fC(2,`t`),wd()),t&2&&(mD(),ny(pC(2,1,`agents.compare.pick`)))}function Je(t,n){if(t&1){let e=CS();pa(0,`section`,16)(1,`span`,27),ZS(2),fC(3,`t`),wd(),ES(4,Qe,5,4,`span`,28,vS),pS(6,Ye,3,3,`span`,29),pa(7,`button`,30),Ra(`click`,function(){Bh(e);let r=MS(2);return zh(r.compareIds.set([]))}),ZS(8),fC(9,`t`),wd()()}if(t&2){let e=MS(2);mD(2),ny(pC(3,3,`agents.compare.title`)),mD(2),IS(e.compareIds()),mD(2),mS(e.compareIds().length<2?6:-1),mD(2),Td(` `,pC(9,5,`agents.compare.clear`),` `)}}function Xe(t,n){if(t&1&&(pa(0,`th`,38)(1,`code`),ZS(2),wd()()),t&2){let e=n.$implicit;mD(2),ny(e.id)}}function Ze(t,n){t&1&&(pa(0,`span`,40),ZS(1),fC(2,`t`),wd()),t&2&&(mD(),ny(pC(2,1,`agents.compare.notDeclared`)))}function et(t,n){if(t&1&&ZS(0),t&2){let e=MS().$implicit;Td(` `,e.text,` `)}}function tt(t,n){if(t&1&&(pa(0,`td`),pS(1,Ze,3,3,`span`,40)(2,et,1,1),wd()),t&2){let e=n.$implicit;mD(),mS(e.absent?1:2)}}function nt(t,n){if(t&1&&(pa(0,`tr`)(1,`th`,39),ZS(2),fC(3,`t`),wd(),ES(4,tt,3,1,`td`,null,yS),wd()),t&2){let e=n.$implicit;Ar(`data-differ`,e.differ||null),mD(2),ny(pC(3,2,e.key)),mD(2),IS(lC(4,Oe,e.a,e.b))}}function it(t,n){if(t&1){let e=CS();pa(0,`section`,17)(1,`header`,32)(2,`h2`),Ma(3,`ui-icon`,33),ZS(4),fC(5,`t`),wd(),pa(6,`button`,34),fC(7,`t`),Ra(`click`,function(){Bh(e);let r=MS(2);return zh(r.compareIds.set([]))}),Ma(8,`ui-icon`,35),wd()(),pa(9,`div`,36)(10,`table`,37)(11,`thead`)(12,`tr`)(13,`th`,38),ZS(14),fC(15,`t`),wd(),ES(16,Xe,3,1,`th`,38,G),wd()(),pa(18,`tbody`),ES(19,nt,6,7,`tr`,null,Ve),wd()()()()}if(t&2){let e=MS(2);mD(3),Qm(`size`,15),mD(),ny(pC(5,5,`agents.compare.title`)),mD(2),Ar(`aria-label`,pC(7,7,`state.close`)),mD(2),Qm(`size`,14),mD(6),ny(pC(15,9,`agents.compare.field`)),mD(2),IS(e.comparePair()),mD(3),IS(n)}}function at(t,n){if(t&1&&(pa(0,`a`,50),ZS(1),wd()),t&2){let e=n.$implicit;Qm(`routerLink`,aC(3,Fe))(`queryParams`,cC(4,De,e)),mD(),ny(e)}}function ot(t,n){if(t&1&&(pa(0,`span`,46),ES(1,at,2,6,`a`,50,vS),wd()),t&2){let e=MS();mD(),IS(e.skills)}}function rt(t,n){t&1&&(ZS(0),fC(1,`t`)),t&2&&Td(` `,pC(1,1,`state.none`),` `)}function lt(t,n){if(t&1&&(ZS(0),pa(1,`code`),ZS(2),wd(),pa(3,`span`,51),ZS(4),fC(5,`t`),wd()),t&2){let e=n;Td(` `,e.forge_name,` `),mD(2),Td(`(`,e.forge_id,`)`),mD(2),ny(pC(5,3,`explorer.serving`))}}function dt(t,n){t&1&&Ma(0,`ui-state-badge`,47)}function st(t,n){t&1&&(pa(0,`code`),ZS(1),wd()),t&2&&(mD(),ny(n))}function ct(t,n){t&1&&(pa(0,`span`,40),ZS(1),fC(2,`t`),wd()),t&2&&(mD(),ny(pC(2,1,`agents.compare.notDeclared`)))}function pt(t,n){if(t&1&&(pa(0,`a`,52),ZS(1),wd()),t&2){let e=n.$implicit;Qm(`routerLink`,aC(3,Me))(`fragment`,`host-`+e),mD(),ny(e)}}function _t(t,n){if(t&1&&(pa(0,`span`,46),ES(1,pt,2,4,`a`,52,vS),wd()),t&2){let e=MS();mD(),IS(e.hosts)}}function mt(t,n){t&1&&Ma(0,`ui-state-badge`,47)}function gt(t,n){if(t&1){let e=CS();pa(0,`section`,18)(1,`header`,41)(2,`h2`),Ma(3,`ui-icon`,42),ZS(4),wd(),pa(5,`div`,43)(6,`button`,44),Ra(`click`,function(){let r=Bh(e),m=MS(2);return zh(m.toggleCompare(r.id))}),ZS(7),fC(8,`t`),wd(),pa(9,`button`,34),fC(10,`t`),Ra(`click`,function(){Bh(e);let r=MS(2);return zh(r.selected.set(null))}),Ma(11,`ui-icon`,35),wd()()(),pa(12,`dl`,45)(13,`div`)(14,`dt`),ZS(15),fC(16,`t`),wd(),pa(17,`dd`)(18,`code`),ZS(19),wd()()(),pa(20,`div`)(21,`dt`),ZS(22),fC(23,`t`),wd(),pa(24,`dd`),ZS(25),fC(26,`t`),wd()(),pa(27,`div`)(28,`dt`),ZS(29),fC(30,`t`),wd(),pa(31,`dd`),ZS(32),fC(33,`t`),wd()(),pa(34,`div`)(35,`dt`),ZS(36),fC(37,`t`),wd(),pa(38,`dd`),ZS(39),fC(40,`t`),wd()(),pa(41,`div`)(42,`dt`),ZS(43),fC(44,`t`),wd(),pa(45,`dd`),ZS(46),fC(47,`t`),wd()(),pa(48,`div`)(49,`dt`),ZS(50),fC(51,`t`),wd(),pa(52,`dd`),pS(53,ot,3,0,`span`,46)(54,rt,2,3),wd()(),pa(55,`div`)(56,`dt`),ZS(57),fC(58,`t`),wd(),pa(59,`dd`),pS(60,lt,6,5)(61,dt,1,0,`ui-state-badge`,47),wd()(),pa(62,`div`)(63,`dt`),ZS(64),fC(65,`t`),wd(),pa(66,`dd`),pS(67,st,2,1,`code`)(68,ct,3,3,`span`,40),wd()(),pa(69,`div`)(70,`dt`),ZS(71),fC(72,`t`),wd(),pa(73,`dd`),pS(74,_t,3,0,`span`,46)(75,mt,1,0,`ui-state-badge`,47),wd()(),pa(76,`div`)(77,`dt`),ZS(78),fC(79,`t`),wd(),pa(80,`dd`),Ma(81,`ui-state-badge`,48),wd()(),pa(82,`div`)(83,`dt`),ZS(84),fC(85,`t`),wd(),pa(86,`dd`,49),Ma(87,`ui-state-badge`,47),pa(88,`small`,29),ZS(89),fC(90,`t`),wd()()(),pa(91,`div`)(92,`dt`),ZS(93),fC(94,`t`),wd(),pa(95,`dd`,49),Ma(96,`ui-state-badge`,47),pa(97,`small`,29),ZS(98),fC(99,`t`),wd()()(),pa(100,`div`)(101,`dt`),ZS(102),fC(103,`t`),wd(),pa(104,`dd`,49),Ma(105,`ui-state-badge`,47),pa(106,`small`,29),ZS(107),fC(108,`t`),wd()()(),pa(109,`div`)(110,`dt`),ZS(111),fC(112,`t`),wd(),pa(113,`dd`,49),Ma(114,`ui-state-badge`,47),pa(115,`small`,29),ZS(116),fC(117,`t`),wd()()(),pa(118,`div`)(119,`dt`),ZS(120),fC(121,`t`),wd(),pa(122,`dd`)(123,`code`),ZS(124,`GET /api/v1/agents`),wd()()()()()}if(t&2){let e,l,r=n,m=MS(2);mD(3),Qm(`size`,15),mD(),ny(r.name||r.id),mD(2),Ar(`data-tone`,m.compareIds().includes(r.id)?`accent`:null)(`aria-pressed`,m.compareIds().includes(r.id)),mD(),Td(` `,pC(8,37,`agents.compare.add`),` `),mD(2),Ar(`aria-label`,pC(10,39,`state.close`)),mD(2),Qm(`size`,14),mD(4),ny(pC(16,41,`table.id`)),mD(4),ny(r.id),mD(3),ny(pC(23,43,`agents.role`)),mD(3),ny(r.role||pC(26,45,`state.absent`)),mD(4),ny(pC(30,47,`agents.responsibility`)),mD(3),ny(r.description||pC(33,49,`state.absent`)),mD(4),ny(pC(37,51,`agents.authority`)),mD(3),ny(r.authority??pC(40,53,`state.absent`)),mD(4),ny(pC(44,55,`agents.domains`)),mD(3),ny(r.domains.length?r.domains.join(`, `):pC(47,57,`state.none`)),mD(4),ny(pC(51,59,`agents.skills`)),mD(3),mS(r.skills.length?53:54),mD(4),ny(pC(58,61,`agents.origin`)),mD(3),mS((e=m.store.descriptor())?60:61,e),mD(4),ny(pC(65,63,`agents.declaredForge`)),mD(3),mS((l=m.declaredForge(r,m.knownForges()))?67:68,l),mD(4),ny(pC(72,65,`agents.compatibleHosts`)),mD(3),mS(r.hosts.length?74:75),mD(4),ny(pC(79,67,`skills.state`)),mD(3),Qm(`state`,r.state===`available`?`supported`:`unverified`)(`labelOverride`,r.state),mD(3),ny(pC(85,69,`agents.tools`)),mD(5),ny(pC(90,71,`agents.notExposed`)),mD(4),ny(pC(94,73,`agents.permissions`)),mD(5),ny(pC(99,75,`agents.notExposed`)),mD(4),ny(pC(103,77,`agents.deps`)),mD(5),ny(pC(108,79,`agents.notExposed`)),mD(4),ny(pC(112,81,`settings.version`)),mD(5),ny(pC(117,83,`agents.notExposed`)),mD(4),ny(pC(121,85,`agents.evidence`))}}function ut(t,n){if(t&1&&(pa(0,`p`,56)(1,`span`),ZS(2),fC(3,`t`),wd(),ZS(4),wd()),t&2){let e=MS().$implicit;mD(2),Td(``,pC(3,2,`agents.domains`),`:`),mD(2),Td(` `,e.domains.join(`, `),` `)}}function yt(t,n){if(t&1&&(pa(0,`p`,56)(1,`span`),ZS(2),fC(3,`t`),wd(),ZS(4),wd()),t&2){let e=MS().$implicit;mD(2),Td(``,pC(3,2,`agents.skills`),`:`),mD(2),Td(` `,e.skills.join(`, `),` `)}}function xt(t,n){if(t&1){let e=CS();pa(0,`article`,53)(1,`header`,54)(2,`h2`),Ma(3,`ui-icon`,42),ZS(4),wd(),Ma(5,`ui-state-badge`,48),wd(),pa(6,`p`,55),ZS(7),wd(),pa(8,`p`,29),ZS(9),wd(),pS(10,ut,5,4,`p`,56),pS(11,yt,5,4,`p`,56),pa(12,`div`,57)(13,`button`,44),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(3);return zh(m.toggleCompare(r.id))}),ZS(14),fC(15,`t`),wd(),pa(16,`button`,58),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(3);return zh(m.selected.set(r))}),ZS(17),fC(18,`t`),Ma(19,`ui-icon`,35),wd()()()}if(t&2){let e=n.$implicit,l=MS(3);mD(3),Qm(`size`,15),mD(),ny(e.name||e.id),mD(),Qm(`state`,e.state===`available`?`supported`:`unverified`)(`labelOverride`,e.state),mD(2),ny(e.role),mD(2),ny(e.description),mD(),mS(e.domains.length?10:-1),mD(),mS(e.skills.length?11:-1),mD(2),Ar(`data-tone`,l.compareIds().includes(e.id)?`accent`:null)(`aria-pressed`,l.compareIds().includes(e.id)),mD(),Td(` `,pC(15,13,`agents.compare.add`),` `),mD(3),Td(` `,pC(18,15,`agents.detail`),` `),mD(2),Qm(`size`,13)}}function ft(t,n){t&1&&(Ma(0,`ui-empty`,8),fC(1,`t`)),t&2&&Qm(`title`,pC(1,1,`agents.empty`))}function vt(t,n){if(t&1&&pS(0,ft,2,3,`ui-empty`,8),t&2){let e=MS(3);mS(e.loading()?-1:0)}}function Ct(t,n){if(t&1&&(pa(0,`section`,19),ES(1,xt,20,17,`article`,53,G,!1,vt,1,1),wd()),t&2){let e=MS(2);mD(),IS(e.filtered())}}function ht(t,n){if(t&1&&(pa(0,`a`,63),ZS(1),wd(),ZS(2)),t&2){let e=n.$implicit,l=n.$index,r=n.$count;Qm(`routerLink`,aC(4,Me))(`fragment`,`host-`+e),mD(),ny(e),mD(),Td(``,l===r-1?``:`, `,` `)}}function bt(t,n){if(t&1&&ES(0,ht,3,5,null,null,vS),t&2){let e=MS().$implicit;IS(e.hosts)}}function St(t,n){t&1&&(pa(0,`span`,40),ZS(1),fC(2,`t`),wd()),t&2&&(mD(),ny(pC(2,1,`agents.compare.notDeclared`)))}function kt(t,n){if(t&1){let e=CS();pa(0,`tr`)(1,`td`)(2,`strong`),ZS(3),wd(),Ma(4,`br`),pa(5,`code`,61),ZS(6),wd()(),pa(7,`td`),ZS(8),wd(),pa(9,`td`),ZS(10),wd(),pa(11,`td`),ZS(12),wd(),pa(13,`td`),pS(14,bt,2,0)(15,St,3,3,`span`,40),wd(),pa(16,`td`),Ma(17,`ui-state-badge`,48),wd(),pa(18,`td`,62)(19,`button`,44),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(3);return zh(m.toggleCompare(r.id))}),ZS(20),fC(21,`t`),wd(),pa(22,`button`,58),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(3);return zh(m.selected.set(r))}),ZS(23),fC(24,`t`),wd()()()}if(t&2){let e=n.$implicit,l=MS(3);mD(3),ny(e.name||e.id),mD(3),ny(e.id),mD(2),ny(e.role||`—`),mD(2),ny(e.domains.length?e.domains.join(`, `):`—`),mD(2),ny(e.skills.length?e.skills.join(`, `):`—`),mD(2),mS(e.hosts.length?14:15),mD(3),Qm(`state`,e.state===`available`?`supported`:`unverified`)(`labelOverride`,e.state),mD(2),Ar(`data-tone`,l.compareIds().includes(e.id)?`accent`:null)(`aria-pressed`,l.compareIds().includes(e.id)),mD(),Td(` `,pC(21,12,`agents.compare.add`),` `),mD(3),Td(` `,pC(24,14,`agents.detail`),` `)}}function Et(t,n){t&1&&(pa(0,`tr`)(1,`td`,64),ZS(2),fC(3,`t`),wd()()),t&2&&(mD(2),ny(pC(3,1,`agents.empty`)))}function Pt(t,n){if(t&1&&(pa(0,`section`,20)(1,`div`,36)(2,`table`,59)(3,`thead`)(4,`tr`)(5,`th`,38),ZS(6),fC(7,`t`),wd(),pa(8,`th`,38),ZS(9),fC(10,`t`),wd(),pa(11,`th`,38),ZS(12),fC(13,`t`),wd(),pa(14,`th`,38),ZS(15),fC(16,`t`),wd(),pa(17,`th`,38),ZS(18),fC(19,`t`),wd(),pa(20,`th`,38),ZS(21),fC(22,`t`),wd(),pa(23,`th`,38)(24,`span`,60),ZS(25),fC(26,`t`),wd()()()(),pa(27,`tbody`),ES(28,kt,25,16,`tr`,null,G,!1,Et,4,3,`tr`),wd()()()()),t&2){let e=MS(2);mD(6),ny(pC(7,8,`table.name`)),mD(3),ny(pC(10,10,`agents.role`)),mD(3),ny(pC(13,12,`agents.domains`)),mD(3),ny(pC(16,14,`agents.skills`)),mD(3),ny(pC(19,16,`agents.compatibleHosts`)),mD(3),ny(pC(22,18,`skills.state`)),mD(4),ny(pC(26,20,`table.actions`)),mD(3),IS(e.filtered())}}function wt(t,n){if(t&1){let e=CS();pa(0,`button`,9),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(4);return zh(m.setLayout(r))}),ZS(1),wd()}if(t&2){let e=n.$implicit,l=MS(4);Ar(`data-layout`,e)(`data-tone`,l.layoutName()===e?`accent`:null)(`aria-pressed`,l.layoutName()===e),mD(),Td(` `,e,` `)}}function It(t,n){if(t&1&&(pa(0,`li`),Ma(1,`span`,75),ZS(2),wd()),t&2){let e=n.$implicit,l=MS(4);Ar(`data-kind`,e),mD(),Aa(`background`,l.kindColor(e)),Ar(`data-shape`,l.kindShape(e)),mD(),Td(` `,e,` `)}}function Nt(t,n){if(t&1){let e=CS();pa(0,`div`,67),fC(1,`t`),pa(2,`span`,29),ZS(3),fC(4,`t`),wd(),ES(5,wt,2,4,`button`,3,vS),Ma(7,`span`,68),pa(8,`button`,69),Ra(`click`,function(){Bh(e);let r=MS(3);return zh(r.resetLayout())}),ZS(9),fC(10,`t`),wd(),pa(11,`button`,70),Ra(`click`,function(){Bh(e);let r=MS(3);return zh(r.fitCanvas())}),ZS(12),fC(13,`t`),wd(),pa(14,`button`,71),Ra(`click`,function(){Bh(e);let r=MS(3);return zh(r.exportPng())}),ZS(15,` PNG `),wd(),pa(16,`button`,72),Ra(`click`,function(){Bh(e);let r=MS(3);return zh(r.exportSvg())}),ZS(17,` SVG `),wd()(),Ma(18,`div`,73,0),fC(20,`t`),pa(21,`ul`,74),fC(22,`t`),ES(23,It,3,5,`li`,null,vS),wd()}if(t&2){let e=MS(3);Ar(`aria-label`,pC(1,6,`graph.canvas.tools`)),mD(3),ny(pC(4,8,`graph.canvas.layout`)),mD(2),IS(e.layouts),mD(4),Td(` `,pC(10,10,`graph.canvas.reset`),` `),mD(3),Td(` `,pC(13,12,`graph.canvas.fit`),` `),mD(6),Ar(`aria-label`,pC(20,14,`agents.graph.aria`)),mD(3),Ar(`aria-label`,pC(22,16,`graph.canvas.legend`)),mD(2),IS(e.graphKinds())}}function At(t,n){t&1&&(Ma(0,`ui-empty`,66),fC(1,`t`)),t&2&&Qm(`title`,pC(1,1,`agents.graph.empty`))}function Tt(t,n){if(t&1&&(pa(0,`section`,21)(1,`p`,65),ZS(2),fC(3,`t`),wd(),pS(4,Nt,25,18)(5,At,2,3,`ui-empty`,66),wd()),t&2){let e=MS(2);mD(2),ny(pC(3,2,`agents.graph.hint`)),mD(2),mS(e.subgraph().nodes.length?4:5)}}function Mt(t,n){if(t&1){let e=CS();pa(0,`ui-filter-bar`,12),ay(`queryChange`,function(r){Bh(e);let m=MS();return tC(m.query,r)||(m.query=r),zh(r)}),pa(1,`button`,9),Ra(`click`,function(){Bh(e);let r=MS();return zh(r.domain.set(null))}),ZS(2),fC(3,`t`),wd(),ES(4,ze,2,3,`button`,3,vS),pS(6,Ge,8,10,`select`,13),pS(7,je,8,10,`select`,14),pS(8,We,9,11,`select`,15),wd(),pS(9,Je,10,7,`section`,16),pS(10,it,21,11,`section`,17),pS(11,gt,125,87,`section`,18),pS(12,Ct,4,1,`section`,19),pS(13,Pt,31,22,`section`,20),pS(14,Tt,6,4,`section`,21)}if(t&2){let e,l,r=MS();sy(`query`,r.query),mD(),Ar(`data-tone`,r.domain()===null?`accent`:null)(`aria-pressed`,r.domain()===null),mD(),Td(` `,pC(3,13,`state.all`),` `),mD(2),IS(r.domainOpts()),mD(2),mS(r.skillOpts().length?6:-1),mD(),mS(r.hostOpts().length?7:-1),mD(),mS(r.forgeOpts().declared.length||r.forgeOpts().hasUndeclared?8:-1),mD(),mS(r.compareIds().length?9:-1),mD(),mS((e=r.compareRows())?10:-1,e),mD(),mS((l=r.selected())?11:-1,l),mD(),mS(r.mode()===`cards`?12:-1),mD(),mS(r.mode()===`table`?13:-1),mD(),mS(r.mode()===`graph`?14:-1)}}function Bt(t,n){t&1&&(Ma(0,`ui-empty`,8),fC(1,`t`)),t&2&&Qm(`title`,pC(1,1,`agents.none`))}var Te=class t{api=p(g);store=p(g$1);prefs=p(sE);destroyRef=p(Ie$1);q=rn(``);agents=k([]);error=k(null);query=k(``);domain=k(null);skill=k(null);host=k(null);forge=k(null);selected=k(null);loading=k(!0);modes=[`cards`,`table`,`graph`];mode=k(`cards`);undeclared=z;compareIds=k([]);skillsSrc=new l$1;layouts=e;layoutName=k(`cose`);canvasEl=UU(`canvasEl`);rendererReady=k(!1);renderer=null;mounting=null;knownForges=tn(()=>{let n=new Set,e=this.store.descriptor()?.forge_id;e&&n.add(e);for(let l of this.agents()){let r=M(l,n);r&&n.add(r)}return n});domainOpts=tn(()=>Ee(this.agents()));skillOpts=tn(()=>Pe(this.agents()));hostOpts=tn(()=>we(this.agents()));forgeOpts=tn(()=>Ie(this.agents(),this.knownForges()));filtered=tn(()=>ke(this.agents(),{query:this.query(),domain:this.domain(),skill:this.skill(),host:this.host(),forge:this.forge()},this.knownForges()));comparePair=tn(()=>{let n=new Map(this.agents().map(e=>[e.id,e]));return this.compareIds().map(e=>n.get(e)).filter(e=>e!==void 0).slice(0,2)});compareRows=tn(()=>{let n=this.comparePair();return n.length===2?Ne(n[0],n[1],this.knownForges()):null});fed=tn(()=>H({agents:this.agents(),skills:this.skillsSrc.data(),servingForge:this.store.descriptor()?.forge_id??null,availability:{agents:`loaded`,skills:this.skillsSrc.data()?`loaded`:this.skillsSrc.unavailable()?`unavailable`:`unverified`,bootstrap:this.store.descriptor()?`loaded`:`unverified`}}));subgraph=tn(()=>Ae(this.fed(),new Set(this.filtered().map(n=>n.id))));graphKinds=tn(()=>x$1.filter(n=>(this.subgraph().counts[n]??0)>0));declaredForge=M;constructor(){ko(()=>{let n=this.canvasEl()?.nativeElement??null;n&&!this.renderer&&this.mountCanvas(n),!n&&this.renderer&&this.destroyCanvas()}),ko(()=>{this.rendererReady(),this.renderer&&this.renderer.setData(x(this.subgraph()))}),ko(()=>{this.rendererReady();let n=this.renderer;if(!n)return;let e=this.selected();n.select(e?`agent:${e.id}`:null),n.highlight(new Set,new Set)}),ko(()=>this.prefs.setFilter(`agents`,this.query())),this.destroyRef.onDestroy(()=>this.destroyCanvas()),this.load()}ngOnInit(){let n=this.q();if(n)this.query.set(n);else{let e=this.prefs.filterFor(`agents`);e&&this.query.set(e)}}async load(){this.error.set(null),this.loading.set(!0);let n$1=this.skillsSrc.load(()=>this.api.skills());try{this.agents.set(await mE(this.api.agents()))}catch(e){this.error.set(e instanceof n?e:new n(0))}finally{this.loading.set(!1)}await n$1}setMode(n){this.mode.set(n)}toggleDomain(n){this.domain.set(this.domain()===n?null:n)}onSkill(n){let e=n.target.value;this.skill.set(e||null)}onHost(n){let e=n.target.value;this.host.set(e||null)}onForge(n){let e=n.target.value;this.forge.set(e||null)}labelFor(n){return this.agents().find(e=>e.id===n)?.name||n}toggleCompare(n){let e=this.compareIds();if(e.includes(n)){this.compareIds.set(e.filter(l=>l!==n));return}this.compareIds.set([...e,n].slice(-2))}canvasRenderer(){return this.renderer}async mountCanvas(n){if(!this.mounting){this.mounting=n;try{let{createCytoscapeRenderer:e}=await import(`./chunk-C6ri1BES.js`);if(this.canvasEl()?.nativeElement!==n||this.renderer)return;let l=document.documentElement.dataset.motion,m=e({animate:!(l===`reduced`||l!==`full`&&typeof matchMedia<`u`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches)});m.mount(n),m.onSelect(T=>this.onCanvasSelect(T)),this.renderer=m,this.rendererReady.set(!0)}finally{this.mounting=null}}}destroyCanvas(){this.renderer?.destroy(),this.renderer=null,this.rendererReady.set(!1)}onCanvasSelect(n){if(n?.type===`node`&&n.id.startsWith(`agent:`)){let e=n.id.slice(6);this.selected.set(this.agents().find(l=>l.id===e)??null)}else n===null&&this.selected.set(null)}setLayout(n){this.layoutName.set(n),this.renderer?.layout(n)}resetLayout(){this.renderer?.layout(this.layoutName())}fitCanvas(){this.renderer?.fit()}exportPng(){let n=this.renderer?.exportPng();n&&this.download(n,`forge-agents-graph.png`)}exportSvg(){let n=this.renderer?.exportSvg();n&&this.download(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(n)}`,`forge-agents-graph.svg`)}download(n,e){let l=document.createElement(`a`);l.href=n,l.download=e,l.click()}kindColor(n){return F(n).color}kindShape(n){return F(n).shape}static ɵfac=function(e){return new(e||t)};static ɵcmp=ni({type:t,selectors:[[`page-agents`]],viewQuery:function(e,l){e&1&&Jm(l.canvasEl,Be,5),e&2&&AS()},inputs:{q:[1,`q`]},decls:15,vars:16,consts:[[`canvasEl`,``],[`hintId`,`agent`,3,`title`,`subtitle`],[`role`,`group`,`data-toggle`,`view`,1,`view-toggle`],[`type`,`button`,1,`fg-pill`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`status`,1,`grid`],[`icon`,`agents`,3,`title`],[`type`,`button`,1,`fg-pill`,3,`click`],[3,`retry`,`error`],[`kind`,`card`,3,`lines`],[`placeholder`,`agents.search`,3,`queryChange`,`query`],[1,`input`,`sel`,3,`value`],[`data-filter`,`host`,1,`input`,`sel`,3,`value`],[`data-filter`,`forge`,1,`input`,`sel`,3,`value`],[`data-section`,`compare-tray`,`aria-live`,`polite`,1,`card`,`tray`],[`data-section`,`compare`,`aria-live`,`polite`,1,`card`,`cmp`],[`data-section`,`agent-detail`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[`data-section`,`cards`,1,`grid`],[`data-section`,`table`,1,`card`],[`data-section`,`graph`,1,`card`],[1,`input`,`sel`,3,`change`,`value`],[`value`,``],[3,`value`,`selected`],[`data-filter`,`host`,1,`input`,`sel`,3,`change`,`value`],[`data-filter`,`forge`,1,`input`,`sel`,3,`change`,`value`],[1,`tray__label`],[1,`tray__chip`],[1,`muted`],[1,`btn`,`btn--mini`,3,`click`],[`type`,`button`,1,`tray__x`,3,`click`],[1,`cmp__head`],[`name`,`diff`,3,`size`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[1,`table-wrap`],[1,`table`,`cmp__table`],[`scope`,`col`],[`scope`,`row`],[1,`undecl`],[1,`detail__head`],[`name`,`agents`,3,`size`],[1,`detail__actions`],[`data-action`,`compare`,1,`btn`,`btn--mini`,3,`click`],[1,`kv`],[1,`links`],[`state`,`UNVERIFIED`],[3,`state`,`labelOverride`],[1,`unv-cell`],[1,`chip-link`,3,`routerLink`,`queryParams`],[1,`chip`],[1,`chip-link`,3,`routerLink`,`fragment`],[`data-lift`,``,1,`card`],[1,`head`],[1,`role`],[1,`tags`],[1,`row`],[`data-action`,`detail`,1,`btn`,`btn--mini`,3,`click`],[1,`table`],[1,`sr-only`],[1,`row-id`],[1,`row-actions`],[1,`linklike`,3,`routerLink`,`fragment`],[`colspan`,`7`,1,`empty-cell`],[1,`muted`,`graph__hint`],[`icon`,`network`,3,`title`],[`role`,`toolbar`,1,`fed__toolbar`],[1,`toolbar-gap`],[`type`,`button`,`data-action`,`reset`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`fit`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`png`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`svg`,1,`fg-pill`,3,`click`],[`data-canvas`,`agents`,`role`,`application`,1,`fed__canvas`],[1,`fed__legend`],[1,`legend-dot`]],template:function(e,l){if(e&1&&(pa(0,`ui-page-header`,1),fC(1,`t`),fC(2,`t`),pa(3,`div`,2),fC(4,`t`),ES(5,Re,3,6,`button`,3,vS),wd(),pa(7,`button`,4),Ra(`click`,function(){return l.load()}),Ma(8,`ui-icon`,5),ZS(9),fC(10,`t`),wd()(),pS(11,$e,1,1,`ui-error`,6),pS(12,qe,3,4,`section`,7),pS(13,Mt,15,15)(14,Bt,2,3,`ui-empty`,8)),e&2){let r;Qm(`title`,pC(1,8,`agents.title`))(`subtitle`,pC(2,10,`agents.subtitle`)),mD(3),Ar(`aria-label`,pC(4,12,`agents.view.label`)),mD(2),IS(l.modes),mD(3),Qm(`size`,15),mD(),Td(` `,pC(10,14,`state.refresh`),` `),mD(2),mS((r=l.error())?11:-1,r),mD(),mS(l.loading()?12:-1),mD(),mS(l.agents().length?13:!l.error()&&!l.loading()?14:-1)}},dependencies:[Dc,T,I,_,D,dE,k$1,h,uE],styles:[`.grid[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-4);grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2)}h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.role[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);font-size:var(--%NS%font-sm);margin:4px 0}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);margin:0}.tags[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);margin:4px 0 0}.tags[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-weight:600}.sel[_ngcontent-%COMP%]{width:auto;min-width:12rem;padding-block:2px;font-size:var(--%NS%font-xs)}.row[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3);display:flex;justify-content:flex-end;gap:var(--%NS%space-2)}.btn--mini[_ngcontent-%COMP%]{padding:2px var(--%NS%space-2);font-size:var(--%NS%font-xs);gap:4px}.view-toggle[_ngcontent-%COMP%]{display:inline-flex;gap:var(--%NS%space-1);margin-right:var(--%NS%space-2)}.tray[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-4);padding-block:var(--%NS%space-2)}.tray__label[_ngcontent-%COMP%]{font-weight:650;font-size:var(--%NS%font-sm)}.tray__chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;font-size:var(--%NS%font-xs);font-weight:600;color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border-radius:var(--%NS%radius-pill);padding:2px 6px 2px 10px}.tray__x[_ngcontent-%COMP%]{border:0;background:none;color:inherit;font-size:var(--%NS%font-sm);line-height:1;cursor:pointer;padding:0 2px}.cmp[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);border-left:3px solid var(--%NS%info)}.cmp__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.cmp__table[_ngcontent-%COMP%] th[scope=row][_ngcontent-%COMP%]{text-align:left;font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted);white-space:nowrap}.cmp__table[_ngcontent-%COMP%] tr[data-differ][_ngcontent-%COMP%] td[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%info) 8%,transparent)}.undecl[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-style:italic;font-size:var(--%NS%font-xs)}.row-id[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.row-actions[_ngcontent-%COMP%]{white-space:nowrap;display:flex;gap:var(--%NS%space-1);justify-content:flex-end}.empty-cell[_ngcontent-%COMP%]{text-align:center;color:var(--%NS%fg-muted);padding:var(--%NS%space-4)!important}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.graph__hint[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-sm)}.fed__toolbar[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-2)}.toolbar-gap[_ngcontent-%COMP%]{flex:1}.fed__canvas[_ngcontent-%COMP%]{height:420px;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:var(--%NS%bg-elevated);overflow:hidden}.fed__canvas[_ngcontent-%COMP%] canvas[_ngcontent-%COMP%]{outline:none}.fed__legend[_ngcontent-%COMP%]{list-style:none;display:flex;flex-wrap:wrap;gap:var(--%NS%space-1) var(--%NS%space-3);padding:0;margin:var(--%NS%space-2) 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.fed__legend[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-1)}.legend-dot[_ngcontent-%COMP%]{width:10px;height:10px;display:inline-block;border-radius:3px;flex:none}.detail[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);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__actions[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.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}.unv-cell[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.links[_ngcontent-%COMP%]{display:inline-flex;flex-wrap:wrap;gap:4px}.chip[_ngcontent-%COMP%]{margin-left:4px}`]})};export{Te as AgentsPage};
1
+ import{i as m,r as l}from"./chunk-BYYLUO5t.js";import{$t as wd,Bt as sE,Ct as mS,D as MS,Et as ni,F as Qm,Ft as pa,H as UU,Ht as sy,Jt as uE,K as ZS,Kt as tn,L as Ra,Lt as rn,Mt as p,Nt as pC,O as Ma,Ot as ny,Pt as pS,Q as ay,Rt as ry,St as mE,Ut as tC,V as Td,X as aC,Xt as vS,_ as IS,_t as ko,a as Bh,et as cC,f as ES,ht as k,i as Ar,l as Dc,n as AS,nn as yS,nt as dE,o as CS,ot as fC,r as Aa,rn as zh,x as Jm,xt as mD,y as Ie$1,yt as lC}from"./chunk-CV7TSqiz.js";import{i as n,r as g,t as g$1}from"./main-YKFPUKID.js";import{c as x,n as F,u as e}from"./chunk-C8bgMzTS.js";import{t as h}from"./chunk-BpIbIo4H.js";import{n as H,o as x$1,t as E}from"./chunk-Wd_5yY1t.js";import{a as l$1}from"./chunk-C-R9EDEw.js";import{t as _}from"./chunk-C2Vik-mF.js";import{t as D}from"./chunk-CWCQmMmw.js";import{n as k$1,t as I}from"./chunk-CaHx1phd.js";import{t as T}from"./chunk-yM6DMc_W.js";var z=`__undeclared__`;var Se=t=>t.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();function M(t,n=new Set){return E(t,n)}function ke(t,n,e=new Set){let l=Se(n.query);return t.filter(r=>{if(n.domain!==null&&!r.domains.includes(n.domain)||n.skill!==null&&!r.skills.includes(n.skill)||n.host!==null&&!r.hosts.includes(n.host))return!1;if(n.forge!==null){let T=M(r,e);if(n.forge===z?T!==null:T!==n.forge)return!1}return l?[r.id,r.name,r.role,r.description,r.authority??``,...r.domains,...r.skills,...r.hosts].map(Se).join(` `).includes(l):!0})}function L(t,n){let e=new Set;for(let l of t)for(let r of n(l))e.add(r);return[...e].sort((l,r)=>l.localeCompare(r))}var Ee=t=>L(t,n=>n.domains);var Pe=t=>L(t,n=>n.skills);var we=t=>L(t,n=>n.hosts);function Ie(t,n=new Set){let e=new Set,l=!1;for(let r of t){let m=M(r,n);m?e.add(m):l=!0}return{declared:[...e].sort((r,m)=>r.localeCompare(m)),hasUndeclared:l}}var A=t=>({text:t&&t.trim()?t:null,absent:!(t&&t.trim())});var B=t=>({text:t.length?t.join(`, `):null,absent:t.length===0});function Ne(t,n,e=new Set){return[{key:`table.id`,va:A(t.id),vb:A(n.id)},{key:`agents.role`,va:A(t.role),vb:A(n.role)},{key:`agents.responsibility`,va:A(t.description),vb:A(n.description)},{key:`agents.authority`,va:A(t.authority),vb:A(n.authority)},{key:`agents.origin`,va:A(M(t,e)),vb:A(M(n,e))},{key:`agents.domains`,va:B(t.domains),vb:B(n.domains)},{key:`agents.skills`,va:B(t.skills),vb:B(n.skills)},{key:`agents.compatibleHosts`,va:B(t.hosts),vb:B(n.hosts)},{key:`skills.state`,va:A(t.state),vb:A(n.state)}].map(({key:r,va:m,vb:T})=>({key:r,a:m,b:T,differ:!m.absent&&!T.absent&&m.text!==T.text}))}function Ae(t,n){let e=P=>P.startsWith(`agent:`)&&n.has(P.slice(6)),l$2=new Set,r=t.edges.filter(P=>!e(P.source)&&!e(P.target)?!1:(l$2.add(P.source),l$2.add(P.target),!0)),m$1=t.nodes.filter(P=>P.kind===`agent`?n.has(P.id.slice(6)):l$2.has(P.id)),T=Object.fromEntries(x$1.map(P=>[P,0]));for(let P of m$1)T[P.kind]+=1;return m(l({},t),{nodes:m$1,edges:r,counts:T})}var Be=[`canvasEl`];var Oe=(t,n)=>[t,n];var Fe=()=>[`/skills`];var De=t=>({q:t});var Me=()=>[`/hosts`];var G=(t,n)=>n.id;var Ve=(t,n)=>n.key;function Re(t,n){if(t&1){let e=CS();pa(0,`button`,9),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS();return zh(m.setMode(r))}),ZS(1),fC(2,`t`),wd()}if(t&2){let e=n.$implicit,l=MS();Ar(`data-view`,e)(`data-tone`,l.mode()===e?`accent`:null)(`aria-pressed`,l.mode()===e),mD(),Td(` `,pC(2,4,`agents.view.`+e),` `)}}function $e(t,n){if(t&1){let e=CS();pa(0,`ui-error`,10),Ra(`retry`,function(){Bh(e);let r=MS();return zh(r.load())}),wd()}t&2&&Qm(`error`,n)}function qe(t,n){t&1&&(pa(0,`section`,7),fC(1,`t`),Ma(2,`ui-skeleton`,11),wd()),t&2&&(Ar(`aria-label`,pC(1,2,`state.loading`)),mD(2),Qm(`lines`,3))}function ze(t,n){if(t&1){let e=CS();pa(0,`button`,9),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(2);return zh(m.toggleDomain(r))}),ZS(1),wd()}if(t&2){let e=n.$implicit,l=MS(2);Ar(`data-tone`,l.domain()===e?`accent`:null)(`aria-pressed`,l.domain()===e),mD(),Td(` `,e,` `)}}function Le(t,n){if(t&1&&(pa(0,`option`,24),ZS(1),wd()),t&2){let e=n.$implicit,l=MS(3);Qm(`value`,e)(`selected`,l.skill()===e),mD(),ny(e)}}function Ge(t,n){if(t&1){let e=CS();pa(0,`select`,22),fC(1,`t`),Ra(`change`,function(r){Bh(e);let m=MS(2);return zh(m.onSkill(r))}),pa(2,`option`,23),ZS(3),fC(4,`t`),fC(5,`t`),wd(),ES(6,Le,2,3,`option`,24,vS),wd()}if(t&2){let e=MS(2);Qm(`value`,e.skill()??``),Ar(`aria-label`,pC(1,4,`agents.skills`)),mD(3),ry(``,pC(4,6,`agents.skills`),`: `,pC(5,8,`state.all`)),mD(3),IS(e.skillOpts())}}function He(t,n){if(t&1&&(pa(0,`option`,24),ZS(1),wd()),t&2){let e=n.$implicit,l=MS(3);Qm(`value`,e)(`selected`,l.host()===e),mD(),ny(e)}}function je(t,n){if(t&1){let e=CS();pa(0,`select`,25),fC(1,`t`),Ra(`change`,function(r){Bh(e);let m=MS(2);return zh(m.onHost(r))}),pa(2,`option`,23),ZS(3),fC(4,`t`),fC(5,`t`),wd(),ES(6,He,2,3,`option`,24,vS),wd()}if(t&2){let e=MS(2);Qm(`value`,e.host()??``),Ar(`aria-label`,pC(1,4,`agents.compatibleHosts`)),mD(3),ry(``,pC(4,6,`agents.compatibleHosts`),`: `,pC(5,8,`state.all`)),mD(3),IS(e.hostOpts())}}function Ke(t,n){if(t&1&&(pa(0,`option`,24),ZS(1),wd()),t&2){let e=n.$implicit,l=MS(3);Qm(`value`,e)(`selected`,l.forge()===e),mD(),ny(e)}}function Ue(t,n){if(t&1&&(pa(0,`option`,24),ZS(1),fC(2,`t`),wd()),t&2){let e=MS(3);Qm(`value`,e.undeclared)(`selected`,e.forge()===e.undeclared),mD(),Td(` `,pC(2,3,`agents.undeclared`),` `)}}function We(t,n){if(t&1){let e=CS();pa(0,`select`,26),fC(1,`t`),Ra(`change`,function(r){Bh(e);let m=MS(2);return zh(m.onForge(r))}),pa(2,`option`,23),ZS(3),fC(4,`t`),fC(5,`t`),wd(),ES(6,Ke,2,3,`option`,24,vS),pS(8,Ue,3,5,`option`,24),wd()}if(t&2){let e=MS(2);Qm(`value`,e.forge()??``),Ar(`aria-label`,pC(1,5,`agents.declaredForge`)),mD(3),ry(``,pC(4,7,`agents.declaredForge`),`: `,pC(5,9,`state.all`)),mD(3),IS(e.forgeOpts().declared),mD(2),mS(e.forgeOpts().hasUndeclared?8:-1)}}function Qe(t,n){if(t&1){let e=CS();pa(0,`span`,28),ZS(1),pa(2,`button`,31),fC(3,`t`),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(3);return zh(m.toggleCompare(r))}),ZS(4,` × `),wd()()}if(t&2){let e=n.$implicit,l=MS(3);mD(),Td(` `,l.labelFor(e),` `),mD(),Ar(`aria-label`,pC(3,2,`agents.compare.remove`))}}function Ye(t,n){t&1&&(pa(0,`span`,29),ZS(1),fC(2,`t`),wd()),t&2&&(mD(),ny(pC(2,1,`agents.compare.pick`)))}function Je(t,n){if(t&1){let e=CS();pa(0,`section`,16)(1,`span`,27),ZS(2),fC(3,`t`),wd(),ES(4,Qe,5,4,`span`,28,vS),pS(6,Ye,3,3,`span`,29),pa(7,`button`,30),Ra(`click`,function(){Bh(e);let r=MS(2);return zh(r.compareIds.set([]))}),ZS(8),fC(9,`t`),wd()()}if(t&2){let e=MS(2);mD(2),ny(pC(3,3,`agents.compare.title`)),mD(2),IS(e.compareIds()),mD(2),mS(e.compareIds().length<2?6:-1),mD(2),Td(` `,pC(9,5,`agents.compare.clear`),` `)}}function Xe(t,n){if(t&1&&(pa(0,`th`,38)(1,`code`),ZS(2),wd()()),t&2){let e=n.$implicit;mD(2),ny(e.id)}}function Ze(t,n){t&1&&(pa(0,`span`,40),ZS(1),fC(2,`t`),wd()),t&2&&(mD(),ny(pC(2,1,`agents.compare.notDeclared`)))}function et(t,n){if(t&1&&ZS(0),t&2){let e=MS().$implicit;Td(` `,e.text,` `)}}function tt(t,n){if(t&1&&(pa(0,`td`),pS(1,Ze,3,3,`span`,40)(2,et,1,1),wd()),t&2){let e=n.$implicit;mD(),mS(e.absent?1:2)}}function nt(t,n){if(t&1&&(pa(0,`tr`)(1,`th`,39),ZS(2),fC(3,`t`),wd(),ES(4,tt,3,1,`td`,null,yS),wd()),t&2){let e=n.$implicit;Ar(`data-differ`,e.differ||null),mD(2),ny(pC(3,2,e.key)),mD(2),IS(lC(4,Oe,e.a,e.b))}}function it(t,n){if(t&1){let e=CS();pa(0,`section`,17)(1,`header`,32)(2,`h2`),Ma(3,`ui-icon`,33),ZS(4),fC(5,`t`),wd(),pa(6,`button`,34),fC(7,`t`),Ra(`click`,function(){Bh(e);let r=MS(2);return zh(r.compareIds.set([]))}),Ma(8,`ui-icon`,35),wd()(),pa(9,`div`,36)(10,`table`,37)(11,`thead`)(12,`tr`)(13,`th`,38),ZS(14),fC(15,`t`),wd(),ES(16,Xe,3,1,`th`,38,G),wd()(),pa(18,`tbody`),ES(19,nt,6,7,`tr`,null,Ve),wd()()()()}if(t&2){let e=MS(2);mD(3),Qm(`size`,15),mD(),ny(pC(5,5,`agents.compare.title`)),mD(2),Ar(`aria-label`,pC(7,7,`state.close`)),mD(2),Qm(`size`,14),mD(6),ny(pC(15,9,`agents.compare.field`)),mD(2),IS(e.comparePair()),mD(3),IS(n)}}function at(t,n){if(t&1&&(pa(0,`a`,50),ZS(1),wd()),t&2){let e=n.$implicit;Qm(`routerLink`,aC(3,Fe))(`queryParams`,cC(4,De,e)),mD(),ny(e)}}function ot(t,n){if(t&1&&(pa(0,`span`,46),ES(1,at,2,6,`a`,50,vS),wd()),t&2){let e=MS();mD(),IS(e.skills)}}function rt(t,n){t&1&&(ZS(0),fC(1,`t`)),t&2&&Td(` `,pC(1,1,`state.none`),` `)}function lt(t,n){if(t&1&&(ZS(0),pa(1,`code`),ZS(2),wd(),pa(3,`span`,51),ZS(4),fC(5,`t`),wd()),t&2){let e=n;Td(` `,e.forge_name,` `),mD(2),Td(`(`,e.forge_id,`)`),mD(2),ny(pC(5,3,`explorer.serving`))}}function dt(t,n){t&1&&Ma(0,`ui-state-badge`,47)}function st(t,n){t&1&&(pa(0,`code`),ZS(1),wd()),t&2&&(mD(),ny(n))}function ct(t,n){t&1&&(pa(0,`span`,40),ZS(1),fC(2,`t`),wd()),t&2&&(mD(),ny(pC(2,1,`agents.compare.notDeclared`)))}function pt(t,n){if(t&1&&(pa(0,`a`,52),ZS(1),wd()),t&2){let e=n.$implicit;Qm(`routerLink`,aC(3,Me))(`fragment`,`host-`+e),mD(),ny(e)}}function _t(t,n){if(t&1&&(pa(0,`span`,46),ES(1,pt,2,4,`a`,52,vS),wd()),t&2){let e=MS();mD(),IS(e.hosts)}}function mt(t,n){t&1&&Ma(0,`ui-state-badge`,47)}function gt(t,n){if(t&1){let e=CS();pa(0,`section`,18)(1,`header`,41)(2,`h2`),Ma(3,`ui-icon`,42),ZS(4),wd(),pa(5,`div`,43)(6,`button`,44),Ra(`click`,function(){let r=Bh(e),m=MS(2);return zh(m.toggleCompare(r.id))}),ZS(7),fC(8,`t`),wd(),pa(9,`button`,34),fC(10,`t`),Ra(`click`,function(){Bh(e);let r=MS(2);return zh(r.selected.set(null))}),Ma(11,`ui-icon`,35),wd()()(),pa(12,`dl`,45)(13,`div`)(14,`dt`),ZS(15),fC(16,`t`),wd(),pa(17,`dd`)(18,`code`),ZS(19),wd()()(),pa(20,`div`)(21,`dt`),ZS(22),fC(23,`t`),wd(),pa(24,`dd`),ZS(25),fC(26,`t`),wd()(),pa(27,`div`)(28,`dt`),ZS(29),fC(30,`t`),wd(),pa(31,`dd`),ZS(32),fC(33,`t`),wd()(),pa(34,`div`)(35,`dt`),ZS(36),fC(37,`t`),wd(),pa(38,`dd`),ZS(39),fC(40,`t`),wd()(),pa(41,`div`)(42,`dt`),ZS(43),fC(44,`t`),wd(),pa(45,`dd`),ZS(46),fC(47,`t`),wd()(),pa(48,`div`)(49,`dt`),ZS(50),fC(51,`t`),wd(),pa(52,`dd`),pS(53,ot,3,0,`span`,46)(54,rt,2,3),wd()(),pa(55,`div`)(56,`dt`),ZS(57),fC(58,`t`),wd(),pa(59,`dd`),pS(60,lt,6,5)(61,dt,1,0,`ui-state-badge`,47),wd()(),pa(62,`div`)(63,`dt`),ZS(64),fC(65,`t`),wd(),pa(66,`dd`),pS(67,st,2,1,`code`)(68,ct,3,3,`span`,40),wd()(),pa(69,`div`)(70,`dt`),ZS(71),fC(72,`t`),wd(),pa(73,`dd`),pS(74,_t,3,0,`span`,46)(75,mt,1,0,`ui-state-badge`,47),wd()(),pa(76,`div`)(77,`dt`),ZS(78),fC(79,`t`),wd(),pa(80,`dd`),Ma(81,`ui-state-badge`,48),wd()(),pa(82,`div`)(83,`dt`),ZS(84),fC(85,`t`),wd(),pa(86,`dd`,49),Ma(87,`ui-state-badge`,47),pa(88,`small`,29),ZS(89),fC(90,`t`),wd()()(),pa(91,`div`)(92,`dt`),ZS(93),fC(94,`t`),wd(),pa(95,`dd`,49),Ma(96,`ui-state-badge`,47),pa(97,`small`,29),ZS(98),fC(99,`t`),wd()()(),pa(100,`div`)(101,`dt`),ZS(102),fC(103,`t`),wd(),pa(104,`dd`,49),Ma(105,`ui-state-badge`,47),pa(106,`small`,29),ZS(107),fC(108,`t`),wd()()(),pa(109,`div`)(110,`dt`),ZS(111),fC(112,`t`),wd(),pa(113,`dd`,49),Ma(114,`ui-state-badge`,47),pa(115,`small`,29),ZS(116),fC(117,`t`),wd()()(),pa(118,`div`)(119,`dt`),ZS(120),fC(121,`t`),wd(),pa(122,`dd`)(123,`code`),ZS(124,`GET /api/v1/agents`),wd()()()()()}if(t&2){let e,l,r=n,m=MS(2);mD(3),Qm(`size`,15),mD(),ny(r.name||r.id),mD(2),Ar(`data-tone`,m.compareIds().includes(r.id)?`accent`:null)(`aria-pressed`,m.compareIds().includes(r.id)),mD(),Td(` `,pC(8,37,`agents.compare.add`),` `),mD(2),Ar(`aria-label`,pC(10,39,`state.close`)),mD(2),Qm(`size`,14),mD(4),ny(pC(16,41,`table.id`)),mD(4),ny(r.id),mD(3),ny(pC(23,43,`agents.role`)),mD(3),ny(r.role||pC(26,45,`state.absent`)),mD(4),ny(pC(30,47,`agents.responsibility`)),mD(3),ny(r.description||pC(33,49,`state.absent`)),mD(4),ny(pC(37,51,`agents.authority`)),mD(3),ny(r.authority??pC(40,53,`state.absent`)),mD(4),ny(pC(44,55,`agents.domains`)),mD(3),ny(r.domains.length?r.domains.join(`, `):pC(47,57,`state.none`)),mD(4),ny(pC(51,59,`agents.skills`)),mD(3),mS(r.skills.length?53:54),mD(4),ny(pC(58,61,`agents.origin`)),mD(3),mS((e=m.store.descriptor())?60:61,e),mD(4),ny(pC(65,63,`agents.declaredForge`)),mD(3),mS((l=m.declaredForge(r,m.knownForges()))?67:68,l),mD(4),ny(pC(72,65,`agents.compatibleHosts`)),mD(3),mS(r.hosts.length?74:75),mD(4),ny(pC(79,67,`skills.state`)),mD(3),Qm(`state`,r.state===`available`?`supported`:`unverified`)(`labelOverride`,r.state),mD(3),ny(pC(85,69,`agents.tools`)),mD(5),ny(pC(90,71,`agents.notExposed`)),mD(4),ny(pC(94,73,`agents.permissions`)),mD(5),ny(pC(99,75,`agents.notExposed`)),mD(4),ny(pC(103,77,`agents.deps`)),mD(5),ny(pC(108,79,`agents.notExposed`)),mD(4),ny(pC(112,81,`settings.version`)),mD(5),ny(pC(117,83,`agents.notExposed`)),mD(4),ny(pC(121,85,`agents.evidence`))}}function ut(t,n){if(t&1&&(pa(0,`p`,56)(1,`span`),ZS(2),fC(3,`t`),wd(),ZS(4),wd()),t&2){let e=MS().$implicit;mD(2),Td(``,pC(3,2,`agents.domains`),`:`),mD(2),Td(` `,e.domains.join(`, `),` `)}}function yt(t,n){if(t&1&&(pa(0,`p`,56)(1,`span`),ZS(2),fC(3,`t`),wd(),ZS(4),wd()),t&2){let e=MS().$implicit;mD(2),Td(``,pC(3,2,`agents.skills`),`:`),mD(2),Td(` `,e.skills.join(`, `),` `)}}function xt(t,n){if(t&1){let e=CS();pa(0,`article`,53)(1,`header`,54)(2,`h2`),Ma(3,`ui-icon`,42),ZS(4),wd(),Ma(5,`ui-state-badge`,48),wd(),pa(6,`p`,55),ZS(7),wd(),pa(8,`p`,29),ZS(9),wd(),pS(10,ut,5,4,`p`,56),pS(11,yt,5,4,`p`,56),pa(12,`div`,57)(13,`button`,44),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(3);return zh(m.toggleCompare(r.id))}),ZS(14),fC(15,`t`),wd(),pa(16,`button`,58),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(3);return zh(m.selected.set(r))}),ZS(17),fC(18,`t`),Ma(19,`ui-icon`,35),wd()()()}if(t&2){let e=n.$implicit,l=MS(3);mD(3),Qm(`size`,15),mD(),ny(e.name||e.id),mD(),Qm(`state`,e.state===`available`?`supported`:`unverified`)(`labelOverride`,e.state),mD(2),ny(e.role),mD(2),ny(e.description),mD(),mS(e.domains.length?10:-1),mD(),mS(e.skills.length?11:-1),mD(2),Ar(`data-tone`,l.compareIds().includes(e.id)?`accent`:null)(`aria-pressed`,l.compareIds().includes(e.id)),mD(),Td(` `,pC(15,13,`agents.compare.add`),` `),mD(3),Td(` `,pC(18,15,`agents.detail`),` `),mD(2),Qm(`size`,13)}}function ft(t,n){t&1&&(Ma(0,`ui-empty`,8),fC(1,`t`)),t&2&&Qm(`title`,pC(1,1,`agents.empty`))}function vt(t,n){if(t&1&&pS(0,ft,2,3,`ui-empty`,8),t&2){let e=MS(3);mS(e.loading()?-1:0)}}function Ct(t,n){if(t&1&&(pa(0,`section`,19),ES(1,xt,20,17,`article`,53,G,!1,vt,1,1),wd()),t&2){let e=MS(2);mD(),IS(e.filtered())}}function ht(t,n){if(t&1&&(pa(0,`a`,63),ZS(1),wd(),ZS(2)),t&2){let e=n.$implicit,l=n.$index,r=n.$count;Qm(`routerLink`,aC(4,Me))(`fragment`,`host-`+e),mD(),ny(e),mD(),Td(``,l===r-1?``:`, `,` `)}}function bt(t,n){if(t&1&&ES(0,ht,3,5,null,null,vS),t&2){let e=MS().$implicit;IS(e.hosts)}}function St(t,n){t&1&&(pa(0,`span`,40),ZS(1),fC(2,`t`),wd()),t&2&&(mD(),ny(pC(2,1,`agents.compare.notDeclared`)))}function kt(t,n){if(t&1){let e=CS();pa(0,`tr`)(1,`td`)(2,`strong`),ZS(3),wd(),Ma(4,`br`),pa(5,`code`,61),ZS(6),wd()(),pa(7,`td`),ZS(8),wd(),pa(9,`td`),ZS(10),wd(),pa(11,`td`),ZS(12),wd(),pa(13,`td`),pS(14,bt,2,0)(15,St,3,3,`span`,40),wd(),pa(16,`td`),Ma(17,`ui-state-badge`,48),wd(),pa(18,`td`,62)(19,`button`,44),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(3);return zh(m.toggleCompare(r.id))}),ZS(20),fC(21,`t`),wd(),pa(22,`button`,58),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(3);return zh(m.selected.set(r))}),ZS(23),fC(24,`t`),wd()()()}if(t&2){let e=n.$implicit,l=MS(3);mD(3),ny(e.name||e.id),mD(3),ny(e.id),mD(2),ny(e.role||`—`),mD(2),ny(e.domains.length?e.domains.join(`, `):`—`),mD(2),ny(e.skills.length?e.skills.join(`, `):`—`),mD(2),mS(e.hosts.length?14:15),mD(3),Qm(`state`,e.state===`available`?`supported`:`unverified`)(`labelOverride`,e.state),mD(2),Ar(`data-tone`,l.compareIds().includes(e.id)?`accent`:null)(`aria-pressed`,l.compareIds().includes(e.id)),mD(),Td(` `,pC(21,12,`agents.compare.add`),` `),mD(3),Td(` `,pC(24,14,`agents.detail`),` `)}}function Et(t,n){t&1&&(pa(0,`tr`)(1,`td`,64),ZS(2),fC(3,`t`),wd()()),t&2&&(mD(2),ny(pC(3,1,`agents.empty`)))}function Pt(t,n){if(t&1&&(pa(0,`section`,20)(1,`div`,36)(2,`table`,59)(3,`thead`)(4,`tr`)(5,`th`,38),ZS(6),fC(7,`t`),wd(),pa(8,`th`,38),ZS(9),fC(10,`t`),wd(),pa(11,`th`,38),ZS(12),fC(13,`t`),wd(),pa(14,`th`,38),ZS(15),fC(16,`t`),wd(),pa(17,`th`,38),ZS(18),fC(19,`t`),wd(),pa(20,`th`,38),ZS(21),fC(22,`t`),wd(),pa(23,`th`,38)(24,`span`,60),ZS(25),fC(26,`t`),wd()()()(),pa(27,`tbody`),ES(28,kt,25,16,`tr`,null,G,!1,Et,4,3,`tr`),wd()()()()),t&2){let e=MS(2);mD(6),ny(pC(7,8,`table.name`)),mD(3),ny(pC(10,10,`agents.role`)),mD(3),ny(pC(13,12,`agents.domains`)),mD(3),ny(pC(16,14,`agents.skills`)),mD(3),ny(pC(19,16,`agents.compatibleHosts`)),mD(3),ny(pC(22,18,`skills.state`)),mD(4),ny(pC(26,20,`table.actions`)),mD(3),IS(e.filtered())}}function wt(t,n){if(t&1){let e=CS();pa(0,`button`,9),Ra(`click`,function(){let r=Bh(e).$implicit,m=MS(4);return zh(m.setLayout(r))}),ZS(1),wd()}if(t&2){let e=n.$implicit,l=MS(4);Ar(`data-layout`,e)(`data-tone`,l.layoutName()===e?`accent`:null)(`aria-pressed`,l.layoutName()===e),mD(),Td(` `,e,` `)}}function It(t,n){if(t&1&&(pa(0,`li`),Ma(1,`span`,75),ZS(2),wd()),t&2){let e=n.$implicit,l=MS(4);Ar(`data-kind`,e),mD(),Aa(`background`,l.kindColor(e)),Ar(`data-shape`,l.kindShape(e)),mD(),Td(` `,e,` `)}}function Nt(t,n){if(t&1){let e=CS();pa(0,`div`,67),fC(1,`t`),pa(2,`span`,29),ZS(3),fC(4,`t`),wd(),ES(5,wt,2,4,`button`,3,vS),Ma(7,`span`,68),pa(8,`button`,69),Ra(`click`,function(){Bh(e);let r=MS(3);return zh(r.resetLayout())}),ZS(9),fC(10,`t`),wd(),pa(11,`button`,70),Ra(`click`,function(){Bh(e);let r=MS(3);return zh(r.fitCanvas())}),ZS(12),fC(13,`t`),wd(),pa(14,`button`,71),Ra(`click`,function(){Bh(e);let r=MS(3);return zh(r.exportPng())}),ZS(15,` PNG `),wd(),pa(16,`button`,72),Ra(`click`,function(){Bh(e);let r=MS(3);return zh(r.exportSvg())}),ZS(17,` SVG `),wd()(),Ma(18,`div`,73,0),fC(20,`t`),pa(21,`ul`,74),fC(22,`t`),ES(23,It,3,5,`li`,null,vS),wd()}if(t&2){let e=MS(3);Ar(`aria-label`,pC(1,6,`graph.canvas.tools`)),mD(3),ny(pC(4,8,`graph.canvas.layout`)),mD(2),IS(e.layouts),mD(4),Td(` `,pC(10,10,`graph.canvas.reset`),` `),mD(3),Td(` `,pC(13,12,`graph.canvas.fit`),` `),mD(6),Ar(`aria-label`,pC(20,14,`agents.graph.aria`)),mD(3),Ar(`aria-label`,pC(22,16,`graph.canvas.legend`)),mD(2),IS(e.graphKinds())}}function At(t,n){t&1&&(Ma(0,`ui-empty`,66),fC(1,`t`)),t&2&&Qm(`title`,pC(1,1,`agents.graph.empty`))}function Tt(t,n){if(t&1&&(pa(0,`section`,21)(1,`p`,65),ZS(2),fC(3,`t`),wd(),pS(4,Nt,25,18)(5,At,2,3,`ui-empty`,66),wd()),t&2){let e=MS(2);mD(2),ny(pC(3,2,`agents.graph.hint`)),mD(2),mS(e.subgraph().nodes.length?4:5)}}function Mt(t,n){if(t&1){let e=CS();pa(0,`ui-filter-bar`,12),ay(`queryChange`,function(r){Bh(e);let m=MS();return tC(m.query,r)||(m.query=r),zh(r)}),pa(1,`button`,9),Ra(`click`,function(){Bh(e);let r=MS();return zh(r.domain.set(null))}),ZS(2),fC(3,`t`),wd(),ES(4,ze,2,3,`button`,3,vS),pS(6,Ge,8,10,`select`,13),pS(7,je,8,10,`select`,14),pS(8,We,9,11,`select`,15),wd(),pS(9,Je,10,7,`section`,16),pS(10,it,21,11,`section`,17),pS(11,gt,125,87,`section`,18),pS(12,Ct,4,1,`section`,19),pS(13,Pt,31,22,`section`,20),pS(14,Tt,6,4,`section`,21)}if(t&2){let e,l,r=MS();sy(`query`,r.query),mD(),Ar(`data-tone`,r.domain()===null?`accent`:null)(`aria-pressed`,r.domain()===null),mD(),Td(` `,pC(3,13,`state.all`),` `),mD(2),IS(r.domainOpts()),mD(2),mS(r.skillOpts().length?6:-1),mD(),mS(r.hostOpts().length?7:-1),mD(),mS(r.forgeOpts().declared.length||r.forgeOpts().hasUndeclared?8:-1),mD(),mS(r.compareIds().length?9:-1),mD(),mS((e=r.compareRows())?10:-1,e),mD(),mS((l=r.selected())?11:-1,l),mD(),mS(r.mode()===`cards`?12:-1),mD(),mS(r.mode()===`table`?13:-1),mD(),mS(r.mode()===`graph`?14:-1)}}function Bt(t,n){t&1&&(Ma(0,`ui-empty`,8),fC(1,`t`)),t&2&&Qm(`title`,pC(1,1,`agents.none`))}var Te=class t{api=p(g);store=p(g$1);prefs=p(sE);destroyRef=p(Ie$1);q=rn(``);agents=k([]);error=k(null);query=k(``);domain=k(null);skill=k(null);host=k(null);forge=k(null);selected=k(null);loading=k(!0);modes=[`cards`,`table`,`graph`];mode=k(`cards`);undeclared=z;compareIds=k([]);skillsSrc=new l$1;layouts=e;layoutName=k(`cose`);canvasEl=UU(`canvasEl`);rendererReady=k(!1);renderer=null;mounting=null;knownForges=tn(()=>{let n=new Set,e=this.store.descriptor()?.forge_id;e&&n.add(e);for(let l of this.agents()){let r=M(l,n);r&&n.add(r)}return n});domainOpts=tn(()=>Ee(this.agents()));skillOpts=tn(()=>Pe(this.agents()));hostOpts=tn(()=>we(this.agents()));forgeOpts=tn(()=>Ie(this.agents(),this.knownForges()));filtered=tn(()=>ke(this.agents(),{query:this.query(),domain:this.domain(),skill:this.skill(),host:this.host(),forge:this.forge()},this.knownForges()));comparePair=tn(()=>{let n=new Map(this.agents().map(e=>[e.id,e]));return this.compareIds().map(e=>n.get(e)).filter(e=>e!==void 0).slice(0,2)});compareRows=tn(()=>{let n=this.comparePair();return n.length===2?Ne(n[0],n[1],this.knownForges()):null});fed=tn(()=>H({agents:this.agents(),skills:this.skillsSrc.data(),servingForge:this.store.descriptor()?.forge_id??null,availability:{agents:`loaded`,skills:this.skillsSrc.data()?`loaded`:this.skillsSrc.unavailable()?`unavailable`:`unverified`,bootstrap:this.store.descriptor()?`loaded`:`unverified`}}));subgraph=tn(()=>Ae(this.fed(),new Set(this.filtered().map(n=>n.id))));graphKinds=tn(()=>x$1.filter(n=>(this.subgraph().counts[n]??0)>0));declaredForge=M;constructor(){ko(()=>{let n=this.canvasEl()?.nativeElement??null;n&&!this.renderer&&this.mountCanvas(n),!n&&this.renderer&&this.destroyCanvas()}),ko(()=>{this.rendererReady(),this.renderer&&this.renderer.setData(x(this.subgraph()))}),ko(()=>{this.rendererReady();let n=this.renderer;if(!n)return;let e=this.selected();n.select(e?`agent:${e.id}`:null),n.highlight(new Set,new Set)}),ko(()=>this.prefs.setFilter(`agents`,this.query())),this.destroyRef.onDestroy(()=>this.destroyCanvas()),this.load()}ngOnInit(){let n=this.q();if(n)this.query.set(n);else{let e=this.prefs.filterFor(`agents`);e&&this.query.set(e)}}async load(){this.error.set(null),this.loading.set(!0);let n$1=this.skillsSrc.load(()=>this.api.skills());try{this.agents.set(await mE(this.api.agents()))}catch(e){this.error.set(e instanceof n?e:new n(0))}finally{this.loading.set(!1)}await n$1}setMode(n){this.mode.set(n)}toggleDomain(n){this.domain.set(this.domain()===n?null:n)}onSkill(n){let e=n.target.value;this.skill.set(e||null)}onHost(n){let e=n.target.value;this.host.set(e||null)}onForge(n){let e=n.target.value;this.forge.set(e||null)}labelFor(n){return this.agents().find(e=>e.id===n)?.name||n}toggleCompare(n){let e=this.compareIds();if(e.includes(n)){this.compareIds.set(e.filter(l=>l!==n));return}this.compareIds.set([...e,n].slice(-2))}canvasRenderer(){return this.renderer}async mountCanvas(n){if(!this.mounting){this.mounting=n;try{let{createCytoscapeRenderer:e}=await import(`./chunk-C6ri1BES.js`);if(this.canvasEl()?.nativeElement!==n||this.renderer)return;let l=document.documentElement.dataset.motion,m=e({animate:!(l===`reduced`||l!==`full`&&typeof matchMedia<`u`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches)});m.mount(n),m.onSelect(T=>this.onCanvasSelect(T)),this.renderer=m,this.rendererReady.set(!0)}finally{this.mounting=null}}}destroyCanvas(){this.renderer?.destroy(),this.renderer=null,this.rendererReady.set(!1)}onCanvasSelect(n){if(n?.type===`node`&&n.id.startsWith(`agent:`)){let e=n.id.slice(6);this.selected.set(this.agents().find(l=>l.id===e)??null)}else n===null&&this.selected.set(null)}setLayout(n){this.layoutName.set(n),this.renderer?.layout(n)}resetLayout(){this.renderer?.layout(this.layoutName())}fitCanvas(){this.renderer?.fit()}exportPng(){let n=this.renderer?.exportPng();n&&this.download(n,`forge-agents-graph.png`)}exportSvg(){let n=this.renderer?.exportSvg();n&&this.download(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(n)}`,`forge-agents-graph.svg`)}download(n,e){let l=document.createElement(`a`);l.href=n,l.download=e,l.click()}kindColor(n){return F(n).color}kindShape(n){return F(n).shape}static ɵfac=function(e){return new(e||t)};static ɵcmp=ni({type:t,selectors:[[`page-agents`]],viewQuery:function(e,l){e&1&&Jm(l.canvasEl,Be,5),e&2&&AS()},inputs:{q:[1,`q`]},decls:15,vars:16,consts:[[`canvasEl`,``],[`hintId`,`agent`,3,`title`,`subtitle`],[`role`,`group`,`data-toggle`,`view`,1,`view-toggle`],[`type`,`button`,1,`fg-pill`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`status`,1,`grid`],[`icon`,`agents`,3,`title`],[`type`,`button`,1,`fg-pill`,3,`click`],[3,`retry`,`error`],[`kind`,`card`,3,`lines`],[`placeholder`,`agents.search`,3,`queryChange`,`query`],[1,`input`,`sel`,3,`value`],[`data-filter`,`host`,1,`input`,`sel`,3,`value`],[`data-filter`,`forge`,1,`input`,`sel`,3,`value`],[`data-section`,`compare-tray`,`aria-live`,`polite`,1,`card`,`tray`],[`data-section`,`compare`,`aria-live`,`polite`,1,`card`,`cmp`],[`data-section`,`agent-detail`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[`data-section`,`cards`,1,`grid`],[`data-section`,`table`,1,`card`],[`data-section`,`graph`,1,`card`],[1,`input`,`sel`,3,`change`,`value`],[`value`,``],[3,`value`,`selected`],[`data-filter`,`host`,1,`input`,`sel`,3,`change`,`value`],[`data-filter`,`forge`,1,`input`,`sel`,3,`change`,`value`],[1,`tray__label`],[1,`tray__chip`],[1,`muted`],[1,`btn`,`btn--mini`,3,`click`],[`type`,`button`,1,`tray__x`,3,`click`],[1,`cmp__head`],[`name`,`diff`,3,`size`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[1,`table-wrap`],[1,`table`,`cmp__table`],[`scope`,`col`],[`scope`,`row`],[1,`undecl`],[1,`detail__head`],[`name`,`agents`,3,`size`],[1,`detail__actions`],[`data-action`,`compare`,1,`btn`,`btn--mini`,3,`click`],[1,`kv`],[1,`links`],[`state`,`UNVERIFIED`],[3,`state`,`labelOverride`],[1,`unv-cell`],[1,`chip-link`,3,`routerLink`,`queryParams`],[1,`chip`],[1,`chip-link`,3,`routerLink`,`fragment`],[`data-lift`,``,1,`card`],[1,`head`],[1,`role`],[1,`tags`],[1,`row`],[`data-action`,`detail`,1,`btn`,`btn--mini`,3,`click`],[1,`table`],[1,`sr-only`],[1,`row-id`],[1,`row-actions`],[1,`linklike`,3,`routerLink`,`fragment`],[`colspan`,`7`,1,`empty-cell`],[1,`muted`,`graph__hint`],[`icon`,`network`,3,`title`],[`role`,`toolbar`,1,`fed__toolbar`],[1,`toolbar-gap`],[`type`,`button`,`data-action`,`reset`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`fit`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`png`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`svg`,1,`fg-pill`,3,`click`],[`data-canvas`,`agents`,`role`,`application`,1,`fed__canvas`],[1,`fed__legend`],[1,`legend-dot`]],template:function(e,l){if(e&1&&(pa(0,`ui-page-header`,1),fC(1,`t`),fC(2,`t`),pa(3,`div`,2),fC(4,`t`),ES(5,Re,3,6,`button`,3,vS),wd(),pa(7,`button`,4),Ra(`click`,function(){return l.load()}),Ma(8,`ui-icon`,5),ZS(9),fC(10,`t`),wd()(),pS(11,$e,1,1,`ui-error`,6),pS(12,qe,3,4,`section`,7),pS(13,Mt,15,15)(14,Bt,2,3,`ui-empty`,8)),e&2){let r;Qm(`title`,pC(1,8,`agents.title`))(`subtitle`,pC(2,10,`agents.subtitle`)),mD(3),Ar(`aria-label`,pC(4,12,`agents.view.label`)),mD(2),IS(l.modes),mD(3),Qm(`size`,15),mD(),Td(` `,pC(10,14,`state.refresh`),` `),mD(2),mS((r=l.error())?11:-1,r),mD(),mS(l.loading()?12:-1),mD(),mS(l.agents().length?13:!l.error()&&!l.loading()?14:-1)}},dependencies:[Dc,T,I,_,D,dE,k$1,h,uE],styles:[`.grid[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-4);grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2)}h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.role[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);font-size:var(--%NS%font-sm);margin:4px 0}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);margin:0}.tags[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);margin:4px 0 0}.tags[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-weight:600}.sel[_ngcontent-%COMP%]{width:auto;min-width:12rem;padding-block:2px;font-size:var(--%NS%font-xs)}.row[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3);display:flex;justify-content:flex-end;gap:var(--%NS%space-2)}.btn--mini[_ngcontent-%COMP%]{padding:2px var(--%NS%space-2);font-size:var(--%NS%font-xs);gap:4px}.view-toggle[_ngcontent-%COMP%]{display:inline-flex;gap:var(--%NS%space-1);margin-right:var(--%NS%space-2)}.tray[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-4);padding-block:var(--%NS%space-2)}.tray__label[_ngcontent-%COMP%]{font-weight:650;font-size:var(--%NS%font-sm)}.tray__chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;font-size:var(--%NS%font-xs);font-weight:600;color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border-radius:var(--%NS%radius-pill);padding:2px 6px 2px 10px}.tray__x[_ngcontent-%COMP%]{border:0;background:none;color:inherit;font-size:var(--%NS%font-sm);line-height:1;cursor:pointer;padding:0 2px}.cmp[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);border-left:3px solid var(--%NS%info)}.cmp__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.cmp__table[_ngcontent-%COMP%] th[scope=row][_ngcontent-%COMP%]{text-align:left;font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted);white-space:nowrap}.cmp__table[_ngcontent-%COMP%] tr[data-differ][_ngcontent-%COMP%] td[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%info) 8%,transparent)}.undecl[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-style:italic;font-size:var(--%NS%font-xs)}.row-id[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.row-actions[_ngcontent-%COMP%]{white-space:nowrap;display:flex;gap:var(--%NS%space-1);justify-content:flex-end}.empty-cell[_ngcontent-%COMP%]{text-align:center;color:var(--%NS%fg-muted);padding:var(--%NS%space-4)!important}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.graph__hint[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-sm)}.fed__toolbar[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-2)}.toolbar-gap[_ngcontent-%COMP%]{flex:1}.fed__canvas[_ngcontent-%COMP%]{height:420px;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:var(--%NS%bg-elevated);overflow:hidden}.fed__canvas[_ngcontent-%COMP%] canvas[_ngcontent-%COMP%]{outline:none}.fed__legend[_ngcontent-%COMP%]{list-style:none;display:flex;flex-wrap:wrap;gap:var(--%NS%space-1) var(--%NS%space-3);padding:0;margin:var(--%NS%space-2) 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.fed__legend[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-1)}.legend-dot[_ngcontent-%COMP%]{width:10px;height:10px;display:inline-block;border-radius:3px;flex:none}.detail[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);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__actions[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.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}.unv-cell[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.links[_ngcontent-%COMP%]{display:inline-flex;flex-wrap:wrap;gap:4px}.chip[_ngcontent-%COMP%]{margin-left:4px}`]})};export{Te as AgentsPage};
@@ -1 +1 @@
1
- import{$t as wd,Ct as mS,D as MS,Et as ni,F as Qm,Ft as pa,Jt as uE,K as ZS,Kt as tn,L as Ra,Mt as p,Nt as pC,O as Ma,Ot as ny,Pt as pS,St as mE,V as Td,X as aC,Xt as vS,_ as IS,a as Bh,at as ey,et as cC,f as ES,ht as k,i as Ar,nt as dE,o as CS,ot as fC,rn as zh,st as gC,xt as mD}from"./chunk-zZVj9gH0.js";import{i as n,r as g,s as y}from"./main-CCFYCU3J.js";import{t as _}from"./chunk-D2euRURa.js";import{t as D}from"./chunk-BDNGRBqK.js";import{n as k$1,t as I}from"./chunk-C4JWE0XB.js";import{t as T}from"./chunk-YAMUupB7.js";var J=()=>[1,2,3];var Q=t=>({count:t});var M=(t,i)=>i.id;function W(t,i){if(t&1){let e=CS();pa(0,`ui-error`,14),Ra(`retry`,function(){Bh(e);let d=MS();return zh(d.load())}),wd()}t&2&&Qm(`error`,i)}function X(t,i){t&1&&Ma(0,`ui-skeleton`,15)}function Y(t,i){t&1&&(pa(0,`section`,2),ES(1,X,1,0,`ui-skeleton`,15,vS),wd()),t&2&&(mD(),IS(aC(0,J)))}function Z(t,i){if(t&1&&(pa(0,`span`),ZS(1),wd()),t&2){let e=MS();mD(),ny(e.detail)}}function ee(t,i){if(t&1&&ZS(0),t&2){let e=MS(2);Td(` — `,e.unlock,` `)}}function te(t,i){if(t&1&&(pa(0,`p`,18)(1,`code`),ZS(2),wd(),pS(3,ee,1,1),wd()),t&2){let e=MS();mD(2),ny(e.refusal),mD(),mS(e.unlock?3:-1)}}function ie(t,i){if(t&1&&(pa(0,`section`,3)(1,`p`,16),Ma(2,`ui-state-badge`,17),pS(3,Z,2,1,`span`),wd(),pS(4,te,4,2,`p`,18),wd()),t&2){let e=i;mD(2),Qm(`state`,e.status),mD(),mS(e.detail?3:-1),mD(),mS(e.refusal?4:-1)}}function ne(t,i){t&1&&(pa(0,`span`,21),Ma(1,`ui-icon`,24),ZS(2),fC(3,`t`),wd()),t&2&&(mD(),Qm(`size`,12),mD(),Td(` `,pC(3,2,`profiles.current`),` `))}function ae(t,i){if(t&1&&(pa(0,`li`),ZS(1),wd()),t&2){let e=i.$implicit;Ar(`data-on`,e.on||null),mD(),ny(e.id)}}function oe(t,i){if(t&1){let e=CS();pa(0,`button`,25),Ra(`click`,function(){Bh(e);let d=MS().$implicit,y=MS();return zh(y.apply(d.id))}),ZS(1),fC(2,`t`),wd()}if(t&2){let e=MS(2);Qm(`disabled`,e.busy()),mD(),Td(` `,pC(2,2,`profiles.apply`),` `)}}function re(t,i){if(t&1&&(pa(0,`article`,5)(1,`div`,19)(2,`h2`),Ma(3,`ui-icon`,20),ZS(4),wd(),pS(5,ne,4,4,`span`,21),wd(),pa(6,`p`,8),ZS(7),fC(8,`t`),wd(),pa(9,`ul`,22),ES(10,ae,2,2,`li`,null,M),wd(),pS(12,oe,3,4,`button`,23),wd()),t&2){let e=i.$implicit,o=MS();Ar(`data-current`,e.current||null),mD(3),Qm(`size`,16),mD(),ny(e.id),mD(),mS(e.current?5:-1),mD(2),ny(pC(8,6,o.description(e))),mD(3),IS(o.componentList(e)),mD(2),mS(e.current?-1:12)}}function le(t,i){t&1&&(Ma(0,`ui-empty`,26),fC(1,`t`),fC(2,`t`)),t&2&&Qm(`title`,pC(1,2,`empty.noData`))(`hint`,pC(2,4,`empty.noData.hint`))}function pe(t,i){if(t&1&&pS(0,le,3,6,`ui-empty`,26),t&2){let e=MS();mS(!e.error()&&!e.loading()?0:-1)}}function ce(t,i){if(t&1&&(pa(0,`option`,12),ZS(1),wd()),t&2){let e=i.$implicit,o=MS();Qm(`value`,e.id)(`selected`,e.id===o.compareA()),mD(),ny(e.id)}}function de(t,i){if(t&1&&(pa(0,`option`,12),ZS(1),wd()),t&2){let e=i.$implicit,o=MS();Qm(`value`,e.id)(`selected`,e.id===o.compareB()),mD(),ny(e.id)}}function se(t,i){t&1&&Ma(0,`ui-icon`,24),t&2&&Qm(`size`,14)}function me(t,i){t&1&&Ma(0,`ui-icon`,24),t&2&&Qm(`size`,14)}function _e(t,i){if(t&1&&(pa(0,`tr`)(1,`td`)(2,`code`),ZS(3),wd()(),pa(4,`td`),pS(5,se,1,1,`ui-icon`,24),ZS(6),fC(7,`t`),wd(),pa(8,`td`),pS(9,me,1,1,`ui-icon`,24),ZS(10),fC(11,`t`),wd()()),t&2){let e=i.$implicit;Ar(`data-diff`,e.a!==e.b||null),mD(3),ny(e.id),mD(),ey(`on`,e.a)(`off`,!e.a),mD(),mS(e.a?5:-1),mD(),Td(` `,pC(7,14,e.a?`state.enabled`:`state.disabled`),` `),mD(2),ey(`on`,e.b)(`off`,!e.b),mD(),mS(e.b?9:-1),mD(),Td(` `,pC(11,16,e.b?`state.enabled`:`state.disabled`),` `)}}function fe(t,i){t&1&&(ZS(0),fC(1,`t`)),t&2&&Td(` `,pC(1,1,`profiles.compare.same`),` `)}function ue(t,i){if(t&1&&(ZS(0),fC(1,`t`)),t&2){let e=MS(2);Td(` `,gC(1,1,`profiles.compare.differences`,cC(4,Q,e.diffCount())),` `)}}function ge(t,i){if(t&1&&(pa(0,`table`,27)(1,`thead`)(2,`tr`)(3,`th`,28),ZS(4),fC(5,`t`),wd(),pa(6,`th`,28),ZS(7),wd(),pa(8,`th`,28),ZS(9),wd()()(),pa(10,`tbody`),ES(11,_e,12,18,`tr`,null,M),wd()(),pa(13,`p`,29),pS(14,fe,2,3)(15,ue,2,6),wd()),t&2){let e=MS();mD(4),ny(pC(5,4,`profiles.compare.component`)),mD(3),ny(e.compareA()),mD(2),ny(e.compareB()),mD(2),IS(e.compareRows()),mD(3),mS(e.diffCount()===0?14:15)}}function ye(t,i){t&1&&(Ma(0,`ui-empty`,13),fC(1,`t`)),t&2&&Qm(`title`,pC(1,1,`empty.noData`))}var G=class t{api=p(g);confirm=p(y);profiles=k([]);receipt=k(null);error=k(null);busy=k(!1);loading=k(!0);compareA=k(null);compareB=k(null);constructor(){this.load()}async load(){this.error.set(null),this.loading.set(!0);try{let i=await mE(this.api.profiles());this.profiles.set(i),i.length&&(!this.compareA()||!this.compareB())&&(this.compareA.set(i.find(e=>e.current)?.id??i[0].id),this.compareB.set(i.find(e=>!e.current)?.id??i[0].id))}catch(i){this.error.set(i instanceof n?i:new n(0))}finally{this.loading.set(!1)}}description(i){return i.description_key}componentList(i){return Object.entries(i.components??{}).map(([e,o])=>({id:e,on:o}))}pickCompare(i,e){let o=e.target.value;i===`a`?this.compareA.set(o):this.compareB.set(o)}compareRows=tn(()=>{let i=this.profiles().find(d=>d.id===this.compareA()),e=this.profiles().find(d=>d.id===this.compareB());if(!i||!e)return[];let o=[...new Set([...Object.keys(i.components??{}),...Object.keys(e.components??{})])];return o.sort(),o.map(d=>({id:d,a:!!i.components?.[d],b:!!e.components?.[d]}))});diffCount=tn(()=>this.compareRows().filter(i=>i.a!==i.b).length);async apply(i){if(await this.confirm.ask({title:`profiles.apply`,message:`profiles.apply.confirm`,confirmKey:`profiles.apply`})){this.busy.set(!0);try{let o=await mE(this.api.profilesApply(i));this.receipt.set(o),await this.load()}catch(o){this.error.set(o instanceof n?o:new n(0))}finally{this.busy.set(!1)}}}static ɵfac=function(e){return new(e||t)};static ɵcmp=ni({type:t,selectors:[[`page-profiles`]],decls:36,vars:29,consts:[[3,`title`,`subtitle`],[3,`error`],[`role`,`status`,`aria-live`,`polite`,1,`grid`],[`data-lift`,``,1,`card`,`receipt`],[1,`grid`],[`data-lift`,``,1,`card`],[`aria-labelledby`,`compare-h`,1,`card`,`compare`],[`id`,`compare-h`],[1,`muted`],[1,`compare__pickers`],[1,`picker`],[1,`input`,3,`change`],[3,`value`,`selected`],[3,`title`],[3,`retry`,`error`],[`kind`,`card`],[1,`receipt__status`],[3,`state`],[1,`refusal`],[1,`card__head`],[`name`,`profiles`,3,`size`],[1,`current`],[1,`comps`],[1,`btn`,`btn--primary`,3,`disabled`],[`name`,`check`,3,`size`],[1,`btn`,`btn--primary`,3,`click`,`disabled`],[3,`title`,`hint`],[1,`table`,`compare__table`],[`scope`,`col`],[1,`muted`,`compare__summary`]],template:function(e,o){if(e&1&&(Ma(0,`ui-page-header`,0),fC(1,`t`),fC(2,`t`),pS(3,W,1,1,`ui-error`,1),pS(4,Y,3,1,`section`,2),pS(5,ie,5,3,`section`,3),pa(6,`section`,4),ES(7,re,13,8,`article`,5,M,!1,pe,1,1),wd(),pa(10,`section`,6)(11,`h2`,7),ZS(12),fC(13,`t`),wd(),pa(14,`p`,8),ZS(15),fC(16,`t`),wd(),pa(17,`div`,9)(18,`label`,10)(19,`span`),ZS(20),fC(21,`t`),wd(),pa(22,`select`,11),fC(23,`t`),Ra(`change`,function(y){return o.pickCompare(`a`,y)}),ES(24,ce,2,3,`option`,12,M),wd()(),pa(26,`label`,10)(27,`span`),ZS(28),fC(29,`t`),wd(),pa(30,`select`,11),fC(31,`t`),Ra(`change`,function(y){return o.pickCompare(`b`,y)}),ES(32,de,2,3,`option`,12,M),wd()()(),pS(34,ge,16,6)(35,ye,2,3,`ui-empty`,13),wd()),e&2){let d,y;Qm(`title`,pC(1,13,`profiles.title`))(`subtitle`,pC(2,15,`profiles.subtitle`)),mD(3),mS((d=o.error())?3:-1,d),mD(),mS(o.loading()?4:-1),mD(),mS((y=o.receipt())?5:-1,y),mD(2),IS(o.profiles()),mD(5),ny(pC(13,17,`profiles.compare`)),mD(3),ny(pC(16,19,`profiles.compare.hint`)),mD(5),ny(pC(21,21,`profiles.compare.a`)),mD(2),Ar(`aria-label`,pC(23,23,`profiles.compare.a`)),mD(2),IS(o.profiles()),mD(4),ny(pC(29,25,`profiles.compare.b`)),mD(2),Ar(`aria-label`,pC(31,27,`profiles.compare.b`)),mD(2),IS(o.profiles()),mD(2),mS(o.compareRows().length?34:o.profiles().length&&!o.loading()?35:-1)}},dependencies:[T,_,D,I,dE,k$1,uE],styles:[`.grid[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-4);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-bottom:var(--%NS%space-4)}.card[data-current][_ngcontent-%COMP%]{border-color:color-mix(in srgb,var(--%NS%accent) 55%,transparent);background:linear-gradient(160deg,color-mix(in srgb,var(--%NS%accent) 7%,var(--%NS%bg-elevated)) 0%,var(--%NS%bg-elevated) 55%);box-shadow:var(--%NS%elev-card),0 0 0 1px color-mix(in srgb,var(--%NS%accent) 18%,transparent)}.card__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-weight:650;letter-spacing:-.01em;font-size:var(--%NS%font-lg)}.card__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;text-transform:capitalize;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.card__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);margin-top:0}.comps[_ngcontent-%COMP%]{list-style:none;padding:0;margin:var(--%NS%space-3) 0;display:flex;flex-wrap:wrap;gap:6px}.comps[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);padding:2px 8px;border-radius:var(--%NS%radius-pill);border:1px solid var(--%NS%border);color:var(--%NS%fg-muted)}.comps[_ngcontent-%COMP%] li[data-on][_ngcontent-%COMP%]{border-color:var(--%NS%ok);color:var(--%NS%ok)}.current[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;color:var(--%NS%accent-ink);font-weight:600;font-size:var(--%NS%font-xs);background:var(--%NS%accent-bg);border:1px solid color-mix(in srgb,var(--%NS%accent) 35%,transparent);border-radius:var(--%NS%radius-pill);padding:2px var(--%NS%space-2)}.receipt[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.receipt__status[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);margin:0}.refusal[_ngcontent-%COMP%]{color:var(--%NS%warn)}.compare[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.compare__pickers[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-3);margin:var(--%NS%space-3) 0}.picker[_ngcontent-%COMP%]{display:grid;gap:4px;font-size:var(--%NS%font-sm);font-weight:600}.picker[_ngcontent-%COMP%] .input[_ngcontent-%COMP%]{min-width:180px}.compare__table[_ngcontent-%COMP%] td.on[_ngcontent-%COMP%]{color:var(--%NS%ok);font-weight:600}.compare__table[_ngcontent-%COMP%] td.off[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.compare__table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{vertical-align:-2px;margin-right:4px}.compare__table[_ngcontent-%COMP%] tr[data-diff][_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%accent) 7%,transparent)}.compare__table[_ngcontent-%COMP%] tr[data-diff][_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-left:3px solid var(--%NS%accent);font-weight:650}.compare__summary[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0}`]})};export{G as ProfilesPage};
1
+ import{$t as wd,Ct as mS,D as MS,Et as ni,F as Qm,Ft as pa,Jt as uE,K as ZS,Kt as tn,L as Ra,Mt as p,Nt as pC,O as Ma,Ot as ny,Pt as pS,St as mE,V as Td,X as aC,Xt as vS,_ as IS,a as Bh,at as ey,et as cC,f as ES,ht as k,i as Ar,nt as dE,o as CS,ot as fC,rn as zh,st as gC,xt as mD}from"./chunk-CV7TSqiz.js";import{i as n,r as g,s as y}from"./main-YKFPUKID.js";import{t as _}from"./chunk-C2Vik-mF.js";import{t as D}from"./chunk-CWCQmMmw.js";import{n as k$1,t as I}from"./chunk-CaHx1phd.js";import{t as T}from"./chunk-yM6DMc_W.js";var J=()=>[1,2,3];var Q=t=>({count:t});var M=(t,i)=>i.id;function W(t,i){if(t&1){let e=CS();pa(0,`ui-error`,14),Ra(`retry`,function(){Bh(e);let d=MS();return zh(d.load())}),wd()}t&2&&Qm(`error`,i)}function X(t,i){t&1&&Ma(0,`ui-skeleton`,15)}function Y(t,i){t&1&&(pa(0,`section`,2),ES(1,X,1,0,`ui-skeleton`,15,vS),wd()),t&2&&(mD(),IS(aC(0,J)))}function Z(t,i){if(t&1&&(pa(0,`span`),ZS(1),wd()),t&2){let e=MS();mD(),ny(e.detail)}}function ee(t,i){if(t&1&&ZS(0),t&2){let e=MS(2);Td(` — `,e.unlock,` `)}}function te(t,i){if(t&1&&(pa(0,`p`,18)(1,`code`),ZS(2),wd(),pS(3,ee,1,1),wd()),t&2){let e=MS();mD(2),ny(e.refusal),mD(),mS(e.unlock?3:-1)}}function ie(t,i){if(t&1&&(pa(0,`section`,3)(1,`p`,16),Ma(2,`ui-state-badge`,17),pS(3,Z,2,1,`span`),wd(),pS(4,te,4,2,`p`,18),wd()),t&2){let e=i;mD(2),Qm(`state`,e.status),mD(),mS(e.detail?3:-1),mD(),mS(e.refusal?4:-1)}}function ne(t,i){t&1&&(pa(0,`span`,21),Ma(1,`ui-icon`,24),ZS(2),fC(3,`t`),wd()),t&2&&(mD(),Qm(`size`,12),mD(),Td(` `,pC(3,2,`profiles.current`),` `))}function ae(t,i){if(t&1&&(pa(0,`li`),ZS(1),wd()),t&2){let e=i.$implicit;Ar(`data-on`,e.on||null),mD(),ny(e.id)}}function oe(t,i){if(t&1){let e=CS();pa(0,`button`,25),Ra(`click`,function(){Bh(e);let d=MS().$implicit,y=MS();return zh(y.apply(d.id))}),ZS(1),fC(2,`t`),wd()}if(t&2){let e=MS(2);Qm(`disabled`,e.busy()),mD(),Td(` `,pC(2,2,`profiles.apply`),` `)}}function re(t,i){if(t&1&&(pa(0,`article`,5)(1,`div`,19)(2,`h2`),Ma(3,`ui-icon`,20),ZS(4),wd(),pS(5,ne,4,4,`span`,21),wd(),pa(6,`p`,8),ZS(7),fC(8,`t`),wd(),pa(9,`ul`,22),ES(10,ae,2,2,`li`,null,M),wd(),pS(12,oe,3,4,`button`,23),wd()),t&2){let e=i.$implicit,o=MS();Ar(`data-current`,e.current||null),mD(3),Qm(`size`,16),mD(),ny(e.id),mD(),mS(e.current?5:-1),mD(2),ny(pC(8,6,o.description(e))),mD(3),IS(o.componentList(e)),mD(2),mS(e.current?-1:12)}}function le(t,i){t&1&&(Ma(0,`ui-empty`,26),fC(1,`t`),fC(2,`t`)),t&2&&Qm(`title`,pC(1,2,`empty.noData`))(`hint`,pC(2,4,`empty.noData.hint`))}function pe(t,i){if(t&1&&pS(0,le,3,6,`ui-empty`,26),t&2){let e=MS();mS(!e.error()&&!e.loading()?0:-1)}}function ce(t,i){if(t&1&&(pa(0,`option`,12),ZS(1),wd()),t&2){let e=i.$implicit,o=MS();Qm(`value`,e.id)(`selected`,e.id===o.compareA()),mD(),ny(e.id)}}function de(t,i){if(t&1&&(pa(0,`option`,12),ZS(1),wd()),t&2){let e=i.$implicit,o=MS();Qm(`value`,e.id)(`selected`,e.id===o.compareB()),mD(),ny(e.id)}}function se(t,i){t&1&&Ma(0,`ui-icon`,24),t&2&&Qm(`size`,14)}function me(t,i){t&1&&Ma(0,`ui-icon`,24),t&2&&Qm(`size`,14)}function _e(t,i){if(t&1&&(pa(0,`tr`)(1,`td`)(2,`code`),ZS(3),wd()(),pa(4,`td`),pS(5,se,1,1,`ui-icon`,24),ZS(6),fC(7,`t`),wd(),pa(8,`td`),pS(9,me,1,1,`ui-icon`,24),ZS(10),fC(11,`t`),wd()()),t&2){let e=i.$implicit;Ar(`data-diff`,e.a!==e.b||null),mD(3),ny(e.id),mD(),ey(`on`,e.a)(`off`,!e.a),mD(),mS(e.a?5:-1),mD(),Td(` `,pC(7,14,e.a?`state.enabled`:`state.disabled`),` `),mD(2),ey(`on`,e.b)(`off`,!e.b),mD(),mS(e.b?9:-1),mD(),Td(` `,pC(11,16,e.b?`state.enabled`:`state.disabled`),` `)}}function fe(t,i){t&1&&(ZS(0),fC(1,`t`)),t&2&&Td(` `,pC(1,1,`profiles.compare.same`),` `)}function ue(t,i){if(t&1&&(ZS(0),fC(1,`t`)),t&2){let e=MS(2);Td(` `,gC(1,1,`profiles.compare.differences`,cC(4,Q,e.diffCount())),` `)}}function ge(t,i){if(t&1&&(pa(0,`table`,27)(1,`thead`)(2,`tr`)(3,`th`,28),ZS(4),fC(5,`t`),wd(),pa(6,`th`,28),ZS(7),wd(),pa(8,`th`,28),ZS(9),wd()()(),pa(10,`tbody`),ES(11,_e,12,18,`tr`,null,M),wd()(),pa(13,`p`,29),pS(14,fe,2,3)(15,ue,2,6),wd()),t&2){let e=MS();mD(4),ny(pC(5,4,`profiles.compare.component`)),mD(3),ny(e.compareA()),mD(2),ny(e.compareB()),mD(2),IS(e.compareRows()),mD(3),mS(e.diffCount()===0?14:15)}}function ye(t,i){t&1&&(Ma(0,`ui-empty`,13),fC(1,`t`)),t&2&&Qm(`title`,pC(1,1,`empty.noData`))}var G=class t{api=p(g);confirm=p(y);profiles=k([]);receipt=k(null);error=k(null);busy=k(!1);loading=k(!0);compareA=k(null);compareB=k(null);constructor(){this.load()}async load(){this.error.set(null),this.loading.set(!0);try{let i=await mE(this.api.profiles());this.profiles.set(i),i.length&&(!this.compareA()||!this.compareB())&&(this.compareA.set(i.find(e=>e.current)?.id??i[0].id),this.compareB.set(i.find(e=>!e.current)?.id??i[0].id))}catch(i){this.error.set(i instanceof n?i:new n(0))}finally{this.loading.set(!1)}}description(i){return i.description_key}componentList(i){return Object.entries(i.components??{}).map(([e,o])=>({id:e,on:o}))}pickCompare(i,e){let o=e.target.value;i===`a`?this.compareA.set(o):this.compareB.set(o)}compareRows=tn(()=>{let i=this.profiles().find(d=>d.id===this.compareA()),e=this.profiles().find(d=>d.id===this.compareB());if(!i||!e)return[];let o=[...new Set([...Object.keys(i.components??{}),...Object.keys(e.components??{})])];return o.sort(),o.map(d=>({id:d,a:!!i.components?.[d],b:!!e.components?.[d]}))});diffCount=tn(()=>this.compareRows().filter(i=>i.a!==i.b).length);async apply(i){if(await this.confirm.ask({title:`profiles.apply`,message:`profiles.apply.confirm`,confirmKey:`profiles.apply`})){this.busy.set(!0);try{let o=await mE(this.api.profilesApply(i));this.receipt.set(o),await this.load()}catch(o){this.error.set(o instanceof n?o:new n(0))}finally{this.busy.set(!1)}}}static ɵfac=function(e){return new(e||t)};static ɵcmp=ni({type:t,selectors:[[`page-profiles`]],decls:36,vars:29,consts:[[3,`title`,`subtitle`],[3,`error`],[`role`,`status`,`aria-live`,`polite`,1,`grid`],[`data-lift`,``,1,`card`,`receipt`],[1,`grid`],[`data-lift`,``,1,`card`],[`aria-labelledby`,`compare-h`,1,`card`,`compare`],[`id`,`compare-h`],[1,`muted`],[1,`compare__pickers`],[1,`picker`],[1,`input`,3,`change`],[3,`value`,`selected`],[3,`title`],[3,`retry`,`error`],[`kind`,`card`],[1,`receipt__status`],[3,`state`],[1,`refusal`],[1,`card__head`],[`name`,`profiles`,3,`size`],[1,`current`],[1,`comps`],[1,`btn`,`btn--primary`,3,`disabled`],[`name`,`check`,3,`size`],[1,`btn`,`btn--primary`,3,`click`,`disabled`],[3,`title`,`hint`],[1,`table`,`compare__table`],[`scope`,`col`],[1,`muted`,`compare__summary`]],template:function(e,o){if(e&1&&(Ma(0,`ui-page-header`,0),fC(1,`t`),fC(2,`t`),pS(3,W,1,1,`ui-error`,1),pS(4,Y,3,1,`section`,2),pS(5,ie,5,3,`section`,3),pa(6,`section`,4),ES(7,re,13,8,`article`,5,M,!1,pe,1,1),wd(),pa(10,`section`,6)(11,`h2`,7),ZS(12),fC(13,`t`),wd(),pa(14,`p`,8),ZS(15),fC(16,`t`),wd(),pa(17,`div`,9)(18,`label`,10)(19,`span`),ZS(20),fC(21,`t`),wd(),pa(22,`select`,11),fC(23,`t`),Ra(`change`,function(y){return o.pickCompare(`a`,y)}),ES(24,ce,2,3,`option`,12,M),wd()(),pa(26,`label`,10)(27,`span`),ZS(28),fC(29,`t`),wd(),pa(30,`select`,11),fC(31,`t`),Ra(`change`,function(y){return o.pickCompare(`b`,y)}),ES(32,de,2,3,`option`,12,M),wd()()(),pS(34,ge,16,6)(35,ye,2,3,`ui-empty`,13),wd()),e&2){let d,y;Qm(`title`,pC(1,13,`profiles.title`))(`subtitle`,pC(2,15,`profiles.subtitle`)),mD(3),mS((d=o.error())?3:-1,d),mD(),mS(o.loading()?4:-1),mD(),mS((y=o.receipt())?5:-1,y),mD(2),IS(o.profiles()),mD(5),ny(pC(13,17,`profiles.compare`)),mD(3),ny(pC(16,19,`profiles.compare.hint`)),mD(5),ny(pC(21,21,`profiles.compare.a`)),mD(2),Ar(`aria-label`,pC(23,23,`profiles.compare.a`)),mD(2),IS(o.profiles()),mD(4),ny(pC(29,25,`profiles.compare.b`)),mD(2),Ar(`aria-label`,pC(31,27,`profiles.compare.b`)),mD(2),IS(o.profiles()),mD(2),mS(o.compareRows().length?34:o.profiles().length&&!o.loading()?35:-1)}},dependencies:[T,_,D,I,dE,k$1,uE],styles:[`.grid[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-4);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-bottom:var(--%NS%space-4)}.card[data-current][_ngcontent-%COMP%]{border-color:color-mix(in srgb,var(--%NS%accent) 55%,transparent);background:linear-gradient(160deg,color-mix(in srgb,var(--%NS%accent) 7%,var(--%NS%bg-elevated)) 0%,var(--%NS%bg-elevated) 55%);box-shadow:var(--%NS%elev-card),0 0 0 1px color-mix(in srgb,var(--%NS%accent) 18%,transparent)}.card__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-weight:650;letter-spacing:-.01em;font-size:var(--%NS%font-lg)}.card__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;text-transform:capitalize;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.card__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);margin-top:0}.comps[_ngcontent-%COMP%]{list-style:none;padding:0;margin:var(--%NS%space-3) 0;display:flex;flex-wrap:wrap;gap:6px}.comps[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);padding:2px 8px;border-radius:var(--%NS%radius-pill);border:1px solid var(--%NS%border);color:var(--%NS%fg-muted)}.comps[_ngcontent-%COMP%] li[data-on][_ngcontent-%COMP%]{border-color:var(--%NS%ok);color:var(--%NS%ok)}.current[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;color:var(--%NS%accent-ink);font-weight:600;font-size:var(--%NS%font-xs);background:var(--%NS%accent-bg);border:1px solid color-mix(in srgb,var(--%NS%accent) 35%,transparent);border-radius:var(--%NS%radius-pill);padding:2px var(--%NS%space-2)}.receipt[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.receipt__status[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);margin:0}.refusal[_ngcontent-%COMP%]{color:var(--%NS%warn)}.compare[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.compare__pickers[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-3);margin:var(--%NS%space-3) 0}.picker[_ngcontent-%COMP%]{display:grid;gap:4px;font-size:var(--%NS%font-sm);font-weight:600}.picker[_ngcontent-%COMP%] .input[_ngcontent-%COMP%]{min-width:180px}.compare__table[_ngcontent-%COMP%] td.on[_ngcontent-%COMP%]{color:var(--%NS%ok);font-weight:600}.compare__table[_ngcontent-%COMP%] td.off[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.compare__table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{vertical-align:-2px;margin-right:4px}.compare__table[_ngcontent-%COMP%] tr[data-diff][_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%accent) 7%,transparent)}.compare__table[_ngcontent-%COMP%] tr[data-diff][_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-left:3px solid var(--%NS%accent);font-weight:650}.compare__summary[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0}`]})};export{G as ProfilesPage};