@zaip-ai/cli 5.3.0 → 5.5.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/dist/services/adapters.d.ts +1 -1
- package/dist/services/adapters.js +1 -1
- package/dist/services/codex-conversation-lifecycle-hook.d.ts.map +1 -1
- package/dist/services/codex-conversation-lifecycle-hook.js +37 -8
- package/dist/services/codex-conversation-lifecycle-hook.js.map +1 -1
- package/dist/services/codex-pre-tool-hook-template.d.ts.map +1 -1
- package/dist/services/codex-pre-tool-hook-template.js +44 -8
- package/dist/services/codex-pre-tool-hook-template.js.map +1 -1
- package/package.json +1 -1
- package/templates/.agents/README-ENG.md +12 -0
- package/templates/.agents/README.md +12 -0
- package/templates/.agents/config/agents/discovery.json +1 -1
- package/templates/.agents/dashboard/.zaip-managed.json +31 -31
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-URSe1IiF.js → DashboardHelpDialog-Crv8oLKH.js} +13 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-8znf56to.js → PricingSettingsDialog-De3_oOUB.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-O68yx0KF.js → ProjectSettingsPage-HNZfT9Xo.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-DlYlyBhz.js → TraceabilityWorkspace-D4tioTQ5.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{dashboard-localization-DhvlkPf2.js → dashboard-localization-BbNU69xZ.js} +12 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{index-CWcci-bM.js → index-oqGtXP7j.js} +2 -2
- package/templates/.agents/dashboard/apps/frontend/dist/index.html +1 -1
- package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
- 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/packages/branding/package.json +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 +162 -161
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +59 -59
- package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +162 -161
- 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 +3 -3
- 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 +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/runtime/VERSION +1 -1
- package/templates/.agents/runtime/bin/zaip.mjs +99 -33
- package/templates/.agents/runtime/checksums.sha256 +5 -5
- package/templates/.agents/runtime/manifest.json +1 -1
- package/templates/.agents/runtime/provenance.json +4 -4
- package/templates/.agents/runtime/sbom.cdx.json +1 -1
- package/templates/.agents/skills/zaip-skill-execution/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-contract.mjs +1 -1
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-publication-intent.test.mjs +14 -0
- package/templates/.agents/skills/zaip-skill-task/references/commit-policy.md +9 -0
- package/templates/.agents/zaip-aios/VERSION +1 -1
- package/templates/template-manifest.json +68 -68
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type PublicAgentCatalog } from "./agent-adapters.js";
|
|
2
2
|
export { isManagedAdapter } from "./managed-adapter.js";
|
|
3
|
-
export declare const ADAPTERS_VERSION = "5.
|
|
3
|
+
export declare const ADAPTERS_VERSION = "5.5.0";
|
|
4
4
|
export interface AdapterFile {
|
|
5
5
|
path: string;
|
|
6
6
|
content: string;
|
|
@@ -11,7 +11,7 @@ export { isManagedAdapter } from "./managed-adapter.js";
|
|
|
11
11
|
import { CODEX_GITHUB_DEPLOY_RULES, CODEX_SECURITY_RULES } from "./codex-rules.js";
|
|
12
12
|
import { codexWindowsHookCommand } from "./codex-windows-hook-command.js";
|
|
13
13
|
import { applyTransactionalChanges, assertSafeDestination } from "./transactional-files.js";
|
|
14
|
-
export const ADAPTERS_VERSION = "5.
|
|
14
|
+
export const ADAPTERS_VERSION = "5.5.0";
|
|
15
15
|
const ROOT_GUIDANCE = `# ZAIP-AIOS
|
|
16
16
|
|
|
17
17
|
Read \`.agents/config/project.yaml\` first. Apply ZAIP only for literal boolean \`zaip.enabled: true\`, except framework maintenance or \`zaip enable\`. \`AGENTS.md\` is a bootstrap; canonical guidance lives in \`.agents/\`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-conversation-lifecycle-hook.d.ts","sourceRoot":"","sources":["../../src/services/codex-conversation-lifecycle-hook.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iCAAiC,
|
|
1
|
+
{"version":3,"file":"codex-conversation-lifecycle-hook.d.ts","sourceRoot":"","sources":["../../src/services/codex-conversation-lifecycle-hook.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iCAAiC,QAgS7C,CAAC"}
|
|
@@ -21,7 +21,7 @@ const text = value => typeof value === "string" && value.length > 0 && value.len
|
|
|
21
21
|
const inside = (path, base = root) => { const p = relative(base, resolve(path)); return p === "" || (!p.startsWith("..") && !isAbsolute(p)); };
|
|
22
22
|
let raw = ""; for await (const chunk of process.stdin) raw += chunk;
|
|
23
23
|
const event = parse(raw), session = text(event?.session_id), turn = text(event?.turn_id);
|
|
24
|
-
let receipt, receiptPath, lease;
|
|
24
|
+
let receipt, receiptPath, lease, closureVerified = false;
|
|
25
25
|
function reply(pending = false) {
|
|
26
26
|
if (!replay && governanceEnabled) activation?.recordActivation(root, event, pending ? "pending" : "observed");
|
|
27
27
|
// Closure belongs to the live orchestrator. Stop only records/reconciles;
|
|
@@ -202,8 +202,11 @@ try {
|
|
|
202
202
|
receipt = old?.schema_version === 1 && old.session_id === session && old.turn_id === turn ? old : { schema_version: 1, session_id: session, turn_id: turn, state: "pending", attempts: 0 };
|
|
203
203
|
const transcriptPath = text(event.transcript_path) ?? text(receipt.event?.transcript_path);
|
|
204
204
|
receipt.event = { hook_event_name: "Stop", cwd: root, session_id: session, turn_id: turn, transcript_path: transcriptPath, stop_hook_active: true };
|
|
205
|
-
|
|
206
|
-
|
|
205
|
+
const telemetryReplay = replay && !automatic && receipt.state === "persisted" &&
|
|
206
|
+
!["observed", "disabled"].includes(receipt.telemetry?.state);
|
|
207
|
+
if (receipt.state === "persisted" && !telemetryReplay) { reply(); } else {
|
|
208
|
+
const closurePersisted = receipt.state === "persisted";
|
|
209
|
+
if (!closurePersisted) { receipt.attempts += 1; receipt.state = "pending"; await save(receiptPath, receipt); }
|
|
207
210
|
let status = null;
|
|
208
211
|
for (const delay of automatic ? [0] : [0, 250, 750]) { if (delay) await new Promise(r => setTimeout(r, delay)); status = await terminal(transcriptPath); if (status) break; }
|
|
209
212
|
if (!status) throw new Error("transcript_pending");
|
|
@@ -219,7 +222,7 @@ try {
|
|
|
219
222
|
intake = parse(started.out);
|
|
220
223
|
}
|
|
221
224
|
const run = intake?.run?.run_id;
|
|
222
|
-
if (
|
|
225
|
+
if (receipt.run_id !== undefined && receipt.run_id !== run) throw new Error("recovery_run_mismatch");
|
|
223
226
|
if (typeof run !== "string" || (intake.task !== null && typeof intake.task?.id !== "string")) throw new Error("start_pending");
|
|
224
227
|
receipt.run_id = run; await save(receiptPath, receipt);
|
|
225
228
|
const result = await call(cli, ["subagent", "reconcile-stop", "--session", session, "--turn", turn], transcriptPath);
|
|
@@ -246,15 +249,41 @@ try {
|
|
|
246
249
|
throw new Error("owned_task_recoverable");
|
|
247
250
|
}
|
|
248
251
|
}
|
|
252
|
+
closureVerified = true; receipt.error = null;
|
|
253
|
+
if (!closurePersisted) {
|
|
254
|
+
receipt.state = "persisted"; receipt.persisted_at = new Date().toISOString(); receipt.error = null;
|
|
255
|
+
receipt.telemetry = { state: !trackingEnabled ? "disabled" : intake.task === null ? "unavailable" : "pending", error: null };
|
|
256
|
+
await save(receiptPath, receipt);
|
|
257
|
+
}
|
|
249
258
|
if (intake.task !== null && trackingEnabled) {
|
|
259
|
+
receipt.telemetry = { state: "pending", error: null }; await save(receiptPath, receipt);
|
|
250
260
|
const usage = await call(cli, ["run", "usage", run, "--disable-codex-raw"], transcriptPath);
|
|
251
|
-
|
|
261
|
+
const collected = parse(usage.out);
|
|
262
|
+
if (usage.code !== 0 || collected === null || collected.run?.id !== run) {
|
|
263
|
+
receipt.telemetry = { state: "pending", error: "telemetry_pending" };
|
|
264
|
+
} else {
|
|
265
|
+
const coverage = collected.run.usage?.coverage;
|
|
266
|
+
const observed = [coverage?.tokens, coverage?.usd, coverage?.brl].some(value => Number.isSafeInteger(value) && value > 0);
|
|
267
|
+
receipt.telemetry = { state: observed ? "observed" : "unavailable", error: null };
|
|
268
|
+
}
|
|
269
|
+
await save(receiptPath, receipt);
|
|
270
|
+
} else if (closurePersisted) {
|
|
271
|
+
receipt.telemetry = { state: trackingEnabled ? "unavailable" : "disabled", error: null };
|
|
272
|
+
await save(receiptPath, receipt);
|
|
252
273
|
}
|
|
253
|
-
|
|
254
|
-
await save(receiptPath, receipt); reply();
|
|
274
|
+
reply();
|
|
255
275
|
}
|
|
256
276
|
} catch (error) {
|
|
257
|
-
if (receipt && receiptPath) {
|
|
277
|
+
if (receipt && receiptPath) {
|
|
278
|
+
if (receipt.state === "persisted" && !closureVerified) {
|
|
279
|
+
receipt.error = "replay_proof_failed:" + String(error.message ?? error);
|
|
280
|
+
} else if (receipt.state === "persisted") {
|
|
281
|
+
receipt.error = null;
|
|
282
|
+
if (!["observed", "disabled"].includes(receipt.telemetry?.state))
|
|
283
|
+
receipt.telemetry = { state: "pending", error: String(error.message ?? error) };
|
|
284
|
+
} else { receipt.state = "pending"; receipt.error = String(error.message ?? error); }
|
|
285
|
+
await save(receiptPath, receipt).catch(() => {});
|
|
286
|
+
}
|
|
258
287
|
await note(String(error.message ?? error)).catch(() => {}); reply(true);
|
|
259
288
|
} finally { if (lease) { await lease.close(); await unlink(receiptPath + ".lock").catch(() => {}); } }
|
|
260
289
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-conversation-lifecycle-hook.js","sourceRoot":"","sources":["../../src/services/codex-conversation-lifecycle-hook.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"codex-conversation-lifecycle-hook.js","sourceRoot":"","sources":["../../src/services/codex-conversation-lifecycle-hook.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgS1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-pre-tool-hook-template.d.ts","sourceRoot":"","sources":["../../src/services/codex-pre-tool-hook-template.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"codex-pre-tool-hook-template.d.ts","sourceRoot":"","sources":["../../src/services/codex-pre-tool-hook-template.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,QAspB/B,CAAC"}
|
|
@@ -305,6 +305,41 @@ async function validateGitPublication(command) {
|
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
307
|
|
|
308
|
+
// These CLI values are data, never shell programs. Only one literal invocation of
|
|
309
|
+
// the canonical runtime qualifies; interpolation, pipelines and other scripts do not.
|
|
310
|
+
function executionPolicyCommand(command) {
|
|
311
|
+
const tokens = tokenizeLiteralCommand(command);
|
|
312
|
+
if (!tokens || !/^(?:.*[\\/])?node(?:\.exe)?$/i.test(tokens[0] ?? "") ||
|
|
313
|
+
resolve(event.cwd, tokens[1] ?? "") !== resolve(repositoryRoot, ".agents/runtime/bin/zaip.mjs") ||
|
|
314
|
+
tokens[2] !== "conversation" || tokens[3] !== "finish") return command;
|
|
315
|
+
const result = [...tokens];
|
|
316
|
+
for (let index = 4; index < result.length; index++) {
|
|
317
|
+
if (result[index] === "--summary" && index + 1 < result.length) result[++index] = "literal-summary";
|
|
318
|
+
else if (result[index].startsWith("--summary=")) result[index] = "--summary=literal-summary";
|
|
319
|
+
}
|
|
320
|
+
return result.map(token => JSON.stringify(token)).join(" ");
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
async function isCurrentRepositoryRead(command) {
|
|
324
|
+
const tokens = tokenizeLiteralCommand(command);
|
|
325
|
+
if (!tokens || !/^gh(?:\.exe)?$/i.test(tokens[0] ?? "")) return false;
|
|
326
|
+
const rest = [], repositories = [];
|
|
327
|
+
for (let index = 0; index < tokens.length; index++) {
|
|
328
|
+
const token = tokens[index];
|
|
329
|
+
if (token === "--repo" || token === "-R") repositories.push(tokens[++index]);
|
|
330
|
+
else if (token.startsWith("--repo=")) repositories.push(token.slice(7));
|
|
331
|
+
else if (token.startsWith("-R") && token.length > 2) repositories.push(token.slice(2));
|
|
332
|
+
else rest.push(token);
|
|
333
|
+
}
|
|
334
|
+
if (repositories.length !== 1 || !/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(repositories[0] ?? "") ||
|
|
335
|
+
rest.some(token => token.includes("'")) || !isLiteralReadSequence(rest.map(token => "'" + token + "'").join(" "))) return false;
|
|
336
|
+
try {
|
|
337
|
+
const origin = (await execute("git", ["remote", "get-url", "origin"], { cwd: repositoryRoot, encoding: "utf8", windowsHide: true })).stdout.trim();
|
|
338
|
+
const match = /^(?:git@github\.com:|https:\/\/github\.com\/|ssh:\/\/git@github\.com\/)([^/]+\/[^/]+?)\.git$|^(?:git@github\.com:|https:\/\/github\.com\/|ssh:\/\/git@github\.com\/)([^/]+\/[^/]+?)\/?$/.exec(origin);
|
|
339
|
+
return !!match && (match[1] ?? match[2]).toLowerCase() === repositories[0].toLowerCase();
|
|
340
|
+
} catch { return false; }
|
|
341
|
+
}
|
|
342
|
+
|
|
308
343
|
function validateHashicorpRead(command) {
|
|
309
344
|
const tokens = tokenizeLiteralCommand(command);
|
|
310
345
|
if (!tokens || !/^(?:curl(?:\.exe)?|Invoke-WebRequest|Invoke-RestMethod|iwr|irm)$/i.test(tokens[0]))
|
|
@@ -612,14 +647,15 @@ else {
|
|
|
612
647
|
...await reviewedContextReadPaths(command, credentialReferencePattern, installedRoot), ...await (nativeAuthority?.reviewedValidationRuntimePaths?.(command, tokenizeLiteralCommand, repositoryRoot) ?? []),
|
|
613
648
|
];
|
|
614
649
|
await validateExplicitFilesystemReferences(command, event.cwd, reviewedPaths);
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
await
|
|
618
|
-
await
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
650
|
+
const policyCommand = executionPolicyCommand(command);
|
|
651
|
+
validateInlineExecution(policyCommand, deny);
|
|
652
|
+
if (!isLiteralReadSequence(policyCommand) && !await isCurrentRepositoryRead(policyCommand)) {
|
|
653
|
+
await validateGitPublication(policyCommand);
|
|
654
|
+
await validateCloudRunner(policyCommand);
|
|
655
|
+
validateDirectCloudProviderMutation(policyCommand);
|
|
656
|
+
validateExplicitNetwork(policyCommand);
|
|
657
|
+
await validateShellDeletion(policyCommand, event.cwd);
|
|
658
|
+
checkDestructivePatterns(policyCommand, destructivePatterns, deny);
|
|
623
659
|
}
|
|
624
660
|
try { const updated = await captureCliTurn(repositoryRoot, event, command); if (updated) writeSync(1, JSON.stringify(rewriteCliInput(toolInput, updated, commandFromCmd)) + "\n"); }
|
|
625
661
|
catch (error) { deny(error.message); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-pre-tool-hook-template.js","sourceRoot":"","sources":["../../src/services/codex-pre-tool-hook-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEjF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"codex-pre-tool-hook-template.js","sourceRoot":"","sources":["../../src/services/codex-pre-tool-hook-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEjF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgZ3C,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsQ5B,CAAC"}
|
package/package.json
CHANGED
|
@@ -6,6 +6,18 @@ English | [Português](README.md)
|
|
|
6
6
|
|
|
7
7
|
## Quick overview
|
|
8
8
|
|
|
9
|
+
The [v5.5 guide](https://github.com/zaip-ai/zaip-aios/blob/main/docs/quality/v55-eficiencia-operacional.md) describes evidence
|
|
10
|
+
obligations exposed at intake, direct replay of completed lifecycle closure,
|
|
11
|
+
bounded journal segments, and impact-based test selection. Timing diagnostics
|
|
12
|
+
do not invalidate the cache; actual changes still do. Native hook evidence
|
|
13
|
+
limitations are reported separately.
|
|
14
|
+
|
|
15
|
+
The [v5.4 guide](https://github.com/zaip-ai/zaip-aios/blob/main/docs/quality/v54-fechamento-cache-hooks.md) describes restricted
|
|
16
|
+
administrative closure after publication, the distinction between text and commands
|
|
17
|
+
in hooks, GitHub queries targeting the current repository, and objective acceptance
|
|
18
|
+
criteria. Partial evidence and historical outcomes remain visible; tests are rerun
|
|
19
|
+
when a change or finding invalidates the corresponding proof.
|
|
20
|
+
|
|
9
21
|
The [rework prevention guide](https://github.com/zaip-ai/zaip-aios/blob/main/docs/quality/v51-eficiencia-e-publicacao.md)
|
|
10
22
|
documents complete checks before finalization, bounded Run reads, conservative
|
|
11
23
|
test reuse, content-based Dashboard builds and separate npm confirmation.
|
|
@@ -6,6 +6,18 @@
|
|
|
6
6
|
|
|
7
7
|
## Visão rápida
|
|
8
8
|
|
|
9
|
+
O [guia da v5.5](https://github.com/zaip-ai/zaip-aios/blob/main/docs/quality/v55-eficiencia-operacional.md) descreve as obrigações
|
|
10
|
+
de prova apresentadas no início da entrega, o replay direto de fechamento já
|
|
11
|
+
concluído, os segmentos limitados dos journals e a seleção de testes por impacto.
|
|
12
|
+
Medições de tempo não invalidam o cache; alterações reais continuam invalidando.
|
|
13
|
+
Os limites da prova nativa dos hooks são apresentados separadamente.
|
|
14
|
+
|
|
15
|
+
O [guia da v5.4](https://github.com/zaip-ai/zaip-aios/blob/main/docs/quality/v54-fechamento-cache-hooks.md) descreve o fechamento
|
|
16
|
+
administrativo restrito após publicação, a distinção entre texto e comandos nos
|
|
17
|
+
hooks, consultas GitHub ao repositório atual e os critérios objetivos de aceite.
|
|
18
|
+
Evidências parciais e estados históricos permanecem visíveis; testes são repetidos
|
|
19
|
+
quando uma mudança ou finding invalida a prova correspondente.
|
|
20
|
+
|
|
9
21
|
O [guia de prevenção de retrabalho](https://github.com/zaip-ai/zaip-aios/blob/main/docs/quality/v51-eficiencia-e-publicacao.md)
|
|
10
22
|
documenta o pré-check completo antes da finalização, as leituras limitadas de Runs,
|
|
11
23
|
o reuso conservador de testes, o build do Dashboard por conteúdo e a confirmação
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_zaip_managed": "zaip-managed generated-do-not-edit source=agent-discovery version=5.
|
|
2
|
+
"_zaip_managed": "zaip-managed generated-do-not-edit source=agent-discovery version=5.5.0 sha256=3def7a2b43c1a751f8e68754ef94cb107a80b5d26e11f065af2b4cc145fc8897",
|
|
3
3
|
"schema_version": 1,
|
|
4
4
|
"source": {
|
|
5
5
|
"path": ".agents/config/agents/catalog.yaml",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.5.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-
|
|
19
|
-
"sha256": "
|
|
18
|
+
"path": "apps/frontend/dist/assets/DashboardHelpDialog-Crv8oLKH.js",
|
|
19
|
+
"sha256": "7659e8de0884a357f0ea31474a41bba0067a69ec88c2ad20c852f68da67da731"
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
|
-
"path": "apps/frontend/dist/assets/DashboardHelpDialog-
|
|
23
|
-
"sha256": "
|
|
22
|
+
"path": "apps/frontend/dist/assets/DashboardHelpDialog-DRI_XwUf.css",
|
|
23
|
+
"sha256": "95dbb5c26ad73831f36f2a51d5e08ef5eee7ca85190764a3e63bf1e700fbadf8"
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
|
-
"path": "apps/frontend/dist/assets/PricingSettingsDialog-
|
|
27
|
-
"sha256": "
|
|
26
|
+
"path": "apps/frontend/dist/assets/PricingSettingsDialog-De3_oOUB.js",
|
|
27
|
+
"sha256": "386c55a54cfdf937ca0d99164c7f62e7d2a36aa3b30b29df00b24bd276b1b8e1"
|
|
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-
|
|
35
|
-
"sha256": "
|
|
34
|
+
"path": "apps/frontend/dist/assets/ProjectSettingsPage-HNZfT9Xo.js",
|
|
35
|
+
"sha256": "13172e64f534881f70b8a62d70c34caaa6fb175c3a8754e441efe3d32946bc9f"
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
|
-
"path": "apps/frontend/dist/assets/TraceabilityWorkspace-
|
|
39
|
-
"sha256": "
|
|
38
|
+
"path": "apps/frontend/dist/assets/TraceabilityWorkspace-D4tioTQ5.js",
|
|
39
|
+
"sha256": "c5c0adfde02160404f6ff15b28f2ee13d9cad59c7b341e734ef2a1c0a8ca87de"
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"path": "apps/frontend/dist/assets/TraceabilityWorkspace-DvvavDLY.css",
|
|
@@ -51,21 +51,21 @@
|
|
|
51
51
|
"sha256": "90be9550e3b6719ffc7a029ac35a93a4f14e95263b3996ad6c06dbfc0490f307"
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
|
-
"path": "apps/frontend/dist/assets/dashboard-localization-
|
|
55
|
-
"sha256": "
|
|
54
|
+
"path": "apps/frontend/dist/assets/dashboard-localization-BbNU69xZ.js",
|
|
55
|
+
"sha256": "a4a3bcd640bc3f79bd4320a87031a33b8d74c4a4ed2183ba0ba6a0f97f77c437"
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
58
|
"path": "apps/frontend/dist/assets/icons-vendor-CjGGux6h.js",
|
|
59
59
|
"sha256": "0f615bc6eaeb21d12fc0457867d6acbfe9434ebae0ebecea9444262e46b972e9"
|
|
60
60
|
},
|
|
61
|
-
{
|
|
62
|
-
"path": "apps/frontend/dist/assets/index-CWcci-bM.js",
|
|
63
|
-
"sha256": "dae6c3d18ea8c53c0501ff562d1ce56cd90ef377ace20e06546c1ba5db7e50d1"
|
|
64
|
-
},
|
|
65
61
|
{
|
|
66
62
|
"path": "apps/frontend/dist/assets/index-DZhppOIk.css",
|
|
67
63
|
"sha256": "cd290085a95d9108f11e94406b2253bfd2109e116d5d7e82460a2f4aecdaba04"
|
|
68
64
|
},
|
|
65
|
+
{
|
|
66
|
+
"path": "apps/frontend/dist/assets/index-oqGtXP7j.js",
|
|
67
|
+
"sha256": "6fba043547a996582931e1bbf265fe096ec141008e4efe87a3d2305da3984117"
|
|
68
|
+
},
|
|
69
69
|
{
|
|
70
70
|
"path": "apps/frontend/dist/assets/logo_novo_azul-BBx5pA2B.png",
|
|
71
71
|
"sha256": "bb6043bda9fc53a111aaea4d6a004559b9ce8a3569691c060d217a7c6aafa0ae"
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
},
|
|
93
93
|
{
|
|
94
94
|
"path": "apps/frontend/dist/index.html",
|
|
95
|
-
"sha256": "
|
|
95
|
+
"sha256": "b89b431b8e411962f04efce2290d37c2c6d5b68b3c90d5d70ec54b6c1469ba8c"
|
|
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": "
|
|
107
|
+
"sha256": "ca27f6ad95fbf44fef4aa177061c309bd2cd6bc8fafc58140cefc5693d0457f6"
|
|
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": "
|
|
603
|
+
"sha256": "f8c7d71e3eec1be18387a0d86ce280cab1f81060ae0bd0168289a7a4b16c3e73"
|
|
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": "
|
|
1015
|
+
"sha256": "3cc06ed175ef335e50163416f30a9f84e536c3c1c4257ca8011a4b87d5ecb6c7"
|
|
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": "
|
|
1755
|
+
"sha256": "291dea5ec338dc2f950aed2d1d1d22e082393b68322a38a979697cf784a2b3e8"
|
|
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": "
|
|
1827
|
+
"sha256": "f72991e92473a700cae46fbe835dc63c15d3542c37f4510aebfbdce1111df6d7"
|
|
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": "
|
|
1839
|
+
"sha256": "6af0748d267fe678ddbb2ab5e77ce7690a64bec096a8a03dfc5071d4a404b79a"
|
|
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": "
|
|
1859
|
+
"sha256": "1a2f264860d1e1b05ee3dbcc5a5032e3bc77be201c1c74e85f8b47829e26246a"
|
|
1860
1860
|
},
|
|
1861
1861
|
{
|
|
1862
1862
|
"path": "packages/data-export/src/index.test.ts",
|
|
@@ -1904,15 +1904,15 @@
|
|
|
1904
1904
|
},
|
|
1905
1905
|
{
|
|
1906
1906
|
"path": "packages/local-runtime/dist/server.cjs",
|
|
1907
|
-
"sha256": "
|
|
1907
|
+
"sha256": "22709ef1a33a7825cf8d8f935d199260f6ec7e3aa5502c24e85d470020f7b3c8"
|
|
1908
1908
|
},
|
|
1909
1909
|
{
|
|
1910
1910
|
"path": "packages/local-runtime/dist/sqlite-read-model.cjs",
|
|
1911
|
-
"sha256": "
|
|
1911
|
+
"sha256": "5fb0cc294ea54ebce6caae15a56dd729d4383e00a0d3d7254e5fb56a1c568328"
|
|
1912
1912
|
},
|
|
1913
1913
|
{
|
|
1914
1914
|
"path": "packages/local-runtime/package.json",
|
|
1915
|
-
"sha256": "
|
|
1915
|
+
"sha256": "49c2f69495f0526ed894420b1c3c1d271172c50f32eeff37e2f0a35ee2a0023f"
|
|
1916
1916
|
},
|
|
1917
1917
|
{
|
|
1918
1918
|
"path": "packages/local-runtime/scripts/build-frontend.mjs",
|
|
@@ -1968,7 +1968,7 @@
|
|
|
1968
1968
|
},
|
|
1969
1969
|
{
|
|
1970
1970
|
"path": "packages/local-runtime/server.mjs",
|
|
1971
|
-
"sha256": "
|
|
1971
|
+
"sha256": "dff0c37a4caff4709256f35f3f993eefbf01b2087688bcf81797bb026766ee73"
|
|
1972
1972
|
},
|
|
1973
1973
|
{
|
|
1974
1974
|
"path": "packages/local-runtime/src/active-capture-failure.test.ts",
|
|
@@ -2848,7 +2848,7 @@
|
|
|
2848
2848
|
},
|
|
2849
2849
|
{
|
|
2850
2850
|
"path": "packages/ui/package.json",
|
|
2851
|
-
"sha256": "
|
|
2851
|
+
"sha256": "ae40db63972e48f5fe95a7a23383d6acd0299561d27afa2acf48753c4194b557"
|
|
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": "
|
|
2959
|
+
"sha256": "72485ec4b52ced94fafef3b3f0f3d8894415c0c1f6cdf629c89ceb74c431cd0f"
|
|
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-
|
|
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
|
|
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,18 @@ matriz de performance aprovada apenas porque consultas focadas passaram.
|
|
|
2343
2343
|
|
|
2344
2344
|
## Visão rápida
|
|
2345
2345
|
|
|
2346
|
+
O [guia da v5.5](docs/quality/v55-eficiencia-operacional.md) descreve as obrigações
|
|
2347
|
+
de prova apresentadas no início da entrega, o replay direto de fechamento já
|
|
2348
|
+
concluído, os segmentos limitados dos journals e a seleção de testes por impacto.
|
|
2349
|
+
Medições de tempo não invalidam o cache; alterações reais continuam invalidando.
|
|
2350
|
+
Os limites da prova nativa dos hooks são apresentados separadamente.
|
|
2351
|
+
|
|
2352
|
+
O [guia da v5.4](docs/quality/v54-fechamento-cache-hooks.md) descreve o fechamento
|
|
2353
|
+
administrativo restrito após publicação, a distinção entre texto e comandos nos
|
|
2354
|
+
hooks, consultas GitHub ao repositório atual e os critérios objetivos de aceite.
|
|
2355
|
+
Evidências parciais e estados históricos permanecem visíveis; testes são repetidos
|
|
2356
|
+
quando uma mudança ou finding invalida a prova correspondente.
|
|
2357
|
+
|
|
2346
2358
|
O [guia de prevenção de retrabalho](docs/quality/v51-eficiencia-e-publicacao.md)
|
|
2347
2359
|
documenta o pré-check completo antes da finalização, as leituras limitadas de Runs,
|
|
2348
2360
|
o reuso conservador de testes, o build do Dashboard por conteúdo e a confirmação
|
|
@@ -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-
|
|
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};
|