@zaip-ai/cli 5.5.0 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/services/adapters.d.ts +1 -1
  2. package/dist/services/adapters.js +1 -1
  3. package/dist/services/codex-pre-tool-hook-template.d.ts.map +1 -1
  4. package/dist/services/codex-pre-tool-hook-template.js +5 -198
  5. package/dist/services/codex-pre-tool-hook-template.js.map +1 -1
  6. package/dist/services/codex-pre-tool-policy-template.d.ts +2 -0
  7. package/dist/services/codex-pre-tool-policy-template.d.ts.map +1 -0
  8. package/dist/services/codex-pre-tool-policy-template.js +136 -0
  9. package/dist/services/codex-pre-tool-policy-template.js.map +1 -0
  10. package/dist/services/codex-pre-tool-support-template.d.ts.map +1 -1
  11. package/dist/services/codex-pre-tool-support-template.js +62 -0
  12. package/dist/services/codex-pre-tool-support-template.js.map +1 -1
  13. package/package.json +1 -1
  14. package/templates/.agents/README-ENG.md +4 -2
  15. package/templates/.agents/README.md +3 -1
  16. package/templates/.agents/config/agents/discovery.json +1 -1
  17. package/templates/.agents/dashboard/.zaip-managed.json +26 -26
  18. package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-Crv8oLKH.js → DashboardHelpDialog-B5YEOEej.js} +4 -2
  19. package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-De3_oOUB.js → PricingSettingsDialog--irvqUl5.js} +1 -1
  20. package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-HNZfT9Xo.js → ProjectSettingsPage-DxyjL1__.js} +1 -1
  21. package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-D4tioTQ5.js → TraceabilityWorkspace-BWEEMNV-.js} +1 -1
  22. package/templates/.agents/dashboard/apps/frontend/dist/assets/{dashboard-localization-BbNU69xZ.js → dashboard-localization-C45x75cf.js} +4 -2
  23. package/templates/.agents/dashboard/apps/frontend/dist/assets/{index-oqGtXP7j.js → index-DGUs5bRP.js} +2 -2
  24. package/templates/.agents/dashboard/apps/frontend/dist/index.html +1 -1
  25. package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
  26. package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
  27. package/templates/.agents/dashboard/modules/operations/package.json +1 -1
  28. package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
  29. package/templates/.agents/dashboard/packages/branding/package.json +1 -1
  30. package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
  31. package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
  32. package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
  33. package/templates/.agents/dashboard/packages/ui/package.json +1 -1
  34. package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
  35. package/templates/.agents/design/.zaip-managed.json +3 -3
  36. package/templates/.agents/design/apps/catalog/package.json +1 -1
  37. package/templates/.agents/design/packages/local-runtime/package.json +1 -1
  38. package/templates/.agents/requirements/autonomous-assurance.md +1 -1
  39. package/templates/.agents/requirements/cloud-hostinger-autonomy.md +1 -1
  40. package/templates/.agents/requirements/comparative-audit.md +1 -1
  41. package/templates/.agents/requirements/context-engine.md +1 -1
  42. package/templates/.agents/requirements/cost-observability.md +1 -1
  43. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  44. package/templates/.agents/requirements/data-export.md +1 -1
  45. package/templates/.agents/requirements/design-system.md +1 -1
  46. package/templates/.agents/requirements/execution-engine.md +1 -1
  47. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  48. package/templates/.agents/requirements/model-orchestration.md +1 -1
  49. package/templates/.agents/requirements/public-distribution.md +1 -1
  50. package/templates/.agents/requirements/software-architecture.md +1 -1
  51. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  52. package/templates/.agents/requirements/work-lifecycle.md +1 -1
  53. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  54. package/templates/.agents/runtime/VERSION +1 -1
  55. package/templates/.agents/runtime/bin/zaip.mjs +137 -135
  56. package/templates/.agents/runtime/checksums.sha256 +5 -5
  57. package/templates/.agents/runtime/manifest.json +1 -1
  58. package/templates/.agents/runtime/provenance.json +4 -4
  59. package/templates/.agents/runtime/sbom.cdx.json +1 -1
  60. package/templates/.agents/zaip-aios/VERSION +1 -1
  61. package/templates/template-manifest.json +59 -59
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "5.5.0",
3
+ "version": "5.6.0",
4
4
  "files": [
5
5
  {
6
6
  "path": "DATA-DICTIONARY.md",
@@ -15,28 +15,28 @@
15
15
  "sha256": "d0366ee0d847fe681de0971a14c80ee3a6af1430c0e9c5eb4f84f14a4b734b82"
16
16
  },
17
17
  {
18
- "path": "apps/frontend/dist/assets/DashboardHelpDialog-Crv8oLKH.js",
19
- "sha256": "7659e8de0884a357f0ea31474a41bba0067a69ec88c2ad20c852f68da67da731"
18
+ "path": "apps/frontend/dist/assets/DashboardHelpDialog-B5YEOEej.js",
19
+ "sha256": "41f7a9d259fe3340914d4708e25528b6d2d0a13743baf2f15331b76b71a26fa1"
20
20
  },
21
21
  {
22
22
  "path": "apps/frontend/dist/assets/DashboardHelpDialog-DRI_XwUf.css",
23
23
  "sha256": "95dbb5c26ad73831f36f2a51d5e08ef5eee7ca85190764a3e63bf1e700fbadf8"
24
24
  },
25
25
  {
26
- "path": "apps/frontend/dist/assets/PricingSettingsDialog-De3_oOUB.js",
27
- "sha256": "386c55a54cfdf937ca0d99164c7f62e7d2a36aa3b30b29df00b24bd276b1b8e1"
26
+ "path": "apps/frontend/dist/assets/PricingSettingsDialog--irvqUl5.js",
27
+ "sha256": "47bc5f7a71262e6b36d2c5444b78b9379af3dbb8de9d8987632acab8523fefde"
28
28
  },
29
29
  {
30
30
  "path": "apps/frontend/dist/assets/ProjectSettingsPage-CQMhvzvJ.css",
31
31
  "sha256": "10e875c4e3ab6c252983822e25a85db3d707d903c0fcf39812909fdd1d013f48"
32
32
  },
33
33
  {
34
- "path": "apps/frontend/dist/assets/ProjectSettingsPage-HNZfT9Xo.js",
35
- "sha256": "13172e64f534881f70b8a62d70c34caaa6fb175c3a8754e441efe3d32946bc9f"
34
+ "path": "apps/frontend/dist/assets/ProjectSettingsPage-DxyjL1__.js",
35
+ "sha256": "681b5e87f3736092563d4ad61fa51d9241cc23667c1eeda3620c94232b00c432"
36
36
  },
37
37
  {
38
- "path": "apps/frontend/dist/assets/TraceabilityWorkspace-D4tioTQ5.js",
39
- "sha256": "c5c0adfde02160404f6ff15b28f2ee13d9cad59c7b341e734ef2a1c0a8ca87de"
38
+ "path": "apps/frontend/dist/assets/TraceabilityWorkspace-BWEEMNV-.js",
39
+ "sha256": "2b093e580ee449c8182278ded73b3f80df8472a1931c13f98ebd1cd7a168a0d6"
40
40
  },
41
41
  {
42
42
  "path": "apps/frontend/dist/assets/TraceabilityWorkspace-DvvavDLY.css",
@@ -51,20 +51,20 @@
51
51
  "sha256": "90be9550e3b6719ffc7a029ac35a93a4f14e95263b3996ad6c06dbfc0490f307"
52
52
  },
53
53
  {
54
- "path": "apps/frontend/dist/assets/dashboard-localization-BbNU69xZ.js",
55
- "sha256": "a4a3bcd640bc3f79bd4320a87031a33b8d74c4a4ed2183ba0ba6a0f97f77c437"
54
+ "path": "apps/frontend/dist/assets/dashboard-localization-C45x75cf.js",
55
+ "sha256": "98b3fd0602af782a029ee476e06a21f8ff22f9ed9ba7a3677a2f58ef5ec9e165"
56
56
  },
57
57
  {
58
58
  "path": "apps/frontend/dist/assets/icons-vendor-CjGGux6h.js",
59
59
  "sha256": "0f615bc6eaeb21d12fc0457867d6acbfe9434ebae0ebecea9444262e46b972e9"
60
60
  },
61
61
  {
62
- "path": "apps/frontend/dist/assets/index-DZhppOIk.css",
63
- "sha256": "cd290085a95d9108f11e94406b2253bfd2109e116d5d7e82460a2f4aecdaba04"
62
+ "path": "apps/frontend/dist/assets/index-DGUs5bRP.js",
63
+ "sha256": "5e89e3d99221226654cec14f4389f8d88a65eb160b81b0912611034335ac5bc7"
64
64
  },
65
65
  {
66
- "path": "apps/frontend/dist/assets/index-oqGtXP7j.js",
67
- "sha256": "6fba043547a996582931e1bbf265fe096ec141008e4efe87a3d2305da3984117"
66
+ "path": "apps/frontend/dist/assets/index-DZhppOIk.css",
67
+ "sha256": "cd290085a95d9108f11e94406b2253bfd2109e116d5d7e82460a2f4aecdaba04"
68
68
  },
69
69
  {
70
70
  "path": "apps/frontend/dist/assets/logo_novo_azul-BBx5pA2B.png",
@@ -92,7 +92,7 @@
92
92
  },
93
93
  {
94
94
  "path": "apps/frontend/dist/index.html",
95
- "sha256": "b89b431b8e411962f04efce2290d37c2c6d5b68b3c90d5d70ec54b6c1469ba8c"
95
+ "sha256": "00e4f8ba0f8efe7be5e4ebc8679be08cf6a1a950824f7f33a82b6612209125ed"
96
96
  },
97
97
  {
98
98
  "path": "apps/frontend/dist/logo_novo_azul.png",
@@ -104,7 +104,7 @@
104
104
  },
105
105
  {
106
106
  "path": "apps/frontend/package.json",
107
- "sha256": "ca27f6ad95fbf44fef4aa177061c309bd2cd6bc8fafc58140cefc5693d0457f6"
107
+ "sha256": "d3e7cc40628f08312f39e5452a106e85f696050124a5153b6b67413a6e3ca2d4"
108
108
  },
109
109
  {
110
110
  "path": "apps/frontend/playwright.dom.config.ts",
@@ -600,7 +600,7 @@
600
600
  },
601
601
  {
602
602
  "path": "modules/cost-monitor/package.json",
603
- "sha256": "f8c7d71e3eec1be18387a0d86ce280cab1f81060ae0bd0168289a7a4b16c3e73"
603
+ "sha256": "e2f8be0d0689f4d0656d9c0401890071da0f7dee71f5498b5edfca0205b44233"
604
604
  },
605
605
  {
606
606
  "path": "modules/cost-monitor/src/agent-groups.test.ts",
@@ -1012,7 +1012,7 @@
1012
1012
  },
1013
1013
  {
1014
1014
  "path": "modules/operations/package.json",
1015
- "sha256": "3cc06ed175ef335e50163416f30a9f84e536c3c1c4257ca8011a4b87d5ecb6c7"
1015
+ "sha256": "1e7b572e1d541ace948a1d59f3753c9bbe41a36241eb80f4fca9730f4fcb649d"
1016
1016
  },
1017
1017
  {
1018
1018
  "path": "modules/operations/src/contracts.ts",
@@ -1752,7 +1752,7 @@
1752
1752
  },
1753
1753
  {
1754
1754
  "path": "modules/traceability/package.json",
1755
- "sha256": "291dea5ec338dc2f950aed2d1d1d22e082393b68322a38a979697cf784a2b3e8"
1755
+ "sha256": "b44cf28e0851ed9c4199588a283bdb33456e2213b67ae8223f0ff285d8a89c68"
1756
1756
  },
1757
1757
  {
1758
1758
  "path": "modules/traceability/src/contracts.ts",
@@ -1824,7 +1824,7 @@
1824
1824
  },
1825
1825
  {
1826
1826
  "path": "packages/branding/package.json",
1827
- "sha256": "f72991e92473a700cae46fbe835dc63c15d3542c37f4510aebfbdce1111df6d7"
1827
+ "sha256": "1438a46664e9564726ad83c8e6e5249a67747a5794ef30f18d7e1293af9a3dd0"
1828
1828
  },
1829
1829
  {
1830
1830
  "path": "packages/branding/src/index.ts",
@@ -1836,7 +1836,7 @@
1836
1836
  },
1837
1837
  {
1838
1838
  "path": "packages/contracts/package.json",
1839
- "sha256": "6af0748d267fe678ddbb2ab5e77ce7690a64bec096a8a03dfc5071d4a404b79a"
1839
+ "sha256": "c78db74aa1d64339893793caebacbd51a619c698f2a1268f0a1a5f4c6535de0d"
1840
1840
  },
1841
1841
  {
1842
1842
  "path": "packages/contracts/src/export.ts",
@@ -1856,7 +1856,7 @@
1856
1856
  },
1857
1857
  {
1858
1858
  "path": "packages/data-export/package.json",
1859
- "sha256": "1a2f264860d1e1b05ee3dbcc5a5032e3bc77be201c1c74e85f8b47829e26246a"
1859
+ "sha256": "17a36b889423df12889fbd1c1b4782498b503bb7d9bfbc155407581dbfe9cfe1"
1860
1860
  },
1861
1861
  {
1862
1862
  "path": "packages/data-export/src/index.test.ts",
@@ -1912,7 +1912,7 @@
1912
1912
  },
1913
1913
  {
1914
1914
  "path": "packages/local-runtime/package.json",
1915
- "sha256": "49c2f69495f0526ed894420b1c3c1d271172c50f32eeff37e2f0a35ee2a0023f"
1915
+ "sha256": "a15e1bfb2ed3eead023994de3c63865e216a9f0f5cd6f61b7fab8da314e82a45"
1916
1916
  },
1917
1917
  {
1918
1918
  "path": "packages/local-runtime/scripts/build-frontend.mjs",
@@ -2848,7 +2848,7 @@
2848
2848
  },
2849
2849
  {
2850
2850
  "path": "packages/ui/package.json",
2851
- "sha256": "ae40db63972e48f5fe95a7a23383d6acd0299561d27afa2acf48753c4194b557"
2851
+ "sha256": "1788ddee5b14ad277d2b56b39d023062e78844bc8149f0de456586a75ea55dd3"
2852
2852
  },
2853
2853
  {
2854
2854
  "path": "packages/ui/src/DashboardHeader.test.mjs",
@@ -2956,7 +2956,7 @@
2956
2956
  },
2957
2957
  {
2958
2958
  "path": "tests/e2e/package.json",
2959
- "sha256": "72485ec4b52ced94fafef3b3f0f3d8894415c0c1f6cdf629c89ceb74c431cd0f"
2959
+ "sha256": "a06b2767fa54a7e0ff1ae5e71b26cfb1278fe3fe738adc207d43a15e45ef79d9"
2960
2960
  },
2961
2961
  {
2962
2962
  "path": "tests/e2e/playwright.config.ts",
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{E as t,w as n}from"./cost-monitor-B0Jwz_rk.js";import{t as r}from"./dashboard-localization-BbNU69xZ.js";var i=`# Primeiros passos
1
+ import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{E as t,w as n}from"./cost-monitor-B0Jwz_rk.js";import{t as r}from"./dashboard-localization-C45x75cf.js";var i=`# Primeiros passos
2
2
 
3
3
  1. Leia \`.agents/config/project.yaml\` e \`.agents/rules/core.md\`.
4
4
  2. Consulte \`.agents/records/lifecycle/\` para descobrir o estado atual pelos manifests canônicos.
@@ -2343,6 +2343,8 @@ matriz de performance aprovada apenas porque consultas focadas passaram.
2343
2343
 
2344
2344
  ## Visão rápida
2345
2345
 
2346
+ O [guia da v5.6](docs/quality/v56-publicacao-reproduzivel.md) apresenta o runtime reproduzível de publicação, a revisão do candidato imutável e a validação antecipada por impacto. Cobertura reutilizada exige prova do mesmo candidato; alterações funcionais e provas ausentes mantêm os gates aplicáveis.
2347
+
2346
2348
  O [guia da v5.5](docs/quality/v55-eficiencia-operacional.md) descreve as obrigações
2347
2349
  de prova apresentadas no início da entrega, o replay direto de fechamento já
2348
2350
  concluído, os segmentos limitados dos journals e a seleção de testes por impacto.
@@ -2973,7 +2975,7 @@ avulsa direta antiga usa uma raiz observada com \`--direct-authorization REFERÊ
2973
2975
  explícita; não é o caminho padrão novo, não cria executor fictício nem dispensa Evidence e Gui. Veja
2974
2976
  [fechamento e recuperação](.agents/zaip-aios/guides/16-lifecycle-e-reconciliacao.md).
2975
2977
 
2976
- A profundidade de prova é adaptativa: Task standalone \`lite\` exige no mínimo uma validação tipada e uma Evidence, normalmente uma de cada, mas aceita provas adicionais legítimas. \`standard\` exige duas ou três validações conforme \`verification_scope\` e pelo menos uma Evidence consolidada; \`critical\` exige três ou mais, revisão independente e os sinais de risco persistidos que determinam controles adicionais. Entregas de SPEC e PRD acrescentam matriz parental, pelo menos três validações e três Evidences, integração real e revisão independente. O candidato local v4 usa Codex-native como modo padrão; o npm publicado anteriormente mantém o contrato da sua versão e exige validação separada. Worktrees, write scopes, commits, budgets e gates tipados continuam exigidos onde aplicáveis. Compatibilidade de outros hosts não equivale à garantia Codex-native. Consulte [Assurance adaptativa e autonomia opt-in](.agents/zaip-aios/guides/19-assurance-e-autonomia.md).
2978
+ A profundidade de prova é adaptativa: Task standalone \`lite\` exige no mínimo uma validação tipada e uma Evidence, normalmente uma de cada, mas aceita provas adicionais legítimas. \`standard\` exige duas ou três validações conforme \`verification_scope\` e pelo menos uma Evidence consolidada; \`critical\` exige três ou mais, revisão independente e os sinais de risco persistidos que determinam controles adicionais. Entregas de SPEC e PRD acrescentam matriz parental, pelo menos três validações e três Evidences, integração real e revisão independente. Novas instalações usam Codex-native como modo padrão. Instalações existentes conservam sua configuração efetiva e devem ser verificadas na versão instalada; publicação não comprova ativação dos hooks no cliente. Worktrees, write scopes, commits, budgets e gates tipados continuam exigidos onde aplicáveis. Compatibilidade de outros hosts não equivale à garantia Codex-native. Consulte [Assurance adaptativa e autonomia opt-in](.agents/zaip-aios/guides/19-assurance-e-autonomia.md).
2977
2979
 
2978
2980
 
2979
2981
  ## Princípios de engenharia autônoma
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{E as t,w as n}from"./cost-monitor-B0Jwz_rk.js";import{n as r}from"./dashboard-localization-BbNU69xZ.js";var i=e(t(),1),a=n();function o({catalog:e,fxRate:t,locale:n,onClose:o,onSave:c,onSaveFxRate:l}){let u=r[n],[d,f]=(0,i.useState)(e),[p,m]=(0,i.useState)(t?.rate??0),[h,g]=(0,i.useState)(!1),_=(e,t)=>f(n=>({...n,models:n.models.map((n,r)=>r===e?{...n,...t}:n)})),v=e=>Math.max(0,Number(e)||0);return(0,a.jsx)(`main`,{className:`pricing-backdrop`,children:(0,a.jsxs)(`section`,{"aria-labelledby":`pricing-page-title`,className:`pricing-dialog`,children:[(0,a.jsxs)(`header`,{children:[(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`small`,{children:u.eyebrow}),(0,a.jsx)(`h1`,{id:`pricing-page-title`,children:u.title}),(0,a.jsx)(`p`,{children:u.description})]}),(0,a.jsxs)(`button`,{className:`pricing-back-button`,onClick:o,type:`button`,children:[(0,a.jsx)(`span`,{"aria-hidden":`true`,children:`←`}),` `,u.back]})]}),(0,a.jsxs)(`div`,{className:`pricing-fx-settings`,children:[(0,a.jsxs)(`div`,{className:`pricing-fx-copy`,children:[(0,a.jsx)(`strong`,{children:u.fxTitle}),(0,a.jsx)(`p`,{children:u.fxDescription})]}),(0,a.jsxs)(`label`,{children:[(0,a.jsx)(`span`,{children:u.fxLabel}),(0,a.jsxs)(`div`,{className:`pricing-fx-input`,children:[(0,a.jsx)(`span`,{children:`R$`}),(0,a.jsx)(`input`,{"aria-label":u.fxAriaLabel,min:`0.0001`,onChange:e=>m(Math.max(1e-4,Number(e.target.value)||0)),step:`0.0001`,type:`number`,value:p})]})]})]}),(0,a.jsxs)(`div`,{className:`pricing-table-heading`,children:[(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`strong`,{children:u.catalog}),(0,a.jsx)(`p`,{children:u.pricesPerMillion})]}),(0,a.jsxs)(`span`,{children:[d.models.length,` `,u.models]})]}),(0,a.jsx)(`div`,{className:`pricing-table-wrap`,children:(0,a.jsxs)(`table`,{children:[(0,a.jsx)(`thead`,{children:(0,a.jsxs)(`tr`,{children:[(0,a.jsx)(`th`,{children:u.model}),(0,a.jsx)(`th`,{children:u.provider}),(0,a.jsx)(`th`,{children:u.input}),(0,a.jsx)(`th`,{children:u.cache}),(0,a.jsx)(`th`,{children:u.output}),(0,a.jsx)(`th`,{children:u.reasoning}),(0,a.jsx)(`th`,{children:u.priorityInput}),(0,a.jsx)(`th`,{children:u.priorityCache}),(0,a.jsx)(`th`,{children:u.priorityOutput}),(0,a.jsx)(`th`,{children:u.priorityReasoning}),(0,a.jsx)(`th`,{children:u.contextLimit}),(0,a.jsx)(`th`,{children:u.inputMultiplier}),(0,a.jsx)(`th`,{children:u.outputMultiplier}),(0,a.jsx)(`th`,{})]})}),(0,a.jsx)(`tbody`,{children:d.models.map((e,t)=>(0,a.jsxs)(`tr`,{children:[(0,a.jsxs)(`td`,{children:[(0,a.jsx)(`input`,{"aria-label":u.model,onChange:e=>_(t,{id:e.target.value}),value:e.id}),(0,a.jsx)(`small`,{children:e.aliases.join(`, `)||u.noAliases})]}),(0,a.jsx)(`td`,{children:(0,a.jsxs)(`select`,{onChange:e=>_(t,{provider:e.target.value}),value:e.provider,children:[(0,a.jsx)(`option`,{value:`openai`,children:`OpenAI`}),(0,a.jsx)(`option`,{value:`anthropic`,children:`Anthropic`})]})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0`,onChange:e=>_(t,{input_per_million_usd:v(e.target.value)}),step:`0.001`,type:`number`,value:e.input_per_million_usd})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0`,onChange:e=>_(t,{cached_input_per_million_usd:v(e.target.value)}),step:`0.001`,type:`number`,value:e.cached_input_per_million_usd??0})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0`,onChange:e=>_(t,{output_per_million_usd:v(e.target.value)}),step:`0.001`,type:`number`,value:e.output_per_million_usd})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0`,onChange:e=>_(t,{reasoning_per_million_usd:v(e.target.value)}),step:`0.001`,type:`number`,value:e.reasoning_per_million_usd??0})}),[`priority_input_per_million_usd`,`priority_cached_input_per_million_usd`,`priority_output_per_million_usd`,`priority_reasoning_per_million_usd`].map(n=>(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0`,onChange:e=>_(t,{[n]:v(e.target.value)}),step:`0.001`,type:`number`,value:e[n]??0})},n)),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0`,onChange:e=>_(t,{long_context_threshold_tokens:v(e.target.value)||null}),step:`1`,type:`number`,value:e.long_context_threshold_tokens??0})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0.001`,onChange:e=>_(t,{long_context_input_multiplier:Math.max(.001,Number(e.target.value)||1)}),step:`0.1`,type:`number`,value:e.long_context_input_multiplier})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0.001`,onChange:e=>_(t,{long_context_output_multiplier:Math.max(.001,Number(e.target.value)||1)}),step:`0.1`,type:`number`,value:e.long_context_output_multiplier})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`button`,{"aria-label":u.removeModel,onClick:()=>f(e=>({...e,models:e.models.filter((e,n)=>n!==t)})),type:`button`,children:`×`})})]},e.id))})]})}),(0,a.jsxs)(`footer`,{children:[(0,a.jsxs)(`button`,{onClick:()=>f(e=>({...e,models:[...e.models,s(n)]})),type:`button`,children:[`+ `,u.addModel]}),(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`button`,{onClick:o,type:`button`,children:u.cancel}),(0,a.jsx)(`button`,{disabled:h,onClick:async()=>{g(!0);try{await c(d),await l(p),o()}finally{g(!1)}},type:`button`,children:h?u.saving:u.save})]})]})]})})}function s(e=`pt-BR`){let t=r[e];return{id:t.newModel,provider:`openai`,aliases:[],input_per_million_usd:0,cached_input_per_million_usd:0,output_per_million_usd:0,reasoning_per_million_usd:0,priority_input_per_million_usd:null,priority_cached_input_per_million_usd:null,priority_output_per_million_usd:null,priority_reasoning_per_million_usd:null,reasoning_billed_separately:!1,long_context_threshold_tokens:null,long_context_input_multiplier:1,long_context_output_multiplier:1,source_label:t.manualOverride,source_url:`https://developers.openai.com/api/docs/pricing`,notes:[t.editedNote]}}export{o as PricingSettingsPage};
1
+ import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{E as t,w as n}from"./cost-monitor-B0Jwz_rk.js";import{n as r}from"./dashboard-localization-C45x75cf.js";var i=e(t(),1),a=n();function o({catalog:e,fxRate:t,locale:n,onClose:o,onSave:c,onSaveFxRate:l}){let u=r[n],[d,f]=(0,i.useState)(e),[p,m]=(0,i.useState)(t?.rate??0),[h,g]=(0,i.useState)(!1),_=(e,t)=>f(n=>({...n,models:n.models.map((n,r)=>r===e?{...n,...t}:n)})),v=e=>Math.max(0,Number(e)||0);return(0,a.jsx)(`main`,{className:`pricing-backdrop`,children:(0,a.jsxs)(`section`,{"aria-labelledby":`pricing-page-title`,className:`pricing-dialog`,children:[(0,a.jsxs)(`header`,{children:[(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`small`,{children:u.eyebrow}),(0,a.jsx)(`h1`,{id:`pricing-page-title`,children:u.title}),(0,a.jsx)(`p`,{children:u.description})]}),(0,a.jsxs)(`button`,{className:`pricing-back-button`,onClick:o,type:`button`,children:[(0,a.jsx)(`span`,{"aria-hidden":`true`,children:`←`}),` `,u.back]})]}),(0,a.jsxs)(`div`,{className:`pricing-fx-settings`,children:[(0,a.jsxs)(`div`,{className:`pricing-fx-copy`,children:[(0,a.jsx)(`strong`,{children:u.fxTitle}),(0,a.jsx)(`p`,{children:u.fxDescription})]}),(0,a.jsxs)(`label`,{children:[(0,a.jsx)(`span`,{children:u.fxLabel}),(0,a.jsxs)(`div`,{className:`pricing-fx-input`,children:[(0,a.jsx)(`span`,{children:`R$`}),(0,a.jsx)(`input`,{"aria-label":u.fxAriaLabel,min:`0.0001`,onChange:e=>m(Math.max(1e-4,Number(e.target.value)||0)),step:`0.0001`,type:`number`,value:p})]})]})]}),(0,a.jsxs)(`div`,{className:`pricing-table-heading`,children:[(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`strong`,{children:u.catalog}),(0,a.jsx)(`p`,{children:u.pricesPerMillion})]}),(0,a.jsxs)(`span`,{children:[d.models.length,` `,u.models]})]}),(0,a.jsx)(`div`,{className:`pricing-table-wrap`,children:(0,a.jsxs)(`table`,{children:[(0,a.jsx)(`thead`,{children:(0,a.jsxs)(`tr`,{children:[(0,a.jsx)(`th`,{children:u.model}),(0,a.jsx)(`th`,{children:u.provider}),(0,a.jsx)(`th`,{children:u.input}),(0,a.jsx)(`th`,{children:u.cache}),(0,a.jsx)(`th`,{children:u.output}),(0,a.jsx)(`th`,{children:u.reasoning}),(0,a.jsx)(`th`,{children:u.priorityInput}),(0,a.jsx)(`th`,{children:u.priorityCache}),(0,a.jsx)(`th`,{children:u.priorityOutput}),(0,a.jsx)(`th`,{children:u.priorityReasoning}),(0,a.jsx)(`th`,{children:u.contextLimit}),(0,a.jsx)(`th`,{children:u.inputMultiplier}),(0,a.jsx)(`th`,{children:u.outputMultiplier}),(0,a.jsx)(`th`,{})]})}),(0,a.jsx)(`tbody`,{children:d.models.map((e,t)=>(0,a.jsxs)(`tr`,{children:[(0,a.jsxs)(`td`,{children:[(0,a.jsx)(`input`,{"aria-label":u.model,onChange:e=>_(t,{id:e.target.value}),value:e.id}),(0,a.jsx)(`small`,{children:e.aliases.join(`, `)||u.noAliases})]}),(0,a.jsx)(`td`,{children:(0,a.jsxs)(`select`,{onChange:e=>_(t,{provider:e.target.value}),value:e.provider,children:[(0,a.jsx)(`option`,{value:`openai`,children:`OpenAI`}),(0,a.jsx)(`option`,{value:`anthropic`,children:`Anthropic`})]})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0`,onChange:e=>_(t,{input_per_million_usd:v(e.target.value)}),step:`0.001`,type:`number`,value:e.input_per_million_usd})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0`,onChange:e=>_(t,{cached_input_per_million_usd:v(e.target.value)}),step:`0.001`,type:`number`,value:e.cached_input_per_million_usd??0})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0`,onChange:e=>_(t,{output_per_million_usd:v(e.target.value)}),step:`0.001`,type:`number`,value:e.output_per_million_usd})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0`,onChange:e=>_(t,{reasoning_per_million_usd:v(e.target.value)}),step:`0.001`,type:`number`,value:e.reasoning_per_million_usd??0})}),[`priority_input_per_million_usd`,`priority_cached_input_per_million_usd`,`priority_output_per_million_usd`,`priority_reasoning_per_million_usd`].map(n=>(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0`,onChange:e=>_(t,{[n]:v(e.target.value)}),step:`0.001`,type:`number`,value:e[n]??0})},n)),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0`,onChange:e=>_(t,{long_context_threshold_tokens:v(e.target.value)||null}),step:`1`,type:`number`,value:e.long_context_threshold_tokens??0})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0.001`,onChange:e=>_(t,{long_context_input_multiplier:Math.max(.001,Number(e.target.value)||1)}),step:`0.1`,type:`number`,value:e.long_context_input_multiplier})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`input`,{min:`0.001`,onChange:e=>_(t,{long_context_output_multiplier:Math.max(.001,Number(e.target.value)||1)}),step:`0.1`,type:`number`,value:e.long_context_output_multiplier})}),(0,a.jsx)(`td`,{children:(0,a.jsx)(`button`,{"aria-label":u.removeModel,onClick:()=>f(e=>({...e,models:e.models.filter((e,n)=>n!==t)})),type:`button`,children:`×`})})]},e.id))})]})}),(0,a.jsxs)(`footer`,{children:[(0,a.jsxs)(`button`,{onClick:()=>f(e=>({...e,models:[...e.models,s(n)]})),type:`button`,children:[`+ `,u.addModel]}),(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`button`,{onClick:o,type:`button`,children:u.cancel}),(0,a.jsx)(`button`,{disabled:h,onClick:async()=>{g(!0);try{await c(d),await l(p),o()}finally{g(!1)}},type:`button`,children:h?u.saving:u.save})]})]})]})})}function s(e=`pt-BR`){let t=r[e];return{id:t.newModel,provider:`openai`,aliases:[],input_per_million_usd:0,cached_input_per_million_usd:0,output_per_million_usd:0,reasoning_per_million_usd:0,priority_input_per_million_usd:null,priority_cached_input_per_million_usd:null,priority_output_per_million_usd:null,priority_reasoning_per_million_usd:null,reasoning_billed_separately:!1,long_context_threshold_tokens:null,long_context_input_multiplier:1,long_context_output_multiplier:1,source_label:t.manualOverride,source_url:`https://developers.openai.com/api/docs/pricing`,notes:[t.editedNote]}}export{o as PricingSettingsPage};
@@ -1,3 +1,3 @@
1
- import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{E as t,_ as n,v as r,w as i,y as a}from"./cost-monitor-B0Jwz_rk.js";import{t as o}from"./index-oqGtXP7j.js";var s=e(t(),1),c=i();function l({children:e,className:t=``,title:n}){return(0,c.jsxs)(`section`,{className:`project-settings-card ${t}`,children:[(0,c.jsx)(`h2`,{children:n}),(0,c.jsx)(`div`,{className:`project-settings-fields`,children:e})]})}function u({children:e,className:t=``,hint:n,label:r}){return(0,c.jsxs)(`div`,{className:`project-settings-field ${t}`,children:[(0,c.jsx)(`span`,{children:r}),e,n?(0,c.jsx)(`small`,{children:n}):null]})}var d=[{id:`primary_language`,defaultName:`TypeScript`,scope:`backend`},{id:`backend_runtime`,defaultName:`Node.js`,scope:`backend`},{id:`backend_api`,defaultName:`Hono`,scope:`backend`},{id:`query_builder`,defaultName:`Kysely`,scope:`backend`},{id:`database`,defaultName:`PostgreSQL via Supabase`,scope:`backend`},{id:`auth_storage`,defaultName:`Supabase Auth + Storage`,scope:`backend`},{id:`cache_messaging`,defaultName:`Redis`,scope:`backend`},{id:`async_queue`,defaultName:`BullMQ`,scope:`backend`},{id:`backend_infrastructure`,defaultName:`Terraform`,scope:`backend`},{id:`backend_hosting`,defaultName:`Hostinger VPS`,scope:`backend`},{id:`web_framework`,defaultName:`React`,scope:`frontend`},{id:`web_language`,defaultName:`TypeScript`,scope:`frontend`},{id:`web_build`,defaultName:`Vite`,scope:`frontend`},{id:`frontend_hosting`,defaultName:`Cloudflare Pages`,scope:`frontend`},{id:`site_framework`,defaultName:`Astro`,scope:`site`},{id:`site_language`,defaultName:`TypeScript`,scope:`site`},{id:`site_islands`,defaultName:`React Islands`,scope:`site`},{id:`site_build`,defaultName:`Vite`,scope:`site`},{id:`site_hosting`,defaultName:`Cloudflare Pages`,scope:`site`},{id:`prometheus`,defaultName:`Prometheus`,scope:`observability`},{id:`grafana`,defaultName:`Grafana`,scope:`observability`},{id:`uptime_kuma`,defaultName:`Uptime Kuma`,scope:`observability`},{id:`cadvisor`,defaultName:`cAdvisor`,scope:`observability`},{id:`node_exporter`,defaultName:`node-exporter`,scope:`observability`},{id:`redis_exporter`,defaultName:`Redis Exporter`,scope:`observability`},{id:`k6`,defaultName:`k6`,scope:`testing`},{id:`autocannon`,defaultName:`autocannon`,scope:`testing`}],f=new Set([`database`,`auth_storage`,`backend_hosting`,`frontend_hosting`,`site_hosting`]);function p(e){return f.has(e)}function m(e){let{languages:t,components:n,...r}=e.stack.overrides,i=w(n)?n:{};return{components:Object.fromEntries(d.map(e=>{let t=i[e.id],n=w(t)?t:{};return[e.id,{name:C(n.name)||e.defaultName,version:C(n.version),reference:C(n.reference)}]})),otherOverrides:JSON.stringify(r,null,2)}}function h(e,t){let n=new Map(t.filter(e=>e.installation===`installed`&&e.version!==null).map(e=>[e.name.toLowerCase(),e.version]));return Object.fromEntries(d.map(t=>{let r=e[t.id],i=n.get(x(t.id));return[t.id,r.version!==``||i===void 0?r:{...r,version:i}]}))}function g(e,t,n){if(e.autonomy?.version===1&&e.execution&&e.execution.runtime!==`manual`&&e.execution.runtime!==`codex_native`&&e.execution.autonomous.provider!==`codex`)throw Error(`Autonomy-v1 exige Codex na execução gerenciada / requires Codex for managed execution. Selecione Codex; conversas diretas continuam disponíveis.`);let r=JSON.parse(n);if(!w(r))throw Error(`Demais overrides deve ser um objeto JSON.`);let{languages:i,components:a,...o}=r;for(let e of d){let n=t[e.id].version.trim();if(n!==``&&!p(e.id)&&!/^\d+\.\d+(?:\.\d+)?(?:[-+][0-9A-Za-z.-]+)?$/.test(n))throw Error(`A versão de ${t[e.id].name||e.defaultName} deve ser exata, como 22.16.0 ou 17.6, sem ^, ~, >= ou latest.`);if(p(e.id)&&(n.length>120||/[\r\n]/.test(n)))throw Error(`A referência de ${t[e.id].name||e.defaultName} deve ter uma única linha com até 120 caracteres.`)}let s=Object.fromEntries(d.map(e=>[e.id,{name:t[e.id].name.trim()||e.defaultName,version:t[e.id].version.trim(),reference:t[e.id].reference.trim()}])),c=w(e.stack.overrides.components)?e.stack.overrides.components:{};return{...e,stack:{...e.stack,overrides:{...o,components:{...c,...s},languages:{frontend:S(s,`frontend`),backend:S(s,`backend`),site:S(s,`site`)}}}}}function _(e){return[...new Set(e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean))]}function v(){return{runtime:`autonomous`,autonomous:{provider:`codex`,model:`gpt-6-sol`,max_parallelism:1,lease_ms:6e4}}}function y(e){if(e===`manual`)return{runtime:`manual`};if(e===`codex_native`)return{runtime:`codex_native`};if(e!==`managed`&&e!==`autonomous`)throw Error(`Unknown runtime: ${e}`);return{...v(),runtime:e}}function b(e){let t=e?.match(/^v?(\d+)\.(\d+)\.\d+(?:[-+][0-9A-Za-z.-]+)?$/);return t?`v${t[1]}.${t[2]}`:null}function x(e){return e===`backend_runtime`?`node.js`:e===`backend_api`?`hono`:e===`site_framework`?`astro`:e===`cache_messaging`?`redis`:e===`async_queue`?`bullmq`:e===`web_framework`||e===`site_islands`?`react`:e===`web_build`||e===`site_build`?`vite`:e===`primary_language`||e===`web_language`||e===`site_language`?`typescript`:``}function S(e,t){return[...new Set(d.filter(e=>e.scope===t).map(t=>e[t.id].name.trim()).filter(Boolean))]}function C(e){return typeof e==`string`?e:``}function w(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var T={primary_language:{pt:`Linguagem principal`,en:`Primary language`},backend_runtime:{pt:`Runtime backend`,en:`Backend runtime`},backend_api:{pt:`Framework backend / API`,en:`Backend framework / API`},query_builder:{pt:`Query builder`,en:`Query builder`},database:{pt:`Banco de dados`,en:`Database`},auth_storage:{pt:`Autenticação e Storage`,en:`Authentication and Storage`},cache_messaging:{pt:`Cache e mensageria`,en:`Cache and messaging`},async_queue:{pt:`Filas e processamento assíncrono`,en:`Queues and async processing`},backend_infrastructure:{pt:`Infraestrutura backend`,en:`Backend infrastructure`},backend_hosting:{pt:`Hospedagem do backend`,en:`Backend hosting`},web_framework:{pt:`Framework do Web App`,en:`Web App framework`},web_language:{pt:`Linguagem do Web App`,en:`Web App language`},web_build:{pt:`Build do Web App`,en:`Web App build`},frontend_hosting:{pt:`Hospedagem do frontend`,en:`Frontend hosting`},site_framework:{pt:`Framework do site`,en:`Site framework`},site_language:{pt:`Linguagem do site`,en:`Site language`},site_islands:{pt:`Componentes interativos`,en:`Interactive components`},site_build:{pt:`Build do site`,en:`Site build`},site_hosting:{pt:`Hospedagem do site`,en:`Site hosting`},prometheus:{pt:`Coleta de métricas`,en:`Metrics collection`},grafana:{pt:`Dashboards`,en:`Dashboards`},uptime_kuma:{pt:`Monitoramento de disponibilidade`,en:`Availability monitoring`},cadvisor:{pt:`Métricas de containers`,en:`Container metrics`},node_exporter:{pt:`Métricas de host`,en:`Host metrics`},redis_exporter:{pt:`Métricas do Redis`,en:`Redis metrics`},k6:{pt:`Teste de carga`,en:`Load testing`},autocannon:{pt:`Teste HTTP de carga`,en:`HTTP load testing`}};function E({components:e,locale:t,onChange:n,referenceHint:r,versionHint:i}){let a=[{scope:`backend`,title:t===`pt-BR`?`Backend e dados`:`Backend and data`},{scope:`frontend`,title:`Web App`},{scope:`site`,title:t===`pt-BR`?`Site e landing pages`:`Site and landing pages`},{scope:`observability`,title:t===`pt-BR`?`Observabilidade`:`Observability`},{scope:`testing`,title:t===`pt-BR`?`Testes sob demanda`:`On-demand testing`}],o=(t,r,i)=>n({...e,[t]:{...e[t],[r]:i}});return(0,c.jsxs)(`div`,{className:`project-stack-editor`,children:[a.map(n=>(0,c.jsxs)(`section`,{children:[(0,c.jsx)(`h3`,{children:n.title}),(0,c.jsxs)(`div`,{className:`project-stack-table`,children:[(0,c.jsxs)(`div`,{className:`project-stack-table-head`,"aria-hidden":`true`,children:[(0,c.jsx)(`span`,{children:`Item`}),(0,c.jsx)(`span`,{children:t===`pt-BR`?`Tecnologia`:`Technology`}),(0,c.jsx)(`span`,{children:t===`pt-BR`?`Versão atual / referência`:`Current version / reference`}),(0,c.jsx)(`span`,{children:t===`pt-BR`?`Pacote / imagem / serviço`:`Package / image / service`})]}),d.filter(e=>e.scope===n.scope).map(n=>(0,c.jsxs)(`div`,{className:`project-stack-row`,children:[(0,c.jsx)(`strong`,{children:T[n.id][t===`pt-BR`?`pt`:`en`]}),(0,c.jsx)(`input`,{"aria-label":`${T[n.id].pt}: tecnologia`,value:e[n.id].name,onChange:e=>o(n.id,`name`,e.target.value)}),(0,c.jsx)(`input`,{"aria-label":`${T[n.id].pt}: ${p(n.id)?`versão atual ou referência`:`versão exata`}`,className:p(n.id)?`is-reference-value`:void 0,inputMode:p(n.id)?`text`:`decimal`,placeholder:p(n.id)?t===`pt-BR`?`Serviço em nuvem`:`Cloud service`:`x.y.z`,title:p(n.id)?e[n.id].version:void 0,value:e[n.id].version,onChange:e=>o(n.id,`version`,e.target.value)}),(0,c.jsx)(`input`,{"aria-label":`${T[n.id].pt}: referência`,placeholder:`npm:pacote ou service:nome`,value:e[n.id].reference,onChange:e=>o(n.id,`reference`,e.target.value)})]},n.id))]})]},n.scope)),(0,c.jsxs)(`div`,{className:`project-stack-format-help`,children:[(0,c.jsxs)(`p`,{children:[(0,c.jsx)(`strong`,{children:t===`pt-BR`?`Formato da versão:`:`Version format:`}),` `,i]}),(0,c.jsxs)(`p`,{children:[(0,c.jsx)(`strong`,{children:t===`pt-BR`?`Formato da referência:`:`Reference format:`}),` `,r]})]})]})}function D({components:e,showTitle:t=!0,text:n}){return e.length===0?null:(0,c.jsxs)(`section`,{className:`project-stack-versions`,"aria-label":n.versions,children:[t?(0,c.jsx)(`h3`,{children:n.versions}):null,(0,c.jsx)(`div`,{children:e.map(e=>(0,c.jsxs)(`article`,{children:[(0,c.jsxs)(`div`,{className:`project-stack-version-identity`,children:[(0,c.jsx)(`strong`,{children:e.name}),(0,c.jsxs)(`code`,{children:[n.current,`: `,e.version??n.versionUnavailable]}),e.configured_version!==null&&e.configured_version!==e.version?(0,c.jsxs)(`code`,{children:[n.configured,`: `,e.configured_version]}):null]}),(0,c.jsx)(`span`,{className:`is-${e.verification}`,children:e.installation===`runtime`?n.runtime:e.installation===`installed`?n.installed:e.installation===`bundled`?n.bundled:n.missing}),e.source?(0,c.jsx)(`small`,{children:e.source}):null]},e.name))})]})}function O(e){return{health:e.health??{state:`unknown`,scope:`settings_runtime`},dependencies:k(e.dependencies,e.dependencies?.installed),documentation:k(e.documentation,e.documentation?.available),profile:e.installation_profile??null,hasMissingDependencies:(A(e.dependencies?.missing)??0)>0}}function k(e,t){let n=e?.state??`unknown`,r=A(e?.percent);return{completed:A(t),total:A(e?.applicable),percentage:(n===`complete`||n===`incomplete`)&&r!==null&&r<=100?r:null,state:n}}function A(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0?e:null}function j(e){return e.filter(e=>![`database`,`installation`].includes(e.id))}var M={"pt-BR":{eyebrow:`Configurações`,title:`Configuração do projeto`,intro:`Edite o arquivo central do projeto com validação do schema antes da gravação.`,loading:`Carregando…`,loadError:`Não foi possível carregar as configurações do projeto.`,retry:`Tentar novamente`,back:`Voltar ao dashboard`,save:`Salvar configurações`,saving:`Validando e salvando…`,saved:`Configurações salvas e validadas.`,framework:`Framework ZAIP-AIOS`,frameworkHint:`Ativa ou desativa o framework para este projeto.`,identity:`Identidade do projeto`,workspacePath:`Caminho do projeto`,workspacePathHint:`Pasta local usada por esta instância do Dashboard.`,workspacePathLoading:`Identificando caminho…`,workspacePathUnavailable:`Caminho indisponível`,stack:`Stack e linguagens`,execution:`Execução`,assurance:`Assurance`,executionToggleHint:`Grava ou remove o bloco execution. Sem ele, o projeto usa execução manual.`,runtimeHint:`Managed gerencia PRDs/SPECs e mantém avulsas diretas. Manual não inicia provider; autonomous permite execução gerenciada também para Task avulsa por comando explícito.`,providerHint:`Provider que inicia os agentes da execução autônoma: Codex ou Claude.`,autonomyProviderHint:`Autonomy-v1 exige Codex para execução gerenciada. Claude continua disponível em conversas diretas ou no protocolo legado.`,executionModelHint:`Modelo-base do runtime autônomo. A política automática de PRD/SPEC ainda pode selecionar um modelo permitido por agente.`,parallelismHint:`Teto de agentes simultâneos. O valor efetivo é o menor limite entre projeto, DAG, provider e squad.`,leaseHint:`Tempo de lease configurado para o coordenador autônomo.`,assuranceToggleHint:`Ativa ou remove os gates de evidência, revisão e qualidade do projeto. Recomenda-se manter ativo.`,assuranceVersionHint:`Versão do contrato de assurance. É fixa e somente leitura.`,assuranceDepthHint:`Auto ajusta o rigor ao escopo; base exige o conjunto padrão; elevated amplia validações para mudanças mais abrangentes.`,finalCommitHint:`Exige que as evidências comprovem o commit final integrado. Sinais de produção ou migração ainda podem exigir isso mesmo quando desativado.`,context:`Contexto`,overview:`Visão geral do projeto`,metricLabels:{agents:`Agentes`,squads:`Squads`,skills:`Skills`,rules:`Rules`,hooks:`Hooks`},areaLabels:{brandbook:`Brandbook`,design_system:`Design System`,software_architecture:`Arquitetura de Software`,growth_strategy:`Estratégia de Growth`,marketing_strategy:`Estratégia de Marketing`,sales_playbook:`Playbook de Sales`},available:`Criado`,artifactUnavailable:`Ainda não criado`,componentGuide:`Preencha cada responsabilidade separadamente. Use a versão exata do software e, para serviços em nuvem ou hospedagem, informe Serviço em nuvem.`,versionHint:`Software: 22.16.0 ou 17.6, sem prefixos (^, ~, >=). Serviço gerenciado: Serviço em nuvem. Hospedagem: Serviço em nuvem.`,referenceHint:`Ex.: npm:hono, docker:node:22.16.0-bookworm-slim, service:supabase ou provider:cloudflare-pages.`,overrides:`Opções avançadas (JSON)`,overridesHint:`Use apenas fatos técnicos transversais confirmados. Deixe vazio quando não houver exceções.`,versions:`Versões detectadas no workspace`,exact:`Verificada`,constraint:`Requisito`,versionUnavailable:`Não encontrada`,runtime:`Runtime do Dashboard`,installed:`Instalado no projeto`,missing:`Ausente no projeto`,bundled:`Empacotado no Dashboard`,current:`Atual`,configured:`Configurado`,health:`Saúde`,dependencies:`Dependências técnicas`,documentation:`Documentação`,unknown:`Desconhecido`,unavailable:`Indisponível`,notApplicable:`Não aplicável`,complete:`Completo`,incomplete:`Incompleto`,incompleteInstallation:`Há dependências técnicas locais ausentes neste computador.`,dismiss:`Fechar aviso`,contextGuide:`O contexto começa pelas fontes canônicas e inclui somente arquivos relevantes para a tarefa. Saídas geradas são consultadas apenas em setup, release ou checagem de paridade.`,contextDomains:`Branding, Marketing, Growth e Sales são usados sob demanda pelos respectivos especialistas, quando houver uma tarefa e artefatos desses domínios. Não os adicione aqui apenas por existirem como capacidades.`},"en-US":{eyebrow:`Settings`,title:`Project settings`,intro:`Edit the central project file with schema validation before writing.`,loading:`Loading…`,loadError:`Project settings could not be loaded.`,retry:`Try again`,back:`Back to dashboard`,save:`Save settings`,saving:`Validating and saving…`,saved:`Settings saved and validated.`,framework:`ZAIP-AIOS framework`,frameworkHint:`Enable or disable the framework for this project.`,identity:`Project identity`,workspacePath:`Project path`,workspacePathHint:`Local folder used by this Dashboard instance.`,workspacePathLoading:`Identifying path…`,workspacePathUnavailable:`Path unavailable`,stack:`Stack and languages`,execution:`Execution`,assurance:`Assurance`,executionToggleHint:`Writes or removes the execution block. Without it, the project uses manual execution.`,runtimeHint:`Managed runs PRDs/SPECs while standalone Tasks stay direct. Manual never starts a provider; autonomous also permits explicitly commanded managed standalone execution.`,providerHint:`Provider that starts autonomous execution agents: Codex or Claude.`,autonomyProviderHint:`Autonomy-v1 requires Codex for managed execution. Claude remains available for direct conversations or the legacy protocol.`,executionModelHint:`Base model for the autonomous runtime. PRD/SPEC automatic policy may still select an allowed model per agent.`,parallelismHint:`Maximum simultaneous agents. Effective parallelism is the smallest project, DAG, provider, and squad limit.`,leaseHint:`Lease duration configured for the autonomous coordinator.`,assuranceToggleHint:`Enables or removes project evidence, review, and quality gates. Keeping it enabled is recommended.`,assuranceVersionHint:`Assurance contract version. It is fixed and read-only.`,assuranceDepthHint:`Auto adapts rigor to scope; base uses the standard set; elevated expands validation for broader changes.`,finalCommitHint:`Requires evidence for the final integrated commit. Production or migration signals may still require it when disabled.`,context:`Context`,overview:`Project overview`,metricLabels:{agents:`Agents`,squads:`Squads`,skills:`Skills`,rules:`Rules`,hooks:`Hooks`},areaLabels:{brandbook:`Brandbook`,design_system:`Design System`,software_architecture:`Software Architecture`,growth_strategy:`Growth Strategy`,marketing_strategy:`Marketing Strategy`,sales_playbook:`Sales Playbook`},available:`Created`,artifactUnavailable:`Not created yet`,componentGuide:`Fill each responsibility separately. Use an exact software version and, for cloud services or hosting, enter Cloud service.`,versionHint:`Software: 22.16.0 or 17.6, without prefixes (^, ~, >=). Managed service: Cloud service. Hosting: Cloud service.`,referenceHint:`E.g. npm:hono, docker:node:22.16.0-bookworm-slim, service:supabase, or provider:cloudflare-pages.`,overrides:`Advanced options (JSON)`,overridesHint:`Use only confirmed cross-cutting technical facts. Leave empty when there are no exceptions.`,versions:`Versions detected in the workspace`,exact:`Verified`,constraint:`Requirement`,versionUnavailable:`Not found`,runtime:`Dashboard runtime`,installed:`Installed in project`,missing:`Missing from project`,bundled:`Bundled in Dashboard`,current:`Current`,configured:`Configured`,health:`Health`,dependencies:`Technical dependencies`,documentation:`Documentation`,unknown:`Unknown`,unavailable:`Unavailable`,notApplicable:`Not applicable`,complete:`Complete`,incomplete:`Incomplete`,incompleteInstallation:`Some local technical dependencies are missing on this computer.`,dismiss:`Dismiss notification`,contextGuide:`Context starts from canonical sources and includes only files relevant to the task. Generated outputs are consulted only for setup, release, or parity checks.`,contextDomains:`Branding, Marketing, Growth, and Sales are used on demand by their respective specialists when there is a task and artifacts in those domains. Do not add them here merely because they exist as capabilities.`}},N=`autonomy-v1`,P=n([`essential`,`balanced`,`persistent`]),F=a({version:r(1),preset:P}).strict(),I=Object.freeze({essential:Object.freeze({label:`Essencial`,attempts:4,replans:1,automatic_astra:!1}),balanced:Object.freeze({label:`Equilibrado`,attempts:10,replans:3,automatic_astra:!0}),persistent:Object.freeze({label:`Persistente — ilimitado`,attempts:null,replans:null,automatic_astra:!0})});function L(e){let t=F.parse(e??{version:1,preset:`balanced`});return Object.freeze({version:N,preset:t.preset,...I[t.preset],repairs_per_replan:3})}function R({value:e,onChange:t,disabled:n=!1,locale:r=`pt-BR`}){let i=(0,s.useId)(),a=L(e),o=r===`pt-BR`;return(0,c.jsxs)(`div`,{children:[!e&&(0,c.jsx)(`p`,{children:o?`Projeto legado: selecione e salve um perfil para adotar os novos controles nas novas Tasks.`:`Legacy project: select and save a preset to adopt the new controls for new Tasks.`}),(0,c.jsxs)(`label`,{className:`project-settings-field`,htmlFor:i,children:[(0,c.jsx)(`strong`,{children:o?`Perfil de autonomia`:`Autonomy preset`}),(0,c.jsx)(`select`,{id:i,"aria-describedby":`${i}-detail`,disabled:n,value:a.preset,onChange:e=>t({version:1,preset:P.parse(e.target.value)}),children:P.options.map(e=>(0,c.jsx)(`option`,{value:e,children:o?I[e].label:{essential:`Essential`,balanced:`Balanced`,persistent:`Persistent — unlimited`}[e]},e))})]}),(0,c.jsx)(`p`,{id:`${i}-detail`,role:`status`,children:a.attempts===null?o?`Sem limite de tentativas ou replanejamentos. Pode continuar indefinidamente e consumir créditos até você cancelar.`:`No attempt or replanning limit. May continue indefinitely and consume credits until you cancel.`:o?`${a.attempts} execuções por Task (1 inicial + ${a.attempts-1} reparações), até ${a.replans} replanejamento(s). Sem abandono por tempo.`:`${a.attempts} executions per Task (1 initial + ${a.attempts-1} repairs), up to ${a.replans} replan(s). No time-based abandonment.`}),(0,c.jsx)(`p`,{children:a.automatic_astra?o?`Replanejamento: Sol/high no primeiro, Astra/high a partir do segundo. Astra/high pode executar a partir do terceiro.`:`Replanning: Sol/high first, Astra/high from the second. Astra/high may execute from the third.`:o?`Nunca usa Astra automaticamente. Exceção: agente principal de tarefa avulsa com Astra selecionado por você no Codex.`:`Never selects Astra automatically. Exception: a standalone principal with Astra manually selected in Codex.`}),(0,c.jsx)(`p`,{children:o?`A mudança vale para novas Tasks; as iniciadas conservam o perfil e o histórico. Tarefas avulsas priorizam execução direta. Ao delegar, a ZAIP informa que modelo e esforço dos subagentes podem mudar. Critérios de aceite e permissões não são reduzidos.`:`Changes apply to new Tasks; started Tasks retain their preset and history. Standalone work prefers direct execution. Delegation discloses that subagent model and effort may differ. Acceptance criteria and permissions are not reduced.`})]})}function z({api:e,locale:t,onClose:n}){let r=M[t],[i,a]=(0,s.useState)(null),[d,f]=(0,s.useState)(null),[p,v]=(0,s.useState)(null),[x,S]=(0,s.useState)(`{}`),[C,w]=(0,s.useState)(!1),[T,k]=(0,s.useState)(!0),[A,N]=(0,s.useState)(null),[P,F]=(0,s.useState)(null),[I,L]=(0,s.useState)(!1),z=o(),B=d===null?null:O(d),H=(0,s.useCallback)(async()=>{k(!0),N(null);try{let[t,n]=await Promise.all([e.projectSettings(),e.projectOverview()]),r=m(t);a(t),f(n),v(h(r.components,n.stack_components)),S(r.otherOverrides)}catch(e){N(e instanceof Error?e.message:String(e))}finally{k(!1)}},[e]);(0,s.useEffect)(()=>{H()},[H]),(0,s.useEffect)(()=>{L(d!==null&&O(d).hasMissingDependencies)},[d]);async function U(t){if(t.preventDefault(),i!==null){w(!0),N(null),F(null);try{let t=await e.saveProjectSettings(g(i,p??m(i).components,x)),n=await e.projectOverview(),o=m(t);a(t),f(n),v(o.components),S(o.otherOverrides),F(r.saved)}catch(e){N(e instanceof Error?e.message:String(e))}finally{w(!1)}}}if(i===null){let e=T&&A===null;return(0,c.jsx)(`main`,{"aria-busy":e,className:`project-settings-state`,children:(0,c.jsxs)(`div`,{"aria-live":e?`polite`:`assertive`,className:`project-settings-state-card`,role:e?`status`:`alert`,children:[e?(0,c.jsx)(`span`,{"aria-hidden":`true`,className:`project-settings-loader`}):null,(0,c.jsx)(`p`,{children:r.eyebrow}),(0,c.jsx)(`h1`,{children:A?r.loadError:r.loading}),A?(0,c.jsx)(`p`,{className:`project-settings-state-error`,children:A}):null,A?(0,c.jsx)(`button`,{onClick:()=>void H(),type:`button`,children:r.retry}):null,(0,c.jsxs)(`button`,{onClick:n,type:`button`,children:[`← `,r.back]})]})})}return(0,c.jsxs)(`main`,{className:`project-settings-page`,children:[(0,c.jsxs)(`form`,{onSubmit:U,children:[(0,c.jsxs)(`header`,{className:`project-settings-header`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`p`,{children:r.eyebrow}),(0,c.jsx)(`h1`,{children:r.title}),(0,c.jsx)(`span`,{children:r.intro})]}),(0,c.jsxs)(`button`,{className:`project-settings-back`,onClick:n,type:`button`,children:[`← `,r.back]})]}),A?(0,c.jsx)(`div`,{className:`project-settings-message is-error`,role:`alert`,children:A}):null,P?(0,c.jsx)(`div`,{className:`project-settings-message is-success`,role:`status`,children:P}):null,(0,c.jsxs)(`section`,{className:`project-settings-feature`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsxs)(`h2`,{children:[r.framework,b(d?.framework_version)?` - ${b(d?.framework_version)}`:``]}),(0,c.jsx)(`p`,{children:r.frameworkHint})]}),(0,c.jsx)(W,{checked:i.zaip?.enabled===!0,label:t===`pt-BR`?`Framework ativo`:`Framework enabled`,onChange:e=>a({...i,zaip:{enabled:e}})})]}),(0,c.jsxs)(`section`,{className:`project-settings-summary`,"aria-label":r.overview,children:[d&&j(d.metrics).map(e=>(0,c.jsxs)(`div`,{className:`project-settings-metric`,children:[(0,c.jsx)(`strong`,{children:e.value}),(0,c.jsx)(`span`,{children:r.metricLabels[e.id]})]},e.id)),B?(0,c.jsx)(V,{installation:B,locale:t}):null]}),(0,c.jsx)(l,{className:`is-wide`,title:r.overview,children:(0,c.jsx)(`div`,{className:`project-overview`,"aria-live":`polite`,children:d?.areas.map(e=>(0,c.jsxs)(`div`,{className:`project-overview-item`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`strong`,{children:r.areaLabels[e.id]}),(0,c.jsx)(`code`,{children:e.artifact})]}),(0,c.jsx)(`span`,{className:e.available?`is-available`:`is-unavailable`,children:e.available===!0?r.available:e.available===!1?r.artifactUnavailable:r.unavailable})]},e.id))})}),(0,c.jsx)(l,{className:`is-wide project-detected-versions`,title:r.versions,children:(0,c.jsx)(D,{components:d?.stack_components??[],text:r,showTitle:!1})}),(0,c.jsxs)(`div`,{className:`project-settings-grid`,children:[(0,c.jsxs)(l,{className:`is-wide project-identity-card`,title:r.identity,children:[(0,c.jsx)(u,{className:`project-settings-workspace-field`,hint:r.workspacePathHint,label:r.workspacePath,children:(0,c.jsx)(`code`,{className:`project-settings-workspace-path`,children:z.status?.workspace??(z.unavailable?r.workspacePathUnavailable:r.workspacePathLoading)})}),(0,c.jsx)(u,{label:`Schema`,children:(0,c.jsx)(`input`,{readOnly:!0,value:i.schema_version})}),(0,c.jsx)(u,{label:t===`pt-BR`?`ID do projeto`:`Project ID`,children:(0,c.jsx)(`input`,{required:!0,value:i.project.id,onChange:e=>a({...i,project:{...i.project,id:e.target.value}})})}),(0,c.jsx)(u,{label:t===`pt-BR`?`Nome do projeto`:`Project name`,children:(0,c.jsx)(`input`,{required:!0,value:i.project.name,onChange:e=>a({...i,project:{...i.project,name:e.target.value}})})}),(0,c.jsx)(u,{label:`Timezone IANA`,children:(0,c.jsx)(`input`,{required:!0,value:i.project.timezone,onChange:e=>a({...i,project:{...i.project,timezone:e.target.value}})})})]}),(0,c.jsxs)(l,{className:`is-wide`,title:r.stack,children:[(0,c.jsx)(`p`,{className:`project-stack-guide`,children:r.componentGuide}),p?(0,c.jsx)(E,{components:p,locale:t,onChange:v,referenceHint:r.referenceHint,versionHint:r.versionHint}):null,(0,c.jsxs)(`details`,{className:`project-settings-advanced`,children:[(0,c.jsx)(`summary`,{children:r.overrides}),(0,c.jsx)(u,{hint:r.overridesHint,label:`Overrides`,children:(0,c.jsx)(`textarea`,{rows:7,value:x,onChange:e=>S(e.target.value)})})]})]}),(0,c.jsxs)(l,{title:r.execution,children:[(0,c.jsx)(G,{checked:i.execution!==void 0,hint:r.executionToggleHint,label:t===`pt-BR`?`Incluir configuração de execução`:`Include execution configuration`,onChange:e=>a({...i,execution:e?{runtime:`codex_native`}:void 0})}),i.execution?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(u,{hint:r.runtimeHint,label:`Runtime`,children:(0,c.jsxs)(`select`,{value:i.execution.runtime,"aria-label":`Runtime`,onChange:e=>a({...i,execution:y(e.target.value)}),children:[(0,c.jsx)(`option`,{value:`manual`,children:`manual`}),(0,c.jsx)(`option`,{value:`codex_native`,children:`codex_native (Codex)`}),(0,c.jsx)(`option`,{value:`managed`,children:`managed (PRD/SPEC)`}),(0,c.jsx)(`option`,{value:`autonomous`,children:`autonomous`})]})}),i.execution.runtime!==`manual`&&i.execution.runtime!==`codex_native`?(0,c.jsx)(K,{config:i,setConfig:a,text:r}):null]}):null]}),(0,c.jsx)(l,{title:t===`pt-BR`?`Autonomia e recuperação`:`Autonomy and recovery`,children:(0,c.jsx)(R,{value:i.autonomy,disabled:C,locale:t,onChange:e=>a({...i,autonomy:e})})}),(0,c.jsxs)(l,{title:r.assurance,children:[(0,c.jsx)(G,{checked:i.assurance!==void 0,hint:r.assuranceToggleHint,label:t===`pt-BR`?`Incluir assurance`:`Include assurance`,onChange:e=>a({...i,assurance:e?{version:1,standard_depth:`auto`,require_final_commit:!0}:void 0})}),i.assurance?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(u,{hint:r.assuranceVersionHint,label:t===`pt-BR`?`Versão`:`Version`,children:(0,c.jsx)(`input`,{readOnly:!0,value:i.assurance.version})}),(0,c.jsx)(u,{hint:r.assuranceDepthHint,label:t===`pt-BR`?`Profundidade padrão`:`Standard depth`,children:(0,c.jsxs)(`select`,{value:i.assurance.standard_depth,onChange:e=>a({...i,assurance:{...i.assurance??{version:1,standard_depth:`auto`,require_final_commit:!0},standard_depth:e.target.value}}),children:[(0,c.jsx)(`option`,{value:`auto`,children:`auto`}),(0,c.jsx)(`option`,{value:`base`,children:`base`}),(0,c.jsx)(`option`,{value:`elevated`,children:`elevated`})]})}),(0,c.jsx)(W,{checked:i.assurance.require_final_commit,hint:r.finalCommitHint,label:t===`pt-BR`?`Exigir commit final`:`Require final commit`,onChange:e=>a({...i,assurance:{...i.assurance??{version:1,standard_depth:`auto`,require_final_commit:!0},require_final_commit:e}})})]}):null]}),(0,c.jsxs)(l,{className:`is-wide`,title:r.context,children:[(0,c.jsx)(G,{checked:i.context!==void 0,label:t===`pt-BR`?`Incluir raízes de contexto`:`Include context roots`,onChange:e=>a({...i,context:e?{canonical_roots:[`packages`],projection_roots:[]}:void 0})}),i.context?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`project-settings-guidance`,children:[(0,c.jsx)(`p`,{children:r.contextGuide}),(0,c.jsx)(`p`,{children:r.contextDomains})]}),(0,c.jsxs)(`div`,{className:`project-settings-fields two-columns`,children:[(0,c.jsx)(u,{hint:t===`pt-BR`?`Uma pasta por linha. Estas são as fontes principais do projeto.`:`One folder per line. These are the project's primary sources.`,label:t===`pt-BR`?`Fontes canônicas`:`Canonical sources`,children:(0,c.jsx)(`textarea`,{required:!0,rows:5,value:i.context.canonical_roots.join(`
1
+ import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{E as t,_ as n,v as r,w as i,y as a}from"./cost-monitor-B0Jwz_rk.js";import{t as o}from"./index-DGUs5bRP.js";var s=e(t(),1),c=i();function l({children:e,className:t=``,title:n}){return(0,c.jsxs)(`section`,{className:`project-settings-card ${t}`,children:[(0,c.jsx)(`h2`,{children:n}),(0,c.jsx)(`div`,{className:`project-settings-fields`,children:e})]})}function u({children:e,className:t=``,hint:n,label:r}){return(0,c.jsxs)(`div`,{className:`project-settings-field ${t}`,children:[(0,c.jsx)(`span`,{children:r}),e,n?(0,c.jsx)(`small`,{children:n}):null]})}var d=[{id:`primary_language`,defaultName:`TypeScript`,scope:`backend`},{id:`backend_runtime`,defaultName:`Node.js`,scope:`backend`},{id:`backend_api`,defaultName:`Hono`,scope:`backend`},{id:`query_builder`,defaultName:`Kysely`,scope:`backend`},{id:`database`,defaultName:`PostgreSQL via Supabase`,scope:`backend`},{id:`auth_storage`,defaultName:`Supabase Auth + Storage`,scope:`backend`},{id:`cache_messaging`,defaultName:`Redis`,scope:`backend`},{id:`async_queue`,defaultName:`BullMQ`,scope:`backend`},{id:`backend_infrastructure`,defaultName:`Terraform`,scope:`backend`},{id:`backend_hosting`,defaultName:`Hostinger VPS`,scope:`backend`},{id:`web_framework`,defaultName:`React`,scope:`frontend`},{id:`web_language`,defaultName:`TypeScript`,scope:`frontend`},{id:`web_build`,defaultName:`Vite`,scope:`frontend`},{id:`frontend_hosting`,defaultName:`Cloudflare Pages`,scope:`frontend`},{id:`site_framework`,defaultName:`Astro`,scope:`site`},{id:`site_language`,defaultName:`TypeScript`,scope:`site`},{id:`site_islands`,defaultName:`React Islands`,scope:`site`},{id:`site_build`,defaultName:`Vite`,scope:`site`},{id:`site_hosting`,defaultName:`Cloudflare Pages`,scope:`site`},{id:`prometheus`,defaultName:`Prometheus`,scope:`observability`},{id:`grafana`,defaultName:`Grafana`,scope:`observability`},{id:`uptime_kuma`,defaultName:`Uptime Kuma`,scope:`observability`},{id:`cadvisor`,defaultName:`cAdvisor`,scope:`observability`},{id:`node_exporter`,defaultName:`node-exporter`,scope:`observability`},{id:`redis_exporter`,defaultName:`Redis Exporter`,scope:`observability`},{id:`k6`,defaultName:`k6`,scope:`testing`},{id:`autocannon`,defaultName:`autocannon`,scope:`testing`}],f=new Set([`database`,`auth_storage`,`backend_hosting`,`frontend_hosting`,`site_hosting`]);function p(e){return f.has(e)}function m(e){let{languages:t,components:n,...r}=e.stack.overrides,i=w(n)?n:{};return{components:Object.fromEntries(d.map(e=>{let t=i[e.id],n=w(t)?t:{};return[e.id,{name:C(n.name)||e.defaultName,version:C(n.version),reference:C(n.reference)}]})),otherOverrides:JSON.stringify(r,null,2)}}function h(e,t){let n=new Map(t.filter(e=>e.installation===`installed`&&e.version!==null).map(e=>[e.name.toLowerCase(),e.version]));return Object.fromEntries(d.map(t=>{let r=e[t.id],i=n.get(x(t.id));return[t.id,r.version!==``||i===void 0?r:{...r,version:i}]}))}function g(e,t,n){if(e.autonomy?.version===1&&e.execution&&e.execution.runtime!==`manual`&&e.execution.runtime!==`codex_native`&&e.execution.autonomous.provider!==`codex`)throw Error(`Autonomy-v1 exige Codex na execução gerenciada / requires Codex for managed execution. Selecione Codex; conversas diretas continuam disponíveis.`);let r=JSON.parse(n);if(!w(r))throw Error(`Demais overrides deve ser um objeto JSON.`);let{languages:i,components:a,...o}=r;for(let e of d){let n=t[e.id].version.trim();if(n!==``&&!p(e.id)&&!/^\d+\.\d+(?:\.\d+)?(?:[-+][0-9A-Za-z.-]+)?$/.test(n))throw Error(`A versão de ${t[e.id].name||e.defaultName} deve ser exata, como 22.16.0 ou 17.6, sem ^, ~, >= ou latest.`);if(p(e.id)&&(n.length>120||/[\r\n]/.test(n)))throw Error(`A referência de ${t[e.id].name||e.defaultName} deve ter uma única linha com até 120 caracteres.`)}let s=Object.fromEntries(d.map(e=>[e.id,{name:t[e.id].name.trim()||e.defaultName,version:t[e.id].version.trim(),reference:t[e.id].reference.trim()}])),c=w(e.stack.overrides.components)?e.stack.overrides.components:{};return{...e,stack:{...e.stack,overrides:{...o,components:{...c,...s},languages:{frontend:S(s,`frontend`),backend:S(s,`backend`),site:S(s,`site`)}}}}}function _(e){return[...new Set(e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean))]}function v(){return{runtime:`autonomous`,autonomous:{provider:`codex`,model:`gpt-6-sol`,max_parallelism:1,lease_ms:6e4}}}function y(e){if(e===`manual`)return{runtime:`manual`};if(e===`codex_native`)return{runtime:`codex_native`};if(e!==`managed`&&e!==`autonomous`)throw Error(`Unknown runtime: ${e}`);return{...v(),runtime:e}}function b(e){let t=e?.match(/^v?(\d+)\.(\d+)\.\d+(?:[-+][0-9A-Za-z.-]+)?$/);return t?`v${t[1]}.${t[2]}`:null}function x(e){return e===`backend_runtime`?`node.js`:e===`backend_api`?`hono`:e===`site_framework`?`astro`:e===`cache_messaging`?`redis`:e===`async_queue`?`bullmq`:e===`web_framework`||e===`site_islands`?`react`:e===`web_build`||e===`site_build`?`vite`:e===`primary_language`||e===`web_language`||e===`site_language`?`typescript`:``}function S(e,t){return[...new Set(d.filter(e=>e.scope===t).map(t=>e[t.id].name.trim()).filter(Boolean))]}function C(e){return typeof e==`string`?e:``}function w(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var T={primary_language:{pt:`Linguagem principal`,en:`Primary language`},backend_runtime:{pt:`Runtime backend`,en:`Backend runtime`},backend_api:{pt:`Framework backend / API`,en:`Backend framework / API`},query_builder:{pt:`Query builder`,en:`Query builder`},database:{pt:`Banco de dados`,en:`Database`},auth_storage:{pt:`Autenticação e Storage`,en:`Authentication and Storage`},cache_messaging:{pt:`Cache e mensageria`,en:`Cache and messaging`},async_queue:{pt:`Filas e processamento assíncrono`,en:`Queues and async processing`},backend_infrastructure:{pt:`Infraestrutura backend`,en:`Backend infrastructure`},backend_hosting:{pt:`Hospedagem do backend`,en:`Backend hosting`},web_framework:{pt:`Framework do Web App`,en:`Web App framework`},web_language:{pt:`Linguagem do Web App`,en:`Web App language`},web_build:{pt:`Build do Web App`,en:`Web App build`},frontend_hosting:{pt:`Hospedagem do frontend`,en:`Frontend hosting`},site_framework:{pt:`Framework do site`,en:`Site framework`},site_language:{pt:`Linguagem do site`,en:`Site language`},site_islands:{pt:`Componentes interativos`,en:`Interactive components`},site_build:{pt:`Build do site`,en:`Site build`},site_hosting:{pt:`Hospedagem do site`,en:`Site hosting`},prometheus:{pt:`Coleta de métricas`,en:`Metrics collection`},grafana:{pt:`Dashboards`,en:`Dashboards`},uptime_kuma:{pt:`Monitoramento de disponibilidade`,en:`Availability monitoring`},cadvisor:{pt:`Métricas de containers`,en:`Container metrics`},node_exporter:{pt:`Métricas de host`,en:`Host metrics`},redis_exporter:{pt:`Métricas do Redis`,en:`Redis metrics`},k6:{pt:`Teste de carga`,en:`Load testing`},autocannon:{pt:`Teste HTTP de carga`,en:`HTTP load testing`}};function E({components:e,locale:t,onChange:n,referenceHint:r,versionHint:i}){let a=[{scope:`backend`,title:t===`pt-BR`?`Backend e dados`:`Backend and data`},{scope:`frontend`,title:`Web App`},{scope:`site`,title:t===`pt-BR`?`Site e landing pages`:`Site and landing pages`},{scope:`observability`,title:t===`pt-BR`?`Observabilidade`:`Observability`},{scope:`testing`,title:t===`pt-BR`?`Testes sob demanda`:`On-demand testing`}],o=(t,r,i)=>n({...e,[t]:{...e[t],[r]:i}});return(0,c.jsxs)(`div`,{className:`project-stack-editor`,children:[a.map(n=>(0,c.jsxs)(`section`,{children:[(0,c.jsx)(`h3`,{children:n.title}),(0,c.jsxs)(`div`,{className:`project-stack-table`,children:[(0,c.jsxs)(`div`,{className:`project-stack-table-head`,"aria-hidden":`true`,children:[(0,c.jsx)(`span`,{children:`Item`}),(0,c.jsx)(`span`,{children:t===`pt-BR`?`Tecnologia`:`Technology`}),(0,c.jsx)(`span`,{children:t===`pt-BR`?`Versão atual / referência`:`Current version / reference`}),(0,c.jsx)(`span`,{children:t===`pt-BR`?`Pacote / imagem / serviço`:`Package / image / service`})]}),d.filter(e=>e.scope===n.scope).map(n=>(0,c.jsxs)(`div`,{className:`project-stack-row`,children:[(0,c.jsx)(`strong`,{children:T[n.id][t===`pt-BR`?`pt`:`en`]}),(0,c.jsx)(`input`,{"aria-label":`${T[n.id].pt}: tecnologia`,value:e[n.id].name,onChange:e=>o(n.id,`name`,e.target.value)}),(0,c.jsx)(`input`,{"aria-label":`${T[n.id].pt}: ${p(n.id)?`versão atual ou referência`:`versão exata`}`,className:p(n.id)?`is-reference-value`:void 0,inputMode:p(n.id)?`text`:`decimal`,placeholder:p(n.id)?t===`pt-BR`?`Serviço em nuvem`:`Cloud service`:`x.y.z`,title:p(n.id)?e[n.id].version:void 0,value:e[n.id].version,onChange:e=>o(n.id,`version`,e.target.value)}),(0,c.jsx)(`input`,{"aria-label":`${T[n.id].pt}: referência`,placeholder:`npm:pacote ou service:nome`,value:e[n.id].reference,onChange:e=>o(n.id,`reference`,e.target.value)})]},n.id))]})]},n.scope)),(0,c.jsxs)(`div`,{className:`project-stack-format-help`,children:[(0,c.jsxs)(`p`,{children:[(0,c.jsx)(`strong`,{children:t===`pt-BR`?`Formato da versão:`:`Version format:`}),` `,i]}),(0,c.jsxs)(`p`,{children:[(0,c.jsx)(`strong`,{children:t===`pt-BR`?`Formato da referência:`:`Reference format:`}),` `,r]})]})]})}function D({components:e,showTitle:t=!0,text:n}){return e.length===0?null:(0,c.jsxs)(`section`,{className:`project-stack-versions`,"aria-label":n.versions,children:[t?(0,c.jsx)(`h3`,{children:n.versions}):null,(0,c.jsx)(`div`,{children:e.map(e=>(0,c.jsxs)(`article`,{children:[(0,c.jsxs)(`div`,{className:`project-stack-version-identity`,children:[(0,c.jsx)(`strong`,{children:e.name}),(0,c.jsxs)(`code`,{children:[n.current,`: `,e.version??n.versionUnavailable]}),e.configured_version!==null&&e.configured_version!==e.version?(0,c.jsxs)(`code`,{children:[n.configured,`: `,e.configured_version]}):null]}),(0,c.jsx)(`span`,{className:`is-${e.verification}`,children:e.installation===`runtime`?n.runtime:e.installation===`installed`?n.installed:e.installation===`bundled`?n.bundled:n.missing}),e.source?(0,c.jsx)(`small`,{children:e.source}):null]},e.name))})]})}function O(e){return{health:e.health??{state:`unknown`,scope:`settings_runtime`},dependencies:k(e.dependencies,e.dependencies?.installed),documentation:k(e.documentation,e.documentation?.available),profile:e.installation_profile??null,hasMissingDependencies:(A(e.dependencies?.missing)??0)>0}}function k(e,t){let n=e?.state??`unknown`,r=A(e?.percent);return{completed:A(t),total:A(e?.applicable),percentage:(n===`complete`||n===`incomplete`)&&r!==null&&r<=100?r:null,state:n}}function A(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0?e:null}function j(e){return e.filter(e=>![`database`,`installation`].includes(e.id))}var M={"pt-BR":{eyebrow:`Configurações`,title:`Configuração do projeto`,intro:`Edite o arquivo central do projeto com validação do schema antes da gravação.`,loading:`Carregando…`,loadError:`Não foi possível carregar as configurações do projeto.`,retry:`Tentar novamente`,back:`Voltar ao dashboard`,save:`Salvar configurações`,saving:`Validando e salvando…`,saved:`Configurações salvas e validadas.`,framework:`Framework ZAIP-AIOS`,frameworkHint:`Ativa ou desativa o framework para este projeto.`,identity:`Identidade do projeto`,workspacePath:`Caminho do projeto`,workspacePathHint:`Pasta local usada por esta instância do Dashboard.`,workspacePathLoading:`Identificando caminho…`,workspacePathUnavailable:`Caminho indisponível`,stack:`Stack e linguagens`,execution:`Execução`,assurance:`Assurance`,executionToggleHint:`Grava ou remove o bloco execution. Sem ele, o projeto usa execução manual.`,runtimeHint:`Managed gerencia PRDs/SPECs e mantém avulsas diretas. Manual não inicia provider; autonomous permite execução gerenciada também para Task avulsa por comando explícito.`,providerHint:`Provider que inicia os agentes da execução autônoma: Codex ou Claude.`,autonomyProviderHint:`Autonomy-v1 exige Codex para execução gerenciada. Claude continua disponível em conversas diretas ou no protocolo legado.`,executionModelHint:`Modelo-base do runtime autônomo. A política automática de PRD/SPEC ainda pode selecionar um modelo permitido por agente.`,parallelismHint:`Teto de agentes simultâneos. O valor efetivo é o menor limite entre projeto, DAG, provider e squad.`,leaseHint:`Tempo de lease configurado para o coordenador autônomo.`,assuranceToggleHint:`Ativa ou remove os gates de evidência, revisão e qualidade do projeto. Recomenda-se manter ativo.`,assuranceVersionHint:`Versão do contrato de assurance. É fixa e somente leitura.`,assuranceDepthHint:`Auto ajusta o rigor ao escopo; base exige o conjunto padrão; elevated amplia validações para mudanças mais abrangentes.`,finalCommitHint:`Exige que as evidências comprovem o commit final integrado. Sinais de produção ou migração ainda podem exigir isso mesmo quando desativado.`,context:`Contexto`,overview:`Visão geral do projeto`,metricLabels:{agents:`Agentes`,squads:`Squads`,skills:`Skills`,rules:`Rules`,hooks:`Hooks`},areaLabels:{brandbook:`Brandbook`,design_system:`Design System`,software_architecture:`Arquitetura de Software`,growth_strategy:`Estratégia de Growth`,marketing_strategy:`Estratégia de Marketing`,sales_playbook:`Playbook de Sales`},available:`Criado`,artifactUnavailable:`Ainda não criado`,componentGuide:`Preencha cada responsabilidade separadamente. Use a versão exata do software e, para serviços em nuvem ou hospedagem, informe Serviço em nuvem.`,versionHint:`Software: 22.16.0 ou 17.6, sem prefixos (^, ~, >=). Serviço gerenciado: Serviço em nuvem. Hospedagem: Serviço em nuvem.`,referenceHint:`Ex.: npm:hono, docker:node:22.16.0-bookworm-slim, service:supabase ou provider:cloudflare-pages.`,overrides:`Opções avançadas (JSON)`,overridesHint:`Use apenas fatos técnicos transversais confirmados. Deixe vazio quando não houver exceções.`,versions:`Versões detectadas no workspace`,exact:`Verificada`,constraint:`Requisito`,versionUnavailable:`Não encontrada`,runtime:`Runtime do Dashboard`,installed:`Instalado no projeto`,missing:`Ausente no projeto`,bundled:`Empacotado no Dashboard`,current:`Atual`,configured:`Configurado`,health:`Saúde`,dependencies:`Dependências técnicas`,documentation:`Documentação`,unknown:`Desconhecido`,unavailable:`Indisponível`,notApplicable:`Não aplicável`,complete:`Completo`,incomplete:`Incompleto`,incompleteInstallation:`Há dependências técnicas locais ausentes neste computador.`,dismiss:`Fechar aviso`,contextGuide:`O contexto começa pelas fontes canônicas e inclui somente arquivos relevantes para a tarefa. Saídas geradas são consultadas apenas em setup, release ou checagem de paridade.`,contextDomains:`Branding, Marketing, Growth e Sales são usados sob demanda pelos respectivos especialistas, quando houver uma tarefa e artefatos desses domínios. Não os adicione aqui apenas por existirem como capacidades.`},"en-US":{eyebrow:`Settings`,title:`Project settings`,intro:`Edit the central project file with schema validation before writing.`,loading:`Loading…`,loadError:`Project settings could not be loaded.`,retry:`Try again`,back:`Back to dashboard`,save:`Save settings`,saving:`Validating and saving…`,saved:`Settings saved and validated.`,framework:`ZAIP-AIOS framework`,frameworkHint:`Enable or disable the framework for this project.`,identity:`Project identity`,workspacePath:`Project path`,workspacePathHint:`Local folder used by this Dashboard instance.`,workspacePathLoading:`Identifying path…`,workspacePathUnavailable:`Path unavailable`,stack:`Stack and languages`,execution:`Execution`,assurance:`Assurance`,executionToggleHint:`Writes or removes the execution block. Without it, the project uses manual execution.`,runtimeHint:`Managed runs PRDs/SPECs while standalone Tasks stay direct. Manual never starts a provider; autonomous also permits explicitly commanded managed standalone execution.`,providerHint:`Provider that starts autonomous execution agents: Codex or Claude.`,autonomyProviderHint:`Autonomy-v1 requires Codex for managed execution. Claude remains available for direct conversations or the legacy protocol.`,executionModelHint:`Base model for the autonomous runtime. PRD/SPEC automatic policy may still select an allowed model per agent.`,parallelismHint:`Maximum simultaneous agents. Effective parallelism is the smallest project, DAG, provider, and squad limit.`,leaseHint:`Lease duration configured for the autonomous coordinator.`,assuranceToggleHint:`Enables or removes project evidence, review, and quality gates. Keeping it enabled is recommended.`,assuranceVersionHint:`Assurance contract version. It is fixed and read-only.`,assuranceDepthHint:`Auto adapts rigor to scope; base uses the standard set; elevated expands validation for broader changes.`,finalCommitHint:`Requires evidence for the final integrated commit. Production or migration signals may still require it when disabled.`,context:`Context`,overview:`Project overview`,metricLabels:{agents:`Agents`,squads:`Squads`,skills:`Skills`,rules:`Rules`,hooks:`Hooks`},areaLabels:{brandbook:`Brandbook`,design_system:`Design System`,software_architecture:`Software Architecture`,growth_strategy:`Growth Strategy`,marketing_strategy:`Marketing Strategy`,sales_playbook:`Sales Playbook`},available:`Created`,artifactUnavailable:`Not created yet`,componentGuide:`Fill each responsibility separately. Use an exact software version and, for cloud services or hosting, enter Cloud service.`,versionHint:`Software: 22.16.0 or 17.6, without prefixes (^, ~, >=). Managed service: Cloud service. Hosting: Cloud service.`,referenceHint:`E.g. npm:hono, docker:node:22.16.0-bookworm-slim, service:supabase, or provider:cloudflare-pages.`,overrides:`Advanced options (JSON)`,overridesHint:`Use only confirmed cross-cutting technical facts. Leave empty when there are no exceptions.`,versions:`Versions detected in the workspace`,exact:`Verified`,constraint:`Requirement`,versionUnavailable:`Not found`,runtime:`Dashboard runtime`,installed:`Installed in project`,missing:`Missing from project`,bundled:`Bundled in Dashboard`,current:`Current`,configured:`Configured`,health:`Health`,dependencies:`Technical dependencies`,documentation:`Documentation`,unknown:`Unknown`,unavailable:`Unavailable`,notApplicable:`Not applicable`,complete:`Complete`,incomplete:`Incomplete`,incompleteInstallation:`Some local technical dependencies are missing on this computer.`,dismiss:`Dismiss notification`,contextGuide:`Context starts from canonical sources and includes only files relevant to the task. Generated outputs are consulted only for setup, release, or parity checks.`,contextDomains:`Branding, Marketing, Growth, and Sales are used on demand by their respective specialists when there is a task and artifacts in those domains. Do not add them here merely because they exist as capabilities.`}},N=`autonomy-v1`,P=n([`essential`,`balanced`,`persistent`]),F=a({version:r(1),preset:P}).strict(),I=Object.freeze({essential:Object.freeze({label:`Essencial`,attempts:4,replans:1,automatic_astra:!1}),balanced:Object.freeze({label:`Equilibrado`,attempts:10,replans:3,automatic_astra:!0}),persistent:Object.freeze({label:`Persistente — ilimitado`,attempts:null,replans:null,automatic_astra:!0})});function L(e){let t=F.parse(e??{version:1,preset:`balanced`});return Object.freeze({version:N,preset:t.preset,...I[t.preset],repairs_per_replan:3})}function R({value:e,onChange:t,disabled:n=!1,locale:r=`pt-BR`}){let i=(0,s.useId)(),a=L(e),o=r===`pt-BR`;return(0,c.jsxs)(`div`,{children:[!e&&(0,c.jsx)(`p`,{children:o?`Projeto legado: selecione e salve um perfil para adotar os novos controles nas novas Tasks.`:`Legacy project: select and save a preset to adopt the new controls for new Tasks.`}),(0,c.jsxs)(`label`,{className:`project-settings-field`,htmlFor:i,children:[(0,c.jsx)(`strong`,{children:o?`Perfil de autonomia`:`Autonomy preset`}),(0,c.jsx)(`select`,{id:i,"aria-describedby":`${i}-detail`,disabled:n,value:a.preset,onChange:e=>t({version:1,preset:P.parse(e.target.value)}),children:P.options.map(e=>(0,c.jsx)(`option`,{value:e,children:o?I[e].label:{essential:`Essential`,balanced:`Balanced`,persistent:`Persistent — unlimited`}[e]},e))})]}),(0,c.jsx)(`p`,{id:`${i}-detail`,role:`status`,children:a.attempts===null?o?`Sem limite de tentativas ou replanejamentos. Pode continuar indefinidamente e consumir créditos até você cancelar.`:`No attempt or replanning limit. May continue indefinitely and consume credits until you cancel.`:o?`${a.attempts} execuções por Task (1 inicial + ${a.attempts-1} reparações), até ${a.replans} replanejamento(s). Sem abandono por tempo.`:`${a.attempts} executions per Task (1 initial + ${a.attempts-1} repairs), up to ${a.replans} replan(s). No time-based abandonment.`}),(0,c.jsx)(`p`,{children:a.automatic_astra?o?`Replanejamento: Sol/high no primeiro, Astra/high a partir do segundo. Astra/high pode executar a partir do terceiro.`:`Replanning: Sol/high first, Astra/high from the second. Astra/high may execute from the third.`:o?`Nunca usa Astra automaticamente. Exceção: agente principal de tarefa avulsa com Astra selecionado por você no Codex.`:`Never selects Astra automatically. Exception: a standalone principal with Astra manually selected in Codex.`}),(0,c.jsx)(`p`,{children:o?`A mudança vale para novas Tasks; as iniciadas conservam o perfil e o histórico. Tarefas avulsas priorizam execução direta. Ao delegar, a ZAIP informa que modelo e esforço dos subagentes podem mudar. Critérios de aceite e permissões não são reduzidos.`:`Changes apply to new Tasks; started Tasks retain their preset and history. Standalone work prefers direct execution. Delegation discloses that subagent model and effort may differ. Acceptance criteria and permissions are not reduced.`})]})}function z({api:e,locale:t,onClose:n}){let r=M[t],[i,a]=(0,s.useState)(null),[d,f]=(0,s.useState)(null),[p,v]=(0,s.useState)(null),[x,S]=(0,s.useState)(`{}`),[C,w]=(0,s.useState)(!1),[T,k]=(0,s.useState)(!0),[A,N]=(0,s.useState)(null),[P,F]=(0,s.useState)(null),[I,L]=(0,s.useState)(!1),z=o(),B=d===null?null:O(d),H=(0,s.useCallback)(async()=>{k(!0),N(null);try{let[t,n]=await Promise.all([e.projectSettings(),e.projectOverview()]),r=m(t);a(t),f(n),v(h(r.components,n.stack_components)),S(r.otherOverrides)}catch(e){N(e instanceof Error?e.message:String(e))}finally{k(!1)}},[e]);(0,s.useEffect)(()=>{H()},[H]),(0,s.useEffect)(()=>{L(d!==null&&O(d).hasMissingDependencies)},[d]);async function U(t){if(t.preventDefault(),i!==null){w(!0),N(null),F(null);try{let t=await e.saveProjectSettings(g(i,p??m(i).components,x)),n=await e.projectOverview(),o=m(t);a(t),f(n),v(o.components),S(o.otherOverrides),F(r.saved)}catch(e){N(e instanceof Error?e.message:String(e))}finally{w(!1)}}}if(i===null){let e=T&&A===null;return(0,c.jsx)(`main`,{"aria-busy":e,className:`project-settings-state`,children:(0,c.jsxs)(`div`,{"aria-live":e?`polite`:`assertive`,className:`project-settings-state-card`,role:e?`status`:`alert`,children:[e?(0,c.jsx)(`span`,{"aria-hidden":`true`,className:`project-settings-loader`}):null,(0,c.jsx)(`p`,{children:r.eyebrow}),(0,c.jsx)(`h1`,{children:A?r.loadError:r.loading}),A?(0,c.jsx)(`p`,{className:`project-settings-state-error`,children:A}):null,A?(0,c.jsx)(`button`,{onClick:()=>void H(),type:`button`,children:r.retry}):null,(0,c.jsxs)(`button`,{onClick:n,type:`button`,children:[`← `,r.back]})]})})}return(0,c.jsxs)(`main`,{className:`project-settings-page`,children:[(0,c.jsxs)(`form`,{onSubmit:U,children:[(0,c.jsxs)(`header`,{className:`project-settings-header`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`p`,{children:r.eyebrow}),(0,c.jsx)(`h1`,{children:r.title}),(0,c.jsx)(`span`,{children:r.intro})]}),(0,c.jsxs)(`button`,{className:`project-settings-back`,onClick:n,type:`button`,children:[`← `,r.back]})]}),A?(0,c.jsx)(`div`,{className:`project-settings-message is-error`,role:`alert`,children:A}):null,P?(0,c.jsx)(`div`,{className:`project-settings-message is-success`,role:`status`,children:P}):null,(0,c.jsxs)(`section`,{className:`project-settings-feature`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsxs)(`h2`,{children:[r.framework,b(d?.framework_version)?` - ${b(d?.framework_version)}`:``]}),(0,c.jsx)(`p`,{children:r.frameworkHint})]}),(0,c.jsx)(W,{checked:i.zaip?.enabled===!0,label:t===`pt-BR`?`Framework ativo`:`Framework enabled`,onChange:e=>a({...i,zaip:{enabled:e}})})]}),(0,c.jsxs)(`section`,{className:`project-settings-summary`,"aria-label":r.overview,children:[d&&j(d.metrics).map(e=>(0,c.jsxs)(`div`,{className:`project-settings-metric`,children:[(0,c.jsx)(`strong`,{children:e.value}),(0,c.jsx)(`span`,{children:r.metricLabels[e.id]})]},e.id)),B?(0,c.jsx)(V,{installation:B,locale:t}):null]}),(0,c.jsx)(l,{className:`is-wide`,title:r.overview,children:(0,c.jsx)(`div`,{className:`project-overview`,"aria-live":`polite`,children:d?.areas.map(e=>(0,c.jsxs)(`div`,{className:`project-overview-item`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`strong`,{children:r.areaLabels[e.id]}),(0,c.jsx)(`code`,{children:e.artifact})]}),(0,c.jsx)(`span`,{className:e.available?`is-available`:`is-unavailable`,children:e.available===!0?r.available:e.available===!1?r.artifactUnavailable:r.unavailable})]},e.id))})}),(0,c.jsx)(l,{className:`is-wide project-detected-versions`,title:r.versions,children:(0,c.jsx)(D,{components:d?.stack_components??[],text:r,showTitle:!1})}),(0,c.jsxs)(`div`,{className:`project-settings-grid`,children:[(0,c.jsxs)(l,{className:`is-wide project-identity-card`,title:r.identity,children:[(0,c.jsx)(u,{className:`project-settings-workspace-field`,hint:r.workspacePathHint,label:r.workspacePath,children:(0,c.jsx)(`code`,{className:`project-settings-workspace-path`,children:z.status?.workspace??(z.unavailable?r.workspacePathUnavailable:r.workspacePathLoading)})}),(0,c.jsx)(u,{label:`Schema`,children:(0,c.jsx)(`input`,{readOnly:!0,value:i.schema_version})}),(0,c.jsx)(u,{label:t===`pt-BR`?`ID do projeto`:`Project ID`,children:(0,c.jsx)(`input`,{required:!0,value:i.project.id,onChange:e=>a({...i,project:{...i.project,id:e.target.value}})})}),(0,c.jsx)(u,{label:t===`pt-BR`?`Nome do projeto`:`Project name`,children:(0,c.jsx)(`input`,{required:!0,value:i.project.name,onChange:e=>a({...i,project:{...i.project,name:e.target.value}})})}),(0,c.jsx)(u,{label:`Timezone IANA`,children:(0,c.jsx)(`input`,{required:!0,value:i.project.timezone,onChange:e=>a({...i,project:{...i.project,timezone:e.target.value}})})})]}),(0,c.jsxs)(l,{className:`is-wide`,title:r.stack,children:[(0,c.jsx)(`p`,{className:`project-stack-guide`,children:r.componentGuide}),p?(0,c.jsx)(E,{components:p,locale:t,onChange:v,referenceHint:r.referenceHint,versionHint:r.versionHint}):null,(0,c.jsxs)(`details`,{className:`project-settings-advanced`,children:[(0,c.jsx)(`summary`,{children:r.overrides}),(0,c.jsx)(u,{hint:r.overridesHint,label:`Overrides`,children:(0,c.jsx)(`textarea`,{rows:7,value:x,onChange:e=>S(e.target.value)})})]})]}),(0,c.jsxs)(l,{title:r.execution,children:[(0,c.jsx)(G,{checked:i.execution!==void 0,hint:r.executionToggleHint,label:t===`pt-BR`?`Incluir configuração de execução`:`Include execution configuration`,onChange:e=>a({...i,execution:e?{runtime:`codex_native`}:void 0})}),i.execution?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(u,{hint:r.runtimeHint,label:`Runtime`,children:(0,c.jsxs)(`select`,{value:i.execution.runtime,"aria-label":`Runtime`,onChange:e=>a({...i,execution:y(e.target.value)}),children:[(0,c.jsx)(`option`,{value:`manual`,children:`manual`}),(0,c.jsx)(`option`,{value:`codex_native`,children:`codex_native (Codex)`}),(0,c.jsx)(`option`,{value:`managed`,children:`managed (PRD/SPEC)`}),(0,c.jsx)(`option`,{value:`autonomous`,children:`autonomous`})]})}),i.execution.runtime!==`manual`&&i.execution.runtime!==`codex_native`?(0,c.jsx)(K,{config:i,setConfig:a,text:r}):null]}):null]}),(0,c.jsx)(l,{title:t===`pt-BR`?`Autonomia e recuperação`:`Autonomy and recovery`,children:(0,c.jsx)(R,{value:i.autonomy,disabled:C,locale:t,onChange:e=>a({...i,autonomy:e})})}),(0,c.jsxs)(l,{title:r.assurance,children:[(0,c.jsx)(G,{checked:i.assurance!==void 0,hint:r.assuranceToggleHint,label:t===`pt-BR`?`Incluir assurance`:`Include assurance`,onChange:e=>a({...i,assurance:e?{version:1,standard_depth:`auto`,require_final_commit:!0}:void 0})}),i.assurance?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(u,{hint:r.assuranceVersionHint,label:t===`pt-BR`?`Versão`:`Version`,children:(0,c.jsx)(`input`,{readOnly:!0,value:i.assurance.version})}),(0,c.jsx)(u,{hint:r.assuranceDepthHint,label:t===`pt-BR`?`Profundidade padrão`:`Standard depth`,children:(0,c.jsxs)(`select`,{value:i.assurance.standard_depth,onChange:e=>a({...i,assurance:{...i.assurance??{version:1,standard_depth:`auto`,require_final_commit:!0},standard_depth:e.target.value}}),children:[(0,c.jsx)(`option`,{value:`auto`,children:`auto`}),(0,c.jsx)(`option`,{value:`base`,children:`base`}),(0,c.jsx)(`option`,{value:`elevated`,children:`elevated`})]})}),(0,c.jsx)(W,{checked:i.assurance.require_final_commit,hint:r.finalCommitHint,label:t===`pt-BR`?`Exigir commit final`:`Require final commit`,onChange:e=>a({...i,assurance:{...i.assurance??{version:1,standard_depth:`auto`,require_final_commit:!0},require_final_commit:e}})})]}):null]}),(0,c.jsxs)(l,{className:`is-wide`,title:r.context,children:[(0,c.jsx)(G,{checked:i.context!==void 0,label:t===`pt-BR`?`Incluir raízes de contexto`:`Include context roots`,onChange:e=>a({...i,context:e?{canonical_roots:[`packages`],projection_roots:[]}:void 0})}),i.context?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`project-settings-guidance`,children:[(0,c.jsx)(`p`,{children:r.contextGuide}),(0,c.jsx)(`p`,{children:r.contextDomains})]}),(0,c.jsxs)(`div`,{className:`project-settings-fields two-columns`,children:[(0,c.jsx)(u,{hint:t===`pt-BR`?`Uma pasta por linha. Estas são as fontes principais do projeto.`:`One folder per line. These are the project's primary sources.`,label:t===`pt-BR`?`Fontes canônicas`:`Canonical sources`,children:(0,c.jsx)(`textarea`,{required:!0,rows:5,value:i.context.canonical_roots.join(`
2
2
  `),onChange:e=>a({...i,context:{...i.context??{canonical_roots:[`packages`],projection_roots:[]},canonical_roots:_(e.target.value)}})})}),(0,c.jsx)(u,{hint:t===`pt-BR`?`Uma pasta por linha. São saídas geradas, não fontes de contexto normal.`:`One folder per line. These are generated outputs, not normal context sources.`,label:t===`pt-BR`?`Saídas geradas/publicadas`:`Generated/published outputs`,children:(0,c.jsx)(`textarea`,{rows:5,value:i.context.projection_roots.join(`
3
3
  `),onChange:e=>a({...i,context:{...i.context??{canonical_roots:[`packages`],projection_roots:[]},projection_roots:_(e.target.value)}})})})]})]}):null]})]}),(0,c.jsxs)(`footer`,{className:`project-settings-footer`,children:[(0,c.jsx)(`span`,{children:`.agents/config/project.yaml`}),(0,c.jsx)(`button`,{disabled:C,type:`submit`,children:C?r.saving:r.save})]})]}),I&&B?.hasMissingDependencies?(0,c.jsxs)(`div`,{"aria-live":`assertive`,className:`project-installation-toast`,role:`alert`,children:[(0,c.jsx)(`span`,{children:r.incompleteInstallation}),(0,c.jsx)(`button`,{"aria-label":r.dismiss,onClick:()=>L(!1),type:`button`,children:`×`})]}):null]})}function B(e,t){return`${new Intl.NumberFormat(t,{maximumFractionDigits:2}).format(e)}%`}function V({installation:e,locale:t}){let n=M[t];return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`p`,{className:`project-installation-health`,children:[n.health,`:`,` `,e.health.state===`healthy`?t===`pt-BR`?`Saudável`:`Healthy`:e.health.state===`degraded`?t===`pt-BR`?`Degradada`:`Degraded`:n.unknown]}),(0,c.jsx)(H,{dimension:e.dependencies,label:n.dependencies,locale:t}),(0,c.jsx)(H,{dimension:e.documentation,label:n.documentation,locale:t})]})}function H({dimension:e,label:t,locale:n}){let r=M[n],i=e.state===`not_applicable`?r.notApplicable:e.percentage===null?r.unknown:B(e.percentage,n),a=U(e.state,n);return(0,c.jsxs)(`div`,{className:`project-settings-metric installation-metric is-${e.state}`,children:[(0,c.jsx)(`strong`,{children:i}),(0,c.jsx)(`span`,{children:e.total===null||e.completed===null?t:`${t} · ${e.completed}/${e.total}`}),(0,c.jsx)(`small`,{children:a})]})}function U(e,t){let n=M[t];return e===`complete`?n.complete:e===`incomplete`?n.incomplete:e===`not_applicable`?n.notApplicable:e===`unavailable`?n.unavailable:n.unknown}function W({checked:e,hint:t,label:n,onChange:r}){return(0,c.jsxs)(`div`,{className:`project-settings-toggle-field`,children:[(0,c.jsxs)(`label`,{className:`project-settings-toggle`,children:[(0,c.jsx)(`input`,{checked:e,onChange:e=>r(e.target.checked),type:`checkbox`}),(0,c.jsx)(`span`,{"aria-hidden":`true`}),(0,c.jsx)(`strong`,{children:n})]}),t?(0,c.jsx)(`small`,{children:t}):null]})}function G(e){return(0,c.jsx)(W,{...e})}function K({config:e,setConfig:t,text:n}){let r=e.execution&&e.execution.runtime!==`manual`&&e.execution.runtime!==`codex_native`?e.execution:v(),i=n=>t({...e,execution:{runtime:r.runtime,autonomous:n}});return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(u,{hint:e.autonomy?.version===1?n.autonomyProviderHint:n.providerHint,label:`Provider`,children:(0,c.jsxs)(`select`,{value:r.autonomous.provider,"aria-label":`Provider`,onChange:e=>i({...r.autonomous,provider:e.target.value}),children:[(0,c.jsx)(`option`,{value:`codex`,children:`codex`}),(0,c.jsx)(`option`,{value:`claude`,disabled:e.autonomy?.version===1,children:`claude`})]})}),(0,c.jsx)(u,{hint:n.executionModelHint,label:`Model`,children:(0,c.jsx)(`input`,{required:!0,value:r.autonomous.model,onChange:e=>i({...r.autonomous,model:e.target.value})})}),(0,c.jsx)(u,{hint:n.parallelismHint,label:`Max parallelism`,children:(0,c.jsx)(`input`,{max:8,min:1,type:`number`,value:r.autonomous.max_parallelism,onChange:e=>i({...r.autonomous,max_parallelism:Number(e.target.value)})})}),(0,c.jsx)(u,{hint:n.leaseHint,label:`Lease (ms)`,children:(0,c.jsx)(`input`,{max:36e5,min:5e3,step:1e3,type:`number`,value:r.autonomous.lease_ms,onChange:e=>i({...r.autonomous,lease_ms:Number(e.target.value)})})})]})}export{z as ProjectSettingsPage};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{E as t,w as n}from"./cost-monitor-B0Jwz_rk.js";import{n as r}from"./traceability-DFpwb0TN.js";import{n as i}from"./index-oqGtXP7j.js";var a=e(t(),1),o=n();function s(e,t){let n=t.trim().toLocaleLowerCase();return n===``?[...e]:e.filter(e=>`${e.title} ${e.id}`.toLocaleLowerCase().includes(n))}function c(e,t,n){return n?[...e]:s(e,t)}function l(e){return`traceability-task-option-${e}`}function u({locale:e,loadingTaskId:t,hasMoreTasks:n,isLoadingTasks:s,onLoadMoreTasks:u,onSelectTask:d,onOpenChange:f,onOpenPrd:p,onOpenSpec:m,selectedTaskId:h,tasks:g,trace:_}){let v=[...g].sort((e,t)=>Date.parse(t.created_at)-Date.parse(e.created_at)),y=v.find(e=>e.id===h),[b,x]=(0,a.useState)(()=>y?.title??h),[S,C]=(0,a.useState)(!1),[w,T]=(0,a.useState)(!1),[E,D]=(0,a.useState)(0),[O,k]=(0,a.useState)(12),A=(0,a.useMemo)(()=>c(v,b,w),[b,w,v]),j=A.slice(0,O),M=j.length<A.length,N=`traceability-task-search`,P=`traceability-task-results`,F=e===`pt-BR`?`Task selecionada`:`Selected task`,I=e===`pt-BR`?`Buscar task por nome ou ID`:`Search task by name or ID`,L=S?A[E]?.id:void 0;(0,a.useEffect)(()=>{x(y?.title??h),D(0)},[y?.title,h]);let R=e=>{x(e.title),C(!1),T(!1),d(e.id)},z=(e=!0)=>{C(!0),T(!0),e&&(D(0),k(12))};return(0,o.jsxs)(`section`,{className:`traceability-workspace`,children:[(0,o.jsxs)(`header`,{children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`label`,{htmlFor:N,children:F}),(0,o.jsx)(`input`,{"aria-activedescendant":L===void 0?void 0:l(L),"aria-autocomplete":`list`,"aria-controls":P,"aria-expanded":S,"aria-label":I,id:N,onChange:e=>{x(e.target.value),D(0),T(!1),k(12),C(!0)},onClick:()=>z(),onFocus:()=>z(),onKeyDown:e=>{if(e.key===`ArrowDown`)e.preventDefault(),z(!1),D(e=>Math.min(e+1,Math.max(0,v.length-1)));else if(e.key===`ArrowUp`)e.preventDefault(),z(!1),D(e=>Math.max(0,e-1));else if(e.key===`Enter`&&S){let t=A[E];t!==void 0&&(e.preventDefault(),R(t))}else e.key===`Escape`&&C(!1)},role:`combobox`,type:`search`,value:b}),S?(0,o.jsx)(`div`,{"aria-label":I,className:`traceability-task-results`,id:P,onScroll:e=>{let{clientHeight:t,scrollHeight:r,scrollTop:a}=e.currentTarget;a+t<r-32||(n&&u(),j.length<A.length&&k(e=>i(e,A.length,12)))},role:`listbox`,children:A.length>0?j.map((e,t)=>(0,o.jsx)(`div`,{role:`presentation`,children:(0,o.jsx)(`button`,{"aria-selected":e.id===h,className:t===E?`is-active`:void 0,id:l(e.id),onClick:()=>R(e),role:`option`,type:`button`,children:(0,o.jsx)(`strong`,{children:e.title})})},e.id)):(0,o.jsx)(`div`,{className:`traceability-task-no-results`,role:`status`,children:e===`pt-BR`?`Nenhuma task encontrada.`:`No tasks found.`})}):null,S&&A.length>0?(0,o.jsx)(`p`,{"aria-live":`polite`,className:`traceability-task-pagination-status`,role:`status`,children:s?e===`pt-BR`?`Carregando mais tasks…`:`Loading more tasks…`:M||n?e===`pt-BR`?`${j.length} de ${A.length} tasks exibidas. Role para carregar mais.`:`${j.length} of ${A.length} tasks shown. Scroll to load more.`:e===`pt-BR`?`${A.length} tasks exibidas. Fim da lista.`:`${A.length} tasks shown. End of list.`}):null]}),(0,o.jsx)(`small`,{children:e===`pt-BR`?`Selecione pelo nome para visualizar o ciclo completo sem precisar do ID.`:`Select by name to inspect the complete lifecycle without knowing the ID.`})]}),t?(0,o.jsx)(`div`,{"aria-live":`polite`,className:`traceability-workspace-loading`,children:e===`pt-BR`?`Carregando as 6 etapas…`:`Loading all 6 stages…`}):_?(0,o.jsx)(r,{embedded:!0,locale:e,onClose:()=>void 0,onOpenChange:f,onOpenPrd:p,onOpenSpec:m,trace:_}):(0,o.jsx)(`p`,{children:e===`pt-BR`?`Nenhuma task disponível.`:`No task available.`})]})}export{u as TraceabilityWorkspace};
1
+ import{n as e}from"./rolldown-runtime-Bh1tDfsg.js";import{E as t,w as n}from"./cost-monitor-B0Jwz_rk.js";import{n as r}from"./traceability-DFpwb0TN.js";import{n as i}from"./index-DGUs5bRP.js";var a=e(t(),1),o=n();function s(e,t){let n=t.trim().toLocaleLowerCase();return n===``?[...e]:e.filter(e=>`${e.title} ${e.id}`.toLocaleLowerCase().includes(n))}function c(e,t,n){return n?[...e]:s(e,t)}function l(e){return`traceability-task-option-${e}`}function u({locale:e,loadingTaskId:t,hasMoreTasks:n,isLoadingTasks:s,onLoadMoreTasks:u,onSelectTask:d,onOpenChange:f,onOpenPrd:p,onOpenSpec:m,selectedTaskId:h,tasks:g,trace:_}){let v=[...g].sort((e,t)=>Date.parse(t.created_at)-Date.parse(e.created_at)),y=v.find(e=>e.id===h),[b,x]=(0,a.useState)(()=>y?.title??h),[S,C]=(0,a.useState)(!1),[w,T]=(0,a.useState)(!1),[E,D]=(0,a.useState)(0),[O,k]=(0,a.useState)(12),A=(0,a.useMemo)(()=>c(v,b,w),[b,w,v]),j=A.slice(0,O),M=j.length<A.length,N=`traceability-task-search`,P=`traceability-task-results`,F=e===`pt-BR`?`Task selecionada`:`Selected task`,I=e===`pt-BR`?`Buscar task por nome ou ID`:`Search task by name or ID`,L=S?A[E]?.id:void 0;(0,a.useEffect)(()=>{x(y?.title??h),D(0)},[y?.title,h]);let R=e=>{x(e.title),C(!1),T(!1),d(e.id)},z=(e=!0)=>{C(!0),T(!0),e&&(D(0),k(12))};return(0,o.jsxs)(`section`,{className:`traceability-workspace`,children:[(0,o.jsxs)(`header`,{children:[(0,o.jsxs)(`div`,{children:[(0,o.jsx)(`label`,{htmlFor:N,children:F}),(0,o.jsx)(`input`,{"aria-activedescendant":L===void 0?void 0:l(L),"aria-autocomplete":`list`,"aria-controls":P,"aria-expanded":S,"aria-label":I,id:N,onChange:e=>{x(e.target.value),D(0),T(!1),k(12),C(!0)},onClick:()=>z(),onFocus:()=>z(),onKeyDown:e=>{if(e.key===`ArrowDown`)e.preventDefault(),z(!1),D(e=>Math.min(e+1,Math.max(0,v.length-1)));else if(e.key===`ArrowUp`)e.preventDefault(),z(!1),D(e=>Math.max(0,e-1));else if(e.key===`Enter`&&S){let t=A[E];t!==void 0&&(e.preventDefault(),R(t))}else e.key===`Escape`&&C(!1)},role:`combobox`,type:`search`,value:b}),S?(0,o.jsx)(`div`,{"aria-label":I,className:`traceability-task-results`,id:P,onScroll:e=>{let{clientHeight:t,scrollHeight:r,scrollTop:a}=e.currentTarget;a+t<r-32||(n&&u(),j.length<A.length&&k(e=>i(e,A.length,12)))},role:`listbox`,children:A.length>0?j.map((e,t)=>(0,o.jsx)(`div`,{role:`presentation`,children:(0,o.jsx)(`button`,{"aria-selected":e.id===h,className:t===E?`is-active`:void 0,id:l(e.id),onClick:()=>R(e),role:`option`,type:`button`,children:(0,o.jsx)(`strong`,{children:e.title})})},e.id)):(0,o.jsx)(`div`,{className:`traceability-task-no-results`,role:`status`,children:e===`pt-BR`?`Nenhuma task encontrada.`:`No tasks found.`})}):null,S&&A.length>0?(0,o.jsx)(`p`,{"aria-live":`polite`,className:`traceability-task-pagination-status`,role:`status`,children:s?e===`pt-BR`?`Carregando mais tasks…`:`Loading more tasks…`:M||n?e===`pt-BR`?`${j.length} de ${A.length} tasks exibidas. Role para carregar mais.`:`${j.length} of ${A.length} tasks shown. Scroll to load more.`:e===`pt-BR`?`${A.length} tasks exibidas. Fim da lista.`:`${A.length} tasks shown. End of list.`}):null]}),(0,o.jsx)(`small`,{children:e===`pt-BR`?`Selecione pelo nome para visualizar o ciclo completo sem precisar do ID.`:`Select by name to inspect the complete lifecycle without knowing the ID.`})]}),t?(0,o.jsx)(`div`,{"aria-live":`polite`,className:`traceability-workspace-loading`,children:e===`pt-BR`?`Carregando as 6 etapas…`:`Loading all 6 stages…`}):_?(0,o.jsx)(r,{embedded:!0,locale:e,onClose:()=>void 0,onOpenChange:f,onOpenPrd:p,onOpenSpec:m,trace:_}):(0,o.jsx)(`p`,{children:e===`pt-BR`?`Nenhuma task disponível.`:`No task available.`})]})}export{u as TraceabilityWorkspace};
@@ -8,6 +8,8 @@ English | [Português](README.md)
8
8
 
9
9
  ## Quick overview
10
10
 
11
+ The [v5.6 guide](docs/quality/v56-publicacao-reproduzivel.md) describes the reproducible release runtime, immutable candidate review, and early impact-based validation. Reused coverage requires proof for the same candidate; functional changes and missing evidence retain the applicable gates.
12
+
11
13
  The [v5.5 guide](docs/quality/v55-eficiencia-operacional.md) describes evidence
12
14
  obligations exposed at intake, direct replay of completed lifecycle closure,
13
15
  bounded journal segments, and impact-based test selection. Timing diagnostics
@@ -634,10 +636,10 @@ already-terminal Gui while the responsible Run is open. No decision means no
634
636
  approval. A trusted fallback must persist \`blocked\` with a reason when the
635
637
  finalizer cannot run; the current CLI does not yet prove that path for every
636
638
  native Stop or interruption. Direct standalone work with explicit direct
637
- authorization is a legacy route, not the v4 default. See
639
+ authorization is a legacy compatibility route, not the default for new installations. See
638
640
  [closure and recovery](.agents/zaip-aios/guides/16-lifecycle-e-reconciliacao.md).
639
641
 
640
- Proof depth is adaptive: a standalone \`lite\` Task requires at least one typed validation and one Evidence, normally one of each, but accepts legitimate additional proof. \`standard\` requires two or three validations according to \`verification_scope\` and at least one consolidated Evidence; \`critical\` requires three or more, independent review, and persisted risk signals determining additional controls. SPEC and PRD deliveries add a parent matrix, at least three validations and three Evidences, real integration, and independent review. Current templates use managed PRDs/SPECs and direct standalone Tasks; after implementation and installer qualification, v4 targets Codex-native as the operational default. Worktrees, write scopes, budgets, commits, and typed gates still apply where relevant. See [Adaptive assurance and opt-in autonomy](.agents/zaip-aios/guides/19-assurance-e-autonomia.md).
642
+ Proof depth is adaptive: a standalone \`lite\` Task requires at least one typed validation and one Evidence, normally one of each, but accepts legitimate additional proof. \`standard\` requires two or three validations according to \`verification_scope\` and at least one consolidated Evidence; \`critical\` requires three or more, independent review, and persisted risk signals determining additional controls. SPEC and PRD deliveries add a parent matrix, at least three validations and three Evidences, real integration, and independent review. New installations use Codex-native by default. Existing installations retain their effective configuration and must be checked against the installed version; publication does not prove client hook activation. Worktrees, write scopes, budgets, commits, and typed gates still apply where relevant. See [Adaptive assurance and opt-in autonomy](.agents/zaip-aios/guides/19-assurance-e-autonomia.md).
641
643
 
642
644
  ## Autonomous engineering principles
643
645