jarvis-ai-framework 3.2.0 → 4.0.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/agents/product/prod.discovery-interviewer.md +1 -1
- package/bin/README.md +14 -14
- package/bin/commands/docs-publish.js +50 -92
- package/bin/commands/docs-sync.js +30 -63
- package/bin/lib/cli/program.js +23 -25
- package/bin/lib/docs/fetch-file.js +29 -26
- package/bin/lib/docs/publish-file.js +89 -161
- package/bin/lib/docs/storage/build-index.js +87 -0
- package/bin/lib/docs/storage/filesystem.js +203 -0
- package/bin/lib/docs/storage/index.js +75 -0
- package/bin/lib/docs/validate-frontmatter.js +14 -4
- package/bin/lib/vcs/api.js +0 -125
- package/package.json +2 -2
- package/rules/AGENTS.md +12 -9
- package/rules/engineering/eng.integrations-rules.md +2 -1
- package/rules/product/prod-rules.md +4 -5
- package/rules-on-demand/product/prod.guided-rules.md +104 -0
- package/skills/jarvis-docs-central/README.md +57 -269
- package/skills/jarvis-docs-central/SKILL.md +126 -296
- package/skills/jarvis-init/SKILL.md +46 -7
- package/templates/ENV-template.md +20 -5
- package/templates/engineering/ARD-template.md +39 -6
- package/templates/engineering/architecture-template.md +1 -0
- package/templates/product/prod-breakdown-template.md +20 -2
- package/templates/product/prod-discovery-template.md +24 -1
- package/templates/product/prod-epic-template.md +32 -1
- package/templates/product/prod-frd-template.md +29 -2
- package/templates/product/prod-issue-template.md +36 -1
- package/templates/product/prod-prd-template.md +33 -2
- package/workflows/engineering/eng.build-tech-spec.md +2 -2
- package/workflows/engineering/eng.create-ard-from-code.md +9 -11
- package/workflows/engineering/eng.create-ard.md +15 -13
- package/workflows/engineering/eng.create-rfc.md +8 -10
- package/workflows/engineering/eng.pr.md +4 -4
- package/workflows/engineering/eng.pre-pr.md +4 -4
- package/workflows/engineering/eng.rpa.robot.md +4 -2
- package/workflows/engineering/eng.start.md +17 -16
- package/workflows/product/prod.roadmap.preview.md +4 -1
- package/workflows/product/prod.spec.ard.md +7 -3
- package/workflows/product/prod.spec.breakdown.md +7 -3
- package/workflows/product/prod.spec.clarify.md +5 -1
- package/workflows/product/prod.spec.discovery.md +7 -3
- package/workflows/product/prod.spec.epic.md +13 -11
- package/workflows/product/prod.spec.frd.md +15 -13
- package/workflows/product/prod.spec.issue.md +5 -1
- package/workflows/product/prod.spec.md +3 -1
- package/workflows/product/prod.spec.prd.md +15 -13
- package/workflows/warm-up.md +3 -3
- package/bin/lib/docs/redis-cache.js +0 -49
- package/bin/lib/vcs/fetch-raw.js +0 -42
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Cache best-effort via `redis-cli` para fetch-file.js/publish-file.js.
|
|
3
|
-
* Nunca lança — falha de leitura/escrita no cache nunca quebra o fluxo principal
|
|
4
|
-
* (mesmo contrato do `fetch-file.sh`/`publish-file.sh` originais, que faziam
|
|
5
|
-
* `redis-cli ... 2>/dev/null || true`).
|
|
6
|
-
* @module docs/redis-cache
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { execFileSync } from "node:child_process";
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* @param {string} key
|
|
13
|
-
* @returns {string} valor em cache, ou "" se não houver (ou `redis-cli` falhar)
|
|
14
|
-
*/
|
|
15
|
-
export function redisGet(key) {
|
|
16
|
-
try {
|
|
17
|
-
return execFileSync("redis-cli", ["GET", key], {
|
|
18
|
-
encoding: "utf-8",
|
|
19
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
20
|
-
}).trim();
|
|
21
|
-
} catch {
|
|
22
|
-
return "";
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* @param {string} key
|
|
28
|
-
* @param {string|number} ttlSeconds
|
|
29
|
-
* @param {string} value
|
|
30
|
-
*/
|
|
31
|
-
export function redisSetex(key, ttlSeconds, value) {
|
|
32
|
-
try {
|
|
33
|
-
execFileSync("redis-cli", ["-x", "SETEX", key, String(ttlSeconds)], {
|
|
34
|
-
input: value,
|
|
35
|
-
stdio: ["pipe", "ignore", "ignore"],
|
|
36
|
-
});
|
|
37
|
-
} catch {
|
|
38
|
-
// best-effort
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/** @param {string} key */
|
|
43
|
-
export function redisDel(key) {
|
|
44
|
-
try {
|
|
45
|
-
execFileSync("redis-cli", ["DEL", key], { stdio: "ignore" });
|
|
46
|
-
} catch {
|
|
47
|
-
// best-effort
|
|
48
|
-
}
|
|
49
|
-
}
|
package/bin/lib/vcs/fetch-raw.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { fileURLToPath } from "node:url";
|
|
2
|
-
import { fetchRawFile } from "./api.js";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Busca o conteúdo bruto de um arquivo no central-docs via adapter.
|
|
6
|
-
* Usada por `jarvis vcs fetch-raw`.
|
|
7
|
-
* @param {string} filePath - Path do arquivo dentro do repo central-docs
|
|
8
|
-
* @param {string} [ref] - Branch/ref (padrão: "main")
|
|
9
|
-
*/
|
|
10
|
-
export async function runFetchRaw(filePath, ref = "main") {
|
|
11
|
-
const repo = process.env.CENTRAL_DOCS_REPO;
|
|
12
|
-
|
|
13
|
-
if (!filePath) {
|
|
14
|
-
console.error("Uso: jarvis vcs fetch-raw <file-path> [ref]");
|
|
15
|
-
process.exit(1);
|
|
16
|
-
}
|
|
17
|
-
if (!repo) {
|
|
18
|
-
console.error("CENTRAL_DOCS_REPO não definido");
|
|
19
|
-
process.exit(1);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
try {
|
|
23
|
-
const content = await fetchRawFile(repo, filePath, ref);
|
|
24
|
-
process.stdout.write(content);
|
|
25
|
-
} catch (err) {
|
|
26
|
-
if (err.code === 404) {
|
|
27
|
-
console.error(`⚠️ Arquivo não encontrado no central-docs: ${filePath}`);
|
|
28
|
-
process.exit(2);
|
|
29
|
-
}
|
|
30
|
-
if (err.code === 401 || err.code === 403) {
|
|
31
|
-
console.error("❌ Token sem permissão para acessar o repositório");
|
|
32
|
-
process.exit(1);
|
|
33
|
-
}
|
|
34
|
-
console.error(err.message);
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Compatibilidade: continua funcionando como `node bin/lib/vcs/fetch-raw.js <file-path> [ref]`
|
|
40
|
-
if (fileURLToPath(import.meta.url) === process.argv[1]) {
|
|
41
|
-
await runFetchRaw(process.argv[2], process.argv[3] || "main");
|
|
42
|
-
}
|