@zaip-ai/cli 1.3.4 → 1.3.6
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.
- package/dist/services/install-agents-template.d.ts.map +1 -1
- package/dist/services/install-agents-template.js +18 -2
- package/dist/services/install-agents-template.js.map +1 -1
- package/dist/services/template-manifest.d.ts.map +1 -1
- package/dist/services/template-manifest.js +2 -0
- package/dist/services/template-manifest.js.map +1 -1
- package/package.json +1 -1
- package/templates/.agents/architecture/.gitkeep +0 -0
- package/templates/.agents/branding/.gitkeep +0 -0
- package/templates/.agents/dashboard/.zaip-managed.json +63 -51
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-BZWjXQB-.js → CostCalculationGuidePage-DwVZOmMV.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-D8qqeIPE.js → DashboardHelpDialog-3Lrfq645.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-Cm12_A0v.js → PricingSettingsDialog-CyjMXkm8.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-DxO9F8B4.js → ProjectSettingsPage-B_Oj6Dlf.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-_x0twOcS.js → TraceabilityWorkspace-diq9g1L8.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-C09KmlSw.js +68 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-CR4Fbf3g.js → icons-vendor-DXBOtWNI.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Deo_W81f.js +2 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-hPPfVGQv.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-DRJQbKnp.js → react-vendor-DaNXQPyk.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-CMrDYqjR.js → traceability-I4AKqVDX.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/index.html +6 -6
- package/templates/.agents/dashboard/apps/frontend/src/App.tsx +43 -15
- package/templates/.agents/dashboard/apps/frontend/src/cost-period-refresh.test.ts +18 -3
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-capability-nav.css +11 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-period-contract.test.ts +14 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-period.test.ts +22 -7
- package/templates/.agents/dashboard/apps/frontend/src/operations-period.ts +11 -2
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +7 -4
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsFilteredStatusDialog.tsx +131 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.helpers.tsx +2 -1
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +12 -4
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +69 -157
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +19 -4
- package/templates/.agents/dashboard/modules/operations/src/react/operation-date-range.test.ts +25 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operation-date-range.ts +29 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-coverage-toast.test.ts +3 -2
- package/templates/.agents/dashboard/modules/operations/src/react/operations-overview-period-filter.test.ts +12 -2
- package/templates/.agents/dashboard/modules/operations/src/react/operations-overview.status-cards.test.ts +13 -7
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-prerequisites.mjs +40 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-prerequisites.test.mjs +38 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +33 -26
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +5 -8
- package/templates/.agents/dashboard/tests/e2e/specs/cost-monitor-loading.spec.ts +4 -6
- package/templates/.agents/dashboard/tests/e2e/specs/cost-monitor-pagination.spec.ts +4 -0
- package/templates/.agents/dashboard/tests/e2e/specs/cost-monitor-period-transition.spec.ts +43 -17
- package/templates/.agents/dashboard/tests/e2e/specs/dashboard-performance-matrix.spec.ts +9 -3
- package/templates/.agents/dashboard/tests/e2e/specs/dashboard.spec.ts +51 -22
- package/templates/.agents/growth/.gitkeep +0 -0
- package/templates/.agents/marketing/.gitkeep +0 -0
- package/templates/.agents/requirements/autonomous-assurance.md +1 -1
- package/templates/.agents/requirements/comparative-audit.md +1 -1
- package/templates/.agents/requirements/context-engine.md +1 -1
- package/templates/.agents/requirements/cost-observability.md +1 -1
- package/templates/.agents/requirements/dashboard-launch.md +1 -1
- package/templates/.agents/requirements/data-export.md +1 -1
- package/templates/.agents/requirements/design-system.md +1 -1
- package/templates/.agents/requirements/execution-engine.md +1 -1
- package/templates/.agents/requirements/kanban-dashboard.md +1 -1
- package/templates/.agents/requirements/model-orchestration.md +1 -1
- package/templates/.agents/requirements/public-distribution.md +1 -1
- package/templates/.agents/requirements/software-architecture.md +1 -1
- package/templates/.agents/requirements/strategic-improvements.md +1 -1
- package/templates/.agents/requirements/work-lifecycle.md +1 -1
- package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
- package/templates/.agents/sales/.gitkeep +0 -0
- package/templates/README.md +722 -0
- package/templates/template-manifest.json +96 -97
- package/templates/.agents/architecture/software-architecture.md +0 -131
- package/templates/.agents/branding/brandbook.docx +0 -0
- package/templates/.agents/branding/brandbook.md +0 -60
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-Cpp8xFij.js +0 -68
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-B31GMG5O.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-ncC1rxap.js +0 -2
- package/templates/.agents/growth/estrategia-bootstrap-90-dias.md +0 -169
- package/templates/.agents/growth/strategy.md +0 -27
- package/templates/.agents/marketing/estrategia-marketing-zaip-90-dias.md +0 -197
- package/templates/.agents/marketing/strategy.md +0 -29
- package/templates/.agents/sales/playbook.md +0 -32
- package/templates/.agents/sales/roteiro-comercial-zaip.md +0 -252
|
@@ -163,10 +163,12 @@ test("exports Kanban, Lista and Cost Monitor through a save picker while the das
|
|
|
163
163
|
});
|
|
164
164
|
|
|
165
165
|
test("renders the modern read-only dashboard and meets accessibility gates", async ({ page }) => {
|
|
166
|
-
await openDashboard(page);
|
|
166
|
+
const initialResponse = await openDashboard(page);
|
|
167
167
|
const globalPeriod = page.getByRole("combobox", { name: /Per/ }).first();
|
|
168
|
-
await expect(globalPeriod).toHaveValue("
|
|
169
|
-
|
|
168
|
+
await expect(globalPeriod).toHaveValue("all");
|
|
169
|
+
const initialUrl = new URL(initialResponse.url());
|
|
170
|
+
expect(initialUrl.searchParams.has("from")).toBe(false);
|
|
171
|
+
expect(initialUrl.searchParams.has("to")).toBe(false);
|
|
170
172
|
await expect(page.getByRole("navigation", { name: "Dashboard Zaip AIOS menu" })).toBeVisible();
|
|
171
173
|
const capabilityNav = page.getByRole("navigation", { name: "Áreas do dashboard" });
|
|
172
174
|
const globalControls = page.locator(".dashboard-global-controls");
|
|
@@ -182,6 +184,13 @@ test("renders the modern read-only dashboard and meets accessibility gates", asy
|
|
|
182
184
|
buttons.map((button) => button.getBoundingClientRect().top),
|
|
183
185
|
);
|
|
184
186
|
expect(new Set(buttonBoxes.map((top) => Math.round(top))).size).toBe(1);
|
|
187
|
+
await expect(globalControls.getByRole("textbox", { name: "Busca" })).toBeHidden();
|
|
188
|
+
await expect(globalControls.getByLabel("Data inicial")).toBeHidden();
|
|
189
|
+
await expect(globalControls.getByLabel("Data final")).toBeHidden();
|
|
190
|
+
await expect(globalControls.getByRole("combobox", { name: "Período" })).toBeHidden();
|
|
191
|
+
await expect(page.getByLabel("Kanban de trabalho")).toHaveCount(0);
|
|
192
|
+
await expect(page.locator(".operations-task-card")).toHaveCount(0);
|
|
193
|
+
await selectOperations(page);
|
|
185
194
|
const searchInput = globalControls.getByRole("textbox", { name: "Busca" });
|
|
186
195
|
await expect(searchInput).toBeVisible();
|
|
187
196
|
await expect(globalControls.getByRole("button", { name: "Limpar busca" })).toHaveCount(0);
|
|
@@ -207,9 +216,6 @@ test("renders the modern read-only dashboard and meets accessibility gates", asy
|
|
|
207
216
|
elements.map((element) => Math.round(element.getBoundingClientRect().bottom)),
|
|
208
217
|
);
|
|
209
218
|
expect(new Set(controlRowBottoms).size).toBe(1);
|
|
210
|
-
await expect(page.getByLabel("Kanban de trabalho")).toHaveCount(0);
|
|
211
|
-
await expect(page.locator(".operations-task-card")).toHaveCount(0);
|
|
212
|
-
await selectOperations(page);
|
|
213
219
|
await expect(page.getByLabel("Kanban de trabalho")).toBeVisible();
|
|
214
220
|
await expect(page.locator(".operations-risk.is-standard").first()).toBeVisible();
|
|
215
221
|
const visibleCards = page.locator(".operations-task-card:visible");
|
|
@@ -243,7 +249,7 @@ test("renders the modern read-only dashboard and meets accessibility gates", asy
|
|
|
243
249
|
await page.getByRole("combobox", { name: "Período nos filtros" }).selectOption("today");
|
|
244
250
|
await expect(page.getByLabel("Data inicial nos filtros")).toHaveValue(today);
|
|
245
251
|
await page.getByLabel("Data inicial nos filtros").fill(initialStart);
|
|
246
|
-
await expect(
|
|
252
|
+
await expect(period).toHaveValue("custom");
|
|
247
253
|
|
|
248
254
|
await period.selectOption("today");
|
|
249
255
|
await expect(startDate).toHaveValue(today);
|
|
@@ -266,6 +272,13 @@ test("renders the modern read-only dashboard and meets accessibility gates", asy
|
|
|
266
272
|
|
|
267
273
|
const results = await new AxeBuilder({ page }).analyze();
|
|
268
274
|
expect(results.violations).toEqual([]);
|
|
275
|
+
|
|
276
|
+
await capabilityNav.getByRole("button", { name: /Monitor de Custos/ }).click();
|
|
277
|
+
await expect(page.locator(".cost-tabs")).toBeVisible();
|
|
278
|
+
await expect(searchInput).toBeVisible();
|
|
279
|
+
await expect(startDate).toBeVisible();
|
|
280
|
+
await expect(endDate).toBeVisible();
|
|
281
|
+
await expect(period).toBeVisible();
|
|
269
282
|
});
|
|
270
283
|
|
|
271
284
|
test("loads a quick Operations summary without full snapshot hydration", async ({ page }) => {
|
|
@@ -456,9 +469,11 @@ test("groups macro work in All and reveals descendant Tasks only in Tasks", asyn
|
|
|
456
469
|
test("shows the observed all-time macro duration consistently for SPEC and PRD", async ({
|
|
457
470
|
page,
|
|
458
471
|
}) => {
|
|
459
|
-
await openDashboard(page);
|
|
460
|
-
await expect(page.getByRole("combobox", { name: /Per/ }).first()).toHaveValue("
|
|
461
|
-
const
|
|
472
|
+
const response = await openDashboard(page);
|
|
473
|
+
await expect(page.getByRole("combobox", { name: /Per/ }).first()).toHaveValue("all");
|
|
474
|
+
const responseUrl = new URL(response.url());
|
|
475
|
+
expect(responseUrl.searchParams.has("from")).toBe(false);
|
|
476
|
+
expect(responseUrl.searchParams.has("to")).toBe(false);
|
|
462
477
|
const projection = (await response.json()) as {
|
|
463
478
|
summary: {
|
|
464
479
|
overview_metrics?: {
|
|
@@ -526,20 +541,26 @@ test("loads monthly overview quickly and keeps PRD and SPEC chart totals reconci
|
|
|
526
541
|
page,
|
|
527
542
|
}) => {
|
|
528
543
|
const openedAt = Date.now();
|
|
529
|
-
await openDashboard(page);
|
|
544
|
+
const initialQuickResponse = await openDashboard(page);
|
|
530
545
|
expect(Date.now() - openedAt).toBeLessThan(3_000);
|
|
546
|
+
await selectOperations(page);
|
|
531
547
|
|
|
532
548
|
const period = page.getByRole("combobox", { name: /Per/ }).first();
|
|
533
549
|
for (const preset of ["all", "this-month"] as const) {
|
|
534
|
-
const response = page.waitForResponse(
|
|
535
|
-
(candidate) =>
|
|
536
|
-
candidate.status() === 200 &&
|
|
537
|
-
candidate.url().includes("/api/v2/operations") &&
|
|
538
|
-
candidate.url().includes("scope=quick"),
|
|
539
|
-
);
|
|
540
550
|
const selectedAt = Date.now();
|
|
541
|
-
|
|
542
|
-
|
|
551
|
+
const quickResponse =
|
|
552
|
+
preset === "all"
|
|
553
|
+
? initialQuickResponse
|
|
554
|
+
: await (async () => {
|
|
555
|
+
const response = page.waitForResponse(
|
|
556
|
+
(candidate) =>
|
|
557
|
+
candidate.status() === 200 &&
|
|
558
|
+
candidate.url().includes("/api/v2/operations") &&
|
|
559
|
+
candidate.url().includes("scope=quick"),
|
|
560
|
+
);
|
|
561
|
+
await period.selectOption(preset);
|
|
562
|
+
return response;
|
|
563
|
+
})();
|
|
543
564
|
const quickUrl = new URL(quickResponse.url());
|
|
544
565
|
const dateControls = page.locator(".dashboard-global-controls");
|
|
545
566
|
const expectedFrom =
|
|
@@ -551,7 +572,10 @@ test("loads monthly overview quickly and keeps PRD and SPEC chart totals reconci
|
|
|
551
572
|
const quickProjection = (await quickResponse.json()) as {
|
|
552
573
|
summary: {
|
|
553
574
|
overview_metrics?: {
|
|
554
|
-
macro_metrics?: Record<
|
|
575
|
+
macro_metrics?: Record<
|
|
576
|
+
"specs" | "prds",
|
|
577
|
+
{ entity_count: number; total_duration_ms: number | null }
|
|
578
|
+
>;
|
|
555
579
|
};
|
|
556
580
|
};
|
|
557
581
|
};
|
|
@@ -581,6 +605,8 @@ test("loads monthly overview quickly and keeps PRD and SPEC chart totals reconci
|
|
|
581
605
|
const macroKey = kind === "SPECs" ? "specs" : "prds";
|
|
582
606
|
const macroDuration =
|
|
583
607
|
quickProjection.summary.overview_metrics?.macro_metrics?.[macroKey]?.total_duration_ms;
|
|
608
|
+
const macroCount =
|
|
609
|
+
quickProjection.summary.overview_metrics?.macro_metrics?.[macroKey]?.entity_count;
|
|
584
610
|
expect(macroDuration).not.toBeUndefined();
|
|
585
611
|
if (macroDuration === null) {
|
|
586
612
|
await expect(
|
|
@@ -589,7 +615,7 @@ test("loads monthly overview quickly and keeps PRD and SPEC chart totals reconci
|
|
|
589
615
|
name: new RegExp(`Tempo total de execu[cç][aã]o de ${kind}`),
|
|
590
616
|
})
|
|
591
617
|
.locator("strong"),
|
|
592
|
-
).toHaveText("Indisponível");
|
|
618
|
+
).toHaveText(macroCount === 0 ? "0" : "Indisponível");
|
|
593
619
|
}
|
|
594
620
|
}
|
|
595
621
|
}
|
|
@@ -660,6 +686,9 @@ async function openDashboard(page: import("@playwright/test").Page) {
|
|
|
660
686
|
}
|
|
661
687
|
|
|
662
688
|
async function selectPopulatedAllTime(page: import("@playwright/test").Page) {
|
|
689
|
+
await selectOperations(page);
|
|
690
|
+
const period = page.getByRole("combobox", { name: /Per/ }).first();
|
|
691
|
+
if ((await period.inputValue()) === "all") return null;
|
|
663
692
|
const response = page.waitForResponse((candidate) => {
|
|
664
693
|
if (
|
|
665
694
|
candidate.status() !== 200 ||
|
|
@@ -671,7 +700,7 @@ async function selectPopulatedAllTime(page: import("@playwright/test").Page) {
|
|
|
671
700
|
const url = new URL(candidate.url());
|
|
672
701
|
return !url.searchParams.has("from") && !url.searchParams.has("to");
|
|
673
702
|
});
|
|
674
|
-
await
|
|
703
|
+
await period.selectOption("all");
|
|
675
704
|
return response;
|
|
676
705
|
}
|
|
677
706
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|