@zaip-ai/cli 1.0.8 → 1.3.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 (212) hide show
  1. package/README.md +1 -1
  2. package/dist/services/adapters.d.ts +1 -1
  3. package/dist/services/adapters.js +1 -1
  4. package/dist/services/agent-adapters.js +2 -2
  5. package/dist/services/agent-adapters.js.map +1 -1
  6. package/dist/services/agent-adapters.test.js +5 -0
  7. package/dist/services/agent-adapters.test.js.map +1 -1
  8. package/dist/services/logger.test.js +2 -2
  9. package/dist/services/runtime-template.test.js +6 -6
  10. package/dist/services/template-manifest.d.ts.map +1 -1
  11. package/dist/services/template-manifest.js +5 -0
  12. package/dist/services/template-manifest.js.map +1 -1
  13. package/package.json +1 -1
  14. package/templates/.agents/architecture/software-architecture.md +131 -0
  15. package/templates/.agents/branding/brandbook.docx +0 -0
  16. package/templates/.agents/branding/brandbook.md +60 -0
  17. package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +1 -1
  18. package/templates/.agents/config/clients/codex/agents/zaip-agent-orchestrator.toml +1 -1
  19. package/templates/.agents/dashboard/.tmp-run-list.json +254 -0
  20. package/templates/.agents/dashboard/.zaip-managed.json +252 -136
  21. package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-Z60df2r-.js → CostCalculationGuidePage-DxR_pgSV.js} +1 -1
  22. package/templates/.agents/dashboard/apps/frontend/dist/assets/DashboardHelpDialog-4jZLTWE_.js +2156 -0
  23. package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-Coc6pA-1.js → PricingSettingsDialog-CKcsqb-r.js} +1 -1
  24. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BomxqCBU.css +1 -0
  25. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-DmmJD2Th.js +3 -0
  26. package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-BwtitWa_.js +1 -0
  27. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-N5Csr0RP.js +68 -0
  28. package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-DFBuc_qp.js → icons-vendor-C0fj2uU9.js} +1 -1
  29. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-C4aIB1PV.js +2 -0
  30. package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-CCQOHdVI.js → react-vendor-BEsJ-FYH.js} +1 -1
  31. package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-pC2_0J8x.js → traceability-B6y6Gw12.js} +1 -1
  32. package/templates/.agents/dashboard/apps/frontend/dist/index.html +5 -5
  33. package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
  34. package/templates/.agents/dashboard/apps/frontend/src/App.tsx +204 -32
  35. package/templates/.agents/dashboard/apps/frontend/src/DashboardAlternateContent.tsx +11 -11
  36. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +14 -7
  37. package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +4 -2
  38. package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.test.ts +3 -1
  39. package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.tsx +14 -11
  40. package/templates/.agents/dashboard/apps/frontend/src/cost-period-refresh.test.ts +19 -4
  41. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +24 -2
  42. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +22 -1
  43. package/templates/.agents/dashboard/apps/frontend/src/overview-status-page.test.ts +3 -1
  44. package/templates/.agents/dashboard/apps/frontend/src/project-settings-page.css +36 -26
  45. package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +2 -2
  46. package/templates/.agents/dashboard/apps/frontend/src/snapshot-banner-semantics.test.ts +40 -6
  47. package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +39 -1
  48. package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.test.ts +89 -23
  49. package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +219 -29
  50. package/templates/.agents/dashboard/apps/frontend/src/use-app-effects.ts +61 -7
  51. package/templates/.agents/dashboard/apps/frontend/src/use-app-operations-pages.ts +3 -6
  52. package/templates/.agents/dashboard/apps/frontend/src/work-list-pagination.test.ts +2 -2
  53. package/templates/.agents/dashboard/apps/frontend/src/work-list-pagination.ts +3 -4
  54. package/templates/.agents/dashboard/apps/frontend/vite.config.ts +4 -1
  55. package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
  56. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.test.ts +89 -19
  57. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.tsx +31 -16
  58. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.test.ts +43 -14
  59. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.tsx +5 -5
  60. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostModelsAuditTable.tsx +1 -1
  61. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorContent.tsx +67 -42
  62. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +115 -39
  63. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +188 -38
  64. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +75 -17
  65. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.tsx +147 -58
  66. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor.css +5 -2
  67. package/templates/.agents/dashboard/modules/cost-monitor/src/react/index.ts +2 -2
  68. package/templates/.agents/dashboard/modules/cost-monitor/src/react/period-cost-groups.ts +2 -1
  69. package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-compact-cost-page.ts +18 -7
  70. package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.ts +95 -9
  71. package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-run-page.ts +29 -17
  72. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test.ts +0 -24
  73. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.test.ts +225 -424
  74. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +24 -15
  75. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-terminal-day.test.ts +6 -1
  76. package/templates/.agents/dashboard/modules/cost-monitor/src/server/source-size-cost-server/build-cost-monitor-projection-agents.test.ts +31 -0
  77. package/templates/.agents/dashboard/modules/cost-monitor/src/server/source-size-cost-server/build-cost-summary-projection-duration.test.ts +414 -0
  78. package/templates/.agents/dashboard/modules/operations/package.json +1 -1
  79. package/templates/.agents/dashboard/modules/operations/src/contracts.ts +26 -23
  80. package/templates/.agents/dashboard/modules/operations/src/react/EntityTables.tsx +31 -11
  81. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +3 -1
  82. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +51 -21
  83. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +47 -5
  84. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageNavigation.tsx +1 -4
  85. package/templates/.agents/dashboard/modules/operations/src/react/PeriodSummaryTable.tsx +32 -10
  86. package/templates/.agents/dashboard/modules/operations/src/react/TaskDetailsDialog.tsx +9 -3
  87. package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkBoard.tsx +13 -5
  88. package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.test.ts +12 -4
  89. package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.tsx +1 -4
  90. package/templates/.agents/dashboard/modules/operations/src/react/conversation-rows.ts +1 -2
  91. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +385 -4
  92. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +481 -61
  93. package/templates/.agents/dashboard/modules/operations/src/react/export/export-layout.test.ts +14 -1
  94. package/templates/.agents/dashboard/modules/operations/src/react/export/xlsx-runtime-e2e.test.ts +248 -0
  95. package/templates/.agents/dashboard/modules/operations/src/react/operation-duration.test.ts +4 -4
  96. package/templates/.agents/dashboard/modules/operations/src/react/operation-duration.ts +6 -4
  97. package/templates/.agents/dashboard/modules/operations/src/react/operations-global-filters.test.ts +4 -1
  98. package/templates/.agents/dashboard/modules/operations/src/react/operations-overview-period-filter.test.ts +1 -1
  99. package/templates/.agents/dashboard/modules/operations/src/react/operations-overview.status-cards.test.ts +1 -1
  100. package/templates/.agents/dashboard/modules/operations/src/react/operations-page-contract.ts +46 -6
  101. package/templates/.agents/dashboard/modules/operations/src/react/operations-view-order.test.ts +1 -4
  102. package/templates/.agents/dashboard/modules/operations/src/react/period-summary.test.ts +82 -6
  103. package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.test.ts +2 -1
  104. package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.ts +1 -1
  105. package/templates/.agents/dashboard/modules/operations/src/server/execution-relationship-counts.test.ts +19 -7
  106. package/templates/.agents/dashboard/modules/operations/src/server/execution-relationship-counts.ts +4 -1
  107. package/templates/.agents/dashboard/modules/operations/src/server/quick-daily-operations-projection.ts +11 -5
  108. package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
  109. package/templates/.agents/dashboard/packages/branding/package.json +1 -1
  110. package/templates/.agents/dashboard/packages/branding/src/index.ts +1 -1
  111. package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
  112. package/templates/.agents/dashboard/packages/contracts/src/index.ts +1 -0
  113. package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
  114. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +152 -149
  115. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs.metafile.json +7333 -0
  116. package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +149 -146
  117. package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
  118. package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-dashboard.mjs +15 -7
  119. package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-runtime.mjs +44 -13
  120. package/templates/.agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs +5 -2
  121. package/templates/.agents/dashboard/packages/local-runtime/scripts/source-size-runtime-scripts/sqlite-read-model-fixture.mjs +397 -0
  122. package/templates/.agents/dashboard/packages/local-runtime/scripts/test-sqlite-read-model.mjs +472 -145
  123. package/templates/.agents/dashboard/packages/local-runtime/scripts/test-unix-launchers.mjs +15 -3
  124. package/templates/.agents/dashboard/packages/local-runtime/scripts/validate-sqlite-read-model.mjs +129 -31
  125. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +153 -150
  126. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +6 -2
  127. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +3 -3
  128. package/templates/.agents/dashboard/packages/local-runtime/src/server-board.test.ts +55 -16
  129. package/templates/.agents/dashboard/packages/local-runtime/src/server-board.ts +23 -13
  130. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot.test.ts +19 -4
  131. package/templates/.agents/dashboard/packages/local-runtime/src/server-workspace.ts +7 -3
  132. package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +132 -9
  133. package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +126 -60
  134. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-metric-contract.ts +16 -2
  135. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +1861 -350
  136. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.ts +1218 -352
  137. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +119 -42
  138. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +45 -20
  139. package/templates/.agents/dashboard/packages/ui/package.json +1 -1
  140. package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
  141. package/templates/.agents/dashboard/tests/e2e/specs/dashboard.spec.ts +7 -5
  142. package/templates/.agents/design/.zaip-managed.json +3 -3
  143. package/templates/.agents/design/apps/catalog/package.json +1 -1
  144. package/templates/.agents/design/packages/local-runtime/package.json +1 -1
  145. package/templates/.agents/growth/estrategia-bootstrap-90-dias.md +169 -0
  146. package/templates/.agents/growth/strategy.md +27 -0
  147. package/templates/.agents/marketing/estrategia-marketing-zaip-90-dias.md +197 -0
  148. package/templates/.agents/marketing/strategy.md +29 -0
  149. package/templates/.agents/requirements/autonomous-assurance.md +1 -1
  150. package/templates/.agents/requirements/comparative-audit.md +1 -1
  151. package/templates/.agents/requirements/context-engine.md +1 -1
  152. package/templates/.agents/requirements/cost-observability.md +1 -1
  153. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  154. package/templates/.agents/requirements/data-export.md +1 -1
  155. package/templates/.agents/requirements/design-system.md +1 -1
  156. package/templates/.agents/requirements/execution-engine.md +1 -1
  157. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  158. package/templates/.agents/requirements/model-orchestration.md +1 -1
  159. package/templates/.agents/requirements/public-distribution.md +1 -1
  160. package/templates/.agents/requirements/software-architecture.md +1 -1
  161. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  162. package/templates/.agents/requirements/work-lifecycle.md +1 -1
  163. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  164. package/templates/.agents/runtime/VERSION +1 -1
  165. package/templates/.agents/runtime/bin/zaip.mjs +30 -29
  166. package/templates/.agents/runtime/checksums.sha256 +6 -6
  167. package/templates/.agents/runtime/manifest.json +1 -1
  168. package/templates/.agents/runtime/pnpm-lock.sha256 +1 -1
  169. package/templates/.agents/runtime/provenance.json +5 -5
  170. package/templates/.agents/runtime/sbom.cdx.json +3 -3
  171. package/templates/.agents/sales/playbook.md +32 -0
  172. package/templates/.agents/sales/roteiro-comercial-zaip.md +252 -0
  173. package/templates/.agents/skills/zaip-aios/SKILL.md +1 -1
  174. package/templates/.agents/skills/zaip-skill-brand-governance/SKILL.md +9 -2
  175. package/templates/.agents/skills/zaip-skill-brand-governance/references/brandbook-framework.md +39 -0
  176. package/templates/.agents/skills/zaip-skill-brand-governance/references/brandbook-standards.md +1 -1
  177. package/templates/.agents/skills/zaip-skill-enforce-architecture/SKILL.md +2 -0
  178. package/templates/.agents/skills/zaip-skill-growth-strategy-revops/SKILL.md +6 -0
  179. package/templates/.agents/skills/zaip-skill-marketing/SKILL.md +6 -0
  180. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-local-telemetry.mjs +39 -82
  181. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.mjs +13 -8
  182. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.test.mjs +44 -14
  183. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.mjs +19 -9
  184. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.test.mjs +29 -5
  185. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/source-size-telemetry/model-identity-reconciliation.mjs +77 -0
  186. package/templates/.agents/skills/zaip-skill-sales-methodology/SKILL.md +6 -0
  187. package/templates/.agents/skills/zaip-skill-sqlite-read-model/scripts/ensure-node.mjs +28 -5
  188. package/templates/.agents/zaip-aios/INDEX.md +10 -0
  189. package/templates/.agents/zaip-aios/README.md +2 -1
  190. package/templates/.agents/zaip-aios/VERSION +1 -1
  191. package/templates/.agents/zaip-aios/guides/18-catalogo-de-agentes.md +76 -0
  192. package/templates/.agents/zaip-aios/guides/19-assurance-e-autonomia.md +72 -0
  193. package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +330 -0
  194. package/templates/.agents/zaip-aios/guides/21-telemetria-monitor-custos.md +52 -0
  195. package/templates/.agents/zaip-aios/guides/22-fluxos-e-roteamento.md +69 -0
  196. package/templates/.agents/zaip-aios/guides/23-orquestracao-de-modelos.md +483 -0
  197. package/templates/.agents/zaip-aios/guides/24-calculo-de-custos-openai.md +85 -0
  198. package/templates/.agents/zaip-aios/guides/25-fontes-de-precos-openai.md +18 -0
  199. package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +44 -0
  200. package/templates/.agents/zaip-aios/guides/27-telemetria-git-native.md +167 -0
  201. package/templates/.agents/zaip-aios/guides/28-lifecycle-completo.md +144 -0
  202. package/templates/.agents/zaip-aios/guides/assets/diagrams/lifecycles-task-spec-prd.png +0 -0
  203. package/templates/.agents/zaip-aios/guides/assets/diagrams/prd-lifecycle.png +0 -0
  204. package/templates/.agents/zaip-aios/guides/assets/diagrams/spec-lifecycle.png +0 -0
  205. package/templates/.agents/zaip-aios/guides/assets/diagrams/task-lifecycle.png +0 -0
  206. package/templates/template-manifest.json +313 -177
  207. package/templates/.agents/dashboard/apps/frontend/dist/assets/DashboardHelpDialog-Cs6dzDmW.js +0 -1505
  208. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-QE1k9yZB.css +0 -1
  209. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-_Pf5DA_A.js +0 -3
  210. package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-BVlz3DLZ.js +0 -1
  211. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-Cf9ctPVt.js +0 -68
  212. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-8A4DcNXM.js +0 -2
