@zaip-ai/cli 3.0.0 → 3.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 +11 -5
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +16 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/services/adapters.d.ts +1 -1
- package/dist/services/adapters.js +1 -1
- package/dist/services/github-setup-status.d.ts +12 -0
- package/dist/services/github-setup-status.d.ts.map +1 -0
- package/dist/services/github-setup-status.js +84 -0
- package/dist/services/github-setup-status.js.map +1 -0
- package/dist/services/github-setup-status.test.d.ts +2 -0
- package/dist/services/github-setup-status.test.d.ts.map +1 -0
- package/dist/services/github-setup-status.test.js +57 -0
- package/dist/services/github-setup-status.test.js.map +1 -0
- package/dist/services/logger.d.ts +10 -1
- package/dist/services/logger.d.ts.map +1 -1
- package/dist/services/logger.js +23 -6
- package/dist/services/logger.js.map +1 -1
- package/dist/services/logger.test.js +33 -5
- package/dist/services/logger.test.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/.agents/README-ENG.md +5 -1
- package/templates/.agents/README.md +5 -1
- package/templates/.agents/config/agents/discovery.json +1 -1
- package/templates/.agents/dashboard/.zaip-managed.json +65 -41
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-TnrL1ZyZ.js → DashboardHelpDialog-BzaUTZDx.js} +27 -12
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-DjQpBqGU.js → PricingSettingsDialog-21cCJik-.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-BQZXUnQu.js → TraceabilityWorkspace-wqW52uCx.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{dashboard-localization-Basaw1NR.js → dashboard-localization-BkAm8-h4.js} +5 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{index-BQe3zTvL.js → index-DqZKJS8y.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 +182 -160
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +174 -152
- package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +182 -160
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-calendar.ts +17 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cold-parse.test.ts +78 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-group-projection.test.ts +94 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-group-projection.ts +5 -5
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-duration-lookup.test.ts +59 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-entity-label-views.test.ts +72 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-runs.ts +3 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-entity-group.test.ts +171 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-entity-group.ts +36 -16
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical-parsing.ts +7 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical.ts +5 -15
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-keeps-orphan-telemetry-out-kanban-without.test.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuild.ts +2 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +3 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-base-views.ts +22 -14
- 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 +9 -2
- 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 +5 -5
- 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-config/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/references/release-identity.md +17 -12
- package/templates/.agents/skills/zaip-skill-github-setup/SKILL.md +7 -1
- package/templates/.agents/skills/zaip-skill-setup/SKILL.md +12 -0
- package/templates/.agents/zaip-aios/README.md +4 -3
- package/templates/.agents/zaip-aios/VERSION +1 -1
- package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +22 -1
- package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +20 -9
- package/templates/template-manifest.json +105 -81
package/README.md
CHANGED
|
@@ -137,11 +137,17 @@ Each command saves `stack.overrides.installation_profile` in `.agents/config/pro
|
|
|
137
137
|
add development or infrastructure tools later. An invalid profile is rejected before installation.
|
|
138
138
|
`--dry-run` previews the selected profile without persisting it or downloading tools.
|
|
139
139
|
|
|
140
|
-
Git
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
140
|
+
Git and GitHub setup can be completed after installation on every platform. No profile requires
|
|
141
|
+
Git, a repository, author identity or an initial commit to finish `init`. Delivery still checks
|
|
142
|
+
its Git prerequisites before execution.
|
|
143
|
+
|
|
144
|
+
The successful installation summary includes observed file counts, SQLite and doctor results,
|
|
145
|
+
and a clickable npm link to the installed version. It ends by asking whether you want help
|
|
146
|
+
configuring GitHub, or configuring the project when local GitHub configuration is already found.
|
|
147
|
+
Local configuration does not prove authentication. In a chat, accepting opens the relevant skill,
|
|
148
|
+
which explains the options and asks for your choices before applying them. GitHub setup is followed
|
|
149
|
+
by the project setup offer. Completing project setup or deferring an offer ends installation
|
|
150
|
+
onboarding. The terminal CTA is text only and never waits for an answer.
|
|
145
151
|
|
|
146
152
|
Terraform is a standalone executable. The full profile reuses a compatible installation or prepares
|
|
147
153
|
the pinned official Terraform 1.16.1 release locally, verifying its SHA-256 checksum. Provider plugins
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;CACxC;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,UAAU,CAAC,CAgErB"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
2
|
import { createInterface } from "node:readline/promises";
|
|
3
|
+
import { doctorProject } from "../services/doctor.js";
|
|
3
4
|
import { findProjectRoot } from "../services/find-project-root.js";
|
|
5
|
+
import { inspectGitHubSetup } from "../services/github-setup-status.js";
|
|
4
6
|
import { installAgentsTemplate } from "../services/install-agents-template.js";
|
|
5
7
|
import { persistInstallProfile, resolveInstallProfile } from "../services/install-profile.js";
|
|
6
8
|
import { printResult } from "../services/logger.js";
|
|
7
9
|
import { assertDashboardBootstrapPreflight, bootstrapDashboardSqlite, } from "../services/sqlite-bootstrap.js";
|
|
8
|
-
import { prepareStackGit } from "../services/stack-git.js";
|
|
9
10
|
import { installStack } from "../services/stack-install.js";
|
|
10
11
|
import { exposeStackNode, prepareStackNode, usingStackNode } from "../services/stack-node.js";
|
|
11
12
|
import { describeStack, planStack } from "../services/stack-plan.js";
|
|
@@ -31,7 +32,7 @@ export async function executeInit(directory, command, version, runtime = {}) {
|
|
|
31
32
|
if (command.force && !command.yes) {
|
|
32
33
|
options.confirmForce = confirmation(stdin, stdout);
|
|
33
34
|
}
|
|
34
|
-
const target = await findProjectRoot(resolve(options.cwd, directory ?? "."));
|
|
35
|
+
const target = await findProjectRoot(resolve(options.cwd ?? process.cwd(), directory ?? "."));
|
|
35
36
|
const profile = await resolveInstallProfile(target.root, command.profile);
|
|
36
37
|
const stack = await planStack(target.root, runtime.templateDirectory, profile);
|
|
37
38
|
if (!options.dryRun)
|
|
@@ -40,7 +41,6 @@ export async function executeInit(directory, command, version, runtime = {}) {
|
|
|
40
41
|
if (result.dryRun || result.applied)
|
|
41
42
|
stdout.write(describeStack(stack, result.dryRun));
|
|
42
43
|
if (result.applied && !result.dryRun) {
|
|
43
|
-
await prepareStackGit(result.root, (message) => stdout.write(message));
|
|
44
44
|
if (profile !== "lite") {
|
|
45
45
|
const node = await prepareStackNode(result.root, (message) => stdout.write(message));
|
|
46
46
|
const dependencies = await installStack(stack, usingStackNode(node, runtime.packageRunner));
|
|
@@ -54,10 +54,20 @@ export async function executeInit(directory, command, version, runtime = {}) {
|
|
|
54
54
|
const sqlite = await bootstrapDashboardSqlite({ workspaceRoot: result.root });
|
|
55
55
|
stdout.write(`Dashboard SQLite pronto: ${sqlite.path} (${sqlite.cache}).\n`);
|
|
56
56
|
await persistInstallProfile(result.root, profile);
|
|
57
|
+
const doctor = await doctorProject(result.root);
|
|
58
|
+
if (!doctor.valid)
|
|
59
|
+
throw new Error("ZAIP-AIOS doctor failed after installation");
|
|
60
|
+
const github = await inspectGitHubSetup(result.root, runtime.githubSetupRunner);
|
|
61
|
+
if (command.projectOnly) {
|
|
62
|
+
stdout.write("Modo project-only: nenhum arquivo em ~/.codex foi lido ou alterado.\n");
|
|
63
|
+
}
|
|
64
|
+
printResult(stdout, result, version, command.verbose, { sqlite, doctor, github });
|
|
57
65
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
66
|
+
else {
|
|
67
|
+
printResult(stdout, result, version, command.verbose);
|
|
68
|
+
if (command.projectOnly) {
|
|
69
|
+
stdout.write("Modo project-only: nenhum arquivo em ~/.codex foi lido ou alterado.\n");
|
|
70
|
+
}
|
|
61
71
|
}
|
|
62
72
|
if (!result.dryRun && !result.applied && result.conflicts.length > 0) {
|
|
63
73
|
throw new Error(`Installation blocked by ${result.conflicts.length} conflicting file(s); rerun with --dry-run --verbose or explicitly use --force --yes`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,iCAAiC,EACjC,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,iCAAiC,EACjC,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAYvE,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAA6B,EAC7B,OAA2B,EAC3B,OAAe,EACf,OAAO,GAAe,EAAE;IAExB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAChD,MAAM,OAAO,GAAgB;QAC3B,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;QACjC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,KAAK;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;QAC7B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;QACjC,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACtE,UAAU,EAAE,OAAO;QACnB,wBAAwB,EAAE,OAAO,CAAC,iBAAiB,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,WAAW;QACzF,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QACjD,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;QACrD,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;KAC7D,CAAC;IAEF,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC;IAC9F,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC/E,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,MAAM,iCAAiC,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO;QAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACvF,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACrC,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACrF,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;YAC5F,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE,CAAC;gBACvF,MAAM,CAAC,KAAK,CACV,GAAG,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,SAAS,sBAAsB,IAAI,CAAC,UAAU,KAAK,CACpF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,OAAO,KAAK,MAAM;YACpB,MAAM,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC;QAC7E,MAAM,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAChF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;QACxF,CAAC;QACD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpF,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CACb,2BAA2B,MAAM,CAAC,SAAS,CAAC,MAAM,sFAAsF,CACzI,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,KAAe,EAAE,MAAgB;IACrD,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,IAAI,CAAE,KAA2B,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,SAAS,CAAC,CAAC;YAC1D,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { codexAgentConfig, parsePublicAgentCatalog, publicAgentAdapterFiles, } f
|
|
|
6
6
|
import { formatAgentDiscovery, serializeAgentDiscovery } from "./agent-discovery.js";
|
|
7
7
|
import { CODEX_GITHUB_DEPLOY_RULES, CODEX_SECURITY_RULES } from "./codex-rules.js";
|
|
8
8
|
import { applyTransactionalWrites, assertSafeDestination } from "./transactional-files.js";
|
|
9
|
-
export const ADAPTERS_VERSION = "3.
|
|
9
|
+
export const ADAPTERS_VERSION = "3.2.0";
|
|
10
10
|
const ROOT_GUIDANCE = `# ZAIP-AIOS
|
|
11
11
|
|
|
12
12
|
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/\`.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface GitHubSetupStatus {
|
|
2
|
+
configured: boolean;
|
|
3
|
+
reason: "git-unavailable" | "not-a-repository" | "identity-missing" | "origin-missing" | "origin-not-github" | "configured";
|
|
4
|
+
}
|
|
5
|
+
export type GitRunner = (directory: string, arguments_: readonly string[]) => Promise<string | null>;
|
|
6
|
+
/**
|
|
7
|
+
* Inspects only local Git configuration. It deliberately does not contact GitHub
|
|
8
|
+
* or infer authentication from a remote URL.
|
|
9
|
+
*/
|
|
10
|
+
export declare function inspectGitHubSetup(directory: string, runGit?: GitRunner): Promise<GitHubSetupStatus>;
|
|
11
|
+
export declare function isGitHubUrl(url: string): boolean;
|
|
12
|
+
//# sourceMappingURL=github-setup-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-setup-status.d.ts","sourceRoot":"","sources":["../../src/services/github-setup-status.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EACF,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,GACnB,YAAY,CAAC;CAClB;AAED,MAAM,MAAM,SAAS,GAAG,CACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,SAAS,MAAM,EAAE,KAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAE5B;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,SAAe,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B;AAiCD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKhD"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { promisify } from "node:util";
|
|
4
|
+
const exec = promisify(execFile);
|
|
5
|
+
/**
|
|
6
|
+
* Inspects only local Git configuration. It deliberately does not contact GitHub
|
|
7
|
+
* or infer authentication from a remote URL.
|
|
8
|
+
*/
|
|
9
|
+
export async function inspectGitHubSetup(directory, runGit = git) {
|
|
10
|
+
if (!validGitVersion(await runGit(directory, ["--version"])))
|
|
11
|
+
return pending("git-unavailable");
|
|
12
|
+
if ((await runGit(directory, ["rev-parse", "--is-inside-work-tree"])) !== "true")
|
|
13
|
+
return pending("not-a-repository");
|
|
14
|
+
const [name, email, origin, rewrites] = await Promise.all([
|
|
15
|
+
runGit(directory, ["config", "--get", "user.name"]),
|
|
16
|
+
runGit(directory, ["config", "--get", "user.email"]),
|
|
17
|
+
runGit(directory, ["remote", "get-url", "origin"]),
|
|
18
|
+
runGit(directory, ["config", "--get-regexp", "^url\\..*\\.insteadOf$"]),
|
|
19
|
+
]);
|
|
20
|
+
if (!name || !email)
|
|
21
|
+
return pending("identity-missing");
|
|
22
|
+
if (!origin)
|
|
23
|
+
return pending("origin-missing");
|
|
24
|
+
return isGitHubUrl(rewriteGitUrl(origin, rewrites))
|
|
25
|
+
? { configured: true, reason: "configured" }
|
|
26
|
+
: pending("origin-not-github");
|
|
27
|
+
}
|
|
28
|
+
function pending(reason) {
|
|
29
|
+
return { configured: false, reason };
|
|
30
|
+
}
|
|
31
|
+
const git = async (directory, arguments_) => {
|
|
32
|
+
const system = "git";
|
|
33
|
+
if (validGitVersion(await execute(system, directory, ["--version"]))) {
|
|
34
|
+
return execute(system, directory, arguments_);
|
|
35
|
+
}
|
|
36
|
+
const portable = join(directory, ".local", "git", "cmd", "git.exe");
|
|
37
|
+
if (!validGitVersion(await execute(portable, directory, ["--version"])))
|
|
38
|
+
return null;
|
|
39
|
+
return execute(portable, directory, arguments_);
|
|
40
|
+
};
|
|
41
|
+
async function execute(executable, directory, arguments_) {
|
|
42
|
+
try {
|
|
43
|
+
const { stdout } = await exec(executable, [...arguments_], {
|
|
44
|
+
cwd: directory,
|
|
45
|
+
windowsHide: true,
|
|
46
|
+
timeout: 10_000,
|
|
47
|
+
});
|
|
48
|
+
return stdout.trim() || null;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function isGitHubUrl(url) {
|
|
55
|
+
const value = url.trim();
|
|
56
|
+
const web = /^(?:https?|ssh):\/\/(?:[^@/]+@)?github\.com\/(.+)$/iu.exec(value);
|
|
57
|
+
const scp = /^(?:[^@/\s]+@)?github\.com:(.+)$/iu.exec(value);
|
|
58
|
+
return repositoryPath(web?.[1] ?? scp?.[1] ?? "");
|
|
59
|
+
}
|
|
60
|
+
function validGitVersion(value) {
|
|
61
|
+
return value !== null && /^git version \d+\.\d+(?:\.\d+)?(?:[.\s]|$)/iu.test(value);
|
|
62
|
+
}
|
|
63
|
+
function repositoryPath(path) {
|
|
64
|
+
const [owner = "", repository = "", ...remaining] = path.replace(/\.git$/iu, "").split("/");
|
|
65
|
+
return (remaining.length === 0 &&
|
|
66
|
+
/^[A-Za-z\d](?:[A-Za-z\d-]{0,38})$/u.test(owner) &&
|
|
67
|
+
/^[A-Za-z\d_.-]+$/u.test(repository) &&
|
|
68
|
+
!repository.includes(".."));
|
|
69
|
+
}
|
|
70
|
+
function rewriteGitUrl(origin, rewrites) {
|
|
71
|
+
if (!rewrites)
|
|
72
|
+
return origin;
|
|
73
|
+
const candidates = [];
|
|
74
|
+
for (const line of rewrites.split(/\r?\n/u)) {
|
|
75
|
+
const match = /^url\.(.+)\.insteadof\s+(.+)$/iu.exec(line);
|
|
76
|
+
if (match?.[1] && match[2] && origin.startsWith(match[2])) {
|
|
77
|
+
candidates.push({ base: match[1], prefix: match[2] });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
candidates.sort((left, right) => right.prefix.length - left.prefix.length);
|
|
81
|
+
const match = candidates[0];
|
|
82
|
+
return match ? `${match.base}${origin.slice(match.prefix.length)}` : origin;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=github-setup-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-setup-status.js","sourceRoot":"","sources":["../../src/services/github-setup-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-setup-status.test.d.ts","sourceRoot":"","sources":["../../src/services/github-setup-status.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { inspectGitHubSetup, isGitHubUrl } from "./github-setup-status.js";
|
|
3
|
+
describe("GitHub setup inspection", () => {
|
|
4
|
+
it("keeps installation onboarding pending when Git is unavailable", async () => {
|
|
5
|
+
await expect(inspectGitHubSetup("C:/project", async () => null)).resolves.toEqual({
|
|
6
|
+
configured: false,
|
|
7
|
+
reason: "git-unavailable",
|
|
8
|
+
});
|
|
9
|
+
await expect(inspectGitHubSetup("C:/project", async () => "unexpected executable output")).resolves.toEqual({ configured: false, reason: "git-unavailable" });
|
|
10
|
+
});
|
|
11
|
+
it("requires a local identity and GitHub origin without requiring a commit", async () => {
|
|
12
|
+
const withoutIdentity = runner({
|
|
13
|
+
"--version": "git version 2.50.0",
|
|
14
|
+
"rev-parse --is-inside-work-tree": "true",
|
|
15
|
+
"remote get-url origin": "git@github.com:zaip-ai/example.git",
|
|
16
|
+
});
|
|
17
|
+
await expect(inspectGitHubSetup("C:/project", withoutIdentity)).resolves.toEqual({
|
|
18
|
+
configured: false,
|
|
19
|
+
reason: "identity-missing",
|
|
20
|
+
});
|
|
21
|
+
const configuredWithoutHead = runner({
|
|
22
|
+
"--version": "git version 2.50.0",
|
|
23
|
+
"rev-parse --is-inside-work-tree": "true",
|
|
24
|
+
"config --get user.name": "ZAIP",
|
|
25
|
+
"config --get user.email": "team@example.test",
|
|
26
|
+
"remote get-url origin": "git@github.com:zaip-ai/example.git",
|
|
27
|
+
});
|
|
28
|
+
await expect(inspectGitHubSetup("C:/project", configuredWithoutHead)).resolves.toEqual({
|
|
29
|
+
configured: true,
|
|
30
|
+
reason: "configured",
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
it("recognizes direct and Git-config verified alias GitHub URLs", async () => {
|
|
34
|
+
expect(isGitHubUrl("https://github.com/zaip-ai/example.git")).toBe(true);
|
|
35
|
+
expect(isGitHubUrl("git@github.com:zaip-ai/example.git")).toBe(true);
|
|
36
|
+
expect(isGitHubUrl("https://gitlab.com/zaip-ai/example.git")).toBe(false);
|
|
37
|
+
expect(isGitHubUrl("https://github.com/")).toBe(false);
|
|
38
|
+
expect(isGitHubUrl("https://github.com/zaip-ai/../example.git")).toBe(false);
|
|
39
|
+
expect(isGitHubUrl("https://github.com.example/zaip-ai/example.git")).toBe(false);
|
|
40
|
+
const alias = runner({
|
|
41
|
+
"--version": "git version 2.50.0",
|
|
42
|
+
"rev-parse --is-inside-work-tree": "true",
|
|
43
|
+
"config --get user.name": "ZAIP",
|
|
44
|
+
"config --get user.email": "team@example.test",
|
|
45
|
+
"remote get-url origin": "git@github-work:zaip-ai/example.git",
|
|
46
|
+
"config --get-regexp ^url\\..*\\.insteadOf$": "url.git@github.com:.insteadof git@github-work:",
|
|
47
|
+
});
|
|
48
|
+
await expect(inspectGitHubSetup("C:/project", alias)).resolves.toEqual({
|
|
49
|
+
configured: true,
|
|
50
|
+
reason: "configured",
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
function runner(values) {
|
|
55
|
+
return async (_directory, arguments_) => values[arguments_.join(" ")] ?? null;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=github-setup-status.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-setup-status.test.js","sourceRoot":"","sources":["../../src/services/github-setup-status.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import type { Writable } from "node:stream";
|
|
2
2
|
import type { InitResult } from "../types.js";
|
|
3
|
-
|
|
3
|
+
import type { DoctorResult } from "./doctor.js";
|
|
4
|
+
import type { GitHubSetupStatus } from "./github-setup-status.js";
|
|
5
|
+
import type { SqliteBootstrapResult } from "./sqlite-bootstrap.js";
|
|
6
|
+
interface SuccessfulInstallSummary {
|
|
7
|
+
sqlite: SqliteBootstrapResult;
|
|
8
|
+
doctor: DoctorResult;
|
|
9
|
+
github: GitHubSetupStatus;
|
|
10
|
+
}
|
|
11
|
+
export declare function printResult(stream: Writable, result: InitResult, version: string, verbose?: boolean, successfulInstall?: SuccessfulInstallSummary): void;
|
|
12
|
+
export {};
|
|
4
13
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,UAAU,wBAAwB;IAChC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,UAAQ,EACf,iBAAiB,CAAC,EAAE,wBAAwB,GAC3C,IAAI,CA8DN"}
|
package/dist/services/logger.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function printResult(stream, result, version, verbose = false) {
|
|
1
|
+
export function printResult(stream, result, version, verbose = false, successfulInstall) {
|
|
2
2
|
write(stream, `Zaip-AIOS CLI v${version}\n\n`);
|
|
3
3
|
write(stream, result.gitRootFound
|
|
4
4
|
? `✓ Projeto Git encontrado: ${result.root}\n`
|
|
@@ -30,11 +30,28 @@ export function printResult(stream, result, version, verbose = false) {
|
|
|
30
30
|
printPaths(stream, "Divergentes", result.conflicts);
|
|
31
31
|
printPaths(stream, "Substituídos", result.overwritten);
|
|
32
32
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
if (!result.applied && result.conflicts.length > 0 && !result.dryRun) {
|
|
34
|
+
write(stream, "\nInstalação bloqueada antes de qualquer alteração. Resolva os conflitos ou use --force --yes após revisar o backup planejado.\n");
|
|
35
|
+
}
|
|
36
|
+
else if (result.dryRun) {
|
|
37
|
+
write(stream, "\nPlano concluído. Remova --dry-run para aplicar.\n");
|
|
38
|
+
}
|
|
39
|
+
else if (successfulInstall !== undefined) {
|
|
40
|
+
printSuccessfulInstall(stream, result, version, successfulInstall);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function printSuccessfulInstall(stream, result, version, summary) {
|
|
44
|
+
const npmVersion = encodeURIComponent(version);
|
|
45
|
+
write(stream, "\nZAIP-AIOS foi instalado com sucesso no projeto atual.\n");
|
|
46
|
+
write(stream, `- Versão instalada: [${version}](https://www.npmjs.com/package/@zaip-ai/cli/v/${npmVersion})\n`);
|
|
47
|
+
write(stream, `- ${result.created.length} arquivos adicionados\n`);
|
|
48
|
+
write(stream, `- ${result.existing.length} arquivos existentes preservados\n`);
|
|
49
|
+
write(stream, `- ${result.overwritten.length} arquivos sobrescritos\n`);
|
|
50
|
+
write(stream, `- Dashboard SQLite configurado: ${summary.sqlite.path} (${summary.sqlite.cache})\n`);
|
|
51
|
+
write(stream, `- doctor --json: ${summary.doctor.valid ? "válido, sem problemas" : "inválido"}\n`);
|
|
52
|
+
write(stream, summary.github.configured
|
|
53
|
+
? "- GitHub: configuração local encontrada; a autenticação não foi verificada.\n\nGostaria de ajuda com a configuração inicial do projeto?\n"
|
|
54
|
+
: "- GitHub: configuração pendente. Você pode configurar o GitHub depois.\n\nGostaria de ajuda para configurar o GitHub?\n");
|
|
38
55
|
}
|
|
39
56
|
function printPaths(stream, label, paths) {
|
|
40
57
|
if (paths.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { PassThrough } from "node:stream";
|
|
|
2
2
|
import { describe, expect, it } from "vitest";
|
|
3
3
|
import { printResult } from "./logger.js";
|
|
4
4
|
describe("printResult", () => {
|
|
5
|
-
it("
|
|
5
|
+
it("prints an installed-version npm link and the pending GitHub CTA", () => {
|
|
6
6
|
const output = new PassThrough();
|
|
7
7
|
let text = "";
|
|
8
8
|
output.on("data", (chunk) => {
|
|
@@ -18,10 +18,14 @@ describe("printResult", () => {
|
|
|
18
18
|
backupPath: null,
|
|
19
19
|
dryRun: false,
|
|
20
20
|
applied: true,
|
|
21
|
-
}, "
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
}, "3.1.0", false, {
|
|
22
|
+
sqlite: { path: ".agents/dashboard/data/zaip.db", cache: "created", schema: {} },
|
|
23
|
+
doctor: { root: "C:/work/project", valid: true, findings: [] },
|
|
24
|
+
github: { configured: false, reason: "git-unavailable" },
|
|
25
|
+
});
|
|
26
|
+
expect(text).toContain("[3.1.0](https://www.npmjs.com/package/@zaip-ai/cli/v/3.1.0)");
|
|
27
|
+
expect(text).toContain("doctor --json: válido, sem problemas");
|
|
28
|
+
expect(text.trimEnd()).toMatch(/Gostaria de ajuda para configurar o GitHub\?$/u);
|
|
25
29
|
});
|
|
26
30
|
it("guides a safe retry without advising a catalog copy when global reconciliation fails", () => {
|
|
27
31
|
const output = new PassThrough();
|
|
@@ -83,5 +87,29 @@ describe("printResult", () => {
|
|
|
83
87
|
expect(text).toContain("2 registros removidos");
|
|
84
88
|
expect(text).not.toContain("Catálogo global legado do Codex instalado");
|
|
85
89
|
});
|
|
90
|
+
it("ends configured GitHub installations with the project setup CTA", () => {
|
|
91
|
+
const output = new PassThrough();
|
|
92
|
+
let text = "";
|
|
93
|
+
output.on("data", (chunk) => {
|
|
94
|
+
text += chunk.toString("utf8");
|
|
95
|
+
});
|
|
96
|
+
printResult(output, {
|
|
97
|
+
root: "C:/work/project",
|
|
98
|
+
gitRootFound: true,
|
|
99
|
+
created: ["a"],
|
|
100
|
+
existing: ["b"],
|
|
101
|
+
conflicts: [],
|
|
102
|
+
overwritten: ["c"],
|
|
103
|
+
backupPath: null,
|
|
104
|
+
dryRun: false,
|
|
105
|
+
applied: true,
|
|
106
|
+
}, "3.2.0", false, {
|
|
107
|
+
sqlite: { path: ".agents/dashboard/data/zaip.db", cache: "reused", schema: {} },
|
|
108
|
+
doctor: { root: "C:/work/project", valid: true, findings: [] },
|
|
109
|
+
github: { configured: true, reason: "configured" },
|
|
110
|
+
});
|
|
111
|
+
expect(text).toContain("1 arquivos adicionados");
|
|
112
|
+
expect(text.trimEnd()).toMatch(/Gostaria de ajuda com a configuração inicial do projeto\?$/u);
|
|
113
|
+
});
|
|
86
114
|
});
|
|
87
115
|
//# sourceMappingURL=logger.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../../src/services/logger.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../../src/services/logger.test.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Readable, Writable } from "node:stream";
|
|
2
|
+
import type { GitRunner } from "./services/github-setup-status.js";
|
|
2
3
|
import type { PackageRunner } from "./services/stack-package-manager.js";
|
|
3
4
|
export interface InitOptions {
|
|
4
5
|
directory?: string;
|
|
@@ -47,5 +48,7 @@ export interface CliRuntime {
|
|
|
47
48
|
stderr?: Writable;
|
|
48
49
|
templateDirectory?: string;
|
|
49
50
|
now?: () => Date;
|
|
51
|
+
/** Injectable local Git inspection for deterministic CLI onboarding tests. */
|
|
52
|
+
githubSetupRunner?: GitRunner;
|
|
50
53
|
}
|
|
51
54
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEzE,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEzE,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,SAAS,CAAC;CAC/B"}
|
package/package.json
CHANGED
|
@@ -355,6 +355,10 @@ indicators that exclude drafts.
|
|
|
355
355
|
|
|
356
356
|
## Quality and evidence
|
|
357
357
|
|
|
358
|
+
The [v3 delivery matrix](https://github.com/zaip-ai/zaip-aios/blob/main/docs/quality/v3-delivery-status.md) distinguishes
|
|
359
|
+
implemented improvements, candidate evidence and superseded historical work.
|
|
360
|
+
Publication does not prove savings or retroactively approve the old benchmark.
|
|
361
|
+
|
|
358
362
|
Quality is part of the definition of done. Each delivery combines tests, review, and checks proportionate to its risk, with objective proof of Acceptance Criteria. Evidence connects approved validations to the Task, Change, Execution, Run, Acceptance Criteria, and candidate. The [review guide](zaip-aios/guides/07-revisao-e-validacao.md) explains how to record the procedure actually executed and its result.
|
|
359
363
|
|
|
360
364
|
The current contract adds `confirmed`, `limited`, `pending`, `failed`, and `not_applicable` observations without replacing Validation/Evidence V2. The CLI validates structure and links; it does not run the declared command, inspect images, or query services automatically. Technical proof is not equivalent to visual proof, real integration, or production proof. Isolated or pending observations do not approve a delivery.
|
|
@@ -722,7 +726,7 @@ pnpm build
|
|
|
722
726
|
|
|
723
727
|
Before integrating a relevant change or preparing a release, `pnpm verify` runs the complete repository pipeline, including additional tool, contract, generation, workspace, runtime-parity, and release-test gates. This pipeline only validates the lock; if a managed file was intentionally changed, run sync first. Use the pnpm version fixed in `packageManager` (`corepack pnpm` when available). For a bounded change, choose checks appropriate to its risk and diff; the list does not require repeating every test for each documentation edit. Release qualification uses the complete gates in [guide 26](zaip-aios/guides/26-qualidade-e-release.md) on the exact candidate. Do not conflate `validate:github:prepared`, local execution, push, and a green terminal CI.
|
|
724
728
|
|
|
725
|
-
This checkout's manifests identify candidate `3.
|
|
729
|
+
This checkout's manifests identify candidate `3.2.0` (product `3.2`). Candidate identity does not mean `latest` has been published or certify production. Release requires the exact revision, terminal CI, TGZ integrity, and a real artifact installation. Attempts and limitations remain in the Change evidence; local results and publication are distinct states.
|
|
726
730
|
|
|
727
731
|
The detailed architecture is summarized in this README's [Application architecture](#application-architecture) section.
|
|
728
732
|
|
|
@@ -376,6 +376,10 @@ trabalho, fora do Kanban executável e dos indicadores operacionais sem rascunho
|
|
|
376
376
|
|
|
377
377
|
## Qualidade e evidências
|
|
378
378
|
|
|
379
|
+
A [matriz de entrega da linha v3](https://github.com/zaip-ai/zaip-aios/blob/main/docs/quality/v3-delivery-status.md) distingue
|
|
380
|
+
melhorias implementadas, provas do candidato e tarefas históricas substituídas.
|
|
381
|
+
Publicação não comprova economia nem conclui retroativamente o benchmark antigo.
|
|
382
|
+
|
|
379
383
|
Qualidade faz parte da definição de pronto. Cada entrega combina testes, revisão e checks proporcionais ao seu risco, com comprovação objetiva dos Critérios de Aceite.
|
|
380
384
|
|
|
381
385
|
As Evidence conectam validações aprovadas à Task, Change, Execution, Run, Critérios de Aceite e candidato. O [guia de revisão](zaip-aios/guides/07-revisao-e-validacao.md) explica como registrar o procedimento realmente executado e seu resultado.
|
|
@@ -757,7 +761,7 @@ Antes de integrar uma mudança relevante ou preparar um release, `pnpm verify` e
|
|
|
757
761
|
|
|
758
762
|
Use a versão de pnpm fixada em `packageManager` (`corepack pnpm` quando disponível). Para uma alteração delimitada, selecione os checks pertinentes ao risco e ao diff; a lista acima não exige repetir todos os testes a cada edição documental. Qualificação de release usa os gates completos do [guia 26](zaip-aios/guides/26-qualidade-e-release.md) no candidato exato. Não confunda `validate:github:prepared`, execução local, push e CI terminal verde.
|
|
759
763
|
|
|
760
|
-
Os manifests deste checkout registram o candidato `3.
|
|
764
|
+
Os manifests deste checkout registram o candidato `3.2.0` (produto `3.2`). A identificação do candidato não significa que o `latest` já foi publicado nem certifica produção. A release exige revisão exata, CI terminal, integridade do TGZ e instalação real do artefato. Tentativas e limitações ficam nas evidências da Change; resultados locais e publicação são estados distintos.
|
|
761
765
|
|
|
762
766
|
A arquitetura detalhada está resumida na seção [Arquitetura das aplicações](#arquitetura-das-aplicações) deste README.
|
|
763
767
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_zaip_managed": "zaip-managed generated-do-not-edit source=agent-discovery version=3.
|
|
2
|
+
"_zaip_managed": "zaip-managed generated-do-not-edit source=agent-discovery version=3.2.0 sha256=a44942a0f46acb69ef70da671c8a2eb1cae985abf30fa7dcad59cab4bfbd1034",
|
|
3
3
|
"schema_version": 1,
|
|
4
4
|
"source": {
|
|
5
5
|
"path": ".agents/config/agents/catalog.yaml",
|