@zaip-ai/cli 1.4.3 → 2.2.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.
- package/README.md +33 -14
- package/dist/services/adapter-hook-sources.d.ts +1 -0
- package/dist/services/adapter-hook-sources.d.ts.map +1 -1
- package/dist/services/adapter-hook-sources.js +1 -0
- package/dist/services/adapter-hook-sources.js.map +1 -1
- package/dist/services/adapters.d.ts +1 -1
- package/dist/services/adapters.d.ts.map +1 -1
- package/dist/services/adapters.js +20 -16
- package/dist/services/adapters.js.map +1 -1
- package/dist/services/agent-adapters.d.ts +97 -34
- package/dist/services/agent-adapters.d.ts.map +1 -1
- package/dist/services/agent-adapters.js +279 -54
- package/dist/services/agent-adapters.js.map +1 -1
- package/dist/services/agent-adapters.test.js +13 -7
- package/dist/services/agent-adapters.test.js.map +1 -1
- package/dist/services/codex-conversation-lifecycle-hook.d.ts +2 -0
- package/dist/services/codex-conversation-lifecycle-hook.d.ts.map +1 -0
- package/dist/services/codex-conversation-lifecycle-hook.js +29 -0
- package/dist/services/codex-conversation-lifecycle-hook.js.map +1 -0
- package/dist/services/codex-pre-tool-hook-template.d.ts.map +1 -1
- package/dist/services/codex-pre-tool-hook-template.js +173 -0
- package/dist/services/codex-pre-tool-hook-template.js.map +1 -1
- package/dist/services/codex-subagent-hook-template.d.ts +1 -1
- package/dist/services/codex-subagent-hook-template.d.ts.map +1 -1
- package/dist/services/codex-subagent-hook-template.js +1 -1
- package/dist/services/doctor.js +2 -2
- package/dist/services/install-agents-template.d.ts.map +1 -1
- package/dist/services/install-agents-template.js +117 -5
- package/dist/services/install-agents-template.js.map +1 -1
- package/dist/services/logger.js +1 -1
- package/dist/services/logger.js.map +1 -1
- package/dist/services/logger.test.js +2 -2
- package/dist/services/runtime-template.test.js +9 -1
- package/dist/services/runtime-template.test.js.map +1 -1
- package/dist/services/stack-git.d.ts +3 -0
- package/dist/services/stack-git.d.ts.map +1 -1
- package/dist/services/stack-git.js +24 -3
- package/dist/services/stack-git.js.map +1 -1
- package/dist/services/template-manifest.d.ts.map +1 -1
- package/dist/services/template-manifest.js +3 -1
- package/dist/services/template-manifest.js.map +1 -1
- package/dist/services/transactional-files.d.ts +2 -1
- package/dist/services/transactional-files.d.ts.map +1 -1
- package/dist/services/transactional-files.js +8 -3
- package/dist/services/transactional-files.js.map +1 -1
- package/package.json +2 -2
- package/templates/.agents/README-ENG.md +735 -0
- package/templates/.agents/README.md +49 -43
- package/templates/.agents/architecture/hostinger-cloudflare-terraform.md +90 -0
- package/templates/.agents/config/agents/catalog.yaml +18 -18
- package/templates/.agents/config/autonomous-cloud-inputs.json +41 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-analyst.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-auditor.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-backend.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-brand-strategist.toml +6 -8
- package/templates/.agents/config/clients/codex/agents/zaip-agent-builder.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-cloud-engineer.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-data-analyst.toml +5 -7
- package/templates/.agents/config/clients/codex/agents/zaip-agent-designer.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-frontend.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-general-operations.toml +6 -8
- package/templates/.agents/config/clients/codex/agents/zaip-agent-governance-compliance.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-growth-strategist.toml +6 -8
- package/templates/.agents/config/clients/codex/agents/zaip-agent-integrator.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-marketing-analyst.toml +6 -8
- package/templates/.agents/config/clients/codex/agents/zaip-agent-orchestrator.toml +4 -5
- package/templates/.agents/config/clients/codex/agents/zaip-agent-refactoring-specialist.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-reviewer.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-sales-specialist.toml +6 -8
- package/templates/.agents/config/clients/codex/agents/zaip-agent-security-auditor.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-task-executor.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-website-developer.toml +3 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-writer.toml +3 -6
- package/templates/.agents/config/pricing/models.json +53 -33
- package/templates/.agents/dashboard/.zaip-managed.json +64 -44
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-oZVlf-l5.js → DashboardHelpDialog-DaSllaJp.js} +118 -16
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-BYjVOHI_.js → TraceabilityWorkspace-BCvZFMEf.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-_MEktQNM.js +2 -0
- package/templates/.agents/dashboard/apps/frontend/dist/index.html +2 -2
- package/templates/.agents/dashboard/apps/frontend/index.html +1 -1
- package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/App.tsx +28 -9
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +27 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +13 -29
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-identity.test.ts +43 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-identity.ts +32 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-project-overview.ts +28 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +2 -2
- package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
- package/templates/.agents/dashboard/modules/operations/package.json +1 -1
- package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
- package/templates/.agents/dashboard/modules/traceability/src/contracts.ts +1 -1
- package/templates/.agents/dashboard/packages/branding/package.json +1 -1
- package/templates/.agents/dashboard/packages/branding/src/index.ts +1 -1
- package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
- package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +206 -206
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +169 -169
- package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +206 -206
- package/templates/.agents/dashboard/packages/local-runtime/src/server-identity.test.ts +42 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.test.ts +41 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +1 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot.test.ts +2 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-task-trace.ts +6 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/server-workspace.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test-fixtures.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +1 -13
- package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +11 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-incremental-refresh.test.ts +55 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical.ts +9 -6
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.test.ts +22 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.ts +10 -8
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +68 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.ts +39 -10
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-seed.test.ts +47 -42
- package/templates/.agents/dashboard/packages/ui/package.json +1 -1
- package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
- package/templates/.agents/design/.zaip-managed.json +41 -41
- package/templates/.agents/design/apps/catalog/package.json +1 -1
- package/templates/.agents/design/packages/local-runtime/package.json +1 -1
- package/templates/.agents/requirements/autonomous-assurance.md +1 -1
- package/templates/.agents/requirements/cloud-hostinger-autonomy.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 +15 -5
- package/templates/.agents/requirements/public-distribution.md +3 -3
- 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/rules/astra-diagnostic.md +20 -0
- package/templates/.agents/rules/core.md +9 -14
- package/templates/.agents/rules/meta-mcp.md +1 -0
- package/templates/.agents/rules/run-lifecycle-closure.md +1 -1
- package/templates/.agents/rules/specialist-routing.md +3 -1
- package/templates/.agents/runtime/VERSION +1 -1
- package/templates/.agents/runtime/bin/zaip.mjs +95 -61
- package/templates/.agents/runtime/checksums.sha256 +6 -6
- package/templates/.agents/runtime/manifest.json +1 -1
- package/templates/.agents/runtime/pnpm-lock.sha256 +1 -1
- package/templates/.agents/runtime/provenance.json +5 -5
- package/templates/.agents/runtime/sbom.cdx.json +1 -1
- package/templates/.agents/skills/zaip-aios/SKILL.md +4 -2
- package/templates/.agents/skills/zaip-skill-execution/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-execution/references/runtime-governance.md +17 -0
- package/templates/.agents/skills/zaip-skill-general-operations/SKILL.md +6 -7
- package/templates/.agents/skills/zaip-skill-general-operations/references/extended-workflow.md +7 -0
- package/templates/.agents/skills/zaip-skill-github-setup/SKILL.md +5 -0
- package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/SKILL.md +54 -0
- package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/assets/.env.example +9 -0
- package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/references/operational-procedure.md +137 -0
- package/templates/.agents/skills/zaip-skill-growth-strategy-revops/SKILL.md +7 -19
- package/templates/.agents/skills/zaip-skill-growth-strategy-revops/references/extended-workflow.md +21 -0
- package/templates/.agents/skills/zaip-skill-marketing/SKILL.md +7 -14
- package/templates/.agents/skills/zaip-skill-marketing/references/extended-workflow.md +16 -0
- package/templates/.agents/skills/zaip-skill-meta-ads-setup/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-meta-token-onboarding/SKILL.md +17 -0
- package/templates/.agents/skills/zaip-skill-meta-token-onboarding/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-meta-token-onboarding/references/onboarding-manual.md +96 -0
- package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +4 -0
- package/templates/.agents/skills/zaip-skill-sales-methodology/SKILL.md +8 -18
- package/templates/.agents/skills/zaip-skill-sales-methodology/references/extended-workflow.md +20 -0
- package/templates/.agents/skills/zaip-skill-setup/SKILL.md +4 -1
- package/templates/.agents/skills/zaip-skill-text-encoding/SKILL.md +1 -1
- package/templates/.agents/zaip-aios/INDEX.md +1 -1
- package/templates/.agents/zaip-aios/README.md +6 -0
- package/templates/.agents/zaip-aios/VERSION +1 -1
- package/templates/.agents/zaip-aios/guides/08-contexto-e-tokens.md +19 -3
- package/templates/.agents/zaip-aios/guides/12-instalacao-e-upgrade.md +37 -7
- package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +14 -1
- package/templates/.agents/zaip-aios/guides/23-orquestracao-de-modelos.md +32 -3
- package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +21 -0
- package/templates/infra/terraform/terraform.tfvars.example +2 -1
- package/templates/template-manifest.json +234 -150
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-ZJFXmK7m.js +0 -2
- /package/templates/.agents/{data → records}/changes/.gitkeep +0 -0
- /package/templates/.agents/{data → records}/executions/.gitkeep +0 -0
- /package/templates/.agents/{data → records}/prds/.gitkeep +0 -0
- /package/templates/.agents/{data → records}/runs/.gitkeep +0 -0
- /package/templates/.agents/{data → records}/specs/.gitkeep +0 -0
- /package/templates/.agents/{data → records}/tasks/.gitkeep +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
2
|
import { tmpdir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { DatabaseSync } from "node:sqlite";
|
|
@@ -17,24 +17,53 @@ afterEach(async () => {
|
|
|
17
17
|
});
|
|
18
18
|
|
|
19
19
|
describe("SQLite snapshot seed publication", () => {
|
|
20
|
+
it("rebuilds schema-73 parser state from unchanged current data", async () => {
|
|
21
|
+
const root = await mkdtemp(join(tmpdir(), "zaip-schema-74-parser-"));
|
|
22
|
+
roots.push(root);
|
|
23
|
+
const task = join(root, ".agents", "data", "tasks", "TASK-CURRENT.md");
|
|
24
|
+
await mkdir(join(root, ".agents", "config"), { recursive: true });
|
|
25
|
+
await mkdir(join(root, ".agents", "data", "tasks"), { recursive: true });
|
|
26
|
+
await writeFile(join(root, ".agents", "config", "project.yaml"), "zaip:\n enabled: true\n");
|
|
27
|
+
await writeFile(
|
|
28
|
+
task,
|
|
29
|
+
"---\nid: TASK-CURRENT\ntitle: Current parser record\nstatus: executing\ncreated_at: 2026-09-05T12:00:00.000Z\n---\n",
|
|
30
|
+
);
|
|
31
|
+
const first = await rebuildSqliteReadModel(root);
|
|
32
|
+
const before = await readFile(task, "utf8");
|
|
33
|
+
const stale = new DatabaseSync(first.path);
|
|
34
|
+
try {
|
|
35
|
+
stale.exec(
|
|
36
|
+
"UPDATE zaip_aios_activities SET payload_json=json_set(payload_json, '$.value', '73') WHERE payload_type='metadata' AND json_extract(payload_json, '$.key')='schema_version'; UPDATE zaip_aios_activities SET payload_json='[]' WHERE payload_type='parsed_source';",
|
|
37
|
+
);
|
|
38
|
+
} finally {
|
|
39
|
+
stale.close();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({ cache: "rebuilt" });
|
|
43
|
+
expect(await readFile(task, "utf8")).toBe(before);
|
|
44
|
+
const served = new SqliteReadModelFileSystem(root);
|
|
45
|
+
try {
|
|
46
|
+
expect(served.canonicalWorkPage("task", { from: null, to: null }, 0, 10)).toMatchObject({
|
|
47
|
+
rows: [expect.objectContaining({ id: "TASK-CURRENT", title: "Current parser record" })],
|
|
48
|
+
});
|
|
49
|
+
} finally {
|
|
50
|
+
served.close();
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
|
|
20
54
|
it.each([
|
|
21
55
|
"old-schema",
|
|
22
56
|
"missing-index",
|
|
23
|
-
])("rebuilds incompatible %s generations
|
|
57
|
+
])("rebuilds incompatible %s launcher-selected generations", async (damage) => {
|
|
24
58
|
const root = await mkdtemp(join(tmpdir(), "zaip-snapshot-index-upgrade-"));
|
|
25
59
|
roots.push(root);
|
|
26
60
|
await mkdir(join(root, ".agents", "config"), { recursive: true });
|
|
27
61
|
await writeFile(join(root, ".agents", "config", "project.yaml"), "zaip:\n enabled: true\n");
|
|
28
62
|
const destination = join(root, ".local", "dashboard-sqlite", "read-model.sqlite");
|
|
29
|
-
const cacheDirectory = join(root, ".local", "dashboard-sqlite", "cache");
|
|
30
63
|
vi.stubEnv("ZAIP_SQLITE_DB_PATH", destination);
|
|
31
|
-
vi.stubEnv("ZAIP_SQLITE_CACHE_DIR", cacheDirectory);
|
|
32
|
-
vi.stubEnv("ZAIP_SQLITE_PREFER_LAST_VALID_SEED", "1");
|
|
33
64
|
try {
|
|
34
65
|
await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({ cache: "rebuilt" });
|
|
35
|
-
const
|
|
36
|
-
if (seedName === undefined) throw new Error("Expected the rebuilt seed");
|
|
37
|
-
for (const path of [destination, join(cacheDirectory, seedName)]) {
|
|
66
|
+
for (const path of [destination]) {
|
|
38
67
|
const database = new DatabaseSync(path);
|
|
39
68
|
try {
|
|
40
69
|
if (damage === "missing-index")
|
|
@@ -49,14 +78,14 @@ describe("SQLite snapshot seed publication", () => {
|
|
|
49
78
|
}
|
|
50
79
|
await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({ cache: "rebuilt" });
|
|
51
80
|
expect(() => validateSqliteReadModelSchema(destination)).not.toThrow();
|
|
52
|
-
await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({ cache: "
|
|
81
|
+
await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({ cache: "generation" });
|
|
53
82
|
expect(() => validateSqliteReadModelSchema(destination)).not.toThrow();
|
|
54
83
|
} finally {
|
|
55
84
|
vi.unstubAllEnvs();
|
|
56
85
|
}
|
|
57
86
|
});
|
|
58
87
|
|
|
59
|
-
it("
|
|
88
|
+
it("rebuilds the launcher-selected database without using a hidden seed cache", async () => {
|
|
60
89
|
const root = await mkdtemp(join(tmpdir(), "zaip-snapshot-seed-"));
|
|
61
90
|
roots.push(root);
|
|
62
91
|
const task = join(root, ".agents", "records", "tasks", "task.md");
|
|
@@ -65,17 +94,6 @@ describe("SQLite snapshot seed publication", () => {
|
|
|
65
94
|
await writeFile(join(root, ".agents", "config", "project.yaml"), "zaip:\n enabled: true\n");
|
|
66
95
|
await writeFile(task, "# original\n");
|
|
67
96
|
await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({ cache: "rebuilt" });
|
|
68
|
-
const cacheDirectory = join(root, ".local", "dashboard-sqlite", "cache");
|
|
69
|
-
const completeName = (await readdir(cacheDirectory)).find((name) => name.endsWith(".sqlite"));
|
|
70
|
-
expect(completeName).toBeDefined();
|
|
71
|
-
if (completeName === undefined) throw new Error("Expected a complete SQLite seed");
|
|
72
|
-
const incomplete = join(cacheDirectory, "v67-ff5-incomplete-newest.sqlite");
|
|
73
|
-
await copyFile(join(cacheDirectory, completeName), incomplete);
|
|
74
|
-
const incompleteDatabase = new DatabaseSync(incomplete);
|
|
75
|
-
incompleteDatabase
|
|
76
|
-
.prepare("DELETE FROM zaip_aios_activities WHERE payload_type='first_fold_all_time_cache'")
|
|
77
|
-
.run();
|
|
78
|
-
incompleteDatabase.close();
|
|
79
97
|
await writeFile(task, "# changed canonically\n");
|
|
80
98
|
const previousPath = process.env.ZAIP_SQLITE_DB_PATH;
|
|
81
99
|
const previousSeed = process.env.ZAIP_SQLITE_PREFER_LAST_VALID_SEED;
|
|
@@ -83,7 +101,7 @@ describe("SQLite snapshot seed publication", () => {
|
|
|
83
101
|
process.env.ZAIP_SQLITE_DB_PATH = join(root, ".local", "dashboard-sqlite", "next.sqlite");
|
|
84
102
|
process.env.ZAIP_SQLITE_PREFER_LAST_VALID_SEED = "1";
|
|
85
103
|
await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({
|
|
86
|
-
cache: "
|
|
104
|
+
cache: "rebuilt",
|
|
87
105
|
files: 2,
|
|
88
106
|
});
|
|
89
107
|
const served = new SqliteReadModelFileSystem(root);
|
|
@@ -101,7 +119,7 @@ describe("SQLite snapshot seed publication", () => {
|
|
|
101
119
|
}
|
|
102
120
|
});
|
|
103
121
|
|
|
104
|
-
it("
|
|
122
|
+
it("rebuilds current canonical data before source inventory is declared current", async () => {
|
|
105
123
|
const root = await mkdtemp(join(tmpdir(), "zaip-snapshot-seed-early-"));
|
|
106
124
|
roots.push(root);
|
|
107
125
|
await mkdir(join(root, ".agents", "records", "tasks"), { recursive: true });
|
|
@@ -119,11 +137,9 @@ describe("SQLite snapshot seed publication", () => {
|
|
|
119
137
|
process.env.ZAIP_SQLITE_PREFER_LAST_VALID_SEED = "1";
|
|
120
138
|
process.env.ZAIP_DASHBOARD_LAUNCH_PROGRESS = "1";
|
|
121
139
|
await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({
|
|
122
|
-
cache: "
|
|
123
|
-
fingerprint_ms: 0,
|
|
140
|
+
cache: "rebuilt",
|
|
124
141
|
});
|
|
125
|
-
expect(stderr.mock.calls.join("\n")).toContain('"phase":"
|
|
126
|
-
expect(stderr.mock.calls.join("\n")).not.toContain('"phase":"source_fingerprint_started"');
|
|
142
|
+
expect(stderr.mock.calls.join("\n")).toContain('"phase":"source_fingerprint_started"');
|
|
127
143
|
} finally {
|
|
128
144
|
stderr.mockRestore();
|
|
129
145
|
if (previousPath === undefined) delete process.env.ZAIP_SQLITE_DB_PATH;
|
|
@@ -146,16 +162,8 @@ describe("SQLite snapshot seed publication", () => {
|
|
|
146
162
|
"---\nid: TASK-SEED-POPULATION\ntitle: Seed population\nstatus: ready\nrisk: standard\ncreated_at: 2026-08-01T12:00:00.000Z\n---\n# Seed population\n",
|
|
147
163
|
);
|
|
148
164
|
await rebuildSqliteReadModel(root);
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
".local",
|
|
152
|
-
"dashboard-sqlite",
|
|
153
|
-
"cache",
|
|
154
|
-
(await readdir(join(root, ".local", "dashboard-sqlite", "cache"))).find((name) =>
|
|
155
|
-
name.endsWith(".sqlite"),
|
|
156
|
-
) ?? "missing.sqlite",
|
|
157
|
-
);
|
|
158
|
-
const database = new DatabaseSync(seed);
|
|
165
|
+
const built = await rebuildSqliteReadModel(root);
|
|
166
|
+
const database = new DatabaseSync(built.path);
|
|
159
167
|
try {
|
|
160
168
|
database
|
|
161
169
|
.prepare(
|
|
@@ -179,11 +187,8 @@ describe("SQLite snapshot seed publication", () => {
|
|
|
179
187
|
"---\nid: TASK-SEED-HISTORICAL\ntitle: Historical seed task\nstatus: ready\nrisk: standard\ncreated_at: 2026-07-01T12:00:00.000Z\n---\n# Historical seed task\n",
|
|
180
188
|
);
|
|
181
189
|
await rebuildSqliteReadModel(root);
|
|
182
|
-
const
|
|
183
|
-
const
|
|
184
|
-
expect(seedName).toBeDefined();
|
|
185
|
-
if (seedName === undefined) throw new Error("Expected a complete SQLite seed");
|
|
186
|
-
const database = new DatabaseSync(join(cacheDirectory, seedName), { readOnly: true });
|
|
190
|
+
const built = await rebuildSqliteReadModel(root);
|
|
191
|
+
const database = new DatabaseSync(built.path, { readOnly: true });
|
|
187
192
|
try {
|
|
188
193
|
expect(hasRequiredFirstFoldPayloads(database)).toBe(true);
|
|
189
194
|
} finally {
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"files": [
|
|
5
|
+
{
|
|
6
|
+
"path": "DESIGN.md",
|
|
7
|
+
"sha256": "9970e5040403dfe41b86651128b691ddb3ee6f5e9909cebfacf0a614555cb7f6"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"path": "README.md",
|
|
11
|
+
"sha256": "7efaff80b0a1add169646dc250b84d5b3a42378c57f6e891bab51ac2bb0e4b50"
|
|
12
|
+
},
|
|
5
13
|
{
|
|
6
14
|
"path": "apps/catalog/.storybook/main.ts",
|
|
7
15
|
"sha256": "d3b2540af9898ed7cf4e360a553bc9c84b0270150fe9114b23bbfb07cc527c1b"
|
|
@@ -30,14 +38,34 @@
|
|
|
30
38
|
"path": "apps/catalog/dist/logo_novo_azul.png",
|
|
31
39
|
"sha256": "bb6043bda9fc53a111aaea4d6a004559b9ce8a3569691c060d217a7c6aafa0ae"
|
|
32
40
|
},
|
|
33
|
-
{
|
|
34
|
-
"path": "apps/catalog/dist/storybook/assets/axe-Bk3eEgJf.js",
|
|
35
|
-
"sha256": "7859f7599f0e67573826ead33b5670064e35a6b44d09b5da87c8bfc758f2b2ea"
|
|
36
|
-
},
|
|
37
41
|
{
|
|
38
42
|
"path": "apps/catalog/dist/storybook/assets/CatalogShell-BWY-80s4.js",
|
|
39
43
|
"sha256": "84d451e4102b3f22bb5ad5862f7c1639929f12a1b972ec390076b49381814e0c"
|
|
40
44
|
},
|
|
45
|
+
{
|
|
46
|
+
"path": "apps/catalog/dist/storybook/assets/Color-6AOWCN3U-B-kAgAjB.js",
|
|
47
|
+
"sha256": "0e3ac0b9820668e73414175d055967f9d49bb2e7d826cdbd4aa6cd7fd384a713"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"path": "apps/catalog/dist/storybook/assets/Components.stories-Be2mDUQj.js",
|
|
51
|
+
"sha256": "2981c30e093c3a23616f465a6afc1bc287732692af998d608593598a731c97c4"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"path": "apps/catalog/dist/storybook/assets/DesignSystem.stories-DRx9blDs.js",
|
|
55
|
+
"sha256": "3471400ec1a7cf9cce8f1e58068f91ebe416d34aea4be99a2431aeb0dba776a2"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"path": "apps/catalog/dist/storybook/assets/DocsRenderer-JROSPFPF-BVN7xHtv.js",
|
|
59
|
+
"sha256": "162d64f939550ce9e9582f15e3befbb7a8d5fdcc502410ed88262994d6cb82ce"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"path": "apps/catalog/dist/storybook/assets/WithTooltip-7X4HQR7L-CDHtKYkz.js",
|
|
63
|
+
"sha256": "9be8ec095a76bf6993527027d4fd16ed5a97340c31de0bf86d1658840989aabe"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"path": "apps/catalog/dist/storybook/assets/axe-Bk3eEgJf.js",
|
|
67
|
+
"sha256": "7859f7599f0e67573826ead33b5670064e35a6b44d09b5da87c8bfc758f2b2ea"
|
|
68
|
+
},
|
|
41
69
|
{
|
|
42
70
|
"path": "apps/catalog/dist/storybook/assets/chunk-242VQQM5-DB2JSNUA.js",
|
|
43
71
|
"sha256": "99518b5bd7da5186fe889de049274f734939938a15b2a6ff4fd72b09b89ddf3b"
|
|
@@ -54,26 +82,10 @@
|
|
|
54
82
|
"path": "apps/catalog/dist/storybook/assets/chunk-W22LQPXL-B4m5uloN.js",
|
|
55
83
|
"sha256": "8c45d2277c1a1c93f0bdc62c0122c515babacff466bb79538c95c1f885e76a1b"
|
|
56
84
|
},
|
|
57
|
-
{
|
|
58
|
-
"path": "apps/catalog/dist/storybook/assets/Color-6AOWCN3U-B-kAgAjB.js",
|
|
59
|
-
"sha256": "0e3ac0b9820668e73414175d055967f9d49bb2e7d826cdbd4aa6cd7fd384a713"
|
|
60
|
-
},
|
|
61
85
|
{
|
|
62
86
|
"path": "apps/catalog/dist/storybook/assets/components-CN8YyTUg.js",
|
|
63
87
|
"sha256": "2793aa528869e3947d41591db2023524f8d81578f713214e9acac02f743d22e7"
|
|
64
88
|
},
|
|
65
|
-
{
|
|
66
|
-
"path": "apps/catalog/dist/storybook/assets/Components.stories-Be2mDUQj.js",
|
|
67
|
-
"sha256": "2981c30e093c3a23616f465a6afc1bc287732692af998d608593598a731c97c4"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"path": "apps/catalog/dist/storybook/assets/DesignSystem.stories-DRx9blDs.js",
|
|
71
|
-
"sha256": "3471400ec1a7cf9cce8f1e58068f91ebe416d34aea4be99a2431aeb0dba776a2"
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
"path": "apps/catalog/dist/storybook/assets/DocsRenderer-JROSPFPF-BVN7xHtv.js",
|
|
75
|
-
"sha256": "162d64f939550ce9e9582f15e3befbb7a8d5fdcc502410ed88262994d6cb82ce"
|
|
76
|
-
},
|
|
77
89
|
{
|
|
78
90
|
"path": "apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-EwuTh8Zk.js",
|
|
79
91
|
"sha256": "73f231544e7f0272b6ac45ec3a665c69b6fc2073afa243915c1d09e119c18aa7"
|
|
@@ -114,10 +126,6 @@
|
|
|
114
126
|
"path": "apps/catalog/dist/storybook/assets/theming-DS_ue2sb.js",
|
|
115
127
|
"sha256": "deba2831ca2a9bae10430a9388d4c1cb3b83d0824f2e55f3ffce97bf51818cf2"
|
|
116
128
|
},
|
|
117
|
-
{
|
|
118
|
-
"path": "apps/catalog/dist/storybook/assets/WithTooltip-7X4HQR7L-CDHtKYkz.js",
|
|
119
|
-
"sha256": "9be8ec095a76bf6993527027d4fd16ed5a97340c31de0bf86d1658840989aabe"
|
|
120
|
-
},
|
|
121
129
|
{
|
|
122
130
|
"path": "apps/catalog/dist/storybook/favicon-wrapper.svg",
|
|
123
131
|
"sha256": "5311f921255509431fc978cd04fd497ae54c46cfd97b3578dc53d7f652667a71"
|
|
@@ -220,7 +228,7 @@
|
|
|
220
228
|
},
|
|
221
229
|
{
|
|
222
230
|
"path": "apps/catalog/package.json",
|
|
223
|
-
"sha256": "
|
|
231
|
+
"sha256": "44766720319e51f1a60ddce76263e081a109e7d01d5ce63b01c20f82200d0abb"
|
|
224
232
|
},
|
|
225
233
|
{
|
|
226
234
|
"path": "apps/catalog/public/logo_novo_azul.png",
|
|
@@ -234,6 +242,10 @@
|
|
|
234
242
|
"path": "apps/catalog/src/components/CatalogShell.tsx",
|
|
235
243
|
"sha256": "9c1c20501aabf476bde54b453fe826efe31a0b3d484a0a050c898bf45f343096"
|
|
236
244
|
},
|
|
245
|
+
{
|
|
246
|
+
"path": "apps/catalog/src/components/Primitives.tsx",
|
|
247
|
+
"sha256": "68d65caaa90818b7e942db30cd2fd6f68912e63b974c940ce694b93fa1bdc5ce"
|
|
248
|
+
},
|
|
237
249
|
{
|
|
238
250
|
"path": "apps/catalog/src/components/dialog-focus.test.ts",
|
|
239
251
|
"sha256": "b62a5209b8554a4500ff241fb3d0cb67bff4ff751b8eddbda2dfd17dd9b6beed"
|
|
@@ -242,10 +254,6 @@
|
|
|
242
254
|
"path": "apps/catalog/src/components/dialog-focus.ts",
|
|
243
255
|
"sha256": "de72b418a3e8f08da924477014503581a8fd257c73fac85fdfbd883ad49de483"
|
|
244
256
|
},
|
|
245
|
-
{
|
|
246
|
-
"path": "apps/catalog/src/components/Primitives.tsx",
|
|
247
|
-
"sha256": "68d65caaa90818b7e942db30cd2fd6f68912e63b974c940ce694b93fa1bdc5ce"
|
|
248
|
-
},
|
|
249
257
|
{
|
|
250
258
|
"path": "apps/catalog/src/design-contract.test.ts",
|
|
251
259
|
"sha256": "e1854f467f0f98c418daf44a723e0d095df2af2917f51858c67afef708ad776e"
|
|
@@ -298,13 +306,9 @@
|
|
|
298
306
|
"path": "apps/catalog/vitest.config.ts",
|
|
299
307
|
"sha256": "552604801fdfc82b1b6bc1bebad3310738fa4f2e391a494e2bd10a2181196770"
|
|
300
308
|
},
|
|
301
|
-
{
|
|
302
|
-
"path": "DESIGN.md",
|
|
303
|
-
"sha256": "9970e5040403dfe41b86651128b691ddb3ee6f5e9909cebfacf0a614555cb7f6"
|
|
304
|
-
},
|
|
305
309
|
{
|
|
306
310
|
"path": "packages/local-runtime/package.json",
|
|
307
|
-
"sha256": "
|
|
311
|
+
"sha256": "4584315601e42ab39805a047ad2073fc3ef51fb030fee1aa7aafb60942d0bba2"
|
|
308
312
|
},
|
|
309
313
|
{
|
|
310
314
|
"path": "packages/local-runtime/runtime.mjs",
|
|
@@ -318,17 +322,13 @@
|
|
|
318
322
|
"path": "packages/local-runtime/start-design.mjs",
|
|
319
323
|
"sha256": "7623422e49c35c5584bf7579465ef7c159a72eb40427308585176bb0064a9e7a"
|
|
320
324
|
},
|
|
321
|
-
{
|
|
322
|
-
"path": "packages/windows-launcher/build-design-launcher.ps1",
|
|
323
|
-
"sha256": "c4ec3926aafae3a2f0122e756f2a0ec301a1eaac8563cae591d0ae6353fbbbff"
|
|
324
|
-
},
|
|
325
325
|
{
|
|
326
326
|
"path": "packages/windows-launcher/Program.cs",
|
|
327
327
|
"sha256": "a52e7837a2c81e49fb9f39fc9ad550b791ceac73ee27c5980f2f4f9c4dd7bf22"
|
|
328
328
|
},
|
|
329
329
|
{
|
|
330
|
-
"path": "
|
|
331
|
-
"sha256": "
|
|
330
|
+
"path": "packages/windows-launcher/build-design-launcher.ps1",
|
|
331
|
+
"sha256": "c4ec3926aafae3a2f0122e756f2a0ec301a1eaac8563cae591d0ae6353fbbbff"
|
|
332
332
|
},
|
|
333
333
|
{
|
|
334
334
|
"path": "tokens.json",
|
|
@@ -4,9 +4,9 @@ id: REQUIREMENTS-MODEL-ORCHESTRATION
|
|
|
4
4
|
area: model-orchestration
|
|
5
5
|
title: Seleção automática e observável de modelo e effort
|
|
6
6
|
status: active
|
|
7
|
-
version:
|
|
7
|
+
version: 8
|
|
8
8
|
source_change: null
|
|
9
|
-
source_release: "
|
|
9
|
+
source_release: "2.2.0"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Orquestração de modelos
|
|
@@ -16,7 +16,7 @@ source_release: "1.4.3"
|
|
|
16
16
|
O projeto deve poder habilitar seleção automática de modelo, effort e velocidade sem alterar o comportamento dos modos existentes.
|
|
17
17
|
|
|
18
18
|
- `AC-MODEL-001-01`: o schema aceita `model_orchestration.mode: auto` além de `manual` e `off`; ausência do bloco e os dois modos existentes mantêm o comportamento anterior em testes de compatibilidade.
|
|
19
|
-
- `AC-MODEL-001-02`: o modo `auto` exige `default_model: gpt-5.6-terra`, `default_effort: medium`, `default_velocity: standard
|
|
19
|
+
- `AC-MODEL-001-02`: o modo `auto` exige `default_model: gpt-5.6-terra`, `default_effort: medium`, `default_velocity: standard` e allowlist única com o trio obrigatório `gpt-5.6-luna`, `gpt-5.6-terra`, `gpt-5.6-sol`; `gpt-6-astra` é o quarto modelo opcional. Efforts automáticos são `low|medium|high|xhigh`, com teto geral `xhigh` e teto específico Astra `high`.
|
|
20
20
|
- `AC-MODEL-001-03`: setup, migration, adapters e templates preservam `manual` como default de projetos novos e existentes; `auto` só é ativado por configuração explícita do projeto e passa em `zaip doctor`.
|
|
21
21
|
- `AC-MODEL-001-04`: o modo `auto` exige `automatic_sources: [spec, prd]`; `task` não é uma origem automática válida, preservando a seleção manual do host para Tasks avulsas.
|
|
22
22
|
|
|
@@ -24,10 +24,10 @@ O projeto deve poder habilitar seleção automática de modelo, effort e velocid
|
|
|
24
24
|
|
|
25
25
|
Cada Invocação de Agente deve resolver uma configuração única a partir do agente do catálogo, dos metadados estruturados da Task e da fase, sem depender de instrução em linguagem natural.
|
|
26
26
|
|
|
27
|
-
- `AC-MODEL-002-01`: o resolvedor aplica a precedência `runtime_defaults explícito da Execution -> runtime explícito da Task -> política automática -> defaults do projeto`, retornando modelo, effort, velocidade, origem, versão da política e ao menos um motivo enumerado.
|
|
27
|
+
- `AC-MODEL-002-01`: o resolvedor aplica a precedência `runtime_defaults explícito da Execution -> runtime explícito da Task -> política automática -> defaults do projeto`, retornando modelo, effort, velocidade, origem, versão da política e ao menos um motivo enumerado. A precedência nunca contorna os limites Astra: diagnóstico difícil evidenciado, somente high, reserva pré-dispatch de até três diagnósticos por Task e handback validado para executor, conforme REQ-MODEL-006.
|
|
28
28
|
- `AC-MODEL-002-02`: Tasks novas de PRD/SPEC persistem `model_profile` calculado de `model_signals` reais com fase-base, complexidade, transversalidade, ambiguidade, rework, custo, boundedness, volume, gatilhos `xhigh` e sinais de risco. A classificação `task-risk-v1` deriva `lite|standard|critical` e motivos enumerados; declaração conflitante é rejeitada, enquanto PreparedPlans históricos sem perfil continuam legíveis. A política considera o perfil persistido, a fase e o agente reais da chamada e restrições de capacidade; risco governa assurance e não força sozinho modelo ou effort superior.
|
|
29
29
|
- `AC-MODEL-002-03`: a política inicial usa Luna para trabalho simples, delimitado ou de alto volume, Terra como baseline de implementação e teste e Sol para planejamento, revisão ou reparo ambíguo/transversal; `xhigh` só é elegível para planejamento, replanejamento, auditoria ou rework estrutural delimitado quando as quatro condições e ao menos dois gatilhos observáveis do guia forem satisfeitos.
|
|
30
|
-
- `AC-MODEL-002-04`: `ultra`, `max`, effort desconhecido e modelo fora da allowlist são rejeitados antes da chamada com erro tipado, sem fallback silencioso; `xhigh` é aceito quando vier de override explícito válido ou da política elegível.
|
|
30
|
+
- `AC-MODEL-002-04`: `ultra`, `max`, effort desconhecido e modelo fora da allowlist são rejeitados antes da chamada com erro tipado, sem fallback silencioso; `xhigh` é aceito quando vier de override explícito válido ou da política elegível, sempre excluindo Astra.
|
|
31
31
|
- `AC-MODEL-002-05`: a Invocação do Orquestrador usa a identidade visível `zaip-agent-orchestrator`; cada Execução ZAIP delega por capacidade a ao menos um executor do catálogo, conversas podem usar `zaip-agent-analyst`, e a última Invocação Delegada usa `zaip-agent-finalizer`.
|
|
32
32
|
|
|
33
33
|
## REQ-MODEL-003 — Configuração imutável por Agent Run
|
|
@@ -56,3 +56,13 @@ O modo automático deve ser ativado com evals, rollback e documentação que dis
|
|
|
56
56
|
- `AC-MODEL-005-01`: uma suíte determinística cobre ao menos seleção lite, baseline Terra, planejamento Sol, risco crítico mecânico, rework estrutural, `xhigh` elegível, `xhigh` inelegível, `ultra` rejeitado, velocidade diferente de `standard` rejeitada, override explícito e capacidade incompatível.
|
|
57
57
|
- `AC-MODEL-005-02`: o rollout compara sucesso por Acceptance Criteria, aprovação na primeira revisão, repair cycles, tokens, latência e custo por Task aprovada; regressão de qualidade bloqueia a ativação ampla mesmo quando houver economia.
|
|
58
58
|
- `AC-MODEL-005-03`: o guia, adapters, templates e configuração distribuída descrevem os mesmos defaults e permitem rollback para `manual` sem migração destrutiva de Runs já registrados.
|
|
59
|
+
|
|
60
|
+
## REQ-MODEL-006 — Diagnóstico Astra limitado e econômico
|
|
61
|
+
|
|
62
|
+
Astra orienta a solução de problemas difíceis; a implementação permanece nos executores existentes.
|
|
63
|
+
|
|
64
|
+
- `AC-MODEL-006-01`: a rota exige complexidade alta ou ambiguidade alta e evidência de tentativa executora falha por hipótese/raciocínio, ou impacto material crítico evidenciado com diagnóstico difícil. Risco isolado, tarefa simples, departamento, volume, rótulos e falhas de ambiente/ferramenta não ativam Astra.
|
|
65
|
+
- `AC-MODEL-006-02`: a invocação diagnóstica usa identidade catalogada, high, contexto novo, zero ferramentas e nenhum resume; Astra como executor/reviewer/finalizer e efforts superiores são rejeitados antes da chamada. Entrada serializada limitada a 48000 bytes, orçamento de saída até 8000 tokens e timeout até 180 segundos; provider usage e limites declarados permanecem distintos.
|
|
66
|
+
- `AC-MODEL-006-03`: reserva persistente e atômica antes de cada dispatch limita três diagnósticos por Task estável, inclusive retomada, nova Execution e concorrência. Replay não autoriza novo dispatch; eventos de usage não consomem nem restauram quota.
|
|
67
|
+
- `AC-MODEL-006-04`: handback estruturado traz findings, prova, causa/hipótese, rota corrigida, escopo, executor não Astra e teste. A próxima tentativa executa a correção com Luna/Terra/Sol; outro diagnóstico exige evidência nova e progresso de hipótese/rota. Sem progresso ou com quota esgotada, devolve rota útil ou bloqueia explicitamente.
|
|
68
|
+
- `AC-MODEL-006-05`: a expansão Astra é condicional e não aumenta o kernel sempre carregado nem prompts de especialistas comerciais. Política automática continua restrita a SPEC/PRD, sem alterar seleção manual do host. Evals negativos e positivos, quota e integração real do coordenador são verificados antes da entrega.
|
|
@@ -4,9 +4,9 @@ id: REQUIREMENTS-PUBLIC-DISTRIBUTION
|
|
|
4
4
|
area: public-distribution
|
|
5
5
|
title: Distribuição pública e ativação
|
|
6
6
|
status: active
|
|
7
|
-
version:
|
|
7
|
+
version: 4
|
|
8
8
|
source_change: null
|
|
9
|
-
source_release: "
|
|
9
|
+
source_release: "2.2.0"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Distribuição pública e ativação
|
|
@@ -15,7 +15,7 @@ source_release: "1.4.3"
|
|
|
15
15
|
|
|
16
16
|
O pacote público deve entregar, verificar e reparar o mesmo runtime de lifecycle referenciado pelo guidance instalado, sem depender do checkout mantenedor nem criar autoridade implícita.
|
|
17
17
|
|
|
18
|
-
- `AC-DIST-001-01`: o `.tgz` exato de `@zaip-ai/cli`
|
|
18
|
+
- `AC-DIST-001-01`: o `.tgz` exato de `@zaip-ai/cli` instala `.agents/runtime/bin/zaip.mjs` e seus metadados de supply chain; no workspace vazio, `doctor`, `status`, `conversation start`, `disable` e `enable` terminam com sucesso.
|
|
19
19
|
- `AC-DIST-001-02`: `zaip.enabled` é a única chave gravada; a matriz canônica/legada `true|false|ausente` preserva compatibilidade, normaliza a próxima escrita e rejeita valores contraditórios antes de mutar o workspace.
|
|
20
20
|
- `AC-DIST-001-03`: `template:sync` e `template:audit` cobrem `.agents`, incluindo `.agents/runtime`, recalculam o digest agregado, rejeitam path traversal, symlink, duplicata, descendente de arquivo allowlisted e checksum divergente.
|
|
21
21
|
- `AC-DIST-001-04`: geração de runtime e manifest ocorre como uma única substituição recuperável; falhas injetadas antes e depois da troca preservam byte a byte o runtime e o manifest anteriores, e reinstalação autorizada restaura arquivo ausente.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: RULE-ASTRA-DIAGNOSTIC
|
|
3
|
+
load: manual
|
|
4
|
+
priority: high
|
|
5
|
+
max_context_tokens: 650
|
|
6
|
+
requires:
|
|
7
|
+
- RULE-CORE
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Astra para diagnóstico difícil
|
|
11
|
+
|
|
12
|
+
Carregue somente ao avaliar uma escalada Astra. Luna/Terra executam trabalho comum; Sol continua responsável pela faixa difícil. Marketing, Sales, Growth, Ops, título, palavras como “crítico”, volume ou número de arquivos não justificam Astra.
|
|
13
|
+
|
|
14
|
+
- Entrada: origem automática autorizada, dificuldade estruturada (complexidade alta ou ambiguidade alta) e evidência de uma tentativa executora que falhou por hipótese/raciocínio. Exceção preventiva: impacto material crítico comprovado e diagnóstico difícil comprovado. Erros de ambiente, credenciais, ferramentas, sintaxe ou falta de evidência não autorizam a escalada.
|
|
15
|
+
- Astra é uma invocação diagnóstica do orquestrador, somente `high` e `standard`. Nunca executor, reviewer rotineiro ou finalizer; nunca `xhigh`, `max` ou `ultra`, inclusive via override.
|
|
16
|
+
- Prefira um diagnóstico. Reserve atomicamente antes do dispatch; máximo três invocações por Task estável, somando Runs, Executions e retomadas. Não reinicie a quota, crie Task artificial nem repita invocation_id para contornar o teto. “Ciclo” é diagnóstico governado, não evento de uso ou chamada interna.
|
|
17
|
+
- Receba contexto novo e compacto: falha, prova, tentativa anterior, restrições e critérios de aceite. Sem histórico integral, resume, ferramentas, filhos ou escrita. Envelope: até 48000 bytes de entrada serializada, orçamento de 8000 tokens de saída, timeout de 180 segundos. Bytes não são tokens; reporte consumo apenas quando observado.
|
|
18
|
+
- Devolva JSON com findings, evidências, causa/hipótese, rota corrigida, escopo, executor Luna/Terra/Sol e teste de validação. O executor realiza o reparo e verifica o resultado na tentativa seguinte. Não prometa solução na segunda tentativa.
|
|
19
|
+
- Outro diagnóstico exige evidência nova e mudança verificável de hipótese/rota. Pare antes do teto se não houver progresso; não alterne Astra/Sol repetindo o mesmo plano. Ao esgotar três, devolva uma rota executável ou bloqueie com a evidência/decisão faltante.
|
|
20
|
+
- O runtime deve validar elegibilidade, quota, isolamento e handback. Configuração incompatível bloqueia o diagnóstico; não converta Astra em executor. A preferência manual do host em conversa/Task avulsa permanece fora do controle automático.
|