@zaip-ai/cli 0.1.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/LICENSE +5 -0
- package/README.md +74 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +41 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/services/find-project-root.d.ts +6 -0
- package/dist/services/find-project-root.d.ts.map +1 -0
- package/dist/services/find-project-root.js +29 -0
- package/dist/services/find-project-root.js.map +1 -0
- package/dist/services/install-agents-template.d.ts +3 -0
- package/dist/services/install-agents-template.d.ts.map +1 -0
- package/dist/services/install-agents-template.js +188 -0
- package/dist/services/install-agents-template.js.map +1 -0
- package/dist/services/logger.d.ts +4 -0
- package/dist/services/logger.d.ts.map +1 -0
- package/dist/services/logger.js +40 -0
- package/dist/services/logger.js.map +1 -0
- package/dist/services/template-manifest.d.ts +23 -0
- package/dist/services/template-manifest.d.ts.map +1 -0
- package/dist/services/template-manifest.js +77 -0
- package/dist/services/template-manifest.js.map +1 -0
- package/dist/types.d.ts +32 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +43 -0
- package/templates/.agents/config/framework.lock.yaml +1 -0
- package/templates/.agents/config/project.yaml +15 -0
- package/templates/.agents/data/changes/.gitkeep +0 -0
- package/templates/.agents/data/executions/.gitkeep +0 -0
- package/templates/.agents/data/prds/.gitkeep +0 -0
- package/templates/.agents/data/runs/.gitkeep +0 -0
- package/templates/.agents/data/specs/.gitkeep +0 -0
- package/templates/.agents/data/tasks/.gitkeep +0 -0
- package/templates/.agents/requirements/context-engine.md +20 -0
- package/templates/.agents/requirements/cost-observability.md +20 -0
- package/templates/.agents/requirements/execution-engine.md +35 -0
- package/templates/.agents/requirements/kanban-dashboard.md +21 -0
- package/templates/.agents/requirements/work-lifecycle.md +27 -0
- package/templates/.agents/rules/architecture.md +21 -0
- package/templates/.agents/rules/context.md +18 -0
- package/templates/.agents/rules/core.md +16 -0
- package/templates/.agents/rules/security.md +20 -0
- package/templates/.agents/rules/workflow.md +21 -0
- package/templates/.agents/skills/zaip-skill-adapt-stack/SKILL.md +11 -0
- package/templates/.agents/skills/zaip-skill-adapt-stack/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-adapters/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-adapters/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-context/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-context/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-cqrs/SKILL.md +11 -0
- package/templates/.agents/skills/zaip-skill-cqrs/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-decisions/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-decisions/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-enforce-architecture/SKILL.md +11 -0
- package/templates/.agents/skills/zaip-skill-enforce-architecture/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-eval/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-eval/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +84 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/agents/openai.yaml +6 -0
- package/templates/.agents/skills/zaip-skill-github-setup/SKILL.md +80 -0
- package/templates/.agents/skills/zaip-skill-github-setup/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-navigate-work/SKILL.md +13 -0
- package/templates/.agents/skills/zaip-skill-navigate-work/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-prd/SKILL.md +13 -0
- package/templates/.agents/skills/zaip-skill-prd/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-requirements/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-requirements/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-setup/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-setup/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-spec/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-spec/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-task/SKILL.md +13 -0
- package/templates/.agents/skills/zaip-skill-task/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-text-encoding/SKILL.md +27 -0
- package/templates/.agents/skills/zaip-skill-text-encoding/agents/openai.yaml +6 -0
- package/templates/template-manifest.json +208 -0
package/LICENSE
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# @zaip-ai/cli
|
|
2
|
+
|
|
3
|
+
```bash
|
|
4
|
+
npx @zaip-ai/cli@latest init
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Or use the npm initializer:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm create zaip-aios@latest
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Global installation is also supported:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install --global @zaip-ai/cli
|
|
17
|
+
zaip init
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
The CLI requires Node.js 22 or newer. It finds the nearest Git root from the selected directory;
|
|
21
|
+
outside Git it installs into that directory and reports the fallback. Windows, macOS, Linux, CI,
|
|
22
|
+
Git worktrees, and paths containing spaces are supported using Node.js filesystem APIs only.
|
|
23
|
+
|
|
24
|
+
## Commands and flags
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
zaip init [directory] [--yes] [--force] [--dry-run] [--verbose]
|
|
28
|
+
zaip --version
|
|
29
|
+
zaip --help
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
- `--yes` confirms the destructive phase of `--force` without an interactive prompt.
|
|
33
|
+
- `--force` backs up the current `.agents` directory, then reinstalls the official template.
|
|
34
|
+
- `--dry-run` prints the complete plan without writing files or backups.
|
|
35
|
+
- `--verbose` lists technical paths and detected conflicts.
|
|
36
|
+
|
|
37
|
+
By default, rerunning the command adds missing files, preserves every existing file, and reports
|
|
38
|
+
files whose content differs from the current official template. No existing file is overwritten.
|
|
39
|
+
|
|
40
|
+
## Updating
|
|
41
|
+
|
|
42
|
+
Run the latest version again. New files are added while local changes remain untouched:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npx @zaip-ai/cli@latest init
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Use `--force --yes` only when you want a clean reinstall. A timestamped backup such as
|
|
49
|
+
`.agents.backup-2026-07-12T153000` is created first.
|
|
50
|
+
|
|
51
|
+
## Security
|
|
52
|
+
|
|
53
|
+
The npm artifact contains only the installer, the public template, documentation, and license.
|
|
54
|
+
Template hashes are checked before installation. Unsafe paths and symlink traversal are rejected.
|
|
55
|
+
The template excludes project history, telemetry, customer data, credentials, environment files,
|
|
56
|
+
and the internal ZAIP-AIOS runtime.
|
|
57
|
+
|
|
58
|
+
## Troubleshooting
|
|
59
|
+
|
|
60
|
+
- `Target is not a directory`: pass an existing directory.
|
|
61
|
+
- `--force requires --yes in a non-interactive terminal`: add `--yes`, or rerun interactively.
|
|
62
|
+
- `Template integrity check failed`: reinstall the package from npm and retry.
|
|
63
|
+
- Permission errors: run in a writable repository; do not use elevated privileges unnecessarily.
|
|
64
|
+
|
|
65
|
+
## ZAIP-AIOS versus the ZAIP CLI
|
|
66
|
+
|
|
67
|
+
ZAIP-AIOS is the repository-resident agent workflow and configuration installed under `.agents`.
|
|
68
|
+
The ZAIP CLI is the small delivery tool that installs that public template; it does not contain the
|
|
69
|
+
private ZAIP core or send repository data to a service.
|
|
70
|
+
|
|
71
|
+
## Contributing and license
|
|
72
|
+
|
|
73
|
+
Run `corepack pnpm verify` from `public-cli` before submitting a change. Version `0.1.0` is
|
|
74
|
+
`UNLICENSED`; publication does not grant an open-source license.
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CliRuntime, InitResult } from "../types.js";
|
|
2
|
+
export interface InitCommandOptions {
|
|
3
|
+
yes?: boolean;
|
|
4
|
+
force?: boolean;
|
|
5
|
+
dryRun?: boolean;
|
|
6
|
+
verbose?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function executeInit(directory: string | undefined, command: InitCommandOptions, version: string, runtime?: CliRuntime): Promise<InitResult>;
|
|
9
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,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;CACnB;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,CAuBrB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createInterface } from "node:readline/promises";
|
|
2
|
+
import { installAgentsTemplate } from "../services/install-agents-template.js";
|
|
3
|
+
import { printResult } from "../services/logger.js";
|
|
4
|
+
export async function executeInit(directory, command, version, runtime = {}) {
|
|
5
|
+
const stdin = runtime.stdin ?? process.stdin;
|
|
6
|
+
const stdout = runtime.stdout ?? process.stdout;
|
|
7
|
+
const options = {
|
|
8
|
+
cwd: runtime.cwd ?? process.cwd(),
|
|
9
|
+
yes: command.yes ?? false,
|
|
10
|
+
force: command.force ?? false,
|
|
11
|
+
dryRun: command.dryRun ?? false,
|
|
12
|
+
verbose: command.verbose ?? false,
|
|
13
|
+
...(directory === undefined ? {} : { directory }),
|
|
14
|
+
...(runtime.templateDirectory === undefined
|
|
15
|
+
? {}
|
|
16
|
+
: { templateDirectory: runtime.templateDirectory }),
|
|
17
|
+
...(runtime.now === undefined ? {} : { now: runtime.now() }),
|
|
18
|
+
};
|
|
19
|
+
if (command.force && !command.yes) {
|
|
20
|
+
options.confirmForce = confirmation(stdin, stdout);
|
|
21
|
+
}
|
|
22
|
+
const result = await installAgentsTemplate(options);
|
|
23
|
+
printResult(stdout, result, version, command.verbose);
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
function confirmation(stdin, stdout) {
|
|
27
|
+
return async (message) => {
|
|
28
|
+
if (!stdin.isTTY) {
|
|
29
|
+
throw new Error("--force requires --yes in a non-interactive terminal");
|
|
30
|
+
}
|
|
31
|
+
const prompt = createInterface({ input: stdin, output: stdout });
|
|
32
|
+
try {
|
|
33
|
+
const answer = await prompt.question(`${message} [y/N] `);
|
|
34
|
+
return /^(?:y|yes)$/i.test(answer.trim());
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
prompt.close();
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAUpD,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,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,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACpD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CliRuntime, InitOptions, InitResult } from "./types.js";
|
|
2
|
+
export declare const CLI_VERSION = "0.1.0";
|
|
3
|
+
export { findProjectRoot } from "./services/find-project-root.js";
|
|
4
|
+
export { installAgentsTemplate } from "./services/install-agents-template.js";
|
|
5
|
+
export { loadTemplate } from "./services/template-manifest.js";
|
|
6
|
+
export type { CliRuntime, InitOptions, InitResult } from "./types.js";
|
|
7
|
+
export declare function initializeZaip(options?: InitOptions): Promise<InitResult>;
|
|
8
|
+
export declare function runInitCli(arguments_: readonly string[], runtime?: CliRuntime): Promise<number>;
|
|
9
|
+
export declare function runCli(arguments_: readonly string[], runtime?: CliRuntime): Promise<number>;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,wBAAsB,cAAc,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAEnF;AAED,wBAAsB,UAAU,CAC9B,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAsB,MAAM,CAC1B,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CA2BjB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Command, CommanderError } from "commander";
|
|
2
|
+
import { executeInit } from "./commands/init.js";
|
|
3
|
+
import { installAgentsTemplate } from "./services/install-agents-template.js";
|
|
4
|
+
export const CLI_VERSION = "0.1.0";
|
|
5
|
+
export { findProjectRoot } from "./services/find-project-root.js";
|
|
6
|
+
export { installAgentsTemplate } from "./services/install-agents-template.js";
|
|
7
|
+
export { loadTemplate } from "./services/template-manifest.js";
|
|
8
|
+
export async function initializeZaip(options = {}) {
|
|
9
|
+
return installAgentsTemplate(options);
|
|
10
|
+
}
|
|
11
|
+
export async function runInitCli(arguments_, runtime = {}) {
|
|
12
|
+
return runCli(["init", ...arguments_], runtime);
|
|
13
|
+
}
|
|
14
|
+
export async function runCli(arguments_, runtime = {}) {
|
|
15
|
+
const stdout = runtime.stdout ?? process.stdout;
|
|
16
|
+
const stderr = runtime.stderr ?? process.stderr;
|
|
17
|
+
if (arguments_.length === 0) {
|
|
18
|
+
const program = createProgram(runtime);
|
|
19
|
+
program.configureOutput({
|
|
20
|
+
writeOut: (value) => stdout.write(value),
|
|
21
|
+
writeErr: (value) => stderr.write(value),
|
|
22
|
+
});
|
|
23
|
+
program.outputHelp();
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
const program = createProgram(runtime);
|
|
27
|
+
program.configureOutput({
|
|
28
|
+
writeOut: (value) => stdout.write(value),
|
|
29
|
+
writeErr: (value) => stderr.write(value),
|
|
30
|
+
});
|
|
31
|
+
program.exitOverride();
|
|
32
|
+
try {
|
|
33
|
+
await program.parseAsync(["node", "zaip", ...arguments_]);
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
if (error instanceof CommanderError)
|
|
38
|
+
return error.exitCode;
|
|
39
|
+
stderr.write(`Erro: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
40
|
+
return 1;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function createProgram(runtime) {
|
|
44
|
+
const program = new Command()
|
|
45
|
+
.name("zaip")
|
|
46
|
+
.description("Instala e configura o ZAIP-AIOS em um repositório")
|
|
47
|
+
.version(CLI_VERSION);
|
|
48
|
+
program
|
|
49
|
+
.command("init")
|
|
50
|
+
.description("Instala o template oficial .agents")
|
|
51
|
+
.argument("[directory]", "diretório inicial; por padrão usa o diretório atual")
|
|
52
|
+
.option("-y, --yes", "confirma operações sem prompt interativo")
|
|
53
|
+
.option("-f, --force", "cria backup e reinstala o template")
|
|
54
|
+
.option("--dry-run", "mostra o plano sem alterar arquivos")
|
|
55
|
+
.option("--verbose", "mostra detalhes técnicos")
|
|
56
|
+
.action(async (directory, options) => {
|
|
57
|
+
await executeInit(directory, options, CLI_VERSION, runtime);
|
|
58
|
+
});
|
|
59
|
+
return program;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-project-root.d.ts","sourceRoot":"","sources":["../../src/services/find-project-root.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAcnF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { lstat, stat } from "node:fs/promises";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
export async function findProjectRoot(directory) {
|
|
4
|
+
const start = resolve(directory);
|
|
5
|
+
const info = await stat(start).catch(() => null);
|
|
6
|
+
if (info === null || !info.isDirectory()) {
|
|
7
|
+
throw new Error(`Target is not a directory: ${start}`);
|
|
8
|
+
}
|
|
9
|
+
let current = start;
|
|
10
|
+
while (true) {
|
|
11
|
+
if (await exists(`${current}/.git`))
|
|
12
|
+
return { root: current, gitRootFound: true };
|
|
13
|
+
const parent = dirname(current);
|
|
14
|
+
if (parent === current)
|
|
15
|
+
return { root: start, gitRootFound: false };
|
|
16
|
+
current = parent;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async function exists(path) {
|
|
20
|
+
return lstat(path).then(() => true, (error) => {
|
|
21
|
+
if (isNotFound(error))
|
|
22
|
+
return false;
|
|
23
|
+
throw error;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function isNotFound(error) {
|
|
27
|
+
return error instanceof Error && "code" in error && error.code === "ENOENT";
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=find-project-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-project-root.js","sourceRoot":"","sources":["../../src/services/find-project-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAO7C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAiB;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,MAAM,MAAM,CAAC,GAAG,OAAO,OAAO,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAClF,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QACpE,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CACrB,GAAG,EAAE,CAAC,IAAI,EACV,CAAC,KAAc,EAAE,EAAE;QACjB,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,KAAK,CAAC;IACd,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-agents-template.d.ts","sourceRoot":"","sources":["../../src/services/install-agents-template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAc3D,wBAAsB,qBAAqB,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAyD1F"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { constants } from "node:fs";
|
|
2
|
+
import { access, cp, lstat, mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { basename, dirname, join, relative, resolve, sep } from "node:path";
|
|
4
|
+
import { findProjectRoot } from "./find-project-root.js";
|
|
5
|
+
import { loadTemplate, sha256, validateTemplatePath, } from "./template-manifest.js";
|
|
6
|
+
export async function installAgentsTemplate(options = {}) {
|
|
7
|
+
const cwd = resolve(options.cwd ?? process.cwd());
|
|
8
|
+
const requested = resolve(cwd, options.directory ?? ".");
|
|
9
|
+
const project = await findProjectRoot(requested);
|
|
10
|
+
await access(project.root, constants.W_OK);
|
|
11
|
+
const template = await loadTemplate(options.templateDirectory);
|
|
12
|
+
const rendered = renderTemplate(template.files, basename(project.root));
|
|
13
|
+
const agentsPath = join(project.root, ".agents");
|
|
14
|
+
const agentsExists = await pathExists(agentsPath);
|
|
15
|
+
if (agentsExists)
|
|
16
|
+
await assertNotSymlink(agentsPath);
|
|
17
|
+
const created = [];
|
|
18
|
+
const existing = [];
|
|
19
|
+
const conflicts = [];
|
|
20
|
+
const overwritten = [];
|
|
21
|
+
for (const file of rendered) {
|
|
22
|
+
validateTemplatePath(file.path);
|
|
23
|
+
await assertSafeDestination(project.root, file.path);
|
|
24
|
+
const destination = resolve(project.root, file.path);
|
|
25
|
+
const current = await readFile(destination, "utf8").catch((error) => {
|
|
26
|
+
if (isNotFound(error))
|
|
27
|
+
return null;
|
|
28
|
+
throw error;
|
|
29
|
+
});
|
|
30
|
+
if (current === null)
|
|
31
|
+
created.push(file.path);
|
|
32
|
+
else if (current === file.content)
|
|
33
|
+
existing.push(file.path);
|
|
34
|
+
else if (options.force)
|
|
35
|
+
overwritten.push(file.path);
|
|
36
|
+
else
|
|
37
|
+
conflicts.push(file.path);
|
|
38
|
+
}
|
|
39
|
+
const backupPath = options.force && agentsExists ? await availableBackupPath(project.root, options.now) : null;
|
|
40
|
+
if (options.force && agentsExists && !options.dryRun && options.yes !== true) {
|
|
41
|
+
if (options.confirmForce === undefined) {
|
|
42
|
+
throw new Error("--force requires --yes in a non-interactive terminal");
|
|
43
|
+
}
|
|
44
|
+
const confirmed = await options.confirmForce(`Create backup ${basename(backupPath)} and reinstall .agents?`);
|
|
45
|
+
if (!confirmed)
|
|
46
|
+
throw new Error("Installation cancelled by user");
|
|
47
|
+
}
|
|
48
|
+
if (options.dryRun) {
|
|
49
|
+
return result(project, created, existing, conflicts, overwritten, backupPath, true, false);
|
|
50
|
+
}
|
|
51
|
+
if (options.force && agentsExists) {
|
|
52
|
+
await forceInstall(project.root, agentsPath, backupPath, rendered);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
await additiveInstall(project.root, rendered.filter((file) => created.includes(file.path)));
|
|
56
|
+
}
|
|
57
|
+
return result(project, created, existing, conflicts, overwritten, backupPath, false, true);
|
|
58
|
+
}
|
|
59
|
+
function renderTemplate(files, projectName) {
|
|
60
|
+
const projectId = normalizeProjectId(projectName);
|
|
61
|
+
const rendered = files
|
|
62
|
+
.filter((file) => file.path !== ".agents/config/framework.lock.yaml")
|
|
63
|
+
.map((file) => ({
|
|
64
|
+
path: file.path,
|
|
65
|
+
content: file.content
|
|
66
|
+
.replaceAll("{{PROJECT_NAME}}", yamlString(projectName))
|
|
67
|
+
.replaceAll("{{PROJECT_ID}}", yamlString(projectId)),
|
|
68
|
+
}));
|
|
69
|
+
const managed = rendered.filter((file) => !file.path.startsWith(".agents/config/"));
|
|
70
|
+
const lock = frameworkLock(managed);
|
|
71
|
+
rendered.push({ path: ".agents/config/framework.lock.yaml", content: lock });
|
|
72
|
+
return rendered.sort((left, right) => left.path.localeCompare(right.path));
|
|
73
|
+
}
|
|
74
|
+
function frameworkLock(files) {
|
|
75
|
+
const lines = [
|
|
76
|
+
"lock_version: 1",
|
|
77
|
+
"framework:",
|
|
78
|
+
' version: "0.2.0"',
|
|
79
|
+
" distribution_sha256: null",
|
|
80
|
+
"layout:",
|
|
81
|
+
" version: 2",
|
|
82
|
+
"resolved_profile:",
|
|
83
|
+
" id: typescript-hono-kysely",
|
|
84
|
+
" sha256: null",
|
|
85
|
+
"managed_files:",
|
|
86
|
+
];
|
|
87
|
+
for (const file of files) {
|
|
88
|
+
lines.push(` ${yamlString(file.path)}:`, ` sha256: ${sha256(file.content)}`);
|
|
89
|
+
}
|
|
90
|
+
return `${lines.join("\n")}\n`;
|
|
91
|
+
}
|
|
92
|
+
async function additiveInstall(root, files) {
|
|
93
|
+
const written = [];
|
|
94
|
+
try {
|
|
95
|
+
for (const file of files) {
|
|
96
|
+
const destination = resolve(root, file.path);
|
|
97
|
+
await mkdir(dirname(destination), { recursive: true });
|
|
98
|
+
await writeFile(destination, file.content, { encoding: "utf8", flag: "wx" });
|
|
99
|
+
written.push(destination);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
for (const path of written.reverse())
|
|
104
|
+
await rm(path, { force: true });
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async function forceInstall(root, agentsPath, backupPath, files) {
|
|
109
|
+
await cp(agentsPath, backupPath, { recursive: true, errorOnExist: true, force: false });
|
|
110
|
+
try {
|
|
111
|
+
await rm(agentsPath, { recursive: true, force: false });
|
|
112
|
+
await additiveInstall(root, files);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
await rm(agentsPath, { recursive: true, force: true });
|
|
116
|
+
await cp(backupPath, agentsPath, { recursive: true, errorOnExist: true, force: false });
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async function assertSafeDestination(root, portablePath) {
|
|
121
|
+
const destination = resolve(root, portablePath);
|
|
122
|
+
const prefix = `${resolve(root)}${sep}`;
|
|
123
|
+
if (!destination.startsWith(prefix))
|
|
124
|
+
throw new Error(`Destination escapes project root: ${portablePath}`);
|
|
125
|
+
const parts = portablePath.split("/");
|
|
126
|
+
let current = root;
|
|
127
|
+
for (const part of parts.slice(0, -1)) {
|
|
128
|
+
current = join(current, part);
|
|
129
|
+
const info = await lstat(current).catch((error) => {
|
|
130
|
+
if (isNotFound(error))
|
|
131
|
+
return null;
|
|
132
|
+
throw error;
|
|
133
|
+
});
|
|
134
|
+
if (info?.isSymbolicLink())
|
|
135
|
+
throw new Error(`Refusing to write through symlink: ${relative(root, current)}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
async function assertNotSymlink(path) {
|
|
139
|
+
if ((await lstat(path)).isSymbolicLink())
|
|
140
|
+
throw new Error("Refusing to replace a symlinked .agents path");
|
|
141
|
+
}
|
|
142
|
+
async function availableBackupPath(root, now = new Date()) {
|
|
143
|
+
const stamp = now.toISOString().slice(0, 19).replaceAll(":", "");
|
|
144
|
+
const base = resolve(root, `.agents.backup-${stamp}`);
|
|
145
|
+
if (!(await pathExists(base)))
|
|
146
|
+
return base;
|
|
147
|
+
for (let suffix = 2; suffix < 10_000; suffix += 1) {
|
|
148
|
+
const candidate = `${base}-${suffix}`;
|
|
149
|
+
if (!(await pathExists(candidate)))
|
|
150
|
+
return candidate;
|
|
151
|
+
}
|
|
152
|
+
throw new Error("Could not allocate a unique .agents backup path");
|
|
153
|
+
}
|
|
154
|
+
function normalizeProjectId(name) {
|
|
155
|
+
const normalized = name
|
|
156
|
+
.normalize("NFKD")
|
|
157
|
+
.replace(/[\u0300-\u036f]/g, "")
|
|
158
|
+
.toLowerCase()
|
|
159
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
160
|
+
.replace(/^-+|-+$/g, "");
|
|
161
|
+
return normalized || "zaip-project";
|
|
162
|
+
}
|
|
163
|
+
function yamlString(value) {
|
|
164
|
+
return JSON.stringify(value);
|
|
165
|
+
}
|
|
166
|
+
async function pathExists(path) {
|
|
167
|
+
return lstat(path).then(() => true, (error) => {
|
|
168
|
+
if (isNotFound(error))
|
|
169
|
+
return false;
|
|
170
|
+
throw error;
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
function isNotFound(error) {
|
|
174
|
+
return error instanceof Error && "code" in error && error.code === "ENOENT";
|
|
175
|
+
}
|
|
176
|
+
function result(project, created, existing, conflicts, overwritten, backupPath, dryRun, applied) {
|
|
177
|
+
return {
|
|
178
|
+
...project,
|
|
179
|
+
created: [...created].sort(),
|
|
180
|
+
existing: [...existing].sort(),
|
|
181
|
+
conflicts: [...conflicts].sort(),
|
|
182
|
+
overwritten: [...overwritten].sort(),
|
|
183
|
+
backupPath,
|
|
184
|
+
dryRun,
|
|
185
|
+
applied,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=install-agents-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-agents-template.js","sourceRoot":"","sources":["../../src/services/install-agents-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAEL,YAAY,EACZ,MAAM,EACN,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAOhC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAO,GAAgB,EAAE;IACnE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAE3C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,YAAY;QAAE,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAErD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC3E,IAAI,UAAU,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACnC,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzC,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvD,IAAI,OAAO,CAAC,KAAK;YAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAC/C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,UAAU,GACd,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9F,IAAI,OAAO,CAAC,KAAK,IAAI,YAAY,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QAC7E,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,YAAY,CAC1C,iBAAiB,QAAQ,CAAC,UAAoB,CAAC,yBAAyB,CACzE,CAAC;QACF,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7F,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,UAAoB,EAAE,QAAQ,CAAC,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,MAAM,eAAe,CACnB,OAAO,CAAC,IAAI,EACZ,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACvD,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,cAAc,CAAC,KAAoC,EAAE,WAAmB;IAC/E,MAAM,SAAS,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,KAAK;SACnB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,oCAAoC,CAAC;SACpE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACd,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;aAClB,UAAU,CAAC,kBAAkB,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;aACvD,UAAU,CAAC,gBAAgB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;KACvD,CAAC,CAAC,CAAC;IACN,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACpF,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oCAAoC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,aAAa,CAAC,KAA8B;IACnD,MAAM,KAAK,GAAG;QACZ,iBAAiB;QACjB,YAAY;QACZ,oBAAoB;QACpB,6BAA6B;QAC7B,SAAS;QACT,cAAc;QACd,mBAAmB;QACnB,8BAA8B;QAC9B,gBAAgB;QAChB,gBAAgB;KACjB,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,KAA8B;IACzE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,MAAM,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;YAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,IAAY,EACZ,UAAkB,EAClB,UAAkB,EAClB,KAA8B;IAE9B,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACxF,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,MAAM,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACxF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,IAAY,EAAE,YAAoB;IACrE,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IACxC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC;IAEvE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACzD,IAAI,UAAU,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACnC,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,EAAE,cAAc,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;IAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,kBAAkB,KAAK,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;IACvD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,UAAU,GAAG,IAAI;SACpB,SAAS,CAAC,MAAM,CAAC;SACjB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,UAAU,IAAI,cAAc,CAAC;AACtC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CACrB,GAAG,EAAE,CAAC,IAAI,EACV,CAAC,KAAc,EAAE,EAAE;QACjB,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,KAAK,CAAC;IACd,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC9E,CAAC;AAED,SAAS,MAAM,CACb,OAAgD,EAChD,OAA0B,EAC1B,QAA2B,EAC3B,SAA4B,EAC5B,WAA8B,EAC9B,UAAyB,EACzB,MAAe,EACf,OAAgB;IAEhB,OAAO;QACL,GAAG,OAAO;QACV,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE;QAC5B,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE;QAC9B,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE;QAChC,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,EAAE;QACpC,UAAU;QACV,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +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;AAE9C,wBAAgB,WAAW,CACzB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,UAAQ,GACd,IAAI,CA6CN"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export function printResult(stream, result, version, verbose = false) {
|
|
2
|
+
write(stream, `Zaip-AIOS CLI v${version}\n\n`);
|
|
3
|
+
write(stream, result.gitRootFound
|
|
4
|
+
? `✓ Projeto Git encontrado: ${result.root}\n`
|
|
5
|
+
: `ℹ Repositório Git não encontrado; usando: ${result.root}\n`);
|
|
6
|
+
write(stream, "✓ Template Zaip-AIOS carregado e verificado\n");
|
|
7
|
+
if (result.dryRun)
|
|
8
|
+
write(stream, "ℹ Dry-run: nenhuma alteração foi realizada\n");
|
|
9
|
+
if (result.backupPath !== null) {
|
|
10
|
+
write(stream, `${result.dryRun ? "ℹ Backup planejado" : "✓ Backup criado"}: ${result.backupPath}\n`);
|
|
11
|
+
}
|
|
12
|
+
write(stream, `✓ ${result.created.length} arquivos ausentes ${result.dryRun ? "seriam adicionados" : "foram adicionados"}\n`);
|
|
13
|
+
write(stream, `ℹ ${result.existing.length} arquivos existentes foram preservados\n`);
|
|
14
|
+
if (result.conflicts.length > 0) {
|
|
15
|
+
write(stream, `⚠ ${result.conflicts.length} arquivos possuem alterações locais e não foram sobrescritos\n`);
|
|
16
|
+
}
|
|
17
|
+
if (result.overwritten.length > 0) {
|
|
18
|
+
write(stream, `✓ ${result.overwritten.length} arquivos ${result.dryRun ? "seriam substituídos" : "foram substituídos"} com backup disponível\n`);
|
|
19
|
+
}
|
|
20
|
+
if (verbose) {
|
|
21
|
+
printPaths(stream, "Adicionados", result.created);
|
|
22
|
+
printPaths(stream, "Preservados", result.existing);
|
|
23
|
+
printPaths(stream, "Divergentes", result.conflicts);
|
|
24
|
+
printPaths(stream, "Substituídos", result.overwritten);
|
|
25
|
+
}
|
|
26
|
+
write(stream, result.dryRun
|
|
27
|
+
? "\nPlano concluído. Remova --dry-run para aplicar.\n"
|
|
28
|
+
: "\nZaip-AIOS foi configurado com sucesso.\n\nPróximos passos:\n 1. Revise .agents/config/project.yaml\n 2. Ajuste Rules e Requirements do projeto\n 3. Execute o agente desejado\n");
|
|
29
|
+
}
|
|
30
|
+
function printPaths(stream, label, paths) {
|
|
31
|
+
if (paths.length === 0)
|
|
32
|
+
return;
|
|
33
|
+
write(stream, `\n${label}:\n`);
|
|
34
|
+
for (const path of paths)
|
|
35
|
+
write(stream, ` - ${path}\n`);
|
|
36
|
+
}
|
|
37
|
+
function write(stream, value) {
|
|
38
|
+
stream.write(value);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,WAAW,CACzB,MAAgB,EAChB,MAAkB,EAClB,OAAe,EACf,OAAO,GAAG,KAAK;IAEf,KAAK,CAAC,MAAM,EAAE,kBAAkB,OAAO,MAAM,CAAC,CAAC;IAC/C,KAAK,CACH,MAAM,EACN,MAAM,CAAC,YAAY;QACjB,CAAC,CAAC,6BAA6B,MAAM,CAAC,IAAI,IAAI;QAC9C,CAAC,CAAC,6CAA6C,MAAM,CAAC,IAAI,IAAI,CACjE,CAAC;IACF,KAAK,CAAC,MAAM,EAAE,+CAA+C,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,MAAM;QAAE,KAAK,CAAC,MAAM,EAAE,8CAA8C,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAC/B,KAAK,CACH,MAAM,EACN,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,iBAAiB,KAAK,MAAM,CAAC,UAAU,IAAI,CACtF,CAAC;IACJ,CAAC;IACD,KAAK,CACH,MAAM,EACN,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,sBAAsB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAC/G,CAAC;IACF,KAAK,CAAC,MAAM,EAAE,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,0CAA0C,CAAC,CAAC;IACrF,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CACH,MAAM,EACN,KAAK,MAAM,CAAC,SAAS,CAAC,MAAM,gEAAgE,CAC7F,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CACH,MAAM,EACN,KAAK,MAAM,CAAC,WAAW,CAAC,MAAM,aAAa,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,oBAAoB,0BAA0B,CAClI,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAClD,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACpD,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CACH,MAAM,EACN,MAAM,CAAC,MAAM;QACX,CAAC,CAAC,qDAAqD;QACvD,CAAC,CAAC,sLAAsL,CAC3L,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAAgB,EAAE,KAAa,EAAE,KAAwB;IAC3E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC/B,KAAK,CAAC,MAAM,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,KAAK,CAAC,MAAgB,EAAE,KAAa;IAC5C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface TemplateManifestFile {
|
|
2
|
+
path: string;
|
|
3
|
+
sha256: string;
|
|
4
|
+
}
|
|
5
|
+
export interface TemplateManifest {
|
|
6
|
+
schemaVersion: 1;
|
|
7
|
+
templateVersion: string;
|
|
8
|
+
minimumCliVersion: string;
|
|
9
|
+
source: string;
|
|
10
|
+
files: readonly TemplateManifestFile[];
|
|
11
|
+
}
|
|
12
|
+
export interface LoadedTemplateFile extends TemplateManifestFile {
|
|
13
|
+
content: string;
|
|
14
|
+
}
|
|
15
|
+
export interface LoadedTemplate {
|
|
16
|
+
manifest: TemplateManifest;
|
|
17
|
+
files: readonly LoadedTemplateFile[];
|
|
18
|
+
}
|
|
19
|
+
export declare function defaultTemplateDirectory(): string;
|
|
20
|
+
export declare function loadTemplate(directory?: string): Promise<LoadedTemplate>;
|
|
21
|
+
export declare function validateTemplatePath(path: string): void;
|
|
22
|
+
export declare function sha256(content: string | Buffer): string;
|
|
23
|
+
//# sourceMappingURL=template-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-manifest.d.ts","sourceRoot":"","sources":["../../src/services/template-manifest.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,CAAC,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACtC;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,wBAAsB,YAAY,CAChC,SAAS,SAA6B,GACrC,OAAO,CAAC,cAAc,CAAC,CAmBzB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAmBvD;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEvD"}
|