@neetru/cli 2.29.0 → 2.31.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/CHANGELOG.md +52 -0
- package/README.md +61 -17
- package/dist/commands/deploy.d.ts +45 -0
- package/dist/commands/deploy.js +134 -1
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev-up.d.ts +7 -5
- package/dist/commands/dev-up.js +24 -23
- package/dist/commands/dev-up.js.map +1 -1
- package/dist/commands/docs-produto.d.ts +65 -0
- package/dist/commands/docs-produto.js +322 -0
- package/dist/commands/docs-produto.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.js +7 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/new.d.ts +2 -0
- package/dist/commands/new.js +2 -0
- package/dist/commands/new.js.map +1 -1
- package/dist/index.js +72 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +8 -1
- package/dist/lib/api-client.js +20 -2
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/compose-generator.d.ts +13 -9
- package/dist/lib/compose-generator.js +28 -60
- package/dist/lib/compose-generator.js.map +1 -1
- package/dist/lib/config-schema.d.ts +40 -6
- package/dist/lib/config-schema.js +11 -0
- package/dist/lib/config-schema.js.map +1 -1
- package/dist/lib/product-docs/check.d.ts +62 -0
- package/dist/lib/product-docs/check.js +489 -0
- package/dist/lib/product-docs/check.js.map +1 -0
- package/dist/lib/product-docs/config.d.ts +66 -0
- package/dist/lib/product-docs/config.js +234 -0
- package/dist/lib/product-docs/config.js.map +1 -0
- package/dist/lib/product-docs/dates.d.ts +17 -0
- package/dist/lib/product-docs/dates.js +41 -0
- package/dist/lib/product-docs/dates.js.map +1 -0
- package/dist/lib/product-docs/frontmatter.d.ts +43 -0
- package/dist/lib/product-docs/frontmatter.js +302 -0
- package/dist/lib/product-docs/frontmatter.js.map +1 -0
- package/dist/lib/product-docs/git.d.ts +16 -0
- package/dist/lib/product-docs/git.js +92 -0
- package/dist/lib/product-docs/git.js.map +1 -0
- package/dist/lib/product-docs/markdown.d.ts +27 -0
- package/dist/lib/product-docs/markdown.js +98 -0
- package/dist/lib/product-docs/markdown.js.map +1 -0
- package/dist/lib/product-docs/ops.d.ts +133 -0
- package/dist/lib/product-docs/ops.js +975 -0
- package/dist/lib/product-docs/ops.js.map +1 -0
- package/dist/lib/product-docs/structure.d.ts +61 -0
- package/dist/lib/product-docs/structure.js +239 -0
- package/dist/lib/product-docs/structure.js.map +1 -0
- package/dist/lib/product-docs/sync.d.ts +101 -0
- package/dist/lib/product-docs/sync.js +313 -0
- package/dist/lib/product-docs/sync.js.map +1 -0
- package/dist/lib/product-docs/taxonomy.d.ts +46 -0
- package/dist/lib/product-docs/taxonomy.js +163 -0
- package/dist/lib/product-docs/taxonomy.js.map +1 -0
- package/dist/lib/product-docs/templates.d.ts +53 -0
- package/dist/lib/product-docs/templates.js +245 -0
- package/dist/lib/product-docs/templates.js.map +1 -0
- package/dist/lib/public-secret-scan.d.ts +76 -0
- package/dist/lib/public-secret-scan.js +446 -0
- package/dist/lib/public-secret-scan.js.map +1 -0
- package/package.json +1 -1
- package/templates/dev/Dockerfile.agent +0 -39
- package/templates/dev/agent-entrypoint.sh +0 -41
- package/templates/dev/docker-compose.dev.yml +0 -63
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../../src/lib/product-docs/frontmatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare function git(cwd: string, args: string[]): string | null;
|
|
2
|
+
/** Ref base para comparar ("branch principal"): origin/main, main, origin/master, master. */
|
|
3
|
+
export declare function resolveBaseRef(cwd: string): string | null;
|
|
4
|
+
/**
|
|
5
|
+
* Arquivos alterados contra a branch principal (commits da branch + mudanças
|
|
6
|
+
* não commitadas + arquivos novos não rastreados). Caminhos relativos à raiz
|
|
7
|
+
* do repo, com `/`. `null` = não deu para descobrir (sem git, sem base).
|
|
8
|
+
*/
|
|
9
|
+
export declare function changedFiles(cwd: string): {
|
|
10
|
+
files: string[];
|
|
11
|
+
base: string;
|
|
12
|
+
} | null;
|
|
13
|
+
/** Data (AAAA-MM-DD) do commit que CRIOU o arquivo, seguindo renomeações. */
|
|
14
|
+
export declare function firstCommitDate(cwd: string, relPath: string): string | null;
|
|
15
|
+
/** Data (AAAA-MM-DD) do último commit que tocou o arquivo. */
|
|
16
|
+
export declare function lastCommitDate(cwd: string, relPath: string): string | null;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consultas ao git para os docs: arquivos alterados (`docs check --changed`) e
|
|
3
|
+
* datas do primeiro/último commit de um arquivo (`docs init --migrar`).
|
|
4
|
+
*
|
|
5
|
+
* Sempre `git -C <repo>` com as variáveis de repositório (`GIT_DIR` & cia)
|
|
6
|
+
* removidas do ambiente — um hook de push as exporta e, num worktree, elas
|
|
7
|
+
* apontariam para outro lugar (incidente 2026-10-01). Nunca lança: falha vira
|
|
8
|
+
* `null`, e quem chama decide o que fazer.
|
|
9
|
+
*/
|
|
10
|
+
import { execFileSync } from 'node:child_process';
|
|
11
|
+
const REPO_ENV_VARS = [
|
|
12
|
+
'GIT_DIR', 'GIT_WORK_TREE', 'GIT_INDEX_FILE', 'GIT_OBJECT_DIRECTORY', 'GIT_ALTERNATE_OBJECT_DIRECTORIES',
|
|
13
|
+
'GIT_COMMON_DIR', 'GIT_PREFIX', 'GIT_NAMESPACE', 'GIT_QUARANTINE_PATH', 'GIT_CEILING_DIRECTORIES',
|
|
14
|
+
];
|
|
15
|
+
function cleanEnv() {
|
|
16
|
+
const env = { ...process.env };
|
|
17
|
+
for (const k of REPO_ENV_VARS)
|
|
18
|
+
delete env[k];
|
|
19
|
+
return env;
|
|
20
|
+
}
|
|
21
|
+
export function git(cwd, args) {
|
|
22
|
+
try {
|
|
23
|
+
return execFileSync('git', ['-C', cwd, ...args], {
|
|
24
|
+
encoding: 'utf8',
|
|
25
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
26
|
+
env: cleanEnv(),
|
|
27
|
+
maxBuffer: 16 * 1024 * 1024,
|
|
28
|
+
}).trim();
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/** Ref base para comparar ("branch principal"): origin/main, main, origin/master, master. */
|
|
35
|
+
export function resolveBaseRef(cwd) {
|
|
36
|
+
for (const ref of ['origin/main', 'main', 'origin/master', 'master']) {
|
|
37
|
+
if (git(cwd, ['rev-parse', '--verify', '--quiet', `${ref}^{commit}`]) !== null)
|
|
38
|
+
return ref;
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Arquivos alterados contra a branch principal (commits da branch + mudanças
|
|
44
|
+
* não commitadas + arquivos novos não rastreados). Caminhos relativos à raiz
|
|
45
|
+
* do repo, com `/`. `null` = não deu para descobrir (sem git, sem base).
|
|
46
|
+
*/
|
|
47
|
+
export function changedFiles(cwd) {
|
|
48
|
+
const top = git(cwd, ['rev-parse', '--show-toplevel']);
|
|
49
|
+
if (top === null)
|
|
50
|
+
return null;
|
|
51
|
+
const base = resolveBaseRef(cwd);
|
|
52
|
+
if (!base)
|
|
53
|
+
return null;
|
|
54
|
+
const mergeBase = git(cwd, ['merge-base', base, 'HEAD']) ?? base;
|
|
55
|
+
const committed = git(cwd, ['diff', '--name-only', '--diff-filter=ACMR', `${mergeBase}`, 'HEAD']);
|
|
56
|
+
const staged = git(cwd, ['diff', '--name-only', '--diff-filter=ACMR', '--cached']);
|
|
57
|
+
const unstaged = git(cwd, ['diff', '--name-only', '--diff-filter=ACMR']);
|
|
58
|
+
const untracked = git(cwd, ['ls-files', '--others', '--exclude-standard']);
|
|
59
|
+
if (committed === null)
|
|
60
|
+
return null;
|
|
61
|
+
// `git diff --name-only` devolve caminhos relativos ao TOPO do repo; o
|
|
62
|
+
// produto pode estar numa subpasta — converte para relativo a `cwd`.
|
|
63
|
+
const prefix = git(cwd, ['rev-parse', '--show-prefix']) ?? '';
|
|
64
|
+
const all = new Set();
|
|
65
|
+
for (const block of [committed, staged ?? '', unstaged ?? '']) {
|
|
66
|
+
for (const f of block.split(/\r?\n/)) {
|
|
67
|
+
if (!f)
|
|
68
|
+
continue;
|
|
69
|
+
if (prefix && !f.startsWith(prefix))
|
|
70
|
+
continue;
|
|
71
|
+
all.add(f.slice(prefix.length));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
for (const f of (untracked ?? '').split(/\r?\n/))
|
|
75
|
+
if (f)
|
|
76
|
+
all.add(f); // ls-files já é relativo ao cwd
|
|
77
|
+
return { files: [...all].map((f) => f.replace(/\\/g, '/')), base };
|
|
78
|
+
}
|
|
79
|
+
/** Data (AAAA-MM-DD) do commit que CRIOU o arquivo, seguindo renomeações. */
|
|
80
|
+
export function firstCommitDate(cwd, relPath) {
|
|
81
|
+
const out = git(cwd, ['log', '--follow', '--diff-filter=A', '--format=%cs', '--', relPath]);
|
|
82
|
+
if (!out)
|
|
83
|
+
return null;
|
|
84
|
+
const lines = out.split(/\r?\n/).filter(Boolean);
|
|
85
|
+
return lines[lines.length - 1] ?? null;
|
|
86
|
+
}
|
|
87
|
+
/** Data (AAAA-MM-DD) do último commit que tocou o arquivo. */
|
|
88
|
+
export function lastCommitDate(cwd, relPath) {
|
|
89
|
+
const out = git(cwd, ['log', '-1', '--format=%cs', '--', relPath]);
|
|
90
|
+
return out ? out.split(/\r?\n/)[0] : null;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/lib/product-docs/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Leitura estrutural de markdown para o validador de docs: cabeçalhos e links,
|
|
3
|
+
* sempre FORA de blocos de código (``` / ~~~) e de código em linha.
|
|
4
|
+
*/
|
|
5
|
+
export interface Heading {
|
|
6
|
+
level: number;
|
|
7
|
+
text: string;
|
|
8
|
+
/** Linha 1-based relativa ao corpo. */
|
|
9
|
+
line: number;
|
|
10
|
+
}
|
|
11
|
+
export interface MdLink {
|
|
12
|
+
target: string;
|
|
13
|
+
line: number;
|
|
14
|
+
}
|
|
15
|
+
/** Linhas do corpo com o conteúdo de blocos de código trocado por '' (preserva a numeração). */
|
|
16
|
+
export declare function stripCodeBlocks(body: string): string[];
|
|
17
|
+
/** Remove a marcação comum de um título (crase, ênfase, links) para comparar texto. */
|
|
18
|
+
export declare function plainHeadingText(s: string): string;
|
|
19
|
+
export declare function extractHeadings(body: string): Heading[];
|
|
20
|
+
/** Links markdown (inline e de referência) e imagens. Ignora código. */
|
|
21
|
+
export declare function extractLinks(body: string): MdLink[];
|
|
22
|
+
/** Primeiro H1 do corpo (texto limpo), ou null. */
|
|
23
|
+
export declare function firstH1(body: string): string | null;
|
|
24
|
+
/** Normaliza para comparação tolerante: minúsculas, sem acento, sem numeração inicial. */
|
|
25
|
+
export declare function normalizeSection(s: string): string;
|
|
26
|
+
/** Remove acentos e passa para MAIÚSCULAS com `_` (regra de nome de arquivo §8.1). */
|
|
27
|
+
export declare function toFileWords(s: string): string[];
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Leitura estrutural de markdown para o validador de docs: cabeçalhos e links,
|
|
3
|
+
* sempre FORA de blocos de código (``` / ~~~) e de código em linha.
|
|
4
|
+
*/
|
|
5
|
+
/** Linhas do corpo com o conteúdo de blocos de código trocado por '' (preserva a numeração). */
|
|
6
|
+
export function stripCodeBlocks(body) {
|
|
7
|
+
const lines = body.split(/\r?\n/);
|
|
8
|
+
let fence = null;
|
|
9
|
+
return lines.map((l) => {
|
|
10
|
+
const m = l.match(/^\s{0,3}(`{3,}|~{3,})/);
|
|
11
|
+
if (fence) {
|
|
12
|
+
if (m && m[1][0] === fence[0] && m[1].length >= fence.length)
|
|
13
|
+
fence = null;
|
|
14
|
+
return '';
|
|
15
|
+
}
|
|
16
|
+
if (m) {
|
|
17
|
+
fence = m[1];
|
|
18
|
+
return '';
|
|
19
|
+
}
|
|
20
|
+
return l;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/** Remove a marcação comum de um título (crase, ênfase, links) para comparar texto. */
|
|
24
|
+
export function plainHeadingText(s) {
|
|
25
|
+
return s
|
|
26
|
+
.replace(/\[([^\]]*)\]\([^)]*\)/g, '$1')
|
|
27
|
+
.replace(/[`*_]/g, '')
|
|
28
|
+
.replace(/\s+/g, ' ')
|
|
29
|
+
.trim();
|
|
30
|
+
}
|
|
31
|
+
export function extractHeadings(body) {
|
|
32
|
+
const lines = stripCodeBlocks(body);
|
|
33
|
+
const out = [];
|
|
34
|
+
for (let i = 0; i < lines.length; i++) {
|
|
35
|
+
const l = lines[i];
|
|
36
|
+
const atx = l.match(/^\s{0,3}(#{1,6})\s+(.*?)\s*#*\s*$/);
|
|
37
|
+
if (atx) {
|
|
38
|
+
out.push({ level: atx[1].length, text: atx[2].trim(), line: i + 1 });
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
// setext: "Título" + "====" / "----" (só se a linha de cima tem texto e não é lista/tabela)
|
|
42
|
+
const next = lines[i + 1];
|
|
43
|
+
if (next !== undefined && l.trim() !== '' && !/^\s*([-*+>|]|\d+\.)/.test(l)) {
|
|
44
|
+
if (/^\s{0,3}=+\s*$/.test(next)) {
|
|
45
|
+
out.push({ level: 1, text: l.trim(), line: i + 1 });
|
|
46
|
+
i++;
|
|
47
|
+
}
|
|
48
|
+
else if (/^\s{0,3}-{2,}\s*$/.test(next) && !/^\s*$/.test(l) && !l.includes('|')) {
|
|
49
|
+
out.push({ level: 2, text: l.trim(), line: i + 1 });
|
|
50
|
+
i++;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
56
|
+
/** Links markdown (inline e de referência) e imagens. Ignora código. */
|
|
57
|
+
export function extractLinks(body) {
|
|
58
|
+
const lines = stripCodeBlocks(body);
|
|
59
|
+
const out = [];
|
|
60
|
+
for (let i = 0; i < lines.length; i++) {
|
|
61
|
+
const l = lines[i].replace(/`[^`]*`/g, '');
|
|
62
|
+
const inline = /!?\[[^\]]*\]\(\s*<?([^)\s>]+)>?(?:\s+"[^"]*")?\s*\)/g;
|
|
63
|
+
let m;
|
|
64
|
+
while ((m = inline.exec(l)))
|
|
65
|
+
out.push({ target: m[1], line: i + 1 });
|
|
66
|
+
const ref = l.match(/^\s{0,3}\[[^\]]+\]:\s*<?(\S+?)>?(\s|$)/);
|
|
67
|
+
if (ref)
|
|
68
|
+
out.push({ target: ref[1], line: i + 1 });
|
|
69
|
+
}
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
/** Primeiro H1 do corpo (texto limpo), ou null. */
|
|
73
|
+
export function firstH1(body) {
|
|
74
|
+
const h = extractHeadings(body).find((x) => x.level === 1);
|
|
75
|
+
return h ? plainHeadingText(h.text) : null;
|
|
76
|
+
}
|
|
77
|
+
/** Normaliza para comparação tolerante: minúsculas, sem acento, sem numeração inicial. */
|
|
78
|
+
export function normalizeSection(s) {
|
|
79
|
+
return plainHeadingText(s)
|
|
80
|
+
.normalize('NFD')
|
|
81
|
+
.replace(/[̀-ͯ]/g, '')
|
|
82
|
+
.toLowerCase()
|
|
83
|
+
.replace(/^\d+(\.\d+)*[.)]?\s+/, '')
|
|
84
|
+
.replace(/\s+/g, ' ')
|
|
85
|
+
.trim();
|
|
86
|
+
}
|
|
87
|
+
/** Remove acentos e passa para MAIÚSCULAS com `_` (regra de nome de arquivo §8.1). */
|
|
88
|
+
export function toFileWords(s) {
|
|
89
|
+
return s
|
|
90
|
+
.normalize('NFD')
|
|
91
|
+
.replace(/[̀-ͯ]/g, '')
|
|
92
|
+
.toUpperCase()
|
|
93
|
+
.replace(/[^A-Z0-9]+/g, ' ')
|
|
94
|
+
.trim()
|
|
95
|
+
.split(/\s+/)
|
|
96
|
+
.filter(Boolean);
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/lib/product-docs/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { type IndexGroup } from './templates.js';
|
|
2
|
+
import { type DocsTaxonomy } from './taxonomy.js';
|
|
3
|
+
import { type ProductRepo } from './config.js';
|
|
4
|
+
export interface ChangelogSeed {
|
|
5
|
+
version: string;
|
|
6
|
+
/** Data da entrada (AAAA-MM-DD). */
|
|
7
|
+
date: string;
|
|
8
|
+
/** O produto já tem versões lançadas (não é a "primeira versão"). */
|
|
9
|
+
maduro: boolean;
|
|
10
|
+
/** De onde veio a data (para quem lê o resultado). */
|
|
11
|
+
origemData: 'tag' | 'package.json no git' | 'hoje';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Semente do CHANGELOG. Produto "maduro" = versão do package.json além da
|
|
15
|
+
* inicial (0.0.x/0.1.0) OU tags de versão no git. Nesse caso NÃO se escreve
|
|
16
|
+
* "primeira versão" (bug da migração real: PDV 1.0.12 ganhava "Primeira versão
|
|
17
|
+
* do produto"): a entrada registra só o início do changelog neste formato,
|
|
18
|
+
* datada pela tag da versão (ou pelo último commit do package.json).
|
|
19
|
+
*/
|
|
20
|
+
export declare function changelogSeed(repo: ProductRepo, today: string): ChangelogSeed;
|
|
21
|
+
export interface InitDocsOptions {
|
|
22
|
+
comApi?: boolean;
|
|
23
|
+
dryRun?: boolean;
|
|
24
|
+
today?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface InitDocsResult {
|
|
27
|
+
slug: string;
|
|
28
|
+
docsRoot: string;
|
|
29
|
+
created: string[];
|
|
30
|
+
skipped: string[];
|
|
31
|
+
folders: string[];
|
|
32
|
+
configKeysAdded: string[];
|
|
33
|
+
withApi: boolean;
|
|
34
|
+
dryRun: boolean;
|
|
35
|
+
}
|
|
36
|
+
interface IndexItem {
|
|
37
|
+
rel: string;
|
|
38
|
+
title: string;
|
|
39
|
+
nomeForaDaRegra: boolean;
|
|
40
|
+
}
|
|
41
|
+
/** Agrupa para o índice: pastas do padrão → superpowers → fora do padrão → raiz → arquivo. */
|
|
42
|
+
export declare function groupIndex(items: IndexItem[]): IndexGroup[];
|
|
43
|
+
/** `neetru docs init` — cria o mínimo do primeiro dia sem sobrescrever nada. */
|
|
44
|
+
export declare function initProductDocs(repo: ProductRepo, opts?: InitDocsOptions): Promise<InitDocsResult>;
|
|
45
|
+
export type Confianca = 'alta' | 'media' | 'baixa';
|
|
46
|
+
export interface Inference {
|
|
47
|
+
campo: string;
|
|
48
|
+
valor: string;
|
|
49
|
+
origem: string;
|
|
50
|
+
confianca: Confianca;
|
|
51
|
+
}
|
|
52
|
+
export interface MigratedFile {
|
|
53
|
+
file: string;
|
|
54
|
+
acao: 'frontmatter-adicionado' | 'ja-tinha-frontmatter' | 'frontmatter-invalido';
|
|
55
|
+
inferencias: Inference[];
|
|
56
|
+
/** Sugestão de destino pelo protocolo (decisão humana; nada é movido). */
|
|
57
|
+
sugestaoDestino?: string;
|
|
58
|
+
nomeForaDaRegra: boolean;
|
|
59
|
+
observacoes: string[];
|
|
60
|
+
}
|
|
61
|
+
export interface MigrateResult {
|
|
62
|
+
slug: string;
|
|
63
|
+
docsRoot: string;
|
|
64
|
+
files: MigratedFile[];
|
|
65
|
+
legacyNamesFile?: {
|
|
66
|
+
path: string;
|
|
67
|
+
created: boolean;
|
|
68
|
+
count: number;
|
|
69
|
+
};
|
|
70
|
+
reportPath?: string;
|
|
71
|
+
configKeysAdded: string[];
|
|
72
|
+
faltandoPrimeiroDia: string[];
|
|
73
|
+
dryRun: boolean;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Nome pela regra do §8.1 — preservando a data ISO COM hífens no fim
|
|
77
|
+
* (`AUDITORIA-GERAL-2026-06-30.md` → `AUDITORIA_GERAL_2026-06-30.md`; antes
|
|
78
|
+
* virava `…_2026_06_30`, que falha no NM002). Registro sem data no nome ganha
|
|
79
|
+
* a do frontmatter; doc vivo perde a data (data no nome é só de registro).
|
|
80
|
+
*/
|
|
81
|
+
export declare function suggestedName(base: string, type: string, family: string, fmDate?: string): string;
|
|
82
|
+
/**
|
|
83
|
+
* `neetru docs init --migrar` — frontmatter inferido nos `.md` sem frontmatter,
|
|
84
|
+
* `_nomes-legados.json` e relatório. NÃO move, NÃO renomeia, NÃO edita corpo.
|
|
85
|
+
*/
|
|
86
|
+
export declare function migrateProductDocs(repo: ProductRepo, opts?: {
|
|
87
|
+
dryRun?: boolean;
|
|
88
|
+
today?: string;
|
|
89
|
+
taxonomy?: DocsTaxonomy;
|
|
90
|
+
}): Promise<MigrateResult>;
|
|
91
|
+
export declare function renderMigrationReport(repo: ProductRepo, r: MigrateResult, today: string): string;
|
|
92
|
+
/** Aliases de `docs new` que trazem os modelos de base do zelo. */
|
|
93
|
+
export declare const NEW_ALIASES: Record<string, {
|
|
94
|
+
type: string;
|
|
95
|
+
variant: 'rfc' | 'spec' | 'politica' | 'ameacas';
|
|
96
|
+
}>;
|
|
97
|
+
export declare const NEW_TYPES: string[];
|
|
98
|
+
export declare class DocsNewError extends Error {
|
|
99
|
+
readonly code: string;
|
|
100
|
+
constructor(code: string, message: string);
|
|
101
|
+
}
|
|
102
|
+
export interface NewDocOptions {
|
|
103
|
+
categoria?: string;
|
|
104
|
+
subcategoria?: string;
|
|
105
|
+
audience?: string;
|
|
106
|
+
descricao?: string;
|
|
107
|
+
/** Data do registro (AAAA-MM-DD); padrão hoje. */
|
|
108
|
+
data?: string;
|
|
109
|
+
dryRun?: boolean;
|
|
110
|
+
today?: string;
|
|
111
|
+
taxonomy?: DocsTaxonomy;
|
|
112
|
+
}
|
|
113
|
+
export interface NewDocResult {
|
|
114
|
+
path: string;
|
|
115
|
+
type: string;
|
|
116
|
+
title: string;
|
|
117
|
+
category: string;
|
|
118
|
+
subcategory: string;
|
|
119
|
+
audience: string;
|
|
120
|
+
status: string;
|
|
121
|
+
/** Categoria/subcategoria vieram do padrão da pasta (vale conferir). */
|
|
122
|
+
categoriaPadrao: boolean;
|
|
123
|
+
dryRun: boolean;
|
|
124
|
+
content: string;
|
|
125
|
+
}
|
|
126
|
+
/** Nome de arquivo pela regra do §6/§8: sem acento, MAIÚSCULAS, prefixo do tipo, data em registro. */
|
|
127
|
+
export declare function fileNameFor(type: string, title: string, opts?: {
|
|
128
|
+
date?: string;
|
|
129
|
+
adrNumber?: number;
|
|
130
|
+
}): string;
|
|
131
|
+
/** `neetru docs new <tipo> "<título>"`. Lança `DocsNewError` com mensagem PT-BR. */
|
|
132
|
+
export declare function createProductDoc(repo: ProductRepo, tipo: string, titulo: string, opts?: NewDocOptions): Promise<NewDocResult>;
|
|
133
|
+
export {};
|