@@ -32,10 +32,22 @@ for (const launcher of launchers) {
32
32
  const linuxLauncher = await readFile(resolve(workspaceRoot, launchers[0]), "utf8");
33
33
  assert.match(linuxLauncher, /command -v node/, "Linux launcher must resolve Node from PATH");
34
34
  assert.match(linuxLauncher, /ZAIP_NODE/, "Linux launcher must allow an explicit Node executable");
35
- assert.match(linuxLauncher, /Node\.js 22 ou superior/, "Linux launcher must report an actionable Node version failure");
35
+ assert.match(
36
+ linuxLauncher,
37
+ /Node\.js 22 ou superior/,
38
+ "Linux launcher must report an actionable Node version failure",
39
+ );
36
40
  assert.match(linuxLauncher, /node:sqlite/, "Linux launcher must verify node:sqlite");
37
- assert.match(linuxLauncher, /exec "\$node_bin" "\$runtime" "\$@"/, "Linux launcher must preserve arguments and runtime exit code");
41
+ assert.match(
42
+ linuxLauncher,
43
+ /exec "\$node_bin" "\$runtime" "\$@"/,
44
+ "Linux launcher must preserve arguments and runtime exit code",
45
+ );
38
46
 
39
47
  const macLauncher = await readFile(resolve(workspaceRoot, launchers[1]), "utf8");
40
- assert.match(macLauncher, /exec .*zaip-dashboard-linux\.sh.*"\$@"/, "macOS launcher must delegate and preserve arguments/exit code");
48
+ assert.match(
49
+ macLauncher,
50
+ /exec .*zaip-dashboard-linux\.sh.*"\$@"/,
51
+ "macOS launcher must delegate and preserve arguments/exit code",
52
+ );
41
53
  process.stdout.write("Unix dashboard launcher contract passed.\n");
@@ -1,15 +1,18 @@
1
1
  import assert from "node:assert/strict";
2
- import { DatabaseSync } from "node:sqlite";
3
2
  import { resolve } from "node:path";
3
+ import { DatabaseSync } from "node:sqlite";
4
4
 
5
5
  const workspaceRoot = resolve(import.meta.dirname, "../../../../..");
6
- const databasePath = process.env.ZAIP_SQLITE_DB_PATH ?? resolve(workspaceRoot, ".local/dashboard-sqlite/read-model.sqlite");
6
+ const databasePath =
7
+ process.env.ZAIP_SQLITE_DB_PATH ??
8
+ resolve(workspaceRoot, ".local/dashboard-sqlite/read-model.sqlite");
7
9
  const runtime = await import("../dist/server.cjs");
8
10
  const schema = runtime.validateSqliteReadModelSchema(databasePath);
9
11
  const database = new DatabaseSync(databasePath, { readOnly: true });
10
12
 
11
13
  try {
12
- const metrics = database.prepare(`
14
+ const metrics = database
15
+ .prepare(`
13
16
  SELECT
14
17
  COUNT(*) AS activity_count,
15
18
  COUNT(DISTINCT run_id) AS distinct_run_count,
@@ -26,16 +29,30 @@ try {
26
29
  SUM(activity_source_kind = 'unassisted_turn') AS unassisted_turn_count
27
30
  FROM zaip_aios_activities
28
31
  WHERE payload_type IS NULL
29
- `).get();
30
- const excluded = database.prepare(`
32
+ `)
33
+ .get();
34
+ const excluded = database
35
+ .prepare(`
31
36
  SELECT COUNT(*) AS count
32
37
  FROM zaip_vw_files
33
38
  WHERE path LIKE '.agents/records/lifecycle/%'
34
39
  OR path LIKE '.agents/records/telemetry/%'
35
- `).get();
36
- const schemaObjects = new Map(database.prepare("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view')").all().map(({ name, type }) => [name, type]));
37
- const metadata = Object.fromEntries(database.prepare("SELECT key, value FROM zaip_vw_read_model_metadata").all().map(({ key, value }) => [key, value]));
38
- const invocationAudit = database.prepare(`
40
+ `)
41
+ .get();
42
+ const schemaObjects = new Map(
43
+ database
44
+ .prepare("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view')")
45
+ .all()
46
+ .map(({ name, type }) => [name, type]),
47
+ );
48
+ const metadata = Object.fromEntries(
49
+ database
50
+ .prepare("SELECT key, value FROM zaip_vw_read_model_metadata")
51
+ .all()
52
+ .map(({ key, value }) => [key, value]),
53
+ );
54
+ const invocationAudit = database
55
+ .prepare(`
39
56
  SELECT
40
57
  COUNT(*) AS invocation_count,
41
58
  SUM(invocation_kind = 'delegated') AS delegated_invocation_count,
@@ -51,30 +68,103 @@ try {
51
68
  COALESCE(calculated_cost_usd, 0)
52
69
  ) > 0.000002) AS component_mismatch_count
53
70
  FROM zaip_vw_operations_agent_invocations
54
- `).get();
71
+ `)
72
+ .get();
55
73
 
56
- assert.equal(metrics.activity_count, metrics.distinct_run_count, "A fato deve ter exatamente uma linha por run_id");
57
- assert.equal(metrics.unknown_token_count, 0, "A fato não deve conter Runs com total_tokens desconhecido");
58
- assert.equal(metrics.positive_token_unknown_duration_with_provenance_count, 0, "Duração ausente deve permanecer NULL, sem proveniência inventada");
59
- assert.equal(metrics.known_token_missing_cost_count, 0, "Token conhecido exige custo conhecido ou estimado");
74
+ assert.equal(
75
+ metrics.activity_count,
76
+ metrics.distinct_run_count,
77
+ "A fato deve ter exatamente uma linha por run_id",
78
+ );
79
+ assert.equal(
80
+ metrics.unknown_token_count,
81
+ 0,
82
+ "A fato não deve conter Runs com total_tokens desconhecido",
83
+ );
84
+ assert.equal(
85
+ metrics.positive_token_unknown_duration_with_provenance_count,
86
+ 0,
87
+ "Duração ausente deve permanecer NULL, sem proveniência inventada",
88
+ );
89
+ assert.equal(
90
+ metrics.known_token_missing_cost_count,
91
+ 0,
92
+ "Token conhecido exige custo conhecido ou estimado",
93
+ );
60
94
  assert.equal(excluded.count, 0, "Lifecycle e telemetria agregada não podem entrar no snapshot");
61
- assert.equal(Number(metadata.canonical_run_count), metrics.activity_count + Number(metadata.excluded_unknown_token_run_count), "A fato mais os Runs excluídos deve coincidir com a origem canônica");
62
- assert.equal(Number(metadata.agent_run_count), metrics.agent_run_count, "agent_run_count deve coincidir com a fato");
63
- assert.equal(Number(metadata.unassisted_turn_count), metrics.unassisted_turn_count, "unassisted_turn_count deve coincidir com a fato");
64
- assert.equal(invocationAudit.invocation_count, metrics.agent_run_count, "A view de invocações deve preservar uma linha por Agent Run");
65
- assert.equal(invocationAudit.missing_tokens_count, 0, "Toda invocação contabilizada deve expor tokens totais");
66
- assert.equal(invocationAudit.missing_effective_cost_count, 0, "Toda invocação contabilizada deve expor custo efetivo USD e BRL");
67
- assert.equal(invocationAudit.missing_calculated_cost_count, 0, "Toda invocação deve permitir reproduzir o custo pelo Guide");
68
- assert.equal(invocationAudit.component_mismatch_count, 0, "As parcelas de custo devem somar o custo calculado");
95
+ assert.equal(
96
+ Number(metadata.canonical_run_count),
97
+ metrics.activity_count + Number(metadata.excluded_unknown_token_run_count),
98
+ "A fato mais os Runs excluídos deve coincidir com a origem canônica",
99
+ );
100
+ assert.equal(
101
+ Number(metadata.agent_run_count),
102
+ metrics.agent_run_count,
103
+ "agent_run_count deve coincidir com a fato",
104
+ );
105
+ assert.equal(
106
+ Number(metadata.unassisted_turn_count),
107
+ metrics.unassisted_turn_count,
108
+ "unassisted_turn_count deve coincidir com a fato",
109
+ );
110
+ assert.equal(
111
+ invocationAudit.invocation_count,
112
+ metrics.agent_run_count,
113
+ "A view de invocações deve preservar uma linha por Agent Run",
114
+ );
115
+ assert.equal(
116
+ invocationAudit.missing_tokens_count,
117
+ 0,
118
+ "Toda invocação contabilizada deve expor tokens totais",
119
+ );
120
+ assert.equal(
121
+ invocationAudit.missing_effective_cost_count,
122
+ 0,
123
+ "Toda invocação contabilizada deve expor custo efetivo USD e BRL",
124
+ );
125
+ assert.equal(
126
+ invocationAudit.missing_calculated_cost_count,
127
+ 0,
128
+ "Toda invocação deve permitir reproduzir o custo pelo Guide",
129
+ );
130
+ assert.equal(
131
+ invocationAudit.component_mismatch_count,
132
+ 0,
133
+ "As parcelas de custo devem somar o custo calculado",
134
+ );
69
135
 
70
- assert.equal(schemaObjects.get("canonical_artifacts"), undefined, "canonical_artifacts must not be a physical or unprefixed object");
71
- assert.equal(schemaObjects.get("zaip_vw_canonical_artifacts"), "view", "canonical_artifacts must be a prefixed view");
136
+ assert.equal(
137
+ schemaObjects.get("canonical_artifacts"),
138
+ undefined,
139
+ "canonical_artifacts must not be a physical or unprefixed object",
140
+ );
141
+ assert.equal(
142
+ schemaObjects.get("zaip_vw_canonical_artifacts"),
143
+ "view",
144
+ "canonical_artifacts must be a prefixed view",
145
+ );
72
146
  assert.deepEqual(
73
- [...schemaObjects].filter(([, type]) => type === "table").map(([name]) => name).sort(),
74
- ["cost_invocation_dimension_facts", "zaip_aios_activities", "zaip_dim_llm_model", "zaip_dim_provider", "zaip_dim_zaip_agent"],
147
+ [...schemaObjects]
148
+ .filter(([, type]) => type === "table")
149
+ .map(([name]) => name)
150
+ .sort(),
151
+ [
152
+ "cost_invocation_dimension_facts",
153
+ "zaip_aios_activities",
154
+ "zaip_dim_llm_model",
155
+ "zaip_dim_provider",
156
+ "zaip_dim_zaip_agent",
157
+ ],
75
158
  "the isolated candidate must persist exactly the fact, dimensions, and financial dimension fact",
76
159
  );
77
- assert.equal([...schemaObjects].filter(([name, type]) => type === "view" && (!name.startsWith("zaip_vw_") || name.startsWith("zaip_vw_vw_"))).length, 0, "Each view must have exactly one zaip_vw_ prefix");
160
+ assert.equal(
161
+ [...schemaObjects].filter(
162
+ ([name, type]) =>
163
+ type === "view" && (!name.startsWith("zaip_vw_") || name.startsWith("zaip_vw_vw_")),
164
+ ).length,
165
+ 0,
166
+ "Each view must have exactly one zaip_vw_ prefix",
167
+ );
78
168
 
79
169
  const costEntityViews = [
80
170
  ["zaip_vw_cost_monitor_tasks", "task_id"],
@@ -85,7 +175,8 @@ try {
85
175
  ];
86
176
  let invalidCostEntityRowCount = 0;
87
177
  for (const [view, id] of costEntityViews) {
88
- const result = database.prepare(`
178
+ const result = database
179
+ .prepare(`
89
180
  SELECT COUNT(*) AS count
90
181
  FROM ${view}
91
182
  WHERE ${id} IS NULL
@@ -94,12 +185,19 @@ try {
94
185
  OR occurred_at IS NULL
95
186
  OR occurred_at LIKE '1969-%'
96
187
  OR occurred_at LIKE '1970-%'
97
- `).get();
188
+ `)
189
+ .get();
98
190
  invalidCostEntityRowCount += Number(result.count);
99
191
  }
100
- assert.equal(invalidCostEntityRowCount, 0, "Cost entity views require canonical IDs, titles, and non-epoch timestamps");
192
+ assert.equal(
193
+ invalidCostEntityRowCount,
194
+ 0,
195
+ "Cost entity views require canonical IDs, titles, and non-epoch timestamps",
196
+ );
101
197
 
102
- process.stdout.write(`${JSON.stringify({ database_path: databasePath, schema_version: metadata.schema_version, ...schema, ...metrics, ...invocationAudit, excluded_derived_source_count: excluded.count, invalid_cost_entity_row_count: invalidCostEntityRowCount })}\n`);
198
+ process.stdout.write(
199
+ `${JSON.stringify({ database_path: databasePath, schema_version: metadata.schema_version, ...schema, ...metrics, ...invocationAudit, excluded_derived_source_count: excluded.count, invalid_cost_entity_row_count: invalidCostEntityRowCount })}\n`,
200
+ );
103
201
  } finally {
104
202
  database.close();
105
203
  }